Initialize Tizen 2.3 tizen_2.3 2.3a_release submit/tizen_2.3/20140531.113333
authorSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 04:02:05 +0000 (13:02 +0900)
committerSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 04:02:05 +0000 (13:02 +0900)
515 files changed:
.camera.ini [new file with mode: 0644]
.gitignore [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0755]
LICENSE.Flora [new file with mode: 0755]
NOTICE [new file with mode: 0644]
edc/cam_ctxpopup_shortcuts.edc [new file with mode: 0755]
edc/cam_ctxpopup_shortcuts_inc.edc [new file with mode: 0755]
edc/cam_ev_layout.edc [new file with mode: 0755]
edc/cam_ev_layout_inverse.edc [new file with mode: 0755]
edc/cam_ev_layout_vertical.edc [new file with mode: 0755]
edc/cam_ev_layout_vertical_inverse.edc [new file with mode: 0755]
edc/cam_funcs.edc [new file with mode: 0755]
edc/cam_guideline_edje.edc [new file with mode: 0755]
edc/cam_images.edc [new file with mode: 0755]
edc/cam_indicator_layout.edc [new file with mode: 0755]
edc/cam_main_layout.edc [new file with mode: 0755]
edc/cam_recording_edje.edc [new file with mode: 0755]
edc/cam_recording_edje_inc.edc [new file with mode: 0755]
edc/cam_recording_edje_inverse.edc [new file with mode: 0755]
edc/cam_recording_edje_inverse_inc.edc [new file with mode: 0755]
edc/cam_recording_edje_vertical.edc [new file with mode: 0755]
edc/cam_recording_edje_vertical_inc.edc [new file with mode: 0755]
edc/cam_recording_edje_vertical_inverse.edc [new file with mode: 0755]
edc/cam_recording_edje_vertical_inverse_inc.edc [new file with mode: 0755]
edc/cam_setting_popup_layout.edc [new file with mode: 0755]
edc/cam_setting_popup_layout_inc.edc [new file with mode: 0755]
edc/cam_toolbar_layout.edc [new file with mode: 0755]
edc/cam_toolbar_layout_inc.edc [new file with mode: 0755]
edc/cam_toolbar_layout_inverse.edc [new file with mode: 0755]
edc/cam_toolbar_layout_inverse_inc.edc [new file with mode: 0755]
edc/cam_toolbar_layout_vertical.edc [new file with mode: 0755]
edc/cam_toolbar_layout_vertical_inc.edc [new file with mode: 0755]
edc/cam_toolbar_layout_vertical_inverse.edc [new file with mode: 0755]
edc/cam_toolbar_layout_vertical_inverse_inc.edc [new file with mode: 0755]
edc/cam_utils.edc [new file with mode: 0755]
edc/cam_zoom_layout.edc [new file with mode: 0755]
edc/cam_zoom_layout_inverse.edc [new file with mode: 0755]
edc/cam_zoom_layout_vertical.edc [new file with mode: 0755]
edc/cam_zoom_layout_vertical_inverse.edc [new file with mode: 0755]
edc/style_button_camera.edc [new file with mode: 0755]
edc/style_ctxpopup_camera_with_radio.edc [new file with mode: 0755]
edc/style_genlist_macro.edc [new file with mode: 0755]
edc/style_genlist_normal.edc [new file with mode: 0755]
edc/style_label_camera.edc [new file with mode: 0755]
edc/style_slider_camera.edc [new file with mode: 0755]
edc/style_tizen_hd_inc.edc [new file with mode: 0755]
images/edc_images/00_button_01_normal.png [new file with mode: 0644]
images/edc_images/00_button_01_normal_Focus.png [new file with mode: 0644]
images/edc_images/00_button_01_normal_dim.png [new file with mode: 0644]
images/edc_images/00_button_01_normal_press.png [new file with mode: 0644]
images/edc_images/00_check_off.png [new file with mode: 0644]
images/edc_images/camara_back_button.png [new file with mode: 0644]
images/edc_images/camara_back_button_press.png [new file with mode: 0755]
images/edc_images/camcorder_recording_pause.png [new file with mode: 0755]
images/edc_images/camcorder_recording_pause_press.png [new file with mode: 0755]
images/edc_images/camcorder_recording_shutter.png [new file with mode: 0755]
images/edc_images/camcorder_recording_stop.png [new file with mode: 0755]
images/edc_images/camcorder_recording_stop_press.png [new file with mode: 0755]
images/edc_images/camcorder_standby_shutter.png [new file with mode: 0755]
images/edc_images/camcorder_standby_shutter_dim.png [new file with mode: 0755]
images/edc_images/camcorder_standby_shutter_press.png [new file with mode: 0755]
images/edc_images/camcorder_stop_shutter_icon.png [new file with mode: 0755]
images/edc_images/camera_button_off.png [new file with mode: 0644]
images/edc_images/camera_button_on.png [new file with mode: 0644]
images/edc_images/camera_handle.png [new file with mode: 0755]
images/edc_images/camera_help_image.png [new file with mode: 0644]
images/edc_images/camera_menu_bg.png [new file with mode: 0755]
images/edc_images/camera_menu_bg_press.png [new file with mode: 0755]
images/edc_images/camera_menu_tab_hold.png [new file with mode: 0755]
images/edc_images/camera_mode_shutter_dim.png [new file with mode: 0755]
images/edc_images/camera_mode_shutter_icon.png [new file with mode: 0755]
images/edc_images/camera_mode_shutter_icon_dim.png [new file with mode: 0755]
images/edc_images/camera_mode_shutter_normal.png [new file with mode: 0755]
images/edc_images/camera_mode_shutter_normal_inverse.png [new file with mode: 0644]
images/edc_images/camera_mode_shutter_press.png [new file with mode: 0755]
images/edc_images/camera_mode_thumbnail_bg.png [new file with mode: 0755]
images/edc_images/camera_mode_thumbnail_bg_press.png [new file with mode: 0755]
images/edc_images/camera_normal_left.png [new file with mode: 0755]
images/edc_images/camera_normal_opacity_l_bg.png [new file with mode: 0755]
images/edc_images/camera_normal_opacity_r_bg.png [new file with mode: 0755]
images/edc_images/camera_normal_right.png [new file with mode: 0755]
images/edc_images/camera_option_popup_anker.png [new file with mode: 0755]
images/edc_images/camera_option_popup_anker_inverse.png [new file with mode: 0755]
images/edc_images/camera_option_popup_bg.png [new file with mode: 0755]
images/edc_images/camera_option_popup_bg_2depth.png [new file with mode: 0755]
images/edc_images/camera_popup_ex_bar.png [new file with mode: 0755]
images/edc_images/camera_popup_zoom.png [new file with mode: 0755]
images/edc_images/camera_popup_zoom_bar.png [new file with mode: 0755]
images/edc_images/camera_radio_btn_off.png [new file with mode: 0755]
images/edc_images/camera_radio_btn_on.png [new file with mode: 0755]
images/edc_images/camera_recording_btn_caf.png [new file with mode: 0755]
images/edc_images/camera_recording_btn_caf_press.png [new file with mode: 0755]
images/edc_images/camera_shortcut_line_h_01.png [new file with mode: 0755]
images/edc_images/camera_shortcut_line_v_01.png [new file with mode: 0755]
images/edc_images/camera_shortcut_line_v_02.png [new file with mode: 0755]
images/edc_images/camera_shrtcut_edit_bg.png [new file with mode: 0755]
images/edc_images/camera_shrtcut_menubar_bg.png [new file with mode: 0755]
images/edc_images/camera_shrtcut_text_bg.png [new file with mode: 0755]
images/edc_images/camera_timer_popup.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_00.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_01.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_02.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_03.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_04.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_05.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_charge.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_battery_full.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_gps_connection01.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_gps_connection02.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_gps_connection03.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_gps_off.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_gps_on.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_mute.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_smile_shot.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_storage_in.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_storage_memoryfull.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_storage_phonefull.png [new file with mode: 0755]
images/edc_images/indicator/camera_indicator_storage_t_flash.png [new file with mode: 0755]
images/edc_images/indicator/camera_rec.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_anti_shake_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_anti_shake_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_anti_shake_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_anti_shake_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_auto_contrast_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_auto_contrast_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_auto_contrast_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_auto_contrast_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_burstshot_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_burstshot_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_burstshot_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_burstshot_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_capture_voice_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_capture_voice_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_capture_voice_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_capture_voice_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_Black and white_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_Black and white_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_negative_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_negative_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_none_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_none_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_sepia_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_effect_sepia_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_1_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_1_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_2_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_2_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_3_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_3_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_4_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_4_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_5_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_5_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_6_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_6_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_7_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_7_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_8_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_8_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_9_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_exposure_9_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_auto_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_auto_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_flash_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_auto_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_auto_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_face_detection_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_face_detection_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_macro_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_focus_macro_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_gps_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_gps_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_gps_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_gps_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_guidelines_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_guidelines_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_guidelines_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_guidelines_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_100_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_100_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_200_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_200_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_400_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_400_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_50_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_50_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_800_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_800_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_auto_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_iso_auto_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_center_weighted_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_center_weighted_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_matrix_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_matrix_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_normal_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_pressmal_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_spot_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_metering_spot_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_outdoor_visibility_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_outdoor_visibility_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_outdoor_visibility_on_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_outdoor_visibility_on_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_fast_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_fast_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_limit_for_mms_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_limit_for_mms_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_normal_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_normal_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_slowmotion_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_recording_slowmotion_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_refresh_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_refresh_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_reset_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_reset_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_0_3m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_0_3m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1280X720_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1280X720_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_176X144_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_176X144_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1920X1080_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1920X1080_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1_3m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_1_3m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_2m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_2m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_320X240_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_320X240_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_3_2m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_3_2m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_5m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_5m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_640X480_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_640X480_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_720X480_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_720X480_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_8m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_8m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w0_9m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w0_9m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w2_4m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w2_4m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w2m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w2m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w3_6m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w3_6m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w4m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w4m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w5_7m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w5_7m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w6m_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_resolution_w6m_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_self_rec_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_self_rec_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_self_shot_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_self_shot_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_setting_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_setting_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_beauty_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_beauty_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_dawn_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_dawn_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_fall_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_fall_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_firework_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_firework_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_hdr_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_hdr_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_landscape_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_landscape_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_night_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_night_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_panorama_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_panorama_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_portrait_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_portrait_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_share_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_share_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_sports_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_sports_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_sunset_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_sunset_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_text_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shooting_mode_text_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shutter.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_shutter_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_storage_mydevice_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_storage_mydevice_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_storage_storagecard_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_storage_storagecard_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_10_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_10_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_2_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_2_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_5_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_5_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_off_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_timer_off_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_auto_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_auto_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_cloudy_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_cloudy_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_day_light_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_day_light_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_horizon_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_horizon_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_incandescent_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_incandescent_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_shade_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_shade_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_tungsten_nor.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_whitebalance_tungsten_press.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_zoom.png [new file with mode: 0755]
images/edc_images/shortcut/camera_mode_zoom_press.png [new file with mode: 0755]
images/edc_images/shortcut/sharewith_icon.png [new file with mode: 0755]
images/edc_images/shortcut/sharewith_icon_press.png [new file with mode: 0755]
images/edc_images/tmp/11_camcorder_standby_press.png [new file with mode: 0755]
images/edc_images/tmp/11_camcorder_standby_press_ver.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_bg.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_bg_ver.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_button.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_button_ver.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_camcorder_off.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_camcorder_on.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_camera_off.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_camera_on.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_recording_normal.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_recording_normal_ver.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_recording_press.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_mode_recording_press_ver.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_snapshot.png [new file with mode: 0755]
images/edc_images/tmp/11_camera_snapshot_press.png [new file with mode: 0755]
images/edc_images/tmp/37_guideline_1.png [new file with mode: 0644]
images/edc_images/tmp/37_guideline_2.png [new file with mode: 0644]
images/edc_images/tmp/37_guideline_opa_1.png [new file with mode: 0644]
images/edc_images/tmp/37_guideline_opa_2.png [new file with mode: 0644]
images/edc_images/tmp/37_shootingmode_popup_bg.png [new file with mode: 0755]
images/edc_images/touch_af_focus_rect_01.png [new file with mode: 0755]
images/edc_images/touch_af_focus_rect_02.png [new file with mode: 0755]
images/edc_images/touch_af_focus_rect_03.png [new file with mode: 0755]
images/edc_images/vertical/camera_mode_bg_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_mode_button_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_mode_shutter_dim_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_mode_shutter_norma_ver_inverse.png [new file with mode: 0644]
images/edc_images/vertical/camera_mode_shutter_normal_ver.png [new file with mode: 0644]
images/edc_images/vertical/camera_mode_shutter_press_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_normal_bg_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_normal_bg_ver2.png [new file with mode: 0755]
images/edc_images/vertical/camera_normal_bg_ver2_01.png [new file with mode: 0755]
images/edc_images/vertical/camera_normal_bg_ver_01.png [new file with mode: 0755]
images/edc_images/vertical/camera_option_popup_anker_vertical.png [new file with mode: 0755]
images/edc_images/vertical/camera_option_popup_anker_vertical_inverse.png [new file with mode: 0755]
images/edc_images/vertical/camera_popup_ex_bar_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_popup_zoom_bar_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_popup_zoom_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_shrtcut_edit_bg_02_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_shrtcut_edit_bg_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_shrtcut_menubar_bg_ver.png [new file with mode: 0755]
images/edc_images/vertical/camera_shrtcut_text_bg_ver.png [new file with mode: 0755]
include/CamDeviceCapacity.h [new file with mode: 0755]
include/CamTypeConverter.h [new file with mode: 0755]
include/cam.h [new file with mode: 0755]
include/cam_animation.h [new file with mode: 0755]
include/cam_app.h [new file with mode: 0755]
include/cam_capacity_type.h [new file with mode: 0755]
include/cam_config.h [new file with mode: 0755]
include/cam_continuous_shot.h [new file with mode: 0755]
include/cam_debug.h [new file with mode: 0755]
include/cam_device_capacity.h [new file with mode: 0755]
include/cam_error.h [new file with mode: 0755]
include/cam_exif_info.h [new file with mode: 0755]
include/cam_face_detection_focus.h [new file with mode: 0755]
include/cam_file.h [new file with mode: 0755]
include/cam_lbs.h [new file with mode: 0755]
include/cam_long_press.h [new file with mode: 0755]
include/cam_menu_composer.h [new file with mode: 0755]
include/cam_mm.h [new file with mode: 0755]
include/cam_popup.h [new file with mode: 0755]
include/cam_property.h [new file with mode: 0755]
include/cam_rec.h [new file with mode: 0755]
include/cam_sound.h [new file with mode: 0755]
include/cam_ta.h [new file with mode: 0755]
include/cam_typeconverter.h [new file with mode: 0755]
include/cam_ui_effect_utils.h [new file with mode: 0755]
include/cam_ui_rotate_utils.h [new file with mode: 0755]
include/cam_voice_command.h [new file with mode: 0755]
include/camera_utils.h [new file with mode: 0755]
include/edc-callback/cam_common_edc_callback.h [new file with mode: 0755]
include/edc-callback/cam_ev_edc_callback.h [new file with mode: 0755]
include/edc-callback/cam_indicator_edc_callback.h [new file with mode: 0755]
include/edc-callback/cam_recording_edc_callback.h [new file with mode: 0755]
include/edc-callback/cam_toolbar_edc_callback.h [new file with mode: 0755]
include/edc-callback/cam_zoom_edc_callback.h [new file with mode: 0755]
include/edc_image_name.h [new file with mode: 0755]
include/edc_string.h [new file with mode: 0755]
packaging/ug-camera-efl.spec [new file with mode: 0755]
po/CMakeLists.txt [new file with mode: 0644]
po/ar.po [new file with mode: 0755]
po/az.po [new file with mode: 0755]
po/bg.po [new file with mode: 0755]
po/ca.po [new file with mode: 0755]
po/cs.po [new file with mode: 0755]
po/da.po [new file with mode: 0755]
po/de_DE.po [new file with mode: 0755]
po/el_GR.po [new file with mode: 0755]
po/en.po [new file with mode: 0755]
po/en_PH.po [new file with mode: 0755]
po/en_US.po [new file with mode: 0755]
po/es_ES.po [new file with mode: 0755]
po/es_MX.po [new file with mode: 0755]
po/et.po [new file with mode: 0755]
po/eu.po [new file with mode: 0755]
po/fi.po [new file with mode: 0755]
po/fr_CA.po [new file with mode: 0755]
po/fr_FR.po [new file with mode: 0755]
po/ga.po [new file with mode: 0755]
po/gl.po [new file with mode: 0755]
po/hi.po [new file with mode: 0755]
po/hr.po [new file with mode: 0755]
po/htm2po.py [new file with mode: 0755]
po/hu.po [new file with mode: 0755]
po/hy.po [new file with mode: 0755]
po/is.po [new file with mode: 0755]
po/it_IT.po [new file with mode: 0755]
po/ja_JP.po [new file with mode: 0755]
po/ka.po [new file with mode: 0755]
po/kk.po [new file with mode: 0755]
po/ko_KR.po [new file with mode: 0755]
po/lt.po [new file with mode: 0755]
po/lv.po [new file with mode: 0755]
po/mk.po [new file with mode: 0755]
po/nb.po [new file with mode: 0755]
po/nl_NL.po [new file with mode: 0755]
po/pl.po [new file with mode: 0755]
po/pt_BR.po [new file with mode: 0755]
po/pt_PT.po [new file with mode: 0755]
po/ro.po [new file with mode: 0755]
po/ru_RU.po [new file with mode: 0755]
po/sk.po [new file with mode: 0755]
po/sl.po [new file with mode: 0755]
po/sr.po [new file with mode: 0755]
po/sv.po [new file with mode: 0755]
po/tr_TR.po [new file with mode: 0755]
po/uk.po [new file with mode: 0755]
po/update-po.sh [new file with mode: 0755]
po/uz.po [new file with mode: 0755]
po/zh_CN.po [new file with mode: 0755]
po/zh_HK.po [new file with mode: 0755]
po/zh_SG.po [new file with mode: 0755]
po/zh_TW.po [new file with mode: 0755]
sounds/af_fail.wav [new file with mode: 0755]
sounds/af_ok.wav [new file with mode: 0755]
sounds/count.wav [new file with mode: 0755]
src/CamDeviceCapacity.cpp [new file with mode: 0755]
src/CamTypeConverter.cpp [new file with mode: 0755]
src/cam.c [new file with mode: 0755]
src/cam_animation.c [new file with mode: 0755]
src/cam_app.c [new file with mode: 0755]
src/cam_config.c [new file with mode: 0755]
src/cam_continuous_shot.c [new file with mode: 0755]
src/cam_debug.c [new file with mode: 0755]
src/cam_device_capacity.cpp [new file with mode: 0755]
src/cam_exif_info.c [new file with mode: 0755]
src/cam_face_detection_focus.c [new file with mode: 0755]
src/cam_file.c [new file with mode: 0755]
src/cam_lbs.c [new file with mode: 0755]
src/cam_long_press.c [new file with mode: 0755]
src/cam_menu_composer.c [new file with mode: 0755]
src/cam_mm.c [new file with mode: 0755]
src/cam_popup.c [new file with mode: 0755]
src/cam_rec.c [new file with mode: 0755]
src/cam_sound.c [new file with mode: 0755]
src/cam_ta.c [new file with mode: 0755]
src/cam_typeconverter.cpp [new file with mode: 0755]
src/cam_ui_effect_utils.c [new file with mode: 0755]
src/cam_ui_rotate_utils.c [new file with mode: 0755]
src/cam_voice_command.c [new file with mode: 0755]
src/camera_utils.c [new file with mode: 0755]
src/edc-callback/cam_common_edc_callback.c [new file with mode: 0755]
src/edc-callback/cam_ev_edc_callback.c [new file with mode: 0755]
src/edc-callback/cam_indicator_edc_callback.c [new file with mode: 0755]
src/edc-callback/cam_recording_edc_callback.c [new file with mode: 0755]
src/edc-callback/cam_toolbar_edc_callback.c [new file with mode: 0755]
src/edc-callback/cam_zoom_edc_callback.c [new file with mode: 0755]
ug-camera-efl.manifest [new file with mode: 0644]
ug-camera-efl.png [new file with mode: 0755]
ug-camera-efl.xml [new file with mode: 0755]
ug.camera-efl.include [new file with mode: 0755]

diff --git a/.camera.ini b/.camera.ini
new file mode 100644 (file)
index 0000000..aae96f8
--- /dev/null
@@ -0,0 +1,39 @@
+
+[common]
+mode=1
+[still]
+storage=0
+ahs=0
+scene_mode=0
+iso=0
+flash=2
+wdr=0
+metering=2
+resolution=167774080
+review=false
+guideline=false
+af_mode=1
+wb=1
+toolbar_0 =-1
+toolbar_1 =-1
+toolbar_2 =-1
+toolbar_3 =3
+toolbar_4 =4
+[video]
+ahs=0
+scene_mode=0
+iso=0
+flash=0
+guideline=false
+wdr=0
+metering=2
+resolution=41943520
+review=false
+toolbar_0 =-1
+toolbar_1 =6
+toolbar_2 =-1
+toolbar_3 =3
+toolbar_4 =4
+[shortcuts]
+pop_tip=1
+init_part_index=false
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..2c4290f
--- /dev/null
@@ -0,0 +1,2 @@
+*~
+*.orig
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..1f04124
--- /dev/null
@@ -0,0 +1,196 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-camera-efl C CXX)
+
+message(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
+message("furcate arm or i686")
+EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
+message("This package is building by ${CMAKE_SYSTEM_VERSION}")
+message(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
+
+if("${CMAKE_SYSTEM_VERSION}" MATCHES "^arm.*")
+SET(SRCS
+src/cam.c
+src/camera_utils.c
+src/cam_mm.c
+src/cam_app.c
+src/cam_animation.c
+src/cam_sound.c
+src/cam_debug.c
+src/cam_config.c
+src/cam_file.c
+src/cam_ta.c
+src/cam_continuous_shot.c
+src/cam_rec.c
+src/cam_lbs.c
+src/cam_popup.c
+src/cam_long_press.c
+src/cam_face_detection_focus.c
+src/cam_ui_effect_utils.c
+src/cam_ui_rotate_utils.c
+src/cam_menu_composer.c
+src/cam_typeconverter.cpp
+src/cam_device_capacity.cpp
+src/CamTypeConverter.cpp
+src/CamDeviceCapacity.cpp
+src/cam_voice_command.c
+src/cam_exif_info.c
+src/edc-callback/cam_common_edc_callback.c
+src/edc-callback/cam_toolbar_edc_callback.c
+src/edc-callback/cam_indicator_edc_callback.c
+src/edc-callback/cam_ev_edc_callback.c
+src/edc-callback/cam_zoom_edc_callback.c
+src/edc-callback/cam_recording_edc_callback.c
+)
+else()
+SET(SRCS
+src/cam.c
+src/camera_utils.c
+src/cam_mm.c
+src/cam_app.c
+src/cam_sound.c
+src/cam_debug.c
+src/cam_config.c
+src/cam_file.c
+src/cam_ta.c
+src/cam_continuous_shot.c
+src/cam_rec.c
+src/cam_lbs.c
+src/cam_popup.c
+src/cam_long_press.c
+src/cam_face_detection_focus.c
+src/cam_ui_effect_utils.c
+src/cam_ui_rotate_utils.c
+src/cam_menu_composer.c
+src/cam_typeconverter.cpp
+src/cam_device_capacity.cpp
+src/CamTypeConverter.cpp
+src/CamDeviceCapacity.cpp
+src/cam_voice_command.c
+src/edc-callback/cam_common_edc_callback.c
+src/edc-callback/cam_toolbar_edc_callback.c
+src/edc-callback/cam_indicator_edc_callback.c
+src/edc-callback/cam_ev_edc_callback.c
+src/edc-callback/cam_zoom_edc_callback.c
+src/edc-callback/cam_recording_edc_callback.c
+)
+endif()
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include
+${CMAKE_CURRENT_SOURCE_DIR}/include/edc-callback )
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       elementary
+       devman
+       capi-appfw-application
+       capi-content-media-content
+       capi-location-manager
+       capi-media-camera
+       capi-media-image-util
+       capi-media-recorder
+       capi-media-sound-manager
+       capi-media-wav-player
+       capi-system-power
+       vconf
+       dlog
+       ui-gadget-1
+       utilX
+       ecore-x ecore ecore-evas ecore-input eina
+       syspopup-caller
+       capi-system-sensor
+)
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS})
+
+SET(CAMERA_UG_PACKAGE_NAME "ug-camera-efl")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "/opt/usr/ug/data/${CAMERA_UG_PACKAGE_NAME}")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(EDJDIR "${RESDIR}/edje/${CAMERA_UG_PACKAGE_NAME}")
+SET(SOUNDDIR "${RESDIR}/sounds/${CAMERA_UG_PACKAGE_NAME}")
+SET(ICONDIR "${RESDIR}/icons/${CAMERA_UG_PACKAGE_NAME}")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DSLP_DEBUG")
+
+if(NOT "${CMAKE_SYSTEM_VERSION}" MATCHES "^arm.*")
+add_definitions(-DCAMERA_MACHINE_I686="${CMAKE_SYSTEM_VERSION}")
+endif()
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION 0.1.0)
+
+if("${CMAKE_SYSTEM_VERSION}" MATCHES "^arm.*")
+#TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${EXTPkgs_LDFLAGS} "-fpie")
+else()
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+endif()
+
+###################################### EDC, Begin ################################
+SET(EDC_DIR    ${CMAKE_SOURCE_DIR}/edc)
+SET(IMAGE_DIR  ${CMAKE_SOURCE_DIR}/images/edc_images)
+
+SET(EDC_FILES
+cam_main_layout
+cam_toolbar_layout
+cam_toolbar_layout_inverse
+cam_toolbar_layout_vertical
+cam_toolbar_layout_vertical_inverse
+cam_recording_edje
+cam_recording_edje_inverse
+cam_recording_edje_vertical
+cam_recording_edje_vertical_inverse
+style_ctxpopup_camera_with_radio
+style_slider_camera
+style_label_camera
+style_button_camera
+cam_indicator_layout
+cam_utils
+cam_ev_layout
+cam_ev_layout_inverse
+cam_ev_layout_vertical
+cam_ev_layout_vertical_inverse
+cam_zoom_layout
+cam_zoom_layout_inverse
+cam_zoom_layout_vertical
+cam_zoom_layout_vertical_inverse
+cam_ctxpopup_shortcuts
+cam_setting_popup_layout
+cam_images
+)
+
+FOREACH(file_name ${EDC_FILES})
+               ADD_CUSTOM_TARGET(${file_name}.edj
+                               COMMAND edje_cc -id ${IMAGE_DIR}
+                               ${EDC_DIR}/${file_name}.edc ${EDC_DIR}/${file_name}.edj
+                               DEPENDS ${EDC_DIR}/${file_name}.edc
+               )
+               ADD_DEPENDENCIES(${PROJECT_NAME} ${file_name}.edj)
+               INSTALL(FILES ${EDC_DIR}/${file_name}.edj DESTINATION ${EDJDIR})
+ENDFOREACH(file_name)
+###################################### EDC, end ################################
+
+# install library
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/ug/lib)
+
+# install sound & image files
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/ug-camera-efl.xml DESTINATION /usr/share/packages/)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/ug-camera-efl.png DESTINATION ${ICONDIR})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/sounds DESTINATION ${SOUNDDIR})
+
+# install .camera.ini file
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/.camera.ini DESTINATION ${DATADIR})
+
+# i18n
+ADD_SUBDIRECTORY(po)
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100755 (executable)
index 0000000..571fe79
--- /dev/null
@@ -0,0 +1,206 @@
+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
new file mode 100644 (file)
index 0000000..a5964ea
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+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.
diff --git a/edc/cam_ctxpopup_shortcuts.edc b/edc/cam_ctxpopup_shortcuts.edc
new file mode 100755 (executable)
index 0000000..8de32fc
--- /dev/null
@@ -0,0 +1,1010 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_ctxpopup_shortcuts_inc.edc"\r
+\r
+#define SHORTCUTS_PANEL_WIDTH 720\r
+#define SHORTCUTS_PANEL_HEIGHT 900\r
+\r
+\r
+images {\r
+       image: SHOTCUTS_LINE_V_IMAGE COMP;\r
+       image: SHOTCUTS_EDIT_BG_H_IMAGE COMP;\r
+       image: SHOTCUTS_EDIT_MENU_BG_H_IMAGE COMP;\r
+       image: SHOTCUTS_LINE_H_IMAGE COMP;\r
+       image: SHOTCUTS_TEXT_BG_IMAGE COMP;\r
+}\r
+\r
+collections {\r
+       styles\r
+       {\r
+               style {\r
+                       name: "cam_textblock_effect_default";\r
+                       base: "font=SLP:style=Roman font_size=30 align=center color=#FFFFFF ellipise=1.0 wrap=mixed";\r
+                       tag:  "br" "\n";\r
+                       tag:  "hilight" "+ font=SLP:style=Bold";\r
+                       tag:  "b" "+ font=SLP:style=Bold";\r
+                       tag:  "tab" "\t";\r
+               }\r
+               style {\r
+                       name: "cam_textblock_effect_align_left";\r
+                       base: "font=SLP:style=Roman font_size=30 color=#000000 ellipise=1.0 wrap=mixed";\r
+                       tag:  "br" "\n";\r
+                       tag:  "hilight" "+ font=SLP:style=Bold";\r
+                       tag:  "b" "+ font=SLP:style=Bold";\r
+                       tag:  "tab" "\t";\r
+               }\r
+               style {\r
+                       name: "cam_text_default";\r
+                       base: "font=SLP:style=Roman font_size=30 align=center color=#FFFFFF ellipise=1.0 wrap=mixed";\r
+                       tag:  "br"        "  \n";\r
+               }\r
+               style {\r
+                       name: "cam_text_left";\r
+                       base: "font=SLP:style=Roman font_size=30 align=left color=#FFFFFF ellipise=1.0 wrap=mixed";\r
+                       tag:  "br"        "  \n";\r
+               }\r
+       }\r
+       group {\r
+               name: "camera/shortcuts/ele";\r
+               parts {\r
+                       part {\r
+                               name: "bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 180 200;\r
+                                       max: 180 200;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "ele.bg.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0; to:"bg";}\r
+                                       rel2 { relative: 1.0 122/200; to:"bg";}\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "ele.bg.bottom";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 100/200; to:"bg";}\r
+                                       rel2 { relative: 1.0 1.0; to:"bg";}\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "ele.icon";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 86 86;\r
+                                       max: 86 86;\r
+                                       align: 0.5 0.5;\r
+                                       aspect: 1.0 1.0;\r
+                                       rel1 { relative: 14/180 0.0; to:"ele.bg.top";}\r
+                                       rel2 { relative: (1-14/180) 1.0; to:"ele.bg.top";}\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "ele.txt";\r
+                               type: TEXTBLOCK;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.05 0.05; to:"ele.bg.bottom";}\r
+                                       rel2 { relative: 0.95 0.80; to:"ele.bg.bottom";}\r
+                                       text {\r
+                                               style: cam_textblock_effect_default;\r
+                                               min: 0 0;\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "ele.bg.bottom.pad";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 0.0 0.0;\r
+                                       min:   0 4;\r
+                                       rel1 { relative: 1.0 1.0; to:"ele.txt";}\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       #define SHORTCUST_LAYOUT_WIDTH 720\r
+       #define SHORTCUST_LAYOUT_HEIGHT 1000\r
+\r
+       group {\r
+               name : "camera/shortcuts/layout/description";\r
+               parts {\r
+                       part {\r
+                               name: "bg";\r
+                               type: RECT;\r
+//                             scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 720 120;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "bg.content.img";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 0.0; to: "bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "bg";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_TEXT_BG_IMAGE ;\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "description.txtblock";\r
+                               type: TEXTBLOCK;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 80/720 30/120; to: "bg.content.img";}\r
+                                       rel2 { relative: 640/720 100/120; to: "bg.content.img";}\r
+                                       align: 0.0 0.0;\r
+                                       text {\r
+                                               style: cam_textblock_effect_default;\r
+                                               min: 0 0;\r
+                                               max: 0 1;\r
+                                       }\r
+                               }\r
+                       }\r
+               }//end parts\r
+       }\r
+\r
+       group {\r
+               name:"camera/shortcuts/layout";\r
+               parts {\r
+                       part {\r
+                               name: "bg";\r
+                               type: RECT;\r
+//                             scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: SHORTCUST_LAYOUT_WIDTH SHORTCUST_LAYOUT_HEIGHT;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "bg.content.img";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 0.0; to: "bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "bg";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_EDIT_BG_H_IMAGE ;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "bg.content.shortcuts";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0; to: "bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "bg";}\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.1.padding.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 200;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0; to: "bg.content.shortcuts";}\r
+                                       rel2 { relative: 1.0 0.0; to: "bg.content.shortcuts";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.1";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 4;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.1.padding.top";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.1.padding.top";}\r
+                                       align: 0.0 0.0;\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_H_IMAGE ;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.2.padding.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 200;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.1";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.1";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.2";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 4;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.2.padding.top";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.2.padding.top";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_H_IMAGE ;\r
+                                       }\r
+                                       align: 0.0 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.3.padding.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 200;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.2";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.2";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.3";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 4;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.3.padding.top";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.3.padding.top";}\r
+                                       align: 0.0 0.0;\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_H_IMAGE ;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.4.padding.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 200;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.3";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.3";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.4";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 4;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.4.padding.top";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.4.padding.top";}\r
+                                       align: 0.0 0.0;\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_H_IMAGE ;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_h.5.padding.top";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 720 200;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 1.0; to: "line_h.4";}\r
+                                       rel2 { relative: 1.0 1.0; to: "line_h.4";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.1.padding.left";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description { state: "default" 0.0;\r
+                                       min: 180 1000;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0; to:"bg.content.shortcuts";}\r
+                                       rel2 { relative: 0.0 1.0; to:"bg.content.shortcuts";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.1";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 4 1000;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.1.padding.left";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.1.padding.left";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_V_IMAGE ;\r
+                                       }\r
+                                       align: 0.0 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.2.padding.left";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description { state: "default" 0.0;\r
+                                       min: 180 1000;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.1";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.1";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.2";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 4 1000;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.2.padding.left";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.2.padding.left";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_V_IMAGE ;\r
+                                       }\r
+                                       align: 0.0 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.3.padding.left";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description { state: "default" 0.0;\r
+                                       min: 180 1000;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.2";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.2";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.3";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 4 1000;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.3.padding.left";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.3.padding.left";}\r
+                                       image{\r
+                                               normal: SHOTCUTS_LINE_V_IMAGE ;\r
+                                       }\r
+                                       align: 0.0 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "line_v.4.padding.left";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description { state: "default" 0.0;\r
+                                       min: 180 1000;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 1.0 0.0; to:"line_v.3";}\r
+                                       rel2 { relative: 1.0 1.0; to:"line_v.3";}\r
+                                       align: 0.0 0.0;\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       SHORTCUTS_ITEM_BG(0,1,1);\r
+                       SHORTCUTS_ITEM_BG(1,1,2);\r
+                       SHORTCUTS_ITEM_BG(2,1,3);\r
+                       SHORTCUTS_ITEM_BG(3,1,4);\r
+\r
+                       SHORTCUTS_ITEM_BG(4,2,1);\r
+                       SHORTCUTS_ITEM_BG(5,2,2);\r
+                       SHORTCUTS_ITEM_BG(6,2,3);\r
+                       SHORTCUTS_ITEM_BG(7,2,4);\r
+\r
+                       SHORTCUTS_ITEM_BG(8,3,1);\r
+                       SHORTCUTS_ITEM_BG(9,3,2);\r
+                       SHORTCUTS_ITEM_BG(10,3,3);\r
+                       SHORTCUTS_ITEM_BG(11,3,4);\r
+\r
+                       SHORTCUTS_ITEM_BG(12,4,1);\r
+                       SHORTCUTS_ITEM_BG(13,4,2);\r
+                       SHORTCUTS_ITEM_BG(14,4,3);\r
+                       SHORTCUTS_ITEM_BG(15,4,4);\r
+\r
+                       SHORTCUTS_ITEM_BG(16,5,1);\r
+                       SHORTCUTS_ITEM_BG(17,5,2);\r
+                       SHORTCUTS_ITEM_BG(18,5,3);\r
+                       SHORTCUTS_ITEM_BG(19,5,4);\r
+\r
+\r
+                       SHORTCUTS_MENU_H("0", "menu.0.bg", "menu.0.bg", "menu.1.bg")\r
+                       SHORTCUTS_MENU_H("1", "menu.0.bg", "menu.1.bg", "menu.2.bg")\r
+                       SHORTCUTS_MENU_H("2", "menu.1.bg", "menu.2.bg", "menu.3.bg")\r
+                       SHORTCUTS_MENU_H("3", "menu.2.bg", "menu.3.bg", "menu.4.bg")\r
+\r
+                       SHORTCUTS_MENU_H("4", "menu.3.bg", "menu.4.bg", "menu.5.bg")\r
+                       SHORTCUTS_MENU_H("5", "menu.4.bg", "menu.5.bg", "menu.6.bg")\r
+                       SHORTCUTS_MENU_H("6", "menu.5.bg", "menu.6.bg", "menu.7.bg")\r
+                       SHORTCUTS_MENU_H("7", "menu.6.bg", "menu.7.bg", "menu.8.bg")\r
+\r
+                       SHORTCUTS_MENU_H("8", "menu.7.bg", "menu.8.bg", "menu.9.bg")\r
+                       SHORTCUTS_MENU_H("9", "menu.8.bg", "menu.9.bg", "menu.10.bg")\r
+                       SHORTCUTS_MENU_H("10", "menu.9.bg", "menu.10.bg", "menu.11.bg")\r
+                       SHORTCUTS_MENU_H("11", "menu.10.bg", "menu.11.bg", "menu.12.bg")\r
+\r
+                       SHORTCUTS_MENU_H("12", "menu.11.bg", "menu.12.bg", "menu.13.bg")\r
+                       SHORTCUTS_MENU_H("13", "menu.12.bg", "menu.13.bg", "menu.14.bg")\r
+                       SHORTCUTS_MENU_H("14", "menu.13.bg", "menu.14.bg", "menu.15.bg")\r
+                       SHORTCUTS_MENU_H("15", "menu.14.bg", "menu.15.bg", "menu.16.bg")\r
+\r
+                       SHORTCUTS_MENU_H("16", "menu.15.bg", "menu.16.bg", "menu.17.bg")\r
+                       SHORTCUTS_MENU_H("17", "menu.16.bg", "menu.17.bg", "menu.18.bg")\r
+                       SHORTCUTS_MENU_H("18", "menu.17.bg", "menu.18.bg", "menu.19.bg")\r
+                       SHORTCUTS_MENU_H("19", "menu.18.bg", "menu.19.bg", "menu.19.bg")\r
+\r
+               }\r
+               programs {\r
+                       SHORTCUTS_MENU_PROGRAM(0)\r
+                       SHORTCUTS_MENU_PROGRAM(1)\r
+                       SHORTCUTS_MENU_PROGRAM(2)\r
+                       SHORTCUTS_MENU_PROGRAM(3)\r
+\r
+                       SHORTCUTS_MENU_PROGRAM(4)\r
+                       SHORTCUTS_MENU_PROGRAM(5)\r
+                       SHORTCUTS_MENU_PROGRAM(6)\r
+                       SHORTCUTS_MENU_PROGRAM(7)\r
+\r
+                       SHORTCUTS_MENU_PROGRAM(8)\r
+                       SHORTCUTS_MENU_PROGRAM(9)\r
+                       SHORTCUTS_MENU_PROGRAM(10)\r
+                       SHORTCUTS_MENU_PROGRAM(11)\r
+\r
+                       SHORTCUTS_MENU_PROGRAM(12)\r
+                       SHORTCUTS_MENU_PROGRAM(13)\r
+                       SHORTCUTS_MENU_PROGRAM(14)\r
+                       SHORTCUTS_MENU_PROGRAM(15)\r
+\r
+                       SHORTCUTS_MENU_PROGRAM(16)\r
+                       SHORTCUTS_MENU_PROGRAM(17)\r
+                       SHORTCUTS_MENU_PROGRAM(18)\r
+                       SHORTCUTS_MENU_PROGRAM(19)\r
+\r
+               }\r
+       }\r
+\r
+/*NOTE: shortcuts popup tip define*/\r
+/**\r
+*      width:10(left_pading) + 16 + 306(help image width) +16 + 16 + 10(right padding)\r
+*      width  = 10 + 16 + 306 + 16 + 306 + 16 + 10 = 680\r
+*      height = 10 + 64 + 22 + 240 + 22 + 60 + 22 + 96 + 10 = 546\r
+*/\r
+\r
+       group {\r
+               name: "camera/shortcuts/help/check/layout";\r
+               parts {\r
+                       part {\r
+                               name: "check.swallow";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 42 42;\r
+                                       max: 42 42;\r
+                                       fixed: 1 0;\r
+                                       align: 0.0 0.5;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "check.txt";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 120 42;\r
+                                       max: 120 42;\r
+                                       fixed: 1 0;\r
+                                       align: 0 0.5;\r
+                                       rel1 { relative: 1.0 0.0; to: "check.swallow";}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       text {\r
+                                               font: FONT_NAME;\r
+                                               size:     30;\r
+                                               align:    0.0 0.5;\r
+                                               min: 1 1;\r
+                                               text: "Don't ask again";\r
+                                       }\r
+                               }\r
+                       }//part\r
+               }//parts\r
+\r
+       }\r
+\r
+       group {\r
+               name: "camera/shortcuts/help";\r
+               min: 680 546;\r
+               max: 680 546;\r
+               parts {\r
+                       part {\r
+                               name: "bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 680 546;\r
+                                       max: 680 546;\r
+                                       fixed: 1 1;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+                       CAM_SHORTCUTS_HELP_PART_PADDING_TOP(10)\r
+                       CAM_SHORTCUTS_HELP_PART_PADDING_BOTTOM(10)\r
+                       CAM_SHORTCUTS_HELP_PART_PADDING_LEFT(10)\r
+                       CAM_SHORTCUTS_HELP_PART_PADDING_RIGHT(10)\r
+\r
+                       part {\r
+                               name: "tips";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min:    0 64;\r
+                                       fixed:  0 1;\r
+                                       align: 0 0;\r
+                                       rel1 { relative: 1.0 1.0; to_x: "elm.padding.left"; to_y: "elm.padding.top";}\r
+                                       rel2 { relative: 0.0 1.0; to_x: "elm.padding.right"; to_y: "elm.padding.top";}\r
+                                       color: 51 102 153 255;\r
+                                       /*color: 0 0 0 196;*/\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "tips.txt";\r
+                               type: TEXTBLOCK;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0; to: "tips";}\r
+                                       rel2 { relative: 1.0 1.0; to: "tips";}\r
+                                       text {\r
+                                               style: "cam_text_default";\r
+                                               min: 1 1;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "button.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min:    0 96;\r
+                                       fixed:  0 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 1.0 0.0; to_x: "elm.padding.left"; to_y: "elm.padding.bottom";}\r
+                                       rel2 { relative: 0.0 0.0; to_x: "elm.padding.right"; to_y: "elm.padding.bottom";}\r
+                                       color: 255 255 255 64;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "button.swallow";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.2 0.0; to: "button.bg";}\r
+                                       rel2 { relative: 0.8 0.8; to: "button.bg";}\r
+                                       color: 51 102 153 255;\r
+                               }\r
+                       }\r
+\r
+\r
+                       part {\r
+                               name: "content.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 1.0 1.0; to_x: "elm.padding.left"; to_y: "tips";}\r
+                                       rel2 { relative: 0.0 0.0; to_x: "elm.padding.right"; to_y: "button.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+                       /*note: content:\r
+                       * width: 16 + 306 + 16 + 306 + 16 = 660\r
+                       * height: 22 + 60*4 + 22 + 60 + 22 = 366\r
+                       */\r
+                       part {\r
+                               name: "content.help.image";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/660 22/366; to: "content.bg";}\r
+                                       rel2 { relative: (16+306)/660 (22 + 240)/366; to: "content.bg";}\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: (16+306)/660 22/366; to: "content.bg";}\r
+                                       rel2 { relative: (16+306+306)/660 (22 + 240)/366; to: "content.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "content.help.check";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/660 (22 + 240 + 22)/366; to: "content.bg";}\r
+                                       rel2 { relative: (16+306+306)/660 (22 + 240 + 22 + 60)/366; to: "content.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "content.help.check.swallow";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1.0 0.5;\r
+                                       rel1 { relative: 0.25 0.0; to: "content.help.check";}\r
+                                       rel2 { relative: 0.40 1.0; to: "content.help.check";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "content.help.check.txt";\r
+                               type: TEXTBLOCK;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.40 0.0; to: "content.help.check";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.check";}\r
+                                       text {\r
+                                               style: "cam_text_left";\r
+                                               min: 1 1;\r
+                                       }\r
+                                       color: 0 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "content.help.txt.1.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 0.0 0.0; to: "content.help.txt.bg";}\r
+                                       rel2 { relative: 1.0 60/240; to: "content.help.txt.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.2.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 0.0 60/240; to: "content.help.txt.bg";}\r
+                                       rel2 { relative: 1.0 120/240; to: "content.help.txt.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.3.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 0.0 120/240; to: "content.help.txt.bg";}\r
+                                       rel2 { relative: 1.0 180/240; to: "content.help.txt.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.4.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 0.0 180/240; to: "content.help.txt.bg";}\r
+                                       rel2 { relative: 1.0 240/240; to: "content.help.txt.bg";}\r
+                                       color: 0 0 0 64;\r
+                               }\r
+                       }\r
+#if 1/*note: using textblock, block two lines parts*/\r
+               part {\r
+                       name: "content.help.txtblock.bg";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       mouse_events: 0;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               visible: 0;\r
+                               align: 1 1;\r
+                               rel1 { relative: 0.0 0/240; to: "content.help.txt.bg";}\r
+                               rel2 { relative: 1.0 180/240; to: "content.help.txt.bg";}\r
+                               color: 0 0 0 64;\r
+                       }\r
+               }\r
+               part {\r
+                               name: "content.help.txtblock";\r
+                               type: TEXTBLOCK;\r
+                               scale: 1;\r
+                               multiline: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0; to: "content.help.txtblock.bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.txtblock.bg";}\r
+                                       text {\r
+                                               style: cam_textblock_effect_align_left;\r
+                                               align: 0.0 1.0;\r
+                                               min: 0 0;\r
+                                               max: 0 1;\r
+                                               //text: "Tap and hold <br><br>shortcuts <br><br>to edit them";\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+#else\r
+                       part {\r
+                               name: "content.help.txt.1";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.1.bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.txt.1.bg";}\r
+                                       text {\r
+                                               font: FONT_NAME;\r
+                                               size:     30;\r
+                                               align:    0.0 0.5;\r
+                                               min: 1 1;\r
+                                               text: "Tap and hold";\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.2";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.2.bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.txt.2.bg";}\r
+                                       text {\r
+                                               font: FONT_NAME;\r
+                                               size:     30;\r
+                                               align:    0.0 0.5;\r
+                                               min: 1 1;\r
+                                               text: "shortcuts";\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.3";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.3.bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.txt.3.bg";}\r
+                                       text {\r
+                                               font: FONT_NAME;\r
+                                               size:     30;\r
+                                               align:    0.0 0.5;\r
+                                               min: 1 1;\r
+                                               text: "to edit them";\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "content.help.txt.4";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 1 1;\r
+                                       rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.4.bg";}\r
+                                       rel2 { relative: 1.0 1.0; to: "content.help.txt.4.bg";}\r
+                                       text {\r
+                                               font: FONT_NAME;\r
+                                               size:     30;\r
+                                               align:    0.0 0.5;\r
+                                               min: 1 1;\r
+                                               text: "";\r
+                                       }\r
+                               }\r
+                       }\r
+#endif\r
+\r
+               }//end parts\r
+       }//end group\r
+\r
+}//END connection\r
+//end file\r
diff --git a/edc/cam_ctxpopup_shortcuts_inc.edc b/edc/cam_ctxpopup_shortcuts_inc.edc
new file mode 100755 (executable)
index 0000000..8889e36
--- /dev/null
@@ -0,0 +1,163 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "../include/edc_image_name.h"\r
+#include "cam_funcs.edc"\r
+\r
+#define SHORTCUTS_PANEL_WIDTH 720\r
+#define SHORTCUTS_PANEL_HEIGHT 900\r
+\r
+#define SHORTCUTS_ITEM_BG(part_no,row,col) \\r
+       part {\\r
+               name: "menu."part_no".bg";\\r
+               type: RECT;\\r
+               scale: 1;\\r
+               mouse_events: 0;\\r
+               description {\\r
+                       state: "default" 0.0;\\r
+                       visible: 0;\\r
+                       rel1 {\\r
+                               relative: 0.0 0.0;\\r
+                               to_x: "line_v."col".padding.left";\\r
+                               to_y: "line_h."row".padding.top";\\r
+                       }\\r
+                       rel2 {\\r
+                               relative: 1.0 1.0;\\r
+                               to_x: "line_v."col".padding.left";\\r
+                               to_y: "line_h."row".padding.top";\\r
+                       }\\r
+                       color: 255 255 255 255;\\r
+                       align: 0.0 0.0;\\r
+               }\\r
+       }\r
+\r
+#define SHORTCUTS_MENU_H(part_name, pre_to_part, to_part, next_to_part)  \\r
+               part { \\r
+                       name: "row."part_name; \\r
+                       type: SWALLOW; \\r
+                       scale: 1; \\r
+                       mouse_events: 1; \\r
+                       repeat_events: 0;\\r
+                       description { \\r
+                               state: "default" 0.0;   \\r
+                               visible: 1; \\r
+                               align: 0.5 0.5; \\r
+                               aspect: 1.0 1.0; \\r
+                               rel1 { relative: 0.0 0.0; to:to_part;} \\r
+                               rel2 { relative: 1.0 1.0; to:to_part;} \\r
+                       } \\r
+                       description { \\r
+                               state: "prev" 0.0;      \\r
+                               inherit: "default" 0.0;\\r
+                               rel1 { relative: 0.0 0.0; to:pre_to_part;} \\r
+                               rel2 { relative: 1.0 1.0; to:pre_to_part;} \\r
+                       } \\r
+                       description { \\r
+                               state: "next" 0.0;      \\r
+                               inherit: "default" 0.0;\\r
+                               rel1 { relative: 0.0 0.0; to:next_to_part;} \\r
+                               rel2 { relative: 1.0 1.0; to:next_to_part;} \\r
+                       } \\r
+               }\r
+\r
+#define SHORTCUTS_MENU_PROGRAM(part_name)  \\r
+       program { \\r
+               name: "row."part_name".prev"; \\r
+               signal: "move,prev"; \\r
+               source: "row."part_name; \\r
+               action:  STATE_SET "prev" 0.0; \\r
+               target: "row."part_name; \\r
+       } \\r
+       program { \\r
+               name: "row."part_name".next"; \\r
+               signal: "move,next"; \\r
+               source: "row."part_name; \\r
+               action:  STATE_SET "next" 0.0; \\r
+               target: "row."part_name; \\r
+       } \\r
+       program { \\r
+               name: "row."part_name".ani"; \\r
+               signal: "ani,return"; \\r
+               source: "row."part_name; \\r
+               action:  STATE_SET "default" 0.0; \\r
+               target: "row."part_name; \\r
+               transition: DECELERATE 0.4; \\r
+       }\r
+\r
+\r
+/*note: for shotcuts popup tip*/\r
+\r
+#define CAM_SHORTCUTS_HELP_PART_PADDING_TOP( param_padding_size ) \\r
+       part { name: "elm.padding.top"; \\r
+            type: RECT; \\r
+            scale: 1; \\r
+            description { \\r
+               state: "default" 0.0; \\r
+               min: 0 param_padding_size; \\r
+               fixed: 0 1; \\r
+               visible: 0; \\r
+               rel2 {relative: 1.0 0.0; to: "bg";}\\r
+               align: 0.0 0.0; \\r
+               color: 0 0 0 64;\\r
+            } \\r
+         }\r
+\r
+\r
+#define CAM_SHORTCUTS_HELP_PART_PADDING_BOTTOM( param_padding_size ) \\r
+       part { name: "elm.padding.bottom"; \\r
+            type: RECT; \\r
+            scale: 1; \\r
+            description { state: "default" 0.0; \\r
+               min: 0 param_padding_size; \\r
+               fixed: 0 1; \\r
+               visible: 0; \\r
+               rel1 {relative: 0.0 1.0; to: "bg";}\\r
+               align: 0.0 1.0; \\r
+               color: 0 0 0 64;\\r
+            } \\r
+         }\r
+\r
+#define CAM_SHORTCUTS_HELP_PART_PADDING_LEFT( param_padding_size ) \\r
+         part { name: "elm.padding.left"; \\r
+            type: RECT; \\r
+            scale: 1; \\r
+            description { state: "default" 0.0; \\r
+               min: param_padding_size 0; \\r
+               fixed: 1 0; \\r
+               visible: 0; \\r
+               rel2 {relative: 0.0 1.0; to: "bg";}\\r
+               align: 0.0 0.0; \\r
+               color: 0 0 0 64;\\r
+            } \\r
+         }\r
+\r
+#define CAM_SHORTCUTS_HELP_PART_PADDING_RIGHT( param_padding_size ) \\r
+       part { name: "elm.padding.right"; \\r
+            type: RECT; \\r
+            scale: 1; \\r
+            description { state: "default" 0.0; \\r
+               min: param_padding_size 0; \\r
+               fixed: 1 0; \\r
+               visible: 0; \\r
+               rel1 {relative: 1.0  0.0; to: "bg";}\\r
+               align: 1.0 0.0; \\r
+               color: 0 0 0 64;\\r
+            } \\r
+         }\r
+\r
+//end file\r
+\r
diff --git a/edc/cam_ev_layout.edc b/edc/cam_ev_layout.edc
new file mode 100755 (executable)
index 0000000..45662d6
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define EV_BG_X                188
+#define EV_BG_Y                72
+#define EV_BG_W                116
+#define EV_BG_H                576
+
+#define EV_ICON_X      15
+#define EV_ICON_Y      14
+#define EV_ICON_W      86
+#define EV_ICON_H      86
+
+#define EV_SLIDE_X     0
+#define EV_SLIDE_Y     120
+
+
+images {
+       image: ZOOM_BG_IMAGE COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_BG_X/MAIN_W EV_BG_Y/MAIN_H; to: "bg";}
+                                       rel2 { relative: (EV_BG_X+EV_BG_W)/MAIN_W (EV_BG_Y+EV_BG_H)/MAIN_H; to: "bg";}
+                                       image { normal: ZOOM_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "icon_minus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_ICON_X/EV_BG_W (EV_BG_H-EV_ICON_H-EV_ICON_Y)/EV_BG_H; to: "bg_image"; }
+                                       rel2 { relative: (EV_ICON_X+EV_ICON_W)/EV_BG_W (EV_BG_H-EV_ICON_Y)/EV_BG_H; to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "icon_plus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_ICON_X/EV_BG_W EV_ICON_Y/EV_BG_H; to: "bg_image"; }
+                                       rel2 { relative: (EV_ICON_X+EV_ICON_W)/EV_BG_W (EV_ICON_Y+EV_ICON_H)/EV_BG_H; to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 EV_SLIDE_Y/EV_BG_H; to: "bg_image"; }
+                                       rel2 { relative: 1.0 (EV_BG_H-EV_SLIDE_Y)/EV_BG_H; to: "bg_image"; }
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "icon_minus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_minus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_minus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_minus";
+                               action: SIGNAL_EMIT "icon_minus,clicked" "ev_icon_signal";
+                       }
+                       program {
+                               name: "icon_plus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_plus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_plus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_plus";
+                               action: SIGNAL_EMIT "icon_plus,clicked" "ev_icon_signal";
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_ev_layout_inverse.edc b/edc/cam_ev_layout_inverse.edc
new file mode 100755 (executable)
index 0000000..c2c77f7
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define EV_BG_X                188
+#define EV_BG_Y                72
+#define EV_BG_W                116
+#define EV_BG_H                576
+
+#define EV_ICON_X      15
+#define EV_ICON_Y      14
+#define EV_ICON_W      86
+#define EV_ICON_H      86
+
+#define EV_SLIDE_X     0
+#define EV_SLIDE_Y     120
+
+
+images {
+       image: ZOOM_BG_IMAGE COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_BG_X+EV_BG_W)/MAIN_W) (1 - (EV_BG_Y+EV_BG_H)/MAIN_H); to: "bg";}
+                                       rel2 { relative: (1 - EV_BG_X/MAIN_W) (1 - EV_BG_Y/MAIN_H); to: "bg";}
+                                       image { normal: ZOOM_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "icon_minus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_ICON_X+EV_ICON_W)/EV_BG_W) (1 - (EV_BG_H-EV_ICON_Y)/EV_BG_H); to: "bg_image"; }
+                                       rel2 { relative: (1 - EV_ICON_X/EV_BG_W) (1 - (EV_BG_H-EV_ICON_Y-EV_ICON_H)/EV_BG_H); to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "icon_plus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_ICON_X+EV_ICON_W)/EV_BG_W) (1 - (EV_ICON_Y+EV_ICON_H)/EV_BG_H); to: "bg_image"; }
+                                       rel2 { relative: (1 - EV_ICON_X/EV_BG_W) (1 - EV_ICON_Y/EV_BG_H); to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (1 - (EV_BG_H-EV_SLIDE_Y)/EV_BG_H); to: "bg_image"; }
+                                       rel2 { relative: 1.0 (1 - EV_SLIDE_Y/EV_BG_H); to: "bg_image"; }
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "icon_minus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_minus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_minus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_minus";
+                               action: SIGNAL_EMIT "icon_minus,clicked" "ev_icon_signal";
+                       }
+                       program {
+                               name: "icon_plus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_plus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_plus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_plus";
+                               action: SIGNAL_EMIT "icon_plus,clicked" "ev_icon_signal";
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_ev_layout_vertical.edc b/edc/cam_ev_layout_vertical.edc
new file mode 100755 (executable)
index 0000000..395b6ca
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define EV_BG_X                188
+#define EV_BG_Y                72
+#define EV_BG_W                116
+#define EV_BG_H                576
+
+#define EV_ICON_X      15
+#define EV_ICON_Y      14
+#define EV_ICON_W      86
+#define EV_ICON_H      86
+
+#define EV_SLIDE_X     0
+#define EV_SLIDE_Y     120
+
+
+images {
+       image: ZOOM_BG_VER_IMAGE COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_H MAIN_W;
+                                       max: MAIN_H MAIN_W;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_BG_Y+EV_BG_H)/MAIN_H) EV_BG_X/MAIN_W; to: "bg";}
+                                       rel2 { relative: (1 - EV_BG_Y/MAIN_H) (EV_BG_X+EV_BG_W)/MAIN_W; to: "bg";}
+                                       image { normal: ZOOM_BG_VER_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "icon_minus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_BG_H-EV_ICON_Y)/EV_BG_H) EV_ICON_X/EV_BG_W; to: "bg_image"; }
+                                       rel2 { relative: (1 - (EV_BG_H-EV_ICON_H-EV_ICON_Y)/EV_BG_H) (EV_ICON_X+EV_ICON_W)/EV_BG_W; to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "icon_plus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (EV_ICON_Y+EV_ICON_H)/EV_BG_H) EV_ICON_X/EV_BG_W; to: "bg_image"; }
+                                       rel2 { relative: (1 - EV_ICON_Y/EV_BG_H) (EV_ICON_X+EV_ICON_W)/EV_BG_W; to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_SLIDE_Y/EV_BG_H 0.0 ; to: "bg_image"; }
+                                       rel2 { relative: (1 - EV_SLIDE_Y/EV_BG_H) 1.0; to: "bg_image"; }
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "icon_minus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_minus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_minus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_minus";
+                               action: SIGNAL_EMIT "icon_minus,clicked" "ev_icon_signal";
+                       }
+                       program {
+                               name: "icon_plus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_plus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_plus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_plus";
+                               action: SIGNAL_EMIT "icon_plus,clicked" "ev_icon_signal";
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_ev_layout_vertical_inverse.edc b/edc/cam_ev_layout_vertical_inverse.edc
new file mode 100755 (executable)
index 0000000..8aff53c
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define EV_BG_X                188
+#define EV_BG_Y                72
+#define EV_BG_W                116
+#define EV_BG_H                576
+
+#define EV_ICON_X      15
+#define EV_ICON_Y      14
+#define EV_ICON_W      86
+#define EV_ICON_H      86
+
+#define EV_SLIDE_X     0
+#define EV_SLIDE_Y     120
+
+
+images {
+       image: ZOOM_BG_VER_IMAGE COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_ICON COMP;
+       image: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_H MAIN_W;
+                                       max: MAIN_H MAIN_W;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_BG_Y/MAIN_H (1 - (EV_BG_X+EV_BG_W)/MAIN_W); offset: 0 0; to: "bg";}
+                                       rel2 { relative: (EV_BG_Y+EV_BG_H)/MAIN_H (1 - EV_BG_X/MAIN_W); offset: -1 -1; to: "bg";}
+                                       image { normal: ZOOM_BG_VER_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "icon_minus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (EV_BG_H-EV_ICON_H-EV_ICON_Y)/EV_BG_H (1 - (EV_ICON_X+EV_ICON_W)/EV_BG_W); to: "bg_image"; }
+                                       rel2 { relative: (EV_BG_H-EV_ICON_Y)/EV_BG_H (1 - EV_ICON_X/EV_BG_W); to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "icon_plus";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_ICON_Y/EV_BG_H (1 - (EV_ICON_X+EV_ICON_W)/EV_BG_W); to: "bg_image"; }
+                                       rel2 { relative: (EV_ICON_Y+EV_ICON_H)/EV_BG_H (1 - EV_ICON_X/EV_BG_W); to: "bg_image"; }
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_ICON; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON; }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: EV_SLIDE_Y/EV_BG_H 0.0; to: "bg_image"; }
+                                       rel2 { relative: (1 - EV_SLIDE_Y/EV_BG_H) 1.0; to: "bg_image"; }
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "icon_minus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_minus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_minus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_minus";
+                       }
+                       program {
+                               name: "icon_minus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_minus";
+                               action: SIGNAL_EMIT "icon_minus,clicked" "ev_icon_signal";
+                       }
+                       program {
+                               name: "icon_plus_press";
+                               signal: "mouse,down,1";
+                               source: "icon_plus";
+                               action: STATE_SET "press" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_release";
+                               signal: "mouse,up,1";
+                               source: "icon_plus";
+                               action: STATE_SET "default" 0.0;
+                               target: "icon_plus";
+                       }
+                       program {
+                               name: "icon_plus_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "icon_plus";
+                               action: SIGNAL_EMIT "icon_plus,clicked" "ev_icon_signal";
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_funcs.edc b/edc/cam_funcs.edc
new file mode 100755 (executable)
index 0000000..06bc800
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * 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 "../include/edc_string.h"
+
+// background
+#define BACKGROUND_IMAGE(part_name, x, y, w, h, img) \
+                       part {                          \
+                               name: part_name;        \
+                               type: IMAGE;    \
+                               description {   \
+                                       state: "default" 0.0;\
+                                      rel1 { relative: (x)/MAIN_W (y)/MAIN_H; }                \
+                                      rel2 { relative: (x+w)/MAIN_W (y+h)/MAIN_H; }             \
+                                       image { normal: img; }  \
+                               }     \
+                       }
+#define BACKGROUND_IMAGE_WITH_ALPHA(part_name, x, y, w, h, img, alpha) \
+                       part {                          \
+                               name: part_name;        \
+                               type: IMAGE;    \
+                               description {   \
+                                       state: "default" 0.0;\
+                                      rel1 { relative: (x)/MAIN_W (y)/MAIN_H; }                \
+                                      rel2 { relative: (x+w)/MAIN_W (y+h)/MAIN_H; }             \
+                                       image { normal: img; }\
+                                       color: 255 255 255 alpha;       \
+                               }     \
+                       }
+
+#define VER_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \
+                       part {                          \
+                               name: part_name;        \
+                               type: IMAGE;    \
+                               description {   \
+                                       state: "default" 0.0;\
+                                      rel1 { relative: (x)/VER_MAIN_W (y)/VER_MAIN_H; }                \
+                                      rel2 { relative: (x+w)/VER_MAIN_W (y+h)/VER_MAIN_H; }             \
+                                       image { normal: img; }  \
+                               }     \
+                       }
+
+#define GENERAL_BUTTON(part_name, x, y, w, h, img_dim, img, img_p, img_s) \
+                       part {                          \
+                               name: part_name;        \
+                               type: IMAGE;    \
+                               mouse_events: 1;\
+                               description {   \
+                                       state: "default" 0.0;\
+                                      rel1 { relative: (x)/MAIN_W (y)/MAIN_H; }                \
+                                      rel2 { relative: (x+w)/MAIN_W (y+h)/MAIN_H; }             \
+                                       image { normal: img; }  \
+                               }      \
+                               description { \
+                                       state: "press" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       image { normal: img_p; }\
+                               }                                       \
+                               description { \
+                                       state: "selected" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       image { normal: img_s; }\
+                               }                                       \
+                               description { \
+                                       state: "dim" 0.0;                                \
+                                       inherit: "default" 0.0;                                     \
+                                       image { normal: img_dim;}                                                         \
+                               }               \
+                               description { \
+                                       state: "invisible" 0.0;                          \
+                                       inherit: "default" 0.0;                                     \
+                                       visible: 0;                                               \
+                               } \
+                       }
+
+#define VER_GENERAL_BUTTON(part_name, x, y, w, h, img_dim, img, img_p, img_s) \
+                       part {                          \
+                               name: part_name;        \
+                               type: IMAGE;    \
+                               mouse_events: 1;\
+                               description {   \
+                                       state: "default" 0.0;\
+                                      rel1 { relative: (x)/VER_MAIN_W (y)/VER_MAIN_H; }                \
+                                      rel2 { relative: (x+w)/VER_MAIN_W (y+h)/VER_MAIN_H; }             \
+                                       image { normal: img; }  \
+                               }      \
+                               description { \
+                                       state: "press" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       image { normal: img_p; }\
+                               }                                       \
+                               description { \
+                                       state: "selected" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       image { normal: img_s; }\
+                               }                                       \
+                               description { \
+                                       state: "dim" 0.0;                                \
+                                       inherit: "default" 0.0;                                     \
+                                       image { normal: img_dim;}                                                         \
+                               }               \
+                               description { \
+                                       state: "invisible" 0.0;                          \
+                                       inherit: "default" 0.0;                                     \
+                                       visible: 0;                                               \
+                               } \
+                       }
+
+#define GENERAL_BUTTON_PROGRAMS(part_name, signal_name, source_name) \
+                       program {       \
+                               name: "lbutton_down_"part_name; \
+                               signal: "mouse,down,1"; \
+                               source: part_name; \
+                               script {\
+                                       new st[31];\
+                                       new Float:vl;\
+                                       get_state(PART:part_name, st, 30, vl);\
+                                       if (strcmp(st, "dim") != 0) \
+                                               { \
+                                                       set_state(PART:part_name, "press", 0.0);\
+                                                       emit( HAPTIC_SIG, HAPTIC_SIG_SRC );\
+                                               } \
+                                       }\
+                       } \
+                       program { \
+                               name: "lbutton_send_event_"part_name;  \
+                               signal: "mouse,clicked,1"; \
+                               source: part_name; \
+                               script {\
+                                       new st[31];\
+                                       new Float:vl;\
+                                       get_state(PART:part_name, st, 30, vl);\
+                                       if (strcmp(st, "dim") != 0) \
+                                               emit( signal_name, source_name );\
+                                       }\
+                       } \
+                       program { \
+                               name: "lbutton_up_"part_name; \
+                               signal: "mouse,up,1"; \
+                               source: part_name; \
+                               script {\
+                                       new st[31];\
+                                       new Float:vl;\
+                                       get_state(PART:part_name, st, 30, vl);\
+                                       if (strcmp(st, "dim") != 0) \
+                                               set_state(PART:part_name, "default", 0.0);\
+                                       }\
+                       }
+
diff --git a/edc/cam_guideline_edje.edc b/edc/cam_guideline_edje.edc
new file mode 100755 (executable)
index 0000000..20c9f57
--- /dev/null
@@ -0,0 +1,453 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+images {\r
+       image: GUDIE_LINE_1_IMAGE COMP;\r
+       image: GUDIE_LINE_2_IMAGE COMP;\r
+       image: GUDIE_OPA_LINE_1_IMAGE COMP;\r
+       image: GUDIE_OPA_LINE_2_IMAGE COMP;\r
+}\r
+\r
+#define GUIDE_LINE_H1 238\r
+#define GUIDE_LINE_H2 238\r
+#define GUIDE_LINE_H3 238\r
+\r
+#define GUIDE_LINE_W1 425\r
+#define GUIDE_LINE_W2 424\r
+#define GUIDE_LINE_W3 425\r
+\r
+#define VER_GUIDE_LINE_H1 425\r
+#define VER_GUIDE_LINE_H2 424\r
+#define VER_GUIDE_LINE_H3 425\r
+\r
+#define VER_GUIDE_LINE_W1 238\r
+#define VER_GUIDE_LINE_W2 238\r
+#define VER_GUIDE_LINE_W3 238\r
+\r
+\r
+#define GUIDE_LINE_GAP 3\r
+\r
+group {\r
+       name: "guideline";\r
+       /**min: MAIN_W MAIN_H;*/\r
+\r
+       parts{\r
+       /*outline*/\r
+               part {\r
+                       name: "guide_line1_outline1_1";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_W1 - 1)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1)/MAIN_W 1.0; }\r
+                               image{\r
+                                       normal: GUDIE_OPA_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "guide_line1";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: GUIDE_LINE_W1/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP)/MAIN_W 1.0; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_default" 0.0;\r
+                               rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.125; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                                state: "ver_wide" 0.0;\r
+                                rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.0; }\r
+                                rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 1.0; }\r
+                                image{\r
+                                               normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_square" 0.0;\r
+                               rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W ((VER_MAIN_H-VER_MAIN_W)/2)/VER_MAIN_H; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W ((VER_MAIN_H-VER_MAIN_W)/2+VER_MAIN_W)/VER_MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+\r
+               }\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line1_outline1_2";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; }\r
+                               image{\r
+                                       normal: GUDIE_OPA_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+               /*outline*/\r
+\r
+               part {\r
+                       name: "guide_line2_outline2_1";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 - 1)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "guide_line2";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP)/MAIN_W 1.0; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_default" 0.0;\r
+                               rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.125; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_wide" 0.0;\r
+                               rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.0; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 1.0; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_square" 0.0;\r
+                               rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W ((VER_MAIN_H-VER_MAIN_W)/2)/VER_MAIN_H; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W ((VER_MAIN_H-VER_MAIN_W)/2+VER_MAIN_W)/VER_MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+\r
+               }\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line2_outline2_2";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line3_outline3_1";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_H1 - 1)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_H1)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "guide_line3";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: 0.125 GUIDE_LINE_H1/MAIN_H; }\r
+                               rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "wide" 0.0;\r
+                               rel1 { relative: 0.0 GUIDE_LINE_H1/MAIN_H; }\r
+                               rel2 { relative: 1.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                       }\r
+                       description {\r
+                               state: "square" 0.0;\r
+                               rel1 { relative: ((MAIN_W-MAIN_H)/2)/MAIN_W GUIDE_LINE_H1/MAIN_H; }\r
+                               rel2 { relative: (((MAIN_W-MAIN_H)/2+MAIN_H))/MAIN_W (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "ver_default" 0.0;\r
+                               rel1 { relative: 0.0 VER_GUIDE_LINE_H1/VER_MAIN_H; }\r
+                               rel2 { relative: 1.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP)/VER_MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+               }\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line3_outline3_2";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line4_outline4_1";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 - 1)/MAIN_W 0.0; }\r
+                               rel2 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "guide_line4";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: 0.125 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; }\r
+                               rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "square" 0.0;\r
+                               rel1 { relative: ((MAIN_W-MAIN_H)/2)/MAIN_W (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; }\r
+                               rel2 { relative: (((MAIN_W-MAIN_H)/2+MAIN_H))/MAIN_W (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_1_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+                       description {\r
+                               state: "wide" 0.0;\r
+                               rel1 { relative: 0.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; }\r
+                               rel2 { relative: 1.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                       }\r
+                       description {\r
+                               state: "ver_default" 0.0;\r
+                               rel1 { relative: 0.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2)/VER_MAIN_H; }\r
+                               rel2 { relative: 1.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP)/VER_MAIN_H; }\r
+                               image{\r
+                                       normal: GUDIE_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 255 255 255 255;\r
+                       }\r
+\r
+               }\r
+               /*outline*/\r
+               part {\r
+                       name: "guide_line4_outline4_2";\r
+                       type: IMAGE;\r
+                       mouse_events: 0;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               rel1 { relative: (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_W 0.0; }\r
+                               rel2 { relative: (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; }\r
+                               image{\r
+                                               normal: GUDIE_OPA_LINE_2_IMAGE ;\r
+                               }\r
+                               color: 0 0 0 25;\r
+                       }\r
+               }\r
+\r
+\r
+       }/*end parts*/\r
+\r
+       programs{\r
+\r
+               /*line1 line2*/\r
+               program {\r
+                       name: "prog_guideline12_set_normal";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,1,2,normal";\r
+                               script: {\r
+                                       set_state(PART:"guide_line1", "default", 0.0);\r
+                                       set_state(PART:"guide_line2", "default", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name:"prog_guideline12_set_wide_ver";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,1,2,vertical,wide";\r
+                               script: {\r
+                                       set_state(PART:"guide_line1", "ver_wide", 0.0);\r
+                                       set_state(PART:"guide_line2", "ver_wide", 0.0);\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name: "prog_guideline12_set_normal_ver";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,1,2,vertical,normal";\r
+                               script: {\r
+                                       set_state(PART:"guide_line1", "ver_default", 0.0);\r
+                                       set_state(PART:"guide_line2", "ver_default", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name: "prog_guideline12_set_square_ver";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,1,2,vertical,square";\r
+                               script: {\r
+                                       set_state(PART:"guide_line1", "ver_square", 0.0);\r
+                                       set_state(PART:"guide_line2", "ver_square", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+               /*line3 line4 */\r
+               program {\r
+                       name:"prog_guideline34_set_wide";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,3,4,wide";\r
+                               script: {\r
+                                       set_state(PART:"guide_line3", "wide", 0.0);\r
+                                       set_state(PART:"guide_line4", "wide", 0.0);\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name: "prog_guideline34_set_normal";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,3,4,normal";\r
+                               script: {\r
+                                       set_state(PART:"guide_line3", "default", 0.0);\r
+                                       set_state(PART:"guide_line4", "default", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name: "prog_guideline34_set_square";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,3,4,square";\r
+                               script: {\r
+                                       set_state(PART:"guide_line3", "square", 0.0);\r
+                                       set_state(PART:"guide_line4", "square", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+               program {\r
+                       name: "prog_guideline34_set_normal_ver";\r
+                       source: "prog_guideline";\r
+                       signal: "guide_line,3,4,vertical,normal";\r
+                               script: {\r
+                                       set_state(PART:"guide_line3", "ver_default", 0.0);\r
+                                       set_state(PART:"guide_line4", "ver_default", 0.0);\r
+\r
+                               }\r
+               }\r
+\r
+\r
+\r
+       }/*end programs*/\r
+\r
+\r
+}/*end group*/\r
+\r
+\r
diff --git a/edc/cam_images.edc b/edc/cam_images.edc
new file mode 100755 (executable)
index 0000000..a51397a
--- /dev/null
@@ -0,0 +1,332 @@
+/*
+ * 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 "../include/edc_image_name.h"
+
+
+#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; \
+            } \
+         } \
+      } \
+   }
+
+
+collections {
+/* Burst shot */
+RESOURCE_IMAGE(BURST_SHOT_MODE_ON_NORMAL_ICON);
+RESOURCE_IMAGE(BURST_SHOT_MODE_ON_PRESS_ICON);
+RESOURCE_IMAGE(BURST_SHOT_MODE_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(BURST_SHOT_MODE_OFF_PRESS_ICON);
+
+/* Self portrait */
+RESOURCE_IMAGE(CAMERA_SELF_PORTRAIT_NORMAL_ICON);
+RESOURCE_IMAGE(CAMERA_SELF_PORTRAIT_PRESS_ICON);
+RESOURCE_IMAGE(CAMCORDER_SELF_PORTRAIT_NORMAL_ICON);
+RESOURCE_IMAGE(CAMCORDER_SELF_PORTRAIT_PRESS_ICON);
+
+/* Flash */
+RESOURCE_IMAGE(FLASH_AUTO_NORMAL_ICON);
+RESOURCE_IMAGE(FLASH_AUTO_PRESS_ICON);
+RESOURCE_IMAGE(FLASH_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(FLASH_OFF_PRESS_ICON);
+RESOURCE_IMAGE(FLASH_ON_NORMAL_ICON);
+RESOURCE_IMAGE(FLASH_ON_PRESS_ICON);
+
+/* Shooting mode */
+RESOURCE_IMAGE(SHOOTING_MODE_SINGLE_NORMAL_ICON);
+RESOURCE_IMAGE(SHOOTING_MODE_SINGLE_PRESS_ICON);
+
+/* Recording mode */
+RESOURCE_IMAGE(RECORDING_MODE_NORMAL_NORMAL_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_NORMAL_PRESS_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_LIMIT_MMS_NORMAL_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_LIMIT_MMS_PRESS_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_SLOW_MOTION_NORMAL_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_SLOW_MOTION_PRESS_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_FAST_MOTION_NORMAL_ICON);
+RESOURCE_IMAGE(RECORDING_MODE_FAST_MOTION_PRESS_ICON);
+
+/* Scene mode */
+RESOURCE_IMAGE(SCENE_MODE_AUTO_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_AUTO_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_PORTRAIT_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_PORTRAIT_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_LANDSCAPE_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_LANDSCAPE_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_NIGHT_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_NIGHT_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_SPORTS_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_SPORTS_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_PARTY_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_PARTY_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_BEACHSNOW_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_BEACHSNOW_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_SUNSET_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_SUNSET_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_DUSKDAWN_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_DUSKDAWN_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_FALL_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_FALL_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_FIREWORK_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_FIREWORK_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_TEXT_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_TEXT_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_CANDLELIGHT_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_CANDLELIGHT_PRESS_ICON);
+RESOURCE_IMAGE(SCENE_MODE_BACKLIGHT_NORMAL_ICON);
+RESOURCE_IMAGE(SCENE_MODE_BACKLIGHT_PRESS_ICON);
+
+/* Exposure value */
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_2_0_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_1_5_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_1_0_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_0_5_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_0_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_0_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_0_5_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_1_0_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_1_5_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_2_0_ICON);
+RESOURCE_IMAGE(EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON);
+
+/* Focus mode */
+RESOURCE_IMAGE(FOCUS_MODE_AUTO_NORMAL_ICON);
+RESOURCE_IMAGE(FOCUS_MODE_AUTO_PRESS_ICON);
+RESOURCE_IMAGE(FOCUS_MODE_MACRO_NORMAL_ICON);
+RESOURCE_IMAGE(FOCUS_MODE_MACRO_PRESS_ICON);
+RESOURCE_IMAGE(FOCUS_MODE_FACE_DETECTION_NORMAL_ICON);
+RESOURCE_IMAGE(FOCUS_MODE_FACE_DETECTION_PRESS_ICON);
+
+/* Timer */
+RESOURCE_IMAGE(TIMER_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(TIMER_OFF_PRESS_ICON);
+RESOURCE_IMAGE(TIMER_2SEC_NORMAL_ICON);
+RESOURCE_IMAGE(TIMER_2SEC_PRESS_ICON);
+RESOURCE_IMAGE(TIMER_5SEC_NORMAL_ICON);
+RESOURCE_IMAGE(TIMER_5SEC_PRESS_ICON);
+RESOURCE_IMAGE(TIMER_10SEC_NORMAL_ICON);
+RESOURCE_IMAGE(TIMER_10SEC_PRESS_ICON);
+
+/* Effect */
+RESOURCE_IMAGE(EFFECTS_NONE_NORMAL_ICON);
+RESOURCE_IMAGE(EFFECTS_NONE_PRESS_ICON);
+RESOURCE_IMAGE(EFFECTS_NEGATIVE_NORMAL_ICON);
+RESOURCE_IMAGE(EFFECTS_NEGATIVE_PRESS_ICON);
+RESOURCE_IMAGE(EFFECTS_BLACKANDWHITE_NORMAL_ICON);
+RESOURCE_IMAGE(EFFECTS_BLACKANDWHITE_PRESS_ICON);
+RESOURCE_IMAGE(EFFECTS_SEPIA_NORMAL_ICON);
+RESOURCE_IMAGE(EFFECTS_SEPIA_PRESS_ICON);
+
+/* Camera resolution */
+RESOURCE_IMAGE(CAM_RESOLUTION_8M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_8M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_5M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_5M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_3_2M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_3_2M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_2M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_2M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_1_3M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_1_3M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_0_3M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_0_3M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W6M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W6M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W5_7M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W5_7M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W2_4M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W2_4M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W2M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W2M_PRESS_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W0_9M_NORMAL_ICON);
+RESOURCE_IMAGE(CAM_RESOLUTION_W0_9M_PRESS_ICON);
+
+/* Camcorder resolution */
+RESOURCE_IMAGE(REC_RESOLUTION_FULLHD_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_FULLHD_PRESS_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_HD_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_HD_PRESS_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_WVGA_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_WVGA_PRESS_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_VGA_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_VGA_PRESS_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_QVGA_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_QVGA_PRESS_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_QCIF_NORMAL_ICON);
+RESOURCE_IMAGE(REC_RESOLUTION_QCIF_PRESS_ICON);
+
+/* White balance */
+RESOURCE_IMAGE(WHITE_BALANCE_AUTO_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_AUTO_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_INCANDESCENT_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_INCANDESCENT_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_FLUORESCENT_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_FLUORESCENT_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_DAYLIGHT_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_DAYLIGHT_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_CLOUDY_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_CLOUDY_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_SHADE_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_SHADE_PRESS_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_HORIZON_NORMAL_ICON);
+RESOURCE_IMAGE(WHITE_BALANCE_HORIZON_PRESS_ICON);
+
+/* ISO */
+RESOURCE_IMAGE(ISO_AUTO_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_AUTO_PRESS_ICON);
+RESOURCE_IMAGE(ISO_50_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_50_PRESS_ICON);
+RESOURCE_IMAGE(ISO_100_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_100_PRESS_ICON);
+RESOURCE_IMAGE(ISO_200_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_200_PRESS_ICON);
+RESOURCE_IMAGE(ISO_400_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_400_PRESS_ICON);
+RESOURCE_IMAGE(ISO_800_NORMAL_ICON);
+RESOURCE_IMAGE(ISO_800_PRESS_ICON);
+
+/* Metering */
+RESOURCE_IMAGE(METERING_MATRIX_NORMAL_ICON);
+RESOURCE_IMAGE(METERING_MATRIX_PRESS_ICON);
+RESOURCE_IMAGE(METERING_CENTER_WEIGHTED_NORMAL_ICON);
+RESOURCE_IMAGE(METERING_CENTER_WEIGHTED_PRESS_ICON);
+RESOURCE_IMAGE(METERING_SPOT_NORMAL_ICON);
+RESOURCE_IMAGE(METERING_SPOT_PRESS_ICON);
+
+/* Anti shake */
+RESOURCE_IMAGE(ANTISHAKE_ON_NORMAL_ICON);
+RESOURCE_IMAGE(ANTISHAKE_ON_PRESS_ICON);
+RESOURCE_IMAGE(ANTISHAKE_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(ANTISHAKE_OFF_PRESS_ICON);
+
+/* Outdoor visibility */
+RESOURCE_IMAGE(OUTDOOR_VISIBILITY_ON_NORMAL_ICON);
+RESOURCE_IMAGE(OUTDOOR_VISIBILITY_ON_PRESS_ICON);
+RESOURCE_IMAGE(OUTDOOR_VISIBILITY_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(OUTDOOR_VISIBILITY_OFF_PRESS_ICON);
+
+/* Auto contrast */
+RESOURCE_IMAGE(AUTO_CONTRAST_ON_NORMAL_ICON);
+RESOURCE_IMAGE(AUTO_CONTRAST_ON_PRESS_ICON);
+RESOURCE_IMAGE(AUTO_CONTRAST_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(AUTO_CONTRAST_OFF_PRESS_ICON);
+
+/* Guide lines */
+RESOURCE_IMAGE(GUIDELINE_ON_NORMAL_ICON);
+RESOURCE_IMAGE(GUIDELINE_ON_PRESS_ICON);
+RESOURCE_IMAGE(GUIDELINE_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(GUIDELINE_OFF_PRESS_ICON);
+
+/* Capture with voice */
+RESOURCE_IMAGE(CAPTURE_WITH_VOICE_ON_NORMAL_ICON);
+RESOURCE_IMAGE(CAPTURE_WITH_VOICE_ON_PRESS_ICON);
+RESOURCE_IMAGE(CAPTURE_WITH_VOICE_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(CAPTURE_WITH_VOICE_OFF_PRESS_ICON);
+
+/* GPS */
+RESOURCE_IMAGE(GPS_ON_NORMAL_ICON);
+RESOURCE_IMAGE(GPS_ON_PRESS_ICON);
+RESOURCE_IMAGE(GPS_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(GPS_OFF_PRESS_ICON);
+
+/* Save as flip */
+RESOURCE_IMAGE(SAVE_AS_FLIP_ON_NORMAL_ICON);
+RESOURCE_IMAGE(SAVE_AS_FLIP_ON_PRESS_ICON);
+RESOURCE_IMAGE(SAVE_AS_FLIP_OFF_NORMAL_ICON);
+RESOURCE_IMAGE(SAVE_AS_FLIP_OFF_PRESS_ICON);
+
+/* Storage */
+RESOURCE_IMAGE(STORAGE_MYDEVICE_NORMAL_ICON);
+RESOURCE_IMAGE(STORAGE_MYDEVICE_PRESS_ICON);
+RESOURCE_IMAGE(STORAGE_CARD_NORMAL_ICON);
+RESOURCE_IMAGE(STORAGE_CARD_PRESS_ICON);
+
+/* Reset setting */
+RESOURCE_IMAGE(RESET_SETTING_NORMAL_ICON);
+RESOURCE_IMAGE(RESET_SETTING_PRESS_ICON);
+
+/* Setting */
+RESOURCE_IMAGE(SETTING_NORMAL_ICON);
+RESOURCE_IMAGE(SETTING_PRESS_ICON);
+
+/* Indicator */
+RESOURCE_IMAGE(INDICATOR_STORAGE_INTERNAL_ICON);
+RESOURCE_IMAGE(INDICATOR_STORAGE_CARD_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_00_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_01_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_02_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_03_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_04_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_LEVEL_05_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_FULL_ICON);
+RESOURCE_IMAGE(INDICATOR_BATTERY_CHARGE_ICON);
+RESOURCE_IMAGE(INDICATOR_GPS_STATE_OFF_ICON);
+RESOURCE_IMAGE(INDICATOR_GPS_STATE_ON_ICON);
+RESOURCE_IMAGE(INDICATOR_GPS_STATE_CONNECT_ANI01_ICON);
+RESOURCE_IMAGE(INDICATOR_GPS_STATE_CONNECT_ANI02_ICON);
+RESOURCE_IMAGE(INDICATOR_GPS_STATE_CONNECT_ANI03_ICON);
+RESOURCE_IMAGE(INDICATOR_MUTE_ICON);
+
+/* Shutter icon */
+RESOURCE_IMAGE(CAMERA_SHUTTER_ICON);
+RESOURCE_IMAGE(CAMERA_SHUTTER_ICON_DIM);
+
+/* Volume key */
+RESOURCE_IMAGE(VOLUME_KEY_AS_ZOOM_NORMAL_ICON);
+RESOURCE_IMAGE(VOLUME_KEY_AS_ZOOM_PRESS_ICON);
+RESOURCE_IMAGE(VOLUME_KEY_AS_SHUTTER_NORMAL_ICON);
+RESOURCE_IMAGE(VOLUME_KEY_AS_SHUTTER_PRESS_ICON);
+
+/* Tip popup */
+RESOURCE_IMAGE(TIP_POPUP_BURSTSHOT_HELP_IMAGE);
+RESOURCE_IMAGE(TIP_POPUP_VOLUMEKEY_HELP_IMAGE);
+}
+
diff --git a/edc/cam_indicator_layout.edc b/edc/cam_indicator_layout.edc
new file mode 100755 (executable)
index 0000000..debe3d7
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * 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 "../include/edc_string.h"
+
+// order GUI_v1.0_120727
+// voice capture/gps/remain cnt/stroage/battery
+
+//indicator
+#define INDI_BATTERY_X 1044
+#define INDI_STORAGE_X 994
+#define INDI_NUM_X             874
+#define INDI_NUM_W             120
+#define INDI_GPS_X             824
+#define INDI_REC_GPS_X 944
+#define INDI_MUTE_X            894
+
+#define INDICATOR_Y            12
+#define INDICATOR_W            48
+#define INDICATOR_H            48
+
+//portrait
+#define INDI_PORTRAIT_BATTERY_X        660
+#define INDI_PORTRAIT_STORAGE_X        610
+#define INDI_PORTRAIT_NUM_X            488
+#define INDI_PORTRAIT_GPS_X            438
+#define INDI_PORTRAIT_MUTE_X   510
+#define INDI_PORTRAIT_REC_GPS_X        560
+#define INDI_PORTRAIT_REC_Y            28
+
+#define INDICATOR_PORTRAIT_Y   172
+
+
+#define INDICATOR(part_name, x, y) \
+               part { \
+                       name: part_name; \
+                       type: SWALLOW; \
+                       description { \
+                               state: "default" 0.0; \
+                               rel1 { relative: x/MAIN_W y/MAIN_H; }                \
+                               rel2 { relative: (x+INDICATOR_W)/MAIN_W (y+INDICATOR_H)/MAIN_H; }             \
+                       } \
+               }
+
+#define INDICATOR_INVERSE(part_name, x, y) \
+               part { \
+                       name: part_name; \
+                       type: SWALLOW; \
+                       description { \
+                               state: "default" 0.0; \
+                               rel1 { relative: (1 - (x+INDICATOR_W)/MAIN_W) (1 - (y+INDICATOR_H)/MAIN_H); }                \
+                               rel2 { relative: (1 - x/MAIN_W) (1 - y/MAIN_H); }             \
+                       } \
+               }
+
+
+#define INDICATOR_PORTRAIT(part_name, x, y) \
+               part { \
+                       name: part_name; \
+                       type: SWALLOW; \
+                       description { \
+                               state: "default" 0.0; \
+                               rel1 { relative: x/MAIN_H y/MAIN_W; }                \
+                               rel2 { relative: (x+INDICATOR_W)/MAIN_H (y+INDICATOR_H)/MAIN_W; }             \
+                       } \
+               }
+
+#define INDICATOR_PORTRAIT_INVERSE(part_name, x, y) \
+               part { \
+                       name: part_name; \
+                       type: SWALLOW; \
+                       description { \
+                               state: "default" 0.0; \
+                               rel1 { relative: (1 - (x+INDICATOR_W)/MAIN_H) (1 - (y+INDICATOR_H)/MAIN_W); } \
+                               rel2 { relative: (1 - x/MAIN_H) (1 - (y/MAIN_W)); }             \
+                       } \
+               }
+
+
+collections {
+       group { name: "indicator_landscape";
+       min: MAIN_W MAIN_H;
+
+               parts{
+                       INDICATOR(INDICATOR_GPS, INDI_GPS_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_GPS, INDI_REC_GPS_X, INDICATOR_Y)
+                       INDICATOR(INDICATOR_STORAGE, INDI_STORAGE_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_STORAGE, INDI_STORAGE_X, INDICATOR_Y)
+                       INDICATOR(INDICATOR_BATTERY, INDI_BATTERY_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_BATTERY, INDI_BATTERY_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_MUTE, INDI_MUTE_X, INDICATOR_Y)
+
+
+                       part {
+                               name: INDICATOR_NUM;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: INDI_NUM_X/MAIN_W INDICATOR_Y/MAIN_H; }
+                                       rel2 { relative: (INDI_NUM_X+INDI_NUM_W)/MAIN_W (INDICATOR_Y+INDICATOR_H)/MAIN_H; }
+                                       color: COLOR_1;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group { name: "indicator_landscape_inverse";
+               min: MAIN_W MAIN_H;
+               parts{
+                       INDICATOR(INDICATOR_STORAGE, INDI_STORAGE_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_STORAGE, INDI_STORAGE_X, INDICATOR_Y)
+                       INDICATOR(INDICATOR_GPS, INDI_GPS_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_GPS, INDI_REC_GPS_X, INDICATOR_Y)
+                       INDICATOR(INDICATOR_BATTERY, INDI_BATTERY_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_BATTERY, INDI_BATTERY_X, INDICATOR_Y)
+                       INDICATOR(INDI_REC_MUTE, INDI_MUTE_X, INDICATOR_Y)
+
+                       part {
+                               name: INDICATOR_NUM;
+                               type: TEXT;
+                               scale: 1;
+                             description {
+                               state: "default" 0.0;
+                                       rel1 { relative: INDI_NUM_X/MAIN_W INDICATOR_Y/MAIN_H; }
+                                       rel2 { relative: (INDI_NUM_X+INDI_NUM_W)/MAIN_W (INDICATOR_Y+INDICATOR_H)/MAIN_H; }
+                              color: COLOR_1;
+                              text {
+                                       font : FONT_NAME;
+                                       size : 28;
+                                       align: 0.0 0.5;
+                               }
+                               }
+                       }
+               }
+       }
+
+       group { name: "indicator_portrait";
+               min: MAIN_H MAIN_W;
+               parts{
+                       INDICATOR_PORTRAIT(INDICATOR_GPS, INDI_PORTRAIT_GPS_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_GPS, INDI_PORTRAIT_REC_GPS_X, INDI_PORTRAIT_REC_Y)
+                       INDICATOR_PORTRAIT(INDICATOR_STORAGE, INDI_PORTRAIT_STORAGE_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_STORAGE, INDI_PORTRAIT_STORAGE_X, INDI_PORTRAIT_REC_Y)
+                       INDICATOR_PORTRAIT(INDICATOR_BATTERY, INDI_PORTRAIT_BATTERY_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_BATTERY, INDI_PORTRAIT_BATTERY_X, INDI_PORTRAIT_REC_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_MUTE, INDI_PORTRAIT_MUTE_X, INDI_PORTRAIT_REC_Y)
+
+                       part {
+                               name: INDICATOR_NUM;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: INDI_PORTRAIT_NUM_X/MAIN_H INDICATOR_PORTRAIT_Y/MAIN_W ; }
+                                       rel2 { relative: (INDI_PORTRAIT_NUM_X+INDI_NUM_W)/MAIN_H (INDICATOR_PORTRAIT_Y+INDICATOR_H)/MAIN_W ; }
+                                       color: COLOR_1;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group { name: "indicator_portrait_inverse";
+               min: MAIN_H MAIN_W;
+               parts{
+                       INDICATOR_PORTRAIT(INDICATOR_GPS, INDI_PORTRAIT_GPS_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_GPS, INDI_PORTRAIT_REC_GPS_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDICATOR_STORAGE, INDI_PORTRAIT_STORAGE_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_STORAGE, INDI_PORTRAIT_STORAGE_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDICATOR_BATTERY, INDI_PORTRAIT_BATTERY_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_BATTERY, INDI_PORTRAIT_BATTERY_X, INDICATOR_PORTRAIT_Y)
+                       INDICATOR_PORTRAIT(INDI_REC_MUTE, INDI_PORTRAIT_MUTE_X, INDICATOR_PORTRAIT_Y)
+
+                       part {
+                               name: INDICATOR_NUM;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: INDI_PORTRAIT_NUM_X/MAIN_H INDICATOR_PORTRAIT_Y/MAIN_W ; }
+                                       rel2 { relative: (INDI_PORTRAIT_NUM_X+INDI_NUM_W)/MAIN_H (INDICATOR_PORTRAIT_Y+INDICATOR_H)/MAIN_W ; }
+                                       color: COLOR_1;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                       }
+               }
+       }
+
+}//end collections
+//end file
diff --git a/edc/cam_main_layout.edc b/edc/cam_main_layout.edc
new file mode 100755 (executable)
index 0000000..b555771
--- /dev/null
@@ -0,0 +1,496 @@
+/*
+ * 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 "cam_funcs.edc"
+#include "../include/edc_image_name.h"
+
+collections {
+       group {
+               name: "main_layout";
+               parts {
+                       part { name: "transparent_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "guideline_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "shot_guide_popup_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "indicator_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "recording_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "mouse_event_layer";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color : 0 0 0 0;
+                               }
+                       }
+                       part { name: "timer_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "best_photo_thumbnail_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "progressbar_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "progress_popup_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "tip_popup_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "pinch_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "zoom_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "ev_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+                       part { name: "toolbar_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0; }
+                       }
+               }
+       }
+
+#include "cam_guideline_edje.edc"
+
+       group {
+               name: "progressbar";
+               min: MAIN_W MAIN_H;
+
+               parts {
+
+#define PROGRESS_BAR_X 320
+#define PROGRESS_BAR_Y 657
+#define PROGRESS_BAR_W 639
+#define PROGRESS_BAR_H 20
+
+                       part {
+                               name: "progressbar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed:1 1;
+                                       visible: 0;
+                                       rel1 { relative: PROGRESS_BAR_X/MAIN_W PROGRESS_BAR_Y/MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/MAIN_H; }
+                               }
+
+                               description {
+                                       state: "landscape" 0.0;
+                                       fixed:1 1;
+                                       visible: 1;
+                                       rel1 { relative: PROGRESS_BAR_X/MAIN_W PROGRESS_BAR_Y/MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/MAIN_H; }
+                               }
+
+                               description {
+                                       state: "vertical" 0.0;
+                                       fixed:1 1;
+                                       visible: 1;
+                                       rel1 { relative: PROGRESS_BAR_X/MAIN_W (PROGRESS_BAR_Y - 60)/MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H - 60)/MAIN_H; }
+                               }
+                       }
+
+                       part {
+                               name: "progressbar_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (1.0+90/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "vertical" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (1.0+90/PROGRESS_BAR_W*MAIN_W/MAIN_H) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+               }
+               programs {
+                       program {
+                               name: "progressbar,default";
+                               source: "prog";
+                               signal: "progressbar,default";
+                               script: {
+                                       set_state(PART:"progressbar", "landscape", 0.0);
+                                       set_state(PART:"progressbar_text", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "progressbar,vertical";
+                               source: "prog";
+                               signal: "progressbar,vertical";
+                               script: {
+                                       set_state(PART:"progressbar", "vertical", 0.0);
+                                       set_state(PART:"progressbar_text", "vertical", 0.0);
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "shutter_image";
+               min: MAIN_W MAIN_H;
+
+               parts {
+                       part {
+                               name: "camera_image_bg";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color : 0 0 0 0;
+                               }
+                               description {
+                                       state: "gray" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color : 0 0 0 180;
+                               }
+                       }
+                       part {
+                               name: "up_part";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to : "camera_image_bg"; }
+                                       rel2 { relative: 1.0 0.0; offset: -1 0; to : "camera_image_bg"; }
+                                       color : 0 0 0 255;
+//                                     visible: 1;
+                               }
+                               description {
+                                       state: "middle" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to : "camera_image_bg"; }
+                                       rel2 { relative: 1.0 0.5; offset: -1 -1; to : "camera_image_bg"; }
+                                       color : 0 0 0 255;
+//                                     visible: 0;
+                               }
+                       }
+
+                       part { name: "down_part";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; offset: 0 -1; to : "camera_image_bg"; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; to : "camera_image_bg"; }
+                                       color : 0 0 0 255;
+//                                     visible: 1;
+                               }
+                               description {
+                                       state: "middle" 0.0;
+                                       rel1 { relative: 0.0 0.5; offset: 0 -1; to : "camera_image_bg"; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; to : "camera_image_bg"; }
+                                       color : 0 0 0 255;
+//                                     visible: 0;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "close";
+                               signal: "start_animation";
+                               source: "*";
+                               action: STATE_SET "middle" 0.0;
+                               target: "up_part" ;
+                               target: "down_part" ;
+                               transition: ACCELERATE 0.25;
+                               after: "open";
+                       }
+                       program {
+                               name: "open";
+                               signal: "open";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "up_part" ;
+                               target: "down_part" ;
+                               transition: DECELERATE 0.25;
+                       }
+                       program {
+                               name: "dim";
+                               signal: "dim";
+                               source: "*";
+                               action: STATE_SET "gray" 0.0;
+                               target: "camera_image_bg" ;
+                       }
+
+                       program {
+                               name: "bright";
+                               signal: "bright";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "camera_image_bg" ;
+                               transition: DECELERATE 0.2;
+                               after: "animation_finish";
+                       }
+                       program {
+                               name: "animation_finish";
+                               signal: "animation_finish";
+                               source: "*";
+                               action: SIGNAL_EMIT "animation_finish" "*";
+                       }
+               }
+       }
+
+       group {
+               name: "shutter_rect";
+               min: MAIN_W MAIN_H;
+
+               parts {
+                       part {
+                               name: "shutter_rect_bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color : 0 0 0 0;
+                               }
+                               description {
+                                       state: "gray" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color : 0 0 0 180;
+                               }
+                       }
+
+                       part {
+                               name: "point_0";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 1;
+                                       max: 1 1;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; to : "shutter_rect_bg"; }
+                                       rel2 { relative: 0.0 0.0; to : "shutter_rect_bg"; }
+                                       color : 255 255 255 0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "end" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 15 15;
+                                       max: 15 15;
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "point_1";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 1;
+                                       max: 1 1;
+                                       fixed: 1 1;
+                                       align: 1.0 0.0;
+                                       rel1 { relative: 1.0 0.0; to : "shutter_rect_bg"; }
+                                       rel2 { relative: 1.0 0.0; to : "shutter_rect_bg"; }
+                                       color : 255 255 255 0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "end" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 15 15;
+                                       max: 15 15;
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "point_2";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 1;
+                                       max: 1 1;
+                                       fixed: 1 1;
+                                       align: 1.0 1.0;
+                                       rel1 { relative: 1.0 1.0; to : "shutter_rect_bg"; }
+                                       rel2 { relative: 1.0 1.0; to : "shutter_rect_bg"; }
+                                       color : 255 255 255 0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "end" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 15 15;
+                                       max: 15 15;
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "point_3";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 1;
+                                       max: 1 1;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to : "shutter_rect_bg"; }
+                                       rel2 { relative: 0.0 1.0; to : "shutter_rect_bg"; }
+                                       color : 255 255 255 0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "end" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 15 15;
+                                       max: 15 15;
+                                       fixed: 1 1;
+                               }
+                       }
+
+                       part {
+                               name: "top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to_x : "point_0"; to_y : "point_0";}
+                                       rel2 { relative: 0.0 1.0; offset: 0 0; to_x : "point_1"; to_y : "point_1";}
+                                       color : 255 255 255 200;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 1 0; to_x : "point_1"; to_y : "point_1";}
+                                       rel2 { relative: 1.0 1.0; offset: 0 0; to_x : "point_2"; to_y : "point_2";}
+                                       color : 255 255 255 200;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to_x : "point_3"; to_y : "point_3";}
+                                       rel2 { relative: 0.0 1.0; offset: 0 0; to_x : "point_2"; to_y : "point_2";}
+                                       color : 255 255 255 200;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; offset: 0 1; to_x : "point_0"; to_y : "point_0";}
+                                       rel2 { relative: 1.0 0.0; offset: 0 -1; to_x : "point_3"; to_y : "point_3";}
+                                       color : 255 255 255 200;
+                                       visible: 1;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "shutter_rect,start";
+                               signal: "shutter_rect,start";
+                               source: "prog";
+                               action: STATE_SET "end" 0.0;
+                               target: "point_0";
+                               target: "point_1";
+                               target: "point_2";
+                               target: "point_3";
+                               transition: DECELERATE 0.20;
+                               after: "shutter_rect,finish";
+                       }
+                       program {
+                               name: "shutter_rect,finish";
+                               signal: "shutter_rect,finish";
+                               source: "*";
+                               action: SIGNAL_EMIT "shutter_rect,finish" "*";
+                       }
+               }
+       }
+}
+
+
diff --git a/edc/cam_recording_edje.edc b/edc/cam_recording_edje.edc
new file mode 100755 (executable)
index 0000000..5af9fd3
--- /dev/null
@@ -0,0 +1,190 @@
+/*
+ * 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 "cam_recording_edje_inc.edc"
+
+collections {
+       group {
+               name: "recording_layout";
+               min: MAIN_W MAIN_H;
+
+               parts {
+                       part {
+                               name: RECORDING_IMAGE;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_IMAGE_X/MAIN_W RECORDING_IMAGE_Y/MAIN_H; }
+                                       rel2 { relative: (RECORDING_IMAGE_X+RECORDING_IMAGE_W)/MAIN_W (RECORDING_IMAGE_Y+RECORDING_IMAGE_H)/MAIN_H; }
+                               }
+                               description {
+                                       state: "rec" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "rec1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_TEXT_X/MAIN_W RECORDING_TEXT_Y/MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_LEFT_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_LEFT_TEXT_X/MAIN_W RECORDING_LEFT_TEXT_Y/MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit:  "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part { name: "progressbar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed:1 1;
+                                       rel1 { relative: PROGRESS_BAR_X/MAIN_W PROGRESS_BAR_Y/MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/MAIN_H; }
+                               }
+                       }
+
+                       part {
+                               name: "progressbar_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (1.0+90/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part{
+                               name: "file_size_text";
+                               type: TEXT;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: (0.0-100/PROGRESS_BAR_W) (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (0.0-10/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align : 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "set_rec_state";
+                               source: "program";
+                               signal: "state,rec";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_rec_state1";
+                               source: "program";
+                               signal: "state,rec1";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec1", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_pause_state";
+                               source: "program";
+                               signal: "state,pause";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "hide_indicator";
+                               source: "program";
+                               signal: "indicator,hide";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "invisible", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "invisible", 0.0);
+                               }
+                       }
+                       program {
+                               name: "show_indicator";
+                               source: "program";
+                               signal: "indicator,show";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+               }
+       }
+}
+//endfile
diff --git a/edc/cam_recording_edje_inc.edc b/edc/cam_recording_edje_inc.edc
new file mode 100755 (executable)
index 0000000..727c92f
--- /dev/null
@@ -0,0 +1,40 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+\r
+#include "../include/edc_image_name.h"\r
+#include "cam_funcs.edc"\r
+images {\r
+       image: RECORDING_IMAGE_REC_IMAGE COMP;\r
+}\r
+\r
+\r
+#define RECORDING_IMAGE_X 844\r
+#define RECORDING_IMAGE_Y 12\r
+#define RECORDING_IMAGE_W 48\r
+#define RECORDING_IMAGE_H 48\r
+#define RECORDING_TEXT_X 734\r
+#define RECORDING_TEXT_Y 12\r
+#define RECORDING_LEFT_TEXT_X 128
+#define RECORDING_LEFT_TEXT_Y 10
+
+#define PROGRESS_BAR_X 320\r
+#define PROGRESS_BAR_Y 657
+#define PROGRESS_BAR_W 639
+#define PROGRESS_BAR_H 20
+\r
+//endfiles
diff --git a/edc/cam_recording_edje_inverse.edc b/edc/cam_recording_edje_inverse.edc
new file mode 100755 (executable)
index 0000000..3b7269b
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * 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 "cam_recording_edje_inverse_inc.edc"
+
+collections {
+
+       group {
+               name: "recording_layout";
+               min: MAIN_W MAIN_H;
+
+               parts {
+
+                       part {
+                               name: RECORDING_IMAGE;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_IMAGE_X/MAIN_W RECORDING_IMAGE_Y/MAIN_H; }
+                                       rel2 { relative: (RECORDING_IMAGE_X+RECORDING_IMAGE_W)/MAIN_W (RECORDING_IMAGE_Y+RECORDING_IMAGE_H)/MAIN_H; }
+                               }
+                               description {
+                                       state: "rec" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "rec1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_TEXT_X/MAIN_W RECORDING_TEXT_Y/MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+
+                       part {
+                               name: RECORDING_LEFT_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: (1.0 - RECORDING_LEFT_TEXT_X/MAIN_W) (1.0 - RECORDING_LEFT_TEXT_Y/MAIN_H); offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 1.0 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit:  "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part { name: "progressbar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed:1 1;
+                                       rel1 { relative: PROGRESS_BAR_X/MAIN_W PROGRESS_BAR_Y/MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/MAIN_H; }
+                               }
+                       }
+
+                       part {
+                               name: "progressbar_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (1.0+90/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part{
+                               name: "file_size_text";
+                               type: TEXT;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: (0.0-100/PROGRESS_BAR_W) (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                       rel2 { relative: (0.0-10/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align : 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+
+               programs {
+
+                       program {
+                               name: "set_rec_state";
+                               source: "program";
+                               signal: "state,rec";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_rec_state1";
+                               source: "program";
+                               signal: "state,rec1";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec1", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_pause_state";
+                               source: "program";
+                               signal: "state,pause";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "hide_indicator";
+                               source: "program";
+                               signal: "indicator,hide";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "invisible", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "invisible", 0.0);
+                               }
+                       }
+                       program {
+                               name: "show_indicator";
+                               source: "program";
+                               signal: "indicator,show";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+               }
+       }
+}
+//endfile
diff --git a/edc/cam_recording_edje_inverse_inc.edc b/edc/cam_recording_edje_inverse_inc.edc
new file mode 100755 (executable)
index 0000000..a910913
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "cam_funcs.edc"
+images {
+       image: RECORDING_IMAGE_REC_IMAGE COMP;
+}
+
+
+#define RECORDING_IMAGE_X 844
+#define RECORDING_IMAGE_Y 12
+#define RECORDING_IMAGE_W 48
+#define RECORDING_IMAGE_H 48
+#define RECORDING_TEXT_X 734
+#define RECORDING_TEXT_Y 12
+#define RECORDING_LEFT_TEXT_X 128
+#define RECORDING_LEFT_TEXT_Y 10
+
+#define PROGRESS_BAR_X 320
+#define PROGRESS_BAR_Y 657
+#define PROGRESS_BAR_W 639
+#define PROGRESS_BAR_H 20
+
+//endfiles
\ No newline at end of file
diff --git a/edc/cam_recording_edje_vertical.edc b/edc/cam_recording_edje_vertical.edc
new file mode 100755 (executable)
index 0000000..1234ac9
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * 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 "cam_recording_edje_vertical_inc.edc"
+
+
+collections {
+       group {
+               name: "recording_layout";
+               min: MAIN_H MAIN_W;
+
+               parts {
+                       part {
+                               name: RECORDING_IMAGE;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_IMAGE_X/VER_MAIN_W RECORDING_IMAGE_Y/VER_MAIN_H; }
+                                       rel2 { relative: (RECORDING_IMAGE_X+RECORDING_IMAGE_W)/VER_MAIN_W (RECORDING_IMAGE_Y+RECORDING_IMAGE_H)/VER_MAIN_H; }
+                               }
+                               description {
+                                       state: "rec" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "rec1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_TEXT_X/VER_MAIN_W RECORDING_TEXT_Y/VER_MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_LEFT_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_LEFT_TEXT_X/VER_MAIN_W RECORDING_LEFT_TEXT_Y/VER_MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit:  "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part { name: "progressbar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed:1 1;
+                                       rel1 { relative: PROGRESS_BAR_X/VER_MAIN_W PROGRESS_BAR_Y/VER_MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/VER_MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/VER_MAIN_H; }
+                               }
+                       }
+
+                       part {
+                               name: "progressbar_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                        state: "default" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                        rel2 { relative: (1.0+90/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                        color: FONT_COLOR;
+                                       text {
+                                                 font : FONT_NAME;
+                                                 size : 28;
+                                                 align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part{
+                               name: "file_size_text";
+                               type: TEXT;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                        rel1 { relative: (0.0-100/PROGRESS_BAR_W) (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                        rel2 { relative: (0.0-10/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align : 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+
+               programs {
+
+                       program {
+                               name: "set_rec_state";
+                               source: "program";
+                               signal: "state,rec";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_rec_state1";
+                               source: "program";
+                               signal: "state,rec1";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec1", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_pause_state";
+                               source: "program";
+                               signal: "state,pause";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program { name: "hide_indicator";
+                               source: "program";
+                               signal: "indicator,hide";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "invisible", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "invisible", 0.0);
+                               }
+                       }
+                       program { name: "show_indicator";
+                               source: "program";
+                               signal: "indicator,show";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+               }
+       }
+}
+//endfile
diff --git a/edc/cam_recording_edje_vertical_inc.edc b/edc/cam_recording_edje_vertical_inc.edc
new file mode 100755 (executable)
index 0000000..1a450ee
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "cam_funcs.edc"
+images {
+       image: RECORDING_IMAGE_REC_IMAGE COMP;
+}
+
+
+#define RECORDING_IMAGE_X 460
+#define RECORDING_IMAGE_Y 28
+#define RECORDING_IMAGE_W 48
+#define RECORDING_IMAGE_H 48
+#define RECORDING_TEXT_X 350
+#define RECORDING_TEXT_Y 28
+#define RECORDING_LEFT_TEXT_X 10
+#define RECORDING_LEFT_TEXT_Y 28
+
+#define PROGRESS_BAR_X 128
+#define PROGRESS_BAR_Y 1000
+#define PROGRESS_BAR_W 464
+#define PROGRESS_BAR_H 20
+
+//endfiles
\ No newline at end of file
diff --git a/edc/cam_recording_edje_vertical_inverse.edc b/edc/cam_recording_edje_vertical_inverse.edc
new file mode 100755 (executable)
index 0000000..98e958a
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * 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 "cam_recording_edje_vertical_inverse_inc.edc"
+
+collections {
+       group {
+               name: "recording_layout";
+               min: MAIN_H MAIN_W;
+
+               parts {
+                       part {
+                               name: RECORDING_IMAGE;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_IMAGE_X/VER_MAIN_W RECORDING_IMAGE_Y/VER_MAIN_H; }
+                                       rel2 { relative: (RECORDING_IMAGE_X+RECORDING_IMAGE_W)/VER_MAIN_W (RECORDING_IMAGE_Y+RECORDING_IMAGE_H)/VER_MAIN_H; }
+                               }
+                               description {
+                                       state: "rec" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "rec1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: RECORDING_IMAGE_REC_IMAGE; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: RECORDING_TEXT_X/VER_MAIN_W RECORDING_TEXT_Y/VER_MAIN_H; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: RECORDING_LEFT_TEXT;
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: (1 - RECORDING_LEFT_TEXT_X/VER_MAIN_W) (1 - RECORDING_LEFT_TEXT_Y/VER_MAIN_H); offset: -1 -1; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 35;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit:  "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part { name: "progressbar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed:1 1;
+                                       rel1 { relative: PROGRESS_BAR_X/VER_MAIN_W PROGRESS_BAR_Y/VER_MAIN_H; }
+                                       rel2 { relative: (PROGRESS_BAR_X+PROGRESS_BAR_W)/VER_MAIN_W (PROGRESS_BAR_Y+PROGRESS_BAR_H)/VER_MAIN_H; }
+                               }
+                       }
+
+                       part {
+                               name: "progressbar_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                        state: "default" 0.0;
+                                       rel1 { relative: 1.0 (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                        rel2 { relative: (1.0+90/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                        color: FONT_COLOR;
+                                       text {
+                                                 font : FONT_NAME;
+                                                 size : 28;
+                                                 align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part{
+                               name: "file_size_text";
+                               type: TEXT;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                        rel1 { relative: (0.0-100/PROGRESS_BAR_W) (-20)/PROGRESS_BAR_H; to: "progressbar"; }
+                                        rel2 { relative: (0.0-10/PROGRESS_BAR_W) (1.0+20/PROGRESS_BAR_H); to: "progressbar"; }
+                                       color: FONT_COLOR;
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 28;
+                                               align : 1.0 0.5;
+                                       }
+                               }
+                       }
+               }
+
+               programs {
+
+                       program {
+                               name: "set_rec_state";
+                               source: "program";
+                               signal: "state,rec";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_rec_state1";
+                               source: "program";
+                               signal: "state,rec1";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "rec1", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "set_pause_state";
+                               source: "program";
+                               signal: "state,pause";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "hide_indicator";
+                               source: "program";
+                               signal: "indicator,hide";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "invisible", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "invisible", 0.0);
+                               }
+                       }
+                       program {
+                               name: "show_indicator";
+                               source: "program";
+                               signal: "indicator,show";
+                               script {
+                                       set_state(PART:RECORDING_IMAGE, "pause", 0.0);
+                                       set_state(PART:RECORDING_TEXT, "default", 0.0);
+                               }
+                       }
+               }
+       }
+}
+//endfile
+
diff --git a/edc/cam_recording_edje_vertical_inverse_inc.edc b/edc/cam_recording_edje_vertical_inverse_inc.edc
new file mode 100755 (executable)
index 0000000..446acea
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "cam_funcs.edc"
+images {
+       image: RECORDING_IMAGE_REC_IMAGE COMP;
+}
+
+#define RECORDING_IMAGE_X 460
+#define RECORDING_IMAGE_Y 172
+#define RECORDING_IMAGE_W 48
+#define RECORDING_IMAGE_H 48
+#define RECORDING_TEXT_X 350
+#define RECORDING_TEXT_Y 172
+#define RECORDING_LEFT_TEXT_X 10
+#define RECORDING_LEFT_TEXT_Y 28
+
+#define PROGRESS_BAR_X 128
+#define PROGRESS_BAR_Y 1000
+#define PROGRESS_BAR_W 464
+#define PROGRESS_BAR_H 20
+
+//endfiles
\ No newline at end of file
diff --git a/edc/cam_setting_popup_layout.edc b/edc/cam_setting_popup_layout.edc
new file mode 100755 (executable)
index 0000000..21b22b1
--- /dev/null
@@ -0,0 +1,50 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_funcs.edc"\r
+#include "../include/edc_image_name.h"\r
+#include "cam_setting_popup_layout_inc.edc"\r
+\r
+#define SETTING_POPUP_WIDTH 550\r
+#define SETTING_POPUP_HEIGHT 661\r
+\r
+images {\r
+       image: CTXPOPUP_BG_IMAGE COMP;\r
+}\r
+\r
+collections {\r
+       group {\r
+               name:"camera/setting/popup/area/toolbar";\r
+               min: MAIN_W MAIN_H;\r
+               parts {\r
+                       part { name: "setting_popup";\r
+                               type: SWALLOW;\r
+                               repeat_events: 0;\r
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: ((TOOLBAR_W+20)/MAIN_W) 0.0;}
+                                       rel2{ relative: ((MAIN_W-TOOLBAR_W-20)/MAIN_W) 1.0;}
+                               }
+                       }\r
+               }\r
+       }\r
+\r
+       CAMERA_SETTING_POPUP_GROUP_LAYOUT("toolbar", SETTING_POPUP_WIDTH, SETTING_POPUP_HEIGHT)\r
+}\r
+\r
+\r
+\r
diff --git a/edc/cam_setting_popup_layout_inc.edc b/edc/cam_setting_popup_layout_inc.edc
new file mode 100755 (executable)
index 0000000..d32da91
--- /dev/null
@@ -0,0 +1,288 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__\r
+#define __H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__\r
+#define SETTING_POPUP_WIDTH 550\r
+#define SETTING_POPUP_HEIGHT 661\r
+\r
+\r
+#define CAMERA_SETTING_POPUP_AREA_PART(part_name, width, height) \\r
+       part { name: "camera/setting/popup/area/"part_name;\\r
+               type: SWALLOW;\\r
+               scale: 1;\\r
+               repeat_events: 0;\\r
+               description {\\r
+                       state:"default" 0.0;\\r
+                       min: width height;\\r
+                       max: width height;\\r
+                       fixed: 1 1;\\r
+                       align: 0 0;\\r
+                       rel1{ relative: 0.0 0.0; to: "popup_area";}\\r
+                       rel2{ relative: 0.0 0.0; to: "popup_area";}\\r
+               } \\r
+       }\r
+\r
+\r
+/*Ctxpopup Style*/\r
+#define CTXPOPUP_BORDER_CORNER_SIZE 9\r
+\r
+#define CAMERA_SETTING_POPUP_GROUP_LAYOUT(group_name, width, height)\\r
+       group { \\r
+               name: "camera/setting/popup/"group_name;\\r
+               min: width height;\\r
+               max: width height;\\r
+               parts {\\r
+                        part { name: "elm.padding.top"; \\r
+                               type: RECT; \\r
+                               scale: 1; \\r
+                               description { \\r
+                               state: "default" 0.0; \\r
+                               min: 0 CTXPOPUP_BORDER_CORNER_SIZE; \\r
+                               fixed: 0 1; \\r
+                               visible: 0; \\r
+                               rel2.relative: 1.0 0.0; \\r
+                               align: 0.0 0.0; \\r
+                               color: 255 255 255 255;\\r
+                               } \\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                        }\\r
+                        part { name: "elm.padding.bottom"; \\r
+                               type: RECT; \\r
+                               scale: 1; \\r
+                               description { state: "default" 0.0; \\r
+                               min: 0 CTXPOPUP_BORDER_CORNER_SIZE; \\r
+                               fixed: 0 1; \\r
+                               visible: 0; \\r
+                               rel1.relative: 0.0 1.0; \\r
+                               align: 0.0 1.0; \\r
+                               color: 255 255 255 255;\\r
+                               } \\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                       }\\r
+                        part { name: "elm.padding.left"; \\r
+                               type: RECT; \\r
+                               scale: 1; \\r
+                               description { state: "default" 0.0; \\r
+                               min: CTXPOPUP_BORDER_CORNER_SIZE 0; \\r
+                               fixed: 1 0; \\r
+                               visible: 0; \\r
+                               rel2.relative: 0.0 1.0; \\r
+                               align: 0.0 0.0; \\r
+                               color: 255 255 255 255;\\r
+                               } \\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                        }\\r
+                      part { name: "elm.padding.right"; \\r
+                               type: RECT; \\r
+                               scale: 1; \\r
+                               description { state: "default" 0.0; \\r
+                               min: CTXPOPUP_BORDER_CORNER_SIZE 0; \\r
+                               fixed: 1 0; \\r
+                               visible: 0; \\r
+                               rel1.relative: 1.0  0.0; \\r
+                               align: 1.0 0.0; \\r
+                               color: 255 255 255 255;\\r
+                               } \\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                        }\\r
+                       part {\\r
+                               name: "bg";\\r
+                               type: RECT;\\r
+                               mouse_events: 0;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       state: "default" 0.0;\\r
+                                       visible: 0;\\r
+                                       rel1 { relative: 0.0 0.0; }\\r
+                                       rel2 { relative: 1.0 1.0; }\\r
+                               }\\r
+                       }\\r
+                       part {\\r
+                               name: "bg_image";\\r
+                               type: IMAGE;\\r
+                               scale: 1;\\r
+                               mouse_events:  0;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       align: 1 1;\\r
+                                       visible: 0;\\r
+                                       image {\\r
+                                               normal: CTXPOPUP_BG_IMAGE;\\r
+                                               border: 67 67 92 42;\\r
+                                               border_scale: 1;\\r
+                                       }\\r
+                                       rel1 {relative: 0.0 0.0; to: "bg";}\\r
+                                       rel2 {relative: 1.0. 1.0; to: "bg";}\\r
+                               }\\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                       }\\r
+                       part {\\r
+                               name: "ele.bg.top";\\r
+                               type: RECT;\\r
+                               scale: 1;\\r
+                               mouse_events: 0;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       state: "default" 0.0;\\r
+                                       visible: 0;\\r
+                                       rel1 { relative: 0.0 0.0; to:"bg";}\\r
+                                       rel2 { relative: 1.0 60/height; to:"bg";}\\r
+                               }\\r
+                       }\\r
+                       part {\\r
+                               name: "ele.bg.bottom";\\r
+                               type: RECT;\\r
+                               scale: 1;\\r
+                               mouse_events: 0;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       state: "default" 0.0;\\r
+                                       visible: 0;\\r
+                                       rel1 { relative: 0.0 60/height; to:"bg";}\\r
+                                       rel2 { relative: 1.0 1.0; to:"bg";}\\r
+                               }\\r
+                       }\\r
+                       part {\\r
+                               name: "elm.text";\\r
+                               type: TEXT;\\r
+                               scale: 1;\\r
+                               mouse_events: 1;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       state: "default" 0.0;\\r
+                                       visible: 0;\\r
+                                       align: 0.5 0.5;\\r
+                                       rel1 { relative: 0.0 0.0; to:"ele.bg.top";}\\r
+                                       rel2 { relative: 1.0 1.0; to:"ele.bg.top";}\\r
+                                       text {\\r
+                                               font: FONT_NAME;\\r
+                                               size:     30;\\r
+                                               align:    0.5 0.5;\\r
+                                               min: 1 1;\\r
+                                               text: "";\\r
+                                       }\\r
+                               }\\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                       }\\r
+                       part {\\r
+                               name: "elm.swallow.box";\\r
+                               type: SWALLOW;\\r
+                               scale: 1;\\r
+                               mouse_events: 1;\\r
+                               repeat_events: 0;\\r
+                               description {\\r
+                                       state: "default" 0.0;\\r
+                                       visible: 0;\\r
+                                       align: 0.5 0.5;\\r
+                                       rel1 { relative: 0.0 0.0; to:"ele.bg.bottom";}\\r
+                                       rel2 { relative: 1.0 1.0; to:"ele.bg.bottom";}\\r
+                               }\\r
+                               description {\\r
+                                       state: "show" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                                       visible: 1;\\r
+                               }\\r
+                               description {\\r
+                                       state: "dim" 0.0;\\r
+                                       inherit: "default" 0.0;\\r
+                               }\\r
+                       }\\r
+               }\\r
+               programs {\\r
+                       program {\\r
+                               name: "set.popup.dim";\\r
+                               source: "prog";\\r
+                               signal: "set.popup.dim";\\r
+                               script: {\\r
+                                       set_state(PART:"bg_image", "dim", 0.0);\\r
+                                       set_state(PART:"elm.text", "dim", 0.0);\\r
+                                       set_state(PART:"elm.swallow.box", "dim", 0.0);\\r
+                                       set_state(PART:"elm.padding.right", "dim", 0.0);\\r
+                                       set_state(PART:"elm.padding.left", "dim", 0.0);\\r
+                                       set_state(PART:"elm.padding.top", "dim", 0.0);\\r
+                                       set_state(PART:"elm.padding.bottom", "dim", 0.0);\\r
+                               }\\r
+                       }\\r
+                       program {\\r
+                               name: "set.popup.show";\\r
+                               source: "prog";\\r
+                               signal: "set.popup.show";\\r
+                               script: {\\r
+                                       set_state(PART:"bg_image", "show", 0.0);\\r
+                                       set_state(PART:"elm.text", "show", 0.0);\\r
+                                       set_state(PART:"elm.swallow.box", "show", 0.0);\\r
+                                       set_state(PART:"elm.padding.right", "show", 0.0);\\r
+                                       set_state(PART:"elm.padding.left", "show", 0.0);\\r
+                                       set_state(PART:"elm.padding.top", "show", 0.0);\\r
+                                       set_state(PART:"elm.padding.bottom", "show", 0.0);\\r
+                               }\\r
+                       }\\r
+               }\\r
+       }\r
+\r
+\r
+#endif /*__H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__*/\r
+//end file\r
diff --git a/edc/cam_toolbar_layout.edc b/edc/cam_toolbar_layout.edc
new file mode 100755 (executable)
index 0000000..5be5582
--- /dev/null
@@ -0,0 +1,619 @@
+/*
+ * 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 "cam_funcs.edc"
+#include "../include/edc_image_name.h"
+#include "cam_toolbar_layout_inc.edc"
+#include "cam_setting_popup_layout_inc.edc"
+
+
+collections {
+
+       group {
+               name: "toolbar";
+               min: MAIN_W MAIN_H;
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+
+                       TOOLBAR_BACKGROUND_IMAGE("left_bg", 0, 0, TOOLBAR_W, MAIN_H, LEFT_TOOLBAR_BG_IMAGE)
+                       TOOLBAR_BACKGROUND_IMAGE("right_bg", MAIN_W-TOOLBAR_W, 0, TOOLBAR_W, MAIN_H, RIGHT_TOOLBAR_BG_IMAGE)
+
+                       part { name: "popup_area";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: TOOLBAR_W/MAIN_W 0.0; to: "bg";}
+                                       rel2{ relative: (MAIN_W-TOOLBAR_W)/MAIN_W 1.0; to: "bg";}
+                               }
+                       }
+
+                       part { name: "setting_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: TOOLBAR_W/MAIN_W 0.0; to: "bg";}
+                                       rel2{ relative: (MAIN_W-TOOLBAR_W)/MAIN_W 1.0; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: TOOLBAR_W/MAIN_W 0.0; to: "bg";}
+                                       rel2{ relative: (TOOLBAR_W+720)/MAIN_W (MAIN_H-120)/MAIN_H; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup_description";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: TOOLBAR_W/MAIN_W (MAIN_H-120)/MAIN_H; to: "bg";}
+                                       rel2{ relative: (TOOLBAR_W+720)/MAIN_W 1.0; to: "bg";}
+                               }
+                       }
+
+                       TOOLBAR_ITEM_BUTTON("toolbar_0_button", TOOLBAR_0_X, TOOLBAR_0_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_1_button", TOOLBAR_1_X, TOOLBAR_1_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_2_button", TOOLBAR_2_X, TOOLBAR_2_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_3_button", TOOLBAR_3_X, TOOLBAR_3_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_4_button", TOOLBAR_4_X, TOOLBAR_4_Y)
+
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_0_icon", TOOLBAR_0_X, TOOLBAR_0_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_1_icon", TOOLBAR_1_X, TOOLBAR_1_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_2_icon", TOOLBAR_2_X, TOOLBAR_2_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_3_icon", TOOLBAR_3_X, TOOLBAR_3_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_4_icon", TOOLBAR_4_X, TOOLBAR_4_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("shutter_button",           SHUTTER_X,              SHUTTER_Y,              SHUTTER_W,              SHUTTER_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_button",         RECORDINGBTN_X, RECORDINGBTN_Y, RECORDINGBTN_W, RECORDINGBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_stop_button",REC_STOP_BTN_X, REC_STOP_BTN_Y, REC_STOP_BTN_W, REC_STOP_BTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("quickview_item",           QUICKVIEW_X,    QUICKVIEW_Y,    QUICKVIEW_W,    QUICKVIEW_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("backbutton_item",          BACKBTN_X,              BACKBTN_Y,              BACKBTN_W,              BACKBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("cafbutton_item",           CAF_BUTTON_X,   CAF_BUTTON_Y,   CAF_BUTTON_W,   CAF_BUTTON_H)
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "toolbar_bg,show";
+                               source: "prog";
+                               signal: "toolbar_bg,show";
+                               script: {
+                                       set_state(PART:"left_bg", "default", 0.0);
+                                       set_state(PART:"right_bg", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "toolbar_bg,hide";
+                               source: "prog";
+                               signal: "toolbar_bg,hide";
+                               script: {
+                                       set_state(PART:"left_bg", "hide", 0.0);
+                                       set_state(PART:"right_bg", "hide", 0.0);
+                               }
+                       }
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_0_button", "toolbar_0_icon", "toolbar_0_press_sig", "toolbar_0_release_sig", "toolbar_0_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_1_button", "toolbar_1_icon", "toolbar_1_press_sig", "toolbar_1_release_sig", "toolbar_1_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_2_button", "toolbar_2_icon", "toolbar_2_press_sig", "toolbar_2_release_sig", "toolbar_2_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_3_button", "toolbar_3_icon", "toolbar_3_press_sig", "toolbar_3_release_sig", "toolbar_3_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_4_button", "toolbar_4_icon", "toolbar_4_press_sig", "toolbar_4_release_sig", "toolbar_4_click_sig")
+               }/*end programs*/
+       }/*end group :toolbar*/
+
+       group {
+               name: "shutter_button";
+
+               images {
+                       image: SHUTTER_NORMAL_IMAGE COMP;
+                       image: SHUTTER_PRESS_IMAGE COMP;
+                       image: SHUTTER_DIM_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_NORMAL_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_PRESS_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_DIM_IMAGE; }
+                               }
+                       }
+
+                       part { name: "camera_icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       aspect: 1.0 1.0;
+                                       align: 0.5 0.5;
+                                       max: 60 60;
+                                       min: 60 60;
+                                       fixed:1 1;
+                                       rel1 { relative: 0.0 0.0; to: "capture_button";}
+                                       rel2 { relative: 1.0 1.0; to: "capture_button";}
+                                       visible: 1;
+                               }
+
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("capture_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+
+                       program {
+                               name: "camera_icon,normal";
+                               source: "prog";
+                               signal: "camera_icon,normal";
+                               script: { set_state(PART:"camera_icon", "normal", 0.0); }
+                       }
+                       program {
+                               name: "camera_icon,invisible";
+                               source: "prog";
+                               signal: "camera_icon,invisible";
+                               script: { set_state(PART:"camera_icon", "dim", 0.0); }
+                       }
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_button";
+
+               images {
+                       image: CAMCORDER_SHUTTER_ICON_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_DIM_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_DIM_IMAGE; }
+                               }
+                       }
+                       part { name: "recording_pause_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_pause_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_stop_button";
+
+               images {
+                       image: CAMCORDER_STOP_ICON_IMAGE COMP;
+                       image: CAMCORDER_STOP_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_stop_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_stop_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "toolbar_quickview_item";
+
+               images {
+                       image: THUMBNAIL_BG_NORMAL_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal: THUMBNAIL_BG_NORMAL_IMAGE ;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1/9 1/9; to: "bg"; }
+                                       rel2 { relative: 8/9 8/9; to: "bg"; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "thumbnail_area"; /*note: just for c codes get thumbnail x,y,w,h*/
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "thumbnail"; }
+                                       rel2 { relative: 1.0 1.0; to: "thumbnail"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "quickview_bg,mouse,down,1";
+                               signal: "mouse,down,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,press"  "toolbar_signal";
+                       }
+                       program {
+                               name: "quickview_bg,mouse,up,1";
+                               signal: "mouse,up,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,release"  "toolbar_signal";
+                       }
+                       program {
+                               name: "prog_set_default";
+                               source: "prog";
+                               signal: "SET_DEFAULT";
+                               script: {
+                                       set_state(PART:"bg", "default", 0.0);
+                                       set_state(PART:"thumbnail", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "prog_set_invisible";
+                               source: "prog";
+                               signal: "SET_INVISIBLE";
+                               script: {
+                                       set_state(PART:"bg", "invisible", 0.0);
+                                       set_state(PART:"thumbnail", "invisible", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_quickview_item*/
+
+       group{
+               name: "toolbar_backbutton_item";
+
+               images{
+                       image: BACK_BUTTON_NORMAL_IMAGE COMP;
+                       image: BACK_BUTTON_PRESS_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "back_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "back_button_press";
+                               signal: "mouse,down,1";
+                               source: "back_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_release";
+                               signal: "mouse,up,1";
+                               source: "back_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "back_button";
+                               action: SIGNAL_EMIT "landscape,backbutton,clicked"  "toolbar_signal";
+                       }
+               }/*end programs*/
+       }/*end toolbar_backbutton_item*/
+
+       group{
+               name: "toolbar_cafbutton_item";
+
+               parts{
+                       part{
+                               name: "caf_button";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description{
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "caf_button_press";
+                               signal: "mouse,down,1";
+                               source: "caf_button";
+                               action: STATE_SET "press" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_release";
+                               signal: "mouse,up,1";
+                               source: "caf_button";
+                               action: STATE_SET "normal" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "caf_button";
+                               action: SIGNAL_EMIT "caf_button,clicked" "toolbar_signal";
+                       }
+                       program {
+                               name: "caf_button_normal";
+                               source: "prog";
+                               signal: "caf_button,normal";
+                               script: {
+                                       set_state(PART:"caf_button", "normal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "caf_button_default";
+                               source: "prog";
+                               signal: "caf_button,invisible";
+                               script: {
+                                       set_state(PART:"caf_button", "default", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_cafbutton_item*/
+
+       group{
+               name: "toolbar_capture_button_item";
+
+               images{
+                       image: SNAPSHOT_PRESS_IMAGE COMP;
+                       image: SNAPSHOT_NORMAL_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "capture_button_press";
+                               signal: "mouse,down,1";
+                               source: "capture_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_release";
+                               signal: "mouse,up,1";
+                               source: "capture_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "capture_button";
+                               action: SIGNAL_EMIT "capture_button_click"  "capture_button_click";
+                       }
+               }/*end programs*/
+       }
+}/*end collections*/
+//end file
diff --git a/edc/cam_toolbar_layout_inc.edc b/edc/cam_toolbar_layout_inc.edc
new file mode 100755 (executable)
index 0000000..ae6e1c8
--- /dev/null
@@ -0,0 +1,353 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+\r
+#define SETTING_TOOLBAR_W 1156\r
+#define SETTING_TOOLBAR_H 116\r
+\r
+#define TOOLBAR_ITEM_W    86\r
+#define TOOLBAR_ITEM_H    86\r
+\r
+#define TOOLBAR_0_X            38\r
+#define TOOLBAR_0_Y            594\r
+\r
+#define TOOLBAR_1_X            38\r
+#define TOOLBAR_1_Y            454\r
+\r
+#define TOOLBAR_2_X            38\r
+#define TOOLBAR_2_Y            317\r
+\r
+#define TOOLBAR_3_X            38\r
+#define TOOLBAR_3_Y            180\r
+\r
+#define TOOLBAR_4_X            38\r
+#define TOOLBAR_4_Y            40\r
+\r
+#define SHUTTER_X              1146\r
+#define SHUTTER_Y              194\r
+#define SHUTTER_W              108\r
+#define SHUTTER_H              214\r
+\r
+#define BACKBTN_X      1146\r
+#define BACKBTN_Y      18\r
+#define BACKBTN_W      108\r
+#define BACKBTN_H      108\r
+\r
+#define QUICKVIEW_X            1146\r
+#define QUICKVIEW_Y            604\r
+#define QUICKVIEW_W    108\r
+#define QUICKVIEW_H    108\r
+\r
+#define RECORDINGBTN_X 1146\r
+#define RECORDINGBTN_Y 418\r
+#define RECORDINGBTN_W 108\r
+#define RECORDINGBTN_H 108\r
+\r
+#define REC_STOP_BTN_X 1146\r
+#define REC_STOP_BTN_Y 594\r
+#define REC_STOP_BTN_W 108\r
+#define REC_STOP_BTN_H 108\r
+\r
+#define CAF_BUTTON_X   38\r
+#define CAF_BUTTON_Y   606\r
+#define CAF_BUTTON_W   87\r
+#define CAF_BUTTON_H   88\r
+\r
+#define CAMERA_BUTTON_X                38\r
+#define CAMERA_BUTTON_Y                65\r
+#define CAMERA_BUTTON_W                61\r
+#define CAMERA_BUTTON_H                61\r
+#define CAMCORDER_BUTTON_X     38\r
+#define CAMCORDER_BUTTON_Y     109\r
+#define CAMCORDER_BUTTON_W     61\r
+#define CAMCORDER_BUTTON_H     61\r
+#define CAMERA_ICON_X 38\r
+#define CAMERA_ICON_Y 10\r
+#define CAMERA_ICON_W 56\r
+#define CAMERA_ICON_H 48\r
+\r
+images {\r
+       /*item_button*/\r
+       image: BUTTON_BG_NORMAL_IMAGE COMP;\r
+       image: BUTTON_BG_PRESS_IMAGE COMP;\r
+\r
+       image: SNAPSHOT_PRESS_IMAGE COMP;\r
+       image: SNAPSHOT_NORMAL_IMAGE COMP;\r
+       image: LEFT_TOOLBAR_BG_IMAGE COMP;\r
+       image: RIGHT_TOOLBAR_BG_IMAGE COMP;\r
+\r
+       image: CAF_BUTTON_NORMAL_IMAGE COMP;\r
+       image: CAF_BUTTON_PRESS_IMAGE COMP;\r
+}\r
+\r
+#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \\r
+       part {                          \\r
+               name: part_name;        \\r
+               type: IMAGE;    \
+               scale: 1;\\r
+               description {   \\r
+                       state: "default" 0.0;\\r
+                       rel1 { relative: (x)/MAIN_W (y)/MAIN_H; }               \\r
+                       rel2 { relative: (x+w)/MAIN_W (y+h)/MAIN_H; }   \\r
+                       image { normal: img; }  \\r
+               }\\r
+               description{ \\r
+                       state: "hide" 0.0; \\r
+                       inherit:"default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \\r
+       part { name: button_name; \\r
+               type: IMAGE; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \\r
+                       rel2 { relative: (x+TOOLBAR_ITEM_W)/(bg_w) (y+TOOLBAR_ITEM_H)/(bg_h); offset: 0 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_NORMAL_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "press" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_PRESS_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \\r
+                       rel2 { relative: (x+w)/(bg_w) (y+h)/(bg_h); offset: 0 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+       } \\r
+       part { name: icon_name"_event"; \\r
+               type: RECT; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1.to: icon_name; \\r
+                       rel2.to: icon_name; \\r
+                       color: 0 0 0 0; \\r
+                       visible: 1; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \\r
+                       rel2 { relative: (x+w)/(bg_w) (y+h)/(bg_h); offset: -1 -1;} \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( press_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( release_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( click_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",edit"; \\r
+               source: "prog"; \\r
+               signal: icon_name",edit"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "normal", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( press_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( release_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) \\r
+                               emit( click_signal_name, "toolbar_signal" );\\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",press"; \\r
+               source: "prog"; \\r
+               signal: icon_name",press"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "press", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON(name, x, y) \\r
+       TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/\r
+//end files\r
diff --git a/edc/cam_toolbar_layout_inverse.edc b/edc/cam_toolbar_layout_inverse.edc
new file mode 100755 (executable)
index 0000000..5dd92d1
--- /dev/null
@@ -0,0 +1,619 @@
+/*
+ * 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 "cam_funcs.edc"
+#include "../include/edc_image_name.h"
+#include "cam_toolbar_layout_inverse_inc.edc"
+#include "cam_setting_popup_layout_inc.edc"
+
+
+collections {
+
+       group {
+               name: "toolbar";
+               min: MAIN_W MAIN_H;
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+
+                       TOOLBAR_BACKGROUND_IMAGE("left_bg", 0, 0, TOOLBAR_W, MAIN_H, RIGHT_TOOLBAR_BG_IMAGE)
+                       TOOLBAR_BACKGROUND_IMAGE("right_bg", MAIN_W-TOOLBAR_W, 0, TOOLBAR_W, MAIN_H, LEFT_TOOLBAR_BG_IMAGE)
+
+                       part { name: "popup_area";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: (1 - (MAIN_W-TOOLBAR_W)/MAIN_W) 0.0; to: "bg";}
+                                       rel2{ relative: (1 - TOOLBAR_W/MAIN_W) 1.0; to: "bg";}
+                               }
+                       }
+
+                       part { name: "setting_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: (1 - (MAIN_W-TOOLBAR_W)/MAIN_W) 0.0; to: "bg";}
+                                       rel2{ relative: (1 - TOOLBAR_W/MAIN_W) 1.0; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: (1 - (TOOLBAR_W+720)/MAIN_W) 0.0; to: "bg";}
+                                       rel2{ relative: (1 - TOOLBAR_W/MAIN_W) (MAIN_H-120)/MAIN_H; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup_description";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: (1 - (TOOLBAR_W+720)/MAIN_W) (MAIN_H-120)/MAIN_H; to: "bg";}
+                                       rel2{ relative: (1 - TOOLBAR_W/MAIN_W) 1.0; to: "bg";}
+                               }
+                       }
+
+                       TOOLBAR_ITEM_BUTTON("toolbar_0_button", TOOLBAR_0_X, TOOLBAR_0_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_1_button", TOOLBAR_1_X, TOOLBAR_1_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_2_button", TOOLBAR_2_X, TOOLBAR_2_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_3_button", TOOLBAR_3_X, TOOLBAR_3_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_4_button", TOOLBAR_4_X, TOOLBAR_4_Y)
+
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_0_icon", TOOLBAR_0_X, TOOLBAR_0_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_1_icon", TOOLBAR_1_X, TOOLBAR_1_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_2_icon", TOOLBAR_2_X, TOOLBAR_2_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_3_icon", TOOLBAR_3_X, TOOLBAR_3_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_4_icon", TOOLBAR_4_X, TOOLBAR_4_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("shutter_button",           SHUTTER_X,              SHUTTER_Y,              SHUTTER_W,              SHUTTER_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_button",         RECORDINGBTN_X, RECORDINGBTN_Y, RECORDINGBTN_W, RECORDINGBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_stop_button",REC_STOP_BTN_X, REC_STOP_BTN_Y, REC_STOP_BTN_W, REC_STOP_BTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("quickview_item",           QUICKVIEW_X,    QUICKVIEW_Y,    QUICKVIEW_W,    QUICKVIEW_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("backbutton_item",          BACKBTN_X,              BACKBTN_Y,              BACKBTN_W,              BACKBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("cafbutton_item",           CAF_BUTTON_X,   CAF_BUTTON_Y,   CAF_BUTTON_W,   CAF_BUTTON_H)
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "toolbar_bg,show";
+                               source: "prog";
+                               signal: "toolbar_bg,show";
+                               script: {
+                                       set_state(PART:"left_bg", "default", 0.0);
+                                       set_state(PART:"right_bg", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "toolbar_bg,hide";
+                               source: "prog";
+                               signal: "toolbar_bg,hide";
+                               script: {
+                                       set_state(PART:"left_bg", "hide", 0.0);
+                                       set_state(PART:"right_bg", "hide", 0.0);
+                               }
+                       }
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_0_button", "toolbar_0_icon", "toolbar_0_press_sig", "toolbar_0_release_sig", "toolbar_0_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_1_button", "toolbar_1_icon", "toolbar_1_press_sig", "toolbar_1_release_sig", "toolbar_1_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_2_button", "toolbar_2_icon", "toolbar_2_press_sig", "toolbar_2_release_sig", "toolbar_2_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_3_button", "toolbar_3_icon", "toolbar_3_press_sig", "toolbar_3_release_sig", "toolbar_3_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_4_button", "toolbar_4_icon", "toolbar_4_press_sig", "toolbar_4_release_sig", "toolbar_4_click_sig")
+               }/*end programs*/
+       }/*end group :toolbar*/
+
+       group {
+               name: "shutter_button";
+
+               images {
+                       image: SHUTTER_NORMAL_INVERSE_IMAGE COMP;
+                       image: SHUTTER_PRESS_IMAGE COMP;
+                       image: SHUTTER_DIM_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_NORMAL_INVERSE_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_PRESS_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_DIM_IMAGE; }
+                               }
+                       }
+
+                       part { name: "camera_icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       aspect: 1.0 1.0;
+                                       align: 0.5 0.5;
+                                       max: 60 60;
+                                       min: 60 60;
+                                       fixed:1 1;
+                                       rel1 { relative: 0.0 0.0; to: "capture_button";}
+                                       rel2 { relative: 1.0 1.0; to: "capture_button";}
+                                       visible: 1;
+                               }
+
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("capture_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+
+                       program {
+                               name: "camera_icon,normal";
+                               source: "prog";
+                               signal: "camera_icon,normal";
+                               script: { set_state(PART:"camera_icon", "normal", 0.0); }
+                       }
+                       program {
+                               name: "camera_icon,invisible";
+                               source: "prog";
+                               signal: "camera_icon,invisible";
+                               script: { set_state(PART:"camera_icon", "dim", 0.0); }
+                       }
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_button";
+
+               images {
+                       image: CAMCORDER_SHUTTER_ICON_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_DIM_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_DIM_IMAGE; }
+                               }
+                       }
+                       part { name: "recording_pause_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_pause_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_stop_button";
+
+               images {
+                       image: CAMCORDER_STOP_ICON_IMAGE COMP;
+                       image: CAMCORDER_STOP_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_stop_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_stop_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "toolbar_quickview_item";
+
+               images {
+                       image: THUMBNAIL_BG_NORMAL_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal: THUMBNAIL_BG_NORMAL_IMAGE ;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1/9 1/9;to: "bg"; }
+                                       rel2 { relative: 8/9 8/9;to: "bg"; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "thumbnail_area"; /*note: just for c codes get thumbnail x,y,w,h*/
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "thumbnail"; }
+                                       rel2 { relative: 1.0 1.0; to: "thumbnail"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "quickview_bg,mouse,down,1";
+                               signal: "mouse,down,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,press"  "toolbar_signal";
+                       }
+                       program {
+                               name: "quickview_bg,mouse,up,1";
+                               signal: "mouse,up,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,release"  "toolbar_signal";
+                       }
+                       program {
+                               name: "prog_set_default";
+                               source: "prog";
+                               signal: "SET_DEFAULT";
+                               script: {
+                                       set_state(PART:"bg", "default", 0.0);
+                                       set_state(PART:"thumbnail", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "prog_set_invisible";
+                               source: "prog";
+                               signal: "SET_INVISIBLE";
+                               script: {
+                                       set_state(PART:"bg", "invisible", 0.0);
+                                       set_state(PART:"thumbnail", "invisible", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_quickview_item*/
+
+       group{
+               name: "toolbar_backbutton_item";
+
+               images{
+                       image: BACK_BUTTON_NORMAL_IMAGE COMP;
+                       image: BACK_BUTTON_PRESS_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "back_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "back_button_press";
+                               signal: "mouse,down,1";
+                               source: "back_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_release";
+                               signal: "mouse,up,1";
+                               source: "back_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "back_button";
+                               action: SIGNAL_EMIT "landscape,backbutton,clicked"  "toolbar_signal";
+                       }
+               }/*end programs*/
+       }/*end toolbar_backbutton_item*/
+
+       group{
+               name: "toolbar_cafbutton_item";
+
+               parts{
+                       part{
+                               name: "caf_button";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description{
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "caf_button_press";
+                               signal: "mouse,down,1";
+                               source: "caf_button";
+                               action: STATE_SET "press" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_release";
+                               signal: "mouse,up,1";
+                               source: "caf_button";
+                               action: STATE_SET "normal" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "caf_button";
+                               action: SIGNAL_EMIT "caf_button,clicked" "toolbar_signal";
+                       }
+                       program {
+                               name: "caf_button_normal";
+                               source: "prog";
+                               signal: "caf_button,normal";
+                               script: {
+                                       set_state(PART:"caf_button", "normal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "caf_button_default";
+                               source: "prog";
+                               signal: "caf_button,invisible";
+                               script: {
+                                       set_state(PART:"caf_button", "default", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_cafbutton_item*/
+
+       group{
+               name: "toolbar_capture_button_item";
+
+               images{
+                       image: SNAPSHOT_PRESS_IMAGE COMP;
+                       image: SNAPSHOT_NORMAL_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "capture_button_press";
+                               signal: "mouse,down,1";
+                               source: "capture_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_release";
+                               signal: "mouse,up,1";
+                               source: "capture_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "capture_button";
+                               action: SIGNAL_EMIT "capture_button_click"  "capture_button_click";
+                       }
+               }/*end programs*/
+       }
+}/*end collections*/
+//end file
diff --git a/edc/cam_toolbar_layout_inverse_inc.edc b/edc/cam_toolbar_layout_inverse_inc.edc
new file mode 100755 (executable)
index 0000000..448631c
--- /dev/null
@@ -0,0 +1,353 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+\r
+#define SETTING_TOOLBAR_W 1156\r
+#define SETTING_TOOLBAR_H 116\r
+\r
+#define TOOLBAR_ITEM_W    86\r
+#define TOOLBAR_ITEM_H    86\r
+\r
+#define TOOLBAR_0_X            38\r
+#define TOOLBAR_0_Y            594\r
+\r
+#define TOOLBAR_1_X            38\r
+#define TOOLBAR_1_Y            454\r
+\r
+#define TOOLBAR_2_X            38\r
+#define TOOLBAR_2_Y            317\r
+\r
+#define TOOLBAR_3_X            38\r
+#define TOOLBAR_3_Y            180\r
+\r
+#define TOOLBAR_4_X            38\r
+#define TOOLBAR_4_Y            40\r
+\r
+#define SHUTTER_X              1146\r
+#define SHUTTER_Y              194\r
+#define SHUTTER_W              108\r
+#define SHUTTER_H              214\r
+\r
+#define BACKBTN_X      1146\r
+#define BACKBTN_Y      18\r
+#define BACKBTN_W      108\r
+#define BACKBTN_H      108\r
+\r
+#define QUICKVIEW_X            1146\r
+#define QUICKVIEW_Y            604\r
+#define QUICKVIEW_W    108\r
+#define QUICKVIEW_H    108\r
+\r
+#define RECORDINGBTN_X 1146\r
+#define RECORDINGBTN_Y 418\r
+#define RECORDINGBTN_W 108\r
+#define RECORDINGBTN_H 108\r
+\r
+#define REC_STOP_BTN_X 1146\r
+#define REC_STOP_BTN_Y 594\r
+#define REC_STOP_BTN_W 108\r
+#define REC_STOP_BTN_H 108\r
+\r
+#define CAF_BUTTON_X   38\r
+#define CAF_BUTTON_Y   606\r
+#define CAF_BUTTON_W   87\r
+#define CAF_BUTTON_H   88\r
+\r
+#define CAMERA_BUTTON_X                38\r
+#define CAMERA_BUTTON_Y                65\r
+#define CAMERA_BUTTON_W                61\r
+#define CAMERA_BUTTON_H                61\r
+#define CAMCORDER_BUTTON_X     38\r
+#define CAMCORDER_BUTTON_Y     109\r
+#define CAMCORDER_BUTTON_W     61\r
+#define CAMCORDER_BUTTON_H     61\r
+#define CAMERA_ICON_X 38\r
+#define CAMERA_ICON_Y 10\r
+#define CAMERA_ICON_W 56\r
+#define CAMERA_ICON_H 48\r
+\r
+images {\r
+       /*item_button*/\r
+       image: BUTTON_BG_NORMAL_IMAGE COMP;\r
+       image: BUTTON_BG_PRESS_IMAGE COMP;\r
+\r
+       image: SNAPSHOT_PRESS_IMAGE COMP;\r
+       image: SNAPSHOT_NORMAL_IMAGE COMP;\r
+       image: LEFT_TOOLBAR_BG_IMAGE COMP;\r
+       image: RIGHT_TOOLBAR_BG_IMAGE COMP;\r
+\r
+       image: CAF_BUTTON_NORMAL_IMAGE COMP;\r
+       image: CAF_BUTTON_PRESS_IMAGE COMP;\r
+}\r
+\r
+#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \\r
+       part {                          \\r
+               name: part_name;        \\r
+               type: IMAGE;    \\r
+               scale: 1;\\r
+               description {   \\r
+                       state: "default" 0.0;\\r
+                       rel1 { relative: (1 - (x+w)/MAIN_W) (1 - (y+h)/MAIN_H); }       \\r
+                       rel2 { relative: (1 - (x)/MAIN_W) (1 - (y)/MAIN_H); }           \\r
+                       image { normal: img; }  \\r
+               }     \\r
+               description{ \\r
+                       state: "hide" 0.0; \\r
+                       inherit:"default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \\r
+       part { name: button_name; \\r
+               type: IMAGE; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (x+TOOLBAR_ITEM_W)/(bg_w)) (1 - (y+TOOLBAR_ITEM_H)/(bg_h)); offset: 1 0;} \\r
+                       rel2 { relative: (1 - (x)/(bg_w))   (1 - (y)/(bg_h)); offset: 1 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_NORMAL_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "press" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_PRESS_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (x+w)/(bg_w)) (1 - (y+h)/(bg_h)); offset: 1 0;} \\r
+                       rel2 { relative: (1 - (x)/(bg_w))  (1 - (y)/(bg_h)); offset: 1 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+       } \\r
+       part { name: icon_name"_event"; \\r
+               type: RECT; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1.to: icon_name; \\r
+                       rel2.to: icon_name; \\r
+                       color: 0 0 0 0; \\r
+                       visible: 1; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (x+w)/(bg_w)) (1 - (y+h)/(bg_h));  offset: 1 1;} \\r
+                       rel2 { relative: (1 - (x)/(bg_w))  (1 - (y)/(bg_h)); offset: 0 0;} \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( press_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( release_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( click_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",edit"; \\r
+               source: "prog"; \\r
+               signal: icon_name",edit"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "normal", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( press_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( release_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) \\r
+                               emit( click_signal_name, "toolbar_signal" );\\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",press"; \\r
+               source: "prog"; \\r
+               signal: icon_name",press"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "press", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON(name, x, y) \\r
+       TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/\r
+//end files\r
diff --git a/edc/cam_toolbar_layout_vertical.edc b/edc/cam_toolbar_layout_vertical.edc
new file mode 100755 (executable)
index 0000000..1b21d76
--- /dev/null
@@ -0,0 +1,618 @@
+/*
+ * 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 "cam_funcs.edc"
+#include "../include/edc_image_name.h"
+#include "cam_toolbar_layout_vertical_inc.edc"
+#include "cam_setting_popup_layout.edc"
+
+
+collections {
+
+       group {
+               name: "toolbar";
+               min: MAIN_H MAIN_W;
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: MAIN_H MAIN_W;
+                                       max: MAIN_H MAIN_W;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+
+                       TOOLBAR_BACKGROUND_IMAGE("left_bg", 0, 0, TOOLBAR_W, MAIN_H, LEFT_TOOLBAR_BG_VER_IMAGE)
+                       TOOLBAR_BACKGROUND_IMAGE("right_bg", MAIN_W-TOOLBAR_W, 0, TOOLBAR_W, MAIN_H, RIGHT_TOOLBAR_BG_VER_IMAGE)
+
+                       part { name: "popup_area";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: 0.0 TOOLBAR_W/MAIN_W; to: "bg";}
+                                       rel2{ relative: 1.0 (MAIN_W-TOOLBAR_W)/MAIN_W; to: "bg";}
+                               }
+                       }
+
+                       part { name: "setting_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: 0.0 TOOLBAR_W/MAIN_W; to: "bg";}
+                                       rel2{ relative: 1.0 (MAIN_W-TOOLBAR_W)/MAIN_W; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: 0.0 TOOLBAR_W/MAIN_W; to: "bg";}
+                                       rel2{ relative: 1.0 (TOOLBAR_W+720-120)/MAIN_W; to: "bg";}
+                               }
+                       }
+
+                       part { name: "shortcuts_popup_description";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state:"default" 0.0;
+                                       rel1{ relative: 0.0 (TOOLBAR_W+720-120)/MAIN_W; to: "bg";}
+                                       rel2{ relative: 1.0 (TOOLBAR_W+720)/MAIN_W; to: "bg";}
+                               }
+                       }
+
+                       TOOLBAR_ITEM_BUTTON("toolbar_0_button", TOOLBAR_0_X, TOOLBAR_0_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_1_button", TOOLBAR_1_X, TOOLBAR_1_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_2_button", TOOLBAR_2_X, TOOLBAR_2_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_3_button", TOOLBAR_3_X, TOOLBAR_3_Y)
+                       TOOLBAR_ITEM_BUTTON("toolbar_4_button", TOOLBAR_4_X, TOOLBAR_4_Y)
+
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_0_icon", TOOLBAR_0_X, TOOLBAR_0_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_1_icon", TOOLBAR_1_X, TOOLBAR_1_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_2_icon", TOOLBAR_2_X, TOOLBAR_2_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_3_icon", TOOLBAR_3_X, TOOLBAR_3_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_4_icon", TOOLBAR_4_X, TOOLBAR_4_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)
+
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("shutter_button",           SHUTTER_X,              SHUTTER_Y,              SHUTTER_W,              SHUTTER_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_button",         RECORDINGBTN_X, RECORDINGBTN_Y, RECORDINGBTN_W, RECORDINGBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_stop_button",REC_STOP_BTN_X,     REC_STOP_BTN_Y, REC_STOP_BTN_W, REC_STOP_BTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("quickview_item",           QUICKVIEW_X,    QUICKVIEW_Y,    QUICKVIEW_W,    QUICKVIEW_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("backbutton_item",          BACKBTN_X,              BACKBTN_Y,              BACKBTN_W,              BACKBTN_H)
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("cafbutton_item",           CAF_BUTTON_X,   CAF_BUTTON_Y,   CAF_BUTTON_W,   CAF_BUTTON_H)
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "toolbar_bg,show";
+                               source: "prog";
+                               signal: "toolbar_bg,show";
+                               script: {
+                                       set_state(PART:"left_bg", "default", 0.0);
+                                       set_state(PART:"right_bg", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "toolbar_bg,hide";
+                               source: "prog";
+                               signal: "toolbar_bg,hide";
+                               script: {
+                                       set_state(PART:"left_bg", "hide", 0.0);
+                                       set_state(PART:"right_bg", "hide", 0.0);
+                               }
+                       }
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_0_button", "toolbar_0_icon", "toolbar_0_press_sig", "toolbar_0_release_sig", "toolbar_0_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_1_button", "toolbar_1_icon", "toolbar_1_press_sig", "toolbar_1_release_sig", "toolbar_1_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_2_button", "toolbar_2_icon", "toolbar_2_press_sig", "toolbar_2_release_sig", "toolbar_2_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_3_button", "toolbar_3_icon", "toolbar_3_press_sig", "toolbar_3_release_sig", "toolbar_3_click_sig")
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_4_button", "toolbar_4_icon", "toolbar_4_press_sig", "toolbar_4_release_sig", "toolbar_4_click_sig")
+               }/*end programs*/
+       }/*end group :toolbar*/
+
+       group {
+               name: "shutter_button";
+
+               images {
+                       image: SHUTTER_NORMAL_VER_IMAGE COMP;
+                       image: SHUTTER_PRESS_VER_IMAGE COMP;
+                       image: SHUTTER_DIM_VER_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_NORMAL_VER_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_PRESS_VER_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: SHUTTER_DIM_VER_IMAGE; }
+                               }
+                       }
+
+                       part { name: "camera_icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       aspect: 1.0 1.0;
+                                       align: 0.5 0.5;
+                                       max: 60 60;
+                                       min: 60 60;
+                                       fixed:1 1;
+                                       rel1 { relative: 0.0 0.0; to: "capture_button";}
+                                       rel2 { relative: 1.0 1.0; to: "capture_button";}
+                                       visible: 1;
+                               }
+
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("capture_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+
+                       program {
+                               name: "camera_icon,normal";
+                               source: "prog";
+                               signal: "camera_icon,normal";
+                               script: { set_state(PART:"camera_icon", "normal", 0.0); }
+                       }
+                       program {
+                               name: "camera_icon,invisible";
+                               source: "prog";
+                               signal: "camera_icon,invisible";
+                               script: { set_state(PART:"camera_icon", "dim", 0.0); }
+                       }
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_button";
+
+               images {
+                       image: CAMCORDER_SHUTTER_ICON_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_DIM_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE; }
+                               }
+                               description {
+                                       state: "dim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_SHUTTER_ICON_DIM_IMAGE; }
+                               }
+                       }
+                       part { name: "recording_pause_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_pause_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "recording_stop_button";
+
+               images {
+                       image: CAMCORDER_STOP_ICON_IMAGE COMP;
+                       image: CAMCORDER_STOP_ICON_PRESS_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "recording_stop_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_STOP_ICON_PRESS_IMAGE; }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_stop_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")
+               }/*end programs*/
+       }/*end group*/
+
+       group {
+               name: "toolbar_quickview_item";
+
+               images {
+                       image: THUMBNAIL_BG_NORMAL_IMAGE COMP;
+               }
+
+               parts {
+                       part { name: "bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal: THUMBNAIL_BG_NORMAL_IMAGE ;
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1/9 1/9; to: "bg"; }
+                                       rel2 { relative: 8/9 8/9; to: "bg"; }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "thumbnail_area"; /*note: just for c codes get thumbnail x,y,w,h*/
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "thumbnail"; }
+                                       rel2 { relative: 1.0 1.0; to: "thumbnail"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "quickview_bg,mouse,down,1";
+                               signal: "mouse,down,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,press"  "toolbar_signal";
+                       }
+                       program {
+                               name: "quickview_bg,mouse,up,1";
+                               signal: "mouse,up,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "landscape,quickview,release"  "toolbar_signal";
+                       }
+                       program {
+                               name: "prog_set_default";
+                               source: "prog";
+                               signal: "SET_DEFAULT";
+                               script: {
+                                       set_state(PART:"bg", "default", 0.0);
+                                       set_state(PART:"thumbnail", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "prog_set_invisible";
+                               source: "prog";
+                               signal: "SET_INVISIBLE";
+                               script: {
+                                       set_state(PART:"bg", "invisible", 0.0);
+                                       set_state(PART:"thumbnail", "invisible", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_quickview_item*/
+
+       group{
+               name: "toolbar_backbutton_item";
+
+               images{
+                       image: BACK_BUTTON_NORMAL_IMAGE COMP;
+                       image: BACK_BUTTON_PRESS_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "back_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : BACK_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "back_button_press";
+                               signal: "mouse,down,1";
+                               source: "back_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_release";
+                               signal: "mouse,up,1";
+                               source: "back_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "back_button";
+                       }
+                       program {
+                               name: "back_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "back_button";
+                               action: SIGNAL_EMIT "landscape,backbutton,clicked"  "toolbar_signal";
+                       }
+               }/*end programs*/
+       }/*end toolbar_backbutton_item*/
+
+       group{
+               name: "toolbar_cafbutton_item";
+
+               parts{
+                       part{
+                               name: "caf_button";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description{
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image {
+                                               normal : CAF_BUTTON_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "caf_button_press";
+                               signal: "mouse,down,1";
+                               source: "caf_button";
+                               action: STATE_SET "press" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_release";
+                               signal: "mouse,up,1";
+                               source: "caf_button";
+                               action: STATE_SET "normal" 0.0;
+                               target: "caf_button";
+                       }
+                       program {
+                               name: "caf_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "caf_button";
+                               action: SIGNAL_EMIT "caf_button,clicked" "toolbar_signal";
+                       }
+                       program {
+                               name: "caf_button_normal";
+                               source: "prog";
+                               signal: "caf_button,normal";
+                               script: {
+                                       set_state(PART:"caf_button", "normal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "caf_button_default";
+                               source: "prog";
+                               signal: "caf_button,invisible";
+                               script: {
+                                       set_state(PART:"caf_button", "default", 0.0);
+                               }
+                       }
+               }/*end programs*/
+       }/*end toolbar_cafbutton_item*/
+
+       group{
+               name: "toolbar_capture_button_item";
+
+               images{
+                       image: SNAPSHOT_PRESS_IMAGE COMP;
+                       image: SNAPSHOT_NORMAL_IMAGE COMP;
+               }
+
+               parts{
+                       part{
+                               name: "capture_button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_NORMAL_IMAGE;
+                                       }
+                               }
+                               description{
+                                       state: "press" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {
+                                               normal : SNAPSHOT_PRESS_IMAGE;
+                                       }
+                               }
+                       }
+               }/*end parts*/
+
+               programs {
+                       program {
+                               name: "capture_button_press";
+                               signal: "mouse,down,1";
+                               source: "capture_button";
+                               action: STATE_SET  "press" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_release";
+                               signal: "mouse,up,1";
+                               source: "capture_button";
+                               action: STATE_SET  "default" 0.0;
+                               target:  "capture_button";
+                       }
+                       program {
+                               name: "capture_button_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "capture_button";
+                               action: SIGNAL_EMIT "capture_button_click"  "capture_button_click";
+                       }
+               }/*end programs*/
+       }
+}/*end collections*/
+//end file
diff --git a/edc/cam_toolbar_layout_vertical_inc.edc b/edc/cam_toolbar_layout_vertical_inc.edc
new file mode 100755 (executable)
index 0000000..f5099ff
--- /dev/null
@@ -0,0 +1,353 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+\r
+#define SETTING_TOOLBAR_W 1156\r
+#define SETTING_TOOLBAR_H 116\r
+\r
+#define TOOLBAR_ITEM_W    86\r
+#define TOOLBAR_ITEM_H    86\r
+\r
+#define TOOLBAR_0_X            38\r
+#define TOOLBAR_0_Y            594\r
+\r
+#define TOOLBAR_1_X            38\r
+#define TOOLBAR_1_Y            454\r
+\r
+#define TOOLBAR_2_X            38\r
+#define TOOLBAR_2_Y            317\r
+\r
+#define TOOLBAR_3_X            38\r
+#define TOOLBAR_3_Y            180\r
+\r
+#define TOOLBAR_4_X            38\r
+#define TOOLBAR_4_Y            40\r
+\r
+#define SHUTTER_X              1146\r
+#define SHUTTER_Y              194\r
+#define SHUTTER_W              108\r
+#define SHUTTER_H              214\r
+\r
+#define BACKBTN_X      1146\r
+#define BACKBTN_Y      18\r
+#define BACKBTN_W      108\r
+#define BACKBTN_H      108\r
+\r
+#define QUICKVIEW_X            1146\r
+#define QUICKVIEW_Y            604\r
+#define QUICKVIEW_W    108\r
+#define QUICKVIEW_H    108\r
+\r
+#define RECORDINGBTN_X 1146\r
+#define RECORDINGBTN_Y 418\r
+#define RECORDINGBTN_W 108\r
+#define RECORDINGBTN_H 108\r
+\r
+#define REC_STOP_BTN_X 1146\r
+#define REC_STOP_BTN_Y 594\r
+#define REC_STOP_BTN_W 108\r
+#define REC_STOP_BTN_H 108\r
+\r
+#define CAF_BUTTON_X   38\r
+#define CAF_BUTTON_Y   606\r
+#define CAF_BUTTON_W   87\r
+#define CAF_BUTTON_H   88\r
+\r
+#define CAMERA_BUTTON_X                38\r
+#define CAMERA_BUTTON_Y                65\r
+#define CAMERA_BUTTON_W                61\r
+#define CAMERA_BUTTON_H                61\r
+#define CAMCORDER_BUTTON_X     38\r
+#define CAMCORDER_BUTTON_Y     109\r
+#define CAMCORDER_BUTTON_W     61\r
+#define CAMCORDER_BUTTON_H     61\r
+#define CAMERA_ICON_X 38\r
+#define CAMERA_ICON_Y 10\r
+#define CAMERA_ICON_W 56\r
+#define CAMERA_ICON_H 48\r
+\r
+images {\r
+       /*item_button*/\r
+       image: BUTTON_BG_NORMAL_IMAGE COMP;\r
+       image: BUTTON_BG_PRESS_IMAGE COMP;\r
+\r
+       image: SNAPSHOT_PRESS_IMAGE COMP;\r
+       image: SNAPSHOT_NORMAL_IMAGE COMP;\r
+       image: LEFT_TOOLBAR_BG_VER_IMAGE COMP;\r
+       image: RIGHT_TOOLBAR_BG_VER_IMAGE COMP;\r
+\r
+       image: CAF_BUTTON_NORMAL_IMAGE COMP;\r
+       image: CAF_BUTTON_PRESS_IMAGE COMP;\r
+}\r
+\r
+#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \\r
+       part {                          \\r
+               name: part_name;        \\r
+               type: IMAGE;    \
+               scale: 1;\\r
+               description {   \\r
+                       state: "default" 0.0;\\r
+                       rel1 { relative: (1 - (y+h)/MAIN_H) (x)/MAIN_W; }       \\r
+                       rel2 { relative: (1 - (y)/MAIN_H) (x+w)/MAIN_W; }       \\r
+                       image { normal: img; }  \\r
+               }\\r
+               description{ \\r
+                       state: "hide" 0.0; \\r
+                       inherit:"default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \\r
+       part { name: button_name; \\r
+               type: IMAGE; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (y+TOOLBAR_ITEM_H)/(bg_h)) (x)/(bg_w); offset: 0 0;} \\r
+                       rel2 { relative: (1 - (y)/(bg_h)) (x+TOOLBAR_ITEM_W)/(bg_w); offset: 0 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_NORMAL_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "press" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_PRESS_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (y+h)/(bg_h)) (x)/(bg_w); offset: 0 0;} \\r
+                       rel2 { relative: (1 - (y)/(bg_h)) (x+w)/(bg_w); offset: 0 0;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+       } \\r
+       part { name: icon_name"_event"; \\r
+               type: RECT; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1.to: icon_name; \\r
+                       rel2.to: icon_name; \\r
+                       color: 0 0 0 0; \\r
+                       visible: 1; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (1 - (y+h)/(bg_h)) (x)/(bg_w); offset: 1 0;} \\r
+                       rel2 { relative: (1 - (y)/(bg_h)) (x+w)/(bg_w); offset: 0 -1;} \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( press_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( release_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( click_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",edit"; \\r
+               source: "prog"; \\r
+               signal: icon_name",edit"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "normal", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( press_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( release_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) \\r
+                               emit( click_signal_name, "toolbar_signal" );\\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",press"; \\r
+               source: "prog"; \\r
+               signal: icon_name",press"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "press", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON(name, x, y) \\r
+       TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/\r
+//end files\r
diff --git a/edc/cam_toolbar_layout_vertical_inverse.edc b/edc/cam_toolbar_layout_vertical_inverse.edc
new file mode 100755 (executable)
index 0000000..c84ee63
--- /dev/null
@@ -0,0 +1,618 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_funcs.edc"\r
+#include "../include/edc_image_name.h"\r
+#include "cam_toolbar_layout_vertical_inverse_inc.edc"\r
+#include "cam_setting_popup_layout_inc.edc"\r
+\r
+\r
+collections {\r
+\r
+       group {\r
+               name: "toolbar";\r
+               min: MAIN_H MAIN_W;\r
+\r
+               parts {\r
+                       part {\r
+                               name: "bg";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: MAIN_H MAIN_W;\r
+                                       max: MAIN_H MAIN_W;\r
+                                       fixed: 1 1;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                               }\r
+                       }\r
+\r
+                       TOOLBAR_BACKGROUND_IMAGE("left_bg", 0, 0, TOOLBAR_W, MAIN_H, RIGHT_TOOLBAR_BG_VER_IMAGE)\r
+                       TOOLBAR_BACKGROUND_IMAGE("right_bg", MAIN_W-TOOLBAR_W, 0, TOOLBAR_W, MAIN_H, LEFT_TOOLBAR_BG_VER_IMAGE)\r
+\r
+                       part { name: "popup_area";\r
+                               type: SWALLOW;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description{\r
+                                       state:"default" 0.0;\r
+                                       rel1{ relative: 0.0 (1 - (MAIN_W-TOOLBAR_W)/MAIN_W); to: "bg";}\r
+                                       rel2{ relative: 1.0 (1 - TOOLBAR_W/MAIN_W); to: "bg";}\r
+                               }\r
+                       }\r
+\r
+                       part { name: "setting_popup";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               description{\r
+                                       state:"default" 0.0;\r
+                                       rel1{ relative: 0.0 (1 - (MAIN_W-TOOLBAR_W)/MAIN_W) ; to: "bg";}\r
+                                       rel2{ relative: 1.0 (1 - TOOLBAR_W/MAIN_W); to: "bg";}\r
+                               }\r
+                       }\r
+\r
+                       part { name: "shortcuts_popup";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               description{\r
+                                       state:"default" 0.0;\r
+                                       rel1{ relative: 0.0 (1 - (TOOLBAR_W+720)/MAIN_W); to: "bg";}\r
+                                       rel2{ relative: 1.0 (1 - (TOOLBAR_W+120)/MAIN_W); to: "bg";}\r
+                               }\r
+                       }\r
+\r
+                       part { name: "shortcuts_popup_description";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               description{\r
+                                       state:"default" 0.0;\r
+                                       rel1{ relative: 0.0 (1 - (TOOLBAR_W+120)/MAIN_W); to: "bg";}\r
+                                       rel2{ relative: 1.0 (1 - (TOOLBAR_W)/MAIN_W); to: "bg";}\r
+                               }\r
+                       }\r
+\r
+                       TOOLBAR_ITEM_BUTTON("toolbar_0_button", TOOLBAR_0_X, TOOLBAR_0_Y)\r
+                       TOOLBAR_ITEM_BUTTON("toolbar_1_button", TOOLBAR_1_X, TOOLBAR_1_Y)\r
+                       TOOLBAR_ITEM_BUTTON("toolbar_2_button", TOOLBAR_2_X, TOOLBAR_2_Y)\r
+                       TOOLBAR_ITEM_BUTTON("toolbar_3_button", TOOLBAR_3_X, TOOLBAR_3_Y)\r
+                       TOOLBAR_ITEM_BUTTON("toolbar_4_button", TOOLBAR_4_X, TOOLBAR_4_Y)\r
+\r
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_0_icon", TOOLBAR_0_X, TOOLBAR_0_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)\r
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_1_icon", TOOLBAR_1_X, TOOLBAR_1_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)\r
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_2_icon", TOOLBAR_2_X, TOOLBAR_2_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)\r
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_3_icon", TOOLBAR_3_X, TOOLBAR_3_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)\r
+                       TOOLBAR_ITEM_SWALLOW_ICON("toolbar_4_icon", TOOLBAR_4_X, TOOLBAR_4_Y, TOOLBAR_ITEM_W, TOOLBAR_ITEM_H)\r
+\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("shutter_button",           SHUTTER_X,              SHUTTER_Y,              SHUTTER_W,              SHUTTER_H)\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_button",         RECORDINGBTN_X, RECORDINGBTN_Y, RECORDINGBTN_W, RECORDINGBTN_H)\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("recording_stop_button",REC_STOP_BTN_X, REC_STOP_BTN_Y, REC_STOP_BTN_W, REC_STOP_BTN_H)\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("quickview_item",           QUICKVIEW_X,    QUICKVIEW_Y,    QUICKVIEW_W,    QUICKVIEW_H)\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("backbutton_item",          BACKBTN_X,              BACKBTN_Y,              BACKBTN_W,              BACKBTN_H)\r
+                       TOOLBAR_ITEM_SWALLOW_BUTTON("cafbutton_item",           CAF_BUTTON_X,   CAF_BUTTON_Y,   CAF_BUTTON_W,   CAF_BUTTON_H)\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       program {\r
+                               name: "toolbar_bg,show";\r
+                               source: "prog";\r
+                               signal: "toolbar_bg,show";\r
+                               script: {\r
+                                       set_state(PART:"left_bg", "default", 0.0);\r
+                                       set_state(PART:"right_bg", "default", 0.0);\r
+                               }\r
+                       }\r
+                       program {\r
+                               name: "toolbar_bg,hide";\r
+                               source: "prog";\r
+                               signal: "toolbar_bg,hide";\r
+                               script: {\r
+                                       set_state(PART:"left_bg", "hide", 0.0);\r
+                                       set_state(PART:"right_bg", "hide", 0.0);\r
+                               }\r
+                       }\r
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_0_button", "toolbar_0_icon", "toolbar_0_press_sig", "toolbar_0_release_sig", "toolbar_0_click_sig")\r
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_1_button", "toolbar_1_icon", "toolbar_1_press_sig", "toolbar_1_release_sig", "toolbar_1_click_sig")\r
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_2_button", "toolbar_2_icon", "toolbar_2_press_sig", "toolbar_2_release_sig", "toolbar_2_click_sig")\r
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_3_button", "toolbar_3_icon", "toolbar_3_press_sig", "toolbar_3_release_sig", "toolbar_3_click_sig")\r
+                       TOOLBAR_LEFT_ITEM_PROGRAM("toolbar_4_button", "toolbar_4_icon", "toolbar_4_press_sig", "toolbar_4_release_sig", "toolbar_4_click_sig")\r
+               }/*end programs*/\r
+       }/*end group :toolbar*/\r
+\r
+       group {\r
+               name: "shutter_button";\r
+\r
+               images {\r
+                       image: SHUTTER_NORMAL_VER_INVERSE_IMAGE COMP;\r
+                       image: SHUTTER_PRESS_VER_IMAGE COMP;\r
+                       image: SHUTTER_DIM_VER_IMAGE COMP;\r
+               }\r
+\r
+               parts {\r
+                       part { name: "capture_button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "normal" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: SHUTTER_NORMAL_VER_INVERSE_IMAGE; }\r
+                               }\r
+                               description {\r
+                                       state: "press" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: SHUTTER_PRESS_VER_IMAGE; }\r
+                               }\r
+                               description {\r
+                                       state: "dim" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: SHUTTER_DIM_VER_IMAGE; }\r
+                               }\r
+                       }\r
+\r
+                       part { name: "camera_icon";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       aspect: 1.0 1.0;\r
+                                       align: 0.5 0.5;\r
+                                       max: 60 60;\r
+                                       min: 60 60;\r
+                                       fixed:1 1;\r
+                                       rel1 { relative: 0.0 0.0; to: "capture_button";}\r
+                                       rel2 { relative: 1.0 1.0; to: "capture_button";}\r
+                                       visible: 1;\r
+                               }\r
+\r
+                               description {\r
+                                       state: "normal" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                               description {\r
+                                       state: "dim" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("capture_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")\r
+\r
+                       program {\r
+                               name: "camera_icon,normal";\r
+                               source: "prog";\r
+                               signal: "camera_icon,normal";\r
+                               script: { set_state(PART:"camera_icon", "normal", 0.0); }\r
+                       }\r
+                       program {\r
+                               name: "camera_icon,invisible";\r
+                               source: "prog";\r
+                               signal: "camera_icon,invisible";\r
+                               script: { set_state(PART:"camera_icon", "dim", 0.0); }\r
+                       }\r
+               }/*end programs*/\r
+       }/*end group*/\r
+\r
+       group {\r
+               name: "recording_button";\r
+\r
+               images {\r
+                       image: CAMCORDER_SHUTTER_ICON_IMAGE COMP;\r
+                       image: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE COMP;
+                       image: CAMCORDER_SHUTTER_ICON_DIM_IMAGE COMP;\r
+                       image: CAMCORDER_PAUSE_ICON_IMAGE COMP;
+                       image: CAMCORDER_PAUSE_ICON_PRESS_IMAGE COMP;\r
+               }\r
+\r
+               parts {\r
+                       part { name: "recording_button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "normal" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: CAMCORDER_SHUTTER_ICON_IMAGE; }\r
+                               }\r
+                               description {\r
+                                       state: "press" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: CAMCORDER_SHUTTER_ICON_PRESS_IMAGE; }\r
+                               }\r
+                               description {\r
+                                       state: "dim" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: CAMCORDER_SHUTTER_ICON_DIM_IMAGE; }\r
+                               }\r
+                       }\r
+                       part { name: "recording_pause_button";\r
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_IMAGE; }
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: CAMCORDER_PAUSE_ICON_PRESS_IMAGE; }
+                               }
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")\r
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_pause_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")\r
+               }/*end programs*/\r
+       }/*end group*/\r
+\r
+       group {\r
+               name: "recording_stop_button";\r
+\r
+               images {\r
+                       image: CAMCORDER_STOP_ICON_IMAGE COMP;\r
+                       image: CAMCORDER_STOP_ICON_PRESS_IMAGE COMP;\r
+               }\r
+\r
+               parts {\r
+                       part { name: "recording_stop_button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "normal" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: CAMCORDER_STOP_ICON_IMAGE; }\r
+                               }\r
+                               description {\r
+                                       state: "press" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: CAMCORDER_STOP_ICON_PRESS_IMAGE; }\r
+                               }\r
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       TOOLBAR_RIGHT_ITEM_PROGRAM("recording_stop_button", "press_shutter_sig", "release_shutter_sig", "click_shutter_sig")\r
+               }/*end programs*/\r
+       }/*end group*/\r
+\r
+       group {\r
+               name: "toolbar_quickview_item";\r
+\r
+               images {\r
+                       image: THUMBNAIL_BG_NORMAL_IMAGE COMP;\r
+               }\r
+\r
+               parts {\r
+                       part { name: "bg";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       image {\r
+                                               normal: THUMBNAIL_BG_NORMAL_IMAGE ;\r
+                                       }\r
+                               }\r
+                               description {\r
+                                       state: "invisible" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+                       part { name: "thumbnail";\r
+                               type: SWALLOW;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 1/9 1/9; to: "bg"; }\r
+                                       rel2 { relative: 8/9 8/9; to: "bg"; }\r
+                               }\r
+                               description {\r
+                                       state: "invisible" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "thumbnail_area"; /*note: just for c codes get thumbnail x,y,w,h*/\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to: "thumbnail"; }\r
+                                       rel2 { relative: 1.0 1.0; to: "thumbnail"; }\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       program {\r
+                               name: "quickview_bg,mouse,down,1";\r
+                               signal: "mouse,down,1";\r
+                               source: "bg";\r
+                               action: SIGNAL_EMIT "landscape,quickview,press"  "toolbar_signal";\r
+                       }\r
+                       program {\r
+                               name: "quickview_bg,mouse,up,1";\r
+                               signal: "mouse,up,1";\r
+                               source: "bg";\r
+                               action: SIGNAL_EMIT "landscape,quickview,release"  "toolbar_signal";\r
+                       }\r
+                       program {\r
+                               name: "prog_set_default";\r
+                               source: "prog";\r
+                               signal: "SET_DEFAULT";\r
+                               script: {\r
+                                       set_state(PART:"bg", "default", 0.0);\r
+                                       set_state(PART:"thumbnail", "default", 0.0);\r
+                               }\r
+                       }\r
+                       program {\r
+                               name: "prog_set_invisible";\r
+                               source: "prog";\r
+                               signal: "SET_INVISIBLE";\r
+                               script: {\r
+                                       set_state(PART:"bg", "invisible", 0.0);\r
+                                       set_state(PART:"thumbnail", "invisible", 0.0);\r
+                               }\r
+                       }\r
+               }/*end programs*/\r
+       }/*end toolbar_quickview_item*/\r
+\r
+       group{\r
+               name: "toolbar_backbutton_item";\r
+\r
+               images{\r
+                       image: BACK_BUTTON_NORMAL_IMAGE COMP;\r
+                       image: BACK_BUTTON_PRESS_IMAGE COMP;\r
+               }\r
+\r
+               parts{\r
+                       part{\r
+                               name: "back_button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description{\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       image {\r
+                                               normal : BACK_BUTTON_NORMAL_IMAGE;\r
+                                       }\r
+                               }\r
+                               description{\r
+                                       state: "press" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       image {\r
+                                               normal : BACK_BUTTON_PRESS_IMAGE;\r
+                                       }\r
+                               }\r
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       program {\r
+                               name: "back_button_press";\r
+                               signal: "mouse,down,1";\r
+                               source: "back_button";\r
+                               action: STATE_SET  "press" 0.0;\r
+                               target:  "back_button";\r
+                       }\r
+                       program {\r
+                               name: "back_button_release";\r
+                               signal: "mouse,up,1";\r
+                               source: "back_button";\r
+                               action: STATE_SET  "default" 0.0;\r
+                               target:  "back_button";\r
+                       }\r
+                       program {\r
+                               name: "back_button_clicked";\r
+                               signal: "mouse,clicked,1";\r
+                               source: "back_button";\r
+                               action: SIGNAL_EMIT "landscape,backbutton,clicked"  "toolbar_signal";\r
+                       }\r
+               }/*end programs*/\r
+       }/*end toolbar_backbutton_item*/\r
+\r
+       group{\r
+               name: "toolbar_cafbutton_item";\r
+\r
+               parts{\r
+                       part{\r
+                               name: "caf_button";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description{\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       visible: 0;\r
+                               }\r
+                               description{\r
+                                       state: "normal" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image {\r
+                                               normal : CAF_BUTTON_NORMAL_IMAGE;\r
+                                       }\r
+                               }\r
+                               description{\r
+                                       state: "press" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image {\r
+                                               normal : CAF_BUTTON_PRESS_IMAGE;\r
+                                       }\r
+                               }\r
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       program {\r
+                               name: "caf_button_press";\r
+                               signal: "mouse,down,1";\r
+                               source: "caf_button";\r
+                               action: STATE_SET "press" 0.0;\r
+                               target: "caf_button";\r
+                       }\r
+                       program {\r
+                               name: "caf_button_release";\r
+                               signal: "mouse,up,1";\r
+                               source: "caf_button";\r
+                               action: STATE_SET "normal" 0.0;\r
+                               target: "caf_button";\r
+                       }\r
+                       program {\r
+                               name: "caf_button_clicked";\r
+                               signal: "mouse,clicked,1";\r
+                               source: "caf_button";\r
+                               action: SIGNAL_EMIT "caf_button,clicked" "toolbar_signal";\r
+                       }\r
+                       program {\r
+                               name: "caf_button_normal";\r
+                               source: "prog";\r
+                               signal: "caf_button,normal";\r
+                               script: {\r
+                                       set_state(PART:"caf_button", "normal", 0.0);\r
+                               }\r
+                       }\r
+                       program {\r
+                               name: "caf_button_default";\r
+                               source: "prog";\r
+                               signal: "caf_button,invisible";\r
+                               script: {\r
+                                       set_state(PART:"caf_button", "default", 0.0);\r
+                               }\r
+                       }\r
+               }/*end programs*/\r
+       }/*end toolbar_cafbutton_item*/\r
+\r
+       group{\r
+               name: "toolbar_capture_button_item";\r
+\r
+               images{\r
+                       image: SNAPSHOT_PRESS_IMAGE COMP;\r
+                       image: SNAPSHOT_NORMAL_IMAGE COMP;\r
+               }\r
+\r
+               parts{\r
+                       part{\r
+                               name: "capture_button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description{\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       image {\r
+                                               normal : SNAPSHOT_NORMAL_IMAGE;\r
+                                       }\r
+                               }\r
+                               description{\r
+                                       state: "press" 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       image {\r
+                                               normal : SNAPSHOT_PRESS_IMAGE;\r
+                                       }\r
+                               }\r
+                       }\r
+               }/*end parts*/\r
+\r
+               programs {\r
+                       program {\r
+                               name: "capture_button_press";\r
+                               signal: "mouse,down,1";\r
+                               source: "capture_button";\r
+                               action: STATE_SET  "press" 0.0;\r
+                               target:  "capture_button";\r
+                       }\r
+                       program {\r
+                               name: "capture_button_release";\r
+                               signal: "mouse,up,1";\r
+                               source: "capture_button";\r
+                               action: STATE_SET  "default" 0.0;\r
+                               target:  "capture_button";\r
+                       }\r
+                       program {\r
+                               name: "capture_button_clicked";\r
+                               signal: "mouse,clicked,1";\r
+                               source: "capture_button";\r
+                               action: SIGNAL_EMIT "capture_button_click"  "capture_button_click";\r
+                       }\r
+               }/*end programs*/\r
+       }\r
+}/*end collections*/\r
+//end file\r
diff --git a/edc/cam_toolbar_layout_vertical_inverse_inc.edc b/edc/cam_toolbar_layout_vertical_inverse_inc.edc
new file mode 100755 (executable)
index 0000000..827ee9c
--- /dev/null
@@ -0,0 +1,353 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__\r
+\r
+#define SETTING_TOOLBAR_W 1156\r
+#define SETTING_TOOLBAR_H 116\r
+\r
+#define TOOLBAR_ITEM_W    86\r
+#define TOOLBAR_ITEM_H    86\r
+\r
+#define TOOLBAR_0_X            38\r
+#define TOOLBAR_0_Y            594\r
+\r
+#define TOOLBAR_1_X            38\r
+#define TOOLBAR_1_Y            454\r
+\r
+#define TOOLBAR_2_X            38\r
+#define TOOLBAR_2_Y            317\r
+\r
+#define TOOLBAR_3_X            38\r
+#define TOOLBAR_3_Y            180\r
+\r
+#define TOOLBAR_4_X            38\r
+#define TOOLBAR_4_Y            40\r
+\r
+#define SHUTTER_X              1146\r
+#define SHUTTER_Y              194\r
+#define SHUTTER_W              108\r
+#define SHUTTER_H              214\r
+\r
+#define BACKBTN_X      1146\r
+#define BACKBTN_Y      18\r
+#define BACKBTN_W      108\r
+#define BACKBTN_H      108\r
+\r
+#define QUICKVIEW_X            1146\r
+#define QUICKVIEW_Y            604\r
+#define QUICKVIEW_W    108\r
+#define QUICKVIEW_H    108\r
+\r
+#define RECORDINGBTN_X 1146\r
+#define RECORDINGBTN_Y 418\r
+#define RECORDINGBTN_W 108\r
+#define RECORDINGBTN_H 108\r
+\r
+#define REC_STOP_BTN_X 1146\r
+#define REC_STOP_BTN_Y 594\r
+#define REC_STOP_BTN_W 108\r
+#define REC_STOP_BTN_H 108\r
+\r
+#define CAF_BUTTON_X   38\r
+#define CAF_BUTTON_Y   606\r
+#define CAF_BUTTON_W   87\r
+#define CAF_BUTTON_H   88\r
+\r
+#define CAMERA_BUTTON_X                38\r
+#define CAMERA_BUTTON_Y                65\r
+#define CAMERA_BUTTON_W                61\r
+#define CAMERA_BUTTON_H                61\r
+#define CAMCORDER_BUTTON_X     38\r
+#define CAMCORDER_BUTTON_Y     109\r
+#define CAMCORDER_BUTTON_W     61\r
+#define CAMCORDER_BUTTON_H     61\r
+#define CAMERA_ICON_X 38\r
+#define CAMERA_ICON_Y 10\r
+#define CAMERA_ICON_W 56\r
+#define CAMERA_ICON_H 48\r
+\r
+images {\r
+       /*item_button*/\r
+       image: BUTTON_BG_NORMAL_IMAGE COMP;\r
+       image: BUTTON_BG_PRESS_IMAGE COMP;\r
+\r
+       image: SNAPSHOT_PRESS_IMAGE COMP;\r
+       image: SNAPSHOT_NORMAL_IMAGE COMP;\r
+       image: LEFT_TOOLBAR_BG_VER_IMAGE COMP;\r
+       image: RIGHT_TOOLBAR_BG_VER_IMAGE COMP;\r
+\r
+       image: CAF_BUTTON_NORMAL_IMAGE COMP;\r
+       image: CAF_BUTTON_PRESS_IMAGE COMP;\r
+}\r
+\r
+#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \\r
+       part {                          \\r
+               name: part_name;        \\r
+               type: IMAGE;    \\r
+               scale: 1;\\r
+               description {   \\r
+                       state: "default" 0.0;\\r
+                       rel1 { relative: (y)/MAIN_H (1 - (x+w)/MAIN_W); }       \\r
+                       rel2 { relative: (y+h)/MAIN_H (1 - (x)/MAIN_W); }       \\r
+                       image { normal: img; }  \\r
+               }     \\r
+               description{ \\r
+                       state: "hide" 0.0; \\r
+                       inherit:"default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \\r
+       part { name: button_name; \\r
+               type: IMAGE; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (y)/(bg_h) (1 - (x+TOOLBAR_ITEM_W)/(bg_w)); offset: 0 1;} \\r
+                       rel2 { relative: (y+TOOLBAR_ITEM_H)/(bg_h) (1 - (x)/(bg_w)); offset: 0 1;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_NORMAL_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "press" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+                       image { normal: BUTTON_BG_PRESS_IMAGE; } \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 0; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (y)/(bg_h) (1 - (x+w)/(bg_w)); offset: 0 1;} \\r
+                       rel2 { relative: (y+h)/(bg_h) (1 - (x)/(bg_w)); offset: 0 1;} \\r
+                       visible: 0; \\r
+               } \\r
+               description { \\r
+                       state: "normal" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+               description { \\r
+                       state: "dim" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       visible: 1; \\r
+               } \\r
+       } \\r
+       part { name: icon_name"_event"; \\r
+               type: RECT; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1.to: icon_name; \\r
+                       rel2.to: icon_name; \\r
+                       color: 0 0 0 0; \\r
+                       visible: 1; \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \\r
+       part { name: icon_name; \\r
+               type: SWALLOW; \\r
+               mouse_events: 1; \\r
+               scale: 1;\\r
+               description { \\r
+                       state: "default" 0.0; \\r
+                       rel1 { relative: (y)/(bg_h) (1 - (x+w)/(bg_w)); offset: 0 1;} \\r
+                       rel2 { relative: (y+h)/(bg_h) (1 - (x)/(bg_w)); offset: -1 0;} \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( press_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( release_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name"_event"; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "normal") == 0) { \\r
+                               emit( click_signal, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",edit"; \\r
+               source: "prog"; \\r
+               signal: icon_name",edit"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "normal", 0.0); \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:button_name, "default", 0.0); \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \\r
+       program {       \\r
+               name: "mouse_down_"icon_name; \\r
+               signal: "mouse,down,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( press_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       } \\r
+       program { \\r
+               name: "mouse_up_"icon_name; \\r
+               signal: "mouse,up,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) { \\r
+                               emit( release_signal_name, "toolbar_signal" );\\r
+                       } \\r
+               }\\r
+       }\\r
+       program { \\r
+               name: "mouse_clicked_"icon_name;  \\r
+               signal: "mouse,clicked,1"; \\r
+               source: icon_name; \\r
+               script {\\r
+                       new st[31];\\r
+                       new Float:vl;\\r
+                       get_state(PART:icon_name, st, 30, vl);\\r
+                       if (strcmp(st, "dim") != 0) \\r
+                               emit( click_signal_name, "toolbar_signal" );\\r
+               }\\r
+       }\\r
+       program { \\r
+               name: icon_name",invisible"; \\r
+               source: "prog"; \\r
+               signal: icon_name",invisible"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "default", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",normal"; \\r
+               source: "prog"; \\r
+               signal: icon_name",normal"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "normal", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",press"; \\r
+               source: "prog"; \\r
+               signal: icon_name",press"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "press", 0.0); \\r
+               } \\r
+       } \\r
+       program { \\r
+               name: icon_name",dim"; \\r
+               source: "prog"; \\r
+               signal: icon_name",dim"; \\r
+               script: { \\r
+                       set_state(PART:icon_name, "dim", 0.0); \\r
+               } \\r
+       }\r
+\r
+#define TOOLBAR_ITEM_BUTTON(name, x, y) \\r
+       TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \\r
+       TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H)\r
+\r
+#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/\r
+//end files\r
diff --git a/edc/cam_utils.edc b/edc/cam_utils.edc
new file mode 100755 (executable)
index 0000000..3a213db
--- /dev/null
@@ -0,0 +1,436 @@
+/*
+ * 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 "cam_funcs.edc"
+#include "../include/edc_image_name.h"
+
+#define CAM_FOCUS_IMG "CAMERA_FOCUS_IMG"
+
+images {
+       image: FOCUS_GUIDE_NOTREADY_IMAGE COMP;
+       image: FOCUS_GUIDE_FOCUSED_IMAGE COMP;
+       image: FOCUS_GUIDE_FAILED_IMAGE COMP;
+       image: SHOTTING_MODE_POPUP_BG_IMAGE COMP;
+       image: TIMER_ICON_BG_IMAGE COMP;
+}
+
+styles {
+       style {
+               name: "textblock_style";
+               base: "font=SLP:style=Roman font_size=40 align=left valign=top color=#ffffff  wrap=word";
+               tag:  "br"        "  \n";
+       }
+
+       style {
+               name: "textblock_style_center";
+               base: "font=SLP:style=Roman  font_size=40 align=center valign=top color=#ffffff  wrap=word";
+               tag:  "br"        "  \n";
+       }
+
+       style {
+               name: "textblock_style_shot_guide";
+               base: "font=SLP:style=Roman font_size=36 align=center color=#FFFFFF ellipise=1.0 wrap=mixed";
+               tag:  "br" "\n";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "tab" "\t";
+       }
+}
+
+
+collections {
+       group { name: "focus_image";
+               min: CAMERA_FOCUS_W CAMERA_FOCUS_H;
+               max: CAMERA_FOCUS_W CAMERA_FOCUS_H;
+               parts{
+                       part {
+                               name: CAM_FOCUS_IMG;
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+
+                               }
+                               description {
+                                       state: "notready" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image{
+                                               normal: FOCUS_GUIDE_NOTREADY_IMAGE;
+                                               border: 9 9 9 9;
+                                               border_scale: 1;
+                                               }
+                               }
+                               description {
+                                       state: "focused" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image{
+                                               normal:FOCUS_GUIDE_FOCUSED_IMAGE;
+                                               border: 9 9 9 9;
+                                               border_scale: 1;
+                                               }
+                               }
+                               description {
+                                       state: "failed" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image{
+                                               normal: FOCUS_GUIDE_FAILED_IMAGE;
+                                               border: 9 9 9 9;
+                                               border_scale: 1;
+                                               }
+                               }
+
+                       }
+               }
+
+               programs {
+                       program { name: "focus,hide";
+                               source: "program";
+                               signal: "focus,hide";
+                               action: STATE_SET "default" 0.0;
+                               target: CAM_FOCUS_IMG;
+                       }
+                       program { name: "focus,notready";
+                               source: "program";
+                               signal: "focus,notready";
+                               action: STATE_SET "notready" 0.0;
+                               target: CAM_FOCUS_IMG;
+                       }
+                       program { name: "focus,focused";
+                               source: "program";
+                               signal: "focus,focused";
+                               action: STATE_SET "focused" 0.0;
+                               target: CAM_FOCUS_IMG;
+                       }
+                       program { name: "focus,failed";
+                               source: "program";
+                               signal: "focus,failed";
+                               action: STATE_SET "failed" 0.0;
+                               target: CAM_FOCUS_IMG;
+                       }
+               }
+       }
+
+#define PX_POPUP_BOX_X 288
+#define PX_POPUP_BOX_Y 239
+#define VER_PX_POPUP_BOX_X 8
+#define VER_PX_POPUP_BOX_Y 519
+
+#define PX_POPUP_BOX_W 704
+#define PX_POPUP_BOX_H 242
+
+
+#define PX_POPUP_TEXT_Y 32
+
+#define PX_POPUP_BAR_X 72
+#define PX_POPUP_BAR_Y 182
+#define PX_POPUP_BAR_W 560
+#define PX_POPUP_BAR_H 21
+
+
+       group { name: "progress_popup";
+               parts {
+                       part {
+                               name: "progress_popup_bg";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: PX_POPUP_BOX_X/MAIN_W PX_POPUP_BOX_Y/MAIN_H; }
+                                       rel2 { relative: (PX_POPUP_BOX_X+PX_POPUP_BOX_W)/MAIN_W (PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/MAIN_H; }
+                                       image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: PX_POPUP_BOX_X/MAIN_W PX_POPUP_BOX_Y/MAIN_H; }
+                                       rel2 { relative: (PX_POPUP_BOX_X+PX_POPUP_BOX_W)/MAIN_W (PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/MAIN_H; }
+                                       image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                               }
+                               description {
+                                       state: "vertical" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: VER_PX_POPUP_BOX_X/VER_MAIN_W VER_PX_POPUP_BOX_Y/VER_MAIN_H; }
+                                       rel2 { relative: (VER_PX_POPUP_BOX_X+PX_POPUP_BOX_W)/VER_MAIN_W (VER_PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/VER_MAIN_H; }
+                                       image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "progress_popup_text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description {
+                                               state: "default" 0.0;
+                                               fixed: 1 1;
+                                               visible: 1;
+                                               rel1 { relative: 66/PX_POPUP_BOX_W PX_POPUP_TEXT_Y/PX_POPUP_BOX_H; to:  progress_popup_bg; }
+                                               rel2 { relative: (PX_POPUP_BOX_W - 66)/PX_POPUP_BOX_W 152/PX_POPUP_BOX_H;  to:  progress_popup_bg; }
+                                               color: FONT_COLOR;
+                                               text {
+                                                       style: "textblock_style";
+                                                       min: 0 1;
+                                               }
+                               }
+                       }
+                       //to swallow progressbar
+                       part {
+                               name: "progress_popup_bar";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                               state: "default" 0.0;
+                                               fixed: 1 1;
+                                               rel1 { relative: PX_POPUP_BAR_X/PX_POPUP_BOX_W  PX_POPUP_BAR_Y/PX_POPUP_BOX_H;
+                                                                       to:  progress_popup_bg; }
+                                               rel2 { relative: (PX_POPUP_BAR_X+PX_POPUP_BAR_W)/PX_POPUP_BOX_W         (PX_POPUP_BAR_Y+PX_POPUP_BAR_H)/PX_POPUP_BOX_H;
+                                                                       to:  progress_popup_bg; }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "progress_popup,default";
+                               source: "prog";
+                               signal: "progress_popup,default";
+                               script: {
+                                       set_state(PART:"progress_popup_bg", "landscape", 0.0);
+                               }
+                       }
+                       program {
+                               name: "progress_popup,vertical";
+                               source: "prog";
+                               signal: "progress_popup,vertical";
+                               script: {
+                                       set_state(PART:"progress_popup_bg", "vertical", 0.0);
+                               }
+                       }
+               }
+       }
+#if 1/*note: for burst mode*/
+//#define PX_POPUP_BOX_W 704
+//#define PX_POPUP_BOX_H 180
+
+group { name: "burst_progress_popup";
+        parts {
+                part {
+                        name: "progress_popup_bg";
+                        type: IMAGE;
+                        mouse_events: 0;
+                        scale: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 0;
+                                rel1 { relative: PX_POPUP_BOX_X/MAIN_W PX_POPUP_BOX_Y/MAIN_H; }
+                                rel2 { relative: (PX_POPUP_BOX_X+PX_POPUP_BOX_W)/MAIN_W (PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/MAIN_H; }
+                                image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                        }
+                        description {
+                                state: "landscape" 0.0;
+                                visible: 1;
+                                rel1 { relative: PX_POPUP_BOX_X/MAIN_W PX_POPUP_BOX_Y/MAIN_H; }
+                                rel2 { relative: (PX_POPUP_BOX_X+PX_POPUP_BOX_W)/MAIN_W (PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/MAIN_H; }
+                                image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                        }
+                        description {
+                                state: "vertical" 0.0;
+                                visible: 1;
+                                rel1 { relative: VER_PX_POPUP_BOX_X/VER_MAIN_W VER_PX_POPUP_BOX_Y/VER_MAIN_H; }
+                                rel2 { relative: (VER_PX_POPUP_BOX_X+PX_POPUP_BOX_W)/VER_MAIN_W (VER_PX_POPUP_BOX_Y+PX_POPUP_BOX_H)/VER_MAIN_H; }
+                                image{ normal: SHOTTING_MODE_POPUP_BG_IMAGE; }
+                        }
+                }
+                part {
+                        name: "progress_popup_text";
+                        type: TEXTBLOCK;
+                        scale: 1;
+                        description {
+                                        state: "default" 0.0;
+                                        fixed: 1 1;
+                                        visible: 1;
+                                        rel1 { relative: 66/PX_POPUP_BOX_W PX_POPUP_TEXT_Y/PX_POPUP_BOX_H; to:  progress_popup_bg; }
+                                        rel2 { relative: (PX_POPUP_BOX_W - 66)/PX_POPUP_BOX_W 152/PX_POPUP_BOX_H;  to:  progress_popup_bg; }
+                                        color: FONT_COLOR;
+                                        text {
+                                                style: "textblock_style_center";
+                                                min: 0 1;
+                                        }
+                        }
+                }
+                //to swallow progressbar
+                part {
+                        name: "progress_popup_bar";
+                        type: SWALLOW;
+                        scale: 1;
+                        description {
+                                        state: "default" 0.0;
+                                        fixed: 1 1;
+                                        rel1 { relative: PX_POPUP_BAR_X/PX_POPUP_BOX_W  PX_POPUP_BAR_Y/PX_POPUP_BOX_H;
+                                                                to:  progress_popup_bg; }
+                                        rel2 { relative: (PX_POPUP_BAR_X+PX_POPUP_BAR_W)/PX_POPUP_BOX_W         (PX_POPUP_BAR_Y+PX_POPUP_BAR_H)/PX_POPUP_BOX_H;
+                                                                to:  progress_popup_bg; }
+                        }
+                }
+        }
+        programs {
+                program {
+                        name: "progress_popup,default";
+                        source: "prog";
+                        signal: "progress_popup,default";
+                        script: {
+                                set_state(PART:"progress_popup_bg", "landscape", 0.0);
+                        }
+                }
+                program {
+                        name: "progress_popup,vertical";
+                        source: "prog";
+                        signal: "progress_popup,vertical";
+                        script: {
+                                set_state(PART:"progress_popup_bg", "vertical", 0.0);
+                        }
+                }
+        }
+}
+
+
+#endif
+
+
+#define TIMER_ICON_W 188
+#define TIMER_ICON_H 158
+       group{ name: "timer_icon_landscape";
+
+               parts{
+                       part {
+                               name: "icon";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - TIMER_ICON_W/MAIN_W)/2 (1 - TIMER_ICON_H/MAIN_H)/2; offset: 0 0; }
+                                       rel2 { relative: (1 + TIMER_ICON_W/MAIN_W)/2 (1 + TIMER_ICON_H/MAIN_H)/2; offset: -1 -1; }
+                                       image { normal: TIMER_ICON_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to:  "icon"; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1;  to:  "icon"; }
+                                       color: COLOR_1;
+                                       text {
+                                               font: FONT_NAME;
+                                               size: 60;
+                                               min: 1 1;
+                                               align: 0.8 0.8;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group{ name: "timer_icon_portrait";
+
+               parts{
+                       part {
+                               name: "icon";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - TIMER_ICON_W/MAIN_H)/2 (1 - TIMER_ICON_H/MAIN_W)/2; offset: 0 0; }
+                                       rel2 { relative: (1 + TIMER_ICON_W/MAIN_H)/2 (1 + TIMER_ICON_H/MAIN_W)/2; offset: -1 -1; }
+                                       image { normal: TIMER_ICON_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; to:      "icon"; }
+                                       rel2 { relative: 1.0 1.0; offset: -1 -1;  to:  "icon"; }
+                                       color: COLOR_1;
+                                       text {
+                                               font: FONT_NAME;
+                                               size: 60;
+                                               min: 1 1;
+                                               align: 0.8 0.8;
+                                       }
+                               }
+                       }
+               }
+       }
+
+
+#define SHOT_GUIDE_POPUP_WIDTH 600
+#define SHOT_GUIDE_POPUP_HEIGHT        72
+       group{ name: "shot_guide_landscape";
+               parts{
+                       part {
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - SHOT_GUIDE_POPUP_WIDTH/MAIN_W)/2 0.8; offset: 0 0; }
+                                       rel2 { relative: (1 + SHOT_GUIDE_POPUP_WIDTH/MAIN_W)/2 1.0; offset: -1 -1; }
+                                       color: COLOR_1;
+                                       text {
+                                               style: textblock_style_shot_guide;
+                                               min: 0 0;
+                                               max: 0 1;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group{ name: "shot_guide_potrait";
+               parts{
+                       part {
+                               name: "text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - SHOT_GUIDE_POPUP_WIDTH/MAIN_H)/2 0.75; offset: 0 0; }
+                                       rel2 { relative: (1 + SHOT_GUIDE_POPUP_WIDTH/MAIN_H)/2 0.85; offset: -1 -1; }
+                                       color: COLOR_1;
+                                       text {
+                                               style: textblock_style_shot_guide;
+                                               min: 0 0;
+                                               max: 0 1;
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/edc/cam_zoom_layout.edc b/edc/cam_zoom_layout.edc
new file mode 100755 (executable)
index 0000000..06edd50
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define ZOOM_BG_X      188
+#define ZOOM_BG_Y      89
+#define ZOOM_BG_W      96
+#define ZOOM_BG_H      542
+
+#define ZOOM_TEXT_X    0
+#define ZOOM_TEXT_Y    26
+#define ZOOM_TEXT_W    96
+#define ZOOM_TEXT_H    44
+
+#define ZOOM_SLIDE_X   0
+#define ZOOM_SLIDE_Y   104
+
+#define PIN_STEP_GAP (8)
+#define PIN_IMAGE_1X_WIDTH (160)
+#define PIN_IMAGE_1_1X_WIDTH (160 + PIN_STEP_GAP)
+#define PIN_IMAGE_1_2X_WIDTH (160 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_1_3X_WIDTH (160 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_1_4X_WIDTH (160 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_1_5X_WIDTH (160 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_1_6X_WIDTH (160 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_1_7X_WIDTH (160 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_1_8X_WIDTH (160 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_1_9X_WIDTH (160 + PIN_STEP_GAP*9)
+
+#define PIN_IMAGE_2X_WIDTH (240)
+#define PIN_IMAGE_2_1X_WIDTH (240 + PIN_STEP_GAP)
+#define PIN_IMAGE_2_2X_WIDTH (240 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_2_3X_WIDTH (240 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_2_4X_WIDTH (240 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_2_5X_WIDTH (240 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_2_6X_WIDTH (240 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_2_7X_WIDTH (240 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_2_8X_WIDTH (240 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_2_9X_WIDTH (240 + PIN_STEP_GAP*9)
+
+
+#define PIN_IMAGE_3X_WIDTH (320)
+#define PIN_IMAGE_3_1X_WIDTH (320 + PIN_STEP_GAP)
+#define PIN_IMAGE_3_2X_WIDTH (320 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_3_3X_WIDTH (320 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_3_4X_WIDTH (320 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_3_5X_WIDTH (320 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_3_6X_WIDTH (320 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_3_7X_WIDTH (320 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_3_8X_WIDTH (320 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_3_9X_WIDTH (320 + PIN_STEP_GAP*9)
+
+#define PIN_IMAGE_4X_WIDTH (400)
+
+images {
+       image: ZOOM_BG_IMAGE COMP;
+       image: ZOOM_PINCH_IMAGE COMP;
+}
+
+#define ZOOM_X_DESCRIPTON(name, width, height) \
+description {\
+       state: name 0.0;\
+       rel1 { relative: (MAIN_W/2 - (width)/2)/MAIN_W (MAIN_H/2 - (width)/2)/MAIN_H;}\
+       rel2 { relative: (MAIN_W/2 + (height)/2)/MAIN_W  (MAIN_H/2 + (height)/2)/MAIN_H;}\
+       image {\
+               normal: ZOOM_PINCH_IMAGE;\
+               border: 9 9 9 9;\
+               border_scale: 1;\
+       }\
+}
+
+#define ZOOM_X_TEXT_DESCRIPTION(name, txt) \
+description {\
+       state: name 0.0;\
+       align: 1.0 0.0;\
+       min: 0 40;\
+       max: 100 40;\
+       fixed: 1 1;\
+       rel1 { relative: 0.0 1.0; to: "pinch_image"; offset:0 2;}\
+       rel2 { relative: 1.0 1.0; to: "pinch_image";}\
+       text {\
+               font : FONT_NAME;\
+               size : 40;\
+               align: 0.5 0.5;\
+               text: txt;\
+       }\
+}
+
+#define ZOOM_X_PROGRAM(pro_name, pro_signal, pro_state)\
+program {\
+       name: "set.pinch."pro_name;\
+       source: "prog";\
+       signal: "set.pinch."pro_signal;\
+       script: {\
+               set_state(PART:"pinch_image", pro_state, 0.0);\
+               set_state(PART:"text_desc", pro_state, 0.0);\
+       }\
+       transition: LINEAR 0.1;\
+}
+
+
+collections {
+       group {
+               name: "pinch";
+               parts {
+                       part {
+                               name: "pinch_image";
+                               type: IMAGE;
+                               scale: 1;
+                               ZOOM_X_DESCRIPTON("default", PIN_IMAGE_1X_WIDTH, PIN_IMAGE_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.0x", PIN_IMAGE_1X_WIDTH, PIN_IMAGE_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.1x", PIN_IMAGE_1_1X_WIDTH, PIN_IMAGE_1_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.2x", PIN_IMAGE_1_2X_WIDTH, PIN_IMAGE_1_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.3x", PIN_IMAGE_1_3X_WIDTH, PIN_IMAGE_1_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.4x", PIN_IMAGE_1_4X_WIDTH, PIN_IMAGE_1_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.5x", PIN_IMAGE_1_5X_WIDTH, PIN_IMAGE_1_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.6x", PIN_IMAGE_1_6X_WIDTH, PIN_IMAGE_1_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.7x", PIN_IMAGE_1_7X_WIDTH, PIN_IMAGE_1_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.8x", PIN_IMAGE_1_8X_WIDTH, PIN_IMAGE_1_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.9x", PIN_IMAGE_1_9X_WIDTH, PIN_IMAGE_1_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.0x", PIN_IMAGE_2X_WIDTH, PIN_IMAGE_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.1x", PIN_IMAGE_2_1X_WIDTH, PIN_IMAGE_2_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.2x", PIN_IMAGE_2_2X_WIDTH, PIN_IMAGE_2_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.3x", PIN_IMAGE_2_3X_WIDTH, PIN_IMAGE_2_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.4x", PIN_IMAGE_2_4X_WIDTH, PIN_IMAGE_2_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.5x", PIN_IMAGE_2_5X_WIDTH, PIN_IMAGE_2_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.6x", PIN_IMAGE_2_6X_WIDTH, PIN_IMAGE_2_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.7x", PIN_IMAGE_2_7X_WIDTH, PIN_IMAGE_2_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.8x", PIN_IMAGE_2_8X_WIDTH, PIN_IMAGE_2_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.9x", PIN_IMAGE_2_9X_WIDTH, PIN_IMAGE_2_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.0x", PIN_IMAGE_3X_WIDTH, PIN_IMAGE_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.1x", PIN_IMAGE_3_1X_WIDTH, PIN_IMAGE_3_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.2x", PIN_IMAGE_3_2X_WIDTH, PIN_IMAGE_3_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.3x", PIN_IMAGE_3_3X_WIDTH, PIN_IMAGE_3_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.4x", PIN_IMAGE_3_4X_WIDTH, PIN_IMAGE_3_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.5x", PIN_IMAGE_3_5X_WIDTH, PIN_IMAGE_3_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.6x", PIN_IMAGE_3_6X_WIDTH, PIN_IMAGE_3_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.7x", PIN_IMAGE_3_7X_WIDTH, PIN_IMAGE_3_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.8x", PIN_IMAGE_3_8X_WIDTH, PIN_IMAGE_3_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.9x", PIN_IMAGE_3_9X_WIDTH, PIN_IMAGE_3_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("4.0x", PIN_IMAGE_4X_WIDTH, PIN_IMAGE_4X_WIDTH)
+                       }
+
+                       part {
+                               name: "text_desc";
+                               type: TEXT;
+                               scale: 1;
+                               ZOOM_X_TEXT_DESCRIPTION("default", "1.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.0x", "1.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.1x", "1.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.2x", "1.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.3x", "1.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.4x", "1.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.5x", "1.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.6x", "1.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.7x", "1.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.8x", "1.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.9x", "1.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.0x", "2.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.1x", "2.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.2x", "2.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.3x", "2.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.4x", "2.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.5x", "2.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.6x", "2.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.7x", "2.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.8x", "2.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.9x", "2.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.0x", "3.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.1x", "3.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.2x", "3.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.3x", "3.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.4x", "3.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.5x", "3.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.6x", "3.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.7x", "3.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.8x", "3.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.9x", "3.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("4.0x", "4.0x")
+                       }
+
+                       programs {
+                               ZOOM_X_PROGRAM("default", "default", "default")
+                               ZOOM_X_PROGRAM("1.0x", "1.0x", "1.0x")
+                               ZOOM_X_PROGRAM("1.1x", "1.1x", "1.1x")
+                               ZOOM_X_PROGRAM("1.2x", "1.2x", "1.2x")
+                               ZOOM_X_PROGRAM("1.3x", "1.3x", "1.3x")
+                               ZOOM_X_PROGRAM("1.4x", "1.4x", "1.4x")
+                               ZOOM_X_PROGRAM("1.5x", "1.5x", "1.5x")
+                               ZOOM_X_PROGRAM("1.6x", "1.6x", "1.6x")
+                               ZOOM_X_PROGRAM("1.7x", "1.7x", "1.7x")
+                               ZOOM_X_PROGRAM("1.8x", "1.8x", "1.8x")
+                               ZOOM_X_PROGRAM("1.9x", "1.9x", "1.9x")
+                               ZOOM_X_PROGRAM("2.0x", "2.0x", "2.0x")
+                               ZOOM_X_PROGRAM("2.1x", "2.1x", "2.1x")
+                               ZOOM_X_PROGRAM("2.2x", "2.2x", "2.2x")
+                               ZOOM_X_PROGRAM("2.3x", "2.3x", "2.3x")
+                               ZOOM_X_PROGRAM("2.4x", "2.4x", "2.4x")
+                               ZOOM_X_PROGRAM("2.5x", "2.5x", "2.5x")
+                               ZOOM_X_PROGRAM("2.6x", "2.6x", "2.6x")
+                               ZOOM_X_PROGRAM("2.7x", "2.7x", "2.7x")
+                               ZOOM_X_PROGRAM("2.8x", "2.8x", "2.8x")
+                               ZOOM_X_PROGRAM("2.9x", "2.9x", "2.9x")
+                               ZOOM_X_PROGRAM("3.0x", "3.0x", "3.0x")
+                               ZOOM_X_PROGRAM("3.1x", "3.1x", "3.1x")
+                               ZOOM_X_PROGRAM("3.2x", "3.2x", "3.2x")
+                               ZOOM_X_PROGRAM("3.3x", "3.3x", "3.3x")
+                               ZOOM_X_PROGRAM("3.4x", "3.4x", "3.4x")
+                               ZOOM_X_PROGRAM("3.5x", "3.5x", "3.5x")
+                               ZOOM_X_PROGRAM("3.6x", "3.6x", "3.6x")
+                               ZOOM_X_PROGRAM("3.7x", "3.7x", "3.7x")
+                               ZOOM_X_PROGRAM("3.8x", "3.8x", "3.8x")
+                               ZOOM_X_PROGRAM("3.9x", "3.9x", "3.9x")
+                               ZOOM_X_PROGRAM("4.0x", "4.0x", "4.0x")
+                       }
+               }
+
+       }
+
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: ZOOM_BG_X/MAIN_W ZOOM_BG_Y/MAIN_H; to: "bg";}
+                                       rel2 { relative: (ZOOM_BG_X+ZOOM_BG_W)/MAIN_W (ZOOM_BG_Y+ZOOM_BG_H)/MAIN_H; to: "bg";}
+                                       image { normal: ZOOM_BG_IMAGE; }
+                               }
+                       }
+                       part {
+                               name: "text_min";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (ZOOM_BG_H-ZOOM_TEXT_H-ZOOM_TEXT_Y)/ZOOM_BG_H; to: "bg_image"; }
+                                       rel2 { relative: 1.0 (ZOOM_BG_H-ZOOM_TEXT_Y)/ZOOM_BG_H; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "text_max";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 ZOOM_TEXT_Y/ZOOM_BG_H; to: "bg_image"; }
+                                       rel2 { relative: 1.0 (ZOOM_TEXT_Y+ZOOM_TEXT_H)/ZOOM_BG_H; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 ZOOM_SLIDE_Y/ZOOM_BG_H; to: "bg_image"; }
+                                       rel2 { relative: 1.0 (ZOOM_BG_H-ZOOM_SLIDE_Y)/ZOOM_BG_H; to: "bg_image"; }
+                               }
+                       }
+                       programs {
+                               program {
+                                       name:"set.zoom.default";
+                                       source: "prog";
+                                       signal: "set.zoom.default";
+                                       script: {
+                                               set_state(PART:"bg_image", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.landscape_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.landscape_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "landscape_inverse", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait_inverse", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_zoom_layout_inverse.edc b/edc/cam_zoom_layout_inverse.edc
new file mode 100755 (executable)
index 0000000..8eefd89
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define ZOOM_BG_X      188
+#define ZOOM_BG_Y      89
+
+#define ZOOM_BG_W      96
+#define ZOOM_BG_H      542
+
+#define ZOOM_TEXT_X    0
+#define ZOOM_TEXT_Y    26
+#define ZOOM_TEXT_W    96
+#define ZOOM_TEXT_H    44
+
+#define ZOOM_SLIDE_X   0
+#define ZOOM_SLIDE_Y   104
+
+
+images {
+       image: ZOOM_BG_IMAGE COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_W MAIN_H;
+                                       max: MAIN_W MAIN_H;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (ZOOM_BG_X+ZOOM_BG_W)/MAIN_W) (1 - (ZOOM_BG_Y+ZOOM_BG_H)/MAIN_H) ; offset: 0 0; to: "bg";}
+                                       rel2 { relative: (1 - ZOOM_BG_X/MAIN_W) (1 - ZOOM_BG_Y/MAIN_H); offset: -1 -1; to: "bg";}
+                                       image { normal: ZOOM_BG_IMAGE; }
+
+                               }
+                       }
+                       part {
+                               name: "text_min";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (1 - (ZOOM_BG_H-ZOOM_TEXT_Y)/ZOOM_BG_H); to: "bg_image"; }
+                                       rel2 { relative: 1.0 (1 - (ZOOM_BG_H-ZOOM_TEXT_H-ZOOM_TEXT_Y)/ZOOM_BG_H); to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "text_max";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (1.0 - (ZOOM_TEXT_Y+ZOOM_TEXT_H)/ZOOM_BG_H); to: "bg_image"; }
+                                       rel2 { relative: 1.0 (1.0 - ZOOM_TEXT_Y/ZOOM_BG_H); to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (1.0 - (ZOOM_BG_H-ZOOM_SLIDE_Y)/ZOOM_BG_H); to: "bg_image"; }
+                                       rel2 { relative: 1.0 (1.0 - ZOOM_SLIDE_Y/ZOOM_BG_H); to: "bg_image"; }
+                               }
+                       }
+                       programs {
+                               program {
+                                       name:"set.zoom.default";
+                                       source: "prog";
+                                       signal: "set.zoom.default";
+                                       script: {
+                                               set_state(PART:"bg_image", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.landscape_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.landscape_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "landscape_inverse", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait_inverse", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_zoom_layout_vertical.edc b/edc/cam_zoom_layout_vertical.edc
new file mode 100755 (executable)
index 0000000..68df3a1
--- /dev/null
@@ -0,0 +1,344 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define ZOOM_BG_X      188
+#define ZOOM_BG_Y      89
+
+#define ZOOM_BG_W      96
+#define ZOOM_BG_H      542
+
+#define ZOOM_TEXT_X    0
+#define ZOOM_TEXT_Y    26
+#define ZOOM_TEXT_W    96
+#define ZOOM_TEXT_H    44
+
+#define ZOOM_SLIDE_X   0
+#define ZOOM_SLIDE_Y   104
+
+#define PIN_STEP_GAP (8)
+#define PIN_IMAGE_1X_WIDTH (160)
+#define PIN_IMAGE_1_1X_WIDTH (160 + PIN_STEP_GAP)
+#define PIN_IMAGE_1_2X_WIDTH (160 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_1_3X_WIDTH (160 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_1_4X_WIDTH (160 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_1_5X_WIDTH (160 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_1_6X_WIDTH (160 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_1_7X_WIDTH (160 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_1_8X_WIDTH (160 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_1_9X_WIDTH (160 + PIN_STEP_GAP*9)
+
+#define PIN_IMAGE_2X_WIDTH (240)
+#define PIN_IMAGE_2_1X_WIDTH (240 + PIN_STEP_GAP)
+#define PIN_IMAGE_2_2X_WIDTH (240 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_2_3X_WIDTH (240 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_2_4X_WIDTH (240 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_2_5X_WIDTH (240 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_2_6X_WIDTH (240 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_2_7X_WIDTH (240 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_2_8X_WIDTH (240 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_2_9X_WIDTH (240 + PIN_STEP_GAP*9)
+
+
+#define PIN_IMAGE_3X_WIDTH (320)
+#define PIN_IMAGE_3_1X_WIDTH (320 + PIN_STEP_GAP)
+#define PIN_IMAGE_3_2X_WIDTH (320 + PIN_STEP_GAP*2)
+#define PIN_IMAGE_3_3X_WIDTH (320 + PIN_STEP_GAP*3)
+#define PIN_IMAGE_3_4X_WIDTH (320 + PIN_STEP_GAP*4)
+#define PIN_IMAGE_3_5X_WIDTH (320 + PIN_STEP_GAP*5)
+#define PIN_IMAGE_3_6X_WIDTH (320 + PIN_STEP_GAP*6)
+#define PIN_IMAGE_3_7X_WIDTH (320 + PIN_STEP_GAP*7)
+#define PIN_IMAGE_3_8X_WIDTH (320 + PIN_STEP_GAP*8)
+#define PIN_IMAGE_3_9X_WIDTH (320 + PIN_STEP_GAP*9)
+
+#define PIN_IMAGE_4X_WIDTH (400)
+
+
+images {
+       image: ZOOM_BG_VER_IMAGE COMP;
+       image: ZOOM_PINCH_IMAGE COMP;
+}
+
+#define ZOOM_X_DESCRIPTON(name, width, height) \
+description {\
+       state: name 0.0;\
+       rel1 { relative: (VER_MAIN_W/2 - (width)/2)/VER_MAIN_W (VER_MAIN_H/2 - (width)/2)/VER_MAIN_H;}\
+       rel2 { relative: (VER_MAIN_W/2 + (height)/2)/VER_MAIN_W  (VER_MAIN_H/2 + (height)/2)/VER_MAIN_H;}\
+       image {\
+               normal: ZOOM_PINCH_IMAGE;\
+               border: 9 9 9 9;\
+               border_scale: 1;\
+       }\
+}
+
+#define ZOOM_X_TEXT_DESCRIPTION(name, txt) \
+description {\
+       state: name 0.0;\
+       align: 1.0 0.0;\
+       min: 0 40;\
+       max: 100 40;\
+       fixed: 1 1;\
+       rel1 { relative: 0.0 1.0; to: "pinch_image"; offset:0 2;}\
+       rel2 { relative: 1.0 1.0; to: "pinch_image";}\
+       text {\
+               font : FONT_NAME;\
+               size : 40;\
+               align: 0.5 0.5;\
+               text: txt;\
+       }\
+}
+
+#define ZOOM_X_PROGRAM(pro_name, pro_signal, pro_state)\
+program {\
+       name: "set.pinch."pro_name;\
+       source: "prog";\
+       signal: "set.pinch."pro_signal;\
+       script: {\
+               set_state(PART:"pinch_image", pro_state, 0.0);\
+               set_state(PART:"text_desc", pro_state, 0.0);\
+       }\
+       transition: LINEAR 0.1;\
+}
+
+
+collections {
+       group {
+               name: "pinch";
+               parts {
+                       part {
+                               name: "pinch_image";
+                               type: IMAGE;
+                               scale: 1;
+                               ZOOM_X_DESCRIPTON("default", PIN_IMAGE_1X_WIDTH, PIN_IMAGE_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.0x", PIN_IMAGE_1X_WIDTH, PIN_IMAGE_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.1x", PIN_IMAGE_1_1X_WIDTH, PIN_IMAGE_1_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.2x", PIN_IMAGE_1_2X_WIDTH, PIN_IMAGE_1_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.3x", PIN_IMAGE_1_3X_WIDTH, PIN_IMAGE_1_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.4x", PIN_IMAGE_1_4X_WIDTH, PIN_IMAGE_1_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.5x", PIN_IMAGE_1_5X_WIDTH, PIN_IMAGE_1_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.6x", PIN_IMAGE_1_6X_WIDTH, PIN_IMAGE_1_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.7x", PIN_IMAGE_1_7X_WIDTH, PIN_IMAGE_1_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.8x", PIN_IMAGE_1_8X_WIDTH, PIN_IMAGE_1_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("1.9x", PIN_IMAGE_1_9X_WIDTH, PIN_IMAGE_1_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.0x", PIN_IMAGE_2X_WIDTH, PIN_IMAGE_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.1x", PIN_IMAGE_2_1X_WIDTH, PIN_IMAGE_2_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.2x", PIN_IMAGE_2_2X_WIDTH, PIN_IMAGE_2_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.3x", PIN_IMAGE_2_3X_WIDTH, PIN_IMAGE_2_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.4x", PIN_IMAGE_2_4X_WIDTH, PIN_IMAGE_2_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.5x", PIN_IMAGE_2_5X_WIDTH, PIN_IMAGE_2_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.6x", PIN_IMAGE_2_6X_WIDTH, PIN_IMAGE_2_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.7x", PIN_IMAGE_2_7X_WIDTH, PIN_IMAGE_2_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.8x", PIN_IMAGE_2_8X_WIDTH, PIN_IMAGE_2_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("2.9x", PIN_IMAGE_2_9X_WIDTH, PIN_IMAGE_2_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.0x", PIN_IMAGE_3X_WIDTH, PIN_IMAGE_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.1x", PIN_IMAGE_3_1X_WIDTH, PIN_IMAGE_3_1X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.2x", PIN_IMAGE_3_2X_WIDTH, PIN_IMAGE_3_2X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.3x", PIN_IMAGE_3_3X_WIDTH, PIN_IMAGE_3_3X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.4x", PIN_IMAGE_3_4X_WIDTH, PIN_IMAGE_3_4X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.5x", PIN_IMAGE_3_5X_WIDTH, PIN_IMAGE_3_5X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.6x", PIN_IMAGE_3_6X_WIDTH, PIN_IMAGE_3_6X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.7x", PIN_IMAGE_3_7X_WIDTH, PIN_IMAGE_3_7X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.8x", PIN_IMAGE_3_8X_WIDTH, PIN_IMAGE_3_8X_WIDTH)
+                               ZOOM_X_DESCRIPTON("3.9x", PIN_IMAGE_3_9X_WIDTH, PIN_IMAGE_3_9X_WIDTH)
+                               ZOOM_X_DESCRIPTON("4.0x", PIN_IMAGE_4X_WIDTH, PIN_IMAGE_4X_WIDTH)
+                       }
+
+                       part {
+                               name: "text_desc";
+                               type: TEXT;
+                               scale: 1;
+                               ZOOM_X_TEXT_DESCRIPTION("default", "1.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.0x", "1.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.1x", "1.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.2x", "1.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.3x", "1.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.4x", "1.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.5x", "1.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.6x", "1.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.7x", "1.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.8x", "1.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("1.9x", "1.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.0x", "2.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.1x", "2.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.2x", "2.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.3x", "2.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.4x", "2.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.5x", "2.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.6x", "2.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.7x", "2.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.8x", "2.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("2.9x", "2.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.0x", "3.0x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.1x", "3.1x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.2x", "3.2x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.3x", "3.3x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.4x", "3.4x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.5x", "3.5x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.6x", "3.6x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.7x", "3.7x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.8x", "3.8x")
+                               ZOOM_X_TEXT_DESCRIPTION("3.9x", "3.9x")
+                               ZOOM_X_TEXT_DESCRIPTION("4.0x", "4.0x")
+                       }
+
+                       programs {
+                               ZOOM_X_PROGRAM("default", "default", "default")
+                               ZOOM_X_PROGRAM("1.0x", "1.0x", "1.0x")
+                               ZOOM_X_PROGRAM("1.1x", "1.1x", "1.1x")
+                               ZOOM_X_PROGRAM("1.2x", "1.2x", "1.2x")
+                               ZOOM_X_PROGRAM("1.3x", "1.3x", "1.3x")
+                               ZOOM_X_PROGRAM("1.4x", "1.4x", "1.4x")
+                               ZOOM_X_PROGRAM("1.5x", "1.5x", "1.5x")
+                               ZOOM_X_PROGRAM("1.6x", "1.6x", "1.6x")
+                               ZOOM_X_PROGRAM("1.7x", "1.7x", "1.7x")
+                               ZOOM_X_PROGRAM("1.8x", "1.8x", "1.8x")
+                               ZOOM_X_PROGRAM("1.9x", "1.9x", "1.9x")
+                               ZOOM_X_PROGRAM("2.0x", "2.0x", "2.0x")
+                               ZOOM_X_PROGRAM("2.1x", "2.1x", "2.1x")
+                               ZOOM_X_PROGRAM("2.2x", "2.2x", "2.2x")
+                               ZOOM_X_PROGRAM("2.3x", "2.3x", "2.3x")
+                               ZOOM_X_PROGRAM("2.4x", "2.4x", "2.4x")
+                               ZOOM_X_PROGRAM("2.5x", "2.5x", "2.5x")
+                               ZOOM_X_PROGRAM("2.6x", "2.6x", "2.6x")
+                               ZOOM_X_PROGRAM("2.7x", "2.7x", "2.7x")
+                               ZOOM_X_PROGRAM("2.8x", "2.8x", "2.8x")
+                               ZOOM_X_PROGRAM("2.9x", "2.9x", "2.9x")
+                               ZOOM_X_PROGRAM("3.0x", "3.0x", "3.0x")
+                               ZOOM_X_PROGRAM("3.1x", "3.1x", "3.1x")
+                               ZOOM_X_PROGRAM("3.2x", "3.2x", "3.2x")
+                               ZOOM_X_PROGRAM("3.3x", "3.3x", "3.3x")
+                               ZOOM_X_PROGRAM("3.4x", "3.4x", "3.4x")
+                               ZOOM_X_PROGRAM("3.5x", "3.5x", "3.5x")
+                               ZOOM_X_PROGRAM("3.6x", "3.6x", "3.6x")
+                               ZOOM_X_PROGRAM("3.7x", "3.7x", "3.7x")
+                               ZOOM_X_PROGRAM("3.8x", "3.8x", "3.8x")
+                               ZOOM_X_PROGRAM("3.9x", "3.9x", "3.9x")
+                               ZOOM_X_PROGRAM("4.0x", "4.0x", "4.0x")
+                       }
+               }
+
+       }
+
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_H MAIN_W;
+                                       max: MAIN_H MAIN_W;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (ZOOM_BG_Y+ZOOM_BG_H)/MAIN_H) ZOOM_BG_X/MAIN_W; to: "bg";}
+                                       rel2 { relative: (1 - ZOOM_BG_Y/MAIN_H) (ZOOM_BG_X+ZOOM_BG_W)/MAIN_W; to: "bg";}
+                                       image { normal: ZOOM_BG_VER_IMAGE; }
+
+                               }
+                       }
+                       part {
+                               name: "text_min";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (ZOOM_BG_H-ZOOM_TEXT_Y)/ZOOM_BG_H) 0.0; to: "bg_image"; }
+                                       rel2 { relative: (1 - (ZOOM_BG_H-ZOOM_TEXT_H-ZOOM_TEXT_Y)/ZOOM_BG_H) 1.0; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "text_max";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (ZOOM_TEXT_Y+ZOOM_TEXT_H)/ZOOM_BG_H) 0.0; to: "bg_image"; }
+                                       rel2 { relative: (1 - ZOOM_TEXT_Y/ZOOM_BG_H) 1.0 ; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (1 - (ZOOM_BG_H-ZOOM_SLIDE_Y)/ZOOM_BG_H) 0.0 ; to: "bg_image"; }
+                                       rel2 { relative: (1 - ZOOM_SLIDE_Y/ZOOM_BG_H) 1.0; to: "bg_image"; }
+                               }
+                       }
+                       programs {
+                               program {
+                                       name:"set.zoom.default";
+                                       source: "prog";
+                                       signal: "set.zoom.default";
+                                       script: {
+                                               set_state(PART:"bg_image", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.landscape_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.landscape_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "landscape_inverse", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait_inverse", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/cam_zoom_layout_vertical_inverse.edc b/edc/cam_zoom_layout_vertical_inverse.edc
new file mode 100755 (executable)
index 0000000..2b07bc0
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+
+#define ZOOM_BG_X      188
+#define ZOOM_BG_Y      89
+
+#define ZOOM_BG_W      96
+#define ZOOM_BG_H      542
+
+#define ZOOM_TEXT_X    0
+#define ZOOM_TEXT_Y    26
+#define ZOOM_TEXT_W    96
+#define ZOOM_TEXT_H    44
+
+#define ZOOM_SLIDE_X   0
+#define ZOOM_SLIDE_Y   104
+
+
+images {
+       image: ZOOM_BG_VER_IMAGE COMP;
+}
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0.0;
+                                       min: MAIN_H MAIN_W;
+                                       max: MAIN_H MAIN_W;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "bg_image";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: ZOOM_BG_Y/MAIN_H (1 - (ZOOM_BG_X+ZOOM_BG_W)/MAIN_W); offset: 0 0; to: "bg";}
+                                       rel2 { relative: (ZOOM_BG_Y+ZOOM_BG_H)/MAIN_H (1 - ZOOM_BG_X/MAIN_W); offset: -1 -1; to: "bg";}
+                                       image { normal: ZOOM_BG_VER_IMAGE; }
+
+                               }
+                       }
+                       part {
+                               name: "text_min";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: (ZOOM_BG_H-ZOOM_TEXT_H-ZOOM_TEXT_Y)/ZOOM_BG_H 0.0 ; to: "bg_image"; }
+                                       rel2 { relative: (ZOOM_BG_H-ZOOM_TEXT_Y)/ZOOM_BG_H 1.0; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "text_max";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: ZOOM_TEXT_Y/ZOOM_BG_H 0.0; to: "bg_image"; }
+                                       rel2 { relative: (ZOOM_TEXT_Y+ZOOM_TEXT_H)/ZOOM_BG_H 1.0; to: "bg_image"; }
+                                       text {
+                                               font : FONT_NAME;
+                                               size : 40;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: ZOOM_SLIDE_Y/ZOOM_BG_H 0.0; to: "bg_image"; }
+                                       rel2 { relative: (ZOOM_BG_H-ZOOM_SLIDE_Y)/ZOOM_BG_H 1.0; to: "bg_image"; }
+                               }
+                       }
+                       programs {
+                               program {
+                                       name:"set.zoom.default";
+                                       source: "prog";
+                                       signal: "set.zoom.default";
+                                       script: {
+                                               set_state(PART:"bg_image", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.landscape_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.landscape_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "landscape_inverse", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait", 0.0);
+                                       }
+                               }
+                               program {
+                                       name:"set.zoom.portrait_inverse";
+                                       source: "prog";
+                                       signal: "set.zoom.portrait_inverse";
+                                       script: {
+                                               set_state(PART:"bg_image", "portrait_inverse", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+}
+//end files
diff --git a/edc/style_button_camera.edc b/edc/style_button_camera.edc
new file mode 100755 (executable)
index 0000000..fe51a1a
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ * 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 "style_tizen_hd_inc.edc"
+
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+
+collections {
+
+//////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/camera/default";
+      images {
+         image: "00_button_01_normal.png" COMP;
+         image: "00_button_01_normal_press.png" COMP;
+         image: "00_button_01_normal_dim.png" COMP;
+         image: "00_button_01_normal_Focus.png" COMP;
+      }
+
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  normal: "00_button_01_normal.png";
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_button_01_normal_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_button_01_normal_dim.png";
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_button_01_normal_Focus.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;
+               visible: 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               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: "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;
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 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;
+            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;*/
+               text {
+                  font: FONT_NAME;
+                 size:     30;
+                 align:    0.5 0.5;
+               }
+            }
+            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;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_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: 255 255 255 255;
+            }
+         }
+         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 {
+       script {
+               public button_state = BUTTON_STATE_ENABLED;
+       }
+         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";
+            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";
+            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: "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";
+         }
+      }
+
+   }
+
+}
+//end files
diff --git a/edc/style_ctxpopup_camera_with_radio.edc b/edc/style_ctxpopup_camera_with_radio.edc
new file mode 100755 (executable)
index 0000000..baa3ac6
--- /dev/null
@@ -0,0 +1,1732 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "../include/edc_string.h"
+#include "cam_funcs.edc"
+#define CONTROLBAR_SMALL_H 72 //65
+//Ctxpopup Camera Shooting mode
+
+//Content Layout
+collections {
+
+       styles
+       {
+               style {
+                       name: "menu_title";
+                       base: "font=SLP:style=Roman font_size=30 align=0.09 color=#FFFFFF ellipise=1.0 wrap=mixed";
+                       tag:  "br"        "  \n";
+               }
+       }
+
+
+group {
+       name:"camera/layout";
+       parts {
+               part {
+                       name: "elm.text";
+                       type:  TEXTBLOCK;
+                       mouse_events:  0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 60;
+                               max: 999999 60;
+                               fixed: 0 1;
+                               align: 0.5 0;
+                               text {
+                                       style: "menu_title";
+                                       min: 1 1;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.swallow.box";
+                       type: SWALLOW;
+                       description {
+                               rel1 { to: "elm.text"; relative: 0 1; offset: 2 1;}
+                               rel2 { offset: -3 -3;}
+                       }
+               }
+       }
+}
+
+group {
+       name:"camera/layout/setting";
+       parts {
+               part {
+                       name: "elm.text";
+                       type:  TEXTBLOCK;
+                       mouse_events:  0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 60;
+                               max: 999999 60;
+                               fixed: 0 1;
+                               align: 0.5 0;
+                               text {
+                                       style: "menu_title";
+                                       min: 1 1;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.swallow.box";
+                       type: SWALLOW;
+                       description {
+                               rel1 { to: "elm.text"; relative: 0 1; offset: 2 1;}
+                               rel2 { offset: -3 -3;}
+                       }
+               }
+       }
+}
+
+#define MENU(part_name, relx1, rely1, relx2, rely2, to_part)  \
+       part { \
+               name: "row."part_name; \
+               type: SWALLOW; \
+               scale: 1; \
+               mouse_events: 1; \
+               description { \
+                       state: "default" 0.0;   \
+                       visible: 1; \
+                       min: (180) (180); \
+                       max: (180) (180); \
+                       align: 0.5 0.5; \
+                       aspect: 1.0 1.0; \
+                       fixed: 1 1; \
+                       rel1 { relative: (relx1/720) (rely1/1280);  to:to_part;} \
+                       rel2 { relative: (relx2/720) (rely2/1280);  to:to_part;} \
+               } \
+       } \
+
+//Radio Button Style
+styles {
+       style {
+               name: "radio_label_textblock_style";
+               base: "font=SLP:style=Medium font_size=14 align=left color=#ffffff wrap=char";
+               tag: "br" "\n";
+               tag: "hilight" "+ font=SLP:style=Bold";
+               tag: "b" "+ font=SLP:style=Bold";
+               tag: "whitecolor" "+ color=#ffffff";
+               tag: "tab" "\t";
+       }
+       style {
+               name: "radio_label_textblock_disabled_style";
+               base: "font=SLP:style=Medium font_size=14 align=left color=#888888 color3=#000000 wrap=char";
+               tag: "br" "\n";
+               tag: "hilight" "+ font=SLP:style=Bold";
+               tag: "b" "+ font=SLP:style=Bold";
+               tag: "whitecolor" "+ color=#ffffff";
+               tag: "tab" "\t";
+       }
+}
+
+group {
+       name: "elm/radio/base/beat_winset_test/camera";
+       images {
+               image: SETTING_POPUP_RADIO_BUTTON_OFF_IMAGE COMP;
+               image: SETTING_POPUP_RADIO_BUTTON_ON_IMAGE COMP;
+       }
+       parts {
+               part { name: "bg";
+                       mouse_events: 0;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1.offset: 0 0;
+                               rel2.relative: 0.0 1.0;
+                               rel2.offset: 0 0;
+                               fixed: 1 0;
+                               align: 0.0 0.5;
+                               min: 60 60;
+                               max: 60 60;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "radio";
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "bg";
+                                       offset: 0 0;
+                               }
+                               rel2 {
+                                       to: "bg";
+                                       offset: 0 0;
+                               }
+                               visible: 1;
+                               color: 255 255 255 255;
+                               image.normal: SETTING_POPUP_RADIO_BUTTON_OFF_IMAGE;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: SETTING_POPUP_RADIO_BUTTON_ON_IMAGE;
+
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: SETTING_POPUP_RADIO_BUTTON_ON_IMAGE;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: SETTING_POPUP_RADIO_BUTTON_OFF_IMAGE;
+                       }
+                       description {
+                               state: "disabled_visible" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: SETTING_POPUP_RADIO_BUTTON_OFF_IMAGE;
+                       }
+               }
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 0;
+                               visible: 0;
+                               color: 255 255 255 255;
+                               align: 0.0 0.5;
+                               rel1.to_x: "bg";
+                               rel1.relative: 1.0 0.0;
+                               rel1.offset: 1 1;
+                               rel2.to_x: "bg";
+                               rel2.relative: 1.0 1.0;
+                               rel2.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;
+                               color: 128 128 128 128;
+                       }
+                       description {
+                               state: "disabled_visible" 0.0;
+                               inherit: "default" 0.0;
+                               color: 128 128 128 128;
+                               fixed: 1 1;
+                               visible: 1;
+                               aspect: 1.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.text";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       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; }
+                               color: 255 255 255 255;
+                               align: 0.0 0.5;
+                               text {
+                                       style: "radio_label_textblock_style";
+                                       min: 0 0;
+                               }
+                       }
+                       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 {
+                                       style: "radio_label_textblock_disabled_style";
+                                       min: 1 1;
+                               }
+                       }
+               }
+               part {
+                       name: "events";
+                       type: RECT;
+                       ignore_flags: ON_HOLD;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               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;
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "click";
+                       signal: "mouse,up,1";
+                       source: "events";
+                       action: SIGNAL_EMIT "elm,action,radio,toggle" "";
+               }
+               program {
+                       name: "bg_normal";
+                       script {
+                               set_state(PART:"bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "mouseout";
+                       signal: "mouse,out";
+                       source: "events";
+                       after: "bg_radio_normal";
+               }
+               program {
+                       name: "bg_radio_normal";
+                       script {
+                               new st[31];
+                               new Float:vl;
+                               get_state(PART:"radio", st, 30, vl);
+                               if (!strcmp(st, "pressed"))
+                                       set_state(PART:"radio", "default", 0.0);
+                               set_state(PART:"bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "pressed";
+                       signal: "mouse,down,1";
+                       source: "events";
+                       script {
+                               new st[31];
+                               new Float:vl;
+                               get_state(PART:"radio", st, 30, vl);
+                               if (!strcmp(st, "default"))
+                                       set_state(PART:"radio", "pressed", 0.0);
+                       }
+               }
+               program {
+                       name: "radio_on";
+                       signal: "elm,state,radio,on";
+                       source: "elm";
+                       action:  STATE_SET "visible" 0.0;
+                       target: "radio";
+               }
+               program {
+                       name: "radio_off";
+                       signal: "elm,state,radio,off";
+                       source: "elm";
+                       action:  STATE_SET "default" 0.0;
+                       target: "radio";
+               }
+               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";
+                       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:"radio", st, 30, vl);
+                               if (!strcmp(st, "visible"))
+                                       set_state(PART:"radio", "disabled_visible", 0.0);
+                               else
+                                       set_state(PART:"radio", "disabled", 0.0);
+                       }
+               }
+               program {
+                       name: "enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       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);
+
+                               get_state(PART:"elm.swallow.content", st, 30, vl);
+                               if (!strcmp(st, "disabled_visible"))
+                                       set_state(PART:"elm.swallow.content", "visible", 0.0);
+                               else
+                                       set_state(PART:"elm.swallow.content", "default", 0.0);
+
+                               get_state(PART:"radio", st, 30, vl);
+                               if (!strcmp(st, "disabled_visible"))
+                                       set_state(PART:"radio", "visible", 0.0);
+                               else
+                                       set_state(PART:"elm.swallow.content", "default", 0.0);
+                       }
+               }
+       }
+}
+
+//Ctxpopup Style
+#define CTXPOPUP_CAMERA_FRAME_WIDTH_MAX 720
+#define CTXPOPUP_CAMERA_FRAME_HEIGHT_MAX 1280
+#define CTXPOPUP_CAMERA_CONTENT_WIDTH_MAX 720
+#define CTXPOPUP_CAMERA_CONTENT_HEIGHT_MAX 1280
+/*#define CTXPOPUP_CAMERA_ARROW_SIZE 28        */
+
+group {
+       name: "elm/scroller/base/beat_winset_test/camera";
+       script {
+               public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
+               public timer0(val) {
+                       new v;
+               v = get_int(sbvis_v);
+                       if (v) {
+                               v = get_int(sbalways_v);
+                               if(!v) {
+                                       emit("do-hide-vbar", "");
+                               set_int(sbvis_v, 0);
+                       }
+               }
+                       v = get_int(sbvis_h);
+                       if (v) {
+                               v = get_int(sbalways_h);
+                               if(!v) {
+                                       emit("do-hide-hbar", "");
+                                       set_int(sbvis_h, 0);
+                               }
+                       }
+               set_int(sbvis_timer, 0);
+               return 0;
+               }
+       }
+
+       parts {
+               part {
+                       name: "clipper";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               max: CTXPOPUP_CAMERA_CONTENT_WIDTH_MAX CTXPOPUP_CAMERA_CONTENT_HEIGHT_MAX;
+                       }
+               }
+               part {
+                       name: "elm.swallow.content";
+                       clip_to: "clipper";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               max: CTXPOPUP_CAMERA_CONTENT_WIDTH_MAX CTXPOPUP_CAMERA_CONTENT_HEIGHT_MAX;
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "sb_vbar_clip_master";
+               type: RECT;
+               mouse_events: 0;
+               description {
+                       state: "default" 0.0;
+                       }
+               description {
+                       state: "hidden" 0.0;
+                               visible: 0;
+                       color: 255 255 255 0;
+               }
+               }
+               part {
+                       name: "sb_vbar_clip";
+                       clip_to:"sb_vbar_clip_master";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel2{ to:"clipper"; relative: 1.0 1.0;}
+                       }
+                       description {
+                               state: "hidden" 0.0;
+                               visible: 0;
+                               color: 255 255 255 0;
+                       }
+               }
+               part {
+                       name: "sb_vbar";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               visible: 0;
+                               align: 1.0 0.0;
+                               rel1{ to:"clipper"; relative: 1.0 0.0; }
+                               rel2{ to:"clipper"; relative: 1.0 1.0;}
+                       }
+               }
+               part {
+                       name: "elm.dragable.vbar";
+                       clip_to: "sb_vbar_clip";
+                       mouse_events: 0;
+                       scale: 1;
+                       dragable {
+                               x: 0 0 0;
+                               y: 1 1 0;
+                               confine: "sb_vbar";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 14 32;
+                               rel1 {
+                                       relative: 0.5  0.5;
+                                       to: "sb_vbar";
+                               }
+                               rel2 {
+                                       relative: 0.5  0.5;
+                                       to: "sb_vbar";
+                               }
+                       }
+               }
+               part {
+                       name: "sb_hbar_clip_master";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                       }
+                       description {
+                               state: "hidden" 0.0;
+                               visible: 0;
+                               color: 255 255 255 0;
+                       }
+               }
+               part {
+                       name: "sb_hbar_clip";
+                       clip_to: "sb_hbar_clip_master";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel2{ to:"clipper"; relative: 1.0 1.0;}
+                       }
+                       description {
+                               state: "hidden" 0.0;
+                               visible: 0;
+                               color: 255 255 255 0;
+                       }
+               }
+               part {
+                       name: "sb_hbar";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               visible: 0;
+                               align: 0.0 1.0;
+                               rel1 {to:"clipper"; relative: 0.0 1.0;}
+                               rel2 {to:"clipper"; relative: 1.0 1.0;}
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "load";
+                       signal: "load";
+                       source: "";
+                       script {
+                               set_state(PART:"sb_vbar_clip", "hidden", 0.0);
+                               set_state(PART:"sb_hbar_clip", "hidden", 0.0);
+                               set_int(sbvis_v, 0);
+                               set_int(sbvis_h, 0);
+                               set_int(sbalways_v, 0);
+                               set_int(sbalways_h, 0);
+                               set_int(sbvis_timer, 0);
+                       }
+               }
+               program {
+                       name: "vbar_show";
+                       signal: "elm,action,show,vbar";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "sb_vbar_clip_master";
+               }
+               program {
+                       name: "vbar_hide";
+                       signal: "elm,action,hide,vbar";
+                       source: "elm";
+               action:  STATE_SET "hidden" 0.0;
+               target: "sb_vbar_clip_master";
+               }
+               program {
+                       name: "vbar_show_always";
+                       signal: "elm,action,show_always,vbar";
+                       source: "elm";
+               script {
+                       new v;
+                       v = get_int(sbvis_v);
+                       v |= get_int(sbalways_v);
+                       if (!v) {
+                       set_int(sbalways_v, 1);
+                               emit("do-show-vbar", "");
+                               set_int(sbvis_v, 1);
+                       }
+               }
+               }
+               program {
+                       name: "vbar_show_notalways";
+               signal: "elm,action,show_notalways,vbar";
+               source: "elm";
+               script {
+                       new v;
+                       v = get_int(sbalways_v);
+                       if (v) {
+                               set_int(sbalways_v, 0);
+                               v = get_int(sbvis_v);
+                               if (!v) {
+                               emit("do-hide-vbar", "");
+                               set_int(sbvis_v, 0);
+                       }
+                       }
+               }
+               }
+               program {
+                       name: "sb_vbar_show";
+                       signal: "do-show-vbar";
+                       source: "";
+                       action:  STATE_SET "default" 0.0;
+                       transition: LINEAR 1.0;
+                       target: "sb_vbar_clip";
+               }
+               program {
+                       name: "sb_vbar_hide";
+                       signal: "do-hide-vbar";
+                       source: "";
+                       action:  STATE_SET "hidden" 0.0;
+                       transition: LINEAR 1.0;
+                       target: "sb_vbar_clip";
+               }
+               program {
+                       name: "hbar_show";
+                       signal: "elm,action,show,hbar";
+                       source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "sb_hbar_clip_master";
+               }
+               program {
+                       name: "hbar_hide";
+                       signal: "elm,action,hide,hbar";
+                       source: "elm";
+               action:  STATE_SET "hidden" 0.0;
+               target: "sb_hbar_clip_master";
+               }
+               program {
+                       name: "hbar_show_always";
+               signal: "elm,action,show_always,hbar";
+               source: "elm";
+               script {
+                       new v;
+                       v = get_int(sbvis_h);
+                       v |= get_int(sbalways_h);
+                       if (!v) {
+                               set_int(sbalways_h, 1);
+                               emit("do-show-hbar", "");
+                               set_int(sbvis_h, 1);
+                       }
+               }
+               }
+               program {
+                       name: "hbar_show_notalways";
+                       signal: "elm,action,show_notalways,hbar";
+                       source: "elm";
+                       script {
+                               new v;
+                       v = get_int(sbalways_h);
+                       if (v) {
+                               set_int(sbalways_h, 0);
+                       v = get_int(sbvis_h);
+                       if (!v) {
+                               emit("do-hide-hbar", "");
+                               set_int(sbvis_h, 0);
+                                       }
+                               }
+                       }
+               }
+               program {
+                       name: "sb_hbar_show";
+                       signal: "do-show-hbar";
+                       source: "";
+                       action:  STATE_SET "default" 0.0;
+                       transition: LINEAR 1.0;
+                       target: "sb_hbar_clip";
+               }
+               program {
+                       name: "sb_hbar_hide";
+                       signal: "do-hide-hbar";
+                       source: "";
+                       action:  STATE_SET "hidden" 0.0;
+                       transition: LINEAR 1.0;
+                       target: "sb_hbar_clip";
+               }
+               program {
+                       name: "scroll";
+                       signal: "elm,action,scroll";
+                       source: "elm";
+                       action:  STATE_SET "default" 0.0;
+                       script {
+                               new v;
+                               v = get_int(sbvis_v);
+                               v |= get_int(sbalways_v);
+                               if (!v) {
+                                       emit("do-show-vbar", "");
+                                       set_int(sbvis_v, 1);
+                               }
+                               v = get_int(sbvis_h);
+                               v |= get_int(sbalways_h);
+                               if(!v) {
+                                       emit("do-show-hbar", "");
+                                       set_int(sbvis_h, 1);
+                               }
+                               v = get_int(sbvis_timer);
+                               if (v > 0) cancel_timer(v);
+                               v = timer(2.0, "timer0", 0);
+                               set_int(sbvis_timer, v);
+                       }
+               }
+       }
+}
+
+group {
+       name: "elm/ctxpopup/bg/beat_winset_test/camera";
+       parts {
+               part {
+                       name: "bg";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                       visible: 0;
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "show";
+                       signal: "elm,state,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "bg";
+               }
+               program {
+                       name: "hide";
+                       signal: "elm,state,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg";
+               }
+       }
+}
+
+//Ctxpopup Style
+#define CTXPOPUP_CAMERA_ARROW_WIDTH            28
+#define CTXPOPUP_CAMERA_ARROW_HEIGHT   42
+#define CTXPOPUP_FRAME_CORNER_SIZE             4 4
+
+///////////////////////////////////////////////////////////////////////////////
+group {
+       name: "elm/ctxpopup/base/beat_winset_test/camera";
+       images {
+               image: CTXPOPUP_BG_IMAGE COMP;
+       }
+       parts {
+               part {
+                       name: "ctxpopup_frame_left_top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 0 0;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_right_top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 1 0;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_left_bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 0 1;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_right_bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 1 1;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part { name: "arrow_area_left";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 28 42;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               rel1 {
+                                       relative: 0 1;
+                                       to_y: "ctxpopup_frame_left_top";
+                               }
+                               rel2 {
+                                       relative: 0.5 0;
+                                       to:"ctxpopup_frame_left_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_right";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 28 42;
+                               fixed: 1 1;
+                               align: 0 0.5;
+                               rel1 {
+                                       relative: 0.5 1;
+                                       to:"ctxpopup_frame_right_top";
+                               }
+                               rel2 {
+                                       relative: 1 0;
+                                       to_y: "ctxpopup_frame_right_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_up";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 42 28;
+                               fixed: 1 1;
+                               align: 0.5 1;
+                               rel1 {
+                                       relative: 1 0;
+                                       to_x: "ctxpopup_frame_left_top";
+                               }
+                               rel2 {
+                                       relative: 0 0.5;
+                                       to:"ctxpopup_frame_right_top";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_down";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 42 28;
+                               fixed: 1 1;
+                               align: 0.5 0;
+                               rel1 {
+                                       relative: 1 0.5;
+                                       to:"ctxpopup_frame_left_bottom";
+                               }
+                               rel2 {
+                                       relative: 0 1;
+                                       to_x: "ctxpopup_frame_right_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+
+               part { name: "elm.swallow.arrow_up";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_up";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 42 28;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_down";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_down";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 42 28;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_left";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_left";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 28 42;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_right";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_right";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 28 42;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "ctxpopup_frame";
+                       type: IMAGE;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description {
+                               align: 1 1;
+                               image {
+                                       normal: CTXPOPUP_BG_IMAGE;
+                                       border: 67 67 92 42;
+                                       border_scale: 1;
+                               }
+                               rel1 {to: "ctxpopup_frame_left_top"; relative: 0.5 0.5;}
+                               rel2 {to: "ctxpopup_frame_right_bottom"; relative: 0.5 0.5;}
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       clip_to: "ctxpopup_clip";
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "ctxpopup_frame_left_top"; relative: 0.5 0.5;}
+                               rel2 {to: "ctxpopup_frame_right_bottom"; relative: 0.5 0.5;}
+                       }
+               }
+
+               part { name: "ctxpopup_clip";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"ctxpopup_frame_left_top"; relative: 0.5 0.5; }
+                               rel2 { to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5; }
+                       }
+                       description { state: "show_up" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_down"; relative: 0 1; }
+                               rel2 { to:"arrow_area_down"; relative: 1 1; }
+                       }
+                       description { state: "show_left" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_right"; relative: 1 0; }
+                               rel2 { to:"arrow_area_right"; relative: 1 1; }
+                       }
+                       description { state: "show_right" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_left"; relative: 0 0; }
+                               rel2 { to:"arrow_area_left"; relative: 0 1; }
+                       }
+                       description { state: "show_down" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_up"; relative: 0 0; }
+                               rel2 { to:"arrow_area_up"; relative: 1 0; }
+                       }
+                       description { state: "hide_up" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_down"; relative: 0 1; }
+                               rel2 { to:"arrow_area_down"; relative: 1 1; }
+                       }
+                       description { state: "hide_left" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_right"; relative: 1 0; }
+                               rel2 { to:"arrow_area_right"; relative: 1 1; }
+                       }
+                       description { state: "hide_right" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_left"; relative: 0 0; }
+                               rel2 { to:"arrow_area_left"; relative: 0 1; }
+                       }
+                       description { state: "hide_down" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_up"; relative: 0 0; }
+                               rel2 { to:"arrow_area_up"; relative: 1 0; }
+                       }
+                       description { state: "visible" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; }
+                               rel2 { to_x:"arrow_area_right"; to_y:"arrow_area_down"; }
+                       }
+               }
+       }
+       programs {
+               program { name: "show";
+                       signal: "elm,state,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_up";
+                       signal: "elm,state,show,up";
+                       source: "elm";
+                       action: STATE_SET "show_up" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_left";
+                       signal: "elm,state,show,left";
+                       source: "elm";
+                       action: STATE_SET "show_left" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_right";
+                       signal: "elm,state,show,right";
+                       source: "elm";
+                       action: STATE_SET "show_right" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_down";
+                       signal: "elm,state,show,down";
+                       source: "elm";
+                       action: STATE_SET "show_down" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "hide_up";
+                       signal: "elm,state,hide,up";
+                       source: "elm";
+                       action: STATE_SET "hide_up" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_left";
+                       signal: "elm,state,hide,left";
+                       source: "elm";
+                       action: STATE_SET "hide_left" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_right";
+                       signal: "elm,state,hide,right";
+                       source: "elm";
+                       action: STATE_SET "hide_right" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_down";
+                       signal: "elm,state,hide,down";
+                       source: "elm";
+                       action: STATE_SET "hide_down" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_finished";
+                       action: SIGNAL_EMIT "elm,action,hide,finished" "";
+               }
+       }
+}
+
+group { name: "elm/ctxpopup/arrow/beat_winset_test/camera";
+       images {
+               image: CTXPOPUP_LEFT_ARROW_IMAGE COMP;
+               image: CTXPOPUP_RIGHTT_ARROW_IMAGE COMP;
+               image: CTXPOPUP_TOP_ARROW_IMAGE COMP;
+               image: CTXPOPUP_BOTTOM_ARROW_IMAGE COMP;
+       }
+       parts {
+               part {
+                       name: "ctxpopup_arrow";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               max: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               fixed: 1 1;
+                               visible: 0;
+                               align: 0.5 0.5;
+                               rel1.relative: 0.0 -0.5;
+                               rel2.relative: 0.0 1.0;
+
+                       }
+                       description {
+                               state: "left" 0.0;
+                               min: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               max: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               fixed: 1 1;
+                               align: 0.0 0.5;
+                               image {
+                                       normal: CTXPOPUP_LEFT_ARROW_IMAGE;
+                               }
+                       }
+                       description {
+                               state: "right" 0.0;
+                               min: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               max: CTXPOPUP_CAMERA_ARROW_WIDTH CTXPOPUP_CAMERA_ARROW_HEIGHT;
+                               fixed: 1 1;
+                               align: 1.0 0.5;
+                               image {
+                                       normal: CTXPOPUP_RIGHTT_ARROW_IMAGE;
+                               }
+                       }
+                       description {
+                               state: "top" 0.0;
+                               min: CTXPOPUP_CAMERA_ARROW_HEIGHT CTXPOPUP_CAMERA_ARROW_WIDTH;
+                               max: CTXPOPUP_CAMERA_ARROW_HEIGHT CTXPOPUP_CAMERA_ARROW_WIDTH;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               image {
+                                       normal: CTXPOPUP_TOP_ARROW_IMAGE;
+                               }
+                       }
+                       description {
+                               state: "bottom" 0.0;
+                               min: CTXPOPUP_CAMERA_ARROW_HEIGHT CTXPOPUP_CAMERA_ARROW_WIDTH;
+                               max: CTXPOPUP_CAMERA_ARROW_HEIGHT CTXPOPUP_CAMERA_ARROW_WIDTH;
+                               fixed: 1 1;
+                               align: 0.5 1.0;
+                               image {
+                                       normal: CTXPOPUP_BOTTOM_ARROW_IMAGE;
+                               }
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "enable_left_arrow";
+                       signal: "elm,state,left";
+                       source: "elm";
+                       action: STATE_SET "left" 0.0;
+                       target: "ctxpopup_arrow";
+               }
+               program {
+                       name: "enable_right_arrow";
+                       signal: "elm,state,right";
+                       source: "elm";
+                       action: STATE_SET "right" 0.0;
+                       target: "ctxpopup_arrow";
+               }
+               program {
+                       name: "enable_top_arrow";
+                       signal: "elm,state,top";
+                       source: "elm";
+                       action: STATE_SET "top" 0.0;
+                       target: "ctxpopup_arrow";
+               }
+               program {
+                       name: "enable_bottom_arrow";
+                       signal: "elm,state,bottom";
+                       source: "elm";
+                       action: STATE_SET "bottom" 0.0;
+                       target: "ctxpopup_arrow";
+               }
+       }
+}
+
+group {
+       name: "elm/ctxpopup/bg/beat_winset_test/camera_no_arrow";
+       parts {
+               part {
+                       name: "bg";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               visible: 0;
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "show";
+                       signal: "elm,state,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "bg";
+               }
+               program {
+                       name: "hide";
+                       signal: "elm,state,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg";
+               }
+       }
+}
+
+group {
+       name: "elm/ctxpopup/base/beat_winset_test/camera_no_arrow";
+       images {
+               image: CTXPOPUP_BG_2DEPTH_IMAGE COMP;
+       }
+       parts {
+               part {
+                       name: "ctxpopup_frame_left_top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 0 0;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_right_top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 1 0;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_left_bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 0 1;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame_right_bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               align: 1 1;
+                               min: CTXPOPUP_FRAME_CORNER_SIZE;
+                               max: CTXPOPUP_FRAME_CORNER_SIZE;
+                       }
+               }
+
+               part { name: "arrow_area_left";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 40 0;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               rel1 {
+                                       relative: 0 1;
+                                       to_y: "ctxpopup_frame_left_top";
+                               }
+                               rel2 {
+                                       relative:0 0;
+                                       to:"ctxpopup_frame_left_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_right";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 40 0;
+                               fixed: 1 1;
+                               align: 0 0.5;
+                               rel1 {
+                                       relative: 1 1;
+                                       to:"ctxpopup_frame_right_top";
+                               }
+                               rel2 {
+                                       relative: 1 0;
+                                       to_y: "ctxpopup_frame_right_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_up";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 0 40;
+                               fixed: 1 1;
+                               align: 0.5 1;
+                               rel1 {
+                                       relative: 1 0;
+                                       to_x: "ctxpopup_frame_left_top";
+                               }
+                               rel2 {
+                                       relative: 0 0;
+                                       to:"ctxpopup_frame_right_top";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+               part { name: "arrow_area_down";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 0 40;
+                               fixed: 1 1;
+                               align: 0.5 0;
+                               rel1 {
+                                       relative: 1 1;
+                                       to:"ctxpopup_frame_left_bottom";
+                               }
+                               rel2 {
+                                       relative: 0 1;
+                                       to_x: "ctxpopup_frame_right_bottom";
+                               }
+                               color : 255 255 255 0;
+                       }
+               }
+
+               part { name: "elm.swallow.arrow_up";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_up";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 40 40;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_down";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_down";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 40 40;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_left";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_left";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 40 40;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+               part { name: "elm.swallow.arrow_right";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       dragable {
+                               x: 1 1 0;
+                               y: 1 1 0;
+                               confine: "arrow_area_right";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: 40 40;
+                               fixed: 1 1;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "ctxpopup_frame";
+                       type: IMAGE;
+                       scale: 1;
+                       clip_to: "ctxpopup_clip";
+                       description {
+                               align: 1 1;
+                               /*color: 0 0 0 85;*/
+                               image {
+                                       normal: CTXPOPUP_BG_2DEPTH_IMAGE;
+                                       border: 67 67 92 42;
+                                       border_scale: 1;
+                               }
+                               rel1 {to: "ctxpopup_frame_left_top"; relative: 0.5 0.5;}
+                               rel2 {to: "ctxpopup_frame_right_bottom"; relative: 0.5 0.5;}
+
+                       //      color : 255 255 255 200;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       clip_to: "ctxpopup_clip";
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "ctxpopup_frame_left_top"; relative: 0.5 0.5;}
+                               rel2 {to: "ctxpopup_frame_right_bottom"; relative: 0.5 0.5;}
+                       }
+               }
+
+               part { name: "ctxpopup_clip";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                       color: 255 255 255 0;
+                       rel1 { to:"ctxpopup_frame_left_top"; relative: 0.5 0.5; }
+                       rel2 { to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5; }
+                       }
+                       description { state: "show_up" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_down"; relative: 0 1; }
+                               rel2 { to:"arrow_area_down"; relative: 1 1; }
+                       }
+                       description { state: "show_left" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_right"; relative: 1 0; }
+                               rel2 { to:"arrow_area_right"; relative: 1 1; }
+                       }
+                       description { state: "show_right" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_left"; relative: 0 0; }
+                               rel2 { to:"arrow_area_left"; relative: 0 1; }
+                       }
+                       description { state: "show_down" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"arrow_area_up"; relative: 0 0; }
+                               rel2 { to:"arrow_area_up"; relative: 1 0; }
+                       }
+                       description { state: "hide_up" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_down"; relative: 0 1; }
+                               rel2 { to:"arrow_area_down"; relative: 1 1; }
+                       }
+                       description { state: "hide_left" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_right"; relative: 1 0; }
+                               rel2 { to:"arrow_area_right"; relative: 1 1; }
+                       }
+                       description { state: "hide_right" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_left"; relative: 0 0; }
+                               rel2 { to:"arrow_area_left"; relative: 0 1; }
+                       }
+                       description { state: "hide_down" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to:"arrow_area_up"; relative: 0 0; }
+                               rel2 { to:"arrow_area_up"; relative: 1 0; }
+                       }
+                       description { state: "visible" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; }
+                               rel2 { to_x:"arrow_area_right"; to_y:"arrow_area_down"; }
+                       }
+               }
+       }
+       programs {
+               program { name: "show";
+                       signal: "elm,state,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_up";
+                       signal: "elm,state,show,up";
+                       source: "elm";
+                       action: STATE_SET "show_up" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_left";
+                       signal: "elm,state,show,left";
+                       source: "elm";
+                       action: STATE_SET "show_left" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_right";
+                       signal: "elm,state,show,right";
+                       source: "elm";
+                       action: STATE_SET "show_right" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "show_down";
+                       signal: "elm,state,show,down";
+                       source: "elm";
+                       action: STATE_SET "show_down" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+               }
+               program { name: "hide_up";
+                       signal: "elm,state,hide,up";
+                       source: "elm";
+                       action: STATE_SET "hide_up" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_left";
+                       signal: "elm,state,hide,left";
+                       source: "elm";
+                       action: STATE_SET "hide_left" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_right";
+                       signal: "elm,state,hide,right";
+                       source: "elm";
+                       action: STATE_SET "hide_right" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_down";
+                       signal: "elm,state,hide,down";
+                       source: "elm";
+                       action: STATE_SET "hide_down" 0.0;
+                       transition: LINEAR 0.25;
+                       target: "ctxpopup_clip";
+                       after: "hide_finished";
+               }
+               program { name: "hide_finished";
+                       action: SIGNAL_EMIT "elm,action,hide,finished" "";
+               }
+       }
+}
+
+group { name: "elm/ctxpopup/arrow/beat_winset_test/camera_no_arrow";
+       parts {
+               part {
+                       name: "ctxpopup_arrow";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               align: 0.5 0.5;
+                               rel1.relative: 0.0 -0.5;
+                               rel2.relative: 0.0 1.0;
+
+                       }
+                       description {
+                               state: "left" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "right" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "top" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "bottom" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+       }
+}
+
+
+#include "style_tizen_hd_inc.edc"
+#include "style_genlist_macro.edc"
+#include "style_genlist_normal.edc"
+
+}
+
diff --git a/edc/style_genlist_macro.edc b/edc/style_genlist_macro.edc
new file mode 100755 (executable)
index 0000000..72b46db
--- /dev/null
@@ -0,0 +1,847 @@
+/*
+ * 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.
+ */
+
+
+#define GENLIST_PART_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: GENLIST_PART_BG_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_PART_BG \
+         part { name: "bg"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: GENLIST_PART_BG_COLOR_INC; \
+            } \
+            description { state: "hide" 0.0; \
+               inherit: "default" 0.0; \
+               rel1 { relative: 0.025 0.0; } \
+               rel2 { relative: 1.025 1.0; } \
+            } \
+            description { state: "hide" 0.1;  \
+               inherit: "default" 0.0; \
+               rel1 { relative: 0.13 0.0; } \
+               rel2 { relative: 1.13 1.0; } \
+            } \
+            description { state: "hide" 0.2; \
+               inherit: "default" 0.0; \
+               rel1 { relative: 0.5 0.0; } \
+               rel2 { relative: 1.5 1.0; } \
+            } \
+            description { state: "hide" 0.3; \
+               inherit: "default" 0.0; \
+               rel1 { relative: 1.0 0.0; } \
+               rel2 { relative: 2.0 1.0; } \
+            } \
+         }
+
+#define GENLIST_PART_BG_IMAGE \
+         part { name: "bg_image"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: GENLIST_PART_LIST_BG_COLOR_INC; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_PART_BOTTOM_LINE \
+         part { name: "bottom_line"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 0 1; \
+               fixed: 0 1; \
+               visible: 1; \
+               color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+               rel1 { \
+                  relative: 0.0 1.0; \
+                  offset: 0 -1; \
+               } \
+            } \
+         }
+
+#define GENLIST_PART_BOTTOM_EFFECT_LINE \
+         part { name: "bottom_line"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 0 1; \
+               fixed: 0 1; \
+               visible: 1; \
+               color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+               rel1 { \
+                  relative: 0.0 1.0; \
+                  offset: 0 -1; \
+               } \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
+       part { name: "elm.padding.top"; \
+            type: RECT; \
+            scale: 1; \
+            description { \
+               state: "default" 0.0; \
+               min: 0 param_padding_size; \
+               fixed: 0 1; \
+               visible: 0; \
+               rel2.relative: 1.0 0.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \
+       part { name: "elm.padding.text.top"; \
+            type: RECT; \
+            scale: 1; \
+            description { \
+               state: "default" 0.0; \
+               min: 0 param_padding_size; \
+               fixed: 0 1; \
+               visible: 0; \
+               rel2.relative: 1.0 0.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
+       part { name: "elm.padding.bottom"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_padding_size; \
+               fixed: 0 1; \
+               visible: 0; \
+               rel1.relative: 0.0 1.0; \
+               align: 0.0 1.0; \
+            } \
+         }
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+         part { name: "elm.padding.left"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: param_padding_size 0; \
+               fixed: 1 0; \
+               visible: 0; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+       part { name: "elm.padding.right"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: param_padding_size 0; \
+               fixed: 1 0; \
+               visible: 0; \
+               rel1.relative: 1.0  0.0; \
+               align: 1.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_DIALOGUE_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+         part { name: "elm.rect.dialogue"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_12_INC 0; \
+               fixed: 1 0; \
+               color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_DIALOGUE_EXPANDABLE_ITEM \
+         part { name: "elm.rect.dialogue"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_12_INC 0; \
+               fixed: 1 0; \
+               color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_SWALLOW_END( param_padding_size ) \
+         part { name: "elm.padding.left.swallow.end";\
+            clip_to: "disclip"; \
+            type: RECT;\
+            scale: 1;\
+            description { state: "default" 0.0;\
+               min: param_padding_size 0;\
+               fixed: 1 0;\
+               visible: 0; \
+               rel1.to_x: "elm.swallow.end";\
+               rel2 {\
+                  relative: 0.0  1.0;\
+                  to_x: "elm.swallow.end";\
+               }\
+               align: 1.0 0.5;\
+            }\
+         }\
+         part { name: "elm.swallow.end";\
+            clip_to: "disclip"; \
+            type: SWALLOW;\
+            scale: 1;\
+            description { state: "default" 0.0;\
+               fixed: 1 0;\
+               align: 1.0 0.5;\
+               rel1.to_x: "elm.padding.right";\
+               rel2 {\
+                  relative: 0.0  1.0;\
+                  to_x: "elm.padding.right";\
+               }\
+            }\
+         }
+
+#define GENLIST_PART_DISCLIP \
+        part { name: "disclip"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_DISCLIP_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT() \
+               part { name: "point"; \
+                       type: RECT; \
+                       scale: 1; \
+                        description { \
+                                state: "default" 0.0; \
+                                color: 0 0 0 0; \
+                                rel1 { relative: 0.0 0.0; } \
+                                rel2 { relative: 1.0 0.0; } \
+                        } \
+                }
+
+#define GENLIST_PART_MAP_START( param_x, param_y, param_z ) \
+               description { state: "map_transition" 0.0; \
+                   inherit: "default" 0.0; \
+                   color: 50 50 50 100; \
+                   map { \
+                      perspective: "point"; \
+                      on: 1; \
+                      smooth: 1; \
+                      perspective_on: 1; \
+                      backface_cull: 1; \
+                      rotation { \
+                         center: "point"; \
+                         x: param_x; \
+                         y: param_y; \
+                         z: param_z; \
+                      } \
+                  } \
+                } \
+                description { \
+                        state: "hide" 0.0; \
+                        inherit: "default" 0.0; \
+                        visible: 0; \
+                }
+
+#define GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \
+                description { \
+                        state: "map_rotate" 0.0; \
+                        inherit: "default" 0.0; \
+                        map { \
+                                perspective: "point"; \
+                                on: 1; \
+                                smooth: 1; \
+                                perspective_on: 1; \
+                                backface_cull: 1; \
+                                rotation { \
+                                        center: "point"; \
+                                        x: param_x; \
+                                        y: param_y; \
+                                        z: param_z; \
+                                } \
+                       } \
+               } \
+
+#define GENLIST_PART_MAP_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: GENLIST_PART_BG_COLOR_INC; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_EXPANDABLE_PART_BASE( GE_HEIGHT , GE_COLOR ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 GE_HEIGHT; \
+               color: GE_COLOR; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_START() \
+                name: "rotaion_transition"; \
+                signal: "flip_item"; \
+                action: STATE_SET "map_transition" 0.0; \
+                after: "rotation";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_FINISH( second ) \
+                name: "rotation"; \
+                action: STATE_SET "map_rotate" 0.0; \
+                transition: LINEAR second; \
+                after: "rotation_end";
+
+#define GENLIST_PROGRAM_MAP_EXPAND_END() \
+                name: "rotation_end"; \
+                action: STATE_SET "default" 0.0;
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_START() \
+                name: "rotation_transition2"; \
+                signal: "elm,state,contract_flip"; \
+                action: STATE_SET "map_rotate" 0.0; \
+                after: "rotation2";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_FINISH( second ) \
+                name: "rotation2"; \
+                action: STATE_SET "map_transition" 0.0; \
+                transition: LINEAR second; \
+                after: "rotation3";
+
+#define GENLIST_PROGRAM_MAP_CONTRACT_END() \
+                name: "rotation3"; \
+                action: STATE_SET "hide" 0.0;
+
+#define GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_EXPANDABLE_SWALLOW_PADDING \
+         part { name: "elm.swallow.pad"; \
+            type: SWALLOW; \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  relative: 1.0 0.0;\
+                  to_x: "elm.padding.left"; \
+               } \
+               rel2.to_x: "elm.padding.left"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         } \
+
+#define GENLIST_PART_PADDING_LEFT_SLIDE( param_padding_size ) \
+         part { name: "elm.padding.left"; \
+            type: RECT; \
+            scale: 1; \
+            description { \
+               state: "default" 0.0; \
+               min: param_padding_size 0; \
+               fixed: 1 0; \
+               visible: 0; \
+               rel1 { relative: 0.0 0.0; to: "bg"; } \
+               rel2 { relative: 0.0 1.0; to: "bg"; } \
+               align: 0.0 0.0; \
+            } \
+         }
+
+/* only for demo */
+#define GENLIST_PART_BUTTON( param_name, param_text_name, param_text, param_left, param_right, param_top, param_bottom ) \
+       part { name: param_name; \
+         mouse_events: 1; \
+         description { state: "default" 0.0; \
+            visible: 1; \
+            rel1 { relative: param_left param_top; offset: 0 0; } \
+            rel2 { relative: param_right param_bottom; offset: -1 -1; } \
+            image { \
+               normal: "btn_normal.png"; \
+               border: 10 10 10 10; \
+               border_scale: 1; \
+            } \
+            image.middle: SOLID; \
+            fill.smooth: 0; \
+         } \
+         description { state: "selected" 0.0;  \
+            inherit: "default" 0.0;  \
+            image { \
+               normal: "btn_selected.png"; \
+            } \
+         } \
+      } \
+      part { name: param_text_name;  \
+         type: TEXT;  \
+         mouse_events: 0; \
+         scale: 1; \
+         description {  \
+            align: 0.0 0.0; \
+            state: "default" 0.0;  \
+            color: 0 0 0 255;  \
+            rel1 { relative: 0.0 0.0; to: param_name; } \
+            rel2 { relative: 1.0 1.0; to: param_name; } \
+            text {  \
+               text: param_text; \
+               font: "SLP:style=Roman"; \
+               size: 24;  \
+               min: 1 1;  \
+               align: 0.5 0.5;  \
+            }  \
+         }  \
+      }
+
+/* only for demo */
+#define GENLIST_PROGRAM_BUTTON( param_name_focused, param_name_normal, param_part_name ) \
+      program { name: param_name_focused; \
+         source: param_part_name; \
+         signal: "mouse,down,1"; \
+         action:  STATE_SET "selected" 0.0;  \
+         target: param_part_name; \
+      } \
+      program { name: param_name_normal; \
+         source: param_part_name; \
+         signal: "mouse,up,1"; \
+         action:  STATE_SET "default" 0.0;  \
+         target: param_part_name; \
+      }
+
+#define GENLIST_PROGRAM_SLIDE_WITH_AFTER( param_name, param_state, param_next ) \
+      program { name: param_name; \
+         action:  STATE_SET "hide" param_state; \
+         target: "bg"; \
+         transition: LINEAR 0.3; \
+         after: param_next; \
+      }
+
+#define GENLIST_PROGRAM_SLIDE( param_name, param_state_name, param_state_value ) \
+      program { name: param_name; \
+         action:  STATE_SET param_state_name param_state_value; \
+         target: "bg"; \
+         transition: LINEAR 0.3; \
+      }
+
+#define DESC_FLIP_IMAGE( param_state_value, param_image_file_name ) \
+      description { state: "flipping" param_state_value; \
+         inherit: "default" 0.0; \
+         image { normal: param_image_file_name; } \
+      }
+
+#define DESC_TEXT_HIDE( param_state_value ) \
+   description { state: "hide" param_state_value; \
+      inherit: "default" 0.0; \
+      color: 0 0 0 (255*(1-param_state_value/0.20)); \
+   }
+
+#define GENLIST_EDIT_PART_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: 0 0 0 0; \
+            } \
+         }
+
+#define GENLIST_PART_FLIP \
+         part { name: "elm.flip.content"; \
+            clip_to: "disclip"; \
+            type: SWALLOW; \
+            mouse_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 1 1; \
+               rel1 { \
+                  relative: 1.0  0.5; \
+                  to_x: "elm.padding.left"; \
+               } \
+               rel2 { \
+                  relative: 0.0  0.5; \
+                  to_x: "elm.padding.right"; \
+               } \
+            } \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         }
+
+#define GENLIST_DESCRIPTION_INVISIBLE_SELECTED \
+            description { state: "selected" 1.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) \
+                  set_state(PART:"elm.text", "selected", 1.0); \
+               else \
+                  set_state(PART:"elm.text", "selected", 0.0); \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text.1", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) { \
+                  set_state(PART:"elm.text.1", "selected", 1.0); \
+                  set_state(PART:"elm.text.2", "selected", 1.0); \
+               } \
+               else { \
+                  set_state(PART:"elm.text.1", "selected", 0.0); \
+                  set_state(PART:"elm.text.2", "selected", 0.0); \
+               } \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text.1", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) { \
+                  set_state(PART:"elm.text.1", "selected", 1.0); \
+                  set_state(PART:"elm.text.2", "selected", 1.0); \
+                  set_state(PART:"elm.text.3", "selected", 1.0); \
+               } \
+               else { \
+                  set_state(PART:"elm.text.1", "selected", 0.0); \
+                  set_state(PART:"elm.text.2", "selected", 0.0); \
+                  set_state(PART:"elm.text.3", "selected", 0.0); \
+               } \
+            }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+             target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+         }
+
diff --git a/edc/style_genlist_normal.edc b/edc/style_genlist_normal.edc
new file mode 100755 (executable)
index 0000000..7d0eeb2
--- /dev/null
@@ -0,0 +1,866 @@
+/*
+ * 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.
+ */
+
+
+ styles {
+       style {
+               name: "cam_textblock_gl_default";
+               base: "font=SLP:style=Roman font_size="GENLIST_FONT_40_INC" color=#FFFFFF ellipise=1.0 wrap=mixed";
+               tag:  "br" "\n";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "tab" "\t";
+       }
+       style {
+               name: "cam_textblock_gl_align_left";
+               base: "font=SLP:style=Roman font_size=30 color=#000000 ellipise=1.0 wrap=mixed";
+               tag:  "br" "\n";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "tab" "\t";
+       }
+}
+   group { name: "elm/genlist/item/camera/1text.1icon/default";
+      alias: "elm/genlist/item_odd/camera/1text.1icon/default";
+      alias: "elm/genlist/item_compress/camera/1text.1icon/default";
+      alias: "elm/genlist/item_compress_odd/camera/1text.1icon/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text";
+      data.item: "contents" "elm.icon";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_104_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_34_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_14_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+                          min: 86 84;
+                          max: 86 84;
+                          aspect: 1.0 1.0;
+               rel1.to_x: "elm.padding.right";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+               }
+               align: 1 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         part { name: "elm.padding.icon.left";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_14_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.icon";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.icon";
+               }
+               align: 1.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.icon.left";
+               }
+               align: 0.0 0.5;
+               color: GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC;
+               text {
+                 style: "cam_textblock_gl_default";
+                  min: 0 0;
+                  max: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_1TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/camera/1text.2icon/default";
+   alias: "elm/genlist/item_odd/camera/1text.2icon/default";
+   alias: "elm/genlist/item_compress/camera/1text.2icon/default";
+   alias: "elm/genlist/item_compress_odd/camera/1text.2icon/default";
+   data.item: "stacking" "above";
+   data.item: "selectraise" "on";
+   data.item: "texts" "elm.text";
+   data.item: "contents" "elm.icon elm.radio";
+   data.item: "flips" "elm.flip.content";
+
+   parts {
+      GENLIST_PART_BASE( GENLIST_HEIGHT_104_INC )
+      GENLIST_PART_BG_IMAGE
+      GENLIST_PART_BOTTOM_LINE
+      GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_14_INC )
+      GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_14_INC )
+      part { name: "elm.radio";
+        clip_to: "disclip";
+        type: SWALLOW;
+        scale: 1;
+        description { state: "default" 0.0;
+           fixed: 1 1;
+                       min: 86 70;
+                       max: 86 70;
+                       aspect: 1.0 1.0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.padding.left";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.padding.left";
+           }
+           align: 0 0.5;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+     part { name: "elm.padding.radio.right";
+        clip_to: "disclip";
+        type: RECT;
+        scale: 1;
+        description { state: "default" 0.0;
+           min: GENLIST_PADDING_14_INC 0;
+           fixed: 1 0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.radio";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.radio";
+           }
+           align: 0.0 0.0;
+           visible: 0;
+        }
+      }
+      part { name: "elm.icon";
+        clip_to: "disclip";
+        type: SWALLOW;
+        scale: 1;
+        description { state: "default" 0.0;
+           fixed: 1 1;
+                       min: 86 84;
+                       max: 86 84;
+                       aspect: 1.0 1.0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.padding.radio.right";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.padding.radio.right";
+           }
+           align: 0 0.5;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+
+     part { name: "elm.padding.icon.right";
+        clip_to: "disclip";
+        type: RECT;
+        scale: 1;
+        description { state: "default" 0.0;
+           min: GENLIST_PADDING_28_INC 0;
+           fixed: 1 0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.icon";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.icon";
+           }
+           align: 0.0 0.0;
+           visible: 0;
+        }
+      }
+      part { name: "elm.text";
+        clip_to: "disclip";
+        type: TEXTBLOCK;
+        mouse_events: 0;
+        scale: 1;
+        description { state: "default" 0.0;
+           rel1 {
+              relative: 1.0 0.0;
+              to_x: "elm.padding.icon.right";
+           }
+           rel2 {
+              relative: 0.0 1.0;
+              to_x: "elm.padding.right";
+           }
+           align: 0.0 0.5;
+           color: GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC;
+           text {
+                 style: "cam_textblock_gl_default";
+                  min: 0 0;
+                  max: 0 1;
+                  align: 0.0 0.5;
+           }
+        }
+        description { state: "selected" 0.0;
+           inherit: "default" 0.0;
+           color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+      GENLIST_PART_FLIP
+      GENLIST_PART_DISCLIP
+   }
+   programs {
+      program { name: "go_active";
+        signal: "elm,state,selected";
+        source: "elm";
+        action: STATE_SET "selected" 0.0;
+        target: "bg_image";
+        target: "elm.text";
+      }
+      program { name: "go_passive";
+        signal: "elm,state,unselected";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "bg_image";
+        target: "elm.text";
+        transition: LINEAR 0.1;
+      }
+      program { name: "go_disabled";
+        signal: "elm,state,disabled";
+        source: "elm";
+        action: STATE_SET "disabled" 0.0;
+        target: "disclip";
+      }
+      program { name: "go_enabled";
+        signal: "elm,state,enabled";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "disclip";
+      }
+      GENLIST_PROGRAM_FLIP_1TEXT_1ICON
+   }
+}
+
+group { name: "elm/genlist/item/camera/1text.2icon.2/default";
+   alias: "elm/genlist/item_odd/camera/1text.2icon.2/default";
+   alias: "elm/genlist/item_compress/camera/1text.2icon.2/default";
+   alias: "elm/genlist/item_compress_odd/camera/1text.2icon.2/default";
+   data.item: "stacking" "above";
+   data.item: "selectraise" "on";
+   data.item: "texts" "elm.text";
+   data.item: "contents" "elm.icon elm.radio";
+   data.item: "flips" "elm.flip.content";
+
+   parts {
+      GENLIST_PART_BASE( GENLIST_HEIGHT_86_INC )
+      GENLIST_PART_BG_IMAGE
+      GENLIST_PART_BOTTOM_LINE
+      GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_14_INC )
+      GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_14_INC )
+      part { name: "elm.radio";
+        clip_to: "disclip";
+        type: SWALLOW;
+        scale: 1;
+        description { state: "default" 0.0;
+           fixed: 1 1;
+                       min: 86 70;
+                       max: 86 70;
+                       aspect: 1.0 1.0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.padding.left";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.padding.left";
+           }
+           align: 0 0.5;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+     part { name: "elm.padding.radio.right";
+        clip_to: "disclip";
+        type: RECT;
+        scale: 1;
+        description { state: "default" 0.0;
+           min: GENLIST_PADDING_14_INC 0;
+           fixed: 1 0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.radio";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.radio";
+           }
+           align: 0.0 0.0;
+           visible: 0;
+        }
+      }
+      part { name: "elm.icon";
+        clip_to: "disclip";
+        type: SWALLOW;
+        scale: 1;
+        description { state: "default" 0.0;
+           fixed: 1 1;
+                       min: 86 84;
+                       max: 86 84;
+                       aspect: 1.0 1.0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.padding.radio.right";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.padding.radio.right";
+           }
+           align: 0 0.5;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+
+     part { name: "elm.padding.icon.right";
+        clip_to: "disclip";
+        type: RECT;
+        scale: 1;
+        description { state: "default" 0.0;
+           min: GENLIST_PADDING_28_INC 0;
+           fixed: 1 0;
+           rel1 {
+               relative: 1.0 0.0;
+               to_x: "elm.icon";
+           }
+           rel2 {
+              relative: 1.0 1.0;
+              to_x: "elm.icon";
+           }
+           align: 0.0 0.0;
+           visible: 0;
+        }
+      }
+      part { name: "elm.text";
+        clip_to: "disclip";
+        type: TEXT;
+        mouse_events: 0;
+        scale: 1;
+        description { state: "default" 0.0;
+           rel1 {
+              relative: 1.0 0.0;
+              to_x: "elm.padding.icon.right";
+           }
+           rel2 {
+              relative: 0.0 1.0;
+              to_x: "elm.padding.right";
+           }
+           align: 0.0 0.5;
+           color: GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC;
+           text {
+                 style: "btn_multiline_naviframe_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+                  align: 0.0 0.5;
+           }
+        }
+        description { state: "selected" 0.0;
+           inherit: "default" 0.0;
+           color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+        }
+        GENLIST_DESCRIPTION_FLIP_ENABLED
+      }
+      GENLIST_PART_FLIP
+      GENLIST_PART_DISCLIP
+   }
+   programs {
+      program { name: "go_active";
+        signal: "elm,state,selected";
+        source: "elm";
+        action: STATE_SET "selected" 0.0;
+        target: "bg_image";
+        target: "elm.text";
+      }
+      program { name: "go_passive";
+        signal: "elm,state,unselected";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "bg_image";
+        target: "elm.text";
+        transition: LINEAR 0.1;
+      }
+      program { name: "go_disabled";
+        signal: "elm,state,disabled";
+        source: "elm";
+        action: STATE_SET "disabled" 0.0;
+        target: "disclip";
+      }
+      program { name: "go_enabled";
+        signal: "elm,state,enabled";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "disclip";
+      }
+      GENLIST_PROGRAM_FLIP_1TEXT_1ICON
+   }
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/check/base/genlist/on&off";
+      data {
+         item: "label_1" "text.on On";
+         item: "label_2" "text.off Off";
+      }
+      images {
+         image: SETTING_POPUP_CHECK_BUTTON_ON_IMAGE  COMP;
+         image: SETTING_POPUP_CHECK_BUTTON_OFF_IMAGE  COMP;
+      }
+      parts {
+         part { name: "bg";
+            scale: 1;
+            type: RECT;
+            clip_to: "disclip";
+            description { state: "default" 0.0;
+               rel2.relative: 0.0 1.0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+              min: 86 84;
+              max: 86 84;
+
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "check";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "disclip";
+            description { state: "default" 0.0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+              fixed: 1 0;
+              min: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
+               max: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
+              align: 0.5 0.5;
+               image {
+                  normal: SETTING_POPUP_CHECK_BUTTON_OFF_IMAGE ;
+                  border: CHECK_ONOFF_CHECK_IMAGE_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               image.normal: SETTING_POPUP_CHECK_BUTTON_ON_IMAGE ;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+               image.normal: SETTING_POPUP_CHECK_BUTTON_OFF_IMAGE ;
+            }
+            description { state: "visible_pressed" 0.0;
+               inherit: "default" 0.0;
+               image.normal: SETTING_POPUP_CHECK_BUTTON_ON_IMAGE ;
+            }
+         }
+         part { name: "text.on";
+            type: TEXT;
+            mouse_events: 0;
+            clip_to: "disclip";
+            scale:1;
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to: "check";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  to: "check";
+               }
+               text {
+                  font: "SLP:style=Medium";
+                  size: CHECK_ONOFF_ON_FONT_SIZE_INC;
+                  fit: 1 1;
+                  align: 0.2 0.5;
+                  size_range: 12 CHECK_ONOFF_ON_FONT_SIZE_INC;
+                  min: 0 0;
+                  text_class: "slp_medium";
+               }
+            }
+            description { state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible:1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.5;
+                  to: "check";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "check";
+               }
+               text {
+                  font: "SLP:style=Medium";
+                  size: CHECK_ONOFF_ON_FONT_SIZE_INC;
+                  align: 0.2 0.5;
+                  fit: 1 1;
+                  size_range: 12 CHECK_ONOFF_ON_FONT_SIZE_INC;
+                  min: 0 0;
+               }
+            }
+         }
+         part { name: "text.off";
+            type: TEXT;
+            mouse_events: 0;
+            clip_to: "disclip";
+            scale:1;
+            description { state: "default" 0.0;
+               color: 107 107 81 255;
+               rel1.to: "check";
+               rel2 {
+                  relative: 1.0 0.5;
+                  to: "check";
+               }
+               text {
+                  font: "SLP:style=Medium";
+                  size: CHECK_ONOFF_OFF_FONT_SIZE_INC;
+                  fit: 1 1;
+                  align: 0.2 0.5;
+                  size_range: 12 CHECK_ONOFF_OFF_FONT_SIZE_INC;
+                  min: 0 0;
+                  text_class: "slp_medium";
+               }
+            }
+            description { state: "off" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.5;
+                  to: "check";
+               }
+               rel2.to: "check";
+               text {
+                  font: "SLP:style=Medium";
+                  size: CHECK_ONOFF_OFF_FONT_SIZE_INC;
+                  align: 0.2 0.5;
+                  fit: 1 1;
+                  size_range: 12 CHECK_ONOFF_OFF_FONT_SIZE_INC;
+                  min: 0 0;
+               }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            clip_to: "disclip";
+            description { state: "default" 0.0;
+               fixed: 1 0;
+               visible: 0;
+               color: 255 255 255 255;
+               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;
+            scale: 1;
+            clip_to: "disclip";
+            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: "cam_textblock_gl_default";
+                  min: 0 0;
+                  max: 0 1;
+                  align: 0.0 0.5;
+               }
+               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;
+            }
+         }
+         part { name: "events";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 64;
+            }
+         }
+         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: "click";
+            signal: "mouse,up,1";
+            source: "events";
+            action: SIGNAL_EMIT "elm,action,check,toggle" "";
+         }
+         program { name: "pressed";
+            signal: "mouse,down,1";
+            source: "events";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"check", "visible_pressed", 0.0);
+               else if (!strcmp(st, "default"))
+                 set_state(PART:"check", "pressed", 0.0);
+            }
+         }
+         program { name: "mouseout";
+            signal: "mouse,out";
+            source: "events";
+            after: "bg_check_normal";
+         }
+         program { name: "bg_check_normal";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "pressed"))
+                 set_state(PART:"check", "default", 0.0);
+               else if (!strcmp(st, "visible_pressed"))
+                 set_state(PART:"check", "visible", 0.0);
+            }
+         }
+         program { name: "check_on";
+            signal: "elm,state,check,on";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "check";
+            after:"text_off_off" ;
+         }
+         program { name: "text_off_off";
+            action: STATE_SET "off" 0.0;
+            target: "text.off";
+            after: "text_on";
+         }
+         program { name: "text_on";
+            action: STATE_SET "on" 0.0;
+            target: "text.on";
+         }
+         program { name: "check_off";
+            signal: "elm,state,check,off";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "check";
+            after: "text_on_off";
+         }
+         program { name: "text_on_off";
+            action: STATE_SET "default" 0.0;
+            target: "text.on";
+            after: "text_off";
+         }
+         program { name: "text_off";
+            action: STATE_SET "default" 0.0;
+            target: "text.off";
+         }
+         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";
+            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);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "disclip";
+            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);
+            }
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//end file
diff --git a/edc/style_label_camera.edc b/edc/style_label_camera.edc
new file mode 100755 (executable)
index 0000000..c7fb7be
--- /dev/null
@@ -0,0 +1,634 @@
+/*
+ * 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.
+ */
+
+
+
+#define TEXT_SLIDE_DURATION 10
+
+      styles {
+         style { name: "textblock_style";
+            base: "font=SLP:style=Medium font_size="LABEL_FONT_SIZE_INC" color="LABEL_TEXT_BLOCK_STYLE_COLOR_INC" text_class=slp_medium";
+            tag:  "br" "\n";
+            tag:  "ps" "ps";
+            tag:  "hilight" "+ font=SLP:style=Bold";
+            tag:  "b" "+ font=SLP:style=Bold";
+            tag:  "tab" "\t";
+         }
+      }
+
+      /* label doesn't use it */
+      styles {
+         style { name: "textblock_charwrap_style";
+base: "font=SLP:style=Medium font_size="LABEL_FONT_SIZE_INC" color="LABEL_TEXT_BLOCK_STYLE_COLOR_INC" text_class=slp_medium";
+            tag:  "br" "\n";
+            tag:  "ps" "ps";
+            tag:  "hilight" "+ font=SLP:style=Bold";
+            tag:  "b" "+ font=SLP:style=Bold";
+            tag:  "tab" "\t";
+         }
+      }
+
+collections {
+
+      group { name: "elm/label/base/default";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         parts {
+            part { name: "label.text.clip";
+               type: RECT;
+               description { state: "default" 0.0;
+               }
+            }
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               scale: 1;
+               clip_to: "label.text.clip";
+               description { state: "default" 0.0;
+                  text {
+                     style: "textblock_style";
+                     min: 0 1;
+                     align: 0.0 0.0;
+                  }
+               }
+            }
+         }
+      }
+
+      /* default label doesn't use it */
+      group { name: "elm/label/base_wrap/default";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         parts {
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 1;
+               scale: 1;
+               multiline: 1;
+               description { state: "default" 0.0;
+                  text {
+                       style: "textblock_style";
+                       min: 0 1;
+                       align: 0.0 0.0;
+                  }
+               }
+               description { state: "charwrap_mode" 0.0;
+                  text {
+                     style: "textblock_charwrap_style";
+                     min: 0 1;
+                     align: 0.0 0.0;
+                  }
+               }
+            }
+         }
+         programs {
+            program { name: "default_on";
+               signal: "elm,state,default";
+               source: "elm";
+               action: STATE_SET "default" 0.0;
+               target: "elm.text";
+            }
+            program { name: "charwrap_on";
+               signal: "elm,state,charwrap";
+               source: "elm";
+               action: STATE_SET "charwrap_mode" 0.0;
+               target: "elm.text";
+            }
+         } // end programs
+      } // end group
+
+      /* default label doesn't use it */
+      group { name: "elm/label/base_wrap_ellipsis/default";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         parts {
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               multiline: 1;
+               description { state: "default" 0.0;
+                  // FIXME : fixed for multiline ellipsis.
+                  //         does it need to make another ellipsis style?
+                  fixed: 0 1;
+                  text {
+                     style: "textblock_style";
+                     min: 0 1;
+                     align: 0.0 0.0;
+                  }
+               }
+               description { state: "charwrap_mode" 0.0;
+                  // FIXME : fixed for multiline ellipsis.
+                  //         does it need to make another ellipsis style?
+                  fixed: 0 1;
+                  text {
+                     style: "textblock_charwrap_style";
+                     min: 0 1;
+                     align: 0.0 0.0;
+                  }
+               }
+            }
+         }
+         programs {
+            program { name: "default_on";
+               signal: "elm,state,default";
+               source: "elm";
+               action: STATE_SET "default" 0.0;
+               target: "elm.text";
+            }
+            program { name: "charwrap_on";
+               signal: "elm,state,charwrap";
+               source: "elm";
+               action: STATE_SET "charwrap_mode" 0.0;
+               target: "elm.text";
+            }
+         } // end programs
+      } // end group
+
+      group { name: "elm/label/base/marker";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         styles {
+            style { name: "textblock_style2";
+               base: "font=SLP:style=Bold font_size=14 align=center color=#fff wrap=word text_class=slp_bold";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "hilight" "+ color=#ffff";
+               tag:  "b" "+ color=#ffff";
+               tag:  "tab" "\t";
+            }
+         }
+         parts {
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  text {
+                     style: "textblock_style2";
+                     min: 1 1;
+                     align: 0.0 0.0;
+                  }
+               }
+            }
+         }
+      }
+
+      /* default label doesn't use it */
+      group { name: "elm/label/base_wrap/marker";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         parts {
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               multiline: 1;
+               description { state: "default" 0.0;
+                  text {
+                     style: "textblock_style2";
+                     min: 1 1;
+                     align: 0.0 0.0;
+                  }
+               }
+            }
+         }
+      }
+
+      group { name: "elm/label/base/titlebar/default";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         parts {
+            part { name: "elm.text";
+               type: TEXT;
+               effect: SHADOW;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  text {
+                     font: "SLP:style=Bold";
+                     size: 28;
+                     min: 0 0;
+                     align: 0.0 0.5;
+                     text: "slp";
+                  }
+                  color2: 0 0 0 255;
+               }
+            }
+         }
+      }
+
+      group { name: "elm/label/base/titlebar/header";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+         styles {
+            style { name: "header_textblock_style";
+               base: "font=SLP:style=Medium font_size=34 color=#ffffff wrap=mixed";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "tab" "\t";
+               tag:  "em" "+ font=SLP:style=Oblique";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+            }
+         }
+
+         parts {
+            part { name: "elm.text";
+               type: TEXT;
+               effect: SHADOW;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  text {
+                     font:     "SLP:style=Medium";
+                     size:     34;
+                     min:      0 0;
+                     align:    0.0 0.5;
+                     text: "slp";
+                  }
+                  color2: 0 0 0 255;
+               }
+            }
+         }
+      }
+
+
+      group { name: "elm/label/base/slide_long";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+
+         script {
+            public g_duration, g_stopslide, g_timer_id, g_anim_id;
+
+            public message(Msg_Type:type, id, ...) {
+               if ((type == MSG_FLOAT_SET) && (id == 0)) {
+                  new Float:duration;
+                  duration = getfarg(2);
+                  set_float(g_duration, duration);
+               }
+            }
+            public slide_to_end_anim(val, Float:pos) {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+               if (pos >= 1.0) {
+                  id = timer(0.5, "slide_to_begin", 1);
+                  set_int(g_timer_id, id);
+               }
+            }
+            public slide_to_end() {
+               new stopflag;
+               new id;
+               new Float:duration;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               duration = get_float(g_duration);
+               id = anim(duration, "slide_to_end_anim", 1);
+               set_int(g_anim_id, id);
+            }
+            public slide_to_begin() {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_state(PART:"elm.text", "slide_begin", 0.0);
+               id = timer(0.5, "slide_to_end", 1);
+               set_int(g_timer_id, id);
+            }
+            public start_slide() {
+               set_int(g_stopslide, 0);
+               set_state(PART:"elm.text", "slide_begin", 0.0);
+               slide_to_end();
+            }
+            public stop_slide() {
+               new id;
+               set_int(g_stopslide, 1);
+               id = get_int(g_anim_id);
+               cancel_anim(id);
+               id = get_int(g_timer_id);
+               cancel_timer(id);
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+
+         parts {
+            part { name: "label.text.clip";
+               type: RECT;
+               description { state: "default" 0.0;
+               }
+            }
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               clip_to: "label.text.clip";
+               description { state: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 0.0 0.0;
+                  text {
+                     style: "textblock_style";
+                     min: 1 1;
+                     align: 0.0 0.0;
+                  }
+               }
+               description { state: "slide_end" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 0.0 1.0;
+                  align: 1.0 0.0;
+               }
+               description { state: "slide_begin" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 1.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 0.0 0.0;
+               }
+            }
+         }
+         programs {
+            program { name: "start_slide";
+               source: "elm";
+               signal: "elm,state,slide,start";
+               script {
+                  start_slide();
+               }
+            }
+            program { name: "stop_slide";
+               source: "elm";
+               signal: "elm,state,slide,stop";
+               script {
+                  stop_slide();
+               }
+            }
+         }
+      }
+
+
+      group { name: "elm/label/base/slide_short";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+
+         script {
+            public g_duration, g_stopslide, g_timer_id, g_anim_id;
+
+            public message(Msg_Type:type, id, ...) {
+               if ((type == MSG_FLOAT_SET) && (id == 0)) {
+                  new Float:duration;
+                  duration = getfarg(2);
+                  set_float(g_duration, duration);
+               }
+            }
+            public slide_to_end_anim(val, Float:pos) {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+               if (pos >= 1.0) {
+                  id = timer(0.5, "slide_to_begin", 1);
+                  set_int(g_timer_id, id);
+               }
+            }
+            public slide_to_end() {
+               new stopflag;
+               new id;
+               new Float:duration;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               duration = get_float(g_duration);
+               id = anim(duration, "slide_to_end_anim", 1);
+               set_int(g_anim_id, id);
+            }
+            public slide_to_begin() {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_state(PART:"elm.text", "slide_begin", 0.0);
+               id = timer(0.5, "slide_to_end", 1);
+               set_int(g_timer_id, id);
+            }
+            public start_slide() {
+               set_int(g_stopslide, 0);
+               set_state(PART:"elm.text", "slide_begin", 0.0);
+               slide_to_end();
+            }
+            public stop_slide() {
+               new id;
+               set_int(g_stopslide, 1);
+               id = get_int(g_anim_id);
+               cancel_anim(id);
+               id = get_int(g_timer_id);
+               cancel_timer(id);
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+
+         parts {
+            part { name: "label.text.clip";
+               type: RECT;
+               description { state: "default" 0.0;
+               }
+            }
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               clip_to: "label.text.clip";
+               description { state: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 0.0 0.0;
+                  text {
+                     style: "textblock_style";
+                     min: 1 1;
+                     align: 0.0 0.0;
+                  }
+               }
+               description { state: "slide_end" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 1.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 1.0 0.0;
+               }
+               description { state: "slide_begin" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 0.0 1.0;
+                  align: 0.0 0.0;
+               }
+            }
+         }
+         programs {
+            program { name: "start_slide";
+               source: "elm";
+               signal: "elm,state,slide,start";
+               script {
+                  start_slide();
+               }
+            }
+            program { name: "stop_slide";
+               source: "elm";
+               signal: "elm,state,slide,stop";
+               script {
+                  stop_slide();
+               }
+            }
+         }
+      }
+
+      group { name: "elm/label/base/slide_bounce";
+         data.item: "default_font_size" LABEL_FONT_SIZE_INC;
+         data.item: "min_font_size" LABEL_MIN_FONT_SIZE_INC;
+         data.item: "max_font_size" LABEL_MAX_FONT_SIZE_INC;
+
+         script {
+            public g_duration, g_stopslide, g_timer_id, g_anim_id;
+
+            public message(Msg_Type:type, id, ...) {
+               if ((type == MSG_FLOAT_SET) && (id == 0)) {
+                  new Float:duration;
+                  duration = getfarg(2);
+                  set_float(g_duration, duration);
+               }
+            }
+            public slide_to_end_anim(val, Float:pos) {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+               if (pos >= 1.0) {
+                  id = timer(0.5, "slide_to_begin", 1);
+                  set_int(g_timer_id, id);
+               }
+            }
+            public slide_to_end() {
+               new stopflag;
+               new id;
+               new Float:duration;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               duration = get_float(g_duration);
+               id = anim(duration, "slide_to_end_anim", 1);
+               set_int(g_anim_id, id);
+            }
+            public slide_to_begin_anim(val, Float:pos) {
+               new stopflag;
+               new id;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               set_tween_state(PART:"elm.text", pos, "slide_end", 0.0, "slide_begin", 0.0);
+               if (pos >= 1.0) {
+                  id = timer(0.5, "slide_to_end", 1);
+                  set_int(g_timer_id, id);
+               }
+            }
+            public slide_to_begin() {
+               new stopflag;
+               new id;
+               new Float:duration;
+               stopflag = get_int(g_stopslide);
+               if (stopflag == 1) return;
+               duration = get_float(g_duration);
+               id = anim(duration, "slide_to_begin_anim", 1);
+               set_int(g_anim_id, id);
+            }
+            public start_slide() {
+               set_int(g_stopslide, 0);
+               set_state(PART:"elm.text", "slide_begin", 0.0);
+               slide_to_end();
+            }
+            public stop_slide() {
+               new id;
+               set_int(g_stopslide, 1);
+               id = get_int(g_anim_id);
+               cancel_anim(id);
+               id = get_int(g_timer_id);
+               cancel_timer(id);
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+
+         parts {
+            part { name: "label.text.clip";
+               type: RECT;
+               description { state: "default" 0.0;
+               }
+            }
+            part { name: "elm.text";
+               type: TEXTBLOCK;
+               mouse_events: 0;
+               scale: 1;
+               clip_to: "label.text.clip";
+               description { state: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 0.0 0.0;
+                  text {
+                     style: "textblock_style";
+                     min: 1 1;
+                     align: 0.0 0.0;
+                  }
+               }
+               description { state: "slide_end" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 1.0 0.0;
+                  rel2.relative: 1.0 1.0;
+                  align: 1.0 0.0;
+               }
+               description { state: "slide_begin" 0.0;
+                  inherit: "default" 0.0;
+                  rel1.relative: 0.0 0.0;
+                  rel2.relative: 0.0 1.0;
+                  align: 0.0 0.0;
+               }
+            }
+         }
+         programs {
+            program { name: "start_slide";
+               source: "elm";
+               signal: "elm,state,slide,start";
+               script {
+                  start_slide();
+               }
+            }
+            program { name: "stop_slide";
+               source: "elm";
+               signal: "elm,state,slide,stop";
+               script {
+                  stop_slide();
+               }
+            }
+         }
+      }
+      /*note:button*/
+
+}
+//end file
diff --git a/edc/style_slider_camera.edc b/edc/style_slider_camera.edc
new file mode 100755 (executable)
index 0000000..0d2bd99
--- /dev/null
@@ -0,0 +1,488 @@
+/*
+ * 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 "../include/edc_image_name.h"
+#include "style_tizen_hd_inc.edc"
+
+images {
+       image: SLIDER_BAR_IMAGE COMP;
+       image: SLIDER_BAR_VER_IMAGE COMP;
+       image: SLIDER_HANDLER_IMAGE COMP;
+}
+
+collections {
+
+       group {
+               name: "elm/slider/vertical/camera";
+
+               parts {
+                       part {
+                               name: "base";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       max: 20 99999;
+                                       min: 6 0;
+                                       rel1 { to: "bg"; offset: 0 0; }
+                                       rel2 { to: "bg"; offset: -1 -1; }
+                                       image.normal: SLIDER_BAR_IMAGE;
+                                       fill.smooth: 0;
+                               }
+                       }
+                       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";
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.bar";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 58;
+                                       max: 20 9999;
+                                       align: 0.5 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.5 0.0;
+                                       rel1 { offset: 0 4; to_x: "elm.swallow.bar"; }
+                                       rel2 { offset: -1 3; relative: 1.0 0.0; to_x: "elm.swallow.bar"; }
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: HORIZONTAL;
+                                       rel2.offset: -1 4;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.end";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.5 1.0;
+                                       rel1 { offset: 0 -4; relative: 0.0 1.0; to_x: "elm.swallow.bar"; }
+                                       rel2 { offset: -1 -3; to_x: "elm.swallow.bar"; }
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: HORIZONTAL;
+                                       rel2.offset: -1 -4;
+                               }
+                       }
+                       part {
+                               name: "elm.dragable.slider";
+                               type: GROUP;
+                               source: "elm/slider/vertical/indicator/camera";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               dragable {
+                                       x: 0 0 0;
+                                       y: 1 1 0;
+                                       confine: "bg";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 20;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "disabler";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: SLIDER_DISABLER_PART_COLOR_INC;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }
+
+               programs {
+                       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:   "slider_disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disabler";
+                               after: "disable_ind";
+                       }
+                       program {
+                               name: "disable_ind";
+                               action: SIGNAL_EMIT "elm.dragable.slider:elm,state,disabled" "elm";
+                       }
+                       program {
+                               name: "slider_enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "disabler";
+                               after: "enable_ind";
+                       }
+                       program {
+                               name: "enable_ind";
+                               action: SIGNAL_EMIT "elm.dragable.slider:elm,state,enabled" "elm";
+                       }
+               }
+       }
+
+       group {
+               name: "elm/slider/vertical/indicator/camera";
+
+               parts {
+                       part {
+                               name: "button_events";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 60 60;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: VERTICAL;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "button0";
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 60 60;
+                                       image {
+                                               normal: SLIDER_HANDLER_IMAGE;
+                                       }
+                                       fill.smooth: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name: "slider_disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "button0";
+                       }
+                       program {
+                               name: "slider_enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "button0";
+                       }
+               }
+       }
+
+/*hor edc*/
+/////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/slider/horizontal/camera";
+
+               parts {
+                       part {
+                               name: "base";
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 6;
+                                       max: 99999 20;
+                                       rel1 { to: "bg"; offset: 0 0; }
+                                       rel2 { to: "bg"; offset: -1 -1; }
+                                       image.normal: SLIDER_BAR_VER_IMAGE;
+                                       fill.smooth: 0;
+                               }
+                       }
+                       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";
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.bar";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 58 20;
+                                       max: 99999 20;
+                                       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.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: "elm.dragable.slider";
+                               type: GROUP;
+                               source: "elm/slider/horizontal/indicator/camera";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 0 0 0;
+                                       confine: "bg";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 20;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "disabler";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       color: SLIDER_DISABLER_PART_COLOR_INC;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }
+
+               programs {
+                       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: "slider_disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disabler";
+                               after: "disable_ind";
+                       }
+                       program {
+                               name: "disable_ind";
+                               action: SIGNAL_EMIT "elm.dragable.slider:elm,state,disabled" "elm";
+                       }
+                       program {
+                               name: "slider_enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "disabler";
+                               after: "enable_ind";
+                       }
+                       program {
+                               name: "enable_ind";
+                               action: SIGNAL_EMIT "elm.dragable.slider:elm,state,enabled" "elm";
+                       }
+               }
+       }
+
+       group {
+               name: "elm/slider/horizontal/indicator/camera";
+
+               parts {
+                       part {
+                               name: "button_events";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 60 60;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: VERTICAL;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "button0";
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 60 60;
+                                       image {
+                                               normal: SLIDER_HANDLER_IMAGE;
+                                       }
+                                       fill.smooth: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+               }
+               programs {
+                       program { name: "slider_disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action:  STATE_SET "disabled" 0.0;
+                               target: "button0";
+                       }
+                       program { name: "slider_enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action:  STATE_SET "default" 0.0;
+                               target: "button0";
+                       }
+               }
+       }
+}
+
+//end file
+
diff --git a/edc/style_tizen_hd_inc.edc b/edc/style_tizen_hd_inc.edc
new file mode 100755 (executable)
index 0000000..a1c2d57
--- /dev/null
@@ -0,0 +1,1155 @@
+/*
+ * 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.
+ */
+
+
+#define BG_DEFAULT_COLOR_INC 249 249 249 255
+#define BG_EDIT_MODE_COLOR_INC 218 210 201 255
+#define BG_GROUP_LIST_COLOR_INC 242 238 233 255
+#define BG_TRANSPARENT_COLOR_INC 0 0 0 0
+
+#define LAYOUT_BG_COLOR_INC 249 249 249 255
+#define LAYOUT_EDIT_MODE_BG_COLOR_INC 218 210 201 255
+#define LAYOUT_GROUP_LIST_BG_COLOR_INC 242 238 233 255
+#define LAYOUT_INDICATOR_HEIGHT_INC 50
+#define LAYOUT_INDICATOR_COLOR_INC 0 0 0 255
+
+#define NAVIFRAME_TITLE_H_INC 108
+#define NAVIFRAME_SEGMENT_TITLE_H_INC 124
+#define NAVIFRAME_OH_OPENED_H_INC 106
+#define NAVIFRAME_OH_CONTENT_H_INC 74
+#define NAVIFRAME_OH_PADDING_INC 16
+#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12
+#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196
+#define NAVIFRAME_PREV_BTN_W_INC 124
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80
+#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144
+#define NAVIFRAME_TEXT_PADDING_INC 144
+#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52
+#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186
+#define NAVIFRAME_TITLE_SEGMENT_H_INC 64
+#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 32
+#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 40
+#define NAVIFRAME_SUBTITLE_FONT_SIZE_INC 32
+#define NAVIFRAME_ICON_SIZE_INC 32 32
+#define NAVIFRAME_ICON_PADDING_INC 16 0
+#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 100 85 66 255
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 73 44 7 255
+#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 73 44 7 255
+#define NAVIFRAME_TITLE_BG_COLOR_INC 219 201 174 255
+#define NAVIFRAME_OH_BORDER_INC 0 0 4 0
+
+#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28
+#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
+
+#define POPUP_DEFAULT_TITLE_TEXT_COLOR_INC 255 255 255 255
+#define POPUP_DEFAULT_DESCRIPTION_TEXT_COLOR_INC "#000000"
+#define POPUP_DIM_BG_COLOR_INC 61 59 56 204
+#define POPUP_DIM_BG_CLICKED_COLOR_INC 61 59 56 250
+#define POPUP_DIM_BG_TRANS_COLOR_INC 0 0 0 0
+#define POPUP_DIM_BG_CLICKED_TRANS_COLOR_INC 0 0 0 50
+#define POPUP_CUSTOMSTYLE_TITLE_BOTTOM_LINE_COLOR_INC 199 199 199 255
+#define POPUP_CUSTOMSTYLE_TITLE_TEXT_COLOR_INC 0 0 0 255
+
+#define CTXPOPUP_SEPARATOR_COLOR_INC 199 199 199 255
+#define CTXPOPUP_TP_BG_COLOR_INC 221 134 21 255
+#define CTXPOPUP_ITEM_TEXT_SIZE_INC 44
+#define CTXPOPUP_ITEM_HEIGHT_INC 110
+#define CTXPOPUP_ITEM_ICON_INC 160 110
+#define CTXPOPUP_ICON_WIDTH_INC 80
+#define CTXPOPUP_ICON_HEIGHT_INC 80
+#define CTXPOPUP_ARROW_SIZE_INC 48 48
+#define CTXPOPUP_CONTENT_WIDTH_MAX_INC 630
+#define CTXPOPUP_ITEM_PADDING_INC 25
+#define CTXPOPUP_IE_ARROW_SIZE_INC 52
+#define CTXPOPUP_IE_FONT_SIZE_INC 40
+#define CTXPOPUP_IE_ITEM_PADDING_INC 22
+#define CTXPOPUP_IE_ITEM_HEIGHT_INC 75
+#define CTXPOPUP_IE_CONTENT_WIDTH_MAX_INC 720
+#define CTXPOPUP_IE_ICON_WIDTH_INC 60
+#define CTXPOPUP_IE_ICON_HEIGHT_INC 60
+#define CTXPOPUP_TP_ARROW_SIZE_INC 30
+#define CTXPOPUP_TP_HEIGHT_INC 106
+
+#define DISKSELECTOR_DF_FONT_COLOR_INC         231 171 92 255
+#define DISKSELECTOR_DF_FONT_MOUSE_DOWN_COLOR_INC 255 201 122 255
+#define DISKSELECTOR_DF_ITEM_MIN_SIZE_INC      70 106;
+#define DISKSELECTOR_DF_FONT_SIZE_INC          44
+#define DISKSELECTOR_DF_DATA_MIN_HEIGHT_INC    "106"
+
+#define LABEL_TEXT_BLOCK_STYLE_COLOR_INC "#000000"
+#define LABEL_FONT_SIZE_INC 36
+#define LABEL_MIN_FONT_SIZE_INC 27
+#define LABEL_MAX_FONT_SIZE_INC 90
+
+#define GENGRID_FONT_STYLE_18_INC "26"
+#define GENGRID_PART_BG_COLOR_INC 0 0 0 0
+#define GENGRID_PART_ITEM_BG_COLOR_INC 239 239 239 255
+#define GENGRID_PART_REORDER_BG_COLOR_INC 0 0 0 128
+#define GENGRID_PART_TEXTBLOCK_STYLE_COLOR_INC "#F9F9F9"
+
+#define GENLIST_HEIGHT_1_INC 1
+#define GENLIST_HEIGHT_16_INC 16
+#define GENLIST_HEIGHT_33_INC 33
+#define GENLIST_HEIGHT_49_INC 49
+#define GENLIST_HEIGHT_62_INC 62
+#define GENLIST_HEIGHT_65_INC 65
+#define GENLIST_HEIGHT_73_INC 73
+#define GENLIST_HEIGHT_77_INC 77
+#define GENLIST_HEIGHT_86_INC 86
+#define GENLIST_HEIGHT_89_INC 89
+#define GENLIST_HEIGHT_93_INC 93
+#define GENLIST_HEIGHT_97_INC 97
+#define GENLIST_HEIGHT_103_INC 103
+#define GENLIST_HEIGHT_104_INC 104
+#define GENLIST_HEIGHT_113_INC 113
+#define GENLIST_HEIGHT_129_INC 129
+#define GENLIST_HEIGHT_177_INC 177
+#define GENLIST_HEIGHT_182_INC 182
+#define GENLIST_HEIGHT_190_INC 190
+#define GENLIST_HEIGHT_207_INC 207
+#define GENLIST_HEIGHT_260_INC 260
+#define GENLIST_HEIGHT_291_INC 291
+#define GENLIST_HEIGHT_454_INC 454
+#define GENLIST_HEIGHT_566_INC 566
+
+#define GENLIST_PADDING_4_INC 4
+#define GENLIST_PADDING_5_INC 5
+#define GENLIST_PADDING_6_INC 6
+#define GENLIST_PADDING_8_INC 8
+#define GENLIST_PADDING_10_INC 10
+#define GENLIST_PADDING_11_INC 11
+#define GENLIST_PADDING_12_INC 12
+#define GENLIST_PADDING_13_INC 13
+#define GENLIST_PADDING_14_INC 14
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_PADDING_18_INC 18
+#define GENLIST_PADDING_21_INC 21
+#define GENLIST_PADDING_22_INC 22
+#define GENLIST_PADDING_24_INC 24
+#define GENLIST_PADDING_27_INC 27
+#define GENLIST_PADDING_28_INC 28
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PADDING_34_INC 34
+#define GENLIST_PADDING_46_INC 46
+#define GENLIST_PADDING_48_INC 48
+#define GENLIST_PADDING_64_INC 64
+#define GENLIST_PADDING_74_INC 74
+#define GENLIST_PADDING_88_INC 88
+#define GENLIST_PADDING_124_INC 124
+
+#define GENLIST_FONT_27_INC 27
+#define GENLIST_FONT_28_INC 28
+#define GENLIST_FONT_30_INC 30
+#define GENLIST_FONT_32_INC 32
+#define GENLIST_FONT_STYLE_32_INC "32"
+#define GENLIST_FONT_36_INC 36
+#define GENLIST_FONT_STYLE_36_INC "36"
+#define GENLIST_FONT_40_INC 40
+#define GENLIST_FONT_STYLE_40_INC "40"
+#define GENLIST_FONT_42_INC 42
+#define GENLIST_FONT_STYLE_42_INC "42"
+#define GENLIST_FONT_44_INC 44
+#define GENLIST_FONT_STYLE_44_INC "44"
+#define GENLIST_FONT_48_INC 48
+#define GENLIST_FONT_STYLE_48_INC "48"
+
+#define GENLIST_SIZE_6_INC 6
+#define GENLIST_SIZE_8_INC 8
+#define GENLIST_SIZE_10_INC 10
+#define GENLIST_SIZE_13_INC 13
+#define GENLIST_SIZE_16_INC 16
+#define GENLIST_SIZE_18_INC 18
+#define GENLIST_SIZE_21_INC 21
+#define GENLIST_SIZE_32_INC 32
+#define GENLIST_SIZE_35_INC 35
+#define GENLIST_SIZE_38_INC 38
+#define GENLIST_SIZE_40_INC 40
+#define GENLIST_SIZE_42_INC 42
+#define GENLIST_SIZE_44_INC 44
+#define GENLIST_SIZE_45_INC 45
+#define GENLIST_SIZE_46_INC 46
+#define GENLIST_SIZE_48_INC 48
+#define GENLIST_SIZE_54_INC 54
+#define GENLIST_SIZE_56_INC 56
+#define GENLIST_SIZE_57_INC 57
+#define GENLIST_SIZE_61_INC 61
+#define GENLIST_SIZE_SLIDE_60_INC 60
+#define GENLIST_SIZE_64_INC 64
+#define GENLIST_SIZE_80_INC 80
+#define GENLIST_SIZE_90_INC 90
+#define GENLIST_SIZE_96_INC 96
+#define GENLIST_SIZE_112_INC 112
+#define GENLIST_SIZE_116_INC 116
+#define GENLIST_SIZE_128_INC 128
+#define GENLIST_SIZE_133_INC 133
+#define GENLIST_SIZE_141_INC 141
+#define GENLIST_SIZE_144_INC 144
+#define GENLIST_SIZE_154_INC 154
+#define GENLIST_SIZE_160_INC 160
+#define GENLIST_SIZE_163_INC 163
+#define GENLIST_SIZE_168_INC 168
+#define GENLIST_SIZE_174_INC 174
+#define GENLIST_SIZE_SLIDE_165_INC 165
+#define GENLIST_SIZE_176_INC 176
+#define GENLIST_SIZE_177_INC 177
+#define GENLIST_SIZE_192_INC 192
+#define GENLIST_SIZE_195_INC 195
+#define GENLIST_SIZE_206_INC 206
+#define GENLIST_SIZE_234_INC 234
+#define GENLIST_SIZE_235_INC 235
+#define GENLIST_SIZE_SLIDE_220_INC 220
+#define GENLIST_SIZE_390_INC 390
+#define GENLIST_SIZE_448_INC 448
+#define GENLIST_SIZE_560_INC 560
+#define GENLIST_SIZE_576_INC 576
+#define GENLIST_SIZE_672_INC 672
+
+#define GENLIST_TREESIZE_16_INC 16
+#define GENLIST_TREESIZE_32_INC 32
+
+//new
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_READ_COLOR_INC 158 158 158 255
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 129 129 129 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_SETTINGS_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_COLOR_INC 149 149 149 255
+#define GENLIST_PART_FONT_INDEX_LIST_COLOR_INC 164 164 164 255
+#define GENLIST_PART_FONT_EDITFIELD_TEXT_COLOR_INC 70 70 70 255
+#define GENLIST_PART_FONT_EDITFIELD_TEXT_CURSOR_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_MULTILINE_TEXT_COLOR_INC 149 149 149 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_COLOR_INC 104 137 152 255
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONVERTOR_STYLE_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONVERTOR_STYLE_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_UNREAD_EMAIL_COLOR_INC 249 249 249 255
+#define GENLIST_PART_FONT_CONTENTS_TEXT_COLOR_INC 210 210 210 255
+#define GENLIST_PART_FONT_NAME_TEXT_COLOR_INC 129 129 129 255
+#define GENLIST_PART_FONT_NAME_TEXT_DIM_COLOR_INC 0 140 210 255
+#define GENLIST_PART_FONT_BUBBLE_READ_MESSAGE_COLOR_INC 0 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_TIME_COLOR_INC 96 96 96 255
+#define GENLIST_PART_FONT_BUBBLE_SENT_MESSAGE_COLOR_INC 0 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_SOS_MESSAGE_COLOR_INC 211 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_DATE_COLOR_INC 164 164 164 255
+#define GENLIST_PART_FONT_BUBBLE_LINK_MESSAGE_COLOR_INC 34 129 157 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_FAILED_COLOR_INC 211 0 0 255
+#define GENLIST_PART_FONT_BUBBLE_READ_MESSAGE_NAME_COLOR_INC 57 166 215 255
+#define GENLIST_PART_FONT_BUBBLE_MESSAGE_HELP_COLOR_INC 146 146 146 255
+#define GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC 118 118 118 255
+
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC "#646464FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC "#646464FF"
+#define GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC "#646464FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_STYLE_COLOR_INC "#9E9E9EFF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC "#688998FF"
+#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC "#929292FF"
+
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 64
+#define GENLIST_PART_BG_COLOR_INC 0 0 0 0
+#define GENLIST_PART_LIST_BG_COLOR_INC 0 0 0 0
+#define GENLIST_PART_LIST_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255
+#define GENLIST_PART_TEXT_PRESS_COLOR_INC 249 249 249 255
+#define GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC 31 31 31 255
+#define GENLIST_PART_EXPANDABLE_3ND_DEPTH_BG_COLOR_INC 46 46 46 255
+#define GENLIST_PART_EDIT_SELECT_ALL_BG_COLOR_INC 36 36 36 255
+#define GENLIST_PART_EDIT_REORDER_BG_COLOR_INC 36 36 36 255
+#define GENLIST_PART_EDIT_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_PART_BUBBLE_DATE_BG_COLOR_INC 66 66 66 255
+#define GENLIST_PART_BUBBLE_1PIXEL_LINE_COLOR_INC 153 153 153 255
+#define GENLIST_PART_INDEX_LIST_BASE_EVENT_INC \
+         part { name: "base_event";\
+            type: RECT;\
+            repeat_events: 0;\
+            description { state: "default" 0.0;\
+               color: 0 0 0 0;\
+            }\
+         }
+#define GENLIST_PART_INDEX_LIST_BASE_IMAGE_INC \
+         part { name: "base_image";\
+            repeat_events: 1;\
+            description { state: "default" 0.0;\
+               rel1.to: "rect";\
+               rel2.to: "rect";\
+               image {\
+                  normal: "00_index list_bg.png";\
+               }\
+            }\
+         }
+
+#define GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC "#F9F9F9FF"
+#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#31A1FF"
+
+#define GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC 102 102 102 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_COLOR_INC 153 153 153 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_COLOR_INC 63 141 173 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_DIM_COLOR_INC 63 141 173 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_02_FOCUS_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_MAIN_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_TEXT_SUB_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_NAME_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_APPS_INC_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_RATING_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_ORIGINAL_COLOR_INC 0 140 210 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_SALE_COLOR_INC 221 134 21 255
+#define GENLIST_DIALOGUE_FONT_APPS_PRICE_FREE_COLOR_INC 0 140 210 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_TITLE_COLOR_INC 153 153 153 255
+#define GENLIST_DIALOGUE_FONT_PASSWORD_INPUT_TEXT_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_WORD_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_PRONUNCIATION_COLOR_INC 152 89 0 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_NATION_COLOR_INC 146 146 146 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_01_COLOR_INC 249 249 249 255
+#define GENLIST_DIALOGUE_FONT_DETAIL_INFO_02_COLOR_INC 146 146 146 255
+
+#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 36 36 36 255
+#define GENLIST_DIALOGUE_GROUP_LIST_BG_COLOR_INC 36 36 36 255
+#define GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_ICON_1PIXEL_LINE_COLOR_INC 68 68 68 255
+#define GENLIST_DIALOGUE_PHOTO_ID_1PIXEL_LINE_COLOR_INC 68 68 68 255
+
+//old
+#if 0
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 64
+#define GENLIST_PART_BG_COLOR_INC 249 249 249 255
+#define GENLIST_PART_BG_SELECTED_COLOR_INC 199 185 164 255
+#define GENLIST_PART_BG_UNSELECTED_COLOR_INC 199 185 164 0
+#define GENLIST_PART_DIALOGUE_BG_COLOR_INC 242 238 233 255
+#define GENLIST_PART_SELECT_ALL_BG_COLOR_INC 239 237 230 255
+#define GENLIST_PART_TEXT_COLOR_INC 0 0 0 255
+#define GENLIST_PART_TEXT_SELECTED_COLOR_INC 255 255 255 255
+#define GENLIST_PART_SUB_TEXT_COLOR_INC 108 108 108 255
+#define GENLIST_PART_SUB_TEXT_SETTINGS_COLOR_INC 226 144 1 255
+#define GENLIST_PART_MULTILINE_TEXT_COLOR_INC GENLIST_PART_TEXT_COLOR_INC
+#define GENLIST_PART_MULTILINE_TITLE_COLOR_INC 78 73 69 255
+#define GENLIST_PART_MULTILINE_TITLE_STYLE_COLOR_INC "#4E4E4EFF"
+#define GENLIST_PART_MULTILINE_TITLE_STYLE_SELECTED_COLOR_INC "#4E4E4EFF"
+#define GENLIST_PART_MULTILINE_TEXT_STYLE_COLOR_INC "#000000"
+#define GENLIST_PART_MULTILINE_SUB_TEXT_STYLE_COLOR_INC "#6C6C6C"
+#define GENLIST_PART_MULTILINE_TEXT_STYLE_SELECTED_COLOR_INC "#FFFFFF"
+#define GENLIST_PART_MULTILINE_HELP_STYLE_COLOR_INC "#9c8e7d"
+#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#31A1FF"
+#define GENLIST_PART_SLIDE_TEXT_COLOR_INC 255 255 255 255
+#define GENLIST_PART_BOTTOM_LINE_INC 199 199 199 255
+#define GENLIST_PART_DIALOGUE_SUBTITLE_TEXT_COLOR_INC 156 156 156 255
+#define GENLIST_PART_DIALOGUE_INDICATOR_BG_COLOR_INC 199 199 199 255
+#define GENLIST_PART_EMAIL_READ_TEXT_COLOR_INC 108 108 108 255
+#define GENLIST_PART_EMAIL_UNREAD_TEXT_COLOR_INC 0 0 0 255
+#define GENLIST_PART_EMAIL_URGENCY_UNREAD_TEXT_COLOR_INC 207 37 37 255
+#define GENLIST_PART_EMAIL_URGENCY_READ_TEXT_COLOR_INC 171 82 82 255
+#endif
+#define GENLIST_PART_EMAIL_MSGCOUNT_TEXT_COLOR_INC 255 255 255 255
+#define GENLIST_PART_TEXTBLOCK_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_TEXTBLOCK_STYLE_SELECTED_COLOR_INC "#FFFFFF"
+#define GENLIST_PART_TEXTBLOCK_READ_STYLE_COLOR_INC "#989898FF"
+#define GENLIST_PART_TEXTBLOCK_UNREAD_STYLE_COLOR_INC "#000000FF"
+#define GENLIST_PART_TEXTBLOCK_SUB_STYLE_COLOR_INC "#6C6C6C"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_READ_STYLE_COLOR_INC "#AB5252"
+#define GENLIST_PART_TEXTBLOCK_URGENCY_UNREAD_STYLE_COLOR_INC "#CF2525"
+#if 0
+#define GENLIST_GROUP_PART_TEXT_COLOR_INC 108 108 108 255
+#define GENLIST_GROUP_PART_BASE_EVENT_INC \
+         part { name: "base_event";\
+            type: RECT;\
+            repeat_events: 0;\
+            description { state: "default" 0.0;\
+               color: 0 0 0 0;\
+            }\
+         }
+#define GENLIST_GROUP_PART_BASE_IMAGE_INC \
+         part { name: "base_image";\
+            repeat_events: 1;\
+            description { state: "default" 0.0;\
+               rel1.to: "rect";\
+               rel2.to: "rect";\
+               image {\
+                  normal: "00_index list_bg.png";\
+               }\
+            }\
+         }
+#define GENLIST_GROUP_BG_COLOR_DEFAULT_INC 0 0 0 0
+#define GENLIST_GROUP_BG_COLOR_ALPHA_OFF_INC 0 0 0 0
+#define GENLIST_GROUP_LEFT_BG_COLOR_INC 210 206 191 255
+#define GENLIST_EDIT_PART_LINE_INC 187 187 187 150
+#define GENLIST_EDIT_PART_BOTTOM_LINE_INC 82 82 82 255
+#define GENLIST_EDIT_BG_COLOR_INC 234 230 217 255
+#define GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC 239 237 230 255
+#define GENLIST_EXPANDABLE_PART_BG_COLOR_INC GENLIST_PART_BG_COLOR_INC
+#define GENLIST_EXPANDABLE2_PART_BG_COLOR_INC 242 238 233 255
+#define GENLIST_EXPANDABLE3_PART_BG_COLOR_INC 218 212 205 255
+#define GENLIST_EXPANDABLE2_NOSHADOW_BG_COLOR_INC 242 238 233 255
+#define GENLIST_EXPANDABLE_PART_BG_IMAGE_INC \
+         part { name: "bg_image"; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               image { \
+                  normal: "00_list_expandable_bg.png"; \
+                  border: 0 0 12 6; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_list_bar_press_1x80.png"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+          }
+#define GENLIST_PART_BG_EXPANDABLE3_IMAGE_INC \
+         part { name: "bg_image"; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               image { \
+                  normal: "00_list_expandable_2_bg.png"; \
+                  border: 0 0 12 6; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_list_bar_press_1x80.png"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+#define GENLIST_EXPANDABLE3_PART_BG_IMAGE_INC \
+         part { name: "bg_image"; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               image { \
+                  normal: "00_list_expandable_2_bg.png"; \
+                  border: 0 0 12 6; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_list_bar_press_1x80.png"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+#define GENLIST_EXPANDABLE3_NOSHADOW_PART_BG_IMAGE_INC \
+         part { name: "bg_image"; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               image { \
+                  normal: "00_list_expandable_2_noshadow_bg.png"; \
+                  border: 0 0 0 6; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_list_bar_press_1x80.png"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+#define GENLIST_DIALOGUE_EXPANDABLE2_PART_BG_COLOR_INC 242 238 233 255
+#define GENLIST_DIALOGUE_EXPANDABLE3_PART_BG_COLOR_INC 218 212 205 255
+#define GENLIST_GROUP_PART_BUBBLE_TEXT_COLOR_INC 76 75 73 255
+#define GENLIST_GROUP_PART_BUBBLE_BG_COLOR_INC 220 211 198 255
+#define GENLIST_BUBBLE_BG_COLOR_INC 192 192 192 255
+#endif
+
+#define CONTACT_DISPLAY_NAME_FONT_COLOR_INC  0 0 0 255
+#define CONTACT_DISPLAY_NAME_FONT_GRAY_COLOR_INC 167 167 167 255
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 78 73 69 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 185 185 185 255
+#define BUTTON_TEXT_STYLE1_TEXT_DISABLED_COLOR_INC 160 151 1 255
+
+#define BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC 78 73 69 255
+#define BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC 185 185 185 255
+
+#define BUTTON_ICON_TEXT_NORMAL_COLOR_INC 90 73 40 255
+#define BUTTON_ICON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_ICON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_ICON_TEXT_DISABLED_COLOR_INC 154 144 123 255
+
+#define BUTTON_POPUP_BUTTON_TEXT_NORMAL_COLOR_INC 53 45 39 255
+#define BUTTON_POPUP_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_POPUP_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_POPUP_BUTTON_TEXT_DISABLED_COLOR_INC 87 87 87 255
+
+#define BUTTON_SWEEP_BUTTON_TEXT_NORMAL_COLOR_INC 78 73 69 255
+#define BUTTON_SWEEP_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_SWEEP_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_SWEEP_BUTTON_TEXT_DISABLED_COLOR_INC 185 185 185 255
+
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_NORMAL_COLOR_INC 78 73 69 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_DISABLED_COLOR_INC 185 185 185 255
+
+#define BUTTON_CONTACT_BUTTON_BG_NORMAL_COLOR_INC 195 160 107 255
+#define BUTTON_CONTACT_BUTTON_BG_PRESSED_COLOR_INC 103 79 43 255
+
+#define BUTTON_CONTACT_BUTTON_TEXT_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_DISABLED_COLOR_INC 255 255 255 255
+
+#define BUTTON_HIDDEN_BUTTON_TEXT_NORMAL_COLOR_INC 0 0 0 255
+#define BUTTON_HIDDEN_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_HIDDEN_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_HIDDEN_BUTTON_TEXT_DISABLED_COLOR_INC 154 144 123 255
+
+#define BUTTON_TEXT_CONTACTS_DELETE_NORMAL_COLOR_INC 207 41 41 255
+#define BUTTON_TEXT_CONTACTS_DELETE_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_CONTACTS_DELETE_DISABLED_COLOR_INC 0 0 0 128
+
+#define BUTTON_NUMBERED_TEXT_NORMAL_COLOR_INC 78 73 69 255
+
+#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC 28
+#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC "#f9f9f9"
+#define BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC 56 56
+
+#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 5 5 5 5
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 20 5
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32
+
+#define BUTTON_TEXT_STYLE2_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE2_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE2_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE2_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE2_PADDING_MIN_INC 5 5
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_FONT_SIZE_INC 32
+
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 64 64
+#define BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC 64 64
+#define BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC 35 35
+
+#define BUTTON_POPUP_BG_NORMAL_MIN_INC 30 74
+#define BUTTON_POPUP_BG_BORDER_INC 5 5 5 5
+#define BUTTON_POPUP_PADDING_MIN_INC 8 5
+#define BUTTON_POPUP_PADDING_ICON_TEXT_VISIBLE_MIN_INC 8 0
+#define BUTTON_POPUP_ICON_ICONONLY_MIN_INC 38 38
+#define BUTTON_POPUP_TEXT_MIN_INC 64 20
+#define BUTTON_POPUP_TEXT_FONT_SIZE_INC 32
+
+#define BUTTON_EDIT_STYLE_BG_NORMAL_MIN_MAX_INC 74 74
+#define BUTTON_EDIT_STYLE_IMAGE_NORMAL_MIN_MAX_INC 74 74
+#define BUTTON_EDIT_STYLE_BORDER_INC 8 0 5 5
+
+#define BUTTON_EDIT_NORMAL_MIN_WIDTH_INC 54
+#define BUTTON_EDIT_NORMAL_MIN_HEIGHT_INC 54
+#define BUTTON_EDIT_EXTENDED_MIN_WIDTH_INC 64
+#define BUTTON_EDIT_EXTENDED_MIN_HEIGHT_INC 80
+
+#define BUTTON_SWEEP_BG_NORMAL_MIN_INC 12 60
+#define BUTTON_SWEEP_BG_BORDER_INC 5 5 5 5
+#define BUTTON_SWEEP_PADDING_MIN_INC 5 5
+#define BUTTON_SWEEP_ICON_RECT_MIN_INC 0 28
+#define BUTTON_SWEEP_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_SWEEP_ICONONLY_ICON_MIN_INC 28 28
+#define BUTTON_SWEEP_TEXT_MIN_INC 90 28
+#define BUTTON_SWEEP_FONT_SIZE_INC 32
+
+#define BUTTON_SEARCHBAR_BG_NORMAL_MIN_INC 12 74
+#define BUTTON_SEARCHBAR_BG_BORDER_INC 6 6 6 6
+#define BUTTON_SEARCHBAR_PADDING_MIN_INC 5 5
+#define BUTTON_SEARCHBAR_ICON_RECT_MIN_INC 0 28
+#define BUTTON_SEARCHBAR_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_SEARCHBAR_ICONONLY_ICON_MIN_INC 28 28
+#define BUTTON_SEARCHBAR_TEXT_MIN_INC 90 28
+#define BUTTON_SEARCHBAR_FONT_SIZE_INC 32
+
+#define BUTTON_HIDDEN_BG_NORMAL_MIN_INC 12 60
+#define BUTTON_HIDDEN_BG_BORDER_INC 5 5 5 5
+#define BUTTON_HIDDEN_PADDING_MIN_INC 5 5
+#define BUTTON_HIDDEN_ICON_RECT_MIN_INC 0 28
+#define BUTTON_HIDDEN_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_HIDDEN_ICON_ICONONLY_MIN_INC 28 28
+#define BUTTON_HIDDEN_TEXT_MIN_INC 90 28
+#define BUTTON_HIDDEN_FONT_SIZE_INC 38
+
+#define BUTTON_EXPANDABLE_NUMBER_BG_NORMAL_MIN_MAX_INC 108 44
+#define BUTTON_EXPANDABLE_NUMBER_BG_BORDER_INC 5 5 5 5
+#define BUTTON_EXPANDABLE_NUMBER_PADDING_MIN_INC 16 1
+#define BUTTON_EXPANDABLE_NUMBER_ICON_RECT_EXPAND__MIN_MAX_INC 16 22
+#define BUTTON_EXPANDABLE_NUMBER_TEXT_MIN_MAX_INC 44 44
+#define BUTTON_EXPANDABLE_NUMBER_FONT_SIZE_INC 32
+
+#define BUTTON_CONTACT_DELETE_BG_NORMAL_MIN_INC 50 74
+#define BUTTON_CONTACT_DELETE_BG_BORDER_INC 8 0 5 5
+#define BUTTON_CONTACT_DELETE_PADDING_LEFT_TOP_MIN_INC 36 2
+#define BUTTON_CONTACT_DELETE_PADDING_RIGHT_BOTTOM_MIN_INC 14 2
+#define BUTTON_CONTACT_DELETE_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_CONTACT_DELETE_ICON_ICONONLY_MIN_INC 42 42
+#define BUTTON_CONTACT_DELETE_FONT_SIZE_INC 32
+
+#define BUTTON_CONTACT_BG_NORMAL_MIN_INC 66 44
+#define BUTTON_CONTACT_PADDING_MIN_INC 16 1
+#define BUTTON_CONTACT_FONT_SIZE_INC 38
+
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56
+
+#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255
+#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255
+
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 22 46
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4
+#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24
+
+#define BUTTON_NAVIFRAME_BG_MIN_INC 124 74
+#define BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC 124 74
+#define BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_NAVIFRAME_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_PADDING_MIN_INC 5 5
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC 28
+#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC 124 74
+
+#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 82 64
+#define BUTTON_NAVIFRAME_MORE_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 50 50
+
+#define BUTTON_TICKERNOTI_BG_MIN_INC 54 54
+#define BUTTON_TICKERNOTI_VISIBLE_BG_MIN_INC 62 34
+#define BUTTON_TICKERNOTI_ICONONLY_BG_MIN_INC 54 54
+#define BUTTON_TICKERNOTI_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TICKERNOTI_PADDING_MIN_INC 5 5
+#define BUTTON_TICKERNOTI_VISIBLE_ICON_RECT_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_VISIBLE_PADDING_ICON_TEXT_MIN_INC 8 0
+#define BUTTON_TICKERNOTI_VISIBLE_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_ICONONLY_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_FONT_SIZE_INC 28
+
+#define BUTTON_PICKER_TEXT_DEFAULT_COLOR_INC 78 73 69 255
+#define BUTTON_PICKER_TEXT_CLICKED_COLOR_INC 255 255 255 255
+#define BUTTON_PICKER_TEXT_DISABLED_COLOR_INC 0 0 0 128
+#define BUTTON_PICKER_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_BG_DEFAULT_MIN_INC 74 66
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_BG_DEFAULT_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_PADDING_MIN_INC 16 5
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_ICON_RECT_MIN_INC 0 56
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_PADDING_ICON_RECT_TEXT_MIN_INC 5 0
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_CONTENT_ICON_ONLY_MIN_INC 56 56
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_TEXT_FONT_SIZE_INC 32
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_TEXT_VISIBLE_MIN_INC 96 56
+
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_BG_DEFAULT_MIN_MAX_INC 74 66
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_BG_DEFAULT_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_PADDING_MIN_INC 5 5
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_IMAGE_MIN_MAX_INC 32 32
+
+#define BUTTON_PICKER_BAR_DEFAULT_BG_DEFAULT_MIN_INC 74 66
+#define BUTTON_PICKER_BAR_DEFAULT_BG_DEFAULT_IMAGE_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_BAR_DEFAULT_PADDING_MIN_INC 5 5
+#define BUTTON_PICKER_BAR_DEFAULT_ICON_RECT_DEFAULT_MIN_INC 0 56
+#define BUTTON_PICKER_BAR_DEFAULT_PADDING_ICON_RECT_TEXT_MIN_INC 5 0
+#define BUTTON_PICKER_BAR_DEFAULT_CONTENT_ICONONLY_MIN_INC 56 56
+#define BUTTON_PICKER_BAR_DEFAULT_TEXT_FONT_SIZE_INC 32
+#define BUTTON_PICKER_BAR_DEFAULT_TEXT_VISIBLE_MIN_INC 128 56
+
+#define BUTTON_COLORSELECTOR_BG_DEFAULT_MIN_INC 74 60
+
+#define BUTTON_DEFAULT_STYLE_BG_MIN_INC 28 74
+#define BUTTON_DEFAULT_STYLE_BG_BORDER_INC 5 5 5 5
+#define BUTTON_DEFAULT_STYLE_PADDING_MIN_INC 5 5
+#define BUTTON_DEFAULT_STYLE_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_DEFAULT_STYLE_ICONONLY_ICON_MIN_INC 38 38
+#define BUTTON_DEFAULT_STYLE_TEXT_MIN_INC 135 38
+#define BUTTON_DEFAULT_STYLE_FONT_SIZE_INC 32
+
+#define CHECK_DELETE_TEXT_DELETE_NORMAL_COLOR_INC 207 41 41 255
+#define CHECK_DELETE_TEXT_DELETE_PRESS_COLOR_INC 255 255 255 255
+
+#define CHECK_DEFAULT_TEXT_FONT_SIZE_INC 32
+
+#define CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC 60 80
+#define CHECK_ONOFF_CHECK_IMAGE_BORDER_INC 5 5 5 5
+#define CHECK_ONOFF_ON_FONT_SIZE_INC 24
+#define CHECK_ONOFF_OFF_FONT_SIZE_INC 24
+
+#define CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 64
+#define CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 64
+#define CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 64
+#define CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC 75
+#define CHECK_STYLE_FAVORITE_BG_NORMAL_MIN_MAX_INC 64 64
+
+#define CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 42
+#define CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 42
+#define CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 60
+#define CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC 75
+#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 42 42
+
+#define CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC 74 74
+#define CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC 124 74
+#define CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_BORDER_INC 8 0 5 5
+#define CHECK_STYLE_DELETE_BUTTON_TEXT_FONT_SIZE_INC 32
+
+#define INDEX_BG_NINEPATCH_INC 3 3 3 3
+#define INDEX_ITEM_WIDTH_INC 30
+#define INDEX_ITEM_HEIGHT_INC 30
+#define INDEX_LEVEL_PADDING_INC 70
+#define INDEX_1ST_LEVEL_POPUP_WIDTH_INC 138
+#define INDEX_2ND_LEVEL_POPUP_WIDTH_INC 168
+#define INDEX_POPUP_HEIGHT_INC 140
+#define INDEX_ROLLOVER_TEXT_SIZE_INC 22
+#define INDEX_POPUP_TEXT_SIZE_INC 78
+#define INDEX_POPUP_BG_NINEPATCH_INC 12 16 12 22
+#define INDEX_ROLLOVER_TEXT_COLOR_INC 93 93 93 255
+#define INDEX_ROLLOVER_ACTIVE_TEXT_COLOR_INC 58 60 9 255
+#define INDEX_POPUP_TEXT_COLOR_INC 88 83 79 255
+
+#define INDEX_PAGECONTROL_IND_INC 52 52
+#define INDEX_PAGECONTROL_IND_MIN_INC 24 24
+#define INDEX_PAGECONTROL_FONT_SIZE_INC 28
+#define INDEX_PAGECONTROL_FONT_COLOR_INC 120 120 120
+
+#define RADIO_STYLE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 42
+#define RADIO_STYLE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 42
+#define RADIO_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 50
+#define RADIO_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 50
+#define RADIO_STYLE_DEFAULT_BG_MIN_MAX_INC 42 42
+#define RADIO_STYLE_DEFAULT_FONT_SIZE_INC 32
+
+#define PANES_STYLE_DEFAULT_MOVABLE_SIZE_INC 48
+#define PANES_STYLE_DEFAULT_MIDDLE_SIZE_INC 44
+#define PANES_STYLE_DEFAULT_FIXED_SIZE_INC 6
+#define PANES_STYLE_DEFAULT_ARROW_SIZE_INC 55
+#define PANES_STYLE_DEFAULT_ARROW_FROM_INC 15
+#define PANES_STYLE_DEFAULT_ARROW_TO_INC 30
+
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_NORMAL_INC 244 212 174 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_PRESSED_INC 0 0 0 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_SELECTED_INC 0 0 0 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_DISABLED_INC 244 212 174 255
+#define SEGMENT_CONTROL_ITEM_1PX_LEFT_PADDING_COLOR_INC 172 112 16 255
+#define SEGMENT_CONTROL_ITEM_1PX_RIGHT_PADDING_COLOR_INC 201 114 54 255
+
+#define SEGMENT_CONTROL_BODY_STYLE_ITEM_TITLE_TEXT_COLOR_NORMAL_INC 149 145 136 255
+#define SEGMENT_CONTROL_BODY_STYLE_ITEM_TITLE_TEXT_COLOR_PRESSED_INC 255 255 255 255
+#define SEGMENT_CONTROL_BODY_STYLE_ITEM_TITLE_TEXT_COLOR_SELECTED_INC 255 255 255 255
+#define SEGMENT_CONTROL_BODY_STYLE_ITEM_TITLE_TEXT_COLOR_DISABLED_INC 149 145 136 255
+#define SEGMENT_CONTROL_BODY_ITEM_1PX_LEFT_PADDING_COLOR_INC 203 193 182 255
+#define SEGMENT_CONTROL_BODY_ITEM_1PX_RIGHT_PADDING_COLOR_INC 255 250 239 255
+
+#define SEGMENT_CONTROL_MULTILINE_TEXT_SIZE_INC 26
+#define SEGMENT_CONTROL_TEXT_SIZE_INC 28
+#define SEGMENT_CONTROL_TEXT_SIZE_RANGE_MIN_INC 12
+#define SEGMENT_CONTROL_TEXT_SIZE_RANGE_MAX_INC 28
+
+#define EDITFIELD_TITLE_SIZE_INC 32
+#define EDITFIELD_TITLE_COLOR_INC 73 73 73 255
+#define EDITFIELD_GUIDE_TEXT_COLOR_INC 189 189 189 255
+#define EDITFIELD_DEFAULT_ERASER_MINW_INC 48
+#define EDITFIELD_DEFAULT_ERASER_MINH_INC 48
+#define EDITFIELD_SEARCHBAR_ERASER_MINW_INC 38
+#define EDITFIELD_SEARCHBAR_ERASER_MINH_INC 38
+#define EDITFIELD_DEFAULT_MINH_INC 112
+#define EDITFIELD_SEARCHBAR_MINH_INC 50
+#define EDITFIELD_DEFAULT_TOP1_SINGLE_INC 20
+#define EDITFIELD_DEFAULT_TOP1_MULTI_INC 45
+#define EDITFIELD_DEFAULT_TOP2_INC 6
+#define EDITFIELD_DEFAULT_LEFT1_INC 0
+#define EDITFIELD_DEFAULT_LEFT2_INC 0
+#define EDITFIELD_DEFAULT_LEFT3_INC 1
+#define EDITFIELD_DEFAULT_RIGHT1_ERASER_SHOW_INC 56
+#define EDITFIELD_DEFAULT_RIGHT2_INC 0
+#define EDITFIELD_DEFAULT_BOTTOM1_SINGLE_INC 20
+#define EDITFIELD_DEFAULT_BOTTOM1_MULTI_INC 5
+#define EDITFIELD_DEFAULT_BOTTOM2_SINGLE_INC 32
+#define EDITFIELD_DEFAULT_BOTTOM2_MULTI_INC 12
+#define EDITFIELD_DEFAULT_BOTTOM3_SINGLE_INC 85
+#define EDITFIELD_DEFAULT_BOTTOM3_MULTI_INC 60
+#define EDITFIELD_SEARCHBAR_TOP1_SINGLE_INC 6
+#define EDITFIELD_SEARCHBAR_TOP1_MULTI_INC 10
+#define EDITFIELD_SEARCHBAR_TOP2_INC 10
+#define EDITFIELD_SEARCHBAR_LEFT1_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT2_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT3_INC 1
+#define EDITFIELD_SEARCHBAR_RIGHT1_ERASER_SHOW_INC 56
+#define EDITFIELD_SEARCHBAR_RIGHT2_INC 5
+#define EDITFIELD_SEARCHBAR_BOTTOM1_SINGLE_INC 8
+#define EDITFIELD_SEARCHBAR_BOTTOM1_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM2_SINGLE_INC 16
+#define EDITFIELD_SEARCHBAR_BOTTOM2_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM3_SINGLE_INC 50
+#define EDITFIELD_SEARCHBAR_BOTTOM3_MULTI_INC 50
+
+#define BUTTON_TICKERNOTI_NORMAL_COLOR_INC        255 255 255 255
+#define BUTTON_TICKERNOTI_PRESSED_COLOR_INC       255 255 255 255
+#define BUTTON_TICKERNOTI_DISABLED_COLOR_INC      185 185 185 255
+
+#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC        0 0 0 255
+#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC      255 255 255 255
+#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC          136 136 136 136
+
+#define RADIO_DEFAULT_TEXT_NORMAL_COLOR_INC        0 0 0 255
+#define RADIO_DEFAULT_TEXT_PRESSED_COLOR_INC      255 255 255 255
+#define RADIO_DEFAULT_TEXT_DISABLED_COLOR_INC          136 136 136 136
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+#define CONTROLBAR_WIDTH_INC 122
+#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 73 62 47 255
+#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 136 121 100 255
+
+#define MULTIBUTTONENTRY_NORMAL_BUTTON_COLOR_INC 195 160 107 255
+#define MULTIBUTTONENTRY_PRESSED_BUTTON_COLOR_INC 103 79 43 255
+#define MULTIBUTTONENTRY_LABEL_TEXT_COLOR_INC 0 0 0 255
+#define MULTIBUTTONENTRY_GUIDETEXT_COLOR_INC 189 189 189 255
+#define MULTIBUTTONENTRY_BUTTON_TEXT_COLOR_INC "#FFFFFF"
+#define MULTIBUTTONENTRY_WIDTH_PAD_INC 15
+#define MULTIBUTTONENTRY_HEIGHT_PAD_INC 20
+#define MULTIBUTTONENTRY_BUTTON_MAX_SIZE_INC 300
+#define MULTIBUTTONENTRY_BUTTON_BASE_SIZE_INC 66
+#define MULTIBUTTONENTRY_BUTTON_NINEPATCH_INC 5 5 0 0
+#define MULTIBUTTONENTRY_BUTTON_TOP_BUTTOM_PAD_INC 12
+#define MULTIBUTTONENTRY_BUTTON_LEFT_INNER_PAD_INC 15
+#define MULTIBUTTONENTRY_BUTTON_RIGHT_INNER_PAD_INC 15
+#define MULTIBUTTONENTRY_BUTTON_RIGHT_PAD_INC 15
+#define MULTIBUTTONENTRY_BUTTON_TEXT_SIZE_INC 38
+#define MULTIBUTTONENTRY_GUIDETEXT_SIZE_INC 44
+#define MULTIBUTTONENTRY_CLOSEDBUTTON_SIZE_INC 60
+#define MULTIBUTTONENTRY_CLOSEDBUTTON_AREA_HEIGHT_INC 60
+#define MULTIBUTTONENTRY_LABEL_RIGHT_PAD_INC 27
+#define MULTIBUTTONENTRY_LABEL_TEXT_SIZE_INC 42
+#define MULTIBUTTONENTRY_LABEL_MIN_HEIGHT_INC 75
+
+#define SEARCHBAR_BACKGROUND_COLOR_INC          242 238 233 255
+#define SEARCHBAR_CANCEL_BUTTON_W_INC 134
+#define SEARCHBAR_CANCEL_BUTTON_WITH_PADDING_W_INC 150
+#define SEARCHBAR_CANCEL_BUTTON_WITH_DOUBLE_PADDING_W_INC 166
+#define SEARCHBAR_TOP_PADDING_INC 18
+#define SEARCHBAR_BOTTOM_PADDING_INC 18
+#define SEARCHBAR_HEIGHT_INC 74
+#define SEARCHBAR_LEFT_PADDING_INC 16
+#define SEARCHBAR_RIGHT_PADDING_INC 16
+#define SEARCHBAR_INPUTFIELD_BORDER_INC 6 6 6 6
+#define SEARCHBAR_LEFT_ICON_PADDING_INC 16
+#define SEARCHBAR_ICON_MIN_W_INC 42
+#define SEARCHBAR_ICON_MIN_H_INC 42
+#define SEARCHBAR_LEFT_PADDING_SEARCHFIELD_INC 16
+#define SEARCHBAR_RIGHT_PADDING_SEARCHFIELD_INC 8
+#define SEARCHBAR_SEARCH_TEXTFIELD_H_INC 60
+#define SEARCHBAR_H_INC 107
+
+#define SELECTION_INFO_BACKGROUND_COLOR_INC          217 147 26 255
+#define SELECTION_INFO_TEXT_COLOR_INC          255 255 255 255
+
+#define SELECTION_INFO_MIN_VER_W_INC                 720
+#define SELECTION_INFO_MIN_HORZ_W_INC                1280
+#define SELECTION_INFO_VER_PADDING_INC               48
+#define SELECTION_INFO_LEFT_PADDING_INC              16
+#define SELECTION_INFO_TEXT_FONT_SIZE_INC            32
+#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC       150
+#define SELECTION_INFO_MIN_VER_BOTTOM_86_H_INC       186
+
+#define POPUP_DESCRIPTION_DEFAULT_TEXT_MIN_INC 588 0
+#define POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC 42
+
+#define POPUP_BASE_DEFAULT_BASE_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_DEFAULT_BASE_DEFAULT_MAX_INC 620 1120
+#define POPUP_BASE_DEFAULT_BG_DEFAULT_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_DEFAULT_TITLE_DEFAULT_MIN_INC 620 64
+#define POPUP_BASE_DEFAULT_TITLE_DEFAULT_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_DEFAULT_PADDING_MIN_MAX_INC 16 0
+#define POPUP_BASE_DEFAULT_TITLE_ICON_DEFAULT_MIN_MAX_INC 62 62
+#define POPUP_BASE_DEFAULT_CONTENT_DEFAULT_MIN_MAX_INC 620 0
+#define POPUP_BASE_DEFAULT_BUTTON_BG_DEFAULT_MIN_INC 620 96
+#define POPUP_BASE_DEFAULT_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_DEFAULT_TEXT_FONT_SIZE_INC 38
+
+#define POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC 0 22
+#define POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 16 0
+#define POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 16 0
+#define POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC 0 22
+#define POPUP_CONTENT_DEFAULT_CONTENT_DEFAULT_MIN_INC 588 0
+
+#define POPUP_BASE_VERTICAL_BUTTON_BASE_MIN_INC 620 0
+#define POPUP_BASE_VERTICAL_BUTTON_BASE_MAX_INC 620 1120
+#define POPUP_BASE_VERTICAL_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_DEFAULT_MIN_INC 620 64
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_IMAGE_BORDER_MIN_INC 3 3 3 3
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_ICON_MIN_MAX_INC 62 62
+#define POPUP_BASE_VERTICAL_BUTTON_CONTENT_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_VERTICAL_BUTTON_BUTTONAREA_DEFAULT_MIN_INC 620 286
+
+#define POPUP_BUTTON3_VERTICAL_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_TOP_MIN_INC 0 16
+#define POPUP_BUTTON_VERTICAL_ACTION_AREA_HEIGHT "286"
+#define POPUP_BUTTON3_VERTICAL_BUTTON_BUTTON_MIN_MAX_INC 356 74
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_BUTTON_MIN_INC 0 16
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_BUTTON_MAX_INC 9999 16
+
+#define POPUP_CONTENT_LISTSTYLE_PADDING_TOP_MIN_MAX_INC 3 3
+#define POPUP_CONTENT_LISTSTYLE_CONTENT_DEFAULT_MIN_INC 614 408
+#define POPUP_CONTENT_LISTSTYLE_PADDING_RIGHT_MIN_INC 3 0
+
+#define POPUP_CONTENT_MINSTYLE_CONTENT_DEFAULT_MIN_INC 614 0
+
+#define POPUP_BASE_CUSTOMSTYLE_BASE_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_CUSTOMSTYLE_BASE_DEFAULT_MAX_INC 620 1120
+#define POPUP_BASE_CUSTOMSTYLE_BG_DEFAULT_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_DEFAULT_MIN_INC 620 64
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_BOTTOM_LINE_MIN_INC 0 1
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_ICON_DEFAULT_MIN_MAX_INC 62 62
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_CUSTOMSTYLE_BUTTONAREA_BG_DEFAULT_MIN_INC 620 96
+#define POPUP_BASE_CUSTOMSTYLE_BUTTONAREA_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_CUSTOMSTYLE_TEXT_FONT_SIZE_INC 38
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_WIDTH_INC 620
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_HEIGHT_INC 146
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_SIDE_PADDING_INC 70
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_ENTRY_MIN_INC 90 90
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_CENTER_PADDING_MIN_INC 40
+
+#define POPUP_CONTENT_CUSTOMSTYLE_DEFAULT_MIN_INC 620 0
+#define POPUP_BUTTON_DEFAULT_ACTION_AREA_HEIGHT "96"
+#define POPUP_BUTTON1_DEFAULT_BUTTON1_DEFAULT_MIN_MAX_INC 402 74
+#define POPUP_BUTTON2_DEFAULT_BUTTON_DEFAULT_MIN_MAX_INC 274 74
+#define POPUP_BUTTON2_DEFAULT_PADDING_BUTTON_MIN_MAX_INC 10 74
+#define POPUP_BUTTON3_DEFAULT_BUTTON_DEFAULT_MIN_MAX_INC 186 74
+#define POPUP_BUTTON3_DEFAULT_PADDING_BUTTON_MIN_MAX_INC 10 74
+
+#define POPUP_BASE_VOLUMEBAR_STYLE_BASE_DEFAULT_MIN_INC 624 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_BASE_DEFAULT_MAX_INC 624 1120
+#define POPUP_BASE_VOLUMEBAR_STYLE_TITLE_DEFAULT_IMAGE_BORDER_INC 3 3 6 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_CONTENT_DEFAULT_MIN_INC 624 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_BUTTONAREA_BG_DEFAULT_MIN_INC 624 96
+
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_TOP_MIN_INC 0 31
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_LEFT_MIN_INC 40 0
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_RIGHT_MIN_INC 40 0
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_CONTENT_DEFAULT_MIN_INC 544 64
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_BOTTOM_MIN_INC 0 31
+
+#define PROGRESSBAR_DEFAULT_STYLE_TEXT_COLOR_INC          224 224 224 255
+#define PROGRESSBAR_DEFAULT_STYLE_STATUS_TEXT_COLOR_INC          255 255 255 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC          0 0 0 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC          224 224 224 255
+#define PROGRESSBAR_LIST_TITLE_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC      108 108 108 255
+#define PROGRESSBAR_LIST_PROCESS_WIDTH_INC 66
+#define PROGRESSBAR_LIST_PROCESS_HEIGHT_INC 66
+#define PROGRESSBAR_LIST_PROCESS_SMALL_INC 35
+#define PROGRESSBAR_LIST_PROCESS_SMALL_IMAGE "32x32"
+#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 16
+#define PROGRESSBAR_LIST_PENDING_HEIGHT_INC 16
+
+#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC  173 170 165 255
+#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC    42
+#define NOCONTENT_MIDDLE_PADDING_INC          54
+#define NOCONTENT_BASE_SEARCH_PADDING_INC     40
+#define NOCONTENT_IMAGE_REL1_WIDTH_HEIGHT_INC 0.282 0.294
+#define NOCONTENT_IMAGE_REL2_WIDTH_HEIGHT_INC 0.718 0.54
+#define NOCONTENT_BG_COLOR_INC                249 249 249 255
+#define NOCONTENT_TEXT_STYLE_BG_MIN_INC       0 120
+
+#define ENTRY_TEXT_SIZE_INC 44
+#define ENTRY_TEXT_COLOR_INC "#000000"
+#define ENTRY_CURSOR_COLOR_INC 217 147 26 255
+#define ENTRY_PREEDIT_BACKGROUND_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_TEXT_COLOR_INC "#FFFFFF"
+#define ENTRY_SELECTION_BG_COLOR 204 230 224 127
+#define ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE 48 67
+#define MAGNIFIER_HEIGHT_FILL 182
+#define MAGNIFIER_HEIGHT_FIXED 108
+#define MAGNIFIER_WIDTH_FIXED 358
+
+#define ENTRY_BUBBLE_EX_PAD 15
+#define ENTRY_BUBBLE_IX_PAD 22
+#define ENTRY_BUBBLE_Y_PAD 15
+#define ENTRY_BUBBLE_BOTTOM_PAD 22
+#define ENTRY_BUBBLE_CALLERID_PAD 16
+#define ENTRY_BUBBLE_CALLERID_WIDTH 60
+#define ENTRY_BUBBLE_CALLERID_HEIGHT 60
+#define ENTRY_BUBBLE_DATE_AREA_TEXT_SIZE_INC 26
+
+#define PANES_DEFAULT_FIXED_SEPERATOR_NORMAL_COLOR_INC 219 219 219 255
+
+#define DAYSELECTOR_BACKGROUND_COLOR_INC       199 199 199 255
+#define DAYSELECTOR_WEEKDAY_COLOR_INC          78 73 69 255
+#define DAYSELECTOR_SATURDAY_COLOR_INC         8 96 170 255
+#define DAYSELECTOR_SUNDAY_COLOR_INC           225 49 8 255
+#define DAYSELECTOR_DAY_PRESSED_COLOR_INC      255 255 255 255
+#define DAYSELECTOR_DAY_FONT_SIZE_INC 32
+#define DAYSELECTOR_CHECK_WIDTH_INC 94
+#define DAYSELECTOR_CHECK_HEIGHT_INC 90
+
+#define SLIDER_INDICATOR_TEXT_COLOR_INC      217 147 26 255
+#define SLIDER_UNITS_TEXT_COLOR_INC      122 122 122 255
+#define SLIDER_UNITS_TEXT_SIZE_INC  30
+#define SLIDER_INDICATOR_TEXT_SIZE_INC  40
+#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  58
+#define SLIDER_SWALLOW_BAR_HEIGHT_INC  58
+#define SLIDER_INDICATOR_WIDTH_INC 58
+#define SLIDER_INDICATOR_HEIGHT_INC 58
+#define SLIDER_EBOOK_HEIGHT_INC  23
+#define SLIDER_EBOOK_UNITS_TEXT_COLOR_INC   164 160 149 255
+#define SLIDER_EBOOK_UNITS_TEXT_SIZE_INC  48
+#define SLIDER_EBOOK_INDICATOR_TEXT_COLOR_INC   241 150 27 255
+#define SLIDER_EBOOK_INDICATOR_DEFAULT_TEXT_SIZE_INC 36
+#define SLIDER_EBOOK_INDICATOR_DRAG_TEXT_SIZE_INC 48
+#define SLIDER_EBOOK_INDICATOR_WIDTH_INC 54
+#define SLIDER_EBOOK_INDICATOR_HEIGHT_INC 54
+#define SLIDER_DISABLER_PART_COLOR_INC   185 185 185 100
+
+#define TICKER_NOTI_DEFAULT_TEXT_COLOR_INC "#f4f4f4"
+
+#define DATETIME_FIELD_MIN_SIZE_INC                60 60
+#define DATETIME_SEPARATOR_MIN_SIZE_INC            40 60
+#define DATETIME_TEXT_FONT_SIZE_INC                36
+#define DATETIME_TEXT_NORMAL_COLOR_INC             0 0 0 255
+#define DATETIME_SEPARATOR_TEXT_COLOR_INC          100 100 100 255
+#define DATETIME_TEXT_SELECTED_COLOR_INC           224 134 21 255
+
+#define COLORSELECTOR_MIN_W_INC 624
+#define COLORSELECTOR_MIN_H_INC 336
+#define COLORSELECTOR_MAX_W_INC 1014
+#define COLORSELECTOR_COLORBAR_IMAGE0_BORDER 13 13 10 3
+#define COLORSELECTOR_COLORBAR_IMAGE1_BORDER 4 4 3 3
+#define COLORSELECTOR_COLORBAR_IMAGE2_BORDER 13 13 3 15
+#define COLORSELECTOR_COLORBAR_HEIGHT 112
+#define COLORSELECTOR_COLORBAR_LEFT_PADDING 136
+#define COLORSELECTOR_COLORBAR_RIGHT_PADDING 136
+#define COLORSELECTOR_BUTTON_TOP_PADDING 19
+#define COLORSELECTOR_ARROW_BG_LEFT_PADDING 133
+#define COLORSELECTOR_ARROW_BG_RIGHT_PADDING 133
+#define COLORSELECTOR_ARROW_MIN_WIDTH 16
+#define COLORSELECTOR_ARROW_MIN_HEIGHT 80
+#define COLORSELECTOR_DRAGGABLE_EVENT_AREA 80 80
+#define COLORSELECTOR_BUTTON_LEFT_PADDING 42
+#define COLORSELECTOR_BUTTON_RIGHT_PADDING 42
+#define COLORSELECTOR_BUTTON_WIDTH 74
+#define COLORSELECTOR_BUTTON_HEIGHT 74
+#define COLORSELECTOR_BUTTON_BORDER 6 6 6 6
+#define COLORSELECTOR_PADDING_COLOR_INC 199 199 199 255
+
+#define COLORSELECTOR_PALETTE_COLORBG_MIN_WIDTH_INC 86
+#define COLORSELECTOR_PALETTE_COLORBG_MIN_HEIGHT_INC 86
+#define COLORSELECTOR_PALETTE_COLORBG_FOCUS_MIN_WIDTH_INC 84
+#define COLORSELECTOR_PALETTE_COLORBG_FOCUS_MIN_HEIGHT_INC 84
+#define COLORSELECTOR_PORTRAIT_HOR_PAD_INC "50"
+#define COLORSELECTOR_PORTRAIT_VER_PAD_INC "26"
+#define COLORSELECTOR_LANDSCAPE_HOR_PAD_INC "36"
+#define COLORSELECTOR_LANDSCAPE_VER_PAD_INC "0"
+#define COLORSELECTOR_PALETTE_BORDER_INC 14 14 14 14
+
+#define CALENDAR_DAY_FONT_SIZE_INC 24
+#define CALENDAR_DATE_FONT_SIZE_INC 32
+#define CALENDAR_MONTH_FONT_SIZE_INC 38
+#define CALENDAR_MONTH_FONT_COLOR_INC 0 0 0 255
+#define CALENDAR_SATURDAY_FONT_COLOR_INC 47 120 220 255
+#define CALENDAR_SUNDAY_FONT_COLOR_INC 226 20 20 255
+#define CALENDAR_WEEKDAY_FONT_COLOR_INC 0 0 0 255
+#define CALENDAR_SELECTED_DATE_FONT_COLOR_INC 255 255 255 255
+#define CALENDAR_SEPERATOR_FONT_COLOR_INC 176 176 176 255
+#define CALENDAR_BACKGROUND_COLOR_INC 230 230 230 255
+#define CALENDAR_BUTTON_HEIGHT_INC 66
+#define CALENDAR_BUTTON_WIDTH_INC 74
+#define CALENDAR_ARROW_WIDTH_INC 30
+#define CALENDAR_ARROW_HEIGHT_INC 36
+#define CALENDAR_BASE_MIN_WIDTH_INC 692
+#define CALENDAR_BASE_MIN_HEIGHT_INC 420
+#define CALENDAR_HEADER_MIN_WIDTH_INC 98
+#define CALENDAR_HEADER_MIN_HEIGHT_INC 90
+
+#define CTXPOPUP_ENTRY_CENTER_IMAGE_BORDER 5 5 5 5
+#define CTXPOPUP_ENTRY_IMAGE_BORDER_WIDTH 6
+#define CTXPOPUP_ENTRY_ITEM_TEXT_COLOR   249 249 249 255
+#define CTXPOPUP_ENTRY_ITEM_LEFT_SEPARATOR_COLOR 61 61 61 255
+#define CTXPOPUP_ENTRY_ITEM_RIGHT_SEPARATOR_COLOR 148 148 148 255
+#define CTXPOPUP_ENTRY_SEPARATOR_WIDTH 1
+#define CTXPOPUP_ENTRY_SEPARATOR_HEIGHT 48
+#define CTXPOPUP_ENTRY_ITEM_HEIGHT 73
+#define CTXPOPUP_ENTRY_ITEM_PADDING_WIDTH 16
+#define CTXPOPUP_ENTRY_ITEM_FONT_SIZE 28
+#define CTXPOPUP_ENTRY_ICON_SIZE 57
+#define CTXPOPUP_ENTRY_ITEM_WIDTH_MAX 240
+#define CTXPOPUP_ENTRY_LIST_SHADOW_PADDING 3
+#define CTXPOPUP_ENTRY_ITEM_DISABLED_COLOR 200 200 200 127
+#define CTXPOPUP_ENTRY_ARROW_SIZE_HEIGHT 18
+#define CTXPOPUP_ENTRY_ARROW_SIZE_WIDTH 36
+
+#define TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC 98
+#define TICKERNOTI_DEFAULT_BG_BOTTOM_MIN_HEIGHT_INC 8
+#define TICKERNOTI_DEFAULT_BG_BORDER_INC 0 0 0 8
+#define TICKERNOTI_DEFAULT_BG_PADDING_LEFT_TOP_INC 16 13
+#define TICKERNOTI_DEFAULT_BG_PADDING_RIGHT_BOTTOM_INC 16 13
+#define TICKERNOTI_DEFAULT_PADDING_AFTER_ICON_INC 16 0
+#define TICKERNOTI_DEFAULT_TEXT_MIN_INC 0 60
+#define TICKERNOTI_DEFAULT_BUTTON_MIN_INC 90 54
+#define TICKERNOTI_DEFAULT_BUTTON_MAX_INC 90 54
+#define TICKERNOTI_DEFAULT_ICON_MIN_INC 64 64
+#define TICKERNOTI_DEFAULT_PADDING_BEFORE_BUTTON_INC 16 0
+#define TICKERNOTI_DEFAULT_TEXT_FONT_SIZE_INC 30
+#define TICKERNOTI_INFO_BG_MIN_HEIGHT_INC 50
+#define TICKERNOTI_INFO_BG_PADDING_LEFT_TOP_INC 8 5
+#define TICKERNOTI_INFO_BG_PADDING_RIGHT_BOTTOM_INC 8 5
+#define TICKERNOTI_BG_PADDING_AFTER_ICON_INC 15 0
+#define TICKERNOTI_INFO_TEXT_FONT_SIZE_INC 28
+
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC 10 80
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC 80 10
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC 48 214
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC 214 48
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC 48 26
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC 26 48
+#define SCROLLER_HANDLER_SCROLLBAR_PADDING_INC 10
+
+//end file
diff --git a/images/edc_images/00_button_01_normal.png b/images/edc_images/00_button_01_normal.png
new file mode 100644 (file)
index 0000000..9290a24
Binary files /dev/null and b/images/edc_images/00_button_01_normal.png differ
diff --git a/images/edc_images/00_button_01_normal_Focus.png b/images/edc_images/00_button_01_normal_Focus.png
new file mode 100644 (file)
index 0000000..cc9314b
Binary files /dev/null and b/images/edc_images/00_button_01_normal_Focus.png differ
diff --git a/images/edc_images/00_button_01_normal_dim.png b/images/edc_images/00_button_01_normal_dim.png
new file mode 100644 (file)
index 0000000..9ca5a44
Binary files /dev/null and b/images/edc_images/00_button_01_normal_dim.png differ
diff --git a/images/edc_images/00_button_01_normal_press.png b/images/edc_images/00_button_01_normal_press.png
new file mode 100644 (file)
index 0000000..f429735
Binary files /dev/null and b/images/edc_images/00_button_01_normal_press.png differ
diff --git a/images/edc_images/00_check_off.png b/images/edc_images/00_check_off.png
new file mode 100644 (file)
index 0000000..49a5552
Binary files /dev/null and b/images/edc_images/00_check_off.png differ
diff --git a/images/edc_images/camara_back_button.png b/images/edc_images/camara_back_button.png
new file mode 100644 (file)
index 0000000..5380e1a
Binary files /dev/null and b/images/edc_images/camara_back_button.png differ
diff --git a/images/edc_images/camara_back_button_press.png b/images/edc_images/camara_back_button_press.png
new file mode 100755 (executable)
index 0000000..b3205a3
Binary files /dev/null and b/images/edc_images/camara_back_button_press.png differ
diff --git a/images/edc_images/camcorder_recording_pause.png b/images/edc_images/camcorder_recording_pause.png
new file mode 100755 (executable)
index 0000000..201a0ef
Binary files /dev/null and b/images/edc_images/camcorder_recording_pause.png differ
diff --git a/images/edc_images/camcorder_recording_pause_press.png b/images/edc_images/camcorder_recording_pause_press.png
new file mode 100755 (executable)
index 0000000..a5c1b27
Binary files /dev/null and b/images/edc_images/camcorder_recording_pause_press.png differ
diff --git a/images/edc_images/camcorder_recording_shutter.png b/images/edc_images/camcorder_recording_shutter.png
new file mode 100755 (executable)
index 0000000..c1b2a2c
Binary files /dev/null and b/images/edc_images/camcorder_recording_shutter.png differ
diff --git a/images/edc_images/camcorder_recording_stop.png b/images/edc_images/camcorder_recording_stop.png
new file mode 100755 (executable)
index 0000000..60fbcde
Binary files /dev/null and b/images/edc_images/camcorder_recording_stop.png differ
diff --git a/images/edc_images/camcorder_recording_stop_press.png b/images/edc_images/camcorder_recording_stop_press.png
new file mode 100755 (executable)
index 0000000..399f814
Binary files /dev/null and b/images/edc_images/camcorder_recording_stop_press.png differ
diff --git a/images/edc_images/camcorder_standby_shutter.png b/images/edc_images/camcorder_standby_shutter.png
new file mode 100755 (executable)
index 0000000..9932e49
Binary files /dev/null and b/images/edc_images/camcorder_standby_shutter.png differ
diff --git a/images/edc_images/camcorder_standby_shutter_dim.png b/images/edc_images/camcorder_standby_shutter_dim.png
new file mode 100755 (executable)
index 0000000..4c4a982
Binary files /dev/null and b/images/edc_images/camcorder_standby_shutter_dim.png differ
diff --git a/images/edc_images/camcorder_standby_shutter_press.png b/images/edc_images/camcorder_standby_shutter_press.png
new file mode 100755 (executable)
index 0000000..9c1e9dc
Binary files /dev/null and b/images/edc_images/camcorder_standby_shutter_press.png differ
diff --git a/images/edc_images/camcorder_stop_shutter_icon.png b/images/edc_images/camcorder_stop_shutter_icon.png
new file mode 100755 (executable)
index 0000000..ed60ed8
Binary files /dev/null and b/images/edc_images/camcorder_stop_shutter_icon.png differ
diff --git a/images/edc_images/camera_button_off.png b/images/edc_images/camera_button_off.png
new file mode 100644 (file)
index 0000000..548b5ca
Binary files /dev/null and b/images/edc_images/camera_button_off.png differ
diff --git a/images/edc_images/camera_button_on.png b/images/edc_images/camera_button_on.png
new file mode 100644 (file)
index 0000000..8310403
Binary files /dev/null and b/images/edc_images/camera_button_on.png differ
diff --git a/images/edc_images/camera_handle.png b/images/edc_images/camera_handle.png
new file mode 100755 (executable)
index 0000000..f35088e
Binary files /dev/null and b/images/edc_images/camera_handle.png differ
diff --git a/images/edc_images/camera_help_image.png b/images/edc_images/camera_help_image.png
new file mode 100644 (file)
index 0000000..fb3e445
Binary files /dev/null and b/images/edc_images/camera_help_image.png differ
diff --git a/images/edc_images/camera_menu_bg.png b/images/edc_images/camera_menu_bg.png
new file mode 100755 (executable)
index 0000000..9fc1362
Binary files /dev/null and b/images/edc_images/camera_menu_bg.png differ
diff --git a/images/edc_images/camera_menu_bg_press.png b/images/edc_images/camera_menu_bg_press.png
new file mode 100755 (executable)
index 0000000..cf07a41
Binary files /dev/null and b/images/edc_images/camera_menu_bg_press.png differ
diff --git a/images/edc_images/camera_menu_tab_hold.png b/images/edc_images/camera_menu_tab_hold.png
new file mode 100755 (executable)
index 0000000..de0c3dd
Binary files /dev/null and b/images/edc_images/camera_menu_tab_hold.png differ
diff --git a/images/edc_images/camera_mode_shutter_dim.png b/images/edc_images/camera_mode_shutter_dim.png
new file mode 100755 (executable)
index 0000000..610bdfe
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_dim.png differ
diff --git a/images/edc_images/camera_mode_shutter_icon.png b/images/edc_images/camera_mode_shutter_icon.png
new file mode 100755 (executable)
index 0000000..10b2004
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_icon.png differ
diff --git a/images/edc_images/camera_mode_shutter_icon_dim.png b/images/edc_images/camera_mode_shutter_icon_dim.png
new file mode 100755 (executable)
index 0000000..b56adad
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_icon_dim.png differ
diff --git a/images/edc_images/camera_mode_shutter_normal.png b/images/edc_images/camera_mode_shutter_normal.png
new file mode 100755 (executable)
index 0000000..582d306
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_normal.png differ
diff --git a/images/edc_images/camera_mode_shutter_normal_inverse.png b/images/edc_images/camera_mode_shutter_normal_inverse.png
new file mode 100644 (file)
index 0000000..5dd26a2
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_normal_inverse.png differ
diff --git a/images/edc_images/camera_mode_shutter_press.png b/images/edc_images/camera_mode_shutter_press.png
new file mode 100755 (executable)
index 0000000..8c963e6
Binary files /dev/null and b/images/edc_images/camera_mode_shutter_press.png differ
diff --git a/images/edc_images/camera_mode_thumbnail_bg.png b/images/edc_images/camera_mode_thumbnail_bg.png
new file mode 100755 (executable)
index 0000000..823b3ea
Binary files /dev/null and b/images/edc_images/camera_mode_thumbnail_bg.png differ
diff --git a/images/edc_images/camera_mode_thumbnail_bg_press.png b/images/edc_images/camera_mode_thumbnail_bg_press.png
new file mode 100755 (executable)
index 0000000..2ac7bcd
Binary files /dev/null and b/images/edc_images/camera_mode_thumbnail_bg_press.png differ
diff --git a/images/edc_images/camera_normal_left.png b/images/edc_images/camera_normal_left.png
new file mode 100755 (executable)
index 0000000..3a56573
Binary files /dev/null and b/images/edc_images/camera_normal_left.png differ
diff --git a/images/edc_images/camera_normal_opacity_l_bg.png b/images/edc_images/camera_normal_opacity_l_bg.png
new file mode 100755 (executable)
index 0000000..5e03665
Binary files /dev/null and b/images/edc_images/camera_normal_opacity_l_bg.png differ
diff --git a/images/edc_images/camera_normal_opacity_r_bg.png b/images/edc_images/camera_normal_opacity_r_bg.png
new file mode 100755 (executable)
index 0000000..05654b5
Binary files /dev/null and b/images/edc_images/camera_normal_opacity_r_bg.png differ
diff --git a/images/edc_images/camera_normal_right.png b/images/edc_images/camera_normal_right.png
new file mode 100755 (executable)
index 0000000..96156c6
Binary files /dev/null and b/images/edc_images/camera_normal_right.png differ
diff --git a/images/edc_images/camera_option_popup_anker.png b/images/edc_images/camera_option_popup_anker.png
new file mode 100755 (executable)
index 0000000..7266092
Binary files /dev/null and b/images/edc_images/camera_option_popup_anker.png differ
diff --git a/images/edc_images/camera_option_popup_anker_inverse.png b/images/edc_images/camera_option_popup_anker_inverse.png
new file mode 100755 (executable)
index 0000000..1780e6b
Binary files /dev/null and b/images/edc_images/camera_option_popup_anker_inverse.png differ
diff --git a/images/edc_images/camera_option_popup_bg.png b/images/edc_images/camera_option_popup_bg.png
new file mode 100755 (executable)
index 0000000..7db92a1
Binary files /dev/null and b/images/edc_images/camera_option_popup_bg.png differ
diff --git a/images/edc_images/camera_option_popup_bg_2depth.png b/images/edc_images/camera_option_popup_bg_2depth.png
new file mode 100755 (executable)
index 0000000..1012ffe
Binary files /dev/null and b/images/edc_images/camera_option_popup_bg_2depth.png differ
diff --git a/images/edc_images/camera_popup_ex_bar.png b/images/edc_images/camera_popup_ex_bar.png
new file mode 100755 (executable)
index 0000000..c5c5d4d
Binary files /dev/null and b/images/edc_images/camera_popup_ex_bar.png differ
diff --git a/images/edc_images/camera_popup_zoom.png b/images/edc_images/camera_popup_zoom.png
new file mode 100755 (executable)
index 0000000..03ebf29
Binary files /dev/null and b/images/edc_images/camera_popup_zoom.png differ
diff --git a/images/edc_images/camera_popup_zoom_bar.png b/images/edc_images/camera_popup_zoom_bar.png
new file mode 100755 (executable)
index 0000000..8f27573
Binary files /dev/null and b/images/edc_images/camera_popup_zoom_bar.png differ
diff --git a/images/edc_images/camera_radio_btn_off.png b/images/edc_images/camera_radio_btn_off.png
new file mode 100755 (executable)
index 0000000..5ac28c8
Binary files /dev/null and b/images/edc_images/camera_radio_btn_off.png differ
diff --git a/images/edc_images/camera_radio_btn_on.png b/images/edc_images/camera_radio_btn_on.png
new file mode 100755 (executable)
index 0000000..8d86bc9
Binary files /dev/null and b/images/edc_images/camera_radio_btn_on.png differ
diff --git a/images/edc_images/camera_recording_btn_caf.png b/images/edc_images/camera_recording_btn_caf.png
new file mode 100755 (executable)
index 0000000..291e03d
Binary files /dev/null and b/images/edc_images/camera_recording_btn_caf.png differ
diff --git a/images/edc_images/camera_recording_btn_caf_press.png b/images/edc_images/camera_recording_btn_caf_press.png
new file mode 100755 (executable)
index 0000000..f3cf8d8
Binary files /dev/null and b/images/edc_images/camera_recording_btn_caf_press.png differ
diff --git a/images/edc_images/camera_shortcut_line_h_01.png b/images/edc_images/camera_shortcut_line_h_01.png
new file mode 100755 (executable)
index 0000000..1d88543
Binary files /dev/null and b/images/edc_images/camera_shortcut_line_h_01.png differ
diff --git a/images/edc_images/camera_shortcut_line_v_01.png b/images/edc_images/camera_shortcut_line_v_01.png
new file mode 100755 (executable)
index 0000000..d3a4012
Binary files /dev/null and b/images/edc_images/camera_shortcut_line_v_01.png differ
diff --git a/images/edc_images/camera_shortcut_line_v_02.png b/images/edc_images/camera_shortcut_line_v_02.png
new file mode 100755 (executable)
index 0000000..31fb062
Binary files /dev/null and b/images/edc_images/camera_shortcut_line_v_02.png differ
diff --git a/images/edc_images/camera_shrtcut_edit_bg.png b/images/edc_images/camera_shrtcut_edit_bg.png
new file mode 100755 (executable)
index 0000000..b0f6838
Binary files /dev/null and b/images/edc_images/camera_shrtcut_edit_bg.png differ
diff --git a/images/edc_images/camera_shrtcut_menubar_bg.png b/images/edc_images/camera_shrtcut_menubar_bg.png
new file mode 100755 (executable)
index 0000000..64f356f
Binary files /dev/null and b/images/edc_images/camera_shrtcut_menubar_bg.png differ
diff --git a/images/edc_images/camera_shrtcut_text_bg.png b/images/edc_images/camera_shrtcut_text_bg.png
new file mode 100755 (executable)
index 0000000..eadd845
Binary files /dev/null and b/images/edc_images/camera_shrtcut_text_bg.png differ
diff --git a/images/edc_images/camera_timer_popup.png b/images/edc_images/camera_timer_popup.png
new file mode 100755 (executable)
index 0000000..fc69ff6
Binary files /dev/null and b/images/edc_images/camera_timer_popup.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_00.png b/images/edc_images/indicator/camera_indicator_battery_00.png
new file mode 100755 (executable)
index 0000000..a060ac7
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_00.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_01.png b/images/edc_images/indicator/camera_indicator_battery_01.png
new file mode 100755 (executable)
index 0000000..aaec3f6
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_01.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_02.png b/images/edc_images/indicator/camera_indicator_battery_02.png
new file mode 100755 (executable)
index 0000000..014ca72
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_02.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_03.png b/images/edc_images/indicator/camera_indicator_battery_03.png
new file mode 100755 (executable)
index 0000000..5e119ac
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_03.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_04.png b/images/edc_images/indicator/camera_indicator_battery_04.png
new file mode 100755 (executable)
index 0000000..00c1a06
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_04.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_05.png b/images/edc_images/indicator/camera_indicator_battery_05.png
new file mode 100755 (executable)
index 0000000..3eb7cd4
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_05.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_charge.png b/images/edc_images/indicator/camera_indicator_battery_charge.png
new file mode 100755 (executable)
index 0000000..d5d2d5b
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_charge.png differ
diff --git a/images/edc_images/indicator/camera_indicator_battery_full.png b/images/edc_images/indicator/camera_indicator_battery_full.png
new file mode 100755 (executable)
index 0000000..92c3584
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_battery_full.png differ
diff --git a/images/edc_images/indicator/camera_indicator_gps_connection01.png b/images/edc_images/indicator/camera_indicator_gps_connection01.png
new file mode 100755 (executable)
index 0000000..2a5dc2a
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_gps_connection01.png differ
diff --git a/images/edc_images/indicator/camera_indicator_gps_connection02.png b/images/edc_images/indicator/camera_indicator_gps_connection02.png
new file mode 100755 (executable)
index 0000000..f26a22c
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_gps_connection02.png differ
diff --git a/images/edc_images/indicator/camera_indicator_gps_connection03.png b/images/edc_images/indicator/camera_indicator_gps_connection03.png
new file mode 100755 (executable)
index 0000000..1e69e3e
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_gps_connection03.png differ
diff --git a/images/edc_images/indicator/camera_indicator_gps_off.png b/images/edc_images/indicator/camera_indicator_gps_off.png
new file mode 100755 (executable)
index 0000000..9c97413
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_gps_off.png differ
diff --git a/images/edc_images/indicator/camera_indicator_gps_on.png b/images/edc_images/indicator/camera_indicator_gps_on.png
new file mode 100755 (executable)
index 0000000..ec40f46
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_gps_on.png differ
diff --git a/images/edc_images/indicator/camera_indicator_mute.png b/images/edc_images/indicator/camera_indicator_mute.png
new file mode 100755 (executable)
index 0000000..6fa2f00
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_mute.png differ
diff --git a/images/edc_images/indicator/camera_indicator_smile_shot.png b/images/edc_images/indicator/camera_indicator_smile_shot.png
new file mode 100755 (executable)
index 0000000..a665c83
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_smile_shot.png differ
diff --git a/images/edc_images/indicator/camera_indicator_storage_in.png b/images/edc_images/indicator/camera_indicator_storage_in.png
new file mode 100755 (executable)
index 0000000..f3d2386
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_storage_in.png differ
diff --git a/images/edc_images/indicator/camera_indicator_storage_memoryfull.png b/images/edc_images/indicator/camera_indicator_storage_memoryfull.png
new file mode 100755 (executable)
index 0000000..72c6e6c
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_storage_memoryfull.png differ
diff --git a/images/edc_images/indicator/camera_indicator_storage_phonefull.png b/images/edc_images/indicator/camera_indicator_storage_phonefull.png
new file mode 100755 (executable)
index 0000000..ad52f9c
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_storage_phonefull.png differ
diff --git a/images/edc_images/indicator/camera_indicator_storage_t_flash.png b/images/edc_images/indicator/camera_indicator_storage_t_flash.png
new file mode 100755 (executable)
index 0000000..a3deba8
Binary files /dev/null and b/images/edc_images/indicator/camera_indicator_storage_t_flash.png differ
diff --git a/images/edc_images/indicator/camera_rec.png b/images/edc_images/indicator/camera_rec.png
new file mode 100755 (executable)
index 0000000..c61e047
Binary files /dev/null and b/images/edc_images/indicator/camera_rec.png differ
diff --git a/images/edc_images/shortcut/camera_mode_anti_shake_off_nor.png b/images/edc_images/shortcut/camera_mode_anti_shake_off_nor.png
new file mode 100755 (executable)
index 0000000..5a56904
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_anti_shake_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_anti_shake_off_press.png b/images/edc_images/shortcut/camera_mode_anti_shake_off_press.png
new file mode 100755 (executable)
index 0000000..c781d5b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_anti_shake_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_anti_shake_on_nor.png b/images/edc_images/shortcut/camera_mode_anti_shake_on_nor.png
new file mode 100755 (executable)
index 0000000..7ac40e0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_anti_shake_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_anti_shake_on_press.png b/images/edc_images/shortcut/camera_mode_anti_shake_on_press.png
new file mode 100755 (executable)
index 0000000..2263c20
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_anti_shake_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_auto_contrast_off_nor.png b/images/edc_images/shortcut/camera_mode_auto_contrast_off_nor.png
new file mode 100755 (executable)
index 0000000..994af83
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_auto_contrast_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_auto_contrast_off_press.png b/images/edc_images/shortcut/camera_mode_auto_contrast_off_press.png
new file mode 100755 (executable)
index 0000000..d56ebf3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_auto_contrast_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_auto_contrast_on_nor.png b/images/edc_images/shortcut/camera_mode_auto_contrast_on_nor.png
new file mode 100755 (executable)
index 0000000..c04704f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_auto_contrast_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_auto_contrast_on_press.png b/images/edc_images/shortcut/camera_mode_auto_contrast_on_press.png
new file mode 100755 (executable)
index 0000000..19b2a12
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_auto_contrast_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_burstshot_off_nor.png b/images/edc_images/shortcut/camera_mode_burstshot_off_nor.png
new file mode 100755 (executable)
index 0000000..4455ede
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_burstshot_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_burstshot_off_press.png b/images/edc_images/shortcut/camera_mode_burstshot_off_press.png
new file mode 100755 (executable)
index 0000000..894ca41
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_burstshot_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_burstshot_on_nor.png b/images/edc_images/shortcut/camera_mode_burstshot_on_nor.png
new file mode 100755 (executable)
index 0000000..df8b519
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_burstshot_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_burstshot_on_press.png b/images/edc_images/shortcut/camera_mode_burstshot_on_press.png
new file mode 100755 (executable)
index 0000000..aae9c5c
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_burstshot_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_capture_voice_off_nor.png b/images/edc_images/shortcut/camera_mode_capture_voice_off_nor.png
new file mode 100755 (executable)
index 0000000..daeb355
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_capture_voice_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_capture_voice_off_press.png b/images/edc_images/shortcut/camera_mode_capture_voice_off_press.png
new file mode 100755 (executable)
index 0000000..b55c294
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_capture_voice_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_capture_voice_on_nor.png b/images/edc_images/shortcut/camera_mode_capture_voice_on_nor.png
new file mode 100755 (executable)
index 0000000..c39d3a0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_capture_voice_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_capture_voice_on_press.png b/images/edc_images/shortcut/camera_mode_capture_voice_on_press.png
new file mode 100755 (executable)
index 0000000..052804f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_capture_voice_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_Black and white_nor.png b/images/edc_images/shortcut/camera_mode_effect_Black and white_nor.png
new file mode 100755 (executable)
index 0000000..8232df0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_Black and white_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_Black and white_press.png b/images/edc_images/shortcut/camera_mode_effect_Black and white_press.png
new file mode 100755 (executable)
index 0000000..669fc5e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_Black and white_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_negative_nor.png b/images/edc_images/shortcut/camera_mode_effect_negative_nor.png
new file mode 100755 (executable)
index 0000000..3783d5a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_negative_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_negative_press.png b/images/edc_images/shortcut/camera_mode_effect_negative_press.png
new file mode 100755 (executable)
index 0000000..1d3df43
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_negative_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_none_nor.png b/images/edc_images/shortcut/camera_mode_effect_none_nor.png
new file mode 100755 (executable)
index 0000000..accc141
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_none_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_none_press.png b/images/edc_images/shortcut/camera_mode_effect_none_press.png
new file mode 100755 (executable)
index 0000000..a87d130
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_none_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_sepia_nor.png b/images/edc_images/shortcut/camera_mode_effect_sepia_nor.png
new file mode 100755 (executable)
index 0000000..3a50411
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_sepia_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_effect_sepia_press.png b/images/edc_images/shortcut/camera_mode_effect_sepia_press.png
new file mode 100755 (executable)
index 0000000..1638d6c
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_effect_sepia_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_1_nor.png b/images/edc_images/shortcut/camera_mode_exposure_1_nor.png
new file mode 100755 (executable)
index 0000000..579b596
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_1_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_1_press.png b/images/edc_images/shortcut/camera_mode_exposure_1_press.png
new file mode 100755 (executable)
index 0000000..4263fe4
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_1_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_2_nor.png b/images/edc_images/shortcut/camera_mode_exposure_2_nor.png
new file mode 100755 (executable)
index 0000000..f147354
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_2_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_2_press.png b/images/edc_images/shortcut/camera_mode_exposure_2_press.png
new file mode 100755 (executable)
index 0000000..3b58af7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_2_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_3_nor.png b/images/edc_images/shortcut/camera_mode_exposure_3_nor.png
new file mode 100755 (executable)
index 0000000..76843df
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_3_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_3_press.png b/images/edc_images/shortcut/camera_mode_exposure_3_press.png
new file mode 100755 (executable)
index 0000000..31952c8
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_3_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_4_nor.png b/images/edc_images/shortcut/camera_mode_exposure_4_nor.png
new file mode 100755 (executable)
index 0000000..3987a55
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_4_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_4_press.png b/images/edc_images/shortcut/camera_mode_exposure_4_press.png
new file mode 100755 (executable)
index 0000000..57e6a9b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_4_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_5_nor.png b/images/edc_images/shortcut/camera_mode_exposure_5_nor.png
new file mode 100755 (executable)
index 0000000..ce905a7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_5_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_5_press.png b/images/edc_images/shortcut/camera_mode_exposure_5_press.png
new file mode 100755 (executable)
index 0000000..39efe4f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_5_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_6_nor.png b/images/edc_images/shortcut/camera_mode_exposure_6_nor.png
new file mode 100755 (executable)
index 0000000..409fc7f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_6_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_6_press.png b/images/edc_images/shortcut/camera_mode_exposure_6_press.png
new file mode 100755 (executable)
index 0000000..31cb02a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_6_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_7_nor.png b/images/edc_images/shortcut/camera_mode_exposure_7_nor.png
new file mode 100755 (executable)
index 0000000..b3d578c
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_7_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_7_press.png b/images/edc_images/shortcut/camera_mode_exposure_7_press.png
new file mode 100755 (executable)
index 0000000..db23786
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_7_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_8_nor.png b/images/edc_images/shortcut/camera_mode_exposure_8_nor.png
new file mode 100755 (executable)
index 0000000..b83e0eb
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_8_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_8_press.png b/images/edc_images/shortcut/camera_mode_exposure_8_press.png
new file mode 100755 (executable)
index 0000000..8269097
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_8_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_9_nor.png b/images/edc_images/shortcut/camera_mode_exposure_9_nor.png
new file mode 100755 (executable)
index 0000000..eed75d3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_9_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_exposure_9_press.png b/images/edc_images/shortcut/camera_mode_exposure_9_press.png
new file mode 100755 (executable)
index 0000000..d72e0cf
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_exposure_9_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_auto_nor.png b/images/edc_images/shortcut/camera_mode_flash_auto_nor.png
new file mode 100755 (executable)
index 0000000..6202dd1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_auto_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_auto_press.png b/images/edc_images/shortcut/camera_mode_flash_auto_press.png
new file mode 100755 (executable)
index 0000000..946e081
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_auto_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_off_nor.png b/images/edc_images/shortcut/camera_mode_flash_off_nor.png
new file mode 100755 (executable)
index 0000000..6e31fd1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_off_press.png b/images/edc_images/shortcut/camera_mode_flash_off_press.png
new file mode 100755 (executable)
index 0000000..82b252c
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_on_nor.png b/images/edc_images/shortcut/camera_mode_flash_on_nor.png
new file mode 100755 (executable)
index 0000000..fe846e7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_flash_on_press.png b/images/edc_images/shortcut/camera_mode_flash_on_press.png
new file mode 100755 (executable)
index 0000000..6994692
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_flash_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_auto_nor.png b/images/edc_images/shortcut/camera_mode_focus_auto_nor.png
new file mode 100755 (executable)
index 0000000..cfc3da2
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_auto_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_auto_press.png b/images/edc_images/shortcut/camera_mode_focus_auto_press.png
new file mode 100755 (executable)
index 0000000..3e8838e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_auto_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_face_detection_nor.png b/images/edc_images/shortcut/camera_mode_focus_face_detection_nor.png
new file mode 100755 (executable)
index 0000000..359cf49
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_face_detection_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_face_detection_press.png b/images/edc_images/shortcut/camera_mode_focus_face_detection_press.png
new file mode 100755 (executable)
index 0000000..814d1ec
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_face_detection_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_macro_nor.png b/images/edc_images/shortcut/camera_mode_focus_macro_nor.png
new file mode 100755 (executable)
index 0000000..75d1ccf
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_macro_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_focus_macro_press.png b/images/edc_images/shortcut/camera_mode_focus_macro_press.png
new file mode 100755 (executable)
index 0000000..19b5d29
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_focus_macro_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_gps_off_nor.png b/images/edc_images/shortcut/camera_mode_gps_off_nor.png
new file mode 100755 (executable)
index 0000000..221f70f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_gps_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_gps_off_press.png b/images/edc_images/shortcut/camera_mode_gps_off_press.png
new file mode 100755 (executable)
index 0000000..fd04d5b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_gps_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_gps_on_nor.png b/images/edc_images/shortcut/camera_mode_gps_on_nor.png
new file mode 100755 (executable)
index 0000000..821d901
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_gps_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_gps_on_press.png b/images/edc_images/shortcut/camera_mode_gps_on_press.png
new file mode 100755 (executable)
index 0000000..0d6f705
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_gps_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_guidelines_off_nor.png b/images/edc_images/shortcut/camera_mode_guidelines_off_nor.png
new file mode 100755 (executable)
index 0000000..e97ccf4
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_guidelines_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_guidelines_off_press.png b/images/edc_images/shortcut/camera_mode_guidelines_off_press.png
new file mode 100755 (executable)
index 0000000..4125cb1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_guidelines_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_guidelines_on_nor.png b/images/edc_images/shortcut/camera_mode_guidelines_on_nor.png
new file mode 100755 (executable)
index 0000000..f11d1c1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_guidelines_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_guidelines_on_press.png b/images/edc_images/shortcut/camera_mode_guidelines_on_press.png
new file mode 100755 (executable)
index 0000000..ff1bf5b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_guidelines_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_100_nor.png b/images/edc_images/shortcut/camera_mode_iso_100_nor.png
new file mode 100755 (executable)
index 0000000..0be148b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_100_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_100_press.png b/images/edc_images/shortcut/camera_mode_iso_100_press.png
new file mode 100755 (executable)
index 0000000..dc4d2ec
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_100_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_200_nor.png b/images/edc_images/shortcut/camera_mode_iso_200_nor.png
new file mode 100755 (executable)
index 0000000..70b4996
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_200_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_200_press.png b/images/edc_images/shortcut/camera_mode_iso_200_press.png
new file mode 100755 (executable)
index 0000000..624f3e3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_200_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_400_nor.png b/images/edc_images/shortcut/camera_mode_iso_400_nor.png
new file mode 100755 (executable)
index 0000000..84beb92
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_400_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_400_press.png b/images/edc_images/shortcut/camera_mode_iso_400_press.png
new file mode 100755 (executable)
index 0000000..8b90927
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_400_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_50_nor.png b/images/edc_images/shortcut/camera_mode_iso_50_nor.png
new file mode 100755 (executable)
index 0000000..01559dd
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_50_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_50_press.png b/images/edc_images/shortcut/camera_mode_iso_50_press.png
new file mode 100755 (executable)
index 0000000..8c38563
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_50_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_800_nor.png b/images/edc_images/shortcut/camera_mode_iso_800_nor.png
new file mode 100755 (executable)
index 0000000..69cf20e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_800_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_800_press.png b/images/edc_images/shortcut/camera_mode_iso_800_press.png
new file mode 100755 (executable)
index 0000000..43153f7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_800_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_auto_nor.png b/images/edc_images/shortcut/camera_mode_iso_auto_nor.png
new file mode 100755 (executable)
index 0000000..aa73672
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_auto_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_iso_auto_press.png b/images/edc_images/shortcut/camera_mode_iso_auto_press.png
new file mode 100755 (executable)
index 0000000..cab451e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_iso_auto_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_center_weighted_nor.png b/images/edc_images/shortcut/camera_mode_metering_center_weighted_nor.png
new file mode 100755 (executable)
index 0000000..016dcd6
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_center_weighted_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_center_weighted_press.png b/images/edc_images/shortcut/camera_mode_metering_center_weighted_press.png
new file mode 100755 (executable)
index 0000000..2e35edc
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_center_weighted_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_matrix_nor.png b/images/edc_images/shortcut/camera_mode_metering_matrix_nor.png
new file mode 100755 (executable)
index 0000000..0a0491d
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_matrix_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_matrix_press.png b/images/edc_images/shortcut/camera_mode_metering_matrix_press.png
new file mode 100755 (executable)
index 0000000..76cea95
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_matrix_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_normal_nor.png b/images/edc_images/shortcut/camera_mode_metering_normal_nor.png
new file mode 100755 (executable)
index 0000000..66cc108
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_normal_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_pressmal_press.png b/images/edc_images/shortcut/camera_mode_metering_pressmal_press.png
new file mode 100755 (executable)
index 0000000..76fbd34
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_pressmal_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_spot_nor.png b/images/edc_images/shortcut/camera_mode_metering_spot_nor.png
new file mode 100755 (executable)
index 0000000..74e0930
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_spot_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_metering_spot_press.png b/images/edc_images/shortcut/camera_mode_metering_spot_press.png
new file mode 100755 (executable)
index 0000000..532c250
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_metering_spot_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_nor.png b/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_nor.png
new file mode 100755 (executable)
index 0000000..53cf2db
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_press.png b/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_press.png
new file mode 100755 (executable)
index 0000000..ca300e1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_outdoor_visibility_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_nor.png b/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_nor.png
new file mode 100755 (executable)
index 0000000..533d6df
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_press.png b/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_press.png
new file mode 100755 (executable)
index 0000000..05c19fb
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_outdoor_visibility_on_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_fast_nor.png b/images/edc_images/shortcut/camera_mode_recording_fast_nor.png
new file mode 100755 (executable)
index 0000000..40a2e55
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_fast_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_fast_press.png b/images/edc_images/shortcut/camera_mode_recording_fast_press.png
new file mode 100755 (executable)
index 0000000..fed381c
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_fast_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_nor.png b/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_nor.png
new file mode 100755 (executable)
index 0000000..596eed3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_press.png b/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_press.png
new file mode 100755 (executable)
index 0000000..1a845e0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_limit_for_mms_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_normal_nor.png b/images/edc_images/shortcut/camera_mode_recording_normal_nor.png
new file mode 100755 (executable)
index 0000000..a588c02
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_normal_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_normal_press.png b/images/edc_images/shortcut/camera_mode_recording_normal_press.png
new file mode 100755 (executable)
index 0000000..494d64b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_normal_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_slowmotion_nor.png b/images/edc_images/shortcut/camera_mode_recording_slowmotion_nor.png
new file mode 100755 (executable)
index 0000000..33968a6
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_slowmotion_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_recording_slowmotion_press.png b/images/edc_images/shortcut/camera_mode_recording_slowmotion_press.png
new file mode 100755 (executable)
index 0000000..64ca3af
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_recording_slowmotion_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_refresh_nor.png b/images/edc_images/shortcut/camera_mode_refresh_nor.png
new file mode 100755 (executable)
index 0000000..1a60fe1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_refresh_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_refresh_press.png b/images/edc_images/shortcut/camera_mode_refresh_press.png
new file mode 100755 (executable)
index 0000000..266f819
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_refresh_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_reset_nor.png b/images/edc_images/shortcut/camera_mode_reset_nor.png
new file mode 100755 (executable)
index 0000000..fdf04c7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_reset_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_reset_press.png b/images/edc_images/shortcut/camera_mode_reset_press.png
new file mode 100755 (executable)
index 0000000..607ca88
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_reset_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_0_3m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_0_3m_nor.png
new file mode 100755 (executable)
index 0000000..600361e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_0_3m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_0_3m_press.png b/images/edc_images/shortcut/camera_mode_resolution_0_3m_press.png
new file mode 100755 (executable)
index 0000000..5153b3a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_0_3m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1280X720_nor.png b/images/edc_images/shortcut/camera_mode_resolution_1280X720_nor.png
new file mode 100755 (executable)
index 0000000..af7f189
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1280X720_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1280X720_press.png b/images/edc_images/shortcut/camera_mode_resolution_1280X720_press.png
new file mode 100755 (executable)
index 0000000..fad0f02
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1280X720_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_176X144_nor.png b/images/edc_images/shortcut/camera_mode_resolution_176X144_nor.png
new file mode 100755 (executable)
index 0000000..7ae1a7b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_176X144_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_176X144_press.png b/images/edc_images/shortcut/camera_mode_resolution_176X144_press.png
new file mode 100755 (executable)
index 0000000..bf6d881
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_176X144_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1920X1080_nor.png b/images/edc_images/shortcut/camera_mode_resolution_1920X1080_nor.png
new file mode 100755 (executable)
index 0000000..0ab4185
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1920X1080_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1920X1080_press.png b/images/edc_images/shortcut/camera_mode_resolution_1920X1080_press.png
new file mode 100755 (executable)
index 0000000..cbd780d
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1920X1080_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1_3m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_1_3m_nor.png
new file mode 100755 (executable)
index 0000000..87bec93
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1_3m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_1_3m_press.png b/images/edc_images/shortcut/camera_mode_resolution_1_3m_press.png
new file mode 100755 (executable)
index 0000000..5e13ed5
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_1_3m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_2m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_2m_nor.png
new file mode 100755 (executable)
index 0000000..da32193
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_2m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_2m_press.png b/images/edc_images/shortcut/camera_mode_resolution_2m_press.png
new file mode 100755 (executable)
index 0000000..93598a4
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_2m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_320X240_nor.png b/images/edc_images/shortcut/camera_mode_resolution_320X240_nor.png
new file mode 100755 (executable)
index 0000000..8c6cbd6
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_320X240_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_320X240_press.png b/images/edc_images/shortcut/camera_mode_resolution_320X240_press.png
new file mode 100755 (executable)
index 0000000..8aa56d5
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_320X240_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_3_2m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_3_2m_nor.png
new file mode 100755 (executable)
index 0000000..e4be644
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_3_2m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_3_2m_press.png b/images/edc_images/shortcut/camera_mode_resolution_3_2m_press.png
new file mode 100755 (executable)
index 0000000..0a39c70
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_3_2m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_5m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_5m_nor.png
new file mode 100755 (executable)
index 0000000..0b8aeaf
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_5m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_5m_press.png b/images/edc_images/shortcut/camera_mode_resolution_5m_press.png
new file mode 100755 (executable)
index 0000000..8cff9fc
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_5m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_640X480_nor.png b/images/edc_images/shortcut/camera_mode_resolution_640X480_nor.png
new file mode 100755 (executable)
index 0000000..7b73e89
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_640X480_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_640X480_press.png b/images/edc_images/shortcut/camera_mode_resolution_640X480_press.png
new file mode 100755 (executable)
index 0000000..d393212
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_640X480_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_720X480_nor.png b/images/edc_images/shortcut/camera_mode_resolution_720X480_nor.png
new file mode 100755 (executable)
index 0000000..eea37c4
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_720X480_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_720X480_press.png b/images/edc_images/shortcut/camera_mode_resolution_720X480_press.png
new file mode 100755 (executable)
index 0000000..1629c76
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_720X480_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_8m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_8m_nor.png
new file mode 100755 (executable)
index 0000000..d26dd48
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_8m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_8m_press.png b/images/edc_images/shortcut/camera_mode_resolution_8m_press.png
new file mode 100755 (executable)
index 0000000..c907a01
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_8m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w0_9m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w0_9m_nor.png
new file mode 100755 (executable)
index 0000000..ab369c9
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w0_9m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w0_9m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w0_9m_press.png
new file mode 100755 (executable)
index 0000000..81959be
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w0_9m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w2_4m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w2_4m_nor.png
new file mode 100755 (executable)
index 0000000..5f547d8
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w2_4m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w2_4m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w2_4m_press.png
new file mode 100755 (executable)
index 0000000..92d1281
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w2_4m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w2m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w2m_nor.png
new file mode 100755 (executable)
index 0000000..07bf4a9
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w2m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w2m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w2m_press.png
new file mode 100755 (executable)
index 0000000..3f7a124
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w2m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w3_6m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w3_6m_nor.png
new file mode 100755 (executable)
index 0000000..7fe4489
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w3_6m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w3_6m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w3_6m_press.png
new file mode 100755 (executable)
index 0000000..c08cfa3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w3_6m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w4m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w4m_nor.png
new file mode 100755 (executable)
index 0000000..f1b89a2
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w4m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w4m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w4m_press.png
new file mode 100755 (executable)
index 0000000..61c8a00
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w4m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w5_7m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w5_7m_nor.png
new file mode 100755 (executable)
index 0000000..a2f2322
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w5_7m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w5_7m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w5_7m_press.png
new file mode 100755 (executable)
index 0000000..6f07a11
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w5_7m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w6m_nor.png b/images/edc_images/shortcut/camera_mode_resolution_w6m_nor.png
new file mode 100755 (executable)
index 0000000..a7cc475
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w6m_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_resolution_w6m_press.png b/images/edc_images/shortcut/camera_mode_resolution_w6m_press.png
new file mode 100755 (executable)
index 0000000..9c7a7c1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_resolution_w6m_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_self_rec_nor.png b/images/edc_images/shortcut/camera_mode_self_rec_nor.png
new file mode 100755 (executable)
index 0000000..129d8a6
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_self_rec_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_self_rec_press.png b/images/edc_images/shortcut/camera_mode_self_rec_press.png
new file mode 100755 (executable)
index 0000000..d1e7210
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_self_rec_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_self_shot_nor.png b/images/edc_images/shortcut/camera_mode_self_shot_nor.png
new file mode 100755 (executable)
index 0000000..38402a1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_self_shot_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_self_shot_press.png b/images/edc_images/shortcut/camera_mode_self_shot_press.png
new file mode 100755 (executable)
index 0000000..a2b064e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_self_shot_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_setting_nor.png b/images/edc_images/shortcut/camera_mode_setting_nor.png
new file mode 100755 (executable)
index 0000000..3ea443b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_setting_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_setting_press.png b/images/edc_images/shortcut/camera_mode_setting_press.png
new file mode 100755 (executable)
index 0000000..e97d4f1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_setting_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_nor.png
new file mode 100755 (executable)
index 0000000..c0dbbcc
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_press.png
new file mode 100755 (executable)
index 0000000..d2f5e72
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_nor.png
new file mode 100755 (executable)
index 0000000..820a4de
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_press.png
new file mode 100755 (executable)
index 0000000..b3e51c1
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_nor.png
new file mode 100755 (executable)
index 0000000..c1b6ca7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_press.png
new file mode 100755 (executable)
index 0000000..8d99665
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_nor.png
new file mode 100755 (executable)
index 0000000..5f5625a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_press.png
new file mode 100755 (executable)
index 0000000..d74db8d
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_beauty_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_nor.png
new file mode 100755 (executable)
index 0000000..b107c00
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_press.png
new file mode 100755 (executable)
index 0000000..250514d
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_nor.png
new file mode 100755 (executable)
index 0000000..cd08a9e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_press.png
new file mode 100755 (executable)
index 0000000..1900367
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_nor.png
new file mode 100755 (executable)
index 0000000..2f7efee
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_press.png
new file mode 100755 (executable)
index 0000000..b97efa5
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_nor.png
new file mode 100755 (executable)
index 0000000..a0f0c16
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_press.png
new file mode 100755 (executable)
index 0000000..660a2ac
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_nor.png
new file mode 100755 (executable)
index 0000000..f4d1eaa
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_press.png
new file mode 100755 (executable)
index 0000000..b2f3b2e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_dawn_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_fall_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_fall_nor.png
new file mode 100755 (executable)
index 0000000..9b68bb0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_fall_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_fall_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_fall_press.png
new file mode 100755 (executable)
index 0000000..8b7e139
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_fall_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_firework_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_firework_nor.png
new file mode 100755 (executable)
index 0000000..ea7bb6a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_firework_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_firework_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_firework_press.png
new file mode 100755 (executable)
index 0000000..cf95c06
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_firework_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_nor.png
new file mode 100755 (executable)
index 0000000..78a691a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_press.png
new file mode 100755 (executable)
index 0000000..d454f98
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_hdr_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_nor.png
new file mode 100755 (executable)
index 0000000..f2fd3fb
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_press.png
new file mode 100755 (executable)
index 0000000..1ad2e04
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_landscape_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_night_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_night_nor.png
new file mode 100755 (executable)
index 0000000..fb17fac
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_night_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_night_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_night_press.png
new file mode 100755 (executable)
index 0000000..053b35f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_night_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_nor.png
new file mode 100755 (executable)
index 0000000..eab49de
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_press.png
new file mode 100755 (executable)
index 0000000..1b4443a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_panorama_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_nor.png
new file mode 100755 (executable)
index 0000000..ddb2ad7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_press.png
new file mode 100755 (executable)
index 0000000..ae0f0a5
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_nor.png
new file mode 100755 (executable)
index 0000000..b4bfb60
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_press.png
new file mode 100755 (executable)
index 0000000..1757ca0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_portrait_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_nor.png
new file mode 100755 (executable)
index 0000000..812208d
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_press.png
new file mode 100755 (executable)
index 0000000..1c9923a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_share_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_share_nor.png
new file mode 100755 (executable)
index 0000000..ab25089
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_share_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_share_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_share_press.png
new file mode 100755 (executable)
index 0000000..904f11e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_share_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_nor.png
new file mode 100755 (executable)
index 0000000..f7db0d2
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_press.png
new file mode 100755 (executable)
index 0000000..4d91458
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_nor.png
new file mode 100755 (executable)
index 0000000..dbba7f7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_press.png
new file mode 100755 (executable)
index 0000000..f8de991
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_sports_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_sports_nor.png
new file mode 100755 (executable)
index 0000000..a1e79dc
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_sports_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_sports_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_sports_press.png
new file mode 100755 (executable)
index 0000000..9d18212
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_sports_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_nor.png
new file mode 100755 (executable)
index 0000000..f44e5ff
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_press.png
new file mode 100755 (executable)
index 0000000..1fa0ff5
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_sunset_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_text_nor.png b/images/edc_images/shortcut/camera_mode_shooting_mode_text_nor.png
new file mode 100755 (executable)
index 0000000..a66ac14
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_text_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shooting_mode_text_press.png b/images/edc_images/shortcut/camera_mode_shooting_mode_text_press.png
new file mode 100755 (executable)
index 0000000..b7746ee
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shooting_mode_text_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shutter.png b/images/edc_images/shortcut/camera_mode_shutter.png
new file mode 100755 (executable)
index 0000000..1a12063
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shutter.png differ
diff --git a/images/edc_images/shortcut/camera_mode_shutter_press.png b/images/edc_images/shortcut/camera_mode_shutter_press.png
new file mode 100755 (executable)
index 0000000..77df2b7
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_shutter_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_storage_mydevice_nor.png b/images/edc_images/shortcut/camera_mode_storage_mydevice_nor.png
new file mode 100755 (executable)
index 0000000..8fdc47e
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_storage_mydevice_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_storage_mydevice_press.png b/images/edc_images/shortcut/camera_mode_storage_mydevice_press.png
new file mode 100755 (executable)
index 0000000..5b02708
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_storage_mydevice_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_storage_storagecard_nor.png b/images/edc_images/shortcut/camera_mode_storage_storagecard_nor.png
new file mode 100755 (executable)
index 0000000..c3041eb
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_storage_storagecard_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_storage_storagecard_press.png b/images/edc_images/shortcut/camera_mode_storage_storagecard_press.png
new file mode 100755 (executable)
index 0000000..6782e3a
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_storage_storagecard_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_10_nor.png b/images/edc_images/shortcut/camera_mode_timer_10_nor.png
new file mode 100755 (executable)
index 0000000..7049da3
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_10_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_10_press.png b/images/edc_images/shortcut/camera_mode_timer_10_press.png
new file mode 100755 (executable)
index 0000000..bcec218
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_10_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_2_nor.png b/images/edc_images/shortcut/camera_mode_timer_2_nor.png
new file mode 100755 (executable)
index 0000000..1baaa17
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_2_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_2_press.png b/images/edc_images/shortcut/camera_mode_timer_2_press.png
new file mode 100755 (executable)
index 0000000..7d466ab
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_2_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_5_nor.png b/images/edc_images/shortcut/camera_mode_timer_5_nor.png
new file mode 100755 (executable)
index 0000000..b17a80f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_5_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_5_press.png b/images/edc_images/shortcut/camera_mode_timer_5_press.png
new file mode 100755 (executable)
index 0000000..c7dab2f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_5_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_off_nor.png b/images/edc_images/shortcut/camera_mode_timer_off_nor.png
new file mode 100755 (executable)
index 0000000..0184a88
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_off_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_timer_off_press.png b/images/edc_images/shortcut/camera_mode_timer_off_press.png
new file mode 100755 (executable)
index 0000000..55250a0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_timer_off_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_auto_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_auto_nor.png
new file mode 100755 (executable)
index 0000000..7487ddd
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_auto_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_auto_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_auto_press.png
new file mode 100755 (executable)
index 0000000..1d2ccdf
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_auto_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_nor.png
new file mode 100755 (executable)
index 0000000..86331a6
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_press.png
new file mode 100755 (executable)
index 0000000..391275b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_cloudy_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_day_light_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_day_light_nor.png
new file mode 100755 (executable)
index 0000000..669cd1b
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_day_light_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_day_light_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_day_light_press.png
new file mode 100755 (executable)
index 0000000..45a7bcd
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_day_light_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_nor.png
new file mode 100755 (executable)
index 0000000..8614819
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_press.png
new file mode 100755 (executable)
index 0000000..8251c18
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_horizon_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_horizon_nor.png
new file mode 100755 (executable)
index 0000000..ce5f3ee
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_horizon_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_horizon_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_horizon_press.png
new file mode 100755 (executable)
index 0000000..dcf3c33
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_horizon_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_nor.png
new file mode 100755 (executable)
index 0000000..ce3dbd0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_press.png
new file mode 100755 (executable)
index 0000000..8bb3b45
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_incandescent_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_shade_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_shade_nor.png
new file mode 100755 (executable)
index 0000000..3149288
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_shade_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_shade_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_shade_press.png
new file mode 100755 (executable)
index 0000000..f861797
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_shade_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_nor.png b/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_nor.png
new file mode 100755 (executable)
index 0000000..f6e84f0
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_nor.png differ
diff --git a/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_press.png b/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_press.png
new file mode 100755 (executable)
index 0000000..8bb3b45
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_whitebalance_tungsten_press.png differ
diff --git a/images/edc_images/shortcut/camera_mode_zoom.png b/images/edc_images/shortcut/camera_mode_zoom.png
new file mode 100755 (executable)
index 0000000..11e3578
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_zoom.png differ
diff --git a/images/edc_images/shortcut/camera_mode_zoom_press.png b/images/edc_images/shortcut/camera_mode_zoom_press.png
new file mode 100755 (executable)
index 0000000..aa65c9f
Binary files /dev/null and b/images/edc_images/shortcut/camera_mode_zoom_press.png differ
diff --git a/images/edc_images/shortcut/sharewith_icon.png b/images/edc_images/shortcut/sharewith_icon.png
new file mode 100755 (executable)
index 0000000..37f2106
Binary files /dev/null and b/images/edc_images/shortcut/sharewith_icon.png differ
diff --git a/images/edc_images/shortcut/sharewith_icon_press.png b/images/edc_images/shortcut/sharewith_icon_press.png
new file mode 100755 (executable)
index 0000000..c4cc6e0
Binary files /dev/null and b/images/edc_images/shortcut/sharewith_icon_press.png differ
diff --git a/images/edc_images/tmp/11_camcorder_standby_press.png b/images/edc_images/tmp/11_camcorder_standby_press.png
new file mode 100755 (executable)
index 0000000..94e09c2
Binary files /dev/null and b/images/edc_images/tmp/11_camcorder_standby_press.png differ
diff --git a/images/edc_images/tmp/11_camcorder_standby_press_ver.png b/images/edc_images/tmp/11_camcorder_standby_press_ver.png
new file mode 100755 (executable)
index 0000000..ed19b81
Binary files /dev/null and b/images/edc_images/tmp/11_camcorder_standby_press_ver.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_bg.png b/images/edc_images/tmp/11_camera_mode_bg.png
new file mode 100755 (executable)
index 0000000..b741abd
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_bg.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_bg_ver.png b/images/edc_images/tmp/11_camera_mode_bg_ver.png
new file mode 100755 (executable)
index 0000000..0d3aca7
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_bg_ver.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_button.png b/images/edc_images/tmp/11_camera_mode_button.png
new file mode 100755 (executable)
index 0000000..513d118
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_button.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_button_ver.png b/images/edc_images/tmp/11_camera_mode_button_ver.png
new file mode 100755 (executable)
index 0000000..6cc056f
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_button_ver.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_camcorder_off.png b/images/edc_images/tmp/11_camera_mode_camcorder_off.png
new file mode 100755 (executable)
index 0000000..e4dc964
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_camcorder_off.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_camcorder_on.png b/images/edc_images/tmp/11_camera_mode_camcorder_on.png
new file mode 100755 (executable)
index 0000000..e4dc964
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_camcorder_on.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_camera_off.png b/images/edc_images/tmp/11_camera_mode_camera_off.png
new file mode 100755 (executable)
index 0000000..b51ec43
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_camera_off.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_camera_on.png b/images/edc_images/tmp/11_camera_mode_camera_on.png
new file mode 100755 (executable)
index 0000000..b51ec43
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_camera_on.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_recording_normal.png b/images/edc_images/tmp/11_camera_mode_recording_normal.png
new file mode 100755 (executable)
index 0000000..73efa2e
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_recording_normal.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_recording_normal_ver.png b/images/edc_images/tmp/11_camera_mode_recording_normal_ver.png
new file mode 100755 (executable)
index 0000000..fcb07b1
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_recording_normal_ver.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_recording_press.png b/images/edc_images/tmp/11_camera_mode_recording_press.png
new file mode 100755 (executable)
index 0000000..150a6dc
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_recording_press.png differ
diff --git a/images/edc_images/tmp/11_camera_mode_recording_press_ver.png b/images/edc_images/tmp/11_camera_mode_recording_press_ver.png
new file mode 100755 (executable)
index 0000000..b1115c0
Binary files /dev/null and b/images/edc_images/tmp/11_camera_mode_recording_press_ver.png differ
diff --git a/images/edc_images/tmp/11_camera_snapshot.png b/images/edc_images/tmp/11_camera_snapshot.png
new file mode 100755 (executable)
index 0000000..21804b6
Binary files /dev/null and b/images/edc_images/tmp/11_camera_snapshot.png differ
diff --git a/images/edc_images/tmp/11_camera_snapshot_press.png b/images/edc_images/tmp/11_camera_snapshot_press.png
new file mode 100755 (executable)
index 0000000..7a1becc
Binary files /dev/null and b/images/edc_images/tmp/11_camera_snapshot_press.png differ
diff --git a/images/edc_images/tmp/37_guideline_1.png b/images/edc_images/tmp/37_guideline_1.png
new file mode 100644 (file)
index 0000000..2e35a79
Binary files /dev/null and b/images/edc_images/tmp/37_guideline_1.png differ
diff --git a/images/edc_images/tmp/37_guideline_2.png b/images/edc_images/tmp/37_guideline_2.png
new file mode 100644 (file)
index 0000000..297e159
Binary files /dev/null and b/images/edc_images/tmp/37_guideline_2.png differ
diff --git a/images/edc_images/tmp/37_guideline_opa_1.png b/images/edc_images/tmp/37_guideline_opa_1.png
new file mode 100644 (file)
index 0000000..74e42a5
Binary files /dev/null and b/images/edc_images/tmp/37_guideline_opa_1.png differ
diff --git a/images/edc_images/tmp/37_guideline_opa_2.png b/images/edc_images/tmp/37_guideline_opa_2.png
new file mode 100644 (file)
index 0000000..1844d7f
Binary files /dev/null and b/images/edc_images/tmp/37_guideline_opa_2.png differ
diff --git a/images/edc_images/tmp/37_shootingmode_popup_bg.png b/images/edc_images/tmp/37_shootingmode_popup_bg.png
new file mode 100755 (executable)
index 0000000..770cee9
Binary files /dev/null and b/images/edc_images/tmp/37_shootingmode_popup_bg.png differ
diff --git a/images/edc_images/touch_af_focus_rect_01.png b/images/edc_images/touch_af_focus_rect_01.png
new file mode 100755 (executable)
index 0000000..ffed3cd
Binary files /dev/null and b/images/edc_images/touch_af_focus_rect_01.png differ
diff --git a/images/edc_images/touch_af_focus_rect_02.png b/images/edc_images/touch_af_focus_rect_02.png
new file mode 100755 (executable)
index 0000000..54302bb
Binary files /dev/null and b/images/edc_images/touch_af_focus_rect_02.png differ
diff --git a/images/edc_images/touch_af_focus_rect_03.png b/images/edc_images/touch_af_focus_rect_03.png
new file mode 100755 (executable)
index 0000000..30fe515
Binary files /dev/null and b/images/edc_images/touch_af_focus_rect_03.png differ
diff --git a/images/edc_images/vertical/camera_mode_bg_ver.png b/images/edc_images/vertical/camera_mode_bg_ver.png
new file mode 100755 (executable)
index 0000000..c1ad3c4
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_bg_ver.png differ
diff --git a/images/edc_images/vertical/camera_mode_button_ver.png b/images/edc_images/vertical/camera_mode_button_ver.png
new file mode 100755 (executable)
index 0000000..b2540df
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_button_ver.png differ
diff --git a/images/edc_images/vertical/camera_mode_shutter_dim_ver.png b/images/edc_images/vertical/camera_mode_shutter_dim_ver.png
new file mode 100755 (executable)
index 0000000..e6ad148
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_shutter_dim_ver.png differ
diff --git a/images/edc_images/vertical/camera_mode_shutter_norma_ver_inverse.png b/images/edc_images/vertical/camera_mode_shutter_norma_ver_inverse.png
new file mode 100644 (file)
index 0000000..68ff3f3
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_shutter_norma_ver_inverse.png differ
diff --git a/images/edc_images/vertical/camera_mode_shutter_normal_ver.png b/images/edc_images/vertical/camera_mode_shutter_normal_ver.png
new file mode 100644 (file)
index 0000000..b5e2dd0
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_shutter_normal_ver.png differ
diff --git a/images/edc_images/vertical/camera_mode_shutter_press_ver.png b/images/edc_images/vertical/camera_mode_shutter_press_ver.png
new file mode 100755 (executable)
index 0000000..b8ee585
Binary files /dev/null and b/images/edc_images/vertical/camera_mode_shutter_press_ver.png differ
diff --git a/images/edc_images/vertical/camera_normal_bg_ver.png b/images/edc_images/vertical/camera_normal_bg_ver.png
new file mode 100755 (executable)
index 0000000..313e962
Binary files /dev/null and b/images/edc_images/vertical/camera_normal_bg_ver.png differ
diff --git a/images/edc_images/vertical/camera_normal_bg_ver2.png b/images/edc_images/vertical/camera_normal_bg_ver2.png
new file mode 100755 (executable)
index 0000000..7c09aad
Binary files /dev/null and b/images/edc_images/vertical/camera_normal_bg_ver2.png differ
diff --git a/images/edc_images/vertical/camera_normal_bg_ver2_01.png b/images/edc_images/vertical/camera_normal_bg_ver2_01.png
new file mode 100755 (executable)
index 0000000..0371449
Binary files /dev/null and b/images/edc_images/vertical/camera_normal_bg_ver2_01.png differ
diff --git a/images/edc_images/vertical/camera_normal_bg_ver_01.png b/images/edc_images/vertical/camera_normal_bg_ver_01.png
new file mode 100755 (executable)
index 0000000..edac7f7
Binary files /dev/null and b/images/edc_images/vertical/camera_normal_bg_ver_01.png differ
diff --git a/images/edc_images/vertical/camera_option_popup_anker_vertical.png b/images/edc_images/vertical/camera_option_popup_anker_vertical.png
new file mode 100755 (executable)
index 0000000..71b4154
Binary files /dev/null and b/images/edc_images/vertical/camera_option_popup_anker_vertical.png differ
diff --git a/images/edc_images/vertical/camera_option_popup_anker_vertical_inverse.png b/images/edc_images/vertical/camera_option_popup_anker_vertical_inverse.png
new file mode 100755 (executable)
index 0000000..b14eb9e
Binary files /dev/null and b/images/edc_images/vertical/camera_option_popup_anker_vertical_inverse.png differ
diff --git a/images/edc_images/vertical/camera_popup_ex_bar_ver.png b/images/edc_images/vertical/camera_popup_ex_bar_ver.png
new file mode 100755 (executable)
index 0000000..8e5ea75
Binary files /dev/null and b/images/edc_images/vertical/camera_popup_ex_bar_ver.png differ
diff --git a/images/edc_images/vertical/camera_popup_zoom_bar_ver.png b/images/edc_images/vertical/camera_popup_zoom_bar_ver.png
new file mode 100755 (executable)
index 0000000..269a3d3
Binary files /dev/null and b/images/edc_images/vertical/camera_popup_zoom_bar_ver.png differ
diff --git a/images/edc_images/vertical/camera_popup_zoom_ver.png b/images/edc_images/vertical/camera_popup_zoom_ver.png
new file mode 100755 (executable)
index 0000000..e6bf638
Binary files /dev/null and b/images/edc_images/vertical/camera_popup_zoom_ver.png differ
diff --git a/images/edc_images/vertical/camera_shrtcut_edit_bg_02_ver.png b/images/edc_images/vertical/camera_shrtcut_edit_bg_02_ver.png
new file mode 100755 (executable)
index 0000000..0a0e510
Binary files /dev/null and b/images/edc_images/vertical/camera_shrtcut_edit_bg_02_ver.png differ
diff --git a/images/edc_images/vertical/camera_shrtcut_edit_bg_ver.png b/images/edc_images/vertical/camera_shrtcut_edit_bg_ver.png
new file mode 100755 (executable)
index 0000000..ed7dd12
Binary files /dev/null and b/images/edc_images/vertical/camera_shrtcut_edit_bg_ver.png differ
diff --git a/images/edc_images/vertical/camera_shrtcut_menubar_bg_ver.png b/images/edc_images/vertical/camera_shrtcut_menubar_bg_ver.png
new file mode 100755 (executable)
index 0000000..19b343c
Binary files /dev/null and b/images/edc_images/vertical/camera_shrtcut_menubar_bg_ver.png differ
diff --git a/images/edc_images/vertical/camera_shrtcut_text_bg_ver.png b/images/edc_images/vertical/camera_shrtcut_text_bg_ver.png
new file mode 100755 (executable)
index 0000000..5d58a2f
Binary files /dev/null and b/images/edc_images/vertical/camera_shrtcut_text_bg_ver.png differ
diff --git a/include/CamDeviceCapacity.h b/include/CamDeviceCapacity.h
new file mode 100755 (executable)
index 0000000..72fb09d
--- /dev/null
@@ -0,0 +1,118 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _CCAM_DEVICE_CAPACITY_H_\r
+#define _CCAM_DEVICE_CAPACITY_H_\r
+\r
+#include "cam_property.h"\r
+\r
+class CCamDeviceCapacity\r
+{\r
+       //===========================================================================\r
+       // Constructor & Destructor\r
+public:\r
+\r
+protected:\r
+       CCamDeviceCapacity();\r
+       virtual ~CCamDeviceCapacity();\r
+\r
+\r
+       //===========================================================================\r
+       // Attributes\r
+protected:\r
+       static CCamDeviceCapacity* m_pInstance;\r
+\r
+       typedef struct _DevCapsSupported\r
+       {\r
+               bool    bChecked;\r
+               bool    bSupported;\r
+       }DevCapsSupported;\r
+\r
+       typedef struct _DevCapsMinMax\r
+       {\r
+               bool    bChecked;\r
+               bool    bSupported;\r
+               int     nMin;\r
+               int     nMax;\r
+       }DevCapsMinMax;\r
+\r
+       typedef struct _DevCapsRange\r
+       {\r
+               bool bChecked;\r
+               bool bSupported;\r
+               unsigned int unCaps;\r
+       }DevCapsRange;\r
+\r
+\r
+       DevCapsRange m_CamRes;\r
+       DevCapsRange m_RecRes;\r
+       DevCapsRange m_Focus;\r
+       DevCapsRange m_Effect;\r
+       DevCapsRange m_WB;\r
+       DevCapsRange m_Scene;\r
+       DevCapsRange m_Metering;\r
+       DevCapsRange m_ISO;\r
+       DevCapsRange m_Flash;\r
+       DevCapsRange m_Fps;\r
+       DevCapsRange m_Shot;\r
+       DevCapsRange m_RecMode;\r
+\r
+       DevCapsMinMax   m_Zoom;\r
+       DevCapsMinMax   m_Ev;\r
+       DevCapsMinMax   m_Br;\r
+\r
+       DevCapsSupported m_WDR;\r
+       DevCapsSupported m_AntiShake;\r
+       DevCapsSupported m_RecAntiShake;\r
+       DevCapsSupported m_Outdoorvisibility;\r
+\r
+       unsigned int m_uFuncCaps;\r
+       //===========================================================================\r
+       // Interfaces\r
+public:\r
+\r
+       static CCamDeviceCapacity*      GetInstance();\r
+       void                                    Destroy();\r
+       void                                    ResetCaps();\r
+\r
+       void            GetCamDevFuncCaps(unsigned int *eType, void *user_data);\r
+\r
+       bool            GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevWBCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevISOCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data);\r
+       bool            GetCamDevZoomCaps(int *min, int *max);\r
+       bool            GetCamDevEvCaps(int *min, int *max);\r
+       bool            GetCamDevBrCaps(int *min, int *max);\r
+\r
+\r
+\r
+private:\r
+       bool            IsSupported(unsigned int type, CamDeviceType deviceType, void *user_data);\r
+};\r
+\r
+\r
+#endif //_CCAM_DEVICE_CAPACITY_H_\r
+\r
diff --git a/include/CamTypeConverter.h b/include/CamTypeConverter.h
new file mode 100755 (executable)
index 0000000..699fee5
--- /dev/null
@@ -0,0 +1,48 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef CAM_TYPECONVERTER_H_\r
+#define CAM_TYPECONVERTER_H_\r
+\r
+#include "camera.h"\r
+#include "cam_property.h"\r
+\r
+class CCamTypeConverter {\r
+\r
+public:\r
+static unsigned int CamIsoDevConvertCaps(camera_attr_iso_e iso);\r
+static unsigned int CamEffectDevConvertCaps(camera_attr_effect_mode_e effect);\r
+static unsigned int CamFpsDevConvertCaps(camera_attr_fps_e fps);\r
+static unsigned int CamWbDevConvertCaps(camera_attr_whitebalance_e wb);\r
+static unsigned int CamMeteringDevConvertCaps(camera_attr_exposure_mode_e metering);\r
+static unsigned int CamSceneDevConvertCaps(camera_attr_scene_mode_e scene);\r
+static unsigned int CamFlashDevConvertCaps(camera_attr_flash_mode_e flash);\r
+static unsigned int CamFocusDevConvertCaps(camera_attr_af_mode_e focus);\r
+\r
+static unsigned int CamIsoCamConvertCaps(CamIso iso);\r
+static unsigned int CamEffectCamConvertCaps(CamSettingsEffects effect);\r
+static unsigned int CamWbCamConvertCaps(CamSettingsWB wb);\r
+static unsigned int CamMeteringCamConvertCaps(CamMetering metering);\r
+static unsigned int CamSceneCamConvertCaps(CamSceneMode scene);\r
+static unsigned int CamFlashCamConvertCaps(CamFlashMode flash);\r
+static unsigned int CamFocusCamConvertCaps(CamFocusMode focus);\r
+static unsigned int CamResolutionCamConvertCaps(unsigned int res);\r
+\r
+};\r
+\r
+#endif                         /*  CAM_TYPECONVERTER_H_ */\r
+\r
diff --git a/include/cam.h b/include/cam.h
new file mode 100755 (executable)
index 0000000..cb1aba9
--- /dev/null
@@ -0,0 +1,394 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_CAM_H__
+#define __DEF_CAM_H__
+
+
+#include <Elementary.h>
+#include <Ecore.h>
+#include <Ecore_X.h>
+#include <dlfcn.h>
+#include <utilX.h>
+
+#include "cam_property.h"
+#include "cam_app.h"
+#include "edc_string.h"
+#include <fcntl.h>
+
+#include <vconf.h>
+#include <ui-gadget.h>
+#include <app.h>
+#include <media_content.h>
+#include <sensors.h>
+
+
+#define DISABLE_FOR_DEMO 0
+
+#ifdef USE_FIFO_THREAD
+#define CAM_FIFO_PATH "/tmp/cam_cmd_fifo"
+
+#define CAM_FIFO_CMD_EXIT      "EXIT"
+#define CAM_FIFO_CMD_START     "START"
+
+#define CAM_CAPTURE_AUTO_START "CAPTURE_AUTO_START"
+
+#define MAX_NUM_OF_FIFO_TOKEN  6
+#endif
+
+#define PACKAGE                                                        "ug-camera-efl"
+#define GRP_MAIN                                               "main"
+
+#define EDJ_PATH                                               "/usr/ug/res/edje/"PACKAGE
+#define CAM_IMAGE_PATH                                 "/usr/ug/res/images/"PACKAGE"/src_images/"
+
+#define CAM_MAIN_LAYOUT_EDJ_NAME                                               EDJ_PATH"/cam_main_layout.edj"
+
+#define CAM_RECORDING_EDJ_NAME                                                 EDJ_PATH"/cam_recording_edje.edj"
+#define CAM_RECORDING_INVERSE_EDJ_NAME                                 EDJ_PATH"/cam_recording_edje_inverse.edj"
+#define CAM_RECORDING_VERTICAL_EDJ_NAME                                        EDJ_PATH"/cam_recording_edje_vertical.edj"
+#define CAM_RECORDING_VERTICAL_INVERSE_EDJ_NAME                        EDJ_PATH"/cam_recording_edje_vertical_inverse.edj"
+
+#define CAM_TOOLBAR_LAYOUT_EDJ_NAME                                            EDJ_PATH"/cam_toolbar_layout.edj"
+#define CAM_TOOLBAR_LAYOUT_INVERSE_EDJ_NAME                            EDJ_PATH"/cam_toolbar_layout_inverse.edj"
+#define CAM_TOOLBAR_LAYOUT_VERTICAL_EDJ_NAME                   EDJ_PATH"/cam_toolbar_layout_vertical.edj"
+#define CAM_TOOLBAR_LAYOUT_VERTICAL_INVERSE_EDJ_NAME   EDJ_PATH"/cam_toolbar_layout_vertical_inverse.edj"
+
+#define CAM_SETTING_POPUP_STYLE_EDJ_NAME                               EDJ_PATH"/style_ctxpopup_camera.edj"
+#define CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME            EDJ_PATH"/style_ctxpopup_camera_with_radio.edj"
+#define CAM_SETTING_POPUP_LAYOUT_EDJ_NAME                              EDJ_PATH"/cam_setting_popup_layout.edj"
+#define CAM_SLIDER_STYLE_EDJ_NAME                                              EDJ_PATH"/style_slider_camera.edj"
+#define CAM_LABEL_STYLE_EDJ_NAME                                               EDJ_PATH"/style_label_camera.edj"
+#define CAM_BUTTON_STYLE_EDJ_NAME                                              EDJ_PATH"/style_button_camera.edj"
+
+
+#define CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME                            EDJ_PATH"/cam_ctxpopup_shortcuts.edj"
+
+#define CAM_UTILS_EDJ_NAME                                                             EDJ_PATH"/cam_utils.edj"
+#define CAM_INDICATOR_EDJ_NAME                                                 EDJ_PATH"/cam_indicator_layout.edj"
+
+#define CAM_EV_EDJ_NAME                                                                        EDJ_PATH"/cam_ev_layout.edj"
+#define CAM_EV_EDJ_INVERSE_NAME                                                        EDJ_PATH"/cam_ev_layout_inverse.edj"
+#define CAM_EV_EDJ_VERTICAL_NAME                                               EDJ_PATH"/cam_ev_layout_vertical.edj"
+#define CAM_EV_EDJ_VERTICAL_INVERSE_NAME                               EDJ_PATH"/cam_ev_layout_vertical_inverse.edj"
+
+#define CAM_ZOOM_EDJ_NAME                                                              EDJ_PATH"/cam_zoom_layout.edj"
+#define CAM_ZOOM_EDJ_INVERSE_NAME                                              EDJ_PATH"/cam_zoom_layout_inverse.edj"
+#define CAM_ZOOM_EDJ_VERTICAL_NAME                                             EDJ_PATH"/cam_zoom_layout_vertical.edj"
+#define CAM_ZOOM_EDJ_VERTICAL_INVERSE_NAME                             EDJ_PATH"/cam_zoom_layout_vertical_inverse.edj"
+
+#define CAM_IMAGE_EDJ_NAME                                                             EDJ_PATH"/cam_images.edj"
+
+#define IMAGE_VIEWER_VIEW_MODE_KEY_NAME                                        "View Mode"
+#define IMAGE_VIEWER_FILE_PATH_KEY_NAME                                        "Path"
+#define IMAGE_VIEWER_SET_AS_TYPE                                               "Setas type"
+#define IMAGE_VIEWER_RESOLUTION                                                        "Resolution"
+#define IMAGE_VIEWER_UG_NAME                                                   "image-viewer-efl"
+
+#define LOCATION_UG_NAME                                                               "setting-location-efl"
+
+#define PREVIEW_WIDTH                          640
+#define PREVIEW_HEIGHT                         480
+
+#define WINDOW_W                                       640     /* 400 */ /*1280*/
+#define WINDOW_H                                       480     /* 240 */ /*720*/
+
+#define SERVICE_MIME_TYPE_IMAGE_1                                              "image/jpg"
+#define SERVICE_MIME_TYPE_IMAGE_2                                              "image/jpeg"
+#define SERVICE_MIME_TYPE_VIDEO_1                                              "video/3gp"
+#define SERVICE_MIME_TYPE_VIDEO_2                                              "video/3gpp"
+#define SERVICE_OPTIONAL_KEY_ALLOW_SWITCH                              "http://tizen.org/appcontrol/data/camera/allow_switch"
+
+
+#define DEFAULT_WIN_ANGLE (270)
+
+#define CAM_FILE_PATH_MAX 1024
+#define EFL_TEMP_CODE
+/* #define USE_CAMERA_APP_SHUTTER_SOUND 1 */
+#define ENABLE_CAPTURE_ANIMATION
+
+struct appdata {
+       Evas *evas;
+       Ecore_Evas *ee;
+       Evas_Object *ug_base;
+       Evas_Object *win_main;
+       Ecore_X_Window main_xid;
+       Ecore_Pipe *main_pipe;
+       CamUgState ug_state;
+
+       app_device_orientation_e rot_current;
+       app_device_orientation_e rot_previous;
+
+       int angle_pre;
+       int angle;
+       int rotate_angle;
+       gboolean is_rotating;
+       gboolean is_processing; /*note: programm busy flag, now just used for bust shot processing popup*/
+       gboolean is_capture_animation_processing;
+
+       int camcorder_rotate;
+
+       Evas_Object *gesture;           /* gesture layout */
+
+#ifdef ENABLE_CAPTURE_ANIMATION
+       Evas_Object *shutter_screen;
+       CamRectangle shutter_src_rect;
+       CamRectangle shutter_des_rect;
+       Evas_Object *rect_image;
+#endif
+
+       int win_width;
+       int win_height;
+
+       int camfw_video_width;
+       int camfw_video_height;
+
+       double af_start_x;      /* area start coordination */
+       double af_start_y;      /* area start coordination */
+       int af_x;
+       int af_y;
+       double camera_focus_w;  /* size of focus image */
+       double camera_focus_h;  /* size of focus image */
+
+       int touch_lcd_x;        /* lcd x */
+       int touch_lcd_y;        /* lcd y */
+
+       int preview_offset_x;
+       int preview_offset_y;
+       int preview_w;
+       int preview_h;
+
+       int target_direction;
+       Evas_Object *toolbar_edje;
+
+       Evas_Object *toolbar_edje_landscape;
+       Evas_Object *toolbar_edje_portrait;
+       Evas_Object *toolbar_edje_landscape_inverse;
+       Evas_Object *toolbar_edje_portrait_inverse;
+       char *toolbar_edj_file;
+       struct {
+               struct {
+                       Evas_Object *edje;
+                       Evas_Object *edje_landscape;
+                       Evas_Object *edje_portrait;
+                       Evas_Object *edje_landscape_inverse;
+                       Evas_Object *edje_portrait_inverse;
+
+                       Evas_Object *thumbnail_image;
+               } quickview_item;
+
+       } toolbar;
+
+       cam_menubar_data toolbar_menu_arrays[CAM_MENU_BAR_LEFT_MAX_NUM];
+
+
+
+       Evas_Object *shutterbtn;
+       Evas_Object *shutterbtn_camera_icon;
+       Evas_Object *recordingbtn;
+       Evas_Object *recording_stop_btn;
+       Evas_Object *backbtn;
+       Evas_Object *caf_button;
+
+       Evas_Object *focus_edje;
+       Evas_Object *indicator_edje;
+       Evas_Object *ev_edje;
+       Evas_Object *ev_icon_minus_edje;
+       Evas_Object *ev_icon_plus_edje;
+       Evas_Object *pinch_edje;
+       Evas_Object *zoom_edje;
+       Evas_Object *zoom_text_min_edje;
+       Evas_Object *zoom_text_max_edje;
+       Evas_Object *recording_edje;
+       Evas_Object *capturebtn_edje;
+
+       Evas_Object *guideline_edje;
+
+       Evas_Object *progressbar_edje;
+       Evas_Object *progressbar;
+
+       Evas_Object *gps_radio; /* radio button */
+       Evas_Object *guideline_radio;   /* radio button */
+       Evas_Object *autocontrast_radio;
+       Evas_Object *antishake_radio;
+       Evas_Object *outdoor_visibility_radio;
+       Evas_Object *burst_shot_mode_radio;
+       Evas_Object *capture_by_voice_radio;
+       Evas_Object *save_as_flip_radio;
+       Elm_Object_Item *setting_select_item;
+
+       Evas_Object *genlist;
+       Evas_Object *sub_genlist;
+       Evas_Object *sub_menu_group;
+       int sub_menu_type;
+       int sub_menu_index;
+
+       bool show_setting_popup_after_rotate;
+       bool show_edit_shortcuts_popup_after_rotate;
+
+       Evas_Object *toolbar_setting_popup;
+       Evas_Object *toolbar_setting_popup_area;
+
+       Evas_Object *setting_ctxpopup;
+       Evas_Object *ctxpopup_area;
+
+       Evas_Object *edit_shortcuts_popup;
+       Evas_Object *edit_shortcuts_popup_ctx;
+       Evas_Object *edit_shortcuts_popup_scroll;
+       Evas_Object *edit_shortcuts_popup_description;/*note: text part*/
+
+       Evas_Object *tip_popup;
+       int     tip_popup_type;
+
+       /* continous */
+       struct {
+               Evas_Object *layout_edje;
+               Evas_Object *gengrid;
+               Eina_List *item_list;
+       } conti_review;
+
+       /* panorama */
+       Evas_Object *progress_popup;
+       Evas_Object *progress_popup_bar;
+
+       Ecore_Event_Handler *key_up;
+       Ecore_Event_Handler *key_down;
+       Ecore_Event_Handler *mouse_up;
+       Ecore_Event_Handler *mouse_down;
+
+       Ecore_Idler *recording_commit;
+
+       /* Idle handler of capture callback. wh01.cho@samsung.com. 2010-12-15. */
+       Ecore_Idler *still_captured_idle;
+       Ecore_Idler *capture_idle;
+       GList *capture_cb_list;
+
+       Ecore_Timer *rec_icon_updater;
+       Ecore_Timer *rec_time_updater;
+       Ecore_Timer *rec_pause_timer;
+
+       Ecore_Timer *check_af_timer;
+       Ecore_Timer *continuous_shot_timer;
+       Ecore_Timer *shutter_long_tap_timer;    /*long tap timer for AF*/
+       gboolean emit_continuous_shutter;               /*record: continous have been emitted*/
+       gboolean continuous_shot_by_hard_key;   /* continuous shot triggered by hard key */
+
+       Evas_Object *waring_popup;
+       Evas_Object *confirm_popup;
+       int recording_state;
+
+       /* auto shot */
+       Ecore_Idler *auto_shot_idle;
+
+       /* best shot */
+
+       Evas_Object *bestshot_thumbnails_edje;
+
+       /* general */
+       Ecore_Timer *timeout_checker;
+       Ecore_Timer *setting_toolbar_hide_timer;
+
+       Ecore_Timer *gps_animation_timer;
+       Ecore_Timer *battery_animation_timer;
+
+       Ecore_Timer *continuous_af_timer;
+       Ecore_Timer *focus_guide_hide_timer;
+
+       int toolbar_hided;
+
+       bool timer_activated;
+       Ecore_Timer *timer_timer;
+       int timer_count;
+       Evas_Object *timer_icon_edje;
+
+       CamAppData *camapp_handle;
+       ShortCutData *shortcut_data; /*save now moving or touch shortcut*/
+       ShortCutData *swap_data; /*save now covering shortcuts*/
+
+       /* Launching Mode */
+       int launching_mode;
+       /* ug service mime type*/
+       char *service_mime;
+       /* exe args */
+       CamExeArgs *exe_args;
+
+       /* Thread for file register */
+       pthread_t file_reg_thread;
+       pthread_mutex_t file_reg_mutex;
+       pthread_cond_t file_reg_cond;
+       GQueue *file_reg_queue;
+
+       pthread_t camera_start_thread;
+
+       ui_gadget_h camera_ug;
+
+       ui_gadget_h imageviewer_ug;
+       gboolean ug_is_deleting_process; /*note: now ug is deleting process, and run into camera preview process*/
+       service_h imageviewer_service;
+
+       ui_gadget_h location_ug;
+
+       int mm_state;
+       gboolean isGrabed;
+
+       Ecore_Idler *update_thumbnail_idler;
+
+       Ecore_Timer *longpress_timer;
+       gboolean up_key;
+
+       int cancel_key_press;
+       int is_recording;
+
+       gboolean path_in_return;
+       int displayed_setting_popup;
+       int enable_mode_change;
+       int stop_continuous_shot;
+       /*check out low battery */
+       gboolean battery_status;
+       /*check torch light*/
+       gboolean torchlight_on;
+
+       gboolean is_calling;
+
+       int fw_error_type;
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       int play_rec_sound;
+#endif
+       int last_camera_zoom_mode;
+
+       /* guide screen */
+       Evas_Object *shot_mode_guide_popup;
+
+       service_h service_handle;
+       cam_menu_composer* setting_menu_composer;
+       cam_menu_composer* sub_menu_composer;
+
+       /*note: remained_count*/
+       int remained_count;
+       sensor_h sensor;
+       CamErrorType error_type;
+};
+
+
+
+extern void *handle;
+gboolean open_cam_ext_handle();
+void close_cam_ext_handle();
+gboolean cam_toolbar_menu_config_init(void *data, int mode);
+gboolean cam_toolbar_menu_config_update(void *data);
+
+#endif                         /* __DEF_CAM_H__ */
diff --git a/include/cam_animation.h b/include/cam_animation.h
new file mode 100755 (executable)
index 0000000..013b938
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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 "cam.h"
+#include "cam_app.h"
+#ifdef ENABLE_CAPTURE_ANIMATION
+gboolean cam_app_create_start_animation(void *data);
+gboolean cam_app_create_screennail_and_start_animation(void *user_data);
+gboolean cam_app_create_shutter_screen(void *data);
+void cam_animation_create_rect_image(void *data);
+void cam_app_stop_shutter_animation(void *data);
+
+
+#endif
diff --git a/include/cam_app.h b/include/cam_app.h
new file mode 100755 (executable)
index 0000000..edc040d
--- /dev/null
@@ -0,0 +1,498 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_cam_app_H_
+#define __DEF_cam_app_H_
+
+
+
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include <Edje.h>
+#include <utilX.h>
+#include <glib.h>
+#include <glib-object.h>
+
+#include <libintl.h>
+#include <aul.h>
+#include <aul_service.h>
+#include <app.h>
+
+#include "cam_property.h"
+#include "cam_debug.h"
+
+#include <media_content.h>
+
+#define USE_FIFO_THREAD
+#define EFL_TEMP_CODE
+#define REG_THREAD_EXIT "REG_THREAD_EXIT"
+#define RUN_IMAGE_HANDLE "RUN_IMAGE_HANDLE"
+#define UPDATE_THUMBNAIL "UPDATE_THUMBNAIL"
+#define UPDATE_THUMBNAIL_NO_ANI "UPDATE_THUMBNAIL_NO_ANI"
+#define REC_FILE_SAVE_REG "REC_FILE_SAVE_REG"
+
+
+#define USE_VCONF_CAMERA_KEY
+
+/* next define statement will be deleted */
+#define TODO_SURRPORT
+#include <camera.h>
+#define BEAT_UI
+
+
+/*
+  * example
+GValue value = {0, };
+CAM_GVALUE_SET_INT(value, 10);
+*/
+
+#define CAM_GVALUE_SET_INT(g_value/*GValue */, n_value) \
+{ \
+       g_value_init(&g_value, G_TYPE_INT); \
+       g_value_set_int(&g_value, n_value); \
+}
+
+#define CAM_GVALUE_SET_UINT(g_value/*GValue */, n_value) \
+{ \
+       g_value_init(&g_value, G_TYPE_UINT); \
+       g_value_set_uint(&g_value, n_value); \
+}
+
+#define CAM_GVALUE_SET_BOOLEAN(g_value/*GValue */, n_value) \
+{ \
+       g_value_init(&g_value, G_TYPE_BOOLEAN); \
+       g_value_set_boolean(&g_value, n_value); \
+}
+
+#define CAM_GVALUE_SET_STRING(g_value/*GValue */, n_value) \
+{ \
+       g_value_init(&g_value, G_TYPE_STRING); \
+       g_value_set_string(&g_value, n_value); \
+}
+
+#define _EDJ(x)  (Evas_Object *)elm_layout_edje_get(x)
+/* guide rect color of panorama shot & smile shot */
+#define UYVY_GUIDE_RECT_GREEN  (unsigned long)0xC262C212;
+#define UYVY_GUIDE_RECT_ORANGE         (unsigned long)0xA6BAA621;
+#define UYVY_GUIDE_RECT_RED    (unsigned long)0x52FA5270;
+#define UYVY_GUIDE_RECT_WHITE  (unsigned long)0xFE7FFE80;
+#define YUYV_GUIDE_RECT_GREEN  (unsigned long)0x62C212C2;
+#define YUYV_GUIDE_RECT_ORANGE         (unsigned long)0xBAA621A6;
+#define YUYV_GUIDE_RECT_RED            (unsigned long)0xFA527052;
+#define YUYV_GUIDE_RECT_WHITE  (unsigned long)0x7FFE80FE;
+
+enum {
+       NORMAL_BATTERY_STATUS = 0,
+       LOW_BATTERY_WARNING_STATUS,
+       LOW_BATTERY_CRITICAL_STATUS,
+};
+
+enum {
+       DISPLAY_NONE_POPUP = 0,
+       DISPLAY_EDIT_SHOTCUTS_POPUP,
+       DISPLAY_BURST_SHOT_MODE_POPUP,
+       DISPLAY_VOLUME_KEY_POPUP,
+       DISPLAY_SELF_PORTRAIT_POPUP,
+       DISPLAY_FLASH_POPUP,
+       DISPLAY_SHOOTING_MODE_POPUP,
+       DISPLAY_RECORDING_MODE_POPUP,
+       DISPLAY_SCENE_MODE_POPUP,
+       DISPLAY_FOCUS_MODE_POPUP,
+       DISPLAY_TIMER_POPUP,
+       DISPLAY_EFFECTS_POPUP,
+       DISPLAY_PHOTO_RESOLUTION_POPUP,
+       DISPLAY_VIDEO_RESOLUTION_POPUP,
+       DISPLAY_WHITE_BALANCE_POPUP,
+       DISPLAY_ISO_POPUP,
+       DISPLAY_METERING_POPUP,
+       DISPLAY_ANTI_SHAKE_POPUP,
+       DISPLAY_OUTDOOR_VISIBILITY_POPUP,
+       DISPLAY_AUTO_CONTRAST_POPUP,
+       DISPLAY_GUIDELINES_POPUP,
+       DISPLAY_CAPTURE_VOICE_POPUP,
+       DISPLAY_GPS_TAG_POPUP,
+       DISPLAY_SAVE_AS_FLIP,
+       DISPLAY_STORAGE_POPUP,
+       DISPLAY_RESET_POPUP,
+};
+
+enum {
+       CAM_POPUP_RESPONSE_NONE = 0,
+       CAM_POPUP_RESPONSE_TIMEOUT,
+       CAM_POPUP_RESPONSE_OK,
+       CAM_POPUP_RESPONSE_CANCEL,
+       CAM_POPUP_RESPONSE_CLOSE,
+  } ;
+
+typedef enum _CamCaptureMode{
+       CAM_CAPTURE_DEFAULT = 0,
+       CAM_CAPTURE_SINGLE = CAM_CAPTURE_DEFAULT,
+       CAM_CAPTURE_BURST,
+       CAM_CAPTURE_MAX,
+}CamCaptureMode;
+
+typedef enum _CamFileExtention{
+       CAM_FILE_EXTENTION_IMAGE =0,
+       CAM_FILE_EXTENTION_VIDEO,
+}CamFileExtention;
+
+typedef void (*cam_update_view_cb)(void *data);
+
+
+typedef struct _CamApp CamAppData;
+
+struct _CamApp {
+       gint camera_mode;
+       gint shooting_mode;
+       gint recording_mode;
+       gint scene_mode;
+       gint focus_mode;
+       gint photo_resolution;
+       gint video_resolution;
+       gint fps;
+       gint brightness;
+       gint brightness_min;
+       gint brightness_max;
+       gint white_balance;
+       gint iso;
+       gint auto_exposure;
+       gint effect;
+       gint af_mode;
+       gint wdr;
+       gint flash;
+       gint timer;
+       gint image_quality;
+       gint video_quality;
+       gint audio_quality;
+       gint default_preview_width;
+       gint default_preview_height;
+       gint battery_level;
+       gint battery_charging;
+
+       gint gps_level;
+       gint zoom_min;
+       gint zoom_max;
+       gint zoom_mode;
+       gint storage;
+       gint volume_key;
+
+       gint device_type;
+
+       gboolean self_portrait;
+       gboolean outdoor_visibility;
+       gboolean burst_shot;
+       gboolean audio_recording;
+       gboolean anti_shake;
+       gboolean capture_by_voice;
+       gboolean auto_contrast;
+       gboolean guideline;
+       gboolean gps;
+       gboolean review;
+       gboolean save_as_flip;
+       gboolean enable_touch_af;
+       CamTouchAFState touch_af_state;
+
+       int need_gps_popup;
+       int need_gps_on;
+
+       gint image_count;
+       gint shutter_sound;
+       gint size_limit;
+       gint size_limit_type;
+       guint rec_elapsed;
+       guint rec_filesize;
+       guint rec_stop_type;
+
+       guint focus_state;
+
+       /* timeout check */
+       gdouble last_time;
+       gdouble start_time;     /* setting toolbar */
+
+       /* continuous */
+       Evas_Object *conti_image;
+       int conti_capture_cnt;
+
+       /* guide rect for px & smile shot */
+       gulong guide_rect_color;
+
+       /*  continuous shot */
+       CamContinuousShotData *continuous_shot_data;
+
+       /* post processing */
+       gboolean post_processing;
+
+       /* file */
+       gchar *filename;
+       char *thumbnail_name;
+
+       gboolean zoom_lock;
+
+       int key_lock;
+       int mouse_lock;
+
+       /*set guide rect color */
+       gulong guide_rect_green;
+       gulong guide_rect_orange;
+       gulong guide_rect_red;
+       gulong guide_rect_white; /*store white color of yuyv or uvuv*/
+
+       /*camera callback*/
+       camera_state_changed_cb state_cb;
+       camera_focus_changed_cb focus_cb;
+       camera_error_cb error_cb;
+       camera_capturing_cb capture_cb;
+       camera_capture_completed_cb capture_completed_cb;
+       camera_preview_cb preview_cb;
+       camera_interrupted_cb cam_interrupted_cb;
+       cam_update_view_cb update_view_cb;
+
+       /*recorder callbak*/
+       recorder_recording_status_cb recording_status_cb;
+       recorder_state_changed_cb recording_state_changed_cb;
+       recorder_recording_limit_reached_cb recording_limit_reached_cb;
+       recorder_interrupted_cb rec_interrupted_cb;
+
+       /*face detect callback*/
+       camera_face_detected_cb face_detect_cb;
+
+       CamCaptureMode default_capture_mode;
+
+       /* reserved setting data*/
+       cam_reserved_setting_data reserved_setting_data;
+};
+
+typedef struct _CamVideoRectangle CamVideoRectangle;
+struct _CamVideoRectangle {
+       gint x;
+       gint y;
+       gint w;
+       gint h;
+};
+
+
+/**
+ * Structure of Idler item
+ */
+typedef struct {
+       Ecore_Idler *idler;
+       void *data;
+} CamIdlerItem;
+
+gboolean __cam_single_shot_reg_file(char *file_path);
+
+/* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+Eina_Bool cam_image_capture_handle_idler(void *item);
+Eina_Bool cam_image_capture_handle(void *data);
+Eina_Bool cam_capture_on_recording_handle(void *data);
+
+ /* gboolean cam_xwin_create(void *data); */
+void *cam_appdata_get(void);
+int cam_appdata_init(void *data);
+int cam_appdata_fini(void *data);
+CamAppData *cam_handle_get(void);
+
+gboolean cam_app_start(void *data);
+gboolean cam_app_stop(void *data);
+gboolean cam_app_resume(void *data);
+gboolean cam_app_pause(void *data);
+
+gboolean cam_app_init(void *data);
+
+gboolean cam_handle_create(void *data);
+gboolean cam_handle_free(void *data);
+gboolean cam_handle_init(void *data, int mode);
+/* auto shot for smile , panorama, action shot and etc. */
+Eina_Bool _auto_shot_idle_cb(void *data);
+
+gboolean cam_app_preview_start(void *data);
+gboolean cam_app_preview_stop(void);
+
+gboolean cam_camera_touch_af_press(void *data);
+gboolean cam_camera_key_press(void *data);
+gboolean cam_camera_key_half_press(void *data);
+gboolean cam_camera_key_release(void *data);
+gboolean cam_camera_key_half_release(void *data);
+Eina_Bool cam_volume_key_press(void *data);
+
+Eina_Bool cam_hard_key_up(void *data, int type, void *event_info);
+Eina_Bool cam_hard_key_down(void *data, int type, void *event_info);
+
+Eina_Bool cam_mouse_button_down(void *data, void *event_info);
+Eina_Bool cam_mouse_button_up(void *data, void *event_info);
+
+gboolean cam_handle_value_set(void *data, int type, const GValue *value);
+
+int cam_app_get_latest_mode(void);
+void cam_app_set_config_group(gint mode);
+
+const gchar *cam_app_get_target_path(void);
+gchar *cam_app_get_next_filename(CamFileExtention extention);
+gchar *cam_app_get_last_filename(void);
+
+gboolean cam_callback_init(void *data);
+
+gboolean cam_app_run_media_browser(void *data, gchar *filename);
+/* int cam_quick_waiter(void * data); */
+
+gboolean cam_app_clear_engine_data(void *data, gboolean release);
+
+gboolean cam_app_check_wide_resolution(int id);
+
+gboolean cam_app_is_skip_video_stream();       /* if true , must finish function in stream callback function */
+
+void cam_app_stop_video_stream();      /* This function set skip flag to true, so cam_app_skip_video_stream will be returned true, */
+
+void cam_app_run_video_stream();       /* This function set skip flag to false, for frame process in px or smile shot */
+
+Eina_Bool cam_app_capture_idle_cb(void *yuvdata);
+
+/* progress */
+gboolean cam_app_create_progressbar(void *data);
+gboolean cam_app_set_progressbar_value(void *data, double value);
+gboolean cam_app_set_progressbar_text(void *data, const char *text);
+gboolean cam_app_destroy_progressbar(void *data);
+
+/* timeout */
+gboolean cam_app_timeout_checker_init(void *data);
+gboolean cam_app_timeout_checker_remove(void);
+
+#ifdef USE_FIFO_THREAD
+void *cam_app_FIFO_thread_run(void *data);
+void cam_app_FIFO_thread_exit();
+#endif
+
+gboolean cam_app_create_file_register_thread(void *data);
+void *cam_app_file_register_thread_run(void *data);
+void cam_app_file_register_thread_exit(void *data);
+gboolean cam_app_set_args(void *data, char *args[]);
+gboolean cam_app_init_with_args(void *data);
+
+/* gboolean cam_app_wait_target_state(int target, int wait_time); */
+
+gboolean cam_app_exit(void *data);
+
+gboolean cam_key_grab_init(void *data);
+gboolean cam_key_grab_deinit(void *data);
+
+gboolean cam_app_key_event_init(void *data);
+gboolean cam_app_key_event_deinit(void *data);
+
+gboolean cam_layout_init(void *data);
+gboolean cam_mode_change(void *data, int to_mode);
+gboolean cam_shooting_mode_change(void *data);
+gboolean cam_recording_mode_change(void *data, int rec_mode);
+
+void cam_app_set_progress_value(Evas_Object *pb, double value,
+                               const char *message);
+gboolean cam_app_set_vconf_state(int vconf_state);
+gboolean cam_app_get_vconf_state(int *vconf_state);
+
+void cam_app_reset_settings(void *data);
+gboolean cam_toolbar_menu_config_update(void *data);
+
+gboolean cam_app_set_resolution(void *data, int width, int height);
+gboolean cam_app_get_photo_resolution(int *width, int *height);
+gboolean cam_app_reset_resolution(void *data, int width, int height,  gboolean force_set);
+int cam_app_get_aenc_bitrate(void *data);
+int cam_app_get_venc_bitrate(void *data, int quality);
+gboolean cam_app_set_video_quality(void *data, int quality);
+gboolean cam_app_set_recording_mode(void *data, int mode);
+gboolean cam_app_set_size_limit(int max_val, int size_limit_type);
+gboolean cam_app_init_attribute(void *data, CamMode mode);
+
+
+
+void cam_app_toggle_indicator(void *data, gboolean hide);
+void cam_app_toggle_toolbar(void *data, gboolean hide);
+void cam_app_get_preview_offset_coordinate(void *data);
+void cam_app_draw_af_box(void *data);
+
+void cam_app_set_blocking_popup();
+void cam_app_free_blocking_popup();
+void cam_app_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+void cam_app_gps_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+
+Evas_Object *cam_app_create_win(Evas_Object *parent, const char *name);
+
+Evas_Object *cam_app_load_edj(Evas_Object *parent, const char *file, const char *group);
+
+void cam_app_update_thumbnail();
+
+void cam_set_orient_value(void *data);
+
+
+gboolean cam_app_parse_args(CamExeArgs *args, service_h service);
+
+#ifdef EFL_TEMP_CODE
+void cam_win_transparent_set(void *data);
+#endif
+
+void cam_app_gps_enable_popup(void *data, const char *msg,
+                             Eina_Bool (*func) (void *data));
+void cam_app_notice_popup(void *data, const char *msg,
+                          void (*func) (void *data,
+                          Evas_Object *obj,
+                          void *event_info)
+                          );
+void cam_app_timeout_notice_response_cb(void *data,
+                                       Evas_Object *obj,
+                                       void *event_info);
+void cam_app_lowbattery_close_flash_cb(void *data, Evas_Object *obj,
+                                       void *event_info);
+gboolean cam_app_run_image_viewer_ug(void *data, char *file_path, gboolean launch_special_view);
+gboolean cam_app_run_location_ug(void *data);
+gboolean cam_image_capture_start(void *data);
+/* update thumbnail to quickview after first launching or return from image viewer */
+void cam_app_update_quickview_icon(void *data);
+/* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+void cam_utils_remove_idler_all(void *data);
+gdouble _get_current_time(void);
+void cam_remove_tmp_file();
+Eina_Bool cam_continuous_af_start(void *data);
+
+Eina_Bool cam_elm_cache_flush();
+void cam_app_mdm_syspopup(void *data);
+gboolean cam_app_lbs_start(void *data);
+gboolean cam_app_lbs_stop(void *data);
+
+Eina_Bool cam_app_focus_guide_create(void *data);
+Eina_Bool cam_app_focus_guide_update(void *data);
+
+Eina_Bool cam_screen_rotate(void *data);
+void cam_app_screen_rotate(void *data);
+
+void cam_app_cancel_timer(void *data);
+
+gboolean cam_condition_check_to_start_camera(void *data);
+
+void cam_app_get_win_size(void* data);
+
+gboolean cam_do_record(void* data);
+gboolean cam_do_capture(void* data);
+
+void cam_reset_focus_mode(void *data);
+
+gboolean cam_set_default_capture_mode(void *data, CamCaptureMode type);
+/* timeout */
+gboolean cam_app_timeout_checker_update();
+gboolean cam_app_hide_progressbar(void *data);
+gint cam_app_get_max_image_size_by_ratio(void *data, int resolution);
+void cam_app_stop_capture(void* data);
+void cam_create_error_popup(void* data);
+
+#endif
diff --git a/include/cam_capacity_type.h b/include/cam_capacity_type.h
new file mode 100755 (executable)
index 0000000..2635c5f
--- /dev/null
@@ -0,0 +1,188 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+\r
+#ifndef _CAM_CAPACITY_TYPE_H_\r
+#define _CAM_CAPACITY_TYPE_H_\r
+\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif // #ifdef __cplusplus\r
+\r
+\r
+// Resolution\r
+#define CAM_CP_SIZE_176X144                                            0x00000001\r
+#define CAM_CP_SIZE_320X240                                            0x00000002\r
+#define CAM_CP_SIZE_400X240                                            0x00000004\r
+#define CAM_CP_SIZE_640X480                                            0x00000008\r
+#define CAM_CP_SIZE_720X480                                            0x00000010\r
+#define CAM_CP_SIZE_800X480                                            0x00000020\r
+#define CAM_CP_SIZE_800X600                                            0x00000040\r
+#define CAM_CP_SIZE_1280X960                                   0x00000080\r
+#define CAM_CP_SIZE_1280X720                                   0x00000100\r
+#define CAM_CP_SIZE_1392X1392                                  0x00000200\r
+#define CAM_CP_SIZE_1600X1200                                  0x00000400\r
+#define CAM_CP_SIZE_1920X1080                                  0x00000800\r
+#define CAM_CP_SIZE_2048X1152                                  0x00001000\r
+#define CAM_CP_SIZE_2048X1536                                  0x00002000\r
+#define CAM_CP_SIZE_2800X1920                                  0x00004000\r
+#define CAM_CP_SIZE_2560X1440                                  0x00008000\r
+#define CAM_CP_SIZE_2560X1536                                  0x00010000\r
+#define CAM_CP_SIZE_2560X1920                                  0x00020000\r
+#define CAM_CP_SIZE_3264X1836                                  0x00040000\r
+#define CAM_CP_SIZE_3264X1960                                  0x00080000\r
+#define CAM_CP_SIZE_3264X2176                                  0x00100000\r
+#define CAM_CP_SIZE_3264X2448                                  0x00200000\r
+\r
+// White balance\r
+#define CAM_CP_WB_AUTO                                         0x00000001\r
+#define CAM_CP_WB_DAYLIGHT                                     0x00000002\r
+#define CAM_CP_WB_INCANDESCENT                         0x00000004\r
+#define CAM_CP_WB_FLUORESCENT                          0x00000008\r
+#define CAM_CP_WB_CLOUDY                                       0x00000010\r
+#define CAM_CP_WB_CUSTOM                                       0x00000020\r
+#define CAM_CP_WB_SHADE                                                0x00000040\r
+#define CAM_CP_WB_FLASH                                                0x00000080\r
+#define CAM_CP_WB_HORIZON                                      0x00000100\r
+\r
+// Scene mode\r
+#define CAM_CP_SCENE_MODE_AUTO                         0x00000001\r
+#define CAM_CP_SCENE_MODE_PORTRAIT                     0x00000002\r
+#define CAM_CP_SCENE_MODE_SPORTS                       0x00000004\r
+#define CAM_CP_SCENE_MODE_PARTY_AND_INDOOR     0x00000008\r
+#define CAM_CP_SCENE_MODE_BEACH_AND_SNOW       0x00000010\r
+#define CAM_CP_SCENE_MODE_SUNSET                       0x00000020\r
+#define CAM_CP_SCENE_MODE_DUSK_AND_DAWN                0x00000040\r
+#define CAM_CP_SCENE_MODE_NIGHTSHOT                    0x00000080\r
+#define CAM_CP_SCENE_MODE_FALLCOLOR                    0x00000100\r
+#define CAM_CP_SCENE_MODE_FIREWORK                     0x00000200\r
+#define CAM_CP_SCENE_MODE_CANDLE_LIGHT         0x00000400\r
+#define CAM_CP_SCENE_MODE_BACK_LIGHT           0x00000800\r
+#define CAM_CP_SCENE_MODE_LANDSCAPE                    0x00001000\r
+#define CAM_CP_SCENE_MODE_TEXT                         0x00002000\r
+#define CAM_CP_SCENE_MODE_SHOW_WINDOW          0x00004000\r
+\r
+// EFFECT\r
+#define CAM_CP_EFFECT_NONE                                             0x00000001\r
+#define CAM_CP_EFFECT_SEPIA                                            0x00000002\r
+#define CAM_CP_EFFECT_NEGATIVE                                 0x00000004\r
+#define CAM_CP_EFFECT_MONO                                             0x00000008\r
+#define CAM_CP_EFFECT_CARTOON                                  0x00000010\r
+#define CAM_CP_EFFECT_WASHED                                   0x00000020\r
+#define CAM_CP_EFFECT_SELECTIVE_RED_YELLOW             0x00000040\r
+#define CAM_CP_EFFECT_SELECTIVE_BLUE                   0x00000080\r
+#define CAM_CP_EFFECT_SELECTIVE_GREEN                  0x00000100\r
+#define CAM_CP_EFFECT_SOLAR                                            0x00000200\r
+#define CAM_CP_EFFECT_POSTERIZATION                            0x00000400\r
+#define CAM_CP_EFFECT_VINTAGE_WARM                             0x00000800\r
+#define CAM_CP_EFFECT_VINTAGE_COLD                             0x00001000\r
+\r
+\r
+// ISO\r
+#define CAM_CP_ISO_AUTO                                                        0x00000001\r
+#define CAM_CP_ISO_50                                                  0x00000002\r
+#define CAM_CP_ISO_100                                                 0x00000004\r
+#define CAM_CP_ISO_200                                                 0x00000008\r
+#define CAM_CP_ISO_400                                                 0x00000010\r
+#define CAM_CP_ISO_800                                                 0x00000020\r
+#define CAM_CP_ISO_1600                                                        0x00000040\r
+#define CAM_CP_ISO_3200                                                        0x00000080\r
+\r
+// FLASH\r
+#define CAM_CP_FLASH_AUTO                                      0x00000001\r
+#define CAM_CP_FLASH_ON                                                0x00000002\r
+#define CAM_CP_FLASH_OFF                                       0x00000004\r
+#define CAM_CP_FLASH_REDEYE                                    0x00000008\r
+#define CAM_CP_FLASH_SLOW_SYNC                         0x00000010\r
+#define CAM_CP_FLASH_FRONT_CURTAIN                     0x00000020\r
+#define CAM_CP_FLASH_REAR_CURTAIN                      0x00000040\r
+#define CAM_CP_FLASH_PERMANENT                         0x00000080\r
+\r
+// METERING\r
+#define CAM_CP_METERING_MATRIX                                 0x00000001\r
+#define CAM_CP_METERING_SPOT                                   0x00000002\r
+#define CAM_CP_METERING_CENTERWEIGHT                   0x00000004\r
+\r
+// SHOT MODE\r
+#define CAM_CP_SHOT_MODE_SINGLE                                0x00000001\r
+\r
+// REC MODE\r
+#define CAM_CP_REC_MODE_NORMAL                         0x00000001\r
+#define CAM_CP_REC_MODE_MMS                                    0x00000002\r
+#define CAM_CP_REC_MODE_SLOW_MOTION                    0x00000004\r
+#define        CAM_CP_REC_MODE_FAST_MOTION                     0x00000008\r
+\r
+// FOCUS\r
+#define CAM_CP_FOCUS_NONE                                              0x00000001\r
+#define CAM_CP_FOCUS_AUTO_FOCUS                                        0x00000002\r
+#define CAM_CP_FOCUS_CAF                                               0x00000004\r
+#define CAM_CP_FOCUS_FACE_DETECTION                            0x00000008\r
+#define CAM_CP_FOCUS_MACRO                                             0x00000010\r
+#define CAM_CP_FOCUS_TOUCH_AF                                  0x00000020\r
+\r
+\r
+// FPS\r
+#define CAM_CP_FPS_AUTO                                                0x00000001\r
+#define CAM_CP_FPS_8                                           0x00000002\r
+#define CAM_CP_FPS_15                                          0x00000004\r
+#define CAM_CP_FPS_24                                          0x00000008\r
+#define CAM_CP_FPS_25                                          0x00000010\r
+#define CAM_CP_FPS_30                                          0x00000020\r
+#define CAM_CP_FPS_60                                          0x00000040\r
+#define CAM_CP_FPS_120                                         0x00000080\r
+\r
+// FUNCTION\r
+#define CAM_CP_FUNC_BURST_SHOT_MODE    0x00000001\r
+#define CAM_CP_FUNC_SELF_MODE          0x00000002\r
+#define CAM_CP_FUNC_FLASH_MODE         0x00000004\r
+#define CAM_CP_FUNC_SHOT_MODE          0x00000008\r
+#define CAM_CP_FUNC_REC_MODE           0x00000010\r
+#define        CAM_CP_FUNC_SCENE_MODE          0x00000020\r
+#define CAM_CP_FUNC_EXPOSURE           0x00000040\r
+#define CAM_CP_FUNC_FOCUS_MODE         0x00000080\r
+#define CAM_CP_FUNC_EFFECT_MODE                0x00000100\r
+#define CAM_CP_FUNC_CAM_RESOLUTION     0x00000200\r
+#define CAM_CP_FUNC_REC_RESOLUTION     0x00000400\r
+#define CAM_CP_FUNC_WHITE_BALANCE      0x00000800\r
+#define        CAM_CP_FUNC_ISO                         0x00001000\r
+#define CAM_CP_FUNC_METERING           0x00002000\r
+#define CAM_CP_FUNC_CAM_ANS                    0x00004000\r
+#define        CAM_CP_FUNC_REC_ANS                     0x00008000\r
+#define        CAM_CP_FUNC_OUTDOOR                     0x00010000\r
+#define CAM_CP_FUNC_AUTO_CONTRAST      0x00020000\r
+#define CAM_CP_FUNC_CAPTURE_VOICE      0x00040000\r
+#define CAM_CP_FUNC_GPS                                0x00080000\r
+#define CAM_CP_FUNC_STORAGE                    0x00100000\r
+#define CAM_CP_FUNC_ZOOM                       0x00200000\r
+#define        CAM_CP_FUNC_BRIGHTNESS          0x00400000\r
+#define CAM_CP_FUNC_FPS                                0x00800000\r
+#define CAM_CP_FUNC_SAVE_AS_FLIP    0x01000000\r
+\r
+#define CAM_CP_FUNC_COUNT                      25\r
+// LCD\r
+#define CAM_CP_LCD_NORMAL                              0x00000001\r
+#define CAM_CP_LCD_WIDE                                        0x00000002\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif // _CAM_CAPACITY_TYPE_H_\r
+\r
+\r
diff --git a/include/cam_config.h b/include/cam_config.h
new file mode 100755 (executable)
index 0000000..23278cc
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_CONFIG_H_
+#define _CAM_CONFIG_H_
+
+#include <glib.h>
+/*
+#include "cam_property.h"
+*/
+#define CONFIG_PATH                                                    "/opt/usr/ug/data/ug-camera-efl/.camera.ini"
+
+#define EXTERNAL_MODE_SAVE_PATH                        "/tmp"
+
+typedef enum {
+       CAM_CONFIG_TYPE_COMMON = 0,
+       CAM_CONFIG_TYPE_PREVIEW,
+       CAM_CONFIG_TYPE_SHORTCUTS,
+       CAM_CONFIG_MAX,
+} CamConfigType;
+
+gboolean
+cam_config_set_group_name(CamConfigType config_type,
+                         const gchar *set_group_name);
+
+gboolean cam_config_init(GError **error);
+
+void cam_config_finalize(void);
+
+void cam_config_set_group(const gchar *group_name);
+
+const gchar *cam_config_get_group(void);
+
+void cam_config_save(void);
+
+void cam_config_set_control(gboolean enable);
+
+void cam_config_set_int(const gchar *key, int nval);
+
+void cam_config_set_string(const gchar *key, const gchar *strval);
+
+void cam_config_set_boolean(const gchar *key, gboolean bval);
+
+int cam_config_get_int(const gchar *key, int default_value);
+
+gchar *cam_config_get_string(const gchar *key, const gchar *default_value);
+
+gboolean cam_config_get_boolean(const gchar *key, gboolean default_value);
+
+void cam_config_set_int_by_type(CamConfigType config_type, const gchar *key,
+                               int nval);
+
+void cam_config_set_string_by_type(CamConfigType config_type, const gchar *key,
+                                  const gchar *strval);
+
+void cam_config_set_boolean_by_type(CamConfigType config_type,
+                                   const gchar *key, gboolean bval);
+
+int cam_config_get_int_by_type(CamConfigType config_type, const gchar *key,
+                              int default_value);
+
+gchar *cam_config_get_string_by_type(CamConfigType config_type,
+                                    const gchar *key,
+                                    const gchar *default_value);
+
+gboolean cam_config_get_boolean_by_type(CamConfigType config_type,
+                                       const gchar *key,
+                                       gboolean default_value);
+
+#endif                         /* _CAM_CONFIG_H_ */
diff --git a/include/cam_continuous_shot.h b/include/cam_continuous_shot.h
new file mode 100755 (executable)
index 0000000..941942d
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_cam_continuous_shot_H_
+#define __DEF_cam_continuous_shot_H_
+
+#include "cam.h"
+
+#define SAVE_THREAD_EXIT "SAVE_THREAD_EXIT"
+#define SAVE_THREAD_FINISH "SAVE_THREAD_FINISH"
+
+
+typedef struct __FILE_SAVE_INFO {
+       void *buffer;
+       unsigned int buf_size;
+       char *filename;
+       char *cmd;
+} File_Save_Info;
+
+
+void cam_continuous_shot_data_free(void *data);
+void cam_continuous_shot_capture_start(void *data);
+void cam_continuous_shot_capture_callback(camera_image_data_s* image,
+       camera_image_data_s* postview,
+       camera_image_data_s* thumbnail,
+       void *user_data);
+
+gboolean cam_continuous_shot_reg_file(int shot_num, char *file_path[]);
+gboolean cam_continuous_shot_create_file_save_thread(void *data);
+void cam_continuous_shot_file_save_thread_exit(void *data);
+void cam_continuous_shot_update_progress_value(void *data);
+void cam_continuous_shot_finish_save_image();
+
+
+#endif
diff --git a/include/cam_debug.h b/include/cam_debug.h
new file mode 100755 (executable)
index 0000000..007663c
--- /dev/null
@@ -0,0 +1,296 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_DEBUG_H_
+#define _CAM_DEBUG_H_
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+
+G_BEGIN_DECLS
+/*
+#define LOG_TO_FILE
+#define  ENABLE_TIME_MEASURE
+#define TRACE_OBJECT
+#define ENABLE_TIME_STAMP
+*/
+#define DEBUG_MESSAGE_ON
+#define USE_DLOG_MESSAGE       /* for dlog */
+#define  TRACE_FENTER_LEAVE
+#define ENABLE_CHECK_MEMORY_OCCUPIED_SIZE
+/* Domain */
+#define LOG_UI "UI"            /* about UI, EFL, */
+#define LOG_MM "MM"            /* about MSL, */
+#define LOG_FILE "FILE"                /* about file */
+#define LOG_SND "SOUND"
+#define LOG_SYS "SYSTEM"
+#define LOG_FWK "FRAMEWROK"
+#define LOG_CONFIG "CONFIG"
+#define LOG_CAM        "CAMERA"        /* #define LOG_CAMERA    0x00000001 */
+#ifdef DEBUG_MESSAGE_ON
+#define GET_FILE_NAME(p, f)    \
+               do { \
+                       p = strrchr(f, '/');    \
+                       if (p)\
+                               p++;\
+                       else \
+                               p = f;\
+               } while (0)
+/*
+#ifdef ENABLE_CHECK_MEMORY_STATUS
+#define CHECK_MEMORY_STATS(s) fprintf(stderr, "[%s]: %s\n", s , __FUNCTION__); \
+                                                             malloc_stats(); \
+                                                             fprintf(stderr, "------------------\n")
+#else
+#define CHECK_MEMORY_STATS(s)                  G_STMT_START{ (void)0; }G_STMT_END
+#endif
+*/
+#ifdef ENABLE_CHECK_MEMORY_OCCUPIED_SIZE
+#include <malloc.h>
+struct mallinfo g_mem_info;
+#endif
+
+#ifdef USE_DLOG_MESSAGE
+
+#include <dlog.h>
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+#define LOG_TAG "cam-app"
+
+#define DEBUG_TRACE(fmt, arg...) do { if (TRUE) { \
+                       LOGD("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg);     \
+               } } while (0)
+
+#define debug_msg(domain, fmt, arg...)           LOGD("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define cam_debug(domain, fmt, arg...)          LOGD("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define cam_info(domain, fmt, arg...)            LOGI("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define cam_message(domain, fmt, arg...)        LOGI("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define cam_warning(domain, fmt, arg...)        LOGW("[%s : %s : %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define cam_critical(domain, fmt, arg...)        LOGE("[%s : %s: %d] "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+
+#ifdef ENABLE_CHECK_MEMORY_OCCUPIED_SIZE
+#define CHECK_MEMORY_STATS(s) g_mem_info = mallinfo(); \
+                                                               LOGD("\n\n[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.hblkhd + (g_mem_info).uordblks)
+#endif
+/*
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "\n\n[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.arena); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.ordblks); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.hblks); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.hblkhd); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.uordblks); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.fordblks); \
+                                                               dlog(MID_CAMERA, DLOG_VERBOSE, "[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.keepcost); \
+*/
+
+#else                          /*  #ifdef USE_DLOG_MESSAGE */
+
+void
+cam_log_func(const gchar *_domain, GLogLevelFlags log_level,
+            const char *file_name, const char *func, int line_number,
+            const char *format, ...);
+
+#define debug_msg(category, fmt, arg...)               cam_log_func(category, G_LOG_LEVEL_DEBUG, __FILE__, __func__, __LINE__, fmt, ##arg)
+#define cam_debug(category, fmt, arg...)               cam_log_func(category, G_LOG_LEVEL_DEBUG, __FILE__, __func__, __LINE__, fmt,  ##arg)
+#define cam_info(category, fmt, arg...)                cam_log_func(category, G_LOG_LEVEL_INFO, __FILE__, __func__, __LINE__, fmt, ##arg)
+#define cam_message(category, fmt, arg...)        cam_log_func(category, G_LOG_LEVEL_MESSAGE, __FILE__,  __func__, __LINE__, fmt, ##arg)
+#define cam_warning(category, fmt, arg...)     cam_log_func(category, G_LOG_LEVEL_WARNING, __FILE__,  __func__, __LINE__, fmt, ##arg)
+#define cam_critical(category, fmt, arg...)    cam_log_func(category, G_LOG_LEVEL_CRITICAL, __FILE__, __func__, __LINE__, fmt, ##arg)
+
+#ifdef ENABLE_CHECK_MEMORY_OCCUPIED_SIZE
+#define CHECK_MEMORY_STATS(s) g_mem_info = mallinfo(); \
+                                                               cam_debug(LOG_SYS, "\n\n[[[[[[[[[[ %s : mem size is %d ]]]]]]]]]]\n", s, g_mem_info.hblkhd + (g_mem_info).uordblks)
+#endif
+
+#endif                         /* DEBUG MESSAGE ON */
+
+#else
+#define debug_msg(domain, fmt, arg...)         G_STMT_START{ (void)0; } G_STMT_END
+#define cam_debug(domain, fmt, arg...)         G_STMT_START{ (void)0; } G_STMT_END
+#define cam_info(domain, fmt, arg...)          G_STMT_START{ (void)0; } G_STMT_END
+#define cam_message(domain, fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#define cam_warning(domain, fmt, arg...)       G_STMT_START{ (void)0; } G_STMT_END
+#define cam_critical(fmt, arg...)                      G_STMT_START{ (void)0; } G_STMT_END
+#ifdef ENABLE_CHECK_MEMORY_OCCUPIED_SIZE
+#define CHECK_MEMORY_STATS(s)                  G_STMT_START{ (void)0; } G_STMT_END
+#endif
+#endif                         /* #ifdef DEBUG_MESSAGE_ON */
+#define warn_msg cam_warning
+#define critical_msg cam_critical
+/* Trace function enter/leave
+ */
+#ifdef TRACE_FENTER_LEAVE
+#define debug_fenter(domain)                           cam_debug(domain, " started");
+#define debug_fleave(domain)                           cam_debug(domain, " leaved");
+#else
+#define debug_fenter(domain)                           G_STMT_START{ (void)0; } G_STMT_END
+#define debug_fleave(domain)                           G_STMT_START{ (void)0; } G_STMT_END
+#endif
+#define cam_ret_if(expr) do { \
+       if (expr) { \
+               return; \
+       } \
+} while (0)
+#define cam_retv_if(expr, val) do { \
+       if (expr) { \
+               return (val); \
+       } \
+} while (0)
+#define cam_retm_if(expr, fmt, arg...) do { \
+       if (expr) { \
+               cam_warning(LOG_UI, fmt, ##arg); \
+               return; \
+       } \
+} while (0)
+#define cam_retvm_if(expr, val, fmt, arg...) do { \
+       if (expr) { \
+               cam_warning(LOG_UI, fmt, ##arg); \
+               return (val); \
+       } \
+} while (0)
+/* Trace module elapsed time
+ */
+#ifdef ENABLE_TIME_MEASURE
+    typedef enum {
+       NORMAL_MEASURE_TYPE = 0,
+       APP_LAUNCHING_TYPE,
+       CAPTURE_MEASURE_TYPE,
+       REGISTER_MEASURE_TYPE,
+       REC_START_MEASURE_TYPE,
+       REC_COMMIT_MEASURE_TYPE,
+       REVIEW_MEASURE_TYPE,
+       AUTO_FOCUSE_TIME,
+       MEASURE_TYPE_MAX,
+} cam_time_meature_type;
+
+void debug_measure_start(cam_time_meature_type meature_type,
+                        const gchar *format, ...);
+void debug_measure_stop(cam_time_meature_type meature_type,
+                       const gchar *format, ...);
+void debug_measure_init();
+void debug_measure_close();
+
+void debug_time_measure_start(const gchar *format, ...);
+void debug_time_measure_stop(void);
+void debug_time_measure_log(const gchar *format, ...);
+
+#define debug_time_measure_fenter(fmt, arg...) debug_time_measure_log("%s(). LINE :%d ", __FUNCTION__, __LINE__, ##arg)
+#define debug_time_measure_fleave(fmt, arg...) debug_time_measure_log("%s(). LINE :%d", __FUNCTION__, __LINE__, ##arg)
+
+#else
+#define debug_time_measure_start(fmt, arg...)  G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_measure_stop()                              G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_measure_log(fmt, arg...)            G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_measure_fenter(fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_measure_fleave(fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#define debug_measure_start(fmt, arg...)       G_STMT_START{ (void)0; } G_STMT_END
+#define debug_measure_stop(fmt, arg...)        G_STMT_START{ (void)0; } G_STMT_END
+#define debug_measure_init()           G_STMT_START{ (void)0; } G_STMT_END
+#define debug_measure_close()  G_STMT_START{ (void)0; } G_STMT_END
+#endif                         /*ENABLE_TIME_MEASURE */
+#ifdef ENABLE_TIME_STAMP
+#include <sys/time.h>
+#include <linux/unistd.h>
+    enum {
+       CAM_MSG_COLOR_DEFAULT = 0,
+       CAM_MSG_COLOR_BLACK = 30,
+       CAM_MSG_COLOR_RED = 31,
+       CAM_MSG_COLOR_GREEN = 32,
+       CAM_MSG_COLOR_YELLOW = 33,
+       CAM_MSG_COLOR_BLUE = 34,
+       CAM_MSG_COLOR_MAGENTA = 35,
+       CAM_MSG_COLOR_CYAN = 36,
+       CAM_MSG_COLOR_WHITE = 37,
+};
+
+static long s_time_sec = 0L;
+static long s_time_usec = 0L;
+static struct timeval s_cur_time;
+
+static pid_t gettid(void)
+{
+       return syscall(__NR_gettid);
+}
+
+#define debug_time_reset(fmt, arg...)  \
+       do {    \
+               struct timeval time;    \
+               gettimeofday(&time, NULL);      \
+               s_cur_time = time; \
+               s_time_sec = time.tv_sec;       \
+               s_time_usec = time.tv_usec;     \
+               debug_color(CAM_MSG_COLOR_RED, "[TIMER],<%03ld.%03ld>, \t000.000 sec (reset timer)\t000.000\t[%-20.20s:%4d]" fmt "\n", s_time_sec, s_time_usec, __FUNCTION__, __LINE__, ##arg); \
+       } while (0)
+
+#define debug_time_stamp(fmt, arg...)  \
+       do {    \
+               struct timeval time;    \
+               long sec, usec; \
+               long a_sec, a_usec; \
+               gettimeofday(&time, NULL);      \
+               a_sec = time.tv_sec - s_cur_time.tv_sec; \
+               if (s_cur_time.tv_usec > time.tv_usec) {        \
+                       a_usec = 1000000L - s_cur_time.tv_usec + time.tv_usec;  \
+                       a_sec--;        \
+               } else {        \
+                       a_usec = time.tv_usec - s_cur_time.tv_usec;     \
+               }       \
+               s_cur_time = time; \
+               sec = time.tv_sec - s_time_sec; \
+               if (s_time_usec > time.tv_usec) {       \
+                       usec = 1000000L - s_time_usec + time.tv_usec;   \
+                       sec--;  \
+               } else {        \
+                       usec = time.tv_usec - s_time_usec;      \
+               }       \
+               debug_color(CAM_MSG_COLOR_RED, "[TIMER],<%03ld.%03ld>, %03ld.%03ld sec (time stamp) %03ld.%03ld\t[%-20.20s:%4d]" fmt "\n", time.tv_sec, time.tv_usec, sec, usec / 1000, a_sec, a_usec/1000, __FUNCTION__, __LINE__, ##arg); \
+       } while (0)
+
+#define debug_time_stamp_simple(fmt, arg...)   \
+       do {    \
+               struct timeval time;    \
+               gettimeofday(&time, NULL);      \
+               debug_color(CAM_MSG_COLOR_RED, "[TIMER],<%03ld.%03ld> (reset timer), [%-20.20s:%4d], TID=%d" fmt "\n", time.tv_sec, time.tv_usec, __FUNCTION__, __LINE__, gettid(), ##arg);     \
+       } while (0)
+
+#define debug_color(color, fmt, arg...) \
+       do {    \
+               fprintf(stderr, "\033[%dm", color);     \
+               fprintf(stderr, fmt, ##arg);    \
+               fprintf(stderr, "\033[%dm", CAM_MSG_COLOR_DEFAULT);     \
+               \
+       } while (0)
+#else
+/*
+ *     NO PROFILING MESSAGE
+ */
+#define debug_time_reset(fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_stamp(fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#define debug_time_stamp_simple(fmt, arg...) G_STMT_START{ (void)0; } G_STMT_END
+#endif
+/* Trace GObject deletion
+ */
+#ifdef TRACE_OBJECT
+void cam_debug_trace_object(gpointer obj, const gchar *format, ...);
+#else
+#define cam_debug_trace_object(obj, fmt, arg...)       G_STMT_START{ (void)0; } G_STMT_END
+#endif
+#define cam_debug_trace_alloc cam_debug_trace_object
+    G_END_DECLS
+#endif /*_CAM_DEBUG_H_*/
diff --git a/include/cam_device_capacity.h b/include/cam_device_capacity.h
new file mode 100755 (executable)
index 0000000..eaacb23
--- /dev/null
@@ -0,0 +1,51 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef _CAM_DEVICE_CAPACITY_H_\r
+#define _CAM_DEVICE_CAPACITY_H_\r
+\r
+#ifdef _cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+void                           ResetCaps();\r
+\r
+void                           GetCamDevFuncCaps(unsigned int *eType, void *user_data);\r
+\r
+bool                           GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevWBCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevISOCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDebFpsCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data);\r
+bool                           GetCamDevZoomCaps(int *min, int *max);\r
+bool                           GetCamDevEvCaps(int *min, int *max);\r
+bool                           GetCamDevBrCaps(int *min, int *max);\r
+\r
+\r
+#ifdef _cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+\r
+\r
diff --git a/include/cam_error.h b/include/cam_error.h
new file mode 100755 (executable)
index 0000000..cd8ae97
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * 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 <glib.h>
+#include <errno.h>
+
+#ifndef CAMERROR_H_
+#define CAMERROR_H_
+
+#define CAM_ERROR_CLASS_COMMON                                                 0x90000000
+#define CAM_ERROR_CLASS_SYSTEM                                                 0x90000100
+#define CAM_ERROR_CLASS_FILE                                                           0x90000200
+#define CAM_ERROR_CLASS_MMCAMCORDER                                            0x90000400
+#define CAM_ERROR_CLASS_MMPLAYER                                                       0x90000800
+#define CAM_ERROR_CLASS_MISC                                                           0x90001600
+
+enum {
+       CAM_ERROR_NONE = 0,
+
+       CAM_ERROR_BATTERY_NOT_ENOUGH = CAM_ERROR_CLASS_SYSTEM,
+       CAM_ERROR_MULTIPLE_INSTANCE,
+       CAM_ERROR_ENTER_REJECTED,
+       CAM_ERROR_DEVICE,
+       CAM_ERROR_STORAGE_UNAVAILABLE,
+       CAM_ERROR_STORAGE_INSUFFICIENT,
+
+       CAM_ERROR_FILE = CAM_ERROR_CLASS_FILE,
+       CAM_ERROR_FILE_MANAGER,
+       CAM_ERROR_FILE_MOVE_FAILED,
+       CAM_ERROR_FILE_REGISTER_FAILED,
+       CAM_ERROR_FILE_NOT_EXISTS,
+       CAM_ERROR_FILE_RENAME_FAILED,
+       CAM_ERROR_FILE_DELETE_FAILED,
+
+       CAM_ERROR_MM_CAMCORDER = CAM_ERROR_CLASS_MMCAMCORDER,
+       CAM_ERROR_AUTO_FOCUSING,
+       CAM_ERROR_MISC = CAM_ERROR_CLASS_MISC,
+       CAM_ERROR_QUERY_DB,
+       CAM_ERROR_PANORAMA_LIB,
+       CAM_ERROR_NCR_LIB,
+       CAM_ERROR_NORMAL,
+       CAM_ERROR_DEVICE_OFF,
+       CAM_ERROR_MEMORY,
+       CAM_ERROR_UNKNOWN,
+};
+
+#define CAMERA_ERROR_QUARK                                             g_quark_from_static_string("camera-error-quark")
+
+#define cam_error_new(code, fmt, arg...)                       g_error_new(CAMERA_ERROR_QUARK, code, fmt, ##arg)
+#define cam_error_new_literal(code, msg)                       g_error_new_literal(CAMERA_ERROR_QUARK, code, msg)
+#define cam_set_error(error, code, fmt, arg...)        g_set_error(error, CAMERA_ERROR_QUARK, code, fmt, ##arg)
+
+#endif                         /* CAMERROR_H_ */
diff --git a/include/cam_exif_info.h b/include/cam_exif_info.h
new file mode 100755 (executable)
index 0000000..98657ea
--- /dev/null
@@ -0,0 +1,35 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __CAM_EXIF_INFO_H__\r
+#define __CAM_EXIF_INFO_H__\r
+\r
+#include "glib.h"\r
+#include <libexif/exif-data.h>\r
+\r
+\r
+\r
+ExifData* cam_exif_get_exif_from_data(unsigned char *data, unsigned int data_size);\r
+gboolean cam_exif_set_entry(ExifData *in_exif, ExifIfd ifd, ExifTag tag, ExifFormat format, unsigned long components, unsigned char *data);\r
+gboolean cam_exif_get_data_from_exif(unsigned char *out_data, unsigned int out_size, ExifData *in_exif);\r
+gboolean cam_exif_change_thumb_info(unsigned char *exif_raw, unsigned int exif_raw_size, unsigned char *thumb_data\r
+                                                                                       , int thumb_w, int thumb_h, unsigned int thumb_size);\r
+gboolean cam_exif_write_to_jpeg(unsigned char *in_data, unsigned int in_size, unsigned char *exif_data, unsigned int exif_size\r
+                                                                                 ,unsigned char **out_data, unsigned int *out_size);\r
+\r
+#endif\r
+\r
diff --git a/include/cam_face_detection_focus.h b/include/cam_face_detection_focus.h
new file mode 100755 (executable)
index 0000000..96fc581
--- /dev/null
@@ -0,0 +1,70 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _CAM_FACE_DETECTION_FOCUS_H_\r
+#define _CAM_FACE_DETECTION_FOCUS_H_\r
+#include "cam_property.h"\r
+#include "camera_utils.h"\r
+\r
+\r
+#define MAX_FACE_COUNT 10\r
+typedef struct _cam_face_info CamFaceInfo;\r
+\r
+struct _cam_face_info {\r
+       camera_detected_face_s faces[MAX_FACE_COUNT];\r
+       int     count;\r
+\r
+};\r
+\r
+\r
+/**\r
+ * @brief      called by preview callback function\r
+ * @param[in]  preview_frame   the camera preview image stream\r
+ * @param[in]  user_data       user_data set for preview callback\r
+ * @return     void\r
+ */\r
+void cam_face_detection_focus_start_stream(camera_preview_data_s *preview_frame, void *user_data);\r
+/**\r
+ * @brief      init face deteciton pthread variables\r
+ * @return     void\r
+ */\r
+gboolean cam_face_detection_focus_init(void);\r
+/**\r
+ * @brief      delete face deteciton pthread variables\r
+ * @return     void\r
+ */\r
+gboolean cam_face_detection_focus_finish(void);\r
+/**\r
+ * @brief      called while face detected\r
+ * @param[in]  faces           camera_detected_face_s array\r
+ * @param[in]  count           face count\r
+ * @param[in]  user_data       user_data set for preview callback\r
+ * @return     void\r
+ */\r
+void cam_face_detection_focus_face_detected_cb(camera_detected_face_s *faces, int count, void *user_data);\r
+/**\r
+ * @brief      in face detection mode, set mouse click coordinate for cacluate the faceid by xy\r
+ * @param[in]  x               mouse x when doulbe click\r
+ * @param[in]  y               mouse y when doulbe click\r
+ * @return     void\r
+ */\r
+void cam_common_set_mouse_double_click_xy(Evas_Coord x, Evas_Coord y);\r
+\r
+void cam_face_detection_reset();\r
+\r
+#endif                         /* _CAM_FACE_DETECTION_FOCUS_H_ */\r
+\r
diff --git a/include/cam_file.h b/include/cam_file.h
new file mode 100755 (executable)
index 0000000..00593ab
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef CAM_FILE_H_
+#define CAM_FILE_H_
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include "cam.h"
+#define INTERNAL_FILE_PATH             "/opt/usr/media/Camera"
+#define EXTERNAL_FILE_PATH             "/opt/storage/sdcard/Camera"
+
+typedef enum {
+       MEDIA_TYPE_JPEG,
+       MEDIA_TYPE_MP4,
+       MEDIA_TYPE_3GP,
+       MEDIA_TYPE_LAST
+} media_type_t;
+
+gboolean cam_file_init(GError **error);
+void cam_file_finalize();
+gboolean cam_file_get_size(const char *filename, guint64 *size);
+gboolean cam_file_check_exists(gchar *filename);
+gboolean cam_file_get_size(const char *filename, guint64 *size);
+
+gboolean cam_file_register(const char *filename, GError **error);
+gboolean cam_file_register_to_DCF(const char *filename, GError **error);
+gboolean cam_file_delete(const gchar *filename, GError **error);
+gboolean cam_file_rename(const gchar *filename, const gchar *new_name,
+                        GError **error);
+const gchar *cam_file_get_dcim_path(void);
+const gchar *cam_file_get_internal_image_path(void);
+const gchar *cam_file_get_internal_video_path(void);
+const gchar *cam_file_get_external_image_path(void);
+const gchar *cam_file_get_external_video_path(void);
+
+gchar *cam_file_get_next_filename_for_multishot(const gchar *storage_root, const gchar *first_file_name, const gint shot_num, const gchar *suffix);
+
+gchar *cam_file_get_next_filename(const gchar *storage_root,
+                                 const gchar *prefix_string,
+                                 const gchar *suffix);
+gchar *cam_file_get_next_dcim_filename(const gchar *storage_root, media_type_t media_type);
+/**
+ * @brief              get latest file path in @storage_root folder
+ * @param[in]  data    camera appdata structure
+ * @param[in]  storage_root    folder path (full path)
+ * @return                     Operation result
+ * @retval     NOT NULL        lateset file path in @storage_root
+ * @retval         NULL        Error or no file
+ */
+gchar *cam_file_get_last_file_path (void *data, const gchar *storage_root);
+/**
+ * @brief              get latest file path folder id in @storage_root folder,folder id is for media-content api
+ * @param[in]  storage_root    folder path (full path)
+ * @return                     Operation result
+ * @retval     NOT NULL        folder id for @storage_root
+ * @retval         NULL        Error
+ */
+char *cam_file_get_cam_storage_folder_id(const gchar *storage_root);
+/**
+ * @brief              get thumbnail full path of @file_path,folder id is for media-content api
+ * @param[in]  file_path       file path (full path)
+ * @param[out] file_path       thumbnail_path of @file_path (full path)
+ * @return                     Operation result
+ * @retval     TRUE    succeed
+ * @retval         FALSE       Error
+ */
+gboolean cam_file_get_cam_file_thumbnail_path(const gchar *file_path, gchar **thumbnail_path);
+
+gboolean cam_check_dir();
+
+
+#endif
diff --git a/include/cam_lbs.h b/include/cam_lbs.h
new file mode 100755 (executable)
index 0000000..afe27a8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_cam_lbs_H_
+#define __DEF_cam_lbs_H_
+
+#include <glib.h>
+
+typedef enum {
+       CAM_LBS_STATE_DISABLE = 0,      /* disable or stop */
+       CAM_LBS_STATE_SERVICE_START,    /* start */
+       CAM_LBS_STATE_SERVICE_ENABLE,   /* enable service */
+       CAM_LBS_STATE_ACCURANCY_ROUGH,  /* rough,  if < LOCATION_ACCURACY_LEVEL_STREET */
+       CAM_LBS_STATE_ACCURANCY_DETAILED,       /* detail,  if >= LOCATION_ACCURACY_LEVEL_STREET */
+       CAM_LBS_STATE_NUM
+} CamLBSState;
+
+gboolean cam_lbs_init(void);
+gboolean cam_lbs_finialize(void);
+gboolean cam_lbs_start(void (*lbs_update_cb) (void *data, int lbs_state),
+                      void *data);
+gboolean cam_lbs_stop(void);
+
+gboolean cam_lbs_is_valid(void);
+
+gboolean cam_lbs_get_current_position(double *longitude, double *latitude,
+                                                                                       double *altitude, time_t *time_stamp);
+gboolean cam_lbs_get_address(char *address, int max_length);
+
+int cam_lbs_get_state(void);
+
+#endif                         /* __DEF_cam_lbs_H_ */
diff --git a/include/cam_long_press.h b/include/cam_long_press.h
new file mode 100755 (executable)
index 0000000..f2f8666
--- /dev/null
@@ -0,0 +1,41 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+\r
+#ifndef __CAM_LONG_PRESS_H_DEF__\r
+#define __CAM_LONG_PRESS_H_DEF__\r
+\r
+typedef  int (*LONG_PRESS_START_CALLBACK)(void*, int, int);\r
+typedef  int (*LONG_PRESS_CANCEL_CALLBACK)(void*, int, int);\r
+int cam_long_press_register(int index, double time,\r
+               LONG_PRESS_START_CALLBACK start_func,\r
+               LONG_PRESS_CANCEL_CALLBACK end_func,\r
+               void *data);\r
+int  cam_long_press_unregister(int index);\r
+void cam_long_press_trigger(int index, Evas_Coord x, Evas_Coord y);\r
+void cam_long_press_validate(int index, Evas_Coord x, Evas_Coord y);\r
+void cam_long_press_cancel(int index);\r
+bool cam_get_long_press_running_state(int index);\r
+\r
+enum {\r
+       LONG_PRESS_ID_EDIT = 0,\r
+       LONG_PRESS_ID_SCROLL,\r
+       LONG_PRESS_ID_MAX_NUMS,\r
+};\r
+#endif /*__CAM_LONG_PRESS_H_DEF__*/\r
+\r
+\r
diff --git a/include/cam_menu_composer.h b/include/cam_menu_composer.h
new file mode 100755 (executable)
index 0000000..d897dcd
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_MENU_COMPOSER_H_
+#define _CAM_MENU_COMPOSER_H_
+
+#include "cam_property.h"
+#include "cam.h"
+
+
+void cam_compose_setting_menu(void *data, cam_menu_composer* composer);
+void cam_compose_list_menu(void *data, int menu_type, cam_menu_composer* composer);
+void cam_compose_menu_shooting_mode(void *data, cam_menu_composer* composer);
+void cam_compose_menu_scene_mode(void *data, cam_menu_composer* composer);
+void cam_compose_menu_photo_resolution(void *data, cam_menu_composer* composer);
+void cam_compose_menu_video_resolution(void *data, cam_menu_composer* composer);
+void cam_compose_menu_effect(void *data, cam_menu_composer* composer);
+void cam_compose_menu_wb(void *data, cam_menu_composer* composer);
+void cam_compose_menu_focus_mode(void *data, cam_menu_composer* composer);
+void cam_compose_menu_iso(void *data, cam_menu_composer* composer);
+void cam_compose_menu_metering(void *data, cam_menu_composer* composer);
+void cam_compose_menu_flash(void *data, cam_menu_composer* composer);
+void cam_compose_menu_recording_mode(void *data, cam_menu_composer* composer);
+void cam_compose_menu_storage(void* data, cam_menu_composer* composer);
+void cam_compose_menu_timer_mode(void* data, cam_menu_composer* composer);
+void cam_compose_menu_volume_key(void* data, cam_menu_composer* composer);
+
+void cam_compose_free(cam_menu_composer* composer);
+gboolean cam_is_enabled_menu(void *data, const CAM_MENU_ITEM item);
+
+#endif
diff --git a/include/cam_mm.h b/include/cam_mm.h
new file mode 100755 (executable)
index 0000000..694390b
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef CAM_MM_H_
+#define CAM_MM_H_
+
+#include <glib.h>
+#include <sound_manager.h>
+#include <devman_managed.h>
+#include "cam.h"
+#include "cam_capacity_type.h"
+
+
+/*
+#include "cam_property.h"
+*/
+
+#define CAMERA_ERROR_MM_QUARK  g_quark_from_static_string("camera-error-mm")
+#define cam_set_mm_error(error, code, fmt, arg...) \
+       g_set_error(error, CAMERA_ERROR_MM_QUARK, code, fmt, ##arg)
+
+#define ERROR_CHECK
+
+#ifdef ERROR_CHECK
+#define CHECK_MM_ERROR(expr) \
+{\
+       int ret = 0; \
+       ret = expr; \
+       if (ret != CAMERA_ERROR_NONE) {\
+               cam_debug(LOG_MM,"[%s:%d] error code : %x \n", __func__, __LINE__, ret); \
+               return FALSE; \
+       } \
+}
+#else
+#define CHECK_MM_ERROR(expr) (expr)
+#endif
+
+gboolean cam_mm_set_camera_interrupted_cb(camera_interrupted_cb callback, void *data);
+gboolean cam_mm_set_recorder_interrupted_cb(recorder_interrupted_cb callback, void *data);
+gboolean cam_mm_get_brightless_valid_intrange(int *min, int *max);
+gboolean cam_mm_get_exposure_valid_intrange(int *min, int *max);
+gboolean cam_mm_recorder_set_state_changed_cb(recorder_state_changed_cb callback, void* user_data);
+gboolean cam_mm_recorder_unset_state_changed_cb(void);
+
+gboolean cam_mm_recorder_set_recording_status_cb(recorder_recording_status_cb callback, void* user_data);
+
+gboolean cam_mm_recorder_unset_recording_status_cb(void);
+
+gboolean cam_mm_recorder_set_recording_limit_reached_cb(recorder_recording_limit_reached_cb callback, void* user_data);
+
+gboolean cam_mm_recorder_unset_recording_limit_reached_cb(void);
+
+gboolean cam_mm_set_error_cb(camera_error_cb error_cb, void *data);
+gboolean cam_mm_unset_error_cb(void);
+gboolean cam_mm_set_state_changed_cb(camera_state_changed_cb state_cb, void *data);
+gboolean cam_mm_unset_state_changed_cb(void);
+gboolean cam_mm_set_focus_changed_cb(camera_focus_changed_cb focus_cb, void *data);
+gboolean cam_mm_unset_focus_changed_cb(void);
+gboolean cam_mm_set_preview_cb(camera_preview_cb preview_cb, void *data);
+gboolean cam_mm_unset_preview_cb(void);
+
+int cam_mm_get_state(void);
+int cam_mm_get_cam_state(void);
+int cam_mm_get_rec_state(void);
+
+
+gboolean cam_mm_set_delay_setting(gboolean value);
+gboolean cam_mm_get_video_device(int *device);
+gboolean cam_mm_get_video_size(int *width, int *height);
+gboolean cam_mm_set_video_size(int width, int height);
+gboolean cam_mm_get_zoom(int *value);
+gboolean cam_mm_set_zoom(int value);
+gboolean cam_mm_get_wdr(int *value);
+gboolean cam_mm_set_wdr(int value);
+gboolean cam_mm_get_auto_exposure(int *value);
+gboolean cam_mm_is_support_anti_hand_shake();
+gboolean cam_mm_get_anti_hand_shake(gboolean *value);
+gboolean cam_mm_set_anti_hand_shake(gboolean value);
+
+gboolean cam_mm_set_auto_exposure(int value);
+gboolean cam_mm_set_fps(camera_attr_fps_e value);
+gboolean cam_mm_get_iso(int *value);
+gboolean cam_mm_set_iso(int value);
+gboolean cam_mm_get_focus_mode(int *value);
+gboolean cam_mm_set_focus_mode(int value);
+gboolean cam_mm_get_zoom_valid_intrange(int *min, int *max);
+
+gboolean cam_mm_set_af_area(int x, int y, int w, int h);
+gboolean cam_mm_get_detect_mode(int *value);
+gboolean cam_mm_set_detect_mode(int value);
+gboolean cam_mm_get_image_enc_quality(int *value);
+gboolean cam_mm_set_image_enc_quality(int value);
+gboolean cam_mm_get_flash(int *value);
+gboolean cam_mm_set_flash(int value);
+gboolean cam_mm_get_brightness(int *value);
+gboolean cam_mm_set_brightness(int value);
+gboolean cam_mm_get_white_balance(int *value);
+gboolean cam_mm_set_white_balance(int value);
+gboolean cam_mm_get_effect(int *value);
+gboolean cam_mm_set_effect(int value);
+gboolean cam_mm_get_program_mode(int *value);
+gboolean cam_mm_set_program_mode(int value);
+gboolean cam_mm_set_audio_recording(gboolean b_on);
+gboolean cam_mm_set_outdoor_visibility(gboolean on);
+gboolean cam_mm_get_outdoor_visibility(gboolean *on);
+gboolean cam_mm_is_supported_outdoor_visibility(void);
+gboolean cam_mm_set_mdnie_mode(gboolean on);
+gboolean cam_mm_get_mdnie_mode(int *val);
+gboolean cam_mm_get_image_count(int *value);
+gboolean cam_mm_set_image_count(int value);
+gboolean cam_mm_get_recommanded_preview_size(int *width, int *height);
+gboolean cam_mm_get_image_size(int *width, int *height);
+gboolean cam_mm_set_image_size(int width, int height);
+gboolean cam_mm_set_video_encoder_bitrate(int bitrate);
+gboolean cam_mm_set_audio_encoder_bitrate(int bitrate);
+gboolean cam_mm_set_display_device(int display_device, void *xid);
+gboolean cam_mm_set_display_id(void *xid, int size);
+gboolean cam_mm_set_display_rotate(int rotate);
+gboolean cam_mm_set_camera_rotate(int camera_rotate);
+gboolean cam_mm_set_display_scale(int scale);
+gboolean cam_mm_get_front_cam_display_rotate_value(int *display_rotation, int *rotate);
+gboolean cam_mm_get_display_geometry_method(int *value);
+gboolean cam_mm_set_display_geometry_method(int value);
+gboolean cam_mm_set_display_visible(gboolean visible);
+gboolean cam_mm_set_filename(const gchar *filename);
+gboolean cam_mm_get_filename(char **filename, gint *size);
+gboolean cam_mm_get_max_time(int *value);
+gboolean cam_mm_set_max_time(int max_val);
+gboolean cam_mm_get_tag_enable(int *value);
+gboolean cam_mm_set_tag_enable(gboolean bvalue);
+gboolean cam_mm_set_tag_img_orient(int orient);
+gboolean cam_mm_set_file_format(int format);
+gboolean cam_mm_set_video_profile(void);
+gboolean cam_mm_set_codec(int audio_codec, int video_codec);
+gboolean cam_mm_set_audio_source(int sample_rate, int channel);
+gboolean cam_mm_set_video_source_format(int format);
+gboolean cam_mm_set_shutter_sound(int value);
+gboolean cam_mm_get_shutter_sound(int *value);
+gboolean cam_mm_enable_geo_tag(gboolean value);
+gboolean cam_mm_remove_geo_tag(void);
+
+gboolean cam_mm_get_video_source_format(const char *attribute_name,
+                                       int *format);
+gboolean cam_mm_set_conti_shot_break(gboolean bvalue);
+gboolean cam_mm_get_scene_mode(camera_attr_scene_mode_e *mode);
+gboolean cam_mm_set_scene_mode(camera_attr_scene_mode_e mode);
+
+gboolean cam_mm_set_capture_format(int value);
+gboolean cam_mm_set_capture_interval(int value);
+gboolean cam_mm_reset_recording_motion_fps(void);
+gboolean cam_mm_get_recording_motion_fps(int *value);
+gboolean cam_mm_set_gps_data(double lat, double lon, double alt);
+
+gint cam_mm_realize(void);
+gboolean cam_mm_is_preview_started(int mode);
+gboolean cam_mm_preview_start(int mode);
+gboolean cam_mm_unrealize(void);
+gboolean cam_mm_preview_stop(int mode);
+gboolean cam_mm_is_created(void);
+gboolean cam_mm_create(int camera_type, int mode);
+gboolean cam_mm_destory(void);
+gboolean cam_mm_continuous_capture_start(int count, int interval, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb , void *user_data);
+gboolean cam_mm_capture_start(camera_capturing_cb capturing_cb , camera_capture_completed_cb completed_cb , void *user_data);
+gboolean cam_mm_capture_stop(gboolean skip_preview, CamMode mode);
+gboolean cam_mm_rec_start();
+gboolean cam_mm_rec_stop(gboolean to_stop);
+gboolean cam_mm_rec_pause();
+gboolean cam_mm_rec_cancel();
+gboolean cam_mm_start_focusing(gint af_mode);
+gboolean cam_mm_stop_focusing();
+gboolean cam_mm_set_recording_motion(double rate);
+gboolean cam_mm_session_init(sound_session_type_e session_type);
+
+/**
+ * @brief              set auto contrast on/off
+ * @param[in]  enable  true: turn on auto contrast;false: turn off auto contrast
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_enable_auto_contrast(gboolean enable);
+/**
+ * @brief              get auto contrast on/off
+ * @param[out] enable  true: auto contrast is on;false: auto contrast is off
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_is_enabled_auto_contrast(gboolean *enable);
+
+/**
+ * @brief              start camera focus mode: face detection mode
+ * @param[in]  callback        called while face detected
+ * @param[in]  data    user data for callback
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_start_camera_face_detection(camera_face_detected_cb callback, void *data);
+/**
+ * @brief              stop camera focus mode: face detection mode
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_stop_camera_face_detection(void);
+/**
+ * @brief              get camera H/W whether suppor face detection auto focus
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_is_supported_face_detection(void);
+/**
+ * @brief              in face detection focus mode, set @face_id face zoom
+ * @param[in]  face_id face id
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_set_camera_face_zoom(int face_id);
+/**
+ * @brief              in face detection focus mode, cancel face zoom
+ * @return                     Operation result
+ * @retval             true            Success
+ * @retval         false       Error
+ */
+gboolean cam_mm_camera_cancel_face_zoom(void);
+
+gboolean cam_mm_get_caps_range(unsigned int type, unsigned int *caps, void *user_data);
+gboolean cam_mm_get_caps_minmax(unsigned int type, int *min, int *max);
+const int cam_mm_get_caps_cb_cnt();
+
+gboolean cam_mm_set_image_flip(gboolean value);
+
+gboolean cam_mm_is_support_front_camera(void);
+
+#endif                         /*  CAM_MM_H_ */
diff --git a/include/cam_popup.h b/include/cam_popup.h
new file mode 100755 (executable)
index 0000000..7da6fec
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef CAM_POPUP_H_
+#define CAM_POPUP_H_
+
+#include <Elementary.h>
+#include <glib.h>
+
+/* define USE_ELM_POPUP */
+void cam_popup_remove(Evas_Object *popup);
+void cam_popup_remove_all(void);
+
+#ifdef USE_ELM_POPUP
+typedef void (*cam_popup_respons_cb) (void *user_data, Evas_Object *obj,
+                                     void *event_info);
+
+/* popup with one button,  ELM_POPUP_RESPONSE_OK is sent along with response signal. */
+void cam_popup_confirm_add(Evas_Object *window, const char *message,
+                          const char *btn_name, cam_popup_respons_cb callback,
+                          void *user_data);
+
+/* popup with two button, ELM_POPUP_RESPONSE_OK/ELM_POPUP_RESPONSE_CANCEL is sent along with response signal. */
+void cam_popup_question_add(Evas_Object *window, const char *message,
+                           const char *btn_n_1, const char *btn_n_2,
+                           cam_popup_respons_cb callback, void *user_data);
+
+#else
+
+/* popup with one button */
+void
+cam_popup_confirm_add(Evas_Object *window, const char *message,
+                     const char *btn_name,
+                     void (*btn_cb) (void *data, Evas_Object *obj,
+                                     void *event_info));
+
+/* popup with two button */
+void
+cam_popup_question_add(Evas_Object *window, const char *message,
+                      const char *lbtn_name,
+                      void (*left_btn_cb) (void *data, Evas_Object *obj,
+                                           void *event_info),
+                      const char *rbtn_name, void (*right_btn_cb) (void *data,
+                                                                   Evas_Object
+                                                                   *obj,
+                                                                   void
+                                                                   *event_info));
+
+Evas_Object *cam_popup_guide_screen_add(Evas_Object *window,
+                                       const char *message);
+
+#endif
+
+gboolean cam_popup_create(void *data);
+gboolean cam_popup_add_progress_bar(void *data);
+gboolean cam_popup_set_text(void *data, char *text);
+gboolean cam_popup_set_bar_value(void *data, double value);
+gboolean cam_popup_delete(void *data);
+void cam_popup_rotate(void *data);
+gboolean cam_popup_for_burst_create(void *data);
+
+#endif
diff --git a/include/cam_property.h b/include/cam_property.h
new file mode 100755 (executable)
index 0000000..c2ffd35
--- /dev/null
@@ -0,0 +1,955 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_CAM_PROPERTY_H_
+#define __DEF_CAM_PROPERTY_H_
+
+#include <glib.h>
+/*#include <mmf/mm_camcorder.h>*/
+#include <camera.h>
+#include <recorder.h>
+#include <Evas.h>
+#include <Eina.h>
+
+
+#define CAM_LCD_WVGA
+
+#define PI (4 * atan(1))
+#define NEW_GUI
+/* Macros
+ */
+#define HIWORD(x)                                                      ((x) >> 16)
+#define LOWORD(y)                                                      (((y) << 16) >> 16)
+#define MAKE_DWORD(x, y)                                       ((x) << 16 | (y))
+
+/* Resolution
+ */
+#define PREVIEW_W                                                      (640)
+#define PREVIEW_WIDE_W                                         (800)
+#define PREVIEW_H                                                      (480)
+
+#define CAM_RESOLUTION(w, h)                           MAKE_DWORD(w, h)
+#define CAM_RESOLUTION_W(r)                                    HIWORD(r)
+#define CAM_RESOLUTION_H(r)                                    LOWORD(r)
+
+#define CAM_RESOLUTION_3264x2448 /*8M*/                                        CAM_RESOLUTION(3264, 2448)
+#define CAM_RESOLUTION_3264x2176 /*7M_WIDE*/                   CAM_RESOLUTION(3264, 2176)
+#define CAM_RESOLUTION_3264x1960 /*6M_WIDE*/                   CAM_RESOLUTION(3264, 1960)
+#define CAM_RESOLUTION_3264x1836 /*6M_WIDE*/                   CAM_RESOLUTION(3264, 1836)
+#define CAM_RESOLUTION_2800x1920 /*5M_WIDE*/                   CAM_RESOLUTION(2800, 1920)
+#define CAM_RESOLUTION_2560x1920 /*5M*/                                        CAM_RESOLUTION(2560, 1920)
+#define CAM_RESOLUTION_2560x1536 /*4M_WIDE*/                   CAM_RESOLUTION(2560, 1536)
+#define CAM_RESOLUTION_2560x1440 /*3M_WIDE*/                   CAM_RESOLUTION(2560, 1440)
+#define CAM_RESOLUTION_2048x1536 /*3M*/                                        CAM_RESOLUTION(2048, 1536)
+#define CAM_RESOLUTION_2048x1152 /*2.4M*/                              CAM_RESOLUTION(2048, 1152)
+#define CAM_RESOLUTION_1920x1080 /*2M_WIDE*/                   CAM_RESOLUTION(1920, 1080)
+#define CAM_RESOLUTION_1600x1200 /*2M*/                                        CAM_RESOLUTION(1600, 1200)
+#define CAM_RESOLUTION_1392x1392 /*2M*/                                        CAM_RESOLUTION(1392, 1392)
+#define CAM_RESOLUTION_1280x720  /*0.9M*/                              CAM_RESOLUTION(1280, 720)
+#define CAM_RESOLUTION_1280x960  /*1M*/                                        CAM_RESOLUTION(1280, 960)
+
+
+#define CAM_RESOLUTION_FULLHD                  CAM_RESOLUTION(1920, 1080)
+#define CAM_RESOLUTION_HD                              CAM_RESOLUTION(1280, 720)
+#define CAM_RESOLUTION_SVGA                            CAM_RESOLUTION(800, 600)
+#define CAM_RESOLUTION_WVGA                            CAM_RESOLUTION(800, 480)
+#define CAM_RESOLUTION_WVGA2                   CAM_RESOLUTION(720, 480)
+#define CAM_RESOLUTION_VGA                             CAM_RESOLUTION(640, 480)
+#define CAM_RESOLUTION_WQVGA                   CAM_RESOLUTION(400, 240)
+#define CAM_RESOLUTION_QVGA                            CAM_RESOLUTION(320, 240)
+#define CAM_RESOLUTION_CIF                             CAM_RESOLUTION(352, 288)
+#define CAM_RESOLUTION_QCIF                            CAM_RESOLUTION(176, 144)
+
+/* resolution string for camera ug */
+#define CAM_CAPTURE_RES_VGA                            "VGA"
+#define CAM_RECORDING_RES_QCIF                 "QCIF"
+
+#define MAX_CONTINUOUS_SHOT                    (20)
+#define MAX_BEST_PHOTO                         (8)
+#define CONTINUOUS_SHOT_INTERVAL       (150)
+
+#define LONG_PRESS_TIME (0.50)
+
+#define CAM_REC_NORMAL_MAX_SIZE        (4*1024*1024)   /* kbyte */
+#define CAM_REC_MMS_MAX_SIZE   (295)                   /* kbyte */
+
+#define STILL_MINIMAL_SPACE            (100*1024)      /* byte */
+#define REC_MMS_MIN_SPACE       (300*1024)     /* byte */
+
+#define CAM_TIME_FORMAT "u:%02u:%02u"
+#define CAM_TIME_FORMAT2 "02u:%02u"
+
+#define CAM_TIME_ARGS(t) \
+       (uint) (t / (60*60)), \
+       (uint) ((t / 60) % 60), \
+       (uint) (t % 60)
+
+#define CAM_TIME_ARGS2(t) \
+       (uint) ((t / 60) % 60), \
+       (uint) (t % 60)
+
+#define REMOVE_TIMER(timer) \
+       if (timer != NULL) {\
+               ecore_timer_del(timer); \
+               timer = NULL; \
+       }
+
+#define REMOVE_IDLER(idler) \
+       if (idler != NULL) {\
+               ecore_idler_del(idler); \
+               idler = NULL; \
+       }
+
+#define DEL_EVAS_OBJECT(eo) \
+               if (eo != NULL) {\
+                       evas_object_del(eo); \
+                       eo = NULL; \
+               }
+#define HIDE_EVAS_OBJECT(eo) \
+               if (eo != NULL) {\
+                       evas_object_hide(eo); \
+               }
+#define SHOW_EVAS_OBJECT(eo) \
+               if (eo != NULL) {\
+                       evas_object_show(eo); \
+               }
+
+#define SCALED_W(w)            (int)((double)w/MAIN_W*((struct appdata *)cam_appdata_get())->win_width)
+#define SCALED_H(h)            (int)((double)h/MAIN_H*((struct appdata *)cam_appdata_get())->win_height)
+
+/* set line byte */
+#define        LINEBYTES_BGR565(w)             (((w) * 2 + 3) >> 2 << 2)
+#define        LINEBYTES_YUV420(w)             (((w) + 3) >> 2 << 2)
+#define        LINEBYTES_YUV422(w)             (((w) * 2))
+#define        LINEBYTES_RGB888(w)             (((w) * 3))
+
+#define CAMERA_APP_TIMEOUT                     (120.0) /* No input for 2 minite, Auto close camera app */
+#define CAM_SETTING_POPUP_TIMEOUT      (10)
+#ifndef ABS
+#define ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+
+#ifndef CLAMP
+#define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x)))
+#endif
+
+#ifndef MIN
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef CAM_LCD_WVGA
+#define FIT_TO_RESOLUTION(p1, p2)      (p1)
+#else
+#define FIT_TO_RESOLUTION(p1, p2)      (((p2) == -1) ? ((p1) * 2) : (p2))
+#endif
+
+#ifndef CAM_LCD_WVGA
+#define FIT_TO_FONT_SIZE(s1, s2)       (s1)
+#else
+#define FIT_TO_FONT_SIZE(s1, s2)       (((s2) == -1) ? (s1) : (s2))
+#endif
+
+/* temporary code */
+#ifndef YUV422_SIZE
+#define YUV422_SIZE(width, height) ((width) * (height) *  2)
+#endif                         /* YUV422_SIZE */
+
+#ifndef YUV420_SIZE
+#define YUV420_SIZE(width, height) ((width) * (height) * 3 / 2)
+#endif                         /* YUV420_SIZE */
+
+#define CAM_AUDIO_BITRATE_MMS          (12200)
+#define CAM_AUDIO_BITRATE_NORMAL               (288000)
+
+#define MODE_DEFAULT                   CAM_CAMERA_MODE
+#define SHOTMODE_DEFAULT               CAM_SINGLE_MODE
+#define RECMODE_DEFAULT                CAM_RECORD_NORMAL
+#define PG_MODE_DEFAULT                CAM_SCENE_NONE
+#define RESOLUTION_DEFAULT             CAM_RESOLUTION_VGA
+#define REC_RESOLUTION_DEFAULT                         CAM_RESOLUTION_FULLHD
+#define IMAGE_RESOLUTION_DEFAULT               CAM_RESOLUTION_3264x2448
+#define SELF_REC_RESOLUTION_DEFAULT    CAM_RESOLUTION_HD
+#define SELF_IMAGE_RESOLUTION_DEFAULT  CAM_RESOLUTION_1392x1392
+#define WB_DEFAULT                             CAM_SETTINGS_WB_AWB
+#define ISO_DEFAULT                    CAM_ISO_AUTO
+#define AE_DEFAULT                             CAM_METERING_CENTER_WEIGHTED
+#define EFFECT_DEFAULT                 CAM_SETTINGS_EFFECTS_NOR
+#define AF_DEFAULT                             CAM_FOCUS_AUTO
+#define AHS_DEFAULT                    CAM_AHS_OFF
+#define WDR_DEFAULT                    CAM_WDR_OFF
+#define FLASH_DEFAULT                  CAM_FLASH_AUTO
+#define GUIDE_LINE_DEFAULT      FALSE
+#define REC_FLASH_DEFAULT              CAM_FLASH_OFF
+#define BRIGHTNESS_DEFAULT             4       /* should get from caps query */
+#define TIMER_DEFAULT                  CAM_SETTINGS_TIMER_OFF
+#define ZOOM_DEFAULT                   (0)
+#define QUALITY_DEFAULT                CAM_QUALITY_HIGH
+#define FPS_DEFAULT                    (30)
+#define FPS_SLOW                               (15)
+#define IMAGE_COUNT_DEFAULT    (1)
+#define AUDIOREC_DEFAULT               TRUE
+#define STORAGE_DEFAULT                        CAM_STORAGE_INTERNAL
+#define REC_SIZE_LIMIT_DEFAULT CAM_REC_NORMAL_MAX_SIZE
+#define SHUTTER_SOUND_DEFAULT  CAM_SETTINGS_SOUND_1
+#define SOUND_DEFAULT                  TRUE
+#define BURST_SHOT_DEFAULT             TRUE
+
+#define POP_TIP_DEFAULT                        TRUE
+
+
+#define REC_MAX_TIME_LIMITED   (60*60) /*  one hour */
+#define DEFAULT_REC_FPS        (1.0)
+#define SLOW_MOTION_REC_FPS    (120)
+#define FAST_MOTION_REC_FPS    (30)
+#define SLOW_MOTION_PLAY_FPS   (0.25)
+#define FAST_MOTION_PLAY_FPS   (4)
+#define CAM_EPSINON (0.000001)
+
+/*note: for focus edje zoom effect */
+#define CAM_FOCUS_EDJE_ZOOM_EFFECT_START_RATE (1.0)
+#define CAM_FOCUS_EDJE_ZOOM_EFFECT_END_RATE (1.5)
+#define CAM_FOCUS_EDJE_ZOOM_EFFECT_DURATION (0.20)
+/*note: for thumbnail effect*/
+#define CAM_THUMBNAIL_ANTIMATION_EFFECT_DURATION (0.25)
+/*note: for icons animation effect*/
+#define CAM_ROTATE_ICONS_ANTIMATION_DURATION (0.35)
+
+#define EDIT_SHORTCUTS_TIP_WIDTH (680)
+#define EDIT_SHORTCUTS_TIP_HEIGHT (546)
+#define EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y (320)
+#define EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X (20)
+
+#define EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X (320)
+#define EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y (87)
+
+typedef struct _cam_rectangle CamRectangle;
+
+struct _cam_rectangle {
+       int x, y, width, height;
+};
+
+/* face */
+typedef struct _cam_face_data CamFaceData;
+struct _cam_face_data {
+       CamRectangle *pFaceRect;
+       int nFace;              /* face count. */
+       int faceOrient;         /* the face angle 1:0angle 2:90angle, 3:270 angle */
+};
+
+/* Eyes */
+typedef struct _cam_eyes_data CamEyesData;
+struct _cam_eyes_data {
+       CamRectangle *pEyesRect;
+       int *nClosedEyesFlag;   /* true is closed eyes otherwise false */
+       int nEyes;
+};
+
+typedef struct _cam_exe_args CamExeArgs;
+struct _cam_exe_args {
+       int cam_mode;
+       int resolution;
+       int width;
+       int height;
+       int size_limit;
+       gboolean review;
+       gboolean allow_switch;
+       char *caller;
+};
+
+enum _CamAppProperty {
+       PROP_MODE,                                      // 0
+       PROP_SELF_PORTRAIT,
+       PROP_SHOT_MODE,
+       PROP_REC_MODE,
+       PROP_SCENE_MODE,
+       PROP_PHOTO_RESOLUTION,          // 5
+       PROP_VIDEO_RESOLUTION,
+       PROP_FPS,
+       PROP_BRIGHTNESS,
+       PROP_WB,
+       PROP_ISO,                                       // 10
+       PROP_AUTO_CONTRAST,
+       PROP_METERING,
+       PROP_EFFECT,
+       PROP_AF_MODE,
+       PROP_AHS,                                       // 15
+       PROP_WDR,
+       PROP_FLASH,
+       PROP_TIMER,
+       PROP_IMAGE_QUALITY,
+       PROP_VIDEO_QUALITY,                     // 20
+       PROP_AUDIO_REC,
+       PROP_AUDIO_QUALITY,
+       PROP_BATTERY_LEVEL,
+       PROP_BATTERY_CHARG,
+       PROP_GPS_LEVEL,                         // 25
+       PROP_ZOOM,
+       PROP_STORAGE,
+       PROP_GUIDELINE,
+       PROP_GPS,
+       PROP_REVIEW,                            // 30
+       PROP_IMAGE_COUNT,
+       PROP_SHUTTER_SOUND,
+       PROP_SIZE_LIMIT,
+       PROP_SIZE_LIMIT_TYPE,
+       PROP_REC_TIME,                          // 35
+       PROP_REC_FILE_SIZE,
+       PROP_OUTDOOR_VISIBILITY,
+       PROP_VOLUME_KEY,
+       PROP_SAVE_AS_FLIP,
+       PROP_BURST_SHOT,                        // 40
+
+       PROP_NUMS
+};
+
+#define PROP_MODE_NAME                         "mode"
+#define PROP_SELF_PORTRAIT_NAME                "self_portrait"
+#define PROP_SCENE_MODE_NAME           "scene_mode"
+#define PROP_PHOTO_RESOLUTION_NAME                     "photo_resolution"
+#define PROP_VIDEO_RESOLUTION_NAME                     "video_resolution"
+#define PROP_SELF_PHOTO_RESOLUTION_NAME                "self_photo_resolution"
+#define PROP_SELF_VIDEO_RESOLUTION_NAME                "self_video_resolution"
+#define PROP_WB_NAME                           "wb"
+#define PROP_ISO_NAME                          "iso"
+#define PROP_AUTO_CONTRAST_NAME                "auto_contrast"
+#define PROP_METERING_NAME                     "metering"
+#define PROP_AF_NAME                           "af_mode"
+#define PROP_AHS_NAME                          "ahs"
+#define PROP_WDR_NAME                          "wdr"
+#define PROP_FLASH_NAME                                "flash"
+#define PROP_STORAGE_NAME                      "storage"
+#define PROP_GUIDELINE_NAME                    "guideline"
+#define PROP_GPS_NAME                          "gps"
+#define PROP_REVIEW_NAME                       "review"
+#define PROP_VOLUME_KEY_NAME           "volume_key"
+#define PROP_BURST_SHOT_NAME           "burst_shot"
+
+#define PROP_TOOLBAR_0_TYPE_NAME       "toolbar_0"
+#define PROP_TOOLBAR_1_TYPE_NAME       "toolbar_1"
+#define PROP_TOOLBAR_2_TYPE_NAME       "toolbar_2"
+#define PROP_TOOLBAR_3_TYPE_NAME       "toolbar_3"
+#define PROP_TOOLBAR_4_TYPE_NAME       "toolbar_4"
+
+/*NOTE: edit shortcuts*/
+#define PROP_SHOW_POP_TIP      "pop_tip"
+#define PROP_SHORTCUTS_INIT_PART_INDEX         "init_part_index"
+
+#define PROP_SHORTCUTS_PART_INDEX_0    "part_index_0"
+#define PROP_SHORTCUTS_PART_INDEX_1    "part_index_1"
+#define PROP_SHORTCUTS_PART_INDEX_2    "part_index_2"
+#define PROP_SHORTCUTS_PART_INDEX_3    "part_index_3"
+
+#define PROP_SHORTCUTS_PART_INDEX_4    "part_index_4"
+#define PROP_SHORTCUTS_PART_INDEX_5    "part_index_5"
+#define PROP_SHORTCUTS_PART_INDEX_6    "part_index_6"
+#define PROP_SHORTCUTS_PART_INDEX_7    "part_index_7"
+
+#define PROP_SHORTCUTS_PART_INDEX_8    "part_index_8"
+#define PROP_SHORTCUTS_PART_INDEX_9    "part_index_9"
+#define PROP_SHORTCUTS_PART_INDEX_10   "part_index_10"
+#define PROP_SHORTCUTS_PART_INDEX_11   "part_index_11"
+
+#define PROP_SHORTCUTS_PART_INDEX_12   "part_index_12"
+#define PROP_SHORTCUTS_PART_INDEX_13   "part_index_13"
+#define PROP_SHORTCUTS_PART_INDEX_14   "part_index_14"
+#define PROP_SHORTCUTS_PART_INDEX_15   "part_index_15"
+
+#define PROP_SHORTCUTS_PART_INDEX_16   "part_index_16"
+#define PROP_SHORTCUTS_PART_INDEX_17   "part_index_17"
+#define PROP_SHORTCUTS_PART_INDEX_18   "part_index_18"
+#define PROP_SHORTCUTS_PART_INDEX_19   "part_index_19"
+
+
+#define STR_MOVE_PREV "move,prev"
+#define STR_MOVE_NEXT "move,next"
+#define STR_ANI_RETURN "ani,return"
+
+
+typedef enum _CamDeviceType {
+       CAM_DEVICE_MEGA = CAMERA_DEVICE_CAMERA0,
+       CAM_DEVICE_VGA = CAMERA_DEVICE_CAMERA1,
+} CamDeviceType;
+
+typedef enum _CamLaunchingMode {
+       CAM_LAUNCHING_MODE_NORMAL = 0,
+       CAM_LAUNCHING_MODE_EXTERNAL,
+       CAM_LAUNCHING_MODE_NUMS,
+} CamLaunchingMode;
+
+#define CAMCORDER_MODE_IMAGE 1
+#define CAMCORDER_MODE_VIDEO 2
+typedef enum _CamMode {
+       CAM_CAMERA_MODE = CAMCORDER_MODE_IMAGE,
+       CAM_CAMCORDER_MODE = CAMCORDER_MODE_VIDEO,
+       CAM_MODE_NUMS = CAM_CAMCORDER_MODE
+} CamMode;
+
+typedef enum __CAM_MENU_ITEM{
+       CAM_MENU_EMPTY = -1,
+       CAM_MENU_SHORTCUTS = 0,
+       CAM_MENU_VOLUME_KEY,
+       CAM_MENU_BURST_SHOT_MODE,
+       CAM_MENU_SELF_PORTRAIT,
+       CAM_MENU_FLASH,
+       CAM_MENU_SHOOTING_MODE,
+       CAM_MENU_RECORDING_MODE,
+       CAM_MENU_SCENE_MODE,
+       CAM_MENU_EXPLOSURE_VALUE,
+       CAM_MENU_FOCUS_MODE,
+       CAM_MENU_TIMER,
+       CAM_MENU_EFFECTS,
+       CAM_MENU_PHOTO_RESOLUTION,
+       CAM_MENU_VIDEO_RESOLUTION,
+       CAM_MENU_WHITE_BALANCE,
+       CAM_MENU_ISO,
+       CAM_MENU_METERING,
+       CAM_MENU_ANTI_SHAKE,
+       CAM_MENU_OUTDOOR_VISIBILITY,
+       CAM_MENU_AUTO_CONTRAST,
+       CAM_MENU_GUIDELINES,
+       CAM_MENU_CAPTURE_VOICE,
+       CAM_MENU_GPS_TAG,
+       CAM_MENU_SAVE_AS_FLIP,
+       CAM_MENU_STORAGE,
+       CAM_MENU_RESET,
+       CAM_MENU_SCENE_AUTO, /* scene */
+       CAM_MENU_SCENE_PORTRAIT,
+       CAM_MENU_SCENE_LANDSCAPE,
+       CAM_MENU_SCENE_NIGHT,
+       CAM_MENU_SCENE_SPORTS,
+       CAM_MENU_SCENE_PARTY,
+       CAM_MENU_SCENE_BEACHSNOW,
+       CAM_MENU_SCENE_SUNSET,
+       CAM_MENU_SCENE_DUSKDAWN,
+       CAM_MENU_SCENE_FALL,
+       CAM_MENU_SCENE_FIREWORK,
+       CAM_MENU_SCENE_TEXT,
+       CAM_MENU_SCENE_CANDLELIGHT,
+       CAM_MENU_SCENE_BACKLIGHT,
+       CAM_MENU_SCENE_SHOW_WINDOW,
+       CAM_MENU_SHOOTING_SINGLE,       /*shooting mode*/
+       CAM_MENU_SHOOTING_SELF_SINGLE,
+       CAM_MENU_VIDEO_RESOLUTION_FULLHD, /* video resolution */
+       CAM_MENU_VIDEO_RESOLUTION_HD,
+       CAM_MENU_VIDEO_RESOLUTION_WVGA,
+       CAM_MENU_VIDEO_RESOLUTION_VGA,
+       CAM_MENU_VIDEO_RESOLUTION_QVGA,
+       CAM_MENU_VIDEO_RESOLUTION_QCIF,
+       CAM_MENU_PHOTO_RESOLUTION_3264x2448, /* photo resolution */
+       CAM_MENU_PHOTO_RESOLUTION_3264x1960,
+       CAM_MENU_PHOTO_RESOLUTION_3264x1836,
+       CAM_MENU_PHOTO_RESOLUTION_2800x1920,
+       CAM_MENU_PHOTO_RESOLUTION_2560x1920,
+       CAM_MENU_PHOTO_RESOLUTION_2560x1536,
+       CAM_MENU_PHOTO_RESOLUTION_2560x1440,
+       CAM_MENU_PHOTO_RESOLUTION_2048x1536,
+       CAM_MENU_PHOTO_RESOLUTION_2048x1152,
+       CAM_MENU_PHOTO_RESOLUTION_1920x1080,
+       CAM_MENU_PHOTO_RESOLUTION_1600x1200,
+       CAM_MENU_PHOTO_RESOLUTION_1392x1392,
+       CAM_MENU_PHOTO_RESOLUTION_1280x960,
+       CAM_MENU_PHOTO_RESOLUTION_1280x720,
+       CAM_MENU_PHOTO_RESOLUTION_640x480,
+       CAM_MENU_WB_AWB,                /* WB */
+       CAM_MENU_WB_INCANDESCENT,
+       CAM_MENU_WB_FLUORESCENT,
+       CAM_MENU_WB_DAYLIGHT,
+       CAM_MENU_WB_CLOUDY,
+       CAM_MENU_WB_SHADE,
+       CAM_MENU_WB_HORIZON,
+       CAM_MENU_WB_FLASH,
+       CAM_MENU_WB_CUSTOM,
+       CAM_MENU_EFFECT_NONE,
+       CAM_MENU_EFFECT_NEGATIVE,
+       CAM_MENU_EFFECT_BLACKANDWHITE,
+       CAM_MENU_EFFECT_SEPIA,
+       CAM_MENU_FOCUS_AUTO, /* Focus mode */
+       CAM_MENU_FOCUS_MACRO,
+       CAM_MENU_FOCUS_FACE_DETECTION,
+       CAM_MENU_RECORDING_MODE_NORMAL, /* Recording mode */
+       CAM_MENU_RECORDING_MODE_LIMIT,
+       CAM_MENU_RECORDING_MODE_SLOW,
+       CAM_MENU_RECORDING_MODE_FAST,
+       CAM_MENU_RECORDING_MODE_SELF_NORMAL,
+       CAM_MENU_RECORDING_MODE_SELF_LIMIT,
+       CAM_MENU_FLASH_OFF, /* Flash */
+       CAM_MENU_FLASH_ON,
+       CAM_MENU_FLASH_AUTO,
+       CAM_MENU_METERING_MATRIX, /* Metering */
+       CAM_MENU_METERING_CENTER_WEIGHTED,
+       CAM_MENU_METERING_SPOT,
+       CAM_MENU_ISO_AUTO, /* ISO */
+       CAM_MENU_ISO_50,
+       CAM_MENU_ISO_100,
+       CAM_MENU_ISO_200,
+       CAM_MENU_ISO_400,
+       CAM_MENU_ISO_80O,
+       CAM_MENU_ISO_1600,
+       CAM_MENU_ISO_320O,
+       CAM_MENU_TIMER_OFF, /*TIMER*/
+       CAM_MENU_TIMER_2SEC,
+       CAM_MENU_TIMER_5SEC,
+       CAM_MENU_TIMER_10SEC,
+       CAM_MENU_STORAGE_PHONE,
+       CAM_MENU_STORAGE_MMC,
+       CAM_MENU_VOLUME_KEY_ZOOM,
+       CAM_MENU_VOLUME_KEY_SHUTTER,
+       CAM_MENU_MAX_NUMS,
+}CAM_MENU_ITEM;
+
+typedef enum _CamStorage {
+       CAM_STORAGE_INTERNAL = 0,
+       CAM_STORAGE_EXTERNAL,
+       CAM_STORAGE_DCF,
+       CAM_STORAGE_NUM,
+} CamStorage;
+
+typedef enum _CamToolbarButton {
+       CAM_TOOLBAR_BUTTON_MODE,
+       CAM_TOOLBAR_BUTTON_SHOT,
+       CAM_TOOLBAR_BUTTON_RECORD,
+       CAM_TOOLBAR_BUTTON_SCENE,
+       CAM_TOOLBAR_BUTTON_SETTINGS,
+
+       CAM_TOOLBAR_BUTTON_BACK,
+       CAM_TOOLBAR_BUTTON_FLASH,
+       CAM_TOOLBAR_BUTTON_BRIGHTNESS,
+       CAM_TOOLBAR_BUTTON_QUICKVIEW,
+
+       CAM_TOOLBAR_BUTTON_NUM,
+} CamToolbarButton;
+
+typedef enum _CamShotMode {
+       CAM_SINGLE_MODE,
+       /* self shooting mode */
+       CAM_SELF_SINGLE_MODE,
+       CAM_SHOT_MODE_NUMS
+} CamShotMode;
+
+enum _CamRecordMode {
+       CAM_RECORD_NORMAL,
+       CAM_RECORD_SLOW,
+       CAM_RECORD_FAST,
+       CAM_RECORD_MMS,
+       /* self recording mode */
+       CAM_RECORD_SELF,
+       CAM_RECORD_SELF_MMS,
+       CAM_RECORD_MODE_NUMS,
+};
+
+typedef enum _CamSceneMode {
+       CAM_SCENE_NONE = CAMERA_ATTR_SCENE_MODE_NORMAL,
+       CAM_SCENE_PORTRAIT = CAMERA_ATTR_SCENE_MODE_PORTRAIT,
+       CAM_SCENE_LANDSCAPE = CAMERA_ATTR_SCENE_MODE_LANDSCAPE,
+       CAM_SCENE_SPORTS = CAMERA_ATTR_SCENE_MODE_SPORTS,
+       CAM_SCENE_PARTY = CAMERA_ATTR_SCENE_MODE_PARTY_N_INDOOR,
+       CAM_SCENE_BEACHSNOW = CAMERA_ATTR_SCENE_MODE_BEACH_N_INDOOR,
+       CAM_SCENE_SUNSET = CAMERA_ATTR_SCENE_MODE_SUNSET,
+       CAM_SCENE_DUSKDAWN = CAMERA_ATTR_SCENE_MODE_DUSK_N_DAWN,
+       CAM_SCENE_FALL = CAMERA_ATTR_SCENE_MODE_FALL_COLOR,
+       CAM_SCENE_NIGHT = CAMERA_ATTR_SCENE_MODE_NIGHT_SCENE,
+       CAM_SCENE_FIREWORK = CAMERA_ATTR_SCENE_MODE_FIREWORK,
+       CAM_SCENE_TEXT = CAMERA_ATTR_SCENE_MODE_TEXT,
+       CAM_SCENE_SHOW_WINDOW = CAMERA_ATTR_SCENE_MODE_SHOW_WINDOW,
+       CAM_SCENE_CANDLELIGHT = CAMERA_ATTR_SCENE_MODE_CANDLE_LIGHT,
+       CAM_SCENE_BACKLIGHT = CAMERA_ATTR_SCENE_MODE_BACKLIGHT,
+
+} CamSceneMode;
+
+typedef enum _CamIso {
+       CAM_ISO_AUTO = CAMERA_ATTR_ISO_AUTO,
+       CAM_ISO_50 = CAMERA_ATTR_ISO_50,
+       CAM_ISO_100 = CAMERA_ATTR_ISO_100,
+       CAM_ISO_200 = CAMERA_ATTR_ISO_200,
+       CAM_ISO_400 = CAMERA_ATTR_ISO_400,
+       CAM_ISO_800 = CAMERA_ATTR_ISO_800,
+       CAM_ISO_1600 = CAMERA_ATTR_ISO_1600,
+       CAM_ISO_3200 = CAMERA_ATTR_ISO_3200,
+}CamIso;
+
+typedef enum _CamMetering {
+       CAM_METERING_MATRIX = CAMERA_ATTR_EXPOSURE_MODE_ALL,
+       CAM_METERING_CENTER_WEIGHTED = CAMERA_ATTR_EXPOSURE_MODE_CENTER,
+       CAM_METERING_SPOT = CAMERA_ATTR_EXPOSURE_MODE_SPOT,
+}CamMetering;
+
+#define CAMCORDER_WDR_OFF 0
+#define CAMCORDER_WDR_ON 1
+enum _CamWDR {
+       CAM_WDR_OFF =CAMCORDER_WDR_OFF, /*TODO:now capi not surpprot this attribute*/
+       CAM_WDR_ON = CAMCORDER_WDR_ON,
+};
+#define CAMCORDER_AHS_OFF 0
+#define CAMCORDER_AHS_ON 1
+enum _CamAHS { /*TODO:now capi not surpprot this attribute*/
+       CAM_AHS_OFF = CAMCORDER_AHS_OFF,
+       CAM_AHS_ON = CAMCORDER_AHS_ON,
+};
+
+typedef enum _CamFlashMode {
+       CAM_FLASH_OFF = CAMERA_ATTR_FLASH_MODE_OFF,
+       CAM_FLASH_ON = CAMERA_ATTR_FLASH_MODE_ON,
+       CAM_FLASH_AUTO = CAMERA_ATTR_FLASH_MODE_AUTO,
+       CAM_FLASH_MOVIE_ON = CAMERA_ATTR_FLASH_MODE_PERMANENT,
+} CamFlashMode;
+
+typedef enum _CamFocusMode {
+       CAM_FOCUS_NONE = CAMERA_ATTR_AF_NONE,
+       CAM_FOCUS_AUTO = CAMERA_ATTR_AF_NORMAL,
+       CAM_FOCUS_MACRO = CAMERA_ATTR_AF_MACRO,
+       CAM_FOCUS_CAF = CAMERA_ATTR_AF_FULL,
+       CAM_FOCUS_FACE = 100,   /* It is not focus mode in MMF, set detect mode */
+} CamFocusMode;
+
+typedef enum _CamFocusStatus {
+       CAM_FOCUS_STATUS_RELEASED = 0,
+                                    /**< AF status released.*/
+       CAM_FOCUS_STATUS_ONGOING,    /**< AF in pregress*/
+       CAM_FOCUS_STATUS_FOCUSED,    /**< AF success*/
+       CAM_FOCUS_STATUS_FAILED,     /**< AF fail*/
+       CAM_FOCUS_STATUS_NUM,        /**< Number of AF status*/
+} CamFocusStatus;
+
+typedef enum _CamTouchAFState {
+       CAM_TOUCH_AF_STATE_NONE,
+       CAM_TOUCH_AF_STATE_READY,
+       CAM_TOUCH_AF_STATE_DOING,
+}CamTouchAFState;
+
+typedef enum _CamContinuousShotStatus {
+       CAM_CONTI_SHOT_STATUS_DEFAULT = 0, /**< NOT Started */
+       CAM_CONTI_SHOT_STATUS_CAPTURING,/**< NOW Capturing */
+       CAM_CONTI_SHOT_STATUS_STOPPING,  /**< NOW Stopping */
+       CAM_CONTI_SHOT_STATUS_STOPPED,   /**< Ignore Capture data */
+       CAM_CONTI_SHOT_STATUS_NUM,       /**< Number of Continuous shot status*/
+} CamContinuousShotStatus;
+
+typedef enum _CamContinuousShotError {
+       CAM_CONTI_SHOT_ERROR_NONE = 0, /**< NOT Started */
+       CAM_CONTI_SHOT_ERROR_ENCODING, /**< JPEG Encoding error*/
+       CAM_CONTI_SHOT_ERROR_MMC_REMOVED,
+                                      /**< MMC is removed */
+       CAM_CONTI_SHOT_ERROR_FILE_WRITE,
+                                      /**< File write failed */
+       CAM_CONTI_SHOT_ERROR_NUM,      /**< Number of Continuous shot status*/
+} CamContinuousShotError;
+
+typedef enum _CamSettingOnOff {
+       CAM_SETTINGS_OFF,
+       CAM_SETTINGS_ON,
+} CamSettingsOnOff;
+
+typedef enum _CamSettingsTimer {
+       CAM_SETTINGS_TIMER_OFF,
+       CAM_SETTINGS_TIMER_2SEC,
+       CAM_SETTINGS_TIMER_5SEC,
+       CAM_SETTINGS_TIMER_10SEC,
+       CAM_SETTINGS_TIMER_NUMS
+} CamSettingsTimer;
+
+typedef enum _CamSettingsWB {
+       CAM_SETTINGS_WB_AWB = CAMERA_ATTR_WHITE_BALANCE_AUTOMATIC,
+       CAM_SETTINGS_WB_INCANDESCENT = CAMERA_ATTR_WHITE_BALANCE_INCANDESCENT,
+       CAM_SETTINGS_WB_FLUORESCENT = CAMERA_ATTR_WHITE_BALANCE_FLUORESCENT,
+       CAM_SETTINGS_WB_DAYLIGHT = CAMERA_ATTR_WHITE_BALANCE_DAYLIGHT,
+       CAM_SETTINGS_WB_CLOUDY = CAMERA_ATTR_WHITE_BALANCE_CLOUDY,
+       CAM_SETTINGS_WB_SHADE = CAMERA_ATTR_WHITE_BALANCE_SHADE,
+       CAM_SETTINGS_WB_HORIZON = CAMERA_ATTR_WHITE_BALANCE_HORIZON,
+       CAM_SETTINGS_WB_FLASH = CAMERA_ATTR_WHITE_BALANCE_FLASH,
+       CAM_SETTINGS_WB_CUSTOM = CAMERA_ATTR_WHITE_BALANCE_CUSTOM,
+} CamSettingsWB;
+
+typedef enum _CamSettingsEffects {
+       /*
+          CAM_SETTINGS_EFFECTS_NOR = MM_CAMCORDER_COLOR_TONE_NORMAL,
+        */
+
+       CAM_SETTINGS_EFFECTS_NOR                = CAMERA_ATTR_EFFECT_NONE,                      /**< None */
+       CAM_SETTINGS_EFFECTS_MONO               = CAMERA_ATTR_EFFECT_MONO,                      /**< Mono */
+       CAM_SETTINGS_EFFECTS_SEPIA              = CAMERA_ATTR_EFFECT_SEPIA,                     /**< Sepia */
+       CAM_SETTINGS_EFFECTS_NEGATIVE   = CAMERA_ATTR_EFFECT_NEGATIVE,          /**< Negative */
+       CAM_SETTINGS_EFFECTS_BLUE               = CAMERA_ATTR_EFFECT_BLUE,                      /**< Blue */
+       CAM_SETTINGS_EFFECTS_GREEN              = CAMERA_ATTR_EFFECT_GREEN,                     /**< Green */
+       CAM_SETTINGS_EFFECTS_AQUA               = CAMERA_ATTR_EFFECT_AQUA,                      /**< Aqua */
+       CAM_SETTINGS_EFFECTS_VIOLET     = CAMERA_ATTR_EFFECT_VIOLET,                    /**< Violet (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_ORANGE     = CAMERA_ATTR_EFFECT_ORANGE,                    /**< Orange (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_GRAY               = CAMERA_ATTR_EFFECT_GRAY,                      /**< Gray (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_RED                = CAMERA_ATTR_EFFECT_RED,                       /**< Red (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_ANTIQUE    = CAMERA_ATTR_EFFECT_ANTIQUE,           /**< Antique (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_WARM               = CAMERA_ATTR_EFFECT_WARM,                      /**< Warm (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_PINK               = CAMERA_ATTR_EFFECT_PINK,                      /**< Pink (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_YELLOW             = CAMERA_ATTR_EFFECT_YELLOW,                    /**< Yellow (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_PURPLE     = CAMERA_ATTR_EFFECT_PURPLE,                    /**< Purple (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_EMBOSS     = CAMERA_ATTR_EFFECT_EMBOSS,                    /**< Emboss (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_OUTLINE    = CAMERA_ATTR_EFFECT_OUTLINE,           /**< Outline (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_SOLARIZATION= CAMERA_ATTR_EFFECT_SOLARIZATION,     /**< Solarization (Samsung Extension)*/
+       CAM_SETTINGS_EFFECTS_SKETCH_1   = CAMERA_ATTR_EFFECT_SKETCH,            /**< Sketch (Samsung Extension/secondary camera only)*/
+       CAM_SETTINGS_EFFECTS_WASHED     = CAMERA_ATTR_EFFECT_WASHED,     /**< Washed */
+       CAM_SETTINGS_EFFECTS_VINTAGE_WARM               = CAMERA_ATTR_EFFECT_VINTAGE_WARM,       /**< Vintage warm      */
+       CAM_SETTINGS_EFFECTS_VINTAGE_COLD               = CAMERA_ATTR_EFFECT_VINTAGE_COLD,       /**< Vintage cold      */
+       CAM_SETTINGS_EFFECTS_POSTERIZATION              = CAMERA_ATTR_EFFECT_POSTERIZATION,     /**< Posterization */
+       CAM_SETTINGS_EFFECTS_CARTOON                    = CAMERA_ATTR_EFFECT_CARTOON,   /**< Cartoon */
+       CAM_SETTINGS_EFFECTS_SELECTIVE_RED              = CAMERA_ATTR_EFFECT_SELECTIVE_RED,       /**< Selective color - Red */
+       CAM_SETTINGS_EFFECTS_SELECTIVE_GREEN    = CAMERA_ATTR_EFFECT_SELECTIVE_GREEN,     /**< Selective color - Green */
+       CAM_SETTINGS_EFFECTS_SELECTIVE_BLUE     = CAMERA_ATTR_EFFECT_SELECTIVE_BLUE,     /**< Selective color - Blue */
+       CAM_SETTINGS_EFFECTS_SELECTIVE_YELLOW   = CAMERA_ATTR_EFFECT_SELECTIVE_YELLOW,     /**< Selective color - Yellow */
+       CAM_SETTINGS_EFFECTS_SELECTIVE_RED_YELLOW = CAMERA_ATTR_EFFECT_SELECTIVE_RED_YELLOW,     /**< Selective color - Red and Yellow */
+
+} CamSettingsEffects;
+
+enum _CamMMSizeLimit {
+       CAM_MM_SIZE_LIMIT_TYPE_BYTE,
+       CAM_MM_SIZE_LIMIT_TYPE_SECOND,
+};
+
+enum _CamQuality {
+       CAM_QUALITY_BEST = 100,
+       CAM_QUALITY_HIGH = 95,  /*  still only */
+       CAM_QUALITY_MEDIUM = 80,
+       CAM_QUALITY_LOW = 65,
+};
+
+enum _CamSound {
+       CAM_SETTINGS_SOUND_OFF = -1,
+       CAM_SETTINGS_SOUND_1,
+       CAM_SETTINGS_SOUND_2,
+       CAM_SETTINGS_SOUND_3,
+};
+
+typedef enum _CamVolumeKeyMode {
+       CAM_VOLUME_KEY_ZOOM,
+       CAM_VOLUME_KEY_SHUTTER,
+} CamVolumeKeyMode;
+
+typedef enum _CamZoomValue {
+       CAM_ZOOM_VALUE_MIN,
+
+       CAM_ZOOM_VALUE_01,
+       CAM_ZOOM_VALUE_02,
+       CAM_ZOOM_VALUE_03,
+       CAM_ZOOM_VALUE_04,
+       CAM_ZOOM_VALUE_05,
+       CAM_ZOOM_VALUE_06,
+       CAM_ZOOM_VALUE_07,
+       CAM_ZOOM_VALUE_08,
+       CAM_ZOOM_VALUE_09,
+       CAM_ZOOM_VALUE_10,
+       CAM_ZOOM_VALUE_11,
+       CAM_ZOOM_VALUE_12,
+       CAM_ZOOM_VALUE_13,
+       CAM_ZOOM_VALUE_14,
+       CAM_ZOOM_VALUE_15,
+       CAM_ZOOM_VALUE_16,
+       CAM_ZOOM_VALUE_17,
+       CAM_ZOOM_VALUE_18,
+       CAM_ZOOM_VALUE_19,
+       CAM_ZOOM_VALUE_20,
+       CAM_ZOOM_VALUE_21,
+       CAM_ZOOM_VALUE_22,
+       CAM_ZOOM_VALUE_23,
+       CAM_ZOOM_VALUE_24,
+       CAM_ZOOM_VALUE_25,
+       CAM_ZOOM_VALUE_26,
+       CAM_ZOOM_VALUE_27,
+       CAM_ZOOM_VALUE_28,
+       CAM_ZOOM_VALUE_29,
+       CAM_ZOOM_VALUE_30,
+       CAM_ZOOM_VALUE_4x,
+
+       CAM_ZOOM_VALUE_MAX
+} CamZoomValue;
+
+/*  Continuous Shot */
+typedef struct _CamContinuousShotData {
+       int shot_num;
+       int lock;
+       CamContinuousShotStatus capture_status;
+       GError *error;
+       char *first_filename;
+       char *file_path[MAX_CONTINUOUS_SHOT];
+       char *thumbnail_file_path[MAX_CONTINUOUS_SHOT];
+} CamContinuousShotData;
+
+enum _CamRecStopType {
+       CAM_REC_STOP_UNEXPECTED = 0,
+       CAM_REC_STOP_NORMAL,
+       CAM_REC_STOP_LOW_BATTERY,
+       CAM_REC_STOP_ASM,
+       CAM_REC_STOP_MAX_SIZE,
+       CAM_REC_STOP_TIME_LIMIT,
+       CAM_REC_STOP_NO_SPACE,
+       CAM_REC_STOP_USB_CONN,
+       CAM_REC_STOP_POWER_KEY,
+
+       CAM_REC_STOP_NUM,
+};
+
+typedef enum _CamUgState {
+       CAM_UG_PAUSE_STATE = 1,
+       CAM_UG_RESUME_STATE,
+       CAM_UG_RESET_STATE,
+       CAM_UG_TERMINATE_STATE,
+} CamUgState;
+
+typedef enum _CamFoucusMode {
+       CAM_FOCUS_MODE_TOUCH_AUTO = 0,
+       CAM_FOCUS_MODE_HALFSHUTTER = 1,
+       CAM_FOCUS_MODE_CONTINUOUS = 2,
+} CamAppFocusMode;
+
+typedef struct __ShortCutData {
+       /*fixed*/
+       Evas_Object *icon;
+       Evas_Object_Event_Cb func;
+       CAM_MENU_ITEM setting_type;
+       char *icon_filepath;
+       char *name;
+       /*if change, should swap*/
+       int menu_bar_no;/*-1,if -1, not in menubar;0,1,2,3,4, from left to right; now: 0 be always setting */
+       gboolean is_on_menu_bar;
+       gboolean is_virtual;
+       /*varible*/
+       Evas_Coord x, y, w, h;
+       int part_index;/*part index*/
+       int list_index; /*list index*/
+       int row;/*unused*/
+       int col;/*unused*/
+
+} ShortCutData;
+
+
+typedef struct __MenuBar_Shortcut {
+       Evas_Object *icon;
+       Evas_Object *icon_button;
+       Evas_Object_Event_Cb func;
+       CAM_MENU_ITEM setting_type;
+       int menu_bar_no;
+}MenuBar_Shortcut;
+
+typedef struct __Ecore_Pipe_Data_Info {
+       void *data;
+       unsigned int cmd;
+} Ecore_Pipe_Data_Info;
+
+enum {
+       CAM_MENU_BAR_LEFT_INVALID = -1,
+       CAM_MENU_BAR_LEFT_0 = 0,
+       CAM_MENU_BAR_LEFT_1,
+       CAM_MENU_BAR_LEFT_2,
+       CAM_MENU_BAR_LEFT_3,
+       CAM_MENU_BAR_LEFT_4,
+       CAM_MENU_BAR_LEFT_MAX_NUM,
+};
+
+enum  {
+       CAM_MAIN_PIPE_OP_TYPE_INVAILD = -1,
+       CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL, /*update thumbnail type*/
+       CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL_NO_ANI, /*update thumbnail type*/
+       CAM_MAIN_PIPE_OP_TYPE_ROTATE_ANIMATOR, /*rotate target, start rotate icons*/
+       CAM_MAIN_PIPE_OP_TYPE_SHUTTER_ANIMATION, /*shutter: show rect and thumbnail effect*/
+       CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_UPDATE_PROGRESS, /*burstshot: update capture progress*/
+       CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_DISPLAY_POPUP,
+       CAM_MAIN_PIPE_OP_TYPE_BEST_SHOT_IMAGE_HANDLE,
+       CAM_MAIN_PIPE_OP_TYPE_UPDATE_VIEW,
+       CAM_MAIN_PIPE_OP_TYPE_ERROR_POPUP, /*error popup*/
+       CAM_MAIN_PIPE_OP_TYPE_VIDEO_CAPTURE_HANDLE,
+       CAM_MAIN_PIPE_OP_TYPE_RUN_IMAGE_VIEWER,
+       CAM_MAIN_PIPE_OP_TYPE_MAX_NUM,
+}; /*note: this define for main pipe operation type*/
+
+
+typedef enum __CAM_EDIT_SHORTCUTS_INDEX{
+       CAM_EDIT_SHORTCUTS_INDEX_INVALID = -1,
+       CAM_EDIT_SHORTCUTS_INDEX_0 = 0,/*row 1*/
+       CAM_EDIT_SHORTCUTS_INDEX_1,
+       CAM_EDIT_SHORTCUTS_INDEX_2,
+       CAM_EDIT_SHORTCUTS_INDEX_3,
+       CAM_EDIT_SHORTCUTS_INDEX_4,/*row 2*/
+       CAM_EDIT_SHORTCUTS_INDEX_5,
+       CAM_EDIT_SHORTCUTS_INDEX_6,
+       CAM_EDIT_SHORTCUTS_INDEX_7,
+       CAM_EDIT_SHORTCUTS_INDEX_8,/*row 3*/
+       CAM_EDIT_SHORTCUTS_INDEX_9,
+       CAM_EDIT_SHORTCUTS_INDEX_10,
+       CAM_EDIT_SHORTCUTS_INDEX_11,
+       CAM_EDIT_SHORTCUTS_INDEX_12,/*row 4*/
+       CAM_EDIT_SHORTCUTS_INDEX_13,
+       CAM_EDIT_SHORTCUTS_INDEX_14,
+       CAM_EDIT_SHORTCUTS_INDEX_15,
+       CAM_EDIT_SHORTCUTS_INDEX_16,/*row 5*/
+       CAM_EDIT_SHORTCUTS_INDEX_17,
+       CAM_EDIT_SHORTCUTS_INDEX_18,
+       CAM_EDIT_SHORTCUTS_INDEX_19,
+       CAM_EDIT_SHORTCUTS_INDEX_MAX,
+} CAM_EDIT_SHORTCUTS_INDEX;
+
+typedef enum _CamTargetDirection {
+       CAM_TARGET_DIRECTION_LANDSCAPE = 0,
+       CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE,
+       CAM_TARGET_DIRECTION_PORTRAIT,
+       CAM_TARGET_DIRECTION_PORTRAIT_INVERSE,
+       CAM_TARGET_DIRECTION_MAX,
+}CamTargetDirection;
+
+typedef struct __cam_menu_composer {
+       const char* title;
+       Eina_Array* array;
+} cam_menu_composer;
+
+typedef struct __Edit_ShortCuts_Rect {
+       Evas_Coord x;
+       Evas_Coord y;
+       Evas_Coord w;
+       Evas_Coord h;
+} CAM_Edit_ShortCuts_Rect;
+
+typedef struct __cam_menubar_data {
+       Evas_Object *icon;
+       int menu_type;
+} cam_menubar_data;
+
+typedef struct __cam_reserved_setting_data {
+       gint front_shooting_mode;
+       gint front_recording_mode;
+       gint rear_shooting_mode;
+       gint rear_recording_mode;
+
+       gint front_photo_resolution;
+       gint front_video_resolution;
+       gint rear_photo_resolution;
+       gint rear_video_resolution;
+
+       gint front_effect;
+       gint rear_effect;
+
+       gint front_wb;
+       gint rear_wb;
+} cam_reserved_setting_data;
+
+typedef enum _CamErrorType {
+       CAM_ERROR_TYPE_NONE = 0,
+       CAM_ERROR_TYPE_UNABLE_TO_LAUNCH,
+} CamErrorType;
+
+typedef enum _CamTipPopupType {
+       CAM_TIP_POPUP_NONE = -1,
+       CAM_TIP_POPUP_BURSTSHOT_HELP = 0,
+       CAM_TIP_POPUP_VOLUMEKEY_HELP,
+       CAM_TIP_POPUP_MAX,
+} CamTipPopupType;
+
+#endif                         /* __DEF_CAM_PROPERTY_H_ */
diff --git a/include/cam_rec.h b/include/cam_rec.h
new file mode 100755 (executable)
index 0000000..81de3bd
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_cam_rec_H_
+#define __DEF_cam_rec_H_
+
+/* #include <applog.h> */
+#include <Elementary.h>
+/* #include <Imlib2.h> */
+#include <utilX.h>
+#include <glib.h>
+#include <glib-object.h>
+/*#include <mmf/mm_camcorder.h>*/
+
+#include "cam_property.h"
+#define TMPFILE_PATH "/tmp/"
+#define TMPFILE_PREFIX "/.camera_recording_tmp"
+#define TMPFILE_EXTENTION ".3gp"
+
+/* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+Eina_Bool cam_video_capture_handle_idler(void *item);
+Eina_Bool cam_video_capture_handle(void *data);
+gboolean cam_video_record_cancel(void *data);
+gboolean cam_video_record_resume(void *data);
+gboolean cam_video_record_pause(void *data);
+gboolean cam_video_record_start(void *data);
+gboolean cam_video_record_stop(void *data);
+Eina_Bool cam_video_idler_record_stop(void *data);
+gboolean cam_rec_save_and_register_video_file(void *data);
+
+#endif
diff --git a/include/cam_sound.h b/include/cam_sound.h
new file mode 100755 (executable)
index 0000000..89f11af
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_SOUND_H_
+#define _CAM_SOUND_H_
+
+#include <glib.h>
+
+#define SOUND_PATH                                    "/usr/ug/res/sounds/ug-camera-efl/sounds"
+
+enum _CamSoundEffect {
+       CAM_SOUND_EFFECT_SHUTTER1,
+       CAM_SOUND_EFFECT_SHUTTER2,
+       CAM_SOUND_EFFECT_SHUTTER3,
+       CAM_SOUND_EFFECT_CONTINUOUS_SHUTTER,
+       CAM_SOUND_EFFECT_CONTINUOUS_READY,
+       CAM_SOUND_EFFECT_REC_START1,
+       CAM_SOUND_EFFECT_REC_START2,
+       CAM_SOUND_EFFECT_REC_START3,
+       CAM_SOUND_EFFECT_REC_PAUSE,
+       CAM_SOUND_EFFECT_REC_RESUME,
+       CAM_SOUND_EFFECT_REC_CANCEL,
+       CAM_SOUND_EFFECT_REC_COMMIT1,
+       CAM_SOUND_EFFECT_REC_COMMIT2,
+       CAM_SOUND_EFFECT_REC_COMMIT3,
+       CAM_SOUND_EFFECT_TICK,
+       CAM_SOUND_EFFECT_AF_OK,
+       CAM_SOUND_EFFECT_AF_FAIL,
+       CAM_SOUND_EFFECT_NUM,
+};
+
+gboolean cam_sound_init(GError **error);
+void cam_sound_finalize(void);
+void cam_sound_set(int index, const gchar *file);
+const gchar *cam_sound_get(int index);
+gboolean cam_sound_is_silent_mode(void);
+/*change audio rute api */
+gboolean cam_sound_set_mic();
+gboolean cam_sound_play(int index, void *data);
+
+#endif /*_CAM_SOUND_H_*/
diff --git a/include/cam_ta.h b/include/cam_ta.h
new file mode 100755 (executable)
index 0000000..d89411d
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_TA_H_
+#define _CAM_TA_H_
+
+#define ENABLE_TA
+#ifdef ENABLE_TA
+#define CAM_TA_MAX_CHECKPOINT  500
+#define CAM_TA_MAX_ACCUM               500
+
+typedef struct _cam_ta_checkpoint {
+       unsigned long timestamp;
+       char *name;
+} cam_ta_checkpoint;
+
+typedef struct _cam_ta_accum_item {
+       unsigned long elapsed_accum;
+       unsigned long num_calls;
+       unsigned long elapsed_min;
+       unsigned long elapsed_max;
+       unsigned long first_start;
+       unsigned long last_end;
+
+       char *name;
+
+       unsigned long timestamp;
+       int on_estimate;
+       int num_unpair;
+} cam_ta_accum_item;
+
+#define CAM_TA_SHOW_STDOUT     0
+#define CAM_TA_SHOW_STDERR     1
+#define CAM_TA_SHOW_FILE       2
+#define CAM_TA_RESULT_FILE "/tmp/cam-ta.log"
+
+int cam_ta_init(void);
+int cam_ta_release(void);
+void cam_ta_set_enable(int enable);
+char *cam_ta_fmt(const char *fmt, ...);
+
+int cam_ta_add_checkpoint(char *name, int show, char *filename, int line);
+void cam_ta_show_checkpoints(void);
+void cam_ta_show_diff(char *name1, char *name2);
+
+int cam_ta_get_numof_checkpoints();
+unsigned long cam_ta_get_diff(char *name1, char *name2);
+char *cam_ta_get_name(int idx);
+
+int cam_ta_accum_item_begin(char *name, int show, char *filename, int line);
+int cam_ta_accum_item_end(char *name, int show, char *filename, int line);
+void cam_ta_accum_show_result(int direction);
+
+#define CAM_TA_INIT()                                                          (cam_ta_init())
+#define CAM_TA_RELEASE()                                                       (cam_ta_release())
+#define CAM_TA_SET_ENABLE(enable)                                      (cam_ta_set_enable(enable))
+
+#define CAM_TA_ADD_CHECKPOINT(name, show)              (cam_ta_add_checkpoint(name, show, __FILE__, __LINE__))
+#define CAM_TA_SHOW_CHECKPOINTS()                              (cam_ta_show_checkpoints())
+#define CAM_TA_SHOW_DIFF(name1, name2)                 (cam_ta_show_diff(name1, name2))
+#define CAM_TA_GET_NUMOF_CHECKPOINTS()                 (cam_ta_get_numof_checkpoints())
+#define CAM_TA_GET_DIFF(name1, name2)                          (cam_ta_get_diff(name1, name2))
+#define CAM_TA_GET_NAME(idx)                                           (cam_ta_get_name(idx))
+
+#define CAM_TA_ACUM_ITEM_BEGIN(name, show)             (cam_ta_accum_item_begin(name, show, __FILE__, __LINE__))
+#define CAM_TA_ACUM_ITEM_END(name, show)                       (cam_ta_accum_item_end(name, show, __FILE__, __LINE__))
+#define CAM_TA_ACUM_ITEM_SHOW_RESULT()                 (cam_ta_accum_show_result(CAM_TA_SHOW_STDOUT))
+#define CAM_TA_ACUM_ITEM_SHOW_RESULT_TO(x)             (cam_ta_accum_show_result(x))
+
+#define __cam_ta__(name, x) \
+CAM_TA_ACUM_ITEM_BEGIN(name, 0); \
+x \
+CAM_TA_ACUM_ITEM_END(name, 0);
+
+#define __cam_tafmt__(fmt, args...)                    (cam_ta_fmt(fmt, ##args))
+
+#else
+
+#define CAM_TA_INIT()
+#define CAM_TA_RELEASE()
+#define CAM_TA_SET_ENABLE(enable)
+
+#define CAM_TA_ADD_CHECKPOINT(name, show)
+#define CAM_TA_SHOW_CHECKPOINTS()
+#define CAM_TA_SHOW_DIFF(name1, name2)
+#define CAM_TA_GET_NUMOF_CHECKPOINTS()
+#define CAM_TA_GET_DIFF(name1, name2)
+#define CAM_TA_GET_NAME(idx)
+
+#define CAM_TA_ACUM_ITEM_BEGIN(name, show)
+#define CAM_TA_ACUM_ITEM_END(name, show)
+#define CAM_TA_ACUM_ITEM_SHOW_RESULT()
+#define CAM_TA_ACUM_ITEM_SHOW_RESULT_TO(x)
+#define __cam_ta__(name, x) x
+#define __cam_tafmt__(fmt, args...)
+
+#endif
+#endif
diff --git a/include/cam_typeconverter.h b/include/cam_typeconverter.h
new file mode 100755 (executable)
index 0000000..ffdc4f6
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef CAM_TYPECONVERTER_H_
+#define CAM_TYPECONVERTER_H_
+
+
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+
+#include "camera.h"
+#include "cam_property.h"
+
+
+unsigned int cam_iso_dev_convert_caps(camera_attr_iso_e iso);
+unsigned int cam_effect_dev_convert_caps(camera_attr_effect_mode_e effect);
+unsigned int cam_fps_dev_convert_caps(camera_attr_fps_e fps);
+unsigned int cam_wb_dev_convert_caps(camera_attr_whitebalance_e wb);
+unsigned int cam_metering_dev_convert_caps(camera_attr_exposure_mode_e metering);
+unsigned int cam_scene_dev_convert_caps(camera_attr_scene_mode_e scene);
+unsigned int cam_flash_dev_convert_caps(camera_attr_flash_mode_e flash);
+unsigned int cam_focus_dev_convert_caps(camera_attr_af_mode_e focus);
+
+unsigned int cam_iso_cam_convert_caps(CamIso iso);
+unsigned int cam_effect_cam_convert_caps(CamSettingsEffects effect);
+unsigned int cam_wb_cam_convert_caps(CamSettingsWB wb);
+unsigned int cam_metering_cam_convert_caps(CamMetering metering);
+unsigned int cam_scene_cam_convert_caps(CamSceneMode scene);
+unsigned int cam_flash_cam_convert_caps(CamFlashMode flash);
+unsigned int cam_focus_cam_convert_caps(CamFocusMode focus);
+unsigned int cam_resolution_cam_convert_caps(unsigned int res);
+
+#ifdef _cplusplus
+}
+#endif
+
+
+
+#endif                         /*  CAM_TYPECONVERTER_H_ */
diff --git a/include/cam_ui_effect_utils.h b/include/cam_ui_effect_utils.h
new file mode 100755 (executable)
index 0000000..a3d4f94
--- /dev/null
@@ -0,0 +1,86 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_CAM_UI_EFFECT_UTILS_H__\r
+#define __H_CAM_UI_EFFECT_UTILS_H__\r
+\r
+#include "cam.h"
+/*\r
+* for thumbnail animation\r
+*/\r
+struct cam_ui_effect_custom_effect\r
+{\r
+       Evas_Coord x, y;\r
+       struct _size\r
+       {\r
+               Evas_Coord w, h;\r
+       } from, to;\r
+};\r
+
+/**\r
+ * @brief              get @focus object zoom or origin state\r
+ * @return                     Operation result\r
+ * @return                     TRUE: origin state, not zoom; FALSE: zoom state.\r
+ */\r
+gboolean cam_ui_effect_utils_get_zoom_state();
+/**\r
+ * @brief              set @obj zoom from @from_rate to @to_rate and then go back origin size\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  from_rate       start size\r
+ * @param[in]  to_rate                 end size\r
+ * @param[in]  duration        effect duration time\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_effect_utils_set_zoom_inout_effect(Evas_Object *obj, float from_rate, float to_rate, double duration);\r
+/**\r
+ * @brief              set @obj zoom from @from_rate to @to_rate\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  from_rate       start size\r
+ * @param[in]  to_rate                 end size\r
+ * @param[in]  duration        effect duration time\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_effect_utils_set_zoom_effect(Evas_Object *obj, float from_rate, float to_rate, double duration);\r
+
+/**\r
+ * @brief              set @obj resize at x,y h: fixed value @h; w: from 0 to @w\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  x       x coordinate\r
+ * @param[in]  y       y coordinate\r
+ * @param[in]  w       @obj max width\r
+ * @param[in]  h       @obj max height\r
+ * @param[in]  duration        effect duration time\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_effect_utils_set_thumbnail_effect(Evas_Object *obj,\r
+                                                               Evas_Coord x,\r
+                                                               Evas_Coord y,\r
+                                                               Evas_Coord w,\r
+                                                               Evas_Coord h,\r
+                                                               double duration);
+/**\r
+ * @brief              stop zoom effect transit pointer, created by cam_ui_effect_utils_set_zoom_effect\r
+ * @param[in]  void\r
+ * @return     void\r
+ */\r
+void cam_ui_effect_utils_stop_zoom_effect(void);\r
+\r
+#endif /* __H_CAM_UI_EFFECT_UTILS_H__ */\r
+//end file\r
diff --git a/include/cam_ui_rotate_utils.h b/include/cam_ui_rotate_utils.h
new file mode 100755 (executable)
index 0000000..2c683f9
--- /dev/null
@@ -0,0 +1,101 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __H_CAM_UI_ROTATE_UTILS_H__\r
+#define __H_CAM_UI_ROTATE_UTILS_H__\r
+\r
+#include "cam.h"\r
+\r
+struct cam_ui_rotate_obj_params\r
+{\r
+       Evas_Coord x, y;/*start_x, start_y*/\r
+       double degree;\r
+\r
+       Evas_Object *obj;\r
+};\r
+\r
+/**\r
+ * @brief              set @obj rotate @degree, the @obj left_top coordinate (start_x, start_y)\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  start_x         left_top coordinate x,\r
+ * @param[in]  start_y         left_top coordinate y,\r
+ * @param[in]  degree  the rotate angle\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_rotate_utils_map_rotate(Evas_Object *obj,\r
+                                               Evas_Coord start_x,\r
+                                               Evas_Coord start_y,\r
+                                               double degree);\r
+/**\r
+ * @brief              set @obj rotate from@from_degree to @to_degree, the time is @duration\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  from_degree     start angle\r
+ * @param[in]  to_degree       end angle\r
+ * @param[in]  duration        effect duration time\r
+ * @param[in]  cb              callback function, it will be called in the rotation end\r
+ * @param[in]  data            @cb user data.\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_rotate_utils_rotation_effect(Evas_Object *obj,\r
+                                                       float from_degree,\r
+                                                       float to_degree,\r
+                                                       double duration,\r
+                                                       void (*cb) (void *data, Elm_Transit *transit),\r
+                                                       void *data);\r
+/**\r
+ * @brief              set @setting popup rotate,  @degree, the @obj left_top coordinate (start_x, start_y)\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  start_x         left_top coordinate x,\r
+ * @param[in]  start_y         left_top coordinate y,\r
+ * @param[in]  degree  the rotate angle\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_rotate_utils_map_setting_popup_rotate(Evas_Object *obj,\r
+                                                                       Evas_Coord start_x,\r
+                                                                       Evas_Coord start_y,\r
+                                                                       double degree);\r
+/**\r
+ * @brief              @data appdata, rotate the camera ui icons\r
+ * @param[in]  data    appdata\r
+ * @param[in]  duration        effect duration time\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+gboolean cam_ui_rotate_utils_rotate_start(void *data, double duration);\r
+/**\r
+ * @brief              set @obj,  self rotate @degree, using evas_map.\r
+ * @param[in]  obj     The object to be set\r
+ * @param[in]  degree  the rotate angle\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+void cam_ui_rotate_utils_map_self_rotate(Evas_Object *obj,\r
+                                                       double degree);\r
+/**\r
+ * @brief              @data appdata, rotate the camera ui:toolbar shortcust icons\r
+ * @param[in]  data    appdata\r
+ * @param[in]  duration        effect duration time\r
+ * @return                     Operation result\r
+ * @return                     void\r
+ */\r
+gboolean cam_ui_rotate_utils_rotate_toolbar_shortcuts(void *data, double duration);\r
+\r
+#endif /* __H_CAM_UI_ROTATE_UTILS_H__ */\r
+//end file\r
diff --git a/include/cam_voice_command.h b/include/cam_voice_command.h
new file mode 100755 (executable)
index 0000000..5c831b8
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef __CAM_VOICE_COMMAND_H__\r
+#define __CAM_VOICE_COMMAND_H__\r
+\r
+#include "glib.h"\r
+\r
+typedef enum {\r
+       CAM_VIOCE_CMD_MIN,\r
+       CAM_VOICE_CMD_READY,\r
+       CAM_VOICE_CMD_REJECT,\r
+       CAM_VOICE_CMD_ERROR,\r
+       CAM_VOICE_CMD_MAX\r
+}CamVoiceCmdState;\r
+\r
+\r
+typedef void (*cam_voice_cmd_cb)(CamVoiceCmdState state, void* data);\r
+\r
+gboolean cam_voice_cmd_create(cam_voice_cmd_cb cmd_cb, void *data);\r
+void cam_voice_cmd_destroy();\r
+\r
+#endif\r
+\r
diff --git a/include/camera_utils.h b/include/camera_utils.h
new file mode 100755 (executable)
index 0000000..98ae2a3
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_utils_H_
+#define __DEF_camera_utils_H_
+
+#include <sys/vfs.h>
+
+#include "cam.h"
+
+typedef unsigned char byte;
+
+/* GPS */
+typedef enum {
+       CAM_IMG_ROTATION_LEFT = 0,
+       CAM_IMG_ROTATION_RIGHT,
+} CamRorationAngle;
+
+gboolean cam_utils_check_battery_warning_low(void);
+gboolean cam_utils_check_battery_critical_low(void);
+gboolean cam_utils_check_call_running(void);
+
+
+int cam_utils_get_battery_level(void);
+
+gint cam_utils_get_charging_status(void);
+
+void *cam_utils_YUV422_to_ARGB(byte *frame, int width, int height);
+
+void *cam_utils_IYUV_to_ARGB(byte *frame, int width, int height);
+
+gboolean
+cam_utils_save_to_jpg_file(int storage_id, gchar *filename, void *frame,
+                          int width, int height, GError **error);
+
+gboolean
+cam_utils_save_to_jpg_memory(byte **memory, unsigned int *size, void *src_frame,
+                            int width, int height);
+
+void
+cam_utils_draw_guide_rectangle(void *data, void *frame, int x_org, int y_org,
+                              int width, int height);
+
+void cam_utils_convert_YUYV_to_UYVY(unsigned char *dst, unsigned char *src, gint length);      /* fast convert , but lost 1pixel Y data. */
+
+void cam_utils_convert_UYVY_to_YUYV(char *dst, char *src, gint length);
+
+#if 1
+void
+cam_utils_convert_YUYV_to_YUV420P(unsigned char *pInBuf, unsigned char *pOutBuf,
+                                 int width, int height);
+#else
+void
+cam_utils_convert_YUYV_to_YUV420P(byte *src, byte *dst, gint width,
+                                 gint height);
+#endif
+
+void *cam_utils_load_fake_yuv_image(); /* This function load memory address of 640*480 yuyv (16bit) image */
+
+void *cam_utils_get_fake_yuv_image();
+
+void cam_utils_free_fake_yuv_image();
+
+guint64 cam_system_get_remain_rec_time(void *data);
+
+gint64 cam_system_get_still_count_by_resolution(void *data);
+
+gint64 cam_get_free_space(const gchar *path);
+
+gint64 cam_get_capacity_space(const gchar *path);
+
+void *cam_utils_load_temp_file(gchar *filepath, gint *pfilesize);
+
+gboolean cam_utils_check_torchlight_status(void *data);
+
+gboolean cam_utils_check_mmc_for_writing(GError **error);
+
+gboolean cam_utils_check_mmc_for_inserted_stats(void *data);
+
+int cam_utils_check_mmc_status(void);
+
+int cam_utils_get_storage_id_from_filepath(const char *filepath);
+
+gboolean cam_utils_safety_file_copy(const char *dst, const char *src,
+                                   GError **error);
+
+gboolean cam_utils_check_wide_resolution(int resol_w, int resol_h);
+
+gboolean cam_utils_parse_args(int argc, char *argv[], CamExeArgs *args);
+
+gboolean cam_utils_check_fake_image_exist(const char *fake_image_path);
+
+gboolean cam_utils_image_rotate(char *src, int src_width, int src_height,
+                               char *dst, int *dst_width, int *dst_height,
+                               int degree);
+gboolean cam_utils_set_guide_rect_color(void *data);
+/**
+ * @brief      change video stream xy to windos xy
+ *     while target is 0 degree(landscape):the coordinate sytem:
+ *     win     ----------------------------------(width:horizontal)
+ *             -offset -       video           -offset -
+ *             -<--->-<--------------->-<----->-
+ *             -       -                       -       -
+ *height(vertical)----------------------------------
+ * @param[in]  faces           camera_detected_face_s array
+ * @param[in]  count           face count
+ * @param[in]  data            user_data, it should be appdata
+ * @return     void
+ */
+void cam_utils_set_videos_xy_to_windows_xy(CamVideoRectangle src,
+                                                               CamVideoRectangle *result,
+                                                               void *data);
+/**
+ * @brief      change windos stream xy to video xy
+ *     while target is 0 degree(landscape):the coordinate sytem:
+ *     win     ----------------------------------(width:horizontal)
+ *             -offset -       video           -offset -
+ *             -<--->-<--------------->-<----->-
+ *             -       -                       -       -
+ *height(vertical)----------------------------------
+ * @param[in]  faces           camera_detected_face_s array
+ * @param[in]  count           face count
+ * @param[in]  data            user_data, it should be appdata
+ * @return     void
+ */
+
+void cam_utils_set_windows_xy_to_videos_xy(CamVideoRectangle src,
+                                                               CamVideoRectangle *result,
+                                                               void *data);
+/**
+ * @brief      send request from child thread to main thread
+ * @param[in]  data            user_data, it should be appdata
+ * @param[in]  pipe_data       passing data : child thread to main thread
+ * @param[in]  cmd             the operation command
+ * @return     void
+ */
+gboolean cam_utils_request_main_pipe_handler(void *data, void *pipe_data, int cmd);
+
+#endif                         /* __DEF_camera_utils_H__ */
diff --git a/include/edc-callback/cam_common_edc_callback.h b/include/edc-callback/cam_common_edc_callback.h
new file mode 100755 (executable)
index 0000000..e809d0e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_common_edc_H_
+#define __DEF_camera_common_edc_H_
+/* #include "cam_property.h" */
+void cam_layout_del_all(void *data);
+
+int cam_get_menu_item_to_index(void* data, int menu_type, int item);
+int cam_get_value_to_index(void* data, int menu_type, int value);
+
+int cam_convert_menu_item_to_mmfw_value(int mode);
+int cam_convert_shot_mode_to_menu_item(int mode);
+int cam_convert_flash_to_menu_item(int mode);
+int cam_convert_recording_mode_to_menu_item(int mode);
+int cam_convert_video_resolution_to_menu_item(int mode);
+int cam_convert_photo_resolution_to_menu_item(int mode);
+int cam_convert_iso_to_menu_item(int mode);
+int cam_convert_focus_to_menu_item(int mode);
+int cam_convert_timer_to_menu_item(int mode);
+int cam_convert_scene_mode_to_menu_item(int mode);
+int cam_convert_wb_to_menu_item(int mode);
+int cam_convert_effect_to_menu_item(int mode);
+int cam_convert_metering_to_menu_item(int mode);
+int cam_convert_storage_to_menu_item(int mode);
+int cam_convert_volume_key_to_menu_item(int mode);
+
+
+/* Evas_Object* create_image_for_smart(Evas *evas, Evas_Object *obj, const char *edj_file, const char *image_name); */
+void define_mouse_callback(void *data);
+int shot_mode_set(void *data, int mode);
+#endif /* __DEF_camera_common_edc_H_ */
diff --git a/include/edc-callback/cam_ev_edc_callback.h b/include/edc-callback/cam_ev_edc_callback.h
new file mode 100755 (executable)
index 0000000..f4c4a60
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_ev_H_
+#define __DEF_camera_ev_H_
+
+#include "cam_property.h"
+
+gboolean load_ev_edje(struct appdata *ad);
+gboolean update_ev_edje(struct appdata *ad);
+gboolean unload_ev_edje(struct appdata *ad);
+#endif /* __DEF_camera_ev_H_ */
diff --git a/include/edc-callback/cam_indicator_edc_callback.h b/include/edc-callback/cam_indicator_edc_callback.h
new file mode 100755 (executable)
index 0000000..b9de17b
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_indicator_H_
+#define __DEF_camera_indicator_H_
+int cam_indicator_create(struct appdata *ad);
+int cam_indicator_destory(struct appdata *ad);
+int cam_indicator_rotate(struct appdata *ad);
+void cam_indicator_update(struct appdata *ad);
+
+void indicator_toggle(struct appdata *ad, gboolean hide);
+void indicator_update_storage(struct appdata *ad);
+void indicator_update_remain_count(struct appdata *ad);
+void indicator_update_gps(struct appdata *ad);
+void indicator_update_gps_level(struct appdata *ad);
+void indicator_update_battery(struct appdata *ad, int level);
+void indicator_update_mute_icon(struct appdata *ad);
+void cam_indicator_set_show_state(struct appdata *ad, bool show);
+
+#endif /* __DEF_camera_indicator_H_ */
+
diff --git a/include/edc-callback/cam_recording_edc_callback.h b/include/edc-callback/cam_recording_edc_callback.h
new file mode 100755 (executable)
index 0000000..c30a4d4
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_recording_H_
+#define __DEF_camera_recording_H_
+int load_recording_edje(struct appdata *ad);
+int unload_recording_edje(struct appdata *ad);
+int cam_recording_rotate(struct appdata *ad);
+
+/* you can use this function to set time text for recording */
+void recording_set_time(void *data, int hh, int mm, int ss);
+
+#endif /* __DEF_camera_recording_H_ */
+
diff --git a/include/edc-callback/cam_toolbar_edc_callback.h b/include/edc-callback/cam_toolbar_edc_callback.h
new file mode 100755 (executable)
index 0000000..b07facc
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_CAM_TOOLBAR_EDC_H_
+#define __DEF_CAM_TOOLBAR_EDC_H_
+
+#include "cam_property.h"
+#include "cam.h"
+
+typedef enum {
+       BUTTON_STATE_NORMAL,
+       BUTTON_STATE_PRESS,
+       BUTTON_STATE_DIM,
+} ButtonState;
+
+typedef enum {
+       TOOLBAR_ITEM_STATE_NORMAL,
+       TOOLBAR_ITEM_STATE_PRESS,
+       TOOLBAR_ITEM_STATE_EDIT,
+       TOOLBAR_ITEM_STATE_DIM,
+       TOOLBAR_ITEM_STATE_INVISIBLE,
+} ToolbarItemState;
+
+typedef struct __Shortcuts_List_Prop {
+       CAM_EDIT_SHORTCUTS_INDEX index;
+       char prop_name[16];
+} Shortcuts_List_Prop;
+
+int cam_toolbar_create(struct appdata *ad);
+void cam_toolbar_destroy(struct appdata *ad);
+void cam_toolbar_update(struct appdata *ad);
+int cam_toolbar_rotate(struct appdata *ad);
+int show_toolbar_edje(struct appdata *ad);
+int hide_toolbar_edje(struct appdata *ad);
+
+gboolean toolbar_update_quickview_thumbnail(struct appdata *ad);
+/**
+ * @brief              update thumbnail
+ * @param[in]  data    appdata
+ * @return                     Operation result
+ * @return                     gboolean
+ */
+gboolean toolbar_update_quickview_thumbnail_no_animation(struct appdata *ad);
+
+#ifdef ENABLE_CAPTURE_ANIMATION
+int toolbar_update_quickview_thumbnail_by_screennail(struct appdata *ad);
+#endif
+
+int cam_toolbar_setting_popup_create(struct appdata *ad);
+void cam_toolbar_setting_popup_update(struct appdata *ad);
+void cam_toolbar_setting_popup_destroy(struct appdata *ad);
+
+Eina_Bool cam_animation_effect(void *data, char *type, Evas_Object *obj);
+Eina_Bool cam_icon_animation_effect(void *data);
+int toolbar_shot_guide_popup_create(struct appdata *ad, int shot_mode);
+int toolbar_shot_guide_popup_destory(struct appdata *ad);
+int toolbar_shot_guide_popup_move();
+
+Eina_Bool cam_show_setting_menu(void *data);
+Eina_Bool cam_show_setting_menu_option_popup(void *data);
+gboolean cam_check_timer_is_running(void *data);
+int cam_guideline_create(struct appdata *ad);
+void settings_guideline_refresh(struct appdata *ad);
+void toolbar_destroy_shortcuts_popup(struct appdata *ad);
+void cam_toolbar_shutter_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void cam_toolbar_recording_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void cam_toolbar_recording_stop_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+
+
+/**
+ * @brief                      create tip popup
+ * @param[in]  ad      cam appdata handle
+ * @param[in]  ad      tip popup type
+ * @return             Operation result
+ * @return             void
+ */
+void cam_tip_popup_create(struct appdata *ad, const CamTipPopupType type);
+
+/**
+ * @brief                      destroy tip popup
+ * @param[in]  ad      cam appdata handle
+ * @return             Operation result
+ * @return             void
+ */
+void cam_tip_popup_destroy(struct appdata *ad);
+
+/**
+ * @brief                      rotate tip popup
+ * @param[in]  ad      cam appdata handle
+ * @return             Operation result
+ * @return             void
+ */
+void cam_tip_popup_rotate(struct appdata *ad);
+
+/**
+ * @brief                              set show state of caf button
+ * @param[in]  ad              cam appdata handle
+ * @param[in]  show    caf button show state
+ * @return                     Operation result
+ * @return                     void
+ */
+void cam_toolbar_show_cafbutton(struct appdata *ad, gboolean show);
+void cam_toolbar_update_shutter_button(struct appdata *ad, ToolbarItemState state);
+
+#endif /* __DEF_CAM_TOOLBAR_EDC_H_ */
+
diff --git a/include/edc-callback/cam_zoom_edc_callback.h b/include/edc-callback/cam_zoom_edc_callback.h
new file mode 100755 (executable)
index 0000000..4af204b
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_camera_zoom_H_
+#define __DEF_camera_zoom_H_
+
+#include "cam_property.h"
+int zoom_in(struct appdata *ad, gboolean zoom_in, int zoom_gap);
+gboolean cam_pinch_zoom_in(struct appdata* ad,gboolean is_zoom_in,int zoom_value);
+
+gboolean load_zoom_edje(struct appdata *ad);
+gboolean update_zoom_edje(struct appdata *ad);
+gboolean unload_zoom_edje(struct appdata *ad);
+void cam_zoom_create_pinch_edje(struct appdata *data);
+
+#endif /* __DEF_camera_zoom_H_ */
diff --git a/include/edc_image_name.h b/include/edc_image_name.h
new file mode 100755 (executable)
index 0000000..683ce07
--- /dev/null
@@ -0,0 +1,402 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_edc_image_name_H_
+#define __DEF_edc_image_name_H_
+
+
+/**** tmp image shoud be removed ****/
+
+/**cam_recording_edje.edj**/
+#define RECORDING_IMAGE_REC_IMAGE                              "indicator/camera_rec.png"
+#define SHUTTER_REC_NORMAL_IMAGE                               "tmp/11_camera_mode_recording_normal.png"
+#define SHUTTER_REC_PRESS_IMAGE                                        "tmp/11_camera_mode_recording_press.png"
+#define SHUTTER_REC_NORMAL_VERTICAL_IMAGE              "tmp/11_camera_mode_recording_normal_ver.png"
+#define SHUTTER_REC_PRESS_VERTICAL_IMAGE               "tmp/11_camera_mode_recording_press_ver.png"
+#define RECORDING_PRESS_IMAGE_ANI                              "tmp/11_camcorder_standby_press.png"
+#define RECORDING_PRESS_IMAGE_ANI_VER                  "tmp/11_camcorder_standby_press_ver.png"
+#define CAF_BUTTON_NORMAL_IMAGE                                        "camera_recording_btn_caf.png"
+#define CAF_BUTTON_PRESS_IMAGE                                 "camera_recording_btn_caf_press.png"
+
+/** cam_toolbar_layout.edj **/
+/* toolbar bg */
+#define LEFT_TOOLBAR_BG_IMAGE                                  "camera_normal_opacity_l_bg.png"
+#define RIGHT_TOOLBAR_BG_IMAGE                                 "camera_normal_opacity_r_bg.png"
+#define LEFT_TOOLBAR_BG_VER_IMAGE                              "vertical/camera_normal_bg_ver_01.png"
+#define RIGHT_TOOLBAR_BG_VER_IMAGE                             "vertical/camera_normal_bg_ver2_01.png"
+/* item_button */
+#define BUTTON_BG_NORMAL_IMAGE                                 "camera_menu_bg.png"
+#define BUTTON_BG_PRESS_IMAGE                                  "camera_menu_tab_hold.png"
+/* mode item icons */
+#define MODE_BG_IMAGE                                                  "tmp/11_camera_mode_bg.png"
+#define MODE_BUTTON_IMAGE                                              "tmp/11_camera_mode_button.png"
+#define MODE_BG_VER_IMAGE                                              "tmp/11_camera_mode_bg_ver.png"
+#define MODE_BUTTON_VER_IMAGE                                  "tmp/11_camera_mode_button_ver.png"
+/* shutter button */
+#define SHUTTER_NORMAL_IMAGE                                   "camera_mode_shutter_normal.png"
+#define SHUTTER_NORMAL_INVERSE_IMAGE                   "camera_mode_shutter_normal_inverse.png"
+#define SHUTTER_NORMAL_VER_IMAGE                               "vertical/camera_mode_shutter_normal_ver.png"
+#define SHUTTER_NORMAL_VER_INVERSE_IMAGE               "vertical/camera_mode_shutter_norma_ver_inverse.png"
+#define SHUTTER_PRESS_IMAGE                                            "camera_mode_shutter_press.png"
+#define SHUTTER_PRESS_VER_IMAGE                                        "vertical/camera_mode_shutter_press_ver.png"
+#define SHUTTER_DIM_IMAGE                                              "camera_mode_shutter_dim.png"
+#define SHUTTER_DIM_VER_IMAGE                                  "vertical/camera_mode_shutter_dim_ver.png"
+#define CAMERA_SHUTTER_ICON_IMAGE                              "camera_mode_shutter_icon.png"
+#define CAMCORDER_SHUTTER_ICON_IMAGE                   "camcorder_standby_shutter.png"
+#define CAMCORDER_SHUTTER_ICON_PRESS_IMAGE             "camcorder_standby_shutter_press.png"
+#define CAMCORDER_SHUTTER_ICON_DIM_IMAGE               "camcorder_standby_shutter_dim.png"
+#define CAMCORDER_PAUSE_ICON_IMAGE                             "camcorder_recording_pause.png"
+#define CAMCORDER_PAUSE_ICON_PRESS_IMAGE               "camcorder_recording_pause_press.png"
+#define CAMCORDER_STOP_ICON_IMAGE                              "camcorder_recording_stop.png"
+#define CAMCORDER_STOP_ICON_PRESS_IMAGE                        "camcorder_recording_stop_press.png"
+#define SNAPSHOT_PRESS_IMAGE                                   "tmp/11_camera_snapshot_press.png"
+#define SNAPSHOT_NORMAL_IMAGE                                  "tmp/11_camera_snapshot.png"
+/* thumbnail */
+#define THUMBNAIL_BG_NORMAL_IMAGE                              "camera_mode_thumbnail_bg.png"
+#define THUMBNAIL_BG_PRESS_IMAGE                               "camera_mode_thumbnail_bg_press.png"
+/* back button */
+#define BACK_BUTTON_NORMAL_IMAGE                               "camara_back_button.png"
+#define BACK_BUTTON_PRESS_IMAGE                                        "camara_back_button_press.png"
+
+/** cam_util.edj **/
+#define FOCUS_GUIDE_NOTREADY_IMAGE                             "touch_af_focus_rect_01.png"
+#define FOCUS_GUIDE_FOCUSED_IMAGE                              "touch_af_focus_rect_03.png"
+#define FOCUS_GUIDE_FAILED_IMAGE                               "touch_af_focus_rect_02.png"
+#define TIMER_ICON_BG_IMAGE                                            "camera_timer_popup.png"
+
+/* guide line image */
+#define GUDIE_LINE_1_IMAGE                                             "tmp/37_guideline_1.png"
+#define GUDIE_LINE_2_IMAGE                                             "tmp/37_guideline_2.png"
+#define GUDIE_OPA_LINE_1_IMAGE                                 "tmp/37_guideline_opa_1.png"
+#define GUDIE_OPA_LINE_2_IMAGE                                 "tmp/37_guideline_opa_2.png"
+
+/* shortcut image */
+#define SHOTCUTS_LINE_H_IMAGE                                  "camera_shortcut_line_h_01.png"
+#define SHOTCUTS_LINE_V_IMAGE                                  "camera_shortcut_line_v_01.png"
+#define SHOTCUTS_EDIT_BG_H_IMAGE                               "camera_shrtcut_edit_bg.png"
+#define SHOTCUTS_EDIT_BG_V_IMAGE                               "vertical/camera_shrtcut_edit_bg_ver.png"
+#define SHOTCUTS_EDIT_MENU_BG_H_IMAGE                  "camera_shrtcut_menubar_bg.png"
+#define SHOTCUTS_EDIT_MENU_BG_V_IMAGE                  "vertical/camera_shrtcut_menubar_bg_ver.png"
+#define SHOTCUTS_TEXT_BG_IMAGE                                 "camera_shrtcut_text_bg.png"
+
+/* popup bg image */
+#define SHOTTING_MODE_POPUP_BG_IMAGE                   "tmp/37_shootingmode_popup_bg.png"
+
+/** cam_zoom_layout.edj **/
+#define ZOOM_BG_IMAGE                                                  "camera_popup_zoom.png"
+#define ZOOM_BG_VER_IMAGE                                              "vertical/camera_popup_zoom_ver.png"
+#define ZOOM_PINCH_IMAGE                                               "touch_af_focus_rect_01.png"
+
+
+/** style_ctxpopuup_camera_with_radio.edj **/
+#define CTXPOPUP_BG_IMAGE                                              "camera_option_popup_bg.png"
+#define CTXPOPUP_BG_2DEPTH_IMAGE                               "camera_option_popup_bg_2depth.png"
+#define CTXPOPUP_LEFT_ARROW_IMAGE                              "camera_option_popup_anker.png"
+#define CTXPOPUP_RIGHTT_ARROW_IMAGE                            "camera_option_popup_anker_inverse.png"
+#define CTXPOPUP_TOP_ARROW_IMAGE                               "vertical/camera_option_popup_anker_vertical.png"
+#define CTXPOPUP_BOTTOM_ARROW_IMAGE                            "vertical/camera_option_popup_anker_vertical_inverse.png"
+
+#define SETTING_POPUP_RADIO_BUTTON_ON_IMAGE            "camera_radio_btn_on.png"
+#define SETTING_POPUP_RADIO_BUTTON_OFF_IMAGE   "camera_radio_btn_off.png"
+
+/** style_slider_camera.edj **/
+#define SLIDER_BAR_IMAGE                                               "camera_popup_zoom_bar.png"
+#define SLIDER_BAR_VER_IMAGE                                   "vertical/camera_popup_zoom_bar_ver.png"
+#define SLIDER_HANDLER_IMAGE                                   "camera_handle.png"
+
+
+#define SETTING_POPUP_CHECK_BUTTON_ON_IMAGE            "camera_button_on.png"
+#define SETTING_POPUP_CHECK_BUTTON_OFF_IMAGE   "camera_button_off.png"
+
+/** Source images **/
+/* Burst shot */
+#define BURST_SHOT_MODE_ON_NORMAL_ICON                         "shortcut/camera_mode_burstshot_on_nor.png"
+#define BURST_SHOT_MODE_ON_PRESS_ICON                          "shortcut/camera_mode_burstshot_on_press.png"
+#define BURST_SHOT_MODE_OFF_NORMAL_ICON                                "shortcut/camera_mode_burstshot_off_nor.png"
+#define BURST_SHOT_MODE_OFF_PRESS_ICON                         "shortcut/camera_mode_burstshot_off_press.png"
+
+/* Self portrait */
+#define CAMERA_SELF_PORTRAIT_NORMAL_ICON                       "shortcut/camera_mode_self_shot_nor.png"
+#define CAMERA_SELF_PORTRAIT_PRESS_ICON                                "shortcut/camera_mode_self_shot_press.png"
+#define CAMCORDER_SELF_PORTRAIT_NORMAL_ICON                    "shortcut/camera_mode_self_rec_nor.png"
+#define CAMCORDER_SELF_PORTRAIT_PRESS_ICON                     "shortcut/camera_mode_self_rec_press.png"
+
+/* Flash */
+#define FLASH_AUTO_NORMAL_ICON                                         "shortcut/camera_mode_flash_auto_nor.png"
+#define FLASH_AUTO_PRESS_ICON                                          "shortcut/camera_mode_flash_auto_press.png"
+#define FLASH_OFF_NORMAL_ICON                                          "shortcut/camera_mode_flash_off_nor.png"
+#define FLASH_OFF_PRESS_ICON                                           "shortcut/camera_mode_flash_off_press.png"
+#define FLASH_ON_NORMAL_ICON                                           "shortcut/camera_mode_flash_on_nor.png"
+#define FLASH_ON_PRESS_ICON                                                    "shortcut/camera_mode_flash_on_press.png"
+
+/* Shooting mode */
+#define SHOOTING_MODE_SINGLE_NORMAL_ICON                       "shortcut/camera_mode_shooting_mode_single_shot_nor.png"
+#define SHOOTING_MODE_SINGLE_PRESS_ICON                                "shortcut/camera_mode_shooting_mode_single_shot_press.png"
+
+/* Recording mode */
+#define RECORDING_MODE_NORMAL_NORMAL_ICON                      "shortcut/camera_mode_recording_normal_nor.png"
+#define RECORDING_MODE_NORMAL_PRESS_ICON                       "shortcut/camera_mode_recording_normal_press.png"
+#define RECORDING_MODE_LIMIT_MMS_NORMAL_ICON           "shortcut/camera_mode_recording_limit_for_mms_nor.png"
+#define RECORDING_MODE_LIMIT_MMS_PRESS_ICON                    "shortcut/camera_mode_recording_limit_for_mms_press.png"
+#define RECORDING_MODE_SLOW_MOTION_NORMAL_ICON         "shortcut/camera_mode_recording_slowmotion_nor.png"
+#define RECORDING_MODE_SLOW_MOTION_PRESS_ICON          "shortcut/camera_mode_recording_slowmotion_press.png"
+#define RECORDING_MODE_FAST_MOTION_NORMAL_ICON         "shortcut/camera_mode_recording_fast_nor.png"
+#define RECORDING_MODE_FAST_MOTION_PRESS_ICON          "shortcut/camera_mode_recording_fast_press.png"
+
+/* Scene mode */
+#define SCENE_MODE_AUTO_NORMAL_ICON                            "shortcut/camera_mode_shooting_mode_scene_none_nor.png"
+#define SCENE_MODE_AUTO_PRESS_ICON                                     "shortcut/camera_mode_shooting_mode_scene_none_nor.png"
+#define SCENE_MODE_PORTRAIT_NORMAL_ICON                        "shortcut/camera_mode_shooting_mode_portrait_nor.png"
+#define SCENE_MODE_PORTRAIT_PRESS_ICON                                 "shortcut/camera_mode_shooting_mode_portrait_press.png"
+#define SCENE_MODE_LANDSCAPE_NORMAL_ICON                       "shortcut/camera_mode_shooting_mode_landscape_nor.png"
+#define SCENE_MODE_LANDSCAPE_PRESS_ICON                        "shortcut/camera_mode_shooting_mode_landscape_press.png"
+#define SCENE_MODE_NIGHT_NORMAL_ICON                           "shortcut/camera_mode_shooting_mode_night_nor.png"
+#define SCENE_MODE_NIGHT_PRESS_ICON                            "shortcut/camera_mode_shooting_mode_night_press.png"
+#define SCENE_MODE_SPORTS_NORMAL_ICON                          "shortcut/camera_mode_shooting_mode_sports_nor.png"
+#define SCENE_MODE_SPORTS_PRESS_ICON                           "shortcut/camera_mode_shooting_mode_sports_press.png"
+#define SCENE_MODE_PARTY_NORMAL_ICON                           "shortcut/camera_mode_shooting_mode_party_indoor_nor.png"
+#define SCENE_MODE_PARTY_PRESS_ICON                            "shortcut/camera_mode_shooting_mode_party_indoor_press.png"
+#define SCENE_MODE_BEACHSNOW_NORMAL_ICON                       "shortcut/camera_mode_shooting_mode_beach_snow_nor.png"
+#define SCENE_MODE_BEACHSNOW_PRESS_ICON                        "shortcut/camera_mode_shooting_mode_beach_snow_press.png"
+#define SCENE_MODE_SUNSET_NORMAL_ICON                          "shortcut/camera_mode_shooting_mode_sunset_nor.png"
+#define SCENE_MODE_SUNSET_PRESS_ICON                           "shortcut/camera_mode_shooting_mode_sunset_press.png"
+#define SCENE_MODE_DUSKDAWN_NORMAL_ICON                        "shortcut/camera_mode_shooting_mode_dawn_nor.png"
+#define SCENE_MODE_DUSKDAWN_PRESS_ICON                                 "shortcut/camera_mode_shooting_mode_dawn_press.png"
+#define SCENE_MODE_FALL_NORMAL_ICON                            "shortcut/camera_mode_shooting_mode_fall_nor.png"
+#define SCENE_MODE_FALL_PRESS_ICON                                     "shortcut/camera_mode_shooting_mode_fall_press.png"
+#define SCENE_MODE_FIREWORK_NORMAL_ICON                        "shortcut/camera_mode_shooting_mode_firework_nor.png"
+#define SCENE_MODE_FIREWORK_PRESS_ICON                                 "shortcut/camera_mode_shooting_mode_firework_press.png"
+#define SCENE_MODE_TEXT_NORMAL_ICON                            "shortcut/camera_mode_shooting_mode_text_nor.png"
+#define SCENE_MODE_TEXT_PRESS_ICON                                     "shortcut/camera_mode_shooting_mode_text_press.png"
+#define SCENE_MODE_CANDLELIGHT_NORMAL_ICON                     "shortcut/camera_mode_shooting_mode_candlelight_nor.png"
+#define SCENE_MODE_CANDLELIGHT_PRESS_ICON                      "shortcut/camera_mode_shooting_mode_candlelight_press.png"
+#define SCENE_MODE_BACKLIGHT_NORMAL_ICON                       "shortcut/camera_mode_shooting_mode_Backlight_nor.png"
+#define SCENE_MODE_BACKLIGHT_PRESS_ICON                        "shortcut/camera_mode_shooting_mode_Backlight_press.png"
+
+/* Exposure value */
+#define EXPOSURE_VALUE_MINUS_2_0_ICON                          "shortcut/camera_mode_exposure_9_nor.png"
+#define EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON                    "shortcut/camera_mode_exposure_9_press.png"
+#define EXPOSURE_VALUE_MINUS_1_5_ICON                          "shortcut/camera_mode_exposure_8_nor.png"
+#define EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON                    "shortcut/camera_mode_exposure_8_press.png"
+#define EXPOSURE_VALUE_MINUS_1_0_ICON                          "shortcut/camera_mode_exposure_7_nor.png"
+#define EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON                    "shortcut/camera_mode_exposure_7_press.png"
+#define EXPOSURE_VALUE_MINUS_0_5_ICON                          "shortcut/camera_mode_exposure_6_nor.png"
+#define EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON                    "shortcut/camera_mode_exposure_6_press.png"
+#define EXPOSURE_VALUE_0_ICON                                          "shortcut/camera_mode_exposure_5_nor.png"
+#define EXPOSURE_VALUE_0_PRESS_ICON                                    "shortcut/camera_mode_exposure_5_press.png"
+#define EXPOSURE_VALUE_PLUS_0_5_ICON                           "shortcut/camera_mode_exposure_4_nor.png"
+#define EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON                     "shortcut/camera_mode_exposure_4_press.png"
+#define EXPOSURE_VALUE_PLUS_1_0_ICON                           "shortcut/camera_mode_exposure_3_nor.png"
+#define EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON                     "shortcut/camera_mode_exposure_3_press.png"
+#define EXPOSURE_VALUE_PLUS_1_5_ICON                           "shortcut/camera_mode_exposure_2_nor.png"
+#define EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON                     "shortcut/camera_mode_exposure_2_press.png"
+#define EXPOSURE_VALUE_PLUS_2_0_ICON                           "shortcut/camera_mode_exposure_1_nor.png"
+#define EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON                     "shortcut/camera_mode_exposure_1_press.png"
+
+/* Focus mode */
+#define FOCUS_MODE_AUTO_NORMAL_ICON                            "shortcut/camera_mode_focus_auto_nor.png"
+#define FOCUS_MODE_AUTO_PRESS_ICON                                     "shortcut/camera_mode_focus_auto_press.png"
+#define FOCUS_MODE_MACRO_NORMAL_ICON                           "shortcut/camera_mode_focus_macro_nor.png"
+#define FOCUS_MODE_MACRO_PRESS_ICON                            "shortcut/camera_mode_focus_macro_press.png"
+#define FOCUS_MODE_FACE_DETECTION_NORMAL_ICON          "shortcut/camera_mode_focus_face_detection_nor.png"
+#define FOCUS_MODE_FACE_DETECTION_PRESS_ICON           "shortcut/camera_mode_focus_face_detection_press.png"
+
+/* Timer */
+#define TIMER_OFF_NORMAL_ICON                                          "shortcut/camera_mode_timer_off_nor.png"
+#define TIMER_OFF_PRESS_ICON                                           "shortcut/camera_mode_timer_off_press.png"
+#define TIMER_2SEC_NORMAL_ICON                                         "shortcut/camera_mode_timer_2_nor.png"
+#define TIMER_2SEC_PRESS_ICON                                          "shortcut/camera_mode_timer_2_press.png"
+#define TIMER_5SEC_NORMAL_ICON                                         "shortcut/camera_mode_timer_5_nor.png"
+#define TIMER_5SEC_PRESS_ICON                                          "shortcut/camera_mode_timer_5_press.png"
+#define TIMER_10SEC_NORMAL_ICON                                                "shortcut/camera_mode_timer_10_nor.png"
+#define TIMER_10SEC_PRESS_ICON                                         "shortcut/camera_mode_timer_10_press.png"
+
+/* Effect */
+#define EFFECTS_NONE_NORMAL_ICON                                       "shortcut/camera_mode_effect_none_nor.png"
+#define EFFECTS_NONE_PRESS_ICON                                                "shortcut/camera_mode_effect_none_press.png"
+#define EFFECTS_NEGATIVE_NORMAL_ICON                           "shortcut/camera_mode_effect_negative_nor.png"
+#define EFFECTS_NEGATIVE_PRESS_ICON                                    "shortcut/camera_mode_effect_negative_press.png"
+#define EFFECTS_BLACKANDWHITE_NORMAL_ICON                      "shortcut/camera_mode_effect_Black and white_nor.png"
+#define EFFECTS_BLACKANDWHITE_PRESS_ICON                       "shortcut/camera_mode_effect_Black and white_press.png"
+#define EFFECTS_SEPIA_NORMAL_ICON                                      "shortcut/camera_mode_effect_sepia_nor.png"
+#define EFFECTS_SEPIA_PRESS_ICON                                       "shortcut/camera_mode_effect_sepia_press.png"
+
+/* Camera resolution */
+#define CAM_RESOLUTION_8M_NORMAL_ICON                          "shortcut/camera_mode_resolution_8m_nor.png"
+#define CAM_RESOLUTION_8M_PRESS_ICON                           "shortcut/camera_mode_resolution_8m_press.png"
+#define CAM_RESOLUTION_5M_NORMAL_ICON                          "shortcut/camera_mode_resolution_5m_nor.png"
+#define CAM_RESOLUTION_5M_PRESS_ICON                           "shortcut/camera_mode_resolution_5m_press.png"
+#define CAM_RESOLUTION_3_2M_NORMAL_ICON                                "shortcut/camera_mode_resolution_3_2m_nor.png"
+#define CAM_RESOLUTION_3_2M_PRESS_ICON                         "shortcut/camera_mode_resolution_3_2m_press.png"
+#define CAM_RESOLUTION_2M_NORMAL_ICON                          "shortcut/camera_mode_resolution_2m_nor.png"
+#define CAM_RESOLUTION_2M_PRESS_ICON                           "shortcut/camera_mode_resolution_2m_press.png"
+#define CAM_RESOLUTION_1_3M_NORMAL_ICON                                "shortcut/camera_mode_resolution_1_3m_nor.png"
+#define CAM_RESOLUTION_1_3M_PRESS_ICON                         "shortcut/camera_mode_resolution_1_3m_press.png"
+#define CAM_RESOLUTION_0_3M_NORMAL_ICON                                "shortcut/camera_mode_resolution_0_3m_nor.png"
+#define CAM_RESOLUTION_0_3M_PRESS_ICON                         "shortcut/camera_mode_resolution_0_3m_press.png"
+#define CAM_RESOLUTION_W6M_NORMAL_ICON                         "shortcut/camera_mode_resolution_w6m_nor.png"
+#define CAM_RESOLUTION_W6M_PRESS_ICON                          "shortcut/camera_mode_resolution_w6m_press.png"
+#define CAM_RESOLUTION_W5_7M_NORMAL_ICON                       "shortcut/camera_mode_resolution_w5_7m_nor.png"
+#define CAM_RESOLUTION_W5_7M_PRESS_ICON                                "shortcut/camera_mode_resolution_w5_7m_press.png"
+#define CAM_RESOLUTION_W2_4M_NORMAL_ICON                       "shortcut/camera_mode_resolution_w2_4m_nor.png"
+#define CAM_RESOLUTION_W2_4M_PRESS_ICON                                "shortcut/camera_mode_resolution_w2_4m_press.png"
+#define CAM_RESOLUTION_W2M_NORMAL_ICON                         "shortcut/camera_mode_resolution_w2m_nor.png"
+#define CAM_RESOLUTION_W2M_PRESS_ICON                          "shortcut/camera_mode_resolution_w2m_press.png"
+#define CAM_RESOLUTION_W0_9M_NORMAL_ICON                       "shortcut/camera_mode_resolution_w0_9m_nor.png"
+#define CAM_RESOLUTION_W0_9M_PRESS_ICON                                "shortcut/camera_mode_resolution_w0_9m_press.png"
+
+/* Camcorder resolution */
+#define REC_RESOLUTION_FULLHD_NORMAL_ICON                      "shortcut/camera_mode_resolution_1920X1080_nor.png"
+#define REC_RESOLUTION_FULLHD_PRESS_ICON                       "shortcut/camera_mode_resolution_1920X1080_press.png"
+#define REC_RESOLUTION_HD_NORMAL_ICON                          "shortcut/camera_mode_resolution_1280X720_nor.png"
+#define REC_RESOLUTION_HD_PRESS_ICON                           "shortcut/camera_mode_resolution_1280X720_press.png"
+#define REC_RESOLUTION_WVGA_NORMAL_ICON                                "shortcut/camera_mode_resolution_720X480_nor.png"
+#define REC_RESOLUTION_WVGA_PRESS_ICON                         "shortcut/camera_mode_resolution_720X480_press.png"
+#define REC_RESOLUTION_VGA_NORMAL_ICON                         "shortcut/camera_mode_resolution_640X480_nor.png"
+#define REC_RESOLUTION_VGA_PRESS_ICON                          "shortcut/camera_mode_resolution_640X480_press.png"
+#define REC_RESOLUTION_QVGA_NORMAL_ICON                                "shortcut/camera_mode_resolution_320X240_nor.png"
+#define REC_RESOLUTION_QVGA_PRESS_ICON                         "shortcut/camera_mode_resolution_320X240_press.png"
+#define REC_RESOLUTION_QCIF_NORMAL_ICON                                "shortcut/camera_mode_resolution_176X144_nor.png"
+#define REC_RESOLUTION_QCIF_PRESS_ICON                         "shortcut/camera_mode_resolution_176X144_press.png"
+
+/* White balance */
+#define WHITE_BALANCE_AUTO_NORMAL_ICON                         "shortcut/camera_mode_whitebalance_auto_nor.png"
+#define WHITE_BALANCE_AUTO_PRESS_ICON                          "shortcut/camera_mode_whitebalance_auto_press.png"
+#define WHITE_BALANCE_INCANDESCENT_NORMAL_ICON         "shortcut/camera_mode_whitebalance_incandescent_nor.png"
+#define WHITE_BALANCE_INCANDESCENT_PRESS_ICON          "shortcut/camera_mode_whitebalance_incandescent_press.png"
+#define WHITE_BALANCE_FLUORESCENT_NORMAL_ICON          "shortcut/camera_mode_whitebalance_fluorescent_nor.png"
+#define WHITE_BALANCE_FLUORESCENT_PRESS_ICON           "shortcut/camera_mode_whitebalance_fluorescent_press.png"
+#define WHITE_BALANCE_DAYLIGHT_NORMAL_ICON                     "shortcut/camera_mode_whitebalance_day_light_nor.png"
+#define WHITE_BALANCE_DAYLIGHT_PRESS_ICON                      "shortcut/camera_mode_whitebalance_day_light_press.png"
+#define WHITE_BALANCE_CLOUDY_NORMAL_ICON                       "shortcut/camera_mode_whitebalance_cloudy_nor.png"
+#define WHITE_BALANCE_CLOUDY_PRESS_ICON                                "shortcut/camera_mode_whitebalance_cloudy_press.png"
+#define WHITE_BALANCE_SHADE_NORMAL_ICON                                "shortcut/camera_mode_whitebalance_shade_nor.png"
+#define WHITE_BALANCE_SHADE_PRESS_ICON                         "shortcut/camera_mode_whitebalance_shade_press.png"
+#define WHITE_BALANCE_HORIZON_NORMAL_ICON                      "shortcut/camera_mode_whitebalance_horizon_nor.png"
+#define WHITE_BALANCE_HORIZON_PRESS_ICON                       "shortcut/camera_mode_whitebalance_horizon_press.png"
+
+/* ISO */
+#define ISO_AUTO_NORMAL_ICON                                           "shortcut/camera_mode_iso_auto_nor.png"
+#define ISO_AUTO_PRESS_ICON                                                    "shortcut/camera_mode_iso_auto_press.png"
+#define ISO_50_NORMAL_ICON                                                     "shortcut/camera_mode_iso_50_nor.png"
+#define ISO_50_PRESS_ICON                                                      "shortcut/camera_mode_iso_50_press.png"
+#define ISO_100_NORMAL_ICON                                                    "shortcut/camera_mode_iso_100_nor.png"
+#define ISO_100_PRESS_ICON                                                     "shortcut/camera_mode_iso_100_press.png"
+#define ISO_200_NORMAL_ICON                                                    "shortcut/camera_mode_iso_200_nor.png"
+#define ISO_200_PRESS_ICON                                                     "shortcut/camera_mode_iso_200_press.png"
+#define ISO_400_NORMAL_ICON                                                    "shortcut/camera_mode_iso_400_nor.png"
+#define ISO_400_PRESS_ICON                                                     "shortcut/camera_mode_iso_400_press.png"
+#define ISO_800_NORMAL_ICON                                                    "shortcut/camera_mode_iso_800_nor.png"
+#define ISO_800_PRESS_ICON                                                     "shortcut/camera_mode_iso_800_press.png"
+
+/* Metering */
+#define METERING_MATRIX_NORMAL_ICON                                    "shortcut/camera_mode_metering_matrix_nor.png"
+#define METERING_MATRIX_PRESS_ICON                                     "shortcut/camera_mode_metering_matrix_press.png"
+#define METERING_CENTER_WEIGHTED_NORMAL_ICON           "shortcut/camera_mode_metering_center_weighted_nor.png"
+#define METERING_CENTER_WEIGHTED_PRESS_ICON                    "shortcut/camera_mode_metering_center_weighted_press.png"
+#define METERING_SPOT_NORMAL_ICON                                      "shortcut/camera_mode_metering_spot_nor.png"
+#define METERING_SPOT_PRESS_ICON                                       "shortcut/camera_mode_metering_spot_press.png"
+
+/* Anti shake */
+#define ANTISHAKE_ON_NORMAL_ICON                                       "shortcut/camera_mode_anti_shake_on_nor.png"
+#define ANTISHAKE_ON_PRESS_ICON                                                "shortcut/camera_mode_anti_shake_on_press.png"
+#define ANTISHAKE_OFF_NORMAL_ICON                                      "shortcut/camera_mode_anti_shake_off_nor.png"
+#define ANTISHAKE_OFF_PRESS_ICON                                       "shortcut/camera_mode_anti_shake_off_press.png"
+
+/* Outdoor visibility */
+#define OUTDOOR_VISIBILITY_ON_NORMAL_ICON                      "shortcut/camera_mode_outdoor_visibility_on_nor.png"
+#define OUTDOOR_VISIBILITY_ON_PRESS_ICON                       "shortcut/camera_mode_outdoor_visibility_on_press.png"
+#define OUTDOOR_VISIBILITY_OFF_NORMAL_ICON                     "shortcut/camera_mode_outdoor_visibility_off_nor.png"
+#define OUTDOOR_VISIBILITY_OFF_PRESS_ICON                      "shortcut/camera_mode_outdoor_visibility_off_press.png"
+
+/* Auto contrast */
+#define AUTO_CONTRAST_ON_NORMAL_ICON                           "shortcut/camera_mode_auto_contrast_on_nor.png"
+#define AUTO_CONTRAST_ON_PRESS_ICON                                    "shortcut/camera_mode_auto_contrast_on_press.png"
+#define AUTO_CONTRAST_OFF_NORMAL_ICON                          "shortcut/camera_mode_auto_contrast_off_nor.png"
+#define AUTO_CONTRAST_OFF_PRESS_ICON                           "shortcut/camera_mode_auto_contrast_off_press.png"
+
+/* Guide lines */
+#define GUIDELINE_ON_NORMAL_ICON                                       "shortcut/camera_mode_guidelines_on_nor.png"
+#define GUIDELINE_ON_PRESS_ICON                                                "shortcut/camera_mode_guidelines_on_press.png"
+#define GUIDELINE_OFF_NORMAL_ICON                                      "shortcut/camera_mode_guidelines_off_nor.png"
+#define GUIDELINE_OFF_PRESS_ICON                                       "shortcut/camera_mode_guidelines_off_press.png"
+
+/* Capture with voice */
+#define CAPTURE_WITH_VOICE_ON_NORMAL_ICON                      "shortcut/camera_mode_capture_voice_on_nor.png"
+#define CAPTURE_WITH_VOICE_ON_PRESS_ICON                       "shortcut/camera_mode_capture_voice_on_press.png"
+#define CAPTURE_WITH_VOICE_OFF_NORMAL_ICON                     "shortcut/camera_mode_capture_voice_off_nor.png"
+#define CAPTURE_WITH_VOICE_OFF_PRESS_ICON                      "shortcut/camera_mode_capture_voice_off_press.png"
+
+/* GPS */
+#define GPS_ON_NORMAL_ICON                                                     "shortcut/camera_mode_gps_on_nor.png"
+#define GPS_ON_PRESS_ICON                                                      "shortcut/camera_mode_gps_on_press.png"
+#define GPS_OFF_NORMAL_ICON                                                    "shortcut/camera_mode_gps_off_nor.png"
+#define GPS_OFF_PRESS_ICON                                                     "shortcut/camera_mode_gps_off_press.png"
+
+/* Save as flip */
+#define SAVE_AS_FLIP_ON_NORMAL_ICON                                    "shortcut/camera_mode_guidelines_on_nor.png"
+#define SAVE_AS_FLIP_ON_PRESS_ICON                                     "shortcut/camera_mode_guidelines_on_press.png"
+#define SAVE_AS_FLIP_OFF_NORMAL_ICON                           "shortcut/camera_mode_guidelines_off_nor.png"
+#define SAVE_AS_FLIP_OFF_PRESS_ICON                                    "shortcut/camera_mode_guidelines_off_press.png"
+
+/* Storage */
+#define STORAGE_MYDEVICE_NORMAL_ICON                           "shortcut/camera_mode_storage_mydevice_nor.png"
+#define STORAGE_MYDEVICE_PRESS_ICON                                    "shortcut/camera_mode_storage_mydevice_press.png"
+#define STORAGE_CARD_NORMAL_ICON                                       "shortcut/camera_mode_storage_storagecard_nor.png"
+#define STORAGE_CARD_PRESS_ICON                                                "shortcut/camera_mode_storage_storagecard_press.png"
+
+/* Reset setting */
+#define RESET_SETTING_NORMAL_ICON                                      "shortcut/camera_mode_reset_nor.png"
+#define RESET_SETTING_PRESS_ICON                                       "shortcut/camera_mode_reset_press.png"
+
+/* Setting */
+#define SETTING_NORMAL_ICON                                                    "shortcut/camera_mode_setting_nor.png"
+#define SETTING_PRESS_ICON                                                     "shortcut/camera_mode_setting_press.png"
+
+/* Indicator */
+#define INDICATOR_STORAGE_INTERNAL_ICON                        "indicator/camera_indicator_storage_in.png"
+#define INDICATOR_STORAGE_CARD_ICON                            "indicator/camera_indicator_storage_t_flash.png"
+#define INDICATOR_BATTERY_LEVEL_00_ICON                                "indicator/camera_indicator_battery_00.png"
+#define INDICATOR_BATTERY_LEVEL_01_ICON                                "indicator/camera_indicator_battery_01.png"
+#define INDICATOR_BATTERY_LEVEL_02_ICON                                "indicator/camera_indicator_battery_02.png"
+#define INDICATOR_BATTERY_LEVEL_03_ICON                                "indicator/camera_indicator_battery_03.png"
+#define INDICATOR_BATTERY_LEVEL_04_ICON                                "indicator/camera_indicator_battery_04.png"
+#define INDICATOR_BATTERY_LEVEL_05_ICON                                "indicator/camera_indicator_battery_05.png"
+#define INDICATOR_BATTERY_FULL_ICON                                    "indicator/camera_indicator_battery_full.png"
+#define INDICATOR_BATTERY_CHARGE_ICON                          "indicator/camera_indicator_battery_charge.png"
+#define INDICATOR_GPS_STATE_OFF_ICON                           "indicator/camera_indicator_gps_off.png"
+#define INDICATOR_GPS_STATE_ON_ICON                                    "indicator/camera_indicator_gps_on.png"
+#define INDICATOR_GPS_STATE_CONNECT_ANI01_ICON         "indicator/camera_indicator_gps_connection01.png"
+#define INDICATOR_GPS_STATE_CONNECT_ANI02_ICON         "indicator/camera_indicator_gps_connection02.png"
+#define INDICATOR_GPS_STATE_CONNECT_ANI03_ICON         "indicator/camera_indicator_gps_connection03.png"
+#define INDICATOR_MUTE_ICON                                                    "indicator/camera_indicator_mute.png"
+
+/* Shutter icon */
+#define CAMERA_SHUTTER_ICON                                                    "camera_mode_shutter_icon.png"
+#define CAMERA_SHUTTER_ICON_DIM                                                "camera_mode_shutter_icon_dim.png"
+
+/* Volume key */
+#define VOLUME_KEY_AS_ZOOM_NORMAL_ICON                         "shortcut/camera_mode_zoom.png"
+#define VOLUME_KEY_AS_ZOOM_PRESS_ICON                          "shortcut/camera_mode_zoom_press.png"
+#define VOLUME_KEY_AS_SHUTTER_NORMAL_ICON                      "shortcut/camera_mode_shutter.png"
+#define VOLUME_KEY_AS_SHUTTER_PRESS_ICON                       "shortcut/camera_mode_shutter_press.png"
+
+/* Tip popup */
+#define TIP_POPUP_BURSTSHOT_HELP_IMAGE                         "camera_help_image.png"
+#define TIP_POPUP_VOLUMEKEY_HELP_IMAGE                         "camera_help_image.png"
+
+#endif
diff --git a/include/edc_string.h b/include/edc_string.h
new file mode 100755 (executable)
index 0000000..ef18f14
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_STRING_H_
+#define __DEF_STRING_H_
+
+/*  share between EDC and C code. */
+/* #define NEW_RECORDING_LAYOUT */
+
+#define INVALID_INDEX -1
+
+#define CAM_COMMON_STRING_LEN 80
+
+#define CAM_UI_LOG(fmt, args...)       cam_debug(LOG_UI, fmt, ##args)
+
+#define BG_BLACK       40
+#define FG_RED         31
+#define FG_GREEN       32
+#define FG_YELLOW      33
+#define FG_PUPPLE      35
+#define FG_CYAN        36
+#define FG_BLUE        34
+
+#define UI_TEST_LOG(fmt, args...) \
+       do { \
+               printf("\x1b[%dm\x1b[%dm[CAM_UI_LOG] [%s:%d] : "fmt, BG_BLACK, FG_GREEN, __func__, __LINE__, ##args); \
+               printf("\x1b[0m\n"); \
+       } while (0)
+
+#define MAIN_W 1280
+#define MAIN_H 720
+#define VER_MAIN_W MAIN_H
+#define VER_MAIN_H MAIN_W
+
+#define MAIN_W_AUTO 800
+#define MAIN_H_AUTO 480
+#define VER_MAIN_W_AUTO MAIN_H_AUTO
+#define VER_MAIN_H_AUTO MAIN_W_AUTO
+
+
+#define TOOLBAR_W 160
+#define TOOLBAR_RIGHT_ITEM_H 225
+
+/* camera focus */
+#define CAMERA_FOCUS_W  150
+#define CAMERA_FOCUS_H  97
+
+#define SETTINGS_TAB_BACK_W 71
+#define SETTINGS_TAB_BACK_H 71
+
+#define INDICATOR_GPS "INDICATOR_GPS"
+#define INDICATOR_BATTERY "INDICATOR_BATTERY"
+#define INDICATOR_NUM "INDICATOR_NUM"
+#define INDICATOR_STORAGE "INDICATOR_STORAGE"
+
+#define INDI_REC_GPS "INDI_REC_GPS"
+#define INDI_REC_BATTERY "INDI_REC_BATTERY"
+#define INDI_REC_STORAGE "INDI_REC_STORAGE"
+#define INDI_REC_MUTE "INDI_REC_MUTE"
+
+
+/* recording */
+#define RECORDING_IMAGE "recording_image"
+#define RECORDING_TEXT "recording_text"
+#define RECORDING_LEFT_TEXT "recording_left_text"
+
+/* haptic */
+#define HAPTIC_SIG_SRC "HAPTIC_SIG_SRC"
+#define HAPTIC_SIG "HAPTIC_SIG"
+
+#define CONTI_REVIEW_BACK "conti_review_back"
+#define CONTI_REVIEW_THUMB "conti_review_thumb"
+#define CONTI_REVIEW_BTN_SIG_SRC "conti_review_sig_source"
+#define CONTI_REVIEW_BACK_BTN_SIG "conti_review_back_SIG"
+
+/* captured image */
+#define CAPTURED_IMAGE_SCREEN "captured_image_screen"
+#define CAPTURED_IMAGE_SAVE "captured_image_save_btn"
+#define CAPTURED_IMAGE_RETRY "capture_image_save_bnt"
+
+/* Font related */
+#define COLOR_1        255 255 255 255
+#define COLOR_2        0 0 0 255
+#define COLOR_65       164 215 255 255
+#define COLOR_73       150 150 150 255
+
+#define FONT_NAME                      "font=SLP:style=Roman"
+#define FONT_COLOR                     COLOR_1
+
+#endif
diff --git a/packaging/ug-camera-efl.spec b/packaging/ug-camera-efl.spec
new file mode 100755 (executable)
index 0000000..57b7d98
--- /dev/null
@@ -0,0 +1,80 @@
+%define optflags -Wall -Wextra -g -fpie -fPIC -O0 -Wno-unused-parameter -Wno-missing-field-initializers -finstrument-functions -Wl,--as-needed -pie
+
+%define _optdir        /opt
+%define _usrdir        /usr
+%define _ugdir %{_usrdir}/ug
+
+
+Name:       ug-camera-efl
+Summary:    SLP Camera UI Gadget
+Version:    0.1.114
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    Flora Software License
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires:  cmake
+BuildRequires:  prelink
+BuildRequires:  gettext-tools
+BuildRequires:  edje-tools
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(vconf)
+BuildRequires:  pkgconfig(devman)
+BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(ui-gadget-1)
+BuildRequires:  pkgconfig(ecore-x)
+BuildRequires:  pkgconfig(ecore)
+BuildRequires:  pkgconfig(ecore-evas)
+BuildRequires:  pkgconfig(ecore-input)
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-content-media-content)
+BuildRequires:  pkgconfig(capi-location-manager)
+BuildRequires:  pkgconfig(capi-media-camera)
+BuildRequires:  pkgconfig(capi-media-image-util)
+BuildRequires:  pkgconfig(capi-media-recorder)
+BuildRequires:  pkgconfig(capi-media-sound-manager)
+BuildRequires:  pkgconfig(capi-media-wav-player)
+BuildRequires:  pkgconfig(capi-system-power)
+BuildRequires:  pkgconfig(syspopup-caller)
+BuildRequires:  pkgconfig(capi-system-sensor)
+
+
+%description
+Description: SLP Camera UI Gadget
+
+%prep
+%setup -q
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=%{_ugdir}
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE.Flora %{buildroot}/usr/share/license/%{name}
+
+%make_install
+execstack -c %{buildroot}%{_ugdir}/lib/libug-camera-efl.so.0.1.0
+
+%post
+chown 5000:5000 /opt/usr/ug/data/ug-camera-efl/
+chown 5000:5000 /opt/usr/ug/data/ug-camera-efl/.camera.ini
+mkdir -p /usr/ug/bin/
+ln -sf /usr/bin/ug-client /usr/ug/bin/camera-efl
+
+%files
+%manifest ug-camera-efl.manifest
+%defattr(-,root,root,-)
+%{_ugdir}/res/edje/%{name}/*
+%{_ugdir}/res/locale/*/LC_MESSAGES/%{name}.mo
+%{_ugdir}/res/sounds/%{name}/*
+%{_ugdir}/res/icons/%{name}/%{name}.png
+%{_ugdir}/lib/libug-camera-efl.so
+%{_ugdir}/lib/libug-camera-efl.so.0.1.0
+%{_optdir}/usr/ug/data/%{name}/.camera.ini
+%{_usrdir}/share/packages/%{name}.xml
+/usr/share/license/%{name}
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..26272d3
--- /dev/null
@@ -0,0 +1,25 @@
+# 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 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(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/po/ar.po b/po/ar.po
new file mode 100755 (executable)
index 0000000..f7269ec
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 ثوان"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "ثانيتان"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "ضد الاهتزاز"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "تلقائي"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "الجمال"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "أسود و أبيض"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "تركيز على المنتصف"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "ضوء النهار"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "كشف الوجه"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "فلاش"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "مشع"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "ماكرو"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "مصفوفة"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "القياس"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "نيجاتيف"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "لا شيء"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "إيقاف تشغيل"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "مفعل"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "صورة شخصية"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "بني داكن"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "بانوراما"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "فردي"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "الحركة البطيئة"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "مكان التخزين"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "براق"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "خطوط الإرشاد"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "علامة GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "صورة لشخص"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "ألعاب رياضية"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "حفلة/في الداخل"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "الغروب"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "الفجر"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "ألعاب نارية"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "نص"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "ضوء الشموع"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "الضوء الخلفي"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "توضيح تلقائي"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "نمط المشهد"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "نمط توضيح الصورة"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "الرؤية في الخارج"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "المؤقت"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "المؤثرات"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "تعديل الاختصارات"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "تباين تلقائي"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "إرجاع"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "الضبط"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "صور متلاحقة"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "حد الرسالة"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "حركة سريعة"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 ثوان"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "غائم"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "فشل في إنشاء صور بانورامية. حاول لاحقا"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "أفق"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "الرجاء الانتظار أثناء إنشاء بانوراما"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "ظل"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "نقطة"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "يتعذر الحفظ. الذاكرة غير كافية"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "لقطة جمالية"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "بانوراما"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "نمط التصوير"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "الحركة البطيئة"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "توازن اللون الأبيض"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "خطأ في الالتقاط"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "تجاوز وقت الالتقاط. البدء مرة أخرى"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "يتعذر بدء تشغيل الكاميرا"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "يتعذر بدء الكاميرا أثناء المكالمة"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "قم بإغلاق الكاميرا خلال %d ثوان"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "تفعيل خدمة تحديد المواقع‬ في الإعدادات لاستخدام علامة GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "اضغط على الغالق"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "حرك الكاميرا ببطء في اتجاه السهم"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "القائمة غير مدعومة"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "سياسة الأمان تقيد استخدام الكاميرا"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "تم الحفظ"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "أفقي"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "ليلي"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "كشف الوجه"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "نمط التسجيل"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "إرجاع الضبط؟"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "لقطة الإبتسامة"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "بطاقة الذاكرة"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "شاطئ/ثلج"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "قيمة الإضاءة"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "الدقة"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "فشل التسجيل"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "انتهي وقت الالتقاط. البدء مرة أخرى"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "ضبط مخصص"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "جاري المعالجة..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "تم إخراج بطاقة الذاكرة"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "لا يمكن استخدام الفلاش. بطارية ضعيفة"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "استخدام مفتاح الصوت كـ"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "مفتاح الزوم"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "مفتاح الكاميرا"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "دقة الصورة"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "دقة الفيديو"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "سيتم حفظ الصور المتلاحقة بجودة جيدة"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "انقر مع الاستمرار فوق زر الكاميرا لالتقاط ‏‫صور متلاحقة‬"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "اضغط على مفتاح رفع مستوى الصوت لالتقاط صورة. واضغط على مفتاح خفض مستوى الصوت لبدء التسجيل"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "إذا تم تفعيل الصور المتلاحقة، فسيؤدي الضغط على زر رفع مستوى الصوت إلى التقاط صور متلاحقة"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "عدم العرض مرة أخرى"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "تلميحات"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "الجهاز"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "‏‫انقر مع الاستمرار فوق الرمز، ثم اسحبه لتعديل موضع الاختصار"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "أفضل صورة"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "مشاركة اللقطة"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "فلاش"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "رسوم متحركة"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "مشاركة صورة الصديق"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "لون الخريف"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "حفظ كصورة معكوسة"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "ذاكرة الفيديو المتبقية غير كافية"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "إعادة عرض"
+
diff --git a/po/az.po b/po/az.po
new file mode 100755 (executable)
index 0000000..0b47bdd
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 san"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 san"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Titrəməyə qarşı"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Gözəllik"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Ağ-qara"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Mərkəzləşdirilmiş ağırlıqlı"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Gündüz"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Üzün göstərilməsi"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Parlaq işıq"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Flüoresent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matris"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Ölçmə"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Neqativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Heç biri"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Söndür"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Qoş"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Avto-portret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Ala laranlıq"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Mənzərə"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Tək"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Asta hərəkət"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Ehtiyat"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Közərmə"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Göstərişlər"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS etiketi"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "İdmanlar"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Qonaqlıq/İçəridə"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Günəşin qürubu"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Şəfəq"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fişəng"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Mətn"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Şam işığı"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Fon işığı"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Avto fokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mənzərə rejimi"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokus rejimi"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Bayırda görüntü"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Taymer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effektlər"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Qısayolları redaktə edin"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Avtomatik kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Sıfırlansın"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Parametrlər"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Partlayış çəkilişi"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Mesaj limiti"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Sürətli hərəkət"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 san"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Buludlu"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Mənzərə şəkillərini yaratmaq alınmadı. Bir az sonra cəhd edin"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Üfüq"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Mənzərə yaradılana kimi gözləyin"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Kölgə"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Ləkə"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Saxlamaq mümkün deyildir. Yaddaşda kifayət qədər yer yoxdur"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Gözəl çəkiliş"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Mənzərə"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Çəkiliş rejimi"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Asta hərəkət"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Ağ balans"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Çəkiliş xətası"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Çəkmə vaxtı keçmişdir. Yenidən başlayın"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kameranı başlatmaq mümkün deyil"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Zəng ərzində kameranı başlatmaq mümkün deyil"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "%d saniyəyə kameranı bağla"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS etiketindən istifadə etmək üçün Parametrlərdə məkan xidmətini aktivləşdirin"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Çəkiliş düyməsini bas"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Kameranı ox istiqamətində yavaşca hərəkət etdir"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menyu dəstəklənmir"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Təhlükəsizlik siyasəti Kameradan istifadəni məhdudlaşdırır"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Yaddaşa yazıldı"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Mənzərə"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Gecə"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Üzün göstərilməsi"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Yazıya alma rejimi"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Parametrlər sıfırlansın?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Gülümsəmə"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Yaddaş kartı"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Çimərlik/Qar"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Foto-ekspozisiya müddəti"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rezolyusiya"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Yazma alınmadı"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Çəkiliş vaxtı bitib. Yenidən başlayın"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Adi"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Emal edilir..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Yaddaş kartı çıxarıldı"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Flaşdan istifadə mümkün deyil. Batareya zəifdir"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Səs səv. düym-dən ist. et"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Miqyasdəyişmə düyməsi"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kamera düyməsi"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Foto rezolyusiya"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video rezolyusiya"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Partlayış çəkilişli şəkillər keyfiyyət yaxşı olaraq saxlanıb"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Partlayışlı çəkiliş üçün kamera düyməsinə vurub saxlayın"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Şəkil çəkmək üçün səsin artırılması düyməsini basın. Yazılışa başlamaq üçün səsin azaldılması düyməsini basın"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Partlayış çəkilişi aktiv olduqda, yuxarı səs səviyyəsini basmaqla belə şəkil çəkmək olar"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Bir daha göstərmə"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Məsləhətlər"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Cihaz"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Nişana vurub saxlayın, sonra qısayolun mövqeyini redaktə etmək üçün onu çəkin"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Ən yaxşı şəkil"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Şəkli paylaş"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Parlaq işıq"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cizgi filmi"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Dostun şəklini paylaş"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Payız rəngi"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Çevrilmiş saxla"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Video üçün\nyaddaş kifayət etmir"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Gözdən keçir"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100755 (executable)
index 0000000..ab0a116
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 сек"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 сек"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Система срещу разклащане"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Красота"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Черно и бяло"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Централно - претеглено"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Дневна светлина"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Разпознаване на лице"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Светкавица"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Флуоресцентен"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Макрос"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Матрица"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Измерване"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Негатив"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Нищо"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Изключено"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Автопортрет"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Сепия"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Единична"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Бавно движение"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Устройство за съхранение на данни"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Изкуствено осветление"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Направляващи линии"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS таг"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Портрет"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Спорт"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Парти/На закрито"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Залез"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Зазоряване"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Фойерверки"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Текст"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "На свещи"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Фонова светлина"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Автофокус"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Режим Сцени"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Режим фокус"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Видимост на открито"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Таймер"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Ефекти"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Редактиране на бързи клавиши"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Авто-контраст"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Нyлиране"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Бързо снимане"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Ограничение за съобщение"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Бързо движение"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 сек"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Облачно"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Неуспешно изграждане на панорамни изображения. Опитайте по-късно"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Хоризонт"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Моля, изчакайте да се създаде панорама"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Светлосянка"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Зона"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Не може да се запамети Няма достатъчно памет"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Красива снимка"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Режим на снимане"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Бавно движение"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Баланс на бялото"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Грешка при заснемане"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Превишена продължителност на снимане. Започнете отново"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Камерата не може да се стартира"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Не може да пусне камерата\nпо време на разговор"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Камерата се затваря след %d секунди"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Активирайте услугата за местоположение в Настройки, за да използвате GPS етикет"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Натиснете затвора"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Движете бавно камерата по посока на стрелката"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Менюто не е поддържано"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Правилата за защита ограничават използването на камерата"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Записан"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Пейзажно"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Нощ"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Разпознаване на лице"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Режим на запис"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Нyлиране на настройките?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Усмивка"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Карта с памет"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Плаж/Сняг"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Стойност на експонацията"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Разделителна способност"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Записване неуспешно"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Продължителността на снимане изтече. Започнете отново"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "По избор"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Обработване..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Карта с памет извадена"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Светкавицата не може да се използва. Слаба батерия"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Изп. бут. сила звук като"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Бутонът за мащаб"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Бутонът за камера"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Разд. спос. за сним."
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Разд. спос. за видео"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Бързите снимки се записват с качеството, зададено като добро"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Чукнете и задръжте бутона за камера, за да направите бързи снимки"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Натиснете клавиша за увеличаване на силата на звука, за да направите снимка. Натиснете клавиша за намаляване на звука, за да започнете запис"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ако бързо снимане е активирано, натискането на клавиша за увеличаване на силата на звука ще направи бързи снимки"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Не показвай отново"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Съвети"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Устройство"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Чукнете и задръжте иконата, след което я плъзнете, за да редактирате позицията на бързата команда"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Най-добра снимка"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Споделяне на снимка"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Светкавица"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Карикатура"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Споделяне на снимки с приятели"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Есенен цвят"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Запиши като обърнато"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Няма достатъчно\nпамет за видео"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Преглед"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100755 (executable)
index 0000000..ebf1464
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-Vibració"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Bellesa"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Blanc i negre"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Enfocat"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Llum diürna"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detecció de cares"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flaix"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriu"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mesurament"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatiu"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Cap"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desactivat"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activat"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoretrat"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sèpia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Senzill"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Càmera lenta"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Emmagatzematge"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Instruccions"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Vertical"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Esports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/Interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Posta de sol"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Albada"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Foc d'artifici"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Espelmes"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Retroil·luminació"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Enfocament automàtic"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mode escena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Mode d'enfocament"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilitat exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporitzador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efectes"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar accessos directes"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contrast automàtic"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Restablir"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ajustaments"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Ràfega"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Límit de missatges"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Càmera ràpida"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Ennuvolat"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Error en construir imatges panoràmiques. Intenti-ho més tard"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horitzó"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Esperi mentre es crea la imatge panoràmica"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Ombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punt"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "No es pot desar. No hi ha prou memòria"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Captura embellida"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Mode disparament"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Càmera lenta"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balanç de blancs"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Error en capturar"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "S'ha excedit el temps de captura. Torni a començar"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "No es pot iniciar la Càmera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "No es pot iniciar la càmera durant la trucada"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Tancar càmera en %d segons"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Habiliti el servei d'ubicació a Ajustaments per utilitzar l'etiqueta GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Premi l'obturador"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mogui al càmera suaument en la direcció de la fletxa"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menú no compatible"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "La política de seguretat restringeix l'ús de la càmera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Desat"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Horitzontal"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nit"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detecció de cares"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Mode de gravació"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Restablir ajustaments?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Disparament somriure"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Targeta de memòria"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Platja/Neu"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor d'exposició"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolució"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Error de gravació"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "S'ha excedit el temps de captura. Torni a començar"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalitzat"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Processant..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "S'ha extret la targeta de memòria"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "No es pot utilitzar el flaix. No hi ha prou bateria"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Utilitzi tecla volum com"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "La tecla de zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "La tecla de Càmera"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolució de foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolució de video"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Les imatges de ràfegues es desen amb la qualitat òptima configurada"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Mantingui tocat el botó de la càmera per fer una ràfega"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Premi la tecla de volum amunt per fer una foto. Premi la tecla de volum avall per iniciar una gravació"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Si la ràfega està habilitada, en prémer la tecla d'augment de volum es farà una ràfega"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "No tornar a mostrar"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Consells"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositiu"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Mantingui tocada la icona i arrossegui-la a la posició d'edició de l'accés directe"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Millor foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Compartir dispar"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flaix"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Còmic"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Compartir foto d'amic"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Color tardor"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Desar com a invertit"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "No hi ha prou memòria per a vídeo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Revisar"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100755 (executable)
index 0000000..cd973ea
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilizace obrazu"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Krása"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Černobílý"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Ve středu"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Denní světlo"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Rozpoznání obličeje"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Blesk"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Zářivka"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matice"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Měření"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativní"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Žádný"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Vypnout"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Zapnout"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportrét"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépie"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Jeden snímek"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Pomalý pohyb"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Úložiště"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Žhnoucí"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Vodící linky"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Značka GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Na výšku"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Večírek/uvnitř"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Západ slunce"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Úsvit"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Ohňostroj"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Světlo svíčky"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Podsvícení"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automatické zaostření"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Režim Krajina"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Režim zaostření"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Viditelnost venku"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Samospoušť"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekty"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Upravit zástupce"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatický kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Vynulovat"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Nastavení"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sériové snímání"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limit zpráv"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Rychlý pohyb"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Oblačno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nepodařilo se vytvořit panoramatické obrázky. Opakujte akci později"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Počkejte při fotografování panoramatického snímku"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Stín"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Bod"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nelze uložit. Nedostatek paměti"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Krása"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Režim fotografování"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Pomalý pohyb"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Vyvážení bílé"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Při fotografování došlo k chybě"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Byla překročena doba fotografování. Začněte znovu"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Fotoaparát nelze spustit"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Během hovoru nelze\nspustit fotoaparát"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Fotoaparát se zavře za %d sekund"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Chcete-li použít značku GPS, zapněte v Nastavení službu určování polohy"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Stiskněte spoušť"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Pomalu pohybujte fotoaparátem ve směru šipky"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu není podporováno"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Zásady zabezpečení omezují použití fotoaparátu"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Uloženo"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Na šířku"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noc"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Rozpoznání obličeje"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Režim nahrávání"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Vynulovat nastavení?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Úsměv"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Paměťová karta"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Pláž/sníh"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Hodnota expozice"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rozlišení"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Během nahrávání došlo k chybě"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Byla překročena doba fotografování. Začněte znovu"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Vlastní"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Probíhá zpracování..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Paměťová karta vyjmuta"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Nelze použít blesk. Baterie je vybitá"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Použít tl. hlasit. jako"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tlačítko přiblížení"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Spoušť fotoaparátu"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Rozlišení fotografie"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Rozlišení videa"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Fotografie pořízené sériovým snímáním se ukládají s nastavenou kvalitou vysoká"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Klepnutím a podržením tlačítka fotoaparátu zahájíte sériové snímání"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Stisknutím tlačítka pro zvýšení hlasitosti vyfotografujete obrázek. Stisknutím tlačítka pro snížení hlasitosti zahájíte nahrávání"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Pokud je zapnuté sériové snímání, stisknutím tlačítka zvýšení hlasitosti zahájíte sériové snímání"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Znovu nezobrazovat"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tipy"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Zařízení"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Klepněte na ikonu a držte ji, a potom ji přetáhněte na požadované místo zástupce"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Nejlepší fotografie"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Sdílet snímek"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Blesk"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Skica"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Sdílet fotografii kamaráda"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Barva podzimu"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Uložit jako překlopený"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "K použití videa\nnení dostatek paměti"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Kontrola"
+
diff --git a/po/da.po b/po/da.po
new file mode 100755 (executable)
index 0000000..79a78ee
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-ryst"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Skønhed"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Sort-hvid"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centervægtet"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dagslys"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Ansigtsdetektering"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Kameralys"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescerende"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Måling"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ingen"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Fra"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Til"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Selvportræt"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Enkelt"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Hvidglødende"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Hjælpelinjer"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portræt"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fest/indendørs"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Solnedgang"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Daggry"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fyrværkeri"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Stearinlys"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Baggrundslys"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scenetilstand"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokustilstand"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Udendørs synlighed"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Selvudløser"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effekter"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Redigér genveje"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatisk kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Nulstil"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Indstillinger"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Burst-billede"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Meddelelsesgrænse"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Hurtig bevægelse"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Skyet"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Kunne ikke opbygge panoramabilleder. Prøv senere"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horisont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Vent, mens der oprettes et panoramabillede"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Skygge"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punkt"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Kunne ikke gemme. Ikke tilstrækkelig hukommelse"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Forskønnet optagelse"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fototilstand"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Hvidbalance"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Optagefejl"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Optagetid overskredet. Start igen"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kan ikke starte kamera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Kan ikke starte kamera\nunder opkald"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Luk kamera om %d sekunder"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aktivér placeringstjeneste under Indstillinger for at bruge GPS-tag"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Tryk på Lukker"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Bevæg kameraet langtsomt i pilens retning"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu understøttes ikke"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Sikkerhedspolitik begrænser brug af kamera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Gemt"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Liggende"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nat"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Ansigtsdetektering"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Optagelsestilstand"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Nulstil indstillinger?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smilbillede"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Hukommelseskort"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/sne"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Eksponeringsværdi"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Opløsning"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Optagelse mislykkedes"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Optagetid er slut. Start igen"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Brugerdefineret"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Behandler ..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Hukommelseskort fjernet"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Kan ikke bruge kameralys. Lavt batteri"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Brug lydstyrketasten som"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoomtasten"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kameratasten"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoopløsning"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videoopløsning"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Billeder fra burst-optagelse gemmes med kvalitet angivet som fin"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tryk på og hold kameraknappen nede for at tage en burst-optagelse"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Tryk på tasten lydstyrke op for at tage et billede. Tryk på tasten lydstyrke ned for at starte optagelse"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Hvis burst-billede er aktiveret, tages et burst-billede, når der trykkes på tasten lydstyrke op"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Vis ikke igen"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Enhed"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tryk på ikonet, og hold det nede, og træk det derefter til position for redigering af genvejen"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Bedste foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Del billede"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Kameralys"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Tegnefilm"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Del foto med ven"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Efterårsfarve"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Gem som vendt om"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ikke tilstrækkelig\nhukommelse til videoklippet"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Visning"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100755 (executable)
index 0000000..f315c8a
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 Sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 Sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Bildstabilisator"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauty"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Schwarz/Weiß"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Mittenbetont"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Tageslicht"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Gesichtserkennung"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Fotolicht"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluoreszierend"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Messung"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Keine"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Aus"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Ein"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Selbstportrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Einzeln"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Zeitlupe"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Speicher"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Glühlampenlicht"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Hilfslinien"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-Tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Party/Innen"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sonnenuntergang"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Morgendämmerung"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Feuerwerk"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Kerzenlicht"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Gegenlicht"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Szenen-Modus"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusmodus"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Sichtbarkeit im Freien"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Selbstauslöser"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effekte"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Schnellzugriffe bearbeiten"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatischer Kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Zurücksetzen"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Einstellungen"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Serienbilder"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Nachrichtenbeschränkung"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Schnelle Bewegung"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 Sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Bewölkt"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoramabild konnte nicht erstellt werden. Versuchen Sie es später erneut"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Panorama wird erstellt, bitte warten"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Schatten"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Speichern nicht möglich. Nicht genügend Speicher"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beautyaufnahme"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Aufnahmemodus"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Zeitlupe"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Weißabgl."
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Aufnahmefehler"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Aufnahmezeit überschritten. Erneut starten"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kamera kann nicht gestartet werden"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Starten der Kamera während\nAnruf nicht möglich"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Kamera in %d Sekunden schließen"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aktivieren Sie die Verwendung des Standortdiensts in “Einstellungen”, um GPS-Tag zu verwenden."
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Auslöser drücken"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Bewegen Sie die Kamera langsam in Pfeilrichtung."
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menü nicht unterstützt"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Sicherheitsrichtlinie schränkt die Verwendung der Kamera ein."
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Gespeichert"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landschaft"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nachtmodus"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Gesichtserkennung"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Aufnahmemodus"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Einstellungen zurücksetzen?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smile"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Speicherkarte"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/Schnee"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Belichtungswert"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Auflösung"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Aufnahme fehlgeschlagen"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Aufnahmezeit ist vorbei. Neu starten."
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Benutzerdefiniert"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Verarbeitung läuft ..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Speicherkarte entfernt"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Fotolicht kann nicht verwendet werden. Akku fast leer."
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Lautstärketaste verw. als"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoom-Taste"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kamerataste"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoauflösung"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videoauflösung"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Serienbildaufnahmen werden in der Qualität “Fein” gespeichert."
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Drücken und halten Sie die Kamerataste, um Serienbilder aufzunehmen."
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Drücken Sie auf den Plus-Lautstärkeregler, um ein Bild aufzunehmen. Drücken Sie auf den Minus-Lautstärkeregler, um eine Aufnahme zu starten."
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Wenn die Serienbildaufnahme aktiviert ist, werden durch Drücken der Taste für die Lautstärkeerhöhung Serienbilder aufgenommen."
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Nicht mehr anzeigen"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tipps"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Gerät"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tippen und halten Sie das Symbol und ziehen Sie es, um die Position des Shortcuts zu ändern."
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Bestes Foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Aufnahme senden"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Fotolicht"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartoon"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Foto mit Buddy teilen"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Herbstfarbe"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Spiegelverkehrt speichern"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Nicht genügend\nSpeicherplatz für Video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Überprüfen"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100755 (executable)
index 0000000..eab0278
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 δευτ."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 δευτ."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-Shake"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Αυτόματο"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Ομορφιά"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Ασπρόμαυρο"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Με εστίαση στο κέντρο"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Φως ημέρας"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Ανίχνευση προσώπου"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Φλας"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Φθορισμού"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Μέτρηση"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Αρνητικό"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Κανένα"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Ανενεργό"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Ενεργό"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Αυτοφωτογράφηση"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Σέπια"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Πανόραμα"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Μονή"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Αργή ταχύτητα"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Αποθήκευση"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Πυρακτώσεως"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Οδηγίες"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Ετικέτα GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Πορτραίτο"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Αθλητικά"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Πάρτι/Εσωτερικά"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Ηλιοβασίλεμα"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Αυγή"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Πυροτέχνημα"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Κείμενο"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Φως κεριού"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Φωτισμός"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Αυτόματη εστίαση"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Λειτουργία σκηνών"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Λειτουργία εστίασης"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Ορατότητα εξωτερικού χώρου"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Χρονομετρητής"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Εφέ"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Επεξεργασία συντομεύσεων"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Αυτόματη αντίθεση"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Επαναφορά"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ρυθμίσεις"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Λειτ. συνεχούς λήψης"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Κανονική"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Όριο μηνυμάτων"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Γρήγορη κίνηση"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 δευτ."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Συννεφιά"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Αποτυχία δημιουργίας πανοραμικών εικόνων. Δοκιμάστε αργότερα"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Ορίζοντας"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Περιμένετε μέχρι να δημιουργηθεί το πανόραμα"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Σκίαση"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Σημείο"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Δεν είναι δυνατή η αποθήκευση. Ανεπαρκής μνήμη"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Για ομορφότερη λήψη"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Πανόραμα"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Λειτουργία λήψης"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Αργή ταχύτητα"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Εξισορρόπ.λευκού"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Σφάλμα καταγραφής"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Έγινε υπέρβαση του μέγιστου χρόνου καταγραφής. Έναρξη ξανά"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Δεν είναι δυνατή η έναρξη της Κάμερας"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Δεν είναι δυνατή η εκκίνηση κάμερας\nκατά την κλήση"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Κλείσιμο κάμερας σε %d δευτερόλεπτα"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Για τη χρήση της ετικέτας GPS, ενεργοποιήστε την υπηρεσία εντοπισμού θέσης από τις Ρυθμίσεις"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Πατήστε το διάφραγμα"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Μετακινήστε την κάμερα αργά προς την κατεύθυνση του βέλους"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Το μενού δεν υποστηρίζεται"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Η πολιτική ασφαλείας περιορίζει τη χρήση της κάμερας"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Αποθηκεύτηκε"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Οριζόντια"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Νύχτα"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Ανίχνευση προσώπου"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Λειτουργία εγγραφής"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Επαναφορά ρυθμίσεων;"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Λήψη χαμόγελου"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Κάρτα μνήμης"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Παραλία/Χιόνι"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Τιμή έκθεσης"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Αποτυχία εγγραφής"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Ο χρόνος καταγραφής έληξε. Ξεκινήστε ξανά"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Προσαρμοσμένη"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Επεξεργασία..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Η κάρτα μνήμης αφαιρέθηκε"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Δεν είναι δυνατή η χρήση του Φλας. Χαμηλή στάθμη μπαταρίας"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Χρήση πλήκτρου έντασης ως"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Το πλήκτρο ζουμ"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Το πλήκτρο κάμερας"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Ανάλυση φωτογραφίας"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Ανάλυση βίντεο"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Οι εικόνες από τη λειτουργία συνεχούς λήψης αποθηκεύονται με υψηλή ποιότητα"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Πατήστε παρατεταμένα το κουμπί της κάμερας για τη λήψη εικόνας με τη λειτουργία συνεχούς λήψης"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Πιέστε το πλήκτρο αύξησης της έντασης για να τραβήξετε μια φωτογραφία. Πιέστε το πλήκτρο μείωσης της έντασης για να ξεκινήσετε την εγγραφή"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Αν έχει ενεργοποιηθεί η λειτουργία συνεχούς λήψης, με το πάτημα του πλήκτρου αύξησης της έντασης θα γίνει λήψη εικόνας με αυτήν τη λειτουργία"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Να μην εμφανιστεί ξανά"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Συμβουλές"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Συσκευή"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Πατήστε παρατεταμένα το εικονίδιο και, στη συνέχεια, σύρετέ το για να αλλάξετε τη θέση της συντόμευσης"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Καλύτερη φωτογραφία"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Κοινή χρήση λήψης"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Φλας"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Κινούμενα σχέδια"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Κοινή χρήση φωτογραφίας φίλου"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Χρώμα του φθινοπώρου"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Αποθήκευση ως ανεστραμμένης εικόνας"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ανεπαρκής μνήμη\nγια το βίντεο"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Εξέταση"
+
diff --git a/po/en.po b/po/en.po
new file mode 100755 (executable)
index 0000000..a41835e
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 secs"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 secs"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-shake"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauty"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Black and white"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centre-weighted"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Daylight"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Metering"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negative"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "None"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "On"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Self-portrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Single"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Storage"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Guidelines"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Party/Indoor"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sunset"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Dawn"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Firework"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Candlelight"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Backlight"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto focus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scene mode"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Focus mode"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Outdoor visibility"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Timer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effects"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Auto contrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Reset"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Burst shot"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Message limit"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Fast motion"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 secs"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Cloudy"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Failed to build panoramic images. Try later"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Please wait while creating panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Shade"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Unable to save. Not enough memory"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauty shot"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Shooting mode"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "White balance"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Capture error"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Capture time exceeded. Start again"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Unable to start Camera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Unable to start Camera during call"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Close camera in %d seconds"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Enable location service in Settings to use GPS tag"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Press Shutter"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Move camera slowly in direction of arrow"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu not supported"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Security policy restricts use of Camera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Saved"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landscape"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Night"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Recording mode"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Reset settings?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smile shot"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memory card"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Beach/Snow"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Exposure value"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Recording failed"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Capture time is over. Start again"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memory card removed"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Unable to use Flash. Battery low"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Use the volume key as"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "The zoom key"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "The camera key"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Photo resolution"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video resolution"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Burst shot images are saved with the quality set as fine"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tap and hold the camera button to take a burst shot"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Press the volume up key to take a picture. Press the volume down key to start recording"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "If Burst shot is enabled, pressing the volume up key will take a burst shot"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Do not show again"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Device"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tap and hold the icon, then drag it to edit the position of the shortcut"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Best photo"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Share shot"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartoon"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Buddy photo share"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Autumn colour"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Save as flipped"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Not enough memory for video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Review"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100755 (executable)
index 0000000..e4ff940
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 secs"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 secs"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-Shake"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauty"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Black and white"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Center-weighted"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Daylight"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Metering"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negative"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "None"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "On"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Self-portrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Single"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Storage"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Guidelines"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Party/Indoor"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sunset"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Dawn"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fireworks"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Candlelight"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Backlight"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto focus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scene mode"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Focus mode"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Outdoor visibility"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Timer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effects"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Auto contrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Reset"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Burst shot"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Message limit"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Fast motion"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 secs"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Cloudy"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Failed to build panoramic images. Try later"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Please wait while creating panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Shade"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Unable to save. Not enough memory"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauty shot"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Shooting mode"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "White balance"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Capture error"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Capture time exceeded. Start again"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Unable to start Camera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Unable to start camera during call"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Close camera in %d seconds"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Enable location service in Settings to use GPS tag"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Press Shutter"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Move camera slowly in direction of arrow"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu not supported"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Security policy restricts the use of Camera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Saved"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landscape"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Night"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Recording mode"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Reset settings?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smile shot"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memory card"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Beach/Snow"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Exposure value"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Recording failed"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Capture time is over. Start again"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memory card removed"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Unable to use Flash. Battery low"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Use the volume key as"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "The zoom key"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "The camera key"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Photo resolution"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video resolution"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Burst shot images are saved with the quality set as fine"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tap and hold the camera button to take a burst shot"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Press the volume up key to take a picture. Press the volume down key to start recording"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "If burst shot is enabled, pressing the volume up key will take a burst shot"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Do not show again"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Device"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tap and hold the icon, then drag it to edit the position of the shortcut"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Best photo"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Share shot"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartoon"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Buddy photo share"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Autumn color"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Save as flipped"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Not enough memory for video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Review"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100755 (executable)
index 0000000..74c2f22
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sec"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sec"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-Shake"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauty"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Black and white"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Center-weighted"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Daylight"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Metering"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negative"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "None"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "On"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Self-portrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Single"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Storage"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Guidelines"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Party/Indoor"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sunset"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Dawn"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Firework"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Candlelight"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Backlight"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto focus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scene mode"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Focus mode"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Outdoor visibility"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Timer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effects"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Auto contrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Reset"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Burst shot"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Message limit"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Fast motion"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sec"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Cloudy"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Failed to build panoramic images. Try later"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Please wait while creating panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Shade"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Unable to save. Not enough memory"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauty shot"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Shooting mode"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slow motion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "White balance"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Capture error"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Capture time exceeded. Start again"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Unable to start Camera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Unable to start camera during call"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Close camera in %d seconds"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Enable location service in Settings to use GPS tag"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Press Shutter"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Move camera slowly in direction of arrow"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu not supported"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Security policy restricts use of Camera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Saved"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landscape"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Night"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Face detection"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Recording mode"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Reset settings?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smile shot"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memory card"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Beach/Snow"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Exposure value"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Recording failed"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Capture time is over. Start again"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memory card removed"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Unable to use Flash. Battery low"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Use the volume key as"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "The zoom key"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "The camera key"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Photo resolution"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video resolution"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Burst shot images are saved with the quality set as fine"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tap and hold the camera button to take a burst shot"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Press the volume up key to take a picture. Press the volume down key to start recording."
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "If burst shot is enabled, pressing the volume up key will take a burst shot"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Do not show again"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Device"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tap and hold the icon, then drag it to edit the position of the shortcut"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Best photo"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Share shot"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartoon"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Buddy photo share"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Autumn color"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Save as flipped"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Not enough memory for video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Review"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100755 (executable)
index 0000000..08571a9
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Antimovimiento"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Belleza"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Blanco y negro"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centr-compensado"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luz del día"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detección de rostro"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriz"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Medición"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ninguno"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desactivada"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autorretrato"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorámica"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Sencillo"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Cámara lenta"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Almacenamiento"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescente"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Instrucciones"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Retrato"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Deportes"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fiesta/Interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Puesta de sol"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Amanecer"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fuegos artificiales"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Velas"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Retroiluminación"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Enfoque automático"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Modo Escena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Modo de enfoque"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilidad de exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efectos"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar accesos directos"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste automático"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Restablecer"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Disparo continuo"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Límite de mensajes"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Cámara rápida"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nublado"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Error al generar imágenes panorámicas. Intentarlo más tarde"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Espere mientras se crea la imagen panorámica"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punto"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "No se puede guardar. No hay memoria suficiente"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Disparo belleza"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorámica"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modo de disparo"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Cámara lenta"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balance blanco"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Error de captura"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tiempo de captura superado. Comience de nuevo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "No se puede iniciar la cámara"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "No se puede iniciar la cámara durante la llamada"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Cerrar cámara en %d segundos"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activar servicio de ubicación en Ajustes para utilizar la etiqueta GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pulse Obturador"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mueve la cámara lentamente hacia donde indica la flecha"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menú no admitido"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "La política de seguridad restringe el uso de la cámara"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Guardado"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Paisaje"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noche"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detección de rostro"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modo de grabación"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "¿Restablecer ajustes?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Disparo por sonrisa"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Tarjeta de memoria"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Playa/Nieve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor de exposición"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Error de grabación"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tiempo de captura superado. Empiece de nuevo"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Tarjeta de memoria extraída"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "No se puede usar Flash. Batería baja"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Usar tecla volumen como"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "La tecla de zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "La tecla de cámara"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolución de foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolución de vídeo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Las imágenes de disparo continuo se guardan con la calidad óptima configurada"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Mantenga pulsado el botón de la cámara para realizar un disparo en ráfaga"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pulse la tecla subir volumen para hacer una foto. Pulse la tecla bajar volumen para iniciar una grabación"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Si disparo continuo está activado, pulsar la tecla de subir volumen tomará un disparo continuo"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "No mostrar de nuevo"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Consejos"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Mantenga tocado el icono y arrástrelo a la posición de edición del acceso directo"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "La mejor foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Compartir disparo"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Animación"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Compartir foto de amigo"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Color de otoño"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Guardar como volteado"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memoria insuficiente para el vídeo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Revisar"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100755 (executable)
index 0000000..b3a428c
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Antivibración"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Belleza"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Blanco y negro"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centrado"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luz de día"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detección de rostro"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriz"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Medición"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ninguno"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autorretrato"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorámica"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Único"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Movimiento lento"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Almacenamiento"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescente"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Instrucciones"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Retrato"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Deportes"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fiesta/Interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Atardecer"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Amanecer"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Pirotecnia"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Luz de vela"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Contraluz"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Enfoque automático"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Escena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Modo de enfoque"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilidad de exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efectos"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atajos"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste automático"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Restablecer"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Configuración"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Disparo continuo"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Límite de MMS"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Cámara rápida"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nublado"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Error al generar imágenes panorámicas. Inténtelo más tarde"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Espere mientras se crea la imagen panorámica"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Enfocado"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "No se puede guardar. Memoria insuficiente."
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauty shot"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorámica"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modo de captura"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Movimiento lento"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balance de blancos"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Error de captura"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tiempo de captura superado. Inténtelo de nuevo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "No se puede iniciar la cámara"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "No se puede iniciar la cámara\ndurante la llamada"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Cerrar la cámara en %d segundos"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activar el servicio de ubicación en la configuración para usar una etiqueta de GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pulse el Obturador"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mueve la cámara lentamente hacia donde indica la flecha"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menú no compatible"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "La política de seguridad restringe el uso de la cámara"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Guardado"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nocturno"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detección de rostro"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modo de grabación"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "¿Restablecer configuración?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Detección de sonrisa"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Tarjeta de memoria"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Playa/Nieve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor de exposición"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Error de grabación"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tiempo de captura superado. Comience de nuevo"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Tarjeta de memoria extraída"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "No se puede usar Flash. Batería baja"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Use tecla volumen como"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "La tecla de zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "La tecla de la cámara"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolución de fotos"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolución de videos"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Las ráfagas de imágenes se guardan con una configuración de calidad buena"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Mantenga pulsado el botón de la cámara para tomar una ráfaga de fotos"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Presione la tecla para subir el volumen para tomar una foto. Presione la tecla para bajar el volumen para comenzar a grabar"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Si la captura en ráfaga está activada, presione la tecla subir volumen para capturar una ráfaga de imágenes"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "No mostrar de nuevo"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Consejos"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Mantenga pulsado el ícono, luego arrástrelo para editar la posición del atajo"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Mejor foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Compartir foto"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Animación"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Compartir foto de amigo"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Color otoño"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Guardar como volteada"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memoria insuficiente para el video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Revisar"
+
diff --git a/po/et.po b/po/et.po
new file mode 100755 (executable)
index 0000000..cf93033
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Värinastabilisaator"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automaatne"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Ilu"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Mustvalge"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Keskmestav mõõtmine"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Päevavalgus"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Näo tuvastamine"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Välk"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Kiiskav"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Maatriksmõõtmine"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mõõtmine"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatiiv"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Pole"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Väljas"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Sees"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportree"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Seepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoraam"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Ühene"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Aegluubis"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Hoiundamine"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Ergav"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Juhised"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-i silt"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Püstpaigutus"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Pidu/siseruum"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Päikeseloojang"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Koidik"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Ilutulestik"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Küünlavalgus"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Taustvalgus"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto-fookus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Stseeni režiim"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fookuse režiim"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Välitingimuste nähtavus"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Taimer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efektid"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Muuda otseteid"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automaatne kontrastsus"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Lähtesta"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Seaded"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sarivõte"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Sõnumi piirang"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Kiire liigutus"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Pilves"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoraampiltide loomine nurjus. Proovige hiljem uuesti"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horisont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Palun oodake, kuni panoraami luuakse"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Varjutus"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punktmõõtmine"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Ei saa salvestada. Pole piisavalt mälu"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Iluvõte"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoraam"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Pildistusrežiim"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Aegluubis"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Valge tasakaal"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Tõrge pildistamisel"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Jäädvustamise aeg on ületatud. Alustage uuesti"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kaamerat ei saa käivitada"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Kõne ajal ei saa\nkaamerat käivitada"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Sulge kaamera %d sekundi pärast"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aktiveeri asukohateenus Seadetes, et kasutada GPS-i silti"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Vajutage katiku nuppu"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Liigutage kaamerat aeglaselt noole suunas"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menüüd ei toetata"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Turvalisuse poliis piirab kaamera kasutuse"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Salvestatud"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Rõhtpaigutus"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Öö"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Näo tuvastamine"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Salvestusrežiim"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Lähtestada seaded?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Naeratuse võte"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Mälukaart"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Rand/lumi"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Säritusväärtus"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Eraldusvõime"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Salvestamine nurjus"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Jäädvustamise aeg on lõppenud. Alustage uuesti"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Kohandus"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Töötlemine..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Mälukaart on eemaldatud"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Välku ei saa kasutada. Aku on tühi"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Kasut. helitugevusnuppu:"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Suuminupp"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kaameranupp"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Foto eraldusvõime"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video eraldusvõime"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Sarivõtte piltide salvestamisel kasutatakse head kvaliteeti"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Sarivõtte tegemiseks toksake ja hoidke kaameranuppu"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pildistamiseks vajutage helitugevuse suurendamise nuppu. Salvestamise alustamiseks vajutage helitugevuse vähendamise nuppu"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Kui sarivõte on aktiveeritud, jäädvustatakse helitugevuse suurendamise nupu vajutamisel sarivõte"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ära näita uuesti"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Näpunäited"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Seade"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Otsetee asendi muutmiseks toksake ja hoidke sõrme ikoonil ning seejärel lohistage seda"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Parim foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Jaga võtet"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Välk"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Karikatuur"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Sõbrafoto jagamine"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Sügisvärv"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Salvesta ümberpööratuna"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Video jaoks ei\npiisa mälu"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Eelvaade"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100755 (executable)
index 0000000..c515b9d
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Dardar murrizketa"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Ederra"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Txuri eta beltza"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Zentratuta"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Egun-argia"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Aurpegi detekzioa"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flasha"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluoreszentea"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makroa"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrizea"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Neurketa"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatiboa"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Bat ere ez"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desaktibatuta"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Aktibatuta"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoerretratua"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Bakarra"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Kamera geldoa"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Biltegiratzea"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Goritasunezkoa"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Gida marrak"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS etiketa"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Erretratua"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Kirolak"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/barnekoa"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Ilunabarra"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Egunsentia"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Su artifizialak"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Testua"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Kandelak"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Atzealdeko argia"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Fokatze automatikoa"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Eszena modua"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokatze modua"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Kanpoko \nikuspena"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Tenporizadorea"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efektuak"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editatu lasterbideak"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Kontraste automatikoa"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Berrezarri"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ezarpenak"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Jarraikako ateratzea"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Mezu muga"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Mugimendu azkarra"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Lainotua"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Ezin izan da irudi panoramikorik sortu. Saiatu geroago"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Zerumuga"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Mesedez, itxaron ikuspegia sortu bitartean"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Tonua"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Puntua"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Ezin da gorde. Ez daukazu behar beste memoria"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Edertasun argazkia"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Kliskatze modua"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Kamera geldoa"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Zuri-balantzea"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Ateratzerakoan akatsa"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Kapturatze denbora gainditu da. Hasi berriro"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Ezin da kamera abiarazi"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Ezin da kamera abiarazi\ndeian zehar"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Itxi kamera %d segundo barru"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Gaitu kokapen zerbitzua Ezarpenetan GPS etiketa erabiltzeko"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Sakatu obturadorea"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mugitu kamera poliki geziaren norabidean"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menua ez da bateragarria"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Segurtasun politikak Kameraren erabilera mugatzen du"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Gordeta"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Horizontala"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Gaua"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Aurpegi detekzioa"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Grabaketa modua"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Konfigurazioa berrabiarazi?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Irribarre kliskatzea"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memoria txartela"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Hondartza/Elur."
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Irekidura balioa"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Bereizmena"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Grabaketa errorea"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Kapturatze denbora amaitu da. Hasi berriro"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Pertsonalizatua"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Prozesatzen..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memoria txartela aterata"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Ezin da flasha erabili. Bateria gutxi"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Erab. bol. tekla honela:"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoom tekla"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kamera tekla"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Argazkien bereizmena"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Bideoen bereizmena"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Jarraikako ateratzean egindako argazkiak ona gisa ezarritako kalitateaz gordetzen dira"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Ukitu eta eutsi kamera botoia jarraikako argazkiak ateratzeko"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Sakatu bolumena igotzeko tekla argazkia ateratzeko. Sakatu bolumena jaisteko tekla grabaketa hasteko"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Berehalako ateraldia gaituta badago, bolumena igotzeko tekla sakatzeak berehalako ateraldia egingo du"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ez erakutsi berriro"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Aholkuak"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Gailua"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Sakatu eta eutsi ikonoa, ondoren arrastatu laster-markaren kokapena editatzeko"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Argazkirik onena"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Partekatu argazkia"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flasha"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Marrazki bizidunak"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Lagun argazkiak partekatzea"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Udazkenaren kolorea"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Gorde itzulitako gisa"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ez dago bideoarentzako memoria nahikoa"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Berrikusi"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100755 (executable)
index 0000000..6a81d7a
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Tärinänesto"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automaattinen"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Kauneus"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Mustavalkoinen"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Keskipainotettu"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Päivänvalo"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Kasvontunnistus"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Salama"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Loistevalo"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriisimittaus"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mittaus"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatiivi"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ei mitään"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Pois"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Päällä"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Muotokuva"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Seepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoraama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Yksi"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Hidas liike"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Tallennustila"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Hehkulampun valo"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Suuntaviivat"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-tunniste"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Muotokuva"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Urheilu"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Juhlat/Sisätila"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Auringonlasku"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Aamu"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Ilotulitus"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Teksti"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Kynttilänvalo"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Taustavalo"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automaattinen tarkennus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Ohjelmatila"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Tarkennustila"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Näkyvyys ulkona"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Ajastin"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Tehosteet"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Muokkaa pikavalintoja"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Autom. kontrasti"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Nollaa"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Asetukset"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sarjakuvaus"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Viestirajoitus"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Nopea liike"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Pilvinen"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoraamakuvien muodostaminen epäonnistui. Yritä myöhemmin uudelleen"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horisontti"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Odota, panoraamakuvaa luodaan"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Varjostin"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Pistemittaus"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Tallennus epäonnistui. Muisti ei riitä"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Kaunis kuva"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoraama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Kuvaustila"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Hidas liike"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Valkotasapaino"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Virhe kuvaa otettaessa"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Kuvausaika ylitetty. Aloita alusta"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kameraa ei voi käynnistää"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Kameraa ei voi käyttää puhelun aikana"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Sulje kamera %d sekunnin kuluttua"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Ota sijaintipalvelu Asetukset-kohdassa käyttöön GPS-tunnisteen käyttöä varten"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Paina laukaisinta"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Liikuta kameraa hitaasti nuolen suuntaan"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Valikkoa ei tueta"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Suojauskäytäntö estää kameran käytön"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Tallennettu"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Maisema"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Yö"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Kasvontunnistus"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Tallennustila"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Nollataanko asetukset?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Hymykuvaus"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Muistikortti"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Ranta/lumi"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valotusarvo"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Tarkkuus"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Tallennus epäonnistui"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Kuvausaika on ylitetty. Aloita alusta"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Mukautettu"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Käsitellään..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Muistikortti poistettu"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Flashia ei voi käyttää. Akun virta on vähissä"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Voim.näpp. käyttötapa:"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoomausnäppäin"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kameranäppäin"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Valokuvan tarkkuus"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videon tarkkuus"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Kuvasarjan kuvat tallennetaan Tarkka-asetuksella"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Ota kuvasarja pitämällä kamerapainiketta painettuna"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Ota kuva painamalla äänenvoimakkuuden lisäyspainiketta. Aloita tallennus painamalla äänenvoimakkuuden vähennyspainiketta"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Jos sarjakuvaus otetaan käyttöön, voit ottaa kuvasarjan äänenvoimakkuuden lisäysnäppäintä painamalla"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Älä näytä uudestaan"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Vihjeitä"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Laite"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Paina kuvaketta jonkin aikaa ja vedä sitä sen jälkeen pikakuvakkeen paikan muokkaamiseksi"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Paras valokuva"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Kuvanjako"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Salama"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Sarjakuva"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Kaverien valokuvien jakaminen"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Syksynvärinen"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Tallenna käännettynä"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Muisti ei\nriitä videolle"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Tarkista"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100755 (executable)
index 0000000..a8f98af
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilisateur"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauté"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Noir et blanc"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Mesure pondérée centrale"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Lumière du jour"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Détection des visages"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrice"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mesure"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Négatif"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Aucun"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Unique"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Ralenti"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Stockage"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Grille repère"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Balise GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fête/Intérieur"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Coucher de soleil"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Aube"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Feu d'artifice"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texte"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Chandelles"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Rétroécl."
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofocus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mode scène"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Mode mise au point"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilité extérieure"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Retardateur"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effets"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Modifier les raccourcis"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste auto"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Réinitialiser"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Paramètres"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Rafale"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limite des messages"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Accéléré"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nuageux"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Échec de création des images panoramiques. Essayez plus tard"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Veuillez patienter pendant la création du panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Ombre"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Zone"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Échec de l'enregistrement. Mémoire insuffisante"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauté"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Mode prise de vue"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Ralenti"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Équilibre des blancs"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Erreur de capture"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Délai de prise dépassé. Recommencer"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Impossible de démarrer l'appareil photo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Impossible de lancer l'appareil photo pendant un appel"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "L'appareil photo se fermera dans %d secondes"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activer le service de localisation dans Paramètres pour utiliser la balise GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pressez l'obturateur"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Déplacez lentement l'appareil photo dans le sens de la flèche"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu non pris en charge"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "La politique de sécurité limite l'utilisation de l'appareil photo"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Enregistré"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Paysage"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nuit"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Détection des visages"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Mode d'enregistrement"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Réinitialiser les paramètres ?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Sourire"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Carte mémoire"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plage/Neige"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valeur d'exposition"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Échec de l'enregistrement"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Délai de prise de vue dépassé. Recommencez"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personnaliser"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Traitement…"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Carte mémoire retirée"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Impossible d'utiliser le flash. Pile trop faible"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Util. tche volume comme"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Touche Zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Touche Appareil photo"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Résolution photo"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Résolution vidéo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "La qualité d'enregistrement des photos en rafale est définie sur Bonne"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Touchez longuement le bouton de l'appareil photo pour prendre des photos en rafale"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Appuyez sur le bouton d'augmentation du volume pour prendre une photo. Appuyez sur la touche de réduction du volume pour commencer l'enregistrement"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Si le mode rafale est activé, appuyez sur la touche d'augmentation du volume pour prendre des photos en rafale"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne plus afficher"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Astuces"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Appareil"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Touchez longuement l'icône, puis faites-la glisser pour modifier la position du raccourci"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Meilleure photo"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Partager la photo"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Dessin animé"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Partage de photo d'ami"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Couleur d'automne"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Enregistré comme retourné"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Mémoire insuffisante pour la vidéo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Aperçu"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..d2c6e70
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sec"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sec"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilisateur"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauté"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Noir et blanc"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Mesure pondérée centrale"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Lumière naturelle"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Détect. portrait"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrice"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mesure"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Négatif"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Aucun"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportrait"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Unique"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Mouvement lent"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Stockage"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Guide"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Balise GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrait"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fête/Intérieur"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Coucher de soleil"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Aube"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Feu d'artifice"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texte"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Bougie"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Rétroéclairage"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto focus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mode scène"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Mode mise au point"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilité extérieure"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Retardateur"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effets"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Modifier les raccourcis"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste auto"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Réinitialiser"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Paramètres"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Rafale"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limite pour MMS"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Mouvement rapide"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sec"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nuageux"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Échec de création des images panoramiques. Essayez plus tard"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Veuillez patienter pendant la création du panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Ombre"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Échec de l'enregistrement. Mémoire insuffisante"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Prise de vue améliorée"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Mode de capture"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Mouvement lent"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balance des blancs"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Erreur de capture"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Délai de capture dépassé. Recommencer"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Impossible de démarrer l'appareil photo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Appareil photo non disponible\npendant appel"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Fermer l'appareil photo dans %d secondes"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activer le service de localisation dans Paramètres pour utiliser la balise GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Appuyez sur l'obturateur"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Déplacez lentement l'appareil photo dans le sens de la flèche"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu non pris en charge"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "La politique de sécurité limite l'utilisation de l'appareil photo"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Enregistré"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Paysage"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nuit"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Détect. portrait"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Mode d'enregistrement"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Réinitialiser les paramètres ?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Sourire"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Carte mémoire"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plage/Neige"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valeur d'exposition"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Échec enregistrement"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Temps de capture dépassé. Recommencez"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personnaliser"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "En cours..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Carte mémoire retirée"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Impossible d'utiliser le flash. Batterie trop faible"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Util. tche volume comme"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Touche Zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Touche Appareil photo"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Résolution photo"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Résolution vidéo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "La qualité d'enregistrement des photos en rafale est définie sur Bonne"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Appuyez longuement sur la touche de l'appareil photo pour prendre des photos en rafale"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Appuyez sur la touche d'augmentation du volume pour prendre une photo. Appuyez sur la touche de réduction du volume pour commencer l'enregistrement"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Si le mode rafale est activé, appuyez sur la touche de volume Haut pour prendre des photos en rafale"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne plus afficher"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Astuces"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Périphérique"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Maintenez votre doigt appuyé sur l'icône, puis faites-la glisser pour modifier la position du raccourci"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Meilleures poses"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Partage"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Dessin animé"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Partage de photo d'ami"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Couleur d'automne"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Retourner l'image"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Mémoire vidéo\ninsuffisante"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Compte-rendu"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100755 (executable)
index 0000000..8cc2446
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 soic"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 shoic"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Frith-chrith"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Uath-"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Áilleacht"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Dubh agus bán"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Ualaithe sa lár"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Solas an Lae"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Aimsiú aghaidhe"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Splanc"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluaraiseach"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macra"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Maitrís"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Méadrú"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Claonchló"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Dada"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "As"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Air"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Féin-phortráid"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Dúch cudail"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Lánléargas"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Singil"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Mallghluaisne"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Stóras"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Gealbhruthach"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Treoirlínte"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Clib GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portráid"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Spóirt"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Cóisir/Laistigh"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Luí na gréine"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Éirí na gréine"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Tine ealaíne"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Téacs"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Solas coinnle"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Cúlsolas"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Uathfhocás"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mód radhairc"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Mód fócais"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Infheictheacht lasmuigh"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Amadóir"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Maisíochtaí"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Cuir aicearraí in eagar"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Uathchodarsnacht"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Athshocraigh"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Socruithe"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Seat rúisce"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Teorainn na teachtaireachta"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Mearghluaisne"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 shoic"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Scamallach"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Theip ar íomhánna lánléargais a thógáil. Triail arís ar ball"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Léaslíne"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Fan go fóill agus lánléargas á chruthú"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Scáth"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spota"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Ní féidir sábháil. Easpa cuimhne"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Seat áilleachta"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Lánléargas"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Mód scannánaíochta"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Mallghluaisne"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Leibhéal bán"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Earráid ghafa"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Am gafa sáraithe. Tosaigh arís"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Ní féidir Ceamara a thosú"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Ní féidir Ceamara a thosú le linn glao"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Dún ceamara i gceann %d soicind"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Cumasaigh seirbhís suímh sna Socruithe le clib GPS a úsáid"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Brúigh Comhla"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Bog an ceamara go mall i dtreo na saighde"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Roghchlár gan tacú"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Cuireann an beartas slándála srian ar úsáid an Cheamara"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Sábháilte"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Tírdhreach"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Oíche"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Aimsiú aghaidhe"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Mód taifeadta"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Athshocraigh socruithe?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Seat miongháire"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Cárta cuimhne"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Trá/Sneachta"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Luach nochta"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Taifeach"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Theip ar thaifeadadh"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Am gafa thart. Tosaigh arís"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Saincheaptha"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Ag próiseáil..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Cárta cuimhne bainte"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Ní féidir Splanc a úsáid. Ceallra lag"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Úsáid eochair airde mar"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "An eochair Zúmáil"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "An eochair Ceamara"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Taifeach grianghraf"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Taifeach físeán"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Sábháiltear íomhánna seat pléasctha leis an gcáilíocht socraithe mar mhín"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Brúigh agus coinnigh síos cnaipe an cheamara le seat pléasctha a ghlacadh"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Brúigh an eochair Airde suas le pictiúr a ghlacadh. Brúigh an eochair Airde síos le tosú ar thaifeadadh"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Má tá Seat pléascach cumasaithe, glacfar seat pléascach tríd an eochair airde suas a bhrú"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ná taispeáin arís"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Leideanna"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Gléas"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tapáil agus coinnigh an t-íocón, ansin tarraing é le suíomh an aicearra a athrú"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Grianghraf is fearr"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Comhroinn seat"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Splanc"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartún"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Comhroinnt grianghraf idir chairde"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Dath an fhómhair"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Sábháil mar smeachta"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Easpa cuimhne d'fhíseán"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Athbhreithniú"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100755 (executable)
index 0000000..7cf67ee
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Estabilizador"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Fermosura"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Branco e negro"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Ponderado ao centro"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luz diúrna"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detección de cara"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriz"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Medición"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ningún"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Activada"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoretrato"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Sinxelo"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Cámara lenta"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Almacenamento"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescente"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Pautas"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta de GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Vertical"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Deportes"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/Interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Solpor"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Amencer"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fogos de artificio"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Velas"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Luz de fondo"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Enfoque automático"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Modo escena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Modo de enfoque"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilidade no exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efectos"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atallos"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste automático"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Restablecer"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Axustes"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Refacho"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Límite de mensaxes"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Movemento rápido"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nubrado"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Erro ao crear imaxes panorámicas. Inténteo máis tarde."
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Espere mentres se crea a imaxe panorámica"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punto"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Non se pode gardar. Non hai memoria dabondo."
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Disparo fermoso"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modo disparo"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Cámara lenta"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balance de brancos"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Erro de captura"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Excedeuse o tempo de captura. Iniciar de novo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Non se pode iniciar a Cámara"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Non se pode iniciar a cámara\ndurante unha chamada"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Pecha a cámara dentro de %d segundos"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activa o servizo de situación en Axustes para utilizar a etiqueta de GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pulsar en Obturador"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Move a cámara lentamente cara á dirección da frecha"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menú non admitido"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "A política de seguridade limita o uso da Cámara"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Gardado"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Horizontal"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noite"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detección de cara"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modo de gravación"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Restablecer axustes?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Disparo de sorriso"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Tarxeta de memoria"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Praia/Neve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor de exposición"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Erro de gravación"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Acabouse o tempo de captura. Comeza de novo"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalizado"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Tarxeta de memoria extraída"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Non se pode utilizar o flash. Batería baixa"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Utiliza tecla volume como"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "A tecla de ampliación"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "A tecla da cámara"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolución da foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolución do vídeo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "As imaxes capturadas en refacho gárdanse coa calidade axustada en alta"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Mantén pulsado o botón da cámara para efectuar unha toma en refacho"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pulsa a tecla para subir volume para tomar unha imaxe. Pulsa a tecla de baixar volume para iniciar a gravación"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Se se activan as tomas en refacho, se pulsas a tecla de subir volume, capturarase unha toma en refacho"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Non volver mostrar"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Suxestións"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Mantén tocada a icona e, a continuación, arrástraa para editar a posición do atallo"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Mellor foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Compartir foto"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Animación"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Compartir foto de amigo"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Cor de outono"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Gardar imaxe volteada"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Non hai memoria suficiente para o vídeo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Revisar"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100755 (executable)
index 0000000..a89c377
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 से."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 से."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "एंटी-शेक"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "स्वतः"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "ब्यूटी"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "काला और सफेद"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "सेंटर-वेटिड"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "डेलाइट"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "चेहरा पहचान"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "चमक"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "प्रतिदीप्ति"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "मैक्रो"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "मैट्रिक्स"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "मीटरिंग"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "नकारात्मक"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "कुछ भी नहीं"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "बंद"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "चालू"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "अपना चित्र"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "सेपिया"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "पैनोरमा"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "एकल"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "धीमी गति"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "स्टोरेज"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "उज्‍ज्वल"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "गाइडलाइंस"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "जीपीएस टैग"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "चित्र"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "खेल"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "पार्टी/इंडोर"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "सूर्यास्त"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "डॉन"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "फायरवर्क"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "टेक्स्ट"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "कैंडललाइट"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "बैकलाइट"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "ऑटो फोकस"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "सीन मोड"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "केंद्रित मोड"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "आउटडोर दृश्यता"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "टाइमर"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "प्रभाव"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "शॉर्टकट्स संपादित करें"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "स्वत: कंट्रास्ट"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "रीसेट"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "सेटिंग्स"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "बर्स्ट शॉट"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "सन्देश सीमा"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "तेज़ गति"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 से."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "क्लाउडी"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "विशालदर्शी इमेजेस बनाने में विफल. बाद में कोशिश करें"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "क्षितिज"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "पैनोरमा बनाते समय कृपया प्रतीक्षा करें"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "शेड"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "केंद्र"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "सेव करने में अक्षम। पर्याप्‍त मेमोरी नहीं"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "सौन्दर्य शॉट"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "पैनोरमा"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "शूटिंग मोड"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "धीमी गति"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "ह्वाइट बैलेंस"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "गलती पकड़ें"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "कैप्चर समय सीमा से अधिक हो गया. फिर से शुरू करें"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "कैमरा शुरू करने में अक्षम"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "कॉल के दौरान कैमरा चालू करने में अक्षम"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "%d सेकंडों में कैमरा बंद करें"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS टैग का उपयोग करने के लिए सेटिंग्स में स्थान सेवा सक्षम करें"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "शटर दबाएँ"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "तीर की दिशा में कैमरे को धीरे ले जाएँ"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "मेनू समर्थित नहीं"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "सुरक्षा नीति कैमरा के उपयोग को प्रतिबंधित करती है"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "सुरक्षित किया"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "लैंडस्केप"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "रात्रि"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "चेहरा पहचान"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "रिकॉर्डिंग मोड"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "सेटिंग्स रीसेट करें?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "स्माइल शॉट"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "मेमोरी कार्ड"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "बीच/बर्फ"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "एक्सपोज़र मान"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "रेज़ोल्यूशन"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "रिकॉर्डिंग विफल"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "कैप्‍चर समय समाप्त हो गया। फिर से शुरू करें"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "कस्‍टम"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "प्रोसेस हो रहा है…"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "मेमोरी कार्ड हटाया गया"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "बैटरी कम है, फ्लैश इस्तेमाल करने में असमर्थ।"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "इस रूप में वॉल्यूम कुंजी का उपयोग करें"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "ज़ूम कुंजी"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "कैमरा कुंजी"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "फ़ोटो रिज़ॉल्‍यूशन"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "वीडियो रिज़ॉल्‍यूशन"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "बर्स्ट शॉट्स छवियाँ सर्वश्रेष्ठ गुणवत्ता सेट के साथ सुरक्षित की गई हैं"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "कोर्इ बर्स्‍ट शॉट्स लेने के लिए कैमरा बटन को टैप और होल्ड करें"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "तस्वीर लेने के लिए वॉल्यूम अप कुंजी दबाएँ। रिकॉर्डिंग प्रारंभ करने के लिए वॉल्यूम डाउन कुंजी दबाएँ"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "यदि बर्स्ट शॉट सक्षम किया जाता है, तो वॉल्यूम अप कुंजी को दबाने पर यह बर्स्ट शॉट लेता है"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "दुबारा न दिखाएँ"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "संकेत"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "डिवाइस"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "प्रतीक को टैप और होल्ड करें, फिर शॉर्टकट की स्थिति को संपादित करने के लिए उसे ड्रैग करें"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "सर्वश्रेष्ठ फ़ोटो"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "शॉट साझा करें"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "चमक"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "कार्टून"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "मित्र फ़ोटो साझा करना"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "ऑटम कलर"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "फ़्लि किए गए के रूप में सुरक्षित करें"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "वीडियो के लिए पर्याप्त मेमोरी नहीं"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "समीक्षा"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100755 (executable)
index 0000000..1140efe
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilizacija"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Ljepota"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Crno-bijelo"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centar"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dnevna"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Prepoznavanje lica"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Bljeskalica"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent."
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrica"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mjerenje"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ništa"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Isključi"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Uključi"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sephia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Jedna"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Usporeno"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Spremanje"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Žarulja"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Smjernice"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS oznaka"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Zabava/Interijer"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Zalazak sunca"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Zora"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Vatromet"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Svijeća"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Pozadinsko osvjetljenje"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Auto fokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scene način"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusiranje"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Vidljivost na otvorenom"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Odbrojavanje"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekti"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Uredi prečace"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Auto. kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Poništavanje"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Postavke"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Uzastopno"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Granica poruke"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Brzo kretanje"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Oblačno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Neuspješna izrada panoramskih slika. Pokušajte kasnije"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Pričekajte..."
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sjena"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Točke"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nemoguće spremiti. Nedovoljno memorije"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Ljepota"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Način fotografiranja"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Usporeno"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Korekcija bijele boje"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Greška snimanja"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Prekoračeno vrijeme snimanja. Ponovite"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Nemoguće pokrenuti kameru"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Nemoguće pokrenuti kameru tijekom poziva"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Zatvori kameru u %d sek"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Uključite lokacijsku uslugu u postavkama kako biste koristili GPS oznaku"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pritisnite okidač"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Polako pomičite kameru u smjeru strelice"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meni nepodržan"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Sigurnosne odredbe ograničavaju korištenje fotoaparata"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Spremljeno"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Pejzaž"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noćno"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Prepoznavanje lica"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Način snimanja"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Poništiti postavke?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Osmijeh"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Mem. kartica"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plaža/snijeg"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Vrijednost ekspozicije"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Greška snimanja"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Vrijeme snimanja gotovo. Ponovite"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Procesiranje..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Mem. kartica uklonjena"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Nemoguće koristiti Bljeskalicu. Baterija prazna"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Koristi tipku glasnoće kao"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tipka za zumiranje"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Tipka kamere"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Foto rezolucija"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video rezolucija"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Uzastopne fotografije su spremljenje s kvalitetom postavljenom na “dobra”"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Dodirnite i držite tipku kamere za Uzastopno"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pritisnite tipku za pojačavanje zvuka za snimanje slike. Pritisnite tipku za stišavanje zvuka za pokretanje snimanja"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ako je uključeno Uzastopno, pritiskom na tipku za pojačavanje zvuka napravit ćete uzastopne fotografije"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne prikazuj više"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Savjeti"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Uređaj"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Dodirnite i držite ikonu, zatim je povucite da biste postavili poziciju prečaca"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Najbolja fotografija"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Dijeli snimku"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Bljeskalica"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Strip"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Dijeljenje foto. s prijateljem"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Jesenja boja"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Spremi kao preokrenuto"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Nedovoljna memorija\nza video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Pregled"
+
diff --git a/po/htm2po.py b/po/htm2po.py
new file mode 100755 (executable)
index 0000000..683240e
--- /dev/null
@@ -0,0 +1,97 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import sys, re
+from BeautifulSoup import BeautifulSoup
+
+help = """
+arg 1 : input file
+arg 2 : the locale field which you wanna extract
+arg 3 : output po file
+"""
+
+DESIGN_ID = "Design ID"
+dString = {}
+
+def findindexof( word, tds ):
+       for i, td in enumerate(tds):
+               try:
+                       if td.contents[0]==word:
+                               return i
+               except IndexError:
+                       pass
+       return -1
+
+if __name__=="__main__":
+       if len(sys.argv)>3:
+               in_file = sys.argv[1]
+               locale = sys.argv[2]
+               po_file = sys.argv[3]
+       else:
+               print help
+               sys.exit()
+
+       print 'input file :', in_file
+       print 'locale :', locale
+       print 'po file :', po_file
+
+       f = open( in_file, 'rt' )
+       soup = BeautifulSoup( f.read() )
+       f.close()
+
+       for i, tr in enumerate(soup('tr')):
+               tds = tr('td')
+               if i==0: 
+                       iID = findindexof( DESIGN_ID, tds )
+                       iLocale = findindexof( locale, tds )
+                       print 'index of design id :',iID, ", index of",locale,":", iLocale
+                       if iID<0 or iLocale<0: 
+                               print 'index failed'
+                               sys.exit()
+                       continue
+
+               bPass = True;
+               for j,td in enumerate(tds):
+                       try:
+                               if j==iID: ID = td.contents[0]  
+                               elif j==iLocale: szLocale = td.contents[0]
+                       except IndexError:
+                               bPass = False;
+                               pass
+
+               if bPass: 
+                       dString[ID] = szLocale
+                       #print i, '\t', ID, '\t' ,szLocale
+
+       #modify po file
+       f = open( po_file, 'rt' )
+       po = f.read().decode('utf-8')
+       f.close()
+
+       for k, v in dString.items():
+               #find key
+               msg = 'msgid "'+ k + '"'
+               sp = po.find( msg )
+
+               #if yes, replace
+               if sp>-1:
+                       lines = po.split('\n')
+                       for i, line in enumerate(lines):
+                               if line.find( msg )>-1:
+                                       #replace next line
+                                       print 'replace :',k
+                                       v = v.replace('\r', '')                 #remove linefeed
+                                       v = v.replace('\n ', '\\n') #remove carriage return
+                                       lines[i+1] = 'msgstr "' + v + '"'
+                       po = "\n".join( lines )
+
+               #if no, append
+               #if sp<0:       
+               #       print 'append', k
+               #       po += 'msgid "' + k + '"\n'
+               #       po += 'msgstr "' + v + '"\n\n' 
+
+       newfile = po_file+'.new'
+       f = open( newfile , 'wt' )
+       f.write( po.encode('utf-8') )
+       f. close()
+       print newfile, 'is created'
diff --git a/po/hu.po b/po/hu.po
new file mode 100755 (executable)
index 0000000..57c3164
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 mp"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 mp"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Képstabilizáló"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Szépség"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Fekete-fehér"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Középre súlyozott"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Nappali fény"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Arcészlelés"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Mobilfény"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fénycső"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makró"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Mátrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mérés"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatív"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nincs"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Ki"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Be"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Önarckép"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Szépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Egyszerű"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Lassítás"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Tárhely"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Lámpafény"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Segédvonalak"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-címke"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portré"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Buli/beltér"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Naplemente"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Hajnal"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Tűzijáték"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Szöveg"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Gyertyafény"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Háttérfény"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automatikus fókusz"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Éjszakai mód"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fókuszmód"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Láthatóság külső fényben"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Időzítő"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effektusok"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Ikonok szerkesztése"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatikus kontraszt"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Visszaállítás"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Beállítások"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sorozatfelvétel"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Üzenetkorlát"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Gyors mozgás"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 mp"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Felhős"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nem sikerült panorámaképet kialakítani. Próbálja meg később"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Kis türelmet, a panoráma létrehozása folyamatban van"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Árnyék"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Pontszerű"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nem lehet menteni. Nincs elég memória"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Csinos felvétel"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fénykép mód"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Lassítás"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Fehéregyensúly"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Rögzítési hiba"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Túllépte a rögzítési időt. Kezdje újra"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Nem indítható el a Kamera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Hívás közben a Kamera\nnem indítható el"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "%d másodpercen belül zárja be a kamerát"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS-címke használatához engedélyezze a helymeghatározó szolgáltatást a Beállításokban"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Nyomja le a zárgombot"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Lassan mozgassa a fényképezőt a nyíllal jelzett irányba"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "A menü nincs támogatva"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "A biztonsági irányelv korlátozza a Kamera használatát"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Mentve"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Tájkép"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Éjszakai"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Arcészlelés"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Felvételmód"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Alapbeáll. visszaállítja?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Mosoly felvétele"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memóriakártya"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/hó"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Fényérték"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Felbontás"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "A felvétel nem sikerült"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Lejárt a rögzítési idő. Kezdje újra"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Egyedi"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Feldolgozás folyamatban"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memóriakártya eltávolítva"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Nem használható a mobilfény, mert az akkutöltöttség alacsony"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Hangerőgomb haszn. mint"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoom gomb"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kamera gomb"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fényképfelbontás"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videofelbontás"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "A sorozatfelvételek a beállítás szerint finom minőségben lesznek mentve"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Sorozatfelvétel készítéséhez tartsa ujját a Kamera gombon"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Fényképezéshez nyomja meg a hangosítógombot. Rögzítés indításához nyomja meg a halkítógombot"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Engedélyezett sorozatfelvétel esetén a hangosítógomb megnyomásával sorozatfelvételt készíthet"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne jelenjen meg ismét"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tippek"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Eszköz"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tartsa ujját az ikonon, majd húzza a kívánt helyre a parancsikon pozíciójának szerkesztéséhez"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Legjobb fénykép"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Felvételmegosztás"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Mobilfény"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Rajzfilm"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Fénykép megosztása baráttal"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Őszi színek"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Mentés tükrözve"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Videó számára\nnincs elég memória"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Előnézet"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100755 (executable)
index 0000000..32d263d
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 վրկ"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 վրկ"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Հակացնցումային"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Ավտոմատ"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Հմայք"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Սև ու սպիտակ"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Կենտրոնով"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Օրվա լուսավոր ժամանակը"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Դեմքի ճանաչում"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Բռնկում"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Ֆլուորեսցենտ"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Մակրո"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Մատրիցա"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Պահաժամի չափում"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Բացասական"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ոչինչ"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Անջատված"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Միացված է"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Ինքնադիմանկար"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Սեպիա"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Համայնապատկեր"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Մեկ"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Դանդաղ շարժում"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Պահոց"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Շիկացման լամպ"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Ուղեցույցեր"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS հատկորոշիչ"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Դիմանկար"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Մարզաձևեր"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Խնջույք/ներսում"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Մայրամուտ"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Արևածագ"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Հրավառություն"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Տեքստ"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Մոմի լույս"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Ֆոնային լույս"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Ավտո ֆոկուս"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Տեսարանի ռեժիմ"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Ֆոկուսի ռեժիմ"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Բացօթյա տեսանելիություն"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Ժամանակաչափ"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Էֆեկտներ"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Խմբագրել դյուրանցումները"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Ինքնահակադրականություն"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Զրոյացնել"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Պարամետրեր"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Նկարաշարք"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Հաղորդագրության առավելագույն չափ"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Արագ շարժում"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 վրկ"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Ամպամած"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Համայնապատկերների կառուցումը ձախողվեց: Փորձեք ավելի ուշ"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Հորիզոն"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Սպասե՛ք համայնապատկերի ստեղծման համար"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Երանգ"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Կետ"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Հնարավոր չէ պահպանել: Հիշողությունը բավական չէ"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Գեղեցիկ լուսանկար"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Համայնապատկեր"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Նկարահանման ռեժիմ"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Դանդաղ շարժում"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Սպիտակի հաշվեկշիռ"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Նկարահանման սխալ"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Սևեռման ժամանակը գերազանցված է: Սկսել նորից"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Անհնար է մեկնարկել Խցիկը"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Անհնար է խցիկը միացնել զանգի ընթացքում"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Փակել խցիկը %d վայրկյանից"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Ընձեռել տեղորոշման ծառայություն Դրվածքներում՝ GPS հատկորոշիչն օգտագործելու համար"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Սեղմել Փականակը"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Խցիկը դանդաղ շարժել սլաքի ուղղությամբ"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Ցանկը չի սատարվում"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է Խցիկի օգտագործումը"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Պահպանվեց"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Բնապատկեր"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Գիշեր"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Դեմքի ճանաչում"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Ձայնագրման ռեժիմ"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Զրոյացնե՞լ կայանքները"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Ժպիտի ֆիքսում"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Հիշողության քարտ"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Լողափ/Ձյուն"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Լուսակայման արժեք"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Լուծաչափ"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Ձայնագրումը ձախողվեց"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Նկարահանման ժամանակն ավարտվել է: Սկսեք նորից"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Կարգավորել"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Ընթացքում է"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Հիշողության քարտը հեռացված է"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Անհնար է օգտագործել Լուսաբռնկիչը. մարտկոցը նստած է"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Օգտ. ուժգն. ստեղնը որպես"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Մասշտաբի ստեղնը"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Խցիկի ստեղնը"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Լուսանկարի լուծաչափ"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Տեսանյութի լուծաչափ"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Նկարաշարքի պատկերները պահպանվել են 'բարձրակարգ' որակով"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Նկարաշարք ստեղծելու համար թակեք և պահեք խցիկի կոճակը"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Նկարահանելու համար սեղմեք ձայնի բարձրացման ստեղնը: Տեսագրումը սկսելու համար սեղմեք ձայնի իջեցման ստեղնը"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Եթե նկարաշարքն ընձեռված է, ձայնի բարձրացման ստեղնը սեղմելը նկարաշարք կնկարահանի"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Չցուցադրել կրկին"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Խորհուրդներ"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Սարք"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Թակեք և պահեք պատկերակը, հետո քաշեք՝ դյուրանցման դիրքը խմբագրելու համար"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Լավագույն լուսանկարը"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Լուսանկարի համօգտագործում"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Բռնկում"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Մուլտֆիլմ"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Մտերիմի լուսանկարի համօգտագործում"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Աշնան գույներ"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Պահպանել որպես շրջված"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Նկարահանման համար բավական հիշողություն չկա"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Վերանայում"
+
diff --git a/po/is.po b/po/is.po
new file mode 100755 (executable)
index 0000000..0b99605
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Hristivörn"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Sjálfvirkt"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Fegurð"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Svarthvítt"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Miðjusækni"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dagsbirta"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Greining andlits"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flass"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Flúrljós"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Nærmynd"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Fylki"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mæling"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatíft"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Enginn"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Slökkt"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Kveikt"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Sjálfsmynd"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Brúnlitt"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Víðmynd"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Einn"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Hæghreyfing"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Geymsla"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Venjuleg pera"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Leiðbeiningar"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-merki"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Skammsnið"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Íþróttir"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Partí/innanhúss"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sólarlag"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Dögun"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Flugeldar"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texti"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Kertaljós"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Baklýsing"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Sjálfvirkur fókus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Sviðshamur"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fókus"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Skyggni utandyra"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Niðurteljari"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Brellur"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Breyta flýtileiðum"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Sjálfvirk birtuskil"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Endurstilla"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Stillingar"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Myndaröð"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Takmörk skeyta"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Hröð hreyfing"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Skýjað"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Mistókst að búa til víðmyndir. Reyndu aftur síðar"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Sjóndeildarhringur"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Bíddu á meðan víðmyndin er búin til"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Skuggi"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Miðjupunktur"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Það er of litið minni til að vista"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Fegurðarmynd"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Víðmynd"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Tökustilling"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Hæghreyfing"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Hvítjöfnun"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Tökuvilla"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Myndatökutíminn er liðinn. Byrjaðu aftur"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Mistókst að opna myndavél"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Ekki er hægt að ræsa myndavél\n á meðan símtal stendur yfir"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Loka myndavél eftir %d sekúndur"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Kveiktu á staðsetningarþjónustu í Stillingum til að nota GPS-merki"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Ýttu á Lokari"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Færðu myndavélina hægt í þá átt sem örin bendir"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Valmyndin er óstudd"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Öryggisreglur takmarka notkun myndavélar"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Vistað"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Langsnið"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Næturstilling"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Greining andlits"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Upptaka"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Núllstilla?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Brosmynd"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Minniskort"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strönd/snjór"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Ljósgildi"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Upplausn"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Upptakan mistókst"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tökutíminn er liðinn. Byrjaðu aftur"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Sérstilla"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Vinnsla í gangi..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Minniskort tekið úr"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Ekki hægt að nota flass. Lítil hleðsla"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Nota hljóðst.takkann sem"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Aðdráttarhnappurinn"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Myndavélarhnappurinn"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Myndupplausn"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Upplausn myndskeiða"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Myndir úr raðmyndatöku eru vistaðar í fínum gæðum"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Haltu myndavélarhnappinum inni fyrir raðmyndatöku"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Ýttu á takkann til að hækka hljóðstyrk til að taka mynd. Ýttu á takkann til að lækka hljóðstyrk til að hefja upptöku"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ef kveikt er á raðmyndatöku eru raðmyndir teknar með takkanum til að hækka hljóðstyrk"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ekki birta aftur"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Ábendingar"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Tæki"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Haltu fingri á tákninu og dragðu það til að breyta staðsetningu flýtileiðarinnar"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Besta mynd"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Deila mynd"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flass"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Teiknimynd"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Mynddeiling vina"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Haustlitur"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Vista velt"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ekki er nægt\nminni fyrir vídeó"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Endurskoða"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100755 (executable)
index 0000000..ae63983
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sec"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sec"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Antivibrazione"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automatica"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Estetica"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Bianco e nero"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Calibrato al centro"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luce naturale"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Rilevamento volti"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrice"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Misurazione"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nessuno"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Non attivo"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Attivo"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoritratto"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Seppia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Singola"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Rallentantore"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Memoria"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescente"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Linee guida"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Tag GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Ritratto"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/Interni"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Tramonto"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Alba"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fuochi d'artificio"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Testo"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Luce di candela"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Controluce"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Messa a fuoco automatica"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Modalità scene"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Messa a fuoco"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilità all'aperto"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Timer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effetti"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Modifica collegamenti"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contrasto auto"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Ripristina"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Impostazioni"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Scatto multiplo"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limite messaggi"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Movimento rapido"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sec"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nuvoloso"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Impossibile generare immagini panoramiche. Riprovare più tardi"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Orizzonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Attendere durante la creazione del panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Ombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Impossibile salvare. Memoria insufficiente"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Scatto Beauty"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modalità scatto"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Rallentantore"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Bilanc. bianco"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Errore acquisizione"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tempo per la cattura scaduto. Riprovare"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Impossibile avviare fotocamera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Impossibile avviare fotocamera\ndurante la chiamata"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Chiudi fotocamera tra %d secondi"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Attivate il servizio di localizzazione in Impostazioni per utilizzare il tag GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Premi Otturatore"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Spostare lentamente la fotocamera nella direzione della freccia"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu non supp."
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "I criteri di sicurezza limitano l'uso della fotocamera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Salvato"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Notte"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Rilevamento volti"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modalità registrazione"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Ripristinare le impostazioni?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Scatta con sorriso"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Scheda di memoria"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Spiaggia/Neve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valore esposizione"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Reg. non riuscita"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tempo di acquisizione finito. Ripetere l'operazione"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personale"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Elaborazione..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Scheda di memoria rimossa"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Impossibile utilizzare Flash. Batteria scarica"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Usa il tasto volume come"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tasto Zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Tasto Fotocamera"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Risoluzione foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Risoluzione video"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Le foto a scatto continuo vengono salvate con la qualità impostata come eccellente"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Toccate e tenete premuto il pulsante della fotocamera per una foto a scatto continuo"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Per scattare le foto, premere il tasto di aumento del volume. Per iniziare a registrare, premete il tasto di riduzione del volume"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Se la modalità Scatto continuo è attivata, premete il tasto di aumento del volume per scattare le foto in questa modalità"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Non mostrare più"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Suggerimenti"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Toccate e tenete premuta l'icona, quindi trascinatela per modificare la posizione del collegamento"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Scatto migliore"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Scatto condiviso"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Fumetto"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Condivisione foto amici"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Colore autunnale"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Salva come capovolto"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memoria insufficiente\nper il video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Verifica"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..728f7c9
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10秒"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2秒"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "手振れ補正"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "美肌モード"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "モノクロ"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "中央部重点測光"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "晴天"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "顔検出"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "フラッシュ"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "蛍光灯"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "マクロ"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "多分割測光"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "測光"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "ネガポジ反転"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "なし"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "OFF"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "ON"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "自分撮り"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "セピア"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "パノラマ"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "シングル"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "スローモーション"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "ストレージ"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "白熱灯"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "補助グリッド"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPSタグ"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "ポートレート"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "スポーツ"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "パーティー/室内"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "夕焼け"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "夜明け"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "花火"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "テキスト"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "キャンドル"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "逆光"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "オートフォーカス"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "シーンモード"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "フォーカスモード"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "アウトドアモード"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "タイマー"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "効果"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "ショートカットを編集"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "オートコントラスト"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "リセット"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "連写"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "標準"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "メール添付制限"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "速い"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5秒"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "曇り"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "パノラマ​写真​を​作成​して​います。​後​ほど​お試し​ください"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "水平"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "パノラマを作成しています。お待ちください。"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "影"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "スポット測光"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "保存できません。メモリが不足しています。"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "ビューティショット"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "パノラマ"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "撮影モード"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "スローモーション"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "ホワイトバランス"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "キャプチャ​エラー​です"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "撮影​時間​が​超過​しました。​もう​一度​開始​しますか?"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "カメラを起動できません"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "通話中には、カメラを起動できません。"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "%d秒後にカメラを終了します。"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPSタグを使うには、設定で位置情報サービスを有効にしてください。"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "シャッターをタップしてください。"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "カメラを矢印の方向にゆっくり動かしてください。"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "メニュー未対応"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "カメラの使用は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "保存しました。"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "風景"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "夜景"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "顔検出"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "録画モード"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "設定をリセットしますか?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "スマイル撮影"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "外部SDカード"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "ビーチ/スキー場"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "露出補正"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "録画に失敗しました。"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "キャプチャ時間が終了しました。やり直してください。"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "カスタム"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "処理中..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "外部SDカードが取り外されました。"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "バッテリー不足のため、フラッシュは使用できません。"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "音量キーを使用"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "ズームキー"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "カメラキー"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "写真の解像度"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "動画の解像度"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "連写画像は、ファイン画質で保存されます。"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "連写するには、カメラボタンを長押ししてください。"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "写真を撮影するには音量アップキーを押してください。録画を開始するには音量ダウンキーを押してください。"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "連写が有効な時、音量アップキーを押すと、連写します。"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "今後表示しない"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "ヒント"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "デバイス"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "ショートカットの位置を編集するには、アイコンを長押しした後、ドラッグしてください。"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "ベストフォト"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "共有ショット"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "フラッシュ"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "マンガモード"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "メンバーに画像共有"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "秋色"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "左右反転して保存"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "ビデオの十分なメモリがありません"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "プレビュー表示"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100755 (executable)
index 0000000..9728feb
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 წმ."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 წმ."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "რხევის საწინააღმდეგო"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "ავტომატური"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "სილამაზე"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "შავ-თეთრი"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "ცენტრში გაწონასწორებული"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "დღის განათ."
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "სახის დადგენა"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "ნათება"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "ფლუორესცენტული"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "მაკრო"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "მატრიცა"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "გაზომვა"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "ნეგატივი"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "არცერთი"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "გამორთ."
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "ჩართ."
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "ავტოპორტრეტი"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "სეპია"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "პანორამა"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "ერთიანი"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "მოძრაობის შენელება"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "მეხსიერება"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "კაშკაშა"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "მითითებები"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS იარლიყი"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "პორტრეტი"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "სპორტი"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "წვეულებაზე/შენობაში"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "მზის ჩასვლა"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "ქვემოთ"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "ფეიერვერკი"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "ტექსტი"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "სანთლის შუქი"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "შიდა განათება"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "ავტომატური ფოკუსი"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "სცენის რეჟიმი"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "ფოკუსირების რეჟიმი"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "ხილვადობა შენობის გარეთ"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "თაიმერი"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "ეფექტები"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "სწრაფი ღილაკების შესწორება"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "ავტომატური კონტრასტი"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "გადატვირთვა"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "პარამეტრები"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "იმპულსური გადაღება"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "წერილის შეზღუდვა"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "სწრაფი მოძრაობა"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 წმ."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "ღრუბლიანი"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "პანორამული სურათები ვერ შეიქმნა. ცადეთ მოგვიანებით"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "ჰორიზონტი"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "გთხოვთ, დაელოდოთ პანორამის შექმნას"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "ჩრდილი"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "ლაქა"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "ვერ შეინახავთ. მეხსიერება არ არის საკმარისი"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "ლამაზი გადაღება"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "პანორამა"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "გადაღების რეჟიმი"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "მოძრაობის შენელება"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "თეთრი ბალანსი"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "გადაღების შეცდომა"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "გადაღების დრო გავიდა. ისევ ჩართეთ"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "კამერას ვერ ჩართავთ"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "კამერას ვერ ჩართავთ ზარის დროს"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "კამერა დაიხუროს %d წამში"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "გაააქტიურეთ ადგილობრივი სერვისი პარამეტრებში, რომ გამოიყენოთ GPS იარლიყი"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "დააჭირეთ გადაღების ღილაკს"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "მელა ამოძრავეთ კამერა ისრის მიმართულებით"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "მენიუს არა აქვს მხარდაჭერა"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს კამერის გამოყენებას"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "შენახულია"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "პანორამა"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "ღამე"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "სახის დადგენა"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "ჩაწერის რეჟიმი"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "დაბრუნდეს საწყისი პარამეტრები?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "ღიმილ. გადაღე."
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "მეხსიერების ბარათი"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "სანაპირო/თოვლი"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "ექსპოზიციის ზომა"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "გარჩევადობა"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "შენახვის პროცესი შეუძლებელია"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "გადაღების დრო დასრულდა. ისევ ჩართეთ"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "შერჩეული"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "მუშავდება..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "მეხსიერების ბარათი ამოღებულია"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "ვერ გამოიყენებთ ნათებას. კვების ელემენტი იცლება"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "გამოიყენეთ ხმის ღილაკი"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "მასშტაბის ღილაკი"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "კამერის ღილაკი"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "ფოტოს გარჩევადობა"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "ვიდეოს გარჩევადობა"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "ზედიზედ რამდენიმე სურათის გადაღებისთვის არჩეულია კარგი ხარისხით გადაღება და შენახვა"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "ზედიზედ რამდენიმე კადრის გადასაღებად ხანგრძლივად დააჭირეთ კამერის ღილაკს"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "სურათის გადასაღებად დააჭირეთ ხმის აწევის ღილაკს. ჩაწერის დასაწყებად დააჭირეთ ხმის დაწევის ღილაკს"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "თუ გააქტიურებულია ზედიზედ რამდენიმე კადრის გადაღება, ხმის აწევის ღილაკზე დაჭერით გადაიღებთ ზედიზედ რამდენიმე სურათს"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "აღარ მაჩვენო"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "მინიშნებები"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "მოწყობილობა"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "ხანგრძლივად შეეხეთ ხატულას, შემდეგ კი გადაიტანეთ იგი ღილაკის ადგილის შესაცვლელად"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "საუკეთესო ფოტო"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "სურათის გადაღების გაზიარება"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "ნათება"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "მულტფილმი"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "მეგობრის ფოტოს გაზიარება"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "შემოდგომის ფერი"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "გადაბრუნებული ფორმით შენახვა"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "მეხსიერება არ არის საკმარისი\nვიდეოსათვის"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "დათვალიერება"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100755 (executable)
index 0000000..44ef207
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 сек"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 сек"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Көріністі тұрақтандыру"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Әдемілік"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Қара және ақ"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Орталықтанған"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Күндізгі жарық"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Бетті көрсету"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Жарық"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Флуоресцентті"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Maкро"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Матрица"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Өлшеуіш"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Негатив"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Өшірілген"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Өшірілген"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Қосылған"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Авто портрет"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Сепия"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Жалғыз өзі"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Баяу қозғалыс"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Сақтау орны"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Қыздыру шамы"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Тор"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS тегі"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Портрет"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Спорт"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Кеш/Іште"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Күннің батуы"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Анық көріну"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Фейерверк"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Мәтінді"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Шам көрінісі"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Жарық"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Автофокус"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Окиға"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Фокус режимі"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Сырттан көріну мүмкіндігі"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Таймер"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Эффектілер"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Тез кіру ретін өзгерту"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Авто контраст"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Алып тастау"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Қондырғ-р"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Пакеттік түсіру"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Хабар шектеуі"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Жылдам қимылдау"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 сек"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Бұлтты"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Панорамалық суреттер жасай алмады. Әрекетті кейінірек қайталаңыз"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Панорама жасалып жатқанда күте тұрыңыз"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Көлеңке"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Нүкте"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Сақтауға мүмкіндік жоқ. Жад жеткіліксіз"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Әдемі түсірілім"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Түсірілім режимі"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Баяу қозғалыс"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Ақ баланс"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Суретке түсіру қатесі"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Суретке түсіру уақытынан асып кетті. Қайтадан бастау"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Камераны қосу мүмкін емес"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Камераны ашу мүмкін емес\nқоңырау шалу кезінде"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Камераны %d секундтан кейін жабу"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS тегін пайдалану үшін Параметрлер ішіндегі орын қызметін қосыңыз"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "'Суретке түсіру' пернесін басыңыз"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Камераны көрсеткі бағытымен баяу жылжытыңыз"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Менюде қолданылмайды"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Қауіпсіздік саясаты камера пайдаланылуын шектейді"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Сақталған"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Табиғат көрінісі"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Түн"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Бетті көрсету"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Жазу режимі"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Реттегіштерді қосасыз ба?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Күлімсіреу суреті"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Жад картасы"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Жағажай/Қар"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Экспозиция мәні"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Шешім"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Жазу үзіліп кетті"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Түсіру уақыты бітті. Қайтадан бастаңыз"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Әдеттегі"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Өңделуде..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Жад картасы алып тасталды"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Жарқылдақты пайдалану мүмкін емес. Батарея заряды аз"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Дыбыс қат. пер. пайдалану"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Үлк. не кішірейту түймесі"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Камера түймесі"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Фото ажыратымдылығы"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Бейне ажыратымдылығы"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Пакеттік түсірілім кескіндері орнатылған сапада сақталды"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Пакеттік түсірілім жасау үшін 'Камера' түймесін басып тұрыңыз"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Суретке түсіру үшін дыбыс қаттылығы пернесінің жоғарғы жағын басыңыз. Жазуды бастау үшін дыбыс қаттылығы пернесінің төменгі жағын басыңыз"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Пакеттік түсіру қосылған болса, дыбыс деңгейін арттыру пернесін басу пакеттік түсірілімді жасайды"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Қайта көрсетпеңіз"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Кеңестер"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Құрылғы"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Белгішені басып тұрып, оның орнын өңдеу үшін сүйретіңіз"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Ең жақсы фотосурет"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Түсіруді бөлісу"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Жарық"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Мультибейне"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Жолдас фотосуретін бөлісу"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Күзгі түсті"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Аударылған етіп сақтау"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Видео үшін жеткілікт\nжад жоқ"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Қарап шығу"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..b80ebb8
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10초"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2초"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "손떨림 보정"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "자동"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "뷰티"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "흑백"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "중앙 측광"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "태양광"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "얼굴 인식"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "플래시"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "형광등"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "접사"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "다분할"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "측광"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "반전"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "없음"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "끄기"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "켜기"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "셀프촬영"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "세피아"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "파노라마"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "일반"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "슬로우 모션"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "저장소"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "백열등"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "안내선"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS 태그"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "인물"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "스포츠"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "파티/실내"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "석양"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "새벽"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "불꽃놀이"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "문자"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "촛불"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "역광"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "자동 초점"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "장면 모드"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "초점 모드"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "야외 자동 밝기 조절"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "타이머"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "효과"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "바로가기 편집"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "자동 대비"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "초기화"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "설정"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "버스트 샷"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "일반"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "메시지 제한"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "패스트 모션"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5초"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "흐린날"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "파노라마 사진을 생성하지 못하였습니다. 잠시 후 다시 시도하세요"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "수평선"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "파노라마 사진 생성 중... 잠시만 기다리세요."
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "그늘"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "스팟"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "저장할 수 없습니다. 메모리가 부족합니다"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "뷰티 샷"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "파노라마"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "촬영 모드"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "슬로우 모션"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "화이트밸런스"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "촬영 오류가 발생하였습니다"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "촬영 시간이 초과되었습니다. 다시 시작하세요"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "카메라를 실행할 수 없습니다"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "통화 중에는 카메라를 실행할 수 없습니다"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "카메라가 %d초 후에 종료됩니다"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS 태그를 사용하려면 [설정]에서 위치 서비스를 실행하세요"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "셔터 버튼을 누르세요"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "화살표 방향을 따라 카메라를 천천히 움직이세요"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "메뉴가 없습니다"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "보안 정책에 따라 카메라 사용이 제한됩니다"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "저장되었습니다"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "풍경"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "야간"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "얼굴 인식"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "촬영 모드"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "초기화할까요?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "스마일"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "메모리 카드"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "해변/설경"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "노출"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "녹화할 수 없습니다"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "촬영 시간이 초과되었습니다. 다시 시작하세요"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "사용자 설정"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "처리 중..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "메모리 카드가 제거되었습니다"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "배터리가 부족하여 플래시를 사용할 수 없습니다"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "음량 버튼을 다음으로 설정"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "줌 버튼"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "카메라 버튼"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "사진 해상도"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "동영상 해상도"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "버스트 샷 이미지가 고품질로 저장됩니다"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "버스트 샷을 촬영하려면 카메라 버튼을 길게 누르세요"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "음량 상 버튼을 누르면 사진이 촬영됩니다. 음량 하 버튼을 누르면 녹화가 시작됩니다"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "버스트 샷이 설정된 경우, 음량 상 버튼을 누르면 버스트 샷으로 촬영됩니다"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "다시 표시 안 함"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "도움말"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "디바이스"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "아이콘을 길게 누른 후 드래그하여 바로가기 위치를 편집하세요"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "베스트 포토"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "공유 촬영"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "플래시"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "만화"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "얼굴 인식 사진 공유"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "가을 풍경"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "좌우반전 저장"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "메모리가 부족합니다"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "리뷰"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100755 (executable)
index 0000000..82e59ba
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "“Anti-Shake” funkcija"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automatinis"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Grožis"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Nespalvotas"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centruotas"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dienos šviesa"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Veido aptikimas"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Blykstė"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescentinis"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrica"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Matavimas"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatyvas"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nėra"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Išjungti"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Įjungti"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportretas"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Tamsiai rusvas"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Vienas"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Sulėtintai"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Saugykla"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Kaitinamoji lempa"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Instrukcijos"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS žymėjimas"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portretas"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sportas"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Vakarėlis / viduje"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Saulėlydis"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Aušra"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fejerverkai"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekstas"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Žvakės šviesa"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Foninis apšvietimas"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automatinis fokusavimas"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scenos režimas"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusavimo režimas"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Matomumas lauke"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Laikmatis"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efektai"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Redaguoti nuorodas"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatinis kontrastas"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Nustatymas iš naujo"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Nustat."
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Nepertrauk. fotogr."
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Žinutės riba"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Greitas judesys"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Debesuota"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nepavyko sukurti panoraminių vaizdų. Bandykite vėliau"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizontas"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Palaukite kol kuriama panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Šešėlis"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Taškas"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Negalima įrašyti. Nepakanka atminties"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Retušuotas portretas"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fotografavimo režimas"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Sulėtintai"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balt. sp. bal."
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Įrašymo klaida"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Viršytas fotografavimo laikas. Pradėti dar kartą"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Neįmanoma paleisti fotoaparato"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Pokalbio metu\nfotoaparato įjungti negalima"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Uždarykite fotoaparatą po %d sek."
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Nustatymuose įjunkite buvimo vietos paslaugą, kad galėtumėte naudotis GPS žymėjimo funkcija"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Paspauskite užraktą"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Judinkite fotoaparatą iš lėto rodyklės kryptimi"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meniu funkcija nepalaikoma"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Saugos strategija riboja naudojimąsi fotoaparatu"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Išsaugota"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Peizažas"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Naktis"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Veido aptikimas"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Įrašymo režimas"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Iš naujo nustatyti nustatymus?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Šypsenos fot."
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Atminties kortelė"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Pliaž./Snieg."
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Ekspozicijos vertė"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Raiška"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Įrašyti nepavyko"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Baigėsi fotografavimo laikas. Pradėti dar kartą"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Pasirinktinis"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Apdorojama..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Atminties kortelė išimta"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Negalima naudoti blykstės. Senka baterija"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Naud. garsumo mygt. kaip"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Mastelio keitimo mygtukas"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Fotoaparato mygtukas"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Nuotraukos skyra"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Vaizdo įrašo skyra"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Išsaugant nepertraukiamai fotografuotų vaizdų kadrus nustatoma normali kokybė"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Bakstelėkite ir palaikykite fotoaparato mygtuką norėdami fotografuoti nepertraukiamai"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Norėdami fotografuoti spauskite garso didinimo mygtuką. Jei norite pradėti įrašymą, spauskite garso mažinimo mygtuką"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Jei įjungtas nepertraukiamas fotografavimas, nuspaudus garsumo padidinimo mygtuką bus galima nepertraukiamai fotografuoti kadrus"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Daugiau nerodyti"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Patarimai"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Įrenginys"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Bakstelėkite ir laikykite piktogramą, tada vilkite ją, jei norite koreguoti trumpinio vietą"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Geriausia nuotrauka"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Nuotraukų bendrinimas"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Blykstė"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Animacija"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Bičiulio nuotraukos bendrinimas"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Rudens spalva"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Išsaugoti kaip apverstą"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Nepakanka\natminties vaizd. įr."
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Peržiūrėti"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100755 (executable)
index 0000000..3ef49b6
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Prettriecienu aizsardzība"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automātiski"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Skaistums"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Melnbalts"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centrēts"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dienasgaisma"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Sejas noteikšana"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Zibspuldze"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Dienasgaismas lampa"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrica"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mērīšana"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatīvs"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Neviens"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Izslēgt"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Ieslēgt"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Pašportrets"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sēpija"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorāma"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Viens"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Lēna kustība"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Krātuve"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Kvēlspuldze"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Instrukcija"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS atzīme"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrets"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sports"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Viesības/Iekštelpa"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Saulriets"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Rītausma"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Uguņošana"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Teksts"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Sveču gaisma"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Apgaismojums"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automātiskā fokusēšana"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Ainavas režīms"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusa režīms"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Pārskatāmība āra apstākļos"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Taimeris"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekti"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Rediģēt īsceļus"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automātiskais kontrasts"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Atiestatīt"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Iestatījumi"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sērijveida foto"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Parasts"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Ziņu ierobežojums"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Ātra kustība"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Mākoņains"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Neizdevās izveidot panorāmas attēlus. Mēģiniet vēlāk"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonts"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Lūdzu uzgaidiet, kamēr tiek veidots panorāmas attēls"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Nokrāsa"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punkts"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nevar saglabāt. Nepietiek atmiņas"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Ādas retušēšana"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorāma"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fotografēšanas režīms"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Lēna kustība"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Baltā balanss"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Tvēruma kļūda"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Pārsniegts uzņemšanas laiks. Sāciet vēlreiz"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Nevar aktivizēt kameru"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Zvana laikā nevar\nstartēt kameru"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Pēc %d sekundēm aizveriet kameru"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Lai izmantotu GPS atzīmi, sadaļā Iestatījumi aktivizējiet atrašanās vietas pakalpojumu"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Nospiest aizslēgu"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Lēnām pārvietojiet fotokameru bultiņas virzienā"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Neatbalstīta izvēlne"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Drošības politika ierobežo kameras lietošanu"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Saglabāts"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Ainava"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nakts"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Sejas noteikšana"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Ierakstīšanas režīms"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Vai atjaunot iestatījumus?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smaidošs uzņ."
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Atmiņas karte"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Pludmale/Sniegs"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Ekspozīcijas vērtība"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Izšķirtspēja"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Ierakstīšana neizdevās"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Uzņemšanas laiks ir beidzies. Sāciet vēlreiz"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Pielāgot"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Notiek apstrāde..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Atmiņas karte izņemta"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Neiespējami lietot zibspuldzi. Zems akumulatora līmenis"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Lietot skaļ.reg.taust.kā"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tālummaiņas taustiņš"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kameras taustiņš"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoatt. izšķirtsp."
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video izšķirtspēja"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Sērijveida fotoattēli tiks saglabāti iestatītajā labas kvalitātes režīmā"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Lai uzņemtu sērijveida fotoattēlus, pieskarieties kameras pogai un turiet to"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Lai uzņemtu attēlu, nospiediet skaļuma palielināšanas taustiņu. Lai sāktu ierakstīšanu, nospiediet skaļuma samazināšanas taustiņu"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ja ir aktivizēts sērijveida foto, nospiežot skaļuma palielināšanas taustiņu, tiks uzņemts sērijveida foto"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Nerādīt vēlreiz"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Padomi"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Ierīce"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Pieskarieties ikonai un turiet, pēc tam velciet to, lai rediģētu īsceļu novietojumu"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Labākais fotoattēls"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Kopīgot fotoattēlu"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Zibspuldze"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Karikatūra"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Draugu fotoattēlu kopīgošana"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Rudens krāsa"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Saglabāt kā apvērstu"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Video nepietiek atmiņas"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Pārskatīt"
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100755 (executable)
index 0000000..5d61a51
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 сек."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 сек."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Стабилизатор"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Автоматски"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Убавина"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Црно-бело"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Центрирано"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Дневна светлина"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Откривање лица"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Блиц"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Флуоресцентно"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Макро"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Матрична снимка"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Мерење"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Негатив"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ништо"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Исклучено"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Вклучено"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Автопортрет"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Сипа"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Единечен"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Бавно движење"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Меморија"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Светло од сијалица"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Со водилки"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Ознака GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Исправено"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Спортови"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Забава/Затворен простор"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Зајдисонце"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Мугри"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Огномет"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Текст"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Светло на свеќи"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Осветлување"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Автоматско изострување"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Екрански режим"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Начин на фокусирање"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Видливост на отворено"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Тајмер"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Ефекти"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Измени кратенки"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Автоматски контраст"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Ресетирај"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Опции"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Рафално сликање"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Ограничување за пораки"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Брзо движење"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 сек."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Облачно"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Не можеше да се направат панорамски слики. Обидете се подоцна"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Хоризонт"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Почекајте додека се прави панорамата"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Сенка"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Точка"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Не може да се сочува. Нема доволно меморија"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Разубавена фотографија"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Режим за сликање"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Бавно движење"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Баланс на бело"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Грешка при снимањето"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Надминато е времето за фотографирање. Почнете од почеток"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Не може да се активира камерата"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Не може да се вклучи фотоапаратот за време на повик"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Затвори камера за %d секунди"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Вклучете ја услугата за локација во Опции за да користите ознаки GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Притиснете го копчето за сликање"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Движете го фотоапаратот полека во насоката на стрелката"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Менито не е поддржано"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Политиката на безбедност го ограничува користењето камера"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Меморирано"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Пејзажно"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Ноќе"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Откривање лица"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Режим за снимање"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Ресетирај го нагодувањето?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Сликање насмевка"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Мемориска картичка"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Плажа/Снег"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Вредност на експозиција"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Резолуција"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Снимањето не успеа"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Времето за фотографирање заврши. Почнете одново"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Одредено"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Обработување..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Мемориската картичка е извадена"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Не може да се користи блицот. Батеријата е слаба"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Кор.копче за јач. како..."
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Копчето за зум"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Копчето за камера"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Фото резолуција"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Видео резолуција"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Сликите од рафалното сликање се сочувани со квалитет поставен како фин"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Држете го копчето на камерата за рафално сликање"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Притиснете го копчето за погласно за да сликате. Притиснете го копчето за потивко за да почнете да снимате"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ако е вклучено рафално сликање, со притискање на копчето за погласно се слика рафално"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Не прикажувај веќе"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Совети"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Уред"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Допрете и држете ја иконата, па одвлечете ја за да ја измените положбата на кратенката"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Најдобра фотографија"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Споделување снимка"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Блиц"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Цртан"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Другарско делење фотки"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Есенска боја"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Сочувај како превртено"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Нема доволно меморија\nза видео-записи"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Ревизија"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100755 (executable)
index 0000000..4db4eea
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Bildestabilisator"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Skjønnhet"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Svart/hvitt"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Sentrert"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dagslys"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Ansikts-gjenkjenning"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Fotolys"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescerende"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrise"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Lysmåler"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ingen"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "På"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Selvportrett"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Enkel"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Sakte film"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Hvitglødende"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Hjelpelinjer"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-tagg"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portrett"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fest/innendørs"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Solnedgang"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Soloppgang"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fyrverkeri"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Stearinlys"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Bakgrunnslys"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scenemodus"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusmodus"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Synlighet utendørs"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Selvutløser"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effekter"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Rediger snarveier"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Autokontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Nullstilling"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Innstillinger"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Bildeserie"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Meldingsgrense"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Rask bevegelse"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Overskyet"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Kunne ikke opprette panoramiske bilder. Prøv igjen senere"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horisont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Vent mens panorama opprettes"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Skygge"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Kan ikke lagre. Ikke nok minne"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Skjønnhetsbilde"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Bildemodus"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Sakte film"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Hvitbalanse"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Opptaksfeil"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Opptakstid oversteget. Start på nytt"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kan ikke starte kamera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Kan ikke starte kamera\nunder en samtale"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Lukk kameraet om %d sekunder"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aktiver posisjonstjeneste i Innstillinger for å bruke GPS-tagg"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Trykk på Lukker"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Beveg kameraet sakte i pilretningen"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meny ikke støttet"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Sikkerhetspolicy begrenser bruk av kamera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Lagret"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landskap"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Natt"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Ansikts-gjenkjenning"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Opptaksmodus"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Nullstille innstillinger?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smilebilde"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Minnekort"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/snø"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Ekspon.verdi"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Oppløsning"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Innspillingen mislyktes"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Opptakstid er over. Start på nytt"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Egendefinert"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Behandler..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Minnekort fjernet"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Kan ikke bruke fotolys. Batterinivået for lavt"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Bruk volumtasten som"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoomtasten"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kameratasten"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Bildeoppløsning"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videooppløsning"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Bilder i bildeserier lagres med kvalitet angitt som fin"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Trykk på og hold kameraknappen for å ta seriebilder"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Trykk på volum opp-tasten for å ta et bilde. Trykk på volum ned-tasten for å starte et opptak"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Hvis bildeserie er aktivert, startes en bildeserie når du trykker på volum opp-tasten"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ikke vis igjen"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Enhet"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Trykk på og hold ikonet og dra det for å redigere posisjonen til snarveien"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Beste bilde"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Del bilde"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Fotolys"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Tegnefilm"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Vennebildedeling"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Høstfarge"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Lagre som speilvendt"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ikke nok\nminne for video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Gjennomgang"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..7902d0b
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sec."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sec."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-trilling"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automatisch"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beauty shot"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Zwart-wit"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Nadruk centrum"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Daglicht"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Gezicht detecteren"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flitser"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "TL-verlichting"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrix"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Meting"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatief"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Geen"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Uit"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Aan"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Zelfportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Eén"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Opslag"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Kunstlicht"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Richtlijnen"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-tag"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Feestje/binnenshuis"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Zonsondergang"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Dageraad"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Vuurwerk"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Kaarslicht"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Verlichting"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofocus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scène modus"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Scherpstellen"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Zichtbaarheid buiten"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Timer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effecten"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Sneltoetsen wijzigen"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatisch contrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Resetten"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Instellingen"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Continu-opname"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Berichtlimiet"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Snelle beweging"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sec."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Bewolkt"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Kan geen panoramafoto's maken. Probeer het later opnieuw"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizon"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Panorama-opname wordt gemaakt. Even geduld..."
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Schaduw"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spotmeting"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Kan niet opslaan. Onvoldoende geheugen"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Beauty-shot"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fotostand"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Witbalans"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Fout bij maken foto"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Opnametijd overschreden. Begin opnieuw"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kan camera niet starten"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Kan camera tijdens\noproep niet starten"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Sluit camera binnen %d seconden"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Locatieservice inschakelen in Instellingen om GPS-tag te gebruiken"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Druk sluiter"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Beweeg camera langzaam in richting van pijl"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu niet ondersteund"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Gebruik van camera beperkt door beveiligingsbeleid"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Opgeslagen"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landschap"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Nacht"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Gezicht detecteren"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Videostand"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Instellingen resetten?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Smile shot"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Geheugenkaart"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/Sneeuw"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Belichtingswaarde"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolutie"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Opname mislukt"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Opnametijd is afgelopen. Begin opnieuw"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Aangepast"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Verwerken..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Geheugenkaart verwijderd"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Kan flitser niet gebruiken. Batterij bijna leeg"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Volumetoets gebruiken als"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "De zoomtoets"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "De cameratoets"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoresolutie"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videoresolutie"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Continu-opnamen worden opgeslagen met de kwaliteit fijn"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tik en houd cameraknop vast om een continu-opname te maken"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Druk op de volume omhoog-toets om een foto te maken. Druk op de volume omlaag-toets om te beginnen met opnemen"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Als continu-opname is ingeschakeld, kunt u een continu-opname starten door op de toets volume omhoog te drukken"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Niet meer tonen"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Apparaat"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tik op het pictogram en houd het vast, en sleep het om de positie van de sneltoets te bewerken"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Beste foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Opname delen"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flitser"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Cartoon"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Foto delen met vrienden"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Herfstkleur"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Omgekeerd opslaan"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Onvoldoende\ngeheugen voor video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Overzicht"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100755 (executable)
index 0000000..8b80f56
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilizacja obrazu"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automatyczny"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Upiększanie"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Czarno-białe"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centralnie-ważony"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Słonecznie"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detekcja twarzy"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flesz"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Jarzeniowe"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrycowy"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Pomiar"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatyw"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Brak"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Wył."
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Wł."
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Jedno zdjęcie"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Powolny ruch"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Domyślna pamięć"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Żarowe"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Linie pomocnicze"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etykieta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "W pomieszczeniu"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Zachód słońca"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Świt"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fajerwerki"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Światło świecy"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Pod słońce"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Wł."
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Tryb scenerii"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Auto Focus"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Ekstra jasność wyśw."
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Samowyzwalacz"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekty"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Edytuj skróty"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Kontrast automatyczny"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Ust.fabryczne"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ustawienia"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Zdjęcia seryjne"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normalna"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limit wiadomości"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Szybki ruch"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Pochmurno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nie można utworzyć obrazów panoramicznych. Spróbuj później"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horyzont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Zaczekaj na utworzenie panoramy"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "W cieniu"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punktowy"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nie można zapisać. Za mało pamięci"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Upiększanie"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "Lokalizacja"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Tryb fotografowania"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Powolny ruch"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balans bieli"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Błąd przechwytywania"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Przekroczono czas przechwytywania. Rozpocznij ponownie"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Nie można uruchomić aparatu"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "W trakcie połączenia\nnie można uruchomić aparatu"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Zamknij aparat za %d s"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aby użyć etykiety GPS, włącz usługę lokalizacji"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Naciśnij spust migawki"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Przesuń powoli aparat w kierunku wskazywanym przez strzałkę"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu nieobsługiwane"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Zasady zabezpieczeń ograniczają użycie aparatu"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Zapisano"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Pocztówka"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Tryb nocny"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detekcja twarzy"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Tryb nagrywania"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Wyzerować ustawienia?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Detekcja uśmiechu"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Karta pamięci"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plaża/śnieg"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Wartość ekspozycji"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rozdzielczość"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Błąd nagrywania"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Upłynął czas przechwytywania. Rozpocznij ponownie"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Niestand."
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Przetwarzanie..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Wyjęto kartę pamięci"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Nie można użyć lampy flesz. Niski poziom baterii"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Użyj klaw. głośności jako"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Klawisz powiększania"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Klawisz aparatu"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Rozdzielczość zdjęć"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Rozdzielczość wideo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Zdjęcia seryjne wykonane są zapisywane w jakości dobrej"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Dotknij i przytrzymaj przycisk aparatu, aby zrobić zdjęcie seryjne"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Naciśnij klawisz zwiększania głośności, aby zrobić zdjęcie. Naciśnij klawisz zmniejszania głośności, aby rozpocząć nagrywanie"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Przy włączonym trybie burst naciśnięcie klawisza zwiększania głośności powoduje zrobienie zdjęcia w tym trybie"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Nie wyświetlaj ponownie"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Wskazówki"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Urządzenie"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Aby zmieniać położenie skrótów, dotknij ikony, przytrzymaj ją, a następnie przeciągnij"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Najlepsze zdjęcie"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Udostępnianie zdjęć"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flesz"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Kreskówka"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Udost. zdjęć znajomym"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Kolor jesieni"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Zapisz odwrócony"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Za mało\npamięci dla filmu"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Podgląd zdjęcia"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100755 (executable)
index 0000000..ca45f04
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 seg"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 seg"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-Vibração"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beleza"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Preto e branco"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centro ponderado"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luz do dia"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detector facial"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriz"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Medição"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nenhum"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desativado"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Ativado"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Auto-retrato"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Único"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Movimento lento"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Armazenamento"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Azulado"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Guias"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Retrato"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Esportes"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/Casa"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Pôr-do-sol"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Amanhecer"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fogos de artifício"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Luz de velas"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Luz de fundo"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Foco automático"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Disparo"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Foco"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilidade exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efeitos"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atalhos"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste automático"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Zerar"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Configurações"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Contínuo"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limite MMS"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Movimento rápido"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 seg"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nublado"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Falha ao construir imagens panorâmicas. Tente mais tarde"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Aguarde enquanto está sendo criado panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sombra"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Ponto"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Impossível salvar. Memória insuficiente"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Disparo de beleza"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modo de disparo"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Movimento lento"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Controle do branco"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Erro de captura"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tempo de captura excedido. Inicie novamente"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Impossível iniciar câmera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Impossível iniciar a câmera\ndurante chamadas"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Fechar câmera em %d segundos"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Permitir nas Configurações que o serviço de localização use as marcas de GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pressione a tecla Câmera"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mova a câmera lentamente na direção da seta"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu não suportado"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "A política de segurança restringe a utilização da Câmera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Salvo"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Paisagem"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noturno"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detector facial"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modo de gravação"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Zerar configurações?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Detector de sorriso"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Cartão de memória"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Praia/Neve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor de exposição"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Erro de gravação"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tempo de captura terminou. Inicie novamente"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Processando…"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Cartão de memória removido"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Impossível usar o Flash. Bateria fraca"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Usar a tecla de vol. como"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "A tecla de zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "A tecla da câmera"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolução de foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolução de vídeo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Imagens de disparos em sequência são salvas com a qualidade definida como fina"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Mantenha pressionado o botão da câmera para tirar uma sequência de fotos"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pressione a tecla de aumento de volume para tirar uma foto. Pressione a tecla de abaixar volume para iniciar a gravação"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Se o disparo contínuo estiver ativado, pressionar a tecla para aumentar o volume irá acionar um disparo contínuo"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Não mostrar novamente"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Dicas"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Mantenha pressionado o ícone, arrastando-o em seguida para editar a posição do atalho"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Melhor foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Compartilhar foto"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Caricatura"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Comp. foto de amigo"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Cor de outono"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Salvar como invertida"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memória\ninsuficiente para vídeo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Rever"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..de0c618
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 segs."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 segs."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-vibrações"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Beleza"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Preto e branco"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Medido ao centro"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Luz solar"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detecção de rosto"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescente"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matriz"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Medição"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativo"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nenhuma"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Desligar"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Ligar"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Auto-retrato"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Único"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Câmara lenta"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Armazenamento"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescente"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Directrizes"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etiqueta GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Retrato"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Desporto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Festa/Interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Pôr do sol"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Amanhecer"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fogo de artifício"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Texto"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Luz de velas"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Luz de fundo"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Focagem automática"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Modo de cena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Modo de focagem"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Visibilidade exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizador"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efeitos"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atalhos"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contraste automático"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Repor"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Definições"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Disparos contínuos"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "MMS"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Movimento rápido"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 segs."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Nublado"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Falha ao construir imagens panorâmicas. Tente mais tarde"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizonte"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Aguarde enquanto está a ser criado panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Sombreado"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Ponto"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Impossível guardar. Memória insuficiente"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Disparo de beleza"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Modo de disparo"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Câmara lenta"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Equilíbrio brancos"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Erro de captura"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tempo de captura excedido. Inicie novamente"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Impossível iniciar câmara"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Impossível iniciar a câmara\ndurante chamadas"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Fechar a câmara dentro de %d segundos"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activar o serviço de localização em Definições para utilizar etiqueta GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Premir obturador"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mova a câmara lentamente na direcção da seta"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu não suportado"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "A política de segurança restringe a utilização da Câmara"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Guardado"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Paisagem"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noite"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detecção de rosto"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Modo de gravação"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Repor definições?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Disp. sorriso"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Cartão de memória"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Praia/Neve"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valor de exposição"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Falha ao gravar"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tempo de captura terminou. Inicie novamente"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "A processar..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Cartão de memória removido"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Bateria fraca, não é possível utilizar o flash"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Usar tecla de volume como"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "A tecla de zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "A tecla da câmara"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Resolução fotografia"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Resolução de vídeo"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "As imagens de disparos contínuos são guardadas com qualidade definida como boa"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Toque, sem soltar, no botão da câmara para fazer disparos contínuos"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Prima a tecla de aumento de volume para tirar uma fotografia. Prima a tecla de redução de volume para iniciar a gravação"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Se os disparos contínuos estiverem activados, premir a tecla de aumento do volume produzirá disparos contínuos"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Não mostrar novamente"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Dicas"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispositivo"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Toque no ícone, sem o soltar, e depois arraste-o para modificar a posição do atalho"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Melhor fotografia"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Share shot"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flash"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Desenhos animados"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Partilha de foto de amigo"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Cor de Outono"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Guardar como virada"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memória\ninsuficiente para vídeo"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Rever"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100755 (executable)
index 0000000..dd26262
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sec"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sec"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilizare de imagine"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automat"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Înfrumuseţare"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Alb-negru"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Centrat"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Lumina zilei"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detectare faţă"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Bliţ"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescent"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Macro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrice"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Măsurare"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nici unul"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Oprit"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Pornit"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoramă"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Singur"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Cu încetinit."
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Stocare"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Incandescent"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Grilă"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Etichetă GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sporturi"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Petrecere/interior"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Apus"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Răsărit"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Artificii"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Lumânare"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Lumină fundal"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Focalizare automată"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Mod scenă"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Mod focalizare"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Vizibilitate la exterior"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Temporizator"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efecte"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Editare comenzi rapide"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Contrast automat"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Reiniţializare"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Setări"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Fotograf. continuă"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limită mesaj"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Mişcare accelerată"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sec"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Înnorat"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Crearea imaginilor panoramice a eşuat. Încercaţi mai târziu"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Orizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Aşteptaţi până se creează panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Umbră"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Imposibil de salvat. Memorie insuficientă"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Fotografiere cu înfrumuseţare"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoramă"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Mod fotografiere"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Cu încetinit."
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balans de alb"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Eroare captură"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Durata capturării a fost depăşită. Începeţi din nou"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Imposibil de pornit Camera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Imposibil de pornit aparat foto\nîn timpul apelului"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Închidere cameră în %d secunde"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Activaţi serviciul de locaţie din Setări pentru a utiliza eticheta GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Apăsaţi pe Declanşator"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Mişcaţi încet camera foto în direcţia săgeţii"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meniu neacceptat"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Politica de securitate restricţionează utilizarea camerei foto"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Salvat"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Peisaj"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noapte"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detectare faţă"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Mod înregistrare"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Reiniţializaţi setările?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Fotografiere zâmbet"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Cartelă de memorie"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plajă/zăpadă"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Valoare expunere"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rezoluţie"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Înregistrarea nu a reuşit"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Durata capturării s-a încheiat. Începeţi din nou"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Particularizat"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Se procesează..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Cartelă de memorie scoasă"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Imposibil de utilizat bliţul. Baterie slabă"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Utilizaţi tasta volum ca"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tasta zoom"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Tasta Cameră foto"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Rezoluţie foto"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Rezoluţie video"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Imaginile fotografiate continuu sunt salvate având calitatea setată ca bună"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Atingeţi lung butonul camerei foto pentru a fotografia continuu"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Apăsaţi pe butonul de volum mai mare pentru a face o fotografie. Apăsaţi pe butonul de volum mai mic pentru a începe să înregistraţi"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Dacă este activată fotografierea continuă, când apăsaţi pe tasta de volum mai mare, se va fotografia continuu"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Nu se mai afişează"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Sfaturi"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Dispozitiv"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Atingeţi lung pictograma, apoi glisaţi-o pentru a edita poziţia comenzii rapide"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Fotografie optimă"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Partajare fotografie"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Bliţ"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Desen animat"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Partajare foto prieten"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Culoare de toamnă"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Salvare ca oglindit"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Memorie insuficientă\npentru videoclip"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Examinare"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..3028b93
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 секунд"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 секунды"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Стабилизация изображения"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Красивое лицо"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Черно-белое"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Центровзвешенный"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Дневной свет"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Обнаружение лица"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Вспышка"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Флуоресцентный свет"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Макросъемка"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Матрица"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Экспозамер"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Негатив"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Нет"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Выключено"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Автопортрет"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Сепия"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Один снимок"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Замедленное движение"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Память"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Лампа накаливания"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Сетка"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Тег GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Портрет"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Спорт"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Вечеринка/в помещении"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Закат"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Рассвет"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Фейерверк"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Текст"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Сумерки"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Подсветка"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Автофокус"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Сюжет"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Режим фокуса"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Видимость на улице"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Таймер"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Эффекты"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Изменить ссылки"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Автоконтрастность"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Сброс"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Непрерывная съемка"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Нормальное"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Ограничение размера"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Быстрое движение"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 секунд"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Облачно"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Сбой при построении панорамных изображений. Попробуйте позже"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Горизонт"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Подождите... идет создание панорамы"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Затемнение"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Точечный замер"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Невозможно сохранить. Недостаточно памяти"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Красивый снимок"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Режим съемки"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Замедленное движение"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Баланс белого"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Ошибка съемки"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Превышено время съемки. Начните снова"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Невозможно запустить камеру"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Невозможно запустить камеру\nво время вызова"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Камера выключится через %d сек."
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Для использования тегов GPS включите службу определения местоположения в меню 'Настройки'"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Нажмите клавишу съемки"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Медленно перемещайте камеру в направлении, заданном стрелкой"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Меню не поддерживается"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Политика безопасности ограничивает использование камеры"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Соxранено"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Пейзаж"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Ночь"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Обнаружение лица"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Режим записи"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Сбросить настройки?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Распознавание улыбки"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Карта памяти"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Пляж/снег"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Значение экспозиции"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Сбой записи"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Время съемки истекло. Начните снова"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Создать"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Обработка..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Карта памяти извлечена"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Невозможно использовать вспышку. Аккумулятор разряжен"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Функция клавиши громкости"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Клавиша зума"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Клавиша камеры"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Разрешение снимков"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Разрешение видео"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Фотографии, полученные при непрерывной съемке, сохраняются с отличным качеством"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Для непрерывной съемки нажмите и удерживайте кнопку камеры"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Чтобы сделать снимок, нажмите клавишу увеличения громкости. Для начала записи нажмите клавишу уменьшения громкости"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Если включен соответствующий режим, при нажатии клавиши громкости будет выполняться непрерывная съемка"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Не показывать снова"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Советы"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Устройство"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Нажмите и удерживайте значок, а затем перетащите его, чтобы изменить положение ярлыка"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Лучшее фото"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Обмен фотографиями"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Вспышка"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Мультяшная"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Обмен фото с друзьями"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Осенние цвета"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Сохранить перевернутое изображение"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Недостаточно памяти для видео"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Просмотр"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100755 (executable)
index 0000000..99cfd25
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Stabilizácia obrazu"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Krása"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Čiernobiely"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "S vyvážením na stred"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Denné svetlo"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detekcia tváre"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Blesk"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Žiarivka"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Maticové"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Meranie"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatív"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Žiadny"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Vyp."
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Zap."
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportrét"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sépia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Jediný"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Spomalený pohyb"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Úložisko"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Žiarovka"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Vodiace čiary"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Značka GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Na výšku"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Šport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Oslava/interiér"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Západ slnka"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Súmrak"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Ohňostroj"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Svetlo sviečky"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Zadné osvetlenie"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Automatické zaostrovanie"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scénický mód"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Režim zaostrovania"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Viditeľnosť v exteriéri"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Časovač"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekty"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Upraviť odkazy"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatický kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Vynulovať"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Nastavenia"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Sériové snímanie"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normálny"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Limit správy"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Rýchly pohyb"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Oblačno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nepodarilo sa vytvoriť panoramatické obrázky. Skúste to neskôr"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Počkajte, prosím, kým sa vytvorí panoráma"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Tieň"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Bodové"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nedá sa uložiť. Nedostatok pamäte"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Krásna snímka"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoráma"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Režim fotografovania"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Spomalený pohyb"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Vyváženie bielej"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Chyba záznamu"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Čas snímania bol prekročený. Začnite odznova"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Fotoaparát sa nedá spustiť"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Počas hovoru nie je možné\nspustiť fotoaparát"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Zatvorte fotoaparát v priebehu %d sekúnd"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Pred použitím značky GPS povoľte lokalizačnú službu v menu Nastavenia"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Stlačte spúšť"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Pohybujte fotoaparátom pomaly v smere šípky"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menu nie je podporované"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Politika zabezpečenia obmedzuje použitie fotoaparátu"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Uložené"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Na šírku"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noc"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detekcia tváre"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Režim nahrávania"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Vynulovať nastavenia?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Detekcia úsmevu"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Pamäťová karta"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Pláž/Sneh"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Hodnota expozície"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rozlíšenie"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Nahrávanie zlyhalo"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Doba snímania uplynula. Začnite odznova"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Vlastné"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Prebieha spracovanie..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Pamäťová karta vybraná"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Jednotka flash sa nedá použiť. Batéria je vybitá"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Použiť tl. hlasitosti ako"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tlačidlo priblíženia"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Tlačidlo fotoaparátu"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Rozlíš. fotografie"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Rozlíšenie videa"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Sériové zábery sa ukladajú s kvalitou nastavenou ako jemná"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Ťuknutím na tlačidlo fotoaparátu a jeho podržaním môžete nasnímať sériový záber"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Stlačením tlačidla zvýšenia hlasitosti môžete fotografovať. Stlačením tlačidla zníženia hlasitosti môžete spustiť nahrávanie"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ak je zapnuté sériové snímanie, stlačením tlačidla zvýšenia hlasitosti sa nasníma sériový záber"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Už nezobrazovať"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tipy"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Zariadenie"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Ťuknite na ikonu a podržte ju a potom jej presunutím upravte polohu odkazu"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Najlepšia fotografia"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Zdieľať záber"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Blesk"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Kreslený film"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Zdieľanie fotografií priateľa"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Jesenné farby"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Uložiť ako prevrátené"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Nedostatok pamäte\npre video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Prezrieť"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100755 (executable)
index 0000000..35b3620
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sek"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sek"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Odpravljanje tresenja"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Samodejno"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Lepota"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Črno-belo"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Sredinsko uteženo"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dnevna svetloba"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Zaznavanje obraza"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Bliskavica"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluorescentno"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrika"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Merjenje"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Brez"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Izključeno"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Vključeno"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Avtoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Enojno"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Počasno gibanje"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Shranjevanje"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Žarnica"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Smernice"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Oznaka GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Šport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Zabava/znotraj"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Sončni zahod"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Zora"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Ognjemet"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Besedilo"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Sveča"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Osvetlitev"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Samodejno ostrenje"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Način prizorišča"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Način ostrenja"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Vidnost na prostem"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Časovnik"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Učinki"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Uredi bližnjice"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Samodejni kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Ponastavi"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Nastavitve"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Rafalni posnetek"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Omejitev sporočila"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Hitro gibanje"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sek"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Oblačno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoramske slike ni bilo mogoče sestaviti. Poskusite pozneje"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Obzorje"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Počakajte, da se ustvari panorama"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Senca"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Točkovno"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Ni mogoče shraniti, ker ni dovolj pomnilnika"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Lepotni posnetek"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Snemalni način"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Počasno gibanje"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Ravnotežje beline"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Napaka zajemanja"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Čas zajema je presežen. Začnite znova"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Ni mogoče zagnati kamere"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Ne morem vključiti kamere\nmed klicem"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Zapri kamero čez %d sekund"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "V Nastavitvah omogočite lokacijske storitve, če želite uporabljati oznake GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pritisnite Zaklop"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Kamero počasi premaknite v smeri puščice"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meni ni podprt."
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Varnostni pravilnik omejuje uporabo kamere"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Shranjeno"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Pokrajina"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noč"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Zaznavanje obraza"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Snemalni način"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Ponastavitev nastavitev?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Posn. nasmeška"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Pomnilniška kartica"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plaža/sneg"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Vrednost osvetlitve"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Ločljivost"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Snemanje ni uspelo"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Čas zajema je potekel. Začnite znova"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Osebne"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Obdelujem..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Pomnilniška kartica je odstranjena"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Bliskavice ni moč uporabljati, ker je baterija preveč prazna"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Up. tipko za glasnost kot"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Tipka za povečavo"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Tipka kamere"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Ločljiv. fotografije"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Ločlj. videoposnetka"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Rafalni posnetki so shranjeni v višji kakovosti"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Pritisnite in držite gumb za kamero, če želite napraviti rafalni posnetek"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Za slikanje pritisnite tipko za povečanje glasnosti. Za začetek snemanja pritisnite tipko za zmanjšanje glasnosti"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Če je rafalni posnetek omogočen, ga lahko napravite s pritiskom tipke za povečanje glasnosti"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne kaži več"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Nasveti"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Naprava"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Pritisnite in pridržite ikono, nato pa jo povlecite, da uredite položaj bližnjice"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Najboljša fotografija"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Posnemi in deli"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Bliskavica"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Strip"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Skupna raba prijateljeve fotografije"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Jesenska barva"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Shrani kot obrnjeno"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Ni dovolj pomnilnika\nza video posnetek"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Pregled"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100755 (executable)
index 0000000..caaf261
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Kompenzacija drmanja"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Automatski"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Lepota"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Crno-belo"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Središnje procenjeno"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dnevna svetlost"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Detekcija lica"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Blic"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Flourescentno"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrično"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Merenje"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Nema"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Uključeno"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Autoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Pojedinačni"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Usporeni prikaz"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Memorija"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Usijanje"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Smernice"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS oznaka"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Uspravno"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sportovi"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Žurka/Unutra"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Zalazak sunca"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Zora"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Vatromet"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Tekst"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Svetlost sveća"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Pozadinsko svetlo"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Režim Scena"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Režim fokusiranja"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Vidljivost napolju"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Tajmer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efekti"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Izmeni prečice"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatski kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Resetuj"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Podešavanja"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Rafalni snimak"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Ograničenje poruka"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Brzo kretanje"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Oblačno"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Nije uspela izrada panoramske slike. Probaj kasnije"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Sačekaj dok se kreira panoramski snimak"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Senka"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Tačkasto"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Nemoguće sačuvati. Nedovoljna memorija"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Ulepšani snimak"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Način snimanja"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Usporeni prikaz"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Balans bele boje"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Greška pri snimanju"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Vreme za 'hvatanje' je isteklo. Početi ponovo"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Nemoguće pokrenuti kameru"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Nemoguće uključiti kameru tokom poziva"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Isključi kameru za %d sekunde/i"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Omogući uslugu lokacije u podešavanjima za korišćenje GPS oznake"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Pritisni okidač"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Polako pomeri telefon u pravcu strelice"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Meni nije podržan"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Politika bezbednosti ograničava upotrebu kamere"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Sačuvano"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Pejzaž"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Noć"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Detekcija lica"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Režim snimanja"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Resetovanje podešavanja?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Snimanje osmeha"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Memorijska kartica"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plaža/Sneg"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Nivo ekspozicije"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Snimanje neuspešno"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Završeno vreme snimanja. Počni ponovo"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Obrada..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Memorijska kartica izvađena"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Nije moguće koristiti blic. Baterija je skoro prazna"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Kor. tast. jač. zv. kao"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Taster za zumiranje"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Taster kamere"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Rezoluc. fotografije"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video rezolucija"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Brzo snimljene slike se čuvaju sa kvalitetom podešenim kao dobar"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Da bi načinio/la brzi snimak, kucni i zadrži dugme za kameru"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Pritisni taster za pojačavanje zvuka da bi snimio/la sliku. Pritisni taster za smanjivanje jačine zvuka da bi započeo/la snimanje"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Ako je omogućen brzi snimak, pritiskom na taster za pojačavanje zvuka načiniće se brzi snimak"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Ne prikazuj ponovo"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Saveti"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Uređaj"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Kucni i zadrži ikonu, a zatim je prevuci da bi izmenio/la poziciju prečice"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Najbolja fotografija"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Podeli snimak"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Blic"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Crtani film"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Deljenje fotografija drugara"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Jesenja boja"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Sačuvaj kao obrnuto"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Nedovoljno\nmemorije za video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Pregled"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100755 (executable)
index 0000000..5b3ee79
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 s"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 s"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Bildstabilisering"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Skönhet"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Svartvitt"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Mittviktad"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Dagsljus"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Ansiktssökning"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Fotolampa"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Lysrör"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matris"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Mätning"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negativ"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Ingen"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "På"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Självporträtt"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepia"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "En"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Lagring"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Glödlampa"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Riktlinjer"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS-tagg"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Porträtt"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Fest/Inomhus"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Solnedgång"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Gryning"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Fyrverkeri"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Text"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Levande ljus"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Bakgrundsbelysning"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Autofokus"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Scenläge"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokusläge"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Synlighet utomhus"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Självutlösare"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effekter"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Redigera genvägar"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Automatisk kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Nollställ"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Inställningar"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Serietagning"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Meddelandegräns"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Snabb rörelse"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 s"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Mulet"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Det gick inte att bygga panoramabilder. Försök senare"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Horisont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Vänta medan panoramat skapas"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Skugga"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Punkt"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Det går inte att spara. Otillräckligt minne"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Skönhetsbild"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Fotoläge"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Slowmotion"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Vitbalans"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Tagningsfel"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Tagningstiden har överskridits. Starta igen"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Det går inte att starta Kamera"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Det går inte att\nstarta kameran\nunder samtal"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Stäng kameran om %d sekunder"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Aktivera platstjänsten i Inställningarna för att använda GPS-tagg"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Tryck på avtryckaren"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Flytta kameran långsamt i pilens riktning"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menyn stöds inte"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Säkerhetspolicy begränsar användningen av kamera"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Sparad"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Landskap"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Natt"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Ansiktssökning"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Inspelningsläge"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Återställa inställningar?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Leendeavkänning"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Minneskort"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Strand/snö"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Exponeringsvärde"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Upplösning"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Inspelning misslyckades"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Tidtagningen är slut. Starta igen"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Egen"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Bearbetar..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Minneskort borttaget"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Det går inte att använda blixt. Låg batterinivå"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Använd volymknappen som"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Zoomknappen"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kameraknappen"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoupplösning"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Videoupplösning"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Serietagna bilder sparas med kvaliteten inställd på fin"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Tryck på kameraknappen och håll den nedtryckt för att ta bilder i en serie"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Tryck på volym upp-knappen för att ta en bild. Tryck på knappen volym ned-knappen för att spela in"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Om serietagning är aktiverat trycker du på volym upp för att ta en bildserie"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Visa inte igen"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Tips"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Enhet"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Tryck på ikonen och håll den nedtryckt och dra den sedan för att redigera genvägspositionen"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Bästa foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Dela bild"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Fotolampa"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Tecknat"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Dela foto med kompis"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Höstfärger"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Spara som roterad"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Minne saknas\nför video"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Granska"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..23d2b9b
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 sn"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 sn"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Sarsıntı önleme"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Otomatik"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Güzellik"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Siyah beyaz"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Orta-ağırlıklı"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Günışığı"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Yüz algılama"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flaş"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Floresan"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matris"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Metreleme"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Negatif"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Hiçbiri"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Kapalı"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Açık"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Otoportre"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepya"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panoramik"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Tek"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Yavaş hareketli"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Kayıt yeri"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Parlak"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Yönergeler"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS imi"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portre"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Spor"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Parti/Kapalı alan"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Gün batımı"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Şafak"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Havai fişek"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Metin"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Mum Işığı"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Aydınlatma"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Otomatik odaklama"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Sahne modu"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Odaklama modu"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Açık hava görünürlüğü"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Zamanlayıcı"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Efektler"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Kısayolları düzenle"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Otomatik kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Sıfırla"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Ayarlar"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Çoklu çekim"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Mesaj sınırı"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Hızlı hareket"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 sn"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Bulutlu"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoramik resimler oluşturulamadı. Daha sonra deneyin"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Ufuk"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Panorama oluşturulurken lütfen bekleyin"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Gölge"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Kaydedilemiyor. Yeterli hafıza yok"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Güzellik çekimi"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panoramik"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Çekim modu"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Yavaş hareketli"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Beyaz dengesi"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Yakalama hatası"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Yakalama süresi aşıldı. Yeniden başlatın"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kamera başlatılamıyor"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Arama sırasında\nkamera başlatılamaz"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Kamerayı %d saniye içinde kapat"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS etiketi kullanmak için Ayarlar'dan konum servisini etkinleştirin"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Deklanşöre Basın"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Kamerayı yavaşça ok yönünde hareket ettirin"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menü desteklenmedi"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Güvenlik ilkesi Kamera kullanımını kısıtlıyor"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Kaydedildi"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Manzara"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Gece"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Yüz algılama"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Kayıt modu"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Ayarlar sıfırlansın mı?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Gülücük yakala :-)"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Hafıza kartı"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Plaj/Kar"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Poz değeri"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Kayıt başarısız"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Yakalama sona erdi. Yeniden başlatın"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Özel"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Uygulanıyor..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Hafıza kartı çıkarıldı"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Flaş kullanılamıyor. Pil düşük"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Ses tuşu kullanımı"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Yakınlaştırma tuşu"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Fotoğraf makinesi tuşu"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotoğraf çözünürlüğü"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video çözünürlüğü"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Çoklu çekim resimleri iyi kalitede kaydedildi"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Çoklu çekim yapmak için kamera düğmesine dokunun ve basılı tutun"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Resim çekmek için ses arttırma tuşuna basın. Kaydı başlatmak için ses azaltma tuşuna basın"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Çoklu çekim etkinse, ses artırma tuşuna basıldığında çoklu çekim yapılır"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Bir daha gösterme"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "İpuçları"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Cihaz"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Simgeye dokunun ve basılı tutun, ardından kısayolun konumunu düzenlemek için sürükleyin"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "En iyi fotoğraf"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Çekim paylaşma"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flaş"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Çizgi film"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Arkadaşınla fotoğraf paylaşımı"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Sonbahar rengi"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Ters dönmüş olarak kaydedin"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Video için\nyeterli belek yok"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "İzleme"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100755 (executable)
index 0000000..e1b1a41
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 сек."
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 сек."
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Стабілізація зображення"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Краса"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Чорно-біле"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Відцентро\nвано"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Денне світло"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Розпізнавання обличчя"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Спалах"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Флуоресцентний"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Макро"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Матриця"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "Замірювання"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Негатив"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Немає"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "Вимкнено"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Увімкнено"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Автопортрет"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Сепія"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Одинарний"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Сповільнення"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Пам'ять"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Штучне світло"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Вказівки"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "Тег GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Портрет"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Спорт"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "Вечірка/У приміщенні"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Захід сонця"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Світанок"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Феєрверк"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Текст"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Сутінки"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Підсвічування"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Автофокус"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Режим сцени"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Режим фокусування"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Видимість на вулиці"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Таймер"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Ефекти"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Редагувати клавіші шв. доступу"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Автоконтрастність"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Скинути"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Установки"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Серійна зйомка"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Звичайна"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Обмеження повідомлення"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Прискорення"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 сек."
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Хмарно"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Не вдалося створити панорамні зображення. Спробуйте пізніше"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Горизонт"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Зачекайте, доки створюється панорама"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Тінь"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Точковий замір"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Неможливо зберегти. Недостатньо пам’яті"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Прикрашення знімку"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Панорама"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Режим зйомки"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Сповільнення"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Баланс білого"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Помилка зйомки"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Час зйомки перевищено. Розпочніть знову"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Неможливо запустити камеру"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Неможливо запустити камеру\nпід час виклику"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Закриття камери через %d сек."
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "Увімкніть послугу розташування в розділі Установки, щоб скористатися тегом GPS"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Натисніть клавішу затвору"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Повільно переміщуйте камеру в напрямку стрілки"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Меню не підтримується"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Використання камери обмежено політикою безпеки"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Збережено"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Пейзаж"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Ніч"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Розпізнавання обличчя"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Режим відеозйомки"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Скинути параметри?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Знімок посмішки"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Карта пам’яті"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Пляж/сніг"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Значення витримки"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Роздільна здатність"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Збій записування"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Час зйомки минув. Розпочніть знову"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Особливий"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Обробка..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Карту пам'яті видалено"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Неможливо використовувати спалах. Акумулятор розряджено"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Викор. клавішу гучнос. як"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Клавіша масштабування"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Клавіша камери"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Роздільна здатн.фото"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Розд.здатн.відео"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Знімки серійної зйомки зберігаються у 'відмінній' якості"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Натисніть та утримуйте кнопку камери, щоб виконати серійну зйомку"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Натисніть клавішу збільшення гучності, щоб зробити знімок. Натисніть клавішу зменшення гучності, щоб розпочати записування"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "У разі увімкнення режиму серійної зйомки, натискання клавіші збільшення гучності виконає зйомку"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Більше не показувати"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Підказки"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Пристрій"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Натисніть та утримуйте значок, а потім перетягніть його, щоб змінити розташування клавіші швидкого доступу"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Найкраща фотографія"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Спільний доступ до знімків"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Спалах"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Мультфільм"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "Спільний доступ до фотографій абонента"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Колір осені"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Зберегти як перевернуте"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Недостатньо\nпам'яті для відео"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Огляд"
+
diff --git a/po/update-po.sh b/po/update-po.sh
new file mode 100755 (executable)
index 0000000..628a88d
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+PACKAGE=ug-camera-efl
+SRCROOT=..
+POTFILES=POTFILES.in
+
+#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW
+ALL_LINGUAS="en_US en_GB ja ko zh_CN"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+       echo "$POTFILES not found"
+       exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+               --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES \
+&& test ! -f ${PACKAGE}.po \
+       || (rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot)
+
+if [ $? -ne 0 ]; then
+       echo "error"
+       exit 1
+else
+       echo "done"
+fi
+
+for LANG in $ALL_LINGUAS; do 
+       echo "$LANG : "
+
+       if [ ! -e $LANG.po ] ; then
+               sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+               echo "${LANG}.po created"
+       else
+               if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+                       if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+                               rm -f ${LANG}.new.po
+                       else
+                               if mv -f ${LANG}.new.po ${LANG}.po; then
+                                       echo "" 
+                               else
+                                       echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+                                       rm -f ${LANG}.new.po
+                                       exit 1
+                               fi
+                       fi
+               else
+                       echo "msgmerge for $LANG failed!"
+                       rm -f ${LANG}.new.po
+               fi
+       fi
+       echo ""
+done
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100755 (executable)
index 0000000..604d306
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 soniya"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 soniya"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "Anti-sheyk"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "Go‘zallik"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "Qora va oq"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "Markazga tortish"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "Kunduz"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "Yuzni aniqlash"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "Flesh"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "Fluoressensiya"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "Makro"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "Matrisa"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "O‘lchash"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "Manfiy"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "Hech qaysi"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "O‘ch."
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "Yoq."
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "Avtoportret"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "Sepiya"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "Yakka"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "Sekin harakat"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "Xotira"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "Cho‘g‘lanma lampa"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "Yo‘riqnomalar"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS tegi"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "Portret"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "Sport"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "O‘tirish/Tashqarida"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "Kun botishi"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "Tong"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "Mushakbozlik"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "Matn"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "Candlelight"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "Fon chirog‘i"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "Fokusni avtomatik to‘g‘rilash"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "Sahna rejimi"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "Fokus rejimi"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "Tashqarida ko‘rish qobiliyati"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "Taymer"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "Effektlar"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "Yorliqlarni tahrirlash"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "Avto-kontrast"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "Qayta yuklash"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "Parametrlar"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "Fleshli kadr"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "Xabarlar cheklovi"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "Tez harakat"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 soniya"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "Bulutli"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "Panoramali tasvirlarni yaratib bo‘lmadi. Keyinroq urinib ko‘ring"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "Gorizont"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "Panorama yaratilayotganda kutib turing"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "Soya"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "Spot"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "Saqlab bo‘lmaydi. Xotira yetarli emas"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "Go‘zal kadr"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "Panorama"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "Suratga olish rejimi"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "Sekin harakat"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "Oq rang balansi"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "Rasmga olish xatosi"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "Rasmga olish vaqti oshib ketdi. Qaytadan boshlang"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "Kamerani ishga tushirib bo‘lmaydi"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "Qo‘ng‘iroq mobaynida Kamerani ishga tushirib bo‘lmaydi"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "Kamera %d soniyada yopiladi"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "GPS tegidan foydalanish uchun, Parametrlarda joylashishni aniqlash xizmatini yoqing"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "Obyektivni bosing"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "Kamerani mil yo‘nalishida sekin-asta harakatlantiring"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "Menyu qo‘llab-quvvatlanmaydi"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "Xavfsizlik qonun-qoidalari Kameradan foydalanishni cheklaydi."
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "Saqlandi"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "Gorizontal"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "Tun"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "Yuzni aniqlash"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "Yozib olish rejimi"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "Parametrlar qayt. o'rnatilsinmii?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "Tabassumli kadr"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "Xotira kartasi"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "Sohil/Qor"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "Defekt qiymati"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "Rezolyutsiya"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "Yozib bo‘lmadi"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "Suratga olish vaqti tugadi. Qaytadan boshlash"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "Maxsus"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "Bajarilmoqda..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "Xotira kartasi olib tashlandi"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "Flashdan foydalanib bo‘lmaydi. Batareya quvvati kam"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "Ovoz baland/tugma foydal"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "Masshtab tugmasi"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "Kamera tugmasi"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "Fotosurat ruxsati"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "Video ruxsati"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "Fleshli kadrdagi tasvirlar 'yaxshi' sifatda saqlangan"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "Fleshli kadrni olish uchun, kamera tugmasini bosib turing"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "Rasmga olish uchun, ovoz ko‘tarish tugmasini bosing. Yozib olishni boshlash uchun, ovoz pasaytirish tugmasini bosing"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "Agar fleshli kadr faol bo‘lsa, ovozni ko‘tarish tugmasini bosish fleshli kadrni rasmga oladi"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "Boshqa ko‘rsatilmasin"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "Maslahatlar"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "Qurilma"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "Yorliq joylashuvini o‘zgartirish uchun, ikonchani bosib turing va undan so‘ng tortib o‘tkazing"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "Eng yaxshi foto"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "Kadrni ulashish"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "Flesh"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "Multfilm"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "O‘rtoq fotosuratini ulashish"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "Kuz rangi"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "Teskari holatda saqlash"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "Video uchun xotira yetarli emas"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "Ko‘rib chiqish"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..890707b
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 秒"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 秒"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "防震"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "美肌"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "黑白"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "中心重点测光"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "白天"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "人脸识别"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "闪光灯"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "荧光"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "感光度"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "微距模式"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "矩阵"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "测光"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "负片"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "无"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "关"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "开"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "自拍"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "深褐色"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "全景拍摄"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "单一拍摄"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "慢动作"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "存储器"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "白炽光"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "构图线"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS标签"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "肖像"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "运动"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "宴会/室内"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "日落"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "黎明"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "焰火"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "文本"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "烛火"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "背景光"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "自动对焦"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "场景模式"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "聚焦模式"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "户外能见度"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "定时器"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "效果"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "编辑快捷方式"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "自动调整对比度"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "重置"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "设定"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "急速连拍"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "信息限制"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "快速动作"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 秒"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "阴天"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "创建全景图像失败。 请稍后再试"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "地平线"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "正在创建全景图,请稍等"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "阴影"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "点"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "无法保存。存储空间不足"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "美肌拍摄"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "全景拍摄"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "拍摄模式"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "慢动作"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "白平衡"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "拍摄错误"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "拍摄时间已过。重新启动"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "无法启动照相机"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "通话中无法启动照相机"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "在 %d 秒内关闭摄像头"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "在设置中启用位置服务以使用 GPS 标记"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "按下快门"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "沿着箭头方向缓慢移动照相机"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "不支持功能表"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "安全政策限制使用照相机"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "已保存"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "风景"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "夜间拍摄"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "人脸识别"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "录制模式"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "要复位设置吗?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "微笑拍摄"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "存储卡"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "海滩/雪景"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "曝光值"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "录制失败"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "拍摄时间已过。请重新开始"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "处理中..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "已移除存储卡"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "电量太低,无法使用闪光灯。"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "使用音量键作为"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "缩放键"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "摄像头键"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "照片分辨率"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "视频分辨率"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "连拍图片保存时质量设置为高清"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "按住相机按钮以进行连拍"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "按音量增加键以拍照。按音量减小键以开始录制"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "如果已启用连拍,按音量增加键将进行连拍"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "不要再显示"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "提示"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "设备"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "按住图标,然后拖拽以编辑快捷方式的位置"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "优选拍摄"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "共享拍摄"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "闪光灯"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "卡通"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "好友照片共享"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "秋色"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "另存为反向"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "存储空间不足,无法保存视频"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "查看"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..a80c1f7
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 秒"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 秒"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "防震"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "美麗"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "黑白"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "中央重點"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "白天"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "面孔偵測"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "閃光燈"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "日光燈"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "微距"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "矩陣"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "測光"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "底片"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "無"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "開啟"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "自拍"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "深褐色"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "單張"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "慢動作"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "儲存位置"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "高色溫光管"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "指引"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS 標籤"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "人像"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "運動"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "派對/室內"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "日落"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "日出"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "煙花"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "文字"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "燭光"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "背光"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "自動對焦"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "場景模式"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "對焦模式"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "戶外能見度"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "計時器"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "效果"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "編輯捷徑"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "自動調整對比度"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "重設"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "連續快拍"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "訊息限制"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "快動作"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 秒"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "陰天"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "無法建立全景影像。請稍後再試"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "地平線"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "請稍候,正在建立全景圖"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "影子"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "點"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "無法儲存。記憶體不足"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "美麗拍攝"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "拍攝模式"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "慢動作"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "白平衡"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "拍攝錯誤"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "拍攝時間已過。請重新開始"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "無法啟動相機"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "通話期間無法啟動相機"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "在 %d 秒內關閉相機"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "啟用設定中的位置服務以使用 GPS 標籤"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "按下快門"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "順著箭頭方向緩慢移動相機"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "功能表不受支援"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "安全政策限制使用相機"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "已儲存"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "風景"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "夜間"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "面孔偵測"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "錄製模式"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "要重設設定嗎?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "一笑即拍"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "記憶卡"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "海灘/雪景"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "曝光值"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "錄製失敗"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "拍攝時間已結束。請重新開始"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "正在處理..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "記憶卡已移除"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "無法使用閃光燈。電量不足"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "使用音量鍵作為"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "縮放鍵"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "相機鍵"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "相片解像度"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "影片解像度"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "連續快拍圖像以設定的高畫質儲存"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "輕觸並按住相機鍵以拍攝連續快拍"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "按下增加音量鍵以拍照。按下降低音量鍵以開始錄製"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "若連續快拍啟用時,按下增加音量鍵將拍攝連續快拍"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "不再顯示"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "提示"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "裝置"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "輕處並按住圖示,然後拖曳以編輯捷徑位置"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "最佳相片"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "分享拍攝"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "閃光燈"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "卡通"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "好友相片分享"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "秋色"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "儲存為翻轉"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "記憶體不足,無法錄影"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "檢視"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100755 (executable)
index 0000000..35e4261
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10秒"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2秒"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "防震"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "美肌"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "黑白"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "中央重点"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "日光"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "脸部识别"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "闪光灯"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "萤光灯"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "微距"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "矩阵"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "测光"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "负片"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "无"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "关"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "开"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "自拍"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "深褐色"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "单拍"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "慢动作"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "存储容量"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "室内强光"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "指南"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS标签"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "肖像"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "体育"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "派对 / 室内"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "日落"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "黎明"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "烟火"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "文本"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "烛光"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "背光灯"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "自动聚焦"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "场景模式"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "聚焦模式"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "户外能见度"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "计时器"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "效果"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "编辑快捷键"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "自动调整对比度"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "重置"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "设定"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "爆裂摄影"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "信息限制"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "快速运动"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5秒"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "多云"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "创建全景图像失败。 请稍后再试"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "地平线"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "正在创建全景图,请稍等"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "阴影"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "点"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "无法保存。存储空间不足"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "美肌拍摄"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "拍摄模式"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "慢动作"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "白平衡"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "拍摄错误"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "拍摄时间已过。重新启动"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "无法启动照相机"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "通话时\n无法开启照相机"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "在 %d 秒内关闭摄像头"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "在设置中启用位置服务以使用 GPS 标记"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "按下快门"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "沿着箭头发向缓慢移动照相机"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "不支持功能表"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "安全政策限制使用照相机"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "已储存"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "横向"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "夜间"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "脸部识别"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "录制模式"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "要复位设置吗?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "微笑拍摄"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "存储卡"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "沙滩 / 下雪"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "曝光值"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "录制失败"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "拍摄时间已过。请重新开始"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "处理中…"
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "已移除存储卡"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "无法使用闪光灯。 电量不足"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "使用音量键作为"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "缩放键"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "摄像头键"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "照片分辨率"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "视频分辨率"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "连拍图片保存时质量设置为高清"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "按住相机按钮以进行连拍"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "按音量增加键以拍照。按音量减小键以开始录制"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "如果已启用连拍,按音量增加键将进行连拍"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "不要再显示"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "提示"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "设备"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "按住图标,然后拖拽以编辑快捷方式的位置"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "最佳照片"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "共享拍摄"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "闪光灯"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "卡通"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "好友照片共享"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "秋色"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "另存为翻版"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "存储空间不足,无法保存视频"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "检查"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..90b91e2
--- /dev/null
@@ -0,0 +1,342 @@
+msgid "IDS_CAM_BODY_10_SEC"
+msgstr "10 秒"
+
+msgid "IDS_CAM_BODY_2_SEC"
+msgstr "2 秒"
+
+msgid "IDS_CAM_BODY_ANTI_SHAKE"
+msgstr "防手震"
+
+msgid "IDS_CAM_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_CAM_BODY_BEAUTY"
+msgstr "美顏模式"
+
+msgid "IDS_CAM_BODY_BLACK_AND_WHITE"
+msgstr "黑白"
+
+msgid "IDS_CAM_BODY_CENTER_WEIGHTED"
+msgstr "中心-重點測光"
+
+msgid "IDS_CAM_BODY_DAYLIGHT"
+msgstr "白天"
+
+msgid "IDS_CAM_BODY_FACE_DETECTION"
+msgstr "臉部偵測"
+
+msgid "IDS_CAM_BODY_FLASH"
+msgstr "閃光燈"
+
+msgid "IDS_CAM_BODY_FLUORESCENT"
+msgstr "螢光燈"
+
+msgid "IDS_CAM_BODY_ISO"
+msgstr "ISO"
+
+msgid "IDS_CAM_BODY_MACRO"
+msgstr "近拍"
+
+msgid "IDS_CAM_BODY_MATRIX"
+msgstr "矩陣"
+
+msgid "IDS_CAM_BODY_METERING"
+msgstr "測光"
+
+msgid "IDS_CAM_BODY_NEGATIVE"
+msgstr "負片"
+
+msgid "IDS_CAM_BODY_NONE"
+msgstr "無"
+
+msgid "IDS_CAM_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_CAM_BODY_ON"
+msgstr "開啟"
+
+msgid "IDS_CAM_BODY_SELF_SHOT"
+msgstr "自拍"
+
+msgid "IDS_CAM_BODY_SEPIA"
+msgstr "褐色"
+
+msgid "IDS_CAM_BODY_SHOOTING_MODE_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_BODY_SINGLE"
+msgstr "單拍"
+
+msgid "IDS_CAM_BODY_SLOW_MOTION"
+msgstr "慢動作"
+
+msgid "IDS_CAM_BODY_STORAGE"
+msgstr "儲存空間"
+
+msgid "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT"
+msgstr "白熾燈"
+
+msgid "IDS_CAM_BODY_GUIDELINE"
+msgstr "指引線"
+
+msgid "IDS_CAM_BODY_GPS_TAG"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_SCENE_PORTRAIT"
+msgstr "人像"
+
+msgid "IDS_CAM_OPT_SCENE_SPORTS"
+msgstr "運動"
+
+msgid "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR"
+msgstr "派對/室內"
+
+msgid "IDS_CAM_OPT_SCENEMODE_SUNSET"
+msgstr "日落"
+
+msgid "IDS_CAM_OPT_SCENE_DAWN"
+msgstr "黎明"
+
+msgid "IDS_CAM_BODY_SCENEMODE_FIREWORK"
+msgstr "煙火"
+
+msgid "IDS_CAM_BODY_SCENEMODE_TEXT"
+msgstr "文字"
+
+msgid "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT"
+msgstr "燭光"
+
+msgid "IDS_CAM_OPT_SCENE_BACKLIGHT"
+msgstr "背光"
+
+msgid "IDS_CAM_OPT_AUTO_FOCUS"
+msgstr "自動對焦"
+
+msgid "IDS_CAM_BODY_SCENE_MODE"
+msgstr "場景模式"
+
+msgid "IDS_CAM_BODY_FOCUS_MODE"
+msgstr "對焦模式"
+
+msgid "IDS_CAM_BODY_OUTDOOR_VISIBILITY"
+msgstr "戶外能見度"
+
+msgid "IDS_CAM_BODY_TIMER"
+msgstr "計時器"
+
+msgid "IDS_CAM_BODY_EFFECTS"
+msgstr "效果"
+
+msgid "IDS_CAM_OPT_EDIT_SHORTCUTS"
+msgstr "編輯快捷鍵"
+
+msgid "IDS_CAM_BODY_AUTO_CONTRAST"
+msgstr "自動對比"
+
+msgid "IDS_CAM_BODY_RESET_SETTINGS_RESET"
+msgstr "重設"
+
+msgid "IDS_CAM_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_CAM_OPT_BURST_SHOT_ABB"
+msgstr "連續快拍"
+
+msgid "IDS_CAM_BODY_RECORDINGMODE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_CAM_OPT_MESSAGE_LIMIT"
+msgstr "訊息限制"
+
+msgid "IDS_CAM_BODY_FAST_MOTION"
+msgstr "快動作"
+
+msgid "IDS_CAM_BODY_5_SEC"
+msgstr "5 秒"
+
+msgid "IDS_CAM_BODY_CLOUDY"
+msgstr "陰天"
+
+msgid "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER"
+msgstr "無法組建全景影像。請稍後再試"
+
+msgid "IDS_CAM_BODY_HORIZON"
+msgstr "水平線"
+
+msgid "IDS_CAM_BODY_PLEASE_WAIT_WHILE_CREATING_PANORAMA"
+msgstr "請稍後,正在建立全景圖"
+
+msgid "IDS_CAM_BODY_SHADE"
+msgstr "陰影"
+
+msgid "IDS_CAM_BODY_SPOT"
+msgstr "點"
+
+msgid "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"
+msgstr "無法儲存。記憶體不足"
+
+msgid "IDS_CAM_OPT_BEAUTY_SHOT"
+msgstr "美顏模式"
+
+msgid "IDS_CAM_OPT_GPS"
+msgstr "GPS"
+
+msgid "IDS_CAM_OPT_PANORAMA"
+msgstr "全景"
+
+msgid "IDS_CAM_OPT_SHOOTING_MODE"
+msgstr "拍攝模式"
+
+msgid "IDS_CAM_OPT_SLOW_MOTION"
+msgstr "慢動作"
+
+msgid "IDS_CAM_OPT_WHITE_BALANCE_ABB"
+msgstr "白平衡"
+
+msgid "IDS_CAM_POP_CAPTURE_ERROR"
+msgstr "拍攝錯誤"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_EXCEEDED_START_AGAIN"
+msgstr "已超過拍攝時間。請重新開始"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA"
+msgstr "無法啟動相機"
+
+msgid "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"
+msgstr "通話期間無法啟動相機"
+
+msgid "IDS_CAM_POP_CLOSE_CAMERA_IN_PD_SECONDS"
+msgstr "在 %d 秒內關閉相機"
+
+msgid "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"
+msgstr "啟用設定中的位置服務以使用 GPS 標籤"
+
+msgid "IDS_CAM_POP_PRESS_SHUTTER"
+msgstr "按快門"
+
+msgid "IDS_CAM_POP_MOVE_CAMERA_SLOWLY_IN_DIRECTION_OF_ARROW"
+msgstr "依據箭頭方式緩慢移動相機"
+
+msgid "IDS_CAM_POP_ERROR_MESSAGE"
+msgstr "選單不受支援"
+
+msgid "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"
+msgstr "由於安全政策,使用相機被限制"
+
+msgid "IDS_CAM_POP_SAVED"
+msgstr "已儲存"
+
+msgid "IDS_CAM_OPT_SCENE_LANDSCAPE"
+msgstr "風景"
+
+msgid "IDS_CAM_OPT_SCENEMODE_NIGHT"
+msgstr "夜間"
+
+msgid "IDS_CAM_OPT_FACE_DETECTION"
+msgstr "臉部偵測"
+
+msgid "IDS_CAM_OPT_RECORDING_MODE"
+msgstr "錄製模式"
+
+msgid "IDS_CAM_POP_RESET_SETTINGS_Q"
+msgstr "要重設設定嗎?"
+
+msgid "IDS_CAM_OPT_SMILE_SHOT"
+msgstr "微笑拍攝"
+
+msgid "IDS_CAM_OPT_MEMORY_CARD"
+msgstr "記憶卡"
+
+msgid "IDS_CAM_OPT_BEACH_SNOW"
+msgstr "海灘/雪景"
+
+msgid "IDS_CAM_OPT_EXPOSURE_VALUE"
+msgstr "曝光值"
+
+msgid "IDS_CAM_BODY_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_CAM_POP_ERROR_RECORDING_FAIL"
+msgstr "錄製失敗"
+
+msgid "IDS_CAM_POP_CAPTURE_TIME_IS_OVER_START_AGAIN"
+msgstr "拍攝時間結束。請重新開始"
+
+msgid "IDS_CAM_BODY_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_CAM_BODY_PROCESSING_ING"
+msgstr "正在處理..."
+
+msgid "IDS_CAM_POP_MEMORY_CARD_REMOVED"
+msgstr "已移除記憶卡"
+
+msgid "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"
+msgstr "無法使用閃光燈.電量過低"
+
+msgid "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"
+msgstr "使用音量鍵作為"
+
+msgid "IDS_CAM_MBODY_THE_ZOOM_KEY"
+msgstr "縮放鍵"
+
+msgid "IDS_CAM_MBODY_THE_CAMERA_KEY"
+msgstr "相機鍵"
+
+msgid "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"
+msgstr "相片解析度"
+
+msgid "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"
+msgstr "影片解析度"
+
+msgid "IDS_CAM_BODY_BURST_SHOT_IMAGES_ARE_SAVED_WITH_THE_QUALITY_SET_AS_FINE"
+msgstr "連續快拍圖像以設定的高畫質儲存"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"
+msgstr "輕觸並按住相機鍵以拍攝連續快拍"
+
+msgid "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"
+msgstr "按下增加音量鍵以拍照。按下降低音量鍵以開始錄影"
+
+msgid "IDS_CAM_POP_IF_BURST_SHOT_IS_ENABLED_PRESSING_THE_VOLUME_UP_KEY_WILL_TAKE_A_BURST_SHOT"
+msgstr "若啟用連續快拍,按下增加音量鍵將拍攝連續快拍"
+
+msgid "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"
+msgstr "不再顯示"
+
+msgid "IDS_CAM_HEADER_TIPS"
+msgstr "提示"
+
+msgid "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY"
+msgstr "裝置"
+
+msgid "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"
+msgstr "輕處並按住圖示,然後拖曳以編輯捷徑位置"
+
+msgid "IDS_CAM_BODY_BEST_PHOTO"
+msgstr "最佳照片"
+
+msgid "IDS_CAM_BODY_SHARE_SHOT"
+msgstr "分享照片"
+
+msgid "IDS_CAM_OPT_FLASH"
+msgstr "閃光燈"
+
+msgid "IDS_CAM_BODY_CARTOON"
+msgstr "動畫"
+
+msgid "IDS_CAM_OPT_BUDDY_PHOTO_SHARE"
+msgstr "好友圖片分享"
+
+msgid "IDS_CAM_OPT_AUTUMN_COLOUR"
+msgstr "秋色"
+
+msgid "IDS_CAM_BODY_SAVE_AS_FLIPPED"
+msgstr "儲存為翻轉"
+
+msgid "IDS_CAM_POP_VIDEOMEMORYFULL"
+msgstr "影片記憶體不足"
+
+msgid "IDS_CAM_BODY_REVIEW"
+msgstr "查看"
+
diff --git a/sounds/af_fail.wav b/sounds/af_fail.wav
new file mode 100755 (executable)
index 0000000..cfc50c0
Binary files /dev/null and b/sounds/af_fail.wav differ
diff --git a/sounds/af_ok.wav b/sounds/af_ok.wav
new file mode 100755 (executable)
index 0000000..bf2b432
Binary files /dev/null and b/sounds/af_ok.wav differ
diff --git a/sounds/count.wav b/sounds/count.wav
new file mode 100755 (executable)
index 0000000..e2bdb68
Binary files /dev/null and b/sounds/count.wav differ
diff --git a/src/CamDeviceCapacity.cpp b/src/CamDeviceCapacity.cpp
new file mode 100755 (executable)
index 0000000..55158d3
--- /dev/null
@@ -0,0 +1,715 @@
+\r
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+\r
+#include "CamDeviceCapacity.h"\r
+#include "cam_capacity_type.h"\r
+\r
+\r
+extern "C" {\r
+#include "cam_mm.h"\r
+#include "cam_debug.h"\r
+}\r
+\r
+#define CAM_ATTR_NOT_SUPPORTED (1)\r
+#define CAM_CP_FUNC_UNMARKED (0)\r
+CCamDeviceCapacity* CCamDeviceCapacity::m_pInstance = NULL;\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// Construction/Destruction\r
+/////////////////////////////////////////////////////////////////////////////\r
+CCamDeviceCapacity::CCamDeviceCapacity()\r
+{\r
+       ResetCaps();\r
+}\r
+\r
+CCamDeviceCapacity::~CCamDeviceCapacity()\r
+{\r
+       Destroy();\r
+}\r
+\r
+void\r
+CCamDeviceCapacity::ResetCaps()\r
+{\r
+       m_CamRes.bChecked = FALSE;\r
+       m_RecRes.bChecked = FALSE;\r
+       m_Focus.bChecked = FALSE;\r
+       m_Effect.bChecked = FALSE;\r
+       m_WB.bChecked = FALSE;\r
+       m_Scene.bChecked = FALSE;\r
+       m_Metering.bChecked = FALSE;\r
+       m_ISO.bChecked = FALSE;\r
+       m_Flash.bChecked = FALSE;\r
+       m_Fps.bChecked = FALSE;\r
+       m_Shot.bChecked = FALSE;\r
+       m_Zoom.bChecked = FALSE;\r
+       m_Ev.bChecked = FALSE;\r
+       m_Br.bChecked = FALSE;\r
+       m_RecMode.bChecked = FALSE;\r
+\r
+       m_WDR.bChecked = FALSE;\r
+       m_AntiShake.bChecked = FALSE;\r
+       m_RecAntiShake.bChecked = FALSE;\r
+       m_Outdoorvisibility.bChecked = FALSE;\r
+\r
+       m_uFuncCaps = 0;\r
+\r
+}\r
+\r
+CCamDeviceCapacity*\r
+CCamDeviceCapacity::GetInstance()\r
+{\r
+       if(m_pInstance == NULL)\r
+               m_pInstance = new CCamDeviceCapacity;\r
+       return m_pInstance;\r
+}\r
+\r
+void\r
+CCamDeviceCapacity::Destroy()\r
+{\r
+       if(m_pInstance)\r
+       {\r
+               delete m_pInstance;\r
+               m_pInstance = NULL;\r
+       }\r
+}\r
+\r
+void\r
+CCamDeviceCapacity::GetCamDevFuncCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       unsigned int uSearchCaps = CAM_CP_FUNC_BURST_SHOT_MODE;\r
+       unsigned int uCaps = 0;\r
+\r
+       int deviceType = 0;\r
+       if (!cam_mm_get_video_device(&deviceType)) {\r
+               cam_debug(LOG_CAM, "cam_mm_get_video_device() fail");\r
+               *uCapacity = 0;\r
+               return;\r
+       }\r
+\r
+       if (m_uFuncCaps == CAM_CP_FUNC_UNMARKED) {\r
+               for(int i = 0; i < CAM_CP_FUNC_COUNT; i++) {\r
+                       if (IsSupported(uSearchCaps, (CamDeviceType)deviceType, user_data))\r
+                               uCaps |= uSearchCaps;\r
+\r
+                       uSearchCaps *= 2;\r
+                       cam_debug(LOG_CAM, "i[%d] uSearchCaps [0x%x]", i, uSearchCaps);\r
+               }\r
+\r
+               m_uFuncCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_uFuncCaps;\r
+}\r
+\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevSceneModeCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Scene.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_SCENE_MODE, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Scene.bSupported = TRUE;\r
+               else\r
+                       m_Scene.bSupported = FALSE;\r
+\r
+               m_Scene.bChecked = TRUE;\r
+               m_Scene.unCaps = uCaps;\r
+\r
+       }\r
+\r
+       *uCapacity = m_Scene.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevWBCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_WB.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_WHITE_BALANCE, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_WB.bSupported = TRUE;\r
+               else\r
+                       m_WB.bSupported = FALSE;\r
+\r
+               m_WB.bChecked = TRUE;\r
+               m_WB.unCaps = uCaps;\r
+\r
+       }\r
+\r
+       *uCapacity = m_WB.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevEffectCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Effect.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_EFFECT_MODE, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Effect.bSupported = TRUE;\r
+               else\r
+                       m_Effect.bSupported = FALSE;\r
+\r
+               m_Effect.bChecked = TRUE;\r
+               m_Effect.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_Effect.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevFocusCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Focus.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_FOCUS_MODE, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Focus.bSupported = TRUE;\r
+               else\r
+                       m_Focus.bSupported = FALSE;\r
+\r
+               if (cam_mm_is_supported_face_detection())\r
+                       uCaps |= CAM_CP_FOCUS_FACE_DETECTION;\r
+\r
+               m_Focus.bChecked = TRUE;\r
+               m_Focus.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_Focus.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       *uCapacity = 0;\r
+       m_Shot.bSupported = FALSE;\r
+       m_Shot.bChecked = TRUE;\r
+\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       *uCapacity = 0;\r
+#ifdef CAMERA_MACHINE_I686\r
+                       m_RecMode.bSupported = FALSE;\r
+                       m_RecMode.bChecked = TRUE;\r
+\r
+#else\r
+       if (!m_RecMode.bChecked) {\r
+               m_RecMode.unCaps = 0;\r
+               m_RecMode.unCaps |= CAM_CP_REC_MODE_NORMAL;\r
+               m_RecMode.unCaps |= CAM_CP_REC_MODE_MMS;\r
+               m_RecMode.unCaps |= CAM_CP_REC_MODE_SLOW_MOTION;\r
+               m_RecMode.unCaps |= CAM_CP_REC_MODE_FAST_MOTION;\r
+\r
+               m_RecMode.bSupported = TRUE;\r
+               m_RecMode.bChecked = TRUE;\r
+       }\r
+\r
+       *uCapacity = m_RecMode.unCaps;\r
+#endif\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevCamResolutionCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_CamRes.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_CAM_RESOLUTION, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_CamRes.bSupported = TRUE;\r
+               else\r
+                       m_CamRes.bSupported = FALSE;\r
+\r
+               m_CamRes.bSupported = TRUE;\r
+               m_CamRes.bChecked = TRUE;\r
+               m_CamRes.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_CamRes.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevISOCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_ISO.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_ISO, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_ISO.bSupported = TRUE;\r
+               else\r
+                       m_ISO.bSupported = FALSE;\r
+\r
+               m_ISO.bChecked = TRUE;\r
+               m_ISO.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_ISO.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevMeteringCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Metering.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_METERING, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Metering.bSupported = TRUE;\r
+               else\r
+                       m_Metering.bSupported = FALSE;\r
+\r
+               m_Metering.bChecked = TRUE;\r
+               m_Metering.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_Metering.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevFlashCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Flash.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_FLASH_MODE, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Flash.bSupported = TRUE;\r
+               else\r
+                       m_Flash.bSupported = FALSE;\r
+\r
+               m_Flash.bChecked = TRUE;\r
+               m_Flash.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_Flash.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevRecResolutionCaps(unsigned int* uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_RecRes.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_REC_RESOLUTION, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_RecRes.bSupported = TRUE;\r
+               else\r
+                       m_RecRes.bSupported = FALSE;\r
+\r
+               m_RecRes.bChecked = TRUE;\r
+               m_RecRes.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_RecRes.unCaps;\r
+       return TRUE;\r
+\r
+}\r
+\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL");\r
+\r
+       unsigned int uCaps = 0;\r
+       *uCapacity = 0;\r
+\r
+       if (!m_Fps.bChecked) {\r
+               if (!cam_mm_get_caps_range(CAM_CP_FUNC_FPS, &uCaps, user_data)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED)\r
+                       m_Fps.bSupported = TRUE;\r
+               else\r
+                       m_Fps.bSupported = FALSE;\r
+\r
+               m_Fps.bChecked = TRUE;\r
+               m_Fps.bChecked = TRUE;\r
+               m_Fps.unCaps = uCaps;\r
+       }\r
+\r
+       *uCapacity = m_Fps.unCaps;\r
+       return TRUE;\r
+}\r
+\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevZoomCaps(int *min, int *max)\r
+{\r
+       cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL");\r
+\r
+       int nMin, nMax = 0;\r
+\r
+       if (!m_Zoom.bChecked) {\r
+               if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_ZOOM, &nMin, &nMax)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if ((nMin == 0) && (nMax == 0))\r
+                       m_Zoom.bSupported = FALSE;\r
+               else\r
+                       m_Zoom.bSupported = TRUE;\r
+\r
+               m_Zoom.bChecked = TRUE;\r
+               m_Zoom.nMin = nMin;\r
+               m_Zoom.nMax = nMax;\r
+       }\r
+\r
+       *min = m_Zoom.nMin;\r
+       *max = m_Zoom.nMax;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevEvCaps(int *min, int *max)\r
+{\r
+       cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL");\r
+\r
+       int nMin, nMax = 0;\r
+\r
+       if (!m_Ev.bChecked) {\r
+               if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_EXPOSURE, &nMin, &nMax)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if ((nMin == 0) && (nMax == 0))\r
+                       m_Ev.bSupported = FALSE;\r
+               else\r
+                       m_Ev.bSupported = TRUE;\r
+\r
+               m_Ev.bChecked = TRUE;\r
+               m_Ev.nMin = nMin;\r
+               m_Ev.nMax = nMax;\r
+       }\r
+\r
+       *min = m_Ev.nMin;\r
+       *max = m_Ev.nMax;\r
+       return TRUE;\r
+}\r
+\r
+bool\r
+CCamDeviceCapacity::GetCamDevBrCaps(int *min, int *max)\r
+{\r
+       cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL");\r
+\r
+       int nMin, nMax = 0;\r
+\r
+       if (!m_Br.bChecked) {\r
+               if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_BRIGHTNESS, &nMin, &nMax)) {\r
+                       cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail");\r
+                       return FALSE;\r
+               }\r
+\r
+               if ((nMin == 0) && (nMax == 0))\r
+                       m_Br.bSupported = FALSE;\r
+               else\r
+                       m_Br.bSupported = TRUE;\r
+\r
+               m_Br.bChecked = TRUE;\r
+               m_Br.nMin = nMin;\r
+               m_Br.nMax = nMax;\r
+       }\r
+\r
+       *min = m_Br.nMin;\r
+       *max = m_Br.nMax;\r
+       return TRUE;\r
+}\r
+\r
+\r
+// private\r
+bool\r
+CCamDeviceCapacity::IsSupported(unsigned int type, CamDeviceType deviceType, void *user_data)\r
+{\r
+       bool ret = FALSE;\r
+       unsigned int uCaps = 0;\r
+       int min, max = 0;\r
+\r
+       switch(type) {\r
+       case CAM_CP_FUNC_FPS:\r
+               {\r
+                       if (GetCamDevFpsCaps(&uCaps, user_data))\r
+                               ret = m_Fps.bSupported;\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_CAM_RESOLUTION:\r
+               {\r
+                       if (GetCamDevCamResolutionCaps(&uCaps, user_data))\r
+                               ret = m_CamRes.bSupported;\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_REC_RESOLUTION:\r
+               {\r
+                       if (GetCamDevRecResolutionCaps(&uCaps, user_data))\r
+                               ret = m_RecRes.bSupported;\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_FLASH_MODE:\r
+               {\r
+                       if (GetCamDevFlashCaps(&uCaps, user_data))\r
+                               ret = m_Flash.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_SHOT_MODE:\r
+               {\r
+                       if (GetCamDevShotModeCaps(&uCaps, user_data))\r
+                               ret = m_Shot.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_REC_MODE:\r
+               {\r
+                       if (GetCamDevRecModeCaps(&uCaps, user_data)) {\r
+                               ret = m_RecMode.bSupported;\r
+                               DEBUG_TRACE("ret:%d", ret);\r
+                       }\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_SCENE_MODE:\r
+               {\r
+                       if (GetCamDevSceneModeCaps(&uCaps, user_data))\r
+                               ret = m_Scene.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_FOCUS_MODE:\r
+               {\r
+                       if (GetCamDevFocusCaps(&uCaps, user_data))\r
+                               ret = m_Focus.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_EFFECT_MODE:\r
+               {\r
+                       if (GetCamDevEffectCaps(&uCaps, user_data))\r
+                               ret = m_Effect.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_WHITE_BALANCE:\r
+               {\r
+                       if (GetCamDevWBCaps(&uCaps, user_data))\r
+                               ret = m_WB.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_ISO:\r
+               {\r
+                       if (GetCamDevISOCaps(&uCaps, user_data))\r
+                               ret = m_ISO.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_METERING:\r
+               {\r
+                       if (GetCamDevMeteringCaps(&uCaps, user_data))\r
+                               ret = m_Metering.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_OUTDOOR:\r
+               {\r
+                       if (cam_mm_is_supported_outdoor_visibility())\r
+                               m_Outdoorvisibility.bSupported = TRUE;\r
+                       else\r
+                               m_Outdoorvisibility.bSupported = FALSE;\r
+\r
+                       ret = m_Outdoorvisibility.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_AUTO_CONTRAST:         // not supported mmfw\r
+               {\r
+               #ifdef CAMERA_MACHINE_I686\r
+                       ret = FALSE;\r
+               #else\r
+                       if (deviceType == CAM_DEVICE_MEGA)\r
+                               m_WDR.bSupported = TRUE;\r
+                       else\r
+                               m_WDR.bSupported = FALSE;\r
+                               ret = m_WDR.bSupported;\r
+               #endif\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_ZOOM:\r
+               {\r
+                       if (GetCamDevZoomCaps(&min, &max))\r
+                               ret = m_Zoom.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_BRIGHTNESS:\r
+               {\r
+                       if (GetCamDevBrCaps(&min, &max))\r
+                               ret = m_Br.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_EXPOSURE:\r
+               {\r
+                       if (GetCamDevEvCaps(&min, &max))\r
+                               ret = m_Ev.bSupported;\r
+               }\r
+               break;\r
+\r
+       case CAM_CP_FUNC_CAM_ANS:\r
+               {\r
+                       if (cam_mm_is_support_anti_hand_shake())\r
+                               ret = TRUE;\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_REC_ANS:               // not supported mmfw\r
+               ret = FALSE;\r
+               break;\r
+       case CAM_CP_FUNC_SELF_MODE:\r
+               {\r
+               #ifdef CAMERA_MACHINE_I686\r
+                       ret = FALSE;\r
+               #else\r
+                       if (cam_mm_is_support_front_camera())\r
+                               ret = TRUE;\r
+                       else\r
+                               ret = FALSE;\r
+               #endif\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_GPS:\r
+       case CAM_CP_FUNC_STORAGE:\r
+               {\r
+               #ifdef CAMERA_MACHINE_I686\r
+                       ret = FALSE;\r
+               #else\r
+                       ret = TRUE;\r
+               #endif\r
+               }\r
+               break;\r
+       case CAM_CP_FUNC_BURST_SHOT_MODE:\r
+               ret = TRUE;\r
+               break;\r
+       case CAM_CP_FUNC_CAPTURE_VOICE:\r
+               ret = FALSE;\r
+               break;\r
+       case CAM_CP_FUNC_SAVE_AS_FLIP:\r
+               {\r
+                       ret = FALSE;\r
+               }\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
diff --git a/src/CamTypeConverter.cpp b/src/CamTypeConverter.cpp
new file mode 100755 (executable)
index 0000000..b403a8a
--- /dev/null
@@ -0,0 +1,672 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include "CamTypeConverter.h"\r
+#include "cam_capacity_type.h"\r
+\r
+unsigned int\r
+CCamTypeConverter::CamIsoDevConvertCaps(camera_attr_iso_e iso)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(iso) {\r
+       case CAMERA_ATTR_ISO_AUTO:\r
+               ret = CAM_CP_ISO_AUTO;\r
+               break;\r
+       case CAMERA_ATTR_ISO_50:\r
+               ret = CAM_CP_ISO_50;\r
+               break;\r
+       case CAMERA_ATTR_ISO_100:\r
+               ret = CAM_CP_ISO_100;\r
+               break;\r
+       case CAMERA_ATTR_ISO_200:\r
+               ret = CAM_CP_ISO_200;\r
+               break;\r
+       case CAMERA_ATTR_ISO_400:\r
+               ret = CAM_CP_ISO_400;\r
+               break;\r
+       case CAMERA_ATTR_ISO_800:\r
+               ret = CAM_CP_ISO_800;\r
+               break;\r
+       case CAMERA_ATTR_ISO_1600:\r
+               ret = CAM_CP_ISO_1600;\r
+               break;\r
+       case CAMERA_ATTR_ISO_3200:\r
+               ret = CAM_CP_ISO_3200;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamIsoCamConvertCaps(CamIso iso)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(iso) {\r
+       case CAM_ISO_AUTO:\r
+               ret = CAM_CP_ISO_AUTO;\r
+               break;\r
+       case CAM_ISO_50:\r
+               ret = CAM_CP_ISO_50;\r
+               break;\r
+       case CAM_ISO_100:\r
+               ret = CAM_CP_ISO_100;\r
+               break;\r
+       case CAM_ISO_200:\r
+               ret = CAM_CP_ISO_200;\r
+               break;\r
+       case CAM_ISO_400:\r
+               ret = CAM_CP_ISO_400;\r
+               break;\r
+       case CAM_ISO_800:\r
+               ret = CAM_CP_ISO_800;\r
+               break;\r
+       case CAM_ISO_1600:\r
+               ret = CAM_CP_ISO_1600;\r
+               break;\r
+       case CAM_ISO_3200:\r
+               ret = CAM_CP_ISO_3200;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamEffectDevConvertCaps(camera_attr_effect_mode_e effect)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(effect){\r
+       case CAMERA_ATTR_EFFECT_NONE:\r
+               ret = CAM_CP_EFFECT_NONE;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_MONO:\r
+               ret = CAM_CP_EFFECT_MONO;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_SEPIA:\r
+               ret = CAM_CP_EFFECT_SEPIA;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_NEGATIVE:\r
+               ret = CAM_CP_EFFECT_NEGATIVE;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_CARTOON:\r
+               ret = CAM_CP_EFFECT_CARTOON;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_WASHED:\r
+               ret = CAM_CP_EFFECT_WASHED;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_SELECTIVE_RED_YELLOW:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_RED_YELLOW;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_SELECTIVE_BLUE:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_BLUE;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_SELECTIVE_GREEN:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_GREEN;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_SOLARIZATION:\r
+               ret = CAM_CP_EFFECT_SOLAR;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_POSTERIZATION:\r
+               ret = CAM_CP_EFFECT_POSTERIZATION;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_VINTAGE_WARM:\r
+               ret = CAM_CP_EFFECT_VINTAGE_WARM;\r
+               break;\r
+       case CAMERA_ATTR_EFFECT_VINTAGE_COLD:\r
+               ret = CAM_CP_EFFECT_VINTAGE_COLD;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamEffectCamConvertCaps(CamSettingsEffects effect)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(effect){\r
+       case CAM_SETTINGS_EFFECTS_NOR:\r
+               ret = CAM_CP_EFFECT_NONE;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_MONO:\r
+               ret = CAM_CP_EFFECT_MONO;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_SEPIA:\r
+               ret = CAM_CP_EFFECT_SEPIA;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_NEGATIVE:\r
+               ret = CAM_CP_EFFECT_NEGATIVE;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_CARTOON:\r
+               ret = CAM_CP_EFFECT_CARTOON;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_WASHED:\r
+               ret = CAM_CP_EFFECT_WASHED;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_SELECTIVE_RED_YELLOW:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_RED_YELLOW;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_SELECTIVE_BLUE:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_BLUE;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_SELECTIVE_GREEN:\r
+               ret = CAM_CP_EFFECT_SELECTIVE_GREEN;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_SOLARIZATION:\r
+               ret = CAM_CP_EFFECT_SOLAR;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_POSTERIZATION:\r
+               ret = CAM_CP_EFFECT_POSTERIZATION;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_VINTAGE_WARM:\r
+               ret = CAM_CP_EFFECT_VINTAGE_WARM;\r
+               break;\r
+       case CAM_SETTINGS_EFFECTS_VINTAGE_COLD:\r
+               ret = CAM_CP_EFFECT_VINTAGE_COLD;\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+\r
+unsigned int\r
+CCamTypeConverter::CamFpsDevConvertCaps(camera_attr_fps_e fps)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(fps) {\r
+       case CAMERA_ATTR_FPS_AUTO:\r
+               ret = CAM_CP_FPS_AUTO;\r
+               break;\r
+       case CAMERA_ATTR_FPS_8:\r
+               ret = CAM_CP_FPS_8;\r
+               break;\r
+    case CAMERA_ATTR_FPS_15:\r
+               ret = CAM_CP_FPS_15;\r
+               break;\r
+       case CAMERA_ATTR_FPS_24:\r
+               ret = CAM_CP_FPS_24;\r
+               break;\r
+       case CAMERA_ATTR_FPS_25:\r
+               ret = CAM_CP_FPS_25;\r
+               break;\r
+       case CAMERA_ATTR_FPS_30:\r
+               ret = CAM_CP_FPS_30;\r
+               break;\r
+       case CAMERA_ATTR_FPS_60:\r
+               ret = CAM_CP_FPS_60;\r
+               break;\r
+       case CAMERA_ATTR_FPS_120:\r
+               ret = CAM_CP_FPS_120;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamWbDevConvertCaps(camera_attr_whitebalance_e wb)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(wb) {\r
+       case CAMERA_ATTR_WHITE_BALANCE_NONE:\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_AUTOMATIC:\r
+               ret = CAM_CP_WB_AUTO;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_DAYLIGHT:\r
+               ret = CAM_CP_WB_DAYLIGHT;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_CLOUDY:\r
+               ret = CAM_CP_WB_CLOUDY;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_FLUORESCENT:\r
+               ret = CAM_CP_WB_FLUORESCENT;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_INCANDESCENT:\r
+               ret = CAM_CP_WB_INCANDESCENT;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_SHADE:\r
+               ret = CAM_CP_WB_SHADE;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_HORIZON:\r
+               ret = CAM_CP_WB_HORIZON;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_FLASH:\r
+               ret = CAM_CP_WB_FLASH;\r
+               break;\r
+       case CAMERA_ATTR_WHITE_BALANCE_CUSTOM:\r
+               ret = CAM_CP_WB_CUSTOM;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamWbCamConvertCaps(CamSettingsWB wb)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(wb) {\r
+       case CAM_SETTINGS_WB_AWB:\r
+               ret = CAM_CP_WB_AUTO;\r
+               break;\r
+       case CAM_SETTINGS_WB_DAYLIGHT:\r
+               ret = CAM_CP_WB_DAYLIGHT;\r
+               break;\r
+       case CAM_SETTINGS_WB_CLOUDY:\r
+               ret = CAM_CP_WB_CLOUDY;\r
+               break;\r
+       case CAM_SETTINGS_WB_FLUORESCENT:\r
+               ret = CAM_CP_WB_FLUORESCENT;\r
+               break;\r
+       case CAM_SETTINGS_WB_INCANDESCENT:\r
+               ret = CAM_CP_WB_INCANDESCENT;\r
+               break;\r
+       case CAM_SETTINGS_WB_SHADE:\r
+               ret = CAM_CP_WB_SHADE;\r
+               break;\r
+       case CAM_SETTINGS_WB_HORIZON:\r
+               ret = CAM_CP_WB_HORIZON;\r
+               break;\r
+       case CAM_SETTINGS_WB_FLASH:\r
+               ret = CAM_CP_WB_FLASH;\r
+               break;\r
+       case CAM_SETTINGS_WB_CUSTOM:\r
+               ret = CAM_CP_WB_CUSTOM;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+\r
+unsigned int\r
+CCamTypeConverter::CamFocusDevConvertCaps(camera_attr_af_mode_e focus)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(focus) {\r
+       case CAMERA_ATTR_AF_NONE:\r
+               ret = CAM_CP_FOCUS_NONE;\r
+               break;\r
+       case CAMERA_ATTR_AF_NORMAL:\r
+               ret = CAM_CP_FOCUS_AUTO_FOCUS;\r
+               break;\r
+       case CAMERA_ATTR_AF_MACRO:\r
+               ret = CAM_CP_FOCUS_MACRO;\r
+               break;\r
+       case CAMERA_ATTR_AF_FULL:\r
+               ret = CAM_CP_FOCUS_CAF;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamFocusCamConvertCaps(CamFocusMode focus)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(focus) {\r
+       case CAM_FOCUS_AUTO:\r
+               ret = CAM_CP_FOCUS_AUTO_FOCUS;\r
+               break;\r
+       case CAM_FOCUS_MACRO:\r
+               ret = CAM_CP_FOCUS_MACRO;\r
+               break;\r
+       case CAM_FOCUS_FACE:\r
+               ret = CAM_CP_FOCUS_FACE_DETECTION;\r
+               break;\r
+       case CAM_FOCUS_CAF:\r
+               ret = CAM_CP_FOCUS_CAF;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamMeteringDevConvertCaps(camera_attr_exposure_mode_e metering)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(metering) {\r
+       case CAMERA_ATTR_EXPOSURE_MODE_CENTER:\r
+               ret = CAM_CP_METERING_CENTERWEIGHT;\r
+               break;\r
+       case CAMERA_ATTR_EXPOSURE_MODE_SPOT:\r
+               ret = CAM_CP_METERING_SPOT;\r
+               break;\r
+       case CAMERA_ATTR_EXPOSURE_MODE_ALL:\r
+               ret = CAM_CP_METERING_MATRIX;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamMeteringCamConvertCaps(CamMetering type)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(type) {\r
+       case CAM_METERING_MATRIX:\r
+               ret = CAM_CP_METERING_MATRIX;\r
+               break;\r
+       case CAM_METERING_CENTER_WEIGHTED:\r
+               ret = CAM_CP_METERING_CENTERWEIGHT;\r
+               break;\r
+       case CAM_METERING_SPOT:\r
+               ret = CAM_CP_METERING_SPOT;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamSceneDevConvertCaps(camera_attr_scene_mode_e scene)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(scene) {\r
+       case CAMERA_ATTR_SCENE_MODE_NORMAL:\r
+               ret = CAM_CP_SCENE_MODE_AUTO;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_PORTRAIT:\r
+               ret = CAM_CP_SCENE_MODE_PORTRAIT;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_LANDSCAPE:\r
+               ret = CAM_CP_SCENE_MODE_LANDSCAPE;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_SPORTS:\r
+               ret = CAM_CP_SCENE_MODE_SPORTS;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_PARTY_N_INDOOR:\r
+               ret = CAM_CP_SCENE_MODE_PARTY_AND_INDOOR;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_BEACH_N_INDOOR:\r
+               ret = CAM_CP_SCENE_MODE_BEACH_AND_SNOW;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_SUNSET:\r
+               ret = CAM_CP_SCENE_MODE_SUNSET;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_DUSK_N_DAWN:\r
+               ret = CAM_CP_SCENE_MODE_DUSK_AND_DAWN;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_FALL_COLOR:\r
+               ret = CAM_CP_SCENE_MODE_FALLCOLOR;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_NIGHT_SCENE:\r
+               ret = CAM_CP_SCENE_MODE_NIGHTSHOT;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_FIREWORK:\r
+               ret = CAM_CP_SCENE_MODE_FIREWORK;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_TEXT:\r
+               ret = CAM_CP_SCENE_MODE_TEXT;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_CANDLE_LIGHT:\r
+               ret = CAM_CP_SCENE_MODE_CANDLE_LIGHT;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_BACKLIGHT:\r
+               ret = CAM_CP_SCENE_MODE_BACK_LIGHT;\r
+               break;\r
+       case CAMERA_ATTR_SCENE_MODE_SHOW_WINDOW:\r
+               ret = CAM_CP_SCENE_MODE_SHOW_WINDOW;\r
+               break;\r
+       default:\r
+                       break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+\r
+unsigned int\r
+CCamTypeConverter::CamSceneCamConvertCaps(CamSceneMode scene)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(scene) {\r
+       case CAM_SCENE_NONE:\r
+               ret = CAM_CP_SCENE_MODE_AUTO;\r
+               break;\r
+       case CAM_SCENE_PORTRAIT:\r
+               ret = CAM_CP_SCENE_MODE_PORTRAIT;\r
+               break;\r
+       case CAM_SCENE_LANDSCAPE:\r
+               ret = CAM_CP_SCENE_MODE_LANDSCAPE;\r
+               break;\r
+       case CAM_SCENE_SPORTS:\r
+               ret = CAM_CP_SCENE_MODE_SPORTS;\r
+               break;\r
+       case CAM_SCENE_PARTY:\r
+               ret = CAM_CP_SCENE_MODE_PARTY_AND_INDOOR;\r
+               break;\r
+       case CAM_SCENE_BEACHSNOW:\r
+               ret = CAM_CP_SCENE_MODE_BEACH_AND_SNOW;\r
+               break;\r
+       case CAM_SCENE_SUNSET:\r
+               ret = CAM_CP_SCENE_MODE_SUNSET;\r
+               break;\r
+       case CAM_SCENE_DUSKDAWN:\r
+               ret = CAM_CP_SCENE_MODE_DUSK_AND_DAWN;\r
+               break;\r
+       case CAM_SCENE_FALL:\r
+               ret = CAM_CP_SCENE_MODE_FALLCOLOR;\r
+               break;\r
+       case CAM_SCENE_NIGHT:\r
+               ret = CAM_CP_SCENE_MODE_NIGHTSHOT;\r
+               break;\r
+       case CAM_SCENE_FIREWORK:\r
+               ret = CAM_CP_SCENE_MODE_FIREWORK;\r
+               break;\r
+       case CAM_SCENE_TEXT:\r
+               ret = CAM_CP_SCENE_MODE_TEXT;\r
+               break;\r
+       case CAM_SCENE_CANDLELIGHT:\r
+               ret = CAM_CP_SCENE_MODE_CANDLE_LIGHT;\r
+               break;\r
+       case CAM_SCENE_BACKLIGHT:\r
+               ret = CAM_CP_SCENE_MODE_BACK_LIGHT;\r
+               break;\r
+       case CAM_SCENE_SHOW_WINDOW:\r
+               ret = CAM_CP_SCENE_MODE_SHOW_WINDOW;\r
+               break;\r
+       default:\r
+                       break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamFlashDevConvertCaps(camera_attr_flash_mode_e flash)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(flash) {\r
+       case CAMERA_ATTR_FLASH_MODE_OFF:\r
+               ret = CAM_CP_FLASH_OFF;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_ON:\r
+               ret = CAM_CP_FLASH_ON;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_AUTO:\r
+               ret = CAM_CP_FLASH_AUTO;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_REDEYE_REDUCTION:\r
+               ret = CAM_CP_FLASH_REDEYE;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_SLOW_SYNC:\r
+               ret = CAM_CP_FLASH_SLOW_SYNC;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_FRONT_CURTAIN:\r
+               ret = CAM_CP_FLASH_FRONT_CURTAIN;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_REAR_CURTAIN:\r
+               ret = CAM_CP_FLASH_REAR_CURTAIN;\r
+               break;\r
+       case CAMERA_ATTR_FLASH_MODE_PERMANENT:\r
+               ret = CAM_CP_FLASH_PERMANENT;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamFlashCamConvertCaps(CamFlashMode flash)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(flash) {\r
+       case CAM_FLASH_OFF:\r
+               ret = CAM_CP_FLASH_OFF;\r
+               break;\r
+       case CAM_FLASH_ON:\r
+               ret = CAM_CP_FLASH_ON;\r
+               break;\r
+       case CAM_FLASH_AUTO:\r
+               ret = CAM_CP_FLASH_AUTO;\r
+               break;\r
+       case CAM_FLASH_MOVIE_ON:\r
+               ret = CAM_CP_FLASH_PERMANENT;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+unsigned int\r
+CCamTypeConverter::CamResolutionCamConvertCaps(unsigned int res)\r
+{\r
+       unsigned int ret = 0;\r
+\r
+       switch(res) {\r
+       case CAM_RESOLUTION_3264x2448:\r
+               ret = CAM_CP_SIZE_3264X2448;\r
+               break;\r
+       case CAM_RESOLUTION_3264x2176:\r
+               ret = CAM_CP_SIZE_3264X2176;\r
+               break;\r
+       case CAM_RESOLUTION_3264x1960:\r
+               ret = CAM_CP_SIZE_3264X1960;\r
+               break;\r
+       case CAM_RESOLUTION_3264x1836:\r
+               ret = CAM_CP_SIZE_3264X1836;\r
+               break;\r
+       case CAM_RESOLUTION_2560x1920:\r
+               ret = CAM_CP_SIZE_2560X1920;\r
+               break;\r
+       case CAM_RESOLUTION_2560x1536:\r
+               ret = CAM_CP_SIZE_2560X1536;\r
+               break;\r
+       case CAM_RESOLUTION_2560x1440:\r
+               ret = CAM_CP_SIZE_2560X1440;\r
+               break;\r
+       case CAM_RESOLUTION_2048x1536:\r
+               ret = CAM_CP_SIZE_2048X1536;\r
+               break;\r
+       case CAM_RESOLUTION_2048x1152:\r
+               ret = CAM_CP_SIZE_2048X1152;\r
+               break;\r
+       case CAM_RESOLUTION_1920x1080:\r
+               ret = CAM_CP_SIZE_1920X1080;\r
+               break;\r
+       case CAM_RESOLUTION_1600x1200:\r
+               ret = CAM_CP_SIZE_1600X1200;\r
+               break;\r
+       case CAM_RESOLUTION_1392x1392:\r
+               ret = CAM_CP_SIZE_1392X1392;\r
+               break;\r
+       case CAM_RESOLUTION_1280x960:\r
+               ret = CAM_CP_SIZE_1280X960;\r
+               break;\r
+       case CAM_RESOLUTION_1280x720:\r
+               ret = CAM_CP_SIZE_1280X720;\r
+               break;\r
+       case CAM_RESOLUTION_SVGA:\r
+               ret = CAM_CP_SIZE_800X600;\r
+               break;\r
+       case CAM_RESOLUTION_WVGA:\r
+               ret = CAM_CP_SIZE_800X480;\r
+               break;\r
+       case CAM_RESOLUTION_WVGA2:\r
+               ret = CAM_CP_SIZE_720X480;\r
+               break;\r
+       case CAM_RESOLUTION_VGA:\r
+               ret = CAM_CP_SIZE_640X480;\r
+               break;\r
+       case CAM_RESOLUTION_WQVGA:\r
+               ret = CAM_CP_SIZE_400X240;\r
+               break;\r
+       case CAM_RESOLUTION_QVGA:\r
+               ret = CAM_CP_SIZE_320X240;\r
+               break;\r
+       case CAM_RESOLUTION_QCIF:\r
+               ret = CAM_CP_SIZE_176X144;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return ret;\r
+}\r
+\r
+\r
diff --git a/src/cam.c b/src/cam.c
new file mode 100755 (executable)
index 0000000..15cd62a
--- /dev/null
+++ b/src/cam.c
@@ -0,0 +1,924 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+
+#include <stdio.h>
+#include <pthread.h>
+#include <X11/Xlib.h>
+#include <utilX.h>
+#include <power.h>
+#include <ui-gadget-module.h>
+#include "cam.h"
+#include "cam_app.h"
+#include "camera_utils.h"
+#include "cam_ta.h"
+#include "cam_mm.h"
+#include "cam_debug.h"
+#include "cam_toolbar_edc_callback.h"
+#include "cam_zoom_edc_callback.h"
+#include "cam_indicator_edc_callback.h"
+#include "cam_common_edc_callback.h"
+#include "cam_rec.h"
+#include "cam_file.h"
+#include "cam_menu_composer.h"
+#include "cam_device_capacity.h"
+
+
+#define CAM_EXT_LIB_PATH "/usr/lib/libcamera-external-engine.so"
+
+void *handle = NULL;
+
+
+static Evas_Object *__create_base_layout(Evas_Object *parent);
+static void __low_battery_cb(void *data);
+static gboolean __device_orientation_cb(app_device_orientation_e mode, void *data);
+static int __is_idle_lock(void);
+static Eina_Bool __resume_camera(void* data);
+static int __convert_orientation_to_angle(app_device_orientation_e orientation);
+void *__cam_start_thread_run(void *data);
+static void __accelerometer_cb(unsigned long long timestamp, sensor_data_accuracy_e accuracy, float x, float y, float z, void *user_data);
+static gboolean __start_sensor(void* data);
+
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("==on_create==", 0);
+       cam_debug(LOG_UI, "############## on_create START ##############");
+
+       cam_retvm_if(ug == NULL, NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+       Ecore_X_Display *dpy = NULL;
+
+       bindtextdomain(PACKAGE, "/usr/ug/res/locale");
+
+       ad->camera_ug = ug;
+
+       /* get parent's layout */
+       ad->win_main = ug_get_window();
+       cam_retvm_if(ad->win_main == NULL, NULL, "ug_get_window failed");
+
+       /* create base layout */
+       ad->ug_base = __create_base_layout(ad->win_main);
+       cam_retvm_if(ad->ug_base == NULL, NULL, "__create_base_layout failed");
+
+       /* Camera does not support desktop mode */
+       const char *str = "mobile";
+       elm_win_profiles_set(ad->win_main, &str, 1);
+
+       /* remove effect */
+       dpy = ecore_x_display_get();
+       if (dpy) {
+               Ecore_X_Window win;
+               win = elm_win_xwindow_get(ad->win_main);
+
+               cam_debug(LOG_UI, "dpy is not null .. set no effect to display = %d\n", win);
+               utilx_set_window_effect_style(dpy, win,
+                                             UTILX_EFFECT_TYPE_ROTATION,
+                                             UTILX_EFFECT_STYLE_NONE);
+       }
+
+       ad->evas = evas_object_evas_get(ad->win_main);
+       ad->ee = ecore_evas_ecore_evas_get(ad->evas);
+       ad->main_xid = elm_win_xwindow_get(ad->win_main);
+
+       /* camera application initialization */
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_app_init", 0);
+       if (!cam_app_init(ad)) {
+               cam_critical(LOG_UI, "cam_app_init failed");
+               return NULL;
+       }
+       CAM_TA_ACUM_ITEM_END("  cam_app_init", 0);
+
+       /*add camera exteral engine lib load*/
+       if (!open_cam_ext_handle()) {
+               cam_critical(LOG_UI, "open_cam_ext_handle failed");
+       }
+
+       ad->rot_current = app_get_device_orientation();
+       ad->rot_previous = ad->rot_current;
+       int win_angle = elm_win_rotation_get(ad->win_main);
+       ad->angle = __convert_orientation_to_angle(ad->rot_current);
+
+       if(win_angle != ad->angle) {
+               cam_critical(LOG_UI, "win_angle:%d device_angle:%d ", win_angle, ad->angle);
+               elm_win_rotation_with_resize_set(ad->win_main, ad->angle);
+       }
+
+       evas_object_show(ad->win_main);
+
+       if (!cam_check_dir()) {
+               cam_app_notice_popup(ad, "Cannot make default path", cam_app_timeout_notice_response_cb);
+               return NULL;
+       }
+
+       if (!cam_utils_check_torchlight_status(ad)) {
+               DEBUG_TRACE("Can not get torchlight status");
+       }
+
+       /* remove exe args */
+       if (ad->exe_args) {
+               if (ad->exe_args->caller) {
+                       free(ad->exe_args->caller);
+                       ad->exe_args->caller = NULL;
+               }
+               free(ad->exe_args);
+               ad->exe_args = NULL;
+       }
+
+       char *operation = NULL;
+       int ret = service_get_operation(service, &operation);
+       if (ret != SERVICE_ERROR_NONE) {
+               cam_critical(LOG_UI, "service_get_operation failed");
+               return NULL;
+       }
+
+       if (operation == NULL) {
+               cam_critical(LOG_UI, "operation is null");
+               return NULL;
+       }
+
+       if (strcmp(operation, SERVICE_OPERATION_CREATE_CONTENT) == 0) {
+               cam_debug(LOG_UI, "Operation is SERVICE_OPERATION_CREATE_CONTENT");
+
+               ad->launching_mode = CAM_LAUNCHING_MODE_EXTERNAL;
+
+               ret = service_clone(&ad->service_handle, service);
+               if (ret != SERVICE_ERROR_NONE) {
+                       cam_critical(LOG_UI, "service_clone failed");
+                       return NULL;
+               }
+
+               CamExeArgs *args = (CamExeArgs *)malloc(sizeof(CamExeArgs));
+               if (args == NULL) {
+                       cam_critical(LOG_UI, "Memory allocation failed");
+                       return NULL;
+               }
+               memset(args, 0, sizeof(CamExeArgs));
+
+               if (!cam_app_parse_args(args, service)) {
+                       cam_critical(LOG_UI, "cam_app_parse_args failed");
+                       if (args) {
+                               if (args->caller) {
+                                       free(args->caller);
+                                       args->caller = NULL;
+                               }
+                               free(args);
+                               args = NULL;
+                       }
+                       return NULL;
+               }
+               ad->exe_args = args;
+
+               if (!cam_mm_create(CAM_DEVICE_MEGA, ad->exe_args->cam_mode)) {
+                       cam_critical(LOG_MM, "cam_mm_create failed");
+                       ad->error_type = CAM_ERROR_TYPE_UNABLE_TO_LAUNCH;
+                       return NULL;
+               }
+
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_handle_init", 0);
+               if (!cam_handle_init(ad, ad->exe_args->cam_mode)) {
+                       cam_critical(LOG_CAM, "cam_handle_init failed");
+                       return NULL;
+               }
+               CAM_TA_ACUM_ITEM_END("    cam_handle_init", 0);
+
+               cam_app_init_with_args(ad);
+       } else {
+               ad->launching_mode = CAM_LAUNCHING_MODE_NORMAL;
+
+               if (!cam_mm_create(CAM_DEVICE_MEGA, CAM_CAMERA_MODE)) {
+                       cam_critical(LOG_MM, "cam_mm_create failed");
+                       ad->error_type = CAM_ERROR_TYPE_UNABLE_TO_LAUNCH;
+                       return NULL;
+               }
+
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_handle_init", 0);
+               if (!cam_handle_init(ad, CAM_CAMERA_MODE)) {
+                       cam_critical(LOG_CAM, "cam_handle_init failed");
+                       return NULL;
+               }
+               CAM_TA_ACUM_ITEM_END("    cam_handle_init", 0);
+       }
+
+       ad->error_type = CAM_ERROR_TYPE_NONE;
+
+       if (cam_utils_check_battery_critical_low()) {
+               ad->battery_status = LOW_BATTERY_CRITICAL_STATUS;
+       } else if (cam_utils_check_battery_warning_low()) {
+               ad->battery_status = LOW_BATTERY_WARNING_STATUS;
+       } else {
+               ad->battery_status = NORMAL_BATTERY_STATUS;
+       }
+
+       if (cam_utils_check_call_running())
+               ad->is_calling = TRUE;
+       else
+               ad->is_calling = FALSE;
+
+       if ( ad->battery_status != LOW_BATTERY_CRITICAL_STATUS
+               || ad->is_calling == FALSE) {
+               if (pthread_create(&(ad->camera_start_thread), NULL, __cam_start_thread_run, (void *)ad) < 0) {
+                       cam_critical(LOG_CAM, "Create camera start thread failed");
+                       return NULL;
+               }
+       }
+
+       cam_debug(LOG_UI, "############## on_create END ##############");
+       CAM_TA_ACUM_ITEM_END("==on_create==", 0);
+
+       return ad->ug_base;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("==on_start==", 0);
+       cam_debug(LOG_UI, "############## on_start START ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       ad->ug_state = CAM_UG_RESET_STATE;
+
+#ifdef EFL_TEMP_CODE
+       cam_win_transparent_set(ad);
+#endif
+
+       cam_app_get_win_size(ad);
+
+       power_lock_state(POWER_STATE_NORMAL, 0);
+
+       /*elm_win_alpha_set(ad->win_main, EINA_TRUE);*/
+
+       ad->setting_menu_composer = NULL;
+
+       if( ad->setting_menu_composer == NULL){
+               ad->setting_menu_composer = calloc(1, sizeof(cam_menu_composer));
+               cam_compose_setting_menu((void*)ad, ad->setting_menu_composer);
+       }
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_layout_init", 0);
+       if (!cam_layout_init(ad)) {
+               cam_critical(LOG_UI, "cam_layout_init failed");
+               return;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_layout_init", 0);
+
+       __start_sensor(ad);
+
+       cam_debug(LOG_UI, "############## on_start END##############");
+       CAM_TA_ACUM_ITEM_END("==cam_service==", 0);
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("==on_pause==", 0);
+       cam_debug(LOG_UI, "############## on_pause ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       ad->ug_state = CAM_UG_PAUSE_STATE;
+
+       int ret = -1;
+       ret = sensor_stop(ad->sensor, SENSOR_ACCELEROMETER);
+       if(ret != SENSOR_ERROR_NONE){
+               cam_critical(LOG_MM, "sensor_stop fail %d", ret);
+               return;
+       }
+
+       if (ad->location_ug) {
+               ug_destroy(ad->location_ug);
+               ad->location_ug = NULL;
+       }
+
+       if (ad->imageviewer_ug) {
+               DEBUG_TRACE("imageviewer_ug exist");
+               return;
+       }
+
+       CAM_TA_ACUM_ITEM_BEGIN("  app_stop", 0);
+       DEBUG_TRACE(" ");
+
+       cam_app_pause(ad);
+
+       power_unlock_state(POWER_STATE_NORMAL);
+       CAM_TA_ACUM_ITEM_END("  app_stop", 0);
+
+       CAM_TA_ACUM_ITEM_END("==on_pause==", 0);
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("==on_resume==", 0);
+       cam_debug(LOG_UI, "############## on_resume ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       ad->ug_state = CAM_UG_RESUME_STATE;
+
+       evas_object_raise(ad->win_main);
+
+       if (!cam_check_dir()) {
+               cam_app_notice_popup(ad, "Cannot make default path",
+                        cam_app_timeout_notice_response_cb);
+               return;
+       }
+
+       int ret = -1;
+       ret =  sensor_start(ad->sensor, SENSOR_ACCELEROMETER);
+       if(ret != SENSOR_ERROR_NONE){
+               cam_critical(LOG_MM, "sensor_start fail %d ", ret);
+               return;
+       }
+
+       cam_mm_set_display_visible(TRUE);
+
+       if (!cam_utils_check_torchlight_status(ad)) {
+               DEBUG_TRACE("Can not get torchlight status");
+       }
+
+       app_device_orientation_e rot_current = app_get_device_orientation();
+       DEBUG_TRACE("rot_current:%d, ad->rot_current:%d, ad->angle:%d", rot_current, ad->rot_current, ad->angle);
+       if (rot_current != ad->rot_current) {
+               ecore_idler_add(__resume_camera, ad);
+       }
+
+       if (ad->imageviewer_ug) {       /* bug fix camera app overlab with imageviewer_ug */
+               DEBUG_TRACE("imageviewer_ug exist");
+               return;
+       }
+
+       power_lock_state(POWER_STATE_NORMAL, 0);
+
+       CAM_TA_INIT();
+
+       if (ad) {
+               CAM_TA_ACUM_ITEM_BEGIN("  cam_app_resume", 0);
+               if (!cam_app_resume(ad))
+                       return;
+               CAM_TA_ACUM_ITEM_END("  cam_app_resume", 0);
+       }
+
+       CAM_TA_ACUM_ITEM_END("==on_resume==", 0);
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("==on_destroy==", 0);
+       cam_debug(LOG_UI, "############## on_destroy ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       ad->ug_state = CAM_UG_TERMINATE_STATE;
+
+    sensor_accelerometer_unset_cb(ad->sensor);
+       if(sensor_stop(ad->sensor, SENSOR_ACCELEROMETER) == SENSOR_ERROR_NONE)
+               sensor_destroy(ad->sensor);
+
+       if (ad->camera_start_thread) {
+               pthread_join(ad->camera_start_thread, NULL);
+       }
+
+#ifdef USE_FIFO_THREAD
+       cam_app_FIFO_thread_exit();
+#endif
+
+       cam_app_file_register_thread_exit(ad);
+
+       cam_continuous_shot_file_save_thread_exit(ad);
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_app_stop", 0);
+       cam_app_stop(ad);
+       CAM_TA_ACUM_ITEM_END("  cam_app_stop", 0);
+
+       power_unlock_state(POWER_STATE_NORMAL);
+
+       CAM_TA_ACUM_ITEM_SHOW_RESULT_TO(CAM_TA_SHOW_FILE);
+       CAM_TA_RELEASE();
+
+       close_cam_ext_handle();
+
+       CAM_TA_ACUM_ITEM_END("==on_destroy==", 0);
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+       cam_critical(LOG_UI, "############## on_message ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       /* Check service for DFT mmi-check */
+       if ((ad->ug_state == CAM_UG_RESUME_STATE) || (ad->ug_state == CAM_UG_RESET_STATE)) {
+               char *mmi_check = NULL;
+               service_get_extra_data(service, "MMICHECK_CAMERA", (char **)&mmi_check);
+               if (mmi_check) {
+                       cam_critical(LOG_UI, "MMICHECK_CAMERA %s", mmi_check);
+                       if (0 == strcmp(mmi_check, "1")) {
+                               if (!cam_do_capture(ad)) {
+                                       cam_critical(LOG_UI, "cam_do_capture failed");
+                               }
+                       }
+               } else {
+                       cam_critical(LOG_UI, "not mmi check case, error!");
+               }
+       }
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+       cam_critical(LOG_UI, "############## on_event ##############");
+
+       cam_retm_if(ug == NULL, "ui_gadget_h is NULL");
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       switch (event) {
+       case UG_EVENT_LOW_BATTERY:
+               __low_battery_cb(ad);
+               break;
+       case UG_EVENT_LANG_CHANGE:
+       case UG_EVENT_ROTATE_PORTRAIT:
+       case UG_EVENT_ROTATE_LANDSCAPE:
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+       case UG_EVENT_LOW_MEMORY:
+       case UG_EVENT_REGION_CHANGE:
+       default:
+               DEBUG_TRACE("Ignore Event - [%d]", event);
+               break;
+       }
+}
+
+gboolean open_cam_ext_handle()
+{
+       if (!handle) {
+               /*NOTE: RTLD_LAZY: it will check dynamic lib api while use it,
+                               RTLD_NOW: it will check each api before open dynamic lib*/
+               handle = dlopen(CAM_EXT_LIB_PATH, RTLD_LAZY);
+               if ( !handle ) {
+                       char *msg = NULL;
+                       msg = strdup(dlerror());
+                       DEBUG_TRACE("error: %s", msg);
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
+void close_cam_ext_handle()
+{
+       if (handle) {
+               dlclose(handle);
+               handle = NULL;
+       }
+}
+
+static Evas_Object *__create_base_layout(Evas_Object *parent)
+{
+       Evas_Object *base;
+       int r = 0;
+
+       base = elm_layout_add(parent);
+       cam_retvm_if(base == NULL, NULL, "elm_layout_add failed");
+
+       r = elm_layout_file_set(base, CAM_MAIN_LAYOUT_EDJ_NAME, "main_layout");
+       if (!r) {
+               evas_object_del(base);
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(base);
+
+       return base;
+}
+
+static void __low_battery_cb(void *data)
+{
+       cam_info(LOG_SYS, "Low battery !!");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       if (evas_object_visible_get(ad->win_main)) {
+               int state = cam_mm_get_state();
+               if ((state == RECORDER_STATE_RECORDING
+                   || state == RECORDER_STATE_PAUSED)
+                   &&camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                       camapp->rec_stop_type = CAM_REC_STOP_LOW_BATTERY;
+                       ad->recording_commit =
+                           ecore_idler_add(cam_video_idler_record_stop, ad);
+               } else {
+                       cam_app_exit(ad);
+               }
+       }
+}
+
+static gboolean __device_orientation_cb(app_device_orientation_e mode, void *data)
+{
+       cam_debug(LOG_UI, "############## cam_device_orientation_cb ##############");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad->camapp_handle == NULL, FALSE, "ad->camapp_handle is NULL");
+
+       if(ad->camapp_handle->continuous_shot_data &&
+                       ad->camapp_handle->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING){
+               cam_debug(LOG_UI, "capturing");
+               return FALSE;
+       }
+       if (ad->bestshot_thumbnails_edje) {
+               cam_debug(LOG_UI, "is creating best shot thumbnails");
+               return FALSE;
+       }
+       cam_debug(LOG_UI, "rotated : %d", mode);
+
+       /*TODO: now just return, if the last rotated is not finished*/
+       if (ad->is_rotating) {
+               cam_debug(LOG_UI, "rotating...");
+               return FALSE;
+       }
+
+       int angle = 0;
+       ui_gadget_h ug = NULL;
+
+       enum ug_event ev = UG_EVENT_ROTATE_LANDSCAPE;
+       ad->rot_previous = ad->rot_current;
+       ad->rot_current = mode;
+
+       if (ad->toolbar_edj_file)
+               free(ad->toolbar_edj_file);
+       ad->toolbar_edj_file = NULL;
+
+       switch (mode) {
+       case APP_DEVICE_ORIENTATION_0:
+               angle = 0;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT;
+               ev = UG_EVENT_ROTATE_PORTRAIT;
+               ad->camcorder_rotate = CAMERA_ROTATION_90;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               angle = 270;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE;
+               ev = UG_EVENT_ROTATE_LANDSCAPE;
+               ad->camcorder_rotate = CAMERA_ROTATION_NONE;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               angle = 180;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT_INVERSE;
+               ev = UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN;
+               ad->camcorder_rotate = CAMERA_ROTATION_270;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_INVERSE_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               angle = 90;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE;
+               ev = UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN;
+               ad->camcorder_rotate = CAMERA_ROTATION_180;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_INVERSE_EDJ_NAME);
+               break;
+
+       default:
+               break;
+       }
+       ad->angle = angle;
+
+       if (ad->imageviewer_ug) {
+               ug = ad->imageviewer_ug;
+       } else if (ad->location_ug) {
+               ug = ad->location_ug;
+       }
+       if (ug) {
+               enum ug_mode md = ug_get_mode(ug);
+               if (md == UG_MODE_FULLVIEW) {
+
+                       int rotate = 0;
+                       int ret = -1;
+
+                       ret = vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &rotate);
+                       if (ret != 0) {
+                               return FALSE;
+                       }
+
+                       if (rotate == 0) {
+                               cam_critical(LOG_UI, "Rotation is lock");
+                               return FALSE;
+                       }
+
+                       elm_win_rotation_with_resize_set(ad->win_main, angle);
+                       /* send event to ug */
+                       ug_send_event(ev);
+               }
+       } else {
+
+               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_ROTATE_ANIMATOR);
+       }
+
+       return TRUE;
+}
+
+static int __is_idle_lock(void)
+{
+       int vconf_val = 0;
+       int vconf_ret = 0;
+
+       vconf_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &vconf_val);
+       if(vconf_ret == 0){
+               if (vconf_val == VCONFKEY_IDLE_LOCK) {
+                       DEBUG_TRACE("  IDLE IN LOCK STATE  ");
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+static Eina_Bool __resume_camera(void *data)
+{
+       struct appdata *ad = data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       ad->rot_current = app_get_device_orientation();
+       ad->rot_previous = ad->rot_current;
+       int angle = 0;
+       ui_gadget_h ug = NULL;
+       enum ug_event ev = UG_EVENT_ROTATE_LANDSCAPE;
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               angle = 0;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT;
+               ev = UG_EVENT_ROTATE_PORTRAIT;
+               ad->camcorder_rotate = CAMERA_ROTATION_90;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               angle = 270;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE;
+               ev = UG_EVENT_ROTATE_LANDSCAPE;
+               ad->camcorder_rotate = CAMERA_ROTATION_NONE;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               angle = 180;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT_INVERSE;
+               ev = UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN;
+               ad->camcorder_rotate = CAMERA_ROTATION_270;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_INVERSE_EDJ_NAME);
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               angle = 90;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE;
+               ev = UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN;
+               ad->camcorder_rotate = CAMERA_ROTATION_180;
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_INVERSE_EDJ_NAME);
+               break;
+
+       default:
+               break;
+       }
+       ad->angle = angle;
+       if (ad->imageviewer_ug) {
+               ug = ad->imageviewer_ug;
+       } else if (ad->location_ug) {
+               ug = ad->location_ug;
+       }
+       if (ug) {
+               enum ug_mode md = ug_get_mode(ug);
+               if (md == UG_MODE_FULLVIEW) {
+                       elm_win_rotation_with_resize_set(ad->win_main, ad->angle);
+                       /* send event to ug      */
+                       ug_send_event(ev);
+               }
+       } else {
+               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_ROTATE_ANIMATOR);
+       }
+       return ECORE_CALLBACK_CANCEL;
+
+}
+
+static int __convert_orientation_to_angle(app_device_orientation_e orientation)
+{
+
+       switch (orientation) {
+       case APP_DEVICE_ORIENTATION_0:
+               return 0;
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               return 180;
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               return 270;
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               return 90;
+               break;
+       default:
+               return 0;
+       }
+}
+
+void *__cam_start_thread_run(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, NULL);
+
+       if(cam_mm_is_created()){
+               if (!cam_app_start(ad)){
+                       cam_critical(LOG_CAM, "cam_app_start failed");
+                       ad->error_type = CAM_ERROR_TYPE_UNABLE_TO_LAUNCH;
+               }
+       }
+
+       if(ad->error_type == CAM_ERROR_TYPE_UNABLE_TO_LAUNCH){
+               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_ERROR_POPUP);
+       }
+
+       ad->camera_start_thread = NULL;
+       pthread_exit(NULL);
+
+       return NULL;
+}
+
+static void __accelerometer_cb(unsigned long long timestamp, sensor_data_accuracy_e accuracy, float x, float y, float z, void *user_data)
+{
+       #define RADIAN_VALUE (57.2957)
+       #define PITCH_MIN       35
+       #define PITCH_MAX       145
+
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->ug_state == CAM_UG_TERMINATE_STATE
+               || ad->ug_state == CAM_UG_PAUSE_STATE) {/*NOTE: in pause state, and terminate state, not cb*/
+               return ;
+       }
+
+       double atan_v, norm_z, raw_z;
+       int acc_theta, acc_pitch;
+
+       static app_device_orientation_e rotate = APP_DEVICE_ORIENTATION_0;
+
+       atan_v = atan2(y, x);
+       acc_theta = (int)(atan_v * (RADIAN_VALUE) + 270)%360;
+       raw_z = (double)(z/(0.004 * 9.81));
+
+       if (raw_z > 250) {
+               norm_z = 1.0;
+       } else if (raw_z < -250) {
+               norm_z = -1.0;
+       } else {
+               norm_z = ((double)raw_z)/250;
+       }
+
+       acc_pitch = (int)(acos(norm_z) * (RADIAN_VALUE));
+
+       if ((acc_pitch > 35) && (acc_pitch < 145)) {
+               if ((acc_theta >= 315 && acc_theta <= 359) || (acc_theta >=0 && acc_theta < 45)) {
+                       rotate = APP_DEVICE_ORIENTATION_0;
+               } else if (acc_theta >= 45 && acc_theta < 135) {
+                       rotate = APP_DEVICE_ORIENTATION_90;
+               } else if (acc_theta >= 135 && acc_theta < 225) {
+                       rotate = APP_DEVICE_ORIENTATION_180;
+               } else if (acc_theta >= 225 && acc_theta < 315) {
+                       rotate = APP_DEVICE_ORIENTATION_270;
+               }
+       }
+
+       ad->rot_current = rotate;
+       if (ad->rot_previous != rotate) {
+               if(__device_orientation_cb(rotate, (void*)ad)){
+                       ad->rot_previous = ad->rot_current;
+               }
+       }
+}
+
+static gboolean __start_sensor(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       int ret = -1;
+       ret = sensor_create(&ad->sensor);
+       if(ret != SENSOR_ERROR_NONE)
+       {
+               cam_critical(LOG_UI, "sensor_create fail %d", ret);
+               return FALSE;
+       }
+
+
+       bool is_supported = FALSE;
+
+
+       ret = sensor_is_supported(SENSOR_ACCELEROMETER, &is_supported);
+       if(ret != SENSOR_ERROR_NONE)
+       {
+               cam_critical(LOG_UI, "sensor_create fail %d", ret);
+               return FALSE;
+       }
+
+       if (is_supported == FALSE) {
+               cam_critical(LOG_UI, "sensor_create fail %d", ret);
+       }else{
+
+               sensor_accelerometer_set_cb(ad->sensor, 300, __accelerometer_cb, (void*)ad);
+               ret = sensor_start(ad->sensor, SENSOR_ACCELEROMETER );
+
+               if(ret != SENSOR_ERROR_NONE)
+               {
+                       cam_critical(LOG_UI, "sensor_start fail %d", ret);
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       struct appdata *ugd;
+
+       cam_debug(LOG_UI, "UG_MODULE_INIT");
+
+       if (!ops) {
+               cam_critical(LOG_UI, "ops is NULL");
+               return -1;
+       }
+
+       ugd = calloc(1, sizeof(struct appdata));
+       if (!ugd) {
+               cam_critical(LOG_UI, "Memory allocation failed.");
+               return -1;
+       }
+
+       CAM_TA_INIT();
+       g_type_init();
+
+       ops->create = on_create;
+       ops->start = on_start;
+       ops->pause = on_pause;
+       ops->resume = on_resume;
+       ops->destroy = on_destroy;
+       ops->message = on_message;
+       ops->event = on_event;
+       ops->priv = ugd;
+       ops->opt = UG_OPT_INDICATOR_DISABLE;
+
+       return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       struct appdata *ugd;
+
+       cam_debug(LOG_UI, "UG_MODULE_EXIT");
+
+       if (!ops) {
+               cam_critical(LOG_UI, "ops is NULL");
+               return;
+       }
+
+       ugd = ops->priv;
+       if (ugd)
+               free(ugd);
+
+       CAM_TA_RELEASE();
+}
+
+//end file
diff --git a/src/cam_animation.c b/src/cam_animation.c
new file mode 100755 (executable)
index 0000000..f20517c
--- /dev/null
@@ -0,0 +1,196 @@
+/*
+ * 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 "cam_file.h"
+#ifdef ENABLE_CAPTURE_ANIMATION
+#include "cam_animation.h"
+#include "camera_utils.h"
+
+static void __cam_app_shutter_animation_finished(void *data, Evas_Object *obj,
+                                                const char *emission,
+                                                const char *source)
+{
+       cam_debug(LOG_MM, " __cam_app_shutter_animation_finished \n\n ");
+       struct appdata *ad = (struct appdata *)data;
+//     edje_object_signal_emit(_EDJ(ad->shutter_screen), "bright", "");
+       DEL_EVAS_OBJECT(ad->shutter_screen);
+       DEL_EVAS_OBJECT(ad->rect_image);
+
+       ad->is_capture_animation_processing = FALSE;
+}
+
+static void __cam_animation_get_preview_coordinate_by_direction(int *preview_offset_x,
+                                                                               int *preview_offset_y,
+                                                                               int *preview_w,
+                                                                               int *preview_h,
+                                                                               void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               *preview_offset_x = ad->preview_offset_x;
+               *preview_offset_y = ad->preview_offset_y;
+               *preview_w = ad->preview_w;
+               *preview_h = ad->preview_h;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               *preview_offset_x = ad->preview_offset_y;
+               *preview_offset_y = ad->preview_offset_x;
+               *preview_w = ad->preview_h;
+               *preview_h = ad->preview_w;
+               break;
+       default:
+               DEBUG_TRACE("reached unable reached codes. error");
+       }
+}
+
+void cam_animation_create_rect_image(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Coord witdh = 0, height = 0;
+
+       char *group_name = "shutter_rect";
+
+       DEL_EVAS_OBJECT(ad->rect_image);
+
+       ad->rect_image = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, group_name);
+       cam_retm_if(ad->rect_image == NULL, "rect_image load failed");
+
+       ecore_x_window_size_get(ad->main_xid, &witdh, &height);
+       evas_object_resize(ad->rect_image, witdh, height);
+       edje_object_signal_callback_add(_EDJ(ad->rect_image),
+                                       "shutter_rect,finish", "*",
+                                       __cam_app_shutter_animation_finished,
+                                       ad);
+       return;
+
+}
+
+Eina_Bool cam_start_capture_animation(void *data)
+{
+       cam_debug(LOG_MM, " cam_start_capture_animation \n\n ");
+
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       Evas_Coord x, y, w, h;
+       x = y = w = h = 0;
+
+       int window_width, window_height;
+       int pre_width, pre_height;
+       int pre_x, pre_y;
+
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL, "camapp_handle is NULL");
+
+       window_width = ad->win_width;
+       window_height = ad->win_height;
+       pre_width = ad->preview_w;
+       pre_height = ad->preview_h;
+
+       __cam_animation_get_preview_coordinate_by_direction(&pre_x, &pre_y, &pre_width, &pre_height, ad);
+       if (ad->preview_w <= ad->win_width) {
+               ad->shutter_src_rect.x =  pre_x;
+               ad->shutter_src_rect.width = pre_width;
+       } else {
+               ad->shutter_src_rect.x = 0;
+               ad->shutter_src_rect.width = pre_width;
+       }
+
+       if (ad->preview_h <= ad->win_height) {
+               ad->shutter_src_rect.y = pre_y;
+               ad->shutter_src_rect.height = pre_height;
+       } else {
+               ad->shutter_src_rect.y = 0;
+               ad->shutter_src_rect.height = pre_height;
+       }
+
+       ad->shutter_des_rect.x = ad->shutter_src_rect.x;
+       ad->shutter_des_rect.y = y ;
+       ad->shutter_des_rect.width = w;
+       ad->shutter_des_rect.height = h;
+
+       evas_object_stack_above(ad->rect_image, ad->shutter_screen);
+       evas_object_resize(ad->rect_image, ad->shutter_src_rect.width, ad->shutter_src_rect.height);
+       evas_object_move(ad->rect_image, ad->shutter_src_rect.x, ad->shutter_src_rect.y);
+       evas_object_show(ad->rect_image);
+       edje_object_signal_emit(_EDJ(ad->rect_image), "shutter_rect,start", "prog");
+
+       return EINA_TRUE;
+}
+
+gboolean cam_app_create_start_animation(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       ad->is_capture_animation_processing = TRUE;
+
+       cam_app_create_shutter_screen(ad);
+       cam_animation_create_rect_image(ad);
+       cam_start_capture_animation(ad);
+
+       return FALSE;
+}
+
+gboolean cam_app_create_screennail_and_start_animation(void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+#if 1/*note: using pipe handle*/
+       cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_SHUTTER_ANIMATION);
+#else
+       cam_app_create_start_animation(ad);
+#endif
+       return TRUE;
+}
+
+gboolean cam_app_create_shutter_screen(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Coord witdh = 0, height = 0;
+
+       char *group_name = "shutter_image";
+
+       DEL_EVAS_OBJECT(ad->shutter_screen);
+
+       ad->shutter_screen = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, group_name);
+       if (ad->shutter_screen == NULL) {
+               cam_critical(LOG_UI, "shutter_screen load failed ");
+               return FALSE;
+       }
+
+       ecore_x_window_size_get(ad->main_xid, &witdh, &height);
+       evas_object_resize(ad->shutter_screen, witdh, height);
+
+       /*evas_object_lower(ad->shutter_screen);*/
+       evas_object_show(ad->shutter_screen);
+       evas_object_show(ad->win_main);
+
+       /*edje_object_signal_emit(_EDJ(ad->shutter_screen), "start_animation", "");*/
+
+       edje_object_signal_callback_add(_EDJ(ad->shutter_screen),
+                                       "animation_finish", "*",
+                                       __cam_app_shutter_animation_finished,
+                                       ad);
+       return TRUE;
+}
+#endif
diff --git a/src/cam_app.c b/src/cam_app.c
new file mode 100755 (executable)
index 0000000..a8f8161
--- /dev/null
@@ -0,0 +1,8669 @@
+/*
+ * 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 <X11/Xlib.h>
+#include <X11/keysymdef.h>
+#include <sys/wait.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <aul.h>
+#include <power.h>
+#include <syspopup_caller.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+
+#include "cam.h"
+#include "cam_app.h"
+#include "edc_string.h"
+#include "cam_sound.h"
+#include "cam_continuous_shot.h"
+#include "cam_file.h"
+#include "cam_ta.h"
+#include "cam_error.h"
+#include "cam_config.h"
+#include "cam_mm.h"
+#include "cam_rec.h"
+#include "cam_lbs.h"
+#include "cam_popup.h"
+
+#include "cam_common_edc_callback.h"
+#include "cam_indicator_edc_callback.h"
+#include "cam_recording_edc_callback.h"
+#include "cam_toolbar_edc_callback.h"
+#include "cam_zoom_edc_callback.h"
+#include "cam_ev_edc_callback.h"
+#include "camera_utils.h"
+
+#include "cam_face_detection_focus.h"
+#include "cam_ui_effect_utils.h"
+#include "cam_ui_rotate_utils.h"
+
+#include "cam_menu_composer.h"
+#include "cam_device_capacity.h"
+
+#ifdef ENABLE_CAPTURE_ANIMATION
+#include "cam_animation.h"
+#endif
+#define GPS_TIME_OUT 220
+#define ZSL_MAX_REL (1280*720) /* 1m wide */
+#define FOCUS_FOCUSED_TIME_OUT 2
+#define THUMBNAIL_UPDATE_WAIT_TIME (100*1000)
+
+
+/* 5m ZSL TEST*/
+/* #define ZSL_5M_TEST (2560*1920) */
+
+#define NEW_NOTI_API
+
+
+static CamAppData *cam_handle = NULL;
+static struct appdata *app_handle = NULL;
+
+/* static Ecore_Idler *spy_rotation_idler=NULL; */
+
+#define TEMP_SAVE_PATH "/tmp/temp_image.jpg"   /* not used maybe... */
+#define SELF_SHOT_TEMP_SAVE_PATH "/tmp/self_temp_shot.jpg"
+
+#define ZOOM_LONG_PRESS_INTERVAL 0.05  /* sec */
+
+#define INAGE_FILE_NAME                        "IMAGE"
+#define VIDEO_FILE_NAME                        "VIDEO"
+#define TEMP_FILE_NAME                         ".camera_result"
+#define IMAGE_FILE_EXTENSION           ".jpg"
+#define VIDEO_FILE_EXTENSION_3GP       ".3gp"
+#define VIDEO_FILE_EXTENSION_MP4       ".mp4"
+
+#define SHUTTER_W_RATIO        0.1
+#define SHUTTER_H_RATIO        0.34
+#define SCREEN_RATIO 1.0
+/* #define CAMAPP_SIG_HANDLING */
+
+/* #define ENABLE_CHECK_CAM_STATUS       //provent camera hang,  */
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+#define CAM_CHECK_STATUS_INTERVAL_TIME 10
+#ifndef CAMAPP_SIG_HANDLING
+#define CAMAPP_SIG_HANDLING
+#endif
+#endif
+
+
+static int cam_app_start_rotate(struct appdata *ad, bool bInitial);
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+static void cam_app_check_status();
+#endif
+
+static gboolean cam_power_key_press(void *data);
+static void cam_app_update_gps_level(void *data, int gps_level);
+static gboolean cam_app_return_ext_app(void *data, const char *r_file_path);
+
+/* vconf changed cb */
+static void cam_app_battery_update_cb(keynode_t *key, void *data);
+static void cam_app_battery_status_cb(keynode_t *key, void *data);
+static void cam_mmc_state_change_cb(keynode_t *key, void *data);
+static void cam_torchlight_update_cb(keynode_t *key, void *data);
+
+void cam_app_preview_start_coordinate(CamVideoRectangle src,
+                                     CamVideoRectangle dst,
+                                     CamVideoRectangle *result);
+void cam_app_timeout_notice_response_cb(void *data, Evas_Object *obj, void *event_info);
+static void cam_app_capture_error_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+Eina_Bool cam_app_launch_after_preview_began(void *data);
+
+static Eina_Bool cam_app_gps_timer_cb(void *data);
+static void cam_app_timer_update_count(void *data);
+static Eina_Bool __focus_guide_destroy(void *data);
+static void __cam_capture_cb(camera_image_data_s* image,
+                                                       camera_image_data_s* postview, camera_image_data_s* thumbnail,void *user_data);
+static Eina_Bool __cam_ug_destroy(void *data);
+static Eina_Bool __cam_app_display_error_popup_idler(void *data);
+static Eina_Bool __cam_continuous_af_timer_cb(void *data);
+
+
+/* video streamming */
+static gboolean video_stream_skip_flag = false;
+
+/* thumbnail image check count */
+static int g_thumbnail_image_check_count = 0;
+
+/*popup */
+gboolean g_blocking_popup = false;
+
+void cam_app_set_blocking_popup()
+{
+       g_blocking_popup = true;
+}
+
+void cam_app_free_blocking_popup()
+{
+       g_blocking_popup = false;
+}
+
+gboolean cam_app_check_blocking_popup()
+{
+       return !g_blocking_popup;
+}
+
+struct noti_callback {
+       char *setting_key;
+       void (*noti_func) (keynode_t *, void *);
+};
+
+#define CAMERA_NOTI_MAX                5
+struct noti_callback notis[CAMERA_NOTI_MAX] = {
+       {VCONFKEY_SYSMAN_BATTERY_CAPACITY, *cam_app_battery_update_cb},
+       {VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, *cam_app_battery_update_cb},
+       {VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, *cam_app_battery_status_cb},
+       {VCONFKEY_SYSMAN_MMC_STATUS, *cam_mmc_state_change_cb},
+       {VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, *cam_torchlight_update_cb}
+};
+
+#ifdef CAMAPP_SIG_HANDLING
+#include <signal.h>
+static struct sigaction cam_app_act;
+static struct sigaction cam_app_act_old;
+
+static void cam_app_register_sigsegv(void);
+static void cam_app_sigsegv_handler(int signal_no, siginfo_t *info,
+                                   void *context);
+#endif
+
+static void cam_app_pipe_handler(void *data, void *buffer, unsigned int nbyte);
+static int cam_app_camera_state_manager(int previous, int current, gboolean by_asm);
+static int cam_app_recorder_state_manager(int previous, int current, gboolean by_asm);
+
+static void cam_app_close_ug(void *data);
+Eina_Bool __ug_destory_postprocessing(void *data);
+
+static Eina_Bool cam_app_timeout_checker_cb(void *data);
+
+gdouble _get_current_time(void)
+{
+       struct timeval tv;
+       gettimeofday(&tv, NULL);
+       return (gdouble) tv.tv_sec + (gdouble) tv.tv_usec / 1E6;
+}
+
+void cam_app_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (obj) {
+               evas_object_del(obj);
+               obj = NULL;
+       }
+}
+
+void cam_app_gps_popup_response_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_ret_if(obj == NULL);
+
+       DEBUG_TRACE("show location ug");
+
+       if (ad->confirm_popup) {
+               evas_object_del(ad->confirm_popup);
+               ad->confirm_popup = NULL;
+       }
+
+       if (!cam_app_run_location_ug(data)) {
+               DEBUG_TRACE("cam_app_run_location_ug() fail");
+               GValue b_value = { 0, };
+               g_value_init(&b_value, G_TYPE_BOOLEAN);
+               g_value_set_boolean(&b_value, FALSE);
+               cam_handle_value_set(ad, PROP_GPS, &b_value);
+
+               cam_app_notice_popup(data, ("Location Setting launch fail"),
+                                                    cam_app_popup_response_cb);
+       }
+
+}
+
+void cam_app_gps_popup_response_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_ret_if(obj == NULL);
+       if (!cam_app_lbs_stop(ad))
+                       DEBUG_TRACE("cam_app_lbs_stop failed");
+       if (ad->confirm_popup) {
+               evas_object_del(ad->confirm_popup);
+               ad->confirm_popup = NULL;
+       }
+}
+
+static Eina_Bool cam_delay_popup(void *data)
+{
+
+       cam_app_notice_popup(data, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"),
+                            cam_app_timeout_notice_response_cb);
+       return ECORE_CALLBACK_CANCEL;
+
+}
+static void cam_add_longpress_key_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       if (!ad->longpress_timer) {
+               ad->longpress_timer = ecore_timer_add(0.5, cam_volume_key_press, ad);
+       }
+}
+
+static void cam_del_longpress_key_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       if (ad->longpress_timer) {
+               ecore_timer_del(ad->longpress_timer);
+               ad->longpress_timer = 0;
+       }
+}
+
+#ifdef EFL_TEMP_CODE
+void cam_win_transparent_set(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+       Evas *evas;
+       Evas_Object *rect;
+       evas = evas_object_evas_get(ad->win_main);
+       rect = evas_object_rectangle_add(evas);
+       evas_object_color_set(rect, 0, 0, 0, 0);
+       evas_object_render_op_set(rect, EVAS_RENDER_COPY);
+       evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(rect);
+       elm_object_part_content_set(ad->ug_base, "transparent_layout", rect);
+}
+#endif
+
+void cam_set_orient_value(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       int orient_value = 0;
+       gboolean save_as_flip = FALSE;
+
+       if (cam_is_enabled_menu(ad, CAM_MENU_SAVE_AS_FLIP) && camapp->save_as_flip == TRUE)
+               save_as_flip = TRUE;
+
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               if (save_as_flip) {
+                       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                               orient_value = 7;
+                       } else {
+                               if (camapp->self_portrait == TRUE)
+                                       orient_value = 6;
+                               else
+                                       orient_value = 8;
+                       }
+               } else {
+                       if (camapp->self_portrait == TRUE)
+                               orient_value = 8;
+                       else
+                               orient_value = 6;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               if (save_as_flip) {
+                       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                               orient_value = 5;
+                       } else {
+                               if (camapp->self_portrait == TRUE)
+                                       orient_value = 8;
+                               else
+                                       orient_value = 6;
+                       }
+               } else {
+                       if (camapp->self_portrait == TRUE)
+                               orient_value = 6;
+                       else
+                               orient_value = 8;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               if (save_as_flip && camapp->camera_mode == CAM_CAMCORDER_MODE)
+                       orient_value = 4;
+               else
+                       orient_value = 3;
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               if (save_as_flip && camapp->camera_mode == CAM_CAMCORDER_MODE)
+                       orient_value = 2;
+               else
+                       orient_value = 1;
+               break;
+       default:
+               break;
+       }
+
+       DEBUG_TRACE("rot_cuttent=%d orient_value=%d\n", ad->rot_current, orient_value);
+
+       if (cam_mm_set_tag_img_orient(orient_value))
+               DEBUG_TRACE("set image orient succeed %d", orient_value);
+       else
+               DEBUG_TRACE("set image orient failed %d", orient_value);
+}
+
+int cam_noti_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       int i = 0;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, EXIT_FAILURE, "appdata is NULL");
+
+       /* setting noti */
+       for (i = 0; i < CAMERA_NOTI_MAX; i++) {
+               if (0 != vconf_notify_key_changed(notis[i].setting_key, notis[i].noti_func, ad)) {
+                       cam_critical(LOG_SYS, "vconf_notify_key_changed() failed. count=%d ", i);
+               }
+       }
+
+       return EXIT_SUCCESS;
+}
+
+int cam_noti_deinit(void *data)
+{
+       int i;
+       struct appdata *ad = (struct appdata *)data;
+
+       debug_fenter(LOG_SYS);
+
+       cam_retvm_if(ad == NULL, EXIT_FAILURE, "appdata is NULL");
+
+       for (i = 0; i < CAMERA_NOTI_MAX; i++) {
+               vconf_ignore_key_changed(notis[i].setting_key, notis[i].noti_func);
+       }
+
+       return EXIT_SUCCESS;
+}
+
+void *cam_appdata_get(void)
+{
+       if (app_handle) {
+               return app_handle;
+       }
+       return NULL;
+}
+
+void cam_app_get_win_size(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       ecore_x_window_size_get(ad->main_xid, &(ad->win_height), &(ad->win_width));
+
+       cam_debug(LOG_UI, "main window ----- win_width, win_height: [%d, %d]", ad->win_width, ad->win_height);
+}
+
+int cam_appdata_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, 0, "appdata is NULL");
+
+       app_handle = ad;
+
+       ad->main_pipe = ecore_pipe_add(cam_app_pipe_handler, ad);
+       ad->rot_current = app_get_device_orientation();
+       ad->rot_previous = ad->rot_current;
+
+       cam_app_get_win_size(ad);
+
+       CAM_TA_ACUM_ITEM_BEGIN("      cam_handle_create", 0);
+       if (!cam_handle_create(data)) {
+               cam_critical(LOG_CAM, "cam_handle_create failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("      cam_handle_create", 0);
+
+       ad->last_camera_zoom_mode = 1;
+
+       return 1;
+}
+
+int cam_appdata_fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       cam_retvm_if(ad == NULL, 0, "appdata is NULL");
+
+       cam_layout_del_all(ad);
+
+       if (ad->service_handle) {
+               service_destroy(ad->service_handle);
+               ad->service_handle = NULL;
+       }
+       if (ad->imageviewer_service) {
+               service_destroy(ad->imageviewer_service);
+               ad->imageviewer_service = NULL;
+       }
+       if (ad->key_down) {
+               ecore_event_handler_del(ad->key_down);
+               ad->key_down = NULL;
+       }
+       if (ad->key_up) {
+               ecore_event_handler_del(ad->key_up);
+               ad->key_up = NULL;
+       }
+       if (ad->mouse_up) {
+               ecore_event_handler_del(ad->mouse_up);
+               ad->mouse_up = NULL;
+       }
+       if (ad->mouse_down) {
+               ecore_event_handler_del(ad->mouse_down);
+               ad->mouse_down = NULL;
+       }
+       /* Remove Idle handler of capture callback. wh01.cho@samsung.com. 2010-12-15. */
+       if (ad->capture_cb_list) {
+               cam_utils_remove_idler_all(ad);
+       }
+
+       REMOVE_IDLER(ad->recording_commit);
+       REMOVE_IDLER(ad->still_captured_idle);
+       REMOVE_IDLER(ad->capture_idle);
+       REMOVE_IDLER(ad->auto_shot_idle);
+       REMOVE_IDLER(ad->update_thumbnail_idler);
+
+       REMOVE_TIMER(ad->rec_icon_updater);
+       REMOVE_TIMER(ad->rec_time_updater);
+       REMOVE_TIMER(ad->rec_pause_timer);
+       REMOVE_TIMER(ad->check_af_timer);
+       REMOVE_TIMER(ad->continuous_shot_timer);
+       REMOVE_TIMER(ad->shutter_long_tap_timer);
+       REMOVE_TIMER(ad->timeout_checker);
+       REMOVE_TIMER(ad->setting_toolbar_hide_timer);
+       REMOVE_TIMER(ad->gps_animation_timer);
+       REMOVE_TIMER(ad->battery_animation_timer);
+       REMOVE_TIMER(ad->continuous_af_timer);
+       REMOVE_TIMER(ad->timer_timer);
+       REMOVE_TIMER(ad->longpress_timer);
+       REMOVE_TIMER(ad->focus_guide_hide_timer);
+
+       if( ad->setting_menu_composer != NULL){
+               cam_compose_free(ad->setting_menu_composer);
+               ad->setting_menu_composer = NULL;
+       }
+       if( ad->sub_menu_composer != NULL){
+               cam_compose_free(ad->sub_menu_composer);
+               ad->sub_menu_composer = NULL;
+       }
+       if (ad->camapp_handle) {
+               cam_handle_free(ad);
+       }
+       if (ad->exe_args) {
+               if (ad->exe_args->caller) {
+                       free(ad->exe_args->caller);
+                       ad->exe_args->caller = NULL;
+               }
+               free(ad->exe_args);
+               ad->exe_args = NULL;
+       }
+
+       if (ad->file_reg_thread) {
+               pthread_join(ad->file_reg_thread, NULL);
+       }
+
+       if (ad->file_reg_queue) {
+               while (!g_queue_is_empty(ad->file_reg_queue)) {
+                       char *filename = NULL;
+                       filename = g_queue_pop_head(ad->file_reg_queue);
+
+                       cam_critical(LOG_FILE, "[%s] didn't processed",
+                                    filename);
+
+                       if (!strcmp(REG_THREAD_EXIT, filename)) {
+                               free(filename);
+                       } else {
+                               __cam_single_shot_reg_file(filename);
+                               free(filename);
+                               filename = NULL;
+                               cam_debug(LOG_FILE, " register done.");
+                       }
+               }
+               g_queue_free(ad->file_reg_queue);
+               ad->file_reg_queue = NULL;
+       }
+
+       /*  disconnect media content */
+       CAM_TA_ACUM_ITEM_BEGIN("    media_content_disconnect", 0);
+
+       if(media_content_disconnect() == MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("dis connection is success");
+       } else {
+               cam_critical(LOG_SYS, " media_content_disconnect failed");
+       }
+
+       CAM_TA_ACUM_ITEM_END("    media_content_disconnect", 0);
+
+       cam_popup_delete(ad);
+
+       if (ad->main_pipe) {
+               ecore_pipe_del(ad->main_pipe);
+               ad->main_pipe = NULL;
+       }
+       /* init global handle */
+       app_handle = NULL;
+
+       return 1;
+}
+
+CamAppData *cam_handle_get(void)
+{
+       if (cam_handle) {
+               return cam_handle;
+       }
+       return NULL;
+}
+
+gboolean cam_app_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       GError *error = NULL;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_face_detection_focus_init();
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_appdata_init", 0);
+       if (!cam_appdata_init(ad)) {
+               cam_critical(LOG_CAM, "cam_appdata_init failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_appdata_init", 0);
+
+       cam_retvm_if(ad->camapp_handle == NULL, FALSE, "camapp_handle is NULL");
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_config_init", 0);
+       if (!cam_config_init(&error)) {
+               cam_critical(LOG_SYS, "cam_config_init failed");
+               if (error != NULL) {
+                       cam_critical(LOG_SYS, "cam_config_init error [%s]",
+                                    error->message);
+                       g_error_free(error);
+                       error = NULL;
+               }
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_config_init", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_noti_init", 0);
+       if (EXIT_FAILURE == cam_noti_init(ad)) {
+               cam_critical(LOG_CAM, "cam_noti_init failed");
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_noti_init", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_file_init", 0);
+       if (!cam_file_init(&error)) {
+               cam_critical(LOG_FILE, "cam_file_init failed");
+               if (error != NULL) {
+                       cam_critical(LOG_FILE, "cam_file_init error [%s]",
+                                    error->message);
+                       g_error_free(error);
+                       error = NULL;
+               }
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_file_init", 0);
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_sound_init", 0);
+       if (!cam_sound_init(&error)) {
+               cam_critical(LOG_SND, "cam_sound_init failed");
+               if (error != NULL) {
+                       cam_critical(LOG_SND, "cam_sound_init error [%s]",
+                                    error->message);
+                       g_error_free(error);
+                       error = NULL;
+               }
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_sound_init", 0);
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_lbs_init", 0);
+       if (!cam_lbs_init()) {
+               cam_critical(LOG_FWK, "cam_lbs_init is failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_lbs_init", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_create_file_register_thread", 0);
+       if (!cam_app_create_file_register_thread(ad)) {
+               cam_critical(LOG_SYS,
+                            " cam_app_create_file_register_thread failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_app_create_file_register_thread", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_continuous_shot_create_file_save_thread", 0);
+       if (!cam_continuous_shot_create_file_save_thread(ad)) {
+               cam_critical(LOG_SYS,
+                            " cam_continuous_shot_create_file_save_thread failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_continuous_shot_create_file_save_thread", 0);
+
+#ifdef CAMAPP_SIG_HANDLING
+       /* register singal handler */
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_create_file_register_thread", 0);
+       cam_app_register_sigsegv();
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_create_file_register_thread", 0);
+#endif
+
+       if(media_content_connect() == MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("connection is success");
+       } else {
+               cam_critical(LOG_SYS, " media_content_connect failed");
+               return FALSE;
+       }
+       if (error != NULL) {
+               g_error_free(error);
+               error = NULL;
+       }
+       return TRUE;
+}
+
+gboolean cam_app_start(void *data)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("#########cam_app_start", 0);
+
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       /* init gps value */
+       camapp->gps_level = CAM_LBS_STATE_DISABLE;
+       camapp->gps = FALSE;
+       camapp->need_gps_on = FALSE;
+
+       /*init guideline value*/
+       camapp->guideline = FALSE;
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_callback_init", 0);
+       if (!cam_callback_init(ad)) {
+               cam_critical(LOG_CAM, "cam_init_mm_callback failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_callback_init", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("      cam_app_init_attribute", 0);
+       if (!cam_app_init_attribute(ad, camapp->camera_mode)) {
+               cam_critical(LOG_MM, "cam_app_init_attribute failed");
+       }
+       CAM_TA_ACUM_ITEM_END("      cam_app_init_attribute", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_preview_start", 0);
+
+       cam_continuous_af_start(ad);
+       if (!cam_app_preview_start(ad)) {
+               cam_critical(LOG_MM, "cam_app_preview_start failed");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_app_preview_start", 0);
+       cam_mm_set_mdnie_mode(TRUE);
+
+
+       if(!cam_key_grab_init(ad))
+               DEBUG_TRACE("cam_key_grab_init fail");
+       cam_app_key_event_init(ad);
+       cam_app_timeout_checker_init(ad);
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+       alarm(CAM_CHECK_STATUS_INTERVAL_TIME);  /* start alarm */
+#endif
+       CAM_TA_ACUM_ITEM_END("#########cam_app_start", 0);
+
+       ad->displayed_setting_popup = FALSE;
+
+       return TRUE;
+}
+
+gboolean cam_app_pause(void *data)
+{
+       DEBUG_TRACE("#############cam_app_pause - START #############\n");
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       int mm_state = 0;
+       mm_state = cam_mm_get_state();
+
+       cam_mm_set_display_visible(FALSE);
+
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+               if ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "contacts") == 0)) {
+                       DEBUG_TRACE(" contact is paused ");
+                       service_h reply;
+                       service_create(&reply);
+                       service_add_extra_data(reply, "camera_end", "1");
+                       service_reply_to_launch_request(reply, ad->service_handle, SERVICE_RESULT_CANCELED);
+                       service_destroy(reply);
+               }
+       }
+
+       if ((mm_state == RECORDER_STATE_RECORDING
+           || mm_state == RECORDER_STATE_PAUSED)
+           &&(camapp->camera_mode == CAM_CAMCORDER_MODE)) {
+               int shutter_sound_state = 0;
+               /* get current sound */
+               cam_mm_get_shutter_sound(&shutter_sound_state);
+               /* disable shutter sound */
+               cam_mm_set_shutter_sound(FALSE);
+               /*stop recording */
+               cam_video_record_stop(ad);
+               /*restore shutter sound */
+               cam_mm_set_shutter_sound(shutter_sound_state);
+       }
+
+       cam_app_stop_capture(ad);
+
+       if(camapp->af_mode == CAM_FOCUS_FACE){
+               cam_face_detection_reset();
+       }
+
+       if (ad->timer_activated)
+               cam_app_cancel_timer(ad);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_preview_stop", 0);
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               while (cam_mm_get_cam_state() == CAMERA_STATE_CAPTURING) {
+                       cam_critical(LOG_CAM, "state is capturing");
+               }
+               cam_app_preview_start(ad);
+       }
+
+       cam_mm_set_mdnie_mode(FALSE);
+
+       if (camapp->outdoor_visibility)
+               cam_mm_set_outdoor_visibility(FALSE);
+
+       if (!cam_app_preview_stop()) {
+               cam_critical(LOG_MM, "cam_app_preview_stop fail");
+       }
+       CAM_TA_ACUM_ITEM_END("    cam_app_preview_stop", 0);
+
+       if (EXIT_FAILURE == cam_noti_deinit(ad))
+               cam_critical(LOG_UI, "cam_noti_deinit failed");
+
+       if(!cam_app_key_event_deinit(ad))
+               cam_critical(LOG_UI, "cam_app_key_event_deinit failed");
+
+       if(!cam_key_grab_deinit(ad))
+               cam_critical(LOG_UI, "cam_key_grab_deinit failed");
+
+       if (camapp->gps == TRUE) {
+               int gps_level =CAM_LBS_STATE_DISABLE;
+               gps_level = cam_lbs_get_state();
+               if (gps_level >=CAM_LBS_STATE_SERVICE_ENABLE)
+                       camapp->need_gps_on= TRUE;
+               if (ad->gps_animation_timer)
+                       REMOVE_TIMER(ad->gps_animation_timer);
+               if (cam_app_lbs_stop(ad))
+                       DEBUG_TRACE("The LBS failed to stop");
+       }
+
+       cam_app_timeout_checker_remove();
+       DEBUG_TRACE("#############cam_app_pause - END #############\n");
+       return TRUE;
+}
+
+gboolean cam_app_resume(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       int cam_state = -1;
+       debug_fenter(LOG_CAM);
+
+       if (!cam_condition_check_to_start_camera(ad)) {
+               cam_critical(LOG_CAM, "cannot start camera");
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+               if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                       GValue value = {0, };
+                       CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
+                       if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
+                               return ECORE_CALLBACK_CANCEL;
+                       }
+               }
+       }
+
+       indicator_update_storage(ad);
+       cam_app_timeout_checker_init(ad);
+
+       if (ad->imageviewer_ug == NULL) { /* home key destory imageviewer_ug */
+               cam_state = cam_mm_get_state();
+               cam_app_get_preview_offset_coordinate(ad);
+
+               cam_continuous_af_start((void*)ad);
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_app_preview_start", 0);
+
+               if (ad->torchlight_on && camapp->flash != CAM_FLASH_OFF)
+                       cam_mm_set_flash(CAM_FLASH_OFF);
+
+               /* reset zoom */
+               cam_mm_set_zoom(camapp->zoom_min);
+               camapp->zoom_mode  = camapp->zoom_min;
+
+               if (!cam_app_preview_start(ad)) {
+                       if (ad->fw_error_type == CAMERA_ERROR_SOUND_POLICY || ad->fw_error_type == RECORDER_ERROR_SOUND_POLICY) {
+                               DEBUG_TRACE(" MM CAMCARORDER ERROR\n");
+                               ecore_timer_add(0.01, cam_delay_popup, (void *)ad);
+                               return TRUE;
+                       }
+
+                       cam_critical(LOG_MM, "cam_app_preview_start failed");
+                       cam_app_notice_popup(ad,
+                        "PREVIEW START FAILED !!",
+                        cam_app_timeout_notice_response_cb);
+                       return FALSE;
+               }
+               CAM_TA_ACUM_ITEM_END("    cam_app_preview_start", 0);
+               cam_mm_set_mdnie_mode(TRUE);
+
+               if (camapp->outdoor_visibility)
+                       cam_mm_set_outdoor_visibility(TRUE);
+
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       if(camapp->af_mode == CAM_FOCUS_FACE){
+                               /*start face detection*/
+                               if (cam_mm_is_supported_face_detection()) {
+                                       cam_mm_start_camera_face_detection(camapp->face_detect_cb, (void *)ad);
+                                       if (!cam_mm_set_preview_cb(cam_face_detection_focus_start_stream, (void*)ad)) {
+                                               DEBUG_TRACE("preview callback set error");
+                                       }
+                                       cam_app_run_video_stream();
+                               } else {
+                                       DEBUG_TRACE("not support face detect mode");
+                               }
+                       }
+
+               }
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_noti_init", 0);
+               if (EXIT_FAILURE == cam_noti_init(ad))
+                       cam_critical(LOG_CAM, "cam_noti_init failed");
+               CAM_TA_ACUM_ITEM_END("    cam_noti_init", 0);
+
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_key_grab_init", 0);
+               if (!cam_key_grab_init(ad))
+                       DEBUG_TRACE("cam_key_grab_init fail");
+               CAM_TA_ACUM_ITEM_END("    cam_key_grab_init", 0);
+
+               cam_app_key_event_init(ad);
+               cam_app_update_quickview_icon(ad);
+               cam_toolbar_update(ad);
+       }
+
+       if (camapp->need_gps_on== TRUE) {
+               camapp->need_gps_popup = FALSE;
+               if (!cam_app_lbs_start(ad)) {
+                       if (!cam_app_lbs_stop(ad))
+                               DEBUG_TRACE("The LBS failed to stop");
+               }
+       }
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+       alarm(CAM_CHECK_STATUS_INTERVAL_TIME);  /* start alarm */
+#endif
+
+       return TRUE;
+}
+
+gboolean cam_app_stop(void *data)
+{
+       debug_fenter(LOG_CAM);
+       char *filename = NULL;
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_app_stop", 0);
+
+       /* return aul result path */
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+               if (ad->exe_args == NULL) {
+                       DEBUG_TRACE("ad->exe_args is NULL");
+                       return FALSE;
+               }
+               if (ad->path_in_return) {
+                       if (((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "contacts") == 0))
+                                       || ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "ug-setting-call-efl") == 0))) {
+                               DEBUG_TRACE("contacts -not need sending result");
+                       } else {
+                               if (ad->ug_state != CAM_UG_PAUSE_STATE) {
+                                       if (camapp->filename != NULL) {
+                                               filename = strdup(camapp->filename);
+                                               cam_app_return_ext_app(ad, filename);
+                                       }
+                               }
+                       }
+               } else {
+                       cam_app_return_ext_app(ad, filename);
+               }
+       }
+
+       if (cam_mm_is_created()) {
+               /*TODO: new logic will be add for save file while camera process is killed*/
+               /*stop*/
+               int state = 0;
+               state = cam_mm_get_state();
+               if (ad->camapp_handle) {
+                       if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE) {
+                               switch (state) {
+                               case RECORDER_STATE_NONE:
+                               case RECORDER_STATE_CREATED:
+                                       break;
+                               case RECORDER_STATE_READY:
+                                       break;
+                               case RECORDER_STATE_RECORDING:
+                               case RECORDER_STATE_PAUSED:
+                                       cam_video_record_stop(ad);
+                                       break;
+                               default:
+                                       /*g_assert_not_reached();*/
+                                       break;
+                               }
+                       }
+               }
+
+               cam_mm_set_mdnie_mode(FALSE);
+
+               if (camapp->outdoor_visibility)
+                       cam_mm_set_outdoor_visibility(FALSE);
+
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_app_preview_stop", 0);
+               if (!cam_app_preview_stop()) {
+                       cam_critical(LOG_MM, "cam_app_preview_stop failed");
+               }
+               CAM_TA_ACUM_ITEM_END("    cam_app_preview_stop", 0);
+
+               CAM_TA_ACUM_ITEM_BEGIN("    cam_mm_destory", 0);
+               if (!cam_mm_destory()) {
+                       cam_critical(LOG_MM, "cam_mm_destory failed");
+               }
+               CAM_TA_ACUM_ITEM_END("    cam_mm_destory", 0);
+       }
+
+       if (ad->imageviewer_ug || ad->location_ug) {
+               cam_app_close_ug(ad);
+       }
+
+       cam_popup_remove_all();
+
+       /* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+       cam_utils_remove_idler_all(ad);
+
+       if (EXIT_FAILURE == cam_noti_deinit(ad))
+               cam_critical(LOG_UI, "cam_noti_deinit failed");
+
+       if(!cam_app_key_event_deinit(ad))
+               cam_critical(LOG_UI, "cam_app_key_event_deinit failed");
+
+       if(!cam_key_grab_deinit(ad))
+               cam_critical(LOG_UI, "cam_key_grab_deinit failed");
+
+       /* crear data & engine */
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_app_clear_engine_data", 0);
+       cam_app_clear_engine_data(data, true);
+       CAM_TA_ACUM_ITEM_END("    cam_app_clear_engine_data", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_file_finalize", 0);
+       cam_file_finalize();
+       CAM_TA_ACUM_ITEM_END("    cam_file_finalize", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_sound_finalize", 0);
+       cam_sound_finalize();
+       CAM_TA_ACUM_ITEM_END("    cam_sound_finalize", 0);
+
+       /*  clean config */
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_config_finalize", 0);
+       cam_config_finalize();
+       CAM_TA_ACUM_ITEM_END("    cam_config_finalize", 0);
+
+       /*  finialize gps */
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_gps_finialize", 0);
+       cam_lbs_finialize();
+       CAM_TA_ACUM_ITEM_END("    cam_gps_finialize", 0);
+
+       /*  cam_handle_free(ad); */
+       cam_face_detection_focus_finish();
+       cam_appdata_fini(ad);
+
+       if (filename != NULL) {
+               free(filename);
+               filename = NULL;
+       }
+
+       CAM_TA_ACUM_ITEM_END("  cam_app_stop", 0);
+
+       return TRUE;
+}
+
+gboolean cam_app_preview_start(void *data)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("----cam_app_preview_start", 0);
+       DEBUG_TRACE
+           ("------------------------------START---------------------------------");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       int state = cam_mm_get_state();
+       DEBUG_TRACE("state: %d ", state);
+
+       if (((camapp->camera_mode == CAM_CAMERA_MODE) && (state < CAMERA_STATE_NONE))
+                       || ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (state < RECORDER_STATE_NONE)))
+               return FALSE;
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               switch(state) {
+               case CAMERA_STATE_CREATED:
+               case CAMERA_STATE_CAPTURED:
+                       {
+                               CAM_TA_ACUM_ITEM_BEGIN("          cam_mm_preview_start", 0);
+                               if (!cam_mm_preview_start(camapp->camera_mode)) {
+                                       cam_critical(LOG_MM, "cam_mm_preview_start failed");
+                                       return FALSE;
+                               }
+                               CAM_TA_ACUM_ITEM_END("          cam_mm_preview_start", 0);
+                       }
+                       break;
+               case CAMERA_STATE_CAPTURING:
+                       {
+                               if (cam_mm_capture_stop(FALSE, camapp->camera_mode) == FALSE) {
+                                       cam_critical(LOG_MM, "cam_mm_capture_stop failed");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+               }
+       }else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               switch(state) {
+               case RECORDER_STATE_CREATED:
+               case RECORDER_STATE_PAUSED:
+                       {
+                               if (!cam_mm_preview_start(camapp->camera_mode)) {
+                                       cam_critical(LOG_MM, "cam_mm_preview_start failed");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+
+               }
+       }
+
+       CAM_TA_ACUM_ITEM_END("----cam_app_preview_start", 0);
+       return TRUE;
+}
+
+gboolean cam_app_preview_stop(void)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, FALSE, "ad is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING
+               || camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY)
+               camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+
+       if (!cam_mm_preview_stop(camapp->camera_mode)) {
+               cam_critical(LOG_MM, "cam_mm_preview_stop failed");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+static void cam_app_timer_icon_rotate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->timer_icon_edje);
+       cam_app_timer_update_count(ad);
+}
+
+static int cam_app_start_rotate(struct appdata *ad, bool bInitial)
+{
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       cam_debug(LOG_UI, "rotated : %d, window rotation angle=%d", ad->rot_current);   /*, elm_win_rotation_get(ad->win_main)); */
+
+
+       int angle = 0;
+
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               ad->camcorder_rotate = CAMERA_ROTATION_90;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT;
+               angle = 0;
+               break;
+
+       case APP_DEVICE_ORIENTATION_180:
+               ad->camcorder_rotate = CAMERA_ROTATION_270;
+               ad->target_direction = CAM_TARGET_DIRECTION_PORTRAIT_INVERSE;
+               angle = 180;
+               break;
+
+       case APP_DEVICE_ORIENTATION_270:
+               ad->camcorder_rotate = CAMERA_ROTATION_NONE;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE;
+               angle = 270;
+               break;
+
+       case APP_DEVICE_ORIENTATION_90:
+               ad->camcorder_rotate = CAMERA_ROTATION_180;
+               ad->target_direction = CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE;
+               angle = 90;
+               break;
+
+       default:
+               break;
+       }
+       ad->angle = angle;
+       ad->angle_pre = ad->angle;
+
+////////////////////////////////////////////////////////////////////////////
+       if (ad->toolbar_edj_file) {
+               free(ad->toolbar_edj_file);
+               ad->toolbar_edj_file = NULL;
+       }
+
+       switch (ad->angle) {
+       case 270:
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_EDJ_NAME);
+               break;
+       case 0:
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_EDJ_NAME);
+               break;
+       case 90:
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_INVERSE_EDJ_NAME);
+               break;
+       case 180:
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_VERTICAL_INVERSE_EDJ_NAME);
+               break;
+       default:
+               ad->toolbar_edj_file = strdup(CAM_TOOLBAR_LAYOUT_EDJ_NAME);
+               break;
+
+       }
+
+       if(elm_win_rotation_get(ad->win_main) != ad->angle)
+               elm_win_rotation_with_resize_set(ad->win_main, ad->angle);
+
+       cam_app_get_preview_offset_coordinate(ad);
+
+       if (!bInitial) {
+               if (ad->toolbar_edje)
+                       cam_toolbar_rotate(ad);
+
+               if (ad->indicator_edje)
+                       cam_indicator_rotate(ad);
+
+               if (ad->recording_edje)
+                       cam_recording_rotate(ad);
+
+               if (ad->timer_icon_edje)
+                       cam_app_timer_icon_rotate(ad);
+
+               if (ad->ev_edje) {
+                       unload_ev_edje(ad);
+                       load_ev_edje(ad);
+               }
+
+               if (ad->zoom_edje) {
+                       unload_zoom_edje(ad);
+                       load_zoom_edje(ad);
+               }
+               /* guideline */
+               if (ad->guideline_edje)
+                       settings_guideline_refresh(ad);
+
+       }
+       return 0;
+}
+
+gboolean cam_layout_init(void *data)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->win_main == NULL) {
+               cam_critical(LOG_UI, "win_main is NULL");
+               return FALSE;
+       }
+       ad->pinch_edje = NULL;
+
+       cam_app_start_rotate(ad, TRUE);
+       DEBUG_TRACE("ad->angle = %d", ad->angle);
+
+       elm_theme_extension_add(NULL, CAM_SETTING_POPUP_STYLE_EDJ_NAME);
+       elm_theme_extension_add(NULL, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME);
+       elm_theme_extension_add(NULL, CAM_SLIDER_STYLE_EDJ_NAME);
+       elm_theme_extension_add(NULL, CAM_LABEL_STYLE_EDJ_NAME);
+       elm_theme_extension_add(NULL, CAM_BUTTON_STYLE_EDJ_NAME);
+
+#ifndef        CAMERA_MACHINE_I686
+       define_mouse_callback(ad);
+#endif
+
+       CAM_TA_ACUM_ITEM_BEGIN("      load_toolbar_edje", 0);
+       if (cam_toolbar_create(ad)) {
+               CAM_TA_ACUM_ITEM_END("      load_toolbar_edje", 0);
+               cam_critical(LOG_UI, " load_toolbar_edje failed ");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("      load_toolbar_edje", 0);
+
+       CAM_TA_ACUM_ITEM_BEGIN("      cam_indicator_create", 0);
+       if (cam_indicator_create(ad)) {
+               CAM_TA_ACUM_ITEM_END("      cam_indicator_create", 0);
+               cam_critical(LOG_UI, "cam_indicator_create failed ");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("      cam_indicator_create", 0);
+
+       cam_app_focus_guide_create(ad);
+       cam_app_update_quickview_icon(ad);
+       settings_guideline_refresh(ad);
+
+       /*note: */
+       /*reading from ini: whether need show popup tip*/
+       gboolean show_popup_tip = FALSE;
+       show_popup_tip = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, POP_TIP_DEFAULT);
+       if (show_popup_tip) {
+               cam_tip_popup_create(ad, CAM_TIP_POPUP_BURSTSHOT_HELP);
+       }
+
+       if (ad->battery_status == LOW_BATTERY_CRITICAL_STATUS
+               || ad->battery_status == LOW_BATTERY_WARNING_STATUS
+               || ad->is_calling == TRUE ){
+               ecore_idler_add(__cam_app_display_error_popup_idler, ad);
+       }
+
+       DEBUG_TRACE("END");
+
+       return TRUE;
+}
+
+gboolean cam_handle_create(void *data)
+{
+       CAM_TA_ACUM_ITEM_BEGIN("------cam_handle_create", 0);
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->camapp_handle && cam_handle) {
+               cam_handle_free(ad);
+       }
+
+       camapp = (CamAppData *)malloc(sizeof(CamAppData));
+       cam_retv_if(camapp == NULL, FALSE);
+       memset(camapp, 0x00, sizeof(CamAppData));
+
+       cam_handle = camapp;
+       ad->camapp_handle = camapp;
+       CAM_TA_ACUM_ITEM_END("------cam_handle_create", 0);
+
+       return TRUE;
+}
+
+gboolean cam_handle_free(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_config_save();
+
+       if (camapp && cam_handle) {
+               if (camapp->conti_image) {
+                       evas_object_del(camapp->conti_image);
+                       camapp->conti_image = NULL;
+               }
+
+               if (camapp->filename) {
+                       free(camapp->filename);
+                       camapp->filename = NULL;
+               }
+
+               if (camapp->thumbnail_name) {
+                       free(camapp->thumbnail_name);
+                       camapp->thumbnail_name = NULL;
+               }
+               cam_continuous_shot_data_free(ad);
+               if (camapp) {
+                       free(camapp);
+                       camapp = NULL;
+               }
+
+               DEBUG_TRACE();
+               ad->camapp_handle = NULL;
+               cam_handle = NULL;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_toolbar_menu_config_init(void *data, int mode) {
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       int i = 0;
+
+#ifdef CAMERA_MACHINE_I686
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               char buf[16+1] = { '\0', };
+               snprintf(buf, 16, "toolbar_%d", i);
+               ad->toolbar_menu_arrays[i].menu_type = CAM_MENU_EMPTY;
+       }
+#else
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               char buf[16+1] = { '\0', };
+               snprintf(buf, 16, "toolbar_%d", i);
+               ad->toolbar_menu_arrays[i].menu_type = cam_config_get_int(buf, CAM_MENU_EMPTY);
+
+               if (ad->toolbar_menu_arrays[i].menu_type == CAM_MENU_SELF_PORTRAIT) {
+                       if (cam_mm_is_support_front_camera() == FALSE)
+                               ad->toolbar_menu_arrays[i].menu_type = CAM_MENU_EMPTY;
+               }
+       }
+#endif
+
+       return TRUE;
+}
+
+gboolean cam_toolbar_menu_config_update(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               char buf[16+1] = { '\0', };
+               snprintf(buf, 16, "toolbar_%d", i);
+               int tmp_type = cam_config_get_int(buf, CAM_MENU_EMPTY);
+               if (ad->toolbar_menu_arrays[i].menu_type != tmp_type) {
+                       cam_config_set_int(buf, ad->toolbar_menu_arrays[i].menu_type);
+               }
+       }
+       return TRUE;
+}
+
+gboolean cam_handle_init(void *data, int mode)
+{
+       struct appdata *ad = data;
+       CamAppData *camapp = NULL;
+       int charging = 0;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_info(LOG_UI, "mode : %d ", mode);
+       camapp->camera_mode = mode;
+       cam_config_set_int_by_type(CAM_CONFIG_TYPE_COMMON, PROP_MODE_NAME, mode);
+
+       cam_app_set_config_group(camapp->camera_mode);
+       /* load init value from ini file */
+       /*   camapp->camera_mode = cam_config_get_int(PROP_MODE_NAME, MODE_DEFAULT); */
+
+       vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, &(camapp->storage));
+
+       camapp->anti_shake = cam_config_get_int(PROP_AHS_NAME, AHS_DEFAULT);
+
+       camapp->self_portrait = FALSE;
+
+       /* use shot mode as default value */
+       camapp->recording_mode = RECMODE_DEFAULT;
+       camapp->shooting_mode = SHOTMODE_DEFAULT;
+
+       camapp->scene_mode = cam_config_get_int(PROP_SCENE_MODE_NAME, PG_MODE_DEFAULT);
+       camapp->iso = cam_config_get_int(PROP_ISO_NAME, ISO_DEFAULT);
+       /*camapp->af_mode = cam_config_get_int(PROP_AF_NAME, AF_DEFAULT); */
+       camapp->af_mode = AF_DEFAULT;
+       /* camapp->white_balance = cam_config_get_int(PROP_WB_NAME, WB_DEFAULT); */
+       camapp->white_balance = WB_DEFAULT;
+
+       camapp->flash = cam_config_get_int(PROP_FLASH_NAME, FLASH_DEFAULT);
+
+       /*batterylevel*/
+       if (cam_utils_check_battery_warning_low()) {
+               camapp->flash = CAM_FLASH_OFF;
+       }
+       camapp->guideline = cam_config_get_boolean(PROP_GUIDELINE_NAME, GUIDE_LINE_DEFAULT);
+       DEBUG_TRACE("camapp->guideline = %d" ,camapp->guideline);
+       camapp->effect = EFFECT_DEFAULT;
+
+       camapp->wdr = cam_config_get_int(PROP_WDR_NAME, WDR_DEFAULT);
+       camapp->auto_exposure = cam_config_get_int(PROP_METERING_NAME, AE_DEFAULT);
+
+       camapp->photo_resolution = cam_config_get_int(PROP_PHOTO_RESOLUTION_NAME, IMAGE_RESOLUTION_DEFAULT);
+       camapp->video_resolution = cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME, REC_RESOLUTION_DEFAULT);
+
+       camapp->auto_contrast = FALSE;
+       camapp->image_quality = QUALITY_DEFAULT;
+       camapp->video_quality = QUALITY_DEFAULT;
+       camapp->audio_recording = AUDIOREC_DEFAULT;
+       camapp->review = cam_config_get_boolean(PROP_REVIEW_NAME, FALSE);
+
+       camapp->battery_level = cam_utils_get_battery_level();
+       charging = cam_utils_get_charging_status();
+       if (charging == 1)
+               camapp->battery_charging = charging;
+       else
+               camapp->battery_charging = 0;
+
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       camapp->shutter_sound = SHUTTER_SOUND_DEFAULT;
+#endif
+       /*sound*/
+
+       cam_mm_set_shutter_sound(SOUND_DEFAULT);
+       camapp->shutter_sound = SHUTTER_SOUND_DEFAULT;  /* on */
+
+       /* below item had been saved in ini file */
+       camapp->zoom_mode = ZOOM_DEFAULT;
+       camapp->image_count = IMAGE_COUNT_DEFAULT;
+       camapp->size_limit_type = CAM_MM_SIZE_LIMIT_TYPE_BYTE;
+       camapp->size_limit = REC_SIZE_LIMIT_DEFAULT;
+       camapp->timer = TIMER_DEFAULT;
+       camapp->fps = FPS_DEFAULT;
+
+       camapp->continuous_shot_data = NULL;
+
+       camapp->enable_touch_af = TRUE;
+
+       camapp->outdoor_visibility = FALSE;
+
+       camapp->burst_shot = cam_config_get_boolean(PROP_BURST_SHOT_NAME, BURST_SHOT_DEFAULT);
+
+       camapp->device_type = CAM_DEVICE_MEGA;
+
+       camapp->volume_key = cam_config_get_int(PROP_VOLUME_KEY_NAME, CAM_VOLUME_KEY_ZOOM);
+
+       camapp->save_as_flip = FALSE;
+
+       /*init toolbar menu config */
+       cam_toolbar_menu_config_init((void*)ad, mode);
+
+       /* init reserved setting data */
+       camapp->reserved_setting_data.front_photo_resolution = cam_config_get_int(PROP_SELF_PHOTO_RESOLUTION_NAME, SELF_IMAGE_RESOLUTION_DEFAULT);
+       camapp->reserved_setting_data.front_video_resolution = cam_config_get_int(PROP_SELF_VIDEO_RESOLUTION_NAME, SELF_REC_RESOLUTION_DEFAULT);
+       camapp->reserved_setting_data.rear_photo_resolution = cam_config_get_int(PROP_PHOTO_RESOLUTION_NAME, IMAGE_RESOLUTION_DEFAULT);
+       camapp->reserved_setting_data.rear_video_resolution = cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME, REC_RESOLUTION_DEFAULT);
+       camapp->reserved_setting_data.front_shooting_mode = CAM_SELF_SINGLE_MODE;
+       camapp->reserved_setting_data.front_recording_mode = CAM_RECORD_SELF;
+       camapp->reserved_setting_data.rear_shooting_mode = SHOTMODE_DEFAULT;
+       camapp->reserved_setting_data.rear_recording_mode = RECMODE_DEFAULT;
+       camapp->reserved_setting_data.front_effect = EFFECT_DEFAULT;
+       camapp->reserved_setting_data.rear_effect = EFFECT_DEFAULT;
+       camapp->reserved_setting_data.front_wb = WB_DEFAULT;
+       camapp->reserved_setting_data.rear_wb = WB_DEFAULT;
+
+       return TRUE;
+}
+
+gboolean cam_handle_value_set(void *data, int type, const GValue *value)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_debug(LOG_CAM, "type : %d", type);
+
+       switch (type) {
+       case PROP_MODE:
+               {
+                       gint current = 0;
+                       gint tempval = g_value_get_int(value);
+
+                       current = camapp->camera_mode;
+
+                       //camapp->camera_mode = tempval;
+                       if (!cam_mode_change(ad, tempval)) {
+                               cam_critical(LOG_CAM, "MODE CHANGE IS FAILED by MIDDLE WARE");
+                               camapp->camera_mode = current;
+                               cam_app_notice_popup(data, "MODE CHANGE FAILED !!", cam_app_timeout_notice_response_cb);
+                       }
+               }
+               break;
+
+       case PROP_SELF_PORTRAIT:
+               {
+                       GValue set_value = { 0 };
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       /* stop preview and destory mmfw handle */
+                       if (!cam_app_preview_stop()) {
+                               cam_critical(LOG_MM, "cam_app_preview_stop faild");
+                               return FALSE;
+                       }
+
+                       if (!cam_mm_destory()) {
+                               cam_critical(LOG_MM, "cam_mm_destory faild");
+                               return FALSE;
+                       }
+
+                       if (camapp->self_portrait == TRUE) {
+                               camapp->device_type = CAM_DEVICE_VGA;
+                       } else {
+                               camapp->device_type = CAM_DEVICE_MEGA;
+                       }
+
+                       DEBUG_TRACE("device_type = %d", camapp->device_type);
+
+                       cam_config_set_boolean(PROP_SELF_PORTRAIT_NAME, tempval);
+
+                       if (!cam_mm_create(camapp->device_type, camapp->camera_mode)) {
+                               cam_critical(LOG_MM, "cam_mm_create failed");
+                               cam_app_notice_popup(ad, "cam_app_preview_start faild ", cam_app_timeout_notice_response_cb);
+                               return FALSE;
+                       }
+
+                       ResetCaps();
+                       define_mouse_callback(ad);
+
+                       /* get reserved setting value */
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->photo_resolution = camapp->reserved_setting_data.rear_photo_resolution;
+                               camapp->video_resolution = camapp->reserved_setting_data.rear_video_resolution;
+                               camapp->shooting_mode = camapp->reserved_setting_data.rear_shooting_mode;
+                               camapp->recording_mode = camapp->reserved_setting_data.rear_recording_mode;
+                       } else {
+                               camapp->photo_resolution = camapp->reserved_setting_data.front_photo_resolution;
+                               camapp->video_resolution = camapp->reserved_setting_data.front_video_resolution;
+                               camapp->shooting_mode = camapp->reserved_setting_data.front_shooting_mode;
+                               camapp->recording_mode = camapp->reserved_setting_data.front_recording_mode;
+                       }
+
+                       /* set shot, rec mode */
+                       CAM_GVALUE_SET_INT(set_value, camapp->shooting_mode);
+                       cam_handle_value_set(ad, PROP_SHOT_MODE, &set_value);
+                       CAM_GVALUE_SET_INT(set_value, camapp->recording_mode);
+                       cam_handle_value_set(ad, PROP_REC_MODE, &set_value);
+
+                       camapp->zoom_mode = ZOOM_DEFAULT;
+
+                       /* start preview */
+                       if (!cam_app_init_attribute(ad, camapp->camera_mode)) {
+                               cam_critical(LOG_MM, "cam_app_init_attribute failed");
+                       }
+
+                       cam_continuous_af_start(ad);
+                       if (!cam_app_preview_start(ad)) {
+                               cam_critical(LOG_MM, "cam_app_preview_start failed");
+                               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+                               return FALSE;
+                       }
+
+                       settings_guideline_refresh(ad);
+
+                       if(camapp->af_mode == CAM_FOCUS_FACE){
+                               /*start face detection*/
+                               if (cam_mm_is_supported_face_detection()) {
+                                       cam_mm_start_camera_face_detection(camapp->face_detect_cb, (void *)ad);
+                                       if (!cam_mm_set_preview_cb(cam_face_detection_focus_start_stream, (void*)ad)) {
+                                               DEBUG_TRACE("preview callback set error");
+                                       }
+                                       cam_app_run_video_stream();
+                               } else {
+                                       DEBUG_TRACE("not support face detect mode");
+                               }
+                       }
+               }
+               break;
+
+       case PROP_SHOT_MODE:
+               {
+                       gint tempval = g_value_get_int(value);
+                       gint cur_mode = camapp->shooting_mode;
+
+                       camapp->shooting_mode = tempval;
+
+                       if (!cam_shooting_mode_change(ad)) {
+                               cam_critical(LOG_UI, "shot mode set fail");
+                               camapp->shooting_mode = cur_mode;
+                               return FALSE;
+                       }
+
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->reserved_setting_data.rear_shooting_mode = tempval;
+                       } else {
+                               camapp->reserved_setting_data.front_shooting_mode = tempval;
+                       }
+
+                       cam_app_focus_guide_update(ad);
+               }
+               break;
+       case PROP_REC_MODE:
+               {
+                       gint tempval = g_value_get_int(value);
+                       int video_resolution = 0;
+                       GValue set_value = { 0, };
+                       g_value_init(&set_value, G_TYPE_INT);
+
+                       camapp->recording_mode = tempval;
+
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->reserved_setting_data.rear_recording_mode = tempval;
+                       } else {
+                               camapp->reserved_setting_data.front_recording_mode = tempval;
+                       }
+
+                       if (camapp->recording_mode == CAM_RECORD_NORMAL) {
+                               video_resolution = cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME, REC_RESOLUTION_DEFAULT);
+                               g_value_set_int(&set_value, video_resolution);
+                       } else if (camapp->recording_mode == CAM_RECORD_SLOW || camapp->recording_mode == CAM_RECORD_FAST) {
+                               g_value_set_int(&set_value, CAM_RESOLUTION_QVGA);
+                       } else if (camapp->recording_mode == CAM_RECORD_SELF) {
+                               video_resolution = cam_config_get_int(PROP_SELF_VIDEO_RESOLUTION_NAME, SELF_REC_RESOLUTION_DEFAULT);
+                               g_value_set_int(&set_value, video_resolution);
+                       } else if (camapp->recording_mode == CAM_RECORD_MMS || camapp->recording_mode == CAM_RECORD_SELF_MMS) {
+                               g_value_set_int(&set_value, CAM_RESOLUTION_QCIF);
+                       }
+
+                       cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &set_value);
+/*
+                       if (!cam_recording_mode_change(ad, tempval)) {
+                               cam_critical(LOG_UI, "rec mode change fail - mode[%d]", tempval);
+                               return FALSE;
+                       }
+*/
+               }
+               break;
+       case PROP_SCENE_MODE:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_program_mode(tempval)) {
+                               cam_warning(LOG_UI, "program mode set fail");
+                               return FALSE;
+                       }
+                       camapp->scene_mode = tempval;
+
+                       /* set flash */
+                       int flash = CAM_FLASH_OFF;
+                       if(camapp->scene_mode == CAM_SCENE_NONE){
+                               flash = cam_config_get_int(PROP_SCENE_MODE_NAME, PG_MODE_DEFAULT);
+                       }else if(camapp->scene_mode == CAM_SCENE_CANDLELIGHT){
+                               flash = CAM_FLASH_ON;
+                       }else {
+                               flash = CAM_FLASH_OFF;
+                       }
+                       GValue set_value = { 0, };
+                       g_value_init(&set_value, G_TYPE_INT);
+                       g_value_set_int(&set_value, flash);
+                       cam_handle_value_set(ad, PROP_FLASH, &set_value);
+
+               }
+               break;
+       case PROP_PHOTO_RESOLUTION:
+               {
+                       gint tempval = g_value_get_int(value);
+
+                       DEBUG_TRACE("*******************************************************");
+                       DEBUG_TRACE("value set : PROP_RESOLUTION setting");
+                       DEBUG_TRACE(" tempval = %d ", tempval);
+                       DEBUG_TRACE("CAM_RESOLUTION_W = %d ,CAM_RESOLUTION_H=%d ", CAM_RESOLUTION_W(tempval), CAM_RESOLUTION_H(tempval));
+                       DEBUG_TRACE("*******************************************************");
+
+                       if (!cam_app_reset_resolution(ad, CAM_RESOLUTION_W(tempval), CAM_RESOLUTION_H(tempval), FALSE)) {
+                               cam_warning(LOG_UI, "resolution set fail");
+                               return FALSE;
+                       }
+
+                       settings_guideline_refresh(ad);
+
+                       camapp->photo_resolution = tempval;
+
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->reserved_setting_data.rear_photo_resolution = tempval;
+                               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                                       cam_config_set_int(PROP_PHOTO_RESOLUTION_NAME, tempval);
+                               }
+                       } else {
+                               camapp->reserved_setting_data.front_photo_resolution = tempval;
+                               cam_config_set_int(PROP_SELF_PHOTO_RESOLUTION_NAME, tempval);
+                       }
+
+                       cam_app_get_preview_offset_coordinate(ad);
+                       ad->remained_count = cam_system_get_still_count_by_resolution(ad);
+                       indicator_update_remain_count(ad);
+               }
+               break;
+       case PROP_VIDEO_RESOLUTION:
+               {
+                       gint tempval = g_value_get_int(value);
+
+                       camapp->video_resolution = tempval;
+
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->reserved_setting_data.rear_video_resolution = tempval;
+                               if (camapp->recording_mode == CAM_RECORD_NORMAL) {
+                                       cam_config_set_int(PROP_VIDEO_RESOLUTION_NAME, tempval);
+                               }
+                       } else {
+                               camapp->reserved_setting_data.front_video_resolution = tempval;
+                               if (camapp->recording_mode == CAM_RECORD_SELF) {
+                                       cam_config_set_int(PROP_SELF_VIDEO_RESOLUTION_NAME, tempval);
+                               }
+                       }
+               }
+               break;
+       case PROP_FPS:
+               {               /*  fps may not set it alone */
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_fps(tempval)) {
+                               cam_warning(LOG_UI, "fps set fail");
+                               return FALSE;
+                       }
+                       camapp->fps = tempval;
+               }
+               break;
+       case PROP_BRIGHTNESS:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_brightness(tempval)) {
+                               cam_warning(LOG_UI, "brightness set fail");
+                               return FALSE;
+                       }
+                       camapp->brightness = tempval;
+               }
+               break;
+       case PROP_WB:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_white_balance(tempval)) {
+                               cam_warning(LOG_UI,
+                                           "white balance set fail: %d",
+                                           tempval);
+                               return FALSE;
+                       }
+
+                       camapp->white_balance = tempval;
+
+                       if (camapp->self_portrait)
+                               camapp->reserved_setting_data.front_wb = tempval;
+                       else
+                               camapp->reserved_setting_data.rear_wb = tempval;
+
+               }
+               break;
+       case PROP_ISO:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_iso(tempval)) {
+                               cam_warning(LOG_UI, "iso set fail");
+                               return FALSE;
+                       }
+                       camapp->iso = tempval;
+                       cam_config_set_int(PROP_ISO_NAME, tempval);
+               }
+               break;
+       case PROP_AUTO_CONTRAST:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+                       if (!cam_mm_enable_auto_contrast(tempval)) {
+                               cam_warning(LOG_UI, "contrast set fail");
+                               return FALSE;
+                       }
+                       camapp->auto_contrast = tempval;
+                       cam_config_set_int(PROP_AUTO_CONTRAST_NAME, tempval);
+               }
+               break;
+       case PROP_METERING:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_auto_exposure(tempval)) {
+                               cam_warning(LOG_UI, "auto_exposure set fail");
+                               return FALSE;
+                       }
+                       camapp->auto_exposure = tempval;
+                       cam_config_set_int(PROP_METERING_NAME, tempval);
+               }
+               break;
+       case PROP_EFFECT:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_effect(tempval)) {
+                               cam_warning(LOG_UI, "effect set fail : %d",
+                                           tempval);
+                               return FALSE;
+                       }
+                       camapp->effect = tempval;
+
+                       if (camapp->self_portrait == FALSE) {
+                               camapp->reserved_setting_data.rear_effect = tempval;
+                       } else {
+                               camapp->reserved_setting_data.front_effect = tempval;
+                       }
+               }
+               break;
+       case PROP_AF_MODE:
+               {
+                       gint tempval = g_value_get_int(value);
+                       gint oldval = cam_config_get_int(PROP_AF_NAME, CAM_FOCUS_AUTO);
+                       if (oldval == CAM_FOCUS_FACE && tempval != CAM_FOCUS_FACE) {
+                               cam_mm_stop_camera_face_detection();
+                               cam_app_stop_video_stream();
+                       }
+
+                       if (tempval == CAM_FOCUS_FACE) {
+                               if (!cam_mm_set_focus_mode(CAMERA_ATTR_AF_NORMAL)) {
+                                       cam_warning(LOG_UI, "detect mode set fail");
+                                       return FALSE;
+                               }
+
+                               /*start face detection*/
+                               if (cam_mm_is_supported_face_detection()) {
+                                       cam_mm_start_camera_face_detection(camapp->face_detect_cb, (void *)ad);
+                                       if (!cam_mm_set_preview_cb(cam_face_detection_focus_start_stream, (void*)ad)) {
+                                               DEBUG_TRACE("preview callback set error");
+                                       }
+                                       cam_app_run_video_stream();
+                               } else {
+                                       DEBUG_TRACE("not support face detect mode");
+                               }
+
+
+                       } else if ((tempval == CAM_FOCUS_AUTO) || (tempval == CAM_FOCUS_MACRO)) {
+                               if (!cam_mm_set_focus_mode(tempval)) {
+                                       cam_warning(LOG_UI, "af mode set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_set_preview_cb(camapp->preview_cb, (void*)ad)) {
+                                       DEBUG_TRACE("preview callback set error");
+                               }
+
+                       } else {
+                               cam_warning(LOG_UI, "unknow af mode : %d", tempval);
+                               return FALSE;
+                       }
+                       camapp->af_mode = tempval;
+                       cam_app_focus_guide_update(ad);
+                       if (camapp->camera_mode == CAM_CAMERA_MODE && camapp->shooting_mode == CAM_SINGLE_MODE){
+                               cam_config_set_int(PROP_AF_NAME, tempval);
+                       }
+               }
+               break;
+       case PROP_AHS:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       if (!cam_mm_set_anti_hand_shake(tempval)) {
+                               cam_warning(LOG_UI, "anti_shake set fail");
+                               return FALSE;
+                       }
+
+                       camapp->anti_shake = tempval;
+                       cam_config_set_int(PROP_AHS_NAME, tempval);
+               }
+               break;
+       case PROP_WDR:/*auto contrast*/
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_wdr(tempval)) {
+                               cam_warning(LOG_UI, "wdr set fail");
+                               return FALSE;
+                       }
+                       camapp->wdr = tempval;
+                       cam_config_set_int(PROP_WDR_NAME, tempval);
+               }
+               break;
+       case PROP_FLASH:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_flash(tempval)) {
+                               cam_warning(LOG_UI, "flash set fail");
+                               return FALSE;
+                       }
+                       camapp->flash = tempval;
+                       /*fix me ,why only when in camera single mode ,
+                               save the FLASH setting value to config file*/
+                       if ((camapp->camera_mode == CAM_CAMERA_MODE
+                            && camapp->shooting_mode == CAM_SINGLE_MODE)
+                           || camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                               cam_config_set_int(PROP_FLASH_NAME, tempval);
+                       }
+               }
+               break;
+       case PROP_TIMER:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->timer = tempval;
+               }
+               break;
+       case PROP_IMAGE_QUALITY:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_image_enc_quality(tempval)) {
+                               cam_warning(LOG_UI,
+                                           "image quality[%d] set fail",
+                                           tempval);
+                               return FALSE;
+                       }
+                       camapp->image_quality = tempval;
+               }
+               break;
+       case PROP_VIDEO_QUALITY:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_app_set_video_quality(ad, tempval)) {
+                               cam_warning(LOG_UI,
+                                           "video quality[%d] set fail",
+                                           tempval);
+                               return FALSE;
+                       }
+                       camapp->video_quality = tempval;
+               }
+               break;
+       case PROP_AUDIO_REC:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+                       if (!cam_mm_set_audio_recording(tempval)) {
+                               cam_warning(LOG_UI, "audio_recording set fail");
+                               return FALSE;
+                       }
+                       camapp->audio_recording = tempval;
+               }
+               break;
+       case PROP_AUDIO_QUALITY:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->audio_quality = tempval;
+               }
+               break;
+       case PROP_BATTERY_CHARG:
+               {
+                       gint tempval_charging = g_value_get_int(value);
+
+                       DEBUG_TRACE("charging = %d", tempval_charging);
+                       camapp->battery_charging = tempval_charging;
+                       camapp->battery_level = cam_utils_get_battery_level();
+                       indicator_update_battery(ad, camapp->battery_level);
+               }
+               break;
+       case PROP_BATTERY_LEVEL:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->battery_charging = cam_utils_get_charging_status();
+                       camapp->battery_level = tempval;
+                       indicator_update_battery(ad, camapp->battery_level);
+
+               }
+               break;
+       case PROP_ZOOM:
+               {
+                       gint tempval = g_value_get_int(value);
+                       DEBUG_TRACE("tempval:%d", tempval);
+                       if (!cam_mm_set_zoom(tempval)) {
+                               cam_warning(LOG_UI, "zoom set fail");
+                               return FALSE;
+                       }
+                       /*camapp->zoom_mode = tempval;*/ /*note: zoom_mode is zoom level, is not same this value*/
+               }
+               break;
+       case PROP_STORAGE:
+               {
+                       gint tempval = g_value_get_int(value);
+
+                       camapp->storage = tempval;
+
+                       vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, camapp->storage);
+//                     cam_config_set_int(PROP_STORAGE_NAME, tempval);
+
+                       indicator_update_storage(ad);
+               }
+               break;
+       case PROP_GUIDELINE:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       camapp->guideline = tempval;
+                       cam_config_set_boolean(PROP_GUIDELINE_NAME, tempval);
+               }
+               break;
+       case PROP_GPS:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       if (tempval) {
+                               camapp->need_gps_popup = TRUE;
+                               if (!cam_app_lbs_start(ad))
+                                       return FALSE;
+
+                               return TRUE;
+                       } else {
+                               if (ad->gps_animation_timer)
+                                       REMOVE_TIMER(ad->gps_animation_timer);
+                               if (!cam_app_lbs_stop(ad))
+                                       return FALSE;
+
+                               return TRUE;
+                       }
+               }
+               break;
+       case PROP_GPS_LEVEL:
+               {
+                       gint tempval = g_value_get_int(value);
+
+                       camapp->gps_level = tempval;
+                       indicator_update_gps_level(ad);
+               }
+               break;
+       case PROP_REVIEW:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+                       camapp->review = tempval;
+                       cam_config_set_boolean(PROP_REVIEW_NAME, tempval);
+               }
+               break;
+       case PROP_IMAGE_COUNT:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_mm_set_image_count(tempval)) {
+                               cam_warning(LOG_UI, "image_count set fail");
+                               return FALSE;
+                       }
+                       camapp->image_count = tempval;
+               }
+               break;
+       case PROP_SHUTTER_SOUND:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->shutter_sound = tempval;
+               }
+               break;
+       case PROP_SIZE_LIMIT:
+               {
+                       gint tempval = g_value_get_int(value);
+                       if (!cam_app_set_size_limit(tempval, camapp->size_limit_type)) {
+                               cam_warning(LOG_UI, "size_limit set fail");
+                               return FALSE;
+                       }
+                       camapp->size_limit = tempval;
+               }
+               break;
+       case PROP_SIZE_LIMIT_TYPE:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->size_limit_type = tempval;
+               }
+               break;
+       case PROP_REC_TIME:
+               {
+                       guint tempval = g_value_get_uint(value);
+                       camapp->rec_elapsed = tempval;
+               }
+               break;
+       case PROP_REC_FILE_SIZE:
+               {
+                       guint tempval = g_value_get_uint(value);
+                       camapp->rec_filesize = tempval;
+               }
+               break;
+       case PROP_OUTDOOR_VISIBILITY:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+                       cam_mm_set_outdoor_visibility(tempval);
+                       camapp->outdoor_visibility = tempval;
+               }
+               break;
+       case PROP_VOLUME_KEY:
+               {
+                       gint tempval = g_value_get_int(value);
+                       camapp->volume_key = tempval;
+                       cam_config_set_int(PROP_VOLUME_KEY_NAME, tempval);
+               }
+               break;
+       case PROP_SAVE_AS_FLIP:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                               cam_app_preview_stop();
+                               cam_mm_set_image_flip(tempval);
+                               cam_app_preview_start(ad);
+                       }
+
+                       camapp->save_as_flip= tempval;
+               }
+               break;
+       case PROP_BURST_SHOT:
+               {
+                       gboolean tempval = g_value_get_boolean(value);
+
+                       camapp->burst_shot = tempval;
+                       cam_config_set_boolean(PROP_BURST_SHOT_NAME, tempval);
+               }
+               break;
+       default:
+               cam_warning(LOG_UI, "unknow type :%d ", type);
+               return FALSE;
+               break;
+       }
+       /* indicator should be updated here!!! */
+/*      change_indicator_mode_icons(ad); */
+       return TRUE;
+}
+
+/*note: in this function ,just do data logic,please do not add any EFL code in it*/
+gboolean cam_app_mode_change(void *data, int to_mode)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       debug_fenter(LOG_UI);
+
+       ad->timer_activated = FALSE;
+       ad->emit_continuous_shutter = FALSE;;
+       /*camapp->guideline = FALSE;*/
+       cam_app_timeout_checker_remove();
+       /* draw to_mode icon in preview area */
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       if (ad->play_rec_sound != 0)
+               return TRUE;
+#endif
+
+       if (cam_mm_get_state() == CAMERA_STATE_CAPTURING
+               && (camapp->camera_mode == CAM_CAMERA_MODE)) {
+               cam_mm_capture_stop(true, CAM_CAMERA_MODE);
+       }
+
+       /*  stop preview and destory mmfw handle */
+       if (!cam_app_preview_stop()) {
+               cam_critical(LOG_MM, "cam_app_preview_stop faild");
+               goto MODE_CHANGE_FAILED;
+
+       }
+
+       /* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+       cam_utils_remove_idler_all(ad);
+
+       if (to_mode == CAM_CAMCORDER_MODE) {
+
+               camapp->camera_mode = CAM_CAMCORDER_MODE;
+
+               GValue value = { 0, };
+               g_value_init(&value, G_TYPE_INT);
+
+               ad->last_camera_zoom_mode = camapp->zoom_mode;
+
+               switch(camapp->recording_mode)
+               {
+               case CAM_RECORD_SLOW:
+               case CAM_RECORD_FAST:
+                       {
+                               ad->camapp_handle->enable_touch_af = FALSE;
+                               camapp->video_resolution = CAM_RESOLUTION_QVGA;
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               double rate = 0.0;
+
+                               if (camapp->recording_mode == CAM_RECORD_SLOW) {
+                                       g_value_set_int(&value, SLOW_MOTION_REC_FPS);
+                                       rate = SLOW_MOTION_PLAY_FPS;
+                               } else {
+                                       g_value_set_int(&value, FAST_MOTION_REC_FPS);
+                                       rate = FAST_MOTION_PLAY_FPS;
+                               }
+
+                               if (!cam_mm_set_recording_motion(rate)) {
+                                       cam_critical(LOG_UI, "slow motion set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_QVGA);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (camapp->zoom_mode != 1) {
+                                       camapp->zoom_mode = 1;
+
+                                       CAM_GVALUE_SET_INT(value, 10);
+                                       if (!cam_handle_value_set(ad, PROP_ZOOM, &value)) {
+                                               cam_critical(LOG_UI, "zoom set fail");
+                                               return FALSE;
+                                       }
+                               }
+                       }
+                       break;
+               case CAM_RECORD_SELF:
+                       {
+                               ad->camapp_handle->enable_touch_af = FALSE;
+                               camapp->video_resolution = cam_config_get_int(PROP_SELF_VIDEO_RESOLUTION_NAME, SELF_REC_RESOLUTION_DEFAULT);
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_DEFAULT);
+
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_VGA);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case CAM_RECORD_MMS:
+               case CAM_RECORD_SELF_MMS:
+                       {
+                               ad->camapp_handle->enable_touch_af = TRUE;
+                               camapp->video_resolution = CAM_RESOLUTION_QCIF;
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_SLOW);
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_QCIF);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, CAM_REC_MMS_MAX_SIZE);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case CAM_RECORD_NORMAL:
+                       {
+                               ad->camapp_handle->enable_touch_af = TRUE;
+                               camapp->video_resolution = cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME, REC_RESOLUTION_DEFAULT);
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, resolution_n);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+               }
+       } else {
+               camapp->camera_mode = CAM_CAMERA_MODE;
+               camapp->zoom_mode = ad->last_camera_zoom_mode;
+
+               switch (camapp->shooting_mode) {
+               case CAM_SINGLE_MODE:
+                       ad->camapp_handle->enable_touch_af = TRUE;
+                       camapp->photo_resolution = cam_config_get_int(PROP_PHOTO_RESOLUTION_NAME, IMAGE_RESOLUTION_DEFAULT);
+                       break;
+               case CAM_SELF_SINGLE_MODE:
+                       ad->camapp_handle->enable_touch_af = FALSE;
+                       camapp->photo_resolution = cam_config_get_int(PROP_SELF_PHOTO_RESOLUTION_NAME, SELF_IMAGE_RESOLUTION_DEFAULT);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       if (!cam_callback_init(ad)) {
+               cam_critical(LOG_MM, "cam_init_mm_callback failed");
+               goto MODE_CHANGE_FAILED;
+
+       }
+       DEBUG_TRACE("camera mode = %d", to_mode);
+       if (!cam_app_init_attribute(ad, to_mode)) {
+               cam_critical(LOG_MM, "cam_app_init_attribute failed");
+       }
+
+       if (!cam_app_preview_start(ad)) {
+               cam_critical(LOG_MM, "cam_app_preview_start failed");
+               goto MODE_CHANGE_FAILED;
+
+       }
+       cam_app_timeout_checker_init(ad);
+
+       return TRUE;
+
+MODE_CHANGE_FAILED:
+       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+       return FALSE;
+
+}
+
+gboolean cam_mode_change(void *data, int to_mode)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       debug_fenter(LOG_UI);
+
+       cam_elm_cache_flush();
+
+       evas_object_hide(ad->timer_icon_edje);
+       REMOVE_TIMER(ad->timer_timer);
+       ad->timer_activated = FALSE;
+       ad->emit_continuous_shutter = FALSE;
+       DEL_EVAS_OBJECT(ad->timer_icon_edje);
+       DEL_EVAS_OBJECT(ad->guideline_edje);
+       /*camapp->guideline = FALSE;*/
+       cam_app_timeout_checker_remove();
+       /* draw to_mode icon in preview area */
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       if (ad->play_rec_sound != 0)
+               return TRUE;
+#endif
+
+       if (cam_mm_get_state() == CAMERA_STATE_CAPTURING
+               && (camapp->camera_mode == CAM_CAMERA_MODE)) {
+               cam_mm_capture_stop(true, CAM_CAMERA_MODE);
+       }
+
+       cam_app_destroy_progressbar(ad);
+       toolbar_shot_guide_popup_destory(ad);
+
+       /*  stop preview and destory mmfw handle */
+       if (!cam_app_preview_stop()) {
+               cam_critical(LOG_MM, "cam_app_preview_stop faild");
+               goto MODE_CHANGE_FAILED;
+
+       }
+
+       /* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+       cam_utils_remove_idler_all(ad);
+
+       if (to_mode == CAM_CAMCORDER_MODE) {
+
+               camapp->camera_mode = CAM_CAMCORDER_MODE;
+
+               GValue value = { 0, };
+               g_value_init(&value, G_TYPE_INT);
+
+               ad->last_camera_zoom_mode = camapp->zoom_mode;
+
+               switch(camapp->recording_mode)
+               {
+               case CAM_RECORD_SLOW:
+               case CAM_RECORD_FAST:
+                       {
+                               ad->camapp_handle->enable_touch_af = FALSE;
+                               camapp->video_resolution = CAM_RESOLUTION_QVGA;
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               double rate = 0.0;
+
+                               if (camapp->recording_mode == CAM_RECORD_SLOW) {
+                                       g_value_set_int(&value, SLOW_MOTION_REC_FPS);
+                                       rate = SLOW_MOTION_PLAY_FPS;
+                               } else {
+                                       g_value_set_int(&value, FAST_MOTION_REC_FPS);
+                                       rate = FAST_MOTION_PLAY_FPS;
+                               }
+
+                               if (!cam_mm_set_recording_motion(rate)) {
+                                       cam_critical(LOG_UI, "slow motion set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_QVGA);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (camapp->zoom_mode != 1) {
+                                       camapp->zoom_mode = 1;
+
+                                       CAM_GVALUE_SET_INT(value, 10);
+                                       if (!cam_handle_value_set(ad, PROP_ZOOM, &value)) {
+                                               cam_critical(LOG_UI, "zoom set fail");
+                                               return FALSE;
+                                       }
+                               }
+                       }
+                       break;
+               case CAM_RECORD_SELF:
+                       {
+                               ad->camapp_handle->enable_touch_af = FALSE;
+                               camapp->video_resolution = cam_config_get_int(PROP_SELF_VIDEO_RESOLUTION_NAME, SELF_REC_RESOLUTION_DEFAULT);
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_DEFAULT);
+
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_VGA);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case CAM_RECORD_MMS:
+               case CAM_RECORD_SELF_MMS:
+                       {
+                               ad->camapp_handle->enable_touch_af = TRUE;
+                               camapp->video_resolution = CAM_RESOLUTION_QCIF;
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_SLOW);
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, CAM_RESOLUTION_QCIF);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, CAM_REC_MMS_MAX_SIZE);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case CAM_RECORD_NORMAL:
+                       {
+                               ad->camapp_handle->enable_touch_af = TRUE;
+                               camapp->video_resolution = cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME, REC_RESOLUTION_DEFAULT);
+                               camapp->photo_resolution = cam_app_get_max_image_size_by_ratio(ad, camapp->video_resolution);
+
+                               g_value_set_int(&value, FPS_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                                       cam_critical(LOG_UI, "fps set fail");
+                                       return FALSE;
+                               }
+
+                               #if 0
+                               g_value_set_int(&value, resolution_n);
+                               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                                       cam_critical(LOG_UI, "resolution set fail");
+                                       return FALSE;
+                               }
+                               #endif
+
+                               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                                       cam_critical(LOG_UI, "size limit set fail");
+                                       return FALSE;
+                               }
+
+                               if (!cam_mm_reset_recording_motion_fps()) {
+                                       cam_critical(LOG_UI,
+                                                        "slow motion fps set fail");
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+               }
+       } else {
+               camapp->camera_mode = CAM_CAMERA_MODE;
+               camapp->zoom_mode = ad->last_camera_zoom_mode;
+
+               switch (camapp->shooting_mode) {
+               case CAM_SINGLE_MODE:
+                       ad->camapp_handle->enable_touch_af = TRUE;
+                       camapp->photo_resolution = cam_config_get_int(PROP_PHOTO_RESOLUTION_NAME, IMAGE_RESOLUTION_DEFAULT);
+                       break;
+               case CAM_SELF_SINGLE_MODE:
+                       ad->camapp_handle->enable_touch_af = FALSE;
+                       camapp->photo_resolution = cam_config_get_int(PROP_SELF_PHOTO_RESOLUTION_NAME, SELF_IMAGE_RESOLUTION_DEFAULT);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       if (!cam_callback_init(ad)) {
+               cam_critical(LOG_MM, "cam_init_mm_callback failed");
+               goto MODE_CHANGE_FAILED;
+
+       }
+       DEBUG_TRACE("camera mode = %d", to_mode);
+       if (!cam_app_init_attribute(ad, to_mode)) {
+               cam_critical(LOG_MM, "cam_app_init_attribute failed");
+       }
+
+       cam_app_get_preview_offset_coordinate(ad);
+
+       cam_reset_focus_mode(ad);
+
+       if (!cam_app_preview_start(ad)) {
+               cam_critical(LOG_MM, "cam_app_preview_start failed");
+               goto MODE_CHANGE_FAILED;
+
+       }
+       cam_app_timeout_checker_init(ad);
+
+       return TRUE;
+
+MODE_CHANGE_FAILED:
+       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+       return FALSE;
+}
+
+gboolean cam_recording_mode_change(void *data, int rec_mode)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       //CamDeviceType device_type = CAM_DEVICE_MEGA;
+       GValue value = { 0 };
+       int video_dev = 0;
+       gboolean cam_reset = FALSE;
+
+       debug_fenter(LOG_CAM);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_app_timeout_checker_remove();
+
+       g_value_init(&value, G_TYPE_INT);
+
+       cam_mm_get_video_device(&video_dev);
+       if (((camapp->recording_mode == CAM_RECORD_SELF || camapp->recording_mode == CAM_RECORD_SELF_MMS )&& video_dev == CAM_DEVICE_MEGA)
+           || ((camapp->recording_mode != CAM_RECORD_SELF || camapp->recording_mode == CAM_RECORD_SELF_MMS) && video_dev == CAM_DEVICE_VGA)) {
+
+               /*  stop preview and destory mmfw handle */
+               cam_reset = TRUE;
+               if (!cam_app_preview_stop()) {
+                       cam_critical(LOG_MM, "cam_app_preview_stop faild");
+                       return FALSE;
+               }
+               if (!cam_mm_destory()) {
+                       cam_critical(LOG_MM, "cam_mm_destory faild");
+                       return FALSE;
+               }
+#if 0
+               if (camapp->recording_mode == CAM_RECORD_SELF ||camapp->recording_mode == CAM_RECORD_SELF_MMS ) {
+                       device_type = CAM_DEVICE_VGA;
+               } else {
+                       device_type = CAM_DEVICE_MEGA;
+               }
+#endif
+               if (!cam_mm_create(camapp->device_type, camapp->camera_mode)) {
+                       cam_critical(LOG_MM, "cam_mm_create failed");
+                       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+                       return FALSE;
+               }
+               cam_mm_get_video_size( &camapp->default_preview_width, &camapp->default_preview_height);
+               DEBUG_TRACE("default_width = %d,default_height = %d", camapp->default_preview_width, camapp->default_preview_height);
+
+       }else {
+               if (!cam_app_preview_stop()) {
+                       cam_critical(LOG_MM, "cam_app_preview_stop faild");
+                       return FALSE;
+               }
+       }
+       if (rec_mode == CAM_RECORD_SLOW || rec_mode == CAM_RECORD_FAST) {
+               ad->camapp_handle->enable_touch_af = FALSE;
+
+               double rate = 0.0;
+
+               if (rec_mode == CAM_RECORD_SLOW) {
+                       g_value_set_int(&value, SLOW_MOTION_REC_FPS);
+                       rate = SLOW_MOTION_PLAY_FPS;
+               } else {
+                       g_value_set_int(&value, FAST_MOTION_REC_FPS);
+                       rate = FAST_MOTION_PLAY_FPS;
+               }
+
+               if (!cam_mm_set_recording_motion(rate)) {
+                       cam_critical(LOG_UI, "slow motion set fail");
+                       return FALSE;
+               }
+
+               if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                       cam_critical(LOG_UI, "fps set fail");
+                       return FALSE;
+               }
+
+               g_value_set_int(&value, CAM_RESOLUTION_QVGA);
+               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                       cam_critical(LOG_UI, "resolution set fail");
+                       return FALSE;
+               }
+               g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+               if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                       cam_critical(LOG_UI, "size limit set fail");
+                       return FALSE;
+               }
+
+               if (camapp->zoom_mode != 1) {
+                       camapp->zoom_mode = 1;
+
+                       GValue value = { 0, };
+
+                       CAM_GVALUE_SET_INT(value, 10);
+                       if (!cam_handle_value_set(ad, PROP_ZOOM, &value)) {
+                               cam_critical(LOG_UI, "zoom set fail");
+                               return FALSE;
+                       }
+               }
+
+               camapp->recording_mode = rec_mode;
+
+       } else {
+               ad->camapp_handle->enable_touch_af = TRUE;
+
+               if(rec_mode == CAM_RECORD_SELF) {
+
+                       ad->camapp_handle->enable_touch_af = FALSE;
+                       g_value_set_int(&value, FPS_SLOW);
+                       if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                               cam_critical(LOG_UI, "fps set fail");
+                               return FALSE;
+                       }
+
+                       int resolution = cam_config_get_int(PROP_SELF_VIDEO_RESOLUTION_NAME, SELF_REC_RESOLUTION_DEFAULT);
+
+                       g_value_set_int(&value, resolution);
+                       if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                               cam_critical(LOG_UI, "resolution set fail");
+                               return FALSE;
+                       }
+
+                       g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                       if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                               cam_critical(LOG_UI, "size limit set fail");
+                               return FALSE;
+                       }
+
+                       if (!cam_mm_reset_recording_motion_fps()) {
+                               cam_critical(LOG_UI,
+                                            "slow motion fps set fail");
+                               return FALSE;
+                       }
+                       camapp->recording_mode = CAM_RECORD_SELF;
+               } else if (rec_mode == CAM_RECORD_MMS ||rec_mode == CAM_RECORD_SELF_MMS ) {
+                       g_value_set_int(&value, FPS_SLOW);
+                       if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                               cam_critical(LOG_UI, "fps set fail");
+                               return FALSE;
+                       }
+
+                       g_value_set_int(&value, CAM_RESOLUTION_QCIF);
+                       if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                               cam_critical(LOG_UI, "resolution set fail");
+                               return FALSE;
+                       }
+
+                       g_value_set_int(&value, CAM_REC_MMS_MAX_SIZE);
+                       if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                               cam_critical(LOG_UI, "size limit set fail");
+                               return FALSE;
+                       }
+
+                       if (!cam_mm_reset_recording_motion_fps()) {
+                               cam_critical(LOG_UI,
+                                            "slow motion fps set fail");
+                               return FALSE;
+                       }
+                       if (rec_mode == CAM_RECORD_MMS)
+                               camapp->recording_mode = CAM_RECORD_MMS;
+                       else
+                               camapp->recording_mode = CAM_RECORD_SELF_MMS;
+
+               } else {
+                       int resolution_n =
+                           cam_config_get_int(PROP_VIDEO_RESOLUTION_NAME,  REC_RESOLUTION_DEFAULT);
+
+                       g_value_set_int(&value, FPS_DEFAULT);
+                       if (!cam_handle_value_set(ad, PROP_FPS, &value)) {
+                               cam_critical(LOG_UI, "fps set fail");
+                               return FALSE;
+                       }
+
+                       g_value_set_int(&value, resolution_n);
+                       if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                               cam_critical(LOG_UI, "resolution set fail");
+                               return FALSE;
+                       }
+
+                       g_value_set_int(&value, REC_SIZE_LIMIT_DEFAULT);
+                       if (!cam_handle_value_set(ad, PROP_SIZE_LIMIT, &value)) {
+                               cam_critical(LOG_UI, "size limit set fail");
+                               return FALSE;
+                       }
+
+                       if (!cam_mm_reset_recording_motion_fps()) {
+                               cam_critical(LOG_UI,
+                                            "slow motion fps set fail");
+                               return FALSE;
+                       }
+                       camapp->recording_mode = CAM_RECORD_NORMAL;
+
+               }
+               if (cam_reset) {
+                       if (!cam_app_init_attribute(ad, camapp->camera_mode)) {
+                               cam_critical(LOG_MM, "cam_app_init_attribute failed");
+//                             return FALSE;
+                       }
+               } else {
+                       if (!cam_app_set_recording_mode(ad, rec_mode)) {
+                               DEBUG_TRACE("cam_app_set_recording_mode failed");
+//                             return FALSE;
+                       }
+               }
+       }
+       cam_app_get_preview_offset_coordinate(ad);
+
+       if (!cam_callback_init(ad)) {
+               cam_critical(LOG_MM, "cam_init_mm_callback failed");
+               cam_app_notice_popup(ad, "PREVIEW START FAILED !!", cam_app_timeout_notice_response_cb);
+               return FALSE;
+       }
+
+       cam_continuous_af_start(ad);
+       if (!cam_app_preview_start(ad)) {
+               cam_critical(LOG_MM, "cam_app_preview_start failed");
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+               return FALSE;
+       }
+
+       cam_app_timeout_checker_init(ad);
+
+       return TRUE;
+
+}
+
+static gboolean cam_app_set_capture_format_shooting_mode(int mode)
+{
+       switch (mode) {
+       case CAM_SINGLE_MODE:
+       case CAM_SELF_SINGLE_MODE:
+               if (!cam_mm_set_capture_format(CAMERA_PIXEL_FORMAT_JPEG))
+                       return FALSE;
+               break;
+       default:
+               break;
+       }
+
+       cam_debug(LOG_UI,
+                 "\n################# shooting mode set return success : %d\n",
+                 mode);
+
+       return TRUE;
+}
+
+static void cam_shooting_mode_reset(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_app_destroy_progressbar(ad);
+
+       return;
+}
+
+gboolean cam_shooting_mode_change(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       GValue value = { 0 };
+
+       debug_fenter(LOG_CAM);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_elm_cache_flush();
+
+       cam_app_stop_video_stream();
+       cam_app_timeout_checker_remove();
+       cam_shooting_mode_reset(ad);
+
+       g_value_init(&value, G_TYPE_INT);
+
+       cam_debug(LOG_CAM, "Shooting mode = %d ", camapp->shooting_mode);
+
+       cam_continuous_shot_data_free(ad);
+
+       if (ad->shot_mode_guide_popup)
+               toolbar_shot_guide_popup_destory(ad);
+       ad->emit_continuous_shutter = FALSE;
+       switch (camapp->shooting_mode) {
+       case CAM_SINGLE_MODE:
+               {
+                       int resolution = 0, flash = 0, auto_focus = 0, scene_mode = 0, wb = 0, effect = 0;
+                       resolution = cam_config_get_int(PROP_PHOTO_RESOLUTION_NAME, IMAGE_RESOLUTION_DEFAULT);
+                       flash = cam_config_get_int(PROP_FLASH_NAME, FLASH_DEFAULT);
+                       auto_focus = cam_config_get_int(PROP_AF_NAME, AF_DEFAULT);
+                       scene_mode = cam_config_get_int(PROP_SCENE_MODE_NAME, PG_MODE_DEFAULT);
+                       wb = camapp->reserved_setting_data.rear_wb;
+                       effect = camapp->reserved_setting_data.rear_effect;
+
+                       /* set resolution */
+                       g_value_set_int(&value, resolution);
+                       cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value);
+
+                       /* set flash  */
+                       g_value_set_int(&value, flash);
+                       cam_handle_value_set(ad, PROP_FLASH, &value);
+
+                       /* set auto focus */
+                       g_value_set_int(&value, auto_focus);
+                       cam_handle_value_set(ad, PROP_AF_MODE, &value);
+
+                       /* set scene */
+                       g_value_set_int(&value, scene_mode);
+                       cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
+
+                       /* set wb */
+                       g_value_set_int(&value, wb);
+                       cam_handle_value_set(ad, PROP_WB, &value);
+
+                       /* set effect */
+                       g_value_set_int(&value, effect);
+                       cam_handle_value_set(ad, PROP_EFFECT, &value);
+
+                       /* set capture count */
+                       g_value_set_int(&value, IMAGE_COUNT_DEFAULT);
+                       cam_handle_value_set(ad, PROP_IMAGE_COUNT, &value);
+               }
+               break;
+
+       case CAM_SELF_SINGLE_MODE:
+               {
+                       int resolution, effect, wb = 0;
+
+                       resolution = cam_config_get_int(PROP_SELF_PHOTO_RESOLUTION_NAME, SELF_IMAGE_RESOLUTION_DEFAULT);
+                       effect = camapp->reserved_setting_data.front_effect;
+                       wb = camapp->reserved_setting_data.front_wb;
+
+                       /* set resolution */
+                       g_value_set_int(&value, resolution);
+                       cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value);
+
+                       /* set flash off */
+                       g_value_set_int(&value, CAM_FLASH_OFF);
+                       cam_handle_value_set(ad, PROP_FLASH, &value);
+
+                       /* set auto focus */
+                       g_value_set_int(&value, CAM_FOCUS_AUTO);
+                       cam_handle_value_set(ad, PROP_AF_MODE, &value);
+
+                       /* set scene to NONE */
+                       g_value_set_int(&value, CAM_SCENE_NONE);
+                       cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
+
+                       /* set effect */
+                       g_value_set_int(&value, effect);
+                       cam_handle_value_set(ad, PROP_EFFECT, &value);
+
+                       /* set capture count */
+                       g_value_set_int(&value, IMAGE_COUNT_DEFAULT);
+                       cam_handle_value_set(ad, PROP_IMAGE_COUNT, &value);
+
+                       // set wb
+                       g_value_set_int(&value, wb);
+                       cam_handle_value_set(ad, PROP_WB, &value);
+               }
+               break;
+       default:
+               break;
+       }
+
+       if (!cam_callback_init(ad)) {
+               cam_critical(LOG_MM, "cam_init_mm_callback failed");
+               cam_app_notice_popup(ad, "PREVIEW START FAILED !!", cam_app_timeout_notice_response_cb);
+               return FALSE;
+       }
+
+       cam_app_timeout_checker_init(ad);
+       return TRUE;
+}
+
+gboolean __cam_single_shot_reg_file(char *file_path)
+{
+       GError *error = NULL;
+
+       if (file_path) {
+               DEBUG_TRACE("register file : %s", file_path);
+
+               if (!cam_file_register(file_path, &error)) {
+                       cam_critical(LOG_FILE, "cam_file_register fail");
+                       if (error != NULL) {
+                               if (error->message != NULL) {
+                                       cam_critical(LOG_FILE,
+                                                    "cam_file_register error [%s]",
+                                                error->message);
+                               } else {
+                                       cam_critical(LOG_FILE,
+                                                    "cam_file_register error but error message is NULL");
+                               }
+                               g_error_free(error);
+                               error = NULL;
+                       }
+               }
+       } else {
+               cam_warning(LOG_FILE, " file path is NULL...");
+
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void cam_app_timer_update_count(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       cam_debug(LOG_UI, "timer count ... [ %d ]", ad->timer_count);
+
+       char count_string[3] = "";
+
+       elm_object_part_content_unset(ad->ug_base, "timer_layout");
+
+       if (ad->timer_icon_edje == NULL) {
+               switch (ad->target_direction) {
+               case CAM_TARGET_DIRECTION_LANDSCAPE:
+               case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+                       ad->timer_icon_edje = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "timer_icon_landscape");
+                       break;
+               case CAM_TARGET_DIRECTION_PORTRAIT:
+               case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+                       ad->timer_icon_edje = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "timer_icon_portrait");
+                       break;
+               default:
+                       DEBUG_TRACE("Invalid direction type!!!");
+               }
+
+               cam_retm_if(ad->timer_icon_edje == NULL, "timer_icon_edje is NULL");
+               elm_object_part_content_set(ad->ug_base, "timer_layout", ad->timer_icon_edje);
+       }
+
+       snprintf(count_string, sizeof(count_string), "%d", ad->timer_count);
+
+       edje_object_part_text_set(_EDJ(ad->timer_icon_edje), "text", count_string);
+
+       evas_object_show(ad->timer_icon_edje);
+
+       return;
+}
+static Eina_Bool cam_app_gps_timer_cb(void *data)
+{
+       DEBUG_TRACE(" ");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
+       CamAppData *camapp = ad->camapp_handle;
+        if (camapp == NULL) {
+                ad->gps_animation_timer = NULL;
+                return ECORE_CALLBACK_CANCEL;
+        }
+
+       int gps_level = CAM_LBS_STATE_DISABLE;
+       static int count =0;
+
+       gps_level = cam_lbs_get_state(); //real gps level
+       if (gps_level >=CAM_LBS_STATE_SERVICE_ENABLE) {
+               camapp->gps = TRUE;
+               camapp->gps_level = cam_lbs_get_state();
+
+               if (ad->gps_animation_timer)
+                       ad->gps_animation_timer = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       indicator_update_gps_level(ad);
+       if (camapp->gps_level == CAM_LBS_STATE_ACCURANCY_DETAILED ) {
+               camapp->gps_level = CAM_LBS_STATE_SERVICE_START;
+       }
+
+       if (count > GPS_TIME_OUT) {
+               count = 0;
+               camapp->gps = FALSE;
+               cam_lbs_stop();
+               camapp->gps_level = cam_lbs_get_state();
+               indicator_update_gps(ad);       /* update gps icon */
+               if(!cam_mm_remove_geo_tag())
+                       DEBUG_TRACE("cam_mm_remove_geo_tag failed");
+
+               if (ad->gps_animation_timer)
+                       ad->gps_animation_timer = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+       camapp->gps_level ++;
+       count ++;
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool cam_app_timer_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
+
+       CamAppData *camapp = NULL;
+
+       camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               cam_critical(LOG_UI, "camapp_handle is NULL");
+
+               if (ad->timer_timer)
+                       ad->timer_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       ad->timer_count = ad->timer_count - 1;
+
+       if (ad->timer_count > 0) {
+               cam_debug(LOG_UI, "timer continue ... ");
+               cam_app_timer_update_count(ad);
+               if (camapp->shutter_sound != CAM_SETTINGS_SOUND_OFF)
+                       cam_sound_play(CAM_SOUND_EFFECT_TICK, ad);
+               return ECORE_CALLBACK_RENEW;
+       } else {
+               cam_debug(LOG_UI, "timer terminated ...");
+
+               ad->timer_activated = false;
+
+               if (ad->timer_icon_edje != NULL) {
+                       evas_object_del(ad->timer_icon_edje);
+                       ad->timer_icon_edje = NULL;
+               }
+
+               cam_toolbar_update(ad);
+
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       cam_set_orient_value(ad);
+                       if (!cam_image_capture_start(ad))
+                               cam_critical(LOG_UI, "cam_image_capture_start failed");
+               } else {
+                       if (!cam_video_record_start(ad))
+                               cam_critical(LOG_UI, "cam_video_record_start failed");
+               }
+
+               if (ad->timer_timer)
+                       ad->timer_timer = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+}
+
+static void cam_app_start_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       ad->timer_activated = true;
+
+       switch (camapp->timer) {
+       case CAM_SETTINGS_TIMER_2SEC:
+               ad->timer_count = 2;
+               break;
+       case CAM_SETTINGS_TIMER_5SEC:
+               ad->timer_count = 5;
+               break;
+       case CAM_SETTINGS_TIMER_10SEC:
+               ad->timer_count = 10;
+               break;
+
+       case CAM_SETTINGS_TIMER_OFF:
+       default:
+               CAM_UI_LOG("can not reach here");
+               return;
+       }
+
+       if (camapp->default_capture_mode == CAM_CAPTURE_BURST)
+               return;
+
+       cam_toolbar_update(ad);
+
+       cam_app_timer_update_count(ad);
+
+       if (ad->timer_timer != NULL) {
+               ecore_timer_del(ad->timer_timer);
+               ad->timer_timer = NULL;
+       }
+
+       ad->timer_timer = ecore_timer_add(1.0, cam_app_timer_cb, ad);
+}
+
+void cam_app_cancel_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       ad->timer_activated = FALSE;
+
+       REMOVE_TIMER(ad->timer_timer);
+       DEL_EVAS_OBJECT(ad->timer_icon_edje);
+
+       cam_toolbar_update(ad);
+}
+
+static void _popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       /* cam_app_free_blocking_popup(); */
+       Evas_Object *notify = (Evas_Object *)data;
+       cam_popup_remove(notify);
+       /* evas_object_del(notify); */
+}
+
+gboolean cam_image_capture_start(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gint64 remain = 0;
+       gboolean ret = TRUE;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_image_capture_start", 0);
+       if (camapp->af_mode == CAM_FOCUS_FACE) {
+               cam_app_stop_video_stream();
+       }
+       DEBUG_TRACE("camapp->burst_shot %d", camapp->burst_shot);
+       DEBUG_TRACE("camapp->shooting_mode %d", camapp->shooting_mode);
+       DEBUG_TRACE("camapp->default_capture_mode %d", camapp->default_capture_mode);
+       remain = cam_system_get_still_count_by_resolution(ad);
+
+       if(remain <= 0){
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"), cam_app_popup_response_cb);
+               CAM_TA_ACUM_ITEM_END("    cam_image_capture_start", 0);
+               return FALSE;
+       }
+
+       if (camapp->gps) {
+               int gps_level = CAM_LBS_STATE_DISABLE;
+               gps_level = cam_lbs_get_state();
+
+               if (gps_level >=CAM_LBS_STATE_SERVICE_ENABLE) {
+                       double longitude = -1.0;
+                       double latitude = -1.0;
+                       double altitude = -1.0;
+                       time_t time_stamp = -1.0;
+                       if (cam_lbs_get_current_position(&longitude, &latitude, &altitude, &time_stamp)) {
+                               DEBUG_TRACE("GEO TAG [longitude = %d, latitude = %d, altitude = %d]", longitude, latitude, altitude);
+                               if (!cam_mm_set_gps_data(latitude, longitude, (double)altitude))
+                                       DEBUG_TRACE("cam_mm_set_gps_data failed");
+                       }
+               }
+       }
+       cam_set_orient_value(ad);
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               switch (camapp->shooting_mode) {
+               case CAM_SINGLE_MODE:
+               case CAM_SELF_SINGLE_MODE:
+                       if (camapp->burst_shot == TRUE && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
+                               camapp->capture_cb = (camera_capturing_cb)cam_continuous_shot_capture_callback;
+                               cam_continuous_shot_capture_start(ad);
+                       } else {
+                               camapp->capture_cb = (camera_capturing_cb)__cam_capture_cb;
+                               ret = cam_mm_capture_start(camapp->capture_cb, camapp->capture_completed_cb, (void*)ad);
+                       }
+                       break;
+               default:
+                       ret = cam_mm_capture_start(camapp->capture_cb, camapp->capture_completed_cb, (void*)ad); /*capture on recoring */
+                       break;
+               }
+       }else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               ret = cam_mm_capture_start(camapp->capture_cb, camapp->capture_completed_cb, (void*)ad);
+       }
+
+       CAM_TA_ACUM_ITEM_END("    cam_image_capture_start", 0);
+       CAM_TA_ACUM_ITEM_BEGIN("    capture_start to capturecallback", 0);
+       return ret;
+}
+
+static gboolean cam_image_capture_stop(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_UI);
+       ad->stop_continuous_shot = FALSE;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (camapp->shooting_mode == CAM_SINGLE_MODE && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
+               ad->stop_continuous_shot = TRUE;
+       }
+
+       return TRUE;
+}
+
+Eina_Bool cam_image_capture_handle_idler(void *itm)
+{
+       CamIdlerItem *item = (CamIdlerItem *) itm;
+       struct appdata *ad = NULL;
+       cam_retvm_if(!item, ECORE_CALLBACK_CANCEL, "CamIdlerItem is NULL");
+
+       ad = (struct appdata *)item->data;
+       cam_retvm_if(!ad, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       cam_info(LOG_UI, "call idler[ %p] ", item->idler);
+       ad->capture_cb_list = g_list_remove(ad->capture_cb_list, item->idler);
+       if (item->idler) {
+               ecore_idler_del(item->idler);
+               item->idler = NULL;
+       }
+       free(item);
+       item = NULL;
+       return cam_image_capture_handle(ad);
+}
+static Eina_Bool __cam_app_hide_rect_image(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       HIDE_EVAS_OBJECT(ad->rect_image);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+Eina_Bool cam_capture_on_recording_handle(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL,
+                    "camapp_handle is NULL");
+       gboolean preview_skip = FALSE;
+
+       if (camapp->filename) {
+               cam_debug(LOG_SYS, "#########camapp->filename=%s", camapp->filename);
+               CAM_TA_ACUM_ITEM_BEGIN("    send signal to register thread", 0);
+               g_queue_push_tail(ad->file_reg_queue, strdup(camapp->filename));
+               pthread_cond_signal(&ad->file_reg_cond);
+               CAM_TA_ACUM_ITEM_END("    send signal to register thread", 0);
+       } else {
+               cam_app_notice_popup(ad, "Your storage have trouble ", cam_app_popup_response_cb);
+       }
+       if (!cam_mm_capture_stop (preview_skip, CAM_CAMERA_MODE)) {
+               cam_critical(LOG_MM, " cam_mm_capture_stop error ");
+       }
+       ecore_timer_add(0.50, __cam_app_hide_rect_image, ad);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool __cam_run_image_viewer_idler(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, ECORE_CALLBACK_CANCEL);
+
+       gboolean launch_special_view = FALSE;
+
+       if (!cam_app_run_image_viewer_ug(ad, camapp->filename, launch_special_view)) {
+               cam_critical(LOG_UI, "cam_app_run_image_viewer_ug failed");
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void* __cam_run_image_viewer_thread_run(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       if(ad == NULL){
+               pthread_exit(NULL);
+               return NULL;
+       }
+       CamAppData *camapp = ad->camapp_handle;
+
+       if(camapp == NULL){
+               pthread_exit(NULL);
+               return NULL;
+       }
+
+       while (ad->is_capture_animation_processing) {
+//             DEBUG_TRACE("wait capture animation!");
+       }
+
+       ecore_idler_add(__cam_run_image_viewer_idler, (void *)ad);
+
+       pthread_exit(NULL);
+       return NULL;
+}
+
+static Ecore_Timer *progress_timer = NULL;
+
+Eina_Bool cam_image_capture_handle(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL, "camapp_handle is NULL");
+
+       CAM_TA_ACUM_ITEM_END("    captured message to cam_image_capture_handle", 0);
+       CAM_TA_ACUM_ITEM_BEGIN("    cam_image_capture_handle", 0);
+
+       pthread_t run_image_viewer_thread;
+
+       switch (camapp->shooting_mode) {
+
+       case CAM_SINGLE_MODE:
+       case CAM_SELF_SINGLE_MODE:
+               DEBUG_TRACE("start single shot capture. capture mode %d", camapp->default_capture_mode);
+
+               cam_critical(LOG_UI, "completed");
+
+               if( camapp->default_capture_mode == CAM_CAPTURE_SINGLE ||camapp->burst_shot == FALSE) {
+                       if (camapp->filename) {
+                               cam_debug(LOG_SYS, "#########camapp->filename=%s", camapp->filename);
+                               CAM_TA_ACUM_ITEM_BEGIN("        send signal to register thread", 0);
+                               g_queue_push_tail(ad->file_reg_queue, strdup(camapp->filename));
+                               pthread_cond_signal(&ad->file_reg_cond);
+                               CAM_TA_ACUM_ITEM_END("    send signal to register thread", 0);
+                               cam_app_update_thumbnail();
+                       } else {
+                               cam_app_notice_popup(ad, "Your storage have trouble ", cam_app_popup_response_cb);
+                       }
+               } else {
+                       if (camapp->continuous_shot_data == NULL) {
+                               cam_critical(LOG_SYS, " continuous_shot_data is NULL");
+                               return ECORE_CALLBACK_CANCEL;
+                       }
+
+                       int i = 0;
+
+                       camapp->continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_STOPPED;
+
+                       if (camapp->filename)
+                               free(camapp->filename);
+
+                       camapp->filename = strdup(camapp->continuous_shot_data->file_path[camapp->continuous_shot_data->shot_num - 1]);
+
+                       cam_app_destroy_progressbar(ad);
+                       if (camapp->continuous_shot_data->error != NULL) {
+                               cam_debug(LOG_SYS, " Start to unlink captured files");
+
+                               /*  unlink all captured files */
+                               for (i = 0; i < camapp->continuous_shot_data->shot_num; i++) {
+                                       if (camapp->continuous_shot_data->file_path[i]
+                                           && !access(camapp->continuous_shot_data->file_path[i], F_OK)) {
+                                               unlink(camapp->continuous_shot_data->file_path[i]);
+                                       }
+                               }
+
+                               cam_debug(LOG_SYS, " Unlink done");
+                               cam_app_notice_popup(ad, camapp->continuous_shot_data->error->message, cam_app_popup_response_cb);
+                       } else {
+                               cam_critical(LOG_UI, "start to register continuous shot");
+
+                       }
+
+                       #if 1 /*TODO: need ui guide, for display popup*/
+                       elm_progressbar_value_set(ad->progress_popup_bar, 1.0);
+                       if (progress_timer) {
+                               ecore_timer_del(progress_timer);
+                       }
+                       ad->is_processing = FALSE;
+                       cam_popup_delete(ad);
+#endif
+
+                       cam_continuous_shot_data_free(ad);
+                       cam_toolbar_update(ad);
+                       cam_app_update_thumbnail();
+                       camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
+                       cam_reset_focus_mode(ad);
+               }
+
+
+               if (camapp->review) {
+                       if (pthread_create(&run_image_viewer_thread, NULL, __cam_run_image_viewer_thread_run, (void *)ad) < 0) {
+                               cam_critical(LOG_CAM, "create run_image_viewer_thread failed");
+                               return ECORE_CALLBACK_CANCEL;
+                       }
+               }
+
+               break;
+
+       default:
+               cam_debug(LOG_UI, " Not matched shooting mode [%d]",
+                         camapp->shooting_mode);
+               break;
+       }
+       ad->remained_count--;
+       indicator_update_remain_count(ad);
+
+       if (camapp->af_mode == CAM_FOCUS_FACE) { /*note: face focus mode, if start capture,stop draw rect*/
+               cam_app_run_video_stream();
+       }
+
+       CAM_TA_ACUM_ITEM_END("    cam_image_capture_handle", 0);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_camera_touch_af_press(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       debug_fenter(LOG_UI);
+
+       camapp->focus_mode = CAM_FOCUS_MODE_TOUCH_AUTO;
+
+       if (!ad->camapp_handle->key_lock) {
+               ad->camapp_handle->key_lock = TRUE;
+               if (!cam_camera_key_half_press(ad)) {
+                       DEBUG_TRACE("cam_camera_key_half_press failed state");
+                       ad->camapp_handle->key_lock = FALSE;
+                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+                       return FALSE;
+               }
+               ad->camapp_handle->key_lock = FALSE;
+       }
+       else
+               camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+
+       return TRUE;
+}
+
+gboolean cam_camera_key_half_press(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       debug_fenter(LOG_UI);
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if (!(capacity & CAM_CP_FUNC_FOCUS_MODE))
+               return FALSE;
+
+       if (camapp->af_mode != CAM_FOCUS_FACE) {
+               cam_mm_stop_focusing();
+
+               if (!cam_mm_set_af_area(ad->af_x, ad->af_y, ad->camera_focus_w, ad->camera_focus_h)) {
+                       DEBUG_TRACE("cam_mm_set_af_area failed");
+                       return FALSE;
+               }
+               DEBUG_TRACE("focus mode = %d", camapp->focus_mode);
+
+               if (!cam_mm_start_focusing(camapp->focus_mode)) {
+                       cam_critical(LOG_MM, " cam_mm_start_focusing error " );
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
+gboolean cam_camera_key_half_release(void *data)
+{
+       debug_fenter(LOG_UI);
+       return TRUE;
+}
+
+gboolean cam_do_capture(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int state = 0;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       if (ad->is_rotating)
+               return FALSE;/*note: now is rotating*/
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_camera_key_press", 0);
+
+       if (ad->continuous_af_timer) {
+               REMOVE_TIMER(ad->continuous_af_timer);
+               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __cam_continuous_af_timer_cb, ad);
+       }
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               state = cam_mm_get_state();
+               cam_debug(LOG_UI, " state = %d", state);
+               switch (state) {
+               case CAMERA_STATE_PREVIEW:
+               case CAMERA_STATE_CAPTURED:
+                       if (ad->timer_activated) {
+                               CAM_UI_LOG("timer activated!");
+                               cam_app_cancel_timer(ad);
+                               if (!cam_image_capture_start(ad)) {
+                                       return FALSE;
+                               }
+                       } else if (camapp->timer > CAM_SETTINGS_TIMER_OFF) {
+                               CAM_UI_LOG("timer start");
+                               cam_app_start_timer(ad);
+                       } else if (!cam_image_capture_start(ad)) {
+                               return FALSE;
+                       }
+
+                       break;
+               case CAMERA_STATE_CAPTURING:
+                       cam_debug(LOG_UI, "capturing state");
+                       return TRUE;
+                       break;
+               case CAMERA_STATE_NONE:
+               case CAMERA_STATE_CREATED:
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+
+
+               state = cam_mm_get_state();
+               cam_debug(LOG_UI, " state = %d", state);
+               switch (state) {
+               case RECORDER_STATE_RECORDING:
+               case RECORDER_STATE_PAUSED:
+                       if(!cam_image_capture_start(ad)) {
+                               HIDE_EVAS_OBJECT(ad->rect_image);
+                               return FALSE;
+                       }
+                       break;
+               case RECORDER_STATE_NONE:
+               case RECORDER_STATE_CREATED:
+               case RECORDER_STATE_READY:
+                       return FALSE;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       }
+
+       return TRUE;
+}
+
+gboolean cam_do_record(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int state = 0;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       if (ad->is_rotating)
+               return FALSE;/*note: now is rotating*/
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_camera_key_press", 0);
+
+       if (ad->continuous_af_timer) {
+               REMOVE_TIMER(ad->continuous_af_timer);
+               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __focus_guide_destroy, ad);
+       }
+
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               state = cam_mm_get_state();
+               cam_critical(LOG_UI, " state = %d", state);
+               switch (state) {
+               case RECORDER_STATE_READY:
+                       {
+                               if (ad->timer_activated) {
+                                       CAM_UI_LOG("timer activated!");
+                                       cam_app_cancel_timer(ad);
+                                       if (!cam_video_record_start(ad)) {
+                                               return FALSE;
+                                       }
+                               } else if (camapp->timer > CAM_SETTINGS_TIMER_OFF) {
+                                       CAM_UI_LOG("timer start");
+                                       cam_app_start_timer(ad);
+                               } else if (!cam_video_record_start(ad)) {
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case RECORDER_STATE_RECORDING:
+                       cam_critical(LOG_UI, "RECORDER_STATE_NONE ");
+                       return FALSE;
+                       break;
+               case RECORDER_STATE_NONE:
+                       cam_critical(LOG_UI, "RECORDER_STATE_NONE ");
+                       return FALSE;
+                       break;
+               case RECORDER_STATE_CREATED:
+                       cam_critical(LOG_UI, "RECORDER_STATE_CREATED ");
+                       return FALSE;
+                       break;
+               case RECORDER_STATE_PAUSED:
+                       cam_critical(LOG_UI, "RECORDER_STATE_PAUSED ");
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       }
+
+       return TRUE;
+}
+
+gboolean cam_camera_key_press(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       debug_fenter(LOG_UI);
+
+       int state = 0;
+
+       if (ad->is_rotating)
+               return FALSE;/*note: now is rotating*/
+
+       CAM_TA_ACUM_ITEM_BEGIN("  cam_camera_key_press", 0);
+
+       if (ad->continuous_af_timer) {
+               REMOVE_TIMER(ad->continuous_af_timer);
+
+               if (camapp->camera_mode == CAM_CAMCORDER_MODE)
+                       ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __focus_guide_destroy, ad);
+               else
+                       ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __cam_continuous_af_timer_cb, ad);
+       }
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               state = cam_mm_get_state();
+               cam_debug(LOG_UI, " state = %d", state);
+               switch (state) {
+               case CAMERA_STATE_PREVIEW:
+               case CAMERA_STATE_CAPTURED:
+                       if (ad->timer_activated) {
+                               CAM_UI_LOG("timer activated!");
+                       } else if (camapp->timer >
+                                  CAM_SETTINGS_TIMER_OFF) {
+                               CAM_UI_LOG("timer start");
+                               cam_app_start_timer(ad);
+                       } else if (!cam_image_capture_start(ad)) {
+                               return FALSE;
+                       }
+                       break;
+               case CAMERA_STATE_CAPTURING:
+                       cam_debug(LOG_UI, "capturing state");
+                       return TRUE;
+                       break;
+               case CAMERA_STATE_NONE:
+               case CAMERA_STATE_CREATED:
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               state = cam_mm_get_state();
+               cam_debug(LOG_UI, " state = %d", state);
+               switch (state) {
+               case RECORDER_STATE_READY:
+                       {
+                               if (ad->timer_activated) {
+                                       CAM_UI_LOG("timer activated!");
+                               } else if (camapp->timer >
+                                          CAM_SETTINGS_TIMER_OFF) {
+                                       CAM_UI_LOG("timer start");
+                                       cam_app_start_timer(ad);
+                               } else if (!cam_video_record_start(ad)) {
+                                       return FALSE;
+                               }
+                       }
+                       break;
+               case RECORDER_STATE_RECORDING:
+#if 1
+                       camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
+                       if (!cam_video_record_stop(ad)) {
+                               return FALSE;
+                       }
+                       return FALSE;
+#endif
+                       break;
+               case RECORDER_STATE_NONE:
+               case RECORDER_STATE_CREATED:
+               case RECORDER_STATE_PAUSED:
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       } else {
+               cam_critical(LOG_MM, "Unknow camera mode");
+               return FALSE;
+       }
+       CAM_TA_ACUM_ITEM_END("  cam_camera_key_press", 0);
+       return TRUE;
+}
+
+gboolean cam_camera_key_release(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int state = 0;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+
+               state = cam_mm_get_state();
+               cam_debug(LOG_UI, " state = %d", state);
+               switch (state) {
+               case CAMERA_STATE_CAPTURING:
+                       if (!cam_image_capture_stop(ad)) {
+                               return FALSE;
+                       }
+                       return TRUE;
+                       break;
+               case CAMERA_STATE_PREVIEW:
+               case CAMERA_STATE_CREATED:
+               case CAMERA_STATE_NONE:
+               case CAMERA_STATE_CAPTURED:
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+#if 0
+               state = cam_mm_get_state();
+               switch (state) {
+               case MM_CAMCORDER_STATE_PREPARE:
+                       if (!cam_video_record_start(ad)) {
+                               return FALSE;
+                       }
+                       break;
+               case MM_CAMCORDER_STATE_RECORDING:
+                       if (!cam_video_record_stop(ad)) {
+                               return FALSE;
+                       }
+                       return FALSE;
+                       break;
+               case MM_CAMCORDER_STATE_NONE:
+               case MM_CAMCORDER_STATE_NULL:
+               case MM_CAMCORDER_STATE_READY:
+               case MM_CAMCORDER_STATE_CAPTURING:
+               case MM_CAMCORDER_STATE_PAUSED:
+                       return FALSE;
+                       break;
+               default:
+                       return FALSE;
+                       break;
+
+               }
+#endif
+       } else {
+               cam_critical(LOG_MM, "Unknow camera mode");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void cam_reset_focus_coordinate(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       ad->af_x = (ad->win_width / 2) - ad->preview_offset_x;
+       ad->af_y = (ad->win_height / 2) - ad->preview_offset_y;
+
+       ad->af_x = (ad->af_x * ad->camfw_video_width) / ad->preview_w;
+       ad->af_y = (ad->af_y * ad->camfw_video_height) / ad->preview_h;
+
+       /* init */
+       ad->touch_lcd_x = (ad->win_height / 2);
+       ad->touch_lcd_y = (ad->win_width / 2);
+
+       ad->af_start_x = 0;
+       ad->af_start_y = 0;
+
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               {
+                       ad->af_start_x = ad->touch_lcd_x;
+                       ad->af_start_y = ad->touch_lcd_y;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               {
+                       ad->af_start_x = ad->win_height - ad->touch_lcd_x;
+                       ad->af_start_y = ad->win_width - ad->touch_lcd_y;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               {
+                       ad->af_start_x = ad->touch_lcd_y;
+                       ad->af_start_y = ad->win_height - ad->touch_lcd_x;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               {
+                       ad->af_start_x = ad->win_width - ad->touch_lcd_y;
+                       ad->af_start_y = ad->touch_lcd_x;
+               }
+               break;
+       default:
+               break;
+       }
+
+       /* adjust */
+       DEBUG_TRACE("ad->af_start_x=%f, ad->af_start_y=%f", ad->af_start_x, ad->af_start_y);
+
+       ad->camera_focus_w = CAMERA_FOCUS_W * elm_config_scale_get();
+       ad->camera_focus_h = CAMERA_FOCUS_H * elm_config_scale_get();
+       DEBUG_TRACE("ad->camera_focus_w=%f, ad->camera_focus_h=%f", ad->camera_focus_w, ad->camera_focus_h);
+
+       ad->af_start_x = ad->af_start_x - (ad->camera_focus_w / 2);
+       ad->af_start_y = ad->af_start_y - (ad->camera_focus_h / 2);
+       DEBUG_TRACE("af area box start x,y =[%f,%f]\n", ad->af_start_x, ad->af_start_y);
+
+       if (ad->rot_current == APP_DEVICE_ORIENTATION_270
+           || ad->rot_current == APP_DEVICE_ORIENTATION_90) {
+               if (ad->af_start_x < ad->preview_offset_x) {
+                       ad->af_start_x = ad->preview_offset_x;
+               }
+               if (ad->af_start_y < ad->preview_offset_y) {
+                       ad->af_start_y = ad->preview_offset_y;
+               }
+               if ((ad->af_start_x + ad->camera_focus_w) >
+                   (ad->preview_w + ad->preview_offset_x)) {
+                       ad->af_start_x =
+                           (ad->preview_w + ad->preview_offset_x) -
+                           ad->camera_focus_w;
+               }
+               if ((ad->af_start_y + ad->camera_focus_h) >
+                   (ad->preview_h + ad->preview_offset_y)) {
+                       ad->af_start_y =
+                           (ad->preview_h + ad->preview_offset_y) -
+                           ad->camera_focus_h;
+               }
+
+       } else {
+               if (ad->af_start_y < ad->preview_offset_x) {
+                       ad->af_start_y = ad->preview_offset_x;
+               }
+               if (ad->af_start_x < ad->preview_offset_y) {
+                       ad->af_start_x = ad->preview_offset_y;
+               }
+               if ((ad->af_start_y + ad->camera_focus_h) >
+                   (ad->preview_w + ad->preview_offset_x)) {
+                       ad->af_start_y =
+                           (ad->preview_w + ad->preview_offset_x) -
+                           ad->camera_focus_h;
+               }
+               if ((ad->af_start_x + ad->camera_focus_w) >
+                   (ad->preview_h + ad->preview_offset_y)) {
+                       ad->af_start_x =
+                           (ad->preview_h + ad->preview_offset_y) -
+                           ad->camera_focus_w;
+               }
+       }
+
+
+}
+
+Eina_Bool cam_continuous_af_start(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL, "camapp_handle is NULL");
+
+       /* cam_mm_set_af_area include init focusing */
+       DEBUG_TRACE("start continuous AF");
+       if (cam_mm_set_af_area(ad->af_x, ad->af_y, ad->camera_focus_w, ad->camera_focus_h)) {
+               DEBUG_TRACE("cam_mm_set_af_area success!");
+               /*focus guide update*/
+       } else {
+               DEBUG_TRACE("cam_mm_set_af_area error!");
+       }
+
+       camapp->focus_mode = CAM_FOCUS_MODE_CONTINUOUS;
+
+       if (!cam_mm_start_focusing(camapp->focus_mode)) {
+               cam_critical(LOG_MM, "cam_mm_start_focusing error");
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+Eina_Bool cam_volume_key_press(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               if (ad->longpress_timer)
+                       ad->longpress_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if (ad->cancel_key_press == TRUE) {
+               if (ad->longpress_timer)
+                       ad->longpress_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if(ad->is_rotating){
+               cam_critical(LOG_MM, "rotating...");
+               if (ad->longpress_timer)
+                       ad->longpress_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING) {
+               cam_critical(LOG_UI, "touch_af_state is [%d], do not zoom", camapp->touch_af_state);
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       DEL_EVAS_OBJECT(ad->focus_edje);
+       cam_mm_stop_focusing();
+
+       int state = 0;
+       gboolean up_key = ad->up_key;
+       debug_fenter(LOG_UI);
+
+       state = cam_mm_get_state();
+       cam_debug(LOG_UI, " state = %d", state);
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               switch (state) {
+               case RECORDER_STATE_RECORDING:
+               case RECORDER_STATE_PAUSED:
+               case RECORDER_STATE_READY:
+                       {
+                               if (!camapp->zoom_lock
+                                   && camapp->recording_mode != CAM_RECORD_SLOW) {
+                                       zoom_in(ad, up_key, 1);
+                               }
+                       }
+                       break;
+               case RECORDER_STATE_NONE:
+               case RECORDER_STATE_CREATED:
+                       break;
+               default:
+                       break;
+               }
+       } else if(camapp->camera_mode == CAM_CAMERA_MODE) {
+               switch (state) {
+               case CAMERA_STATE_PREVIEW:
+               case CAMERA_STATE_CAPTURED:
+                       {
+                               if (!camapp->zoom_lock
+                                   && camapp->recording_mode != CAM_RECORD_SLOW) {
+                                       zoom_in(ad, up_key, 1);
+                               }
+
+                       }
+                       break;
+               case CAMERA_STATE_NONE:
+               case CAMERA_STATE_CREATED:
+               case CAMERA_STATE_CAPTURING:
+                       break;
+               default:
+                       break;
+               }
+
+       }
+
+
+       if (ad->longpress_timer)
+               ecore_timer_interval_set(ad->longpress_timer, ZOOM_LONG_PRESS_INTERVAL);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static gboolean cam_power_key_press(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       power_lock_state(POWER_STATE_SCREEN_OFF, 0);
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (ad->mm_state < CAMERA_STATE_PREVIEW) {
+               goto lock_and_exit;
+       } else if (ad->mm_state == CAMERA_STATE_PREVIEW) {
+               goto lock_and_exit;
+       } else if (ad->mm_state > CAMERA_STATE_PREVIEW) {
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       DEBUG_TRACE("camera mode");
+               } else {
+                       camapp->rec_stop_type = CAM_REC_STOP_POWER_KEY;
+                       if (!cam_video_record_stop(ad)) {
+                               DEBUG_TRACE("record stop fail");
+                       }
+               }
+       }
+       return TRUE;
+
+ lock_and_exit:
+       power_unlock_state(POWER_STATE_SCREEN_OFF);
+
+       return TRUE;
+}
+#if 0
+static gboolean __cam_end_key_grab_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Ecore_X_Display *disp = NULL;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad->main_xid <= 0, FALSE, "main_xid <= 0");
+
+       disp = ecore_x_display_get();
+       cam_retvm_if(disp == NULL, FALSE, "ecore_x_display_get fail");
+
+       if (utilx_grab_key(disp, ad->main_xid, KEY_END, SHARED_GRAB) == -1) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_END);
+       }
+
+       return TRUE;
+}
+#endif
+gboolean cam_key_grab_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Ecore_X_Display *disp = NULL;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad->main_xid <= 0, FALSE, "main_xid <= 0");
+       int success = 0;
+       int ret = TRUE;
+
+       if (ad->isGrabed)
+               return TRUE;
+
+       DEBUG_TRACE("key_grab_init############################");
+
+       ad->cancel_key_press = FALSE;
+
+       disp = ecore_x_display_get();
+       cam_retvm_if(disp == NULL, FALSE, "ecore_x_display_get fail");
+
+       /* volume key */
+       if (utilx_grab_key(disp, ad->main_xid, KEY_VOLUMEUP, TOP_POSITION_GRAB) != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_VOLUMEUP);
+               ret = FALSE;
+       }
+       if (utilx_grab_key(disp, ad->main_xid, KEY_VOLUMEDOWN, TOP_POSITION_GRAB) != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_VOLUMEDOWN);
+               ret = FALSE;
+       }
+
+       #if 0
+       if (vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1))
+               cam_critical(LOG_SYS, "VCONFKEY_STARTER_USE_VOLUME_KEY set fail");
+       #endif
+
+       /* camera key */
+       if (utilx_grab_key(disp, ad->main_xid, KEY_CAMERA, TOP_POSITION_GRAB)  != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_CAMERA);
+               ret = FALSE;
+       }
+       if (utilx_grab_key(disp, ad->main_xid, KEY_CONFIG, TOP_POSITION_GRAB)  != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_CONFIG);
+               ret = FALSE;
+       }
+       /* power key */
+       if (utilx_grab_key(disp, ad->main_xid, KEY_POWER, SHARED_GRAB) != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_POWER);
+               ret = FALSE;
+       }
+
+       /* etc */
+       if (utilx_grab_key(disp, ad->main_xid, KEY_SEND, SHARED_GRAB) != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_SEND);
+               ret = FALSE;
+       }
+       if (utilx_grab_key(disp, ad->main_xid, KEY_END, SHARED_GRAB) != success) {
+               cam_critical(LOG_SYS, "%s key grap fail", KEY_END);
+               ret = FALSE;
+       }
+
+       ad->isGrabed = TRUE;
+       return ret;
+}
+
+gboolean cam_key_grab_deinit(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Ecore_X_Display *disp = NULL;
+       int success = 0;
+       int ret = TRUE;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad->main_xid <= 0, FALSE, "main_xid <= 0");
+
+       if (!ad->isGrabed)
+               return TRUE;
+       DEBUG_TRACE("key_grab_deinit############################");
+
+       disp = ecore_x_display_get();
+       cam_retvm_if(disp == NULL, FALSE, "ecore_x_display_get fail");
+
+       /* volume key */
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_VOLUMEUP) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_VOLUMEUP);
+               ret = FALSE;
+       }
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_VOLUMEDOWN) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_VOLUMEDOWN);
+               ret = FALSE;
+       }
+
+       /* camera key */
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_CAMERA) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_CAMERA);
+               ret = FALSE;
+
+       }
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_CONFIG) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_CONFIG);
+               ret = FALSE;
+       }
+
+       /* power key */
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_POWER) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_POWER);
+               ret = FALSE;
+       }
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_PAUSE) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_PAUSE);
+               ret = FALSE;
+       }
+
+       /* etc */
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_SEND) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_SEND);
+               ret = FALSE;
+       }
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_SELECT) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_SELECT);
+               ret = FALSE;
+       }
+       if (utilx_ungrab_key(disp, ad->main_xid, KEY_END) != success){
+               cam_critical(LOG_SYS, "%s key ungrap fail", KEY_END);
+               ret = FALSE;
+       }
+
+       ad->isGrabed = FALSE;
+       return ret;
+}
+
+gboolean cam_app_key_event_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       DEBUG_TRACE("cam_app_key_event_init");
+
+       if (ad == NULL) {
+               cam_critical(LOG_UI, "appdata is NULL, maybe not created");
+               return FALSE;
+       }
+       if (ad->key_down == NULL) {
+               ad->key_down =
+                   ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, cam_hard_key_down, ad);
+       }
+       if (ad->key_up == NULL) {
+               ad->key_up =
+                   ecore_event_handler_add(ECORE_EVENT_KEY_UP, cam_hard_key_up, ad);
+       }
+
+       return TRUE;
+}
+
+gboolean cam_app_key_event_deinit(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       DEBUG_TRACE("cam_app_key_event_deinit");
+
+       if (ad == NULL) {
+               cam_critical(LOG_UI, "appdata is NULL, maybe not created");
+               return FALSE;
+       }
+       if (ad->key_down) {
+               ecore_event_handler_del(ad->key_down);
+               ad->key_down = NULL;
+       }
+       if (ad->key_up) {
+               ecore_event_handler_del(ad->key_up);
+               ad->key_up = NULL;
+       }
+
+       return TRUE;
+}
+
+Eina_Bool cam_hard_key_down(void *data, int type, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_DONE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_DONE, "camapp_handle is NULL");
+
+       Ecore_Event_Key *kd = (Ecore_Event_Key *) event_info;
+       cam_debug(LOG_UI, "Key name : %s", kd->keyname);
+
+       if (ad->confirm_popup) {
+               cam_debug(LOG_UI, "confirm popup exist. ignore key event");
+               return ECORE_CALLBACK_DONE;
+       }
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup)
+               toolbar_destroy_shortcuts_popup(ad);
+
+       cam_app_timeout_checker_update();
+
+       /*  Camera key Press */
+       if (0 == strcmp(kd->keyname, KEY_CANCEL)) {
+               ad->cancel_key_press = TRUE;
+       }
+       if (0 == strcmp(kd->keyname, KEY_CONFIG)) {     /* camera key - full */
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+                       CAM_TA_ACUM_ITEM_BEGIN("Total capture time", 0);
+                       CAM_TA_ACUM_ITEM_BEGIN
+                           ("        camera key to capture start", 0);
+                       if (!cam_camera_key_press(ad)) {
+                               cam_warning(LOG_UI, "cam_camera_key_press failed");
+                       }
+                       camapp->key_lock = FALSE;
+               }
+       }
+       /*  Camera key HALF press */
+       else if (0 == strcmp(kd->keyname, KEY_CAMERA)) {        /* camera key - half */
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+
+                       if (!cam_camera_key_half_press(ad)) {
+                               cam_warning(LOG_UI, "cam_camera_key_half_press failed");
+                       }
+                       camapp->key_lock = FALSE;
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_VOLUMEUP)) {
+               if (camapp->volume_key == CAM_VOLUME_KEY_ZOOM) {
+                       if (!camapp->key_lock) {
+                               camapp->key_lock = TRUE;
+                               ad->up_key = TRUE;
+                               cam_volume_key_press(ad);
+                               cam_add_longpress_key_timer(ad);
+                               camapp->key_lock = FALSE;
+                       }
+               } else {
+                       cam_toolbar_shutter_button_cb(ad, NULL, "press_shutter_sig", "hard_key");
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_VOLUMEDOWN)) {
+               if (camapp->volume_key == CAM_VOLUME_KEY_ZOOM) {
+                       if (!camapp->key_lock) {
+                               camapp->key_lock = TRUE;
+                               ad->up_key = FALSE;
+                               cam_volume_key_press(ad);
+                               cam_add_longpress_key_timer(ad);
+                               camapp->key_lock = FALSE;
+                       }
+               } else {
+                       if (!ad->is_recording) {
+                               cam_toolbar_recording_button_cb(ad, NULL, "click_shutter_sig", "hard_key");
+                       } else {
+                               cam_toolbar_recording_stop_button_cb(ad, NULL, "click_shutter_sig", "hard_key");
+                       }
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_SELECT)) {
+
+       } else if ((0 == strcmp(kd->keyname, KEY_SELECT))
+                  && ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_POWER)) {
+#if 0
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+                       power_unlock_state(POWER_STATE_NORMAL);
+                       cam_power_key_press(ad);
+                       camapp->key_lock = FALSE;
+               }
+#endif
+       }
+
+       return ECORE_CALLBACK_DONE;
+}
+
+Eina_Bool cam_hard_key_up(void *data, int type, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_DONE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_DONE, "camapp_handle is NULL");
+
+       Ecore_Event_Key *kd = (Ecore_Event_Key *) event_info;
+       cam_debug(LOG_UI, "Key name : %s", kd->keyname);
+
+       if (ad->confirm_popup) {
+               cam_debug(LOG_UI, "confirm popup exist. ignore key event");
+               return ECORE_CALLBACK_DONE;
+       }
+
+       cam_app_timeout_checker_update();
+
+       if (0 == strcmp(kd->keyname, KEY_CANCEL)) {
+               ad->cancel_key_press = FALSE;
+       }
+
+       if(ad->cancel_key_press == TRUE) {
+               if (ad->longpress_timer) { /*volume key long press */
+                       cam_del_longpress_key_timer(ad);
+               }
+               return ECORE_CALLBACK_DONE;
+       }
+
+       if (0 == strcmp(kd->keyname, KEY_CONFIG)) {     /* camera key - full  */
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+                       if (!cam_camera_key_release(ad)) {
+                               cam_warning(LOG_UI, "cam_camera_key_release failed");
+                       }
+                       camapp->key_lock = FALSE;
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_CAMERA)) {      /* camera key - half */
+               if (!camapp->key_lock) {
+                       camapp->key_lock = TRUE;
+                       if (!cam_camera_key_half_release(ad)) {
+                               cam_warning(LOG_UI, "cam_camera_key_release failed");
+                       }
+                       camapp->key_lock = FALSE;
+               }
+       } else if (0 == strcmp(kd->keyname, KEY_VOLUMEUP)
+                  || 0 == strcmp(kd->keyname, KEY_VOLUMEDOWN)) {
+               if (camapp->volume_key == CAM_VOLUME_KEY_ZOOM) {
+                       if (!camapp->key_lock) {
+                               camapp->key_lock = TRUE;
+                               cam_del_longpress_key_timer(ad);
+                               camapp->key_lock = FALSE;
+                       }
+               } else {
+                       cam_toolbar_shutter_button_cb(ad, NULL, "release_shutter_sig", "hard_key");
+               }
+       }
+       return ECORE_CALLBACK_DONE;
+}
+
+Eina_Bool cam_mouse_button_down(void *data, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EINA_FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EINA_FALSE, "camapp_handle is NULL");
+
+       if (ad->pinch_edje) {
+               if (ad->focus_edje)
+                       edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return FALSE;
+       }
+
+       Evas_Event_Mouse_Down *md = (Evas_Event_Mouse_Down *) event_info;
+
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               {
+                       ad->touch_lcd_x = md->canvas.x; /* LCD x */
+                       ad->touch_lcd_y = md->canvas.y; /* LCD y */
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               {
+                       ad->touch_lcd_x = ad->win_height - md->canvas.x; /* LCD x */
+                       ad->touch_lcd_y = ad->win_width - md->canvas.y; /* LCD y */
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               {
+                       ad->touch_lcd_x = ad->win_height - md->canvas.y; /* LCD x */
+                       ad->touch_lcd_y = md->canvas.x; /* LCD y */
+
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               {
+                       ad->touch_lcd_x = md->canvas.y; /* LCD x */
+                       ad->touch_lcd_y = ad->win_width - md->canvas.x; /* LCD y */
+               }
+               break;
+       default:
+               break;
+       }
+
+       ad->af_x = ad->touch_lcd_y - ad->preview_offset_x;
+       ad->af_y = ad->preview_h - ad->touch_lcd_x;
+
+       ad->af_x = (ad->af_x * ad->camfw_video_width) / ad->preview_w;
+       ad->af_y = (ad->af_y * ad->camfw_video_height) / ad->preview_h;
+
+       DEBUG_TRACE("*************************************************************************************");
+       DEBUG_TRACE("touched lcd x,y=[%d,%d] af x,y=[%d,%d]\n", ad->touch_lcd_x, ad->touch_lcd_y, ad->af_x, ad->af_y);
+       DEBUG_TRACE("*************************************************************************************");
+
+       int state = cam_mm_get_state();
+       if (!(camapp->camera_mode == CAM_CAMERA_MODE && state == CAMERA_STATE_CAPTURING) ){
+               if (camapp->enable_touch_af == TRUE
+                       && camapp->touch_af_state == CAM_TOUCH_AF_STATE_NONE) {
+                       REMOVE_TIMER(ad->continuous_af_timer);
+                       cam_app_draw_af_box(ad);
+
+                       camapp->focus_state = CAM_FOCUS_STATUS_RELEASED;
+                       cam_app_focus_guide_create(ad);
+                       cam_app_focus_guide_update(ad);
+                       cam_ui_effect_utils_set_zoom_effect(ad->focus_edje,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_START_RATE,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_END_RATE,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_DURATION);
+                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_READY;
+               }
+       } else
+               DEBUG_TRACE("camera mode[%d], camera state[%d] not available focus",camapp->camera_mode,state);
+
+       return EINA_TRUE;
+}
+
+Eina_Bool cam_mouse_button_up(void *data, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EINA_FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EINA_FALSE, "camapp is NULL");
+
+       if (ad->pinch_edje) {
+               if (ad->focus_edje)
+                       edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return FALSE;
+       }
+
+       if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY) {
+               camapp->touch_af_state = CAM_TOUCH_AF_STATE_DOING;
+               cam_app_draw_af_box(ad);
+               evas_object_show(ad->focus_edje);
+               cam_ui_effect_utils_set_zoom_effect(ad->focus_edje,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_END_RATE,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_START_RATE,
+                                                               CAM_FOCUS_EDJE_ZOOM_EFFECT_DURATION);
+
+               if (camapp->camera_mode == CAM_CAMCORDER_MODE && ad->is_recording) {
+                       if (ad->caf_button)
+                               cam_toolbar_show_cafbutton(ad, TRUE);
+               }
+
+               cam_camera_touch_af_press(ad);
+       }
+       return EINA_TRUE;
+}
+
+void cam_app_set_config_group(gint mode)
+{
+       cam_debug(LOG_UI, "mode : %d", mode);
+
+       if (mode == CAM_CAMERA_MODE) {
+               cam_config_set_group_name(CAM_CONFIG_TYPE_PREVIEW, "still");
+       } else {
+               cam_config_set_group_name(CAM_CONFIG_TYPE_PREVIEW, "video");
+       }
+
+       debug_fleave(LOG_UI);
+
+       return;
+}
+
+int cam_app_get_latest_mode(void)
+{
+       cam_config_set_group_name(CAM_CONFIG_TYPE_COMMON, "common");
+       int last_mode =
+           cam_config_get_int_by_type(CAM_CONFIG_TYPE_COMMON, "mode",
+                                      CAM_CAMERA_MODE);
+
+       debug_msg(LOG_UI, "last mode:%d", last_mode);
+       return last_mode;
+}
+
+const gchar *cam_app_get_target_path(void)
+{
+       CamAppData *camapp = NULL;
+
+       camapp = cam_handle_get();
+
+       if (camapp) {
+
+               const gchar *default_path = NULL;
+               switch (camapp->storage) {
+               case CAM_STORAGE_INTERNAL:
+                       default_path = cam_file_get_internal_image_path();
+                       break;
+               case CAM_STORAGE_EXTERNAL:
+                       default_path = cam_file_get_external_image_path();
+                       break;
+               default:
+                       cam_critical(LOG_UI, "Unknow storage type : %d", camapp->storage);
+                       break;
+               }
+
+               cam_debug(LOG_UI, "target path : [%s]", default_path);
+               return default_path;
+       } else {
+               cam_critical(LOG_UI, "camapp handle is NULL");
+               return NULL;
+       }
+}
+
+gchar *cam_app_get_last_filename(void)
+{
+       CamAppData *camapp = NULL;
+       gchar *last_file_path = NULL;
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+
+       camapp = cam_handle_get();
+       cam_retvm_if(camapp == NULL, NULL, "cam_handle is NULL");
+
+       last_file_path = cam_file_get_last_file_path(ad, cam_app_get_target_path());
+
+       if (last_file_path) {
+               cam_debug(LOG_UI, "last_file_path  : %s", last_file_path);
+       } else {
+               cam_critical(LOG_UI, "last_file_path is NULL");
+               return NULL;
+       }
+       return last_file_path;
+}
+
+gchar *cam_app_get_next_filename(CamFileExtention extension)
+{
+
+       CamAppData *camapp = NULL;
+       gchar *new_filename = NULL;
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+
+       camapp = cam_handle_get();
+       cam_retvm_if(camapp == NULL, NULL, "cam_handle is NULL");
+       int mm_state = 0;
+       mm_state = cam_mm_get_state();
+
+       if( extension == CAM_FILE_EXTENTION_IMAGE){
+               new_filename = cam_file_get_next_filename(cam_app_get_target_path(), INAGE_FILE_NAME, IMAGE_FILE_EXTENSION);
+       } else {
+               if ((camapp->recording_mode == CAM_RECORD_MMS)
+                               || (camapp->recording_mode == CAM_RECORD_SELF_MMS))
+                       new_filename = cam_file_get_next_filename(cam_app_get_target_path(), VIDEO_FILE_NAME, VIDEO_FILE_EXTENSION_3GP);
+               else
+                       new_filename = cam_file_get_next_filename(cam_app_get_target_path(), VIDEO_FILE_NAME, VIDEO_FILE_EXTENSION_MP4);
+       }
+
+       if (new_filename) {
+               cam_debug(LOG_UI, "next filename : %s", new_filename);
+       } else {
+               cam_critical(LOG_UI, "new_filename is NULL");
+       }
+
+       return new_filename;
+}
+
+static void __cam_preview_cb(camera_preview_data_s *preview_frame, void *user_data)
+{
+
+       cam_retm_if(user_data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)user_data;
+
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is null");
+}
+
+static void __cam_state_change_cb(camera_state_e previous, camera_state_e current,
+        bool by_policy, void *user_data)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+       ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "camapp is null");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is null");
+       DEBUG_TRACE("current= %d, previous = %d, ad->enable_mode_change = %d",  current, previous, ad->enable_mode_change);
+
+       if (current == CAMERA_STATE_PREVIEW) {
+               ad->enable_mode_change = TRUE;
+       } else {
+               ad->enable_mode_change = FALSE;
+       }
+
+       DEBUG_TRACE("current= %d, previous = %d, ad->enable_mode_change = %d", current, previous, ad->enable_mode_change);
+       cam_app_camera_state_manager(previous, current, by_policy);
+
+}
+
+static void __cam_focus_cb(camera_focus_state_e state, void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       cam_debug(LOG_MM, " Focus state changed to [%d]", state);
+
+       if (ad->ug_state == CAM_UG_PAUSE_STATE)
+               return;
+
+       camapp->focus_state = state ;
+
+       if (ad->is_rotating == FALSE) {
+               if (evas_object_visible_get(ad->focus_edje) == TRUE)
+                       cam_app_focus_guide_update(ad);
+       }
+
+       switch (state) {
+       case CAMERA_FOCUS_STATE_RELEASED:
+               cam_debug(LOG_MM, "release");
+               break;
+       case CAMERA_FOCUS_STATE_ONGOING:
+               cam_debug(LOG_MM, "ongoing");
+               break;
+       case CAMERA_FOCUS_STATE_FOCUSED:
+               cam_debug(LOG_MM, "focused");
+               if (camapp->camera_mode == CAM_CAMERA_MODE && ad->mm_state < CAMERA_STATE_CAPTURING) {
+                       if ((camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO
+                                       || camapp->focus_mode == CAM_FOCUS_MODE_HALFSHUTTER)
+                               && camapp->shutter_sound != CAM_SETTINGS_SOUND_OFF)
+                                       cam_sound_play (CAM_SOUND_EFFECT_AF_OK, ad);
+
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO) {
+                               if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY
+                                       ||camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING)
+                                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+
+                               REMOVE_TIMER(ad->continuous_af_timer);
+                               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __cam_continuous_af_timer_cb, ad);
+                       }
+
+               } else if (camapp->camera_mode == CAM_CAMCORDER_MODE && ad->mm_state <= RECORDER_STATE_RECORDING) {
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO
+                               && camapp->shutter_sound != CAM_SETTINGS_SOUND_OFF
+                               && ad->mm_state != RECORDER_STATE_RECORDING)
+                                       cam_sound_play (CAM_SOUND_EFFECT_AF_OK, ad);
+
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO) {
+                               if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY
+                                       ||camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING)
+                                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+                       }
+
+                       REMOVE_TIMER(ad->continuous_af_timer);
+
+                       if (ad->is_recording)
+                               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __focus_guide_destroy, ad);
+               } else {
+                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+               }
+               break;
+       case CAMERA_FOCUS_STATE_FAILED:
+               cam_debug(LOG_MM, "failed");
+               if (camapp->camera_mode == CAM_CAMERA_MODE && ad->mm_state < CAMERA_STATE_CAPTURING) {
+                       if ((camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO
+                                       || camapp->focus_mode == CAM_FOCUS_MODE_HALFSHUTTER)
+                               && camapp->shutter_sound != CAM_SETTINGS_SOUND_OFF)
+                                       cam_sound_play (CAM_SOUND_EFFECT_AF_FAIL, ad);
+
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO) {
+                               if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY
+                                       ||camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING)
+                                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+
+                               REMOVE_TIMER(ad->continuous_af_timer);
+                               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __cam_continuous_af_timer_cb, ad);
+                       }
+               } else if (camapp->camera_mode == CAM_CAMCORDER_MODE && ad->mm_state <= RECORDER_STATE_RECORDING) {
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO
+                               && camapp->shutter_sound != CAM_SETTINGS_SOUND_OFF
+                               && ad->mm_state != RECORDER_STATE_RECORDING)
+                                       cam_sound_play (CAM_SOUND_EFFECT_AF_FAIL, ad);
+
+                       if (camapp->focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO) {
+                               if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_READY
+                                       ||camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING)
+                                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+                       }
+
+                       REMOVE_TIMER(ad->continuous_af_timer);
+
+                       if (ad->is_recording)
+                               ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __focus_guide_destroy, ad);
+               } else {
+                       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+static void __cam_capture_cb(camera_image_data_s* image,
+       camera_image_data_s* postview,
+       camera_image_data_s* thumbnail,
+       void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+       if (camapp->af_mode == CAM_FOCUS_FACE) {
+               cam_app_stop_video_stream();
+       }
+       gchar *filename = NULL;
+       FILE *fp = NULL;
+       if ((image->format == CAMERA_PIXEL_FORMAT_YUYV)
+           || (image->format == CAMERA_PIXEL_FORMAT_NV12)) {
+               cam_debug(LOG_UI,
+                         "got raw data - format [%d] data [%p], length [%d], width [%d], height [%d]",
+                         image->format, image->data, image->size, image->width,
+                         image->height);
+               /* encode data */
+               /* MMImageJpegEncodeToFile(filename, src->data, src->width,src->height, src->format, 90); */
+       } else if (image->format == CAMERA_PIXEL_FORMAT_JPEG) {
+               cam_debug(LOG_UI,
+                         "got JPEG data - data [%p], length [%d], width [%d], height [%d]",
+                         image->data, image->size, image->width, image->height);
+               if (camapp->camera_mode == CAM_CAMERA_MODE
+                       && camapp->shooting_mode == CAM_SELF_SINGLE_MODE) {
+                       ;
+               } else {
+                       cam_app_create_screennail_and_start_animation(user_data);
+               }
+
+               /* save file */
+               filename = cam_app_get_next_filename(CAM_FILE_EXTENTION_IMAGE);
+               if (filename == NULL) {
+                       cam_critical(LOG_SYS, " Get next filename FAILED");
+                       return;
+               }
+
+               fp = fopen(filename, "w+");
+               if (fp == NULL) {
+                       cam_critical(LOG_SYS, "FileOPEN error!!");
+                       return;
+               } else {
+                       cam_debug(LOG_SYS, "FileOPEN success");
+                       if (fwrite(image->data, image->size, 1, fp) != 1) {
+                               cam_critical(LOG_SYS, "File write error!!");
+                               fclose(fp);
+                               return;
+                       }
+                       /*fsync(fp->_fileno);*/
+                       /*block for increasing formance of shot-to-shot */
+                       cam_debug(LOG_SYS, "File write success");
+                       fclose(fp);
+               }
+               if (camapp->filename)
+                       free(camapp->filename);
+               camapp->filename = strdup(filename);
+               free(filename);
+               filename = NULL;
+       }
+}
+
+void cam_app_create_capture_complete_ui_idlers(void *data)
+{
+        struct appdata *ad = (struct appdata *)data;
+        cam_ret_if(ad == NULL);
+       CamIdlerItem *item = NULL;
+       item = (CamIdlerItem *)g_malloc(sizeof(CamIdlerItem));
+       cam_ret_if(item == NULL);
+
+       if (item) {
+               item->data = data;
+               item->idler = ecore_idler_add(cam_image_capture_handle_idler, item);
+
+               if (item->idler)
+                       ad->capture_cb_list = g_list_append(ad->capture_cb_list, item->idler);
+
+               cam_info(LOG_UI, "image capture idler add : %p ", item->idler);
+       }
+}
+
+static Eina_Bool __cam_app_progressbar_timer(void *data)
+{
+        double value=0.0;
+
+        Evas_Object *progressbar = (Evas_Object*) data;
+        if (progressbar == NULL) {
+                progress_timer = NULL;
+                return ECORE_CALLBACK_CANCEL;
+        }
+
+        value = elm_progressbar_value_get(progressbar);
+        if (value == 1.0) value = 0.0;
+        value = value + 0.025;
+        elm_progressbar_value_set(progressbar, value);
+
+        return ECORE_CALLBACK_RENEW;
+}
+
+
+void cam_app_create_burst_popup(void *data)
+{
+#if 1/*TODO: need ui guide, for display popup*/
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+
+       if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) &&
+                       (camapp->burst_shot == TRUE) && camapp->continuous_shot_data) {
+               ad->is_processing = TRUE;
+               REMOVE_TIMER(ad->continuous_af_timer);
+               cam_mm_stop_focusing();
+               cam_toolbar_update_shutter_button(ad, TOOLBAR_ITEM_STATE_DIM);
+
+               if (!cam_popup_for_burst_create(ad)) {/*TODO: need ui guide for this popup*/
+                       cam_debug(LOG_UI, "cam_progress_popup_create() fail");
+                       return;
+               }
+
+               if (!cam_popup_add_progress_bar(ad))
+                       cam_debug(LOG_UI, "cam_popup_add_progress_bar() fail");
+
+               if (!cam_popup_set_text(ad, dgettext(PACKAGE, "IDS_CAM_BODY_PROCESSING_ING")))
+                       cam_debug(LOG_UI, "cam_progress_popup_set_text() fail");
+       }
+       progress_timer = ecore_timer_add(0.01, __cam_app_progressbar_timer, ad->progress_popup_bar);
+#endif
+
+}
+
+static void __cam_capture_completed_cb(void *user_data)
+{
+       DEBUG_TRACE();
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "cam_handle is NULL");
+
+       if (camapp->af_mode == CAM_FOCUS_FACE) {
+               cam_app_run_video_stream();
+       }
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+        if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) &&
+                               (camapp->burst_shot == TRUE) && camapp->continuous_shot_data) {
+                       cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_DISPLAY_POPUP);
+                       cam_continuous_shot_finish_save_image();
+        } else {
+                        cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_BEST_SHOT_IMAGE_HANDLE);
+          }
+
+               DEBUG_TRACE("camapp->focus_mode %d ", camapp->focus_mode);
+               if (camapp->focus_mode == CAM_FOCUS_MODE_HALFSHUTTER) {
+                       REMOVE_TIMER(ad->continuous_af_timer);
+                       ad->continuous_af_timer = ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, __cam_continuous_af_timer_cb, ad);
+               }
+               DEBUG_TRACE("camapp->burst_shot %d ", camapp->burst_shot);
+               DEBUG_TRACE("camapp->default_capture_mode %d ", camapp->default_capture_mode);
+               DEBUG_TRACE("ad->stop_continuous_shot %d ", ad->stop_continuous_shot);
+
+               if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE)
+                               && camapp->burst_shot == TRUE
+                               && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
+                       DEBUG_TRACE("TEST");
+               }
+
+               if (ad->ug_state == CAM_UG_PAUSE_STATE){
+                       cam_critical(LOG_MM, "CAM_UG_PAUSE_STATE");
+                       return;
+               }
+
+               if (!cam_app_preview_start(ad)) {
+                       cam_critical(LOG_MM, "cam_app_preview_start failed");
+                       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+                       return;
+               }
+       }else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               DEBUG_TRACE("MM_MESSAGE_CAMCORDER_VIDEO_SNAPSHOT_CAPTURED");
+               ecore_idler_add(cam_capture_on_recording_handle, ad);
+       }
+       DEBUG_TRACE();
+}
+static void __cam_interrupted_cb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("policy is [%d]",policy);
+
+       switch (policy) {
+       case CAMERA_POLICY_SOUND:
+               DEBUG_TRACE("occur incoming call");
+               break;
+       case CAMERA_POLICY_SECURITY:
+               cam_app_mdm_syspopup(ad);
+               break;
+       default:
+               break;
+       }
+}
+
+static void __rec_interrupted_cb(recorder_policy_e policy, recorder_state_e previous, recorder_state_e current, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("policy is [%d]",policy);
+
+       switch (policy) {
+       case RECORDER_POLICY_SOUND:
+               DEBUG_TRACE("occur incoming call");
+               break;
+       case RECORDER_POLICY_SECURITY:
+               cam_app_mdm_syspopup(ad);
+               break;
+       default:
+               break;
+       }
+}
+
+static void __cam_error_cb(int error, camera_state_e current_state, void *user_data)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       int state = 0;
+       state = current_state;
+       cam_warning(LOG_MM,"MM ERROR occurs : code [%x], state [%d]",error, state);
+
+       char msg[1024] = { '\0', };
+
+       snprintf(msg, sizeof(msg), "Internal error %x", error);
+       cam_app_notice_popup(ad, msg, cam_app_timeout_notice_response_cb);
+
+}
+
+static void __recorder_state_cb(recorder_state_e previous , recorder_state_e current , bool by_policy, void *user_data)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+       if (current == RECORDER_STATE_READY) {
+               ad->enable_mode_change = TRUE;
+       } else {
+               ad->enable_mode_change = FALSE;
+       }
+       cam_app_recorder_state_manager(previous, current, by_policy);
+}
+
+void __recording_status_cb(unsigned long long elapsed_time, unsigned long long file_size, void *user_data)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+       ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+       /* update current time */
+       DEBUG_TRACE();
+       guint elapsed = 0;
+       guint filesize = 0;
+       elapsed = elapsed_time / 1000;
+       filesize = file_size;
+       if (camapp->rec_elapsed < elapsed) {
+               GValue value = { 0, };
+
+               cam_debug(LOG_UI, "time updated: %u ", elapsed);
+               CAM_GVALUE_SET_UINT(value, elapsed);
+               cam_handle_value_set(ad, PROP_REC_TIME, &value);
+       }
+       if (camapp->rec_filesize < filesize) {
+               GValue value = { 0, };
+
+               cam_debug(LOG_UI, "filesize updated: %u ", filesize);
+               CAM_GVALUE_SET_UINT(value, filesize);
+               cam_handle_value_set(ad, PROP_REC_FILE_SIZE, &value);
+       }
+}
+
+void __recording_limit_reached_cb(recorder_recording_limit_type_e type, void *user_data)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+       ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       DEBUG_TRACE("");
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               if (type == RECORDER_RECORDING_LIMIT_FREE_SPACE)
+                       camapp->rec_stop_type = CAM_REC_STOP_NO_SPACE;
+               else if (type == RECORDER_RECORDING_LIMIT_TIME
+                               || type == RECORDER_RECORDING_LIMIT_SIZE)
+                       camapp->rec_stop_type = CAM_REC_STOP_TIME_LIMIT;
+               else {
+                       DEBUG_TRACE("invalid type:%d", type);
+                       camapp->rec_stop_type = CAM_REC_STOP_TIME_LIMIT;
+               }
+               ad->recording_commit = ecore_idler_add(cam_video_idler_record_stop, ad);
+       }
+}
+
+gboolean cam_callback_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+       camapp->error_cb = __cam_error_cb;
+       camapp->focus_cb = __cam_focus_cb;
+       camapp->state_cb = __cam_state_change_cb;
+       camapp->preview_cb = __cam_preview_cb;
+       camapp->capture_completed_cb = __cam_capture_completed_cb;
+       camapp->cam_interrupted_cb = __cam_interrupted_cb;
+
+       camapp->recording_status_cb = __recording_status_cb;
+       camapp->recording_state_changed_cb = __recorder_state_cb;
+       camapp->recording_limit_reached_cb = __recording_limit_reached_cb;
+       camapp->rec_interrupted_cb = __rec_interrupted_cb;
+
+       /*set face detect cb*/
+       camapp->face_detect_cb = cam_face_detection_focus_face_detected_cb;
+       camapp->capture_cb = __cam_capture_cb;
+
+       int ret = 1;
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               /*ret &= cam_mm_recorder_unset_state_changed_cb();*/
+               ret &= cam_mm_set_preview_cb(camapp->preview_cb, (void*)ad);
+               ret &= cam_mm_set_focus_changed_cb(camapp->focus_cb, (void*)ad);
+               ret &= cam_mm_set_state_changed_cb(camapp->state_cb, (void*)ad);
+               ret &= cam_mm_set_error_cb(camapp->error_cb, (void*)ad);
+               ret &= cam_mm_set_camera_interrupted_cb(camapp->cam_interrupted_cb, (void*)ad);
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               ret &= cam_mm_unset_state_changed_cb();
+               ret &= cam_mm_set_focus_changed_cb(camapp->focus_cb, (void*)ad);
+               ret &= cam_mm_recorder_set_state_changed_cb(camapp->recording_state_changed_cb, (void*)ad);
+               ret &= cam_mm_recorder_set_recording_status_cb(camapp->recording_status_cb, (void*)ad);
+               ret &= cam_mm_recorder_set_recording_limit_reached_cb(camapp->recording_limit_reached_cb, (void*)ad);
+               ret &= cam_mm_set_recorder_interrupted_cb(camapp->rec_interrupted_cb, (void*)ad);
+       }
+
+
+       return ret;
+
+}
+gboolean cam_app_lbs_stop(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       int ret = FALSE;
+
+       ret = cam_lbs_stop();
+       if(ret == FALSE) {
+               DEBUG_TRACE("cam_app_lbs_stop failed");
+               return FALSE;
+       }
+       camapp->gps = FALSE;
+       camapp->gps_level = cam_lbs_get_state();
+       indicator_update_gps(ad);       /* update gps icon */
+       if (!cam_mm_remove_geo_tag())
+               DEBUG_TRACE("cam_mm_remove_geo_tag failed");
+
+       return TRUE;
+
+}
+gboolean cam_app_lbs_start(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       int ret = FALSE;
+
+       ret = cam_lbs_start(cam_app_update_gps_level, ad);
+       if (ret == FALSE) {
+               if(camapp->need_gps_popup == TRUE) {
+                       cam_app_gps_enable_popup(ad,
+                     dgettext(PACKAGE, "IDS_CAM_POP_ENABLE_LOCATION_SERVICE_IN_SETTINGS_TO_USE_GPS_TAG"), NULL);
+               }
+               return FALSE;
+       }
+       camapp->gps = TRUE;
+
+       REMOVE_TIMER(ad->gps_animation_timer);
+       ad->gps_animation_timer = ecore_timer_add(0.5, cam_app_gps_timer_cb, ad);
+
+       return TRUE;
+
+}
+
+static void cam_app_close_ug(void *data)
+{
+       cam_debug(LOG_UI, " ");
+       struct appdata *ad = (struct appdata *)data;
+       /* IDS problem */
+
+       cam_info(LOG_UI, "ad->imageviewer_ug : %p", ad->imageviewer_ug);
+       if (ad->imageviewer_ug) {
+               ug_destroy(ad->imageviewer_ug);
+               ad->imageviewer_ug = NULL;
+       }
+       if (ad->location_ug) {
+               ug_destroy(ad->location_ug);
+               ad->location_ug = NULL;
+       }
+
+       cam_file_init(NULL);
+       return;
+}
+
+static void __ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       cam_debug(LOG_UI, " ");
+
+       Evas_Object *base;
+
+       if (!ug || !priv)
+               return;
+
+       base = ug_get_layout(ug);
+       if (!base)
+               return;
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               ug_disable_effect(ug);/*note: disable Image viewer ug effect*/
+               evas_object_show(base);
+               break;
+       default:
+               break;
+       }
+}
+
+void __ug_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       cam_debug(LOG_UI, " ");
+
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "cam_handle is NULL");
+
+       char *val = NULL;
+       ad->path_in_return = false;
+
+       if (ad->imageviewer_ug) {
+               if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+                       if (result == NULL) {
+                               return;
+                       }
+
+                       if ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "contacts") == 0)) {
+                               service_h reply;
+                               service_create(&reply);
+
+                               service_get_extra_data(result, "crop_image_path", &val);
+                               service_add_extra_data(reply, "crop_image_path", val);
+                               service_get_extra_data(result, "image_path", &val);
+                               service_add_extra_data(reply, "image_path", val);
+
+                               service_reply_to_launch_request(reply, ad->service_handle, SERVICE_RESULT_SUCCEEDED);
+                               service_destroy(reply);
+
+                               ad->path_in_return = true;
+                       } else if ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "ug-setting-call-efl") == 0)) {
+                               service_h reply;
+                               service_create(&reply);
+
+                               service_get_extra_data(result, "crop_image_path", &val);
+                               service_add_extra_data(reply, SERVICE_DATA_SELECTED, val);
+
+                               service_reply_to_launch_request(reply, ad->service_handle, SERVICE_RESULT_SUCCEEDED);
+                               service_destroy(reply);
+
+                               ad->path_in_return = true;
+                       } else {
+                               /* get result value. */
+                               service_get_extra_data(result, "Result", &val);
+
+                               if (strcmp(val, "Ok") == 0) {
+                                       ad->path_in_return = true;
+                               }
+                               else if (strcmp(val, "Cancel") == 0) {
+                                       ad->path_in_return = false;
+                               }
+                       }
+               }
+       }
+}
+
+void __ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       cam_debug(LOG_UI, " ");
+
+       if (!ug || !priv)
+               return;
+
+       struct appdata *ad = (struct appdata *)priv;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       if (ad->path_in_return) {
+               elm_win_lower(ad->win_main);
+               cam_app_exit(ad);
+       } else {
+               ad->ug_is_deleting_process = TRUE;
+
+               cam_app_timeout_checker_init(ad);
+
+               if (ad->imageviewer_ug) {
+                       ug_destroy(ad->imageviewer_ug);
+                       ad->imageviewer_ug = NULL;
+               }
+
+               if (ad->location_ug) {
+                       ug_destroy(ad->location_ug);
+                       ad->location_ug = NULL;
+                       camapp->need_gps_popup = FALSE;
+                       if (!cam_app_lbs_start(ad)) {
+                               if (!cam_app_lbs_stop(ad))
+                                       DEBUG_TRACE("The LBS failed to stop");
+                       }
+               }
+
+               cam_app_start_rotate(ad, false);
+
+               ecore_idler_add(__ug_destory_postprocessing, ad);
+       }
+
+       return;
+}
+
+Eina_Bool __ug_destory_postprocessing(void *data)
+{
+       struct appdata *ad = data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       ad->ug_is_deleting_process = TRUE;
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE,  "cam_handle is NULL");
+
+       cam_app_focus_guide_create(ad);
+       show_toolbar_edje(ad);
+
+       if (!cam_file_check_exists(camapp->filename)) {
+               free(camapp->filename);
+               camapp->filename = NULL;
+       }
+
+       if (!cam_app_preview_start(ad)) {
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+       }
+
+       cam_mm_set_mdnie_mode(TRUE);
+
+       if (camapp->outdoor_visibility)
+               cam_mm_set_outdoor_visibility(TRUE);
+
+       power_lock_state(POWER_STATE_NORMAL, 0);
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               if(camapp->af_mode == CAM_FOCUS_FACE){
+               /*start face detection*/
+                       if (cam_mm_is_supported_face_detection()) {
+                               cam_mm_start_camera_face_detection(camapp->face_detect_cb, (void *)ad);
+                               if (!cam_mm_set_preview_cb(cam_face_detection_focus_start_stream, (void*)ad)) {
+                                       DEBUG_TRACE("preview callback set error");
+                               }
+                               cam_app_run_video_stream();
+                       } else {
+                               DEBUG_TRACE("not support face detect mode");
+                       }
+               }
+       }
+       if (!cam_key_grab_init(ad))
+               DEBUG_TRACE("cam_key_grab_init fail");
+       cam_app_key_event_init(ad);
+
+       cam_app_update_quickview_icon(ad);
+       cam_file_init(NULL);
+       ad->ug_is_deleting_process = FALSE;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_app_run_location_ug(void *data)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE,  "cam_handle is NULL");
+
+       if (ad->ug_is_deleting_process) /*NOTE:before old ug is not deleted completely, should not create new ug*/
+               return FALSE;
+
+       if (ad->location_ug) {
+               ug_destroy(ad->location_ug);
+               ad->location_ug = NULL;
+       }
+
+       DEL_EVAS_OBJECT(ad->focus_edje);
+
+       struct ug_cbs cbs = { 0, };
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_result_cb;
+       cbs.destroy_cb = __ug_destroy_cb;
+       cbs.priv = (void *)data;
+
+       /* Create UI gadget */
+       ad->location_ug = ug_create(NULL, LOCATION_UG_NAME, UG_MODE_FULLVIEW, NULL, &cbs);
+
+       if (!ad->location_ug) {
+               cam_critical(LOG_SYS, "location UI Gadget create fail...");
+               return FALSE;
+       } else {
+               if (ad->location_ug) {
+                       cam_mm_set_mdnie_mode(FALSE);
+
+                       if (camapp->outdoor_visibility)
+                               cam_mm_set_outdoor_visibility(FALSE);
+
+                       cam_app_preview_stop();
+                       power_unlock_state(POWER_STATE_NORMAL);
+               } else {
+                       cam_warning(LOG_UI, "Cannot create location_ug");
+                       cam_file_init(NULL);
+                       return FALSE;
+               }
+       }
+
+       cam_app_timeout_checker_remove();
+
+       return TRUE;
+}
+gboolean cam_app_run_image_viewer_ug(void *data, char *file_path, gboolean launch_special_view)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE,"camapp is NULL");
+       cam_retvm_if(file_path == NULL, FALSE, "file_path is NULL");
+
+       if (ad->ug_is_deleting_process) /*NOTE:before old ug is not deleted completely, should not create new ug*/
+               return FALSE;
+
+       cam_debug(LOG_UI, "path :%s", file_path);
+
+       if (ad->imageviewer_ug) {
+               return FALSE;/*NOTE: ug is login, not create ug again.*/
+       }
+       if (ad->is_rotating == TRUE) {
+               return FALSE; /*note: while rotating, could not create image view ug*/
+       }
+
+       DEL_EVAS_OBJECT(ad->focus_edje);
+
+       struct ug_cbs cbs = { 0, };
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_result_cb;
+       cbs.destroy_cb = __ug_destroy_cb;
+       cbs.priv = (void *)data;
+
+       /* param */
+       if (ad->imageviewer_service)
+               service_destroy(ad->imageviewer_service);
+
+       int ret = service_create(&ad->imageviewer_service);
+       if (ret != SERVICE_ERROR_NONE) {
+               cam_critical(LOG_UI, "service_create error [%d]", ret);
+               return FALSE;
+       }
+
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+               if ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "contacts") == 0)) {
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_VIEW_MODE_KEY_NAME, "SETAS");
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_SET_AS_TYPE, "CallerID");
+               } else if ((ad->exe_args->caller) && (strcmp(ad->exe_args->caller, "ug-setting-call-efl") == 0)) {
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_VIEW_MODE_KEY_NAME, "SETAS");
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_SET_AS_TYPE, "VideoCallID");
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_RESOLUTION, "176x144");
+               } else {
+                       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_VIEW_MODE_KEY_NAME, "DISPLAY");
+               }
+       } else if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+               service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_VIEW_MODE_KEY_NAME, "CAMERA");
+       }
+
+       service_add_extra_data(ad->imageviewer_service, IMAGE_VIEWER_FILE_PATH_KEY_NAME, file_path);
+
+       /* Create UI gadget */
+       ad->imageviewer_ug = ug_create(NULL, IMAGE_VIEWER_UG_NAME, UG_MODE_FULLVIEW, ad->imageviewer_service, &cbs);
+
+       if (!ad->imageviewer_ug) {
+               cam_critical(LOG_SYS, "image viewer UI Gadget create fail...");
+               return FALSE;
+       } else {
+               if (ad->imageviewer_ug) {
+                       cam_app_key_event_deinit(ad);
+                       if(!cam_key_grab_deinit(ad)){
+                               DEBUG_TRACE("cam_key_grab_deinit fail");
+                       }
+                       cam_mm_set_mdnie_mode(FALSE);
+
+                       if (camapp->outdoor_visibility)
+                               cam_mm_set_outdoor_visibility(FALSE);
+
+                       cam_app_preview_stop();
+                       power_unlock_state(POWER_STATE_NORMAL);
+               } else {
+                       cam_warning(LOG_UI, "Cannot create imageviewer ug");
+                       cam_file_init(NULL);
+                       return FALSE;
+               }
+       }
+
+       if(camapp->af_mode == CAM_FOCUS_FACE){
+               cam_face_detection_reset();
+       }
+       DEBUG_TRACE("END");
+
+       cam_app_timeout_checker_remove();
+
+       return TRUE;
+}
+
+gboolean cam_app_run_media_browser(void *data, gchar *filename)
+{
+       cam_debug(LOG_UI, "filename = %s", filename);
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int state = 0;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+       debug_fenter(LOG_UI);
+
+       state = cam_mm_get_state();
+       if (state > CAMERA_STATE_PREVIEW) {
+               cam_warning(LOG_MM, "Invaild state : %d", state);
+               return FALSE;
+       }
+
+       if (!cam_app_run_image_viewer_ug(ad, cam_app_get_last_filename(), FALSE)) {
+               DEBUG_TRACE("cam_app_run_image_viewer_ug failed");
+               return FALSE;
+       }
+
+       if (camapp->thumbnail_name) {   /*  Some image is deleted from image viewer and galler -> BS  */
+               free(camapp->thumbnail_name);
+               camapp->thumbnail_name = NULL;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_app_clear_engine_data(void *data, gboolean release)
+{
+#ifndef        CAMERA_MACHINE_I686
+
+       /* release is not used */
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       cam_debug(LOG_UI, "");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+#endif
+       return TRUE;
+}
+
+gboolean cam_app_check_wide_resolution(int id)
+{
+
+       gfloat get_value = (HIWORD(id) * 3.0) / (LOWORD(id) * 4.0);
+       if (ABS(get_value - 1.0) < CAM_EPSINON
+           || ABS((gfloat)((HIWORD(id) * 25.0) / (LOWORD(id) * 36.0)) - 1.0) < CAM_EPSINON) {
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_app_is_skip_video_stream()
+{                              /*if true , must finish function in stream callback function */
+       return video_stream_skip_flag;
+}
+
+void cam_app_stop_video_stream()
+{
+       video_stream_skip_flag = TRUE;
+}
+
+void cam_app_run_video_stream()
+{
+       video_stream_skip_flag = FALSE;
+}
+
+Eina_Bool _auto_shot_idle_cb(void *data)
+{
+       debug_fenter(LOG_CAM);
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gboolean capture_result = false;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+       if (ad->auto_shot_idle) {
+               ecore_idler_del(ad->auto_shot_idle);
+               ad->auto_shot_idle = NULL;
+       }
+
+       cam_warning(LOG_CAM, "position state not enough");
+       debug_fleave(LOG_CAM);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_app_create_progressbar(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_debug(LOG_UI, "");
+
+       cam_app_destroy_progressbar(ad);
+
+       ad->progressbar = elm_progressbar_add(ad->ug_base);
+       cam_retvm_if(ad->progressbar == NULL, FALSE, "Cannot create progressbar object\n");
+
+       elm_object_style_set(ad->progressbar, "list_progress");
+       evas_object_size_hint_align_set(ad->progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(ad->progressbar);
+
+       return TRUE;
+}
+
+gboolean cam_app_set_progressbar_value(void *data, double value)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progressbar) {
+               cam_debug(LOG_UI, " value [%f]", value);
+               elm_progressbar_value_set(ad->progressbar, value);
+       } else
+               UI_TEST_LOG("");
+
+       return TRUE;
+}
+
+gboolean cam_app_set_progressbar_text(void *data, const char *text)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_retv_if(text == NULL, FALSE);
+
+       if (ad->progressbar_edje)
+               edje_object_part_text_set(_EDJ(ad->progressbar_edje),
+                                         "progressbar_text", text);
+
+       return TRUE;
+}
+
+gboolean cam_app_destroy_progressbar(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_debug(LOG_UI, " start");
+       DEL_EVAS_OBJECT(ad->progressbar);
+       DEL_EVAS_OBJECT(ad->progressbar_edje);
+       cam_debug(LOG_UI, " done");
+
+       return TRUE;
+}
+
+gboolean cam_app_hide_progressbar(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_debug(LOG_UI, " start");
+       HIDE_EVAS_OBJECT(ad->progressbar);
+       HIDE_EVAS_OBJECT(ad->progressbar_edje);
+       cam_debug(LOG_UI, " done");
+
+       return TRUE;
+}
+
+gboolean cam_app_timeout_checker_update()
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+       gdouble c_time = 0.0;
+       cam_debug(LOG_UI, "");
+
+       ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+       if (ad->timeout_checker) {
+               c_time = _get_current_time();
+               ecore_timer_delay(ad->timeout_checker,
+                                 (c_time - camapp->last_time));
+               camapp->last_time = c_time;
+       }
+
+       return TRUE;
+}
+
+void cam_app_mdm_syspopup(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       bundle *b = NULL;
+       b = bundle_create();
+       if (b != NULL) {
+               bundle_add(b, "_SYSPOPUP_CONTENT_", dgettext(PACKAGE, "IDS_CAM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_CAMERA"));
+               syspopup_launch("mdm-syspopup", b);
+               bundle_free(b);
+       }
+
+       cam_app_exit(ad);
+}
+
+void cam_app_notice_popup(void *data, const char *msg,
+                         void (*func) (void *data,
+                         Evas_Object *obj,
+                         void *event_info)
+                         )
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       cam_retm_if(ad->ug_base == NULL, " ad->ug_base is NULL");
+       Evas_Object *popup = NULL;
+
+       popup = elm_popup_add(ad->ug_base);
+       if (popup == NULL)
+               return;
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(popup, msg);
+       /*elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);*/
+       elm_popup_timeout_set(popup, 3.0);
+       evas_object_smart_callback_add(popup, "timeout", func, data);
+       ad->waring_popup = popup;
+       evas_object_show(popup);
+}
+
+static void cam_app_capture_error_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, " camapp is NULL");
+       if (obj)
+               evas_object_del(obj);
+       obj = NULL;
+
+       cam_app_stop_capture(ad);
+       cam_app_exit(ad);
+}
+
+void cam_app_gps_enable_popup(void *data, const char *msg,
+                             Eina_Bool (*func) (void *data))
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       cam_retm_if(ad->ug_base == NULL, " ad->ug_base is NULL");
+       Evas_Object * popup = NULL;
+       popup = elm_popup_add(ad->ug_base);
+       if (popup == NULL)
+               return;
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       char popup_str[1024 + 1] = { '\0',};
+       snprintf(popup_str, 1024, "%s%s%s", _("<font=SLP:style=Roman><color=#000000><align=center>"),
+               msg, _("</align></color></font>"));
+
+       elm_object_text_set(popup, popup_str);
+       Evas_Object *btn1 = elm_button_add(popup);
+       elm_object_text_set(btn1, dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", cam_app_gps_popup_response_ok_cb, (void*)ad);
+       Evas_Object *btn2 = elm_button_add(popup);
+       elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", cam_app_gps_popup_response_cancel_cb, (void*)ad);
+       ad->confirm_popup = popup;
+
+       evas_object_show(popup);
+
+}
+
+void cam_app_timeout_notice_response_cb(void *data, Evas_Object *obj,
+                                       void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       if (obj){
+               evas_object_del(obj);
+               obj = NULL;
+       }
+
+       cam_app_stop_capture(ad);
+       cam_app_exit(ad);
+}
+
+/*set flash close*/
+void cam_close_flash_feature(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, " appdata is NULL");
+       if (camapp->flash > CAM_FLASH_OFF) {
+               GValue value = { 0 };
+               CAM_GVALUE_SET_INT(value, CAM_FLASH_OFF);
+               gint tempval = g_value_get_int(&value);
+               if (!cam_mm_set_flash(tempval)) {
+                       cam_warning(LOG_UI, "flash set fail");
+                       return;
+               }
+               camapp->flash = tempval;
+       }
+}
+/*lowbattery callback*/
+void cam_app_lowbattery_close_flash_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       if (obj)
+               evas_object_del(obj);
+       obj = NULL;
+       cam_close_flash_feature(ad);
+
+       cam_toolbar_update(ad);
+}
+
+static Eina_Bool cam_app_timeout_checker_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       CamAppData *camapp = NULL;
+       gdouble diff = 0.0;
+
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               ad->timeout_checker = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+       ad->timeout_checker = NULL;
+
+       diff = _get_current_time() - camapp->last_time;
+
+       if ((cam_mm_get_state() == CAMERA_STATE_PREVIEW)
+           && (diff >= CAMERA_APP_TIMEOUT)) {
+               cam_debug(LOG_UI, "Close camera application!!! diff time:[%lf]", diff);
+               ad->timeout_checker = NULL;
+               camapp->last_time = 0;
+               elm_win_lower(ug_get_window());
+       }
+
+       cam_debug(LOG_UI, "diff time : [%lf]", diff);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_app_timeout_checker_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+       if (ad->timeout_checker) {
+               ecore_timer_del(ad->timeout_checker);
+               ad->timeout_checker = NULL;
+       }
+       if (ad->timer_timer) {
+               ad->timer_activated = false;
+               DEL_EVAS_OBJECT(ad->timer_icon_edje);
+               REMOVE_TIMER(ad->timer_timer);
+       }
+       if (ad->continuous_shot_timer) {
+               REMOVE_TIMER(ad->continuous_shot_timer);
+       }
+       if (ad->check_af_timer) {
+               REMOVE_TIMER(ad->check_af_timer);
+       }
+       if (ad->gps_animation_timer) {
+               REMOVE_TIMER(ad->gps_animation_timer);
+       }
+
+       ad->timeout_checker = ecore_timer_add(CAMERA_APP_TIMEOUT, cam_app_timeout_checker_cb, ad);
+       camapp->last_time = _get_current_time();
+
+       return TRUE;
+}
+
+gboolean cam_app_timeout_checker_remove(void)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_CAM);
+
+       ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+
+       if (ad->timeout_checker) {
+               ecore_timer_del(ad->timeout_checker);
+               ad->timeout_checker = NULL;
+       }
+       camapp->last_time = 0;
+
+       return TRUE;
+}
+
+#ifdef USE_FIFO_THREAD
+void *cam_app_FIFO_thread_run(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       int fd = 0;
+
+       char buf[128] = { '\0', };
+
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+
+       if (!access(CAM_FIFO_PATH, F_OK)) {
+               unlink(CAM_FIFO_PATH);
+       }
+
+       if (-1 == mkfifo(CAM_FIFO_PATH, 0666)) {
+               cam_critical(LOG_SYS, " Make CamApp FIFO failed.");
+               cam_app_exit(ad);
+               return NULL;
+       }
+
+       fd = open(CAM_FIFO_PATH, O_RDWR);
+       if (fd < 0) {
+               cam_critical(LOG_SYS, " Open CamApp FIFO failed.");
+               cam_app_exit(ad);
+               return NULL;
+       }
+
+       cam_debug(LOG_SYS, "Open CamApp FIFO [%s] success", CAM_FIFO_PATH);
+
+       while (1) {
+               memset(buf, 0x00, 128);
+
+               cam_debug(LOG_SYS, " Wait CamApp FIFO write...");
+
+               int count = read(fd, buf, 128);
+               if (count == -1)
+                       cam_debug(LOG_SYS, " read error occur!");
+
+               cam_debug(LOG_SYS, " Read from CamApp FIFO : [%s]", buf);
+
+               if (!strcmp(buf, CAM_CAPTURE_AUTO_START)) {
+                       cam_debug(LOG_SYS, " #### Start _auto_shot_idle_cb");
+                       _auto_shot_idle_cb(data);
+               } else if (!strcmp(buf, CAM_FIFO_CMD_EXIT)) {
+                       break;
+               } else {
+                       /* Error */
+                       cam_warning(LOG_SYS, " Skip this...");
+               }
+       }
+
+       close(fd);
+       unlink(CAM_FIFO_PATH);
+
+       cam_debug(LOG_SYS, " Exit CamApp FIFO thread...");
+
+       return NULL;
+}
+
+void cam_app_FIFO_thread_exit()
+{
+       int fd = open(CAM_FIFO_PATH, O_WRONLY);
+       char *str_write = CAM_FIFO_CMD_EXIT;
+
+       if (fd < 0) {
+               cam_critical(LOG_SYS, " Open CammApp FIFO file[%s] failed",
+                            CAM_FIFO_PATH);
+       } else {
+               int count = write(fd, str_write, strlen(str_write));
+               if (count == -1)
+                       cam_debug(LOG_SYS, " write error occur! ");
+               close(fd);
+
+               cam_debug(LOG_SYS, " Write [%s] to FIFO Done.", str_write);
+       }
+}
+
+#endif
+
+gboolean cam_app_create_file_register_thread(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       int err = 0;
+       cam_debug(LOG_SYS, "");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       err = pthread_mutex_init(&(ad->file_reg_mutex), NULL);
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register mutex failed");
+               return FALSE;
+       }
+
+       err = pthread_cond_init(&(ad->file_reg_cond), NULL);
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register cond failed");
+               return FALSE;
+       }
+
+       ad->file_reg_queue = g_queue_new();
+       if (ad->file_reg_queue == NULL) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register queue failed");
+               return FALSE;
+       }
+
+       err = pthread_create(&(ad->file_reg_thread), NULL, cam_app_file_register_thread_run, (void *)ad);
+
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register thread failed");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void *cam_app_file_register_thread_run(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       gboolean Exit_loop = FALSE;
+       cam_debug(LOG_FILE, "");
+
+       pthread_mutex_lock(&ad->file_reg_mutex);
+
+       while (!Exit_loop) {
+               cam_debug(LOG_FILE, " wait signal...");
+
+               pthread_cond_wait(&ad->file_reg_cond, &ad->file_reg_mutex);
+
+               cam_debug(LOG_FILE, " signal received");
+               while (!g_queue_is_empty(ad->file_reg_queue)) {
+                       char *filename = NULL;
+                       filename = g_queue_pop_head(ad->file_reg_queue);
+                       DEBUG_TRACE("filename is %s", filename);
+                       if (strcmp(REG_THREAD_EXIT, filename) == 0) {
+                               free(filename);
+                               Exit_loop = TRUE;
+                               break;
+                       } else if (strcmp(UPDATE_THUMBNAIL, filename) == 0) {
+                                /*TODO:*/
+                       } else if (strcmp(UPDATE_THUMBNAIL_NO_ANI, filename) == 0) {
+                                 /*TODO:*/
+                       } else if (strcmp(REC_FILE_SAVE_REG, filename) == 0) {
+                               cam_rec_save_and_register_video_file(ad);
+                               free(filename);
+                               filename = NULL;
+                       } else {
+                               __cam_single_shot_reg_file(filename);
+                               free(filename);
+                               cam_debug(LOG_FILE, " register done.");
+                       }
+               }
+               /*TODO: update thumbnail*/
+
+       }
+
+       pthread_mutex_unlock(&ad->file_reg_mutex);
+
+       pthread_mutex_destroy(&ad->file_reg_mutex);
+       pthread_cond_destroy(&ad->file_reg_cond);
+
+       cam_debug(LOG_SYS, " thread exit...");
+
+       return NULL;
+}
+
+void cam_app_file_register_thread_exit(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       char *exit_cmd = NULL;
+
+       if (ad->file_reg_queue != NULL) {
+               exit_cmd = strdup(REG_THREAD_EXIT);
+               g_queue_push_tail(ad->file_reg_queue, exit_cmd);
+               pthread_cond_signal(&ad->file_reg_cond);
+       }
+       return;
+}
+
+gboolean cam_app_init_with_args(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad->camapp_handle == NULL, FALSE, "camapp is NULL");
+
+       cam_debug(LOG_SYS, "");
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) {
+               ad->camapp_handle->camera_mode = ad->exe_args->cam_mode;
+               if (CAM_CAMCORDER_MODE == ad->camapp_handle->camera_mode) {
+                       if (ad->exe_args->resolution == CAM_RESOLUTION_QCIF) {
+                               ad->camapp_handle->recording_mode = CAM_RECORD_MMS;
+                               ad->camapp_handle->video_resolution = CAM_RESOLUTION_QCIF;
+                               ad->camapp_handle->reserved_setting_data.rear_recording_mode = CAM_RECORD_MMS;
+                               ad->camapp_handle->reserved_setting_data.rear_video_resolution = CAM_RESOLUTION_QCIF;
+                               ad->camapp_handle->reserved_setting_data.front_recording_mode = CAM_RECORD_SELF_MMS;
+                               ad->camapp_handle->reserved_setting_data.front_video_resolution = CAM_RESOLUTION_QCIF;
+                               ad->camapp_handle->fps = FPS_SLOW;
+                               if (ad->exe_args->size_limit <= 0) {
+                                       ad->camapp_handle->size_limit = CAM_REC_MMS_MAX_SIZE;
+                               } else {
+                                       ad->camapp_handle->size_limit = ad->exe_args->size_limit;
+                               }
+                               ad->camapp_handle->size_limit_type = CAM_MM_SIZE_LIMIT_TYPE_BYTE;
+                       } else {
+                               ad->camapp_handle->recording_mode = CAM_RECORD_NORMAL;
+                               ad->camapp_handle->video_resolution = ad->exe_args->resolution;
+                               ad->camapp_handle->fps = FPS_DEFAULT;
+                               if (ad->exe_args->size_limit <= 0) {
+                                       ad->camapp_handle->size_limit = CAM_REC_NORMAL_MAX_SIZE;
+                               } else {
+                                       ad->camapp_handle->size_limit = ad->exe_args->size_limit;
+                               }
+                               ad->camapp_handle->size_limit_type = CAM_MM_SIZE_LIMIT_TYPE_BYTE;
+                       }
+               } else {
+                       ad->camapp_handle->shooting_mode = CAM_SINGLE_MODE;
+                       ad->camapp_handle->default_capture_mode = CAM_CAPTURE_SINGLE;
+                       if (ad->exe_args->width <= 0
+                           || ad->exe_args->height <= 0) {
+                               ad->camapp_handle->photo_resolution = CAM_RESOLUTION_VGA;
+                       } else {
+                               ad->camapp_handle->photo_resolution = CAM_RESOLUTION(ad->exe_args->width, ad->exe_args->height);
+                       }
+               }
+               ad->camapp_handle->review = ad->exe_args->review;
+       } else {
+               cam_debug(LOG_SYS, " camera launch mode is normal.");
+               return FALSE;
+       }
+
+       cam_debug(LOG_SYS, " done");
+
+       return TRUE;
+}
+
+Eina_Bool cam_app_focus_guide_create(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, EINA_FALSE);
+
+       /*NOTE: TODO, perhaps there is issue:
+               while focus is animating, now delete focus_edje, what will occur?
+       */
+       cam_ui_effect_utils_stop_zoom_effect();
+       DEL_EVAS_OBJECT(ad->focus_edje);
+
+       ad->focus_edje = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "focus_image");
+
+       if (ad->focus_edje == NULL) {
+               cam_critical(LOG_UI, "focus_edje load failed ");
+               return EINA_FALSE;
+       }
+       evas_object_show(ad->focus_edje);
+
+#ifdef CAMERA_MACHINE_I686
+       evas_object_hide(ad->focus_edje);
+#endif
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool __focus_guide_hide_timer_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       if (ad->focus_guide_hide_timer)
+               ad->focus_guide_hide_timer = NULL;
+
+       if (ad->focus_edje)
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+Eina_Bool cam_app_focus_guide_update(void *data)
+{
+       DEBUG_TRACE();
+#ifndef        CAMERA_MACHINE_I686
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EINA_FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(ad->camapp_handle == NULL, EINA_FALSE, "camapp is NULL");
+
+       if (ad->focus_edje == NULL) {
+               return EINA_FALSE;
+       }
+
+       REMOVE_TIMER(ad->focus_guide_hide_timer);
+
+       /*note: relocation the focus edje*/
+       evas_object_resize(ad->focus_edje, ad->camera_focus_w, ad->camera_focus_h);
+       evas_object_move(ad->focus_edje, ad->af_start_x, ad->af_start_y);
+       evas_object_show(ad->focus_edje);
+
+       if (ad->imageviewer_ug) {
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return EINA_FALSE;
+       }
+
+       if (ad->confirm_popup) {
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return EINA_FALSE;
+       }
+
+       if (ad->is_processing) {
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return EINA_FALSE;
+       }
+
+       if (ad->setting_ctxpopup
+               || (ad->tip_popup)
+               || (ad->toolbar_setting_popup)
+               || (ad->edit_shortcuts_popup)) {
+               cam_debug(LOG_UI, "do not need to update focus");
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return EINA_FALSE;
+       }
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE
+               && ad->mm_state == CAMERA_STATE_CAPTURING) {
+               return EINA_FALSE;
+       }
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE
+               && (ad->mm_state < CAMERA_STATE_PREVIEW || camapp->af_mode == CAM_FOCUS_FACE)) {
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               return EINA_FALSE;
+       } else {
+               if ((camapp->camera_mode == CAM_CAMCORDER_MODE)
+                       && (camapp->recording_mode == CAM_RECORD_SLOW
+                       || camapp->recording_mode == CAM_RECORD_FAST
+                       || camapp->recording_mode == CAM_RECORD_SELF
+                       || camapp->recording_mode == CAM_RECORD_SELF_MMS)) {
+                       edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               } else {
+                       char signame[30] = { '\0', };
+                       const char *focus_state_name[4] = {
+                               "hide",
+                               "notready",
+                               "focused",
+                               "failed",
+                       };
+
+                       snprintf(signame, sizeof(signame), "%s,%s", "focus", focus_state_name[camapp->focus_state]);
+                       edje_object_signal_emit(_EDJ(ad->focus_edje), signame, "program");
+               }
+
+               if ((camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED) || (camapp->focus_state == CAMERA_FOCUS_STATE_FAILED))
+                       ad->focus_guide_hide_timer = ecore_timer_add(1.0, __focus_guide_hide_timer_cb, ad);
+       }
+#endif
+       return EINA_TRUE;
+}
+
+static int cam_app_camera_state_manager(int previous, int current, gboolean by_asm)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       cam_info(LOG_UI, "STATE_CHANGED : %d -> %d ", previous, current);
+
+       ad = (struct appdata *)cam_appdata_get();
+       cam_retv_if(ad == NULL, FALSE);
+
+       camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       ad->mm_state = current;
+
+       if (current == CAMERA_STATE_PREVIEW) {
+               if (previous == CAMERA_STATE_CAPTURING) {
+                       CAM_TA_ACUM_ITEM_END("    capture stop to preview", 0);
+                       CAM_TA_ACUM_ITEM_END("Total capture time", 0);
+                       cam_debug(LOG_MM, "capture end, preview start");
+               }
+       }
+
+       if (current == CAMERA_STATE_CAPTURING) {
+               if (previous == CAMERA_STATE_PREVIEW) {
+                       cam_debug(LOG_MM, "capture start, preview end");
+                       if ((camapp->shooting_mode == CAM_SELF_SINGLE_MODE
+                                       && camapp->default_capture_mode == CAM_CAPTURE_SINGLE)){
+                               cam_app_create_screennail_and_start_animation(ad);
+                       }
+               }
+       }
+
+       return 1;
+}
+
+static int cam_app_recorder_state_manager(int previous, int current, gboolean by_asm)
+{
+       struct appdata *ad = NULL;
+       CamAppData *camapp = NULL;
+
+       cam_info(LOG_UI, "STATE_CHANGED : %d -> %d ", previous, current);
+
+       ad = (struct appdata *)cam_appdata_get();
+       cam_retv_if(ad == NULL, FALSE);
+
+       camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       ad->mm_state = current;
+
+       if (((previous == RECORDER_STATE_RECORDING)
+           && (current != RECORDER_STATE_PAUSED))
+           ||((previous == RECORDER_STATE_PAUSED)
+           && (current != RECORDER_STATE_RECORDING))) {/*finished recording*/
+
+               cam_info(LOG_UI, "Set gamma NORMAL");
+
+               if (camapp->filename) {
+                       free(camapp->filename);
+                       camapp->filename = NULL;
+               }
+
+               if (cam_mm_get_filename(&camapp->filename, 0) == FALSE) { /*file size not used,so set to 0*/
+                       return FALSE;
+               }
+               cam_info(LOG_UI, "Recorded file name [%s] ", camapp->filename);
+
+/*note: shooting mode change*/
+#if 1
+               /* change to camera mode*/
+               /*
+               *       TODO: if for any reason, not run here, there will be caused now now recording, but in record mode
+               *       So: I suggest while click capture button: judge now state and whether recording.
+               */
+               if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                       if (ad->ug_state != CAM_UG_PAUSE_STATE) {/*if now is pause state, so do not set mode, just set while resume*/
+                               if (cam_app_mode_change(ad, CAM_CAMERA_MODE) == FALSE)
+                                       return FALSE;;
+
+                       }
+               }
+#endif
+       /*TODO: I think state manager callback is called in thread, so we could do data logic here,
+                       and request ui operation to ecore_pipe*/
+               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_VIDEO_CAPTURE_HANDLE);
+
+       }
+       return TRUE;
+}
+
+static Eina_Bool __cam_ug_destroy(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       ug_destroy_me(ad->camera_ug);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_app_exit(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       ecore_idler_add(__cam_ug_destroy, ad);
+
+       return TRUE;
+}
+
+static void cam_mmc_state_change_cb(keynode_t *key, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int mmc_state = vconf_keynode_get_int(key);
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_debug(LOG_SYS, " start");
+
+       if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED
+           && camapp->storage == CAM_STORAGE_EXTERNAL) {
+
+               GValue value = { 0 };
+               int mm_state = cam_mm_get_state();
+
+               if (mm_state == CAMERA_STATE_CAPTURING
+                   && (camapp->shooting_mode == CAM_SINGLE_MODE
+                       && camapp->default_capture_mode == CAM_CAPTURE_BURST)
+                   &&camapp->camera_mode == CAM_CAMERA_MODE) {
+                       if (camapp->continuous_shot_data) {
+                               if (camapp->continuous_shot_data->error != NULL) {
+                                       cam_debug(LOG_SYS, " error [%s,%d]", camapp->continuous_shot_data->error->message, camapp->continuous_shot_data->error->code);
+                                       g_error_free(camapp->continuous_shot_data->error);
+                                       camapp->continuous_shot_data->error = NULL;
+                               }
+
+                               camapp->continuous_shot_data->error = cam_error_new_literal(CAM_CONTI_SHOT_ERROR_MMC_REMOVED, dgettext(PACKAGE, "IDS_CAM_POP_MEMORY_CARD_REMOVED"));
+                       } else {
+                               cam_debug(LOG_SYS, " continuous_shot_data is NULL");
+                       }
+               } else {
+                       if ((mm_state == RECORDER_STATE_RECORDING
+                           || mm_state == RECORDER_STATE_PAUSED)
+                           &&camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                               cam_video_record_cancel(ad);
+                               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_REMOVE_MMC_RECORDING"), cam_app_popup_response_cb);
+                       }
+#ifndef        CAMERA_MACHINE_I686
+                       else if (mm_state != CAMERA_STATE_CAPTURING
+                                && camapp->camera_mode == CAM_CAMERA_MODE) {
+                               if (cam_app_check_blocking_popup()) {
+                                       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_MEMORY_CARD_REMOVED"), cam_app_popup_response_cb);
+                               }
+                       }
+#endif
+               }
+
+               CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
+               cam_handle_value_set(ad, PROP_STORAGE, &value);
+
+               cam_info(LOG_UI, "MMC card is removed");
+       }
+
+       cam_toolbar_setting_popup_update(ad);
+       indicator_update_storage(ad);
+       return;
+}
+
+#ifdef CAMAPP_SIG_HANDLING
+/**
+* This function registers a user space signal handler for the signal SIGSEGV (Signal #11)
+*
+* @return              nothing
+*/
+static void cam_app_register_sigsegv(void)
+{
+       debug_fenter(LOG_SYS);
+
+       /* cam_app_act.sa_flags = SA_SIGINFO | SA_NOCLDSTOP; */
+       cam_app_act.sa_flags = SA_SIGINFO;
+       cam_app_act.sa_handler = (void *)cam_app_sigsegv_handler;
+       sigemptyset(&cam_app_act.sa_mask);
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+       sigaction(SIGALRM, &cam_app_act, &cam_app_act_old);     /* register an action with a previous action */
+#endif
+       sigaction(SIGABRT, &cam_app_act, &cam_app_act_old);
+       sigaction(SIGSEGV, &cam_app_act, &cam_app_act_old);
+       sigaction(SIGILL, &cam_app_act, &cam_app_act_old);
+
+       debug_fleave(LOG_SYS);
+}
+
+static void
+cam_app_sigsegv_handler(int signal_no, siginfo_t *info, void *context)
+{
+       debug_fenter(LOG_SYS);
+
+       cam_debug(LOG_SYS, "signal_no = %d", signal_no);
+
+       if (signal_no == SIGALRM) {     /* if alarm, check the camera status. */
+#ifdef ENABLE_CHECK_CAM_STATUS
+               cam_app_check_status();
+               alarm(CAM_CHECK_STATUS_INTERVAL_TIME);
+#endif
+               return;
+       } else {
+               sigaction(signal_no, &cam_app_act_old, NULL);   /*  register the previous action */
+               raise(signal_no);
+       }
+
+       debug_fleave(LOG_SYS);
+}
+
+#endif
+
+#ifdef ENABLE_CHECK_CAM_STATUS
+
+static void cam_app_check_status()
+{
+       cam_debug(LOG_SYS, "check status");
+}
+#endif                         /* ENABLE_CHECK_CAM_STATUS */
+
+void cam_app_toggle_indicator(void *data, gboolean hide)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       indicator_toggle(ad, hide);
+
+       return;
+}
+
+void cam_app_toggle_toolbar(void *data, gboolean hide)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (hide) {
+               hide_toolbar_edje(ad);
+       } else {
+               show_toolbar_edje(ad);
+       }
+
+       return;
+}
+
+static void
+cam_app_reset_settings_launch_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *notify = (Evas_Object *)data;
+       GValue i_value = { 0, };
+       GValue b_value = { 0, };
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       CamAppData *camapp = NULL;
+
+       cam_debug(LOG_CAM, "!!!!!!!!!cam_app_reset_settings_launch_cb");
+
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, " cam_handle is NULL");
+
+       cam_popup_remove(notify);
+       hide_toolbar_edje(ad);
+
+       cam_app_preview_stop();
+
+       g_value_init(&i_value, G_TYPE_INT);
+       g_value_init(&b_value, G_TYPE_BOOLEAN);
+
+       /* auto focus */
+
+       g_value_set_int(&i_value, AF_DEFAULT);
+       cam_handle_value_set(ad, PROP_AF_MODE, &i_value);
+
+       /* Timer */
+       g_value_set_int(&i_value, TIMER_DEFAULT);
+       cam_handle_value_set(ad, PROP_TIMER, &i_value);
+
+       /* white balance */
+       g_value_set_int(&i_value, WB_DEFAULT);
+       cam_handle_value_set(ad, PROP_WB, &i_value);
+
+       /* Effect */
+       g_value_set_int(&i_value, EFFECT_DEFAULT);
+       cam_handle_value_set(ad, PROP_EFFECT, &i_value);
+
+       /* ISO */
+       g_value_set_int(&i_value, ISO_DEFAULT);
+       cam_handle_value_set(ad, PROP_ISO, &i_value);
+
+       /* Metering */
+       g_value_set_int(&i_value, AE_DEFAULT);
+       cam_handle_value_set(ad, PROP_METERING, &i_value);
+
+       /* Anti-shake */
+       g_value_set_int(&i_value, AHS_DEFAULT);
+       cam_handle_value_set(ad, PROP_AHS, &i_value);
+
+       /* wild dynamic range */
+       g_value_set_int(&i_value, WDR_DEFAULT);
+       cam_handle_value_set(ad, PROP_WDR, &i_value);
+
+       /* Image quality */
+       g_value_set_int(&i_value, QUALITY_DEFAULT);
+       cam_handle_value_set(ad, PROP_IMAGE_QUALITY, &i_value);
+
+       /* Video quality */
+       g_value_set_int(&i_value, QUALITY_DEFAULT);
+       cam_handle_value_set(ad, PROP_VIDEO_QUALITY, &i_value);
+
+       /* Guide Line */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_GUIDELINE, &b_value);
+       settings_guideline_refresh(ad);
+       /* Review */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_REVIEW, &b_value);
+
+       /* GPS Connect */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_GPS, &b_value);
+
+       /* shutter sound */
+       g_value_set_int(&i_value, SHUTTER_SOUND_DEFAULT);
+       cam_handle_value_set(ad, PROP_SHUTTER_SOUND, &i_value);
+
+       /* audio recording */
+       g_value_set_boolean(&b_value, TRUE);
+       cam_handle_value_set(ad, PROP_AUDIO_REC, &b_value);
+
+       /* storage */
+       g_value_set_int(&i_value, STORAGE_DEFAULT);
+       cam_handle_value_set(ad, PROP_STORAGE, &i_value);
+
+       /* brightness */
+       g_value_set_int(&i_value, BRIGHTNESS_DEFAULT);
+       cam_handle_value_set(ad, PROP_BRIGHTNESS, &i_value);
+
+       /* Resolution */
+       g_value_set_int(&i_value, IMAGE_RESOLUTION_DEFAULT);
+       cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &i_value);
+
+       g_value_set_int(&i_value, REC_RESOLUTION_DEFAULT);
+       cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &i_value);
+
+       if (ad->indicator_edje) {
+               /* delete indicator */
+               evas_object_hide(ad->indicator_edje);
+               cam_indicator_destory(ad);
+       }
+       cam_indicator_create(ad);
+
+       show_toolbar_edje(ad);
+
+       if (!cam_app_preview_start(ad)) {
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+       }
+
+}
+
+void cam_app_reset_settings(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_popup_question_add(ad->ug_base,
+                              dgettext(PACKAGE, "IDS_CAM_POP_RESET_CAMERA_SETTINGS"),
+                              dgettext("sys_string", "IDS_COM_SK_YES"),
+                              cam_app_reset_settings_launch_cb,
+                              dgettext("sys_string", "IDS_COM_SK_NO"),
+                              _popup_cancel_cb);
+
+}
+
+static gboolean __cam_toolbar_new_thumbnail_create(Evas_Object **obj,
+                                                       struct appdata *ad,
+                                                       Evas_Coord *thumbnail_x,
+                                                       Evas_Coord *thumbnail_y,
+                                                       Evas_Coord *thumbnail_w,
+                                                       Evas_Coord *thumbnail_h)
+{
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+       cam_retv_if(obj == NULL, FALSE);
+       cam_retv_if(ad->evas == NULL, FALSE);
+       cam_retv_if(ad->toolbar.quickview_item.edje == NULL, FALSE);
+
+       if(camapp->thumbnail_name == NULL) {
+               *obj = NULL;
+               return TRUE;
+       }
+       Evas_Object *new_thumbnail_img = elm_bg_add(ad->toolbar.quickview_item.edje);
+       Evas_Coord x = 0, y = 0, w = 0, h = 0;
+       Evas_Object *layout = NULL;
+       Evas_Object *thumbnail_area = NULL;
+
+       cam_retv_if(new_thumbnail_img == NULL, FALSE);
+       elm_bg_file_set(new_thumbnail_img, camapp->thumbnail_name, NULL);
+
+       layout = elm_layout_edje_get(ad->toolbar.quickview_item.edje);
+       thumbnail_area = (Evas_Object *) edje_object_part_object_get(layout,"thumbnail_area");
+       cam_retv_if(thumbnail_area == NULL, FALSE);
+       evas_object_geometry_get(thumbnail_area, &x, &y, &w, &h);
+       *thumbnail_x = x;
+       *thumbnail_y = y;
+       *thumbnail_w = w;
+       *thumbnail_h = h;
+
+       evas_object_resize(new_thumbnail_img, 0, 0);
+       evas_object_move(new_thumbnail_img, x, y);
+       evas_object_show(new_thumbnail_img);
+       *obj = new_thumbnail_img;
+       return TRUE;
+}
+
+static gboolean __filter_cam_app_pipe_handler(void *data, gint pipe_type)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       if (ad->ug_state == CAM_UG_TERMINATE_STATE
+                       || ad->ug_state == CAM_UG_PAUSE_STATE) {
+               switch (pipe_type) {
+               case CAM_MAIN_PIPE_OP_TYPE_BEST_SHOT_IMAGE_HANDLE:
+               case CAM_MAIN_PIPE_OP_TYPE_VIDEO_CAPTURE_HANDLE:
+                       return FALSE;
+               default:
+                       break;
+               }
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static void cam_app_pipe_handler(void *data, void *buffer, unsigned int nbyte)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       /* Caution */
+       /* DO NOT free buffer in here */
+       /* buffer is freed by ecore */
+
+       if (buffer) {
+               Ecore_Pipe_Data_Info * pipe_info = (Ecore_Pipe_Data_Info *)buffer;
+               int main_pipe_type = pipe_info->cmd;
+               DEBUG_TRACE("main_pipe_type %d", main_pipe_type);
+
+               if (__filter_cam_app_pipe_handler(ad, main_pipe_type) == TRUE) {
+                       return;
+               }
+
+               switch (main_pipe_type) {
+               case CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL:
+                       {
+                               Evas_Object *new_thumbnail_image = NULL;
+                               Evas_Coord x = 0, y = 0, w = 0, h = 0;
+                               gboolean ret = FALSE;
+                               ret = __cam_toolbar_new_thumbnail_create(&new_thumbnail_image, ad, &x, &y, &w, &h);
+                               if (ret == FALSE || !new_thumbnail_image) {
+                                       if (!new_thumbnail_image && ret) {
+                                               DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);
+                                       }
+                                       return;
+                               }
+                               cam_ui_effect_utils_set_thumbnail_effect(new_thumbnail_image,
+                                                                       x,
+                                                                       y,
+                                                                       w,
+                                                                       h,
+                                                                       CAM_THUMBNAIL_ANTIMATION_EFFECT_DURATION);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL_NO_ANI:
+                       {
+                               toolbar_update_quickview_thumbnail_no_animation(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_ROTATE_ANIMATOR:
+                       {
+                               cam_ui_rotate_utils_rotate_start(ad, CAM_ROTATE_ICONS_ANTIMATION_DURATION);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_SHUTTER_ANIMATION:
+                       {
+                               cam_app_create_start_animation(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_UPDATE_PROGRESS:
+                       {
+                               cam_continuous_shot_update_progress_value(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_DISPLAY_POPUP:
+                       {
+                               cam_app_destroy_progressbar(ad);
+                               cam_app_create_burst_popup(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_BEST_SHOT_IMAGE_HANDLE:
+                       {
+                               cam_image_capture_handle(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_UPDATE_VIEW:
+                       {
+                               CamAppData *camapp = ad->camapp_handle;
+                               cam_retm_if(camapp == NULL, "camapp is NULL");
+
+                               camapp->update_view_cb(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_ERROR_POPUP:
+                       {
+                               cam_create_error_popup(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_VIDEO_CAPTURE_HANDLE:
+                       {
+                               cam_video_capture_handle(ad);
+                       }
+                       break;
+               case CAM_MAIN_PIPE_OP_TYPE_RUN_IMAGE_VIEWER:
+                       {
+                               CamAppData *camapp = ad->camapp_handle;
+                               cam_retm_if(camapp == NULL, "camapp is NULL");
+                               cam_retm_if(camapp->filename == NULL, "camapp is NULL");
+                               if (!cam_app_run_image_viewer_ug(ad, camapp->filename, FALSE)) {
+                                       return;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+               }
+               /*note: free memory*/
+               if (pipe_info->data) {
+                       free(pipe_info->data);
+                       pipe_info = NULL;
+               }
+       }
+
+       return;
+}
+
+void cam_focus_edje_rotate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->focus_edje);
+       ad->focus_edje = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "focus_image");
+
+       cam_retm_if(ad->focus_edje == NULL, "focus_edje load failed");
+
+       evas_object_resize(ad->focus_edje, ad->camera_focus_w, ad->camera_focus_h);
+       evas_object_move(ad->focus_edje, ad->af_start_x, ad->af_start_y);
+       evas_object_show(ad->focus_edje);
+
+       cam_app_draw_af_box(ad);
+       cam_app_focus_guide_update(ad);
+}
+
+Eina_Bool cam_screen_rotate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+    if (ad->imageviewer_ug) {
+               ad->is_rotating = FALSE;
+               return FALSE;
+    }
+
+       elm_win_rotation_with_resize_set(ad->win_main, ad->angle);
+
+       if (ad->focus_edje)
+               cam_focus_edje_rotate(ad);
+
+       if (ad->timer_icon_edje)
+               cam_app_timer_icon_rotate(ad);
+
+       if (ad->toolbar_edje)
+               cam_toolbar_rotate(ad);
+
+       if (ad->recording_edje)
+               cam_recording_rotate(ad);
+
+       if (ad->indicator_edje)
+               cam_indicator_rotate(ad);
+
+       if (ad->tip_popup)
+               cam_tip_popup_rotate(ad);
+
+       if (ad->pinch_edje)
+               cam_zoom_create_pinch_edje(ad);
+
+       if (ad->progress_popup != NULL)
+               cam_popup_rotate(ad);
+
+       cam_retvm_if(ad->camapp_handle == NULL, -1, "camapp_handle is NULL");
+
+       toolbar_shot_guide_popup_create(ad, ad->camapp_handle->shooting_mode);
+
+       if (ad->ev_edje) {
+               unload_ev_edje(ad);
+               load_ev_edje(ad);
+       }
+
+       if (ad->zoom_edje) {
+               unload_zoom_edje(ad);
+               load_zoom_edje(ad);
+       }
+
+       if (ad->guideline_edje)
+               settings_guideline_refresh(ad);
+
+       /*update thumbnail*/
+       toolbar_update_quickview_thumbnail_no_animation(ad);
+       /* rotate menu */
+       DEBUG_TRACE("ad->displayed_setting_popup = %d", ad->displayed_setting_popup);
+       DEBUG_TRACE("ad->show_edit_shortcuts_popup_after_rotate = %d", ad->show_edit_shortcuts_popup_after_rotate);
+       DEBUG_TRACE("ad->show_setting_popup_after_rotate = %d", ad->show_setting_popup_after_rotate);
+       if ((ad->displayed_setting_popup != DISPLAY_NONE_POPUP)
+               || (ad->show_edit_shortcuts_popup_after_rotate == TRUE)
+               || (ad->show_setting_popup_after_rotate == TRUE)) {
+               /*ecore_idler_add(cam_show_setting_menu, ad);*/
+               /*note: use timer to delay creating the popup*/
+               ecore_timer_add(0.1, cam_show_setting_menu, ad);
+       } else {
+               ad->is_rotating = FALSE;
+       }
+
+       if (ad->confirm_popup)
+               evas_object_raise(ad->confirm_popup);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static Ecore_Idler *rotate_delay_idler = NULL;
+Eina_Bool cam_app_screen_rotate_idler(void *data)
+{
+       if (rotate_delay_idler) {
+               ecore_idler_del(rotate_delay_idler);
+               rotate_delay_idler = NULL;
+       }
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
+       if (ad->ug_state == CAM_UG_TERMINATE_STATE
+               || ad->ug_state == CAM_UG_PAUSE_STATE) {
+               ad->is_rotating = FALSE;
+               return ECORE_CALLBACK_CANCEL;
+       }
+       cam_screen_rotate(ad);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void cam_app_screen_rotate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       if (ad->ug_state == CAM_UG_TERMINATE_STATE
+               || ad->ug_state == CAM_UG_PAUSE_STATE) {
+               ad->is_rotating = FALSE;
+               return;
+       }
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_ret_if(cam_handle == NULL);
+       DEBUG_TRACE("");
+
+       if (ad->toolbar_edje) {
+               rotate_delay_idler = ecore_idler_add(cam_app_screen_rotate_idler, data);
+       }
+}
+
+gboolean cam_app_get_photo_resolution(int *width, int *height)
+{
+       cam_retv_if(width == NULL || height == NULL, FALSE);
+
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, FALSE, "ad is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(ad->camapp_handle == NULL, FALSE, "camapp_handle is NULL");
+
+       *width = CAM_RESOLUTION_W(camapp->photo_resolution);
+       *height = CAM_RESOLUTION_H(camapp->photo_resolution);
+
+       return TRUE;
+}
+
+gboolean cam_app_reset_resolution(void *data, int width, int height, gboolean force_set)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       gboolean ret = TRUE;
+       int state = 0;
+
+       cam_debug(LOG_MM, " reset resolution = [%d x %d], need_change_state = [%d]",
+                                                 width, height, force_set);
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               int cur_img_w, cur_img_h = 0;
+               int recommanded_cur_w, recommanded_cur_h = 0;
+               int recommanded_new_w, recommanded_new_h = 0;
+
+               ret &= cam_mm_get_image_size(&cur_img_w, &cur_img_h);
+
+               if ((cur_img_w == 1392) && (cur_img_h == 1392)) {
+                       recommanded_cur_w = 1392;
+                       recommanded_cur_h = 1392;
+               } else
+                       cam_mm_get_recommanded_preview_size(&recommanded_cur_w, &recommanded_cur_h);
+
+               ret &= cam_mm_set_image_size(width, height);
+
+               if ((width == 1392) && (height == 1392)) {
+                       recommanded_new_w = 1392;
+                       recommanded_new_h = 1392;
+               } else
+                       cam_mm_get_recommanded_preview_size(&recommanded_new_w, &recommanded_new_h);
+
+               DEBUG_TRACE("cam_mm_get_recommanded_preview_size CUR[%d %d] NEW[%d %d]",
+                                               recommanded_cur_w, recommanded_cur_h, recommanded_new_w, recommanded_new_h);
+
+               if ((recommanded_cur_w != recommanded_new_w)
+                       ||(recommanded_cur_h != recommanded_new_h)
+                       ||(force_set)) {
+
+                       state = cam_mm_get_cam_state();
+
+                       if (state == CAMERA_STATE_PREVIEW) {
+                               ret &= cam_app_preview_stop();
+                               ret &= cam_mm_set_video_size(recommanded_new_w, recommanded_new_h);
+                               ret &= cam_app_preview_start(ad);
+                       } else {
+                               ret &= cam_mm_set_video_size(recommanded_new_w, recommanded_new_h);
+                       }
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               int cur_video_w, cur_video_h = 0;
+               cam_mm_get_video_size(&cur_video_w, &cur_video_h);
+
+               if (((cur_video_w != width) || (cur_video_h != height)) && (force_set)) {
+                       state = cam_mm_get_rec_state();
+
+                       if (state == RECORDER_STATE_READY) {
+                               ret &= cam_app_preview_stop();
+                               ret &= cam_mm_set_video_size(width, height);
+                               ret &= cam_app_preview_start(ad);
+                       } else {
+                               ret &= cam_mm_set_video_size(width, height);
+                       }
+               } else {
+                       ret &= cam_mm_set_video_size(width, height);
+               }
+       } else {
+               return FALSE;
+       }
+       return ret;
+}
+
+int cam_app_get_aenc_bitrate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int bitrate = 0;
+
+       cam_retvm_if(ad == NULL, 0, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, 0, "camapp is NULL");
+
+       if ((camapp->recording_mode == CAM_RECORD_MMS) ||(camapp->recording_mode == CAM_RECORD_SELF_MMS)) {
+               bitrate = CAM_AUDIO_BITRATE_MMS;
+       } else {
+               bitrate = CAM_AUDIO_BITRATE_NORMAL;
+       }
+
+       return bitrate;
+}
+
+int cam_app_get_venc_bitrate(void *data, int quality)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int return_val = 0;
+
+       cam_retvm_if(ad == NULL, 0, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, 0, "camapp is NULL");
+
+       if ((camapp->recording_mode == CAM_RECORD_MMS) ||(camapp->recording_mode == CAM_RECORD_SELF_MMS)) {
+               switch (quality) {
+               case CAM_QUALITY_HIGH:
+               case CAM_QUALITY_BEST:
+                       return_val = 64000;
+                       break;
+
+               case CAM_QUALITY_MEDIUM:
+                       return_val = 32000;
+                       break;
+
+               case CAM_QUALITY_LOW:
+                       return_val = 16000;
+                       break;
+
+               default:
+                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                       break;
+               }
+       } else if ((camapp->recording_mode == CAM_RECORD_SLOW) ||(camapp->recording_mode == CAM_RECORD_FAST)) {
+               switch (quality) {
+               case CAM_QUALITY_HIGH:
+               case CAM_QUALITY_BEST:
+                       return_val = 10000000;
+                       break;
+
+               case CAM_QUALITY_MEDIUM:
+                       return_val = 4000000;
+                       break;
+
+               case CAM_QUALITY_LOW:
+                       return_val = 2000000;
+                       break;
+
+               default:
+                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                       break;
+               }
+       } else {
+               switch (camapp->video_resolution) {
+               case CAM_RESOLUTION_FULLHD:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 8000000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 4000000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 2000000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+               case CAM_RESOLUTION_HD:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 10000000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 4000000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 2000000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               case CAM_RESOLUTION_WVGA:
+               case CAM_RESOLUTION_WVGA2:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 4000000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 2000000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 1000000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               case CAM_RESOLUTION_VGA:
+
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 3000000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 1500000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 500000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               case CAM_RESOLUTION_WQVGA:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 2000000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 1000000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 500000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               case CAM_RESOLUTION_QVGA:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 384000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 192000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 64000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               case CAM_RESOLUTION_QCIF:
+                       {
+                               switch (quality) {
+                               case CAM_QUALITY_HIGH:
+                               case CAM_QUALITY_BEST:
+                                       return_val = 384000;
+                                       break;
+
+                               case CAM_QUALITY_MEDIUM:
+                                       return_val = 192000;
+                                       break;
+
+                               case CAM_QUALITY_LOW:
+                                       return_val = 64000;
+                                       break;
+
+                               default:
+                                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                                       break;
+                               }
+                       }
+                       break;
+
+               default:
+                       cam_critical(LOG_MM, "INVALID QUAILTY");
+                       break;
+               }
+       }
+
+       cam_debug(LOG_MM, "videoenc bit rate = %d, current quilty = %d",
+                 return_val, quality);
+       return return_val;
+}
+
+gboolean cam_app_set_video_quality(void *data, int quality)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int v_bitrate = 0;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       v_bitrate = cam_app_get_venc_bitrate(ad, quality);
+       if (v_bitrate > 0) {
+               cam_mm_set_video_encoder_bitrate(v_bitrate);
+       } else {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_app_set_recording_mode(void *data, int mode)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       int video_codec = 0, audio_codec = 0, sample_rate = 0;
+       int file_format = RECORDER_FILE_FORMAT_MP4;
+       int channel = 0;
+       int a_bitrate = 0;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+       DEBUG_TRACE("mode = %d" , mode);
+       if (mode == CAM_RECORD_MMS || mode == CAM_RECORD_SELF_MMS) {
+               DEBUG_TRACE("mode = %d" , mode);
+               video_codec = RECORDER_VIDEO_CODEC_H263;
+               audio_codec = RECORDER_AUDIO_CODEC_AMR;
+               sample_rate = 8000;
+               file_format = RECORDER_FILE_FORMAT_3GP;
+               channel = 1;
+       } else {
+               DEBUG_TRACE("mode = %d" , mode);
+               video_codec = RECORDER_VIDEO_CODEC_MPEG4;
+               audio_codec = RECORDER_AUDIO_CODEC_AAC;
+               sample_rate = 44100;
+               file_format = RECORDER_FILE_FORMAT_MP4;
+               channel = 2;
+       }
+#ifdef CAMERA_MACHINE_I686
+       video_codec = RECORDER_VIDEO_CODEC_THEORA;
+       audio_codec = RECORDER_AUDIO_CODEC_VORBIS;
+#endif
+
+       if (!cam_mm_set_codec(audio_codec, video_codec))
+               return FALSE;
+
+       if (!cam_mm_set_audio_source(sample_rate, channel))
+               return FALSE;
+
+       a_bitrate = cam_app_get_aenc_bitrate(ad);
+       if (a_bitrate > 0) {
+               cam_mm_set_audio_encoder_bitrate(a_bitrate);
+       } else {
+               return FALSE;
+       }
+
+       if (!cam_app_set_video_quality(ad, camapp->video_quality))
+               return FALSE;
+
+       if (!cam_mm_set_file_format(file_format))
+               return FALSE;
+
+       return TRUE;
+}
+
+gboolean cam_app_set_size_limit(int max_val, int size_limit_type)
+{
+       int ret = 0;
+
+       switch (size_limit_type) {
+       case CAM_MM_SIZE_LIMIT_TYPE_BYTE:
+               ret = cam_mm_set_max_size(max_val);
+               if (!ret)
+                       return FALSE;
+/*
+               ret = cam_mm_set_max_time(REC_MAX_TIME_LIMITED);
+               if (!ret)
+                       return FALSE;
+*/
+               break;
+       case CAM_MM_SIZE_LIMIT_TYPE_SECOND:
+               ret = cam_mm_set_max_size(0);
+               if (!ret)
+                       return FALSE;
+               ret = cam_mm_set_max_time(max_val);
+               if (!ret)
+                       return FALSE;
+               break;
+       default:
+               g_assert_not_reached();
+       }
+
+       return TRUE;
+}
+
+gboolean cam_app_init_attribute(void *data, CamMode mode)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gboolean ret = TRUE;
+       int width = 0;
+       int height = 0;
+       int state = 0;
+       int rotate = CAMERA_ROTATION_270;
+       int camera_rotate = CAMERA_ROTATION_NONE;
+       int video_dev = 0;
+       int capture_video_format = -1;
+       #ifdef TODO_SURRPORT
+       int recording_video_format = -1;
+       #endif
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp is NULL");
+
+       state = cam_mm_get_state();
+
+#if 0
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               if (state != RECORDER_STATE_CREATED) {
+                       return FALSE;
+               }
+       } else if(camapp->camera_mode == CAM_CAMERA_MODE) {
+               if (state != CAMERA_STATE_CREATED) {
+                       return FALSE;
+               }
+       }
+#endif
+
+       cam_mm_get_video_size( &camapp->default_preview_width, &camapp->default_preview_height);
+       DEBUG_TRACE("default_width = %d,default_height = %d", camapp->default_preview_width, camapp->default_preview_height);
+
+#ifdef CAMERA_MACHINE_I686
+       width = 320;
+       height = 240;
+#endif
+
+       if (CAM_CAMERA_MODE == mode) {
+               width = CAM_RESOLUTION_W(camapp->photo_resolution);
+               height = CAM_RESOLUTION_H(camapp->photo_resolution);
+
+               ret &= cam_mm_set_image_size(width, height);
+               ret &= cam_mm_set_image_count(camapp->image_count);
+               ret &= cam_mm_set_image_enc_quality(camapp->image_quality);
+#ifdef CAMERA_MACHINE_I686
+               ret &= cam_mm_set_fps(CAMERA_ATTR_FPS_15);
+               ret &= cam_mm_set_video_source_format(CAMERA_PIXEL_FORMAT_I420);
+#else
+               ret &= cam_mm_set_fps(CAMERA_ATTR_FPS_AUTO);
+               ret &= cam_mm_get_video_source_format(NULL, &capture_video_format);
+               ret &= cam_mm_set_video_source_format(capture_video_format);
+#endif
+               ret &= cam_app_set_capture_format_shooting_mode(camapp->shooting_mode);
+
+               if (cam_is_enabled_menu(ad, CAM_MENU_SAVE_AS_FLIP))
+                       ret &= cam_mm_set_image_flip(camapp->save_as_flip);
+               else
+                       ret &= cam_mm_set_image_flip(FALSE);
+
+               ret &= cam_mm_set_anti_hand_shake(camapp->anti_shake);
+       } else if (CAM_CAMCORDER_MODE == mode) {
+               width = CAM_RESOLUTION_W(camapp->video_resolution);
+               height = CAM_RESOLUTION_H(camapp->video_resolution);
+
+               ret &= cam_mm_set_image_size(CAM_RESOLUTION_W(camapp->photo_resolution), CAM_RESOLUTION_H(camapp->photo_resolution));
+               ret &= cam_mm_set_image_enc_quality(camapp->image_quality);
+               ret &= cam_mm_set_video_profile();
+#ifdef CAMERA_MACHINE_I686
+               ret &= cam_mm_set_fps(CAMERA_ATTR_FPS_15);
+               ret &= cam_mm_set_video_source_format(CAMERA_PIXEL_FORMAT_I420);
+               DEBUG_TRACE("");
+#else
+               DEBUG_TRACE("");
+               ret &= cam_mm_set_fps(camapp->fps);
+               if (camapp->anti_shake) {
+                       ret &= cam_mm_set_video_source_format(CAMERA_PIXEL_FORMAT_NV12);
+               } else {
+                       ret &= cam_mm_get_video_source_format(NULL, &recording_video_format);
+                       DEBUG_TRACE("recording_video_format:%d", recording_video_format);
+                       ret &= cam_mm_set_video_source_format(recording_video_format);
+               }
+#endif
+               ret &= cam_mm_set_audio_recording(camapp->audio_recording);
+               ret &= cam_app_set_recording_mode(ad, camapp->recording_mode);
+               DEBUG_TRACE("camapp->size_limit = %d" , camapp->size_limit);
+               DEBUG_TRACE("camapp->size_limit_type = %d" , camapp->size_limit_type);
+               ret &= cam_app_set_size_limit(camapp->size_limit, camapp->size_limit_type);
+       } else {
+               return FALSE;
+       }
+       cam_mm_get_video_device(&video_dev);
+       DEBUG_TRACE("video_dev = %d",video_dev);
+       if (video_dev == CAM_DEVICE_VGA) {
+               int value;
+               cam_mm_get_front_cam_display_rotate_value(&value, &rotate);
+
+               DEBUG_TRACE("get front camera rotate %d value = %d", rotate, value);
+               /*rotate = value;*/
+               #ifdef TODO_SURRPORT
+               rotate = CAMERA_ROTATION_270;
+               #endif /*TODO:if new capi will released, this could be removed,but take care.*/
+
+       }
+       cam_mm_get_zoom_valid_intrange(&camapp->zoom_min,&camapp->zoom_max);
+       DEBUG_TRACE("Zoom range [%d - %d]",camapp->zoom_min, camapp->zoom_max);
+
+       cam_mm_get_brightless_valid_intrange(&camapp->brightness_min,&camapp->brightness_max);
+       DEBUG_TRACE("brightness range [%d - %d]",camapp->brightness_min, camapp->brightness_max);
+       camapp->brightness = (camapp->brightness_min + camapp->brightness_max) /2;
+
+       ret &= cam_mm_remove_geo_tag();
+       DEBUG_TRACE("cam_mm_remove_geo_tag = %d", ret);
+       ret &= cam_mm_set_display_device(CAMERA_DISPLAY_TYPE_X11, GET_DISPLAY(ad->main_xid));
+       ret &= cam_mm_set_camera_rotate(camera_rotate);
+       ret &= cam_mm_set_display_rotate(rotate);
+       ret &= cam_mm_set_display_geometry_method(CAMERA_DISPLAY_MODE_LETTER_BOX);
+#ifndef USE_CAMERA_APP_SHUTTER_SOUND
+       ret &= cam_mm_set_shutter_sound(TRUE);
+#endif
+       ret &= cam_app_reset_resolution(ad, width, height, TRUE);
+       ret &= cam_mm_set_zoom(camapp->zoom_mode);
+       ret &= cam_mm_set_auto_exposure(camapp->auto_exposure);
+       ret &= cam_mm_set_iso(camapp->iso);
+       ret &= cam_mm_set_wdr(camapp->wdr);
+       ret &= cam_mm_set_brightness(camapp->brightness);
+       ret &= cam_mm_enable_auto_contrast(camapp->auto_contrast);
+       ret &= cam_mm_set_white_balance(camapp->white_balance);
+       ret &= cam_mm_set_effect(camapp->effect);
+       ret &= cam_mm_set_program_mode(camapp->scene_mode);
+
+       if (ad->torchlight_on && camapp->flash != CAM_FLASH_OFF)
+               ret &= cam_mm_set_flash(CAM_FLASH_OFF);
+       else
+               ret &= cam_mm_set_flash(camapp->flash);
+
+       if (camapp->af_mode == CAM_FOCUS_AUTO
+           || camapp->af_mode == CAM_FOCUS_MACRO) {
+               ret &= cam_mm_set_focus_mode(camapp->af_mode);
+       } else if (camapp->af_mode == CAM_FOCUS_FACE) {
+               ret &= cam_mm_set_focus_mode(CAMERA_ATTR_AF_NORMAL);
+       }
+
+       ret &= cam_mm_set_tag_enable(TRUE);
+       ret &= cam_mm_set_outdoor_visibility(camapp->outdoor_visibility);
+       ad->enable_mode_change = TRUE;
+       ad->is_recording = FALSE;
+       return ret;
+
+}
+
+static void cam_app_update_gps_level(void *data, int lbs_state)
+{
+       struct appdata *ad = (struct appdata *)data;
+       GValue value = { 0, };
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       cam_debug(LOG_UI, "     cam_app_update_gps_level : %d", lbs_state);
+
+       CAM_GVALUE_SET_INT(value, lbs_state);
+       cam_handle_value_set(ad, PROP_GPS_LEVEL, &value);
+
+       return;
+}
+
+static gboolean cam_app_return_ext_app(void *data, const char *r_file_path)
+{
+       struct appdata *ad = (struct appdata *)data;
+       service_h reply;
+       service_create(&reply);
+
+       if (ad->service_mime != NULL) {
+               if (r_file_path == NULL) {
+                       service_add_extra_data(reply, SERVICE_DATA_SELECTED, "exit");
+                       service_reply_to_launch_request(reply, ad->service_handle, SERVICE_RESULT_FAILED);
+               } else {
+                       service_add_extra_data(reply, SERVICE_DATA_SELECTED, r_file_path);
+                       service_reply_to_launch_request(reply, ad->service_handle, SERVICE_RESULT_SUCCEEDED);
+               }
+       }
+
+       service_destroy(reply);
+       return TRUE;
+
+}
+static void cam_app_battery_status_cb(keynode_t *key, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       int low_status = -1;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &low_status)) {
+               cam_debug(LOG_UI, "battery status low = %d", low_status);
+               if (low_status <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) {
+                       ad->battery_status = LOW_BATTERY_CRITICAL_STATUS;
+                       cam_app_notice_popup(ad, dgettext("sys_string", "IDS_COM_BODY_LOW_BATTERY"),
+                       cam_app_timeout_notice_response_cb);
+               } else if (low_status == VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
+                       ad->battery_status = LOW_BATTERY_WARNING_STATUS;
+                       cam_app_notice_popup((void *)ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"), cam_app_lowbattery_close_flash_cb);
+               } else {
+                       ad->battery_status = NORMAL_BATTERY_STATUS;
+               }
+       }
+
+       return;
+}
+/*if torch light vconf key value is changed, this cb is called*/
+static void cam_torchlight_update_cb(keynode_t *key, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       int key_value = vconf_keynode_get_bool(key); /* -1: error, 1:True, 0:False */
+       if (key_value == -1) {
+               DEBUG_TRACE("vconf_keynode_get_bool failed");
+               return;
+       }
+       DEBUG_TRACE("VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT is changed to %d", key_value);
+       if (key_value) {
+               /* disable flash icon */
+               ad->torchlight_on = TRUE;
+               cam_mm_set_flash(CAM_FLASH_OFF);
+
+       } else {
+               /* enable flash icon */
+               ad->torchlight_on = FALSE;
+               cam_mm_set_flash(camapp->flash);
+       }
+       cam_toolbar_update(ad); /*update flash icon*/
+       return;
+}
+
+static void cam_app_battery_update_cb(keynode_t *key, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       char *keyname = NULL;
+
+       debug_fenter(LOG_UI);
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       keyname = vconf_keynode_get_name(key);
+
+       if (!strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW)) {
+               GValue value = { 0 };
+               gint charging = vconf_keynode_get_int(key);
+               DEBUG_TRACE("charging = %d", charging);
+               CAM_GVALUE_SET_INT(value, charging);
+               cam_handle_value_set(ad, PROP_BATTERY_CHARG, &value);
+
+       } else if (!strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CAPACITY)) {
+               GValue value = { 0 };
+               int battery_level = vconf_keynode_get_int(key);
+               CAM_GVALUE_SET_INT(value, battery_level);
+               cam_handle_value_set(ad, PROP_BATTERY_LEVEL, &value);
+       }
+       return;
+}
+
+#if 0
+Evas_Object *cam_screen_load_edj(Evas_Object *parent, const char *file,
+                                const char *group)
+{
+       Evas_Object *eo;
+       int r;
+
+       eo = elm_layout_add(parent);
+       if (eo) {
+               r = elm_layout_file_set(eo, file, group);
+               if (!r) {
+                       evas_object_del(eo);
+                       return NULL;
+               }
+
+               evas_object_size_hint_weight_set(eo,
+                                                EVAS_HINT_EXPAND,
+                                                EVAS_HINT_EXPAND);
+
+               /*      //if(!strcmp((const char *)elm_widget_type_get(parent), "win")) { */
+               elm_win_resize_object_add(parent, eo);
+               /*      //} */
+       }
+
+       return eo;
+}
+#endif
+Evas_Object *cam_app_load_edj(Evas_Object *parent, const char *file,
+                             const char *group)
+{
+       Evas_Object *eo = NULL;
+       int r = 0;
+
+       eo = elm_layout_add(parent);
+       if (eo) {
+               r = elm_layout_file_set(eo, file, group);
+               if (!r) {
+                       evas_object_del(eo);
+                       return NULL;
+               }
+
+               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+Eina_Bool __cam_app_update_thumbnail_idler(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) {
+               return ECORE_CALLBACK_CANCEL;
+       }
+       CamAppData *camapp = ad->camapp_handle;
+
+       if (!camapp) {
+               REMOVE_IDLER(ad->update_thumbnail_idler);
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       DEBUG_TRACE(" ");
+
+       if (!g_file_test(camapp->filename,G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+               DEBUG_TRACE( "The captured File is not existed");
+               REMOVE_IDLER(ad->update_thumbnail_idler);
+               return ECORE_CALLBACK_CANCEL;;
+       }
+
+       gboolean ret = FALSE;
+
+       if (ad->imageviewer_ug) { /*review on */
+               DEBUG_TRACE("Image viewer was LAUNCHED. skip this...");
+               REMOVE_IDLER(ad->update_thumbnail_idler);
+               return ECORE_CALLBACK_CANCEL;;
+       }
+
+       if (camapp->thumbnail_name != NULL) {
+               free (camapp->thumbnail_name);
+               camapp->thumbnail_name = NULL;
+
+       }
+
+       ret = cam_file_get_cam_file_thumbnail_path(camapp->filename, &camapp->thumbnail_name);
+       DEBUG_TRACE("ret[0:success] = [%d] camapp->filename: [%s]",
+                 ret, camapp->filename);
+       DEBUG_TRACE("ret[0:success] = [%d] camapp->thumbnail_name: [%s]",
+                 ret, camapp->thumbnail_name);
+       if (!g_file_test(camapp->thumbnail_name, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+
+               if (g_thumbnail_image_check_count > 10) {
+                       REMOVE_IDLER(ad->update_thumbnail_idler);
+                       return ECORE_CALLBACK_CANCEL;
+               }
+
+               DEBUG_TRACE("The thumbnail File is not existed,try the %d nums", g_thumbnail_image_check_count);
+               g_thumbnail_image_check_count++;
+               usleep(THUMBNAIL_UPDATE_WAIT_TIME);
+               /*REMOVE_IDLER(ad->update_thumbnail_idler);*//*note:renew, do not delete idler*/
+               return ECORE_CALLBACK_RENEW;
+       }
+       else if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               DEBUG_TRACE("thumbnail image check count=[%d]", g_thumbnail_image_check_count);
+               toolbar_update_quickview_thumbnail(ad);
+       }
+       else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               toolbar_update_quickview_thumbnail(ad);
+
+       } else {
+               DEBUG_TRACE("NOT REACHED CODES REACHED!");
+       }
+       REMOVE_IDLER(ad->update_thumbnail_idler);
+       return ECORE_CALLBACK_CANCEL;
+}
+/* update thumbnail to quickview after first launching or return from image viewer */
+void cam_app_update_quickview_icon(void *data) {
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->camapp_handle == NULL);
+       gchar *filename = NULL;
+
+       DEBUG_TRACE("");
+
+       /*To update quickview image, get last filename*/
+       if (ad->camapp_handle->filename) {
+               free(ad->camapp_handle->filename);
+               ad->camapp_handle->filename = NULL;
+       }
+
+       if (ad->camapp_handle->thumbnail_name) {
+               free(ad->camapp_handle->thumbnail_name);
+               ad->camapp_handle->thumbnail_name = NULL;
+       }
+
+       filename = cam_app_get_last_filename();
+
+       if (filename != NULL) {
+               ad->camapp_handle->filename = strdup(filename);
+               free(filename);
+               filename = NULL;
+
+               if (!cam_file_get_cam_file_thumbnail_path
+                       (ad->camapp_handle->filename, &ad->camapp_handle->thumbnail_name))
+                       DEBUG_TRACE("cam_file_get_cam_file_thumbnail_path() fail");
+
+       }
+
+       toolbar_update_quickview_thumbnail_no_animation(ad);
+
+       return;
+}
+
+void cam_app_update_thumbnail()
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+
+       DEBUG_TRACE("cam_app_update_thumbnail");
+
+       if (CAM_LAUNCHING_MODE_NORMAL == ad->launching_mode && camapp->filename) {
+               DEBUG_TRACE();
+               g_thumbnail_image_check_count = 0;
+               if (!ad->update_thumbnail_idler)
+                       ad->update_thumbnail_idler = ecore_idler_add(__cam_app_update_thumbnail_idler, ad);
+       }
+       return;
+}
+
+gboolean cam_app_parse_args(CamExeArgs *args, service_h service)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retv_if(ad == NULL, FALSE);
+
+       ad->service_mime = NULL;
+
+       int ret = service_get_mime(service, &ad->service_mime);
+       if (ret != SERVICE_ERROR_NONE) {
+               cam_debug(LOG_UI, "service_get_mime is error ");
+               return FALSE;
+       }
+
+       /* mime type */
+       if (ad->service_mime != NULL) {
+               if ((strcmp(ad->service_mime, SERVICE_MIME_TYPE_IMAGE_1) == 0)
+                       || (strcmp(ad->service_mime, SERVICE_MIME_TYPE_IMAGE_2) == 0)) {
+                       args->cam_mode = CAM_CAMERA_MODE;
+               } else if ((strcmp(ad->service_mime, SERVICE_MIME_TYPE_VIDEO_1) == 0)
+                       || (strcmp(ad->service_mime, SERVICE_MIME_TYPE_VIDEO_2) == 0)) {
+                       args->cam_mode = CAM_CAMCORDER_MODE;
+               } else {
+                       cam_critical(LOG_UI, "invalid mime type");
+                       args->cam_mode = CAM_CAMERA_MODE;
+               }
+       } else {
+               cam_critical(LOG_UI, "service mime is NULL");
+               args->cam_mode = CAM_CAMERA_MODE;
+       }
+
+       /* allow switch */
+       const char *val = NULL;
+       service_get_extra_data(service, SERVICE_OPTIONAL_KEY_ALLOW_SWITCH, (char **)&val);
+       if (val) {
+               if (0 == strcmp(val, "true")) {
+                       args->allow_switch = TRUE;
+                       args->cam_mode = CAM_CAMERA_MODE;
+               } else {
+                       args->allow_switch = FALSE;
+               }
+       } else {
+               args->allow_switch = FALSE;
+       }
+
+       /* get caller appl. */
+       val = NULL;
+       service_get_extra_data(service, "CALLER", (char **)&val);
+       if (val) {
+               cam_debug(LOG_UI, "CALLER %s", val);
+               args->caller = strdup(val);
+       } else {
+               args->caller = NULL;
+       }
+
+       /* resolution */
+       val = NULL;
+       int res = 0;
+       service_get_extra_data(service, "RESOLUTION", (char **)&val);
+       if (val) {
+               cam_debug(LOG_UI, "RESOLUTION %s", val);
+
+               if (args->cam_mode == CAM_CAMERA_MODE) {
+                       if (0 == strcmp(val, CAM_CAPTURE_RES_VGA))
+                               res = CAM_RESOLUTION_VGA;
+                       else
+                               res = IMAGE_RESOLUTION_DEFAULT;
+               } else {
+                       if (0 == strcmp(val, CAM_RECORDING_RES_QCIF))
+                               res = CAM_RESOLUTION_QCIF;
+                       else
+                               res = REC_RESOLUTION_DEFAULT;
+               }
+       } else {
+               if (args->cam_mode == CAM_CAMERA_MODE) {
+                       res = IMAGE_RESOLUTION_DEFAULT;
+               } else {
+                       res = REC_RESOLUTION_DEFAULT;
+               }
+       }
+       args->width = CAM_RESOLUTION_W(res);
+       args->height = CAM_RESOLUTION_H(res);
+       args->resolution = res;
+
+       /* size limit */
+       val = NULL;
+       service_get_extra_data(service, "LIMIT", (char **)&val);
+       if (val) {
+               cam_debug(LOG_UI, "LIMIT %s", val);
+               args->size_limit = atoi(val);
+       } else {
+               args->size_limit = REC_SIZE_LIMIT_DEFAULT;
+       }
+
+       args->review = TRUE;
+
+       /*  print exe args */
+       cam_debug(LOG_SYS, "############### exe args ###############");
+       cam_debug(LOG_SYS, "mode =%d", args->cam_mode);
+       cam_debug(LOG_SYS, "caller =%s", args->caller);
+       cam_debug(LOG_SYS, "width =%d", args->width);
+       cam_debug(LOG_SYS, "height =%d", args->height);
+       cam_debug(LOG_SYS, "limit =%d", args->size_limit);
+       cam_debug(LOG_SYS, "review =%d", args->review);
+       cam_debug(LOG_SYS, "allow_switch =%d", args->allow_switch);
+       cam_debug(LOG_SYS, "############### end ###############");
+
+       return TRUE;
+}
+
+
+void cam_app_draw_af_box(void *data)
+{
+
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+       ad->af_start_x = 0;
+       ad->af_start_y = 0;
+
+       switch (ad->rot_current) {
+       case APP_DEVICE_ORIENTATION_0:
+               {
+                       ad->af_start_x = ad->touch_lcd_x;
+                       ad->af_start_y = ad->touch_lcd_y;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               {
+                       ad->af_start_x = ad->win_height - ad->touch_lcd_x;
+                       ad->af_start_y = ad->win_width - ad->touch_lcd_y;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               {
+                       ad->af_start_x = ad->touch_lcd_y;
+                       ad->af_start_y = ad->win_height - ad->touch_lcd_x;
+               }
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               {
+                       ad->af_start_x = ad->win_width - ad->touch_lcd_y;
+                       ad->af_start_y = ad->touch_lcd_x;
+               }
+               break;
+       default:
+               break;
+       }
+
+       /* adjust */
+       DEBUG_TRACE("ad->af_start_x=%f, ad->af_start_y=%f", ad->af_start_x, ad->af_start_y);
+
+       ad->camera_focus_w = CAMERA_FOCUS_W * elm_config_scale_get();
+       ad->camera_focus_h = CAMERA_FOCUS_H * elm_config_scale_get();
+       DEBUG_TRACE("ad->camera_focus_w=%f, ad->camera_focus_h=%f", ad->camera_focus_w, ad->camera_focus_h);
+
+       ad->af_start_x = ad->af_start_x - (ad->camera_focus_w / 2);
+       ad->af_start_y = ad->af_start_y - (ad->camera_focus_h / 2);
+       DEBUG_TRACE("af area box start x,y =[%f,%f]\n", ad->af_start_x, ad->af_start_y);
+
+       if (ad->rot_current == APP_DEVICE_ORIENTATION_270
+           || ad->rot_current == APP_DEVICE_ORIENTATION_90) {
+               if (ad->af_start_x < ad->preview_offset_x) {
+                       ad->af_start_x = ad->preview_offset_x;
+               }
+               if (ad->af_start_y < ad->preview_offset_y) {
+                       ad->af_start_y = ad->preview_offset_y;
+               }
+               if ((ad->af_start_x + ad->camera_focus_w) >
+                   (ad->preview_w + ad->preview_offset_x)) {
+                       ad->af_start_x =
+                           (ad->preview_w + ad->preview_offset_x) -
+                           ad->camera_focus_w;
+               }
+               if ((ad->af_start_y + ad->camera_focus_h) >
+                   (ad->preview_h + ad->preview_offset_y)) {
+                       ad->af_start_y =
+                           (ad->preview_h + ad->preview_offset_y) -
+                           ad->camera_focus_h;
+               }
+
+       } else {
+               if (ad->af_start_y < ad->preview_offset_x) {
+                       ad->af_start_y = ad->preview_offset_x;
+               }
+               if (ad->af_start_x < ad->preview_offset_y) {
+                       ad->af_start_x = ad->preview_offset_y;
+               }
+               if ((ad->af_start_y + ad->camera_focus_h) >
+                   (ad->preview_w + ad->preview_offset_x)) {
+                       ad->af_start_y =
+                           (ad->preview_w + ad->preview_offset_x) -
+                           ad->camera_focus_h;
+               }
+               if ((ad->af_start_x + ad->camera_focus_w) >
+                   (ad->preview_h + ad->preview_offset_y)) {
+                       ad->af_start_x =
+                           (ad->preview_h + ad->preview_offset_y) -
+                           ad->camera_focus_w;
+               }
+       }
+
+       if (ad->focus_edje) {
+               DEBUG_TRACE
+                   ("####################################################");
+               DEBUG_TRACE("af area start ,ad->af_start_x,y =[%f,%f]\n",
+                           ad->af_start_x, ad->af_start_y);
+               DEBUG_TRACE
+                   ("####################################################");
+               evas_object_move(ad->focus_edje, ad->af_start_x,
+                                ad->af_start_y);
+               DEBUG_TRACE(" MOVE FOCUS_EDJE : %f,%f", ad->af_start_x,
+                           ad->af_start_y);
+       }
+
+}
+
+
+/*  get preview start x,y coordinate */
+void cam_app_get_preview_offset_coordinate(void *data)
+{
+
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is null");
+
+       int width = 0;
+       int height = 0;
+       CamVideoRectangle result;       /* result ractangle */
+       CamVideoRectangle window;       /* target window ractangle */
+       CamVideoRectangle preview;      /* target preview rectangle */
+       /*wow,now, the MMHandleType is not created*/
+       cam_mm_get_video_size(&width, &height);
+
+       ad->camfw_video_width = width;
+       ad->camfw_video_height = height;
+
+       preview.w = width;
+       preview.h = height;
+       DEBUG_TRACE("************************************************");
+       DEBUG_TRACE("preview.w =%d, preview.h=%d", preview.w, preview.h);
+
+       window.h = ad->win_height;
+       window.w = ad->win_width;
+       DEBUG_TRACE("window.w =%d, window.h=%d\n", window.w, window.h);
+       DEBUG_TRACE("************************************************");
+       cam_app_preview_start_coordinate(preview, window, &result);
+
+       ad->preview_offset_x = result.x;
+       ad->preview_offset_y = result.y;
+       ad->preview_w = result.w;
+       ad->preview_h = result.h;
+
+       DEBUG_TRACE("************************************************");
+       DEBUG_TRACE("ad->preview_offset_x = %d, ad->preview_offset_y = %d",
+                   ad->preview_offset_x, ad->preview_offset_y);
+       DEBUG_TRACE("*************************************************");
+
+       camapp->focus_state = CAM_FOCUS_STATUS_RELEASED;
+       cam_app_focus_guide_update(ad);
+
+       /* init */
+       ad->af_x = (ad->win_width / 2) - ad->preview_offset_x;
+       ad->af_y = (ad->win_height / 2) - ad->preview_offset_y;
+
+       ad->af_x = (ad->af_x * ad->camfw_video_width) / ad->preview_w;
+       ad->af_y = (ad->af_y * ad->camfw_video_height) / ad->preview_h;
+       /* init */
+       ad->touch_lcd_x = (ad->win_height / 2);
+       ad->touch_lcd_y = (ad->win_width / 2);
+
+       DEBUG_TRACE("*************************************************");
+       DEBUG_TRACE(" ad->af_x=%d, ad->af_y=%d", ad->af_x, ad->af_y);
+       DEBUG_TRACE(" ad->af_start_x=%d, ad->af_start_y=%d", ad->af_start_x, ad->af_start_y);
+       DEBUG_TRACE(" ad->touch_lcd_x=%d, ad->touch_lcd_y=%d", ad->touch_lcd_x, ad->touch_lcd_y);
+       DEBUG_TRACE("*************************************************");
+
+       cam_app_draw_af_box(ad);
+
+       if (ad->focus_edje)
+               evas_object_show(ad->focus_edje);
+}
+
+void cam_app_preview_start_coordinate(CamVideoRectangle src,
+                                     CamVideoRectangle dst,
+                                     CamVideoRectangle *result)
+{
+       /* src is target preview rectangle */
+       /* dst is target window rectangle */
+       g_return_if_fail(result != NULL);
+       gdouble src_ratio, dst_ratio;
+       src_ratio = (gdouble) src.w / src.h;
+       dst_ratio = (gdouble) dst.w / dst.h;
+       if (src_ratio > dst_ratio) {
+               DEBUG_TRACE("#### case 1\n");
+               result->w = dst.w;
+               result->h = dst.w / src_ratio;
+               result->x = 0;
+               result->y = (dst.h - result->h) / 2;
+       } else if (src_ratio < dst_ratio) {
+               DEBUG_TRACE("#### case 2\n");
+               result->w = dst.h * src_ratio;
+               result->h = dst.h;
+               result->x = (dst.w - result->w) / 2;
+               result->y = 0;
+       } else {
+               DEBUG_TRACE("#### case 3\n");
+               result->x = 0;
+               result->y = 0;
+               result->w = dst.w;
+               result->h = dst.h;
+       }
+       DEBUG_TRACE
+           ("************************************************************");
+       DEBUG_TRACE
+           ("source is %dx%d dest is %dx%d, result window size is %dx%d result offset x= %dx y=%d",
+            src.w, src.h, dst.w, dst.h, result->w, result->h, result->x,
+            result->y);
+       DEBUG_TRACE
+           ("************************************************************");
+}
+
+
+void cam_remove_tmp_file()
+{
+       const gchar *default_path = NULL;
+       char tmpfile_name[256] = { 0 };
+
+       default_path = cam_file_get_internal_video_path();
+       DEBUG_TRACE(" video = %s", default_path);
+       snprintf(tmpfile_name, sizeof(tmpfile_name), "%s%s", default_path,
+                TMPFILE_PREFIX);
+       if (g_file_test(tmpfile_name, G_FILE_TEST_EXISTS)) {
+               DEBUG_TRACE("REMOVE tmp file");
+               unlink(tmpfile_name);
+       }
+       default_path = cam_file_get_external_video_path();
+       DEBUG_TRACE(" video = %s", default_path);
+       snprintf(tmpfile_name, sizeof(tmpfile_name), "%s%s", default_path,
+                TMPFILE_PREFIX);
+
+       if (g_file_test(tmpfile_name, G_FILE_TEST_EXISTS)) {
+               DEBUG_TRACE("REMOVE tmp file");
+               unlink(tmpfile_name);
+       }
+
+}
+
+Eina_Bool cam_app_launch_after_preview_began(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       cam_debug(LOG_UI, "cam_app_launch_after_preview_began");
+
+       int state = cam_mm_get_state();
+
+       if (state != RECORDER_STATE_RECORDING) {
+               cam_debug(LOG_UI, "remove previous file");
+               cam_remove_tmp_file();
+       }
+
+       cam_app_get_preview_offset_coordinate(data);
+       cam_toolbar_setting_popup_create(data);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void cam_utils_remove_idler_all(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       GList *list = NULL;
+       Ecore_Idler *idler = NULL;
+
+       debug_fenter(LOG_UI);
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       /*LOCK
+          In fact, a Lock is needed here. However, because all related functions are working main loop, practically it may not be needed. */
+
+       if (!ad->capture_cb_list) {
+               cam_debug(LOG_UI, "No idler is remained.");
+       } else {
+               list = ad->capture_cb_list;
+
+               while (list) {
+                       idler = list->data;
+
+                       if (!idler) {
+                               cam_warning(LOG_UI,
+                                           "Fail to remove idler. The idler is NULL");
+                       } else {
+                               cam_debug(LOG_UI, "Remove idler[%p].", idler);
+                               ecore_idler_del(idler);
+
+                               ad->capture_cb_list =
+                                   g_list_remove(ad->capture_cb_list, idler);
+                       }
+
+                       list = g_list_next(list);
+               }
+
+               g_list_free(ad->capture_cb_list);
+               ad->capture_cb_list = NULL;
+       }
+
+       /* UNLOCK */
+       debug_fleave(LOG_UI);
+       return;
+}
+
+Eina_Bool cam_elm_cache_flush()
+{
+/*Make the canvas discard as much data as possible used by the engine at runtime.*/
+       DEBUG_TRACE("start");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       if (ad) {
+               if (ad->evas) {
+                       evas_render_idle_flush(ad->evas);
+               }
+       }
+       elm_cache_all_flush();
+       DEBUG_TRACE("end");
+       return EINA_TRUE;
+}
+
+gboolean cam_condition_check_to_start_camera(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EINA_FALSE, "appdata is NULL");
+
+       /* check battery */
+       if (cam_utils_check_battery_critical_low()) {
+               ad->battery_status = LOW_BATTERY_CRITICAL_STATUS;
+               cam_app_notice_popup(ad, dgettext("sys_string", "IDS_COM_BODY_LOW_BATTERY"), cam_app_timeout_notice_response_cb);
+               return FALSE;
+       } else if (cam_utils_check_battery_warning_low()) {
+               ad->battery_status = LOW_BATTERY_WARNING_STATUS;
+               cam_app_notice_popup((void *)ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"), cam_app_lowbattery_close_flash_cb);
+       } else {
+               ad->battery_status = NORMAL_BATTERY_STATUS;
+       }
+
+       if (cam_utils_check_call_running()) {
+               ad->is_calling = TRUE;
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"), cam_app_timeout_notice_response_cb);
+               return FALSE;
+       } else
+               ad->is_calling = FALSE;
+
+       return TRUE;
+}
+
+static Eina_Bool __cam_continuous_af_timer_cb(void *data)
+{
+       DEBUG_TRACE("");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       if (ad->continuous_af_timer)
+               ad->continuous_af_timer = NULL;
+
+       cam_reset_focus_mode(ad);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void cam_reset_focus_mode(void *data)
+{
+       DEBUG_TRACE("");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       if (ad->caf_button)
+               cam_toolbar_show_cafbutton(ad, FALSE);
+
+       cam_reset_focus_coordinate(ad);
+
+       camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+       camapp->focus_state = CAM_FOCUS_STATUS_RELEASED;
+
+       cam_app_focus_guide_create(ad);
+       cam_app_focus_guide_update(ad);
+
+       cam_continuous_af_start(ad);
+}
+
+static Eina_Bool __focus_guide_destroy(void *data)
+{
+       DEBUG_TRACE("");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       if (ad->continuous_af_timer)
+               ad->continuous_af_timer = NULL;
+       DEL_EVAS_OBJECT(ad->focus_edje);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+gboolean cam_set_default_capture_mode(void *data, CamCaptureMode type)
+{
+       DEBUG_TRACE("");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE
+               && camapp->shooting_mode == CAM_SINGLE_MODE
+               && camapp->burst_shot == TRUE) {
+
+               camapp->default_capture_mode = type;
+               if (camapp->default_capture_mode == CAM_CAPTURE_BURST)
+                       camapp->capture_cb = (camera_capturing_cb)cam_continuous_shot_capture_callback;
+               else
+                       camapp->capture_cb = (camera_capturing_cb)__cam_capture_cb;
+
+       } else
+               return FALSE;
+
+
+       return TRUE;
+}
+
+gint cam_app_get_max_image_size_by_ratio(void *data, int resolution)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       gint result = 0;
+       unsigned int capacity = 0;
+       gdouble ratio = (gdouble) CAM_RESOLUTION_W(resolution) / CAM_RESOLUTION_H(resolution);
+
+       GetCamDevCamResolutionCaps(&capacity, ad);
+
+       if (ratio == (gdouble)4.0/3.0) {
+               if (capacity & CAM_CP_SIZE_3264X2448)
+                       result = CAM_RESOLUTION_3264x2448;
+               else if (capacity & CAM_CP_SIZE_2048X1536)
+                       result = CAM_RESOLUTION_2048x1536;
+               else if (capacity & CAM_CP_SIZE_1280X960)
+                       result = CAM_RESOLUTION_1280x960;
+               else
+                       result = CAM_RESOLUTION_VGA;
+       } else if (ratio == (gdouble)16.0/9.0) {
+               if (capacity & CAM_CP_SIZE_3264X1836)
+                       result = CAM_RESOLUTION_3264x1836;
+               else if (capacity & CAM_CP_SIZE_2048X1152)
+                       result = CAM_RESOLUTION_2048x1152;
+               else if (capacity & CAM_CP_SIZE_1280X720)
+                       result = CAM_RESOLUTION_1280x720;
+               else
+                       result = CAM_RESOLUTION_VGA;
+       } else if (ratio == (gdouble)3.0/2.0) {
+               if (capacity & CAM_CP_SIZE_3264X2176)
+                       result = CAM_RESOLUTION_3264x2176;
+               else
+                       result = CAM_RESOLUTION_VGA;
+       } else {
+               result = CAM_RESOLUTION_VGA;
+       }
+
+       return result;
+}
+
+void cam_app_stop_capture(void* data)
+{
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is null");
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               if (camapp->shooting_mode == CAM_SINGLE_MODE) {
+                       if (camapp->continuous_shot_data && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING) {
+                               if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) && camapp->burst_shot == TRUE && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
+                                       DEBUG_TRACE("burst capture mode");
+                                       cam_mm_set_conti_shot_break(TRUE);
+                                       ad->emit_continuous_shutter = FALSE;
+                                       cam_app_destroy_progressbar(ad);
+                                       camapp->continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_STOPPED;
+                               }
+                       }
+               }
+       }
+}
+void cam_create_error_popup(void* data)
+{
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+
+       if( ad->error_type == CAM_ERROR_TYPE_UNABLE_TO_LAUNCH){
+               if (ad->fw_error_type == CAMERA_ERROR_SOUND_POLICY ||ad->fw_error_type == RECORDER_ERROR_SOUND_POLICY) {
+                       cam_app_notice_popup(data, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"), cam_app_timeout_notice_response_cb);
+               }else{
+                       cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+               }
+       }
+}
+
+static Eina_Bool __cam_app_display_error_popup_idler(void *data)
+{
+       debug_fenter(LOG_CAM);
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->battery_status == LOW_BATTERY_CRITICAL_STATUS){
+               cam_app_notice_popup(ad, dgettext("sys_string", "IDS_COM_BODY_LOW_BATTERY"), cam_app_timeout_notice_response_cb);
+       } else if (ad->is_calling == TRUE) {
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA_DURING_CALL"), cam_app_timeout_notice_response_cb);
+       } else if(ad->battery_status == LOW_BATTERY_WARNING_STATUS){
+               cam_app_notice_popup((void *)ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_USE_FLASH_BATTERY_LOW"), cam_app_lowbattery_close_flash_cb);
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+//end file
diff --git a/src/cam_config.c b/src/cam_config.c
new file mode 100755 (executable)
index 0000000..c929864
--- /dev/null
@@ -0,0 +1,361 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+/*
+#define DEBUG_CONFIG
+#include "cam.h"
+#include "cam_error.h"
+*/
+#include "cam_debug.h"
+#include "cam_config.h"
+static gchar **g_group_name = NULL;    /*  config information group name for save */
+static GKeyFile *g_key_file = NULL;
+static gboolean disable_set_mode = FALSE;      /* if disable_set_mode is true unable to set setmode use for scene mode and ncr case ... */
+gboolean cam_config_set_group_name(CamConfigType config_type,
+                                  const gchar *set_group_name)
+{
+       g_return_val_if_fail(set_group_name, FALSE);
+       g_return_val_if_fail(g_group_name, FALSE);/*fix crash*/
+       if (g_group_name[config_type]) {
+               g_free(g_group_name[config_type]);
+               g_group_name[config_type] = NULL;
+       }
+       g_group_name[config_type] = g_strdup(set_group_name);
+       return TRUE;
+}
+
+gboolean cam_config_init(GError **error)
+{
+       GError *err = NULL;
+       debug_fenter(LOG_CONFIG);
+       if (!g_group_name) {
+               g_group_name = g_new0(gchar *, CAM_CONFIG_MAX);
+               cam_config_set_group_name(CAM_CONFIG_TYPE_COMMON, "common");
+               cam_config_set_group_name(CAM_CONFIG_TYPE_SHORTCUTS, "shortcuts");
+       }
+       if (g_key_file) {
+               warn_msg(LOG_UI, "already initialized.");
+               return TRUE;
+       }
+       g_key_file = g_key_file_new();
+       if (!g_key_file_load_from_file
+           (g_key_file, CONFIG_PATH, G_KEY_FILE_NONE, &err)) {
+               if (err != NULL) {
+                       warn_msg(LOG_UI, "config file not exists. %s",
+                                err->message);
+                       g_error_free(err);
+                       err = NULL;
+               }
+       }
+       if (err != NULL) {
+               g_error_free(err);
+               err = NULL;
+       }
+       debug_fleave(LOG_UI);
+       return TRUE;
+}
+
+void cam_config_finalize(void)
+{
+       debug_fenter(LOG_UI);
+       cam_config_save();
+       if (g_group_name) {
+               int i;
+               for (i = 0; i < CAM_CONFIG_MAX; i++) {
+                       if (g_group_name[i]) {
+                               g_free(g_group_name[i]);
+                               g_group_name[i] = NULL;
+                       }
+               }
+               g_free(g_group_name);
+               g_group_name = NULL;
+       }
+       if (g_key_file) {
+               g_key_file_free(g_key_file);
+               g_key_file = NULL;
+       }
+       debug_fleave(LOG_UI);
+}
+
+void cam_config_save(void)
+{
+       debug_fenter(LOG_UI);
+       if (g_key_file != NULL) {
+               GError *err = NULL;
+               gchar *buf = NULL;
+               gsize len = 0;
+               buf = g_key_file_to_data(g_key_file, &len, &err);
+               if (buf) {
+                       if (err) {
+                               debug_msg(LOG_UI, "%s", err->message);
+                               g_error_free(err);
+                               err = NULL;
+                       } else {
+#if 1
+                               FILE *fp = fopen(CONFIG_PATH, "w");
+                               if (fp != NULL) {
+                                       if (fwrite
+                                           ((const void *)buf, len, 1,
+                                            fp) != 1) {
+                                            /**fwrite return count(unsigned int) if write correct.
+                                               the-return-value is always >=0*/
+                                               critical_msg(LOG_CONFIG,
+                                                            "fwrite failed");
+                                       } else {
+                                               cam_debug(LOG_CONFIG,
+                                                         "save success");
+                                       }
+                                       fclose(fp);
+                               } else {
+                                       critical_msg(LOG_CONFIG,
+                                                    "fopen failed");
+                               }
+
+#else
+                               g_file_set_contents(CONFIG_PATH,
+                                                   (const gchar *)buf, len,
+                                                   &err);
+                               if (err) {
+                                       critical_msg(LOG_CONFIG, "%s",
+                                                    err->message);
+                                       g_error_free(err);
+                                       err = NULL;
+                               }
+#endif
+                       }
+                       g_free(buf);
+               }
+               if (err != NULL) {
+                       g_error_free(err);
+                       err = NULL;
+               }
+       }
+}
+
+void cam_config_set_control(gboolean enable)
+{
+       cam_debug(LOG_UI, "%d ", enable);
+       disable_set_mode = !enable;
+}
+
+void cam_config_set_int(const gchar *key, int nval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               /* cam_warning(LOG_UI," disable_set_mode is true "); */
+               return;
+       }
+       cam_config_set_int_by_type(CAM_CONFIG_TYPE_PREVIEW, key, nval);
+       return;
+}
+
+void cam_config_set_string(const gchar *key, const gchar *strval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               cam_warning(LOG_UI, " disable_set_mode is true ");
+               return;
+       }
+       cam_config_set_string_by_type(CAM_CONFIG_TYPE_PREVIEW, key, strval);
+       return;
+}
+
+void cam_config_set_boolean(const gchar *key, gboolean bval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               cam_warning(LOG_UI, " disable_set_mode is true ");
+               return;
+       }
+#ifdef DEBUG_CONFIG
+       debug_msg(LOG_UI, "%s", bval ? "TRUE" : "FALSE");
+
+#endif                         /* \r */
+       cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_PREVIEW, key, bval);
+       return;
+}
+
+int cam_config_get_int(const gchar *key, int default_value)
+{
+       g_return_val_if_fail(g_key_file, -1);
+       g_return_val_if_fail(g_group_name, -1);
+       g_return_val_if_fail(key, -1);
+       return cam_config_get_int_by_type(CAM_CONFIG_TYPE_PREVIEW, key,
+                                         default_value);
+}
+
+gchar *cam_config_get_string(const gchar *key, const gchar *default_value)
+{
+       g_return_val_if_fail(g_key_file, NULL);
+       g_return_val_if_fail(g_group_name, NULL);
+       g_return_val_if_fail(key, NULL);
+       return cam_config_get_string_by_type(CAM_CONFIG_TYPE_PREVIEW, key,
+                                            default_value);
+}
+
+gboolean cam_config_get_boolean(const gchar *key, gboolean default_value)
+{
+       g_return_val_if_fail(g_key_file, FALSE);
+       g_return_val_if_fail(g_group_name, FALSE);
+       g_return_val_if_fail(key, FALSE);
+       return cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_PREVIEW, key,
+                                             default_value);
+}
+
+void cam_config_set_int_by_type(CamConfigType config_type, const gchar *key,
+                               int nval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(g_group_name[config_type]);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               /* cam_warning(LOG_UI," disable_set_mode is true "); */
+               return;
+       }
+#ifdef DEBUG_CONFIG
+       debug_msg(LOG_UI, "%s,%s,%d", g_group_name[config_type], key, nval);
+
+#endif                         /* \r */
+       g_key_file_set_integer(g_key_file, g_group_name[config_type], key,
+                              nval);
+}
+
+void cam_config_set_string_by_type(CamConfigType config_type, const gchar *key,
+                                  const gchar *strval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(g_group_name[config_type]);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               cam_warning(LOG_UI, " disable_set_mode is true ");
+               return;
+       }
+#ifdef DEBUG_CONFIG
+       debug_msg(LOG_UI, "%s", strval);
+
+#endif                         /* \r */
+       g_key_file_set_string(g_key_file, g_group_name[config_type], key,
+                             strval);
+}
+
+void cam_config_set_boolean_by_type(CamConfigType config_type, const gchar *key,
+                                   gboolean bval)
+{
+       g_return_if_fail(g_key_file);
+       g_return_if_fail(g_group_name);
+       g_return_if_fail(g_group_name[config_type]);
+       g_return_if_fail(key);
+       if (disable_set_mode) {
+               cam_warning(LOG_UI, " disable_set_mode is true ");
+               return;
+       }
+#ifdef DEBUG_CONFIG
+       debug_msg(LOG_UI, "%s", bval ? "TRUE" : "FALSE");
+
+#endif                         /* \r */
+       g_key_file_set_boolean(g_key_file, g_group_name[config_type], key,
+                              bval);
+}
+
+int cam_config_get_int_by_type(CamConfigType config_type, const gchar *key,
+                              int default_value)
+{
+       g_return_val_if_fail(g_key_file, -1);
+       g_return_val_if_fail(g_group_name, -1);
+       g_return_val_if_fail(g_group_name[config_type], -1);
+       g_return_val_if_fail(key, -1);
+       GError *error = NULL;
+       gint nval =
+           g_key_file_get_integer(g_key_file, g_group_name[config_type], key,
+                                  &error);
+       if (error) {
+
+/*
+               if (error->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
+                       critical_msg("error:%s", error->message);
+*/
+               cam_config_set_int_by_type(config_type, key, default_value);
+               g_error_free(error);
+               error = NULL;
+               DEBUG_TRACE("-------- key[%s], value[%d]", key, default_value);
+               return default_value;
+       } else {
+               DEBUG_TRACE("-------- key[%s], value[%d]", key, nval);
+               return nval;
+       }
+}
+
+gchar *cam_config_get_string_by_type(CamConfigType config_type,
+                                    const gchar *key,
+                                    const gchar *default_value)
+{
+       g_return_val_if_fail(g_key_file, NULL);
+       g_return_val_if_fail(g_group_name, NULL);
+       g_return_val_if_fail(g_group_name[config_type], NULL);
+       g_return_val_if_fail(key, NULL);
+       GError *error = NULL;
+       const gchar *strval =
+           g_key_file_get_string(g_key_file, g_group_name[config_type], key,
+                                 &error);
+       if (error) {
+               if (error->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
+                       critical_msg(LOG_CONFIG, "error:%s", error->message);
+               cam_config_set_string_by_type(config_type, key, default_value);
+               g_error_free(error);
+               error = NULL;
+               return default_value ? g_strdup(default_value) : NULL;
+       } else {
+               return strval ? g_strdup(strval) : NULL;
+       }
+}
+
+gboolean cam_config_get_boolean_by_type(CamConfigType config_type,
+                                       const gchar *key,
+                                       gboolean default_value)
+{
+       g_return_val_if_fail(g_key_file, FALSE);
+       g_return_val_if_fail(g_group_name, FALSE);
+       g_return_val_if_fail(g_group_name[config_type], FALSE);
+       g_return_val_if_fail(key, FALSE);
+       GError *error = NULL;
+       gboolean bval =
+           g_key_file_get_boolean(g_key_file, g_group_name[config_type], key,
+                                  &error);
+       if (error) {
+               if (error->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
+                       critical_msg(LOG_CONFIG, "error:%s", error->message);
+               cam_config_set_boolean_by_type(config_type, key, default_value);
+               g_error_free(error);
+               error = NULL;
+               return default_value;
+       } else {
+               return bval;
+       }
+}
diff --git a/src/cam_continuous_shot.c b/src/cam_continuous_shot.c
new file mode 100755 (executable)
index 0000000..9056983
--- /dev/null
@@ -0,0 +1,621 @@
+/*
+ * 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 "cam_continuous_shot.h"
+#include "cam_ta.h"
+#include "cam_error.h"
+#include "cam_mm.h"
+#include "cam_sound.h"
+#include "cam_file.h"
+#include "camera_utils.h"
+#include "cam_app.h"
+
+/*
+static Ecore_Timer *conti_update_progressbar_timer = NULL;
+*/
+static int pre_shot_num = 0;
+static pthread_t file_save_thread;
+static pthread_mutex_t file_save_mutex;
+static pthread_cond_t file_save_cond;
+static GQueue *file_save_queue;
+
+static gboolean __data_init(void *data);
+static Eina_Bool __update_pb_timer_cb(void *data);
+static void __set_error(CamContinuousShotData *continuous_shot_data,
+                                               int code, char *message);
+
+
+static gboolean __data_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gchar *temp_file_name1 = NULL, *filename = NULL;
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       camapp->continuous_shot_data = (CamContinuousShotData *)malloc(sizeof(CamContinuousShotData));
+       if (camapp->continuous_shot_data == NULL) {
+               cam_critical(LOG_SYS, "continuous_shot_data malloc failed.");
+               return FALSE;
+       }
+
+       camapp->continuous_shot_data->shot_num = 0;
+       camapp->continuous_shot_data->lock = FALSE;
+       camapp->continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_DEFAULT;
+       camapp->continuous_shot_data->error = NULL;
+
+       temp_file_name1 = cam_app_get_next_filename(CAM_FILE_EXTENTION_IMAGE);
+       if (temp_file_name1) {
+               filename = g_path_get_basename(temp_file_name1);
+               if (filename) {
+                       char* save_string = NULL;
+                       char* first_filename = strtok_r(filename, ".",&save_string);
+                       if (first_filename == NULL) {
+                               if (filename != NULL) {
+                                       free(filename);
+                                       filename = NULL;
+                                       save_string = NULL;
+                               }
+                               return FALSE;
+                       }
+                       camapp->continuous_shot_data->first_filename = strdup(first_filename);
+                       if (filename != NULL) {
+                               free(filename);
+                               filename = NULL;
+                               save_string = NULL;
+                       }
+               }
+               free(temp_file_name1);
+               temp_file_name1 = NULL;
+       }
+
+       return TRUE;
+}
+
+
+static Eina_Bool __update_pb_timer_cb(void *data)
+{
+       struct appdata *ad = data;
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+       char pb_text[10] = "";
+       double pb_value = 0.0;
+       camapp = ad->camapp_handle;
+       DEBUG_TRACE("camapp->continuous_shot_data->shot_num %d", camapp->continuous_shot_data->shot_num);
+       DEBUG_TRACE("pre_shot_num %d", pre_shot_num);
+       if (camapp->continuous_shot_data->shot_num > pre_shot_num) {
+               pb_value =
+                   (double)camapp->continuous_shot_data->shot_num /
+                   (double)MAX_CONTINUOUS_SHOT;
+               cam_app_set_progressbar_value(ad, pb_value);
+
+               snprintf(pb_text, sizeof(pb_text), "%d/%d",
+                        camapp->continuous_shot_data->shot_num,
+                        MAX_CONTINUOUS_SHOT);
+               cam_app_set_progressbar_text(ad, pb_text);
+
+               pre_shot_num = camapp->continuous_shot_data->shot_num;
+       }
+
+       return 1;
+}
+
+void cam_continuous_shot_update_progress_value(void *data)
+{
+       struct appdata *ad = data;
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+       cam_ret_if(camapp->continuous_shot_data == NULL);
+
+       char pb_text[10] = "";
+       double pb_value = 0.0;
+       camapp = ad->camapp_handle;
+       DEBUG_TRACE("camapp->continuous_shot_data->shot_num %d", camapp->continuous_shot_data->shot_num);
+       DEBUG_TRACE("pre_shot_num %d", pre_shot_num);
+       DEBUG_TRACE("ad->progressbar %p", ad->progressbar);
+       if (camapp->continuous_shot_data->shot_num > pre_shot_num) {
+               pb_value = (double)camapp->continuous_shot_data->shot_num / (double)MAX_CONTINUOUS_SHOT;
+               cam_app_set_progressbar_value(ad, pb_value);
+               snprintf(pb_text, sizeof(pb_text), "%d/%d", camapp->continuous_shot_data->shot_num, MAX_CONTINUOUS_SHOT);
+               cam_app_set_progressbar_text(ad, pb_text);
+               pre_shot_num = camapp->continuous_shot_data->shot_num;
+       }
+
+}
+
+static void __set_error(CamContinuousShotData *continuous_shot_data, int code, char *message)
+{
+       cam_debug(LOG_SYS, " start");
+
+       if (continuous_shot_data == NULL)
+               return;
+
+       if (continuous_shot_data->error == NULL) {
+               if (cam_utils_check_mmc_status() == VCONFKEY_SYSMAN_MMC_REMOVED) {
+                       continuous_shot_data->error =
+                           cam_error_new_literal(CAM_CONTI_SHOT_ERROR_MMC_REMOVED,
+                                         dgettext(PACKAGE, "IDS_CAM_POP_MEMORY_CARD_REMOVED"));
+               } else {
+                       if (message)
+                               continuous_shot_data->error = cam_error_new_literal(code, message);
+               }
+       }
+
+       continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_STOPPING;
+       cam_mm_set_conti_shot_break(TRUE);
+
+       if (continuous_shot_data->error && continuous_shot_data->error->message)
+               cam_critical(LOG_SYS, " Done: Continuous shot failed [%s]", continuous_shot_data->error->message);
+}
+
+
+void cam_continuous_shot_data_free(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_debug(LOG_FILE, "");
+
+       if (camapp->continuous_shot_data) {
+               int i = 0;
+               for (i = 0; i < camapp->continuous_shot_data->shot_num; i++) {
+                       if (camapp->continuous_shot_data->file_path[i]) {
+                               free(camapp->continuous_shot_data->file_path[i]);
+                               camapp->continuous_shot_data->file_path[i] = NULL;
+                       }
+               }
+
+               if(camapp->continuous_shot_data->first_filename){
+                       free(camapp->continuous_shot_data->first_filename);
+                       camapp->continuous_shot_data->first_filename = NULL;
+               }
+
+               if (camapp->continuous_shot_data->error) {
+                       g_error_free(camapp->continuous_shot_data->error);
+                       camapp->continuous_shot_data->error = NULL;
+               }
+
+               free(camapp->continuous_shot_data);
+               camapp->continuous_shot_data = NULL;
+
+               cam_debug(LOG_UI, "remove continuous_shot_data");
+       }
+
+       cam_debug(LOG_FILE, " done.");
+
+       return;
+}
+
+void cam_continuous_shot_capture_start(void *data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+
+       cam_continuous_shot_data_free(ad);
+       __data_init(ad);
+
+       DEL_EVAS_OBJECT(ad->progressbar_edje);
+       elm_object_part_content_unset(ad->ug_base, "progressbar_layout");
+
+       cam_app_create_progressbar(ad);
+       ad->progressbar_edje = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, "progressbar");
+
+       cam_retm_if(ad->progressbar_edje == NULL,"ad->progressbar_edje is NULL");
+       elm_object_part_content_set(ad->progressbar_edje, "progressbar", ad->progressbar);
+       elm_object_part_content_set(ad->ug_base, "progressbar_layout", ad->progressbar_edje);
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progressbar_edje), "progressbar,default", "prog");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progressbar_edje), "progressbar,vertical", "prog");
+               break;
+       default:
+               DEBUG_TRACE("wow, reached un-able reached codes");
+       }
+
+       pre_shot_num = 0;
+
+       cam_set_orient_value(ad);
+
+       int remain = 0;
+       int max_count = 0;
+       remain = cam_system_get_still_count_by_resolution(ad);
+
+       if(remain <= MAX_CONTINUOUS_SHOT)
+               max_count = remain;
+       else
+               max_count = MAX_CONTINUOUS_SHOT;
+
+       if(max_count > 1) {
+               camapp->continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_CAPTURING;
+               cam_toolbar_update(ad);
+               cam_mm_continuous_capture_start(max_count, CONTINUOUS_SHOT_INTERVAL, (camera_capturing_cb)cam_continuous_shot_capture_callback, camapp->capture_completed_cb, (void*)ad);
+       } else {
+               cam_mm_capture_start(camapp->capture_cb, camapp->capture_completed_cb, (void*)ad);
+       }
+}
+
+void *cam_continuous_shot_file_save_thread_run(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, NULL, "camapp_handle is NULL");
+
+       gboolean Exit_loop = FALSE;
+
+       cam_debug(LOG_FILE, "");
+
+       pthread_mutex_lock(&file_save_mutex);
+
+       while (!Exit_loop) {
+               cam_debug(LOG_FILE, " wait signal...");
+
+               pthread_cond_wait(&file_save_cond, &file_save_mutex);
+
+               cam_debug(LOG_FILE, " signal received");
+
+               while (!g_queue_is_empty(file_save_queue)) {
+                       File_Save_Info *file_info = NULL;
+                       /*TODO: consider sync*/
+                       file_info = g_queue_pop_head(file_save_queue);
+
+                       if ((file_info == NULL) || (file_info->cmd == NULL)) {
+                               __set_error(camapp->continuous_shot_data, CAM_CONTI_SHOT_ERROR_FILE_WRITE, _("File Info Error"));
+                               pthread_mutex_unlock(&file_save_mutex);
+                               return NULL;
+                       }
+
+                       DEBUG_TRACE("%p", file_info);
+            DEBUG_TRACE("file_info->cmd %s", file_info->cmd);
+                       DEBUG_TRACE("file_info->filename %s", file_info->filename);
+
+                       if (strcmp(SAVE_THREAD_EXIT, file_info->cmd) == 0) {
+                               if (file_info->buffer != NULL) {
+                                       free(file_info->buffer);
+                                       file_info->buffer = NULL;
+                               }
+                               if (file_info->filename != NULL) {
+                                       free(file_info->filename);
+                                       file_info->filename = NULL;
+                               }
+                               if (file_info->cmd == NULL) {
+                                       free(file_info->cmd);
+                                       file_info->cmd = NULL;
+                               }
+                               free(file_info);
+                               file_info = NULL;
+                               Exit_loop = TRUE;
+                               break;
+                       }
+
+                       if (strcmp(SAVE_THREAD_FINISH, file_info->cmd) == 0) {
+                               sync();
+                               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_BEST_SHOT_IMAGE_HANDLE);
+               } else {
+                       if (file_info->filename == NULL) {
+                                       __set_error(camapp->continuous_shot_data, CAM_CONTI_SHOT_ERROR_FILE_WRITE, _("File Name Error"));
+                                       pthread_mutex_unlock(&file_save_mutex);
+                                       return NULL;
+                       }
+
+                               /*note: write file*/
+                               FILE *fd = fopen(file_info->filename, "w+");
+                               if (fd == NULL) {
+                                       __set_error(camapp->continuous_shot_data, CAM_CONTI_SHOT_ERROR_FILE_WRITE, _("File Open Fail"));
+                                       pthread_mutex_unlock(&file_save_mutex);
+                                       return NULL;
+                               } else {
+                                       int ret = fwrite(file_info->buffer, file_info->buf_size, 1, fd);
+                    fclose(fd);
+
+                                       fd = NULL;
+                                       if (ret != 1) {
+                                               __set_error(camapp->continuous_shot_data, CAM_CONTI_SHOT_ERROR_FILE_WRITE, _("File Write Fail"));
+                                               pthread_mutex_unlock(&file_save_mutex);
+                                               return NULL;
+                                       }
+                               }
+
+                   /*note: reg to media info*/
+                       __cam_single_shot_reg_file(file_info->filename);
+
+                               cam_debug(LOG_FILE, " register done.");
+
+                               if (file_info->buffer != NULL) {
+                                       free(file_info->buffer);
+                                       file_info->buffer = NULL;
+                               }
+
+                               if (file_info->filename != NULL) {
+                                       free(file_info->filename);
+                                       file_info->filename = NULL;
+                               }
+
+                               if (file_info->cmd == NULL) {
+                                       free(file_info->cmd);
+                                       file_info->cmd = NULL;
+                               }
+
+                               free(file_info);
+                               file_info = NULL;
+                               cam_debug(LOG_FILE, " save file done.");
+                       }
+               }
+       }
+
+       pthread_mutex_unlock(&file_save_mutex);
+
+       pthread_mutex_destroy(&file_save_mutex);
+       pthread_cond_destroy(&file_save_cond);
+
+       cam_debug(LOG_SYS, " thread exit...");
+
+       return NULL;
+}
+
+void cam_continuous_shot_file_save_thread_exit(void *data)
+{
+       if (file_save_queue != NULL) {
+               File_Save_Info *file_info = calloc(1, sizeof(File_Save_Info));
+
+               if (file_info == NULL)
+                       return;
+
+               file_info->buffer = NULL;
+               file_info->buf_size = 0;
+               file_info->filename = NULL;
+               file_info->cmd = strdup(SAVE_THREAD_EXIT);
+               g_queue_push_tail(file_save_queue, file_info);
+               pthread_cond_signal(&file_save_cond);
+       }
+       return;
+}
+
+gboolean cam_continuous_shot_create_file_save_thread(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       int err = 0;
+       cam_debug(LOG_SYS, "");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       err = pthread_mutex_init(&file_save_mutex, NULL);
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register mutex failed");
+               return FALSE;
+       }
+
+       err = pthread_cond_init(&file_save_cond, NULL);
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register cond failed");
+               return FALSE;
+       }
+
+       file_save_queue = g_queue_new();
+       if (file_save_queue == NULL) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register queue failed");
+               return FALSE;
+       }
+
+       err = pthread_create(&file_save_thread, NULL, cam_continuous_shot_file_save_thread_run, (void *)ad);
+       if (err != 0) {
+               cam_critical(LOG_CAM,
+                            "Create Camera file register thread failed");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void cam_continuous_shot_finish_save_image()
+{
+       File_Save_Info *file_info = calloc(1, sizeof(File_Save_Info));
+
+       if (file_info == NULL)
+               return;
+
+       file_info->buffer = NULL;
+       file_info->buf_size = 0;
+       file_info->filename = NULL;
+       file_info->cmd = strdup(SAVE_THREAD_FINISH);
+
+       DEBUG_TRACE("file_info->cmd %s", file_info->cmd);
+       g_queue_push_tail(file_save_queue, file_info);
+       pthread_cond_signal(&file_save_cond);
+}
+
+void cam_continuous_shot_capture_callback(camera_image_data_s* image,
+                                                               camera_image_data_s* postview,
+                                                               camera_image_data_s* thumbnail,
+                                                               void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       cam_debug(LOG_MM, "");
+
+       if (ad->ug_state == CAM_UG_TERMINATE_STATE
+               || ad->ug_state == CAM_UG_PAUSE_STATE) {/*NOTE: in pause state, and terminate state, not cb*/
+               return;
+       }
+
+       gchar *filename = NULL;
+
+       if (image == NULL) {
+               if (camapp->filename)
+                       free(camapp->filename);
+               camapp->filename = NULL;
+               DEBUG_TRACE(" ERROR - capture data is NULL");
+               cam_mm_set_conti_shot_break(TRUE);
+               return;
+       }
+       if (image->data == NULL) {
+               if (camapp->filename)
+                       free(camapp->filename);
+               camapp->filename = NULL;
+               DEBUG_TRACE(" ERROR - capture data is NULL");
+               cam_mm_set_conti_shot_break(TRUE);
+               return;
+       }
+
+
+       if (camapp->continuous_shot_data == NULL) {
+               cam_critical(LOG_SYS, " continuous_shot_data is NULL");
+               CAM_TA_ACUM_ITEM_END(" cam_continuous_shot_capture_callback", 0);
+               cam_mm_set_conti_shot_break(TRUE);
+               return;
+       }
+
+       if (camapp->continuous_shot_data->lock == TRUE) {
+               cam_debug(LOG_MM, " Skip this data... because capture was stopped.");
+               CAM_TA_ACUM_ITEM_END(" cam_continuous_shot_capture_callback", 0);
+               cam_mm_set_conti_shot_break(TRUE);
+               return;
+       }
+
+       camapp->continuous_shot_data->lock = TRUE;
+
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       __cam_ta__(" cam_sound_play", cam_sound_play(camapp->shutter_sound, ad););
+#endif
+       filename = cam_file_get_next_filename_for_multishot(cam_app_get_target_path(),
+                                                               (const gchar *)camapp->continuous_shot_data->first_filename,
+                                                               (const gint) camapp->continuous_shot_data->shot_num,
+                                                               (const gchar *)".jpg");
+
+       CAM_TA_ACUM_ITEM_BEGIN("                File open+write", 0);
+
+       if (filename == NULL) {
+               DEBUG_TRACE("");
+               return;
+       }
+
+       if (image->format == CAMERA_PIXEL_FORMAT_JPEG) {
+               /*TODO: use thread to save file*/
+               void *image_buffer = calloc(1, image->size);
+               if (image_buffer == NULL)
+                       return;
+
+               memcpy(image_buffer, image->data, image->size);
+               File_Save_Info *file_info = calloc(1, sizeof(File_Save_Info));
+
+               if (file_info == NULL) {
+                       if (image_buffer)
+                               free(image_buffer);
+                       return;
+               }
+
+               file_info->buffer = image_buffer;
+               file_info->buf_size = image->size;
+               file_info->filename = strdup(filename);
+               file_info->cmd = strdup("run_thread");
+
+        DEBUG_TRACE("file_info->cmd %s", file_info->cmd);
+               g_queue_push_tail(file_save_queue, file_info);
+               pthread_cond_signal(&file_save_cond);
+
+               {/*TODO: consider  synchro issue in future*/
+                       if (camapp->continuous_shot_data) {
+                               camapp->continuous_shot_data->file_path[camapp->continuous_shot_data->shot_num] = filename;
+                               camapp->continuous_shot_data->shot_num++;
+                               cam_debug(LOG_MM, " Continuous shot captured [%s] count [%d]", filename, camapp->continuous_shot_data->shot_num);
+                       } else {
+                               cam_debug(LOG_MM, " continuous_shot_data is null");
+                               return;
+                       }
+               }
+       }
+
+       CAM_TA_ACUM_ITEM_END("            File open+write", 0);
+
+       if (camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_STOPPING
+               && camapp->continuous_shot_data->shot_num == 1) {
+               cam_mm_set_conti_shot_break(TRUE);
+       }
+
+       camapp->continuous_shot_data->lock = FALSE;
+
+       cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_BURST_SHOT_UPDATE_PROGRESS);
+
+       if (ad->stop_continuous_shot == TRUE
+               || (camapp->continuous_shot_data && camapp->continuous_shot_data->shot_num == MAX_CONTINUOUS_SHOT)) {
+
+               camapp->continuous_shot_data->capture_status = CAM_CONTI_SHOT_STATUS_STOPPING;
+               cam_debug(LOG_UI, " Captured count [%d]", camapp->continuous_shot_data->shot_num);
+
+               if (ad->stop_continuous_shot)
+                       cam_mm_set_conti_shot_break(TRUE);
+
+               ad->stop_continuous_shot =FALSE;
+       }
+
+       return;
+
+}
+
+gboolean cam_continuous_shot_reg_file(int shot_num, char *file_path[])
+{
+       int i = 0;
+       GError *error = NULL;
+
+       cam_debug(LOG_FILE, "");
+
+       for (i = 0; i < shot_num; i++) {
+               if (file_path[i]) {
+                       cam_debug(LOG_FILE, "register file : %s", file_path[i]);
+
+                       if (!cam_file_register(file_path[i], &error)) {
+                               cam_critical(LOG_FILE,
+                                            "cam_file_register fail");
+                               if (error != NULL) {
+                                       cam_critical(LOG_FILE,
+                                                    "cam_file_register error [%s]",
+                                                    error->message);
+                                       g_error_free(error);
+                                       error = NULL;
+                               }
+                       }
+               }
+       }
+
+       cam_debug(LOG_SYS, " file register done.");
+
+       return TRUE;
+}
+
diff --git a/src/cam_debug.c b/src/cam_debug.c
new file mode 100755 (executable)
index 0000000..6ec53fa
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * 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 "cam_debug.h"
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+/* #include <debug-message.h> */
+
+#define LOG_LEVEL_FLAGS        (G_LOG_LEVEL_INFO | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_DEBUG | \
+                                               G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | \
+                                               G_LOG_LEVEL_ERROR | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION)
+
+#define LOG_FILTER_CRITICAL            G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_ERROR
+#define LOG_FILTER_WARNING             LOG_FILTER_CRITICAL | G_LOG_LEVEL_WARNING
+#define LOG_FILTER_MESSAGE             LOG_FILTER_WARNING | G_LOG_LEVEL_MESSAGE
+#define LOG_FILTER_INFO                        LOG_FILTER_MESSAGE | G_LOG_LEVEL_INFO
+#define LOG_FILTER_DEBUG               LOG_FILTER_INFO | G_LOG_LEVEL_DEBUG
+#define LOG_FILTER_ALL                 LOG_FILTER_DEBUG
+
+#define BG_BLACK       40
+#define FG_RED         31
+#define FG_GREEN       32
+#define FG_YELLOW      33
+#define FG_PUPPLE      35
+#define FG_CYAN                36
+#define FG_BLUE                34
+
+#define __cam_print_debug(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm[DEBUG.%s] %s", BG_BLACK, FG_GREEN, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#define __cam_print_info(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm[INFO.%s] %s", BG_BLACK, FG_PUPPLE, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#define __cam_print_msg(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm[MESSAGE.%s] %s", BG_BLACK, FG_CYAN, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#define __cam_print_warning(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm[WARNING.%s] %s", BG_BLACK, FG_YELLOW, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#define __cam_print_critical(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm[CRITICAL.%s] %s", BG_BLACK, FG_RED, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#define __cam_print_error(domain, msg) \
+do { \
+       printf("\x1b[%dm\x1b[%dm**ERROR.%s: %s", BG_BLACK, FG_RED, domain, msg); \
+       printf("\x1b[0m\n"); \
+} while (0)
+
+#ifdef ENABLE_TIME_MEASURE
+
+static GTimer *g_timer = NULL;
+static gdouble previous_elapsed = 0;
+
+static GTimer *g_measure_timer = NULL;
+static gdouble previous_time[MEASURE_TYPE_MAX] = { 0 };
+
+static char debug_type[MEASURE_TYPE_MAX][200] = {
+       "NORMAL_MEASURE_TYPE",
+       "APP_LAUNCHING_TYPE",
+       "CAPTURE_MEASURE_TIME",
+       "REGISTER_FILE_MEASURE_TIME",
+       "REC_START_MEASURE_TIME",
+       "REC_COMMIT_MEASURE_TIME",
+       "REVIEW_MEASURE_TIME",
+       "AUTO_FOCUSE_TIME",
+};
+
+#ifdef MEMCHECK
+
+gboolean memcheck = false;
+
+EXPORT_API void debug_start_memcheck()
+{
+       if (!memcheck) {
+               mwInit();
+               memcheck = true;
+       }
+}
+
+EXPORT_API void debug_stop_memcheck()
+{
+       if (memcheck) {
+               mwFlushNow();
+               mwTerm();
+       }
+}
+#endif
+
+void debug_measure_init()
+{
+       g_measure_timer = g_timer_new();
+
+       int type = 0;
+
+       for (type = 0; type < MEASURE_TYPE_MAX; type++) {
+               previous_time[type] = 0;
+       }
+
+       return;
+}
+
+void debug_measure_close()
+{
+       if (g_measure_timer) {
+               g_timer_destroy(g_measure_timer);
+               g_measure_timer = NULL;
+       }
+
+       int type = 0;
+
+       for (type = 0; type < MEASURE_TYPE_MAX; type++) {
+               previous_time[type] = 0;
+       }
+
+       return;
+}
+
+void debug_measure_start(cam_time_meature_type meature_type,
+                        const gchar *format, ...)
+{
+       char buf[512] = { '\0', };
+       va_list ap;
+       va_start(ap, format);
+       vsnprintf(buf, sizeof(buf), format, ap);
+       va_end(ap);
+
+       bool request_reset = true;
+       int type = 0;
+/*
+       if(meature_type ==APP_LAUNCHING_TYPE)
+       {
+               if(g_measure_timer == NULL)
+               {
+                       debug_measure_init();
+                       previous_time[meature_type] = g_timer_elapsed(g_measure_timer, NULL);
+               }
+       }
+*/
+       if (g_measure_timer == NULL)
+               debug_measure_init();
+
+       for (type = 0; type < MEASURE_TYPE_MAX; type++) {
+               if (previous_time[type] != 0)
+                       request_reset = false;
+       }
+
+       if (request_reset)
+               g_timer_reset(g_measure_timer);
+
+       previous_time[meature_type] = g_timer_elapsed(g_measure_timer, NULL);
+
+       /* cam_debug_time(LOG_TIME, "START %s : %s",debug_type[meature_type] , buf); */
+}
+
+void debug_measure_stop(cam_time_meature_type meature_type,
+                       const gchar *format, ...)
+{
+       char buf[512] = { '\0', };
+       va_list ap;
+       va_start(ap, format);
+       vsnprintf(buf, sizeof(buf), format, ap);
+       va_end(ap);
+
+       gdouble current_elapsed = g_timer_elapsed(g_measure_timer, NULL);
+       gdouble meature_time = 0.0;
+
+       meature_time = (current_elapsed - previous_time[meature_type]);
+
+       cam_debug_time(LOG_TIME, "%s measure time = %.02f (sec) function %s\n",
+                      debug_type[meature_type], (gfloat) (meature_time), buf);
+
+       previous_time[meature_type] = 0;
+}
+
+void debug_time_measure_log(const gchar *format, ...)
+{
+/*
+       g_return_if_fail(g_timer);
+       gdouble elapsed = g_timer_elapsed(g_timer, NULL);
+
+       char buf[512] = {'\0',};
+       va_list ap;
+       va_start(ap, format);
+       vsnprintf(buf, sizeof(buf), format, ap);
+       va_end(ap);
+
+       // cam_debug_time(LOG_TIME, "%s, measure_time = %.02f (ms)", buf, (gfloat)(elapsed - previous_elapsed));
+
+       previous_elapsed = elapsed;
+*/
+
+}
+
+void debug_time_measure_start(const gchar *format, ...)
+{
+       char buf[512] = { '\0', };
+       va_list ap;
+       va_start(ap, format);
+       vsnprintf(buf, sizeof(buf), format, ap);
+       va_end(ap);
+
+       if (g_timer == NULL) {
+               g_timer = g_timer_new();
+       } else {
+               g_timer_start(g_timer);
+       }
+
+       previous_elapsed = g_timer_elapsed(g_timer, NULL);
+
+       /*
+          cam_debug_time(LOG_TIME, "\nNEW MEASUREMENT: %s", buf);
+          cam_debug_time(LOG_TIME, "UNIT NAME, TOTAL ELAPSED, ELAPSED");
+        */
+}
+
+void debug_time_measure_stop(void)
+{
+       if (g_timer) {
+               g_timer_destroy(g_timer);
+               g_timer = NULL;
+       }
+}
+#endif                         /*ENABLE_TIME_MEASURE */
+
+#ifdef DEBUG_MESSAGE_ON
+#ifndef USE_DLOG_MESSAGE
+void
+cam_log_func(const gchar *_domain, GLogLevelFlags log_level,
+            const char *file_name, const char *func, int line_number,
+            const char *format, ...)
+{
+
+       va_list args;
+       char msg_buf[1024] = "\0", message[2048] = "\0";
+       char *p = NULL;
+       GET_FILE_NAME(p, (char *)file_name);
+
+       va_start(args, format);
+       vsnprintf(msg_buf, sizeof(msg_buf), format, args);
+
+       snprintf(message, sizeof(message), "[%s:%s:#%d]%s", p, func,
+                line_number, msg_buf);
+       va_end(args);
+
+       if (log_level & G_LOG_LEVEL_DEBUG) {
+               __cam_print_debug(_domain, message);
+       } else if (log_level & G_LOG_LEVEL_INFO) {
+               __cam_print_info(_domain, message);
+       } else if (log_level & G_LOG_LEVEL_MESSAGE) {
+               __cam_print_msg(_domain, message);
+       } else if (log_level & G_LOG_LEVEL_WARNING) {
+               __cam_print_warning(_domain, message);
+       } else if (log_level & G_LOG_LEVEL_CRITICAL) {
+               __cam_print_critical(_domain, message);
+       } else if (log_level & G_LOG_LEVEL_ERROR) {
+               __cam_print_error(_domain, message);
+       }
+
+}
+#endif
+#endif
diff --git a/src/cam_device_capacity.cpp b/src/cam_device_capacity.cpp
new file mode 100755 (executable)
index 0000000..6bbced2
--- /dev/null
@@ -0,0 +1,108 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include "CamDeviceCapacity.h"\r
+\r
+extern "C" {\r
+\r
+void   ResetCaps()\r
+{\r
+       CCamDeviceCapacity::GetInstance()->ResetCaps();\r
+}\r
+\r
+\r
+void GetCamDevFuncCaps(unsigned int *eType, void *user_data)\r
+{\r
+       CCamDeviceCapacity::GetInstance()->GetCamDevFuncCaps(eType, user_data);\r
+}\r
+\r
+bool GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevCamResolutionCaps(uCapacity, user_data);\r
+}\r
+\r
+ bool GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevRecResolutionCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevFocusCaps(uCapacity, user_data);\r
+}\r
+\r
+ bool GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevEffectCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevWBCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevWBCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevSceneModeCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevMeteringCaps(uCapacity, user_data);\r
+}\r
+\r
+ bool GetCamDevISOCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevISOCaps(uCapacity, user_data);\r
+}\r
+\r
+ bool GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevFlashCaps(uCapacity, user_data);\r
+}\r
+\r
+ bool GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevFpsCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevShotModeCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevRecModeCaps(uCapacity, user_data);\r
+}\r
+\r
+bool GetCamDevZoomCaps(int *min, int *max)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevZoomCaps(min, max);\r
+}\r
+\r
+ bool GetCamDevEvCaps(int *min, int *max)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevEvCaps(min, max);\r
+}\r
+\r
+bool GetCamDevBrCaps(int *min, int *max)\r
+{\r
+       return CCamDeviceCapacity::GetInstance()->GetCamDevBrCaps(min, max);\r
+}\r
+\r
+}\r
+\r
diff --git a/src/cam_exif_info.c b/src/cam_exif_info.c
new file mode 100755 (executable)
index 0000000..ebad409
--- /dev/null
@@ -0,0 +1,264 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_debug.h"\r
+#include "cam_exif_info.h"\r
+#include <libexif/exif-loader.h>\r
+#include <string.h>\r
+\r
+\r
+\r
+//#include <libexif/exif-data.h>\r
+\r
+static void _set_uint16 (int is_motorola, void * out, unsigned short in)\r
+{\r
+       if (is_motorola) {\r
+               ((unsigned char *)out)[0] = in & 0x00ff;\r
+               ((unsigned char *)out)[1] = in >> 8;\r
+       } else {\r
+               ((unsigned char *)out)[0] = in >> 8;\r
+               ((unsigned char *)out)[1] = in & 0x00ff;\r
+       }\r
+}\r
+\r
+\r
+ExifData* cam_exif_get_exif_from_data(unsigned char *data, unsigned int data_size)\r
+{\r
+       ExifData *exif = NULL;\r
+       ExifLoader *loader = NULL;\r
+       unsigned char size[2];\r
+       unsigned int i;\r
+\r
+       loader = exif_loader_new();\r
+\r
+       if (loader != NULL) {\r
+               size[0] = (unsigned char) (data_size);\r
+               size[1] = (unsigned char) (data_size >> 8);\r
+               exif_loader_write (loader, size, 2);\r
+\r
+               for (i = 0; i < data_size && exif_loader_write (loader, data + i, 1); i++);\r
+\r
+               exif = exif_loader_get_data (loader);\r
+               if (exif == NULL)\r
+                       cam_critical(LOG_CAM, "exif_loader_get_data() fail");\r
+\r
+               exif_loader_unref (loader);\r
+\r
+       } else\r
+               cam_critical(LOG_CAM, "exif_loader_new() fail");\r
+\r
+       return exif;\r
+}\r
+\r
+gboolean cam_exif_set_entry(ExifData *in_exif, ExifIfd ifd, ExifTag tag, ExifFormat format, unsigned long components, unsigned char *data)\r
+{\r
+       ExifData *exif = (ExifData *)in_exif;\r
+       ExifEntry *entry = NULL;\r
+
+       if (in_exif == NULL || format <= 0 || components <= 0 || data == NULL) {\r
+               cam_critical(LOG_CAM, "invalid input!! (exif:%p format:%d component=%lu data:%p)", in_exif, format, components, data);\r
+               return FALSE;\r
+       }\r
+
+       exif_content_remove_entry(exif->ifd[ifd], exif_content_get_entry(exif->ifd[ifd], tag));\r
+
+       entry = exif_entry_new();\r
+       if (entry == NULL) {\r
+               cam_critical(LOG_CAM, "exif_entry_new() return NULL");\r
+               return FALSE;\r
+       }\r
+
+       exif_entry_initialize(entry, tag);\r
+
+       entry->tag = tag;\r
+       entry->format = format;\r
+       entry->components = components;\r
+
+       if (entry->size == 0) {\r
+               entry->data = NULL;\r
+               entry->data = malloc(exif_format_get_size(format) * entry->components);\r
+               if (!entry->data) {\r
+                       exif_entry_unref(entry);\r
+                       cam_critical(LOG_CAM, "entry->data malloc fail");\r
+                       return FALSE;\r
+               }
+
+               if (format == EXIF_FORMAT_ASCII) {
+                       memset(entry->data, '\0', exif_format_get_size(format) * entry->components);\r
+               }
+       }
+
+       entry->size = exif_format_get_size(format) * entry->components;\r
+       memcpy(entry->data,data,entry->size);\r
+       exif_content_add_entry(exif->ifd[ifd], entry);\r
+       exif_entry_unref(entry);\r
+
+       return TRUE;\r
+\r
+\r
+}\r
+\r
+gboolean cam_exif_get_data_from_exif(unsigned char *out_data, unsigned int out_size, ExifData *in_exif)\r
+{\r
+       unsigned char *exif_raw = NULL;\r
+       unsigned int size = 0;\r
+\r
+       if (in_exif == NULL) {\r
+               cam_critical(LOG_CAM, "in_exif is NULL");\r
+               return FALSE;\r
+       }\r
+\r
+       cam_debug(LOG_CAM, "exif->ifd:%p", in_exif->ifd);\r
+\r
+       exif_data_save_data(in_exif, &exif_raw, &size);\r
+\r
+       if (exif_raw == NULL) {\r
+               cam_critical(LOG_CAM, "exif_data_save_data() is fail");\r
+               return FALSE;\r
+       }\r
+\r
+       if (out_data) {\r
+               free (out_data);\r
+               out_data = NULL;\r
+               out_size = 0;\r
+       }\r
+\r
+       out_data = exif_raw;\r
+       out_size = size;\r
+\r
+       return TRUE;\r
+\r
+}\r
+\r
+gboolean cam_exif_change_thumb_info(unsigned char *exif_raw, unsigned int exif_raw_size, unsigned char *thumb_data\r
+                                                                                       , int thumb_w, int thumb_h, unsigned int thumb_size)\r
+{\r
+       ExifData *exif = NULL;\r
+       static ExifLong elong[10];\r
+\r
+       unsigned char *p_compressed = NULL;\r
+       int cntl = 0;\r
+\r
+       exif = cam_exif_get_exif_from_data(exif_raw, exif_raw_size);\r
+       exif->data = thumb_data;\r
+       exif->size = thumb_size;\r
+\r
+       // set thumbnail data\r
+       p_compressed = malloc(sizeof(ExifShort));\r
+       if (p_compressed != NULL) {\r
+               exif_set_short(p_compressed, exif_data_get_byte_order(exif), 6);\r
+\r
+               if (!cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_COMPRESSION, EXIF_FORMAT_SHORT, 1, p_compressed)) {\r
+                       cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_COMPRESSION) fail");\r
+                       goto exit;\r
+               }\r
+       } else {\r
+               cam_critical(LOG_CAM, "p_compressed is NULL");\r
+               goto exit;\r
+       }\r
+\r
+       // set thumbnail size\r
+       exif_set_long ((unsigned char *)&elong[cntl], exif_data_get_byte_order(exif), thumb_w);\r
+       if( !cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_IMAGE_WIDTH, EXIF_FORMAT_LONG, 1, (unsigned char*)&elong[cntl++])) {\r
+               cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_IMAGE_WIDTH) fail");\r
+               goto exit;\r
+       }\r
+       exif_set_long ((unsigned char *)&elong[cntl], exif_data_get_byte_order(exif), thumb_h);\r
+       if (!cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_IMAGE_LENGTH, EXIF_FORMAT_LONG, 1, (unsigned char*)&elong[cntl++])) {\r
+               cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_IMAGE_LENGTH) fail");\r
+               goto exit;\r
+       }\r
+\r
+       cam_debug(LOG_CAM, "exif:%p exif_size:%d", exif, exif->size);\r
+\r
+       if (!cam_exif_get_data_from_exif (exif_raw, exif_raw_size, exif)) {\r
+               cam_critical(LOG_CAM, "cam_exif_get_data_from_exif() fail");\r
+               goto exit;\r
+       }\r
+\r
+       exif->data = NULL;\r
+       exif->size = 0;\r
+       exif_data_unref (exif);\r
+\r
+       if(p_compressed != NULL)\r
+               free(p_compressed);\r
+       p_compressed = NULL;\r
+\r
+       return TRUE;\r
+\r
+       exit :\r
+       if(p_compressed != NULL)\r
+               free(p_compressed);\r
+       p_compressed = NULL;\r
+\r
+       return FALSE;\r
+\r
+}\r
+\r
+gboolean cam_exif_write_to_jpeg(unsigned char *in_data, unsigned int in_size, unsigned char *exif_data, unsigned int exif_size\r
+                                                                                 ,unsigned char **out_data, unsigned int *out_size)\r
+{\r
+       unsigned char *data = NULL;\r
+       int data_size = 0;\r
+       unsigned short head[2] = {0,};\r
+       unsigned short head_len = 0;\r
+\r
+       data_size = 2 + 2 + 2 + exif_size + (in_size - 2);\r
+\r
+       data = (unsigned char*)malloc(sizeof(unsigned char)*data_size);\r
+       if (!data) {\r
+               cam_critical(LOG_SYS, "alloc fail");\r
+               goto exit;\r
+       }\r
+\r
+       _set_uint16(0, &head[0], 0xffd8);\r
+       _set_uint16(0, &head[1], 0xffe1);\r
+       _set_uint16(0, &head_len, (unsigned short)(exif_size + 2));\r
+\r
+\r
+       if (head[0] == 0 || head[1] == 0 || head_len == 0) {\r
+               cam_critical(LOG_SYS, "set header fail");\r
+               goto exit;\r
+       }\r
+\r
+       // Complete JPEG+EXIF //\r
+       // SOI marker //\r
+       memcpy(data, &head[0], 2);\r
+\r
+       //APP1 marker\r
+       memcpy(data + 2, &head[1], 2);\r
+       //length of APP1\r
+       memcpy(data + 2 + 2, &head_len, 2);\r
+       //EXIF\r
+       memcpy(data + 2 + 2 + 2, exif_data, exif_size);\r
+       //IMAGE\r
+       memcpy(data + 2 + 2 + 2 + exif_size, in_data + 2, in_size - 2);\r
+\r
+       if (data != NULL) {\r
+               *out_data = data;\r
+               *out_size = data_size;\r
+       }\r
+\r
+       return TRUE;\r
+\r
+       exit:\r
+               if (data)\r
+                       free(data);\r
+               data = NULL;\r
+               return FALSE;\r
+\r
+}\r
diff --git a/src/cam_face_detection_focus.c b/src/cam_face_detection_focus.c
new file mode 100755 (executable)
index 0000000..1b1665d
--- /dev/null
@@ -0,0 +1,223 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <unistd.h>\r
+#include <glib.h>\r
+#include <sys/time.h>\r
+#include <pthread.h>\r
+#include "cam.h"\r
+#include "cam_error.h"\r
+#include "cam_debug.h"\r
+#include "cam_mm.h"\r
+#include "cam_face_detection_focus.h"\r
+\r
+static pthread_mutex_t face_detecton_mutex = PTHREAD_MUTEX_INITIALIZER;\r
+static gboolean is_face_zoom = FALSE; /*note: the flag: now is in face zoom state or not*/\r
+static CamFaceInfo face_info;\r
+\r
+\r
+#define RECT_CORRECTION_VALUE (20)\r
+\r
+\r
+/*note:check point whether in rect, @correction_value  for enhance/weaken the condition*/\r
+static gboolean __check_point_whether_in_rect(int point_x,\r
+                                                       int point_y,\r
+                                                       CamVideoRectangle rect,\r
+                                                       int correction_value)\r
+{\r
+\r
+       if (point_x > (rect.x - correction_value)\r
+               && point_y > (rect.y - correction_value)\r
+               && point_x < (rect.w + rect.x + correction_value)\r
+               && point_y < (rect.h + rect.y + correction_value)) {\r
+               DEBUG_TRACE("point is in rect");\r
+               return TRUE;\r
+       }\r
+       return FALSE;\r
+}\r
+\r
+void cam_face_detection_focus_start_stream(camera_preview_data_s *preview_frame, void *user_data)\r
+{\r
+\r
+       cam_retm_if(user_data == NULL, "data is null");\r
+       cam_retm_if(preview_frame == NULL, "data is null");\r
+       struct appdata *ad = (struct appdata *)user_data;\r
+       CamAppData *camapp = ad->camapp_handle;\r
+       cam_retm_if(camapp == NULL, "camapp is null");\r
+\r
+       if (cam_app_is_skip_video_stream()) {\r
+               return;\r
+       }\r
+       if (cam_utils_set_guide_rect_color(ad) ==FALSE) {\r
+               DEBUG_TRACE("cam_utils_set_guide_rect_color failed");\r
+       }\r
+       void *frame = NULL;\r
+       switch (preview_frame->num_of_planes) {\r
+       case 1:\r
+               frame = preview_frame->data.single_plane.yuv;\r
+               break;\r
+       case 2:\r
+               /*TODO: now do not support two planes*/\r
+               return;\r
+       case 3:\r
+               /*TODO: now do not support three planes*/\r
+               return;\r
+       default:\r
+               return;\r
+       }\r
+       pthread_mutex_lock(&face_detecton_mutex);\r
+       int i;\r
+       for(i = 0; i < face_info.count; i++ ) {\r
+\r
+               if(i == 0){\r
+                       camapp->guide_rect_color = camapp->guide_rect_green;\r
+               }else{\r
+                       camapp->guide_rect_color = camapp->guide_rect_white;\r
+               }\r
+\r
+               cam_utils_draw_guide_rectangle(ad,\r
+                                               frame,\r
+                                               face_info.faces[i].x,\r
+                                               face_info.faces[i].y,\r
+                                               face_info.faces[i].width,\r
+                                               face_info.faces[i].height);\r
+\r
+       }\r
+       pthread_mutex_unlock(&face_detecton_mutex);\r
+       return ;\r
+\r
+}\r
+\r
+gboolean cam_face_detection_focus_init()\r
+{\r
+       int err = 0;\r
+       err = pthread_mutex_init(&(face_detecton_mutex), NULL);\r
+       if (err != 0) {\r
+               cam_critical(LOG_CAM, "Create face detection mutex failed");\r
+               return FALSE;\r
+       }\r
+       return TRUE;\r
+}\r
+\r
+gboolean cam_face_detection_focus_finish()\r
+{\r
+       pthread_mutex_destroy(&face_detecton_mutex);\r
+       return TRUE;\r
+}\r
+\r
+\r
+/*note: in face detection focus mode, when face deteced , callback will be called*/\r
+void cam_face_detection_focus_face_detected_cb(camera_detected_face_s *faces, int count, void *user_data)\r
+{\r
+       pthread_mutex_lock(&face_detecton_mutex);\r
+\r
+       if(count > MAX_FACE_COUNT)\r
+               count = MAX_FACE_COUNT;\r
+\r
+       int i ;\r
+       for(i = 0; i < count; i++ ) {\r
+\r
+               face_info.faces[i].height = faces->height;\r
+               face_info.faces[i].id = faces->id;\r
+               face_info.faces[i].score = faces->score;\r
+               face_info.faces[i].width = faces->width;\r
+               face_info.faces[i].x = faces->x;\r
+               face_info.faces[i].y = faces->y;\r
+               faces++;\r
+       }\r
+       face_info.count = count;\r
+       pthread_mutex_unlock(&face_detecton_mutex);\r
+\r
+       return;\r
+}\r
+\r
+void cam_common_set_mouse_double_click_xy(Evas_Coord x, Evas_Coord y)\r
+{\r
+       struct appdata *ad = (struct appdata *)cam_appdata_get();\r
+       cam_retm_if(ad == NULL, "appdata is NULL");\r
+\r
+       CamAppData *camapp = NULL;\r
+       camapp = ad->camapp_handle;\r
+       cam_retm_if(camapp == NULL, "camapp is NULL");\r
+\r
+       if (is_face_zoom) {\r
+\r
+               cam_critical(LOG_CAM, "cancel face zoom");\r
+               if (cam_mm_camera_cancel_face_zoom())\r
+               is_face_zoom = FALSE;\r
+               return;\r
+       }\r
+\r
+       pthread_mutex_lock(&face_detecton_mutex);\r
+\r
+       if(face_info.count < 1 )\r
+       {\r
+               cam_debug(LOG_CAM, "not detected face");\r
+               pthread_mutex_unlock(&face_detecton_mutex);\r
+               return;\r
+       }\r
+\r
+       cam_debug(LOG_CAM, "x = %d, y = %d", x, y);\r
+\r
+       /*calculate*/\r
+       int i;\r
+       for(i=0; i<face_info.count; i++)\r
+       {\r
+               CamVideoRectangle src;\r
+               src.x = face_info.faces[i].x;\r
+               src.y = face_info.faces[i].y;\r
+               src.w = face_info.faces[i].width;\r
+               src.h = face_info.faces[i].height;\r
+\r
+               CamVideoRectangle dest;\r
+               cam_utils_set_videos_xy_to_windows_xy(src, &dest,(void *)ad);\r
+\r
+               cam_debug(LOG_CAM, "_x = %d, _y = %d", face_info.faces[i].x, face_info.faces[i].y);\r
+               cam_debug(LOG_CAM, "cam_face_x = %d, cam_face_y = %d", dest.x, dest.y);\r
+\r
+               gboolean point_in_rect = FALSE;\r
+               point_in_rect = __check_point_whether_in_rect(x, y, dest, RECT_CORRECTION_VALUE);\r
+\r
+               if (point_in_rect) {\r
+                       cam_debug(LOG_CAM, "in rect");\r
+                       if (is_face_zoom || (camapp->zoom_mode != camapp->zoom_min)) {\r
+                               if (cam_mm_camera_cancel_face_zoom()){\r
+                                       is_face_zoom = FALSE;\r
+                                       camapp->zoom_mode =  ZOOM_DEFAULT;\r
+                               }\r
+                       } else {\r
+                               if (cam_mm_set_camera_face_zoom(face_info.faces[i].id)) {\r
+                                       is_face_zoom = TRUE;\r
+                               }\r
+                       }\r
+               }else{\r
+                       cam_debug(LOG_CAM, "not matcing");\r
+               }\r
+       }\r
+       pthread_mutex_unlock(&face_detecton_mutex);\r
+\r
+\r
+}\r
+void cam_face_detection_reset()\r
+{\r
+       face_info.count = 0;\r
+}\r
+\r
+//end file\r
diff --git a/src/cam_file.c b/src/cam_file.c
new file mode 100755 (executable)
index 0000000..5f965a0
--- /dev/null
@@ -0,0 +1,489 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "cam_file.h"
+#include "cam_error.h"
+#include "cam_debug.h"
+#include "cam_ta.h"
+
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <media_content.h>
+
+#define CAM_FILE_CONDITION_LENGTH 256
+
+gboolean cam_file_init(GError **error)
+{
+       debug_fenter(LOG_UI);
+
+       return TRUE;
+}
+
+void cam_file_finalize()
+{
+       debug_fenter(LOG_UI);
+       return;
+}
+
+gboolean cam_file_get_size(const char *filename, guint64 *size)
+{
+       struct stat buf;
+
+       if (stat(filename, &buf) != 0)
+               return FALSE;
+       *size = (guint64)buf.st_size;
+       return TRUE;
+}
+
+gboolean cam_file_check_exists(gchar *filename)
+{
+
+       FILE *fd = fopen(filename, "r");
+       if (fd == NULL) {
+               return FALSE;
+       } else {
+               fclose(fd);
+               return TRUE;
+       }
+}
+
+gboolean cam_file_register(const gchar *filename, GError **error)
+{
+       int err_code = 0;
+
+       CAM_TA_ACUM_ITEM_BEGIN("      cam_file_register", 0);
+
+       cam_debug(LOG_UI, "");
+
+       if (filename == NULL) {
+               cam_critical(LOG_FILE, "The filename is null");
+               CAM_TA_ACUM_ITEM_END("      cam_file_register", 0);
+               return FALSE;
+       }
+
+       if (!g_file_test(filename, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+               cam_critical(LOG_FILE, "The File is not existed");
+               CAM_TA_ACUM_ITEM_END("      cam_file_register", 0);
+               return FALSE;
+       }
+       if (g_str_has_suffix(filename, ".jpg")) {
+               cam_debug(LOG_FILE, "jpg file!");
+
+       } else if (g_str_has_suffix(filename, ".3gp")) {
+               cam_debug(LOG_FILE, ".3gp file!");
+       } else if (g_str_has_suffix(filename, ".mp4")) {
+               cam_debug(LOG_FILE, ".mp4 file!");
+       } else {
+               cam_critical(LOG_FILE, "failed to get file type : [%s]",
+                            filename);
+               return FALSE;
+       }
+
+       media_info_h info = NULL;
+       err_code = media_info_insert_to_db(filename, &info);
+
+       if (err_code != MEDIA_CONTENT_ERROR_NONE) {
+               cam_critical(LOG_FILE, "failed to media_file_register() : [%s], [%d]", filename, err_code);
+               CAM_TA_ACUM_ITEM_END("      cam_file_register", 0);
+               media_info_destroy(info);
+               return FALSE;
+       }
+       media_info_destroy(info);
+
+       cam_debug(LOG_FILE, "register success!");
+       CAM_TA_ACUM_ITEM_END("      cam_file_register", 0);
+       return TRUE;
+}
+
+gboolean cam_file_delete(const gchar *filename, GError **error)
+{
+       cam_debug(LOG_FILE, "%s", filename);
+
+       if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) {
+               cam_warning(LOG_FILE, "invalid file:%s", filename);
+               cam_set_error(error, CAM_ERROR_FILE_NOT_EXISTS,
+                             "File not exists:%s", filename);
+               return FALSE;
+       }
+       return (g_unlink(filename) == 0) ? TRUE : FALSE;
+}
+
+gboolean
+cam_file_rename(const gchar *filename, const gchar *new_name, GError **error)
+{
+       gboolean bret = FALSE;
+
+       cam_debug(LOG_FILE, "[%s] -> [%s]", filename, new_name);
+
+       if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) {
+               cam_warning(LOG_FILE, "invalid file:%s", filename);
+               cam_set_error(error, CAM_ERROR_FILE_NOT_EXISTS,
+                             "File not exists:%s", filename);
+               return FALSE;
+       }
+
+       bret = (g_rename(filename, new_name) == 0) ? TRUE : FALSE;
+
+       if (!bret) {
+               cam_critical(LOG_FILE, "operation failed");
+       }
+
+       if (!g_file_test(new_name, G_FILE_TEST_IS_REGULAR)) {
+               cam_warning(LOG_FILE, "renamed file not exists:%s", new_name);
+               bret = FALSE;
+       }
+
+       return bret;
+}
+
+const gchar *cam_file_get_internal_image_path(void)
+{
+       gchar * spath = INTERNAL_FILE_PATH;
+
+       return spath;
+}
+
+const gchar *cam_file_get_internal_video_path(void)
+{
+       gchar * spath = INTERNAL_FILE_PATH;
+
+       return spath;
+}
+
+const gchar *cam_file_get_external_image_path(void)
+{
+       gchar * spath = EXTERNAL_FILE_PATH;
+
+       return spath;
+}
+
+const gchar *cam_file_get_external_video_path(void)
+{
+       gchar * spath = EXTERNAL_FILE_PATH;
+
+       return spath;
+}
+
+gboolean cam_check_dir()
+{
+       DIR *internal_dir = NULL;
+       DIR *external_dir = NULL;
+       int ret;
+       internal_dir = opendir(INTERNAL_FILE_PATH);
+
+       if(internal_dir == NULL) {
+               ret = mkdir(INTERNAL_FILE_PATH,0777);
+               DEBUG_TRACE("ret = [%d]",ret);
+               if(ret <0) {
+                       DEBUG_TRACE("Cannot make default path");
+                       /*closedir(internal_dir);*/
+                       return FALSE;
+               }
+       }
+       if (internal_dir) {
+               closedir(internal_dir);
+               internal_dir = NULL;
+       }
+
+       external_dir = opendir(EXTERNAL_FILE_PATH);
+       if(external_dir == NULL) {
+               ret = mkdir(EXTERNAL_FILE_PATH,0777);
+               DEBUG_TRACE("ret = [%d]",ret);
+               if(ret <0) {
+                       DEBUG_TRACE("MMC is fault or not inserted");
+               }
+
+       }
+       if (external_dir) {
+               closedir(external_dir);
+               external_dir = NULL;
+       }
+
+       return TRUE;
+
+}
+gchar *cam_file_get_next_filename_for_multishot(const gchar *storage_root,
+                                               const gchar *first_file_name,
+                                               const gint shot_num,
+                                               const gchar *suffix)
+{
+       char *prefix = NULL;
+       char *result = NULL;
+       char *check_full_path = NULL;
+       char *check_full_name = NULL;
+       int cnt = 0;
+       gboolean bFinal = FALSE;
+
+       prefix = g_strdup_printf("%s/%s", storage_root, first_file_name);
+
+       if (shot_num == 0) {
+               check_full_name = g_strdup_printf("%s", prefix);
+       } else {
+               check_full_name =
+                   g_strdup_printf("%s_%d", prefix, shot_num);
+       }
+       check_full_path = g_strdup_printf("%s%s", check_full_name, suffix);
+       /*NOTE: if worst sceanio: always failed.set max count 1000*/
+       #define MAX_SUB_NAME_NUMBER (1000)
+       while (bFinal == FALSE && check_full_path && (cnt < MAX_SUB_NAME_NUMBER)) {
+               if (!cam_file_check_exists(check_full_path)) {
+                       bFinal = TRUE;
+                       result = g_strdup(check_full_path);
+               } else {
+                       cnt++;
+                       if (check_full_path)
+                               g_free(check_full_path);
+                       check_full_path = NULL;
+                       check_full_path =
+                           g_strdup_printf("%s-%d%s", check_full_name, cnt, suffix);
+
+                       bFinal = FALSE;
+               }
+       }
+
+       if (check_full_path)
+               g_free(check_full_path);
+       check_full_path = NULL;
+       if (check_full_name)
+               g_free(check_full_name);
+       check_full_name = NULL;
+
+       if (prefix)
+               g_free(prefix);
+       prefix = NULL;
+
+       cam_debug(LOG_FILE, "%s", result);
+
+       return result;
+}
+
+/*callback for:media_folder_foreach_media_from_db*/
+static bool __cam_file_get_latest_file_path_cb(media_info_h item, void *user_data)
+{
+       char **file_url = (char **) user_data;
+       if (media_info_get_file_path(item, file_url) != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("Clone folder handle error");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+/*callback for:media_info_foreach_media_from_db*/
+/*note:here have to use bool, not gboolean, for callback define*/
+static bool __cam_file_get_cam_file_thumbnail_path_cb(media_info_h item, void *user_data)
+{
+       char **thumbnail_path = (char **) user_data;
+       if (media_info_get_thumbnail_path(item, thumbnail_path) != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("get thumbnail path error");
+               return FALSE;
+       }
+       if (*thumbnail_path)
+               DEBUG_TRACE("thumbnail_path = %s", *thumbnail_path);
+       return TRUE;
+}
+
+/*callback for:media_folder_foreach_folder_from_db*/
+static bool __cam_file_get_storage_folder_id_cb(media_folder_h item, void *user_data)
+{
+       char **folder_uuid = (char **) user_data;
+       if (media_folder_get_folder_id(item, folder_uuid) != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("Get folder id error");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+char *cam_file_get_cam_storage_folder_id(const gchar *storage_root)
+{
+       char condition[CAM_FILE_CONDITION_LENGTH + 1] = { '\0', };
+       snprintf(condition, CAM_FILE_CONDITION_LENGTH, "%s = \'%s\'", FOLDER_PATH, (char *)storage_root);
+       filter_h filter = NULL;
+       int ret = media_filter_create(&filter);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("Fail to create filter");
+               return NULL;
+       }
+
+       ret = media_filter_set_condition(filter, condition,     MEDIA_CONTENT_COLLATE_DEFAULT);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+
+       char *folder_uuid = NULL;
+       ret = media_folder_foreach_folder_from_db(filter,
+                                               __cam_file_get_storage_folder_id_cb,
+                                               &folder_uuid);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+
+       if (folder_uuid) {
+               if (filter)
+                       media_filter_destroy(filter);
+               filter = NULL;
+               return folder_uuid;
+       } else {
+               goto ERROR_THROW;
+       }
+
+ERROR_THROW:
+       if (filter)
+               media_filter_destroy(filter);
+       filter = NULL;
+       return NULL;
+}
+
+gboolean cam_file_get_cam_file_thumbnail_path(const gchar *file_path, gchar **thumbnail_path)
+{
+       if (thumbnail_path == NULL)
+               return FALSE;
+       char condition[CAM_FILE_CONDITION_LENGTH + 1] = { '\0', };
+       snprintf(condition, CAM_FILE_CONDITION_LENGTH, "%s = \'%s\'", MEDIA_PATH, (char *)file_path);
+       filter_h filter = NULL;
+       int ret = media_filter_create(&filter);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("Fail to create filter");
+               goto ERROR_THROW;
+       }
+
+       ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+
+       char *temp_thumbnail_path = NULL;
+       ret = media_info_foreach_media_from_db(filter,
+                                               __cam_file_get_cam_file_thumbnail_path_cb,
+                                               &temp_thumbnail_path);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+       *thumbnail_path = temp_thumbnail_path;
+       if (filter)
+               media_filter_destroy(filter);
+       filter = NULL;
+       return TRUE;
+
+ERROR_THROW:
+       if (filter)
+               media_filter_destroy(filter);
+       filter = NULL;
+       return FALSE;
+}
+
+gchar *cam_file_get_last_file_path(void *data, const gchar *storage_root)
+{
+       struct appdata *ad =data;
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+       cam_retvm_if(storage_root == NULL, NULL, "storage_root is NULL");
+       DEBUG_TRACE("storage_root : %s", storage_root);
+
+
+       /*get folder id*/
+
+       char *folder_uuid = cam_file_get_cam_storage_folder_id(storage_root);
+       if (!folder_uuid) {
+               DEBUG_TRACE("not find %s", storage_root);
+               return NULL;
+       }
+
+       char condition[CAM_FILE_PATH_MAX + 1] = { '\0', };
+
+       snprintf(condition, CAM_FILE_PATH_MAX, "(%s=0 OR %s=1)", MEDIA_TYPE, MEDIA_TYPE);
+
+       filter_h filter = NULL;
+       int ret = media_filter_create(&filter);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               DEBUG_TRACE("Fail to create filter");
+               goto ERROR_THROW;
+       }
+
+       ret = media_filter_set_condition(filter, condition,     MEDIA_CONTENT_COLLATE_DEFAULT);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+
+       ret = media_filter_set_order(filter,
+                                    MEDIA_CONTENT_ORDER_DESC,
+                                    MEDIA_MODIFIED_TIME,
+                                    MEDIA_CONTENT_COLLATE_DEFAULT);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               goto ERROR_THROW;
+       }
+       ret = media_filter_set_offset(filter,
+                                       0,/*offset*/
+                                       1);/*count*/
+       char *file_url = NULL;
+       ret = media_folder_foreach_media_from_db(folder_uuid,
+                                               filter,
+                                               __cam_file_get_latest_file_path_cb,
+                                               &file_url);
+       if (ret < 0) {
+               DEBUG_TRACE("Failed to media_folder_foreach_media_from_db");
+               goto ERROR_THROW;
+       }
+
+       if (file_url == NULL) {
+               DEBUG_TRACE(" Failed ");
+               goto ERROR_THROW;
+       }
+       /*make last filename */
+       gchar last_file_path[255] = { 0, };
+       snprintf(last_file_path, sizeof(last_file_path), "%s", file_url);
+       free(file_url);
+       file_url = NULL;
+       media_filter_destroy(filter);
+       filter = NULL;
+
+       return g_strdup(last_file_path);
+
+ERROR_THROW:
+       if (filter)
+               media_filter_destroy(filter);
+       filter = NULL;
+       return NULL;
+
+}
+
+gchar *cam_file_get_next_filename(const gchar *storage_root,
+                                 const gchar *prefix_string,
+                                 const gchar *suffix)
+{
+       gchar target[255] = { 0, };
+       time_t t;
+       struct tm tm;
+
+       t = time(NULL);
+       tzset();
+               /*localtime_r : available since libc 5.2.5 */
+       if(localtime_r(&t,&tm) == NULL) {
+               return NULL;
+       }
+       snprintf(target, sizeof(target), "%s/%04i%02i%02i-%02i%02i%02i%s",
+                storage_root,
+                tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+                tm.tm_hour, tm.tm_min, tm.tm_sec, suffix);
+
+       cam_debug(LOG_FILE, "filename: %s", target);
+
+       return g_strdup(target);
+}
diff --git a/src/cam_lbs.c b/src/cam_lbs.c
new file mode 100755 (executable)
index 0000000..453fd94
--- /dev/null
@@ -0,0 +1,304 @@
+/*
+ * 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 <time.h>
+#include <locations.h>
+#include "cam_lbs.h"
+#include "cam_debug.h"
+
+typedef struct {
+       location_manager_h location_handle;
+       CamLBSState m_lbs_state;
+       void (*lbs_update_cb) (void *data, int lbs_state);
+       void *cb_data;
+       double latitude;
+       double longitude;
+       double altitude;
+       time_t time_stamp;
+} CamLBSInfo;
+
+static CamLBSInfo *cam_lbs_info = NULL;        /* lbs_info */
+
+void cam_lbs_set_state_from_accuracy_level()
+{
+       g_return_if_fail(cam_lbs_info);
+       g_return_if_fail(cam_lbs_info->location_handle);
+
+       location_accuracy_level_e accuracy_level;
+       double horizontal;
+       double vertical;
+
+       int ret = LOCATIONS_ERROR_NONE;
+
+       ret = location_manager_get_accuracy(cam_lbs_info->location_handle,
+                                                                               &accuracy_level, &horizontal, &vertical);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_get_accuracy failed!! error = %d", ret);
+               return;
+       }
+
+       cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+
+       switch (accuracy_level) {
+       case LOCATIONS_ACCURACY_NONE:
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_SERVICE_START;
+               break;
+       case LOCATIONS_ACCURACY_COUNTRY:
+       case LOCATIONS_ACCURACY_REGION :
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_SERVICE_ENABLE;
+               break;
+       case LOCATIONS_ACCURACY_LOCALITY :
+       case LOCATIONS_ACCURACY_POSTALCODE:
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_ACCURANCY_ROUGH;
+               break;
+       case LOCATIONS_ACCURACY_STREET :
+       case LOCATIONS_ACCURACY_DETAILED :
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_ACCURANCY_DETAILED;
+               break;
+       default:
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+               break;
+       }
+}
+
+static void cam_lbs_position_updated_cb(double latitude, double longitude,
+                                                                                               double altitude, time_t timestamp, void *user_data)
+{
+       cam_debug(LOG_SYS, "cam_lbs_position_updated_cb : lat(%f), long(%f), alt(%f), time(%f)",
+                               latitude, longitude, altitude, timestamp);
+
+       g_return_if_fail(cam_lbs_info);
+
+       cam_lbs_set_state_from_accuracy_level();
+
+       cam_lbs_info->latitude = latitude;
+       cam_lbs_info->longitude = longitude;
+       cam_lbs_info->altitude = altitude;
+       cam_lbs_info->time_stamp = timestamp;
+
+       /* call callback function */
+       if (cam_lbs_info->lbs_update_cb)
+               cam_lbs_info->lbs_update_cb(cam_lbs_info->cb_data, cam_lbs_get_state());
+}
+
+static void cam_lbs_service_state_changed_cb(location_service_state_e state, void *user_data)
+{
+       cam_debug(LOG_SYS, "cam_lbs_service_state_changed_cb : state(%d)", state);
+
+       g_return_if_fail(cam_lbs_info);
+       g_return_if_fail(cam_lbs_info->location_handle);
+
+       switch (state){
+       case LOCATIONS_SERVICE_ENABLED : {
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_SERVICE_ENABLE;
+
+               double altitude = -1.0;
+               double latitude = -1.0;
+               double longitude = -1.0;
+               time_t timestamp = -1.0;
+
+               int ret = LOCATIONS_ERROR_NONE;
+
+               ret = location_manager_get_position(cam_lbs_info->location_handle,
+                                                                                       &altitude, &latitude, &longitude, &timestamp);
+               if(ret != LOCATIONS_ERROR_NONE) {
+                       cam_debug(LOG_SYS, "location_manager_get_position failed!! error = %d", ret);
+                       return;
+               }
+
+               cam_debug(LOG_SYS, "cam_lbs_service_state_changed_cb : alt(%f), lat(%f), long(%f), time(%f)",
+                                       altitude, latitude, longitude, timestamp);
+
+               cam_lbs_info->altitude = altitude;
+               cam_lbs_info->latitude = latitude;
+               cam_lbs_info->longitude = longitude;
+               cam_lbs_info->time_stamp = timestamp;
+
+               cam_lbs_set_state_from_accuracy_level();
+
+               /* call callback function */
+               if (cam_lbs_info->lbs_update_cb)
+                       cam_lbs_info->lbs_update_cb(cam_lbs_info->cb_data, cam_lbs_get_state());
+               }
+
+       case LOCATIONS_SERVICE_DISABLED : {
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+
+               /* call callback function */
+               if (cam_lbs_info->lbs_update_cb)
+                       cam_lbs_info->lbs_update_cb(cam_lbs_info->cb_data, cam_lbs_get_state());
+               }
+
+       default :
+               break;
+       }
+}
+
+gboolean cam_lbs_init(void)
+{
+       g_return_val_if_fail(!cam_lbs_info, FALSE);
+
+       debug_fenter(LOG_UI);
+
+       cam_lbs_info = g_new0(CamLBSInfo, 1);
+       cam_lbs_info->location_handle = NULL;
+       cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+       cam_lbs_info->lbs_update_cb = NULL;
+       cam_lbs_info->cb_data = NULL;
+       cam_lbs_info->altitude = -1.0;
+       cam_lbs_info->latitude = -1.0;
+       cam_lbs_info->longitude = -1.0;
+       cam_lbs_info->time_stamp = -1.0;
+
+       int ret = LOCATIONS_ERROR_NONE;
+
+       ret = location_manager_create(LOCATIONS_METHOD_HYBRID, &cam_lbs_info->location_handle);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_create failed!! error = %d", ret);
+               goto ERROR;
+       }
+
+       ret = location_manager_set_service_state_changed_cb(cam_lbs_info->location_handle,
+                                                                                                               cam_lbs_service_state_changed_cb, (void*)NULL);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_set_service_state_changed_cb failed!! error = %d", ret);
+               goto ERROR;
+       }
+
+       ret = location_manager_set_position_updated_cb(cam_lbs_info->location_handle,
+                                                                                                       cam_lbs_position_updated_cb, 30, (void*)NULL);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_set_position_updated_cb failed!! error = %d", ret);
+               goto ERROR;
+       }
+
+       return TRUE;
+
+       ERROR:
+
+       if (cam_lbs_info)
+               g_free(cam_lbs_info);
+       cam_lbs_info = NULL;
+
+       return FALSE;
+}
+
+gboolean cam_lbs_finialize(void)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+       g_return_val_if_fail(cam_lbs_info->location_handle, FALSE);
+
+       debug_fenter(LOG_UI);
+
+       int ret = LOCATIONS_ERROR_NONE;
+
+       ret = location_manager_destroy(cam_lbs_info->location_handle);
+
+       if (cam_lbs_info)
+               g_free(cam_lbs_info);
+       cam_lbs_info = NULL;
+
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_destroy failed!! error = %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_lbs_start(void (*lbs_update_cb) (void *data, int lbs_state), void *data)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+       g_return_val_if_fail(cam_lbs_info->location_handle, FALSE);
+
+       cam_lbs_info->lbs_update_cb = lbs_update_cb;
+       cam_lbs_info->cb_data = data;
+
+       int ret = LOCATIONS_ERROR_NONE;
+
+       ret = location_manager_start(cam_lbs_info->location_handle);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_start failed!! error = %d", ret);
+               cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+               return FALSE;
+       }
+
+       cam_lbs_info->m_lbs_state = CAM_LBS_STATE_SERVICE_START;
+
+       return TRUE;
+}
+
+gboolean cam_lbs_stop(void)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+       g_return_val_if_fail(cam_lbs_info->location_handle, FALSE);
+
+       int ret = LOCATIONS_ERROR_NONE;
+
+       ret = location_manager_stop(cam_lbs_info->location_handle);
+       if (ret != LOCATIONS_ERROR_NONE) {
+               cam_debug(LOG_SYS, "location_manager_stop failed!! error = %d", ret);
+               return FALSE;
+       }
+
+       cam_lbs_info->m_lbs_state = CAM_LBS_STATE_DISABLE;
+
+       return TRUE;
+}
+
+gboolean cam_lbs_is_valid(void)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+
+       if (cam_lbs_info->m_lbs_state > CAM_LBS_STATE_SERVICE_START)
+               return TRUE;
+       else
+               return FALSE;
+}
+
+gboolean cam_lbs_get_current_position(double *longitude, double *latitude,
+                                                                                       double *altitude, time_t *time_stamp)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+       g_return_val_if_fail(cam_lbs_info->m_lbs_state >= CAM_LBS_STATE_SERVICE_ENABLE, FALSE);
+
+       cam_debug(LOG_SYS, "SYNC>> Current position:");
+       cam_debug(LOG_SYS, "\ttime: %f, lat: %f, long: %f, alt: %f",
+                 cam_lbs_info->time_stamp, cam_lbs_info->latitude,
+                 cam_lbs_info->longitude, cam_lbs_info->altitude);
+
+       *altitude = cam_lbs_info->altitude;
+       *latitude = cam_lbs_info->latitude;
+       *longitude = cam_lbs_info->longitude;
+       *time_stamp = cam_lbs_info->time_stamp;
+
+       return TRUE;
+}
+
+gboolean cam_lbs_get_address(char *address, int max_length)
+{
+       g_return_val_if_fail(cam_lbs_info, FALSE);
+
+       return TRUE;
+}
+
+int cam_lbs_get_state(void)
+{
+       g_return_val_if_fail(cam_lbs_info, CAM_LBS_STATE_DISABLE);
+
+       return cam_lbs_info->m_lbs_state;
+}
diff --git a/src/cam_long_press.c b/src/cam_long_press.c
new file mode 100755 (executable)
index 0000000..efdb0ec
--- /dev/null
@@ -0,0 +1,162 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <assert.h>\r
+#include <Elementary.h>\r
+#include "cam.h"\r
+#include "cam_long_press.h"\r
+\r
+typedef struct cb_item {\r
+       LONG_PRESS_START_CALLBACK start_func;\r
+       LONG_PRESS_CANCEL_CALLBACK cancel_func;\r
+       void *data;\r
+\r
+       Evas_Coord x;\r
+       Evas_Coord y;\r
+\r
+       Ecore_Timer *hold_timer;\r
+       double time;\r
+\r
+       bool runing;\r
+}long_press_timer_t;\r
+\r
+static long_press_timer_t g_timer[LONG_PRESS_ID_MAX_NUMS];\r
+\r
+bool cam_get_long_press_running_state(int index)\r
+{\r
+       if (index >=LONG_PRESS_ID_MAX_NUMS || index < 0) {\r
+               return FALSE;\r
+       }\r
+       return g_timer[index].runing;\r
+}\r
+static Eina_Bool _timer_cb(void *data)\r
+{\r
+       if(NULL == data) {\r
+               return FALSE;\r
+       }\r
+\r
+       long_press_timer_t *item = (long_press_timer_t*)data;\r
+\r
+       item->hold_timer = NULL;\r
+       if (item->start_func) {\r
+               item->start_func(item->data, item->x, item->y);\r
+               item->runing = TRUE;\r
+       }\r
+       return ECORE_CALLBACK_CANCEL;\r
+}\r
+\r
+int cam_long_press_register(int index, double time,\r
+               LONG_PRESS_START_CALLBACK start_func,\r
+               LONG_PRESS_CANCEL_CALLBACK end_func,\r
+               void *data)\r
+{\r
+       if(index >= LONG_PRESS_ID_MAX_NUMS)\r
+               return EXIT_FAILURE;\r
+\r
+       if(g_timer[index].hold_timer != NULL) {\r
+               DEBUG_TRACE("Already register! \n");\r
+               return EXIT_SUCCESS;\r
+       }\r
+\r
+       g_timer[index].start_func = start_func;\r
+       g_timer[index].cancel_func = end_func;\r
+       g_timer[index].data = data;\r
+       g_timer[index].runing = FALSE;\r
+       g_timer[index].time = time;\r
+\r
+       return EXIT_SUCCESS;\r
+}\r
+\r
+int cam_long_press_unregister(int index)\r
+{\r
+       if(index >= LONG_PRESS_ID_MAX_NUMS)\r
+               return EXIT_FAILURE;\r
+\r
+       if (g_timer[index].hold_timer) {\r
+               ecore_timer_del(g_timer[index].hold_timer);\r
+               g_timer[index].hold_timer = NULL;\r
+       }\r
+\r
+       return EXIT_SUCCESS;\r
+}\r
+\r
+void cam_long_press_trigger(int index, Evas_Coord x, Evas_Coord y)\r
+{\r
+       if(index >= LONG_PRESS_ID_MAX_NUMS)\r
+               return;\r
+\r
+       if (g_timer[index].hold_timer) {\r
+               return;\r
+       }\r
+\r
+       g_timer[index].hold_timer = ecore_timer_add(g_timer[index].time, _timer_cb, &g_timer[index]);\r
+       if (!g_timer[index].hold_timer) {\r
+               DEBUG_TRACE("Failed to trigger the hold timer\n");\r
+       }\r
+\r
+       /*Update valid region*/\r
+       g_timer[index].x = x;\r
+       g_timer[index].y = y;\r
+       g_timer[index].runing = FALSE;\r
+}\r
+\r
+void cam_long_press_validate(int index, Evas_Coord x, Evas_Coord y)\r
+{\r
+       if(index >= LONG_PRESS_ID_MAX_NUMS)\r
+               return;\r
+\r
+       int dx;\r
+       int dy;\r
+\r
+       if (!g_timer[index].hold_timer) {\r
+               return;\r
+       }\r
+\r
+       dx = (g_timer[index].x - x);\r
+       dx *= dx;\r
+\r
+       dy = (g_timer[index].y - y);\r
+       dy *= dy;\r
+\r
+       /*TODO:this condision is too strict*/\r
+       if ((dx + dy) > ((elm_config_finger_size_get() / 2) * (elm_config_finger_size_get() / 2))) {\r
+               DEBUG_TRACE("validate failed, del timer\n");\r
+               ecore_timer_del(g_timer[index].hold_timer);\r
+               g_timer[index].hold_timer = NULL;\r
+       }\r
+\r
+}\r
+\r
+void cam_long_press_cancel(int index)\r
+{\r
+       if(index >= LONG_PRESS_ID_MAX_NUMS)\r
+               return;\r
+\r
+       if (g_timer[index].hold_timer) {\r
+               ecore_timer_del(g_timer[index].hold_timer);\r
+               g_timer[index].hold_timer = NULL;\r
+       }\r
+       g_timer[index].runing = FALSE;\r
+       if (g_timer[index].cancel_func) {\r
+               g_timer[index].cancel_func(g_timer[index].data, g_timer[index].x, g_timer[index].y);\r
+       }\r
+}\r
+\r
+\r
diff --git a/src/cam_menu_composer.c b/src/cam_menu_composer.c
new file mode 100755 (executable)
index 0000000..ae3045c
--- /dev/null
@@ -0,0 +1,1254 @@
+/*
+ * 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 <app.h>
+#include "cam_menu_composer.h"
+#include "cam_debug.h"
+#include "cam_capacity_type.h"
+#include "cam_device_capacity.h"
+
+
+const CAM_MENU_ITEM setting[] = {CAM_MENU_SHORTCUTS                    , CAM_MENU_VOLUME_KEY           , CAM_MENU_BURST_SHOT_MODE              , CAM_MENU_SELF_PORTRAIT        , CAM_MENU_FLASH , CAM_MENU_SHOOTING_MODE
+                                                       , CAM_MENU_RECORDING_MODE               , CAM_MENU_SCENE_MODE           , CAM_MENU_EXPLOSURE_VALUE              , CAM_MENU_FOCUS_MODE           , CAM_MENU_TIMER
+                                                       , CAM_MENU_EFFECTS                              , CAM_MENU_PHOTO_RESOLUTION     , CAM_MENU_VIDEO_RESOLUTION             , CAM_MENU_WHITE_BALANCE        , CAM_MENU_ISO
+                                                       , CAM_MENU_METERING                             , CAM_MENU_ANTI_SHAKE           , CAM_MENU_OUTDOOR_VISIBILITY   , CAM_MENU_AUTO_CONTRAST        , CAM_MENU_GUIDELINES
+                                                       , CAM_MENU_CAPTURE_VOICE                , CAM_MENU_GPS_TAG                      , CAM_MENU_SAVE_AS_FLIP                 , CAM_MENU_STORAGE                      , CAM_MENU_RESET};
+
+const CAM_MENU_ITEM scene_mode[] = {CAM_MENU_SCENE_AUTO                , CAM_MENU_SCENE_PORTRAIT       , CAM_MENU_SCENE_LANDSCAPE      , CAM_MENU_SCENE_NIGHT  , CAM_MENU_SCENE_SPORTS
+                                                               , CAM_MENU_SCENE_PARTY          , CAM_MENU_SCENE_BEACHSNOW      , CAM_MENU_SCENE_SUNSET         , CAM_MENU_SCENE_DUSKDAWN, CAM_MENU_SCENE_FALL
+                                                               , CAM_MENU_SCENE_FIREWORK       , CAM_MENU_SCENE_TEXT           , CAM_MENU_SCENE_CANDLELIGHT, CAM_MENU_SCENE_BACKLIGHT, CAM_MENU_SCENE_SHOW_WINDOW};
+
+const CAM_MENU_ITEM shooting_mode[] = {CAM_MENU_SHOOTING_SINGLE, CAM_MENU_SHOOTING_SELF_SINGLE};
+
+const CAM_MENU_ITEM recording_mode[] = {CAM_MENU_RECORDING_MODE_NORMAL,                        CAM_MENU_RECORDING_MODE_SLOW,   CAM_MENU_RECORDING_MODE_FAST,   CAM_MENU_RECORDING_MODE_LIMIT,
+                                                                               CAM_MENU_RECORDING_MODE_SELF_NORMAL,    CAM_MENU_RECORDING_MODE_SELF_LIMIT};
+
+const CAM_MENU_ITEM photo_resolution[] = {CAM_MENU_PHOTO_RESOLUTION_3264x2448          , CAM_MENU_PHOTO_RESOLUTION_3264x1960   , CAM_MENU_PHOTO_RESOLUTION_3264x1836   , CAM_MENU_PHOTO_RESOLUTION_2560x1920
+                                                               , CAM_MENU_PHOTO_RESOLUTION_2560x1536                           , CAM_MENU_PHOTO_RESOLUTION_2560x1440   , CAM_MENU_PHOTO_RESOLUTION_2048x1536   , CAM_MENU_PHOTO_RESOLUTION_2048x1152
+                                                               , CAM_MENU_PHOTO_RESOLUTION_1920x1080                           , CAM_MENU_PHOTO_RESOLUTION_1600x1200   , CAM_MENU_PHOTO_RESOLUTION_1392x1392   , CAM_MENU_PHOTO_RESOLUTION_1280x960
+                                                               , CAM_MENU_PHOTO_RESOLUTION_1280x720                            , CAM_MENU_PHOTO_RESOLUTION_640x480};
+
+const CAM_MENU_ITEM video_resolution[] = {CAM_MENU_VIDEO_RESOLUTION_FULLHD     , CAM_MENU_VIDEO_RESOLUTION_HD          , CAM_MENU_VIDEO_RESOLUTION_WVGA, CAM_MENU_VIDEO_RESOLUTION_VGA
+                                                               , CAM_MENU_VIDEO_RESOLUTION_QVGA                        , CAM_MENU_VIDEO_RESOLUTION_QCIF};
+
+const CAM_MENU_ITEM wb[] = {CAM_MENU_WB_AWB            ,               CAM_MENU_WB_INCANDESCENT                ,               CAM_MENU_WB_FLUORESCENT ,               CAM_MENU_WB_DAYLIGHT
+                                               , CAM_MENU_WB_CLOUDY    ,               CAM_MENU_WB_SHADE                       ,               CAM_MENU_WB_HORIZON             ,               CAM_MENU_WB_FLASH
+                                               , CAM_MENU_WB_CUSTOM};
+
+const CAM_MENU_ITEM effect[] = {CAM_MENU_EFFECT_NONE   ,       CAM_MENU_EFFECT_NEGATIVE        ,       CAM_MENU_EFFECT_BLACKANDWHITE   ,       CAM_MENU_EFFECT_SEPIA };
+
+const CAM_MENU_ITEM focus_mode[] = {CAM_MENU_FOCUS_AUTO        ,       CAM_MENU_FOCUS_MACRO    ,       CAM_MENU_FOCUS_FACE_DETECTION   };
+
+const CAM_MENU_ITEM flash[] = {CAM_MENU_FLASH_OFF      ,       CAM_MENU_FLASH_ON       ,       CAM_MENU_FLASH_AUTO     };
+
+const CAM_MENU_ITEM metering[] = {CAM_MENU_METERING_MATRIX     ,       CAM_MENU_METERING_CENTER_WEIGHTED       ,       CAM_MENU_METERING_SPOT  };
+
+const CAM_MENU_ITEM iso[] = {CAM_MENU_ISO_AUTO ,       CAM_MENU_ISO_50         ,CAM_MENU_ISO_100,      CAM_MENU_ISO_200
+                                               ,CAM_MENU_ISO_400       ,       CAM_MENU_ISO_80O,       CAM_MENU_ISO_1600,      CAM_MENU_ISO_320O};
+
+const CAM_MENU_ITEM storage[] = {CAM_MENU_STORAGE_PHONE, CAM_MENU_STORAGE_MMC};
+const CAM_MENU_ITEM timer[] = {CAM_MENU_TIMER_OFF,CAM_MENU_TIMER_2SEC, CAM_MENU_TIMER_5SEC,CAM_MENU_TIMER_10SEC};
+const CAM_MENU_ITEM volume_key[] = {CAM_MENU_VOLUME_KEY_ZOOM, CAM_MENU_VOLUME_KEY_SHUTTER};
+
+
+static gboolean __is_enabled_burstshot(void *data);
+static gboolean __is_enabled_flash(void* data);
+static gboolean __is_enabled_shooting_mode(void* data);
+static gboolean __is_enabled_recording_mode(void* data);
+static gboolean __is_enabled_scene_mode(void* data);
+static gboolean __is_enabled_explosure_value(void* data);
+static gboolean __is_enabled_focus_mode(void* data);
+static gboolean __is_enabled_timer(void* data);
+static gboolean __is_enabled_effects(void* data);
+static gboolean __is_enabled_photo_resolution(void* data);
+static gboolean __is_enabled_video_resolution(void* data);
+static gboolean __is_enabled_white_balance(void* data);
+static gboolean __is_enabled_iso(void* data);
+static gboolean __is_enabled_metering(void* data);
+static gboolean __is_enabled_anti_shake(void* data);
+static gboolean __is_enabled_rec_anti_shake(void* data);
+static gboolean __is_enabled_outdoor_visibility(void* data);
+static gboolean __is_enabled_auto_contrast(void* data);
+static gboolean __is_enabled_capture_voice(void* data);
+static gboolean __is_enabled_gps_tag(void* data);
+static gboolean __is_enalbed_storage(void* data);
+static gboolean __is_enabled_self_mode(void* data);
+static gboolean __is_enabled_save_as_flip(void *data);
+
+
+void cam_compose_setting_menu(void *data, cam_menu_composer* composer)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->title =  strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
+       composer->array = eina_array_new(25);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
+
+       unsigned int capacity = 0;
+       GetCamDevFuncCaps(&capacity, data);
+
+       /* Edit shortcuts */
+       eina_array_push(composer->array, (void*)&setting[0]);
+
+       /* Use volume key as */
+       eina_array_push(composer->array, (void*)&setting[1]);
+
+       if(capacity & CAM_CP_FUNC_BURST_SHOT_MODE)
+               eina_array_push(composer->array, (void*)&setting[2]);
+
+       if(capacity & CAM_CP_FUNC_SELF_MODE)
+               eina_array_push(composer->array, (void*)&setting[3]);
+
+       if(capacity & CAM_CP_FUNC_FLASH_MODE)
+               eina_array_push(composer->array, (void*)&setting[4]);
+
+       if(capacity & CAM_CP_FUNC_SHOT_MODE)
+               eina_array_push(composer->array, (void*)&setting[5]);
+
+       if(capacity & CAM_CP_FUNC_REC_MODE)
+               eina_array_push(composer->array, (void*)&setting[6]);
+
+       if(capacity & CAM_CP_FUNC_SCENE_MODE)
+               eina_array_push(composer->array, (void*)&setting[7]);
+
+       if(capacity & CAM_CP_FUNC_EXPOSURE)
+               eina_array_push(composer->array, (void*)&setting[8]);
+
+       if(capacity & CAM_CP_FUNC_FOCUS_MODE)
+               eina_array_push(composer->array, (void*)&setting[9]);
+
+       /* Timer */
+       eina_array_push(composer->array, (void*)&setting[10]);
+
+       if(capacity & CAM_CP_FUNC_EFFECT_MODE)
+               eina_array_push(composer->array, (void*)&setting[11]);
+
+       if(capacity & CAM_CP_FUNC_CAM_RESOLUTION)
+               eina_array_push(composer->array, (void*)&setting[12]);
+
+       if(capacity & CAM_CP_FUNC_REC_RESOLUTION)
+               eina_array_push(composer->array, (void*)&setting[13]);
+
+       if(capacity & CAM_CP_FUNC_WHITE_BALANCE)
+               eina_array_push(composer->array, (void*)&setting[14]);
+
+       if(capacity & CAM_CP_FUNC_ISO)
+               eina_array_push(composer->array, (void*)&setting[15]);
+
+       if(capacity & CAM_CP_FUNC_METERING)
+               eina_array_push(composer->array, (void*)&setting[16]);
+
+       if(capacity & CAM_CP_FUNC_CAM_ANS)
+               eina_array_push(composer->array, (void*)&setting[17]);
+
+       if(capacity & CAM_CP_FUNC_OUTDOOR)
+               eina_array_push(composer->array, (void*)&setting[18]);
+
+       if(capacity & CAM_CP_FUNC_AUTO_CONTRAST)
+               eina_array_push(composer->array, (void*)&setting[19]);
+
+       /* Guide lines */
+       eina_array_push(composer->array, (void*)&setting[20]);
+
+       /* Capture with voice */
+//     eina_array_push(composer->array, (void*)&setting[21]);
+
+       if(capacity & CAM_CP_FUNC_GPS)
+               eina_array_push(composer->array, (void*)&setting[22]);
+
+//     eina_array_push(composer->array, (void*)&setting[23]);
+
+       if(capacity & CAM_CP_FUNC_STORAGE)
+               eina_array_push(composer->array, (void*)&setting[24]);
+
+       /* Setting Reset */
+       eina_array_push(composer->array, (void*)&setting[25]);
+
+}
+
+void cam_compose_list_menu(void *data, int menu_type, cam_menu_composer* composer)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       switch((CAM_MENU_ITEM)menu_type)
+       {
+               case CAM_MENU_VOLUME_KEY:
+                       cam_compose_menu_volume_key(data, composer);
+                       break;
+               case CAM_MENU_SHOOTING_MODE:
+                       cam_compose_menu_shooting_mode(data, composer);
+                       break;
+               case CAM_MENU_FLASH:
+                       cam_compose_menu_flash(data, composer);
+                       break;
+               case CAM_MENU_RECORDING_MODE:
+                       cam_compose_menu_recording_mode(data, composer);
+                       break;
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       cam_compose_menu_photo_resolution(data, composer);
+                       break;
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       cam_compose_menu_video_resolution(data, composer);
+                       break;
+               case CAM_MENU_ISO:
+                       cam_compose_menu_iso(data, composer);
+                       break;
+               case CAM_MENU_FOCUS_MODE:
+                       cam_compose_menu_focus_mode(data, composer);
+                       break;
+               case CAM_MENU_TIMER:
+                       cam_compose_menu_timer_mode(data, composer);
+                       break;
+               case CAM_MENU_SCENE_MODE:
+                       cam_compose_menu_scene_mode(data, composer);
+                       break;
+               case CAM_MENU_WHITE_BALANCE:
+                       cam_compose_menu_wb(data, composer);
+                       break;
+               case CAM_MENU_EFFECTS:
+                       cam_compose_menu_effect(data, composer);
+                       break;
+               case CAM_MENU_METERING:
+                       cam_compose_menu_metering(data, composer);
+                       break;
+               case CAM_MENU_STORAGE:
+                       cam_compose_menu_storage(data, composer);
+                       break;
+               default:
+                       cam_debug(LOG_UI, "invalid menu type");
+                       break;
+       }
+}
+
+void cam_compose_menu_shooting_mode(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       composer->array = eina_array_new(10);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
+
+       unsigned int capacity = 0;
+       GetCamDevShotModeCaps(&capacity, data);
+
+       if(camapp->device_type == CAM_DEVICE_MEGA){
+               if(capacity & CAM_CP_SHOT_MODE_SINGLE)
+                       eina_array_push(composer->array, (void*)&shooting_mode[0]);
+
+       } else {
+               if(capacity & CAM_CP_SHOT_MODE_SINGLE)
+                       eina_array_push(composer->array, (void*)&shooting_mode[9]);
+               }
+}
+
+void cam_compose_menu_scene_mode(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(15);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 20);
+
+       unsigned int capacity = 0;
+       GetCamDevSceneModeCaps(&capacity, data);
+
+       if(capacity & CAM_CP_SCENE_MODE_AUTO)
+               eina_array_push(composer->array, (void*)&scene_mode[0]);
+
+       if(capacity & CAM_CP_SCENE_MODE_PORTRAIT)
+               eina_array_push(composer->array, (void*)&scene_mode[1]);
+
+       if(capacity & CAM_CP_SCENE_MODE_LANDSCAPE)
+               eina_array_push(composer->array, (void*)&scene_mode[2]);
+
+       if(capacity & CAM_CP_SCENE_MODE_NIGHTSHOT)
+               eina_array_push(composer->array, (void*)&scene_mode[3]);
+
+       if(capacity & CAM_CP_SCENE_MODE_SPORTS)
+               eina_array_push(composer->array, (void*)&scene_mode[4]);
+
+       if(capacity & CAM_CP_SCENE_MODE_PARTY_AND_INDOOR)
+               eina_array_push(composer->array, (void*)&scene_mode[5]);
+
+       if(capacity & CAM_CP_SCENE_MODE_BEACH_AND_SNOW)
+               eina_array_push(composer->array, (void*)&scene_mode[6]);
+
+       if(capacity & CAM_CP_SCENE_MODE_SUNSET)
+               eina_array_push(composer->array, (void*)&scene_mode[7]);
+
+       if(capacity & CAM_CP_SCENE_MODE_DUSK_AND_DAWN)
+               eina_array_push(composer->array, (void*)&scene_mode[8]);
+
+       if(capacity & CAM_CP_SCENE_MODE_FALLCOLOR)
+               eina_array_push(composer->array, (void*)&scene_mode[9]);
+
+       if(capacity & CAM_CP_SCENE_MODE_FIREWORK)
+               eina_array_push(composer->array, (void*)&scene_mode[10]);
+
+       if(capacity & CAM_CP_SCENE_MODE_TEXT)
+               eina_array_push(composer->array, (void*)&scene_mode[11]);
+
+       if(capacity & CAM_CP_SCENE_MODE_CANDLE_LIGHT)
+               eina_array_push(composer->array, (void*)&scene_mode[12]);
+
+       if(capacity & CAM_CP_SCENE_MODE_BACK_LIGHT)
+               eina_array_push(composer->array, (void*)&scene_mode[13]);
+
+       if(capacity & CAM_CP_SCENE_MODE_SHOW_WINDOW)
+               eina_array_push(composer->array, (void*)&scene_mode[14]);
+}
+
+void cam_compose_menu_photo_resolution(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(10);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 15);
+
+       unsigned int capacity = 0;
+       GetCamDevCamResolutionCaps(&capacity, data);
+
+
+       if(capacity & CAM_CP_SIZE_3264X2448)
+               eina_array_push(composer->array, (void*)&photo_resolution[0]);
+
+       if(capacity & CAM_CP_SIZE_3264X1960)
+               eina_array_push(composer->array, (void*)&photo_resolution[1]);
+
+       if(capacity & CAM_CP_SIZE_3264X1836)
+               eina_array_push(composer->array, (void*)&photo_resolution[2]);
+
+       if(capacity & CAM_CP_SIZE_2560X1920)
+               eina_array_push(composer->array, (void*)&photo_resolution[3]);
+
+       if(capacity & CAM_CP_SIZE_2560X1536)
+               eina_array_push(composer->array, (void*)&photo_resolution[4]);
+
+       if(capacity & CAM_CP_SIZE_2560X1440)
+               eina_array_push(composer->array, (void*)&photo_resolution[5]);
+
+       if(capacity & CAM_CP_SIZE_2048X1536)
+               eina_array_push(composer->array, (void*)&photo_resolution[6]);
+
+       if(capacity & CAM_CP_SIZE_2048X1152)
+               eina_array_push(composer->array, (void*)&photo_resolution[7]);
+
+       if(capacity & CAM_CP_SIZE_1920X1080)
+               eina_array_push(composer->array, (void*)&photo_resolution[8]);
+
+       if(capacity & CAM_CP_SIZE_1600X1200)
+               eina_array_push(composer->array, (void*)&photo_resolution[9]);
+
+       if(capacity & CAM_CP_SIZE_1392X1392)
+               eina_array_push(composer->array, (void*)&photo_resolution[10]);
+
+       if(capacity & CAM_CP_SIZE_1280X960)
+               eina_array_push(composer->array, (void*)&photo_resolution[11]);
+
+       if(capacity & CAM_CP_SIZE_1280X720)
+               eina_array_push(composer->array, (void*)&photo_resolution[12]);
+
+       if(capacity & CAM_CP_SIZE_640X480)
+               eina_array_push(composer->array, (void*)&photo_resolution[13]);
+
+       int size = eina_array_count(composer->array);
+       cam_critical(LOG_MM, "size %d ",size );
+}
+
+void cam_compose_menu_video_resolution(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(10);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
+
+       unsigned int capacity = 0;
+       GetCamDevRecResolutionCaps(&capacity, data);
+
+       if(capacity & CAM_CP_SIZE_1920X1080)
+               eina_array_push(composer->array, (void*)&video_resolution[0]);
+
+       if(capacity & CAM_CP_SIZE_1280X720)
+               eina_array_push(composer->array, (void*)&video_resolution[1]);
+
+       if(capacity & CAM_CP_SIZE_720X480)
+               eina_array_push(composer->array, (void*)&video_resolution[2]);
+
+       if(capacity & CAM_CP_SIZE_640X480)
+               eina_array_push(composer->array, (void*)&video_resolution[3]);
+
+       if(capacity & CAM_CP_SIZE_320X240)
+               eina_array_push(composer->array, (void*)&video_resolution[4]);
+
+       int size = eina_array_count(composer->array);
+       cam_critical(LOG_MM, "size %d ",size );
+}
+
+void cam_compose_menu_effect(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevEffectCaps(&capacity, data);
+
+       if(capacity & CAM_CP_EFFECT_NONE)
+               eina_array_push(composer->array, (void*)&effect[0]);
+
+       if(capacity & CAM_CP_EFFECT_NEGATIVE)
+               eina_array_push(composer->array, (void*)&effect[1]);
+
+       if(capacity & CAM_CP_EFFECT_MONO)
+               eina_array_push(composer->array, (void*)&effect[2]);
+
+       if(capacity & CAM_CP_EFFECT_SEPIA)
+               eina_array_push(composer->array, (void*)&effect[3]);
+}
+
+void cam_compose_menu_wb(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevWBCaps(&capacity, data);
+
+       if(capacity & CAM_CP_WB_AUTO)
+               eina_array_push(composer->array, (void*)&wb[0]);
+
+       if(capacity & CAM_CP_WB_INCANDESCENT)
+               eina_array_push(composer->array, (void*)&wb[1]);
+
+       if(capacity & CAM_CP_WB_FLUORESCENT)
+               eina_array_push(composer->array, (void*)&wb[2]);
+
+       if(capacity & CAM_CP_WB_DAYLIGHT)
+               eina_array_push(composer->array, (void*)&wb[3]);
+
+       if(capacity & CAM_CP_WB_CLOUDY)
+               eina_array_push(composer->array, (void*)&wb[4]);
+
+       if(capacity & CAM_CP_WB_SHADE)
+               eina_array_push(composer->array, (void*)&wb[5]);
+
+       if(capacity & CAM_CP_WB_HORIZON)
+               eina_array_push(composer->array, (void*)&wb[6]);
+
+       if(capacity & CAM_CP_WB_FLASH)
+               eina_array_push(composer->array, (void*)&wb[7]);
+
+       if(capacity & CAM_CP_WB_CUSTOM)
+               eina_array_push(composer->array, (void*)&wb[8]);
+}
+
+void cam_compose_menu_focus_mode(void *data, cam_menu_composer* composer)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevFocusCaps(&capacity, data);
+
+       if(capacity & CAM_CP_FOCUS_AUTO_FOCUS)
+               eina_array_push(composer->array, (void*)&focus_mode[0]);
+
+       if(capacity & CAM_CP_FOCUS_MACRO)
+               eina_array_push(composer->array, (void*)&focus_mode[1]);
+
+       if(!(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && camapp->camera_mode == CAM_CAMCORDER_MODE)){
+               if(capacity & CAM_CP_FOCUS_FACE_DETECTION)
+                       eina_array_push(composer->array, (void*)&focus_mode[2]);
+       }
+}
+
+void cam_compose_menu_iso(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(10);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 15);
+
+       unsigned int capacity = 0;
+       GetCamDevISOCaps(&capacity, data);
+
+       if(capacity & CAM_CP_ISO_AUTO)
+               eina_array_push(composer->array, (void*)&iso[0]);
+
+       if(capacity & CAM_CP_ISO_50)
+               eina_array_push(composer->array, (void*)&iso[1]);
+
+       if(capacity & CAM_CP_ISO_100)
+               eina_array_push(composer->array, (void*)&iso[2]);
+
+       if(capacity & CAM_CP_ISO_200)
+               eina_array_push(composer->array, (void*)&iso[3]);
+
+       if(capacity & CAM_CP_ISO_400)
+               eina_array_push(composer->array, (void*)&iso[4]);
+
+       if(capacity & CAM_CP_ISO_800)
+               eina_array_push(composer->array, (void*)&iso[5]);
+
+#if 0
+       if(capacity & CAM_CP_ISO_1600)
+               eina_array_push(composer->array, (void*)&iso[6]);
+
+       if(capacity & CAM_CP_ISO_3200)
+               eina_array_push(composer->array, (void*)&iso[7]);
+#endif
+}
+
+void cam_compose_menu_metering(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevMeteringCaps(&capacity, data);
+
+       if(capacity & CAM_CP_METERING_MATRIX)
+               eina_array_push(composer->array, (void*)&metering[0]);
+
+       if(capacity & CAM_CP_METERING_CENTERWEIGHT)
+               eina_array_push(composer->array, (void*)&metering[1]);
+
+       if(capacity & CAM_CP_METERING_SPOT)
+               eina_array_push(composer->array, (void*)&metering[2]);
+
+}
+
+void cam_compose_menu_recording_mode(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevRecModeCaps(&capacity, NULL);
+
+       if(camapp->device_type == CAM_DEVICE_MEGA){
+               if(capacity & CAM_CP_REC_MODE_NORMAL)
+                       eina_array_push(composer->array, (void*)&recording_mode[0]);
+
+               if(capacity & CAM_CP_REC_MODE_SLOW_MOTION)
+                       eina_array_push(composer->array, (void*)&recording_mode[1]);
+
+               if(capacity & CAM_CP_REC_MODE_FAST_MOTION)
+                       eina_array_push(composer->array, (void*)&recording_mode[2]);
+
+               if(capacity & CAM_CP_REC_MODE_MMS)
+                       eina_array_push(composer->array, (void*)&recording_mode[3]);
+       } else {
+               if(capacity & CAM_CP_REC_MODE_NORMAL)
+                       eina_array_push(composer->array, (void*)&recording_mode[4]);
+
+               if(capacity & CAM_CP_REC_MODE_MMS)
+                       eina_array_push(composer->array, (void*)&recording_mode[5]);
+       }
+}
+
+
+void cam_compose_menu_flash(void *data, cam_menu_composer* composer)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(5);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
+
+       unsigned int capacity = 0;
+       GetCamDevFlashCaps(&capacity, data);
+
+       if(capacity & CAM_CP_FLASH_OFF)
+               eina_array_push(composer->array, (void*)&flash[0]);
+
+       if(capacity & CAM_CP_FLASH_ON)
+               eina_array_push(composer->array, (void*)&flash[1]);
+
+       if(camapp->camera_mode == CAM_CAMERA_MODE){
+               if(capacity & CAM_CP_FLASH_AUTO)
+               eina_array_push(composer->array, (void*)&flash[2]);
+       }
+
+}
+
+void cam_compose_menu_timer_mode(void *data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(4);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 8);
+
+       eina_array_push(composer->array, (void*)&timer[0]);
+       eina_array_push(composer->array, (void*)&timer[1]);
+       eina_array_push(composer->array, (void*)&timer[2]);
+       eina_array_push(composer->array, (void*)&timer[3]);
+}
+
+void cam_compose_menu_storage(void* data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(2);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 4);
+
+       eina_array_push(composer->array, (void*)&storage[0]);
+       eina_array_push(composer->array, (void*)&storage[1]);
+}
+
+void cam_compose_menu_volume_key(void* data, cam_menu_composer* composer)
+{
+       cam_retm_if(composer == NULL, "composer is NULL");
+
+       composer->array = eina_array_new(2);
+       if (!(composer->array)) {
+               cam_critical(LOG_CAM, "could not create new eina array");
+               return;
+       }
+       eina_array_step_set(composer->array, sizeof(*(composer->array)), 2);
+
+       eina_array_push(composer->array, (void*)&volume_key[0]);
+       eina_array_push(composer->array, (void*)&volume_key[1]);
+}
+
+void cam_compose_free(cam_menu_composer* composer)
+{
+       cam_ret_if(composer == NULL);
+
+       if (composer->title)
+               free(composer->title);
+
+       if (composer->array)
+               eina_array_free(composer->array);
+
+       free(composer);
+}
+
+gboolean cam_is_enabled_menu(void *data, const CAM_MENU_ITEM item)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       switch(item) {
+               case CAM_MENU_SHORTCUTS:
+                       return TRUE;
+               case CAM_MENU_BURST_SHOT_MODE:
+                       return __is_enabled_burstshot((void*)ad);
+               case CAM_MENU_SELF_PORTRAIT:
+                       return __is_enabled_self_mode((void*)ad);
+               case CAM_MENU_FLASH:
+                       return __is_enabled_flash((void*)ad);
+               case CAM_MENU_SHOOTING_MODE:
+                       return __is_enabled_shooting_mode((void*)ad);
+               case CAM_MENU_RECORDING_MODE:
+                       return __is_enabled_recording_mode((void*)ad);
+               case CAM_MENU_SCENE_MODE:
+                       return __is_enabled_scene_mode((void*)ad);
+               case CAM_MENU_EXPLOSURE_VALUE:
+                       return __is_enabled_explosure_value((void*)ad);
+               case CAM_MENU_FOCUS_MODE:
+                       return __is_enabled_focus_mode((void*)ad);
+               case CAM_MENU_TIMER:
+                       return __is_enabled_timer((void*)ad);
+               case CAM_MENU_EFFECTS:
+                       return __is_enabled_effects((void*)ad);
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       return __is_enabled_photo_resolution((void*)ad);
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       return __is_enabled_video_resolution((void*)ad);
+               case CAM_MENU_WHITE_BALANCE:
+                       return __is_enabled_white_balance((void*)ad);
+               case CAM_MENU_ISO:
+                       return __is_enabled_iso((void*)ad);
+               case CAM_MENU_METERING:
+                       return __is_enabled_metering((void*)ad);
+               case CAM_MENU_ANTI_SHAKE:
+                       return __is_enabled_anti_shake((void*)ad);
+               case CAM_MENU_OUTDOOR_VISIBILITY:
+                       return __is_enabled_outdoor_visibility((void*)ad);
+               case CAM_MENU_AUTO_CONTRAST:
+                       return __is_enabled_auto_contrast((void*)ad);
+               case CAM_MENU_GUIDELINES:
+                       return TRUE;
+               case CAM_MENU_CAPTURE_VOICE:
+                       return __is_enabled_capture_voice((void*)ad);
+               case CAM_MENU_SAVE_AS_FLIP:
+                       return __is_enabled_save_as_flip((void*)ad);
+               case CAM_MENU_GPS_TAG:
+                       return __is_enabled_gps_tag((void*)ad);
+               case CAM_MENU_STORAGE:
+                       return __is_enalbed_storage((void*)ad);;
+               case CAM_MENU_RESET:
+                       return TRUE;
+               case CAM_MENU_VOLUME_KEY:
+                       return TRUE;
+               default:
+                       break;
+               }
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_burstshot(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, NULL);
+
+       if (!(capacity & CAM_CP_FUNC_BURST_SHOT_MODE))
+               return FALSE;
+
+       if ((camapp->shooting_mode != CAM_SINGLE_MODE)
+                       && (camapp->shooting_mode != CAM_SELF_SINGLE_MODE))
+               return FALSE;
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_flash(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, NULL);
+
+       if(!(capacity & CAM_CP_FUNC_FLASH_MODE))
+               return FALSE;
+
+       if(ad->battery_status == LOW_BATTERY_WARNING_STATUS)
+               return FALSE;
+
+       if(!(camapp->scene_mode == CAM_SCENE_NONE
+               || camapp->scene_mode == CAM_SCENE_PORTRAIT
+               || camapp->scene_mode == CAM_SCENE_BACKLIGHT
+               || camapp->scene_mode == CAM_SCENE_PARTY
+               || camapp->scene_mode == CAM_SCENE_TEXT) )
+               return FALSE;
+
+       if (ad->torchlight_on)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_shooting_mode(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_SHOT_MODE))
+               return FALSE;
+
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->allow_switch == FALSE
+               && camapp->camera_mode == CAM_CAMCORDER_MODE)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_recording_mode(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->allow_switch == FALSE
+               && camapp->camera_mode == CAM_CAMERA_MODE)
+               return FALSE;
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->resolution == CAM_RESOLUTION_QCIF)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_scene_mode(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_SCENE_MODE))
+               return FALSE;
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->allow_switch == FALSE
+               && camapp->camera_mode == CAM_CAMCORDER_MODE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_explosure_value(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_EXPOSURE))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_focus_mode(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_FOCUS_MODE))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_timer(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_effects(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_EFFECT_MODE))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_photo_resolution(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->allow_switch == FALSE
+               && camapp->camera_mode == CAM_CAMCORDER_MODE)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_video_resolution(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(camapp->recording_mode == CAM_RECORD_MMS
+               || camapp->recording_mode == CAM_RECORD_SELF_MMS
+               || camapp->recording_mode == CAM_RECORD_SLOW
+               || camapp->recording_mode == CAM_RECORD_FAST)
+               return FALSE;
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+               && ad->exe_args->allow_switch == FALSE
+               && camapp->camera_mode == CAM_CAMERA_MODE)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_white_balance(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_WHITE_BALANCE))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       return TRUE;
+}
+
+static gboolean __is_enabled_iso(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_ISO))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       if(camapp->camera_mode == CAM_CAMCORDER_MODE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_metering(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_METERING))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       if(camapp->camera_mode == CAM_CAMCORDER_MODE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_anti_shake(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if (!(capacity & CAM_CP_FUNC_CAM_ANS))
+               return FALSE;
+
+       if (camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_rec_anti_shake(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_REC_ANS))
+               return FALSE;
+
+       return TRUE;
+}
+
+
+static gboolean __is_enabled_outdoor_visibility(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_OUTDOOR))
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_auto_contrast(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_AUTO_CONTRAST))
+               return FALSE;
+
+       if(camapp->scene_mode != CAM_SCENE_NONE)
+               return FALSE;
+
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_self_mode(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_SELF_MODE))
+               return FALSE;
+       return TRUE;
+
+}
+
+
+static gboolean __is_enabled_capture_voice(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_CAPTURE_VOICE))
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_gps_tag(void* data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_GPS))
+               return FALSE;
+
+       return TRUE;
+
+}
+
+static gboolean __is_enabled_save_as_flip(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       unsigned int capacity;
+       GetCamDevFuncCaps(&capacity, (void*)ad);
+
+       if(!(capacity & CAM_CP_FUNC_SAVE_AS_FLIP))
+               return FALSE;
+
+       return TRUE;
+
+}
+
+
+static gboolean __is_enalbed_storage(void* data)
+{
+       int noti_message;
+       int ret = -1;
+
+       ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &noti_message);
+
+       if ( ret != 0 ) // falied
+       {
+               cam_debug(LOG_CAM, "Get %s is failed", VCONFKEY_SYSMAN_MMC_STATUS);
+               return FALSE;
+       }
+
+       if(noti_message==VCONFKEY_SYSMAN_MMC_MOUNTED)
+       {
+               return TRUE;
+       }
+       return FALSE;
+}
+
diff --git a/src/cam_mm.c b/src/cam_mm.c
new file mode 100755 (executable)
index 0000000..5d799ad
--- /dev/null
@@ -0,0 +1,2431 @@
+/*
+ * 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 <string.h>
+#include "cam_mm.h"
+#include "cam_debug.h"
+#include "cam_ta.h"
+#include "cam_property.h"
+#include "cam_typeconverter.h"
+
+typedef struct _CamMMHandle {
+       camera_h hcam;
+       recorder_h hrec;
+       camera_device_e hdev;
+} CamMMHandle;
+
+static unsigned int g_caps = 0;
+static int g_caps_cb_cnt = 0;
+
+
+static void __get_iso_cb(camera_attr_iso_e iso, void *user_data);
+static void __get_effect_cb(camera_attr_effect_mode_e effect, void *user_data);
+static void __get_fps_cb(camera_attr_fps_e fps, void *user_data);
+static void __get_wb_cb(camera_attr_whitebalance_e wb, void *user_data);
+static void __get_focus_cb(camera_attr_af_mode_e focus, void *user_data);
+static void __get_metering_cb(camera_attr_exposure_mode_e metering, void *user_data);
+static void __get_scene_cb(camera_attr_scene_mode_e scene, void *user_data);
+static void __get_flash_cb(camera_attr_flash_mode_e flash, void *user_data);
+static void __get_capture_res_cb(int width, int height, void *user_data);
+static void __get_recording_res_cb(int width, int height, void *user_data);
+
+
+
+void rec_detail_error_get(int err_no)
+{
+       switch(err_no) {
+       case RECORDER_ERROR_INVALID_PARAMETER:
+               DEBUG_TRACE("RECORDER_ERROR_INVALID_PARAMETER");
+               break;
+       case RECORDER_ERROR_INVALID_STATE:
+               DEBUG_TRACE("RECORDER_ERROR_INVALID_STATE");
+               break;
+       case RECORDER_ERROR_OUT_OF_MEMORY:
+               DEBUG_TRACE("RECORDER_ERROR_OUT_OF_MEMORY");
+               break;
+       case RECORDER_ERROR_DEVICE:
+               DEBUG_TRACE("RECORDER_ERROR_DEVICE");
+               break;
+       case RECORDER_ERROR_INVALID_OPERATION:
+               DEBUG_TRACE("RECORDER_ERROR_INVALID_OPERATION");
+               break;
+       case RECORDER_ERROR_SOUND_POLICY:
+               DEBUG_TRACE("RECORDER_ERROR_SOUND_POLICY");
+               break;
+       case RECORDER_ERROR_NONE:
+               DEBUG_TRACE("NO ERROR");
+               break;
+       default:
+               DEBUG_TRACE("unknown error,err_no = %d", err_no);
+
+       }
+
+}
+void cam_detail_error_get(int err_no)
+{
+       switch(err_no) {
+       case CAMERA_ERROR_INVALID_PARAMETER:
+               DEBUG_TRACE("CAMERA_ERROR_INVALID_PARAMETER");
+               break;
+       case CAMERA_ERROR_INVALID_STATE:
+               DEBUG_TRACE("CAMERA_ERROR_INVALID_STATE");
+               break;
+       case CAMERA_ERROR_OUT_OF_MEMORY:
+               DEBUG_TRACE("CAMERA_ERROR_OUT_OF_MEMORY");
+               break;
+       case CAMERA_ERROR_DEVICE:
+               DEBUG_TRACE("CAMERA_ERROR_DEVICE");
+               break;
+       case CAMERA_ERROR_INVALID_OPERATION:
+               DEBUG_TRACE("CAMERA_ERROR_INVALID_OPERATION");
+               break;
+       case CAMERA_ERROR_SOUND_POLICY:
+               DEBUG_TRACE("CAMERA_ERROR_SOUND_POLICY");
+               break;
+       case CAMERA_ERROR_NONE:
+               DEBUG_TRACE("NO ERROR");
+               break;
+       default:
+               DEBUG_TRACE("unknown error,err_no = %d", err_no);
+
+       }
+}
+
+
+static CamMMHandle *g_mm_handle = NULL;
+
+int cam_mm_get_cam_state(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       int ret = 0;
+       camera_state_e state = 0;
+       ret = camera_get_state(g_mm_handle->hcam, &state);
+       if (ret == CAMERA_ERROR_NONE)
+               return (int)state;
+       else
+               return -1;
+}
+
+int cam_mm_get_state(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       int ret = 0;
+       camera_state_e state = 0;
+       struct appdata *ad =  (struct appdata *)cam_appdata_get();
+       g_return_val_if_fail(ad, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       g_return_val_if_fail(camapp, FALSE);
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+               ret = camera_get_state(g_mm_handle->hcam, (camera_state_e *)&state);
+               if (ret == CAMERA_ERROR_NONE)
+                       return (int)state;
+               else
+                       return -1;
+       }
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+               ret = recorder_get_state(g_mm_handle->hrec, (recorder_state_e *)&state);
+               if (ret == RECORDER_ERROR_NONE)
+                       return (int)state;
+               else
+                       return -1;
+       }
+       return -1;
+}
+
+int cam_mm_get_rec_state(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       int ret = 0;
+       recorder_state_e state = 0;
+       ret = recorder_get_state(g_mm_handle->hrec, (recorder_state_e *)&state);
+       if (ret == RECORDER_ERROR_NONE)
+               return (int)state;
+       else
+               return -1;
+}
+
+gboolean cam_mm_get_video_device(int *device)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+
+       if (g_mm_handle->hdev > CAMERA_DEVICE_CAMERA1)
+               return FALSE;
+
+       *device = g_mm_handle->hdev;
+       DEBUG_TRACE("%d,%d",g_mm_handle->hdev,*device);
+       return TRUE;
+}
+
+gboolean cam_mm_get_video_size(int *width, int *height)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       ret = camera_get_preview_resolution(g_mm_handle->hcam,  width, height);
+
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("camera_get_preview_resolution error code = %d" , ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_video_size(int width, int height)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_preview_resolution(g_mm_handle->hcam, width, height);
+
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_zoom(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       ret = camera_attr_get_zoom(g_mm_handle->hcam, value);
+       if (ret) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_zoom(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_zoom(g_mm_handle->hcam, value);
+       if (ret) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_wdr(int *value)
+{
+/*TODO:we do not need set this attribute now*/
+#ifdef TODO_SURRPORT
+       return TRUE;
+#endif
+}
+
+gboolean cam_mm_set_wdr(int value)
+{
+/*TODO:we do not need set this attribute now*/
+#ifdef TODO_SURRPORT
+       return TRUE;
+#endif
+}
+
+gboolean cam_mm_is_support_anti_hand_shake()
+{
+       bool ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_is_supported_anti_shake(g_mm_handle->hcam);
+
+       return ret;
+
+}
+
+gboolean cam_mm_get_anti_hand_shake(gboolean *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_is_enabled_anti_shake(g_mm_handle->hcam, (bool *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_anti_hand_shake(gboolean value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_enable_anti_shake(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return  TRUE;
+
+}
+
+gboolean cam_mm_get_auto_exposure(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_exposure_mode(g_mm_handle->hcam, (camera_attr_exposure_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_auto_exposure(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_exposure_mode(g_mm_handle->hcam, (camera_attr_exposure_mode_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_fps(camera_attr_fps_e value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_preview_fps(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+               cam_detail_error_get(ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_iso(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_iso(g_mm_handle->hcam, (camera_attr_iso_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_iso(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_iso(g_mm_handle->hcam, (camera_attr_iso_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_focus_mode(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_af_mode(g_mm_handle->hcam, (camera_attr_af_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_focus_mode(int value)
+{
+       int ret = 0;
+       ret = camera_attr_set_af_mode(g_mm_handle->hcam, (camera_attr_af_mode_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_zoom_valid_intrange(int *min, int *max)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_zoom_range(g_mm_handle->hcam, min, max);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_brightless_valid_intrange(int *min, int *max)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_brightness_range(g_mm_handle->hcam, min, max);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_exposure_valid_intrange(int *min, int *max)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_exposure_range(g_mm_handle->hcam, min, max);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_af_area(int x, int y, int w, int h)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       DEBUG_TRACE("\n Touch AF area ![ x,y,width,height: %d,%d,%d,%d ]\n", x, y, w, h);
+
+       ret = camera_attr_set_af_area(g_mm_handle->hcam, x, y);
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("camera_attr_set_af_area failed [%d]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_detect_mode(int *value)
+{
+#ifndef TODO_SURRPORT
+/*TODO:framework not surrport it*/
+#endif
+       return TRUE;
+}
+
+gboolean cam_mm_set_detect_mode(int value)
+{
+/*TODO:libmm-camcorder not surrport it*/
+#ifdef TODO_SURRPORT
+       return TRUE;
+#endif
+}
+
+gboolean cam_mm_get_image_enc_quality(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_image_quality(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_image_enc_quality(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_image_quality(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_flash(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_flash_mode(g_mm_handle->hcam, (camera_attr_flash_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_flash(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_flash_mode(g_mm_handle->hcam, (camera_attr_flash_mode_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_enable_auto_contrast(gboolean enable)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_enable_auto_contrast(g_mm_handle->hcam, enable);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_is_enabled_auto_contrast(gboolean *enable)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_is_enabled_auto_contrast(g_mm_handle->hcam, (bool *)enable);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_brightness(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_brightness(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_brightness(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_brightness(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_white_balance(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_whitebalance(g_mm_handle->hcam, (camera_attr_whitebalance_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_white_balance(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_whitebalance(g_mm_handle->hcam, (camera_attr_whitebalance_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_effect(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_effect(g_mm_handle->hcam, (camera_attr_effect_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_effect(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_effect(g_mm_handle->hcam, (camera_attr_effect_mode_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_program_mode(int *value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_get_scene_mode(g_mm_handle->hcam, (camera_attr_scene_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_program_mode(int value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_set_scene_mode(g_mm_handle->hcam, value);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_outdoor_visibility(gboolean on)
+{
+       int scenario = -1;
+
+       if (cam_mm_get_mdnie_mode(&scenario) == FALSE || scenario != SCENARIO_CAMERA) {
+               if (cam_mm_set_mdnie_mode(TRUE) == FALSE) {
+                       cam_critical(LOG_MM, "device_set_image_enhance_scenario() fail");
+                       return FALSE;
+               }
+       }
+
+       if (on) {
+               if (device_set_image_enhance_outdoor(OUTDOOR_ON) < 0) {
+                       cam_critical(LOG_MM, "device_set_image_enhance_outdoor(on) fail");
+                       return FALSE;
+               }
+       } else {
+               if (device_set_image_enhance_outdoor(OUTDOOR_OFF) < 0) {
+                       cam_critical(LOG_MM, "device_set_image_enhance_outdoor(off) fail");
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_get_outdoor_visibility(gboolean *on)
+{
+       int val = -1;
+       if ((val = device_get_image_enhance_outdoor()) < 0)
+               return FALSE;
+       if (val == OUTDOOR_OFF)
+               *on = FALSE;
+       else
+               *on = TRUE;
+       return TRUE;
+}
+
+
+gboolean cam_mm_is_supported_outdoor_visibility(void)
+{
+       if (device_get_image_enhance_info() < 0)
+               return FALSE;
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_mdnie_mode(gboolean on)
+{
+       DEBUG_TRACE("mode :%d", on);
+       if (cam_mm_is_supported_outdoor_visibility()) {
+
+               if (on) {
+                       if (device_set_image_enhance_scenario(SCENARIO_CAMERA) < 0) {
+                               cam_critical(LOG_MM, "device_set_image_enhance_scenario(SCENARIO_CAMERA) fail");
+                               return FALSE;
+                       }
+               } else {
+                       if (device_set_image_enhance_scenario(SCENARIO_UI) < 0) {
+                               cam_critical(LOG_MM, "device_set_image_enhance_scenario(SCENARIO_UI) fail");
+                               return FALSE;
+                       }
+               }
+       } else {
+               cam_critical(LOG_MM, "cam_mm_is_supported_outdoor_visibility() false");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_get_mdnie_mode(int *val)
+{
+       int ret = -1;
+       if ((ret = device_get_image_enhance_scenario()) < 0) {
+               cam_critical(LOG_MM, "device_get_image_enhance_scenario() fail");
+               return FALSE;
+       }
+
+       *val = ret;
+       return TRUE;
+}
+
+
+
+gboolean cam_mm_set_audio_recording(gboolean b_on)
+{
+       int ret = 0;
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       if (b_on)
+               ret = recorder_attr_set_mute(g_mm_handle->hrec, FALSE);
+       else
+               ret = recorder_attr_set_mute(g_mm_handle->hrec, TRUE);
+
+       if (ret != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_image_count(int value)
+{
+       return TRUE;
+}
+
+gboolean cam_mm_get_recommanded_preview_size(int *width, int *height)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_get_recommended_preview_resolution(g_mm_handle->hcam,      width, height);
+
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("camera_get_recommended_preview_resolution failed - code[%x] name[%s]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+gboolean cam_mm_get_image_size(int *width, int *height)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_get_capture_resolution(g_mm_handle->hcam, width, height);
+
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x] name[%s]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_image_size(int width, int height)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_capture_resolution(g_mm_handle->hcam, width, height);
+
+       if (ret != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("cam_mm_set_image_size failed");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_video_encoder_bitrate(int bitrate)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_attr_set_video_encoder_bitrate(g_mm_handle->hrec, bitrate);
+       if (ret != RECORDER_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_audio_encoder_bitrate(int bitrate)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_attr_set_audio_encoder_bitrate(g_mm_handle->hrec, bitrate);
+       if (ret != RECORDER_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_display_device(int display_device, void *xid)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_display(g_mm_handle->hcam, display_device, xid);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_display_rotate(int rotate)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_x11_display_rotation(g_mm_handle->hcam, rotate);
+       if (ret != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_camera_rotate(int camera_rotate)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       #ifdef CAMERA_MACHINE_I686
+       ret = camera_attr_set_stream_rotation(g_mm_handle->hcam, 0);
+       #else
+       ret = camera_attr_set_stream_rotation(g_mm_handle->hcam, camera_rotate);
+       #endif
+       if (ret != CAMERA_ERROR_NONE) {
+               cam_detail_error_get(ret);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_display_geometry_method(int *value)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_get_x11_display_mode(g_mm_handle->hcam, (camera_display_mode_e *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_display_geometry_method(int value)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_x11_display_mode(g_mm_handle->hcam, (camera_display_mode_e)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_display_visible(gboolean visible)
+{
+       int ret = 0;
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_set_x11_display_visible(g_mm_handle->hcam, visible);
+       if (ret != RECORDER_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_filename(const gchar *filename)
+{
+       int ret = 0;
+       /*char *err_name = NULL;*/
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       if (filename) {
+               ret = recorder_set_filename(g_mm_handle->hrec, filename);
+               if (ret != RECORDER_ERROR_NONE) {
+                       return FALSE;
+               }
+               return TRUE;
+
+       } else {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_filename(char **filename, gint *size)
+{
+       int ret = 0;
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_get_filename(g_mm_handle->hrec, filename);
+       if (ret != RECORDER_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_max_size(int *value)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       ret = recorder_attr_get_time_limit(g_mm_handle->hrec, value);
+       if (ret != RECORDER_ERROR_NONE) {
+               return  FALSE;
+
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_max_time(int *value)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_attr_get_time_limit(g_mm_handle->hrec, value);
+       if (ret != RECORDER_ERROR_NONE) {
+               return  FALSE;
+
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_max_size(int max_val)
+{
+
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_attr_set_size_limit(g_mm_handle->hrec, max_val);
+       if (ret != RECORDER_ERROR_NONE) {
+               return  FALSE;
+
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_max_time(int max_val)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       ret = recorder_attr_set_time_limit(g_mm_handle->hrec, max_val);
+       if (ret != RECORDER_ERROR_NONE) {
+               return  FALSE;
+
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_tag_enable(int *value)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_is_enabled_tag(g_mm_handle->hcam, (bool *)value);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_tag_enable(gboolean bvalue)
+{
+       int ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       ret = camera_attr_enable_tag(g_mm_handle->hcam, (bool)bvalue);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_tag_img_orient(int orient)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       camera_error_e ret;
+       ret = camera_attr_set_tag_orientation(g_mm_handle->hcam, (camera_attr_tag_orientation_e)orient);
+       if (ret != CAMERA_ERROR_NONE) {
+               cam_detail_error_get(ret);
+               return  FALSE;
+
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_file_format(int format)
+{
+       recorder_error_e ret;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       ret = recorder_set_file_format(g_mm_handle->hrec, format);
+       if (ret != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("recorder_set_file_format failed - [%d]", ret);
+               return  FALSE;
+
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_video_profile(void)
+{
+       recorder_error_e e;
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_attr_set_audio_device(g_mm_handle->hrec, RECORDER_AUDIO_DEVICE_MIC);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_codec(int audio_codec, int video_codec)
+{
+       int ret = 0;
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_set_audio_encoder(g_mm_handle->hrec, audio_codec);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               rec_detail_error_get(ret);
+               return FALSE;
+       }
+       e = recorder_set_video_encoder(g_mm_handle->hrec, video_codec);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_audio_source(int sample_rate, int channel)
+{
+       int ret = 0;
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+       e = recorder_attr_set_audio_samplerate(g_mm_handle->hrec, sample_rate);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               return FALSE;
+       }
+       e = recorder_attr_set_audio_channel(g_mm_handle->hrec, channel);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("set attr failed - code[%x]\n", ret);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_video_source_format(int format)
+{
+       if (format <= CAMERA_PIXEL_FORMAT_INVALID || format > CAMERA_PIXEL_FORMAT_JPEG)
+               return FALSE;
+
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       err = camera_set_preview_format(g_mm_handle->hcam, format);
+
+       DEBUG_TRACE("!!!!!!!!!!!!!!!! format:%d !!!!!!!!!!!!!!!!!!!", format);
+       if (err != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_video_source_format(const char *attribute_name, int *format)
+{
+       DEBUG_TRACE("attribute_name = %s", attribute_name);
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       err = camera_get_preview_format(g_mm_handle->hcam, format);
+       if (err != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean  cam_mm_get_front_cam_display_rotate_value(int *value, int *rotate)
+{
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       err = camera_attr_get_lens_orientation(g_mm_handle->hcam, value);
+       switch (*value) {
+       case 0:
+               *rotate = CAMERA_ROTATION_NONE;
+               break;
+       case 90:
+               *rotate = CAMERA_ROTATION_90;
+               break;
+       case 180:
+               *rotate = CAMERA_ROTATION_180;
+               break;
+       case 270:
+               *rotate = CAMERA_ROTATION_270;
+               break;
+       default:
+               *rotate = CAMERA_ROTATION_NONE;
+
+       }
+       if (err != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_get_scene_mode(camera_attr_scene_mode_e *mode)
+{
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       err = camera_attr_get_scene_mode(g_mm_handle->hcam, mode);
+       if (err != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_scene_mode(camera_attr_scene_mode_e mode)
+{
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       err = camera_attr_set_scene_mode(g_mm_handle->hcam, mode);
+       if (err != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_conti_shot_break(gboolean bvalue)
+{
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       if (bvalue) {
+               err = camera_stop_continuous_capture(g_mm_handle->hcam);
+               if (err != CAMERA_ERROR_NONE) {
+
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_capture_format(int value)
+{
+       int err;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       err = camera_set_capture_format(g_mm_handle->hcam, value);
+       if (err != CAMERA_ERROR_NONE) {
+
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_get_shutter_sound(int *value)
+{
+/*todo:for lawer policy, capi could not surport it*/
+#ifndef TODO_SURRPORT
+       return cam_mm_get_attr_int(MMCAM_SHUTTER_SOUND, value);
+#else
+       return TRUE;
+#endif
+
+}
+gboolean cam_mm_set_shutter_sound(int value)
+{
+/*todo:for lawer policy, capi could not surport it*/
+#ifndef TODO_SURRPORT
+       return cam_mm_set_attr_int(MMCAM_SHUTTER_SOUND, value);
+#else
+       return TRUE;
+#endif
+
+}
+
+gboolean cam_mm_remove_geo_tag(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+#ifdef TODO_SURRPORT
+       int ret = 0;
+       ret = camera_attr_remove_geotag(g_mm_handle->hcam);
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+#endif /*TODO:capi has issue.if it fix, I will open it*/
+       return TRUE;
+}
+
+gboolean cam_mm_enable_geo_tag(gboolean value)
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       if (value) {
+               ret = camera_attr_set_geotag(g_mm_handle->hcam, -1.0, -1.0, -1.0);
+       } else {
+               ret = camera_attr_remove_geotag(g_mm_handle->hcam);
+       }
+       if (ret != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_reset_recording_motion_fps()
+{
+       int ret = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       ret = recorder_attr_set_recording_motion_rate(g_mm_handle->hrec, DEFAULT_REC_FPS);
+       if (ret != RECORDER_ERROR_NONE) {
+
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_gps_data(double lat, double lon, double alt)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       e = camera_attr_set_geotag(g_mm_handle->hcam, lat, lon, alt);
+       if (e != CAMERA_ERROR_NONE) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_is_preview_started(int mode)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       int mm_state = 0;
+       mm_state = cam_mm_get_state();
+
+       if ((CAM_CAMERA_MODE == mode && mm_state < CAMERA_STATE_PREVIEW)
+               || (mode == CAM_CAMCORDER_MODE && mm_state < RECORDER_STATE_READY) ) {
+               cam_critical(LOG_MM, "cur_state:%d", mm_state);
+               return FALSE;
+       } else
+               return TRUE;
+}
+
+gboolean cam_mm_preview_start(int mode)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       g_return_val_if_fail(ad, FALSE);
+
+       int ret = (mode == CAM_CAMERA_MODE) ? CAMERA_ERROR_NONE : RECORDER_ERROR_NONE;
+       if (CAM_CAMERA_MODE == mode) {
+
+               ret = camera_start_preview(g_mm_handle->hcam);
+               if (ret != CAMERA_ERROR_NONE) {
+                       if (ret == CAMERA_ERROR_SOUND_POLICY) {
+                               ad->fw_error_type = CAMERA_ERROR_SOUND_POLICY;
+                       } else if (ret == CAMERA_ERROR_SECURITY_RESTRICTED) {
+                               cam_app_mdm_syspopup(ad);
+                               return FALSE;
+                       } else {
+                               cam_critical(LOG_MM, "camera_start_preview failed");
+                               return FALSE;
+                       }
+               }
+               cam_debug(LOG_MM, " ret : %d", ret);
+
+       }else if (CAM_CAMCORDER_MODE == mode) {
+
+               g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+               ret = recorder_prepare(g_mm_handle->hrec);
+               if (ret != RECORDER_ERROR_NONE) {
+                       if (ret == RECORDER_ERROR_SOUND_POLICY) {
+                               ad->fw_error_type = RECORDER_ERROR_SOUND_POLICY;
+                       } else if (ret == RECORDER_ERROR_SECURITY_RESTRICTED) {
+                               cam_app_mdm_syspopup(ad);
+                               return FALSE;
+                       } else {
+                               cam_critical(LOG_MM, "camera_start_preview failed");
+                               return FALSE;
+                       }
+               }
+               cam_debug(LOG_MM, " ret : %d", ret);
+       }
+
+       return TRUE;
+
+}
+
+gboolean cam_mm_preview_stop(int mode)
+{
+       int state = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       if (CAM_CAMERA_MODE == mode) {
+               state = cam_mm_get_cam_state();
+               cam_critical(LOG_MM, " camera state : %d", state);
+               /*todo:please consider recorder and camera*/
+               if (state < 0)
+                       return FALSE;
+
+               switch (state) {
+               case CAMERA_STATE_NONE:
+               case CAMERA_STATE_CAPTURING:
+               case CAMERA_STATE_CREATED:
+                       return FALSE;
+               case CAMERA_STATE_PREVIEW:
+                       CHECK_MM_ERROR(camera_stop_preview(g_mm_handle->hcam));
+                       break;
+               case CAMERA_STATE_CAPTURED:
+                       break;
+               }
+               return TRUE;
+       }else if (CAM_CAMCORDER_MODE == mode) {
+
+               state = cam_mm_get_rec_state();
+               g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+               cam_debug(LOG_MM, " camera state : %d", state);
+               /*todo:please consider recorder and camera*/
+               if (state < 0)
+                       return FALSE;
+
+               switch (state) {
+               case RECORDER_STATE_NONE:
+               case RECORDER_STATE_RECORDING:
+               case RECORDER_STATE_PAUSED:
+                       return FALSE;
+
+               case RECORDER_STATE_READY:
+                       CHECK_MM_ERROR(recorder_unprepare(g_mm_handle->hrec));
+                       break;
+
+               case RECORDER_STATE_CREATED:
+                       break;
+
+               }
+               return TRUE;
+
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_is_created(void)
+{
+       debug_fenter(LOG_MM);
+       if (g_mm_handle) {
+               return TRUE;
+       }
+       return FALSE;
+}
+
+gboolean cam_mm_create(int camera_type, int mode)
+{
+               CAM_TA_ACUM_ITEM_BEGIN("----cam_mm_create", 0);
+       DEBUG_TRACE
+               ("--------------------------------START----------------------------");
+       DEBUG_TRACE("camera_type = %d" ,camera_type);
+       if (g_mm_handle) {
+               cam_critical(LOG_MM, "The mm handle is already created");
+               return FALSE;
+       }
+       g_return_val_if_fail(g_mm_handle == NULL, FALSE);
+       camera_h hcam;
+       camera_error_e e;
+       e = camera_create(camera_type, &hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_create - error(%d)", e);
+               return FALSE;
+       }
+       g_return_val_if_fail(hcam, FALSE);
+       recorder_h hrec = NULL;
+       recorder_error_e re;
+       re = recorder_create_videorecorder(hcam, &hrec);
+       if (re != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_create - error(%d)", e);
+               recorder_destroy(hrec);
+               CHECK_MM_ERROR(camera_destroy(hcam));
+               return FALSE;
+       }
+       g_return_val_if_fail(hrec, FALSE);
+       g_mm_handle = g_new0(CamMMHandle, 1);
+       if (g_mm_handle) {
+               g_mm_handle->hcam = hcam;
+               g_mm_handle->hdev = camera_type;
+               g_mm_handle->hrec = hrec;
+       } else {
+               DEBUG_TRACE("[ERROR] memory allocation failed", e);
+               recorder_destroy(hrec);
+               CHECK_MM_ERROR(camera_destroy(hcam));
+               return FALSE;
+       }
+
+       DEBUG_TRACE("camera_type = %d" , g_mm_handle->hdev);
+
+       DEBUG_TRACE("--------------END---------------");
+       CAM_TA_ACUM_ITEM_BEGIN("----cam_mm_create", 0);
+
+       return TRUE;
+}
+
+gboolean cam_mm_destory(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+
+       if( g_mm_handle->hrec != 0){
+               recorder_destroy(g_mm_handle->hrec);
+               g_mm_handle->hrec = 0;
+       }
+
+       if(g_mm_handle->hcam != 0){
+               camera_destroy(g_mm_handle->hcam);
+               g_mm_handle->hcam = 0;
+       }
+
+       g_mm_handle->hdev = -1;
+
+       g_free(g_mm_handle);
+       g_mm_handle = NULL;
+
+       return TRUE;
+}
+
+gboolean cam_mm_continuous_capture_start(int count, int interval, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb , void *user_data)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       cam_debug(LOG_MM, "");
+       CAM_TA_ACUM_ITEM_END("        camera key to capture start", 0);
+
+       if (cam_mm_get_state() == CAMERA_STATE_PREVIEW) {
+               CAM_TA_ACUM_ITEM_BEGIN("camera_start_continuous_capture", 0);
+               CHECK_MM_ERROR(camera_start_continuous_capture(g_mm_handle->hcam, count, interval, capturing_cb, completed_cb, user_data));
+               CAM_TA_ACUM_ITEM_END("camera_start_continuous_capture", 0);
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__, __LINE__, cam_mm_get_state());
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+gboolean cam_mm_capture_start(camera_capturing_cb capturing_cb , camera_capture_completed_cb completed_cb , void *user_data)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       struct appdata *ad =  (struct appdata *)user_data;
+       g_return_val_if_fail(ad, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       g_return_val_if_fail(camapp, FALSE);
+
+       cam_debug(LOG_MM, "");
+       CAM_TA_ACUM_ITEM_END("        camera key to capture start", 0);
+
+       gboolean do_capture = FALSE;
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               if (cam_mm_get_state() == CAMERA_STATE_PREVIEW)
+                       do_capture = TRUE;
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               if (cam_mm_get_state() == RECORDER_STATE_RECORDING
+                       || cam_mm_get_state() == RECORDER_STATE_PAUSED)
+                       do_capture = TRUE;
+       }
+
+       if (do_capture){
+               CAM_TA_ACUM_ITEM_BEGIN("camera_start_capture", 0);
+               CHECK_MM_ERROR(camera_start_capture(g_mm_handle->hcam, capturing_cb, completed_cb, user_data));
+               CAM_TA_ACUM_ITEM_END("camera_start_capture", 0);
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__,
+                      __LINE__, cam_mm_get_state());
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_capture_stop(gboolean skip_preview, CamMode mode)
+{
+       int state = CAMERA_STATE_NONE;/*TODO:now the value is same to record*/
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       cam_debug(LOG_MM, " start");
+
+       state = cam_mm_get_state();
+       if (state == RECORDER_STATE_READY && skip_preview == FALSE && mode == CAM_CAMCORDER_MODE) {
+               CHECK_MM_ERROR(recorder_prepare(g_mm_handle->hrec));
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__,
+                      __LINE__, cam_mm_get_state());
+               return FALSE;
+       }
+
+       cam_debug(LOG_MM, " done");
+
+       return TRUE;
+}
+
+gboolean cam_mm_rec_start()
+{
+       int state = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       state = cam_mm_get_state();
+       if ((state == RECORDER_STATE_READY)
+           || (state == RECORDER_STATE_PAUSED)) {
+               CHECK_MM_ERROR(recorder_start(g_mm_handle->hrec));
+       } else {
+               DEBUG_TRACE("operation failed - state:%d \n", state);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_rec_stop(gboolean to_stop)
+{
+       int state = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       state = cam_mm_get_state();
+       if ((state == RECORDER_STATE_RECORDING)
+           || (state == RECORDER_STATE_PAUSED)) {
+               if (!to_stop) {
+                       CHECK_MM_ERROR(recorder_commit(g_mm_handle->hrec));
+               } else {
+                       CHECK_MM_ERROR(recorder_commit(g_mm_handle->hrec));
+                       CHECK_MM_ERROR(recorder_unprepare(g_mm_handle->hrec));
+               }
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__,
+                      __LINE__, state);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_rec_pause()
+{
+       int state = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       state = cam_mm_get_state();
+       if ((state == RECORDER_STATE_RECORDING)) {
+               CHECK_MM_ERROR(recorder_pause(g_mm_handle->hrec));
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__,
+                      __LINE__, state);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_rec_cancel()
+{
+       int state = 0;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       state = cam_mm_get_state();
+       if ((state == RECORDER_STATE_RECORDING)
+           || (state == RECORDER_STATE_PAUSED)) {
+               CHECK_MM_ERROR(recorder_cancel(g_mm_handle->hrec));
+       } else {
+               printf("[%s:%d] operation failed - state:%d \n", __func__,
+                      __LINE__, state);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_session_init(sound_session_type_e session_type)
+{
+       int ret = SOUND_MANAGER_ERROR_NONE;
+       if (ret != sound_manager_set_session_type(session_type)) {
+               DEBUG_TRACE("[%s:%d] operation failed - session_type:%d \n",
+                      __func__, __LINE__, session_type);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+gboolean cam_mm_start_focusing(gint af_mode)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       struct appdata *ad =  (struct appdata *)cam_appdata_get();
+       g_return_val_if_fail(ad, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       g_return_val_if_fail(camapp, FALSE);
+
+       cam_debug(LOG_UI, "");
+
+       int state = 0;
+       state = cam_mm_get_state();
+
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               if (state == CAMERA_STATE_PREVIEW
+                       || state == CAMERA_STATE_CREATED
+                       || state == CAMERA_STATE_CAPTURED) {
+                       if ((CamAppFocusMode)af_mode == CAM_FOCUS_MODE_CONTINUOUS) {
+                               cam_debug(LOG_UI, "continuous");
+                               CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, TRUE));
+                       } else {
+                               cam_debug(LOG_UI, "touchAF");
+                               CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, FALSE));
+                       }
+               } else {
+                       DEBUG_TRACE("Start focus operation failed in camera mode - invalid state:%d \n", state);
+                       return FALSE;
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               if (state == RECORDER_STATE_CREATED
+                       || state == RECORDER_STATE_READY
+                       || state == RECORDER_STATE_RECORDING
+                       || state == RECORDER_STATE_PAUSED) {
+                       if ((CamAppFocusMode)af_mode == CAM_FOCUS_MODE_CONTINUOUS) {
+                               CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, TRUE));
+                       } else {
+                               CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, FALSE));
+                       }
+               } else {
+                       DEBUG_TRACE("Start focus operation failed in camcorder mode- invalid state:%d \n", state);
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_stop_focusing()
+{
+       int state = 0;
+
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       cam_debug(LOG_UI, "");
+
+       state = cam_mm_get_state();
+       if (state == CAMERA_STATE_PREVIEW
+               || state == CAMERA_STATE_CREATED
+               || state == RECORDER_STATE_RECORDING) {
+               /*TODO:please think rec mod, but now the rec and cam mode state value is same*/
+               CHECK_MM_ERROR(camera_cancel_focusing(g_mm_handle->hcam));
+       } else {
+               printf
+                   ("[%s:%d] Stop focus operation failed - invalid state:%d \n",
+                    __func__, __LINE__, state);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_set_error_cb(camera_error_cb error_cb, void *data)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       e = camera_set_error_cb(g_mm_handle->hcam, error_cb, data);
+               if (e != CAMERA_ERROR_NONE) {
+                       DEBUG_TRACE("[ERROR] camera_set_error_cb - error(%d)", e);
+                       return FALSE;
+               }
+               return TRUE;
+
+}
+
+gboolean cam_mm_unset_error_cb(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+       e = camera_unset_error_cb(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_unset_error_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_state_changed_cb(camera_state_changed_cb state_cb, void *data)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_set_state_changed_cb(g_mm_handle->hcam, state_cb, data);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_set_state_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_unset_state_changed_cb(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_unset_state_changed_cb(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_unset_state_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+gboolean cam_mm_set_focus_changed_cb(camera_focus_changed_cb focus_cb, void *data)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_set_focus_changed_cb(g_mm_handle->hcam, focus_cb, data);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_set_focus_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_unset_focus_changed_cb(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_unset_focus_changed_cb(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_unset_focus_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_set_preview_cb(camera_preview_cb preview_cb, void *data)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_set_preview_cb(g_mm_handle->hcam, preview_cb, data);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_set_preview_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_unset_preview_cb(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_unset_preview_cb(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_unset_preview_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_camera_interrupted_cb(camera_interrupted_cb callback, void *data){
+
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_set_interrupted_cb(g_mm_handle->hcam, callback, data);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+gboolean cam_mm_set_recorder_interrupted_cb(recorder_interrupted_cb callback, void *data){
+
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_set_interrupted_cb(g_mm_handle->hrec, callback, data);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_recorder_set_state_changed_cb(recorder_state_changed_cb callback, void* user_data)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_set_state_changed_cb(g_mm_handle->hrec, callback, user_data);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_recorder_unset_state_changed_cb(void)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_unset_state_changed_cb(g_mm_handle->hrec);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_recorder_set_recording_status_cb(recorder_recording_status_cb callback, void* user_data)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_set_recording_status_cb(g_mm_handle->hrec, callback, user_data);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_recording_status_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_recorder_unset_recording_status_cb(void)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_unset_recording_status_cb(g_mm_handle->hrec);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_unset_recording_status_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_recorder_set_recording_limit_reached_cb(recorder_recording_limit_reached_cb callback, void* user_data)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_set_recording_limit_reached_cb(g_mm_handle->hrec, callback, user_data);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_set_recording_status_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_recorder_unset_recording_limit_reached_cb(void)
+{
+       recorder_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       e = recorder_unset_recording_limit_reached_cb(g_mm_handle->hrec);
+       if (e != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] recorder_unset_recording_status_cb - error(%d)", e);
+               rec_detail_error_get(e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_recording_motion(double rate)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hrec, FALSE);
+
+       int err;
+       err = recorder_attr_set_recording_motion_rate(g_mm_handle->hrec, rate);
+       if (err != RECORDER_ERROR_NONE) {
+               DEBUG_TRACE("recorder_attr_set_recording_motion_rate failed");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_mm_start_camera_face_detection(camera_face_detected_cb callback, void *data)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_start_face_detection(g_mm_handle->hcam, callback, data);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_start_face_detection - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_stop_camera_face_detection(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_stop_face_detection(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_stop_face_detection - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_is_supported_face_detection(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       return camera_is_supported_face_detection(g_mm_handle->hcam);
+
+}
+
+gboolean cam_mm_set_camera_face_zoom(int face_id)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_face_zoom(g_mm_handle->hcam, face_id);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_face_zoom - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_camera_cancel_face_zoom(void)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       e = camera_cancel_face_zoom(g_mm_handle->hcam);
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("[ERROR] camera_cancel_face_zoom - error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+
+}
+
+gboolean cam_mm_set_image_flip(gboolean value)
+{
+       camera_error_e e;
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       if (value) {
+               e = camera_attr_set_stream_flip(g_mm_handle->hcam, CAMERA_FLIP_HORIZONTAL);
+
+               if (g_mm_handle->hdev == 0) {
+                       e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_VERTICAL);
+               } else {
+                       e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
+               }
+       } else {
+               e = camera_attr_set_stream_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
+
+               if (g_mm_handle->hdev == 0) {
+                       e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
+               } else {
+                       e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_VERTICAL);
+               }
+       }
+
+       if (e != CAMERA_ERROR_NONE) {
+               DEBUG_TRACE("recorder_attr_set_recording_flip() error(%d)", e);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+gboolean cam_mm_get_caps_minmax(unsigned int type, int *min, int *max)
+{
+       if (!cam_mm_is_created()) {
+               cam_debug(LOG_CAM, "cam_mm_is_created() false");
+               return FALSE;
+       }
+
+       gboolean ret = TRUE;
+       int tempmin, tempmax = 0;
+
+       switch(type) {
+       case CAM_CP_FUNC_EXPOSURE:
+               {
+                        if (camera_attr_get_exposure_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_get_exposure_range() is false");
+                               ret = FALSE;
+                        }
+               }
+               break;
+       case CAM_CP_FUNC_BRIGHTNESS:
+               {
+                        if (camera_attr_get_brightness_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_get_brightness_range() is false");
+                               ret = FALSE;
+                        }
+               }
+               break;
+       case CAM_CP_FUNC_ZOOM:
+               {
+                       if (camera_attr_get_zoom_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_get_zoom_range() is false");
+                               ret = FALSE;
+                       }
+
+                       if (tempmin == tempmax) {
+                               cam_debug(LOG_CAM, "zoom is not supported");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       default:
+               {
+                       cam_debug(LOG_CAM, "not support get_minmax() about this type[%d]", type);
+                       ret = FALSE;
+               }
+               break;
+       }
+
+       if (!ret) {
+               tempmin = 0;
+               tempmax = 0;
+       }
+
+       *min = tempmin;
+       *max = tempmax;
+
+       return ret;
+}
+
+gboolean cam_mm_get_caps_range(unsigned int type, unsigned int *caps, void *user_data)
+{
+       if (!cam_mm_is_created()) {
+               cam_debug(LOG_CAM, "cam_mm_is_created() false");
+               return FALSE;
+       }
+
+       g_caps = 0;
+       g_caps_cb_cnt = 0;
+       gboolean ret = TRUE;
+
+       switch(type) {
+       case CAM_CP_FUNC_FLASH_MODE:
+               {
+                       if (camera_attr_foreach_supported_flash_mode(g_mm_handle->hcam,
+                               (camera_attr_supported_flash_mode_cb)__get_flash_cb, user_data) != CAMERA_ERROR_NONE ) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_flash_mode() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_ISO:
+               {
+                       if (camera_attr_foreach_supported_iso(g_mm_handle->hcam,
+                               (camera_attr_supported_iso_cb)__get_iso_cb, user_data) != CAMERA_ERROR_NONE ) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_iso() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_SCENE_MODE:
+               {
+                       if (camera_attr_foreach_supported_scene_mode(g_mm_handle->hcam,
+                               (camera_attr_supported_scene_mode_cb)__get_scene_cb, user_data) != CAMERA_ERROR_NONE ) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_scene_mode() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_METERING:
+               {
+                       if (camera_attr_foreach_supported_exposure_mode(g_mm_handle->hcam,
+                               (camera_attr_supported_exposure_mode_cb)__get_metering_cb, user_data) != CAMERA_ERROR_NONE ) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_exposure_mode() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_EFFECT_MODE:
+               {
+                       if (camera_attr_foreach_supported_effect(g_mm_handle->hcam,
+                               (camera_attr_supported_effect_cb)__get_effect_cb, user_data) != CAMERA_ERROR_NONE ) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_effect() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_WHITE_BALANCE:
+               {
+                       if (camera_attr_foreach_supported_whitebalance(g_mm_handle->hcam,
+                               (camera_attr_supported_whitebalance_cb)__get_wb_cb, user_data) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_whitebalance() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_FOCUS_MODE:
+               {
+                       if (camera_attr_foreach_supported_af_mode(g_mm_handle->hcam,
+                               (camera_attr_supported_af_mode_cb)__get_focus_cb, user_data) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_exposure_mode() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_FPS:
+               {
+                       if (camera_attr_foreach_supported_fps(g_mm_handle->hcam,
+                               (camera_attr_supported_fps_cb)__get_fps_cb, user_data) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_attr_foreach_supported_fps() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_CAM_RESOLUTION:
+               {
+                       if(camera_foreach_supported_capture_resolution(g_mm_handle->hcam,
+                               (camera_supported_capture_resolution_cb)__get_capture_res_cb, user_data) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_foreach_supported_capture_resolution() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       case CAM_CP_FUNC_REC_RESOLUTION:
+               {
+                       if(camera_foreach_supported_preview_resolution(g_mm_handle->hcam,
+                               (camera_supported_preview_resolution_cb)__get_recording_res_cb, user_data) != CAMERA_ERROR_NONE) {
+                               cam_debug(LOG_CAM, "camera_foreach_supported_capture_resolution() is fail");
+                               ret = FALSE;
+                       }
+               }
+               break;
+       default:
+               {
+                       cam_debug(LOG_CAM, "not support get_range() about this type[%d]", type);
+                       ret = FALSE;
+               }
+               break;
+       }
+
+       *caps = g_caps;
+       return ret;
+}
+
+const int cam_mm_get_caps_cb_cnt()
+{
+       return g_caps_cb_cnt;
+}
+
+static void __get_iso_cb(camera_attr_iso_e iso, void *user_data)
+{
+       cam_retm_if(iso > CAMERA_ATTR_ISO_3200, "input is invalid");
+
+       unsigned int uRet = cam_iso_dev_convert_caps(iso);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_effect_cb(camera_attr_effect_mode_e effect, void *user_data)
+{
+       cam_retm_if(effect > CAMERA_ATTR_EFFECT_SKETCH, "input is invalid");
+
+       unsigned int uRet = cam_effect_dev_convert_caps(effect);
+       if (uRet != 0 ) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_fps_cb(camera_attr_fps_e fps, void *user_data)
+{
+       cam_retm_if(fps > CAMERA_ATTR_FPS_120, "input is invalid");
+
+       unsigned int uRet = cam_fps_dev_convert_caps(fps);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_wb_cb(camera_attr_whitebalance_e wb, void *user_data)
+{
+       cam_retm_if(wb > CAMERA_ATTR_WHITE_BALANCE_CUSTOM, "input is invalid");
+
+       unsigned int uRet = cam_wb_dev_convert_caps(wb);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_focus_cb(camera_attr_af_mode_e focus, void *user_data)
+{
+       cam_retm_if(focus > CAMERA_ATTR_AF_FULL, "input is invalid");
+
+       unsigned int uRet = cam_focus_dev_convert_caps(focus);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_metering_cb(camera_attr_exposure_mode_e metering, void *user_data)
+{
+       cam_retm_if(metering > CAMERA_ATTR_EXPOSURE_MODE_CUSTOM, "input is invalid");
+
+       unsigned int uRet = cam_metering_dev_convert_caps(metering);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_scene_cb(camera_attr_scene_mode_e scene, void *user_data)
+{
+       cam_retm_if(scene > CAMERA_ATTR_SCENE_MODE_BACKLIGHT, "input is invalid");
+
+       unsigned int uRet = cam_scene_dev_convert_caps(scene);
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_flash_cb(camera_attr_flash_mode_e flash, void *user_data)
+{
+       cam_retm_if(flash > CAMERA_ATTR_FLASH_MODE_PERMANENT, "input is invalid");
+
+       unsigned int uRet = cam_flash_dev_convert_caps(flash);
+       if (uRet != 0 ) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_capture_res_cb(int width, int height, void *user_data)
+{
+       unsigned int uRet = cam_resolution_cam_convert_caps((unsigned int)CAM_RESOLUTION(width, height));
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+static void __get_recording_res_cb(int width, int height, void *user_data)
+{
+       unsigned int uRet = cam_resolution_cam_convert_caps((unsigned int)CAM_RESOLUTION(width, height));
+       if (uRet != 0) {
+               g_caps |= uRet;
+               g_caps_cb_cnt++;
+       }
+}
+
+gboolean cam_mm_is_support_front_camera(void)
+{
+       g_return_val_if_fail(g_mm_handle, FALSE);
+       g_return_val_if_fail(g_mm_handle->hcam, FALSE);
+
+       bool ret = 0;
+       int device_count = 0;
+
+       camera_get_device_count(g_mm_handle->hcam, &device_count);
+       cam_debug(LOG_MM, "device count is [%d]", device_count);
+
+       if (device_count == 2) {
+               ret = TRUE;
+       } else {
+               ret = FALSE;
+       }
+
+       return ret;
+}
+//end of file
diff --git a/src/cam_popup.c b/src/cam_popup.c
new file mode 100755 (executable)
index 0000000..17cf9e6
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * 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 "cam_popup.h"
+#include "cam_debug.h"
+#include "cam.h"
+
+static GList *g_pop_list = NULL;
+
+static double bar_percent = 0;
+static char *bar_text = NULL;
+static gboolean add_progress_bar = FALSE;
+
+
+/* remove popup which is add by cam_app_*_popup() functions */
+void cam_popup_remove(Evas_Object *popup)
+{
+       if (popup == NULL)
+               return;
+       GList *popup_list = NULL;
+       popup_list = g_pop_list;
+       g_pop_list = g_list_remove(popup_list, popup);
+       evas_object_del(popup);
+       popup = NULL;
+}
+
+void cam_popup_remove_all(void)
+{
+       GList *popup_list = NULL;
+       popup_list = g_pop_list;
+
+       if (popup_list) {
+               while (popup_list) {
+                       GList *next = popup_list->next;
+                       evas_object_del(popup_list->data);
+                       popup_list->data = NULL;
+                       popup_list = next;
+               }
+               g_list_free(popup_list);
+               g_pop_list = NULL;
+       }
+       return;
+}
+
+#ifdef USE_ELM_POPUP /*it is not use*/
+
+/* popup with one button,  ELM_POPUP_RESPONSE_OK is sent along with response signal. */
+void cam_popup_confirm_add(Evas_Object *window, const char *message,
+                          const char *btn_name, cam_popup_respons_cb callback,
+                          void *user_data)
+{
+
+       Evas_Object *popup = NULL;
+
+       if (callback == NULL) { /* response_cb should be set */
+               cam_critical(LOG_UI,
+                            "add info popup [%s]  failed, callback is NULL ",
+                            message);
+               return;
+       }
+
+       popup = elm_popup_add_with_buttons(window, NULL, message,
+                                          1, btn_name, ELM_POPUP_RESPONSE_OK,
+                                          NULL);
+
+       if (popup == NULL) {
+               cam_critical(LOG_UI, "add confirm popup [%s]  failed ",
+                            message);
+               return;
+       }
+       evas_object_smart_callback_add(popup, "response", callback, user_data);
+       evas_object_show(popup);
+
+       g_pop_list = g_list_append(g_pop_list, popup);
+
+       return;
+}
+
+/* popup with two button, ELM_POPUP_RESPONSE_OK/ELM_POPUP_RESPONSE_CANCEL is sent along with response signal. */
+void cam_popup_question_add(Evas_Object *window, const char *message,
+                           const char *btn_n_1, const char *btn_n_2,
+                           cam_popup_respons_cb callback, void *user_data)
+{
+       Evas_Object *popup = NULL;
+
+       if (callback == NULL) { /* response_cb should be set */
+               cam_critical(LOG_UI,
+                            "add info popup [%s]  failed, callback is NULL ",
+                            message);
+               return;
+       }
+
+       popup = elm_popup_add_with_buttons(window, NULL, message, 2,
+                                          btn_n_1, btn_n_2,
+                                          ELM_POPUP_RESPONSE_OK,
+                                          ELM_POPUP_RESPONSE_CANCEL, NULL);
+
+       if (popup == NULL) {
+               cam_critical(LOG_UI, "add question popup [%s]  failed ",
+                            message);
+               return;
+       }
+       evas_object_smart_callback_add(popup, "response", callback, user_data);
+       evas_object_show(popup);
+
+       g_pop_list = g_list_append(g_pop_list, popup);
+
+       return;
+}
+#else                          /* #ifdef USE_ELM_POPUP */
+void
+cam_popup_question_add(Evas_Object *window, const char *message,
+                      const char *lbtn_name, void (*left_btn_cb) (void *data,
+                                                                  Evas_Object
+                                                                  *obj,
+                                                                  void
+                                                                  *event_info),
+                      const char *rbtn_name, void (*right_btn_cb) (void *data,
+                                                                   Evas_Object
+                                                                   *obj,
+                                                                   void
+                                                                   *event_info))
+{
+       Evas_Object *notify = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *button = NULL;
+       int width = 0;
+       char buf[50] = { '\0', };
+
+       notify = elm_notify_add(window);
+       evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_notify_align_set(notify, 0.5, 0.5);
+       elm_notify_allow_events_set(notify, EINA_FALSE);
+       evas_object_show(notify);
+
+       layout = elm_layout_add(window);
+       elm_layout_theme_set(layout, "standard", "notify", "style3");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_object_content_set(notify, layout);
+       evas_object_show(layout);
+
+       label = elm_label_add(window);
+
+       elm_object_style_set(label, "popup/description");
+       edje_object_part_geometry_get((Evas_Object *)
+                                     elm_layout_edje_get(layout),
+                                     "elm.swallow.content", NULL, NULL, &width,
+                                     NULL);
+       elm_label_line_wrap_set(label, EINA_TRUE);
+       elm_label_wrap_width_set(label, width);
+
+       snprintf(buf, sizeof(buf), "<align=middle>%s", message);
+
+       elm_object_text_set(label, buf);
+       elm_object_part_content_set(layout, "elm.swallow.content", label);
+       evas_object_show(label);
+
+       if (lbtn_name && left_btn_cb) {
+               button = elm_button_add(window);
+               elm_object_text_set(button, lbtn_name);
+               elm_object_part_content_set(layout, "elm.swallow.left", button);
+               evas_object_smart_callback_add(button, "focused", left_btn_cb,
+                                              notify);
+               evas_object_show(button);
+       }
+
+       if (rbtn_name && right_btn_cb) {
+               button = elm_button_add(window);
+               elm_object_text_set(button, rbtn_name);
+               elm_object_part_content_set(layout, "elm.swallow.right", button);
+               evas_object_smart_callback_add(button, "focused", right_btn_cb,
+                                              notify);
+               evas_object_show(button);
+       }
+
+       g_pop_list = g_list_append(g_pop_list, notify);
+
+       return;
+}
+#endif                         /*  #ifdef USE_ELM_POPUP */
+
+Evas_Object *cam_popup_guide_screen_add(Evas_Object *window, const char *message)
+{
+       cam_debug(LOG_UI, "");
+
+       Evas_Object *ctxpopup = NULL;
+       ctxpopup = elm_ctxpopup_add(window);
+
+       if (!ctxpopup) {
+               cam_critical(LOG_UI, "critical : can't make ctx popup");
+               return NULL;
+       } else {
+               elm_object_style_set(ctxpopup, "beat_winset_test/imageeditor");
+               elm_ctxpopup_item_append(ctxpopup, _("Flickr"), NULL, NULL,
+                                        ctxpopup);
+               evas_object_move(ctxpopup, 200, 200);
+               evas_object_show(ctxpopup);
+       }
+
+       return ctxpopup;
+}
+
+
+gboolean cam_popup_create(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup != NULL)
+               cam_popup_delete(ad);
+
+       elm_object_part_content_unset(ad->ug_base, "progress_popup_layout");
+
+       // create popup
+       ad->progress_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "progress_popup");
+
+       cam_retvm_if(ad->progress_popup == NULL, FALSE, "progress_popup is NULL");
+       elm_object_part_content_set(ad->ug_base, "progress_popup_layout", ad->progress_popup);
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progress_popup), "progress_popup,default", "prog");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progress_popup), "progress_popup,vertical", "prog");
+               break;
+       default:
+               DEBUG_TRACE("wow, reached un-able reached codes");
+       }
+
+       evas_object_show(ad->progress_popup);
+
+       return TRUE;
+}
+
+// create popup with progress bar burst_progress_popup
+gboolean cam_popup_for_burst_create(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup != NULL)
+               cam_popup_delete(ad);
+
+       elm_object_part_content_unset(ad->ug_base, "progress_popup_layout");
+
+       // create popup
+       ad->progress_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "burst_progress_popup");
+
+       cam_retvm_if(ad->progress_popup == NULL, FALSE, "progress_popup is NULL");
+       elm_object_part_content_set(ad->ug_base, "progress_popup_layout", ad->progress_popup);
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progress_popup), "progress_popup,default", "prog");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               edje_object_signal_emit(_EDJ(ad->progress_popup), "progress_popup,vertical", "prog");
+               break;
+       default:
+               DEBUG_TRACE("wow, reached un-able reached codes");
+       }
+
+       evas_object_show(ad->progress_popup);
+
+       return TRUE;
+}
+
+
+gboolean cam_popup_add_progress_bar(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup_bar != NULL) {
+               evas_object_del(ad->progress_popup_bar);
+               ad->progress_popup_bar = NULL;
+       }
+
+       ad->progress_popup_bar = elm_progressbar_add(ad->ug_base);
+       cam_retvm_if(ad->progress_popup_bar == NULL, FALSE, "Cannot add progressbar object\n");
+
+       Evas_Object *pb = ad->progress_popup_bar;
+       edje_object_part_swallow(_EDJ(ad->progress_popup), "progress_popup_bar", pb);
+       elm_object_style_set(pb, "list_progress");
+       evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       add_progress_bar = TRUE;
+
+       return TRUE;
+}
+
+gboolean cam_popup_set_text(void *data, char *text)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup == NULL )
+               return FALSE;
+
+       if (text != NULL) {
+               bar_text = text;
+               edje_object_part_text_set(_EDJ(ad->progress_popup), "progress_popup_text", text);
+       }
+       return TRUE;
+}
+
+gboolean cam_popup_set_bar_value(void *data, double value)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup_bar) {
+               bar_percent = value;
+               elm_progressbar_value_set(ad->progress_popup_bar, value);
+               evas_object_raise(ad->progress_popup_bar);
+       }
+
+       return TRUE;
+}
+
+gboolean cam_popup_delete(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (ad->progress_popup != NULL) {
+               evas_object_del(ad->progress_popup);
+               ad->progress_popup = NULL;
+       }
+
+       if (ad->progress_popup_bar != NULL) {
+               evas_object_del(ad->progress_popup_bar);
+               ad->progress_popup_bar = NULL;
+       }
+
+       bar_percent = 0;
+       bar_text = NULL;
+       add_progress_bar = FALSE;
+
+       return TRUE;
+}
+
+
+void cam_popup_rotate(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       unsigned int tmp_percent = bar_percent;
+       char *tmp_text = bar_text;
+       gboolean using_bar = TRUE;
+
+       cam_popup_delete(ad);
+
+       if (!cam_popup_create(ad)) {
+               cam_critical(LOG_UI, "cam_popup_create() failed");
+               return;
+       }
+
+       if (add_progress_bar) {
+               if (!cam_popup_add_progress_bar(ad))
+                       cam_debug(LOG_UI, "cam_popup_add_progress_bar() failed");
+
+               if (!cam_popup_set_bar_value(ad, tmp_percent))
+                       cam_debug(LOG_UI, "cam_popup_set_bar_value() failed");
+       }
+
+       if (!cam_popup_set_text(ad, tmp_text))
+               cam_debug(LOG_UI, "cam_popup_set_text() failed");
+}
+
diff --git a/src/cam_rec.c b/src/cam_rec.c
new file mode 100755 (executable)
index 0000000..6a58ecb
--- /dev/null
@@ -0,0 +1,495 @@
+/*
+ * 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 <X11/Xlib.h>
+#include <X11/keysymdef.h>
+#include <sys/wait.h>
+#include <pthread.h>
+#include <power.h>
+
+#include "cam.h"
+#include "cam_app.h"
+#include "cam_sound.h"
+#include "cam_file.h"
+#include "cam_ta.h"
+#include "cam_error.h"
+#include "cam_mm.h"
+#include "cam_rec.h"
+#include "cam_indicator_edc_callback.h"
+#include "cam_recording_edc_callback.h"
+#include "camera_utils.h"
+#include "cam_popup.h"
+#include "cam_lbs.h"
+#include "cam_common_edc_callback.h"
+#include "cam_toolbar_edc_callback.h"
+
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+static gint __cam_rec_sound_index_get(gint setting_index, gboolean start)
+{
+       gint index = -1;
+
+       if (start) {            /*  start sound */
+               switch (setting_index) {
+               case CAM_SETTINGS_SOUND_1:
+                       index = CAM_SOUND_EFFECT_REC_START3;
+                       break;
+               case CAM_SETTINGS_SOUND_2:
+                       index = CAM_SOUND_EFFECT_REC_START2;
+                       break;
+               case CAM_SETTINGS_SOUND_3:
+                       index = CAM_SOUND_EFFECT_REC_START3;
+                       break;
+               default:
+                       break;
+
+               }
+       } else {                /*  commit sound */
+               switch (setting_index) {
+
+               case CAM_SETTINGS_SOUND_1:
+                       index = CAM_SOUND_EFFECT_REC_COMMIT3;
+                       break;
+               case CAM_SETTINGS_SOUND_2:
+                       index = CAM_SOUND_EFFECT_REC_COMMIT2;
+                       break;
+               case CAM_SETTINGS_SOUND_3:
+                       index = CAM_SOUND_EFFECT_REC_COMMIT3;
+                       break;
+               default:
+                       break;
+               }
+       }
+       return index;
+}
+#endif
+static gchar *__get_tmpfile_name()
+{
+       char tmpfile_name[256] = { 0 };
+       gchar *file_path = NULL;
+       file_path = (gchar *)cam_app_get_target_path();
+
+       snprintf(tmpfile_name, sizeof(tmpfile_name), "%s%s", file_path,
+                TMPFILE_PREFIX);
+       DEBUG_TRACE("#####################tmpfile_name=%s", tmpfile_name);
+
+       if (g_file_test(tmpfile_name, G_FILE_TEST_EXISTS)) {
+               DEBUG_TRACE("Error : tmp file exist on the %s", file_path);
+               cam_remove_tmp_file();
+       }
+
+       return g_strdup(tmpfile_name);
+}
+
+gboolean cam_video_record_start(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gchar *filename = NULL;
+
+       gint64 remain = 0;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (ad->is_recording == TRUE) {
+               DEBUG_TRACE("Camera app is recording");
+               return TRUE;
+       } else {
+               cam_critical(LOG_UI, "start reocrd");
+       }
+
+       if (ad->is_rotating == TRUE) {
+               DEBUG_TRACE("now in rotating target, do not start recording");
+               return TRUE;
+       }
+
+       DEBUG_TRACE("start recording !!");
+
+       if (ad->timer_activated) {
+               CAM_UI_LOG("timer activated!");
+               return true;
+       }
+       gchar* target_path = (gchar*)cam_app_get_target_path();
+       if (target_path != NULL) {
+               remain = cam_get_free_space(target_path);
+       }
+
+       if (remain <= REC_MMS_MIN_SPACE) {
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY"),
+                                    cam_app_popup_response_cb);
+               return TRUE;
+       }
+
+       if (camapp->gps) {
+               int gps_level = CAM_LBS_STATE_DISABLE;
+               gps_level = cam_lbs_get_state();
+               if (gps_level >=CAM_LBS_STATE_SERVICE_ENABLE) {
+                       double longitude = -1.0;
+                       double latitude = -1.0;
+                       double altitude = -1.0;
+                       time_t time_stamp = -1.0;
+                       if (cam_lbs_get_current_position(&longitude, &latitude, &altitude, &time_stamp)) {
+                               DEBUG_TRACE("GEO TAG [longitude = %d, latitude = %d, altitude = %d]", longitude, latitude, altitude);
+                               if ( !cam_mm_set_gps_data(latitude, longitude, (double)altitude))
+                                       DEBUG_TRACE("cam_mm_set_gps_data failed");
+                       }
+               }
+       }
+
+       filename = __get_tmpfile_name();
+
+       if (filename) {
+               cam_debug(LOG_UI, "FILE NAME : %s", filename);
+               if (!cam_mm_set_filename(filename)) {
+                       cam_critical(LOG_MM, "cannot set filename");
+                       return FALSE;
+               }
+               free(filename);
+               filename = NULL;
+       } else {
+               cam_critical(LOG_MM, "cannot get filename");
+               return FALSE;
+       }
+
+       /* flash on */
+       if (camapp->flash == CAM_FLASH_ON) {
+               if (!cam_mm_set_flash(CAM_FLASH_MOVIE_ON)) {
+                       cam_critical(LOG_MM, "cam_mm_set_flash failed");
+               }
+       } else {
+               if (!cam_mm_set_flash(CAM_FLASH_OFF)) {
+                       cam_critical(LOG_MM, "cam_mm_set_flash failed");
+               }
+       }
+
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+/* play start effect sound */
+       cam_sound_play(__cam_rec_sound_index_get(camapp->shutter_sound, TRUE),
+                      ad);
+#endif
+/* set sound path for recording MIC */
+       cam_sound_set_mic();
+
+/* set orient tag */
+       cam_set_orient_value(ad);
+
+/* mm rec */
+       if (!cam_mm_rec_start(NULL)) {
+               cam_critical(LOG_MM, "cam_mm_rec_start failed");
+               cam_app_notice_popup(data,
+                                       dgettext(PACKAGE, "IDS_CAM_POP_ERROR_RECORDING_FAIL"),
+                                       cam_app_timeout_notice_response_cb);
+               return FALSE;
+       }
+       /* set recording state */
+       ad->is_recording = TRUE;
+
+/* change recording view */
+
+       if (load_recording_edje(ad)) {
+               cam_critical(LOG_UI, "load_recording_edje failed");
+               cam_video_record_cancel(ad);
+               return FALSE;
+       }
+
+       if (ad->indicator_edje)
+               cam_indicator_update(ad);
+       else
+               cam_indicator_create(ad);
+
+       settings_guideline_refresh(ad);
+       return TRUE;
+}
+
+gboolean cam_video_record_resume(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (!cam_mm_rec_start(NULL)) {
+               cam_critical(LOG_MM, "cam_mm_rec_start failed");
+               cam_app_notice_popup(data,
+                                       dgettext(PACKAGE, "IDS_CAM_POP_ERROR_RECORDING_FAIL"),
+                                       cam_app_timeout_notice_response_cb);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_video_record_pause(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (!cam_mm_rec_pause(NULL)) {
+               cam_critical(LOG_MM, "cam_mm_rec_start failed");
+               return FALSE;
+       }
+       return TRUE;
+}
+Eina_Bool cam_video_idler_record_stop(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_video_record_stop(ad);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+gboolean cam_video_record_stop(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       gboolean to_stop = FALSE;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if (ad->recording_commit) {
+               ecore_idler_del(ad->recording_commit);
+               ad->recording_commit = NULL;
+       }
+/*  check to_stop val */
+
+       if (!cam_mm_stop_focusing()){
+               cam_critical(LOG_MM, "cam_mm_stop_focusing error ");
+       }
+/* mm stop rec */
+       if (!cam_mm_rec_stop(to_stop)) {
+               cam_critical(LOG_MM, "cam_mm_rec_stop failed");
+               if (!cam_mm_rec_cancel())
+                       cam_critical(LOG_MM, "cam_mm_rec_cancel failed");
+
+               cam_app_notice_popup(data,
+                                       dgettext(PACKAGE, "IDS_CAM_POP_ERROR_RECORDING_FAIL"),
+                                       cam_app_timeout_notice_response_cb);
+       }
+
+/* flash off */
+       if (!cam_mm_set_flash(camapp->flash)) {
+               cam_critical(LOG_MM, "cam_mm_set_flash failed");
+       }
+
+/* set sound path for effect sound */
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+/* play end effect sound */
+       cam_sound_play(__cam_rec_sound_index_get(camapp->shutter_sound, FALSE), ad);
+#endif
+/*      cam_sound_play(CAM_SOUND_EFFECT_REC_COMMIT); */
+
+       return TRUE;
+}
+
+gboolean cam_video_record_cancel(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       debug_fenter(LOG_UI);
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+/*mm stop rec */
+       if (!cam_mm_rec_cancel(NULL)) {
+               cam_critical(LOG_MM, "cam_mm_rec_cancel failed");
+       }
+
+       /* change to camera mode*/
+               /*
+               *       TODO: if for any reason, not run here, there will be caused now now recording, but in record mode
+               *       So: I suggest while click capture button: judge now state and whether recording.
+               */
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+               if (ad->ug_state != CAM_UG_PAUSE_STATE) {/*if now is pause state, so do not set mode, just set while resume*/
+
+                       GValue value = {0, };
+                       CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
+                       if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
+                               return FALSE;
+                       }
+
+                       cam_app_update_quickview_icon(ad);
+               }
+       }
+
+       unload_recording_edje(ad);
+       camapp->rec_elapsed = 0;
+       cam_toolbar_update(ad);
+
+       if (ad->indicator_edje)
+               cam_indicator_update(ad);
+       else
+               cam_indicator_create(ad);
+
+       settings_guideline_refresh(ad);
+       cam_remove_tmp_file();
+       return TRUE;
+}
+
+/* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
+Eina_Bool cam_video_capture_handle_idler(void *itm)
+{
+       CamIdlerItem *item = (CamIdlerItem *) itm;
+       struct appdata *ad = NULL;
+       cam_retvm_if(!item, ECORE_CALLBACK_CANCEL, "CamIdlerItem is NULL");
+
+       ad = (struct appdata *)item->data;
+       cam_retvm_if(!ad, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       ad->capture_cb_list = g_list_remove(ad->capture_cb_list, item->idler);
+       free(item);
+       item = NULL;
+
+       return cam_video_capture_handle(ad);
+}
+
+gboolean cam_rec_save_and_register_video_file(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+       cam_retv_if(camapp->filename == NULL, FALSE);
+
+       GError *error = NULL;
+       cam_debug(LOG_FILE, "tmp file : %s", camapp->filename);
+
+       gchar *filename = NULL;
+       filename = cam_app_get_next_filename(CAM_FILE_EXTENTION_VIDEO);
+
+       if (filename) {
+               cam_debug(LOG_UI, "FILE NAME : %s", filename);
+
+               int ret = 0;
+
+               ret = rename(camapp->filename, filename);
+
+               if( ret != 0)
+                       cam_critical(LOG_FILE, "rename is error %d", ret );
+
+               sync();
+               free(camapp->filename);
+               camapp->filename = strdup(filename);
+
+               free(filename);
+               filename = NULL;
+
+               if (!g_file_test(camapp->filename, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+                       cam_critical(LOG_FILE, "The File is not existed %s",camapp->filename );
+                       return ECORE_CALLBACK_CANCEL;
+               }
+       } else {
+               cam_critical(LOG_MM, "cannot get filename");
+               return ECORE_CALLBACK_CANCEL;
+       }
+       if (!cam_file_register(camapp->filename, &error)) {
+               cam_critical(LOG_FILE, "cam_file_register fail");
+               if (error != NULL) {
+                       cam_critical(LOG_FILE,
+                                    "cam_file_register error [%s]",
+                                    error->message);
+                       g_error_free(error);
+                       error = NULL;
+               }
+       }
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL)
+               cam_app_update_thumbnail();
+
+       /*TODO: use pipe*/
+       if (camapp->review) {
+               DEBUG_TRACE(" review on in recording mode");
+               cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_RUN_IMAGE_VIEWER);
+       }
+       return TRUE;
+}
+
+Eina_Bool cam_video_capture_handle(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+               /* set recording state */
+       ad->is_recording = FALSE;
+
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL,
+                    "camapp_handle is NULL");
+
+       cam_debug(LOG_FILE, "");
+
+       camapp->rec_elapsed = 0;
+       SHOW_EVAS_OBJECT(ad->indicator_edje);
+       unload_recording_edje(ad);
+       camapp->rec_elapsed = 0;
+       cam_toolbar_update(ad);
+       if (ad->indicator_edje)
+               cam_indicator_update(ad);
+       else
+               cam_indicator_create(ad);
+       settings_guideline_refresh(ad);
+
+       if (camapp->filename) {
+               ad->remained_count--;
+               indicator_update_remain_count(ad);
+       }
+       g_queue_push_tail(ad->file_reg_queue, strdup(REC_FILE_SAVE_REG));
+       pthread_cond_signal(&ad->file_reg_cond);
+
+       switch (camapp->rec_stop_type) {
+       case CAM_REC_STOP_UNEXPECTED:
+               break;
+       case CAM_REC_STOP_NORMAL:
+               break;
+       case CAM_REC_STOP_LOW_BATTERY:
+               cam_app_exit(ad);
+               return ECORE_CALLBACK_CANCEL;
+               break;
+       case CAM_REC_STOP_ASM:
+               break;
+       case CAM_REC_STOP_MAX_SIZE:
+               break;
+       case CAM_REC_STOP_TIME_LIMIT:
+               break;
+       case CAM_REC_STOP_NO_SPACE:
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_VIDEOMEMORYFULL"),
+                                    cam_app_popup_response_cb);
+               break;
+       case CAM_REC_STOP_USB_CONN:
+               break;
+       case CAM_REC_STOP_POWER_KEY:
+               power_unlock_state(POWER_STATE_NORMAL);
+               break;
+       default:
+               break;
+       }
+       camapp->rec_stop_type = CAM_REC_STOP_UNEXPECTED;
+
+       return ECORE_CALLBACK_CANCEL;
+}
diff --git a/src/cam_sound.c b/src/cam_sound.c
new file mode 100755 (executable)
index 0000000..6cb88c9
--- /dev/null
@@ -0,0 +1,249 @@
+/*
+ * 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 <sound_manager.h>
+#include <wav_player.h>
+#include <pthread.h>
+#include <vconf.h>
+#include <errno.h>
+#include <sys/time.h>
+#include "cam.h"
+#include "cam_sound.h"
+/*
+#include "cam_sound_private.h"
+*/
+#include "cam_debug.h"
+#include "cam_ta.h"
+#include "cam_mm.h"
+
+#define SOUND_TIMEOUT_SEC      2
+
+static gchar **sound_files = NULL;
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+pthread_mutex_t sound_lock = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t sound_cond = PTHREAD_COND_INITIALIZER;
+#endif
+
+static void cam_sound_callback(int id, void *data);
+
+gboolean cam_sound_init(GError **error)
+{
+       debug_fenter(LOG_UI);
+
+       if (!sound_files) {
+               sound_files = g_new0(gchar *, CAM_SOUND_EFFECT_NUM);
+               g_return_val_if_fail(sound_files, FALSE);
+
+               int i;
+               for (i = 0; i < CAM_SOUND_EFFECT_NUM; i++)
+                       sound_files[i] = NULL;
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+               cam_sound_set(CAM_SOUND_EFFECT_SHUTTER1, SOUND_PATH "/Shutter_01.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_SHUTTER2, SOUND_PATH "/Shutter_02.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_SHUTTER3, SOUND_PATH "/Shutter_03.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_START1, SOUND_PATH "/cam_start_01.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_START2, SOUND_PATH "/cam_start_02.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_START3, SOUND_PATH "/cam_start_03.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_COMMIT1, SOUND_PATH "/cam_stop_01.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_COMMIT2, SOUND_PATH "/cam_stop_02.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_REC_COMMIT3, SOUND_PATH "/cam_stop_03.wav");
+#endif
+               cam_sound_set(CAM_SOUND_EFFECT_TICK, SOUND_PATH "/count.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_AF_OK, SOUND_PATH "/af_ok.wav");
+               cam_sound_set(CAM_SOUND_EFFECT_AF_FAIL, SOUND_PATH "/af_fail.wav");
+
+       }
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       pthread_mutex_init(&sound_lock, NULL);
+       pthread_cond_init(&sound_cond, NULL);
+#endif
+       return TRUE;
+}
+
+void cam_sound_finalize(void)
+{
+       debug_fenter(LOG_UI);
+
+       if (sound_files) {
+               int i;
+               for (i = 0; i < CAM_SOUND_EFFECT_NUM; i++) {
+                       if (sound_files[i]) {
+                               g_free(sound_files[i]);
+                               sound_files[i] = NULL;
+                       }
+               }
+               g_free(sound_files);
+               sound_files = NULL;
+       }
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       pthread_mutex_destroy(&sound_lock);
+       pthread_cond_destroy(&sound_cond);
+#endif
+}
+
+void cam_sound_set(int index, const gchar *file)
+{
+       debug_msg(LOG_UI, "%d:%s", index, file ? file : "NULL");
+       g_return_if_fail(sound_files);
+       if (sound_files[index]) {
+               g_free(sound_files[index]);
+               sound_files[index] = NULL;
+       }
+       if (file)
+               sound_files[index] = g_strdup(file);
+}
+
+const gchar *cam_sound_get(int index)
+{
+       debug_fenter(LOG_UI);
+       g_return_val_if_fail(sound_files, NULL);
+       return sound_files[index];
+}
+
+gboolean cam_sound_is_silent_mode(void)
+{
+       int sound_on = -1;
+       if (!vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_on)) {
+               if (sound_on == FALSE) {
+                       cam_debug(LOG_SND, "sound off mode ");
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
+gboolean cam_sound_set_mic()
+{
+       int ret = SOUND_MANAGER_ERROR_NONE;
+       bool is_available = FALSE;
+       sound_route_e route_to_active = SOUND_ROUTE_IN_MIC;
+
+       /* Check if earphone mic is available */
+       is_available = sound_manager_is_route_available(SOUND_ROUTE_IN_WIRED_ACCESSORY);
+
+       /* If earphone mic is available, use earphone mic, otherwise use phone mic */
+       route_to_active = (is_available)? SOUND_ROUTE_IN_WIRED_ACCESSORY : SOUND_ROUTE_IN_MIC;
+       cam_debug(LOG_SND, "sound route is [%d]", route_to_active);
+
+       ret = sound_manager_set_active_route(route_to_active);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               cam_critical(LOG_SND, "sound_manager_set_active_route [%d]) failed", route_to_active);
+       }
+
+       return ret;
+}
+
+static void cam_sound_callback(int id, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       cam_debug(LOG_MM, "release cond");
+
+       /*We can not set value to  sond_cond.
+          Bacause it can be assigned PTHREAD_COND_INITIALIZER only.
+          PTHREAD_COND_INITIALIZER is the MECRO of pthread.
+          So We use the sound_files, When the sound_cond is destroied, this value set to NULL.
+        */
+       if (sound_files)
+               pthread_cond_broadcast(&sound_cond);
+
+       ad->play_rec_sound--;
+       DEBUG_TRACE("ad->play_rec_sound=%d", ad->play_rec_sound);
+#endif
+       return;
+}
+
+gboolean cam_sound_play(int index, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+#ifdef CAMERA_MACHINE_I686
+       return TRUE;
+#endif
+       int step = 0, handle = 0;
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       gboolean sync = FALSE;
+       struct timespec timeout;
+       struct timeval tv;
+#endif
+
+       g_return_val_if_fail(sound_files, FALSE);
+       g_return_val_if_fail(index >= 0 && index < CAM_SOUND_EFFECT_NUM, FALSE);
+
+       debug_msg(LOG_UI, "%s", sound_files[index]);
+
+       if (!sound_files[index]) {
+               return FALSE;
+       }
+
+       if (cam_sound_is_silent_mode()) {
+               warn_msg(LOG_SND, "Silent mode now");
+               return FALSE;
+       }
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       if (index == CAM_SOUND_EFFECT_REC_START1
+           || index == CAM_SOUND_EFFECT_REC_START2
+           || index == CAM_SOUND_EFFECT_REC_START3 || FALSE) {
+               sync = TRUE;
+       }
+#endif
+
+       cam_debug(LOG_MM, " Volume step : %d", step);
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+
+       if (EBUSY == pthread_mutex_trylock(&sound_lock)) {
+               cam_critical(LOG_SND,
+                            "another effect sound is playing, try later");
+               return FALSE;
+       }
+#endif
+
+       if (WAV_PLAYER_ERROR_NONE ==
+           wav_player_start(sound_files[index], SOUND_TYPE_MEDIA,  cam_sound_callback, ad, &handle)) {
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+               ad->play_rec_sound++;
+               DEBUG_TRACE("ad->play_rec_sound=%d", ad->play_rec_sound);
+               if (sync) {
+                       gettimeofday(&tv, NULL);
+                       timeout.tv_sec = tv.tv_sec + SOUND_TIMEOUT_SEC;
+                       timeout.tv_nsec = tv.tv_usec;
+                       if (ETIMEDOUT ==
+                           pthread_cond_timedwait(&sound_cond, &sound_lock,
+                                                  &timeout)) {
+                               if (handle > 0) {
+                                       if (WAV_PLAYER_ERROR_NONE != wav_player_stop(handle) {
+                                               cam_critical(LOG_SND, "sound play failed");
+                                       }
+                               }
+                       }
+               }
+#endif
+       } else {
+               cam_critical(LOG_SND, "effect sound play failed");
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+               pthread_mutex_unlock(&sound_lock);
+#endif
+               return FALSE;
+       }
+#ifdef USE_CAMERA_APP_SHUTTER_SOUND
+       pthread_mutex_unlock(&sound_lock);
+#endif
+       return TRUE;
+}
diff --git a/src/cam_ta.c b/src/cam_ta.c
new file mode 100755 (executable)
index 0000000..fc6851a
--- /dev/null
@@ -0,0 +1,620 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _CAM_TA_C_
+#define _CAM_TA_C_
+
+#include <stdio.h>
+#include <malloc.h>
+#include <string.h>
+#include <assert.h>
+#include <time.h>              /*  time, ctime */
+#include <sys/time.h>          /*  gettimeofday */
+#include <sys/utsname.h>
+#include <sys/resource.h>
+#include <unistd.h>
+#include <stdarg.h>
+
+#include "cam_ta.h"
+
+/*  internal func. */
+static void __free_cps(void);
+static int __get_cp_index(char *name);
+
+static void __free_accums(void);
+static int __get_accum_index(char *name);
+
+/*  global var. */
+cam_ta_checkpoint **cam_g_cps = NULL;
+static int cam_g_cp_index = 0;
+
+cam_ta_accum_item **cam_g_accums = NULL;
+static int cam_g_accum_index = 0;
+static int cam_g_accum_longest_name = 0;
+static unsigned long cam_g_accum_first_time = 0xFFFFFFFF;      /*  jmlee */
+static int cam_g_enable = 0;
+
+int cam_ta_init(void)
+{
+       if (cam_g_accums)
+               return 0;
+
+       cam_g_cps =
+           (cam_ta_checkpoint **) malloc(CAM_TA_MAX_CHECKPOINT *
+                                         sizeof(cam_ta_checkpoint *));
+       if (!cam_g_cps)
+               return -1;
+
+       cam_g_accums =
+           (cam_ta_accum_item **) malloc(CAM_TA_MAX_CHECKPOINT *
+                                         sizeof(cam_ta_accum_item *));
+       if (!cam_g_accums)
+               return -1;
+
+       cam_g_accum_first_time = 0xFFFFFFFF;
+
+       return 0;
+}
+
+int cam_ta_release(void)
+{
+       if (!cam_g_accums)
+               return 0;
+
+       __free_cps();
+       __free_accums();
+
+       cam_g_accum_first_time = 0xFFFFFFFF;
+
+       return 0;
+}
+
+void cam_ta_set_enable(int enable)
+{
+       printf("CAM_TA : setting enable to %d\n", enable);
+       cam_g_enable = enable;
+}
+
+int cam_ta_get_numof_checkpoints()
+{
+       return cam_g_cp_index;
+}
+
+char *cam_ta_fmt(const char *fmt, ...)
+{
+       static char ta_buf[512];
+       va_list args;
+
+       memset(ta_buf, '\0', 512);
+
+       va_start(args, fmt);
+       vsnprintf(ta_buf, 512, fmt, args);
+       va_end(args);
+
+       return ta_buf;
+}
+
+int cam_ta_add_checkpoint(char *name, int show, char *filename, int line)
+{
+       cam_ta_checkpoint *cp = NULL;
+       struct timeval t;
+
+       if (!cam_g_enable)
+               return -1;
+
+       if (!cam_g_accums)
+               return 0;
+
+       if (cam_g_cp_index == CAM_TA_MAX_CHECKPOINT)
+               return -1;
+
+       if (!name)
+               return -1;
+
+       if (strlen(name) == 0)
+               return -1;
+
+       cp = (cam_ta_checkpoint *) malloc(sizeof(cam_ta_checkpoint));
+       if (!cp)
+               return -1;
+
+       cp->name = (char *)malloc(strlen(name) + 1);
+       if (!cp->name) {
+               free(cp);
+               return -1;
+       }
+       strncpy(cp->name, name, strlen(name));
+
+       if (show)
+               printf("[CHECK-POINT] %s...(%s:%d)\n", name, filename, line);
+
+       gettimeofday(&t, NULL);
+       cp->timestamp = t.tv_sec * 1000000L + t.tv_usec;
+#ifdef CAM_TA_UNIT_MSEC
+       cp->timestamp = (cp->timestamp >= 1000) ? cp->timestamp / 1000 : 0;
+#endif
+
+       cam_g_cps[cam_g_cp_index] = cp;
+
+       cam_g_cp_index++;
+
+       return 0;
+}
+
+void cam_ta_show_checkpoints(void)
+{
+       int i = 0;
+
+       if (!cam_g_accums)
+               return;
+
+       printf("BEGIN RESULT ============================\n");
+       for (i = 0; i < cam_g_cp_index; i++) {
+               printf("[%d] %s : %ld us.\n", i, cam_g_cps[i]->name,
+                      cam_g_cps[i]->timestamp);
+       }
+       printf("END RESULT   ============================\n");
+}
+
+void cam_ta_show_diff(char *name1, char *name2)
+{
+       if (!cam_g_accums)
+               return;
+
+       printf("Time takes from [%s] to [%s] : %ld us.\n", name1, name2,
+              cam_ta_get_diff(name1, name2));
+}
+
+unsigned long cam_ta_get_diff(char *name1, char *name2)
+{
+       int cp1, cp2;
+
+       if (!cam_g_accums)
+               return 0;
+
+       /*  fail if bad param. */
+       if (!name1 || !name2)
+               return -1;
+
+       /*  fail if same. */
+       if (strcmp(name1, name2) == 0)
+               return -1;
+
+       /*  get index */
+       if ((cp1 = __get_cp_index(name1)) == -1)
+               return -1;
+
+       if ((cp2 = __get_cp_index(name2)) == -1)
+               return -1;
+
+       /* NOTE :
+          return value must be positive value.
+          bcz the value of higher index of cam_g_cps always higher than lower one.
+        */
+       return cam_g_cps[cp2]->timestamp - cam_g_cps[cp1]->timestamp;
+
+}
+
+static int __get_cp_index(char *name)
+{
+       int i;
+
+       assert(name);
+
+       /*  find index */
+       for (i = 0; i < cam_g_cp_index; i++) {
+               if (strcmp(name, cam_g_cps[i]->name) == 0)
+                       return i;
+       }
+
+       return -1;
+}
+
+static int __get_accum_index(char *name)
+{
+       int i;
+
+       assert(name);
+
+       /*  find index */
+       for (i = 0; i < cam_g_accum_index; i++) {
+               if (strcmp(name, cam_g_accums[i]->name) == 0)
+                       return i;
+       }
+
+       return -1;
+}
+
+static void __free_cps(void)
+{
+       int i = 0;
+
+       if (!cam_g_cps)
+               return;
+
+       for (i = 0; i < cam_g_cp_index; i++) {
+               if (cam_g_cps[i]) {
+                       if (cam_g_cps[i]->name)
+                               free(cam_g_cps[i]->name);
+
+                       free(cam_g_cps[i]);
+
+                       cam_g_cps[i] = NULL;
+               }
+       }
+
+       free(cam_g_cps);
+       cam_g_cps = NULL;
+
+       cam_g_cp_index = 0;
+}
+
+static void __free_accums(void)
+{
+       int i = 0;
+
+       if (!cam_g_accums)
+               return;
+
+       for (i = 0; i < cam_g_accum_index; i++) {
+               if (cam_g_accums[i]) {
+                       if (cam_g_accums[i]->name)
+                               free(cam_g_accums[i]->name);
+
+                       free(cam_g_accums[i]);
+
+                       cam_g_accums[i] = NULL;
+               }
+       }
+
+       cam_g_accum_index = 0;
+       cam_g_accum_longest_name = 0;
+
+       free(cam_g_accums);
+       cam_g_accums = NULL;
+}
+
+int cam_ta_accum_item_begin(char *name, int show, char *filename, int line)
+{
+       cam_ta_accum_item *accum = NULL;
+       int index = 0;
+       int name_len = 0;
+       struct timeval t;
+
+       if (!cam_g_enable)
+               return -1;
+
+       if (!cam_g_accums)
+               return 0;
+
+       if (cam_g_accum_index == CAM_TA_MAX_ACCUM)
+               return -1;
+
+       if (!name)
+               return -1;
+
+       name_len = strlen(name);
+       if (name_len == 0)
+               return -1;
+
+       /*  if 'name' is new one. create new item. */
+       if ((index = __get_accum_index(name)) == -1) {
+               accum = (cam_ta_accum_item *) malloc(sizeof(cam_ta_accum_item));
+               if (!accum)
+                       return -1;
+
+               /*  clear first. */
+               memset(accum, 0, sizeof(cam_ta_accum_item));
+               accum->elapsed_min = 0xFFFFFFFF;
+
+               accum->name = (char *)malloc(name_len + 1);
+               if (!accum->name) {
+                       free(accum);
+                       accum = NULL;
+                       return -1;
+               }
+               memset(accum->name, 0, name_len+1);
+               strncpy(accum->name, name, name_len);
+
+               /*  add it to list. */
+               cam_g_accums[cam_g_accum_index] = accum;
+               cam_g_accum_index++;
+
+               if (cam_g_accum_longest_name < name_len)
+                       cam_g_accum_longest_name = name_len;
+
+       } else {
+               accum = cam_g_accums[index];
+       }
+
+       /*  verify pairs of begin, end. */
+       if (accum->on_estimate) {
+               printf("[%s] is not 'end'ed!\n", accum->name);
+               accum->num_unpair++;
+               return -1;
+       }
+       /*  get timestamp */
+       gettimeofday(&t, NULL);
+       accum->timestamp = t.tv_sec * 1000000L + t.tv_usec;
+#ifdef CAM_TA_UNIT_MSEC
+       accum->timestamp =
+           (accum->timestamp >= 1000) ? accum->timestamp / 1000 : 0;
+#endif
+       accum->on_estimate = 1;
+
+       if (accum->first_start == 0) {  /*  assum that timestamp never could be zero. */
+               accum->first_start = accum->timestamp;
+
+               if (cam_g_accum_first_time > accum->first_start)
+                       cam_g_accum_first_time = accum->first_start;
+       }
+
+       if (show)
+               printf("[ACCUM BEGIN] %s : %ld ---(%s:%d)\n", name,
+                      accum->timestamp, filename, line);
+
+       accum->num_calls++;
+
+       return 0;
+}
+
+int cam_ta_accum_item_end(char *name, int show, char *filename, int line)
+{
+       cam_ta_accum_item *accum = NULL;
+       long int tval = 0;
+       int index = 0;
+       struct timeval t;
+
+       if (!cam_g_enable)
+               return -1;
+
+       if (!cam_g_accums)
+               return 0;
+
+       /*  get time first for more accuracy. */
+       gettimeofday(&t, NULL);
+
+       if (cam_g_accum_index == CAM_TA_MAX_ACCUM)
+               return -1;
+
+       if (!name)
+               return -1;
+
+       if (strlen(name) == 0)
+               return -1;
+
+       /*  varify the 'name' is already exist. */
+       if ((index = __get_accum_index(name)) == -1) {
+               /* printf("[%s] is not added before!\n", name); */
+               return -1;
+       }
+
+       accum = cam_g_accums[index];
+
+       /* verify pairs of begin, end. */
+       if (!accum->on_estimate) {
+               printf("[%s] is not 'begin' yet!\n", accum->name);
+               accum->num_unpair++;
+               return -1;
+       }
+       /*  get current timestamp. */
+       tval = t.tv_sec * 1000000L + t.tv_usec;
+#ifdef CAM_TA_UNIT_MSEC
+       tval = (tval >= 1000) ? tval / 1000 : 0;
+#endif
+
+       /*  update last_end */
+       accum->last_end = tval;
+
+       /*  make get elapsed time. */
+       tval = tval - accum->timestamp;
+
+       /*  update min/max */
+       accum->elapsed_max =
+           tval > accum->elapsed_max ? tval : accum->elapsed_max;
+       accum->elapsed_min =
+           tval < accum->elapsed_min ? tval : accum->elapsed_min;
+
+       if (show)
+               printf("[ACCUM END] %s : %ld + %ld ---(%s:%d)\n", name,
+                      accum->elapsed_accum, tval, filename, line);
+
+       /*  add elapsed time */
+       accum->elapsed_accum += tval;
+       accum->on_estimate = 0;
+
+       return 0;
+}
+
+void __print_some_info(FILE *fp)
+{
+       if (!fp)
+               return;
+
+       /*  comment */
+       {
+               fprintf(fp, "\nb~ b~ b~\n\n");
+       }
+
+       /*  General infomation */
+       {
+               time_t t_val;
+               char hostname[256] = { '\0', };
+               struct utsname uts;
+               struct rusage r_usage;
+
+               fprintf(fp, "\n[[ General info ]]\n");
+
+               /*  time and date */
+               time(&t_val);
+               fprintf(fp, "Date : %s", ctime(&t_val));
+
+               /*  system */
+               if (gethostname(hostname, 255) == 0 && uname(&uts) >= 0) {
+                       fprintf(fp, "Hostname : %s\n", hostname);
+                       fprintf(fp, "System : %s\n", uts.sysname);
+                       fprintf(fp, "Machine : %s\n", uts.machine);
+                       fprintf(fp, "Nodename : %s\n", uts.nodename);
+                       fprintf(fp, "Release : %s \n", uts.release);
+                       fprintf(fp, "Version : %s \n", uts.version);
+               }
+               /*  process info. */
+               fprintf(fp, "Process priority : %d\n",
+                       getpriority(PRIO_PROCESS, getpid()));
+               getrusage(RUSAGE_SELF, &r_usage);
+               fprintf(fp,
+                       "CPU usage : User = %ld.%06ld, System = %ld.%06ld\n",
+                       r_usage.ru_utime.tv_sec, r_usage.ru_utime.tv_usec,
+                       r_usage.ru_stime.tv_sec, r_usage.ru_stime.tv_usec);
+
+       }
+
+       /*  host environment variables */
+       {
+               extern char **environ;
+               char **env = environ;
+
+               fprintf(fp, "\n[[ Host environment variables ]]\n");
+               while (*env) {
+                       fprintf(fp, "%s\n", *env);
+                       env++;
+               }
+       }
+
+       /*  applied samsung feature */
+       {
+#if 0
+               fprintf(fp, "\n[[ Applied samsung feature ]]\n");
+#ifdef GST_EXT_TIME_ANALYSIS
+               fprintf(fp, "GST_EXT_TIME_ANALYSIS\n");
+#endif
+#ifdef GST_EXT_SKIP_RESCAN_REGISTRY
+               fprintf(fp, "GST_EXT_SKIP_RESCAN_REGISTRY\n");
+#endif
+#ifdef GST_EXT_USE_TINY_REGISTRY
+
+               fprintf(fp, "GST_EXT_USE_TINY_REGISTRY\n");
+#endif
+#ifdef GST_EXT_PAD_LINK_UNCHECKED
+               fprintf(fp, "GST_EXT_PAD_LINK_UNCHECKED\n");
+#endif
+#ifdef GST_EXT_DFBVIDEOSINK_IPP
+               fprintf(fp, "GST_EXT_DFBVIDEOSINK_IPP\n");
+#endif
+#ifdef GST_EXT_REDUCE_PLUGIN_NUM
+               fprintf(fp, "GST_EXT_REDUCE_PLUGIN_NUM\n");
+#endif
+#ifdef GST_EXT_USE_PDP_NETWORK
+               fprintf(fp, "GST_EXT_USE_PDP_NETWORK\n");
+#endif
+#ifdef GST_EXT_VOLUME_WITHOUT_LIBOIL
+               fprintf(fp, "GST_EXT_VOLUME_WITHOUT_LIBOIL\n");
+#endif
+#ifdef GST_EXT_DECODEBIN_QUEUE_ENLARGE
+               fprintf(fp, "GST_EXT_DECODEBIN_QUEUE_ENLARGE\n");
+#endif
+
+               /*  Camcorder releated feature */
+
+#ifdef GST_EXT_NONBLOCKDQUE
+               fprintf(fp, "GST_EXT_NONBLOCKDQUE\n");
+#endif
+#ifdef GST_EXT_RENEGOTIATION
+               fprintf(fp, "GST_EXT_RENEGOTIATION\n");
+#endif
+#ifdef GST_EXT_MOBILECAMERA
+               fprintf(fp, "GST_EXT_MOBILECAMERA\n");
+#endif
+#ifdef GST_EXT_VIDEOSCALE_IPP
+               fprintf(fp, "GST_EXT_VIDEOSCALE_IPP\n");
+#endif
+#ifdef GST_EXT_ASYNC_DEV
+               fprintf(fp, "GST_EXT_ASYNC_DEV\n");
+#endif
+#ifdef GST_EXT_AV_RECORDING
+               fprintf(fp, "GST_EXT_AV_RECORDING\n");
+#endif
+#ifdef GST_EXT_SWITCH_CAMERA
+               fprintf(fp, "GST_EXT_SWITCH_CAMERA\n");
+#endif
+
+               fprintf(fp, "\n\n");
+#endif
+       }
+
+}
+
+void cam_ta_accum_show_result(int direction)
+{
+       int i = 0;
+       char format[256];
+       FILE *fp = stderr;
+
+       if (!cam_g_accums)
+               return;
+
+       switch (direction) {
+       case CAM_TA_SHOW_STDOUT:
+               fp = stdout;
+               break;
+       case CAM_TA_SHOW_STDERR:
+               fp = stderr;
+               break;
+       case CAM_TA_SHOW_FILE:
+               {
+                       fp = fopen(CAM_TA_RESULT_FILE, "wt");
+                       if (!fp)
+                               return;
+               }
+       }
+       __print_some_info(fp);
+
+#ifdef CAM_TA_UNIT_MSEC
+       snprintf(format, sizeof(format),
+                "[%%3d] %%-%ds | \ttotal : %%4ld\tcalls : %%3ld\tavg : %%4ld\tmin : %%4ld\tmax : %%4ld\tstart : %%4lu\tend : %%4lu\tunpair : %%3ld\n",
+                cam_g_accum_longest_name);
+       fprintf(fp,
+               "BEGIN RESULT ACCUM============================ : NumOfItems : %d, unit(msec)\n",
+               cam_g_accum_index);
+#else
+       snprintf(format, sizeof(format),
+                "[%%3d] %%-%ds | \ttotal : %%ld\tcalls : %%ld\tavg : %%ld\tmin : %%ld\tmax : %%ld\tstart : %%lu\tend : %%lu\tunpair : %%ld\n",
+                cam_g_accum_longest_name);
+       fprintf(fp,
+               "BEGIN RESULT ACCUM============================ : NumOfItems : %d, unit(usec)\n",
+               cam_g_accum_index);
+#endif
+
+       for (i = 0; i < cam_g_accum_index; i++) {
+               /*  prevent 'devide by zero' error */
+               if (cam_g_accums[i]->num_calls == 0)
+                       cam_g_accums[i]->num_calls = 1;
+
+               fprintf(fp, format, i, cam_g_accums[i]->name, cam_g_accums[i]->elapsed_accum, cam_g_accums[i]->num_calls, (cam_g_accums[i]->elapsed_accum == 0) ? 0 : (int)(cam_g_accums[i]->elapsed_accum / cam_g_accums[i]->num_calls),       /*  Fix it! : devide by zero. */
+                       cam_g_accums[i]->elapsed_min,
+                       cam_g_accums[i]->elapsed_max,
+                       cam_g_accums[i]->first_start - cam_g_accum_first_time,
+                       cam_g_accums[i]->last_end - cam_g_accum_first_time,
+                       cam_g_accums[i]->num_unpair);
+       }
+       fprintf(fp, "END RESULT ACCUM  ============================\n");
+
+       if (direction == CAM_TA_SHOW_FILE)
+               fclose(fp);
+}
+
+#endif                         /* _CAM_TA_C_ */
diff --git a/src/cam_typeconverter.cpp b/src/cam_typeconverter.cpp
new file mode 100755 (executable)
index 0000000..49102c7
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+
+extern "C" {
+
+#include "cam_property.h"
+#include "CamTypeConverter.h"
+#include "cam_typeconverter.h"
+
+
+unsigned int cam_iso_dev_convert_caps(camera_attr_iso_e iso)
+{
+       return CCamTypeConverter::CamIsoDevConvertCaps(iso);
+}
+
+ unsigned int cam_iso_cam_convert_caps(CamIso iso)
+{
+       return CCamTypeConverter::CamIsoCamConvertCaps(iso);
+}
+
+unsigned int cam_effect_dev_convert_caps(camera_attr_effect_mode_e effect)
+{
+       return  CCamTypeConverter::CamEffectDevConvertCaps(effect);
+}
+
+unsigned int cam_effect_cam_convert_caps(CamSettingsEffects effect)
+{
+       return  CCamTypeConverter::CamEffectCamConvertCaps(effect);
+}
+
+
+unsigned int cam_fps_dev_convert_caps(camera_attr_fps_e fps)
+{
+       return  CCamTypeConverter::CamFpsDevConvertCaps(fps);
+}
+
+unsigned int cam_wb_dev_convert_caps(camera_attr_whitebalance_e wb)
+{
+       return  CCamTypeConverter::CamWbDevConvertCaps(wb);
+}
+
+unsigned int cam_wb_cam_convert_caps(CamSettingsWB wb)
+{
+       return  CCamTypeConverter::CamWbCamConvertCaps(wb);
+}
+
+
+unsigned int cam_focus_dev_convert_caps(camera_attr_af_mode_e focus)
+{
+       return  CCamTypeConverter::CamFocusDevConvertCaps(focus);
+}
+
+unsigned int cam_focus_cam_convert_caps(CamFocusMode focus)
+{
+       return  CCamTypeConverter::CamFocusCamConvertCaps(focus);
+}
+
+unsigned int cam_metering_dev_convert_caps(camera_attr_exposure_mode_e metering)
+{
+       return  CCamTypeConverter::CamMeteringDevConvertCaps(metering);
+}
+
+unsigned int cam_metering_cam_convert_caps(CamMetering type)
+{
+       return  CCamTypeConverter::CamMeteringCamConvertCaps(type);
+}
+
+unsigned int cam_scene_dev_convert_caps(camera_attr_scene_mode_e scene)
+{
+       return  CCamTypeConverter::CamSceneDevConvertCaps(scene);
+}
+
+unsigned int cam_scene_cam_convert_caps(CamSceneMode scene)
+{
+       return  CCamTypeConverter::CamSceneCamConvertCaps(scene);
+}
+
+unsigned int cam_flash_dev_convert_caps(camera_attr_flash_mode_e flash)
+{
+       return  CCamTypeConverter::CamFlashDevConvertCaps(flash);
+}
+
+unsigned int cam_flash_cam_convert_caps(CamFlashMode flash)
+{
+       return  CCamTypeConverter::CamFlashCamConvertCaps(flash);
+}
+
+unsigned int cam_resolution_cam_convert_caps(unsigned int res)
+{
+       return  CCamTypeConverter::CamResolutionCamConvertCaps(res);
+}
+
+}
+
+
diff --git a/src/cam_ui_effect_utils.c b/src/cam_ui_effect_utils.c
new file mode 100755 (executable)
index 0000000..f817810
--- /dev/null
@@ -0,0 +1,199 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_ui_effect_utils.h"\r
+static gboolean __focus_zoom_origin_state = TRUE;\r
+static Elm_Transit *zoom_transit_effect = NULL;\r
+\r
+gboolean cam_ui_effect_utils_get_zoom_state()\r
+{\r
+       return __focus_zoom_origin_state;\r
+}\r
+\r
+static void __zoom_effect_transit_del_cb(void *data, Elm_Transit *transit)\r
+{\r
+       DEBUG_TRACE("TODO: set default transit callback process");\r
+       zoom_transit_effect = NULL;\r
+}\r
+\r
+/*\r
+*      note: it is for cam_ui_effect_utils_set_zoom_effect\r
+*      and now: there will be always  one zoom effect running for\r
+*      cam_ui_effect_utils_set_zoom_effect at same time.\r
+*/\r
+\r
+Elm_Transit * cam_ui_effect_utils_get_zoom_effect()\r
+{\r
+       return zoom_transit_effect;\r
+}\r
+\r
+void cam_ui_effect_utils_stop_zoom_effect()\r
+{\r
+       if (zoom_transit_effect) {\r
+               elm_transit_del(zoom_transit_effect);\r
+               zoom_transit_effect = NULL;\r
+       }\r
+}\r
+\r
+void cam_ui_effect_utils_set_zoom_effect(Evas_Object *obj, float from_rate, float to_rate, double duration)\r
+{\r
+       Evas_Object *layout =  obj;\r
+\r
+       if (layout == NULL)\r
+               return;\r
+       /*Zoom in/out to scale to_rate/from_rate.*/\r
+       if (zoom_transit_effect) {\r
+               elm_transit_del(zoom_transit_effect);\r
+               zoom_transit_effect = NULL;\r
+       }\r
+       zoom_transit_effect = elm_transit_add();\r
+       if (zoom_transit_effect == NULL)\r
+               return;\r
+       if (to_rate < from_rate)\r
+               __focus_zoom_origin_state = TRUE;\r
+       else\r
+               __focus_zoom_origin_state = FALSE;\r
+       elm_transit_object_add(zoom_transit_effect, layout);\r
+       elm_transit_effect_zoom_add(zoom_transit_effect, from_rate, to_rate);\r
+       elm_transit_duration_set(zoom_transit_effect, duration);\r
+       elm_transit_objects_final_state_keep_set(zoom_transit_effect, EINA_TRUE);\r
+       elm_transit_del_cb_set(zoom_transit_effect, __zoom_effect_transit_del_cb, NULL);\r
+       elm_transit_go(zoom_transit_effect);\r
+\r
+}\r
+\r
+void cam_ui_effect_utils_set_zoom_inout_effect(Evas_Object *obj, float from_rate, float to_rate, double duration)\r
+{\r
+       Evas_Object *layout =  obj;\r
+\r
+       if (layout == NULL)\r
+               return;\r
+       /*Zoom out to scale */\r
+       Elm_Transit *transit = elm_transit_add();\r
+       elm_transit_object_add(transit, layout);\r
+       elm_transit_effect_zoom_add(transit, from_rate, to_rate);\r
+       elm_transit_duration_set(transit, duration);\r
+\r
+       /*Zoom in to be original size.*/\r
+       Elm_Transit *transit2 = elm_transit_add();\r
+       elm_transit_object_add(transit2, layout);\r
+       elm_transit_effect_zoom_add(transit2, to_rate, from_rate);\r
+       elm_transit_duration_set(transit2, duration);\r
+\r
+       elm_transit_chain_transit_add(transit, transit2);\r
+       elm_transit_go(transit);\r
+\r
+}\r
+\r
+\r
+/*for thumnail animation start*/\r
+/*note: init custom effect memory*/\r
+static Elm_Transit_Effect * __cam_ui_effect_custom_context_new(Evas_Coord from_w,\r
+                                                                       Evas_Coord from_h,\r
+                                                                       Evas_Coord to_w,\r
+                                                                       Evas_Coord to_h\r
+                                                                       )\r
+{\r
+       struct cam_ui_effect_custom_effect *custom_effect = calloc( 1, sizeof( struct cam_ui_effect_custom_effect ) );\r
+       if (!custom_effect) return NULL;\r
+\r
+       custom_effect->from.w = from_w;\r
+       custom_effect->from.h = from_h;\r
+       custom_effect->to.w = to_w - from_w;\r
+       custom_effect->to.h = to_h - from_h;\r
+       return custom_effect;\r
+}\r
+\r
+/*note: free custom effect memory*/\r
+static void __cam_ui_effect_custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit)\r
+{\r
+       struct cam_ui_effect_custom_effect *custom_effect = effect;\r
+       free(custom_effect);\r
+       custom_effect = NULL;\r
+}\r
+\r
+/*note: implement the effect solution, you could write new effect, by change these function*/\r
+static void __cam_ui_effect_custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress)\r
+{\r
+       if (!effect) return;\r
+\r
+       Evas_Coord w, h;\r
+       Evas_Object *obj;\r
+       const Eina_List *elist;\r
+\r
+       struct cam_ui_effect_custom_effect *custom_effect = (struct cam_ui_effect_custom_effect *) effect;\r
+       const Eina_List *objs = elm_transit_objects_get(transit);\r
+\r
+       if (progress < 0.5) {\r
+               h = custom_effect->from.h + (custom_effect->to.h * progress * 2);\r
+               w = custom_effect->from.w;\r
+       } else {\r
+               h = custom_effect->from.h + custom_effect->to.h;\r
+               w = custom_effect->from.w + (custom_effect->to.w * (progress - 0.5) * 2);\r
+       }\r
+       EINA_LIST_FOREACH(objs, elist, obj) {\r
+               if (obj) {\r
+                       evas_object_resize(obj, w, h);\r
+               }\r
+       }\r
+\r
+}\r
+\r
+/*note: when transit effect end, before transit del, this fuction will be called*/\r
+static void __cam_ui_effect_utils_transit_del_cb(void *data, Elm_Transit *transit)\r
+{\r
+       Evas_Object *obj = (Evas_Object *)data;\r
+       DEBUG_TRACE("");\r
+       if (obj) {\r
+               DEBUG_TRACE("");\r
+               struct appdata *ad = (struct appdata *)cam_appdata_get();\r
+               if (!ad)\r
+                       return;\r
+               if (!ad->toolbar.quickview_item.edje) {\r
+                       DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);\r
+                       DEL_EVAS_OBJECT(obj);\r
+                       return;\r
+               }\r
+               DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);\r
+               ad->toolbar.quickview_item.thumbnail_image = obj;\r
+               elm_object_part_content_set(ad->toolbar.quickview_item.edje,\r
+                                       "thumbnail", ad->toolbar.quickview_item.thumbnail_image);\r
+       }\r
+}\r
+\r
+void cam_ui_effect_utils_set_thumbnail_effect(Evas_Object *obj,\r
+                                                               Evas_Coord x,\r
+                                                               Evas_Coord y,\r
+                                                               Evas_Coord w,\r
+                                                               Evas_Coord h,\r
+                                                               double duration)\r
+{\r
+       Evas_Object *layout = obj;\r
+       Elm_Transit_Effect *effect_context = __cam_ui_effect_custom_context_new(0, h, w, h);\r
+\r
+       Elm_Transit *transit = elm_transit_add();\r
+       elm_transit_object_add(transit, layout);\r
+       elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);\r
+       elm_transit_effect_add(transit, __cam_ui_effect_custom_op, effect_context, __cam_ui_effect_custom_context_free);\r
+\r
+       elm_transit_objects_final_state_keep_set(transit,  TRUE);\r
+       elm_transit_duration_set(transit, duration);\r
+       elm_transit_del_cb_set(transit, __cam_ui_effect_utils_transit_del_cb, (void *)obj);\r
+       elm_transit_go(transit);\r
+}\r
+/*for thumbnail antimation end*/\r
+//end file\r
diff --git a/src/cam_ui_rotate_utils.c b/src/cam_ui_rotate_utils.c
new file mode 100755 (executable)
index 0000000..d37ea4e
--- /dev/null
@@ -0,0 +1,589 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_ui_rotate_utils.h"\r
+#include "cam_toolbar_edc_callback.h"\r
+#include "cam_mm.h"\r
+static void __cam_ui_rotate_utils_rotation_del_cb(void *data, Elm_Transit *transit)\r
+{\r
+       DEBUG_TRACE("rotate transition will be deleted");\r
+}\r
+\r
+static Ecore_Idler *__cam_ui_rotate_utils_idler = NULL;\r
+static Eina_Bool __cam_ui_rotate_utils_obj_rotation_idler_cb(void *data)\r
+{\r
+       if (__cam_ui_rotate_utils_idler) {\r
+               ecore_idler_del(__cam_ui_rotate_utils_idler);\r
+               __cam_ui_rotate_utils_idler = NULL;\r
+       }\r
+\r
+       struct cam_ui_rotate_obj_params *rotate_obj_params = (struct cam_ui_rotate_obj_params *)data;\r
+       if (!rotate_obj_params)\r
+               return ECORE_CALLBACK_CANCEL;\r
+       if (!rotate_obj_params->obj)\r
+               return ECORE_CALLBACK_CANCEL;\r
+\r
+       struct appdata *ad = (struct appdata *)cam_appdata_get();\r
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");\r
+\r
+       Evas_Object *obj = rotate_obj_params->obj;\r
+\r
+       ////TODO:add a function, to unset popup\r
+       Evas_Coord x, y, w, h;\r
+       evas_object_geometry_get(obj, &x, &y, &w, &h);\r
+       static int repeat_count = 0;\r
+       if (w == 0 || h == 0) {\r
+               if (repeat_count++ == 10) {\r
+                       repeat_count = 0;\r
+                       return ECORE_CALLBACK_CANCEL;\r
+               }\r
+               DEBUG_TRACE("repeat_count = %d", repeat_count);\r
+               return ECORE_CALLBACK_RENEW;\r
+       }\r
+\r
+       elm_object_part_content_unset(ad->toolbar_edje, "camera/setting/popup/area/toolbar");\r
+       DEBUG_TRACE("rotate_obj_params->x = %d", rotate_obj_params->x);\r
+       DEBUG_TRACE("rotate_obj_params->y = %d", rotate_obj_params->y);\r
+       cam_ui_rotate_utils_map_rotate(obj, rotate_obj_params->x, rotate_obj_params->y, rotate_obj_params->degree);\r
+       free(rotate_obj_params);\r
+       rotate_obj_params = NULL;\r
+\r
+       edje_object_signal_emit(_EDJ(obj), "set.popup.show", "prog");\r
+       evas_object_raise(obj);\r
+       evas_object_show(obj);\r
+\r
+       return ECORE_CALLBACK_CANCEL;\r
+}\r
+\r
+void cam_ui_rotate_utils_map_setting_popup_rotate(Evas_Object *obj,\r
+                                                                       Evas_Coord start_x,\r
+                                                                       Evas_Coord start_y,\r
+                                                                       double degree)\r
+{\r
+       DEBUG_TRACE("degree = %f", degree);\r
+       struct cam_ui_rotate_obj_params *rotate_obj_params = calloc( 1, sizeof( struct cam_ui_rotate_obj_params ) );\r
+       if (!rotate_obj_params) return;\r
+       rotate_obj_params->obj = obj;\r
+       rotate_obj_params->x = start_x;\r
+       rotate_obj_params->y = start_y;\r
+       rotate_obj_params->degree = degree;\r
+       DEBUG_TRACE("rotate_obj_params->x = %d", start_x);\r
+       DEBUG_TRACE("rotate_obj_params->y = %d", start_y);\r
+       DEBUG_TRACE("rotate_obj_params->x = %d", start_x);\r
+       DEBUG_TRACE("rotate_obj_params->degree = %f", degree);\r
+       if (__cam_ui_rotate_utils_idler) {\r
+               ecore_idler_del(__cam_ui_rotate_utils_idler);\r
+               __cam_ui_rotate_utils_idler = NULL;\r
+\r
+       }\r
+       __cam_ui_rotate_utils_idler = ecore_idler_add(__cam_ui_rotate_utils_obj_rotation_idler_cb, (void *)rotate_obj_params);\r
+}\r
+\r
+void cam_ui_rotate_utils_map_rotate(Evas_Object *obj,\r
+                                               Evas_Coord start_x,\r
+                                               Evas_Coord start_y,\r
+                                               double degree)\r
+{\r
+       if (!obj) return;\r
+       Evas_Map *map = NULL;\r
+       map = evas_map_new(4);\r
+       if (!map) return;\r
+\r
+       Evas_Coord x, y, w, h;\r
+       float half_w, half_h;\r
+\r
+       evas_map_util_points_populate_from_object_full(map, obj, 0);\r
+       evas_object_geometry_get(obj, &x, &y, &w, &h);\r
+       DEBUG_TRACE("obj x, y, w, h:%d %d %d %d", x, y, w, h);\r
+       DEBUG_TRACE("start x, y, w, h: %d %d %d %d", start_x, start_y, w, h);\r
+       half_w = (float)w * 0.5;\r
+       half_h = (float)h * 0.5;\r
+       evas_map_point_coord_set(map, 0, start_x, start_y, 0);\r
+       evas_map_point_coord_set(map, 1, start_x + w , start_y, 0);\r
+       evas_map_point_coord_set(map, 2, start_x + w , start_y + h, 0);\r
+       evas_map_point_coord_set(map, 3, start_x, start_y + h, 0);\r
+       evas_map_util_rotate(map, degree, start_x + half_w, start_y + half_h);\r
+       /*note:foc 2000, just default*/\r
+       evas_map_util_3d_perspective(map, start_x + half_w, start_y + half_h, 0, 2000);\r
+       evas_object_map_enable_set(obj, EINA_TRUE);\r
+       evas_object_map_set(obj, map);\r
+\r
+       evas_map_free(map);\r
+       map = NULL;\r
+\r
+}\r
+\r
+void cam_ui_rotate_utils_map_self_rotate(Evas_Object *obj,\r
+                                                       double degree)\r
+{\r
+       if (!obj) return;\r
+       Evas_Map *map = NULL;\r
+       map = evas_map_new(4);\r
+       if (!map) return;\r
+\r
+       Evas_Coord x, y, w, h;\r
+       float half_w, half_h;\r
+\r
+       evas_map_util_points_populate_from_object_full(map, obj, 0);\r
+       evas_object_geometry_get(obj, &x, &y, &w, &h);\r
+       DEBUG_TRACE("obj x, y, w, h:%d %d %d %d", x, y, w, h);\r
+       half_w = (float)w * 0.5;\r
+       half_h = (float)h * 0.5;\r
+       evas_map_point_coord_set(map, 0, x, y, 0);\r
+       evas_map_point_coord_set(map, 1, x + w , y, 0);\r
+       evas_map_point_coord_set(map, 2, x + w , y + h, 0);\r
+       evas_map_point_coord_set(map, 3, x, y + h, 0);\r
+       evas_map_util_rotate(map, degree, x + half_w, y + half_h);\r
+       /*note:foc 2000, just default*/\r
+       evas_map_util_3d_perspective(map, x + half_w, y + half_h, 0, 2000);\r
+       evas_object_map_enable_set(obj, EINA_TRUE);\r
+       evas_object_map_set(obj, map);\r
+\r
+       evas_map_free(map);\r
+       map = NULL;\r
+\r
+}\r
+\r
+\r
+void cam_ui_rotate_utils_rotation_effect(Evas_Object *obj,\r
+                                                       float from_degree,\r
+                                                       float to_degree,\r
+                                                       double duration,\r
+                                                       void (*cb) (void *data, Elm_Transit *transit),\r
+                                                       void *data)\r
+{\r
+       DEBUG_TRACE();\r
+       Evas_Object *nf = obj;\r
+       Elm_Transit *transit = elm_transit_add();\r
+       /*360 degree rotation effect with clock wise direction.*/\r
+       elm_transit_object_add(transit, nf);\r
+       elm_transit_effect_rotation_add(transit, from_degree, to_degree);\r
+       elm_transit_duration_set(transit, duration);\r
+       if (cb)\r
+               elm_transit_del_cb_set(transit, cb, data);\r
+       else\r
+               elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_rotation_del_cb, data);\r
+       elm_transit_objects_final_state_keep_set(transit,  TRUE);\r
+       elm_transit_go(transit);\r
+}\r
+\r
+/*note: below is for icon rotate*/\r
+\r
+static gboolean cam_ui_rotate_utils_get_clockwise_state(struct appdata *ad)\r
+{\r\r
+       gboolean IsClockwise = FALSE;\r
+\r
+       if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) {\r
+               if (ad->rot_current > ad->rot_previous){\r
+                       IsClockwise = TRUE;\r
+               } else {\r
+                       IsClockwise = FALSE;\r
+               }\r
+       } else {\r
+               if(ad->rot_current > ad->rot_previous) {\r
+                       IsClockwise = FALSE;\r
+               } else {\r
+                       IsClockwise = TRUE;\r
+               }\r
+       }\r
+       return IsClockwise;\r
+\r
+}\r
+void cam_ui_rotate_utils_get_rotation_degree(void* data, int* from_degree, int* to_degree)\r
+{\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retm_if(ad == NULL, "appdata is NULL");\r
+\r
+       int tmp_to_degree = 0;\r
+       int tmp_from_degree = 0;\r
+       gboolean IsClockwise = FALSE;\r
+\r
+       if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) {\r
+               if (ad->rot_current > ad->rot_previous){\r
+                       IsClockwise = TRUE;\r
+               } else {\r
+                       IsClockwise = FALSE;\r
+               }\r
+       } else {\r
+               if(ad->rot_current > ad->rot_previous) {\r
+                       IsClockwise = FALSE;\r
+               } else {\r
+                       IsClockwise = TRUE;\r
+               }\r
+       }\r
+\r
+       switch(ad->rot_previous) {\r
+               case APP_DEVICE_ORIENTATION_270:\r
+                       if(ad->rot_current == APP_DEVICE_ORIENTATION_0) {\r
+                               tmp_from_degree = 360;\r
+                       } else {\r
+                               tmp_from_degree = 0;\r
+                       }\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_0:\r
+                       tmp_from_degree = 270;\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_90:\r
+                       tmp_from_degree = 180;\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_180:\r
+                       tmp_from_degree = 90;\r
+                               break;\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       switch(ad->rot_current) {\r
+               case APP_DEVICE_ORIENTATION_270:\r
+                       if( ad->rot_previous == APP_DEVICE_ORIENTATION_0) {\r
+                               tmp_to_degree = 360;\r
+                       } else {\r
+                               tmp_to_degree = 0;\r
+                       }\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_0:\r
+                       tmp_to_degree = 270;\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_90:\r
+                       tmp_to_degree = 180;\r
+                       break;\r
+               case APP_DEVICE_ORIENTATION_180:\r
+                       tmp_to_degree = 90;\r
+                       break;\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       *from_degree = tmp_from_degree;\r
+       *to_degree = tmp_to_degree;\r
+\r
+       cam_debug(LOG_UI, "from_degree : %d, to_degree : %d ", *from_degree, *to_degree );\r
+}\r
+\r
+\r
+void cam_ui_rotate_utils_get_rotation_degree_map(void* data, int* degree)\r
+{\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retm_if(ad == NULL, "appdata is NULL");\r
+\r
+       int tmp_degree = 0;\r
+\r
+       gboolean IsClockwise = FALSE;\r
+\r
+       if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) {\r
+               if (ad->rot_current > ad->rot_previous) {\r
+                       IsClockwise = TRUE;\r
+               } else {\r
+                       IsClockwise = FALSE;\r
+               }\r
+       } else {\r
+               if (ad->rot_current > ad->rot_previous) {\r
+                       IsClockwise = FALSE;\r
+               } else {\r
+                       IsClockwise = TRUE;\r
+               }\r
+       }\r
+\r
+       switch(ad->rot_current) {\r
+       case APP_DEVICE_ORIENTATION_0:\r
+               tmp_degree = 270;\r
+               break;\r
+       case APP_DEVICE_ORIENTATION_90:\r
+               tmp_degree =  90;\r
+               break;\r
+       case APP_DEVICE_ORIENTATION_180:\r
+               tmp_degree = 180;\r
+               break;\r
+       case APP_DEVICE_ORIENTATION_270:\r
+               tmp_degree = 0;\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       *degree = tmp_degree;\r
+\r
+       cam_debug(LOG_UI, "degree : %d", *degree );\r
+\r
+}\r
+\r
+static void __cam_ui_rotate_utils_focus_coordate_rotate(struct appdata *ad)\r
+{\r
+       /*TODO: for animator, we just rotate when popup create*/\r
+       cam_retm_if(ad == NULL,  "appdata is NULL");\r
+\r
+       int af_start_x, af_start_y;\r
+       af_start_x = af_start_y = 0;\r
+\r
+       int x_w, y_h;\r
+       x_w = y_h = 0;\r
+       if (ad->angle == 90\r
+               || ad->angle == 270) {\r
+               x_w = 1280 * elm_config_scale_get();\r
+               y_h = 720 * elm_config_scale_get();\r
+       } else if (ad->angle == 0\r
+               || ad->angle == 180) {\r
+               x_w = 720 * elm_config_scale_get();\r
+               y_h = 1280 * elm_config_scale_get();\r
+       } else {\r
+               DEBUG_TRACE("%d", ad->angle_pre);\r
+               x_w = 1280 * elm_config_scale_get();\r
+               y_h = 720 * elm_config_scale_get();\r
+       }\r
+\r
+       switch (ad->rotate_angle) {\r
+       case 0:\r
+               af_start_x = ad->af_start_x;\r
+               af_start_y = ad->af_start_y;\r
+               break;\r
+       case 90:/*un-clockwise*/\r
+               af_start_x = ad->af_start_y;\r
+               af_start_y = y_h - ad->af_start_x;\r
+               if (ad->angle == 0 || ad->angle == 180) {\r
+                       af_start_y -= ad->camera_focus_w;\r
+               } else {\r
+                       af_start_y -= ad->camera_focus_h;\r
+               }\r
+               break;\r
+       case -90:\r
+               af_start_x = x_w - ad->af_start_y;\r
+               af_start_y = ad->af_start_x;\r
+               if (ad->angle == 0 || ad->angle == 180) {\r
+                       af_start_x -= ad->camera_focus_h;\r
+               } else {\r
+                       af_start_x -= ad->camera_focus_w;\r
+               }\r
+               break;\r
+       case 180:\r
+       case -180:\r
+               af_start_x = x_w - ad->af_start_x;\r
+               af_start_y = y_h - ad->af_start_y;\r
+               if (ad->angle == 0 || ad->angle == 180) {\r
+                       af_start_x -= ad->camera_focus_h;\r
+                       af_start_y -= ad->camera_focus_w;\r
+               } else {\r
+                       af_start_x -= ad->camera_focus_w;\r
+                       af_start_y -= ad->camera_focus_h;\r
+               }\r
+               break;\r
+       default:\r
+               DEBUG_TRACE("%d", ad->rotate_angle);\r
+       }\r
+\r
+       ad->af_start_x = af_start_x;\r
+       ad->af_start_y = af_start_y;\r
+\r
+}\r
+\r
+static void __cam_ui_rotate_utils_after_rotate_cb(void *data, Elm_Transit *transit)\r
+{\r
+\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retm_if(ad == NULL,  "appdata is NULL");\r
+\r
+       __cam_ui_rotate_utils_focus_coordate_rotate(ad);\r
+       ad->angle_pre = ad->angle;/*must called after __cam_ui_roate_utils_focus_coordate_rotate*/\r
+       cam_app_screen_rotate(ad);\r
+       /*cam_screen_rotate(ad);*/\r
+}\r
+\r
+static void __cam_ui_rotate_utils_after_shortcuts_rotate_cb(void *data, Elm_Transit *transit)\r
+{\r
+\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retm_if(ad == NULL,  "appdata is NULL");\r
+       cam_retm_if(ad->toolbar_edje == NULL,  "appdata is NULL");\r
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),\r
+                                       "toolbar_1_icon,normal", "prog");\r
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),\r
+                                       "toolbar_2_icon,normal", "prog");\r
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),\r
+                                       "toolbar_3_icon,normal", "prog");\r
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),\r
+                                       "toolbar_4_icon,normal", "prog");\r
+\r
+}\r
+\r
+gboolean cam_ui_rotate_utils_rotate_start(void *data, double duration)\r
+{\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retvm_if(ad == NULL, FALSE,  "appdata is NULL");\r
+\r
+       if (ad->toolbar_setting_popup) {\r
+               ad->show_setting_popup_after_rotate = TRUE;\r
+               cam_toolbar_setting_popup_destroy(ad);\r
+       }\r
+\r
+       if (ad->setting_ctxpopup) {\r
+               cam_toolbar_setting_popup_destroy(ad);\r
+       }\r
+\r
+       if (ad->edit_shortcuts_popup) {\r
+               ad->show_edit_shortcuts_popup_after_rotate = TRUE;\r
+               toolbar_destroy_shortcuts_popup(ad);\r
+       }\r
+\r
+       cam_debug(LOG_UI, "duration : %d", duration);\r
+\r
+       ad->is_rotating = TRUE;\r
+       Elm_Transit* transit= elm_transit_add();\r
+\r
+       int from_degree = 0;\r
+       int to_degree = 0;\r
+\r
+       int i = 0;\r
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {\r
+               int type = ad->toolbar_menu_arrays[i].menu_type;\r
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;\r
+               if (icon == NULL) {\r
+                       cam_debug(LOG_UI, "toolbar_0_icon is null" );\r
+               } else {\r
+                       elm_transit_object_add(transit, icon);\r
+               }\r
+       }\r
+\r
+#if 0 /*TODO: block temporary, good solution should be consider*/\r
+       if (ad->indicator_edje) {\r
+               elm_transit_object_add(transit, ad->indicator_edje);\r
+       }\r
+\r
+#endif\r
+\r
+       if (ad->focus_edje) {\r
+               elm_transit_object_add(transit, ad->focus_edje);\r
+       }\r
+       if (ad->timer_icon_edje) {\r
+               elm_transit_object_add(transit, ad->timer_icon_edje);\r
+       }\r
+       if (ad->capturebtn_edje) {\r
+               elm_transit_object_add(transit, ad->capturebtn_edje);\r
+       }\r
+       if (ad->shutterbtn_camera_icon) {\r
+               elm_transit_object_add(transit, ad->shutterbtn_camera_icon);\r
+       }\r
+       if (ad->recordingbtn) {\r
+               elm_transit_object_add(transit, ad->recordingbtn);\r
+       }\r
+       if (ad->recording_stop_btn) {\r
+               elm_transit_object_add(transit, ad->recording_stop_btn);\r
+       }\r
+       if (ad->toolbar.quickview_item.edje) {\r
+               elm_transit_object_add(transit, ad->toolbar.quickview_item.edje);\r
+       }\r
+       if (ad->backbtn) {\r
+               elm_transit_object_add(transit, ad->backbtn);\r
+       }\r
+       if (ad->caf_button) {\r
+               elm_transit_object_add(transit, ad->caf_button);\r
+       }\r
+\r
+/*\r
+       if (ad->recording_edje\r
+               && cam_mm_get_state() == RECORDER_STATE_RECORDING)\r
+               elm_transit_object_add(transit, ad->recording_edje);*/\r
+       cam_ui_rotate_utils_get_rotation_degree(ad, &from_degree, &to_degree);\r
+       from_degree = ad->angle_pre;\r
+       to_degree = ad->angle;\r
+\r
+#if 0\r
+       if ((from_degree == 0 && to_degree == 90)\r
+           || (from_degree == 90 && to_degree == 180)\r
+           || (from_degree == 180 && to_degree == 270)\r
+           || (from_degree == 270 && to_degree == 0)) {\r
+               from_degree = 0;\r
+               to_degree = -90;\r
+               DEBUG_TRACE("CLOCKWISE");\r
+       } else if ((from_degree == 90 && to_degree == 0)\r
+                  || (from_degree == 180 && to_degree == 90)\r
+                  || (from_degree == 270 && to_degree == 180)\r
+                  || (from_degree == 0 && to_degree == 270)) {\r
+               from_degree = 0;\r
+               to_degree = 90;\r
+               DEBUG_TRACE("UN-CLOCKWISE");\r
+       }\r
+#else\r
+       DEBUG_TRACE("from_degree->to_degree %d->%d", from_degree, to_degree);\r
+\r
+       if ((to_degree - from_degree) == 270) {\r
+               from_degree = 0;\r
+               to_degree = 90;\r
+               ad->rotate_angle = 90;\r
+       } else if ((to_degree - from_degree) == -270) {\r
+               from_degree = 0;\r
+               to_degree = -90;\r
+               ad->rotate_angle = -90;\r
+       } else {\r
+               to_degree = (to_degree - from_degree) *(-1);\r
+               from_degree = 0;\r
+               ad->rotate_angle = to_degree;\r
+       }\r
+       DEBUG_TRACE("from_degree->to_degree %d->%d", from_degree, to_degree);\r
+#endif\r
+       cam_debug(LOG_UI, "ad->angle : %d, ad->angle_pre : %d ", ad->angle, ad->angle_pre );\r
+       gboolean is_clockwise = cam_ui_rotate_utils_get_clockwise_state(ad);\r
+       cam_debug(LOG_UI, "is_clockwise : %d, ", is_clockwise );\r
+       elm_transit_effect_rotation_add(transit, from_degree, to_degree);\r
+       elm_transit_duration_set(transit, duration);\r
+       elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_after_rotate_cb, data);\r
+       elm_transit_objects_final_state_keep_set(transit, TRUE);\r
+       elm_transit_go(transit);\r
+\r
+       cam_debug(LOG_UI, "real_from_degree : %d, real_to_degree : %d ", from_degree, to_degree );\r
+       /*ad->angle_pre = ad->angle;*/\r
+       return FALSE;\r
+\r
+}\r
+\r
+gboolean cam_ui_rotate_utils_rotate_toolbar_shortcuts(void *data, double duration)\r
+{\r
+       struct appdata *ad = (struct appdata *)data;\r
+       cam_retvm_if(ad == NULL, FALSE,  "appdata is NULL");\r
+\r
+       cam_debug(LOG_UI, "duration : %d", duration);\r
+\r
+       Elm_Transit* transit= elm_transit_add();\r
+\r
+       int from_degree = 0;\r
+       int to_degree = 0;\r
+\r
+\r
+       int i = 0;\r
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {\r
+               int type = ad->toolbar_menu_arrays[i].menu_type;\r
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;\r
+               if (icon == NULL) {\r
+                       cam_debug(LOG_UI, "toolbar_0_icon is null" );\r
+               } else {\r
+                       elm_transit_object_add(transit, icon);\r
+               }\r
+       }\r
+\r
+       cam_ui_rotate_utils_get_rotation_degree(ad, &from_degree, &to_degree);\r
+\r
+       elm_transit_effect_rotation_add(transit, from_degree, to_degree);\r
+       elm_transit_duration_set(transit, duration);\r
+       elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_after_shortcuts_rotate_cb, data);\r
+       elm_transit_objects_final_state_keep_set(transit, TRUE);\r
+       elm_transit_go(transit);\r
+\r
+       cam_debug(LOG_UI, "real_from_degree : %d, real_to_degree : %d ", from_degree, to_degree );\r
+       return FALSE;\r
+\r
+}\r
+\r
+\r
+//end file\r
diff --git a/src/cam_voice_command.c b/src/cam_voice_command.c
new file mode 100755 (executable)
index 0000000..eb8491f
--- /dev/null
@@ -0,0 +1,139 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.1 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#include "cam_voice_command.h"\r
+#include "cam_debug.h"\r
+\r
+// voice control module is not setup.\r
+#ifdef ENABLE_VOICE_CONTROL\r
+#include <vc_bargein.h>\r
+\r
+static vc_bargein_h voice_cmd_h = NULL;\r
+static cam_voice_cmd_cb g_cmd_cb;\r
+\r
+static void __init_cb(vc_bargein_h vc, void *user_data);\r
+static void __result_cb(vc_bargein_h vc, vc_bargein_result_event_e event, vc_bargein_app_type_e app_type, int action_type, void *user_data);\r
+static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data);\r
+static void __start_voice_cmd(void *user_data);\r
+\r
+static void __init_cb(vc_bargein_h vc, void *user_data)\r
+{\r
+\r
+       cam_retm_if(user_data == NULL, "user_data is NULL");\r
+\r
+       if (vc == NULL) {\r
+               cam_debug(LOG_CAM, "voice handle init fail");\r
+               g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+       }\r
+\r
+       __start_voice_cmd(user_data);\r
+\r
+       return;\r
+}\r
+\r
+static void __result_cb(vc_bargein_h vc, vc_bargein_result_event_e event, vc_bargein_app_type_e app_type, int action_type, void *user_data)\r
+{\r
+       if (voice_cmd_h == NULL) {\r
+               cam_debug(LOG_CAM, "voice_cmd_h is NULL");\r
+               g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+       }\r
+\r
+       if (app_type == VC_BARGEIN_APP_TYPE_CAMERA && action_type == VC_BARGEIN_CAMERA_ACTION_CAPTURE) {\r
+               switch(event) {\r
+               case VC_BARGEIN_RESULT_EVENT_SUCCESS:\r
+                       {\r
+                               g_cmd_cb(CAM_VOICE_CMD_READY, user_data);\r
+                       }\r
+                       break;\r
+               case VC_BARGEIN_RESULT_EVENT_REJECTED:\r
+                       {\r
+                               g_cmd_cb(CAM_VOICE_CMD_REJECT, user_data);\r
+                       }\r
+                       break;\r
+               case VC_BARGEIN_RESULT_EVENT_ERROR:\r
+               default:\r
+                       g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+                       return;\r
+               }\r
+       }\r
+       else\r
+               g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+\r
+       return;\r
+}\r
+\r
+static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data)\r
+{\r
+       cam_debug(LOG_CAM, "error is [%d]", reason);\r
+       g_cmd_cb(CAM_VOICE_CMD_READY, user_data);\r
+       return;\r
+}\r
+\r
+static void __start_voice_cmd(void *user_data)\r
+{\r
+       if (voice_cmd_h == NULL) {\r
+               cam_debug(LOG_CAM, "voice_cmd_h is NULL");\r
+               g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+       }\r
+\r
+       if (vc_bargein_start(voice_cmd_h, VC_BARGEIN_LANGUAGE_KO_KR, VC_BARGEIN_APP_TYPE_CAMERA) != VC_BARGEIN_ERROR_NONE) {\r
+               cam_debug(LOG_CAM, "vc_bargein_start() fail");\r
+               g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);\r
+       }\r
+       return;\r
+}\r
+\r
+#endif\r
+\r
+gboolean cam_voice_cmd_create(cam_voice_cmd_cb cmd_cb, void *user_data)\r
+{\r
+#ifdef ENABLE_VOICE_CONTROL\r
+\r
+       cam_retvm_if(user_data == NULL, FALSE, "user_data is NULL");\r
+       if (voice_cmd_h) {\r
+               vc_bargein_cancel(voice_cmd_h);\r
+               vc_bargein_destroy(voice_cmd_h);\r
+               voice_cmd_h = NULL;\r
+       }\r
+\r
+       g_cmd_cb = cmd_cb;\r
+\r
+       if (vc_bargein_create(&voice_cmd_h, (vc_bargein_initialized_cb)__init_cb,\r
+               (vc_bargein_result_cb)__result_cb, (vc_bargein_error_cb)__error_cb, user_data) != VC_BARGEIN_ERROR_NONE) {\r
+               cam_debug(LOG_CAM, "vc_bargein_create() fail");\r
+               return FALSE;\r
+       }\r
+#endif\r
+\r
+       return TRUE;\r
+}\r
+\r
+void cam_voice_cmd_destroy()\r
+{\r
+#ifdef ENABLE_VOICE_CONTROL\r
+       if (voice_cmd_h == NULL) {\r
+               cam_debug(LOG_CAM, "voice_cmd_h is already delete");\r
+               return;\r
+       }\r
+\r
+       vc_bargein_cancel(voice_cmd_h);\r
+       vc_bargein_destroy(voice_cmd_h);\r
+       voice_cmd_h = NULL;\r
+#endif\r
+       return;\r
+}\r
+\r
diff --git a/src/camera_utils.c b/src/camera_utils.c
new file mode 100755 (executable)
index 0000000..6dbc292
--- /dev/null
@@ -0,0 +1,1461 @@
+/*
+ * 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 <image_util.h>
+#include <malloc.h>
+#include <ctype.h>
+#include "camera_utils.h"
+#include "cam_debug.h"
+#include "cam_error.h"
+#include "cam_ta.h"
+#include "cam_mm.h"
+#include "cam_file.h"
+
+#define JPEG_8M_APPROXIMATELY_SIZE     2096000
+#define JPEG_W6M_APPROXIMATELY_SIZE    1699000
+#define JPEG_5M_APPROXIMATELY_SIZE     1436000
+#define JPEG_W4M_APPROXIMATELY_SIZE    1210000
+#define JPEG_3M_APPROXIMATELY_SIZE     849500
+#define JPEG_W2M_APPROXIMATELY_SIZE 693910
+#define JPEG_2M_APPROXIMATELY_SIZE     566000
+#define JPEG_1M_APPROXIMATELY_SIZE     283000
+#define JPEG_VGA_APPROXIMATELY_SIZE    135000
+
+#define                CLIPING(data)  ((data) < 0 ? 0 : ((data) > 255) ? 255 : (data))
+/*#define               SUPPORT_WINK            //use wink library */
+
+static void YuvToRgb(int Y, int U, int V, int *R, int *G, int *B)
+{
+       *B = CLIPING((76284 * (Y - 16) + 132252 * (U - 128)) >> 16);
+       *G = CLIPING((76284 * (Y - 16) - 53281 * (V - 128) -
+                     25625 * (U - 128)) >> 16);
+       *R = CLIPING((76284 * (Y - 16) + 104595 * (V - 128)) >> 16);
+}
+
+/* #define SUPPORT_WINK */
+#define CAPTUERD_IMAGE_SAVE_PATH "/tmp/captured_image.jpg"
+
+#ifndef YUV422_SIZE
+#define YUV422_SIZE(width, height) ((width) * (height) *  2)
+#endif                         /* YUV422_SIZE */
+
+#ifndef YUV420_SIZE
+#define YUV420_SIZE(width, height) ((width) * (height) * 3 / 2)
+#endif                         /* YUV420_SIZE */
+
+#ifdef MAX_PATH
+#define MAX_PATH 256
+#endif
+
+char *m_mmc_path = NULL;
+
+/*get the torchlight on/off value*/
+gboolean cam_utils_check_torchlight_status(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+       int ret = -1; /*error, success is 0*/
+       int key_value = -1;
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, &key_value); /*ret [-1: error, 0:succes], key_value[on:1 , off:0]*/
+       DEBUG_TRACE("VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT is changed to %d", key_value);
+       if (ret == -1) {
+               DEBUG_TRACE("vconf_get_int failed");
+               return FALSE;
+       }
+       if (key_value) {
+               /*torchlight is working*/
+               ad->torchlight_on = TRUE;
+       } else {
+               ad->torchlight_on = FALSE;
+       }
+       return TRUE;
+}
+
+/*get the battery warning low state*/
+gboolean cam_utils_check_battery_warning_low(void)
+{
+       int low_status = -1;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &low_status)) {
+               cam_debug(LOG_UI, "battery status low = %d", low_status);
+               if (low_status <= VCONFKEY_SYSMAN_BAT_WARNING_LOW)
+                       return TRUE;
+       } else {
+               cam_warning(LOG_UI, "get setting failed %s",
+                           VCONFKEY_SYSMAN_BATTERY_STATUS_LOW);
+       }
+
+       return FALSE;
+}
+/*get the battery critical low state*/
+gboolean cam_utils_check_battery_critical_low(void)
+{
+       int low_status = -1;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &low_status)) {
+               cam_debug(LOG_UI, "battery status low = %d", low_status);
+               if (low_status <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW)
+                       return TRUE;
+       } else {
+               cam_warning(LOG_UI, "get setting failed %s",
+                           VCONFKEY_SYSMAN_BAT_CRITICAL_LOW);
+       }
+
+       return FALSE;
+}
+
+
+gboolean cam_utils_check_call_running(void)
+{
+       int call_state = -1;
+
+       if (!vconf_get_int(VCONFKEY_CALL_STATE, &call_state)) {
+               cam_debug(LOG_UI, "call state = %d", call_state);
+               if (call_state == VCONFKEY_CALL_OFF)
+                       return FALSE;
+       } else {
+               cam_warning(LOG_UI, "get setting failed %s",
+                           VCONFKEY_CALL_STATE);
+       }
+
+       return TRUE;
+}
+
+int cam_utils_get_battery_level(void)
+{
+       debug_fenter(LOG_SYS);
+
+       gint battery_level = -1;
+
+       /*  VCONF_BATTERY_LEVEL or VCONFKEY_INDICATOR_MODULE_BATTERY */
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_level)) {
+               cam_info(LOG_SYS, "battery_level = %d", battery_level);
+               return battery_level;
+       } else {
+               cam_info(LOG_SYS, "get setting failed %s",
+                        VCONFKEY_SYSMAN_BATTERY_CAPACITY);
+       }
+
+       return battery_level;
+}
+
+gint cam_utils_get_charging_status(void)
+{
+       debug_fenter(LOG_SYS);
+
+       gint charging = -1;
+
+       /*  VCONF_BATTERY_CHARGE_NOW or VCONFKEY_INDICATOR_MODULE_CHARGE */
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &charging)) {
+               cam_info(LOG_SYS, "charging = %d", charging);
+       } else {
+               cam_info(LOG_SYS, "get setting failed %s",
+                        VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW);
+       }
+
+       return charging;
+}
+
+guint64 cam_system_get_remain_rec_time(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       if (ad == NULL) {
+               return 0;
+       }
+       CamAppData *camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               return 0;
+       }
+       guint64 remain_time = 0;
+
+       {
+               gint64 free_space = 0;
+               guint a_bitrate = 0, v_bitrate = 0;
+               gchar* target_path = (gchar*)cam_app_get_target_path();
+               if (target_path == NULL) {
+                       return 0;
+               }
+               free_space = cam_get_free_space(target_path);
+
+               a_bitrate = cam_app_get_aenc_bitrate(ad);
+               v_bitrate = cam_app_get_venc_bitrate(ad, camapp->video_quality);
+
+               remain_time =
+                   (guint64)((free_space * 8) / (a_bitrate + v_bitrate));
+
+       }
+       return remain_time;
+}
+
+gint64 cam_system_get_still_count_by_resolution(void *data)
+{
+       debug_fenter(LOG_CAM);
+
+       struct appdata *ad = (struct appdata *)data;
+       if (ad == NULL) {
+               return 0;
+       }
+       CamAppData *camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               return 0;
+       }
+
+       gint64 free_space = 0;
+       gint64 remained_count = 0;
+       gint64 avg_file_size = -1;
+       gchar* target_path = (gchar*)cam_app_get_target_path();
+       if (target_path == NULL) {
+               return 0;
+       }
+       free_space = cam_get_free_space(target_path);
+       DEBUG_TRACE("FREE SPACE =%d", free_space);
+       free_space = (free_space - STILL_MINIMAL_SPACE);
+
+       /* TODO: Quality factor should be calculated later!
+        */
+       switch (camapp->photo_resolution) {
+       case CAM_RESOLUTION_3264x2448:
+       case CAM_RESOLUTION_3264x2176:
+               avg_file_size = JPEG_8M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_3264x1960:
+       case CAM_RESOLUTION_3264x1836:
+               avg_file_size = JPEG_W6M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_2800x1920:
+       case CAM_RESOLUTION_2560x1920:
+               avg_file_size = JPEG_5M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_2560x1536:
+               avg_file_size = JPEG_W4M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_2560x1440:
+       case CAM_RESOLUTION_2048x1536:
+               avg_file_size = JPEG_3M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_2048x1152:
+               avg_file_size = JPEG_W2M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_1920x1080:
+       case CAM_RESOLUTION_1600x1200:
+       case CAM_RESOLUTION_1392x1392:
+               avg_file_size = JPEG_2M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_1280x720:
+       case CAM_RESOLUTION_1280x960:
+               avg_file_size = JPEG_1M_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_SVGA:
+               avg_file_size = 150 * 1024 * 2;
+               break;
+
+       case CAM_RESOLUTION_WVGA:
+               avg_file_size = 130 * 1024 * 2;
+               break;
+
+       case CAM_RESOLUTION_VGA:
+               avg_file_size = JPEG_VGA_APPROXIMATELY_SIZE;
+               break;
+
+       case CAM_RESOLUTION_WQVGA:
+               avg_file_size = 100 * 1024 * 2;
+               break;
+
+       case CAM_RESOLUTION_QVGA:
+               avg_file_size = 100 * 1024 * 1.5;
+               break;
+
+       case CAM_RESOLUTION_CIF:
+               avg_file_size = 25 * 1024 * 2;
+               break;
+
+       default:
+               cam_critical(LOG_CAM, "unhandled resolution:%dx%d", HIWORD(camapp->photo_resolution), LOWORD(camapp->photo_resolution));
+               return -1;
+       }
+
+       remained_count = free_space / avg_file_size;
+       DEBUG_TRACE("FREE SPACE =%d", free_space);
+       DEBUG_TRACE("avg_file_size =%d", avg_file_size);
+       DEBUG_TRACE("remained_count =%d", remained_count);
+
+       return (int)MAX(remained_count, 0);
+}
+
+gint64 cam_get_free_space(const gchar *path)
+{
+       struct statfs fs;
+       if (-1 == statfs(path, &fs))
+               return -1;
+       return (gint64) fs.f_bsize * fs.f_bavail;
+}
+
+
+gboolean cam_utils_set_guide_rect_color(void *data) {
+
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       cam_retv_if(ad == NULL, FALSE);
+       camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       DEBUG_TRACE(" ");
+
+       int capture_video_format = CAMERA_PIXEL_FORMAT_INVALID;
+       cam_mm_get_video_source_format(NULL, &capture_video_format);
+       DEBUG_TRACE("capture_video_format =%d", capture_video_format);
+
+       switch (capture_video_format) {
+       case CAMERA_PIXEL_FORMAT_INVALID:
+               {
+                       cam_debug(LOG_UI,"can not set preview format & shapshot format");
+               }
+               return FALSE;
+       case CAMERA_PIXEL_FORMAT_UYVY:
+       /*case MM_PIXEL_FORMAT_ITLV_JPEG_UYVY:*//*TODO:there is no this value in capi*/
+               {
+                       camapp->guide_rect_green = UYVY_GUIDE_RECT_GREEN;
+                       camapp->guide_rect_orange = UYVY_GUIDE_RECT_ORANGE;
+                       camapp->guide_rect_red = UYVY_GUIDE_RECT_RED;
+                       camapp->guide_rect_white = UYVY_GUIDE_RECT_WHITE;
+               }
+               break;
+       case CAMERA_PIXEL_FORMAT_YUYV:
+               {
+                       camapp->guide_rect_green= YUYV_GUIDE_RECT_GREEN;
+                       camapp->guide_rect_orange= YUYV_GUIDE_RECT_ORANGE;
+                       camapp->guide_rect_red= YUYV_GUIDE_RECT_RED;
+                       camapp->guide_rect_white = YUYV_GUIDE_RECT_WHITE;
+               }
+               break;
+       default:
+               cam_debug(LOG_UI,"can not set preview format & shapshot format");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+
+
+gint64 cam_get_capacity_space(const gchar *path)
+{
+       struct statfs fs;
+       if (-1 == statfs(path, &fs))
+               return -1;
+       return (gint64) fs.f_bsize * fs.f_blocks;
+}
+
+
+
+void
+cam_utils_draw_guide_rectangle(void *data, void *frame, int x_org, int y_org,
+                              int width, int height)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "cam_handle is NULL");
+
+       int left, right, top, bottom, offset, y;
+       int xStart, xEnd, draw_width;
+
+       if (width == 0 && height == 0) {
+               cam_debug(LOG_UI, " width,height of rectangle are zero");
+               return;
+       }
+
+       left = 2 * (x_org / 2); /*  to draw on YUV422 or YUV420, we must start at even x */
+       right = left + 2 * (width / 2);
+       top = y_org;
+       bottom = y_org + height;
+
+       int preview_w = 0;      /* make sure this is even */
+       int preview_h = 0;
+       gboolean ret = FALSE;
+
+       ret = cam_mm_get_video_size( &preview_w, &preview_h);
+       cam_ret_if(ret == FALSE || preview_w == 0 || preview_h == 0);
+
+       xStart = MAX(left, 0);
+       xEnd = MIN(right, preview_w);
+
+       draw_width = xEnd - xStart;     /* for top and bottom */
+       if (draw_width <= 0)
+               return;
+
+       int line_thickness = FIT_TO_RESOLUTION(2, 4);   /* make sure this is even */
+
+#if 0
+       int frame_size = preview_w * preview_h;
+
+       guchar guide_rect_colorY =
+           (guchar) ((camapp->guide_rect_color >> 8) & 0xFF);
+       guchar guide_rect_colorU = (guchar) ((camapp->guide_rect_color) & 0xFF);
+       guchar guide_rect_colorV =
+           (guchar) ((camapp->guide_rect_color >> 16) & 0xFF);
+
+       top = 2 * (top / 2);    /* to draw on YUV420, we must start at even y */
+       bottom = 2 * (bottom / 2);
+
+       /* top */
+       for (y = MAX(top, 0); y < top + line_thickness && y < preview_h; y += 2) {      /* line_thickness, and preview_h must be even */
+               offset = y * preview_w + xStart;
+               memset(((guchar *) frame) + offset, guide_rect_colorY,
+                      draw_width);
+               memset(((guchar *) frame) + offset + preview_w,
+                      guide_rect_colorY, draw_width);
+               offset = y * preview_w / 4 + xStart / 2;
+               memset(((guchar *) frame) + frame_size + offset,
+                      guide_rect_colorU, draw_width / 2);
+               memset(((guchar *) frame) + frame_size + frame_size / 4 +
+                      offset, guide_rect_colorV, draw_width / 2);
+       }
+
+       /* bottom */
+       for (y = MAX(bottom - line_thickness, 0);
+            y < bottom && y < preview_h; y += 2) {
+               offset = y * preview_w + xStart;
+               memset(((guchar *) frame) + offset, guide_rect_colorY,
+                      draw_width);
+               memset(((guchar *) frame) + offset + preview_w,
+                      guide_rect_colorY, draw_width);
+               offset = y * preview_w / 4 + xStart / 2;
+               memset(((guchar *) frame) + frame_size + offset,
+                      guide_rect_colorU, draw_width / 2);
+               memset(((guchar *) frame) + frame_size + frame_size / 4 +
+                      offset, guide_rect_colorV, draw_width / 2);
+       }
+
+       /* left */
+       if (left + line_thickness > 0 && left < preview_w) {
+               draw_width = MIN(MIN(line_thickness, line_thickness + left), preview_w - left); /* now calculated for left */
+               for (y = MAX(top, 0); y < bottom && y < preview_h; y += 2) {
+                       offset = y * preview_w + xStart;
+                       memset(((guchar *) frame) + offset, guide_rect_colorY,
+                              draw_width);
+                       memset(((guchar *) frame) + offset + preview_w,
+                              guide_rect_colorY, draw_width);
+                       offset = y * preview_w / 4 + xStart / 2;
+                       memset(((guchar *) frame) + frame_size + offset,
+                              guide_rect_colorU, draw_width / 2);
+                       memset(((guchar *) frame) + frame_size +
+                              frame_size / 4 + offset, guide_rect_colorV,
+                              draw_width / 2);
+               }
+       }
+       /* right */
+       if (right > 0 && right - line_thickness < preview_w) {
+               draw_width = MIN(MIN(line_thickness, right), preview_w - right + line_thickness);       /* now calculated for right */
+               for (y = MAX(top, 0); y < bottom && y < preview_h; y += 2) {
+                       offset = y * preview_w + MAX(right - line_thickness, 0);
+                       memset(((guchar *) frame) + offset, guide_rect_colorY,
+                              draw_width);
+                       memset(((guchar *) frame) + offset + preview_w,
+                              guide_rect_colorY, draw_width);
+                       offset =
+                           y * preview_w / 4 + MAX(right - line_thickness,
+                                                   0) / 2;
+                       memset(((guchar *) frame) + frame_size + offset,
+                              guide_rect_colorU, draw_width / 2);
+                       memset(((guchar *) frame) + frame_size +
+                              frame_size / 4 + offset, guide_rect_colorV,
+                              draw_width / 2);
+               }
+       }
+#else
+
+       int x;
+
+       /* top */
+       for (y = top; y < top + line_thickness && y < preview_h; y++) {
+               if (y < 0)
+                       continue;
+               offset = y * preview_w + xStart;
+               for (x = 0; x < draw_width; x += 2) {
+                       ((gulong *) frame)[(offset + x) / 2] =
+                           camapp->guide_rect_color;
+               }
+       }
+
+       /* bottom */
+       for (y = bottom - line_thickness; y < bottom && y < preview_h; y++) {
+               if (y < 0)
+                       continue;
+               offset = y * preview_w + xStart;
+               for (x = 0; x < draw_width; x += 2) {
+                       ((gulong *) frame)[(offset + x) / 2] =
+                           camapp->guide_rect_color;
+               }
+       }
+
+       /* left */
+       if (left + line_thickness >= 0 && left < preview_w) {
+               draw_width = MIN(MIN(line_thickness, line_thickness + left), preview_w - left); /*  now calculated for left */
+               for (y = MAX(top, 0); y < bottom && y < preview_h; y++) {
+                       offset = y * preview_w + xStart;
+                       for (x = 0; x < draw_width; x += 2) {
+                               ((gulong *) frame)[(offset + x) / 2] =
+                                   camapp->guide_rect_color;
+                       }
+               }
+       }
+       /* right */
+       if (right >= 0 && right - line_thickness < preview_w) {
+               draw_width = MIN(MIN(line_thickness, right), preview_w - right + line_thickness);       /* now calculated for right */
+               for (y = MAX(top, 0); y < bottom && y < preview_h; y++) {
+                       offset = y * preview_w + MAX(right - line_thickness, 0);
+                       for (x = 0; x < draw_width; x += 2) {
+                               ((gulong *) frame)[(offset + x) / 2] =
+                                   camapp->guide_rect_color;
+                       }
+               }
+       }
+#endif
+
+}
+
+void
+cam_utils_convert_YUYV_to_UYVY(unsigned char *dst, unsigned char *src,
+                              gint length)
+{
+       int i = 0;
+
+       memset(dst, 0x00, length);
+       memcpy(dst, src + 1, length - 1);
+
+       for (i = 0; i < length; i++) {
+               if (!(i % 2)) {
+                       dst[i + 1] = src[i];
+               }
+       }
+
+}
+
+void cam_utils_convert_UYVY_to_YUYV(char *dst, char *src, gint length)
+{
+       int i = 0;
+
+       memset(dst, 0x00, length);
+       memcpy((char *)dst + 1, (char *)src, length - 1);
+
+       for (i = 0; i < length; i++) {
+               if ((i % 2)) {  /* even */
+                       dst[i - 1] = src[i];
+               }
+       }
+
+}
+
+#if 1
+
+void
+cam_utils_convert_YUYV_to_YUV420P(unsigned char *pInBuf, unsigned char *pOutBuf,
+                                 int width, int height)
+{
+       unsigned char *pInY, *pInU, *pInV;
+       unsigned char *pOutY, *pOutU, *pOutV;
+
+       int nRowIters = height / 2;
+       int nColIters = width / 2;
+
+       int rows, cols;
+
+       pInY = pInBuf;
+       pInU = pInBuf + 1;
+       pInV = pInBuf + 3;
+       pOutY = pOutBuf;
+       pOutU = pOutBuf + width * height;
+       pOutV = pOutBuf + width * height * 5 / 4;
+
+       /*  Iterate over half the number of rows, because inside there are 2 loops on columns */
+       for (rows = 0; rows < nRowIters; rows++) {
+               /* Even rows
+                  Iterate over half the number of columns, copy 2 pixels each time */
+               for (cols = 0; cols < nColIters; cols++) {
+                       /* Copy Y of first pixel */
+                       *pOutY = *pInY;
+                       pOutY++;
+                       pInY += 2;
+                       /* Copy Y of second pixel */
+                       *pOutY = *pInY;
+                       pOutY++;
+                       pInY += 2;
+                       /* Copy U of all 4 pixels */
+                       *pOutU = *pInU;
+                       pOutU++;
+                       pInU += 4;
+                       /* Copy V of all 4 pixels */
+                       *pOutV = *pInV;
+                       pOutV++;
+                       pInV += 4;
+               }
+               /* Odd rows
+                  Iterate over half the number of columns, copy 2 pixels each time */
+               for (cols = 0; cols < nColIters; cols++) {
+                       /* Copy Y of third pixel */
+                       *pOutY = *pInY;
+                       pOutY++;
+                       pInY += 2;
+                       /* Copy Y of fourth pixel */
+                       *pOutY = *pInY;
+                       pOutY++;
+                       pInY += 2;
+               }
+               /* Skip U, V of third, fourth pixel */
+               pInU += width * 2;
+               pInV += width * 2;
+       }
+}
+
+#else
+
+void
+cam_utils_convert_YUYV_to_YUV420P(byte *src, byte *dst, gint width, gint height)
+{
+       int i = 0;
+       int YUYV_length = 0, YUV420P_length = 0;
+       int temp_length = 0, temp_length2 = 0;
+       int pos_u = 0, pos_v = 0;
+
+       /* cam_debug( LOG_UI, " start" ); */
+
+       temp_length = width * height;
+       temp_length2 = temp_length >> 2;
+       YUYV_length = temp_length << 1;
+       YUV420P_length = (temp_length * 3) >> 1;
+
+       /*
+          cam_debug( LOG_UI, " size[%dx%d], length YUYV[%d],YUV420P[%d]",
+          width, height, YUYV_length, YUV420P_length );
+        */
+
+       if (dst == NULL) {
+               cam_critical(LOG_SYS, " dst is NULL");
+               return;
+       }
+
+       for (i = 0; i < temp_length; i++) {
+               /*  Y data */
+               dst[i] = src[i << 1];
+
+               if (i % (width << 1) < width) {
+                       if (i % 2 == 0) {
+                               /* U data */
+                               dst[temp_length + pos_u] = src[(i << 1) + 1];
+                               pos_u++;
+                       } else {
+                               /*  V data */
+                               dst[temp_length + temp_length2 + pos_v] =
+                                   src[(i << 1) + 1];
+                               pos_v++;
+                       }
+               }
+       }
+}
+
+#endif
+
+void *cam_utils_YUV422_to_ARGB(byte *frame, int width, int height)
+{
+       /* source yuv is FOURCC YUYV, sampling format YUV 422 .
+          yuv422 format
+          Byte Ordering (lowest byte) Y0, U0, Y1, V0 */
+       byte *frame_argb = malloc(width * height * 4);  /* for ARGB */
+
+       if (frame_argb == NULL) {
+               return NULL;
+       }
+       memset(frame_argb,0,width * height * 4);
+
+       int i = 0, j = 0;       /*  row, column */
+       int y, u, v;
+       int r, g, b;
+       unsigned long pixel_idx = 0, rgb_index = 0;
+       short v_idx = 0;
+       short u_idx = 0;
+
+       for (i = 0; i < height; i++) {
+               for (j = 0; j < width; j++) {
+
+                       if (j % 2) {    /* odd */
+                               v_idx = -1;
+                               u_idx = 1;
+                               /* u_idx = -1; v_idx = 1; */
+                       } else {
+                               v_idx = 1;
+                               u_idx = 3;
+                               /* u_idx = 1; v_idx = 3; */
+                       }
+
+                       y = frame[pixel_idx];
+                       v = frame[pixel_idx + v_idx];
+                       u = frame[pixel_idx + u_idx];
+
+                       YuvToRgb(y, u, v, &r, &g, &b);
+
+                       /* ARGB */
+                       frame_argb[rgb_index++] = (byte)CLIPING(r);
+                       frame_argb[rgb_index++] = (byte)CLIPING(g);
+                       frame_argb[rgb_index++] = (byte)CLIPING(b);
+                       frame_argb[rgb_index++] = 0xff;
+
+                       pixel_idx += 2; /* yuv422, 4byte is 2 pixel */
+               }
+       }
+
+       return (void *)frame_argb;
+}
+
+void *cam_utils_IYUV_to_ARGB(byte *frame, int width, int height)
+{
+       /* source yuv is FOURCC IYUV or I420, sampling format YUV 420. */
+       /* IYUV format is http://www.fourcc.org/yuv.php#IYUV */
+
+       byte *frame_argb = malloc(width * height * 4);  /* for ARGB */
+       if (frame_argb == NULL) {
+               return NULL;
+       }
+       memset(frame_argb,0,width * height * 4);
+
+       int h = 0, w = 0;       /* row, column */
+       int y, u, v;
+       int r, g, b;
+       unsigned long rgb_index = 0;    /* ,pixel_idx=0; */
+       int idx = 0;
+
+       for (h = 0; h < height; h++) {
+               for (w = 0; w < width; w++) {
+
+                       y = frame[h * height + w];
+                       u = frame[(width * height) + idx];
+                       v = frame[(width * height) + ((width * height) / 4) +
+                                 idx];
+
+                       if (w % 2)
+                               idx++;
+
+                       YuvToRgb(y, u, v, &r, &g, &b);
+
+                       /* ARGB */
+                       frame_argb[rgb_index++] = (byte)CLIPING(r);
+                       frame_argb[rgb_index++] = (byte)CLIPING(g);
+                       frame_argb[rgb_index++] = (byte)CLIPING(b);
+                       frame_argb[rgb_index++] = 0;
+
+               }
+
+               if ((w == width - 1) && (!(h % 2)))
+                       idx -= width / 2;
+       }
+
+       return (void *)frame_argb;
+}
+
+gboolean
+cam_utils_save_to_jpg_file(int storage_id, gchar *filename, void *frame,
+                          int width, int height, GError **error)
+{
+       cam_debug(LOG_MM, " [%dx%d] %s", width, height, filename);
+
+       int ret = CAMERA_ERROR_NONE;
+
+       CAM_TA_ACUM_ITEM_BEGIN("cam_utils_check_mmc_for_writing", 0);
+       if (storage_id == CAM_STORAGE_EXTERNAL) {
+               if (!cam_utils_check_mmc_for_writing(error)) {
+                       return FALSE;
+               }
+       }
+       CAM_TA_ACUM_ITEM_END("cam_utils_check_mmc_for_writing", 0);
+
+       cam_debug(LOG_SYS, " \n\n\n\n\n START JPEG ENCODING \n\n\n\n\n");
+
+       CAM_TA_ACUM_ITEM_BEGIN("image_util_encode_jpeg", 0);
+       ret = image_util_encode_jpeg(frame, width, height,
+                       IMAGE_UTIL_COLORSPACE_YUYV, 90, filename);
+       CAM_TA_ACUM_ITEM_END("image_util_encode_jpeg", 0);
+
+       cam_debug(LOG_SYS, " \n\n\n\n\n END JPEG ENCODING \n\n\n\n\n");
+
+       if (ret != 0) {
+               cam_critical(LOG_MM, " image_util_encode_jpeg Failed [%x]", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean
+cam_utils_save_to_jpg_memory(byte **memory, unsigned int *size, void *src_frame,
+                            int width, int height)
+{
+       cam_debug(LOG_MM, " [%dx%d]", width, height);
+
+       int ret = CAMERA_ERROR_NONE;
+
+       cam_debug(LOG_SYS, " \n\n\n\n\n START JPEG ENCODING \n\n\n\n\n");
+
+       CAM_TA_ACUM_ITEM_BEGIN("image_util_encode_jpeg_to_memory", 0);
+       ret = image_util_encode_jpeg_to_memory(src_frame, width, height,
+                       IMAGE_UTIL_COLORSPACE_YUYV, 90, (unsigned char **)memory, size);
+       CAM_TA_ACUM_ITEM_END("image_util_encode_jpeg_to_memory", 0);
+
+       cam_debug(LOG_SYS, " \n\n\n\n\n END JPEG ENCODING \n\n\n\n\n");
+
+       if (ret != 0) {
+               cam_critical(LOG_MM, "image_util_encode_jpeg_to_memory Failed [%x]", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void *cam_utils_load_temp_file(gchar *filepath, gint *pfilesize)
+{
+       struct stat fileinfo;
+       FILE *fp = NULL;
+       int ret;
+
+       ret = stat(filepath, &fileinfo);
+       if (ret == -1) {
+               cam_critical(LOG_CAM, "can't get file infomation - error[%d]", ret);
+               return NULL;
+       }
+
+       gint filesize = fileinfo.st_size;
+       if (filesize < 0) {
+               cam_critical(LOG_CAM, "can't get file infomation");
+               return NULL;
+       }
+
+       cam_debug(LOG_CAM, "temp file's  file_path =%s, file_size =%d",
+                 filepath, filesize);
+
+       void *data = (void *)malloc(filesize);
+
+       if (data == NULL) {
+               return NULL;
+       }
+       memset(data, 0, filesize);
+
+       cam_debug(LOG_CAM, "data = %p ", data);
+
+       if ((fp = fopen(filepath, "r")) == NULL) {
+               perror("fopen");
+               if (data)
+                       free(data);
+
+               cam_critical(LOG_CAM, "can't open file infomation");
+               return NULL;
+       }
+       if (fread(data, filesize, 1, fp) != 1) {
+               perror("fread");
+               fclose(fp);
+               if (data)
+                       free(data);
+
+               cam_critical(LOG_CAM, "can't read file infomation");
+               return NULL;
+       }
+
+       *pfilesize = filesize;
+
+       fclose(fp);
+
+       return data;
+}
+
+gboolean cam_utils_check_mmc_for_writing(GError **error)
+{
+       gint error_code = 0;
+       int mmc_state = -1;
+       const gchar *error_msg = NULL;
+
+       if (!m_mmc_path)
+               m_mmc_path = (char *)cam_file_get_external_image_path();
+
+       if (!g_file_test(m_mmc_path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+               error_code = CAM_ERROR_STORAGE_UNAVAILABLE;
+               error_msg = dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY");
+               goto ERROR;
+       }
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
+               if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
+                       error_code = CAM_ERROR_STORAGE_UNAVAILABLE;
+                       error_msg = dgettext(PACKAGE, "IDS_CAM_POP_MEMORY_CARD_REMOVED");
+                       goto ERROR;
+               }
+       }
+
+       return TRUE;
+
+ ERROR:
+
+       /* cam_set_error */
+       if (error_msg) {
+               if (*error) {
+                       *error = cam_error_new_literal(error_code, error_msg);/*note:fix warnning*/
+               }
+       }
+       return FALSE;
+
+}
+
+gboolean cam_utils_check_mmc_for_inserted_stats(void *data)
+{
+       int mmc_state = -1;
+       g_return_val_if_fail(data, FALSE);
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+
+       camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
+               if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED
+                   && camapp->storage == CAM_STORAGE_EXTERNAL) {
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+int cam_utils_check_mmc_status(void)
+{
+       int status = -1;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &status)) {
+               cam_warning(LOG_SYS, " Get MMC status failed");
+       }
+
+       return status;
+}
+
+int cam_utils_get_storage_id_from_filepath(const char *filepath)
+{
+       char *strtemp = NULL;
+
+       strtemp = (char *)cam_file_get_internal_image_path();
+
+       if (strtemp) {
+               if (!strncmp(filepath, strtemp, strlen(strtemp)))
+                       return CAM_STORAGE_INTERNAL;
+       }
+
+       strtemp = (char *)cam_file_get_external_image_path();
+       if (strtemp) {
+               if (!strncmp(filepath, strtemp, strlen(strtemp)))
+                       return CAM_STORAGE_EXTERNAL;
+       }
+
+       return CAM_STORAGE_DCF;
+
+}
+
+gboolean
+cam_utils_safety_file_copy(const char *dst, const char *src, GError **error)
+{
+
+       gint error_code = 0;
+       const gchar *error_msg = NULL;
+
+       FILE *fp_src = NULL;
+       FILE *fp_dst = NULL;
+       int ret;
+
+       cam_debug(LOG_FILE, " dst file name = %s", dst);
+       cam_debug(LOG_FILE, " dst file name = %s", src);
+
+       fp_src = fopen(src, "r");
+       if (fp_src == NULL) {
+               error_code = CAM_ERROR_FILE_NOT_EXISTS;
+               error_msg = dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY");
+               goto ERROR;
+       } else {
+
+               cam_debug(LOG_FILE, "start check mmc");
+               /* check mmc */
+               if (cam_utils_get_storage_id_from_filepath(dst) == CAM_STORAGE_EXTERNAL) {
+                       if (!cam_utils_check_mmc_for_writing(error))
+                               goto ERROR;
+               }
+
+               cam_debug(LOG_FILE, "end check mmc");
+
+               fp_dst = fopen(dst, "wb");
+               if (fp_dst == NULL) {
+                       error_code = CAM_ERROR_FILE_REGISTER_FAILED;
+                       error_msg = dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY");
+                       goto ERROR;
+               } else {
+                       cam_debug(LOG_FILE, "start copy");
+                       /* copy */
+                       unsigned long filesize = 0;
+                       unsigned long filecopyblocksize = 1024 * 512;
+                       unsigned long copysize = 0;
+                       struct stat fileinfo;
+
+                       void *buff = malloc(filecopyblocksize); /* 512k */
+                       if (buff == NULL)
+                               goto ERROR;
+
+                       /* get source file size */
+                       ret = stat(src, &fileinfo);
+                       if (ret == -1) {
+                               cam_critical(LOG_CAM, "can't get file infomation - error[%d]", ret);
+                               if (buff) {
+                                       free(buff);
+                                       buff = NULL;
+                               }
+                               goto ERROR;
+                       }
+
+                       filesize = fileinfo.st_size;
+                       cam_debug(LOG_FILE, "source file size %lu", filesize);
+
+                       if (filesize > 0) {
+                               do {
+                                       if (filesize >= filecopyblocksize) {
+                                               copysize = filecopyblocksize;
+                                       } else {
+                                               copysize = filesize;
+                                       }
+
+                                       cam_debug(LOG_FILE, "copy size %lu", copysize);
+                                       if (fread(buff, copysize, 1, fp_src) != 1) {
+                                               cam_debug(LOG_FILE, "read error!");
+                                               if (buff) {
+                                                       free(buff);
+                                                       buff = NULL;
+                                               }
+                                               goto ERROR;
+                                       }
+
+                                       if (buff && fwrite(buff, copysize, 1, fp_dst) != 1) {
+                                               cam_debug(LOG_FILE, "file read or write error");
+                                               error_code = CAM_ERROR_FILE;
+                                               error_msg = dgettext(PACKAGE, "IDS_CAM_BODY_UNABLE_TO_SAVE_NOT_ENOUGH_MEMORY");
+                                               if (buff) {
+                                                       free(buff);
+                                                       buff = NULL;
+                                               }
+                                               goto ERROR;
+                                       }
+
+                                       filesize -= copysize;
+                               } while (filesize > 0);
+                       } else {
+                               error_code = CAM_ERROR_PANORAMA_LIB;
+                               error_msg = dgettext(PACKAGE, "IDS_CAM_BODY_FAILED_TO_BUILD_PANORAMIC_IMAGES_TRY_LATER");
+                               if (buff) {
+                                       free(buff);
+                                       buff = NULL;
+                               }
+                               goto ERROR;
+                       }
+
+                       /*
+
+                          stat(filepath, &fileinfo);
+
+                          gint filesize = fileinfo.st_size;
+
+                          if (fwrite(g_result_panorama_image->bits, g_result_panorama_image->size, 1, fp) != 1)
+                          {
+                          free(camapp->filename);
+                          camapp->filename = NULL;
+                          }
+                        */
+                       if (buff) {
+                               free(buff);
+                               buff = NULL;
+                       }
+                       /*fsync(fp_dst->_fileno);*//*block for increasing formance of shot-to-shot */
+                       fclose(fp_dst);
+               }
+
+               fclose(fp_src);
+
+       }
+
+       return TRUE;
+
+ ERROR:
+
+       cam_debug(LOG_FILE, "file copy error, error number=%x", error_code);
+
+       if (fp_dst)
+               fclose(fp_dst);
+
+       if (fp_src)
+               fclose(fp_src);
+
+       /* cam_set_error  */
+       if (error_msg) {
+               if (*error) {
+                       *error = cam_error_new_literal(error_code, error_msg);/*note:fix warnning*/
+               }
+       }
+       return FALSE;
+
+}
+
+static char *cam_utils_trim(char *str)
+{
+       char *i_buf = str;
+
+       for (; *i_buf && isspace(*i_buf); ++i_buf) ;
+
+       return i_buf;
+}
+
+gboolean cam_utils_parse_args(int argc, char *argv[], CamExeArgs *args)
+{
+       int index = 0;
+       const char *delimiters = ",";
+
+       if (args == NULL)
+               return FALSE;
+       for (index = 0; index < argc; index++) {
+               if (argv == NULL)
+                       return FALSE;
+
+               if (argv[index][0] == '-' && argv[index][1] != '\0') {
+                       char *r_argv = strdup(cam_utils_trim((argv[index] + 2)));
+                       switch (argv[index][1]) {
+#if 0
+                       case 'd':       /* daemon launch */
+                               {
+                                       args->launch_type =
+                                           CAM_LAUNCHING_MODE_DAEMON;
+                                       return TRUE;
+                               }
+                               break;
+                       case 'h':       /* help */
+                               {
+                                       args->launch_type =
+                                           CAM_LAUNCHING_MODE_HELP;
+                                       return TRUE;
+                               }
+                               break;
+#endif
+                       case 'v':       /* review */
+                               {
+                                       args->review = TRUE;
+                               }
+                               break;
+                       case 'r':       /* resolution */
+                               {
+                                       if (r_argv) {
+                                               char *result = NULL;
+                                               char *save_string = NULL;
+                                               result = strtok_r(r_argv, delimiters,&save_string);
+                                               if (result != NULL)
+                                                       args->width = atoi(result);
+                                               result = strtok_r(NULL, delimiters,&save_string);
+                                               if (result != NULL)
+                                                       args->height = atoi(result);
+                                       } else {
+                                               return FALSE;
+                                       }
+                               }
+                               break;
+                       case 'm':       /* cam_mode */
+                               {
+                                       if (r_argv) {
+                                               if (0 == strcmp(r_argv, "IMAGE")) {
+                                                       args->cam_mode = CAM_CAMERA_MODE;
+                                               } else if (0 == strcmp(r_argv, "VIDEO")) {
+                                                       args->cam_mode = CAM_CAMCORDER_MODE;
+                                               } else {
+                                                       if (r_argv != NULL) {
+                                                               free(r_argv);
+                                                               r_argv = NULL;
+                                                       }
+                                                       return FALSE;
+                                               }
+                                       } else {
+                                               return FALSE;
+                                       }
+                               }
+                               break;
+                       case '-':       /* launching appl.'s name */
+                               {
+                                       if (r_argv) {
+                                               char *qualifier_to_find = "calling-app=";
+                                               char *qualifier_field_start = NULL;
+                                               char *name = NULL;
+
+                                               qualifier_field_start = strstr(r_argv, qualifier_to_find);
+                                               if (qualifier_field_start) {
+                                                       qualifier_field_start += strlen(qualifier_to_find);
+                                                       name = cam_utils_trim(qualifier_field_start);
+                                                       args->caller = strdup(name);
+                                               } else {
+                                                       cam_debug(LOG_SYS, "unknown arg : %s", argv[index]);
+                                               }
+                                       } else {
+                                               return FALSE;
+                                       }
+                               }
+                               break;
+                       case 'l':       /* size limit */
+                               {
+                                       if (r_argv) {
+                                               args->size_limit = atoi(r_argv);
+                                       } else {
+                                               return FALSE;
+                                       }
+                               }
+                               break;
+                       default:        /* unknown option */
+                               cam_debug(LOG_SYS, "Unknown Option : %c",
+                                         argv[index][1]);
+                               break;
+                       }
+                       if (r_argv != NULL) {
+                               free(r_argv);
+                               r_argv = NULL;
+                       }
+               } else {
+                       cam_debug(LOG_SYS, "unknown arg : %s", argv[index]);
+               }
+       }
+
+       cam_debug(LOG_SYS, "cam_mode : %d", args->cam_mode);
+       cam_debug(LOG_SYS, "resolution : [%dx%d]", args->width, args->height);
+       cam_debug(LOG_SYS, "limit : %d", args->size_limit);
+       cam_debug(LOG_SYS, "caller : %s", args->caller);
+       return TRUE;
+}
+
+gboolean cam_utils_check_wide_resolution(int resol_w, int resol_h)
+{
+       if ((ABS((gfloat)((resol_w * 3.0) / (resol_h * 4.0)) - 1.0 ) < CAM_EPSINON )
+           || (ABS((gfloat)((resol_w * 25.0) / (resol_h * 36.0)) - 1.0) < CAM_EPSINON)) {
+               cam_debug(LOG_UI, "Not Wide Resolution : [%d]x[%d]", resol_w,
+                         resol_h);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean cam_utils_check_fake_image_exist(const char *fake_image_path)
+{
+       if (!g_file_test(fake_image_path, G_FILE_TEST_EXISTS)) {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+gboolean
+cam_utils_image_rotate(char *src, int src_width, int src_height, char *dst,
+                      int *dst_width, int *dst_height, int degree)
+{
+
+       cam_retv_if(src == NULL || dst == NULL || src_width == 0
+                   || src_height == 0, FALSE);
+       cam_retv_if(degree != 0 && degree != 90 && degree != 180
+                   && degree != 270, FALSE);
+
+       int i = 0;
+       int j = 0;
+
+       int *from = (int *)src;
+       int *to = (int *)dst;
+
+       if (degree == 0) {
+               *dst_width = src_width;
+               *dst_height = src_height;
+               memcpy(dst, src, src_width * src_height * 4);
+               return TRUE;
+       }
+
+       for (j = 0; j < src_height; j++) {
+               for (i = 0; i < src_width; i++) {
+
+                       if (degree == 90) {
+                               *dst_width = src_height;
+                               *dst_height = src_width;
+
+                               *(to + i * src_height + (src_height - j)) =
+                                   *(from + j * src_width + i);
+                       } else if (degree == 180) {
+                               *dst_width = src_width;
+                               *dst_height = src_height;
+
+                               *(to + (src_height - j) * src_width +
+                                 (src_width - i)) =
+*(from + j * src_width + i);
+                       } else if (degree == 270) {
+                               *dst_width = src_height;
+                               *dst_height = src_width;
+
+                               *(to + (src_width - i) * src_height + j) =
+                                   *(from + j * src_width + i);
+                       }
+
+               }
+       }
+
+       return TRUE;
+
+}
+
+
+void cam_utils_set_windows_xy_to_videos_xy(CamVideoRectangle src,
+                                                               CamVideoRectangle *result,
+                                                               void *data)
+{
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad || !result)
+               return;
+       switch (ad->camcorder_rotate) {
+       case CAMERA_ROTATION_NONE:
+               result->x = src.x - ad->preview_offset_x;
+               result->y = src.y - ad->preview_offset_y;
+               result->w = src.w;
+               result->h = src.h;
+               break;
+       case CAMERA_ROTATION_90:
+               result->x = ad->win_height - ad->preview_offset_y - src.x;
+               result->y = src.y - ad->preview_offset_y;
+               result->w = src.h;
+               result->h = src.w;
+               break;
+       case CAMERA_ROTATION_180:
+               result->x = ad->win_width - src.x - ad->preview_offset_x;
+               result->y = ad->win_height - src.y - ad->preview_offset_y;
+               result->w = src.w;
+               result->h = src.h;
+               break;
+       case CAMERA_ROTATION_270:
+               result->x = src.x - ad->preview_offset_y;
+               result->y = ad->win_width - src.y - ad->preview_offset_x;
+               result->w = src.h;
+               result->h = src.w;
+               break;
+       default:
+               DEBUG_TRACE("REACHE UN-REACHED CODES");
+       }
+       DEBUG_TRACE("songfeng result->x %d result->y %d",result->x, result->y);
+
+}
+
+
+void cam_utils_set_videos_xy_to_windows_xy(CamVideoRectangle src,
+                                                               CamVideoRectangle *result,
+                                                               void *data)
+{
+       cam_retm_if(data == NULL, "data is null");
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad || !result)
+               return;
+
+       switch (ad->camcorder_rotate) {
+       case CAMERA_ROTATION_NONE:
+               /*
+               *       win: (x,y)  -------->x          video:(x,y) -------->x(width)
+               *                -                                      -
+               *                -                                      -
+               *                -                                      -
+               *                -y                             y(height)
+               */
+               result->x = src.x + ad->preview_offset_x;
+               result->y = src.y + ad->preview_offset_y;
+               /*notes:here,result->w: horizontal;result->h:vertical*/
+               result->w = src.w;
+               result->h = src.h;
+               break;
+       case CAMERA_ROTATION_90:
+               /* win: (x,y)  -------->x   video:(x,y) (height)y<-----
+               *                -                                              -
+               *                -                                              -
+               *                -                                              -
+               *                -y                                     x(width)
+               */
+               result->x = ad->win_height - (src.y + ad->preview_offset_y + src.w);
+               result->y = src.x + ad->preview_offset_x;
+               /*notes:here,result->w: horizontal;result->h:vertical*/
+               result->w = src.h;
+               result->h = src.w;
+               break;
+       case CAMERA_ROTATION_180:
+               /* win: (x,y)  -------->x   video:(x,y)                 y(height)
+               *                -                                              -
+               *                -                                              -
+               *                -                                              -
+               *                -y                     (width)x<------
+               */
+               result->x = ad->win_width - (src.x + ad->preview_offset_x + src.w);
+               result->y = ad->win_height - (src.y + ad->preview_offset_y + src.h);
+               /*notes:here,result->w: horizontal;result->h:vertical*/
+               result->w = src.w;
+               result->h = src.h;
+               break;
+       case CAMERA_ROTATION_270:
+               cam_critical(LOG_CAM, "CAMERA_ROTATION_270");
+               /* win: (x,y)  -------->x   video:(x,y) x(width)
+               *                -                               -
+               *                -                               -
+               *                -                               -
+               *                -y                      -------------y(height)
+               */
+               result->x =  src.y + ad->preview_offset_y;
+               result->y = ad->win_width - (src.x + ad->preview_offset_x + src.w);
+               /*notes:here,result->w: horizontal;result->h:vertical*/
+               result->w = src.h;
+               result->h = src.w;
+               break;
+       default:
+               DEBUG_TRACE("REACHE UN-REACHED CODES");
+       }
+
+}
+
+gboolean cam_utils_request_main_pipe_handler(void *data, void *pipe_data, int cmd)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       Ecore_Pipe_Data_Info pipe_info = {0,};
+       pipe_info.data = pipe_data;
+       pipe_info.cmd = cmd;
+       return ecore_pipe_write(ad->main_pipe, (void *)&pipe_info, sizeof(Ecore_Pipe_Data_Info));
+
+}
+
+//end file
diff --git a/src/edc-callback/cam_common_edc_callback.c b/src/edc-callback/cam_common_edc_callback.c
new file mode 100755 (executable)
index 0000000..07235bd
--- /dev/null
@@ -0,0 +1,949 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include "camera_utils.h"
+
+#include "edc_string.h"
+
+#include "cam_common_edc_callback.h"
+#include "cam_toolbar_edc_callback.h"
+#include "cam_indicator_edc_callback.h"
+#include "cam_zoom_edc_callback.h"
+#include "cam_ev_edc_callback.h"
+#include "cam_face_detection_focus.h"
+#include "cam_ui_effect_utils.h"
+#include "cam_menu_composer.h"
+#include "cam_capacity_type.h"
+#include "cam_device_capacity.h"
+#include "cam_mm.h"
+
+
+#define ZOOM_THRESHOLD 0.02
+
+static double prev_zoom = 0;
+
+static Evas_Event_Flags __pinch_start(void *data, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EVAS_EVENT_FLAG_NONE, "camapp_handle is NULL");
+
+       DEBUG_TRACE("__pinch_start");
+
+       if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING) {
+               DEBUG_TRACE("touch_af_state is [%d], do not zoom", camapp->touch_af_state);
+               return EVAS_EVENT_FLAG_NONE;
+       }
+
+       DEL_EVAS_OBJECT(ad->focus_edje);
+       cam_mm_stop_focusing();
+
+       prev_zoom = 0;
+
+       if (ad->toolbar_setting_popup || ad->setting_ctxpopup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup) {
+               toolbar_destroy_shortcuts_popup(ad);
+       }
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       cam_zoom_create_pinch_edje(ad);
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __pinch_end(void *data, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
+
+       DEBUG_TRACE("__pinch_end");
+
+       DEL_EVAS_OBJECT(ad->pinch_edje)
+       cam_reset_focus_mode(ad);
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __pinch_move(void *data, void *event_info)
+{
+       Elm_Gesture_Zoom_Info *ev = (Elm_Gesture_Zoom_Info *)event_info;
+       cam_retvm_if(ev == NULL, EVAS_EVENT_FLAG_NONE, "event_info is NULL");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EVAS_EVENT_FLAG_NONE, "camapp_handle is NULL");
+
+       if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING) {
+               DEBUG_TRACE("touch_af_state is [%d], do not zoom", camapp->touch_af_state);
+               return EVAS_EVENT_FLAG_NONE;
+       }
+
+       if (ad->pinch_edje == NULL)
+               __pinch_start(ad, NULL);
+
+       double diff = prev_zoom - ev->zoom;
+       if (ABS(diff) < ZOOM_THRESHOLD) {
+               return EVAS_EVENT_FLAG_NONE;
+       }
+
+       prev_zoom = ev->zoom;
+
+       gboolean is_zoom_in = FALSE;
+       if (diff > 0)
+               is_zoom_in = FALSE;
+       else
+               is_zoom_in = TRUE;
+
+       int state = 0;
+       state = cam_mm_get_state();
+       cam_debug(LOG_UI, " state = %d", state);
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               if (state == CAMERA_STATE_PREVIEW
+                       || state == CAMERA_STATE_CAPTURED) {
+                       if (!camapp->zoom_lock) {
+                               cam_pinch_zoom_in(ad, is_zoom_in, 1);
+                               return EVAS_EVENT_FLAG_NONE;
+                       }
+               }
+       } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               if (state == RECORDER_STATE_READY
+                       || state == RECORDER_STATE_RECORDING
+                       || state == RECORDER_STATE_PAUSED) {
+                       if (!camapp->zoom_lock
+                                       && camapp->recording_mode != CAM_RECORD_SLOW) {
+                               cam_pinch_zoom_in(ad, is_zoom_in, 1);
+                               return EVAS_EVENT_FLAG_NONE;
+                       }
+               }
+       }
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+static void __mouse_click(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->setting_ctxpopup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       } else if (ad->toolbar_setting_popup) {
+               cam_toolbar_setting_popup_destroy(ad);
+       } else if (ad->edit_shortcuts_popup) {
+               toolbar_destroy_shortcuts_popup(ad);
+       }
+
+       return;
+}
+
+static void __mouse_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *)event_info;
+       cam_retm_if(ev == NULL, "event_info is NULL");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->is_rotating) {
+               cam_critical(LOG_MM, "rotating...");
+               return;
+       }
+
+       unsigned int focus_capacity = 0;
+       GetCamDevFocusCaps(&focus_capacity, ad);
+
+       if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) {
+               DEBUG_TRACE("double click");
+               return;
+       }
+
+       if (focus_capacity & CAM_CP_FOCUS_AUTO_FOCUS) {
+               CAM_UI_LOG("mouse up :[%d, %d]", ev->canvas.x, ev->canvas.y);
+               cam_mouse_button_up(ad, ev);
+       }
+
+       __mouse_click(ad);
+       cam_app_timeout_checker_update();
+
+       return;
+}
+
+static void __mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *) event_info;
+       cam_retm_if(ev == NULL, "event_info is NULL");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       unsigned int focus_capacity = 0;
+       GetCamDevFocusCaps(&focus_capacity, ad);
+
+       if (ad->is_rotating) {
+               cam_critical(LOG_MM, "rotating...");
+               return;
+       }
+
+       if (ad->is_processing) {
+               cam_critical(LOG_MM, "bust shot popup is displaying...");
+               return;
+       }
+
+       if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) {
+               DEBUG_TRACE("double click");
+
+               if(camapp->af_mode == CAM_FOCUS_FACE){
+                       cam_common_set_mouse_double_click_xy(ev->canvas.x, ev->canvas.y);
+               }
+               return;
+       }
+
+       if (focus_capacity & CAM_CP_FOCUS_AUTO_FOCUS) {
+               CAM_UI_LOG("mouse down :[%d, %d]", ev->canvas.x, ev->canvas.y);
+               cam_mouse_button_down(ad, ev);
+       }
+
+       cam_app_timeout_checker_update();
+
+       return;
+}
+
+static void __mouse_move_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+       cam_app_timeout_checker_update();
+       return;
+}
+
+void define_mouse_callback(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       unsigned int capacity = 0;
+       GetCamDevFuncCaps(&capacity, ad);
+
+       Evas_Object *eo = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->ug_base), "mouse_event_layer");
+
+       evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_DOWN, __mouse_down_cb, ad);
+       evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_UP, __mouse_up_cb, ad);
+       evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_MOVE, __mouse_move_cb, ad);
+
+       if (capacity & CAM_CP_FUNC_ZOOM) {
+               if(ad->gesture == NULL)
+                       ad->gesture = elm_gesture_layer_add(eo);
+
+               elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START, __pinch_start, ad);
+               elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, __pinch_move, ad);
+               elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END, __pinch_end, ad);
+               elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT, __pinch_end, ad);
+               elm_gesture_layer_attach(ad->gesture, eo);
+       } else {
+               DEL_EVAS_OBJECT(ad->gesture);
+       }
+}
+
+void cam_layout_del_all(void *data)
+{
+       CAM_UI_LOG();
+       struct appdata *ad = (struct appdata *)data;
+       cam_toolbar_destroy(ad);
+
+       if (ad->indicator_edje)
+               cam_indicator_destory(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+int cam_convert_shot_mode_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_SINGLE_MODE:
+                       return CAM_MENU_SHOOTING_SINGLE;
+               case CAM_SELF_SINGLE_MODE:
+                       return CAM_MENU_SHOOTING_SELF_SINGLE;
+               default:
+                       return CAM_MENU_SHOOTING_SINGLE;
+       }
+}
+
+int cam_convert_flash_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_FLASH_OFF:
+                       return CAM_MENU_FLASH_OFF;
+               case CAM_FLASH_ON:
+                       return CAM_MENU_FLASH_ON;
+               case CAM_FLASH_AUTO:
+                       return CAM_MENU_FLASH_AUTO;
+               default:
+                       return CAM_MENU_FLASH_OFF;
+       }
+}
+
+int cam_convert_recording_mode_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_RECORD_NORMAL:
+                       return CAM_MENU_RECORDING_MODE_NORMAL;
+               case CAM_RECORD_SELF:
+                       return CAM_MENU_RECORDING_MODE_SELF_NORMAL;
+               case CAM_RECORD_MMS:
+                       return CAM_MENU_RECORDING_MODE_LIMIT;
+               case CAM_RECORD_SELF_MMS:
+                       return CAM_MENU_RECORDING_MODE_SELF_LIMIT;
+               case CAM_RECORD_SLOW:
+                       return CAM_MENU_RECORDING_MODE_SLOW;
+               case CAM_RECORD_FAST:
+                       return CAM_MENU_RECORDING_MODE_FAST;
+               default:
+                       return CAM_MENU_RECORDING_MODE_NORMAL;
+       }
+}
+
+int cam_convert_video_resolution_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+
+               case CAM_RESOLUTION_FULLHD:
+                       return CAM_MENU_VIDEO_RESOLUTION_FULLHD;
+               case CAM_RESOLUTION_HD:
+                       return CAM_MENU_VIDEO_RESOLUTION_HD;
+               case CAM_RESOLUTION_WVGA2:
+                       return CAM_MENU_VIDEO_RESOLUTION_WVGA;
+               case CAM_RESOLUTION_VGA:
+                       return CAM_MENU_VIDEO_RESOLUTION_VGA;
+               case CAM_RESOLUTION_QVGA:
+                       return CAM_MENU_VIDEO_RESOLUTION_QVGA;
+               case CAM_RESOLUTION_QCIF:
+                       return CAM_MENU_VIDEO_RESOLUTION_QCIF;
+               default:
+                       return CAM_MENU_VIDEO_RESOLUTION_QCIF;
+       }
+}
+
+int cam_convert_photo_resolution_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_RESOLUTION_3264x2448:
+                       return CAM_MENU_PHOTO_RESOLUTION_3264x2448;
+               case CAM_RESOLUTION_3264x1960:
+                       return CAM_MENU_PHOTO_RESOLUTION_3264x1960;
+               case CAM_RESOLUTION_3264x1836:
+                       return CAM_MENU_PHOTO_RESOLUTION_3264x1836;
+               case CAM_RESOLUTION_2800x1920:
+                       return CAM_MENU_PHOTO_RESOLUTION_2800x1920;
+               case CAM_RESOLUTION_2560x1536:
+                       return CAM_MENU_PHOTO_RESOLUTION_2560x1536;
+               case CAM_RESOLUTION_2560x1440:
+                       return CAM_MENU_PHOTO_RESOLUTION_2560x1440;
+               case CAM_RESOLUTION_2048x1536:
+                       return CAM_MENU_PHOTO_RESOLUTION_2048x1536;
+               case CAM_RESOLUTION_2048x1152:
+                       return CAM_MENU_PHOTO_RESOLUTION_2048x1152;
+               case CAM_RESOLUTION_1920x1080:
+                       return CAM_MENU_PHOTO_RESOLUTION_1920x1080;
+               case CAM_RESOLUTION_1600x1200:
+                       return CAM_MENU_PHOTO_RESOLUTION_1600x1200;
+               case CAM_RESOLUTION_1392x1392:
+                       return CAM_MENU_PHOTO_RESOLUTION_1392x1392;
+               case CAM_RESOLUTION_1280x960:
+                       return CAM_MENU_PHOTO_RESOLUTION_1280x960;
+               case CAM_RESOLUTION_1280x720:
+                       return CAM_MENU_PHOTO_RESOLUTION_1280x720;
+               case CAM_RESOLUTION_VGA:
+                       return CAM_MENU_PHOTO_RESOLUTION_640x480;
+               default:
+                       return CAM_MENU_PHOTO_RESOLUTION_640x480;
+       }
+}
+
+int cam_convert_iso_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_ISO_AUTO:
+                       return CAM_MENU_ISO_AUTO;
+               case CAM_ISO_50:
+                       return CAM_MENU_ISO_50;
+               case CAM_ISO_100:
+                       return CAM_MENU_ISO_100;
+               case CAM_ISO_200:
+                       return CAM_MENU_ISO_200;
+               case CAM_ISO_400:
+                       return CAM_MENU_ISO_400;
+               case CAM_ISO_800:
+                       return CAM_MENU_ISO_80O;
+               case CAM_ISO_1600:
+                       return CAM_MENU_ISO_1600;
+               case CAM_ISO_3200:
+                       return CAM_MENU_ISO_320O;
+               default:
+                       return CAM_MENU_ISO_AUTO;
+       }
+}
+
+int cam_convert_focus_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_FOCUS_AUTO:
+                       return CAM_MENU_FOCUS_AUTO;
+               case CAM_FOCUS_MACRO:
+                       return CAM_MENU_FOCUS_MACRO;
+               case CAM_FOCUS_FACE:
+                       return CAM_MENU_FOCUS_FACE_DETECTION;
+               default:
+                       return CAM_MENU_FOCUS_AUTO;
+       }
+}
+
+int cam_convert_timer_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_SETTINGS_TIMER_OFF:
+                       return CAM_MENU_TIMER_OFF;
+               case CAM_SETTINGS_TIMER_2SEC:
+                       return CAM_MENU_TIMER_2SEC;
+               case CAM_SETTINGS_TIMER_5SEC:
+                       return CAM_MENU_TIMER_5SEC;
+               case CAM_SETTINGS_TIMER_10SEC:
+                       return CAM_MENU_TIMER_10SEC;
+               default:
+                       return CAM_MENU_TIMER_OFF;
+       }
+}
+
+int cam_convert_scene_mode_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_SCENE_NONE:
+                       return CAM_MENU_SCENE_AUTO;
+               case CAM_SCENE_PORTRAIT:
+                       return CAM_MENU_SCENE_PORTRAIT;
+               case CAM_SCENE_LANDSCAPE:
+                       return CAM_MENU_SCENE_LANDSCAPE;
+               case CAM_SCENE_NIGHT:
+                       return CAM_MENU_SCENE_NIGHT;
+               case CAM_SCENE_SPORTS:
+                       return CAM_MENU_SCENE_SPORTS;
+               case CAM_SCENE_PARTY:
+                       return CAM_MENU_SCENE_PARTY;
+               case CAM_SCENE_BEACHSNOW:
+                       return CAM_MENU_SCENE_BEACHSNOW;
+               case CAM_SCENE_SUNSET:
+                       return CAM_MENU_SCENE_SUNSET;
+               case CAM_SCENE_DUSKDAWN:
+                       return CAM_MENU_SCENE_DUSKDAWN;
+               case CAM_SCENE_FALL:
+                       return CAM_MENU_SCENE_FALL;
+               case CAM_SCENE_FIREWORK:
+                       return CAM_MENU_SCENE_FIREWORK;
+               case CAM_SCENE_TEXT:
+                       return CAM_MENU_SCENE_TEXT;
+               case CAM_SCENE_CANDLELIGHT:
+                       return CAM_MENU_SCENE_CANDLELIGHT;
+               case CAM_SCENE_BACKLIGHT:
+                       return CAM_MENU_SCENE_BACKLIGHT;
+               default:
+                       return CAM_MENU_SCENE_AUTO;
+       }
+}
+
+int cam_convert_wb_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_SETTINGS_WB_AWB:
+                       return CAM_MENU_WB_AWB;
+               case CAM_SETTINGS_WB_INCANDESCENT:
+                       return CAM_MENU_WB_INCANDESCENT;
+               case CAM_SETTINGS_WB_FLUORESCENT:
+                       return CAM_MENU_WB_FLUORESCENT;
+               case CAM_SETTINGS_WB_DAYLIGHT:
+                       return CAM_MENU_WB_DAYLIGHT;
+               case CAM_SETTINGS_WB_CLOUDY:
+                       return CAM_MENU_WB_CLOUDY;
+               case CAM_SETTINGS_WB_SHADE:
+                       return CAM_MENU_WB_SHADE;
+               case CAM_SETTINGS_WB_HORIZON:
+                       return CAM_MENU_WB_HORIZON;
+               case CAM_SETTINGS_WB_FLASH:
+                       return CAM_MENU_WB_FLASH;
+               case CAM_SETTINGS_WB_CUSTOM:
+                       return CAM_MENU_WB_CLOUDY;
+               default:
+                       return CAM_MENU_WB_AWB;
+       }
+}
+
+int cam_convert_effect_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_SETTINGS_EFFECTS_NOR:
+                       return CAM_MENU_EFFECT_NONE;
+               case CAM_SETTINGS_EFFECTS_NEGATIVE:
+                       return CAM_MENU_EFFECT_NEGATIVE;
+               case CAM_SETTINGS_EFFECTS_MONO:
+                       return CAM_MENU_EFFECT_BLACKANDWHITE;
+               case CAM_SETTINGS_EFFECTS_SEPIA:
+                       return CAM_MENU_EFFECT_SEPIA;
+               default:
+                       return CAM_MENU_EFFECT_NONE;
+       }
+}
+
+int cam_convert_metering_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_METERING_MATRIX:
+                       return CAM_MENU_METERING_MATRIX;
+               case CAM_METERING_CENTER_WEIGHTED:
+                       return CAM_MENU_METERING_CENTER_WEIGHTED;
+               case CAM_METERING_SPOT:
+                       return CAM_MENU_METERING_SPOT;
+               default:
+                       return CAM_MENU_METERING_MATRIX;
+       }
+}
+
+int cam_convert_storage_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_STORAGE_INTERNAL:
+                       return CAM_MENU_STORAGE_PHONE;
+               case CAM_STORAGE_EXTERNAL:
+                       return CAM_MENU_STORAGE_MMC;
+               default:
+                       return CAM_MENU_STORAGE_PHONE;
+       }
+}
+
+int cam_convert_volume_key_to_menu_item(int mode)
+{
+       switch(mode)
+       {
+               case CAM_VOLUME_KEY_ZOOM:
+                       return CAM_MENU_VOLUME_KEY_ZOOM;
+               case CAM_VOLUME_KEY_SHUTTER:
+                       return CAM_MENU_VOLUME_KEY_SHUTTER;
+               default:
+                       return CAM_MENU_VOLUME_KEY_ZOOM;
+       }
+}
+
+int cam_convert_menu_item_to_mmfw_value(int mode)
+{
+       switch(mode)
+       {
+               case CAM_MENU_SCENE_AUTO:
+                       return  CAM_SCENE_NONE;
+               case CAM_MENU_SCENE_PORTRAIT:
+                       return  CAM_SCENE_PORTRAIT;
+               case CAM_MENU_SCENE_LANDSCAPE:
+                       return  CAM_SCENE_LANDSCAPE;
+               case CAM_MENU_SCENE_NIGHT:
+                       return CAM_SCENE_NIGHT;
+               case CAM_MENU_SCENE_SPORTS:
+                       return CAM_SCENE_SPORTS;
+               case CAM_MENU_SCENE_PARTY:
+                       return CAM_SCENE_PARTY;
+               case CAM_MENU_SCENE_BEACHSNOW:
+                       return CAM_SCENE_BEACHSNOW;
+               case CAM_MENU_SCENE_SUNSET:
+                       return CAM_SCENE_SUNSET;
+               case CAM_MENU_SCENE_DUSKDAWN:
+                       return CAM_SCENE_DUSKDAWN;
+               case CAM_MENU_SCENE_FALL:
+                       return CAM_SCENE_FALL;
+               case CAM_MENU_SCENE_FIREWORK:
+                       return CAM_SCENE_FIREWORK;
+               case CAM_MENU_SCENE_TEXT:
+                       return CAM_SCENE_TEXT;
+               case CAM_MENU_SCENE_CANDLELIGHT:
+                       return CAM_SCENE_CANDLELIGHT;
+               case CAM_MENU_SCENE_BACKLIGHT:
+                       return CAM_SCENE_BACKLIGHT;
+               case CAM_MENU_SHOOTING_SINGLE:
+                       return CAM_SINGLE_MODE;
+               case CAM_MENU_SHOOTING_SELF_SINGLE:
+                       return CAM_SELF_SINGLE_MODE;
+               case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
+                       return CAM_RESOLUTION_3264x2448;
+               case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
+                       return CAM_RESOLUTION_3264x1960;
+               case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
+                       return CAM_RESOLUTION_3264x1836;
+               case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
+                       return CAM_RESOLUTION_2800x1920;
+               case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
+                       return CAM_RESOLUTION_2560x1920;
+               case CAM_MENU_PHOTO_RESOLUTION_2560x1536:
+                       return CAM_RESOLUTION_2560x1536;
+               case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
+                       return CAM_RESOLUTION_2560x1440;
+               case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
+                       return CAM_RESOLUTION_2048x1536;
+               case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
+                       return CAM_RESOLUTION_2048x1152;
+               case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
+                       return CAM_RESOLUTION_1920x1080;
+               case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
+                       return CAM_RESOLUTION_1600x1200;
+               case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
+                       return CAM_RESOLUTION_1392x1392;
+               case CAM_MENU_PHOTO_RESOLUTION_1280x960:
+                       return CAM_RESOLUTION_1280x960;
+               case CAM_MENU_PHOTO_RESOLUTION_1280x720:
+                       return CAM_RESOLUTION_1280x720;
+               case CAM_MENU_PHOTO_RESOLUTION_640x480:
+                       return CAM_RESOLUTION_VGA;
+               case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
+                       return CAM_RESOLUTION_FULLHD;
+               case CAM_MENU_VIDEO_RESOLUTION_HD:
+                       return CAM_RESOLUTION_HD;
+               case CAM_MENU_VIDEO_RESOLUTION_WVGA:
+                       return CAM_RESOLUTION_WVGA2;
+               case CAM_MENU_VIDEO_RESOLUTION_VGA:
+                       return CAM_RESOLUTION_VGA;
+               case CAM_MENU_VIDEO_RESOLUTION_QVGA:
+                       return CAM_RESOLUTION_QVGA;
+               case CAM_MENU_VIDEO_RESOLUTION_QCIF:
+                       return CAM_RESOLUTION_QCIF;
+               case CAM_MENU_WB_AWB:
+                       return CAM_SETTINGS_WB_AWB;
+               case CAM_MENU_WB_INCANDESCENT:
+                       return CAM_SETTINGS_WB_INCANDESCENT;
+               case CAM_MENU_WB_FLUORESCENT:
+                       return CAM_SETTINGS_WB_FLUORESCENT;
+               case CAM_MENU_WB_DAYLIGHT:
+                       return CAM_SETTINGS_WB_DAYLIGHT;
+               case CAM_MENU_WB_CLOUDY:
+                       return CAM_SETTINGS_WB_CLOUDY;
+               case CAM_MENU_WB_SHADE:
+                       return CAM_SETTINGS_WB_SHADE;
+               case CAM_MENU_WB_HORIZON:
+                       return CAM_SETTINGS_WB_HORIZON;
+               case CAM_MENU_WB_FLASH:
+                       return CAM_SETTINGS_WB_FLASH;
+               case CAM_MENU_WB_CUSTOM:
+                       return CAM_SETTINGS_WB_CUSTOM;
+               case CAM_MENU_EFFECT_NONE:
+                       return CAM_SETTINGS_EFFECTS_NOR;
+               case CAM_MENU_EFFECT_NEGATIVE:
+                       return CAM_SETTINGS_EFFECTS_NEGATIVE;
+               case CAM_MENU_EFFECT_BLACKANDWHITE:
+                       return CAM_SETTINGS_EFFECTS_GRAY;
+               case CAM_MENU_EFFECT_SEPIA:
+                       return CAM_SETTINGS_EFFECTS_SEPIA;
+               case CAM_MENU_FOCUS_AUTO:
+                       return CAM_FOCUS_AUTO;
+               case CAM_MENU_FOCUS_MACRO:
+                       return CAM_FOCUS_MACRO;
+               case CAM_MENU_FOCUS_FACE_DETECTION:
+                       return CAM_FOCUS_FACE;
+               case CAM_MENU_RECORDING_MODE_NORMAL:
+                       return CAM_RECORD_NORMAL;
+               case CAM_MENU_RECORDING_MODE_LIMIT:
+                       return CAM_RECORD_MMS;
+               case CAM_MENU_RECORDING_MODE_SLOW:
+                       return CAM_RECORD_SLOW;
+               case CAM_MENU_RECORDING_MODE_FAST:
+                       return CAM_RECORD_FAST;
+               case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
+                       return CAM_RECORD_SELF;
+               case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
+                       return CAM_RECORD_SELF_MMS;
+               case CAM_MENU_FLASH_OFF:
+                       return CAM_FLASH_OFF;
+               case CAM_MENU_FLASH_ON:
+                       return CAM_FLASH_ON;
+               case CAM_MENU_FLASH_AUTO:
+                       return CAM_FLASH_AUTO;
+               case CAM_MENU_METERING_MATRIX:
+                       return CAM_METERING_MATRIX;
+               case CAM_MENU_METERING_CENTER_WEIGHTED:
+                       return CAM_METERING_CENTER_WEIGHTED;
+               case CAM_MENU_METERING_SPOT:
+                       return CAM_METERING_SPOT;
+               case CAM_MENU_ISO_AUTO:
+                       return CAM_ISO_AUTO;
+               case CAM_MENU_ISO_50:
+                       return CAM_ISO_50;
+               case CAM_MENU_ISO_100:
+                       return CAM_ISO_100;
+               case CAM_MENU_ISO_200:
+                       return CAM_ISO_200;
+               case CAM_MENU_ISO_400:
+                       return CAM_ISO_400;
+               case CAM_MENU_ISO_80O:
+                       return CAM_ISO_800;
+               case CAM_MENU_ISO_1600:
+                       return CAM_ISO_1600;
+               case CAM_MENU_ISO_320O:
+                       return CAM_ISO_3200;
+
+               default:
+                       return -1;
+
+       }
+}
+
+int cam_get_menu_item_to_index(void* data, int menu_type, int item)
+{
+       cam_menu_composer* menu_composer = NULL;
+       menu_composer = calloc(1, sizeof(cam_menu_composer));
+
+       switch((CAM_MENU_ITEM)menu_type)
+       {
+               case CAM_MENU_SHOOTING_MODE:
+                       cam_compose_menu_shooting_mode(data, menu_composer);
+                       break;
+
+               case CAM_MENU_FLASH:
+                       cam_compose_menu_flash(data, menu_composer);
+                       break;
+
+               case CAM_MENU_RECORDING_MODE:
+                       cam_compose_menu_recording_mode(data, menu_composer);
+                       break;
+
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       cam_compose_menu_photo_resolution(data, menu_composer);
+                       break;
+
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       cam_compose_menu_video_resolution(data, menu_composer);
+                       break;
+
+               case CAM_MENU_ISO:
+                       cam_compose_menu_iso(data, menu_composer);
+                       break;
+
+               case CAM_MENU_FOCUS_MODE:
+                       cam_compose_menu_focus_mode(data, menu_composer);
+                       break;
+
+               case CAM_MENU_SCENE_MODE:
+                       cam_compose_menu_scene_mode(data, menu_composer);
+                       break;
+
+               case CAM_MENU_WHITE_BALANCE:
+                       cam_compose_menu_wb(data, menu_composer);
+                       break;
+
+               case CAM_MENU_EFFECTS:
+                       cam_compose_menu_effect(data, menu_composer);
+                       break;
+
+               case CAM_MENU_METERING:
+                       cam_compose_menu_metering(data, menu_composer);
+                       break;
+
+               case CAM_MENU_STORAGE:
+                       cam_compose_menu_storage(data, menu_composer);
+                       break;
+
+               case CAM_MENU_VOLUME_KEY:
+                       cam_compose_menu_volume_key(data, menu_composer);
+                       break;
+
+               default:
+                       break;
+       }
+
+       CAM_MENU_ITEM* menu_item  = NULL;
+       int size = eina_array_count(menu_composer->array);
+
+
+       int index = 0;
+       for (index = 0; index < size; index++) {
+               menu_item = (CAM_MENU_ITEM*)eina_array_data_get(menu_composer->array, index);
+
+               if((CAM_MENU_ITEM)item == *menu_item) {
+                       cam_compose_free(menu_composer);
+                       return index;
+               }
+       }
+
+       cam_compose_free(menu_composer);
+       return INVALID_INDEX;
+}
+
+
+int cam_get_value_to_index(void* data, int menu_type, int value)
+{
+       cam_menu_composer* menu_composer = NULL;
+       menu_composer = calloc(1, sizeof(cam_menu_composer));
+
+       int item = 0;
+
+       switch(menu_type)
+       {
+               case CAM_MENU_SHOOTING_MODE:
+                       cam_compose_menu_shooting_mode(data, menu_composer);
+                       item = cam_convert_shot_mode_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_FLASH:
+                       cam_compose_menu_flash(data, menu_composer);
+                       item = cam_convert_flash_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_RECORDING_MODE:
+                       cam_compose_menu_recording_mode(data, menu_composer);
+                       item = cam_convert_recording_mode_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       cam_compose_menu_photo_resolution(data, menu_composer);
+                       item = cam_convert_photo_resolution_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       cam_compose_menu_video_resolution(data, menu_composer);
+                       item = cam_convert_video_resolution_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_ISO:
+                       cam_compose_menu_iso(data, menu_composer);
+                       item = cam_convert_iso_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_FOCUS_MODE:
+                       cam_compose_menu_focus_mode(data, menu_composer);
+                       item = cam_convert_focus_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_TIMER:
+                       cam_compose_menu_timer_mode(data, menu_composer);
+                       item = cam_convert_timer_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_SCENE_MODE:
+                       cam_compose_menu_scene_mode(data, menu_composer);
+                       item = cam_convert_scene_mode_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_WHITE_BALANCE:
+                       cam_compose_menu_wb(data, menu_composer);
+                       item = cam_convert_wb_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_EFFECTS:
+                       cam_compose_menu_effect(data, menu_composer);
+                       item = cam_convert_effect_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_METERING:
+                       cam_compose_menu_metering(data, menu_composer);
+                       item = cam_convert_metering_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_STORAGE:
+                       cam_compose_menu_storage(data, menu_composer);
+                       item = cam_convert_storage_to_menu_item(value);
+                       break;
+
+               case CAM_MENU_VOLUME_KEY:
+                       cam_compose_menu_volume_key(data, menu_composer);
+                       item = cam_convert_volume_key_to_menu_item(value);
+                       break;
+
+               default:
+                       break;
+       }
+
+       CAM_MENU_ITEM* menu_item  = NULL;
+       int size = eina_array_count(menu_composer->array);
+
+       int index = 0;
+       for (index = 0; index < size; index++) {
+               menu_item = (CAM_MENU_ITEM*)eina_array_data_get(menu_composer->array, index);
+
+               if((CAM_MENU_ITEM)item == *menu_item) {
+                       cam_compose_free(menu_composer);
+                       return index;
+               }
+       }
+
+       cam_compose_free(menu_composer);
+       return INVALID_INDEX;
+}
+
+int cam_get_sound_index(int sound)
+{
+       return sound + 1;
+}
+
+int shot_mode_set(void *data, int mode)
+{
+       CAM_UI_LOG("%d", mode);
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, -1, "camapp_handle is NULL");
+
+       GValue value = { 0 };
+       if (mode == CAM_SINGLE_MODE)
+               camapp->enable_touch_af = TRUE;
+       else
+               camapp->enable_touch_af = FALSE;
+
+       CAM_GVALUE_SET_INT(value, mode);
+       if (mode != camapp->shooting_mode) {
+               cam_handle_value_set(ad, PROP_SHOT_MODE, &value);
+       }
+       return 0;
+}
+
+
+
diff --git a/src/edc-callback/cam_ev_edc_callback.c b/src/edc-callback/cam_ev_edc_callback.c
new file mode 100755 (executable)
index 0000000..1f76c1e
--- /dev/null
@@ -0,0 +1,277 @@
+/*
+ * 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 "cam.h"
+#include "cam_ev_edc_callback.h"
+
+
+#define EV_DESTROY_TIME                3
+#define EXPOSURE_VALUE_GAP     4
+
+
+static Evas_Object *slider = NULL;
+static Ecore_Timer *ev_destroy_timer = NULL;
+
+static Eina_Bool __ev_destroy_timer_cb(void *data);
+static void __set_ev_value(struct appdata *data, int ev_value);
+static void __ev_slider_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void __ev_slider_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __ev_selected_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+
+static Eina_Bool __ev_destroy_timer_cb(void *data)
+{
+       CAM_UI_LOG();
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       unload_ev_edje(ad);
+
+       if (ev_destroy_timer)
+               ev_destroy_timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __set_ev_value(struct appdata *data, int ev_value)
+{
+       CAM_UI_LOG();
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       GValue value = { 0 };
+       CAM_GVALUE_SET_INT(value, ev_value);
+
+       if (!cam_handle_value_set(ad, PROP_BRIGHTNESS, &value)) {
+               DEBUG_TRACE("cam_handle_value_set failed");
+       }
+}
+
+static void __ev_slider_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (obj) {
+               Evas_Object *slider = (Evas_Object *)obj;
+               int slider_value = (int)elm_slider_value_get(slider);
+               elm_slider_value_set(slider, slider_value);
+       } else {
+               cam_critical(LOG_UI, "Error : slider is NULL");
+       }
+
+       if(ev_destroy_timer)
+               ecore_timer_reset(ev_destroy_timer);
+}
+
+static void __ev_slider_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       if (obj) {
+               Evas_Object *slider = (Evas_Object *)obj;
+               int slider_value = (int)elm_slider_value_get(slider);
+
+               if (camapp->self_portrait == FALSE)
+                       slider_value += EXPOSURE_VALUE_GAP;
+
+               __set_ev_value(ad, slider_value);
+       } else {
+               cam_critical(LOG_UI, "Error : slider is NULL");
+       }
+
+       if(ev_destroy_timer)
+               ecore_timer_reset(ev_destroy_timer);
+       cam_app_timeout_checker_update();
+}
+
+static void __ev_selected_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       if (emission && source)
+               cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       int slider_value = (int)elm_slider_value_get(slider);
+
+       if (camapp->self_portrait == FALSE)
+               slider_value += EXPOSURE_VALUE_GAP;
+
+       if (emission) {
+               if (strcmp(emission, "icon_minus,clicked") == 0) {
+                       if (slider_value > camapp->brightness_min)
+                               slider_value--;
+               } else if (strcmp(emission, "icon_plus,clicked") == 0) {
+                       if (slider_value < camapp->brightness_max)
+                               slider_value++;
+               }
+       } else {
+               cam_critical(LOG_UI, "emission is NULL");
+       }
+
+       __set_ev_value(ad, slider_value);
+       update_ev_edje(ad);
+
+       if(ev_destroy_timer)
+               ecore_timer_reset(ev_destroy_timer);
+       cam_app_timeout_checker_update();
+}
+
+gboolean load_ev_edje(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       if(ad->ev_edje)
+               unload_ev_edje(ad);
+
+       int slider_max = 0;
+       int slider_min = 0;
+
+       elm_object_part_content_unset(ad->ug_base, "ev_layout");
+
+       /* ev bg */
+       gboolean portrait = FALSE;
+       gboolean slider_inverse = FALSE;
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               ad->ev_edje = cam_app_load_edj(ad->ug_base, CAM_EV_EDJ_NAME, GRP_MAIN);
+               portrait = FALSE;
+               slider_inverse = TRUE;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->ev_edje = cam_app_load_edj(ad->ug_base, CAM_EV_EDJ_INVERSE_NAME, GRP_MAIN);
+               portrait = FALSE;
+               slider_inverse = FALSE;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               ad->ev_edje = cam_app_load_edj(ad->ug_base, CAM_EV_EDJ_VERTICAL_NAME, GRP_MAIN);
+               portrait = TRUE;
+               slider_inverse = FALSE;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->ev_edje = cam_app_load_edj(ad->ug_base, CAM_EV_EDJ_VERTICAL_INVERSE_NAME, GRP_MAIN);
+               slider_inverse = TRUE;
+               portrait = TRUE;
+               break;
+       default:
+               cam_critical(LOG_UI, "Invalid target direction!!!");
+       }
+
+       cam_retvm_if(ad->ev_edje == NULL, FALSE, "ev_edje is NULL");
+       elm_object_part_content_set(ad->ug_base, "ev_layout", ad->ev_edje);
+
+       /* ev icon */
+       if (!ad->ev_icon_minus_edje) {
+               ad->ev_icon_minus_edje = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->ev_edje), "icon_minus");
+       }
+       cam_retvm_if(ad->ev_icon_minus_edje == NULL, FALSE, "ev_icon_minus_edje is NULL");
+
+       if (!ad->ev_icon_plus_edje) {
+               ad->ev_icon_plus_edje = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->ev_edje), "icon_plus");
+       }
+       cam_retvm_if(ad->ev_icon_plus_edje == NULL, FALSE, "ev_icon_plus_edje is NULL");
+
+       /* ev slider */
+       slider = elm_slider_add(ad->ev_edje);
+       cam_retvm_if(slider == NULL, FALSE, "slider is NULL");
+
+       if (camapp->self_portrait == FALSE)
+               slider_max = camapp->brightness_max / 2;
+       else
+               slider_max = camapp->brightness_max;
+
+       slider_min = (-slider_max);
+
+       elm_object_style_set(slider, "camera");
+       if (portrait) {
+               elm_slider_horizontal_set(slider, EINA_TRUE);
+       } else {
+               elm_slider_horizontal_set(slider, EINA_FALSE);
+       }
+       if (slider_inverse) {
+               elm_slider_inverted_set(slider, EINA_TRUE);
+       } else {
+               elm_slider_inverted_set(slider, EINA_FALSE);
+       }
+
+       elm_slider_min_max_set(slider, slider_min, slider_max);
+
+       if (camapp->self_portrait == FALSE)
+               elm_slider_value_set(slider, camapp->brightness - EXPOSURE_VALUE_GAP);
+       else
+               elm_slider_value_set(slider, camapp->brightness);
+
+       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(ad->ev_edje, "slider", slider);
+
+       evas_object_smart_callback_del(slider, "slider,drag,stop", __ev_slider_stop_cb);
+       evas_object_smart_callback_add(slider, "slider,drag,stop", __ev_slider_stop_cb, (void*)ad);
+       evas_object_smart_callback_del(slider, "changed", __ev_slider_changed_cb);
+       evas_object_smart_callback_add(slider, "changed", __ev_slider_changed_cb, (void*)ad);
+       edje_object_signal_callback_del(_EDJ(ad->ev_edje), "*", "ev_icon_signal", __ev_selected_cb);
+       edje_object_signal_callback_add(_EDJ(ad->ev_edje), "*", "ev_icon_signal", __ev_selected_cb, (void *)ad);
+
+       ev_destroy_timer = ecore_timer_add(EV_DESTROY_TIME, __ev_destroy_timer_cb, ad);
+
+       return TRUE;
+}
+
+gboolean update_ev_edje(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_retvm_if(ad->ev_edje == NULL, FALSE, "ev_edje is NULL");
+       cam_retvm_if(slider == NULL, FALSE, "ev slider is NULL");
+
+       if (camapp->self_portrait == FALSE)
+               elm_slider_value_set(slider, camapp->brightness - EXPOSURE_VALUE_GAP);
+       else
+               elm_slider_value_set(slider, camapp->brightness);
+
+       return TRUE;
+}
+
+gboolean unload_ev_edje(struct appdata *ad)
+{
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->ev_icon_minus_edje);
+       DEL_EVAS_OBJECT(ad->ev_icon_plus_edje);
+       DEL_EVAS_OBJECT(ad->ev_edje);
+       REMOVE_TIMER(ev_destroy_timer);
+
+       return TRUE;
+}
+
+//endfile
diff --git a/src/edc-callback/cam_indicator_edc_callback.c b/src/edc-callback/cam_indicator_edc_callback.c
new file mode 100755 (executable)
index 0000000..a79b75e
--- /dev/null
@@ -0,0 +1,435 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include "camera_utils.h"
+
+#include "cam_indicator_edc_callback.h"
+#include "cam_common_edc_callback.h"
+#include "cam_lbs.h"
+#include "edc_string.h"
+#include "edc_image_name.h"
+
+#define CHARGING_INTERVAL      (0.5)
+#define SECONDS_IN_HOUR (1*60*60)
+#define SECONDS_RECORDING_MAX ((99*60*60)+(99*60)+99)
+
+static char *storage_image[CAM_STORAGE_NUM] = {
+       INDICATOR_STORAGE_INTERNAL_ICON,
+       INDICATOR_STORAGE_CARD_ICON,
+       INDICATOR_STORAGE_INTERNAL_ICON,
+};
+
+#define CAM_BATTERY_LEVEL_MAX 8
+static char *battery_image[CAM_BATTERY_LEVEL_MAX] = {
+       INDICATOR_BATTERY_LEVEL_00_ICON,
+       INDICATOR_BATTERY_LEVEL_01_ICON,
+       INDICATOR_BATTERY_LEVEL_02_ICON,
+       INDICATOR_BATTERY_LEVEL_03_ICON,
+       INDICATOR_BATTERY_LEVEL_04_ICON,
+       INDICATOR_BATTERY_LEVEL_05_ICON,
+       INDICATOR_BATTERY_FULL_ICON,
+       INDICATOR_BATTERY_CHARGE_ICON,
+};
+
+static char *gps_level_image[CAM_LBS_STATE_NUM] = {
+       INDICATOR_GPS_STATE_OFF_ICON,
+       INDICATOR_GPS_STATE_ON_ICON,
+       INDICATOR_GPS_STATE_CONNECT_ANI01_ICON,
+       INDICATOR_GPS_STATE_CONNECT_ANI02_ICON,
+       INDICATOR_GPS_STATE_CONNECT_ANI03_ICON,
+};
+
+static char *mute_image = INDICATOR_MUTE_ICON;
+
+static Evas_Object *indicator_image_obj_battery = NULL;
+static Evas_Object *indicator_image_obj_storage = NULL;
+static Evas_Object *indicator_image_obj_gps_level = NULL;
+static Evas_Object *indicator_image_obj_mute = NULL;
+
+
+void indicator_update_storage(struct appdata *ad)
+{
+       int mmc_state = -1;
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+       const char *image_file = NULL;
+
+       vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, &(ad->camapp_handle->storage));
+
+       if (ad->camapp_handle->storage == CAM_STORAGE_EXTERNAL) {
+               if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
+                       if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
+                               cam_info(LOG_UI, "MMC card is removed");
+                               GValue value = { 0 };
+                               CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
+                               cam_handle_value_set(ad, PROP_STORAGE, &value);
+                       }
+               }
+       }
+
+       switch (ad->camapp_handle->storage) {
+       case CAM_STORAGE_INTERNAL:
+               image_file = storage_image[CAM_STORAGE_INTERNAL];
+               break;
+       case CAM_STORAGE_EXTERNAL:
+               image_file = storage_image[CAM_STORAGE_EXTERNAL];
+               break;
+       default:
+               break;
+       }
+
+       if (!indicator_image_obj_storage) {
+               indicator_image_obj_storage = elm_image_add(ad->indicator_edje);
+       }
+
+       cam_retm_if(indicator_image_obj_storage == NULL,
+                   "indicator_image_obj_storage is NULL");
+       elm_image_file_set(indicator_image_obj_storage, CAM_IMAGE_EDJ_NAME, image_file);
+
+       if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE
+               && ad->is_recording == TRUE)
+               edje_object_part_swallow(_EDJ(ad->indicator_edje), INDI_REC_STORAGE,
+                                indicator_image_obj_storage);
+       else
+               edje_object_part_swallow(_EDJ(ad->indicator_edje), INDICATOR_STORAGE,
+                                indicator_image_obj_storage);
+
+       ad->remained_count = cam_system_get_still_count_by_resolution(ad);
+       indicator_update_remain_count(ad);
+}
+
+void indicator_update_gps_level(struct appdata *ad)
+{
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+       cam_ret_if(ad->toolbar_hided);
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+       const char *image_file = NULL;
+       /*DEBUG_TRACE("====level : %d", ad->gps_level);*/
+       switch (camapp->gps_level) {
+       case CAM_LBS_STATE_DISABLE:
+               image_file = gps_level_image[CAM_LBS_STATE_DISABLE];
+               break;
+       case CAM_LBS_STATE_SERVICE_START:
+               image_file = gps_level_image[CAM_LBS_STATE_SERVICE_START];
+               break;
+       case CAM_LBS_STATE_SERVICE_ENABLE:
+               image_file = gps_level_image[CAM_LBS_STATE_SERVICE_ENABLE];
+               break;
+       case CAM_LBS_STATE_ACCURANCY_ROUGH:
+               image_file = gps_level_image[CAM_LBS_STATE_ACCURANCY_ROUGH];
+               break;
+       case CAM_LBS_STATE_ACCURANCY_DETAILED:
+               image_file = gps_level_image[CAM_LBS_STATE_ACCURANCY_DETAILED];
+               break;
+       default:
+               image_file = gps_level_image[CAM_LBS_STATE_DISABLE];
+       }
+       if (!indicator_image_obj_gps_level) {
+               indicator_image_obj_gps_level =
+                   elm_image_add(ad->indicator_edje);
+       }
+       cam_retm_if(indicator_image_obj_gps_level == NULL,
+                   "indicator_image_obj_gps_level is NULL");
+       elm_image_file_set(indicator_image_obj_gps_level, CAM_IMAGE_EDJ_NAME, image_file);
+
+       cam_debug(LOG_CAM, "ad->camapp_handle->camera_mode %d", camapp->camera_mode);
+       cam_debug(LOG_CAM, "ad->mm_state %d", ad->mm_state);
+
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE
+               && ad->is_recording == TRUE) {
+               if (camapp->gps_level == CAM_LBS_STATE_DISABLE) {
+                       HIDE_EVAS_OBJECT(indicator_image_obj_gps_level);
+                       edje_object_part_unswallow(_EDJ(ad->indicator_edje), indicator_image_obj_gps_level);
+
+               } else {
+                       SHOW_EVAS_OBJECT(indicator_image_obj_gps_level);
+                       edje_object_part_swallow(_EDJ(ad->indicator_edje),
+                                               INDI_REC_GPS,
+                                               indicator_image_obj_gps_level);
+               }
+       } else {
+               if (camapp->gps_level == CAM_LBS_STATE_DISABLE) {
+                       HIDE_EVAS_OBJECT(indicator_image_obj_gps_level);
+                       edje_object_part_unswallow(_EDJ(ad->indicator_edje), indicator_image_obj_gps_level);
+               } else {
+                       SHOW_EVAS_OBJECT(indicator_image_obj_gps_level);
+                       edje_object_part_swallow(_EDJ(ad->indicator_edje),
+                                               INDICATOR_GPS,
+                                               indicator_image_obj_gps_level);
+               }
+       }
+}
+
+void indicator_update_gps(struct appdata *ad)
+{
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+       indicator_update_gps_level(ad);
+}
+
+void indicator_update_remain_count(struct appdata *ad)
+{
+       char remain[80] = "";
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+
+       gint64 remained_count = 0;
+       remained_count = ad->remained_count;
+
+       if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE && ad->is_recording == TRUE) {
+               snprintf(remain, sizeof(remain), "%s", " ");
+       } else {
+               if (remained_count >= 0 && remained_count < 301) {
+                       snprintf(remain, sizeof(remain), "%d", (int)remained_count);
+               } else {
+                       snprintf(remain, sizeof(remain), "%d", (int)remained_count);
+                       snprintf(remain, sizeof(remain), "%s", " ");
+               }
+       }
+
+       DEBUG_TRACE("INDICATOR REMAIN = %s ", remain);
+
+       edje_object_part_text_set(_EDJ(ad->indicator_edje), INDICATOR_NUM, remain);
+}
+
+static Eina_Bool cam_indicator_battery_ani_cb(void *data)
+{
+       struct appdata *ad = data;
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, 0, "appdata is NULL");
+       camapp = ad->camapp_handle;
+        if (camapp == NULL) {
+                ad->battery_animation_timer = NULL;
+                return ECORE_CALLBACK_CANCEL;
+
+        }
+
+       if (indicator_image_obj_battery) {
+               if (evas_object_visible_get(indicator_image_obj_battery))
+                       evas_object_hide(indicator_image_obj_battery);
+               else
+                       evas_object_show(indicator_image_obj_battery);
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void cam_indicator_draw_battery_ani(void *data)
+{
+       struct appdata *ad = data;
+       CamAppData *camapp = NULL;
+       debug_fenter(LOG_UI);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+       if (ad->battery_animation_timer) {
+               cam_debug(LOG_UI, "battery_ani timer already exists! ");
+               return;
+       }
+       ad->battery_animation_timer =
+           ecore_timer_add(CHARGING_INTERVAL, cam_indicator_battery_ani_cb, ad);
+}
+
+void indicator_update_battery(struct appdata *ad, int level)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+       const char *image_file = NULL;
+       int battery_level = 0;
+       gboolean show_icon = TRUE;
+
+       if (ad->battery_animation_timer) {
+           ecore_timer_del(ad->battery_animation_timer);
+               ad->battery_animation_timer = NULL;
+       }
+
+       if (ad->camapp_handle->battery_charging) {
+               battery_level = 7;
+       } else {
+               if (level > 15 && level <= 20) // step2
+                       battery_level = 2;
+               else if (level > 5 && level <= 15) // step1
+                       battery_level = 1;
+               else if (level < 5) {// blinking
+                       battery_level = 0;
+                       cam_indicator_draw_battery_ani((void *)ad);
+               }
+               else
+                       show_icon = FALSE;
+       }
+
+       cam_debug(LOG_CAM, "level [%d] img_index[%d] show state [%d]", level, battery_level, show_icon);
+
+       if (show_icon) {
+               image_file = battery_image[battery_level];
+
+               if (!indicator_image_obj_battery) {
+                       indicator_image_obj_battery = elm_image_add(ad->indicator_edje);
+               }
+               cam_retm_if(indicator_image_obj_battery == NULL, "indicator_image_obj_battery is NULL");
+               elm_image_file_set(indicator_image_obj_battery, CAM_IMAGE_EDJ_NAME, image_file);
+               if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE
+                       && ad->is_recording == TRUE)
+                       edje_object_part_swallow(_EDJ(ad->indicator_edje), INDI_REC_BATTERY, indicator_image_obj_battery);
+               else
+                       edje_object_part_swallow(_EDJ(ad->indicator_edje), INDICATOR_BATTERY, indicator_image_obj_battery);
+       } else {
+               if (indicator_image_obj_battery)
+                       evas_object_hide(indicator_image_obj_battery);
+       }
+}
+
+void indicator_update_mute_icon(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       cam_retm_if(ad->indicator_edje == NULL, "indicator_edje is NULL");
+       const char *image_file = NULL;
+
+       if ((ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE)
+                       && (ad->camapp_handle->recording_mode == CAM_RECORD_SLOW
+                                || ad->camapp_handle->recording_mode == CAM_RECORD_FAST)) {
+               if (ad->is_recording == TRUE) {
+                       image_file = mute_image;
+
+                       if (!indicator_image_obj_mute) {
+                               indicator_image_obj_mute = elm_image_add(ad->indicator_edje);
+                       }
+
+                       cam_retm_if(indicator_image_obj_mute == NULL, "indicator_image_obj_mute is NULL");
+                       elm_image_file_set(indicator_image_obj_mute, CAM_IMAGE_EDJ_NAME, image_file);
+                       edje_object_part_swallow(_EDJ(ad->indicator_edje), INDI_REC_MUTE, indicator_image_obj_mute);
+               } else {
+                       DEL_EVAS_OBJECT(indicator_image_obj_mute);
+               }
+       } else {
+               DEL_EVAS_OBJECT(indicator_image_obj_mute);
+       }
+}
+
+void cam_indicator_update(struct appdata *ad)
+{
+#ifndef        CAMERA_MACHINE_I686
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "camapp_handle is NULL");
+       indicator_update_battery(ad, ad->camapp_handle->battery_level);
+       DEBUG_TRACE("charging = %d",ad->camapp_handle->battery_charging);
+       indicator_update_storage(ad);
+       indicator_update_gps(ad);
+       indicator_update_mute_icon(ad);
+#endif
+       return;
+}
+
+void cam_indicator_set_show_state(struct appdata *ad, bool show)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->indicator_edje) {
+               if (show)
+                       evas_object_show(ad->indicator_edje);
+               else
+                       evas_object_hide(ad->indicator_edje);
+       }
+}
+
+int cam_indicator_create(struct appdata *ad)
+{
+       debug_fenter(LOG_UI);
+       cam_retvm_if(ad == NULL, EXIT_FAILURE, "appdata is NULL");
+
+       if (ad->indicator_edje != NULL) {
+               cam_indicator_update(ad);
+               evas_object_show(ad->indicator_edje);
+               return EXIT_SUCCESS;
+       }
+
+       elm_object_part_content_unset(ad->ug_base, "indicator_layout");
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               ad->indicator_edje = cam_app_load_edj(ad->ug_base, CAM_INDICATOR_EDJ_NAME, "indicator_landscape");
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->indicator_edje = cam_app_load_edj(ad->ug_base, CAM_INDICATOR_EDJ_NAME, "indicator_landscape_inverse");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               ad->indicator_edje = cam_app_load_edj(ad->ug_base, CAM_INDICATOR_EDJ_NAME, "indicator_portrait");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->indicator_edje = cam_app_load_edj(ad->ug_base, CAM_INDICATOR_EDJ_NAME, "indicator_portrait_inverse");
+               break;
+       default:
+               DEBUG_TRACE("note:REACHED UN-ABLE REACHED CODES");
+       }
+
+       cam_retvm_if(ad->indicator_edje == NULL, EXIT_FAILURE, "indicator edje load fail !!!");
+       elm_object_part_content_set(ad->ug_base, "indicator_layout", ad->indicator_edje);
+       cam_indicator_update(ad);
+
+       return EXIT_SUCCESS;
+}
+
+int cam_indicator_destory(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+
+       DEL_EVAS_OBJECT(indicator_image_obj_battery);
+       DEL_EVAS_OBJECT(indicator_image_obj_storage);
+       DEL_EVAS_OBJECT(indicator_image_obj_gps_level);
+       DEL_EVAS_OBJECT(indicator_image_obj_mute);
+
+       DEL_EVAS_OBJECT(ad->indicator_edje);
+       return EXIT_SUCCESS;
+}
+
+int cam_indicator_rotate(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       if (ad->indicator_edje) {
+               /* delete indicator */
+               evas_object_hide(ad->indicator_edje);
+               cam_indicator_destory(ad);
+               cam_indicator_create(ad);
+               if (ad->indicator_edje) {
+                       indicator_toggle(ad, FALSE);
+                       evas_object_show(ad->indicator_edje);
+               }
+       } else {
+               return -1;
+       }
+       return 0;
+}
+
+void indicator_toggle(struct appdata *ad, gboolean hide)
+{
+       cam_ret_if(ad == NULL || ad->indicator_edje == NULL);
+
+       if (!hide)
+               indicator_update_gps(ad);
+}
diff --git a/src/edc-callback/cam_recording_edc_callback.c b/src/edc-callback/cam_recording_edc_callback.c
new file mode 100755 (executable)
index 0000000..76b92d8
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include "cam.h"
+#include "cam_app.h"
+#include "cam_rec.h"
+#include "cam_mm.h"
+#include "cam_file.h"
+#include "edc_string.h"
+#include "camera_utils.h"
+#include "cam_property.h"
+#include "cam_toolbar_edc_callback.h"
+#include "cam_recording_edc_callback.h"
+
+#define REC_ICON_TIMER_INTERVAL (1)
+#define REC_TIMER_INTERVAL (0.5)
+#define PAUSE_TIMER_INTERVAL (0.5)
+#define PAUSE_TIMEOUT (120)
+#define SECONDS_IN_HOUR (1*60*60)
+
+enum _RecState {
+       CAM_REC_STATE_RECORDING,
+       CAM_REC_STATE_PAUSE,
+};
+#define TIME_FORMAT_MAX_LEN (128)
+/* static int rec_state = CAM_REC_STATE_RECORDING; */
+static double paused_time = 0.0;
+Eina_Bool recording_update_time_cb(void *data);
+Eina_Bool recording_update_icon_cb(void *data);
+Eina_Bool pause_timeout_cb(void *data);
+
+static void __recording_set_state(void *data, int new_state)
+{
+       CAM_UI_LOG();
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+       if (new_state == CAM_REC_STATE_RECORDING) {
+               if (ad->rec_time_updater) {
+                       ecore_timer_thaw(ad->rec_time_updater);
+               }
+               if (ad->rec_icon_updater) {
+                       ecore_timer_thaw(ad->rec_icon_updater);
+               }
+               if (ad->rec_pause_timer) {
+                       ecore_timer_del(ad->rec_pause_timer);
+                       ad->rec_pause_timer = NULL;
+               }
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,rec", "program");
+       } else if (new_state == CAM_REC_STATE_PAUSE) {
+               if (ad->rec_time_updater) {
+                       ecore_timer_freeze(ad->rec_time_updater);
+               }
+               if (ad->rec_icon_updater) {
+                       ecore_timer_freeze(ad->rec_icon_updater);
+               }
+               if (ad->rec_pause_timer) {
+                       ecore_timer_del(ad->rec_pause_timer);
+                       ad->rec_pause_timer = NULL;
+               }
+               paused_time = 0.0;
+               ad->rec_pause_timer = ecore_timer_add(REC_TIMER_INTERVAL, pause_timeout_cb, ad);
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,pause", "program");
+       }
+       ad->recording_state = new_state;
+}
+
+/* you can use this function to set time text for recording */
+void recording_set_time(void *data, int hh, int mm, int ss)
+{
+       CAM_UI_LOG();
+       struct appdata *ad = (struct appdata *)data;
+       if (ad->recording_edje) {
+               char time_text[100] = "";
+               snprintf(time_text, sizeof(time_text), "%" CAM_TIME_FORMAT "", hh, mm, ss);
+               edje_object_part_text_set(_EDJ(ad->recording_edje), RECORDING_TEXT, time_text);
+       }
+}
+
+Eina_Bool pause_timeout_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = NULL;
+        camapp = ad->camapp_handle;
+        if (camapp == NULL) {
+                if (ad->rec_pause_timer)
+                       ad->rec_pause_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+        }
+
+       paused_time += PAUSE_TIMER_INTERVAL;
+       if (paused_time >= PAUSE_TIMEOUT) {
+               camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
+               ad->recording_commit = ecore_idler_add(cam_video_idler_record_stop, ad);
+
+               if (ad->rec_pause_timer)
+               ad->rec_pause_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+       if (ad->recording_edje) {
+               const char *state = edje_object_part_state_get(_EDJ(ad->recording_edje), RECORDING_IMAGE, NULL);
+
+               if (strcmp(state, "pause") == 0) {
+                       edje_object_signal_emit(_EDJ(ad->recording_edje), "indicator,hide", "program");
+               } else if (strcmp(state, "invisible") == 0) {
+                       edje_object_signal_emit(_EDJ(ad->recording_edje), "indicator,show", "program");
+               }
+       }
+       return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool recording_update_icon_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       static int count = 0;
+       if (ad == NULL) {
+               cam_critical(LOG_UI, "appdata is NULL");
+               /*      ad->rec_icon_updater = NULL; */
+               return ECORE_CALLBACK_CANCEL;
+       }
+       if (count) {
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,rec", "program");
+       } else {
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,rec1", "program");
+       }
+       count = !count;
+       return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool recording_update_time_cb(void *data)
+{
+       CAM_UI_LOG();
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       if (ad == NULL) {
+               cam_critical(LOG_UI, "appdata is NULL");
+               return ECORE_CALLBACK_CANCEL;
+       }
+       camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               cam_critical(LOG_UI, "cam_handle is NULL");
+               ad->rec_time_updater = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+       char time_text[100] = "";
+       if (camapp->rec_elapsed < SECONDS_IN_HOUR)
+               snprintf(time_text, sizeof(time_text), "%" CAM_TIME_FORMAT "", CAM_TIME_ARGS(camapp->rec_elapsed));
+       else
+               snprintf(time_text, sizeof(time_text), "%" CAM_TIME_FORMAT2 "", CAM_TIME_ARGS2(camapp->rec_elapsed));
+       cam_debug(LOG_UI, "current time %s", time_text);
+       if (ad->recording_edje) {
+               edje_object_part_text_set(_EDJ(ad->recording_edje), RECORDING_TEXT, _(time_text));
+       }
+
+       if (camapp->size_limit != CAM_REC_NORMAL_MAX_SIZE) {
+               char str[10] = "";
+               char str2[10] = "";
+               char *filename = NULL;
+               int fname_size = 0;/*unused*/
+               guint64 size_limit = 0;
+               gdouble pbar_position = 0.0;
+               gdouble size_limit_in_mega = 0.0;
+               gdouble rec_filesize_in_mega = 0.0;
+               cam_mm_get_filename(&filename, &fname_size);
+               if (camapp->rec_filesize) {
+                       size_limit = (guint64)camapp->size_limit;
+                       pbar_position = camapp->rec_filesize / (gdouble) size_limit;
+                       cam_app_set_progressbar_value(ad, pbar_position);
+
+                       if (camapp->size_limit < 1024) {
+                               snprintf(str, sizeof(str), "%dK", camapp->size_limit);
+                       } else {
+                               size_limit_in_mega = (gdouble)camapp->size_limit/(gdouble)1024;
+                               snprintf(str, sizeof(str), "%.1fM", size_limit_in_mega);
+                       }
+
+                       if (camapp->rec_filesize < 1024) {
+                               snprintf(str2, sizeof(str2), "%dK", camapp->rec_filesize);
+                       } else {
+                               rec_filesize_in_mega = (gdouble)camapp->rec_filesize/(gdouble)1024;
+                               snprintf(str2, sizeof(str2), "%.1fM", rec_filesize_in_mega);
+                       }
+
+                       edje_object_part_text_set(_EDJ(ad->recording_edje), "progressbar_text", str);
+                       edje_object_part_text_set(_EDJ(ad->recording_edje), "file_size_text", str2);
+               }
+       }
+
+       gchar * target_path = NULL;
+       target_path = (gchar*)cam_app_get_target_path();
+       double ration = 0.0;
+       if (target_path != NULL) {
+               gint64 free_space = cam_get_free_space(target_path);
+               gint64 capacity_space = cam_get_capacity_space(target_path);
+               ration = (double)free_space/(double)capacity_space;
+       }
+       DEBUG_TRACE("ration : %f ", ration);
+       if (ration < 0.20) {
+               /*show left time*/
+               char time_left_text[TIME_FORMAT_MAX_LEN + 1] = { '\0', };
+               guint64 remain_rec_time = 0;
+               remain_rec_time = cam_system_get_remain_rec_time((void*)ad);
+               DEBUG_TRACE("%d",remain_rec_time);
+               if (remain_rec_time < SECONDS_IN_HOUR) {
+                       snprintf(time_left_text, TIME_FORMAT_MAX_LEN, "%" CAM_TIME_FORMAT "", CAM_TIME_ARGS(remain_rec_time));
+                       DEBUG_TRACE("%s",time_left_text);
+               } else {
+                       snprintf(time_left_text, TIME_FORMAT_MAX_LEN, "%" CAM_TIME_FORMAT2 "", CAM_TIME_ARGS2(remain_rec_time));
+                       DEBUG_TRACE("%s",time_left_text);
+               }
+               edje_object_part_text_set(_EDJ(ad->recording_edje), RECORDING_LEFT_TEXT, _(time_left_text));
+
+       } else {
+               edje_object_part_text_set(_EDJ(ad->recording_edje), RECORDING_LEFT_TEXT, _(""));
+       }
+       return ECORE_CALLBACK_RENEW;
+}
+
+int load_recording_edje(struct appdata *ad)
+{
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, EXIT_FAILURE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EXIT_FAILURE, "cam_handle is NULL");
+
+       cam_toolbar_update(ad);
+       DEL_EVAS_OBJECT(ad->recording_edje);
+
+       elm_object_part_content_unset(ad->ug_base, "recording_layout");
+
+       DEBUG_TRACE("ad->target_direction %d", ad->target_direction);
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_INVERSE_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_VERTICAL_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_VERTICAL_INVERSE_EDJ_NAME, "recording_layout");
+               break;
+       default:
+               DEBUG_TRACE("note:reach un-able reached codes");
+       }
+
+       cam_retv_if(ad->recording_edje == NULL, -1);
+       elm_object_part_content_set(ad->ug_base, "recording_layout", ad->recording_edje);
+
+       if (camapp->size_limit != CAM_REC_NORMAL_MAX_SIZE) {
+               char str[10] = "";
+               char str2[10] = "";
+               gdouble size_limit_in_mega = 0.0;
+               camapp->rec_filesize =0;
+
+               if (camapp->size_limit < 1024) {
+                       snprintf(str, sizeof(str), "%dK", camapp->size_limit);
+               } else {
+                       size_limit_in_mega = (gdouble)camapp->size_limit/(gdouble)1024;
+                       snprintf(str, sizeof(str), "%.1fM", size_limit_in_mega);
+               }
+
+               snprintf(str2, sizeof(str), "%dK", 0);
+               cam_app_create_progressbar(ad);
+
+               /* cam_app_set_progressbar_value(ad, 0.0); */
+               elm_object_part_content_set(ad->recording_edje, "progressbar", ad->progressbar);
+               edje_object_part_text_set(_EDJ(ad->recording_edje), "progressbar_text", str);
+               edje_object_part_text_set(_EDJ(ad->recording_edje), "file_size_text", str2);
+       }
+       camapp->rec_elapsed = 0;
+       __recording_set_state(ad, CAM_REC_STATE_RECORDING);
+       recording_set_time(ad, 0, 0, 0);
+       if (ad->rec_time_updater != NULL)
+               ecore_timer_del(ad->rec_time_updater);
+       if (ad->rec_icon_updater != NULL)
+               ecore_timer_del(ad->rec_icon_updater);
+       ad->rec_time_updater = ecore_timer_add(REC_TIMER_INTERVAL, recording_update_time_cb, ad);
+       ad->rec_icon_updater = ecore_timer_add(REC_ICON_TIMER_INTERVAL, recording_update_icon_cb, ad);
+
+       return EXIT_SUCCESS;
+}
+
+int unload_recording_edje(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       cam_app_destroy_progressbar(ad);
+       DEL_EVAS_OBJECT(ad->recording_edje);
+       REMOVE_TIMER(ad->rec_time_updater);
+       REMOVE_TIMER(ad->rec_icon_updater);
+
+       cam_toolbar_update(ad);
+
+       return EXIT_SUCCESS;
+}
+
+int cam_recording_rotate(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, EXIT_FAILURE, "cam_handle is NULL");
+
+       evas_object_hide(ad->indicator_edje);
+       elm_object_part_content_unset(ad->recording_edje, "progressbar");
+       evas_object_hide(ad->progressbar);
+       DEL_EVAS_OBJECT(ad->recording_edje);
+
+       elm_object_part_content_unset(ad->ug_base, "recording_layout");
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_INVERSE_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_VERTICAL_EDJ_NAME, "recording_layout");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->recording_edje = cam_app_load_edj(ad->ug_base, CAM_RECORDING_VERTICAL_INVERSE_EDJ_NAME, "recording_layout");
+               break;
+       default:
+               DEBUG_TRACE("note:reach un-able reached codes");
+       }
+
+       cam_retv_if(ad->recording_edje == NULL, -1);
+       elm_object_part_content_set(ad->ug_base, "recording_layout", ad->recording_edje);
+
+       if (ad->recording_state == CAM_REC_STATE_RECORDING) {
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,rec", "program");
+       } else if (ad->recording_state == CAM_REC_STATE_PAUSE) {
+               edje_object_signal_emit(_EDJ(ad->recording_edje), "state,pause", "program");
+       }
+       char time_text[100] = "";
+       if (camapp->rec_elapsed < 3600)
+               snprintf(time_text, sizeof(time_text), "%" CAM_TIME_FORMAT "",
+                        CAM_TIME_ARGS(camapp->rec_elapsed));
+       else
+               snprintf(time_text, sizeof(time_text), "%" CAM_TIME_FORMAT2 "",
+                        CAM_TIME_ARGS2(camapp->rec_elapsed));
+       cam_debug(LOG_UI, "current time %s", time_text);
+       if (ad->recording_edje) {
+               edje_object_part_text_set(_EDJ(ad->recording_edje), RECORDING_TEXT, _(time_text));
+       }
+       if (ad->progressbar) {
+               char str[10] = "";
+               char str2[10] = "";
+               char *filename = NULL;
+               int fname_size = 0;
+               guint64 size_limit = 0;
+               gdouble pbar_position = 0.0;
+               cam_mm_get_filename(&filename, &fname_size);
+               if (camapp->rec_filesize) {
+                       size_limit = (guint64)camapp->size_limit;
+                       pbar_position =camapp->rec_filesize/ (double)size_limit;
+                       cam_app_set_progressbar_value(ad, pbar_position);
+                       snprintf(str, sizeof(str), "%dK", camapp->size_limit);
+                       snprintf(str2, sizeof(str2), "%dK", camapp->rec_filesize);
+                       elm_object_part_content_set(ad->recording_edje, "progressbar", ad->progressbar);
+                       edje_object_part_text_set(_EDJ(ad->recording_edje), "progressbar_text", str);
+                       edje_object_part_text_set(_EDJ(ad->recording_edje), "progressbar_text", str2);
+               }
+       }
+       return EXIT_SUCCESS;
+}
diff --git a/src/edc-callback/cam_toolbar_edc_callback.c b/src/edc-callback/cam_toolbar_edc_callback.c
new file mode 100755 (executable)
index 0000000..94d585d
--- /dev/null
@@ -0,0 +1,8327 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include <pthread.h>
+/*
+#include "camera_utils.h"
+*/
+#include "cam.h"
+#include "edc_string.h"
+#include "edc_image_name.h"
+#include "cam_ta.h"
+#include "cam_config.h"
+
+#include "cam_toolbar_edc_callback.h"
+#include "cam_common_edc_callback.h"
+#include "cam_indicator_edc_callback.h"
+#include "cam_long_press.h"
+#include "cam_zoom_edc_callback.h"
+#include "cam_ev_edc_callback.h"
+#include "cam_ui_effect_utils.h"
+#include "cam_menu_composer.h"
+#include "cam_device_capacity.h"
+#include "cam_voice_command.h"
+#include "cam_face_detection_focus.h"
+#include "cam_rec.h"
+#include "cam_mm.h"
+
+
+#define SHUTTER_LONG_TAP_TIME 0.5 /*latency time of AF function*/
+#define CAM_SHOTCUTS_NUMS 22
+
+static int setting_gl_x = 0; /*mouse in setting popup coordinate: x*/
+static int setting_gl_y = 0; /*mouse in setting popup coordinate: y*/
+static Elm_Genlist_Item_Class itc;
+static Elm_Genlist_Item_Class sub_itc;
+
+static Evas_Coord shortcuts_canvas_prev_x;
+static Evas_Coord shortcuts_canvas_prev_y;
+static Eina_List *shortcuts_ele_list = NULL;
+static pthread_mutex_t edit_shortcuts_move_mutex = PTHREAD_MUTEX_INITIALIZER;
+static gboolean show_caf_button = FALSE;
+
+#define POPUP_WIDTH 350
+#define WB_POPUP_HEIGHT 478
+#define EFFECT_MODE_POPUP_NORMAL_HEIGHT 382
+#define FOCUS_POPUP_CAM_HEIGHT 309
+#define FLASH_POPUP_CAM_HEIGHT 338
+#define FLASH_POPUP_REC_HEIGHT 338
+#define REC_MODE_POPUP_HEIGHT 309
+#define SHOT_MODE_POPUP_NORMAL_HEIGHT 382
+#define SHOT_MODE_POPUP_EXTERNAL_HEIGHT 309
+#define MORE_POPUP_HEIGHT 500
+#define METERING_POPUP_HIGHT 309
+#define ISO_POPUP_HEIGHT 561
+#define POPUP_HEIGHT 561
+#define RESOLUTION_POPUP_CAM_HEIGHT (561)
+#define RESOLUTION_POPUP_REC_HEIGHT (561)
+#define TIMER_POPUP_CAM_HEIGHT 382
+
+#define SETTING_POPUP_X (114)
+#define SETTING_POPUP_Y (55)
+#define VER_SETTING_POPUP_X SETTING_POPUP_Y
+#define VER_SETTING_POPUP_Y SETTING_POPUP_X
+#define SHORTCUTS_PART_ARRAY_MAX_LEN (16)
+
+#define OPTION_POPUP_X                 107
+#define OPTION_POPUP_Y         613
+#define SHOT_MODE_POPUP        203
+#define EV_POPUP                       340
+#define TIMER_POPUP            472
+
+#define RESOLUTION_POPUP       610
+#define ISO_POPUP                      763
+#define METERING_POPUP         743
+#define WB_POPUP                       900
+#define MORE_POPUP                     1067
+
+#define SETTING_HOR_CTX_POPUP_X        554
+#define SETTING_VER_CTX_POPUP_X        152
+#define SCENE_MODE_POPUP_WIDTH 400
+
+#define SUB_MENU_POPUP_WIDTH 502
+#define SUB_MENU_POPUP_HEIGHT 580
+
+#define SETTING_POPUP_WIDTH 550
+#define SETTING_POPUP_HEIGHT 661
+
+#define SHOT_GUIDE_POPUP_WIDTH 600
+#define SHOT_GUIDE_POPUP_HEIGHT        72
+
+#define EDIT_SHOTCUTS_CONTIAIN_CORRECT_W 10
+#define EDIT_SHOTCUTS_CONTIAIN_CORRECT_H 10
+
+
+static Shortcuts_List_Prop edit_shortcuts_prop_array[CAM_EDIT_SHORTCUTS_INDEX_MAX]
+= {
+               /*row 1*/
+       {CAM_EDIT_SHORTCUTS_INDEX_0, PROP_SHORTCUTS_PART_INDEX_0},
+       {CAM_EDIT_SHORTCUTS_INDEX_1, PROP_SHORTCUTS_PART_INDEX_1},
+       {CAM_EDIT_SHORTCUTS_INDEX_2, PROP_SHORTCUTS_PART_INDEX_2},
+       {CAM_EDIT_SHORTCUTS_INDEX_3, PROP_SHORTCUTS_PART_INDEX_3},
+               /*row 2*/
+       {CAM_EDIT_SHORTCUTS_INDEX_4, PROP_SHORTCUTS_PART_INDEX_4},
+       {CAM_EDIT_SHORTCUTS_INDEX_5, PROP_SHORTCUTS_PART_INDEX_5},
+       {CAM_EDIT_SHORTCUTS_INDEX_6, PROP_SHORTCUTS_PART_INDEX_6},
+       {CAM_EDIT_SHORTCUTS_INDEX_7, PROP_SHORTCUTS_PART_INDEX_7},
+               /*row 3*/
+       {CAM_EDIT_SHORTCUTS_INDEX_8, PROP_SHORTCUTS_PART_INDEX_8},
+       {CAM_EDIT_SHORTCUTS_INDEX_9, PROP_SHORTCUTS_PART_INDEX_9},
+       {CAM_EDIT_SHORTCUTS_INDEX_10, PROP_SHORTCUTS_PART_INDEX_10},
+       {CAM_EDIT_SHORTCUTS_INDEX_11, PROP_SHORTCUTS_PART_INDEX_11},
+               /*row 4*/
+       {CAM_EDIT_SHORTCUTS_INDEX_12, PROP_SHORTCUTS_PART_INDEX_12},
+       {CAM_EDIT_SHORTCUTS_INDEX_13, PROP_SHORTCUTS_PART_INDEX_13},
+       {CAM_EDIT_SHORTCUTS_INDEX_14, PROP_SHORTCUTS_PART_INDEX_14},
+       {CAM_EDIT_SHORTCUTS_INDEX_15, PROP_SHORTCUTS_PART_INDEX_15},
+               /*row 5*/
+       {CAM_EDIT_SHORTCUTS_INDEX_16, PROP_SHORTCUTS_PART_INDEX_16},
+       {CAM_EDIT_SHORTCUTS_INDEX_17, PROP_SHORTCUTS_PART_INDEX_17},
+       {CAM_EDIT_SHORTCUTS_INDEX_18, PROP_SHORTCUTS_PART_INDEX_18},
+       {CAM_EDIT_SHORTCUTS_INDEX_19, PROP_SHORTCUTS_PART_INDEX_19},
+};
+
+static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
+                               char **file_path, char **text, Evas_Object_Event_Cb *func);
+static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon);
+
+void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
+void create_menubar_shortcuts_mouse_event(struct appdata *ad);
+void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
+gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no);
+int toolbar_create_shortcuts_popup(struct appdata *ad);
+
+static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow);
+static void setting_ctxpopup_destroy(struct appdata *ad);
+
+static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y);
+
+static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction,     int *x, int *y);
+static int __get_menubar_no_by_index(struct appdata *ad, int index);
+
+static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj, void *event_info);
+static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info);
+static void __update_menubar_icon_by_index(struct appdata *ad, int index);
+static void __cam_toolbar_edit_shortcuts_data_clean();
+static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y);
+static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y);
+
+static void __toolbar_menu_type_update(Evas_Object *toolbar_icon, int type, void *data, ButtonState state, Evas_Object_Event_Cb *func);
+static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction, int mouse_point, int *x, int *y);
+
+/* Setting list callback*/
+static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting);
+static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info);
+static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info);
+static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* Toolbar functions */
+static void __toolbar_menu_icon_update(struct appdata *ad);
+static int __toolbar_menu_item_create(struct appdata *ad);
+static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state);
+static void __toolbar_menu_item_reset(struct appdata *ad);
+static int __toolbar_shutter_button_create(struct appdata *ad);
+static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state);
+static int __toolbar_recording_button_create(struct appdata *ad);
+static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state);
+static int __toolbar_quickview_item_create(struct appdata *ad);
+static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state);
+static int __toolbar_backbutton_create(struct appdata *ad);
+static void __toolbar_backbutton_destroy(struct appdata *ad);
+static int __toolbar_cafbutton_create(struct appdata *ad);
+static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state);
+static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state);;
+
+static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state);
+static const char* __get_text_name(CAM_MENU_ITEM item);
+
+static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
+static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect);
+static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
+                                                       int swap_rel1_y,
+                                                       int swap_w,
+                                                       int swap_h,
+                                                       int cur_rel1_x,
+                                                       int cur_rel1_y,
+                                                       int cur_w,
+                                                       int cur_h,
+                                                       int correction_w,
+                                                       int correction_h);
+static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
+                                                                       ShortCutData *swap_ele,
+                                                                       ShortCutData *cur_ele);
+
+static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no);
+static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata);
+static void __cam_setting_sub_gl_style_set();
+static int __get_sub_menu_height(int count);
+int cam_toolbar_displaypopup_map_menu_value(int display_popup);
+int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item);
+static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2);
+static void __resort_edit_shortcuts_list_by_part_index(void);
+static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele);
+static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no);
+
+static void __update_setting_popup(void* data);
+static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele);
+static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
+                                                                               int setting_type,
+                                                                               int menubar_no);
+static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no);
+static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
+                                                                       ShortCutData *cur_ele,
+                                                                       ShortCutData *insert_ele);
+
+static void __set_show_state_preview_obj(void *data, gboolean show);
+static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part);
+
+static Eina_Bool __setting_popup_timeout_checker_cb(void *data);
+static gboolean __setting_popup_timeout_checker_start(struct appdata *ad);
+static void __cam_toolbar_display_shortcuts_editmode(void *data);
+
+static void __cam_toolbar_exit_shortcuts_editmode(void *data);
+static void __toolbar_dim_setting_shortcuts(struct appdata *ad);
+
+
+static void cam_popup_warning_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (obj)
+               evas_object_del(obj);
+       obj = NULL;
+}
+
+static void cam_storage_warning_popup()
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       Evas_Object *popup;
+       popup = elm_popup_add(ad->ug_base);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(popup, dgettext(PACKAGE, "IDS_CAM_POP_INSERT_MEMORY_CARD_TO_USE_CAMERA"));
+       elm_popup_timeout_set(popup, 3.0);
+       evas_object_smart_callback_add(popup, "timeout", cam_popup_warning_response_cb, NULL);
+       evas_object_show(popup);
+}
+
+static Eina_Bool __toolbar_check_af_timer(void *data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, 0);
+       CamAppData *camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               if (ad->check_af_timer)
+                       ad->check_af_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if(camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
+               || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
+               || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
+               ad->emit_continuous_shutter = TRUE;
+               cam_mm_stop_focusing();
+               if (!cam_do_capture(ad)) {
+                       cam_warning(LOG_UI, "cam_do_capture failed");
+                       camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
+                       ad->emit_continuous_shutter = FALSE;
+               }
+
+               if (ad->check_af_timer)
+                       ad->check_af_timer = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+static Eina_Bool __toolbar_continuous_shot_timer(void *data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, 0);
+       CamAppData *camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               if (ad->continuous_shot_timer)
+                       ad->continuous_shot_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       DEBUG_TRACE("camapp->burst_shot is %d", camapp->burst_shot);
+       if (camapp->burst_shot) {// burst shot mode 'on'
+               camapp->default_capture_mode = CAM_CAPTURE_BURST;
+               ad->emit_continuous_shutter = TRUE;
+               if (camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
+                       || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
+                       || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
+                       REMOVE_TIMER(ad->continuous_af_timer);
+                       cam_mm_stop_focusing();
+
+                       if (!cam_do_capture(ad)) {
+                               cam_warning(LOG_UI, "cam_do_capture failed");
+                               camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
+                       }
+               } else {
+                       cam_debug(LOG_UI, "Not focused");
+
+                       REMOVE_TIMER(ad->check_af_timer);
+                       ad->check_af_timer = ecore_timer_add(0.2, __toolbar_check_af_timer, ad);
+               }
+       }
+
+       if (ad->continuous_shot_timer)
+               ad->continuous_shot_timer = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+/* start AF after SHUTTER_LONG_TAP_TIME */
+static Eina_Bool __toolbar_shutter_long_tap_af_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, 0);
+       CamAppData *camapp = ad->camapp_handle;
+       if (camapp == NULL) {
+               if (ad->shutter_long_tap_timer)
+                       ad->shutter_long_tap_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if (!camapp->key_lock) {
+               camapp->key_lock = TRUE;
+               camapp->focus_mode = CAM_FOCUS_MODE_HALFSHUTTER;
+               camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
+               if (!cam_camera_key_half_press(ad)) {
+                       cam_warning(LOG_UI, "cam_camera_key_half_press failed");
+               }
+               camapp->key_lock = FALSE;
+       }
+
+       if (ad->shutter_long_tap_timer)
+               ad->shutter_long_tap_timer = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __shutter_button_focus_out_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       if (ad->is_processing) {
+               return;
+       }
+
+       cam_mm_stop_focusing();
+       cam_reset_focus_mode(ad);
+}
+
+void cam_toolbar_shutter_button_cb(void *data, Evas_Object *o,
+                                   const char *emission, const char *source)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_app_timeout_checker_update();
+       if (ad->is_rotating) return;/*note: now is rotating*/
+       CamAppData *camapp = ad->camapp_handle;;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(emission == NULL, "emission is NULL");
+       cam_retm_if(source == NULL, "source is NULL");
+       cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup)
+               toolbar_destroy_shortcuts_popup(ad);
+
+       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+               cam_debug(LOG_UI, "do not capture");
+               return;
+       }
+
+       if (strcmp(emission, "press_shutter_sig") == 0) {
+               if ((camapp->continuous_shot_data && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING )
+                       ){
+                       cam_critical(LOG_SYS, " capture is skipped because of CAM_CONTI_SHOT_STATUS_CAPTURING");
+                       return;
+               }
+
+               ad->emit_continuous_shutter = FALSE;
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       evas_object_event_callback_add(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb, (void *)ad);
+
+                       if (camapp->af_mode == CAM_FOCUS_FACE) { /*note: face focus mode, if start capture,stop draw rect*/
+                               cam_app_stop_video_stream();
+                       }
+                       REMOVE_TIMER(ad->continuous_shot_timer);
+                       camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
+
+                       if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) && (camapp->burst_shot == TRUE)) {
+                               if (strcmp(source, "hard_key") == 0) {
+                                       if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
+                                               ad->continuous_shot_by_hard_key = TRUE;
+                                               __toolbar_continuous_shot_timer(ad);
+                                       } else {
+                                               if (!cam_do_capture(ad))
+                                                       cam_warning(LOG_UI, "cam_do_capture failed");
+                                       }
+                               } else {
+                                       if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
+                                               ad->continuous_shot_by_hard_key = FALSE;
+                                               ad->continuous_shot_timer = ecore_timer_add(0.5, __toolbar_continuous_shot_timer, ad);
+                                       }
+                               }
+
+                               ad->stop_continuous_shot = FALSE;
+                       } else {
+                               if (strcmp(source, "hard_key") == 0) {
+                                       if (!cam_do_capture(ad))
+                                               cam_warning(LOG_UI, "cam_do_capture failed");
+                               } else {
+                                       if (cam_is_enabled_menu((void*)ad, CAM_MENU_FOCUS_MODE)){
+                                               REMOVE_TIMER(ad->continuous_af_timer);
+                                               ad->shutter_long_tap_timer = ecore_timer_add(SHUTTER_LONG_TAP_TIME, __toolbar_shutter_long_tap_af_timer, ad);
+                                       }
+                               }
+                       }
+               } else {
+                       if (strcmp(source, "hard_key") == 0) {
+                               if (!cam_do_capture(ad))
+                                       cam_warning(LOG_UI, "cam_do_capture failed");
+                       }
+               }
+
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
+       } else if (strcmp(emission, "release_shutter_sig") == 0) {
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       evas_object_event_callback_del(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb);
+                       REMOVE_TIMER(ad->shutter_long_tap_timer);
+                       REMOVE_TIMER(ad->continuous_shot_timer);
+                       REMOVE_TIMER(ad->check_af_timer);
+
+                       if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE)
+                               && camapp->burst_shot == TRUE
+                               && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
+                               DEBUG_TRACE("burst capture mode");
+                               if (((strcmp(source, "hard_key") == 0) && (ad->continuous_shot_by_hard_key == FALSE))
+                                               || ((strcmp(source, "toolbar_signal") == 0) && (ad->continuous_shot_by_hard_key == TRUE))) {
+                                       DEBUG_TRACE("ignore this event");
+                                       return;
+                               }
+                               ad->stop_continuous_shot = TRUE;
+                               ad->emit_continuous_shutter = FALSE;
+                               ad->continuous_shot_by_hard_key = FALSE;
+                       }
+               }
+
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
+       } else if ( strcmp(emission, "click_shutter_sig") == 0){
+
+               if (ad->emit_continuous_shutter == TRUE ) {
+                       ad->emit_continuous_shutter = FALSE;
+                       return;
+               }
+
+               if (camapp->default_capture_mode == CAM_CAPTURE_SINGLE) {
+                       if (!cam_do_capture(ad))
+                               cam_warning(LOG_UI, "cam_do_capture failed");
+               }
+       }
+}
+
+void cam_toolbar_recording_button_cb(void *data, Evas_Object *o,
+                                   const char *emission, const char *source)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_app_timeout_checker_update();
+       if (ad->is_rotating) return;/*note: now is rotating*/
+       CamAppData *camapp = ad->camapp_handle;;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(emission == NULL, "emission is NULL");
+       cam_retm_if(source == NULL, "source is NULL");
+       cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup)
+               toolbar_destroy_shortcuts_popup(ad);
+
+       int mm_state = cam_mm_get_state();
+
+       if (strcmp(emission, "press_shutter_sig") == 0) {
+               if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,press", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,press", "prog");
+       } else if (strcmp(emission, "release_shutter_sig") == 0) {
+               if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
+       } else if (strcmp(emission, "click_shutter_sig") == 0) {
+
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       if (mm_state != CAMERA_STATE_PREVIEW) {
+                               cam_critical(LOG_UI, "Cannot start recording in capturing state");
+                               return;
+                       }
+               }
+
+               if (!ad->is_recording) {
+                       // change to camcorder mode
+                       GValue value = {0, };
+                       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                               CAM_GVALUE_SET_INT(value, CAM_CAMCORDER_MODE);
+                               if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
+                                       return;
+                               }
+                       }
+
+                       if (!camapp->key_lock) {
+                               camapp->key_lock = TRUE;
+
+                               if (!cam_do_record(ad))
+                                       cam_warning(LOG_UI, "cam_do_record failed");
+
+                               camapp->key_lock = FALSE;
+                       }
+               } else {
+                       if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING)) {
+                               if (!cam_video_record_pause(ad))
+                                       cam_warning(LOG_UI, "cam_video_record_pause failed");
+
+                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                       } else if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_PAUSED)) {
+                               if (!cam_video_record_resume(ad))
+                                       cam_warning(LOG_UI, "cam_video_record_resume failed");
+
+                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                       }
+               }
+       }
+}
+
+void cam_toolbar_recording_stop_button_cb(void *data, Evas_Object *o,
+                                   const char *emission, const char *source)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_app_timeout_checker_update();
+       if (ad->is_rotating) return;/*note: now is rotating*/
+       CamAppData *camapp = ad->camapp_handle;;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(emission == NULL, "emission is NULL");
+       cam_retm_if(source == NULL, "source is NULL");
+       cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       int state = 0;
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+       HIDE_EVAS_OBJECT(ad->indicator_edje);
+       DEL_EVAS_OBJECT(ad->recording_edje);
+
+       if (strcmp(emission, "press_shutter_sig") == 0) {
+               edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,press", "prog");
+       } else if (strcmp(emission, "release_shutter_sig") == 0) {
+               edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
+       } else if (strcmp(emission, "click_shutter_sig") == 0) {
+               state = cam_mm_get_state();
+
+               if ((state == RECORDER_STATE_RECORDING)
+                               || (state == RECORDER_STATE_PAUSED)) {
+                       camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
+                       if (!cam_video_record_stop(ad))
+                               cam_warning(LOG_UI, "cam_video_record_stop failed");
+               } else {
+                       cam_debug(LOG_UI, "error, not recording or pause state");
+               }
+       }
+}
+
+static void __toolbar_backbutton_cb(void *data, Evas_Object *o,
+                                   const char *emission, const char *source)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       if (ad->is_rotating) return;/*note: now is rotating*/
+       CamAppData *camapp = ad->camapp_handle;;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(emission == NULL, "emission is NULL");
+       cam_retm_if(source == NULL, "source is NULL");
+       cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
+
+       if (ad->timer_activated) {
+               cam_app_cancel_timer(ad);
+               if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                       if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                               if (ad->ug_state != CAM_UG_PAUSE_STATE) {
+                                       GValue value = {0, };
+                                       CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
+                                       if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
+                                               return;
+                                       }
+                               }
+                       }
+               }
+               return;
+       } else {
+               if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
+                       if (ad->is_recording) {
+                               if (!camapp->key_lock) {
+                                       camapp->key_lock = TRUE;
+
+                                       if (!cam_video_record_cancel(ad))
+                                               cam_warning(LOG_UI, "failed");
+
+                                       camapp->key_lock = FALSE;
+                                       return;
+                               }
+                       }
+               }
+
+               if (ad->tip_popup) {
+                       cam_tip_popup_destroy(ad);
+                       return;
+               } else if (ad->toolbar_setting_popup) {
+                       if (ad->setting_ctxpopup) {
+                               setting_ctxpopup_destroy(ad);
+                               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       } else {
+                               cam_toolbar_setting_popup_destroy(ad);
+                       }
+                       return;
+               } else if (ad->setting_ctxpopup) {
+                       setting_ctxpopup_destroy(ad);
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       return;
+               } else if (ad->edit_shortcuts_popup) {
+                       toolbar_destroy_shortcuts_popup(ad);
+                       return;
+               } else if (ad->ev_edje) {
+                       unload_ev_edje(ad);
+                       return;
+               } else if (ad->zoom_edje) {
+                       unload_zoom_edje(ad);
+                       return;
+               }
+       }
+
+       if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
+               cam_app_exit(ad);
+       else
+               elm_win_lower(ug_get_window());
+
+
+       DEBUG_TRACE("END");
+}
+
+static void __toolbar_cafbutton_cb(void *data, Evas_Object *o,
+                                   const char *emission, const char *source)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       cam_retm_if(emission == NULL, "emission is NULL");
+       cam_retm_if(source == NULL, "source is NULL");
+       cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       if (ad->is_rotating)
+               return;
+
+       cam_reset_focus_mode(ad);
+}
+
+static Ecore_Idler *run_image_view_idler = NULL;
+static Eina_Bool __cam_toolbar_run_image_viewer_idler(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, ECORE_CALLBACK_CANCEL);
+
+       if (run_image_view_idler) {
+               ecore_idler_del(run_image_view_idler);
+               run_image_view_idler = NULL;
+       }
+
+       if (ad->ug_is_deleting_process == TRUE)
+               return ECORE_CALLBACK_CANCEL;
+
+       if (!cam_app_run_media_browser(ad, camapp->filename)) {
+               DEBUG_TRACE("cam_app_run_media_browser failed");
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __toolbar_quickview_cb(void *data, Evas_Object *o,
+                                  const char *emission, const char *source)
+{
+       cam_ret_if(data == NULL);
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_app_timeout_checker_update();
+       if (ad->is_rotating) return;/*note: now is rotating*/
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+       cam_ret_if(emission == NULL);
+       cam_ret_if(source == NULL);
+       if (ad->ug_is_deleting_process == TRUE)
+               return;
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup)
+               toolbar_destroy_shortcuts_popup(ad);
+
+       if (ad->imageviewer_ug) {
+               return;
+       }
+       if (emission && source)
+               cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       if (strcmp(emission, "portrait,quickview,release") == 0
+               || strcmp(emission, "landscape,quickview,release") == 0) {
+               pthread_mutex_lock(&ad->file_reg_mutex);
+               cam_debug(LOG_SYS, " lock file_reg_mutex");
+               pthread_mutex_unlock(&ad->file_reg_mutex);
+               run_image_view_idler = ecore_idler_add(__cam_toolbar_run_image_viewer_idler, (void *)ad);
+       }
+}
+
+#if 0 /*block it temporary*/
+static void __shotcus_edit_shotcuts_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_edit_shortcut_popup_cb(data, obj, event_info);
+}
+#endif
+
+static void __shortcuts_burst_shot_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_burst_shot_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_volume_key_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+        DEBUG_TRACE();
+       __setting_volume_key_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_self_portrait_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+        DEBUG_TRACE();
+       __setting_self_portrait_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_setting_flash_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_flash_popup(data, obj, event_info);
+}
+
+static void __shortcuts_shooting_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_shot_mode_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_record_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_record_mode_popup(data, obj, event_info);
+}
+
+static void __shortcuts_scene_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_scenemode_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_exposure_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_ev_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_focus_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_focus_mode_cb(data, obj, event_info);
+}
+
+static void __shortcuts_setting_timer_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_timer_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_effects_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_effects_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_photo_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_photo_resolution_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_video_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_video_resolution_popup_cb(data, obj, event_info);
+
+}
+
+static void __shortcuts_white_banlance_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_wb_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_setting_iso_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_iso_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_setting_metering_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_metering_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_anti_shake_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_anti_shake_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_outdoor_visibility_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_outdoor_visibility_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_auto_contrast_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_autocontrast_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_guideline_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_guideline_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_capture_voice_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_capture_by_voice_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_gps_tag_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_gps_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_storage_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_storage_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_reset_popup_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_restore_defaults_popup_cb(data, obj, event_info);
+}
+
+static void __shortcuts_save_as_flip_cb(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info)
+{
+       DEBUG_TRACE();
+       __setting_save_as_flip_popup_cb(data, obj, event_info);
+}
+
+
+static void __update_menu_bar_shortcuts_state_by_index(struct appdata *ad, int index, ToolbarItemState state)
+{
+       cam_ret_if(ad == NULL);
+       int menubar_no = __get_menubar_no_by_index(ad, index);
+       switch(menubar_no) {
+       case CAM_MENU_BAR_LEFT_0:
+               if (TOOLBAR_ITEM_STATE_NORMAL == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_0_icon,normal", "prog");
+               else if (TOOLBAR_ITEM_STATE_DIM == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_0_icon,dim", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_0_icon,invisible", "prog");
+               break;
+       case CAM_MENU_BAR_LEFT_1:
+               if (TOOLBAR_ITEM_STATE_NORMAL == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,normal", "prog");
+               else if (TOOLBAR_ITEM_STATE_DIM == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,dim", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,invisible", "prog");
+               break;
+       case CAM_MENU_BAR_LEFT_2:
+               if (TOOLBAR_ITEM_STATE_NORMAL == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,normal", "prog");
+               else if (TOOLBAR_ITEM_STATE_DIM == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,dim", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,invisible", "prog");
+               break;
+       case CAM_MENU_BAR_LEFT_3:
+               if (TOOLBAR_ITEM_STATE_NORMAL == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,normal", "prog");
+               else if (TOOLBAR_ITEM_STATE_DIM == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,dim", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,invisible", "prog");
+               break;
+       case CAM_MENU_BAR_LEFT_4:
+               if (TOOLBAR_ITEM_STATE_NORMAL == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,normal", "prog");
+               else if (TOOLBAR_ITEM_STATE_DIM == state)
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,dim", "prog");
+               else
+                       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,invisible", "prog");
+               break;
+       default:
+               DEBUG_TRACE("not in menubar");
+       }
+
+}
+
+static void __toolbar_menu_type_update(Evas_Object *toolbar_icon,
+                                               int type, void *data, ButtonState state, Evas_Object_Event_Cb *func)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+
+       char *icon_name = NULL;
+       char *text = NULL;
+
+       ButtonState button_state = state;
+       ToolbarItemState item_state = TOOLBAR_ITEM_STATE_NORMAL;
+
+       if (!cam_is_enabled_menu(ad, type)) {
+               button_state = BUTTON_STATE_DIM;
+               item_state = TOOLBAR_ITEM_STATE_DIM;
+       }
+
+       __get_toolbar_shortcuts_file_func(ad, type, button_state, &icon_name, &text, func);
+
+       if (icon_name)
+               elm_image_file_set(toolbar_icon, CAM_IMAGE_EDJ_NAME, icon_name);
+       else
+               cam_critical(LOG_UI, "icon_name is NULL");
+
+       __update_menu_bar_shortcuts_state_by_index(ad, type, item_state);
+
+       if (button_state == BUTTON_STATE_DIM)
+               evas_object_color_set(toolbar_icon, 255, 255, 255, 77); /*opacity 30% for dim menu */
+       else
+               evas_object_color_set(toolbar_icon, 255, 255, 255, 255);
+}
+
+static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
+                               char **file_path, char **text, Evas_Object_Event_Cb *func)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+
+       *file_path = NULL;
+       *text = NULL;
+       *func = NULL;
+
+       switch(type) {
+       case CAM_MENU_EMPTY:
+       case CAM_MENU_SHORTCUTS:
+               break;
+       case CAM_MENU_BURST_SHOT_MODE: {
+                       if (camapp->burst_shot) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = BURST_SHOT_MODE_ON_PRESS_ICON;
+                               else
+                                       *file_path = BURST_SHOT_MODE_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = BURST_SHOT_MODE_OFF_PRESS_ICON;
+                               else
+                                       *file_path = BURST_SHOT_MODE_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_burst_shot_popup_cb;
+               }
+               break;
+       case CAM_MENU_VOLUME_KEY: {
+                       *file_path = __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_volume_key_popup_cb;
+               }
+               break;
+       case CAM_MENU_SELF_PORTRAIT: {
+                       if (state == BUTTON_STATE_PRESS)
+                               *file_path = CAMERA_SELF_PORTRAIT_PRESS_ICON;
+                       else
+                               *file_path = CAMERA_SELF_PORTRAIT_NORMAL_ICON;
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_self_portrait_popup_cb;
+               }
+               break;
+       case CAM_MENU_FLASH: {
+                       *file_path = __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_FLASH");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_setting_flash_popup_cb;
+               }
+               break;
+       case CAM_MENU_SHOOTING_MODE: {
+                       *file_path = __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_shooting_mode_popup_cb;
+               }
+               break;
+       case CAM_MENU_RECORDING_MODE: {
+                       *file_path = __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_record_mode_popup_cb;
+               }
+               break;
+       case CAM_MENU_SCENE_MODE: {
+                       *file_path = __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_scene_mode_popup_cb;
+               }
+               break;
+       case CAM_MENU_EXPLOSURE_VALUE: {
+                       *file_path = __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_exposure_popup_cb;
+               }
+               break;
+       case CAM_MENU_FOCUS_MODE: {
+                       *file_path = __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_focus_mode_popup_cb;
+               }
+               break;
+       case CAM_MENU_TIMER: {
+                       *file_path = __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_TIMER");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_setting_timer_popup_cb;
+
+               }
+               break;
+       case CAM_MENU_EFFECTS: {
+                       *file_path = __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_effects_popup_cb;
+               }
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION: {
+                       *file_path = __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_photo_resolution_popup_cb;
+               }
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION: {
+                       *file_path = __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_video_resolution_popup_cb;
+
+               }
+               break;
+       case CAM_MENU_WHITE_BALANCE: {
+                       *file_path = __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_white_banlance_popup_cb;
+               }
+               break;
+       case CAM_MENU_ISO: {
+                       *file_path = __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_ISO");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_setting_iso_popup_cb;
+               }
+               break;
+       case CAM_MENU_METERING: {
+                       *file_path = __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), state);
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_METERING");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_setting_metering_popup_cb;
+               }
+               break;
+       case CAM_MENU_ANTI_SHAKE: {
+                       if (ad->camapp_handle->anti_shake) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = ANTISHAKE_ON_PRESS_ICON;
+                               else
+                                       *file_path = ANTISHAKE_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = ANTISHAKE_OFF_PRESS_ICON;
+                               else
+                                       *file_path = ANTISHAKE_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_anti_shake_popup_cb;
+               }
+               break;
+       case CAM_MENU_OUTDOOR_VISIBILITY: {
+                       if (ad->camapp_handle->outdoor_visibility) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = OUTDOOR_VISIBILITY_ON_PRESS_ICON;
+                               else
+                                       *file_path = OUTDOOR_VISIBILITY_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = OUTDOOR_VISIBILITY_OFF_PRESS_ICON;
+                               else
+                                       *file_path = OUTDOOR_VISIBILITY_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_outdoor_visibility_popup_cb;
+               }
+               break;
+       case CAM_MENU_AUTO_CONTRAST: {
+                       if (ad->camapp_handle->auto_contrast) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = AUTO_CONTRAST_ON_PRESS_ICON;
+                               else
+                                       *file_path = AUTO_CONTRAST_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = AUTO_CONTRAST_OFF_PRESS_ICON;
+                               else
+                                       *file_path = AUTO_CONTRAST_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_auto_contrast_popup_cb;
+               }
+               break;
+       case CAM_MENU_GUIDELINES: {
+                       if (ad->camapp_handle->guideline) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = GUIDELINE_ON_PRESS_ICON;
+                               else
+                                       *file_path = GUIDELINE_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = GUIDELINE_OFF_PRESS_ICON;
+                               else
+                                       *file_path = GUIDELINE_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_guideline_popup_cb;
+               }
+               break;
+       case CAM_MENU_CAPTURE_VOICE: {
+                       if (ad->camapp_handle->capture_by_voice) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = CAPTURE_WITH_VOICE_ON_PRESS_ICON;
+                               else
+                                       *file_path = CAPTURE_WITH_VOICE_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = CAPTURE_WITH_VOICE_OFF_PRESS_ICON;
+                               else
+                                       *file_path = CAPTURE_WITH_VOICE_OFF_NORMAL_ICON;
+                       }
+
+                       *text = "Capture with voice";
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_capture_voice_popup_cb;
+               }
+               break;
+       case CAM_MENU_GPS_TAG: {
+                       if (ad->camapp_handle->gps) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = GPS_ON_PRESS_ICON;
+                               else
+                                       *file_path = GPS_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = GPS_OFF_PRESS_ICON;
+                               else
+                                       *file_path = GPS_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_gps_tag_popup_cb;
+               }
+               break;
+       case CAM_MENU_SAVE_AS_FLIP: {
+                       if (ad->camapp_handle->save_as_flip) {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = SAVE_AS_FLIP_ON_PRESS_ICON;
+                               else
+                                       *file_path = SAVE_AS_FLIP_ON_NORMAL_ICON;
+                       }
+                       else {
+                               if (state == BUTTON_STATE_PRESS)
+                                       *file_path = SAVE_AS_FLIP_OFF_PRESS_ICON;
+                               else
+                                       *file_path = SAVE_AS_FLIP_OFF_NORMAL_ICON;
+                       }
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_save_as_flip_cb;
+               }
+               break;
+       case CAM_MENU_STORAGE: {
+               *file_path = __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), state);
+               *text = dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE");
+
+               if (state != BUTTON_STATE_DIM)
+                       *func = __shortcuts_storage_popup_cb;
+               }
+               break;
+       case CAM_MENU_RESET: {
+                       if (state == BUTTON_STATE_PRESS)
+                               *file_path = RESET_SETTING_PRESS_ICON;
+                       else
+                               *file_path = RESET_SETTING_NORMAL_ICON;
+
+                       *text = dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET");
+
+                       if (state != BUTTON_STATE_DIM)
+                               *func = __shortcuts_reset_popup_cb;
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+static void __toolbar_menu_icon_update(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
+       }
+}
+
+static void __toolbar_menu_item_unswallow(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               char buf[32 + 1] = {'\0', };
+               snprintf(buf, 32, "toolbar_%d_icon", i);
+               elm_object_part_content_unset(ad->toolbar_edje, buf);
+       }
+}
+
+static void __toolbar_menu_item_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       __toolbar_menu_item_unswallow(ad);
+       Evas_Object *icon  = NULL;
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               icon = ad->toolbar_menu_arrays[i].icon;
+               DEL_EVAS_OBJECT(icon);
+               ad->toolbar_menu_arrays[i].icon = NULL;
+       }
+}
+
+static void __toolbar_menu_item_swallow(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       Evas_Object *icon  = NULL;
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               icon = ad->toolbar_menu_arrays[i].icon;
+               char buf[32 + 1] = {'\0', };
+               snprintf(buf, 32, "toolbar_%d_icon", i);
+               elm_object_part_content_set(ad->toolbar_edje, buf, icon);
+       }
+
+}
+
+static int __toolbar_menu_item_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, -1);
+
+       Evas_Object *icon  = NULL;
+       icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
+/* setting icon */
+       if (icon == NULL) {
+               icon = elm_image_add(ad->toolbar_edje);
+               elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
+       }
+       elm_object_part_content_set(ad->toolbar_edje, "toolbar_0_icon", icon);
+       ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon = icon;
+
+/* shortcut icon */
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               icon = ad->toolbar_menu_arrays[i].icon;
+               if (icon == NULL) {
+                       icon = elm_image_add(ad->toolbar_edje);
+               }
+               char buf[32 + 1] = {'\0', };
+               snprintf(buf, 32, "toolbar_%d_icon", i);
+               elm_object_part_content_set(ad->toolbar_edje, buf, icon);
+               ad->toolbar_menu_arrays[i].icon = icon;
+       }
+       return 0;
+}
+
+static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               __update_menu_bar_shortcuts_state_by_index(ad, ad->toolbar_menu_arrays[i].menu_type, state);
+
+               if(state == TOOLBAR_ITEM_STATE_DIM) { //it don't make dimming in edje
+                       Evas_Object *icon = NULL;
+                       int menubar_no = __get_menubar_no_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
+                       cam_retm_if(menubar_no == CAM_MENU_BAR_LEFT_INVALID, "invalid menubar no");
+
+                       icon = ad->toolbar_menu_arrays[menubar_no].icon;
+
+                       if (icon != NULL)
+                               evas_object_color_set(icon, 255, 255, 255, 77); // set opacity 30%
+               }
+       }
+}
+
+static void __toolbar_menu_item_reset(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+
+       __toolbar_menu_item_destroy(ad);
+       __toolbar_menu_item_create(ad);
+
+       ad->toolbar_menu_arrays[1].menu_type = CAM_MENU_EMPTY;
+       ad->toolbar_menu_arrays[2].menu_type = CAM_MENU_EMPTY;
+
+       if (cam_mm_is_support_front_camera() == TRUE)
+               ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_SELF_PORTRAIT;
+       else
+               ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_EMPTY;
+
+#ifdef CAMERA_MACHINE_I686
+       ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_EMPTY;
+#else
+       ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_FLASH;
+#endif
+
+       __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+
+       cam_toolbar_menu_config_update(ad);
+}
+
+static void __toolbar_shutter_button_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "shutter_button");
+}
+
+static void __toolbar_shutter_button_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+
+       if (ad->shutterbtn) {
+               __toolbar_shutter_button_unset(ad);
+               if (ad->shutterbtn_camera_icon) {
+                       elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
+                       DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
+               }
+               DEL_EVAS_OBJECT(ad->shutterbtn)
+       }
+}
+
+static void __toolbar_shutter_button_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->shutterbtn == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "shutter_button", ad->shutterbtn);
+}
+
+static int __toolbar_shutter_button_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       Evas_Object *edje = NULL;
+       if (ad->shutterbtn) {
+               if (ad->shutterbtn_camera_icon) {
+                       elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
+                       DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
+               }
+               DEL_EVAS_OBJECT(ad->shutterbtn)
+       }
+       ad->shutterbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "shutter_button");
+       edje = ad->shutterbtn;
+       cam_retv_if(edje == NULL, -1);
+
+       ad->shutterbtn_camera_icon = elm_image_add(edje);
+       elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
+       elm_object_part_content_set(edje, "camera_icon", ad->shutterbtn_camera_icon);
+
+       edje_object_signal_callback_del(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb);
+       edje_object_signal_callback_add(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb, ad);
+
+       elm_object_part_content_set(ad->toolbar_edje, "shutter_button", edje);
+       evas_object_show(edje);
+       DEBUG_TRACE("END");
+
+       return EXIT_SUCCESS;
+}
+
+void cam_toolbar_update_shutter_button(struct appdata *ad, ToolbarItemState state)
+{
+        __toolbar_shutter_button_update(ad, state);
+}
+
+static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+
+       if (state ==  TOOLBAR_ITEM_STATE_NORMAL) {
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
+               elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
+       } else if (state == TOOLBAR_ITEM_STATE_PRESS) {
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
+               elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
+       } else if (state == TOOLBAR_ITEM_STATE_DIM) {
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,dim", "prog");
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,dim", "prog");
+               elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON_DIM);
+       } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,invisible", "prog");
+               edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,invisible", "prog");
+       } else {
+               DEBUG_TRACE("Invalid state for shutter button");
+       }
+}
+
+static void __toolbar_recording_button_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "recording_button");
+}
+
+static void __toolbar_recording_button_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+
+       __toolbar_recording_button_unset(ad);
+       DEL_EVAS_OBJECT(ad->recordingbtn);
+}
+
+static void __toolbar_recording_button_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->recordingbtn == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "recording_button", ad->recordingbtn);
+}
+
+static int __toolbar_recording_button_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       Evas_Object *edje = NULL;
+       DEL_EVAS_OBJECT(ad->recordingbtn);
+       ad->recordingbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_button");
+       edje = ad->recordingbtn;
+       cam_retv_if(edje == NULL, -1);
+
+       edje_object_signal_callback_del(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb);
+       edje_object_signal_callback_add(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb, ad);
+       elm_object_part_content_set(ad->toolbar_edje, "recording_button", edje);
+       evas_object_show(edje);
+       DEBUG_TRACE("END");
+
+       return EXIT_SUCCESS;
+}
+
+static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_ret_if(ad == NULL);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+       cam_ret_if(ad->recordingbtn == NULL);
+
+       int recording_state = 0;
+
+       if (state ==  TOOLBAR_ITEM_STATE_NORMAL) {
+               recording_state = cam_mm_get_state();
+
+               if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (recording_state == RECORDER_STATE_RECORDING)) {
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
+               } else {
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
+                       edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,invisible", "prog");
+               }
+
+       } else if (state == TOOLBAR_ITEM_STATE_DIM) {
+               edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,dim", "prog");
+       } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
+               edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
+       } else {
+               DEBUG_TRACE("Invalid state for recording button");
+       }
+}
+
+static void __toolbar_recording_stop_button_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "recording_stop_button");
+}
+
+static void __toolbar_recording_stop_button_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+
+       __toolbar_recording_stop_button_unset(ad);
+       DEL_EVAS_OBJECT(ad->recording_stop_btn);
+}
+
+static void __toolbar_recording_stop_button_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->recording_stop_btn == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", ad->recording_stop_btn);
+}
+
+static int __toolbar_recording_stop_button_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       Evas_Object *edje = NULL;
+       DEL_EVAS_OBJECT(ad->recording_stop_btn);
+       ad->recording_stop_btn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_stop_button");
+       edje = ad->recording_stop_btn;
+       cam_retv_if(edje == NULL, -1);
+
+       edje_object_signal_callback_del(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb);
+       edje_object_signal_callback_add(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb, ad);
+       elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", edje);
+       edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
+       evas_object_show(edje);
+       DEBUG_TRACE("END");
+
+       return EXIT_SUCCESS;
+}
+
+static void __toolbar_quickview_item_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "quickview_item");
+}
+
+static void __toolbar_quickview_item_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+
+       __toolbar_quickview_item_unset(ad);
+       DEL_EVAS_OBJECT(ad->toolbar.quickview_item.edje);
+}
+
+static void __toolbar_quickview_item_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->toolbar.quickview_item.edje == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "quickview_item", ad->toolbar.quickview_item.edje);
+}
+
+static int __toolbar_quickview_item_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       Evas_Object *edje = NULL;
+
+       if (ad->toolbar.quickview_item.edje == NULL) {
+               ad->toolbar.quickview_item.edje =
+                   cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_quickview_item");
+               edje_object_signal_callback_del(_EDJ(ad->toolbar.quickview_item.edje),
+                                               "*", "toolbar_signal", __toolbar_quickview_cb);
+               edje_object_signal_callback_add(_EDJ(ad->toolbar.quickview_item.edje),
+                                               "*", "toolbar_signal", __toolbar_quickview_cb, ad);
+       }
+       edje = ad->toolbar.quickview_item.edje;
+
+       cam_retv_if(edje == NULL, -1);
+       elm_object_part_content_set(ad->toolbar_edje, "quickview_item", edje);
+       evas_object_show(edje);
+
+       return EXIT_SUCCESS;
+}
+
+static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_ret_if(ad == NULL);
+
+       Evas_Object *edje = NULL;
+       edje = ad->toolbar.quickview_item.edje;
+
+       if (state ==  TOOLBAR_ITEM_STATE_NORMAL) {
+               edje_object_signal_emit(_EDJ(edje), "SET_DEFAULT", "prog");
+       } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
+               edje_object_signal_emit(_EDJ(edje), "SET_INVISIBLE", "prog");
+       } else {
+               DEBUG_TRACE("Invalid state for quickview button");
+       }
+}
+
+static int __toolbar_backbutton_create(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+       cam_retv_if(ad == NULL, -1);
+       Evas_Object *edje = NULL;
+       if (ad->backbtn == NULL) {
+               ad->backbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_backbutton_item");
+               edje_object_signal_callback_del(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb);
+               edje_object_signal_callback_add(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb, ad);
+       }
+       edje = ad->backbtn;
+
+       cam_retv_if(edje == NULL, -1);
+       elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", edje);
+       evas_object_show(edje);
+
+       return EXIT_SUCCESS;
+}
+
+static void __toolbar_backbutton_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "backbutton_item");
+}
+
+static void __toolbar_backbutton_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+
+       __toolbar_backbutton_unset(ad);
+       DEL_EVAS_OBJECT(ad->backbtn);
+}
+
+static void __toolbar_backbutton_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->backbtn == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", ad->backbtn);
+}
+
+
+static void __toolbar_cafbutton_unset(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+
+       elm_object_part_content_unset(ad->toolbar_edje, "cafbutton_item");
+}
+
+static void __toolbar_cafbutton_destroy(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       __toolbar_cafbutton_unset(ad);
+       DEL_EVAS_OBJECT(ad->caf_button);
+}
+
+static void __toolbar_cafbutton_set(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(ad->toolbar_edje == NULL);
+       cam_ret_if(ad->caf_button == NULL);
+
+       elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
+}
+
+static int __toolbar_cafbutton_create(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+       cam_retvm_if(ad == NULL, -1, "appdata is null");
+       if (ad->caf_button == NULL) {
+               ad->caf_button = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_cafbutton_item");
+       }
+       cam_retvm_if(ad->caf_button == NULL, -1, "ad->caf_button is null");
+
+       edje_object_signal_callback_del(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb);
+       edje_object_signal_callback_add(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb, ad);
+
+       elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
+       evas_object_show(ad->caf_button);
+
+       return EXIT_SUCCESS;
+}
+
+static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+       cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
+
+       if (state ==  TOOLBAR_ITEM_STATE_NORMAL) {
+               show_caf_button = TRUE;
+               edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,normal", "prog");
+       } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
+               show_caf_button = FALSE;
+               edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,invisible", "prog");
+       } else {
+               show_caf_button = FALSE;
+               DEBUG_TRACE("Invalid state for caf_button");
+       }
+}
+
+static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+       cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
+
+       if (state ==  TOOLBAR_ITEM_STATE_NORMAL) {
+               edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,show", "prog");
+       } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
+               edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,hide", "prog");
+       } else {
+               DEBUG_TRACE("Invalid state for caf_button");
+       }
+}
+
+#define SETTING_SHORTCUTS_HOLD_TIME (0.5)
+static Ecore_Timer *edit_shortcuts_timer = NULL;
+static Eina_Bool __toolbar_show_edit_shortcuts_timer_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
+       if (edit_shortcuts_timer) {
+               edit_shortcuts_timer = NULL;
+       }
+       toolbar_create_shortcuts_popup(ad);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __toolbar_create_show_edit_shortcuts_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       if (edit_shortcuts_timer) {
+               ecore_timer_del(edit_shortcuts_timer);
+               edit_shortcuts_timer = NULL;
+       }
+       edit_shortcuts_timer = ecore_timer_add(SETTING_SHORTCUTS_HOLD_TIME,
+                                               __toolbar_show_edit_shortcuts_timer_cb,
+                                               ad);
+}
+
+static void __toolbar_destroy_show_edit_shortcuts_timer(void)
+{
+       if (edit_shortcuts_timer) {
+               ecore_timer_del(edit_shortcuts_timer);
+               edit_shortcuts_timer = NULL;
+       }
+}
+
+static void __toolbar_edje_signal_cb(void *data, Evas_Object *o,
+                                    const char *emission, const char *source)
+{
+       DEBUG_TRACE("_________________################____________________\n");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       cam_app_timeout_checker_update();
+       DEBUG_TRACE("ad->is_rotating = %d", ad->is_rotating);
+       if (ad->is_rotating == TRUE) {
+               DEBUG_TRACE("now in rotating target, do not accept signal");
+               return;
+       }
+       CamAppData *camapp = ad->camapp_handle;
+       cam_ret_if(camapp == NULL);
+       cam_ret_if(emission == NULL);
+       cam_ret_if(source == NULL);
+
+       if (ad->zoom_edje)
+               unload_zoom_edje(ad);
+
+       if (ad->ev_edje)
+               unload_ev_edje(ad);
+
+       if (ad->tip_popup)
+               cam_tip_popup_destroy(ad);
+
+       if (ad->edit_shortcuts_popup) {
+               elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
+               return;
+       }
+
+       if(ad->battery_status == LOW_BATTERY_CRITICAL_STATUS)
+               return;
+
+       if (emission && source)
+               cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
+
+       Evas_Object_Event_Cb func = NULL;
+
+       if (strcmp(emission, "toolbar_0_press_sig") == 0) {
+               elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_PRESS_ICON);
+               __toolbar_create_show_edit_shortcuts_timer(ad);
+       } else if (strcmp(emission, "toolbar_0_release_sig") == 0) {
+               elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
+               __toolbar_destroy_show_edit_shortcuts_timer();
+       } else if (strcmp(emission, "toolbar_0_click_sig") == 0) {
+               if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
+                       return;
+               if (ad->toolbar_setting_popup) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+                       return;
+               }
+               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+               cam_toolbar_setting_popup_create(ad);
+               elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
+       } else if (strcmp(emission, "toolbar_1_press_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
+               __toolbar_create_show_edit_shortcuts_timer(ad);
+       } else if (strcmp(emission, "toolbar_1_release_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               __toolbar_destroy_show_edit_shortcuts_timer();
+       } else if (strcmp(emission, "toolbar_1_click_sig") == 0) {
+               if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
+                       return;
+               int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
+               int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
+               if (menu_bar_no == CAM_MENU_BAR_LEFT_1) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+                       return;
+               }
+               if (ad->toolbar_setting_popup) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+               }
+
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               if (func) {
+                       (*func)((void *)ad, NULL, o, NULL);
+               }
+       } else if (strcmp(emission, "toolbar_2_press_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
+               __toolbar_create_show_edit_shortcuts_timer(ad);
+       } else if (strcmp(emission, "toolbar_2_release_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               __toolbar_destroy_show_edit_shortcuts_timer();
+       } else if (strcmp(emission, "toolbar_2_click_sig") == 0) {
+               if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
+                       return;
+               int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
+               int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
+               if (menu_bar_no == CAM_MENU_BAR_LEFT_2) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+                       return;
+               }
+               if (ad->toolbar_setting_popup) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+               }
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               if (func) {
+                       (*func)((void *)ad, NULL, o, NULL);
+               }
+       } else if (strcmp(emission, "toolbar_3_press_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
+               __toolbar_create_show_edit_shortcuts_timer(ad);
+       } else if (strcmp(emission, "toolbar_3_release_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               __toolbar_destroy_show_edit_shortcuts_timer();
+       } else if (strcmp(emission, "toolbar_3_click_sig") == 0) {
+               if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
+                       return;
+               int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
+               int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
+               if (menu_bar_no == CAM_MENU_BAR_LEFT_3) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+                       return;
+               }
+               if (ad->toolbar_setting_popup) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+               }
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               if (func) {
+                       (*func)((void *)ad, NULL, o, NULL);
+               }
+       } else if (strcmp(emission, "toolbar_4_press_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
+               __toolbar_create_show_edit_shortcuts_timer(ad);
+       } else if (strcmp(emission, "toolbar_4_release_sig") == 0) {
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               __toolbar_destroy_show_edit_shortcuts_timer();
+       } else if (strcmp(emission, "toolbar_4_click_sig") == 0) {
+               if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
+                       return;
+               int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
+               int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
+               if (menu_bar_no == CAM_MENU_BAR_LEFT_4) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+                       return;
+               }
+               if (ad->toolbar_setting_popup) {
+                       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                       cam_toolbar_setting_popup_destroy(ad);
+               }
+               Evas_Object *icon = NULL;
+               int type = -1;
+               icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
+               type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
+               __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
+               if (func) {
+                       (*func)((void *)ad, NULL, o, NULL);
+               }
+       } else {
+               DEBUG_TRACE("invalid signal");
+       }
+}
+
+int cam_toolbar_create(struct appdata *ad)
+{
+
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_retv_if(cam_handle == NULL, -1);
+
+       elm_object_part_content_unset(ad->ug_base, "toolbar_layout");
+
+/*note: create layout*/
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               if (ad->toolbar_edje_landscape == NULL) {
+                       ad->toolbar_edje_landscape = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
+                       cam_retv_if(ad->toolbar_edje_landscape == NULL, -1);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_landscape;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               if (ad->toolbar_edje_landscape_inverse == NULL) {
+                       ad->toolbar_edje_landscape_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
+                       cam_retv_if(ad->toolbar_edje_landscape_inverse == NULL, -1);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               if (ad->toolbar_edje_portrait == NULL) {
+                       ad->toolbar_edje_portrait = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
+                       cam_retv_if(ad->toolbar_edje_portrait == NULL, -1);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_portrait;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               if (ad->toolbar_edje_portrait_inverse == NULL) {
+                       ad->toolbar_edje_portrait_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
+                       cam_retv_if(ad->toolbar_edje_portrait_inverse == NULL, -1);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
+               break;
+       default:
+               DEBUG_TRACE("note: run into un-reached codes");
+       }
+       cam_retv_if(ad->toolbar_edje == NULL, -1);
+
+       elm_object_part_content_set(ad->ug_base, "toolbar_layout", ad->toolbar_edje);
+
+       __toolbar_menu_item_create(ad);
+
+       elm_object_signal_callback_del(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb);
+       elm_object_signal_callback_add(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb, ad);
+
+       __toolbar_shutter_button_create(ad);
+       __toolbar_recording_button_create(ad);
+
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL)
+               __toolbar_quickview_item_create(ad);
+
+       __toolbar_backbutton_create(ad);
+       __toolbar_cafbutton_create(ad);
+
+       cam_toolbar_update(ad);
+
+       return EXIT_SUCCESS;
+}
+
+void cam_toolbar_content_destroy(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       __toolbar_menu_item_destroy(ad);
+       __toolbar_shutter_button_destroy(ad);
+       __toolbar_recording_button_destroy(ad);
+       __toolbar_recording_stop_button_destroy(ad);
+       __toolbar_quickview_item_destroy(ad);
+       __toolbar_backbutton_destroy(ad);
+       __toolbar_cafbutton_destroy(ad);
+}
+
+void cam_toolbar_destroy(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_toolbar_content_destroy(ad);
+       /*NOTE: all sub obj of toolbar will be deleted auto while toolar is deleted*/
+       edje_object_signal_callback_del(_EDJ(ad->toolbar_edje), "*", "toolbar_signal", __toolbar_edje_signal_cb);
+       DEL_EVAS_OBJECT(ad->toolbar_edje_landscape);
+       DEL_EVAS_OBJECT(ad->toolbar_edje_landscape_inverse);
+       DEL_EVAS_OBJECT(ad->toolbar_edje_portrait);
+       DEL_EVAS_OBJECT(ad->toolbar_edje_portrait_inverse);
+
+       ad->toolbar_edje = NULL;
+
+       REMOVE_TIMER(ad->setting_toolbar_hide_timer);
+
+       /*elm_all_flush();*/
+       cam_elm_cache_flush();
+}
+
+void cam_toolbar_update(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+       CamShotMode shotmode = camapp->shooting_mode;
+
+       __toolbar_menu_icon_update(ad);
+
+       if (ad->timer_activated) {
+               __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                       __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+               } else {
+                       __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+                       __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+               }
+
+               if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                       __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+               }
+       } else {
+               if (camapp->camera_mode == CAM_CAMERA_MODE) {
+                       switch (shotmode) {
+                       case CAM_SINGLE_MODE:
+                       case CAM_SELF_SINGLE_MODE:
+                               __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+
+                               if((ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) && (ad->exe_args->allow_switch == FALSE)){
+                                       __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                                       __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                                       __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+                               } else {
+                                       if (cam_is_enabled_menu(ad, CAM_MENU_BURST_SHOT_MODE)
+                                                       && camapp->continuous_shot_data
+                                                       && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING) {
+                                               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_DIM);
+                                               __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_PRESS);
+                                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+                                       } else {
+                                               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                                               __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                                       }
+                               }
+                               __toolbar_recording_stop_button_destroy(ad);
+
+                               if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                                       __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               }
+
+                               break;
+                       default:
+                               __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_recording_stop_button_destroy(ad);
+                               __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               break;
+                       }
+
+                       __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+               } else {
+                       if (ad->is_recording) {
+                               __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+                               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+
+                               __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+
+                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_recording_stop_button_create(ad);
+
+                               if (show_caf_button)
+                                       __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+
+                               if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                                       __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+                               }
+                       } else {
+                               __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+
+                               if((ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) && (ad->exe_args->allow_switch == FALSE)){
+                                       __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
+                               } else {
+                                       __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               }
+
+                               __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               __toolbar_recording_stop_button_destroy(ad);
+
+                               __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+
+                               if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
+                                       __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+                               }
+                       }
+               }
+       }
+}
+
+int cam_toolbar_rotate(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_retv_if(cam_handle == NULL, -1);
+       cam_toolbar_setting_popup_destroy(ad);
+       cam_toolbar_destroy(ad);
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               if (ad->toolbar_edje_landscape == NULL) {
+                       cam_toolbar_create(ad);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_landscape;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               if (ad->toolbar_edje_landscape_inverse == NULL) {
+                       cam_toolbar_create(ad);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               if (ad->toolbar_edje_portrait == NULL) {
+                       cam_toolbar_create(ad);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_portrait;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               if (ad->toolbar_edje_portrait_inverse == NULL) {
+                       cam_toolbar_create(ad);
+               }
+               ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
+               break;
+       default:
+               DEBUG_TRACE("note: run into un-reached codes");
+       }
+
+       evas_object_show(ad->toolbar_edje);
+
+       return EXIT_SUCCESS;
+}
+
+int show_toolbar_edje(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       if (ad->toolbar_edje == NULL) {
+               return -1;
+       }
+       if (!ad->toolbar_hided) {
+               cam_toolbar_update(ad);
+               evas_object_show(ad->toolbar_edje);
+       } else {
+               hide_toolbar_edje(ad);
+       }
+
+       return EXIT_SUCCESS;
+}
+
+int hide_toolbar_edje(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       evas_object_hide(ad->toolbar_edje);
+       return EXIT_SUCCESS;
+}
+
+gboolean toolbar_update_quickview_thumbnail_no_animation(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+       DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);
+       DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
+
+       if (camapp->thumbnail_name != NULL) {
+               ad->toolbar.quickview_item.thumbnail_image = elm_bg_add(ad->toolbar.quickview_item.edje);
+               cam_retv_if(ad->toolbar.quickview_item.thumbnail_image == NULL, FALSE);
+               elm_bg_file_set(ad->toolbar.quickview_item.thumbnail_image, camapp->thumbnail_name, NULL);
+
+               Evas_Object *layout = elm_layout_edje_get(ad->toolbar.quickview_item.edje);
+               Evas_Object *thumbnail_area = (Evas_Object *) edje_object_part_object_get(layout, "thumbnail_area");
+               cam_retv_if(thumbnail_area == NULL, FALSE);
+               Evas_Coord x = 0, y = 0, w = 0, h = 0;
+               evas_object_geometry_get(thumbnail_area, &x, &y, &w, &h);
+               evas_object_resize(ad->toolbar.quickview_item.thumbnail_image, w, h);
+               DEBUG_TRACE("%d %d %d %d", x, y, w, h);
+
+               if (ad->toolbar.quickview_item.edje) {
+                       elm_object_part_content_set(ad->toolbar.quickview_item.edje,
+                                                       "thumbnail", ad->toolbar.quickview_item.thumbnail_image);
+                       evas_object_show(ad->toolbar.quickview_item.edje);
+               }
+
+               return TRUE;
+       }
+       return FALSE;
+}
+
+gboolean toolbar_update_quickview_thumbnail(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, FALSE);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, FALSE);
+       cam_retv_if(ad->evas == NULL, FALSE);
+
+       cam_retv_if(ad->toolbar.quickview_item.edje == NULL, FALSE);
+       DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
+
+       cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL);
+
+       return TRUE;
+}
+
+static void setting_ctxpopup_destroy(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->sub_menu_group);
+
+       if (ad->sub_genlist != NULL) {
+               elm_genlist_clear(ad->sub_genlist);
+               evas_object_del(ad->sub_genlist);
+               ad->sub_genlist = NULL;
+       }
+
+       DEL_EVAS_OBJECT(ad->setting_ctxpopup);
+       ad->ctxpopup_area = NULL;
+       ad->sub_menu_type = CAM_MENU_EMPTY;
+
+       if (ad->toolbar_setting_popup == NULL)
+               __set_show_state_preview_obj(ad, TRUE);
+}
+
+static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow)
+{
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       if (ad->setting_ctxpopup)
+               setting_ctxpopup_destroy(ad);
+
+       if (ad->toolbar_edje == NULL)
+               DEBUG_TRACE("error occur");
+
+       __set_show_state_preview_obj(ad, FALSE);
+
+       ad->ctxpopup_area = (Evas_Object *)
+                   edje_object_part_object_get(elm_layout_edje_get
+                                               (ad->toolbar_edje), "popup_area");
+       ad->setting_ctxpopup = elm_ctxpopup_add(ad->ctxpopup_area);
+       elm_object_scroll_hold_push(ad->setting_ctxpopup);
+       if (!bNoArrow)
+               elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera");
+       else
+               elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera_no_arrow");
+       /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
+       return EXIT_SUCCESS;
+}
+
+static int setting_toolbar_popup_create(struct appdata *ad)
+{
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       if (ad->setting_ctxpopup)
+               setting_ctxpopup_destroy(ad);
+
+       if (ad->toolbar_edje == NULL)
+               DEBUG_TRACE("error occur");
+
+       ad->toolbar_setting_popup_area = (Evas_Object *)
+                   edje_object_part_object_get(elm_layout_edje_get
+                                               (ad->toolbar_edje), "setting_popup");
+       ad->toolbar_setting_popup = elm_ctxpopup_add(ad->toolbar_setting_popup_area);
+       elm_object_scroll_hold_push(ad->toolbar_setting_popup);
+       elm_object_style_set(ad->toolbar_setting_popup, "beat_winset_test/camera");
+       /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
+       return EXIT_SUCCESS;
+}
+
+static int setting_shortcuts_popup_create(struct appdata *ad)
+{
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       if (ad->setting_ctxpopup)
+               setting_ctxpopup_destroy(ad);
+
+       if (ad->toolbar_edje == NULL)
+               DEBUG_TRACE("error occur");
+
+       ad->edit_shortcuts_popup = (Evas_Object *)
+                   edje_object_part_object_get(elm_layout_edje_get
+                                               (ad->toolbar_edje), "shortcuts_popup");
+
+       DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
+       ad->edit_shortcuts_popup_description =
+               cam_app_load_edj(ad->toolbar_edje, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME,
+                                    "camera/shortcuts/layout/description");
+
+       /*TODO: need id: IDS_CAM_POP_TAP_AND_HOLD_AN_ICON_AND_MOVE_TO_EDIT_SHORTCUTS*/
+       edje_object_part_text_set(_EDJ(ad->edit_shortcuts_popup_description), "description.txtblock", dgettext(PACKAGE, "IDS_CAM_BODY_TAP_AND_HOLD_THE_ICON_THEN_DRAG_IT_TO_EDIT_THE_POSITION_OF_THE_SHORTCUT"));
+       elm_object_scroll_hold_push(ad->edit_shortcuts_popup);
+       return EXIT_SUCCESS;
+}
+
+int cam_guideline_create(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       cam_retv_if(ad->camapp_handle == NULL, -1);
+
+       DEL_EVAS_OBJECT(ad->guideline_edje);
+       elm_object_part_content_unset(ad->ug_base, "guideline_layout");
+
+       if (ad->guideline_edje == NULL) {
+               ad->guideline_edje = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, "guideline");
+       }
+
+       cam_retv_if(ad->guideline_edje == NULL, -1);
+       elm_object_part_content_set(ad->ug_base, "guideline_layout", ad->guideline_edje);
+
+       gboolean wide_mode = FALSE;
+       gint ret = 0;
+
+       gint p_width = 0;
+       gint p_height =0;
+       ret = cam_mm_get_video_size(&p_width, &p_height);
+
+       if (!ret) {
+               DEBUG_TRACE("Middle Ware error occur!");
+               return -1;
+       }
+
+       DEBUG_TRACE("p_width == %d ,p_height = %d" ,p_width , p_height);
+       if (ad->camapp_handle->camera_mode == CAM_CAMERA_MODE) {
+               wide_mode = cam_utils_check_wide_resolution(p_width, p_height);
+       } else if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE) {
+               if ( p_width > PREVIEW_W ) {
+                       wide_mode = TRUE;
+               } else {
+                       wide_mode = FALSE;
+               }
+       }
+
+       if (p_width == 1392 && p_height == 1392) {
+               switch (ad->target_direction) {
+               case CAM_TARGET_DIRECTION_LANDSCAPE:
+               case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+                       DEBUG_TRACE("landscape");
+                       edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,1,2,normal", "prog_guideline");
+                       edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,3,4,square", "prog_guideline");
+                       break;
+               case CAM_TARGET_DIRECTION_PORTRAIT:
+               case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+                       DEBUG_TRACE("portrait");
+                       edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,1,2,vertical,square", "prog_guideline");
+                       edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,3,4,vertical,normal", "prog_guideline");
+                       break;
+               }
+       } else {
+               if (wide_mode) {
+                       DEBUG_TRACE("hor,wide_mode");
+                       switch (ad->target_direction) {
+                       case CAM_TARGET_DIRECTION_LANDSCAPE:
+                       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+                               DEBUG_TRACE("landscape");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                               "guide_line,1,2,normal", "prog_guideline");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                               "guide_line,3,4,wide", "prog_guideline");
+                               break;
+                       case CAM_TARGET_DIRECTION_PORTRAIT:
+                       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+                               DEBUG_TRACE("portrait");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,1,2,vertical,wide", "prog_guideline");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,3,4,vertical,normal", "prog_guideline");
+                               break;
+                       }
+
+               } else {
+                       DEBUG_TRACE("hor,normal mode");
+                       switch (ad->target_direction) {
+                       case CAM_TARGET_DIRECTION_LANDSCAPE:
+                       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+                               DEBUG_TRACE("landscape");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                               "guide_line,1,2,normal", "prog_guideline");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                               "guide_line,3,4,normal", "prog_guideline");
+                               break;
+                       case CAM_TARGET_DIRECTION_PORTRAIT:
+                       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+                               DEBUG_TRACE("portrait");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,1,2,vertical,normal", "prog_guideline");
+                               edje_object_signal_emit(_EDJ(ad->guideline_edje),
+                                                       "guide_line,3,4,vertical,normal", "prog_guideline");
+                               break;
+                       }
+
+               }
+       }
+       /*evas_object_lower(ad->guideline_edje);*/
+       evas_object_show(ad->guideline_edje);
+
+       DEBUG_TRACE("over");
+       return 0;
+}
+
+static void __volume_key_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       GValue value = {0};
+
+       switch((int)data) {
+               case CAM_MENU_VOLUME_KEY_ZOOM:
+                       {
+                               CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_ZOOM);
+                               cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
+                       }
+                       break;
+               case CAM_MENU_VOLUME_KEY_SHUTTER:
+                       {
+                               CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_SHUTTER);
+                               cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
+                       }
+                       break;
+               default:
+                       break;
+       }
+
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_VOLUME_KEY);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __storage_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int mmc_state = -1;
+       GValue value = {0};
+
+       switch((int)data) {
+               case CAM_MENU_STORAGE_PHONE:
+                       {
+                               CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
+                               cam_handle_value_set(ad, PROP_STORAGE, &value);
+                       }
+                       break;
+               case CAM_MENU_STORAGE_MMC:
+                       {
+                               if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
+                                       if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
+                                               GValue value = {
+                                                       0
+                                               };
+                                               CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
+                                               cam_handle_value_set(ad, PROP_STORAGE, &value);
+                                               cam_info(LOG_UI, "MMC card is removed");
+                                               cam_storage_warning_popup();
+                                       } else {
+                                               CAM_GVALUE_SET_INT(value, CAM_STORAGE_EXTERNAL);
+                                               cam_handle_value_set(ad, PROP_STORAGE, &value);
+                                       }
+                               }
+                       }
+                       break;
+               default:
+                       break;
+       }
+
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_STORAGE);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int wb = cam_convert_menu_item_to_mmfw_value((int)data);
+
+       /* set wb value */
+       if (ad->camapp_handle->white_balance != wb) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, wb);
+               cam_handle_value_set(ad, PROP_WB, &value);
+       }
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_WHITE_BALANCE);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int iso = cam_convert_menu_item_to_mmfw_value((int)data);
+
+       /* set iso value */
+       if (ad->camapp_handle->iso != iso) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, iso);
+               cam_handle_value_set(ad, PROP_ISO, &value);
+       }
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_ISO);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+static void __metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int metering = cam_convert_menu_item_to_mmfw_value((int)data);
+
+       /* set metering value */
+       if (ad->camapp_handle->auto_exposure != metering) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, metering);
+               cam_handle_value_set(ad, PROP_METERING, &value);
+       }
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_METERING);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int index = (int)data - CAM_MENU_TIMER_OFF;
+       DEBUG_TRACE("index : [%d]", index);
+       cam_ret_if(index < 0 || index >= CAM_SETTINGS_TIMER_NUMS);
+
+       /* set timer value */
+       if (ad->camapp_handle->timer != index) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, index);
+               cam_handle_value_set(ad, PROP_TIMER, &value);/*set ad->camapp_handle->timer*/
+               evas_object_show(ad->toolbar_setting_popup);
+               if (ad->setting_select_item)
+                       elm_genlist_item_update(ad->setting_select_item);
+               __update_menubar_icon_by_index(ad, CAM_MENU_TIMER);
+       }
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __reset_settings_launch(void)
+{
+       GValue i_value = { 0, };
+       GValue b_value = { 0, };
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       CamAppData *camapp = NULL;
+
+       cam_debug(LOG_CAM, "!!!!!!!!!cam_app_reset_settings_launch_cb");
+
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, " cam_handle is NULL");
+
+       g_value_init(&i_value, G_TYPE_INT);
+       g_value_init(&b_value, G_TYPE_BOOLEAN);
+
+       camapp->device_type = CAM_DEVICE_MEGA;
+
+       /* Shot mode */
+       g_value_set_int(&i_value, SHOTMODE_DEFAULT);
+       cam_handle_value_set(ad, PROP_SHOT_MODE, &i_value);
+
+       /* Rec mode */
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+                       && ad->exe_args->size_limit > 0) {
+               g_value_set_int(&i_value, CAM_RECORD_MMS);
+       } else {
+               g_value_set_int(&i_value, RECMODE_DEFAULT);
+       }
+       cam_handle_value_set(ad, PROP_REC_MODE, &i_value);
+
+       /* Scene */
+       g_value_set_int(&i_value, PG_MODE_DEFAULT);
+       cam_handle_value_set(ad, PROP_SCENE_MODE, &i_value);
+
+       /* auto focus */
+       g_value_set_int(&i_value, AF_DEFAULT);
+       cam_handle_value_set(ad, PROP_AF_MODE, &i_value);
+
+       /* Timer */
+       g_value_set_int(&i_value, TIMER_DEFAULT);
+       cam_handle_value_set(ad, PROP_TIMER, &i_value);
+
+       /* white balance */
+       g_value_set_int(&i_value, WB_DEFAULT);
+       cam_handle_value_set(ad, PROP_WB, &i_value);
+
+       /* Effect */
+       g_value_set_int(&i_value, EFFECT_DEFAULT);
+       cam_handle_value_set(ad, PROP_EFFECT, &i_value);
+
+       /* ISO */
+       g_value_set_int(&i_value, ISO_DEFAULT);
+       cam_handle_value_set(ad, PROP_ISO, &i_value);
+
+       /* Metering */
+       g_value_set_int(&i_value, AE_DEFAULT);
+       cam_handle_value_set(ad, PROP_METERING, &i_value);
+
+       /* Anti-shake */
+       g_value_set_int(&i_value, AHS_DEFAULT);
+       cam_handle_value_set(ad, PROP_AHS, &i_value);
+
+       /* wild dynamic range */
+       g_value_set_int(&i_value, WDR_DEFAULT);
+       cam_handle_value_set(ad, PROP_WDR, &i_value);
+
+       /* Image quality */
+       g_value_set_int(&i_value, QUALITY_DEFAULT);
+       cam_handle_value_set(ad, PROP_IMAGE_QUALITY, &i_value);
+
+       /* Video quality */
+       g_value_set_int(&i_value, QUALITY_DEFAULT);
+       cam_handle_value_set(ad, PROP_VIDEO_QUALITY, &i_value);
+
+       /* Auto Contrast */
+       g_value_set_int(&i_value, FALSE);
+       cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &i_value);
+
+       /* Guide Line */
+       g_value_set_boolean(&b_value, GUIDE_LINE_DEFAULT);
+       cam_handle_value_set(ad, PROP_GUIDELINE, &b_value);
+       settings_guideline_refresh(ad);
+
+       /* Review */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_REVIEW, &b_value);
+
+       /* GPS Connect */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_GPS, &b_value);
+
+       /* shutter sound */
+       g_value_set_int(&i_value, SHUTTER_SOUND_DEFAULT);
+       cam_handle_value_set(ad, PROP_SHUTTER_SOUND, &i_value);
+
+       /* sound */
+       cam_mm_set_shutter_sound(SOUND_DEFAULT);
+       ad->camapp_handle->shutter_sound = SHUTTER_SOUND_DEFAULT;
+
+       /* audio recording */
+       g_value_set_boolean(&b_value, TRUE);
+       cam_handle_value_set(ad, PROP_AUDIO_REC, &b_value);
+
+       /* storage */
+       g_value_set_int(&i_value, STORAGE_DEFAULT);
+       cam_handle_value_set(ad, PROP_STORAGE, &i_value);
+
+       /* brightness */
+       g_value_set_int(&i_value, BRIGHTNESS_DEFAULT);
+       cam_handle_value_set(ad, PROP_BRIGHTNESS, &i_value);
+
+       /* Resolution */
+       g_value_set_int(&i_value, IMAGE_RESOLUTION_DEFAULT);
+       cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &i_value);
+
+       g_value_set_int(&i_value, REC_RESOLUTION_DEFAULT);
+       cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &i_value);
+
+       if (ad->indicator_edje) {
+               /* delete indicator */
+               evas_object_hide(ad->indicator_edje);
+               cam_indicator_destory(ad);
+       }
+       cam_indicator_create(ad);
+
+       /* Flash */
+       if (camapp->camera_mode == CAM_CAMERA_MODE) {
+               g_value_set_int(&i_value, FLASH_DEFAULT);
+       } else {
+               g_value_set_int(&i_value, REC_FLASH_DEFAULT);
+       }
+       cam_handle_value_set(ad, PROP_FLASH, &i_value);
+
+       /* Outdoor visibility */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &b_value);
+
+       /* save as flip */
+       g_value_set_boolean(&b_value, FALSE);
+       cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &b_value);
+
+
+       /* Zoom */
+       g_value_set_int(&i_value, ZOOM_DEFAULT);
+       cam_handle_value_set(ad, PROP_ZOOM, &i_value);
+
+       /* Size limit type */
+       g_value_set_int(&i_value, CAM_MM_SIZE_LIMIT_TYPE_BYTE);
+       cam_handle_value_set(ad, PROP_SIZE_LIMIT_TYPE, &i_value);
+
+       /* Size limit */
+       if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
+                       && ad->exe_args->size_limit > 0) {
+               g_value_set_int(&i_value, CAM_REC_MMS_MAX_SIZE);
+       } else {
+               g_value_set_int(&i_value, REC_SIZE_LIMIT_DEFAULT);
+       }
+       cam_handle_value_set(ad, PROP_SIZE_LIMIT, &i_value);
+
+       /*  Timer */
+       g_value_set_int(&i_value, TIMER_DEFAULT);
+       cam_handle_value_set(ad, PROP_TIMER, &i_value);
+
+       /* Image count */
+       g_value_set_int(&i_value, IMAGE_COUNT_DEFAULT);
+       cam_handle_value_set(ad, PROP_IMAGE_COUNT, &i_value);
+
+       CAM_GVALUE_SET_INT(i_value, CAM_VOLUME_KEY_ZOOM);
+       cam_handle_value_set(ad, PROP_VOLUME_KEY, &i_value);
+
+       camapp->continuous_shot_data = NULL;
+       camapp->enable_touch_af = TRUE;
+       camapp->burst_shot = TRUE;
+
+       /*Edit shortcuts*/
+       cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               PROP_SHOW_POP_TIP,
+                                               TRUE);/*note: set show pop tip flag*/
+       cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               PROP_SHORTCUTS_INIT_PART_INDEX,
+                                               FALSE);/*note: set shorcuts init flag*/
+}
+
+static void __restore_defaults_popup_cb_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
+
+       DEL_EVAS_OBJECT(ad->confirm_popup);
+
+       hide_toolbar_edje(ad);
+       cam_app_preview_stop();
+
+       __reset_settings_launch();
+       __toolbar_menu_item_reset(ad);
+
+       ResetCaps();
+
+       show_toolbar_edje(ad);
+
+       if (!cam_app_preview_start(ad)) {
+               cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
+       }
+
+}
+
+static void __restore_defaults_popup_cb_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
+
+       DEL_EVAS_OBJECT(ad->confirm_popup);
+}
+
+static void __effects_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       GValue value = {0};
+       int effect = CAM_SCENE_NONE;
+       switch ((int)data) {
+       case CAM_MENU_EFFECT_NONE:
+               effect = CAMERA_ATTR_EFFECT_NONE;
+               break;
+       case CAM_MENU_EFFECT_NEGATIVE:
+               effect = CAMERA_ATTR_EFFECT_NEGATIVE;
+               break;
+       case CAM_MENU_EFFECT_BLACKANDWHITE:
+               effect = CAMERA_ATTR_EFFECT_MONO;
+               break;
+       case CAM_MENU_EFFECT_SEPIA:
+               effect = CAMERA_ATTR_EFFECT_SEPIA;
+               break;
+       default:
+               break;
+       }
+
+       if (ad->camapp_handle->effect != effect) {
+               CAM_GVALUE_SET_INT(value, effect);
+               cam_handle_value_set(ad, PROP_EFFECT, &value);
+       }
+
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_EFFECTS);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __shot_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       switch ((int)data) {
+       case CAM_MENU_SHOOTING_SINGLE:
+               shot_mode_set(ad, CAM_SINGLE_MODE);
+               break;
+       case CAM_MENU_SHOOTING_SELF_SINGLE:
+               shot_mode_set(ad, CAM_SELF_SINGLE_MODE);
+               break;
+       default:
+               break;
+       }
+
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item) {
+               elm_genlist_item_update(ad->setting_select_item);
+       }
+
+       __toolbar_menu_icon_update(ad);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       cam_toolbar_setting_popup_destroy(ad);
+}
+
+static void __scene_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       GValue value = {0};
+
+       int scene = CAM_MENU_SCENE_AUTO;
+       switch ((int)data) {
+       case CAM_MENU_SCENE_AUTO:
+               scene = CAM_SCENE_NONE;
+               break;
+       case CAM_MENU_SCENE_PORTRAIT:
+               scene = CAM_SCENE_PORTRAIT;
+               break;
+       case CAM_MENU_SCENE_LANDSCAPE:
+               scene = CAM_SCENE_LANDSCAPE;
+               break;
+       case CAM_MENU_SCENE_NIGHT:
+               scene = CAM_SCENE_NIGHT;
+               break;
+       case CAM_MENU_SCENE_SPORTS:
+               scene = CAM_SCENE_SPORTS;
+               break;
+       case CAM_MENU_SCENE_PARTY:
+               scene = CAM_SCENE_PARTY;
+               break;
+       case CAM_MENU_SCENE_BEACHSNOW:
+               scene = CAM_SCENE_BEACHSNOW;
+               break;
+       case CAM_MENU_SCENE_SUNSET:
+               scene = CAM_SCENE_SUNSET;
+               break;
+       case CAM_MENU_SCENE_DUSKDAWN:
+               scene = CAM_SCENE_DUSKDAWN;
+               break;
+       case CAM_MENU_SCENE_FALL:
+               scene = CAM_SCENE_FALL;
+               break;
+       case CAM_MENU_SCENE_FIREWORK:
+               scene = CAM_SCENE_FIREWORK;
+               break;
+       case CAM_MENU_SCENE_TEXT:
+               scene = CAM_SCENE_TEXT;
+               break;
+       case CAM_MENU_SCENE_CANDLELIGHT:
+               scene = CAM_SCENE_CANDLELIGHT;
+               break;
+       case CAM_MENU_SCENE_BACKLIGHT:
+               scene = CAM_SCENE_BACKLIGHT;
+               break;
+       case CAM_MENU_SCENE_SHOW_WINDOW:
+               scene = CAM_SCENE_SHOW_WINDOW;
+               break;
+       default:
+               break;
+       }
+
+       if (ad->camapp_handle->scene_mode != scene) {
+               CAM_GVALUE_SET_INT(value, scene);
+               cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
+       }
+
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+
+       __toolbar_menu_icon_update(ad);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       __update_setting_popup(ad);
+}
+
+static void __focus_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       GValue value = {0};
+       int focus_mode = CAM_FOCUS_AUTO;
+       switch ((int)data) {
+       case CAM_MENU_FOCUS_AUTO:
+               focus_mode = CAM_FOCUS_AUTO;
+               break;
+       case CAM_MENU_FOCUS_MACRO:
+               focus_mode = CAM_FOCUS_MACRO;
+               break;
+       case CAM_MENU_FOCUS_FACE_DETECTION:
+               focus_mode = CAM_FOCUS_FACE;
+               break;
+       default:
+               break;
+       }
+
+       CAM_GVALUE_SET_INT(value, focus_mode);
+       cam_handle_value_set(ad, PROP_AF_MODE, &value);
+
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+       __update_menubar_icon_by_index(ad, CAM_MENU_FOCUS_MODE);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       __update_setting_popup(ad);
+}
+
+static void __record_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       GValue value = {0};
+       int record_mode = CAM_RECORD_NORMAL;
+       switch ((int)data) {
+       case CAM_MENU_RECORDING_MODE_NORMAL:
+               record_mode = CAM_RECORD_NORMAL;
+               break;
+       case CAM_MENU_RECORDING_MODE_LIMIT:
+               record_mode = CAM_RECORD_MMS;
+               break;
+       case CAM_MENU_RECORDING_MODE_SLOW:
+               record_mode = CAM_RECORD_SLOW;
+               break;
+       case CAM_MENU_RECORDING_MODE_FAST:
+               record_mode = CAM_RECORD_FAST;
+               break;
+       case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
+               record_mode = CAM_RECORD_SELF;
+               break;
+       case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
+               record_mode = CAM_RECORD_SELF_MMS;
+               break;
+       default:
+               break;
+       }
+
+       if (ad->camapp_handle->recording_mode != record_mode) {
+               CAM_GVALUE_SET_INT(value, record_mode);
+               cam_handle_value_set(ad, PROP_REC_MODE, &value);
+       }
+
+       evas_object_show(ad->toolbar_setting_popup);
+       if (ad->setting_select_item) {
+               elm_genlist_item_update(ad->setting_select_item);
+       }
+
+       __toolbar_menu_icon_update(ad);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       cam_toolbar_setting_popup_destroy(ad);
+}
+
+static void __update_menubar_icon_by_index(struct appdata *ad, int index)
+{
+       Evas_Object_Event_Cb func = NULL;
+       int menubar_no = -1;
+       menubar_no = __get_menubar_no_by_index(ad, index);
+       if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
+       Evas_Object *icon = NULL;
+       icon = ad->toolbar_menu_arrays[menubar_no].icon;
+       if (icon)
+               __toolbar_menu_type_update(icon, index, ad, BUTTON_STATE_NORMAL, &func);
+}
+
+static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("");
+
+       int flash_value = 0;
+       GValue value = {0};
+       switch ((int)data) {
+       case CAM_MENU_FLASH_OFF:
+               flash_value = CAM_FLASH_OFF;
+               break;
+       case CAM_MENU_FLASH_ON:
+               flash_value = CAM_FLASH_ON;
+               break;
+       case CAM_MENU_FLASH_AUTO:
+               flash_value = CAM_FLASH_AUTO;
+               break;
+       default:
+               flash_value = CAM_FLASH_OFF;
+               break;
+       }
+       CAM_GVALUE_SET_INT(value, flash_value);
+       cam_handle_value_set(ad, PROP_FLASH, &value);
+       __update_menubar_icon_by_index(ad, CAM_MENU_FLASH);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void toolbar_move_with_scale(Evas_Object *eo, double x, double y)
+{
+       DEBUG_TRACE("x = %f, y = %f" , x, y);
+       DEBUG_TRACE("elm_config_scale_get() = %f" , elm_config_scale_get());
+       evas_object_move(eo, x * elm_config_scale_get(), y * elm_config_scale_get());
+}
+
+/*note: @mouse_point is the coordinate of mouse click, output is scaled*/
+static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction,
+                                                                               int mouse_point,
+                                                                               int *x,
+                                                                               int *y)
+{
+       int ver_x, ver_y, h_x, h_y;
+       ver_x = ver_y = h_x = h_y = 0;
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               *x = (int)(SETTING_HOR_CTX_POPUP_X * elm_config_scale_get());
+               *y = mouse_point;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               *x = (int)((1280 - SETTING_HOR_CTX_POPUP_X) * elm_config_scale_get());
+               *y = mouse_point;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               *x = (int)(SETTING_VER_CTX_POPUP_X * elm_config_scale_get());;
+               *y = mouse_point;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               *x = (int)((720 - SETTING_VER_CTX_POPUP_X) * elm_config_scale_get());
+               *y = mouse_point;
+               break;
+       default:
+               DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
+
+       }
+}
+
+static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y)
+{
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               *out_x = (int)((MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
+               *out_y = (int)(0.9*MAIN_H);
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               *out_x = (int)((VER_MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
+               *out_y = (int)(0.8*VER_MAIN_H);
+               break;
+       default:
+               DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
+       }
+}
+
+/*note: in this func, all coordinate is not scale*/
+static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y)
+{
+       int menu_bar_no = menubar_no;
+       int ver_x, ver_y, hor_x, hor_y;
+       ver_x = ver_y = hor_x = hor_y = 0;
+
+       switch (menu_bar_no) {
+       case CAM_MENU_BAR_LEFT_0:
+               ver_x = 83;
+               ver_y = 161;
+               hor_x = 161;
+               hor_y = 648;
+               break;
+       case CAM_MENU_BAR_LEFT_1:
+               ver_x = 223;
+               ver_y = 161;
+               hor_x = 161;
+               hor_y = 508;
+               break;
+       case CAM_MENU_BAR_LEFT_2:
+               ver_x = 364;
+               ver_y = 161;
+               hor_x = 161;
+               hor_y = 364;
+               break;
+       case CAM_MENU_BAR_LEFT_3:
+               ver_x = 508;
+               ver_y = 161;
+               hor_x = 161;
+               hor_y = 223;
+               break;
+       case CAM_MENU_BAR_LEFT_4:
+               ver_x = 648;
+               ver_y = 161;
+               hor_x = 161;
+               hor_y = 83;
+               break;
+       default:
+               DEBUG_TRACE("input para,error!");
+               break;
+       }
+
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               *x = hor_x;
+               *y = hor_y;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               *x = 1280 - hor_x;
+               *y = ver_x;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               *x = ver_x;
+               *y = ver_y;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               *x = hor_y;
+               *y = 1280 - ver_y;
+               break;
+       default:
+               DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
+               break;
+       }
+}
+
+static int __get_menubar_no_by_index(struct appdata *ad, int index)
+{
+
+       int i = 0;
+       for (i  = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               if (index == ad->toolbar_menu_arrays[i].menu_type) {
+                       return i;
+               }
+       }
+       return CAM_MENU_BAR_LEFT_INVALID;
+}
+
+static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y)
+{
+       if (!obj) return;
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
+                                                       ELM_CTXPOPUP_DIRECTION_UP,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN);
+
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
+                                                       ELM_CTXPOPUP_DIRECTION_UP);
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
+                                                       ELM_CTXPOPUP_DIRECTION_UP,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT);
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_UP,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT);
+               break;
+       default:
+               DEBUG_TRACE("wow, check it, reached un-able reached codes");
+       }
+
+       toolbar_move_with_scale(obj, x, y);
+}
+
+static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y)
+{
+       if (!obj) return;
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
+                                                       ELM_CTXPOPUP_DIRECTION_UP,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN);
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               elm_ctxpopup_direction_priority_set(obj,
+                                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                       ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
+                                                       ELM_CTXPOPUP_DIRECTION_UP);
+               break;
+       default:
+               DEBUG_TRACE("wow, check it, reached un-able reached codes");
+       }
+
+       evas_object_move(obj, x, y);
+}
+
+static void __tip_popup_check_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       gboolean pop_tip = FALSE;
+       pop_tip = elm_check_state_get(obj);
+       DEBUG_TRACE("do_not_ask_again = %d", pop_tip);
+       cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, !pop_tip);
+       cam_config_save();
+}
+
+static void __tip_popup_button_selected_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE();
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       cam_tip_popup_destroy(ad);
+}
+
+/*note: input x,y should be landscape mode coordinate*/
+static void __get_tip_popup_coord(int target_direction, int *out_x, int *out_y)
+{
+       switch (target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
+               *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
+               *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
+               *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
+               *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
+               break;
+       default:
+               DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
+       }
+}
+
+void cam_tip_popup_create(struct appdata *ad, const CamTipPopupType type)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->toolbar_setting_popup) {
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       if (ad->edit_shortcuts_popup_scroll) {
+               toolbar_destroy_shortcuts_popup(ad);
+       }
+
+       if (ad->tip_popup) {
+               cam_tip_popup_destroy(ad);
+       }
+
+       /*hide focus guide*/
+       edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+
+       elm_object_part_content_unset(ad->ug_base, "tip_popup_layout");
+
+       ad->tip_popup = cam_app_load_edj(ad->ug_base, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/help");
+
+       cam_retm_if(ad->tip_popup == NULL, "tip_popup is NULL");
+       elm_object_part_content_set(ad->ug_base, "tip_popup_layout", ad->tip_popup);
+
+       Evas_Object *check = elm_check_add(ad->tip_popup);
+       evas_object_smart_callback_add(check, "changed", __tip_popup_check_cb, (void*)ad);
+       evas_object_show(check);
+       elm_object_part_content_set(ad->tip_popup, "content.help.check.swallow", check);
+
+       gboolean show_popup_tip = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, POP_TIP_DEFAULT);
+       if (show_popup_tip)
+               elm_check_state_set(check, EINA_FALSE);
+       else
+               elm_check_state_set(check, EINA_TRUE);
+
+       Evas_Object *btn = elm_button_add(ad->tip_popup);
+       elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_OK"));
+       evas_object_smart_callback_add(btn, "unpressed", __tip_popup_button_selected_cb, (void *)ad);
+       evas_object_show(btn);
+       elm_object_part_content_set(ad->tip_popup, "button.swallow", btn);
+
+       Evas_Object *image = elm_image_add(ad->tip_popup);
+       elm_object_part_content_set(ad->tip_popup, "content.help.image", image);
+
+       if (ad->tip_popup) {
+               evas_object_show(ad->tip_popup);
+               evas_object_size_hint_min_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
+               evas_object_size_hint_max_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
+               evas_object_resize(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
+
+               edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.check.txt", dgettext(PACKAGE, "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"));
+               edje_object_part_text_set(_EDJ(ad->tip_popup), "tips.txt", dgettext(PACKAGE, "IDS_CAM_HEADER_TIPS"));
+
+               switch (type) {
+               case CAM_TIP_POPUP_BURSTSHOT_HELP:
+                       ad->tip_popup_type = CAM_TIP_POPUP_BURSTSHOT_HELP;
+                       edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
+                               dgettext(PACKAGE, "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"));
+                       elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_BURSTSHOT_HELP_IMAGE);
+                       break;
+               case CAM_TIP_POPUP_VOLUMEKEY_HELP:
+                       ad->tip_popup_type = CAM_TIP_POPUP_VOLUMEKEY_HELP;
+                       edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
+                               dgettext(PACKAGE, "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"));
+                       elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_VOLUMEKEY_HELP_IMAGE);
+                       break;
+               default:
+                       DEBUG_TRACE("invalid tip-popup type");
+                       break;
+               }
+
+               evas_object_show(ad->tip_popup);
+
+               int output_x, output_y;
+               output_x = output_y = 0;
+               __get_tip_popup_coord(ad->target_direction, &output_x, &output_y);
+               evas_object_move(ad->tip_popup, output_x, output_y);/*landscape*/
+       }
+}
+
+void cam_tip_popup_destroy(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->tip_popup);
+       ad->tip_popup_type = CAM_TIP_POPUP_NONE;
+}
+
+void cam_tip_popup_rotate(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       DEL_EVAS_OBJECT(ad->tip_popup);
+       cam_tip_popup_create(ad, ad->tip_popup_type);
+}
+
+static char *__sub_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       int index = (int)data;
+
+       struct appdata *ad  = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+
+       CAM_MENU_ITEM* menu_item  = NULL;
+       menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
+       return strdup(dgettext(PACKAGE, __get_text_name(*menu_item)));
+}
+
+static Evas_Object *__sub_menu_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+       struct appdata *ad  = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, NULL, "camapp_handle is NULL");
+
+       int index = (int)data;
+       int value_index = 0;
+
+       if (strcmp(part, "elm.radio") == 0) {
+               Evas_Object* radio = elm_radio_add(obj);
+
+               elm_object_style_set(radio, "beat_winset_test/camera");
+               elm_radio_state_value_set(radio, index);
+               elm_radio_group_add(radio, ad->sub_menu_group);
+
+               switch (ad->sub_menu_type) {
+               case CAM_MENU_FLASH:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FLASH, camapp->flash);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_SHOOTING_MODE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SHOOTING_MODE, camapp->shooting_mode);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_RECORDING_MODE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_RECORDING_MODE, camapp->recording_mode);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_SCENE_MODE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SCENE_MODE, camapp->scene_mode);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_FOCUS_MODE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FOCUS_MODE, camapp->af_mode);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_TIMER:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_TIMER, camapp->timer);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_EFFECTS:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_EFFECTS, camapp->effect);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_PHOTO_RESOLUTION, camapp->photo_resolution);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VIDEO_RESOLUTION, camapp->video_resolution);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_WHITE_BALANCE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_WHITE_BALANCE, camapp->white_balance);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_ISO:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_ISO, camapp->iso);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_METERING:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_METERING, camapp->auto_exposure);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_STORAGE:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_STORAGE, camapp->storage);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               case CAM_MENU_VOLUME_KEY:
+                       value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VOLUME_KEY, camapp->volume_key);
+                       if (index == value_index) {
+                               elm_radio_value_set(radio, value_index);
+                       }
+                       break;
+               default:
+                       break;
+               }
+               evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return radio;
+       } else if (strcmp(part, "elm.icon") == 0) {
+               Evas_Object *icon = NULL;
+               char icon_name[1024+1] = { '\0', };
+               CAM_MENU_ITEM* menu_item  = NULL;
+
+               menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
+               strncpy(icon_name, __get_icon_image_name(*menu_item, BUTTON_STATE_NORMAL), sizeof(icon_name));
+               icon = elm_image_add(obj);
+               elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               return icon;
+       }
+
+       return NULL;
+}
+
+void __cam_setting_sub_gl_style_set()
+{
+
+       sub_itc.item_style = "camera/1text.2icon";
+       sub_itc.func.text_get = __sub_menu_gl_text_get;
+       sub_itc.func.content_get = __sub_menu_gl_icon_get;
+       sub_itc.func.state_get = NULL;
+       sub_itc.func.del = NULL;
+}
+
+static void* __get_sub_menu_genlist_cb(const CAM_MENU_ITEM item)
+{
+       switch(item){
+               case CAM_MENU_FLASH:
+                       return __flash_selected_cb;
+               case CAM_MENU_SHOOTING_MODE:
+                       return __shot_mode_selected_cb;
+               case CAM_MENU_RECORDING_MODE:
+                       return __record_mode_selected_cb;
+               case CAM_MENU_SCENE_MODE:
+                       return __scene_mode_selected_cb;
+               case CAM_MENU_FOCUS_MODE:
+                       return __focus_mode_selected_cb;
+               case CAM_MENU_TIMER:
+                       return __timer_popup_cb;
+               case CAM_MENU_EFFECTS:
+                       return __effects_selected_cb;
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       return __photo_resolution_popup_cb;
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       return __video_resolution_popup_cb;
+               case CAM_MENU_WHITE_BALANCE:
+                       return __wb_popup_cb;
+               case CAM_MENU_ISO:
+                       return __iso_popup_cb;
+               case CAM_MENU_METERING:
+                       return __metering_popup_cb;
+               case CAM_MENU_STORAGE:
+                       return __storage_popup_cb;
+               case CAM_MENU_VOLUME_KEY:
+                       return __volume_key_popup_cb;
+               default:
+                       return NULL;
+               }
+}
+
+static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata)
+{
+       struct appdata *ad = (struct appdata *)fdata;
+       cam_retv_if(ad == NULL, EINA_FALSE);
+
+       CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
+       DEBUG_TRACE("item = %d", *item);
+
+       elm_genlist_item_append(ad->sub_genlist, &sub_itc, (void*)(ad->sub_menu_index),
+                                                               NULL, ELM_GENLIST_ITEM_NONE, __get_sub_menu_genlist_cb(ad->sub_menu_type), (void *)*item);
+
+       ad->sub_menu_index++;
+       return EINA_TRUE;
+}
+
+static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       Evas_Object *layout = NULL;
+       int menu_bar_no = -1;
+       int x, y;
+
+       setting_ctxpopup_create(ad, from_setting);
+       layout = elm_layout_add(ad->setting_ctxpopup);
+       elm_layout_file_set(layout, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout");
+
+       /* set text */
+       edje_object_part_text_set(elm_layout_edje_get(layout), "elm.text", _setting_gl_text_get((void*)menu_item, NULL, NULL));
+
+       if (ad->sub_menu_composer) {
+               cam_compose_free(ad->sub_menu_composer);
+               ad->sub_menu_composer = NULL;
+       }
+
+       if (ad->sub_menu_composer == NULL) {
+               ad->sub_menu_composer = calloc(1, sizeof(cam_menu_composer));
+               cam_compose_list_menu((void*)ad, menu_item, ad->sub_menu_composer);
+       }
+
+       int size = eina_array_count(ad->sub_menu_composer->array);
+       int sub_menu_height = __get_sub_menu_height(size);
+       evas_object_size_hint_min_set(layout,
+                                       SUB_MENU_POPUP_WIDTH * elm_config_scale_get(),
+                                       sub_menu_height * elm_config_scale_get());
+
+       ad->sub_menu_type = menu_item;
+       ad->sub_menu_index = 0;
+       ad->sub_genlist = elm_genlist_add(layout);
+       ad->sub_menu_group = elm_radio_add(ad->sub_genlist);
+
+       __cam_setting_sub_gl_style_set();
+       eina_array_foreach(ad->sub_menu_composer->array, __sub_menu_genlist_each_cb, ad);
+
+       evas_object_show(ad->sub_genlist);
+       elm_object_part_content_set(layout, "elm.swallow.box", ad->sub_genlist);
+       elm_object_content_set(ad->setting_ctxpopup, layout);
+
+       if (from_setting) {
+               __cam_get_ctxpopup_coord_in_setting_toolbar(ad->target_direction, setting_gl_y, &x, &y);
+               __cam_toolbar_move_sub_menu(ad->setting_ctxpopup, ad->target_direction, x, y);
+       } else {
+               menu_bar_no = __get_menubar_no_by_index(ad, menu_item);
+               __get_option_coord_by_menubar_no(menu_bar_no, ad->target_direction, &x, &y);
+               __cam_toolbar_move_ctxpopup(ad->setting_ctxpopup, ad->target_direction, x, y);
+       }
+
+       evas_object_show(ad->setting_ctxpopup);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       gboolean from_setting = FALSE;
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+       }
+       if (event_info) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       }
+
+       ad->displayed_setting_popup = FALSE;
+       toolbar_create_shortcuts_popup(ad);
+}
+
+static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_VOLUME_KEY_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_VOLUME_KEY, from_setting);
+}
+
+static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       if (!ad->enable_mode_change) {
+               DEBUG_TRACE("Can not change mode");
+               return;
+       }
+
+       ad->enable_mode_change = FALSE;
+
+       cam_toolbar_setting_popup_destroy(ad);
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+
+       if (camapp->self_portrait == TRUE)
+               camapp->self_portrait = FALSE;
+       else
+               camapp->self_portrait = TRUE;
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->self_portrait);
+       cam_handle_value_set(ad, PROP_SELF_PORTRAIT, &value);
+
+       cam_toolbar_update(ad);
+}
+
+static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_FLASH_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_FLASH, from_setting);
+}
+
+static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_SHOOTING_MODE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_SHOOTING_MODE, from_setting);
+}
+
+static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_RECORDING_MODE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_RECORDING_MODE, from_setting);
+}
+
+static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_SCENE_MODE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_SCENE_MODE, from_setting);
+}
+
+static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       cam_retm_if(ad->camapp_handle == NULL, "ad->camapp_handle is NULL");
+
+       load_ev_edje(ad);
+
+       cam_toolbar_setting_popup_destroy(ad);
+}
+
+static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->burst_shot = %d", camapp->burst_shot);
+
+       if (obj != ad->burst_shot_mode_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->burst_shot == TRUE) {
+                       camapp->burst_shot = FALSE;
+                       elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
+               } else {
+                       camapp->burst_shot = TRUE;
+                       elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->burst_shot == TRUE)
+                       elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->burst_shot);
+       cam_handle_value_set(ad, PROP_BURST_SHOT, &value);
+
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_BURST_SHOT_MODE);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_FOCUS_MODE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_FOCUS_MODE, from_setting);
+}
+
+static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_TIMER_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_TIMER, from_setting);
+}
+
+static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_EFFECTS_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_EFFECTS, from_setting);
+}
+
+static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_WHITE_BALANCE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_WHITE_BALANCE, from_setting);
+}
+
+static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_ISO_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_ISO, from_setting);
+}
+
+static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_METERING_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_METERING, from_setting);
+}
+
+static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->anti_shake = %d", camapp->anti_shake);
+
+       if (obj != ad->antishake_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->anti_shake == TRUE) {
+                       camapp->anti_shake = FALSE;
+                       elm_check_state_set(ad->antishake_radio, EINA_FALSE);
+               } else {
+                       camapp->anti_shake = TRUE;
+                       elm_check_state_set(ad->antishake_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->anti_shake == TRUE)
+                       elm_check_state_set(ad->antishake_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->antishake_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->anti_shake);
+       cam_handle_value_set(ad, PROP_AHS, &value);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_ANTI_SHAKE);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->outdoor_visibility = %d", camapp->outdoor_visibility);
+
+       if (obj != ad->outdoor_visibility_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->outdoor_visibility == TRUE) {
+                       camapp->outdoor_visibility = FALSE;
+                       elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
+               } else {
+                       camapp->outdoor_visibility = TRUE;
+                       elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->outdoor_visibility == TRUE)
+                       elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->outdoor_visibility);
+       cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &value);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_OUTDOOR_VISIBILITY);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(obj == NULL);
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->auto_contrast = %d", camapp->auto_contrast);
+
+       if (obj != ad->autocontrast_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->auto_contrast == TRUE) {
+                       camapp->auto_contrast = FALSE;
+                       elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
+               } else {
+                       camapp->auto_contrast = TRUE;
+                       elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->auto_contrast == TRUE)
+                       elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->auto_contrast);
+       cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &value);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_AUTO_CONTRAST);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+
+void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(obj == NULL);
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->guideline = %d", camapp->guideline);
+
+       if (obj != ad->guideline_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->guideline == TRUE) {
+                       camapp->guideline = FALSE;
+                       elm_check_state_set(ad->guideline_radio, EINA_FALSE);
+               } else {
+                       camapp->guideline = TRUE;
+                       elm_check_state_set(ad->guideline_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->guideline == TRUE)
+                       elm_check_state_set(ad->guideline_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->guideline_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->guideline);
+       cam_handle_value_set(ad, PROP_GUIDELINE, &value);
+
+       settings_guideline_refresh(ad);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_GUIDELINES);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+
+static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(obj == NULL);
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->save_as_flip = %d", camapp->save_as_flip);
+
+       if (obj != ad->save_as_flip_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->save_as_flip == TRUE) {
+                       camapp->save_as_flip = FALSE;
+                       elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
+               } else {
+                       camapp->save_as_flip = TRUE;
+                       elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->save_as_flip == TRUE)
+                       elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->save_as_flip);
+       cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &value);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_SAVE_AS_FLIP);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+
+static void __voice_cmd_cb(CamVoiceCmdState state, void* data)
+{
+       switch(state) {
+       case CAM_VOICE_CMD_READY:
+               // do capture
+               {
+                       char *emission = "release_shutter_sig";
+                       char *source = "temp";
+                       cam_toolbar_shutter_button_cb(data, NULL,
+                                   emission, source);
+               }
+               break;
+       case CAM_VOICE_CMD_REJECT:
+               // do action - after discuss with UX
+               break;
+       case CAM_VOICE_CMD_ERROR:
+               //do action  - after discuss with UX
+               break;
+       default:
+               break;
+       }
+}
+
+static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(obj == NULL);
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->capture_by_voice = %d", camapp->capture_by_voice);
+
+       if (obj != ad->capture_by_voice_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->capture_by_voice == TRUE) {
+                       camapp->capture_by_voice = FALSE;
+                       elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
+               } else {
+                       camapp->capture_by_voice = TRUE;
+                       elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->capture_by_voice == TRUE)
+                       elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
+               return;
+       }
+
+       if (camapp->capture_by_voice) {
+               if ( !cam_voice_cmd_create((cam_voice_cmd_cb)__voice_cmd_cb,ad)) {
+                       cam_voice_cmd_destroy();
+                       camapp->capture_by_voice = FALSE;
+                       elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
+               }
+
+       } else cam_voice_cmd_destroy();
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_CAPTURE_VOICE);
+       __setting_popup_timeout_checker_start(ad);
+}
+
+static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(obj == NULL);
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = NULL;
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->gps = %d", camapp->gps);
+
+       if (obj != ad->gps_radio) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+
+               if (camapp->gps == TRUE) {
+                       camapp->gps = FALSE;
+                       elm_check_state_set(ad->gps_radio, EINA_FALSE);
+               } else {
+                       camapp->gps = TRUE;
+                       elm_check_state_set(ad->gps_radio, EINA_TRUE);
+               }
+       } else {
+               /* to reset check button */
+               if (camapp->gps == TRUE)
+                       elm_check_state_set(ad->gps_radio, EINA_TRUE);
+               else
+                       elm_check_state_set(ad->gps_radio, EINA_FALSE);
+               return;
+       }
+
+       GValue value = {0, };
+       CAM_GVALUE_SET_BOOLEAN(value, camapp->gps);
+       cam_handle_value_set(ad, PROP_GPS, &value);
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_GPS_TAG);
+       __setting_popup_timeout_checker_start(ad);
+
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       cam_toolbar_setting_popup_destroy(ad);
+}
+
+static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_STORAGE_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_STORAGE, from_setting);
+}
+
+static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_PHOTO_RESOLUTION_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_PHOTO_RESOLUTION, from_setting);
+}
+
+static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("START");
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       gboolean from_setting = FALSE;
+
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_VIDEO_RESOLUTION_POPUP;
+       }
+
+       __create_setting_listmenu(ad, CAM_MENU_VIDEO_RESOLUTION, from_setting);
+}
+
+static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_ret_if(data == NULL);
+       struct appdata *ad = (struct appdata *)(data);
+       cam_retm_if(ad == NULL, " appdata is NULL");
+       gboolean from_setting = FALSE;
+       if (event_info) { /*call by setting*/
+               from_setting = TRUE;
+       } else { /*call by click icon*/
+               from_setting = FALSE;
+               ad->displayed_setting_popup = DISPLAY_RESET_POPUP;
+       }
+       if (event_info) {
+               elm_genlist_item_selected_set(event_info, EINA_FALSE);
+               ad->setting_select_item = (Elm_Object_Item *)event_info;
+       }
+
+       DEL_EVAS_OBJECT(ad->confirm_popup);
+
+       ad->confirm_popup = elm_popup_add(ad->ug_base);
+       evas_object_size_hint_weight_set(ad->confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_popup_timeout_set(ad->confirm_popup, 9.0);
+
+
+       char popup_str[1024 + 1] = { '\0',};
+       snprintf(popup_str, 1024, "%s%s%s", _("<font=SLP:style=Roman><color=#000000><align=center>"),
+               dgettext(PACKAGE, "IDS_CAM_POP_RESET_SETTINGS_Q"), _("</align></color></font>"));
+
+       elm_object_text_set(ad->confirm_popup, popup_str);
+       Evas_Object *btn1 = elm_button_add(ad->confirm_popup);
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(ad->confirm_popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __restore_defaults_popup_cb_ok_cb, (void*)ad);
+       Evas_Object *btn2 = elm_button_add(ad->confirm_popup);
+       elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(ad->confirm_popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", __restore_defaults_popup_cb_cancel_cb, (void*)ad);
+
+       evas_object_show(ad->confirm_popup);
+
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+       cam_toolbar_setting_popup_destroy(ad);
+}
+
+void settings_guideline_refresh(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL,"camapp is NULL");
+       DEBUG_TRACE("ad->camapp_handle->guideline = %d" ,ad->camapp_handle->guideline);
+
+       if( ad->camapp_handle->guideline == TRUE) {
+               cam_guideline_create(ad);
+
+               if (ad->guideline_edje && ad->toolbar_setting_popup) {
+                       evas_object_hide(ad->guideline_edje);
+               } else {
+                       if (ad->toolbar_edje)
+                               evas_object_raise(ad->toolbar_edje);
+               }
+       } else {
+               DEL_EVAS_OBJECT(ad->guideline_edje);
+       }
+}
+
+static Eina_Bool __setting_popup_timeout_checker_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+        if (camapp == NULL) {
+                if (ad->setting_toolbar_hide_timer)
+                        ad->setting_toolbar_hide_timer = NULL;
+                return ECORE_CALLBACK_CANCEL;
+
+        }
+        if (ad->setting_toolbar_hide_timer)
+                        ad->setting_toolbar_hide_timer = NULL;
+       gdouble diff_time = 0.0;
+       diff_time = _get_current_time() - camapp->start_time;
+       if ((cam_mm_get_state() == CAMERA_STATE_PREVIEW)
+           && (diff_time >= CAM_SETTING_POPUP_TIMEOUT)) {
+               DEBUG_TRACE("destroy setting pupup");
+               if (ad->setting_toolbar_hide_timer) {
+                       if (ad->setting_ctxpopup) {
+                               ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+                               cam_toolbar_setting_popup_destroy(ad);
+                               if (ad->shot_mode_guide_popup)
+                                       toolbar_shot_guide_popup_create(ad, ad->camapp_handle->shooting_mode);
+                       } else if (ad->toolbar_setting_popup) {
+                               cam_toolbar_setting_popup_destroy(ad);
+                       }
+
+                       if (ad->edit_shortcuts_popup_scroll) {
+                               toolbar_destroy_shortcuts_popup(ad);
+                       }
+               }
+       }
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static gboolean __setting_popup_timeout_checker_start(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
+       if (ad->setting_toolbar_hide_timer) {
+               ecore_timer_del(ad->setting_toolbar_hide_timer);
+               ad->setting_toolbar_hide_timer = NULL;
+       }
+       ad->setting_toolbar_hide_timer =
+           ecore_timer_add(CAM_SETTING_POPUP_TIMEOUT, __setting_popup_timeout_checker_cb, ad);
+       camapp->start_time = _get_current_time();
+       DEBUG_TRACE("END");
+       return TRUE;
+}
+
+int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item)
+{
+       int menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
+       Evas_Object *icon = NULL;
+       __get_menubar_shortcuts_info(ad, menu_item, &menu_bar_no, &icon);
+       return menu_bar_no;
+}
+
+/*note: output menu index, input display popup value*/
+int cam_toolbar_displaypopup_map_menu_value(int display_popup)
+{
+       switch (display_popup) {
+       case DISPLAY_NONE_POPUP:
+               return CAM_MENU_EMPTY;
+               break;
+       case DISPLAY_EDIT_SHOTCUTS_POPUP:
+               return CAM_MENU_SHORTCUTS;
+               break;
+       case DISPLAY_BURST_SHOT_MODE_POPUP:
+               return CAM_MENU_BURST_SHOT_MODE;
+               break;
+       case DISPLAY_VOLUME_KEY_POPUP:
+               return CAM_MENU_VOLUME_KEY;
+               break;
+       case DISPLAY_SELF_PORTRAIT_POPUP:
+               return CAM_MENU_SELF_PORTRAIT;
+               break;
+       case DISPLAY_SCENE_MODE_POPUP:
+               return CAM_MENU_SCENE_MODE;
+               break;
+       case DISPLAY_FOCUS_MODE_POPUP:
+               return CAM_MENU_FOCUS_MODE;
+               break;
+       case DISPLAY_EFFECTS_POPUP:
+               return CAM_MENU_EFFECTS;
+               break;
+       case DISPLAY_ANTI_SHAKE_POPUP:
+               return CAM_MENU_ANTI_SHAKE;
+               break;
+       case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
+               return CAM_MENU_OUTDOOR_VISIBILITY;
+               break;
+       case DISPLAY_AUTO_CONTRAST_POPUP:
+               return CAM_MENU_AUTO_CONTRAST;
+               break;
+       case DISPLAY_GUIDELINES_POPUP:
+               return CAM_MENU_GUIDELINES;
+               break;
+       case DISPLAY_CAPTURE_VOICE_POPUP:
+               return CAM_MENU_CAPTURE_VOICE;
+               break;
+       case DISPLAY_GPS_TAG_POPUP:
+               return CAM_MENU_GPS_TAG;
+               break;
+       case DISPLAY_STORAGE_POPUP:
+               return CAM_MENU_STORAGE;
+               break;
+       case DISPLAY_RESET_POPUP:
+               return CAM_MENU_RESET;
+               break;
+       case DISPLAY_SHOOTING_MODE_POPUP:
+               return CAM_MENU_SHOOTING_MODE;
+               break;
+       case DISPLAY_RECORDING_MODE_POPUP:
+               return CAM_MENU_RECORDING_MODE;
+               break;
+       case DISPLAY_VIDEO_RESOLUTION_POPUP:
+               return CAM_MENU_VIDEO_RESOLUTION;
+               break;
+       case DISPLAY_PHOTO_RESOLUTION_POPUP:
+               return CAM_MENU_PHOTO_RESOLUTION;
+               break;
+       case DISPLAY_ISO_POPUP:
+               return CAM_MENU_ISO;
+               break;
+       case DISPLAY_METERING_POPUP:
+               return CAM_MENU_METERING;
+               break;
+       case DISPLAY_WHITE_BALANCE_POPUP:
+               return CAM_MENU_WHITE_BALANCE;
+               break;
+       case DISPLAY_FLASH_POPUP:
+               return CAM_MENU_FLASH;
+                break;
+       case DISPLAY_TIMER_POPUP:
+               return CAM_MENU_TIMER;
+               break;
+       case DISPLAY_SAVE_AS_FLIP:
+               return CAM_MENU_SAVE_AS_FLIP;
+       default:
+               return CAM_MENU_EMPTY;
+               break;
+       }
+}
+
+Eina_Bool cam_show_setting_menu_option_popup(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       switch (ad->displayed_setting_popup) {
+       case DISPLAY_NONE_POPUP:
+               break;
+       case DISPLAY_EDIT_SHOTCUTS_POPUP:
+                __setting_edit_shortcut_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_VOLUME_KEY_POPUP:
+                __setting_volume_key_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_SELF_PORTRAIT_POPUP:
+                __setting_self_portrait_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_SCENE_MODE_POPUP:
+                __setting_scenemode_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_FOCUS_MODE_POPUP:
+                __setting_focus_mode_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_EFFECTS_POPUP:
+                __setting_effects_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_ANTI_SHAKE_POPUP:
+                __setting_anti_shake_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
+                __setting_outdoor_visibility_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_AUTO_CONTRAST_POPUP:
+                __setting_autocontrast_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_GUIDELINES_POPUP:
+                __setting_guideline_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_CAPTURE_VOICE_POPUP:
+                __setting_capture_by_voice_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_GPS_TAG_POPUP:
+                __setting_gps_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_STORAGE_POPUP:
+                __setting_storage_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_RESET_POPUP:
+               __setting_restore_defaults_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_SHOOTING_MODE_POPUP:
+                __setting_shot_mode_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_RECORDING_MODE_POPUP:
+               __setting_record_mode_popup(ad, NULL, NULL);
+               break;
+       case DISPLAY_VIDEO_RESOLUTION_POPUP:
+               __setting_video_resolution_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_PHOTO_RESOLUTION_POPUP:
+                __setting_photo_resolution_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_ISO_POPUP:
+                __setting_iso_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_METERING_POPUP:
+                __setting_metering_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_WHITE_BALANCE_POPUP:
+                __setting_wb_popup_cb(ad, NULL, NULL);
+               break;
+       case DISPLAY_FLASH_POPUP:
+                __setting_flash_popup(ad, NULL, NULL);
+                break;
+       case DISPLAY_TIMER_POPUP:
+               __setting_timer_popup_cb(ad,NULL,NULL);
+               break;
+       case DISPLAY_SAVE_AS_FLIP:
+               __setting_save_as_flip_popup_cb(ad, NULL, NULL);
+               break;
+       default:
+               break;
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+Eina_Bool cam_show_setting_menu(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       if (ad->show_setting_popup_after_rotate == TRUE) {
+               cam_toolbar_setting_popup_create(ad);
+       } else if (ad->show_edit_shortcuts_popup_after_rotate == TRUE) {
+               toolbar_create_shortcuts_popup(ad);
+       }
+
+       if (ad->displayed_setting_popup != DISPLAY_NONE_POPUP) {
+               ecore_idler_add(cam_show_setting_menu_option_popup, ad);
+       }
+
+       ad->is_rotating = FALSE;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void toolbar_destroy_shortcuts_popup(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+       cam_retm_if(ad->toolbar_edje == NULL, "appdata is null");
+       elm_object_part_content_unset(ad->toolbar_edje, "shortcuts_popup");
+
+       DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_scroll);
+       DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
+       ad->edit_shortcuts_popup_scroll = NULL;
+       ad->edit_shortcuts_popup_ctx = NULL;
+       ad->edit_shortcuts_popup = NULL;
+
+       /*clear eina_list*/
+       __cam_toolbar_edit_shortcuts_data_clean();
+
+       destroy_menubar_shortcuts_mouse_event(ad, 0, TRUE);
+       /*exit edit mode*/
+               /*show edit mode*/
+       /*TODO: here should be rotate icon*/
+
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,normal", "prog");
+
+       __set_show_state_preview_obj(ad, TRUE);
+
+       int i = 0;
+       for (i = CAM_MENU_EMPTY + 1; i < CAM_MENU_MAX_NUMS; i++) {
+               __update_menubar_icon_by_index(ad, i);
+       }
+}
+
+void cam_toolbar_setting_popup_destroy(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+       DEBUG_TRACE("");
+
+       if (ad->setting_ctxpopup)
+               setting_ctxpopup_destroy(ad);
+
+       if (ad->genlist) {
+               elm_genlist_clear(ad->genlist);
+               evas_object_del(ad->genlist);
+               ad->genlist = NULL;
+       }
+
+       DEL_EVAS_OBJECT(ad->toolbar_setting_popup);
+       ad->toolbar_setting_popup_area = NULL;
+       ad->setting_select_item = NULL; /*select item*/
+
+       /*elm_all_flush();*/
+       cam_elm_cache_flush();
+
+       __set_show_state_preview_obj(ad, TRUE);
+}
+
+void cam_toolbar_setting_popup_update(struct appdata *ad)
+{
+       cam_retm_if(ad == NULL, "appdata is null");
+
+       if (!ad->toolbar_setting_popup)
+               return;
+
+       if (ad->setting_ctxpopup)
+               setting_ctxpopup_destroy(ad);
+
+       __update_setting_popup(ad);
+}
+
+static Evas_Object *_setting_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is null");
+
+       int index = (int)data;
+
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, NULL);
+       Evas_Object *icon = NULL;
+
+       switch(index) {
+       case CAM_MENU_SHORTCUTS:
+               icon = NULL;
+               break;
+       case CAM_MENU_BURST_SHOT_MODE:
+               {
+                       icon = elm_check_add(obj);
+
+                       if (ad->camapp_handle->burst_shot) {
+                               elm_check_state_set(icon, EINA_TRUE);
+                       } else {
+                               elm_check_state_set(icon, EINA_FALSE);
+                       }
+
+                       elm_object_style_set(icon, "genlist/on&off");
+                       evas_object_smart_callback_add(icon, "changed", __setting_burst_shot_popup_cb, (void*)ad);
+                       ad->burst_shot_mode_radio = icon;
+               }
+               break;
+       case CAM_MENU_VOLUME_KEY:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_SELF_PORTRAIT:
+               icon = elm_check_add(obj);
+
+               if (camapp->self_portrait == FALSE) {
+                       elm_check_state_set(icon, EINA_FALSE);
+               } else {
+                       elm_check_state_set(icon, EINA_TRUE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               break;
+       case CAM_MENU_FLASH:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_SHOOTING_MODE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_RECORDING_MODE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_SCENE_MODE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_EXPLOSURE_VALUE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_FOCUS_MODE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_TIMER:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_EFFECTS:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_WHITE_BALANCE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_ISO:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_METERING:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_ANTI_SHAKE:
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->anti_shake) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_anti_shake_popup_cb, (void*)ad);
+               ad->antishake_radio = icon;
+               break;
+       case CAM_MENU_OUTDOOR_VISIBILITY:/*TODO:is finding solution*/
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->outdoor_visibility) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_outdoor_visibility_popup_cb, (void*)ad);
+               ad->outdoor_visibility_radio = icon;
+               break;
+       case CAM_MENU_AUTO_CONTRAST:
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->auto_contrast) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               }
+               else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_autocontrast_popup_cb, (void*)ad);
+               ad->autocontrast_radio = icon;
+               break;
+
+       case CAM_MENU_GUIDELINES:
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->guideline) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_guideline_popup_cb, (void*)ad);
+               ad->guideline_radio = icon;
+               break;
+       case CAM_MENU_CAPTURE_VOICE:/*TODO:now no relase solution to support it*/
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->capture_by_voice) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_capture_by_voice_popup_cb, (void*)ad);
+               ad->capture_by_voice_radio = icon;
+               break;
+       case CAM_MENU_GPS_TAG:
+               icon = elm_check_add(obj);
+
+               if (camapp->gps) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_gps_popup_cb, (void*)ad);
+               ad->gps_radio = icon;
+               break;
+       case CAM_MENU_SAVE_AS_FLIP:
+               icon = elm_check_add(obj);
+
+               if (ad->camapp_handle->save_as_flip) {
+                       elm_check_state_set(icon, EINA_TRUE);
+               } else {
+                       elm_check_state_set(icon, EINA_FALSE);
+               }
+
+               elm_object_style_set(icon, "genlist/on&off");
+               evas_object_smart_callback_add(icon, "changed", __setting_save_as_flip_popup_cb, (void*)ad);
+               ad->save_as_flip_radio = icon;
+               break;
+       case CAM_MENU_STORAGE:
+               {
+                       char icon_name[CAM_FILE_PATH_MAX] = { 0 };
+                       icon = elm_image_add(obj);
+                       strncpy(icon_name, __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), BUTTON_STATE_NORMAL), sizeof(icon_name));
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               }
+               break;
+       case CAM_MENU_RESET:
+               break;
+       case CAM_MENU_MAX_NUMS:
+               DEBUG_TRACE("your array out, please check!");
+               break;
+       default:
+               DEBUG_TRACE("Error occur!");
+       }
+       if (icon) {
+               /*evas_object_resize(icon, 86 , 84);
+               evas_object_size_hint_min_set(icon, 86, 84);
+               evas_object_size_hint_max_set(icon, 86, 84);*/
+               evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       }
+       return icon;
+}
+
+static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       int index = (int)data;
+
+       switch(index) {
+       case CAM_MENU_SHORTCUTS:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EDIT_SHORTCUTS"));
+               break;
+       case CAM_MENU_BURST_SHOT_MODE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB"));
+               break;
+       case CAM_MENU_VOLUME_KEY:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"));
+               break;
+       case CAM_MENU_SELF_PORTRAIT:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT"));
+               break;
+       case CAM_MENU_FLASH:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FLASH"));
+               break;
+       case CAM_MENU_SHOOTING_MODE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE"));
+               break;
+       case CAM_MENU_RECORDING_MODE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE"));
+               break;
+       case CAM_MENU_SCENE_MODE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE"));
+               break;
+       case CAM_MENU_EXPLOSURE_VALUE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE"));
+               break;
+       case CAM_MENU_FOCUS_MODE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE"));
+               break;
+       case CAM_MENU_TIMER:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_TIMER"));
+               break;
+       case CAM_MENU_EFFECTS:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS"));
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION:
+               return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"));
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION:
+               return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"));
+               break;
+       case CAM_MENU_WHITE_BALANCE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB"));
+               break;
+       case CAM_MENU_ISO:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ISO"));
+               break;
+       case CAM_MENU_METERING:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_METERING"));
+               break;
+       case CAM_MENU_ANTI_SHAKE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE"));
+               break;
+       case CAM_MENU_OUTDOOR_VISIBILITY:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY"));
+               break;
+       case CAM_MENU_AUTO_CONTRAST:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST"));
+               break;
+       case CAM_MENU_GUIDELINES:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE"));
+               break;
+       case CAM_MENU_CAPTURE_VOICE:
+               return strdup("Capture with voice");
+               break;
+       case CAM_MENU_GPS_TAG:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG"));
+               break;
+       case CAM_MENU_SAVE_AS_FLIP:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED"));
+               break;
+       case CAM_MENU_STORAGE:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE"));
+               break;
+       case CAM_MENU_RESET:
+               return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET"));
+               break;
+       case CAM_MENU_MAX_NUMS:
+               DEBUG_TRACE("your array out, please check!");
+               break;
+       default:
+               DEBUG_TRACE("Error occur!");
+       }
+       return strdup("test");
+}
+
+static void __setting_gl_mouse_down(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info){
+
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) return;
+       if (!event_info) return;
+       if (ad->setting_ctxpopup) {
+               /*setting_ctxpopup_destroy(ad);*/
+               evas_object_hide(ad->setting_ctxpopup);
+       }
+       Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
+       setting_gl_x = mu->canvas.x;
+       setting_gl_y = mu->canvas.y;
+       setting_gl_x = mu->output.x;
+       setting_gl_y = mu->output.y;
+       DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
+       DEBUG_TRACE("mu->output.x = %d, mu->output.y = %d", mu->output.x, mu->output.y);
+
+       __setting_popup_timeout_checker_start(ad);
+       cam_app_timeout_checker_update();
+}
+
+/*mouse move func for setting popup*/
+static void __setting_gl_mouse_move(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info){
+
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) return;
+       if (!event_info) return;
+       if (ad->setting_ctxpopup) {
+               /*setting_ctxpopup_destroy(ad);*/
+               evas_object_hide(ad->setting_ctxpopup);
+       }
+       Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
+       setting_gl_x = mu->cur.canvas.x;
+       setting_gl_y = mu->cur.canvas.y;
+       setting_gl_x = mu->cur.output.x;
+       setting_gl_y = mu->cur.output.y;
+       DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
+       DEBUG_TRACE("mu->cur->canvas.x = %d, mu->cur->canvas.y = %d", mu->cur.canvas.x, mu->cur.canvas.y);
+
+       __setting_popup_timeout_checker_start(ad);
+       cam_app_timeout_checker_update();
+}
+
+static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj,
+                           void *event_info){
+
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) return;
+       cam_app_timeout_checker_update();
+       __setting_popup_timeout_checker_start(ad);
+       if (!event_info) return;
+       Evas_Coord x, y, w, h;
+
+       Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
+       shortcuts_canvas_prev_x = mu->canvas.x;
+       shortcuts_canvas_prev_y = mu->canvas.y;
+       DEBUG_TRACE("x = %d, y = %d", shortcuts_canvas_prev_x, shortcuts_canvas_prev_y);
+
+       cam_long_press_trigger(LONG_PRESS_ID_EDIT, mu->canvas.x, mu->canvas.y);
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       Eina_List *l = NULL;
+       ShortCutData *shortcuts_ele = NULL;
+
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               evas_object_geometry_get(shortcuts_ele->icon, &x, &y, &w, &h);
+               shortcuts_ele->x = x;
+               shortcuts_ele->y = y;
+               shortcuts_ele->w = w;
+               shortcuts_ele->h = h;
+               DEBUG_TRACE("x,%d y,%d w,%d h,%d index %d",x, y, w, h, shortcuts_ele->part_index);
+
+               if (obj == shortcuts_ele->icon) {
+                       ad->shortcut_data = shortcuts_ele;
+               }
+       }
+       if (!ad->shortcut_data) { /*not find shortcut data, so it will come from menubar*/
+               int menubar_no = -1;
+               if (check_if_shortcuts_from_menubar(ad, obj, &menubar_no)) {
+                       /*get shortcuts data:*/
+                       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+                               if (shortcuts_ele == NULL)
+                                       continue;
+                               if (shortcuts_ele->menu_bar_no == menubar_no) {
+                                       ad->shortcut_data = shortcuts_ele;
+                               }
+                       }
+               } else {
+                       DEBUG_TRACE("error occur!");
+               }
+       } else {
+               DEBUG_TRACE("find in the shortcuts panel");
+       }
+
+       evas_object_raise(obj);
+       evas_object_lower(evas_object_above_get(obj));
+
+}
+
+static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj,void *event_info)
+{
+
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) return;
+       if (!event_info) return;
+       pthread_mutex_lock(&edit_shortcuts_move_mutex);
+       ShortCutData *moving_ele = ad->shortcut_data;
+       ShortCutData *swap_ele = ad->swap_data;
+
+       /*NOTE: reset opacity*/
+       if (ad->swap_data) {
+               if (ad->swap_data->is_on_menu_bar) {
+                       int r, g, b, a;
+                       r = g = b = a = 0;
+                       if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
+                               evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
+                               evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
+                       }
+               } else {
+                       int r, g, b, a;
+                       r = g = b = a = 0;
+                       if (ad->swap_data->icon) {
+                               evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
+                               evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
+                       }
+               }
+       }
+
+       /*TODO: SWAP:*/
+       if (swap_ele && swap_ele->setting_type >= 0) {
+               if ((swap_ele->is_on_menu_bar & moving_ele->is_on_menu_bar) == TRUE) {/*note: both in menubar*/
+                       __swap_menubar_shortcuts(ad, moving_ele, swap_ele);
+                       cam_toolbar_menu_config_update((void *)ad);
+               } else if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
+                       DEBUG_TRACE("do nothing in mouse up");
+               } else {/*note: one is in menubar, one is not*/
+                       if (swap_ele->is_on_menu_bar == TRUE) {/*note: swap_ele is on menubar*/
+                               evas_object_event_callback_del(obj,
+                                               EVAS_CALLBACK_MOUSE_MOVE,
+                                               __setting_shortcuts_mouse_move);
+                               __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
+                       } else {/*note: swap_ele is not on menubar*/
+                               moving_ele->is_on_menu_bar = FALSE;
+                               int tmp_menub_bar_no = moving_ele->menu_bar_no;
+                               moving_ele->menu_bar_no = -1;
+                               DEL_EVAS_OBJECT(obj);
+                               __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
+                               update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
+                               cam_toolbar_menu_config_update((void *)ad);
+                               destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
+
+                               /*TODO: update part_index*/
+                               __edit_shortcuts_layout_shortcuts_insert(ad, swap_ele, moving_ele);
+                       }
+               }
+       }
+       if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar)) {
+       /*note: menu bar shortcuts move to the empty item in toolbar*/
+               if (moving_ele->is_on_menu_bar) {
+                       __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
+               }
+               moving_ele->is_on_menu_bar = TRUE;
+               moving_ele->menu_bar_no = swap_ele->menu_bar_no;
+               moving_ele->part_index = -1;
+               ad->toolbar_menu_arrays[moving_ele->menu_bar_no].menu_type = moving_ele->setting_type;
+               cam_toolbar_menu_config_update((void *)ad);
+               update_menubar_shortcuts_mouse_event(ad, moving_ele->menu_bar_no, FALSE);
+               evas_object_hide(moving_ele->icon);
+               free(swap_ele);
+               swap_ele = NULL;
+               ad->swap_data = NULL;
+       } else if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar == FALSE)) {
+       /*note: case: menubar shortcuts move to the empty item in edit short panel: flash|empty(move to here)|empty*/
+               if (moving_ele->is_on_menu_bar) {
+                       __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
+               }
+               moving_ele->is_on_menu_bar = FALSE;
+               moving_ele->menu_bar_no = -1;
+               moving_ele->part_index = swap_ele->part_index;
+               moving_ele->list_index = swap_ele->list_index;
+               cam_toolbar_menu_config_update((void *)ad);
+               evas_object_show(moving_ele->icon);
+               HIDE_EVAS_OBJECT(obj);
+               free(swap_ele);
+               swap_ele = NULL;
+               ad->swap_data = NULL;
+               __resort_edit_shortcuts_list_by_part_index();
+       }
+       ad->swap_data = NULL;
+       cam_long_press_cancel(LONG_PRESS_ID_EDIT);
+       pthread_mutex_unlock(&edit_shortcuts_move_mutex);
+
+}
+
+bool shortcuts_rect_check_intersect(Evas_Coord a_left, Evas_Coord a_top, Evas_Coord a_right, Evas_Coord a_bottom,
+                                               Evas_Coord b_left, Evas_Coord b_top, Evas_Coord b_right, Evas_Coord b_bottom)
+{
+       if( (MIN(a_right, b_right) - MAX(a_left, b_left) > 60)
+               && (MIN(a_bottom, b_bottom) - MAX(a_top, b_top)> 30)) {
+            return TRUE;
+       }
+       else {
+            return FALSE;
+       }
+}
+
+/*note: parent_shortcuts is swap_ele, sub_shortcuts is cur_ele, if cur_ele is in swap_ele, not swap them*/
+gboolean __cam_toolbar_shortcuts_rect_contain_check(CAM_Edit_ShortCuts_Rect sub_shortcuts,
+                                                                       CAM_Edit_ShortCuts_Rect parent_shortcuts,
+                                                                       int correction_w,
+                                                                       int correction_h)
+{
+       int swap_rel1_x, swap_rel1_y, swap_w, swap_h;
+       int cur_rel1_x, cur_rel1_y, cur_w, cur_h;
+       if (parent_shortcuts.w * parent_shortcuts.h < sub_shortcuts.w * sub_shortcuts.h) {
+               swap_rel1_x = sub_shortcuts.x;
+               swap_rel1_y = sub_shortcuts.y;
+               swap_w = sub_shortcuts.w;
+               swap_h = sub_shortcuts.h;
+
+               cur_rel1_x = parent_shortcuts.x;
+               cur_rel1_y = parent_shortcuts.y;
+               cur_w = parent_shortcuts.w;
+               cur_h = parent_shortcuts.h;
+
+       } else {
+               cur_rel1_x = sub_shortcuts.x;
+               cur_rel1_y = sub_shortcuts.y;
+               cur_w = sub_shortcuts.w;
+               cur_h = sub_shortcuts.h;
+
+               swap_rel1_x = parent_shortcuts.x;
+               swap_rel1_y = parent_shortcuts.y;
+               swap_w = parent_shortcuts.w;
+               swap_h = parent_shortcuts.h;
+       }
+
+       return __shortcuts_rect_contain_check(swap_rel1_x, swap_rel1_y, swap_w, swap_h,
+                                       cur_rel1_x, cur_rel1_y, cur_w, cur_h,
+                                       correction_w, correction_h);
+}
+
+static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
+                                                       int swap_rel1_y,
+                                                       int swap_w,
+                                                       int swap_h,
+                                                       int cur_rel1_x,
+                                                       int cur_rel1_y,
+                                                       int cur_w,
+                                                       int cur_h,
+                                                       int correction_w,
+                                                       int correction_h)
+{
+       int a_rel1_x = swap_rel1_x - correction_w;
+       int a_rel1_y = swap_rel1_y - correction_h;
+       int a_rel2_x;
+       if (swap_w < cur_w)
+               a_rel2_x = swap_rel1_x + cur_w + correction_w;
+       else
+               a_rel2_x = swap_rel1_x + swap_w + correction_w;
+       int a_rel2_y;
+       if (swap_h < cur_h)
+               a_rel2_y = swap_rel1_y + cur_h + correction_h;
+       else
+               a_rel2_y = swap_rel1_y + swap_h + correction_h;
+
+       int b_rel1_x = cur_rel1_x;
+       int b_rel1_y = cur_rel1_y;
+       int b_rel2_x = cur_rel1_x + cur_w;
+       int b_rel2_y = cur_rel1_y + cur_h;
+
+       if ((a_rel1_x < b_rel1_x)
+               &&(a_rel1_y < b_rel1_y)
+               &&(a_rel2_x > b_rel2_x)
+               &&(a_rel2_y > b_rel2_y)
+               ) {
+               return TRUE;
+       } else {
+
+               return FALSE;
+       }
+}
+
+
+/*
+@item_1:pre
+@item_2:behind item_1
+*/
+void shortcuts_swap(Eina_List **head, Eina_List * item_1, Eina_List * item_2)
+{
+
+       Eina_List *tmp_item_1_next = item_1->next;
+       Eina_List *tmp_item_2_prev = item_2->prev;
+       if(item_1->prev!=NULL)
+               item_1->prev->next = item_2;
+       else
+               *head = item_2;
+
+       item_2->prev = item_1->prev;
+
+       item_1->next = item_2->next;
+
+       if(item_2->next!=NULL)
+               item_2->next->prev = item_1;
+
+       if (tmp_item_1_next == item_2) { /*item_1->item_2*/
+               item_2->next = item_1;
+               item_1->prev = item_2;
+       } else {/*item_1->....->item_2*/
+               tmp_item_1_next->prev = item_2;
+               item_2->next = tmp_item_1_next;
+               tmp_item_2_prev->next = item_1;
+               item_1->prev = tmp_item_2_prev;
+       }
+}
+
+static void __swap_menubar_shortcuts_ctx(struct appdata *ad, ShortCutData *menu_ele, ShortCutData *cur_ele)
+{
+       if (!cur_ele || !ad || !menu_ele)
+               return;
+       cur_ele->is_on_menu_bar = TRUE;
+       cur_ele->menu_bar_no = menu_ele->menu_bar_no;
+       DEBUG_TRACE("cur_ele->menu_bar_no = %d", cur_ele->menu_bar_no);
+       if (cur_ele->menu_bar_no > CAM_MENU_BAR_LEFT_4 || cur_ele->menu_bar_no < CAM_MENU_BAR_LEFT_0) {
+               cam_critical(LOG_UI, "menubar no error, check it ASAP");
+               return;
+       }
+
+       /*do:ele_layout*/
+       ad->toolbar_menu_arrays[cur_ele->menu_bar_no].menu_type = cur_ele->setting_type;
+       update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
+
+       menu_ele->is_on_menu_bar = FALSE;
+       menu_ele->menu_bar_no = -1;
+       char buf[16] = { 0 };
+       snprintf(buf, sizeof(buf),"row.%d", menu_ele->part_index);
+       DEBUG_TRACE("PART:%s", buf);
+       evas_object_show(menu_ele->icon);
+       evas_object_hide(cur_ele->icon);
+       snprintf(buf, sizeof(buf),"row.%d", cur_ele->part_index);
+       DEBUG_TRACE("PART:%s", buf);
+       cam_toolbar_menu_config_update((void *)ad);
+
+}
+
+static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect)
+{
+       if (!rect) return;
+       Evas_Coord x=0, y=0, w=0, h=0;
+       if (shortcuts_icon)
+               evas_object_geometry_get(shortcuts_icon, &x, &y, &w, &h);
+       rect->x = x;
+       rect->y = y;
+       rect->w = w;
+       rect->h = h;
+}
+
+static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no)
+{
+       if (!ad) return;
+       if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0)
+               return;
+
+       ad->toolbar_menu_arrays[menubar_no].menu_type = -1;
+       Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
+       edje_object_part_unswallow(_EDJ(ad->toolbar_edje), icon);
+       DEL_EVAS_OBJECT(icon);
+       icon = elm_image_add(ad->toolbar_edje);
+       elm_image_file_set(icon, NULL, NULL);
+       char buf[32+1] = {'\0',};
+       snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
+       edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
+       ad->toolbar_menu_arrays[menubar_no].icon = icon;
+}
+
+/*
+  *    note: check moving shortcuts with possible empty shortcuts in menubar,
+  *    if find, and moving shortcuts is in the empty shortcuts area, push this moving
+  *    shortcuts in this empty shortcuts. and return true, else return false
+  */
+gboolean check_with_menubar_empty_shortcuts(struct appdata *ad,  ShortCutData *moving_ele, Evas_Object *moving_obj)
+{
+       if (!ad || !moving_ele ||!moving_obj)
+               return FALSE;
+       CAM_Edit_ShortCuts_Rect sub_rect;
+       ShortCutData *cur_ele = moving_ele;
+       __get_shortcuts_rect(moving_obj, &sub_rect);
+
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               int type = ad->toolbar_menu_arrays[i].menu_type;
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (type < 0) {
+                       CAM_Edit_ShortCuts_Rect parent_rect;
+                       __get_shortcuts_rect(icon, &parent_rect);
+                       DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
+                       gboolean sub_in_parent = FALSE;
+                       sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                                       parent_rect,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
+                       if (sub_in_parent) {
+                               if (cur_ele->is_on_menu_bar) {
+                                       __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
+                               }
+                               cur_ele->is_on_menu_bar = TRUE;
+                               cur_ele->menu_bar_no = i;
+                               cur_ele->part_index = -1;
+                               ad->toolbar_menu_arrays[i].menu_type = cur_ele->setting_type;
+                               cam_toolbar_menu_config_update((void *)ad);
+
+                               update_menubar_shortcuts_mouse_event(ad, i, FALSE);
+
+                               evas_object_hide(cur_ele->icon);
+                               cam_long_press_cancel(LONG_PRESS_ID_EDIT);
+                               return TRUE;
+                       }
+               }
+       }
+
+       return FALSE;
+}
+
+gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no)
+{
+       if (!obj || !ad || !menubar_no)
+               return FALSE;
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (icon == obj) {
+                       *menubar_no = i;
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele)
+{
+       Evas_Object *icon;
+       Evas_Object_Event_Cb func;
+       CAM_MENU_ITEM setting_type;
+       char *icon_filepath;
+       char *name;
+       int menu_bar_no;
+       gboolean is_on_menu_bar;
+       Evas_Coord x, y, w, h;
+       int part_index;
+       int list_index;
+       int row;
+       int col;
+
+       icon = cur_ele->icon;
+       func = cur_ele->func;
+       setting_type = cur_ele->setting_type;
+       icon_filepath = cur_ele->icon_filepath;
+       name = cur_ele->name;
+       menu_bar_no = cur_ele->menu_bar_no;
+       is_on_menu_bar = cur_ele->is_on_menu_bar;
+       x = cur_ele->x;
+       y = cur_ele->y;
+       w = cur_ele->w;
+       h = cur_ele->h;
+       part_index = cur_ele->part_index;
+       list_index = cur_ele->list_index;
+       row = cur_ele->row;
+       col = cur_ele->col;
+
+       cur_ele->icon = swap_ele->icon;
+       cur_ele->func = swap_ele->func;
+       cur_ele->setting_type = swap_ele->setting_type;
+       cur_ele->icon_filepath = swap_ele->icon_filepath;
+       cur_ele->name = swap_ele->name;
+       /*cur_ele->menu_bar_no = swap_ele->menu_bar_no;*/
+       cur_ele->is_on_menu_bar = swap_ele->is_on_menu_bar;
+       cur_ele->x = swap_ele->x;
+       cur_ele->y = swap_ele->y;
+       cur_ele->w = swap_ele->w;
+       cur_ele->h = swap_ele->h;
+       cur_ele->part_index = swap_ele->part_index;
+       /*cur_ele->list_index = swap_ele->list_index;*/
+       cur_ele->row = swap_ele->row;
+       cur_ele->col = swap_ele->col;
+
+       swap_ele->icon = icon;
+       swap_ele->func = func;
+       swap_ele->setting_type = setting_type;
+       swap_ele->icon_filepath = icon_filepath;
+       swap_ele->name = name;
+       /*swap_ele->menu_bar_no = menu_bar_no;*/
+       swap_ele->is_on_menu_bar = is_on_menu_bar;
+       swap_ele->x = x;
+       swap_ele->y = y;
+       swap_ele->w = w;
+       swap_ele->h = h;
+       swap_ele->part_index = part_index;
+       /*swap_ele->list_index = swap_ele->list_index;*/
+       swap_ele->row = row;
+       swap_ele->col = col;
+
+}
+
+static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
+                                                                               int setting_type,
+                                                                               int menubar_no)
+{
+       if (!ad) return;
+       if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
+
+       ad->toolbar_menu_arrays[menubar_no].menu_type = setting_type;
+       Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
+       DEL_EVAS_OBJECT(icon);
+       icon = elm_image_add(ad->toolbar_edje);
+       char buf[32 + 1] = { '\0', };
+       snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
+       edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
+        ad->toolbar_menu_arrays[menubar_no].icon = icon;
+       __update_menubar_icon_by_index(ad, setting_type);
+}
+
+static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele)
+{
+       __shortcuts_data_swap(cur_ele, swap_ele);
+       __update_menubar_shortcuts_by_menubar_no(ad, cur_ele->setting_type, cur_ele->menu_bar_no);
+       __update_menubar_shortcuts_by_menubar_no(ad, swap_ele->setting_type, swap_ele->menu_bar_no);
+       update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
+       update_menubar_shortcuts_mouse_event(ad, swap_ele->menu_bar_no, FALSE);
+}
+
+/*NOTE: moving shortcuts, is from menubar*/
+static gboolean __check_menubar_moving_shortcuts_swap(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
+{
+       cam_retv_if(ad == NULL, FALSE);
+       cam_retv_if(moving_ele == NULL, FALSE);
+       cam_retv_if(moving_obj == NULL, FALSE);
+       Eina_List *l;
+       ShortCutData *shortcuts_ele;
+       ShortCutData *cur_ele = moving_ele;
+       CAM_Edit_ShortCuts_Rect sub_rect;
+       __get_shortcuts_rect(moving_obj, &sub_rect);
+
+       ShortCutData *swap_ele = NULL;
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (shortcuts_ele->icon == cur_ele->icon) {
+                       DEBUG_TRACE("find self");
+                       continue;
+               }
+               Evas_Object *parent_icon = NULL;
+               if (shortcuts_ele->is_on_menu_bar) {
+                       parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
+
+               } else {
+                       parent_icon = shortcuts_ele->icon;
+               }
+
+               CAM_Edit_ShortCuts_Rect parent_rect;
+               __get_shortcuts_rect(parent_icon, &parent_rect);
+
+               gboolean sub_in_parent = FALSE;
+               sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                                       parent_rect,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
+               if (sub_in_parent) {
+                       DEBUG_TRACE("find swap ele");
+                       swap_ele = shortcuts_ele;
+                       break;
+               }
+       }
+       if (!swap_ele) {
+               DEBUG_TRACE("not find, continue");
+               return FALSE;
+               /*evas_object_move(moving_obj, x , y);*/
+       }
+
+       if (swap_ele->is_on_menu_bar) {/*TODO: support menubar shortcuts swap*/
+               __swap_menubar_shortcuts(ad, cur_ele, swap_ele);
+               cam_toolbar_menu_config_update((void *)ad);
+               cam_long_press_cancel(LONG_PRESS_ID_EDIT);
+               return TRUE;
+       } else {
+               cur_ele->is_on_menu_bar = FALSE;
+               int tmp_menub_bar_no = cur_ele->menu_bar_no;
+               cur_ele->menu_bar_no = -1;
+               DEL_EVAS_OBJECT(moving_obj);
+
+               __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
+               update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
+
+               cam_toolbar_menu_config_update((void *)ad);
+
+               cam_long_press_cancel(LONG_PRESS_ID_EDIT);
+               destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
+               return TRUE;
+       }
+
+
+}
+
+static void __edit_shortcuts_layout_shortcuts_move_prev(struct appdata *ad,
+                                                                       ShortCutData *swap_ele,
+                                                                       ShortCutData *cur_ele)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(swap_ele == NULL);
+       cam_ret_if(cur_ele == NULL);
+       Eina_List *l;
+       ShortCutData *shortcuts_ele;
+       Eina_List *cur_item = NULL;
+       Eina_List *swap_item = NULL;
+       cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
+       swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
+
+       /*
+       *
+       *       note: cur_item ->...->swap_item, should insert cur_item after swap_item, and
+       *       move between cur_item ...swap_item items.
+       *
+       */
+
+
+
+       int temp_swap_ele_list_index = swap_ele->list_index;
+       int temp_swap_ele_part_index = swap_ele->part_index;
+       EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (shortcuts_ele == cur_ele) {
+                       cur_ele->list_index = temp_swap_ele_list_index;
+                       cur_ele->part_index = temp_swap_ele_part_index;
+                       continue;
+               }
+
+               if (!shortcuts_ele->is_on_menu_bar) {
+                       /* TODO: for animator effect*/
+                       char buf[32+1] = { '\0',};
+                       snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_PREV, buf);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
+                       shortcuts_ele->part_index -= 1;
+               }
+               shortcuts_ele->list_index -= 1;
+               if (shortcuts_ele == swap_ele) {
+                       break;
+               }
+       }
+       Eina_List *left = NULL;
+       Eina_List *right = NULL;
+       shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
+
+       left = eina_list_split_list(shortcuts_ele_list, swap_item, &right);
+       left = eina_list_append(left, cur_ele);
+       shortcuts_ele_list = eina_list_merge(left, right);
+
+
+}
+
+/*note: insert insert_ele before cur_ele*/
+static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
+                                                                       ShortCutData *cur_ele,
+                                                                       ShortCutData *insert_ele)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(cur_ele == NULL);
+       cam_ret_if(insert_ele == NULL);
+       Eina_List *l = NULL;
+       ShortCutData *shortcuts_ele = NULL;
+       Eina_List *cur_item = NULL;
+
+       insert_ele->part_index = cur_ele->part_index;
+       cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
+       EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (!shortcuts_ele->is_on_menu_bar) {
+                       char buf[32+1] = { '\0',};
+                       snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
+                       shortcuts_ele->part_index += 1;
+               }
+       }
+       __resort_edit_shortcuts_list_by_part_index();
+
+}
+
+
+static void __edit_shortcuts_layout_shortcuts_move_next(struct appdata *ad,
+                                                                       ShortCutData *swap_ele,
+                                                                       ShortCutData *cur_ele)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(swap_ele == NULL);
+       cam_ret_if(cur_ele == NULL);
+       Eina_List *l;
+       ShortCutData *shortcuts_ele;
+       Eina_List *swap_item = NULL;
+
+       swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
+
+       /*
+       *
+       *       note: swap_item ->...->cur_item, should insert cur_item before swap_item, and
+       *       move between swap_item ...cur_item items.
+       *
+       */
+
+       int temp_swap_ele_list_index = swap_ele->list_index;
+       int temp_swap_ele_part_index = swap_ele->part_index;
+       EINA_LIST_FOREACH(swap_item, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (shortcuts_ele == cur_ele) {
+                       cur_ele->list_index = temp_swap_ele_list_index;
+                       cur_ele->part_index = temp_swap_ele_part_index;
+                       break;
+               }
+               if (!shortcuts_ele->is_on_menu_bar) {
+                       /* TODO: for animator effect*/
+                       char buf[32+1] = { '\0',};
+                       snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
+                       edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
+                       shortcuts_ele->part_index += 1;
+               }
+               shortcuts_ele->list_index += 1;
+       }
+       Eina_List *left = NULL;
+       Eina_List *right = NULL;
+       shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
+       if (swap_item->prev) {
+               left = eina_list_split_list(shortcuts_ele_list, swap_item->prev, &right);
+               left = eina_list_append(left, cur_ele);
+               shortcuts_ele_list = eina_list_merge(left, right);
+       } else {
+               shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, cur_ele);
+       }
+}
+
+static void __resort_edit_shortcuts(struct appdata *ad, Evas_Object *moving_obj)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(moving_obj == NULL);
+       __resort_edit_shortcuts_list_by_part_index();
+       Eina_List *l;
+       ShortCutData *shortcuts_ele;
+       char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
+       }
+
+
+       int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
+
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
+               if (shortcuts_ele->part_index >=0
+                       && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
+
+                       shortcuts_part_to_menu[shortcuts_ele->part_index] = shortcuts_ele->setting_type;
+               }
+               if (moving_obj == shortcuts_ele->icon) {
+                       ad->shortcut_data = shortcuts_ele;
+                       DEBUG_TRACE("PART:%s", buf);
+                       continue;
+               }
+               DEBUG_TRACE("PART:%s", buf);
+               edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
+       }
+
+       int index = 0;
+       for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
+               cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                       edit_shortcuts_prop_array[index].prop_name,
+                                       shortcuts_part_to_menu[index]);
+       }
+
+}
+
+static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
+                                                                       ShortCutData *swap_ele,
+                                                                       ShortCutData *cur_ele)
+{
+       cam_ret_if(ad == NULL);
+       cam_ret_if(swap_ele == NULL);
+       cam_ret_if(cur_ele == NULL);
+       Eina_List *cur_item = NULL;
+       Eina_List *prev_item = NULL;
+       Eina_List *next_item = NULL;
+       Evas_Coord prev_x=0, prev_y=0, prev_w=0, prev_h=0;
+       Evas_Coord next_x=0, next_y=0, next_w=0, next_h=0;
+
+       cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
+       if (!cur_item)
+               return;
+       if (swap_ele->list_index > cur_ele->list_index) {
+               next_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
+               if (NULL != next_item) {
+                       evas_object_geometry_get(swap_ele->icon, &next_x, &next_y, &next_w, &next_h);
+                       evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
+                       cur_ele->x = next_x;
+                       cur_ele->y = next_y;
+                       cur_ele->w = next_w;
+                       cur_ele->h = next_h;
+                       int idx = swap_ele->part_index;
+                       swap_ele->part_index = cur_ele->part_index;
+                       cur_ele->part_index = idx;
+
+                       idx = swap_ele->list_index;
+                       swap_ele->list_index = cur_ele->list_index;
+                       cur_ele->list_index = idx;
+                       if (swap_ele->is_on_menu_bar)
+                               __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
+                       shortcuts_swap(&shortcuts_ele_list, cur_item, next_item);
+               }
+       } else {
+               prev_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
+               if(NULL != prev_item) {
+                       evas_object_geometry_get(swap_ele->icon, &prev_x, &prev_y, &prev_w, &prev_h);
+                       evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
+                       cur_ele->x = prev_x;
+                       cur_ele->y = prev_y;
+                       cur_ele->w = prev_w;
+                       cur_ele->h = prev_h;
+                       int idx = swap_ele->part_index;
+                       swap_ele->part_index = cur_ele->part_index;
+                       cur_ele->part_index = idx;
+
+                       idx = swap_ele->list_index;
+                       swap_ele->list_index = cur_ele->list_index;
+                       cur_ele->list_index = idx;
+                       if (swap_ele->is_on_menu_bar)
+                               __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
+                       shortcuts_swap(&shortcuts_ele_list, prev_item, cur_item);
+               }
+       }
+}
+
+static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no)
+{
+       if (!ad) return NULL;
+       if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return NULL;
+       return ad->toolbar_menu_arrays[menubar_no].icon;
+}
+
+/*note: check with menu_no menubar shortcut*/
+static gboolean __check_with_menubar_shortcuts(struct appdata *ad, int menu_no, ShortCutData *moving_ele, Evas_Object *moving_obj)
+{
+       if (!ad || !moving_ele ||!moving_obj)
+               return FALSE;
+       CAM_Edit_ShortCuts_Rect sub_rect;
+       ShortCutData *cur_ele = moving_ele;
+       __get_shortcuts_rect(moving_obj, &sub_rect);
+
+       Evas_Object *toolbar_icon = __get_toolbar_shortcuts_evas_object(ad, menu_no);
+
+       /*check space menu*/
+       CAM_Edit_ShortCuts_Rect parent_rect;
+       __get_shortcuts_rect(toolbar_icon, &parent_rect);
+       DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
+       gboolean sub_in_parent = FALSE;
+       sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                               parent_rect,
+                                                               EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
+                                                               EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
+       if (sub_in_parent) {
+               if (cur_ele->is_on_menu_bar) {
+                       __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
+               }
+               cur_ele->is_on_menu_bar = TRUE;
+               cur_ele->menu_bar_no = menu_no;
+               cur_ele->part_index = -1;
+               ad->toolbar_menu_arrays[menu_no].menu_type = cur_ele->setting_type;
+               cam_toolbar_menu_config_update((void *)ad);
+               update_menubar_shortcuts_mouse_event(ad, menu_no, FALSE);
+               evas_object_hide(cur_ele->icon);
+               cam_long_press_cancel(LONG_PRESS_ID_EDIT);
+               return TRUE;
+
+       }
+       return FALSE;
+
+}
+
+/*note: get menubar_no now is covering*/
+static int __get_edit_shortcuts_swap_menubar_no(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
+{
+       if (!ad || !moving_ele ||!moving_obj)
+               return FALSE;
+       CAM_Edit_ShortCuts_Rect sub_rect;
+
+       __get_shortcuts_rect(moving_obj, &sub_rect);
+
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               int type = ad->toolbar_menu_arrays[i].menu_type;
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (type < 0) {
+                       CAM_Edit_ShortCuts_Rect parent_rect;
+                       __get_shortcuts_rect(icon, &parent_rect);
+                       DEBUG_TRACE("==%d==", i);
+                       DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
+                       DEBUG_TRACE("x y w h%d %d %d %d", sub_rect.x, sub_rect.y, sub_rect.w, sub_rect.h);
+                       gboolean sub_in_parent = FALSE;
+                       sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                                       parent_rect,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
+                       if (sub_in_parent) {
+                               DEBUG_TRACE("%d", i);
+                               return i;
+                       }
+               }
+       }
+
+       return CAM_MENU_BAR_LEFT_INVALID;
+
+}
+
+/*NOTE: TODO*/
+static gboolean __get_edit_shortcuts_swap_element(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj, ShortCutData **swap_ele)
+{
+       if (swap_ele == NULL) return FALSE;
+
+       ShortCutData *cur_ele = moving_ele;
+       CAM_Edit_ShortCuts_Rect sub_rect;
+       __get_shortcuts_rect(moving_obj, &sub_rect);
+
+       Eina_List *l = NULL;
+       ShortCutData *shortcuts_ele = NULL;
+       int edit_shortcuts_item_count = -1;
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (shortcuts_ele->icon == cur_ele->icon) {
+                       continue;
+               }
+               Evas_Object *parent_icon = NULL;
+               if (shortcuts_ele->is_on_menu_bar) {
+                       parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
+
+               } else {
+                       parent_icon = shortcuts_ele->icon;
+                       edit_shortcuts_item_count++;
+               }
+
+               CAM_Edit_ShortCuts_Rect parent_rect;
+               __get_shortcuts_rect(parent_icon, &parent_rect);
+
+               gboolean sub_in_parent = FALSE;
+               sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                                       parent_rect,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
+                                                                       EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
+               if (sub_in_parent) {
+                       DEBUG_TRACE("find swap ele");
+                       *swap_ele = shortcuts_ele;
+                       return TRUE;
+               }
+       }
+
+       /*NOTE: case: moving shortcut is from menubar, and it is moving into the edit shortcuts the first empty panel*/
+       char buf[16] = { 0 };
+       snprintf(buf, sizeof(buf),"row.%d", (edit_shortcuts_item_count+1));
+       Evas_Object *part_object = (Evas_Object *)
+                           edje_object_part_object_get(_EDJ
+                                                       (ad->edit_shortcuts_popup_ctx), buf);
+       if (cur_ele->is_on_menu_bar) {
+               CAM_Edit_ShortCuts_Rect parent_rect;
+               __get_shortcuts_rect(part_object, &parent_rect);
+
+               gboolean sub_in_parent = FALSE;
+               sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
+                                                                       parent_rect,
+                                                                       0,
+                                                                       0);
+               if (sub_in_parent) {
+                       ShortCutData *virtual_ele = NULL;
+                       if (ad->swap_data) {
+                               if (ad->swap_data->is_virtual) {
+                                       free(ad->swap_data);
+                                       ad->swap_data = NULL;
+                               }
+                       }
+                       virtual_ele = calloc(1, sizeof(ShortCutData));
+                       if (virtual_ele) {
+                               virtual_ele->is_virtual = TRUE;
+                               virtual_ele->setting_type = -1;
+                               virtual_ele->is_on_menu_bar = FALSE;
+                               virtual_ele->part_index= edit_shortcuts_item_count+1;
+                       }
+                       *swap_ele = virtual_ele;
+                       return TRUE;
+               }
+       }
+       *swap_ele = NULL;
+       return FALSE;
+}
+
+/*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
+static void __resort_edit_shortcuts_list_by_part_index(void)
+{
+       if (shortcuts_ele_list == NULL) return;
+       shortcuts_ele_list = eina_list_sort(shortcuts_ele_list,
+                                               eina_list_count(shortcuts_ele_list),
+                                               __edit_shortcuts_list_sort_cb);
+       Eina_List *l = NULL;
+       ShortCutData *shortcuts_ele = NULL;
+       int list_index = 0;
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               shortcuts_ele->list_index = list_index;
+               DEBUG_TRACE("part_index %d, list_index %d", shortcuts_ele->part_index, shortcuts_ele->list_index);
+               list_index++;
+       }
+
+}
+
+/*NOTE: swap integer, we do not judge a, b wether null*/
+static void __swap_int_type_value(int *a, int *b)
+{
+       int tmp = 0;
+       tmp = *a;
+       *a = *b;
+       *b = tmp;
+}
+
+static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       if (!ad) return;
+       if (!event_info) return;
+       cam_app_timeout_checker_update();/*note: update check_timer*/
+       __setting_popup_timeout_checker_start(ad);
+
+/*note: check wether is long press*/
+       Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
+       cam_long_press_validate(LONG_PRESS_ID_EDIT, mu->cur.canvas.x, mu->cur.canvas.y);
+       if (!cam_get_long_press_running_state(LONG_PRESS_ID_EDIT)) {
+               return;
+       }
+
+/*note: update coordinate*/
+       Evas_Coord cur_x=0, cur_y=0, cur_w=0, cur_h=0;
+       Evas_Coord x=0, y=0;
+       Evas_Coord dx, dy;
+       evas_object_geometry_get(obj, &cur_x, &cur_y, &cur_w, &cur_h);
+       x = cur_x + (mu->cur.canvas.x - shortcuts_canvas_prev_x);
+       y = cur_y + (mu->cur.canvas.y - shortcuts_canvas_prev_y);
+       dx = mu->cur.canvas.x - shortcuts_canvas_prev_x;
+       dy = mu->cur.canvas.y - shortcuts_canvas_prev_y;
+       shortcuts_canvas_prev_x = mu->cur.canvas.x;
+       shortcuts_canvas_prev_y = mu->cur.canvas.y;
+
+
+/*note: check swap elements*/
+       pthread_mutex_lock(&edit_shortcuts_move_mutex);
+       ShortCutData *moving_ele = ad->shortcut_data;
+       ShortCutData *swap_ele = NULL;
+       gboolean swap_condition = __get_edit_shortcuts_swap_element(ad, moving_ele, obj, &swap_ele);
+       DEBUG_TRACE("%d", swap_condition);
+
+       if (swap_condition) {
+               if (ad->swap_data) {
+                       if (ad->swap_data->is_on_menu_bar) {
+                               if (ad->swap_data->menu_bar_no != swap_ele->menu_bar_no) {
+                                       int r, g, b, a;
+                                       r = g = b = a = 0;
+                                       if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
+                                               evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
+                                               evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
+                                       }
+                               }
+                       }
+               }
+               ad->swap_data = swap_ele;
+               if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
+                       if (ABS(moving_ele->part_index - swap_ele->part_index) == 1) {
+                               __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
+                       } else if (moving_ele->list_index > swap_ele->list_index) {
+                               __edit_shortcuts_layout_shortcuts_move_next(ad, swap_ele, moving_ele);
+                       } else {
+                               __edit_shortcuts_layout_shortcuts_move_prev(ad, swap_ele, moving_ele);
+                       }
+                       __resort_edit_shortcuts(ad, obj);
+                       evas_object_move(obj, x , y);
+                       goto EXIT_MOVE;
+               } else {
+                       if (swap_ele->is_on_menu_bar) {
+                               int r, g, b, a;
+                               r = g = b = a = 0;
+                               if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
+                                       evas_object_color_get(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, &r, &g, &b, &a);
+                                       evas_object_color_set(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, r, g, b, 30);
+                               }
+                       } else {
+                               /*todo: */
+                               if (swap_ele->setting_type == -1) {/*note: swap_ele is empty part in edit shortcuts panel*/
+                                       DEBUG_TRACE("swap_ele is empty part in edit shortcuts panel");
+                               }
+
+
+                               int r, g, b, a;
+                               r = g = b = a = 0;
+                               if (swap_ele->icon) {
+                                       evas_object_color_get(swap_ele->icon, &r, &g, &b, &a);
+                                       evas_object_color_set(swap_ele->icon, r, g, b, 30);
+                               }
+                       }
+               }
+               evas_object_move(obj, x , y);
+               goto EXIT_MOVE;
+       } else {
+               if (ad->swap_data) {
+                       if (ad->swap_data->is_on_menu_bar) {
+                               int r, g, b, a;
+                               r = g = b = a = 0;
+                               if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
+                                       evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
+                                       evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
+                               }
+                       } else {
+                               int r, g, b, a;
+                               r = g = b = a = 0;
+                               if (ad->swap_data->icon) {
+                                       evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
+                                       evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
+                               }
+                       }
+               }
+               ad->swap_data = NULL;
+       }
+
+       int menu_no = __get_edit_shortcuts_swap_menubar_no(ad, moving_ele, obj);
+       /*TODO: for mouse up swap, we could to record a virtual shortcut element*/
+       if (menu_no != CAM_MENU_BAR_LEFT_INVALID) {
+               ShortCutData *virtual_ele = NULL;
+               virtual_ele = calloc(1, sizeof(ShortCutData));
+               if (virtual_ele) {
+                       virtual_ele->is_virtual = TRUE;
+                       virtual_ele->setting_type = -1;
+                       virtual_ele->menu_bar_no = menu_no;
+                       virtual_ele->is_on_menu_bar = TRUE;
+               }
+               ad->swap_data = virtual_ele;
+
+               /*TODO: set swap_ele style*/
+       }
+
+       evas_object_move(obj, x , y);
+EXIT_MOVE:
+       pthread_mutex_unlock(&edit_shortcuts_move_mutex);
+
+}
+
+void cam_setting_gl_style_set(void)
+{
+       itc.item_style = "camera/1text.1icon";
+       itc.func.text_get = _setting_gl_text_get;
+       itc.func.content_get = _setting_gl_icon_get;
+       itc.func.state_get = NULL;
+       itc.func.del = NULL;
+}
+
+static void __cam_toolbar_display_shortcuts_editmode(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,edit", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,edit", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,edit", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,edit", "prog");
+}
+
+static void __cam_toolbar_exit_shortcuts_editmode(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_1_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_2_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_3_icon,normal", "prog");
+       edje_object_signal_emit(_EDJ(ad->toolbar_edje),
+                                       "toolbar_4_icon,normal", "prog");
+}
+
+/*init shortcuts*/
+static int __cam_long_press_editmode_cb(void *data, int x, int y)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, -1);
+       DEBUG_TRACE();
+
+       int err = 0;
+       err = pthread_mutex_init(&edit_shortcuts_move_mutex, NULL);
+       if (err != 0) {
+               cam_critical(LOG_CAM, "Create px inst mutex failed");
+               return FALSE;
+       }
+
+       if (ad->shortcut_data) {
+               edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), ad->shortcut_data->icon);
+               evas_object_event_callback_add(ad->shortcut_data->icon,
+                                               EVAS_CALLBACK_MOUSE_MOVE,
+                                               __setting_shortcuts_mouse_move,
+                                               (void *)ad);
+       }
+       evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, TRUE);
+
+       return 0;
+}
+
+static int __cam_long_press_exit_editmode_cb(void *data, int x, int y)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retv_if(ad == NULL, -1);
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retv_if(camapp == NULL, -1);
+       DEBUG_TRACE();
+
+       /*re-sort sortcuts element list*/
+       int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
+
+       ShortCutData *shortcuts_ele = NULL;
+       Eina_List *l = NULL;
+       int temp_index = 0;
+       int temp_list_index = 0;
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               shortcuts_ele->list_index = temp_list_index;
+               temp_list_index++;
+               if (shortcuts_ele->is_on_menu_bar) {
+                       shortcuts_ele->part_index = -1;
+                       continue;
+               }
+               shortcuts_ele->part_index = temp_index;
+               shortcuts_part_to_menu[temp_index] = shortcuts_ele->setting_type;
+               temp_index++;
+               DEBUG_TRACE("shortcuts_ele->index %d" , shortcuts_ele->part_index);
+       }
+
+       /*re-set menubar shortcuts*/
+       int i = 0;
+       for (i = CAM_MENU_SHORTCUTS; i < CAM_MENU_MAX_NUMS; i++) {
+               __update_menubar_icon_by_index(ad, i);
+       }
+
+       /*menu bar shortcut update*/
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
+       }
+
+       /* shortcut panel update*/
+       char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
+
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
+
+       }
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele == NULL)
+                       continue;
+               if (shortcuts_ele->part_index <  0 ||
+                       shortcuts_ele->part_index >19) {
+                       continue;
+               }
+               snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
+               DEBUG_TRACE("PART:%s", buf);
+               edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
+       }
+
+       int index = 0;
+       for (index = CAM_EDIT_SHORTCUTS_INDEX_1; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
+               cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                       edit_shortcuts_prop_array[index].prop_name,
+                                       shortcuts_part_to_menu[index]);
+       }
+
+       __cam_toolbar_display_shortcuts_editmode(ad);
+       __toolbar_dim_setting_shortcuts(ad);
+       if (ad->shortcut_data) {
+               if (ad->shortcut_data->icon) {
+                       evas_object_event_callback_del(ad->shortcut_data->icon,
+                                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                                       __setting_shortcuts_mouse_move);
+               }
+       }
+
+       ad->shortcut_data = NULL;
+       ad->swap_data = NULL;
+       evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, FALSE);
+       pthread_mutex_destroy(&edit_shortcuts_move_mutex);
+       return 0;
+}
+
+static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon)
+{
+       if (!ad) {
+               *icon = NULL;
+               *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
+               return;
+       }
+
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               if (index == ad->toolbar_menu_arrays[i].menu_type) {
+                       *menu_bar_no = i;
+                       *icon = ad->toolbar_menu_arrays[i].icon;
+                       return;
+               }
+       }
+
+       *icon = NULL;
+       *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
+
+       return;
+}
+
+void create_menubar_shortcuts_mouse_event(struct appdata *ad)
+{
+       if (!ad)
+               return;
+       int i = 0;
+       /*note: CAM_MENU_BAR_LEFT_0: do not need register*/
+       for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               int type = ad->toolbar_menu_arrays[i].menu_type;
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (type >= 0) {
+                       evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                                       __setting_shortcuts_mouse_down);
+                       evas_object_event_callback_add(icon,
+                                               EVAS_CALLBACK_MOUSE_DOWN,
+                                               __setting_shortcuts_mouse_down,
+                                               (void *)ad);
+                       evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                                       __setting_shortcuts_mouse_move);
+                       evas_object_event_callback_add(icon,
+                                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                                       __setting_shortcuts_mouse_move,
+                                                       (void *)ad);
+                       evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_UP,
+                                                       __setting_shortcuts_mouse_up);
+                       evas_object_event_callback_add(icon,
+                                                       EVAS_CALLBACK_MOUSE_UP,
+                                                       __setting_shortcuts_mouse_up,
+                                                       (void *)ad);
+               }
+       }
+
+}
+
+void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
+{
+       if (!ad)
+               return;
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               int type = ad->toolbar_menu_arrays[i].menu_type;
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (i == menubar_no || all_menubar) {
+                       if (type < 0) {
+                               evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                                       __setting_shortcuts_mouse_down);
+                               evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                                       __setting_shortcuts_mouse_move);
+                               evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_UP,
+                                                       __setting_shortcuts_mouse_up);
+                       } else {
+                               evas_object_event_callback_del(icon,
+                                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                                       __setting_shortcuts_mouse_down);
+                               evas_object_event_callback_add(icon,
+                                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                                       __setting_shortcuts_mouse_down,
+                                                       (void *)ad);
+                               evas_object_event_callback_del(icon,
+                                                               EVAS_CALLBACK_MOUSE_MOVE,
+                                                               __setting_shortcuts_mouse_move);
+                               evas_object_event_callback_add(icon,
+                                                               EVAS_CALLBACK_MOUSE_MOVE,
+                                                               __setting_shortcuts_mouse_move,
+                                                               (void *)ad);
+                               evas_object_event_callback_del(icon,
+                                                               EVAS_CALLBACK_MOUSE_UP,
+                                                               __setting_shortcuts_mouse_up);
+                               evas_object_event_callback_add(icon,
+                                                               EVAS_CALLBACK_MOUSE_UP,
+                                                               __setting_shortcuts_mouse_up,
+                                                               (void *)ad);
+                       }
+               }
+
+       }
+}
+
+
+void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
+{
+       if (!ad)
+               return;
+       int i = 0;
+       for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
+               Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
+               if (i == menubar_no || all_menubar) {
+                       evas_object_event_callback_del(icon,
+                                               EVAS_CALLBACK_MOUSE_DOWN,
+                                               __setting_shortcuts_mouse_down);
+                       evas_object_event_callback_del(icon,
+                                               EVAS_CALLBACK_MOUSE_MOVE,
+                                               __setting_shortcuts_mouse_move);
+                       evas_object_event_callback_del(icon,
+                                               EVAS_CALLBACK_MOUSE_UP,
+                                               __setting_shortcuts_mouse_up);
+               }
+
+       }
+
+}
+
+/*free all memory for shortcuts*/
+static void __cam_toolbar_edit_shortcuts_data_clean()
+{
+       /*clear eina_list*/
+       if (NULL != shortcuts_ele_list) {
+               eina_list_free(shortcuts_ele_list);
+               shortcuts_ele_list = NULL;
+       }
+}
+
+static void __toolbar_edit_shortcuts_mouse_down_cb (void *data,
+                                                                       Evas *e,
+                                                                       Evas_Object *obj,
+                                                                       void *event_info)
+{
+       DEBUG_TRACE();
+       /*struct appdata *ad = (struct appdata *)data;
+       cam_long_press_register(LONG_PRESS_ID_EDIT,
+                               LONG_PRESS_TIME,
+                               __cam_long_press_editmode_cb,
+                               __cam_long_press_exit_editmode_cb,
+                               (void*)ad);*/
+}
+
+
+static void __toolbar_edit_shortcuts_mouse_move_cb (void *data,
+                                                                       Evas *e,
+                                                                       Evas_Object *obj,
+                                                                       void *event_info)
+{
+       DEBUG_TRACE();
+       /*struct appdata *ad = (struct appdata *)data;*/
+       ShortCutData *shortcuts_ele = NULL;
+       Eina_List *l = NULL;
+/**    TODO: find solution to distinguish the scroll move
+       cam_long_press_unregister(LONG_PRESS_ID_EDIT);
+       */
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele) {
+                       if (shortcuts_ele->icon) {
+                               evas_object_freeze_events_set(shortcuts_ele->icon, TRUE);
+                        }
+               }
+       }
+
+}
+
+static void __toolbar_edit_shortcuts_mouse_up_cb (void *data,
+                                                                       Evas *e,
+                                                                       Evas_Object *obj,
+                                                                       void *event_info)
+{
+       DEBUG_TRACE();
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_ret_if(ad == NULL);
+       ShortCutData *shortcuts_ele = NULL;
+       Eina_List *l = NULL;
+       EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
+               if (shortcuts_ele) {
+                       if (shortcuts_ele->icon) {
+                               evas_object_freeze_events_set(shortcuts_ele->icon, FALSE);
+                        }
+               }
+       }
+}
+
+static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2)
+{
+       ShortCutData *ele_0 = (ShortCutData *)data1;
+       ShortCutData *ele_1 = (ShortCutData *)data2;
+       int part_index_0 = ele_0->part_index;
+       int part_index_1 = ele_1->part_index;
+       DEBUG_TRACE("part_index_0 %d", part_index_0);
+       DEBUG_TRACE("part_index_1 %d", part_index_1);
+       if (part_index_0 > part_index_1)
+               return 1;
+       else if (part_index_0 < part_index_1)
+               return -1;
+       else
+               return 0;
+}
+
+static void __edit_shortcuts_create_empty_menubar_shortcut(struct appdata *ad,
+                                                                               int menu_no,
+                                                                               ShortCutData **shortcuts_ele)
+{
+       if (menu_no > CAM_MENU_BAR_LEFT_4 || menu_no < CAM_MENU_BAR_LEFT_0) return;
+       ShortCutData *sd = (ShortCutData *)malloc(sizeof(ShortCutData));
+       if (sd) {
+               memset(sd, '\0', sizeof(ShortCutData));
+               sd->icon = ad->toolbar_menu_arrays[menu_no].icon;
+               sd->list_index = -1;
+               sd->part_index = -1;
+               sd->setting_type = -1;
+               sd->menu_bar_no = menu_no;
+               sd->is_on_menu_bar = TRUE;
+       }
+       *shortcuts_ele = sd;
+
+}
+
+static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no)
+{
+       if (!ad) return;
+       if (menu_no > CAM_MENU_BAR_LEFT_4 || CAM_MENU_BAR_LEFT_1) return; /*note: CAM_MENU_BAR_LEFT_0, do not update*/
+       ShortCutData *shortcuts_ele = NULL;
+       /*note: add empty menubar shortcuts to list*/
+       if (ad->toolbar_menu_arrays[menu_no].menu_type < 0) {
+               __edit_shortcuts_create_empty_menubar_shortcut(ad, CAM_MENU_BAR_LEFT_1, &shortcuts_ele);
+               shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, shortcuts_ele);
+       }
+}
+
+static void __toolbar_dim_setting_shortcuts(struct appdata *ad)
+{
+       cam_ret_if(ad == NULL);
+       Evas_Object *setting_icon = NULL;
+       Evas_Object_Event_Cb func = NULL;
+       int type = -1;
+       setting_icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
+       type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].menu_type;
+       __toolbar_menu_type_update(setting_icon, type, ad, BUTTON_STATE_DIM, &func);
+}
+
+int toolbar_create_shortcuts_popup(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_retv_if(cam_handle == NULL, -1);
+
+       gboolean init_state = FALSE;
+       init_state = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               PROP_SHORTCUTS_INIT_PART_INDEX,
+                                               FALSE);
+       if (!init_state) {
+               cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               PROP_SHORTCUTS_INIT_PART_INDEX,
+                                               TRUE);
+       }
+
+       if (ad->edit_shortcuts_popup_scroll) {
+               toolbar_destroy_shortcuts_popup(ad);
+       }
+       ad->show_edit_shortcuts_popup_after_rotate = FALSE;
+
+       __toolbar_dim_setting_shortcuts(ad);
+
+       int index = 0;
+       Evas_Object *icon = NULL;
+       Evas_Object *setting_popup = NULL;
+       Evas_Object *ele_layout = NULL;
+
+       cam_long_press_register(LONG_PRESS_ID_EDIT,
+                               LONG_PRESS_TIME,
+                               __cam_long_press_editmode_cb,
+                               __cam_long_press_exit_editmode_cb,
+                               (void*)ad);
+
+       setting_shortcuts_popup_create(ad);
+
+       setting_popup = elm_layout_add(ad->edit_shortcuts_popup);
+       elm_layout_file_set(setting_popup, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/layout");
+
+       /* set text */
+       Evas_Object *scroller = elm_scroller_add(ad->edit_shortcuts_popup);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
+
+       char *icon_name = NULL;
+       char *text = NULL;
+       char part_name[16] = { '\0', };
+       ShortCutData *shortcuts_ele = NULL;
+       Evas_Object_Event_Cb callback = NULL;
+       int part_index = 0;
+       int list_index = 0;
+       gboolean is_on_toolbar = FALSE;
+       int menu_bar_no = -1;
+
+       /*create edit callback in the menubar*/
+       create_menubar_shortcuts_mouse_event(ad);
+
+       /*clear eina_list*/
+       __cam_toolbar_edit_shortcuts_data_clean();
+
+       if( ad->setting_menu_composer == NULL){
+               cam_critical(LOG_UI,"ad->setting_menu_composer is null");
+               return -1;
+       }
+
+       int shortcuts_menu_to_part[CAM_MENU_RESET + 1] = { -1,};
+       if (init_state) {
+               for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
+                       int item = cam_config_get_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               edit_shortcuts_prop_array[index].prop_name,
+                                               -1);
+                       shortcuts_menu_to_part[item] = index;
+                       DEBUG_TRACE("item %d index %d", item, index);
+               }
+       }
+
+       CAM_MENU_ITEM* menu_item  = NULL;
+       int size = eina_array_count(ad->setting_menu_composer->array);
+
+       for (index = 0; index < size; index++) {
+               menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->setting_menu_composer->array, index);
+
+               if (*menu_item == CAM_MENU_EFFECTS
+                       || *menu_item == CAM_MENU_ANTI_SHAKE
+                       || *menu_item == CAM_MENU_CAPTURE_VOICE
+                       || *menu_item == CAM_MENU_GPS_TAG
+                       || *menu_item == CAM_MENU_STORAGE
+                       || *menu_item == CAM_MENU_RESET) {
+                       DEBUG_TRACE("Do not add menu in shortcut");
+                       continue;
+               }
+
+               Evas_Object *menubar_obj = NULL;
+               __get_menubar_shortcuts_info(ad, *menu_item, &menu_bar_no, &menubar_obj);
+               is_on_toolbar = ((menu_bar_no == CAM_MENU_BAR_LEFT_INVALID) ? FALSE : TRUE);
+               __get_toolbar_shortcuts_file_func((void *)ad, *menu_item, BUTTON_STATE_NORMAL, &icon_name, &text, &callback);
+
+               if (icon_name) {
+                       /*create layout for element*/
+                       ele_layout = elm_layout_add(setting_popup);
+                       elm_layout_file_set(ele_layout, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/ele");
+                       icon = elm_image_add(ele_layout);
+                       elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
+               } else {
+                       DEBUG_TRACE("index = %d, no icon file path or file path error, please check!", index);
+
+                       if (text)
+                               free(text);
+                       text = NULL;
+                       continue;
+               }
+
+               if (text) {
+                       edje_object_part_text_set(elm_layout_edje_get(ele_layout), "ele.txt", text);
+                       DEBUG_TRACE("text %s", text);
+               }
+
+               edje_object_part_swallow(_EDJ(ele_layout), "ele.icon", icon);
+               evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_DOWN, __setting_shortcuts_mouse_down, (void *)ad);
+               evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_UP, __setting_shortcuts_mouse_up, (void *)ad);
+
+               evas_object_show(ele_layout);
+
+               shortcuts_ele = (ShortCutData *)malloc(sizeof(ShortCutData));
+               shortcuts_ele->icon = ele_layout;
+               shortcuts_ele->list_index = list_index;
+               shortcuts_ele->setting_type = *menu_item;
+               shortcuts_ele->icon_filepath = icon_name;
+               shortcuts_ele->name = text;
+               shortcuts_ele->func = callback;
+               shortcuts_ele->menu_bar_no = menu_bar_no;
+               shortcuts_ele->is_on_menu_bar = is_on_toolbar;
+
+               if (is_on_toolbar) {
+                       shortcuts_ele->part_index = -1;
+                       evas_object_hide(ele_layout);
+               } else {
+                       if (!init_state) { /*note: if there is no init value in config file, init now*/
+                               shortcuts_ele->part_index = part_index;
+                               cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
+                                               edit_shortcuts_prop_array[part_index].prop_name,
+                                               *menu_item);
+                               shortcuts_menu_to_part[*menu_item] = part_index;
+                       } else { /*note: if there is init value in config file, read value from init*/
+                               shortcuts_ele->part_index = shortcuts_menu_to_part[*menu_item];
+                       }
+               }
+               if (shortcuts_ele->part_index > CAM_EDIT_SHORTCUTS_INDEX_INVALID
+                       && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
+                       snprintf(part_name, sizeof(part_name),"row.%d",(shortcuts_ele->part_index));
+                       edje_object_part_swallow(_EDJ(setting_popup), part_name, ele_layout);
+               }
+
+               shortcuts_ele_list = eina_list_append(shortcuts_ele_list, shortcuts_ele);
+               if (shortcuts_ele_list == NULL) {
+                       continue;
+               }
+               list_index++;
+               if (is_on_toolbar)
+                       continue;
+               part_index++;
+       }
+
+       /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
+       __resort_edit_shortcuts_list_by_part_index();
+
+       elm_object_content_set(scroller, setting_popup);
+       /*elm_object_part_content_set(edit_shortcuts_layout, "swallow.items", setting_popup);*/
+       elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup", scroller);
+       elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup_description", ad->edit_shortcuts_popup_description);
+
+
+       __cam_toolbar_display_shortcuts_editmode(ad);
+#if 0 /*TODO: TODO: find solution to distinguish the scroll move*/
+       evas_object_event_callback_del(scroller,
+                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                       __toolbar_edit_shortcuts_mouse_down_cb);
+
+       evas_object_event_callback_del(scroller,
+                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                       __toolbar_edit_shortcuts_mouse_move_cb);
+       evas_object_event_callback_del(scroller,
+                                       EVAS_CALLBACK_MOUSE_UP,
+                                       __toolbar_edit_shortcuts_mouse_up_cb);
+       evas_object_event_callback_add(scroller,
+                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                       __toolbar_edit_shortcuts_mouse_down_cb,
+                                       (void *)ad);
+       evas_object_event_callback_add(scroller,
+                                       EVAS_CALLBACK_MOUSE_MOVE,
+                                       __toolbar_edit_shortcuts_mouse_move_cb,
+                                       (void *)ad);
+       evas_object_event_callback_add(scroller,
+                                       EVAS_CALLBACK_MOUSE_UP,
+                                       __toolbar_edit_shortcuts_mouse_up_cb,
+                                       (void *)ad);
+
+#endif
+
+       ad->edit_shortcuts_popup_ctx = setting_popup;
+       ad->edit_shortcuts_popup_scroll = scroller;
+
+       evas_object_show(ad->toolbar_edje);
+       __setting_popup_timeout_checker_start(ad);
+       /*note: set destroy operation after display to avoid bs*/
+       if (ad->toolbar_setting_popup) {
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+
+       __set_show_state_preview_obj(ad, FALSE);
+
+       return EXIT_SUCCESS;
+}
+
+void* __get_genlist_cb(const CAM_MENU_ITEM item)
+{
+       switch(item){
+               case CAM_MENU_SHORTCUTS:
+                       return __setting_edit_shortcut_popup_cb;
+               case CAM_MENU_BURST_SHOT_MODE:
+                       return __setting_burst_shot_popup_cb;
+               case CAM_MENU_VOLUME_KEY:
+                       return __setting_volume_key_popup_cb;
+               case CAM_MENU_SELF_PORTRAIT:
+                       return __setting_self_portrait_popup_cb;
+               case CAM_MENU_FLASH:
+                       return __setting_flash_popup;
+               case CAM_MENU_SHOOTING_MODE:
+                       return __setting_shot_mode_popup_cb;
+               case CAM_MENU_RECORDING_MODE:
+                       return __setting_record_mode_popup;
+               case CAM_MENU_SCENE_MODE:
+                       return __setting_scenemode_popup_cb;
+               case CAM_MENU_EXPLOSURE_VALUE:
+                       return __setting_ev_popup_cb;
+               case CAM_MENU_FOCUS_MODE:
+                       return __setting_focus_mode_cb;
+               case CAM_MENU_TIMER:
+                       return __setting_timer_popup_cb;
+               case CAM_MENU_EFFECTS:
+                       return __setting_effects_popup_cb;
+               case CAM_MENU_PHOTO_RESOLUTION:
+                       return __setting_photo_resolution_popup_cb;
+               case CAM_MENU_VIDEO_RESOLUTION:
+                       return __setting_video_resolution_popup_cb;
+               case CAM_MENU_WHITE_BALANCE:
+                       return __setting_wb_popup_cb;
+               case CAM_MENU_ISO:
+                       return __setting_iso_popup_cb;
+               case CAM_MENU_METERING:
+                       return __setting_metering_popup_cb;
+               case CAM_MENU_ANTI_SHAKE:
+                       return __setting_anti_shake_popup_cb;
+               case CAM_MENU_OUTDOOR_VISIBILITY:
+                       return __setting_outdoor_visibility_popup_cb;
+               case CAM_MENU_AUTO_CONTRAST:
+                       return __setting_autocontrast_popup_cb;
+               case CAM_MENU_GUIDELINES:
+                       return __setting_guideline_popup_cb;
+               case CAM_MENU_CAPTURE_VOICE:
+                       return __setting_capture_by_voice_popup_cb;
+               case CAM_MENU_GPS_TAG:
+                       return __setting_gps_popup_cb;
+               case CAM_MENU_SAVE_AS_FLIP:
+                       return __setting_save_as_flip_popup_cb;
+               case CAM_MENU_STORAGE:
+                       return __setting_storage_popup_cb;
+               case CAM_MENU_RESET:
+                       return __setting_restore_defaults_popup_cb;
+               default:
+                       return NULL;
+               }
+}
+
+static Eina_Bool __genlist_each_cb(const void *container, void *data, void *fdata)
+{
+       struct appdata *ad = (struct appdata *)fdata;
+       cam_retv_if(ad == NULL, EINA_FALSE);
+
+       CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
+       Elm_Object_Item *object_item = NULL;
+       object_item = elm_genlist_item_append(ad->genlist,
+                       &itc,
+                       (void*)*item,
+                       NULL,
+                       ELM_GENLIST_ITEM_NONE,
+                       __get_genlist_cb(*item),
+                       (void*)ad);
+
+       if(!cam_is_enabled_menu(ad,*item))
+               elm_object_item_disabled_set(object_item, TRUE);
+
+       return EINA_TRUE;
+}
+
+int cam_toolbar_setting_popup_create(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_retv_if(cam_handle == NULL, -1);
+
+       if (ad->toolbar_setting_popup) {
+               cam_toolbar_setting_popup_destroy(ad);
+       }
+       if (ad->edit_shortcuts_popup_scroll) {
+               toolbar_destroy_shortcuts_popup(ad);
+       }
+
+       ad->show_setting_popup_after_rotate = FALSE;
+
+       Evas_Object *setting_popup = NULL;
+
+       setting_toolbar_popup_create(ad);
+
+       setting_popup = elm_layout_add(ad->toolbar_setting_popup);
+       elm_layout_file_set(setting_popup, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout/setting");
+
+       /* set text */
+       edje_object_part_text_set(elm_layout_edje_get(setting_popup), "elm.text", dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
+
+       evas_object_size_hint_min_set(setting_popup,
+                                       SETTING_POPUP_WIDTH * elm_config_scale_get(),
+                                       SETTING_POPUP_HEIGHT * elm_config_scale_get());
+
+       ad->genlist = elm_genlist_add(setting_popup);
+       evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_DOWN, __setting_gl_mouse_down, (void *)ad);
+       evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_MOVE, __setting_gl_mouse_move, (void *)ad);
+
+       cam_setting_gl_style_set();
+
+       if( ad->setting_menu_composer != NULL)
+               eina_array_foreach(ad->setting_menu_composer->array, __genlist_each_cb, ad);
+
+       evas_object_show(ad->genlist);
+       elm_object_part_content_set(setting_popup, "elm.swallow.box", ad->genlist);
+       elm_object_content_set(ad->toolbar_setting_popup, setting_popup);
+
+       int x, y ;
+       x = y = 0;
+       DEBUG_TRACE("ad->target_direction = %d", ad->target_direction);
+       __get_option_coord_by_menubar_no(CAM_MENU_BAR_LEFT_0, ad->target_direction, &x, &y);
+       DEBUG_TRACE("x = %d y = %d", x, y);
+       __cam_toolbar_move_ctxpopup(ad->toolbar_setting_popup, ad->target_direction, x, y);
+
+       evas_object_show(ad->toolbar_setting_popup);
+       __setting_popup_timeout_checker_start(ad);
+
+       __set_show_state_preview_obj(ad, FALSE);
+
+       return EXIT_SUCCESS;
+}
+
+int toolbar_shot_guide_popup_create(struct appdata *ad, int shot_mode)
+{
+       cam_retvm_if(ad == NULL, -1, "appdata is NULL");
+       CamAppData *cam_handle = ad->camapp_handle;
+       cam_retv_if(cam_handle == NULL, -1);
+
+       int str_num1 = 0;
+       int str_num2 = 0;
+       char *str = NULL;
+
+       if (ad->shot_mode_guide_popup) {
+               toolbar_shot_guide_popup_destory(ad);
+       }
+
+       elm_object_part_content_unset(ad->ug_base, "shot_guide_popup_layout");
+
+       if ((cam_handle->shooting_mode == CAM_SINGLE_MODE)
+                       || (cam_handle->shooting_mode == CAM_SELF_SINGLE_MODE))
+               return EXIT_SUCCESS;
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_landscape");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_potrait");
+               break;
+       default:
+               DEBUG_TRACE("Invalid direction type!!!");
+       }
+
+       cam_retvm_if(ad->shot_mode_guide_popup == NULL, -1, "shot_mode_guide_popup is NULL");
+       elm_object_part_content_set(ad->ug_base, "shot_guide_popup_layout", ad->shot_mode_guide_popup);
+
+       char popup_str[1024 + 1] = { '\0',};
+       snprintf(popup_str, 1024, "%s", dgettext(PACKAGE, "IDS_CAM_POP_PRESS_SHUTTER"));
+       edje_object_part_text_set(_EDJ(ad->shot_mode_guide_popup), "text", popup_str);
+
+       evas_object_show(ad->shot_mode_guide_popup);
+
+       return EXIT_SUCCESS;
+}
+
+int toolbar_shot_guide_popup_destory(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+       UI_TEST_LOG("Guide popup destory");
+
+       if (ad->shot_mode_guide_popup) {
+               evas_object_del(ad->shot_mode_guide_popup);
+               ad->shot_mode_guide_popup = NULL;
+       }
+
+       return 0;
+}
+
+int toolbar_shot_guide_popup_move(struct appdata *ad)
+{
+       cam_retv_if(ad == NULL, -1);
+
+       int x = 0, y = 0;
+
+       if (ad->shot_mode_guide_popup) {
+               Eina_Bool setting_ctxpopup_is_visible = false;
+               ecore_x_window_size_get(ad->main_xid, &x, &y);
+
+               if (ad->setting_ctxpopup)
+                       setting_ctxpopup_is_visible = evas_object_visible_get(ad->setting_ctxpopup);
+
+               cam_debug(LOG_UI, "evas_object_visible_get(ad->setting_ctxpopup) =%d", setting_ctxpopup_is_visible);
+
+               if (ad->toolbar_setting_popup) {
+                       __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
+                       toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
+               } else {
+                       __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
+                       toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
+               }
+
+               cam_critical(LOG_UI, "x = %d, y= %d", x, y);
+       }
+
+       return 0;
+}
+
+static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state)
+{
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, NULL, "camapp is NULL");
+
+       char *icon_name = NULL;
+       int exposure_value = 0;
+
+       switch(item){
+       case CAM_MENU_SCENE_AUTO:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_AUTO_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_AUTO_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_PORTRAIT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_PORTRAIT_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_PORTRAIT_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_LANDSCAPE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_LANDSCAPE_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_LANDSCAPE_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_NIGHT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_NIGHT_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_NIGHT_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_SPORTS:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_SPORTS_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_SPORTS_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_PARTY:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_PARTY_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_PARTY_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_BEACHSNOW:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_BEACHSNOW_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_BEACHSNOW_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_SUNSET:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_SUNSET_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_SUNSET_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_DUSKDAWN:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_DUSKDAWN_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_DUSKDAWN_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_FALL:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_FALL_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_FALL_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_FIREWORK:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_FIREWORK_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_FIREWORK_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_TEXT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_TEXT_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_TEXT_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_CANDLELIGHT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_CANDLELIGHT_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_CANDLELIGHT_NORMAL_ICON;
+               break;
+       case CAM_MENU_SCENE_BACKLIGHT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SCENE_MODE_BACKLIGHT_PRESS_ICON;
+               else
+                       icon_name = SCENE_MODE_BACKLIGHT_NORMAL_ICON;
+               break;
+       case CAM_MENU_SHOOTING_SINGLE:
+       case CAM_MENU_SHOOTING_SELF_SINGLE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = SHOOTING_MODE_SINGLE_PRESS_ICON;
+               else
+                       icon_name = SHOOTING_MODE_SINGLE_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_8M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_8M_NORMAL_ICON;
+               break;
+
+       case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W5_7M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W5_7M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_5M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_5M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = NULL;
+               else
+                       icon_name = NULL;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_3_2M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_3_2M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W2_4M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W2_4M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W2M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W2M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_1280x960:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_1_3M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_1_3M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_1280x720:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_W0_9M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_W0_9M_NORMAL_ICON;
+               break;
+       case CAM_MENU_PHOTO_RESOLUTION_640x480:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = CAM_RESOLUTION_0_3M_PRESS_ICON;
+               else
+                       icon_name = CAM_RESOLUTION_0_3M_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_FULLHD_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_FULLHD_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_HD:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_HD_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_HD_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_WVGA:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_WVGA_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_WVGA_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_VGA:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_VGA_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_VGA_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_QVGA:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_QVGA_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_QVGA_NORMAL_ICON;
+               break;
+       case CAM_MENU_VIDEO_RESOLUTION_QCIF:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = REC_RESOLUTION_QCIF_PRESS_ICON;
+               else
+                       icon_name = REC_RESOLUTION_QCIF_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_AWB:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_AUTO_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_AUTO_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_INCANDESCENT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_INCANDESCENT_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_INCANDESCENT_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_FLUORESCENT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_FLUORESCENT_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_FLUORESCENT_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_DAYLIGHT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_DAYLIGHT_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_DAYLIGHT_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_CLOUDY:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_CLOUDY_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_CLOUDY_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_SHADE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_SHADE_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_SHADE_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_HORIZON:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = WHITE_BALANCE_HORIZON_PRESS_ICON;
+               else
+                       icon_name = WHITE_BALANCE_HORIZON_NORMAL_ICON;
+               break;
+       case CAM_MENU_WB_FLASH:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = NULL;
+               else
+                       icon_name = NULL;
+               break;
+       case CAM_MENU_WB_CUSTOM:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = NULL;
+               else
+                       icon_name = NULL;
+               break;
+       case CAM_MENU_EFFECT_NONE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = EFFECTS_NONE_PRESS_ICON;
+               else
+                       icon_name = EFFECTS_NONE_NORMAL_ICON;
+               break;
+       case CAM_MENU_EFFECT_NEGATIVE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = EFFECTS_NEGATIVE_PRESS_ICON;
+               else
+                       icon_name = EFFECTS_NEGATIVE_NORMAL_ICON;
+               break;
+       case CAM_MENU_EFFECT_BLACKANDWHITE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = EFFECTS_BLACKANDWHITE_PRESS_ICON;
+               else
+                       icon_name = EFFECTS_BLACKANDWHITE_NORMAL_ICON;
+               break;
+       case CAM_MENU_EFFECT_SEPIA:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = EFFECTS_SEPIA_PRESS_ICON;
+               else
+                       icon_name = EFFECTS_SEPIA_NORMAL_ICON;
+               break;
+       case CAM_MENU_FOCUS_AUTO:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FOCUS_MODE_AUTO_PRESS_ICON;
+               else
+                       icon_name = FOCUS_MODE_AUTO_NORMAL_ICON;
+               break;
+       case CAM_MENU_FOCUS_MACRO:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FOCUS_MODE_MACRO_PRESS_ICON;
+               else
+                       icon_name = FOCUS_MODE_MACRO_NORMAL_ICON;
+               break;
+       case CAM_MENU_FOCUS_FACE_DETECTION:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FOCUS_MODE_FACE_DETECTION_PRESS_ICON;
+               else
+                       icon_name = FOCUS_MODE_FACE_DETECTION_NORMAL_ICON;
+               break;
+       case CAM_MENU_RECORDING_MODE_NORMAL:
+       case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = RECORDING_MODE_NORMAL_PRESS_ICON;
+               else
+                       icon_name = RECORDING_MODE_NORMAL_NORMAL_ICON;
+               break;
+       case CAM_MENU_RECORDING_MODE_LIMIT:
+       case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = RECORDING_MODE_LIMIT_MMS_PRESS_ICON;
+               else
+                       icon_name = RECORDING_MODE_LIMIT_MMS_NORMAL_ICON;
+               break;
+       case CAM_MENU_RECORDING_MODE_SLOW:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = RECORDING_MODE_SLOW_MOTION_PRESS_ICON;
+               else
+                       icon_name = RECORDING_MODE_SLOW_MOTION_NORMAL_ICON;
+               break;
+       case CAM_MENU_RECORDING_MODE_FAST:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = RECORDING_MODE_FAST_MOTION_PRESS_ICON;
+               else
+                       icon_name = RECORDING_MODE_FAST_MOTION_NORMAL_ICON;
+               break;
+       case CAM_MENU_FLASH_OFF:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FLASH_OFF_PRESS_ICON;
+               else
+                       icon_name = FLASH_OFF_NORMAL_ICON;
+               break;
+       case CAM_MENU_FLASH_ON:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FLASH_ON_PRESS_ICON;
+               else
+                       icon_name = FLASH_ON_NORMAL_ICON;
+               break;
+       case CAM_MENU_FLASH_AUTO:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = FLASH_AUTO_PRESS_ICON;
+               else
+                       icon_name = FLASH_AUTO_NORMAL_ICON;
+               break;
+       case CAM_MENU_METERING_MATRIX:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = METERING_MATRIX_PRESS_ICON;
+               else
+                       icon_name = METERING_MATRIX_NORMAL_ICON;
+               break;
+       case CAM_MENU_METERING_CENTER_WEIGHTED:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = METERING_CENTER_WEIGHTED_PRESS_ICON;
+               else
+                       icon_name = METERING_CENTER_WEIGHTED_NORMAL_ICON;
+               break;
+       case CAM_MENU_METERING_SPOT:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = METERING_SPOT_PRESS_ICON;
+               else
+                       icon_name = METERING_SPOT_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_AUTO:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_AUTO_PRESS_ICON;
+               else
+                       icon_name = ISO_AUTO_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_50:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_50_PRESS_ICON;
+               else
+                       icon_name = ISO_50_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_100:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_100_PRESS_ICON;
+               else
+                       icon_name = ISO_100_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_200:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_200_PRESS_ICON;
+               else
+                       icon_name = ISO_200_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_400:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_400_PRESS_ICON;
+               else
+                       icon_name = ISO_400_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_80O:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = ISO_800_PRESS_ICON;
+               else
+                       icon_name = ISO_800_NORMAL_ICON;
+               break;
+       case CAM_MENU_ISO_1600:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = NULL;
+               else
+                       icon_name = NULL;
+               break;
+       case CAM_MENU_ISO_320O:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = NULL;
+               else
+                       icon_name = NULL;
+               break;
+       case CAM_MENU_STORAGE_PHONE:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = STORAGE_MYDEVICE_PRESS_ICON;
+               else
+                       icon_name = STORAGE_MYDEVICE_NORMAL_ICON;
+               break;
+       case CAM_MENU_STORAGE_MMC:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = STORAGE_CARD_PRESS_ICON;
+               else
+                       icon_name = STORAGE_CARD_NORMAL_ICON;
+               break;
+       case CAM_MENU_TIMER_OFF:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = TIMER_OFF_PRESS_ICON;
+               else
+                       icon_name = TIMER_OFF_NORMAL_ICON;
+               break;
+       case CAM_MENU_TIMER_2SEC:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = TIMER_2SEC_PRESS_ICON;
+               else
+                       icon_name = TIMER_2SEC_NORMAL_ICON;
+               break;
+       case CAM_MENU_TIMER_5SEC:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = TIMER_5SEC_PRESS_ICON;
+               else
+                       icon_name = TIMER_5SEC_NORMAL_ICON;
+               break;
+       case CAM_MENU_TIMER_10SEC:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = TIMER_10SEC_PRESS_ICON;
+               else
+                       icon_name = TIMER_10SEC_NORMAL_ICON;
+               break;
+       case CAM_MENU_VOLUME_KEY_ZOOM:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = VOLUME_KEY_AS_ZOOM_PRESS_ICON;
+               else
+                       icon_name = VOLUME_KEY_AS_ZOOM_NORMAL_ICON;
+               break;
+       case CAM_MENU_VOLUME_KEY_SHUTTER:
+               if (state == BUTTON_STATE_PRESS)
+                       icon_name = VOLUME_KEY_AS_SHUTTER_PRESS_ICON;
+               else
+                       icon_name = VOLUME_KEY_AS_SHUTTER_NORMAL_ICON;
+               break;
+       case CAM_MENU_EXPLOSURE_VALUE:
+               if (camapp->self_portrait == FALSE)
+                       exposure_value = camapp->brightness;
+               else
+                       exposure_value = camapp->brightness + 4;
+
+               if (exposure_value == 0) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_MINUS_2_0_ICON;
+               } else if (exposure_value == 1) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_MINUS_1_5_ICON;
+               } else if (exposure_value == 2) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_MINUS_1_0_ICON;
+               } else if (exposure_value == 3) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_MINUS_0_5_ICON;
+               } else if (exposure_value == 4) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_0_ICON;
+               } else if (exposure_value == 5) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_PLUS_0_5_ICON;
+               } else if (exposure_value == 6) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_PLUS_1_0_ICON;
+               } else if (exposure_value == 7) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_PLUS_1_5_ICON;
+               } else if (exposure_value == 8) {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_PLUS_2_0_ICON;
+               } else {
+                       if (state == BUTTON_STATE_PRESS)
+                               icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
+                       else
+                               icon_name = EXPOSURE_VALUE_0_ICON;
+               }
+               break;
+       default:
+               icon_name = NULL;
+       }
+
+       return icon_name;
+}
+
+static const char* __get_text_name(CAM_MENU_ITEM item)
+{
+       switch(item){
+       case CAM_MENU_SCENE_AUTO:
+               return "IDS_CAM_BODY_NONE";
+       case CAM_MENU_SCENE_PORTRAIT:
+               return "IDS_CAM_OPT_SCENE_PORTRAIT";
+       case CAM_MENU_SCENE_LANDSCAPE:
+               return "IDS_CAM_OPT_SCENE_LANDSCAPE";
+       case CAM_MENU_SCENE_NIGHT:
+               return "IDS_CAM_OPT_SCENEMODE_NIGHT";
+       case CAM_MENU_SCENE_SPORTS:
+               return "IDS_CAM_OPT_SCENE_SPORTS";
+       case CAM_MENU_SCENE_PARTY:
+               return "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR";
+       case CAM_MENU_SCENE_BEACHSNOW:
+               return "IDS_CAM_OPT_BEACH_SNOW";
+       case CAM_MENU_SCENE_SUNSET:
+               return "IDS_CAM_OPT_SCENEMODE_SUNSET";
+       case CAM_MENU_SCENE_DUSKDAWN:
+               return "IDS_CAM_OPT_SCENE_DAWN";
+       case CAM_MENU_SCENE_FALL:
+               return "IDS_CAM_OPT_AUTUMN_COLOUR";
+       case CAM_MENU_SCENE_FIREWORK:
+               return "IDS_CAM_BODY_SCENEMODE_FIREWORK";
+       case CAM_MENU_SCENE_TEXT:
+               return "IDS_CAM_BODY_SCENEMODE_TEXT";
+       case CAM_MENU_SCENE_CANDLELIGHT:
+               return "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT";
+       case CAM_MENU_SCENE_BACKLIGHT:
+               return "IDS_CAM_OPT_SCENE_BACKLIGHT";
+       case CAM_MENU_SHOOTING_SINGLE:
+       case CAM_MENU_SHOOTING_SELF_SINGLE:
+               return "IDS_CAM_BODY_SINGLE";
+       case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
+               return "3264x2448";
+       case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
+               return "3264x1960";
+       case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
+               return "3264x1836";
+       case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
+               return "2800x1920";
+       case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
+               return "2560x1920";
+       case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
+               return "2560x1440";
+       case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
+               return "2048x1536";
+       case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
+               return "2048x1152";
+       case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
+               return "1920x1080";
+       case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
+               return "1600x1200";
+       case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
+               return "1392x1392";
+       case CAM_MENU_PHOTO_RESOLUTION_1280x960:
+               return "1280x960";
+       case CAM_MENU_PHOTO_RESOLUTION_1280x720:
+               return "1280x720";
+       case CAM_MENU_PHOTO_RESOLUTION_640x480:
+               return "640x480";
+       case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
+               return "1920x1080";
+       case CAM_MENU_VIDEO_RESOLUTION_HD:
+               return "1280x720";
+       case CAM_MENU_VIDEO_RESOLUTION_WVGA:
+               return "720X480";
+       case CAM_MENU_VIDEO_RESOLUTION_VGA:
+               return "640x480";
+       case CAM_MENU_VIDEO_RESOLUTION_QVGA:
+               return "320x240";
+       case CAM_MENU_VIDEO_RESOLUTION_QCIF:
+               return "176x144";
+       case CAM_MENU_WB_AWB:
+               return "IDS_CAM_BODY_AUTO";
+       case CAM_MENU_WB_INCANDESCENT:
+               return "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT";
+       case CAM_MENU_WB_FLUORESCENT:
+               return "IDS_CAM_BODY_FLUORESCENT";
+       case CAM_MENU_WB_DAYLIGHT:
+               return "IDS_CAM_BODY_DAYLIGHT";
+       case CAM_MENU_WB_CLOUDY:
+               return "IDS_CAM_BODY_CLOUDY";
+       case CAM_MENU_WB_SHADE:
+               return "IDS_CAM_BODY_SHADE";
+       case CAM_MENU_WB_HORIZON:
+               return "IDS_CAM_BODY_HORIZON";
+       case CAM_MENU_WB_FLASH:
+               return "IDS_CAM_OPT_FLASH";
+       case CAM_MENU_WB_CUSTOM:
+               return "IDS_CAM_BODY_CUSTOM";
+       case CAM_MENU_EFFECT_NONE:
+               return "IDS_CAM_BODY_NONE";
+       case CAM_MENU_EFFECT_NEGATIVE:
+               return "IDS_CAM_BODY_NEGATIVE";
+       case CAM_MENU_EFFECT_BLACKANDWHITE:
+               return "IDS_CAM_BODY_BLACK_AND_WHITE";
+       case CAM_MENU_EFFECT_SEPIA:
+               return "IDS_CAM_BODY_SEPIA";
+       case CAM_MENU_FOCUS_AUTO:
+               return "IDS_CAM_OPT_AUTO_FOCUS";
+       case CAM_MENU_FOCUS_MACRO:
+               return "IDS_CAM_BODY_MACRO";
+       case CAM_MENU_FOCUS_FACE_DETECTION:
+               return "IDS_CAM_OPT_FACE_DETECTION";
+       case CAM_MENU_RECORDING_MODE_NORMAL:
+               return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
+       case CAM_MENU_RECORDING_MODE_LIMIT:
+               return "IDS_CAM_OPT_MESSAGE_LIMIT";
+       case CAM_MENU_RECORDING_MODE_SLOW:
+               return "IDS_CAM_OPT_SLOW_MOTION";
+       case CAM_MENU_RECORDING_MODE_FAST:
+               return "IDS_CAM_BODY_FAST_MOTION";
+       case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
+               return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
+       case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
+               return "IDS_CAM_OPT_MESSAGE_LIMIT";
+       case CAM_MENU_FLASH_OFF:
+               return "IDS_CAM_BODY_OFF";
+       case CAM_MENU_FLASH_ON:
+               return "IDS_CAM_BODY_ON";
+       case CAM_MENU_FLASH_AUTO:
+               return "IDS_CAM_BODY_AUTO";
+       case CAM_MENU_METERING_MATRIX:
+               return "IDS_CAM_BODY_MATRIX";
+       case CAM_MENU_METERING_CENTER_WEIGHTED:
+               return "IDS_CAM_BODY_CENTER_WEIGHTED";
+       case CAM_MENU_METERING_SPOT:
+               return "IDS_CAM_BODY_SPOT";
+       case CAM_MENU_ISO_AUTO:
+               return "IDS_CAM_BODY_AUTO";
+       case CAM_MENU_ISO_50:
+               return "50";
+       case CAM_MENU_ISO_100:
+               return "100";
+       case CAM_MENU_ISO_200:
+               return "200";
+       case CAM_MENU_ISO_400:
+               return "400";
+       case CAM_MENU_ISO_80O:
+               return "800";
+       case CAM_MENU_ISO_1600:
+               return "1600";
+       case CAM_MENU_ISO_320O:
+               return "3200";
+       case CAM_MENU_STORAGE_PHONE:
+               return "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY";
+       case CAM_MENU_STORAGE_MMC:
+               return "IDS_CAM_OPT_MEMORY_CARD";
+       case CAM_MENU_TIMER_OFF:
+               return "IDS_CAM_BODY_OFF";
+       case CAM_MENU_TIMER_2SEC:
+               return "IDS_CAM_BODY_2_SEC";
+       case CAM_MENU_TIMER_5SEC:
+               return "IDS_CAM_BODY_5_SEC";
+       case CAM_MENU_TIMER_10SEC:
+               return "IDS_CAM_BODY_10_SEC";
+       case CAM_MENU_VOLUME_KEY_ZOOM:
+               return "IDS_CAM_MBODY_THE_ZOOM_KEY";
+       case CAM_MENU_VOLUME_KEY_SHUTTER:
+               return "IDS_CAM_MBODY_THE_CAMERA_KEY";
+       default:
+               return NULL;
+       }
+}
+
+#define SUB_MENU_MAX_COUNT (5)
+#define SUB_MENU_2_COUNT_GAP (35)
+#define SUB_MENU_3_COUNT_GAP (30)
+#define SUB_MENU_4_COUNT_GAP (25)
+#define SUB_MENU_5_COUNT_GAP (15)
+
+static int __get_sub_menu_height(int count)
+{
+       int height  = 0;
+       if (count > 5)
+               height = SUB_MENU_POPUP_HEIGHT;
+       else {
+               height = (int)(SUB_MENU_POPUP_HEIGHT * count/SUB_MENU_MAX_COUNT);
+               switch (count) {
+               case 2:
+                       height += SUB_MENU_2_COUNT_GAP;
+                       break;
+               case 3:
+                       height += SUB_MENU_3_COUNT_GAP;
+                       break;
+               case 4:
+                       height += SUB_MENU_4_COUNT_GAP;
+                       break;
+               case 5:
+                       height += SUB_MENU_5_COUNT_GAP;
+                       break;
+               }
+       }
+       return height;
+}
+
+static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       DEBUG_TRACE("");
+
+       int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
+
+       /* set resolution value */
+       if (camapp->photo_resolution != resolution) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, resolution);
+               if (!cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value)) {
+                       DEBUG_TRACE("set photo resolution failed!");
+               }
+       }
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_PHOTO_RESOLUTION);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       cam_retm_if(obj == NULL, "obj is NULL");
+       struct appdata *ad = (struct appdata *)cam_appdata_get();
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp is NULL");
+
+       DEBUG_TRACE("");
+
+       int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
+
+       /* set resolution value */
+       if (camapp->video_resolution != resolution) {
+               GValue value = {0};
+               CAM_GVALUE_SET_INT(value, resolution);
+               if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
+                       DEBUG_TRACE("set video resolution failed!");
+               }
+       }
+
+       __update_menubar_icon_by_index(ad, CAM_MENU_VIDEO_RESOLUTION);
+       if (ad->setting_select_item)
+               elm_genlist_item_update(ad->setting_select_item);
+
+       setting_ctxpopup_destroy(ad);
+       ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
+}
+
+void cam_toolbar_show_cafbutton(struct appdata *ad, gboolean show)
+{
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (show) {
+               __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
+       }
+       else {
+               __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
+       }
+}
+
+static void __update_setting_popup(void* data)
+{
+
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       Elm_Object_Item *it = NULL;
+       it = elm_genlist_first_item_get(ad->genlist);
+
+       while (it) {
+               CAM_MENU_ITEM item  = (CAM_MENU_ITEM)elm_object_item_data_get(it);
+               gboolean cap_enable = cam_is_enabled_menu(ad,item);
+               gboolean cur_state = elm_object_item_disabled_get(it);
+               DEBUG_TRACE("cap_enable %d", cap_enable);
+               DEBUG_TRACE("cur_state %d", cap_enable);
+               if(cap_enable == cur_state) {
+                       DEBUG_TRACE("cur_state|cap_enable %d", cap_enable|cur_state);
+                       elm_object_item_disabled_set(it, !cap_enable);
+                       elm_genlist_item_update(it);
+                }
+
+               it = elm_genlist_item_next_get(it);
+
+       }
+
+}
+
+static void __set_show_state_preview_obj(void *data, gboolean show)
+{
+       struct appdata *ad = data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (show) {
+               cam_app_focus_guide_update(ad);
+               cam_indicator_set_show_state(ad, TRUE);
+
+               if (ad->guideline_edje)
+                       evas_object_show(ad->guideline_edje);
+
+               if (ad->shot_mode_guide_popup)
+                       evas_object_show(ad->shot_mode_guide_popup);
+       } else {
+               edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
+               cam_indicator_set_show_state(ad, FALSE);
+
+               if (ad->guideline_edje)
+                       evas_object_hide(ad->guideline_edje);
+
+               if (ad->shot_mode_guide_popup)
+                       evas_object_hide(ad->shot_mode_guide_popup);
+       }
+}
+
+//end file
diff --git a/src/edc-callback/cam_zoom_edc_callback.c b/src/edc-callback/cam_zoom_edc_callback.c
new file mode 100755 (executable)
index 0000000..410876f
--- /dev/null
@@ -0,0 +1,418 @@
+/*
+ * 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 "cam.h"
+#include "cam_zoom_edc_callback.h"
+#include "cam_capacity_type.h"
+#include "cam_device_capacity.h"
+
+
+#define ZOOM_DESTROY_TIME      3.0
+
+
+static Evas_Object *slider = NULL;
+static Ecore_Timer *zoom_destroy_timer = NULL;
+static int zoom_value[CAM_ZOOM_VALUE_MAX] = { 0 };
+
+static gboolean __init_zoom_value(struct appdata *ad);
+static Eina_Bool __zoom_destroy_timer_cb(void *data);
+static void __set_zoom_value(struct appdata *data, int zoom_level);
+static void __zoom_slider_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void __zoom_slider_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __set_gauge_focus(struct appdata *data);
+
+
+static gboolean __init_zoom_value(struct appdata *ad)
+{
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       int i = 0;
+       double gap = (double)(camapp->zoom_max - camapp->zoom_min) / (CAM_ZOOM_VALUE_MAX - 2);
+       for (i = 2; i < CAM_ZOOM_VALUE_MAX - 1; i++) {
+               zoom_value[i] = (int)(0.5 + camapp->zoom_min + (i - 1) * gap);
+               DEBUG_TRACE("zoom_value[%d] =%d", i, zoom_value[i]);
+       }
+       zoom_value[1] = camapp->zoom_min;
+       DEBUG_TRACE("zoom_value[%d] =%d", 1, zoom_value[1]);
+       zoom_value[CAM_ZOOM_VALUE_MAX - 1] = camapp->zoom_max;
+       DEBUG_TRACE("zoom_value[%d] =%d", (CAM_ZOOM_VALUE_MAX - 1), zoom_value[CAM_ZOOM_VALUE_MAX - 1]);
+
+       return TRUE;
+}
+
+static Eina_Bool __zoom_destroy_timer_cb(void *data)
+{
+       CAM_UI_LOG();
+
+       struct appdata *ad = (struct appdata *)data;
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       unload_zoom_edje(ad);
+
+       if (zoom_destroy_timer)
+               zoom_destroy_timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __set_zoom_value(struct appdata *data, int zoom_level)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       int zoom = 0;
+       GValue value = { 0, };
+
+       camapp->zoom_mode = zoom_level;
+
+       zoom = zoom_value[camapp->zoom_mode];
+       DEBUG_TRACE("zoom_value =%d", zoom);
+       CAM_GVALUE_SET_INT(value, zoom);
+
+       if (!cam_handle_value_set(ad, PROP_ZOOM, &value)) {
+               cam_critical(LOG_CAM, "cam_handle_value_set failed");
+       }
+}
+
+static void __zoom_slider_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (obj) {
+               DEBUG_TRACE("");
+               Evas_Object *slider = (Evas_Object *)obj;
+               int slider_value = (int)elm_slider_value_get(slider);
+               elm_slider_value_set(slider, slider_value);
+               __set_zoom_value(ad, slider_value);
+       } else {
+               cam_critical(LOG_UI, "Error : slider is NULL");
+       }
+
+       if(zoom_destroy_timer)
+               ecore_timer_reset(zoom_destroy_timer);
+}
+
+static void __zoom_slider_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (obj) {
+               Evas_Object *slider = (Evas_Object *)obj;
+               int slider_value = (int)elm_slider_value_get(slider);
+               DEBUG_TRACE("slider_value:%d", slider_value);
+               __set_zoom_value(ad, slider_value);
+       } else {
+               cam_critical(LOG_UI, "Error : slider is NULL");
+       }
+
+       if(zoom_destroy_timer)
+               ecore_timer_reset(zoom_destroy_timer);
+}
+
+gboolean load_zoom_edje(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       elm_object_part_content_unset(ad->ug_base, "zoom_layout");
+       if (ad->zoom_edje)
+               cam_zoom_unload_edje(ad);
+
+       /* zoom bg */
+       gboolean portrait = FALSE;
+       gboolean slider_inverse = FALSE;
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+               ad->zoom_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_NAME, GRP_MAIN);
+               portrait = FALSE;
+               slider_inverse = TRUE;
+               break;
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->zoom_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_INVERSE_NAME, GRP_MAIN);
+               portrait = FALSE;
+               slider_inverse = FALSE;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+               ad->zoom_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_VERTICAL_NAME, GRP_MAIN);
+               portrait = TRUE;
+               slider_inverse = FALSE;
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->zoom_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_VERTICAL_INVERSE_NAME, GRP_MAIN);
+               slider_inverse = TRUE;
+               portrait = TRUE;
+               break;
+       default:
+               DEBUG_TRACE("wow, reached un-able reached codes");
+       }
+
+       cam_retvm_if(ad->zoom_edje == NULL, FALSE, "zom_edje is NULL");
+       elm_object_part_content_set(ad->ug_base, "zoom_layout", ad->zoom_edje);
+
+       /* zoom text */
+       if (!ad->zoom_text_min_edje) {
+               ad->zoom_text_min_edje = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->zoom_edje), "text_min");
+       }
+       cam_retvm_if(ad->zoom_text_min_edje == NULL, FALSE, "zoom_text_min is NULL");
+
+       if (!ad->zoom_text_max_edje) {
+               ad->zoom_text_max_edje = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->zoom_edje), "text_max");
+       }
+       cam_retvm_if(ad->zoom_text_max_edje == NULL, FALSE, "zoom_text_max is NULL");
+
+       edje_object_part_text_set(_EDJ(ad->zoom_edje), "text_min", "x1");
+       edje_object_part_text_set(_EDJ(ad->zoom_edje), "text_max", "x4");
+
+       /* zoom slider */
+       slider = elm_slider_add(ad->zoom_edje);
+       cam_retvm_if(slider == NULL, FALSE, "slider is NULL");
+
+       elm_object_style_set(slider, "camera");
+       if (portrait) {
+               elm_slider_horizontal_set(slider, EINA_TRUE);
+       } else {
+               elm_slider_horizontal_set(slider, EINA_FALSE);
+       }
+       if (slider_inverse) {
+               elm_slider_inverted_set(slider, EINA_TRUE);
+       } else {
+               elm_slider_inverted_set(slider, EINA_FALSE);
+       }
+       elm_slider_min_max_set(slider, CAM_ZOOM_VALUE_MIN + 1, CAM_ZOOM_VALUE_MAX - 1);
+
+
+       elm_slider_value_set(slider, camapp->zoom_mode);
+
+       int slider_value = (int)elm_slider_value_get(slider);
+       DEBUG_TRACE("slider_value:%d / camapp->zoom_mode:%d", slider_value, camapp->zoom_mode);
+
+       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(ad->zoom_edje, "slider", slider);
+
+       evas_object_smart_callback_del(slider, "slider,drag,stop", __zoom_slider_stop_cb);
+       evas_object_smart_callback_add(slider, "slider,drag,stop", __zoom_slider_stop_cb, (void*)ad);
+       evas_object_smart_callback_del(slider, "changed", __zoom_slider_changed_cb);
+       evas_object_smart_callback_add(slider, "changed", __zoom_slider_changed_cb, (void*)ad);
+
+       return TRUE;;
+}
+
+gboolean update_zoom_edje(struct appdata *ad)
+{
+       DEBUG_TRACE("START");
+
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       CamAppData *camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       cam_retvm_if(ad->zoom_edje == NULL, FALSE, "zom_edje is NULL");
+       cam_retvm_if(slider == NULL, FALSE, "zoom slider is NULL");
+
+       elm_slider_value_set(slider, camapp->zoom_mode);
+
+       return TRUE;
+}
+
+gboolean unload_zoom_edje(struct appdata *ad)
+{
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       cam_reset_focus_mode(ad);
+
+       DEL_EVAS_OBJECT(ad->zoom_text_min_edje);
+       DEL_EVAS_OBJECT(ad->zoom_text_max_edje);
+       DEL_EVAS_OBJECT(ad->zoom_edje);
+       REMOVE_TIMER(zoom_destroy_timer);
+
+       return TRUE;
+}
+
+gboolean zoom_in(struct appdata *ad, gboolean is_zoom_in, int zoom_gap)
+{
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       int zoom_value = 0;
+       unsigned int capacity = 0;
+
+       GetCamDevFuncCaps(&capacity, ad);
+       if (!(capacity & CAM_CP_FUNC_ZOOM)) {
+               DEBUG_TRACE("Zoom is not supported");
+               return FALSE;
+       }
+
+       REMOVE_TIMER(zoom_destroy_timer);
+
+       __init_zoom_value(ad);
+
+       /* set zoom value */
+       zoom_value = camapp->zoom_mode;
+
+       if (is_zoom_in) {
+               if (zoom_value < CAM_ZOOM_VALUE_MAX - 1)
+                       zoom_value += zoom_gap;
+       } else {
+               if (zoom_value > CAM_ZOOM_VALUE_MIN + 1)
+                       zoom_value -= zoom_gap;
+       }
+       DEBUG_TRACE("zoom_value = %d", zoom_value);
+
+       __set_zoom_value(ad, zoom_value);
+
+       if (ad->zoom_edje == NULL)
+               load_zoom_edje(ad);
+       else
+               update_zoom_edje(ad);
+
+       zoom_destroy_timer = ecore_timer_add(ZOOM_DESTROY_TIME, __zoom_destroy_timer_cb, ad);
+
+       return TRUE;
+}
+
+void cam_zoom_create_pinch_edje(struct appdata *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->pinch_edje) {
+               evas_object_del(ad->pinch_edje);
+               ad->pinch_edje = NULL;
+       }
+
+       elm_object_part_content_unset(ad->ug_base, "pinch_layout");
+
+       switch (ad->target_direction) {
+       case CAM_TARGET_DIRECTION_LANDSCAPE:
+       case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
+               ad->pinch_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_NAME, "pinch");
+               break;
+       case CAM_TARGET_DIRECTION_PORTRAIT:
+       case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
+               ad->pinch_edje = cam_app_load_edj(ad->ug_base, CAM_ZOOM_EDJ_VERTICAL_NAME, "pinch");
+               break;
+       default:
+               DEBUG_TRACE("error target direction!");
+               break;
+       }
+
+       cam_retm_if(ad->pinch_edje == NULL, "pinch_edje is NULL");
+       elm_object_part_content_set(ad->ug_base, "pinch_layout", ad->pinch_edje);
+
+       __set_gauge_focus(ad);
+       __init_zoom_value(ad);
+}
+
+static void __set_gauge_focus(struct appdata *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       CamAppData *camapp = NULL;
+       cam_retm_if(ad == NULL, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retm_if(camapp == NULL, "camapp_handle is NULL");
+
+       DEBUG_TRACE("camapp->zoom_mode %d", camapp->zoom_mode);
+
+       char part_name[CAM_ZOOM_VALUE_MAX + 1][128] = {
+               {"set.pinch.default"},
+               {"set.pinch.default"},
+               {"set.pinch.1.1x"},
+               {"set.pinch.1.2x"},
+               {"set.pinch.1.3x"},
+               {"set.pinch.1.4x"},
+               {"set.pinch.1.5x"},
+               {"set.pinch.1.6x"},
+               {"set.pinch.1.7x"},
+               {"set.pinch.1.8x"},
+               {"set.pinch.1.9x"},
+               {"set.pinch.2.0x"},
+               {"set.pinch.2.1x"},
+               {"set.pinch.2.2x"},
+               {"set.pinch.2.3x"},
+               {"set.pinch.2.4x"},
+               {"set.pinch.2.5x"},
+               {"set.pinch.2.6x"},
+               {"set.pinch.2.7x"},
+               {"set.pinch.2.8x"},
+               {"set.pinch.2.9x"},
+               {"set.pinch.3.0x"},
+               {"set.pinch.3.1x"},
+               {"set.pinch.3.2x"},
+               {"set.pinch.3.3x"},
+               {"set.pinch.3.4x"},
+               {"set.pinch.3.5x"},
+               {"set.pinch.3.6x"},
+               {"set.pinch.3.7x"},
+               {"set.pinch.3.8x"},
+               {"set.pinch.3.9x"},
+               {"set.pinch.4.0x"},
+               {"set.pinch.4.0x"},
+       };
+
+       if ((camapp->zoom_mode >= CAM_ZOOM_VALUE_MIN)
+               &&(camapp->zoom_mode <= CAM_ZOOM_VALUE_MAX)) {
+               elm_object_signal_emit(ad->pinch_edje, part_name[camapp->zoom_mode], "prog");
+       } else {
+               DEBUG_TRACE("NOTE: error zoom mode");
+       }
+
+       evas_object_show(ad->pinch_edje);
+}
+
+gboolean cam_pinch_zoom_in(struct appdata* ad,gboolean is_zoom_in,int zoom_value)
+{
+       CamAppData *camapp = NULL;
+       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       camapp = ad->camapp_handle;
+       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+
+       unsigned int capacity = 0;
+
+       GetCamDevFuncCaps(&capacity, ad);
+       if (!(capacity & CAM_CP_FUNC_ZOOM)) {
+               DEBUG_TRACE("Zoom is not supported");
+               return FALSE;
+       }
+
+       if (is_zoom_in) {
+               if (camapp->zoom_mode < CAM_ZOOM_VALUE_MAX - 1) {
+                       camapp->zoom_mode = camapp->zoom_mode + zoom_value;
+               }
+       } else {
+               if (camapp->zoom_mode > CAM_ZOOM_VALUE_MIN + 1) {
+                       camapp->zoom_mode = camapp->zoom_mode - zoom_value;
+               }
+       }
+
+       __set_gauge_focus(ad);
+       __set_zoom_value(ad, camapp->zoom_mode);
+
+       return TRUE;
+}
+//endfile
+
diff --git a/ug-camera-efl.manifest b/ug-camera-efl.manifest
new file mode 100644 (file)
index 0000000..8051632
--- /dev/null
@@ -0,0 +1,13 @@
+<manifest>
+       <define>
+               <domain name="ug-camera-efl" />
+       </define>
+       <assign>
+               <filesystem path="/usr/ug/res/icons/ug-camera-efl/ug-camera-efl.png" label="_" />
+               <filesystem path="/opt/usr/ug/data/ug-camera-efl/.camera.ini" label="ug-camera-efl" />
+               <filesystem path="/opt/usr/ug/data/ug-camera-efl" label="ug-camera-efl" type="transmutable" />
+       </assign>
+       <request>
+               <domain name="_" />
+       </request>
+</manifest>
diff --git a/ug-camera-efl.png b/ug-camera-efl.png
new file mode 100755 (executable)
index 0000000..a8a2871
Binary files /dev/null and b/ug-camera-efl.png differ
diff --git a/ug-camera-efl.xml b/ug-camera-efl.xml
new file mode 100755 (executable)
index 0000000..d391ca2
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="ug-camera-efl" version="0.1.0" install-location="internal-only">
+       <label>camera-efl</label>
+       <author email="namjin45.kim@samsung.com" href="www.samsung.com">Namjin Kim</author>
+       <author email="sora.hyun@samsung.com" href="www.samsung.com">Sora Hyun</author>
+       <author email="h2.seo@samsung.com" href="www.samsung.com">Hyunho Seo</author>
+       <description>Camera UI Gadget</description>
+       <ui-application appid="camera-efl" exec="/usr/ug/bin/camera-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+               <label>Camera Appcontrol</label>
+               <icon>ug-camera-efl.png</icon>
+               <label xml:lang="en-us">Camera</label>
+               <label xml:lang="nl-nl">Camera</label>
+               <label xml:lang="de-de">Kamera</label>
+               <label xml:lang="zh-hk">相機</label>
+               <label xml:lang="zh-cn">照相机</label>
+               <label xml:lang="ru-ru">Камера</label>
+               <label xml:lang="zh-tw">照相机</label>
+               <label xml:lang="ja-jp">カメラ</label>
+               <label xml:lang="es-es">Cámara</label>
+               <label xml:lang="el-gr">Κάμερα</label>
+               <label xml:lang="it-it">Fotocamera</label>
+               <label xml:lang="tr-tr">Kamera</label>
+               <label xml:lang="pt-pt">Câmara</label>
+               <label xml:lang="fr-fr">Appareil photo</label>
+               <label xml:lang="ko-kr">카메라</label>
+               <label xml:lang="hy-am">Խցիկ</label>
+               <label xml:lang="az-az">Kamera</label>
+               <label xml:lang="eu-es">Kamera</label>
+               <label xml:lang="bg-bg">Камера</label>
+               <label xml:lang="ca-es">Càmera</label>
+               <label xml:lang="zh-cn">照相机</label>
+               <label xml:lang="hr-hr">Kamera</label>
+               <label xml:lang="cs-cz">Fotoaparát</label>
+               <label xml:lang="da-dk">Kamera</label>
+               <label xml:lang="gl-es">Cámara</label>
+               <label xml:lang="en-gb">Camera</label>
+               <label xml:lang="et-ee">Kaamera</label>
+               <label xml:lang="fi-fi">Kamera</label>
+               <label xml:lang="ka-ge">ფოტოაპარატი</label>
+               <label xml:lang="hu-hu">Fényképező</label>
+               <label xml:lang="is-is">Myndavél</label>
+               <label xml:lang="ga-ie">Ceamara</label>
+               <label xml:lang="kk-kz">Камера</label>
+               <label xml:lang="lv-lv">Kamera</label>
+               <label xml:lang="mk-mk">Камера</label>
+               <label xml:lang="nb-no">Kamera</label>
+               <label xml:lang="pl-pl">Aparat</label>
+               <label xml:lang="pt-br">Câmara</label>
+               <label xml:lang="ro-ro">Cameră foto</label>
+               <label xml:lang="ru-ru">Камера</label>
+               <label xml:lang="sr-rs">Kamera</label>
+               <label xml:lang="sk-sk">Fotoaparát</label>
+               <label xml:lang="sl-si">Fotoaparat</label>
+               <label xml:lang="es-mx">Cámara</label>
+               <label xml:lang="uk-ua">Камера</label>
+               <label xml:lang="uz-uz">Kamera</label>
+               <label xml:lang="ar-ae">الكاميرا</label>
+               <label xml:lang="zh-sg">照相机</label>
+               <label xml:lang="hi-in">कैमरा</label>
+               <label xml:lang="en-ph">Camera</label>
+               <label xml:lang="fr-ca">Appareil photo</label>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/create_content" />
+                       <mime name="image/jpg" />
+                       <mime name="image/jpeg" />
+                       <mime name="video/3gp" />
+                       <mime name="video/3gpp" />
+               </application-service>
+       </ui-application>
+</manifest>
diff --git a/ug.camera-efl.include b/ug.camera-efl.include
new file mode 100755 (executable)
index 0000000..7511392
--- /dev/null
@@ -0,0 +1,26 @@
+$1 ail::db rw
+$1 cbhm r
+$1 dbus rx
+$1 deviced w
+$1 device::camera rw
+$1 device::hwcodec r
+$1 device::mdnie rw
+$1 device::video rw
+$1 isf rx
+$1 mdm-server w
+$1 media-data::db rw
+$1 media-server rwx
+$1 pkgmer::db r
+$1 power_manager w
+$1 sound_server rw
+$1 stt-server rx
+$1 system::use_internet r
+$1 tts-server x
+$1 ug-image-viewer-efl wx
+$1 ug-camera-efl rwxat
+$1 vcs-server rwx
+$1 xorg rw
+$1 image-filter-d::db rw
+$1 ug.image-viewer-efl include
+$1 ug.setting-location-efl include
+$1 ug.setting-voice-efl include