From 6399fe29ef43aa78432c89eef8815e6288cfdd6c Mon Sep 17 00:00:00 2001 From: Sehong Na Date: Sat, 31 May 2014 13:02:05 +0900 Subject: Initialize Tizen 2.3 --- .camera.ini | 39 + .gitignore | 2 + CMakeLists.txt | 196 + LICENSE.Flora | 206 + NOTICE | 3 + edc/cam_ctxpopup_shortcuts.edc | 1010 +++ edc/cam_ctxpopup_shortcuts_inc.edc | 163 + edc/cam_ev_layout.edc | 159 + edc/cam_ev_layout_inverse.edc | 159 + edc/cam_ev_layout_vertical.edc | 158 + edc/cam_ev_layout_vertical_inverse.edc | 159 + edc/cam_funcs.edc | 163 + edc/cam_guideline_edje.edc | 453 + edc/cam_images.edc | 332 + edc/cam_indicator_layout.edc | 218 + edc/cam_main_layout.edc | 496 ++ edc/cam_recording_edje.edc | 190 + edc/cam_recording_edje_inc.edc | 40 + edc/cam_recording_edje_inverse.edc | 194 + edc/cam_recording_edje_inverse_inc.edc | 38 + edc/cam_recording_edje_vertical.edc | 189 + edc/cam_recording_edje_vertical_inc.edc | 39 + edc/cam_recording_edje_vertical_inverse.edc | 192 + edc/cam_recording_edje_vertical_inverse_inc.edc | 38 + edc/cam_setting_popup_layout.edc | 50 + edc/cam_setting_popup_layout_inc.edc | 288 + edc/cam_toolbar_layout.edc | 619 ++ edc/cam_toolbar_layout_inc.edc | 353 + edc/cam_toolbar_layout_inverse.edc | 619 ++ edc/cam_toolbar_layout_inverse_inc.edc | 353 + edc/cam_toolbar_layout_vertical.edc | 618 ++ edc/cam_toolbar_layout_vertical_inc.edc | 353 + edc/cam_toolbar_layout_vertical_inverse.edc | 618 ++ edc/cam_toolbar_layout_vertical_inverse_inc.edc | 353 + edc/cam_utils.edc | 436 + edc/cam_zoom_layout.edc | 341 + edc/cam_zoom_layout_inverse.edc | 146 + edc/cam_zoom_layout_vertical.edc | 344 + edc/cam_zoom_layout_vertical_inverse.edc | 146 + edc/style_button_camera.edc | 490 ++ edc/style_ctxpopup_camera_with_radio.edc | 1732 ++++ edc/style_genlist_macro.edc | 847 ++ edc/style_genlist_normal.edc | 866 ++ edc/style_label_camera.edc | 634 ++ edc/style_slider_camera.edc | 488 ++ edc/style_tizen_hd_inc.edc | 1155 +++ images/edc_images/00_button_01_normal.png | Bin 0 -> 3025 bytes images/edc_images/00_button_01_normal_Focus.png | Bin 0 -> 2990 bytes images/edc_images/00_button_01_normal_dim.png | Bin 0 -> 3012 bytes images/edc_images/00_button_01_normal_press.png | Bin 0 -> 3099 bytes images/edc_images/00_check_off.png | Bin 0 -> 3235 bytes images/edc_images/camara_back_button.png | Bin 0 -> 3863 bytes images/edc_images/camara_back_button_press.png | Bin 0 -> 3528 bytes images/edc_images/camcorder_recording_pause.png | Bin 0 -> 12359 bytes .../edc_images/camcorder_recording_pause_press.png | Bin 0 -> 11595 bytes images/edc_images/camcorder_recording_shutter.png | Bin 0 -> 13746 bytes images/edc_images/camcorder_recording_stop.png | Bin 0 -> 12350 bytes .../edc_images/camcorder_recording_stop_press.png | Bin 0 -> 11730 bytes images/edc_images/camcorder_standby_shutter.png | Bin 0 -> 12302 bytes .../edc_images/camcorder_standby_shutter_dim.png | Bin 0 -> 11687 bytes .../edc_images/camcorder_standby_shutter_press.png | Bin 0 -> 12082 bytes images/edc_images/camcorder_stop_shutter_icon.png | Bin 0 -> 2930 bytes images/edc_images/camera_button_off.png | Bin 0 -> 4169 bytes images/edc_images/camera_button_on.png | Bin 0 -> 4397 bytes images/edc_images/camera_handle.png | Bin 0 -> 8521 bytes images/edc_images/camera_help_image.png | Bin 0 -> 16120 bytes images/edc_images/camera_menu_bg.png | Bin 0 -> 3415 bytes images/edc_images/camera_menu_bg_press.png | Bin 0 -> 3388 bytes images/edc_images/camera_menu_tab_hold.png | Bin 0 -> 1692 bytes images/edc_images/camera_mode_shutter_dim.png | Bin 0 -> 20959 bytes images/edc_images/camera_mode_shutter_icon.png | Bin 0 -> 2249 bytes images/edc_images/camera_mode_shutter_icon_dim.png | Bin 0 -> 4015 bytes images/edc_images/camera_mode_shutter_normal.png | Bin 0 -> 21827 bytes .../camera_mode_shutter_normal_inverse.png | Bin 0 -> 26999 bytes images/edc_images/camera_mode_shutter_press.png | Bin 0 -> 21089 bytes images/edc_images/camera_mode_thumbnail_bg.png | Bin 0 -> 2450 bytes .../edc_images/camera_mode_thumbnail_bg_press.png | Bin 0 -> 2368 bytes images/edc_images/camera_normal_left.png | Bin 0 -> 2210 bytes images/edc_images/camera_normal_opacity_l_bg.png | Bin 0 -> 2122 bytes images/edc_images/camera_normal_opacity_r_bg.png | Bin 0 -> 2241 bytes images/edc_images/camera_normal_right.png | Bin 0 -> 2203 bytes images/edc_images/camera_option_popup_anker.png | Bin 0 -> 3117 bytes .../camera_option_popup_anker_inverse.png | Bin 0 -> 3151 bytes images/edc_images/camera_option_popup_bg.png | Bin 0 -> 3134 bytes .../edc_images/camera_option_popup_bg_2depth.png | Bin 0 -> 3130 bytes images/edc_images/camera_popup_ex_bar.png | Bin 0 -> 3130 bytes images/edc_images/camera_popup_zoom.png | Bin 0 -> 1846 bytes images/edc_images/camera_popup_zoom_bar.png | Bin 0 -> 1330 bytes images/edc_images/camera_radio_btn_off.png | Bin 0 -> 2458 bytes images/edc_images/camera_radio_btn_on.png | Bin 0 -> 3208 bytes images/edc_images/camera_recording_btn_caf.png | Bin 0 -> 4342 bytes .../edc_images/camera_recording_btn_caf_press.png | Bin 0 -> 4393 bytes images/edc_images/camera_shortcut_line_h_01.png | Bin 0 -> 3912 bytes images/edc_images/camera_shortcut_line_v_01.png | Bin 0 -> 3832 bytes images/edc_images/camera_shortcut_line_v_02.png | Bin 0 -> 2276 bytes images/edc_images/camera_shrtcut_edit_bg.png | Bin 0 -> 4197 bytes images/edc_images/camera_shrtcut_menubar_bg.png | Bin 0 -> 2209 bytes images/edc_images/camera_shrtcut_text_bg.png | Bin 0 -> 1595 bytes images/edc_images/camera_timer_popup.png | Bin 0 -> 8502 bytes .../indicator/camera_indicator_battery_00.png | Bin 0 -> 3007 bytes .../indicator/camera_indicator_battery_01.png | Bin 0 -> 3234 bytes .../indicator/camera_indicator_battery_02.png | Bin 0 -> 3300 bytes .../indicator/camera_indicator_battery_03.png | Bin 0 -> 3300 bytes .../indicator/camera_indicator_battery_04.png | Bin 0 -> 3304 bytes .../indicator/camera_indicator_battery_05.png | Bin 0 -> 3288 bytes .../indicator/camera_indicator_battery_charge.png | Bin 0 -> 1455 bytes .../indicator/camera_indicator_battery_full.png | Bin 0 -> 3265 bytes .../camera_indicator_gps_connection01.png | Bin 0 -> 3913 bytes .../camera_indicator_gps_connection02.png | Bin 0 -> 4515 bytes .../camera_indicator_gps_connection03.png | Bin 0 -> 5117 bytes .../indicator/camera_indicator_gps_off.png | Bin 0 -> 5044 bytes .../indicator/camera_indicator_gps_on.png | Bin 0 -> 3550 bytes .../edc_images/indicator/camera_indicator_mute.png | Bin 0 -> 3912 bytes .../indicator/camera_indicator_smile_shot.png | Bin 0 -> 4156 bytes .../indicator/camera_indicator_storage_in.png | Bin 0 -> 1458 bytes .../camera_indicator_storage_memoryfull.png | Bin 0 -> 1704 bytes .../camera_indicator_storage_phonefull.png | Bin 0 -> 1509 bytes .../indicator/camera_indicator_storage_t_flash.png | Bin 0 -> 1583 bytes images/edc_images/indicator/camera_rec.png | Bin 0 -> 3926 bytes .../shortcut/camera_mode_anti_shake_off_nor.png | Bin 0 -> 3718 bytes .../shortcut/camera_mode_anti_shake_off_press.png | Bin 0 -> 4891 bytes .../shortcut/camera_mode_anti_shake_on_nor.png | Bin 0 -> 3353 bytes .../shortcut/camera_mode_anti_shake_on_press.png | Bin 0 -> 4679 bytes .../shortcut/camera_mode_auto_contrast_off_nor.png | Bin 0 -> 4628 bytes .../camera_mode_auto_contrast_off_press.png | Bin 0 -> 5414 bytes .../shortcut/camera_mode_auto_contrast_on_nor.png | Bin 0 -> 4228 bytes .../camera_mode_auto_contrast_on_press.png | Bin 0 -> 5193 bytes .../shortcut/camera_mode_burstshot_off_nor.png | Bin 0 -> 4081 bytes .../shortcut/camera_mode_burstshot_off_press.png | Bin 0 -> 4004 bytes .../shortcut/camera_mode_burstshot_on_nor.png | Bin 0 -> 1638 bytes .../shortcut/camera_mode_burstshot_on_press.png | Bin 0 -> 1507 bytes .../shortcut/camera_mode_capture_voice_off_nor.png | Bin 0 -> 4202 bytes .../camera_mode_capture_voice_off_press.png | Bin 0 -> 4116 bytes .../shortcut/camera_mode_capture_voice_on_nor.png | Bin 0 -> 4309 bytes .../camera_mode_capture_voice_on_press.png | Bin 0 -> 4241 bytes .../camera_mode_effect_Black and white_nor.png | Bin 0 -> 4074 bytes .../camera_mode_effect_Black and white_press.png | Bin 0 -> 4090 bytes .../shortcut/camera_mode_effect_negative_nor.png | Bin 0 -> 3981 bytes .../shortcut/camera_mode_effect_negative_press.png | Bin 0 -> 4009 bytes .../shortcut/camera_mode_effect_none_nor.png | Bin 0 -> 3277 bytes .../shortcut/camera_mode_effect_none_press.png | Bin 0 -> 4424 bytes .../shortcut/camera_mode_effect_sepia_nor.png | Bin 0 -> 4137 bytes .../shortcut/camera_mode_effect_sepia_press.png | Bin 0 -> 4130 bytes .../shortcut/camera_mode_exposure_1_nor.png | Bin 0 -> 3229 bytes .../shortcut/camera_mode_exposure_1_press.png | Bin 0 -> 2761 bytes .../shortcut/camera_mode_exposure_2_nor.png | Bin 0 -> 2887 bytes .../shortcut/camera_mode_exposure_2_press.png | Bin 0 -> 2482 bytes .../shortcut/camera_mode_exposure_3_nor.png | Bin 0 -> 2949 bytes .../shortcut/camera_mode_exposure_3_press.png | Bin 0 -> 2550 bytes .../shortcut/camera_mode_exposure_4_nor.png | Bin 0 -> 3255 bytes .../shortcut/camera_mode_exposure_4_press.png | Bin 0 -> 2783 bytes .../shortcut/camera_mode_exposure_5_nor.png | Bin 0 -> 2961 bytes .../shortcut/camera_mode_exposure_5_press.png | Bin 0 -> 2618 bytes .../shortcut/camera_mode_exposure_6_nor.png | Bin 0 -> 3053 bytes .../shortcut/camera_mode_exposure_6_press.png | Bin 0 -> 2615 bytes .../shortcut/camera_mode_exposure_7_nor.png | Bin 0 -> 2741 bytes .../shortcut/camera_mode_exposure_7_press.png | Bin 0 -> 2387 bytes .../shortcut/camera_mode_exposure_8_nor.png | Bin 0 -> 2707 bytes .../shortcut/camera_mode_exposure_8_press.png | Bin 0 -> 2300 bytes .../shortcut/camera_mode_exposure_9_nor.png | Bin 0 -> 3048 bytes .../shortcut/camera_mode_exposure_9_press.png | Bin 0 -> 2588 bytes .../shortcut/camera_mode_flash_auto_nor.png | Bin 0 -> 3711 bytes .../shortcut/camera_mode_flash_auto_press.png | Bin 0 -> 4870 bytes .../shortcut/camera_mode_flash_off_nor.png | Bin 0 -> 3688 bytes .../shortcut/camera_mode_flash_off_press.png | Bin 0 -> 4816 bytes .../shortcut/camera_mode_flash_on_nor.png | Bin 0 -> 2697 bytes .../shortcut/camera_mode_flash_on_press.png | Bin 0 -> 4089 bytes .../shortcut/camera_mode_focus_auto_nor.png | Bin 0 -> 2335 bytes .../shortcut/camera_mode_focus_auto_press.png | Bin 0 -> 3765 bytes .../camera_mode_focus_face_detection_nor.png | Bin 0 -> 3930 bytes .../camera_mode_focus_face_detection_press.png | Bin 0 -> 5143 bytes .../shortcut/camera_mode_focus_macro_nor.png | Bin 0 -> 3686 bytes .../shortcut/camera_mode_focus_macro_press.png | Bin 0 -> 4733 bytes .../shortcut/camera_mode_gps_off_nor.png | Bin 0 -> 4628 bytes .../shortcut/camera_mode_gps_off_press.png | Bin 0 -> 5907 bytes .../edc_images/shortcut/camera_mode_gps_on_nor.png | Bin 0 -> 4654 bytes .../shortcut/camera_mode_gps_on_press.png | Bin 0 -> 5543 bytes .../shortcut/camera_mode_guidelines_off_nor.png | Bin 0 -> 3214 bytes .../shortcut/camera_mode_guidelines_off_press.png | Bin 0 -> 2527 bytes .../shortcut/camera_mode_guidelines_on_nor.png | Bin 0 -> 1451 bytes .../shortcut/camera_mode_guidelines_on_press.png | Bin 0 -> 1305 bytes .../shortcut/camera_mode_iso_100_nor.png | Bin 0 -> 1659 bytes .../shortcut/camera_mode_iso_100_press.png | Bin 0 -> 1442 bytes .../shortcut/camera_mode_iso_200_nor.png | Bin 0 -> 1655 bytes .../shortcut/camera_mode_iso_200_press.png | Bin 0 -> 1454 bytes .../shortcut/camera_mode_iso_400_nor.png | Bin 0 -> 1675 bytes .../shortcut/camera_mode_iso_400_press.png | Bin 0 -> 1454 bytes .../edc_images/shortcut/camera_mode_iso_50_nor.png | Bin 0 -> 3599 bytes .../shortcut/camera_mode_iso_50_press.png | Bin 0 -> 3739 bytes .../shortcut/camera_mode_iso_800_nor.png | Bin 0 -> 1653 bytes .../shortcut/camera_mode_iso_800_press.png | Bin 0 -> 1469 bytes .../shortcut/camera_mode_iso_auto_nor.png | Bin 0 -> 1712 bytes .../shortcut/camera_mode_iso_auto_press.png | Bin 0 -> 1493 bytes .../camera_mode_metering_center_weighted_nor.png | Bin 0 -> 4492 bytes .../camera_mode_metering_center_weighted_press.png | Bin 0 -> 5302 bytes .../shortcut/camera_mode_metering_matrix_nor.png | Bin 0 -> 1399 bytes .../shortcut/camera_mode_metering_matrix_press.png | Bin 0 -> 1297 bytes .../shortcut/camera_mode_metering_normal_nor.png | Bin 0 -> 1402 bytes .../camera_mode_metering_pressmal_press.png | Bin 0 -> 1297 bytes .../shortcut/camera_mode_metering_spot_nor.png | Bin 0 -> 2293 bytes .../shortcut/camera_mode_metering_spot_press.png | Bin 0 -> 1919 bytes .../camera_mode_outdoor_visibility_off_nor.png | Bin 0 -> 3568 bytes .../camera_mode_outdoor_visibility_off_press.png | Bin 0 -> 2921 bytes .../camera_mode_outdoor_visibility_on_nor.png | Bin 0 -> 3476 bytes .../camera_mode_outdoor_visibility_on_press.png | Bin 0 -> 2874 bytes .../shortcut/camera_mode_recording_fast_nor.png | Bin 0 -> 6855 bytes .../shortcut/camera_mode_recording_fast_press.png | Bin 0 -> 5722 bytes .../camera_mode_recording_limit_for_mms_nor.png | Bin 0 -> 2816 bytes .../camera_mode_recording_limit_for_mms_press.png | Bin 0 -> 4441 bytes .../shortcut/camera_mode_recording_normal_nor.png | Bin 0 -> 3289 bytes .../camera_mode_recording_normal_press.png | Bin 0 -> 4688 bytes .../camera_mode_recording_slowmotion_nor.png | Bin 0 -> 7944 bytes .../camera_mode_recording_slowmotion_press.png | Bin 0 -> 7059 bytes .../shortcut/camera_mode_refresh_nor.png | Bin 0 -> 3597 bytes .../shortcut/camera_mode_refresh_press.png | Bin 0 -> 4713 bytes .../edc_images/shortcut/camera_mode_reset_nor.png | Bin 0 -> 4501 bytes .../shortcut/camera_mode_reset_press.png | Bin 0 -> 5712 bytes .../shortcut/camera_mode_resolution_0_3m_nor.png | Bin 0 -> 4317 bytes .../shortcut/camera_mode_resolution_0_3m_press.png | Bin 0 -> 5659 bytes .../camera_mode_resolution_1280X720_nor.png | Bin 0 -> 3930 bytes .../camera_mode_resolution_1280X720_press.png | Bin 0 -> 4962 bytes .../camera_mode_resolution_176X144_nor.png | Bin 0 -> 3941 bytes .../camera_mode_resolution_176X144_press.png | Bin 0 -> 4933 bytes .../camera_mode_resolution_1920X1080_nor.png | Bin 0 -> 4027 bytes .../camera_mode_resolution_1920X1080_press.png | Bin 0 -> 5019 bytes .../shortcut/camera_mode_resolution_1_3m_nor.png | Bin 0 -> 5609 bytes .../shortcut/camera_mode_resolution_1_3m_press.png | Bin 0 -> 4840 bytes .../shortcut/camera_mode_resolution_2m_nor.png | Bin 0 -> 3786 bytes .../shortcut/camera_mode_resolution_2m_press.png | Bin 0 -> 5121 bytes .../camera_mode_resolution_320X240_nor.png | Bin 0 -> 4203 bytes .../camera_mode_resolution_320X240_press.png | Bin 0 -> 5101 bytes .../shortcut/camera_mode_resolution_3_2m_nor.png | Bin 0 -> 4249 bytes .../shortcut/camera_mode_resolution_3_2m_press.png | Bin 0 -> 5734 bytes .../shortcut/camera_mode_resolution_5m_nor.png | Bin 0 -> 3799 bytes .../shortcut/camera_mode_resolution_5m_press.png | Bin 0 -> 5154 bytes .../camera_mode_resolution_640X480_nor.png | Bin 0 -> 4202 bytes .../camera_mode_resolution_640X480_press.png | Bin 0 -> 5111 bytes .../camera_mode_resolution_720X480_nor.png | Bin 0 -> 4133 bytes .../camera_mode_resolution_720X480_press.png | Bin 0 -> 5094 bytes .../shortcut/camera_mode_resolution_8m_nor.png | Bin 0 -> 3683 bytes .../shortcut/camera_mode_resolution_8m_press.png | Bin 0 -> 4956 bytes .../shortcut/camera_mode_resolution_w0_9m_nor.png | Bin 0 -> 4965 bytes .../camera_mode_resolution_w0_9m_press.png | Bin 0 -> 3688 bytes .../shortcut/camera_mode_resolution_w2_4m_nor.png | Bin 0 -> 4544 bytes .../camera_mode_resolution_w2_4m_press.png | Bin 0 -> 5957 bytes .../shortcut/camera_mode_resolution_w2m_nor.png | Bin 0 -> 6532 bytes .../shortcut/camera_mode_resolution_w2m_press.png | Bin 0 -> 5740 bytes .../shortcut/camera_mode_resolution_w3_6m_nor.png | Bin 0 -> 4977 bytes .../camera_mode_resolution_w3_6m_press.png | Bin 0 -> 3711 bytes .../shortcut/camera_mode_resolution_w4m_nor.png | Bin 0 -> 4098 bytes .../shortcut/camera_mode_resolution_w4m_press.png | Bin 0 -> 5573 bytes .../shortcut/camera_mode_resolution_w5_7m_nor.png | Bin 0 -> 4522 bytes .../camera_mode_resolution_w5_7m_press.png | Bin 0 -> 6019 bytes .../shortcut/camera_mode_resolution_w6m_nor.png | Bin 0 -> 4446 bytes .../shortcut/camera_mode_resolution_w6m_press.png | Bin 0 -> 3153 bytes .../shortcut/camera_mode_self_rec_nor.png | Bin 0 -> 3039 bytes .../shortcut/camera_mode_self_rec_press.png | Bin 0 -> 4265 bytes .../shortcut/camera_mode_self_shot_nor.png | Bin 0 -> 3777 bytes .../shortcut/camera_mode_self_shot_press.png | Bin 0 -> 4914 bytes .../shortcut/camera_mode_setting_nor.png | Bin 0 -> 3075 bytes .../shortcut/camera_mode_setting_press.png | Bin 0 -> 4350 bytes .../camera_mode_shooting_mode_Backlight_nor.png | Bin 0 -> 3178 bytes .../camera_mode_shooting_mode_Backlight_press.png | Bin 0 -> 4382 bytes .../camera_mode_shooting_mode_action_shot_nor.png | Bin 0 -> 3524 bytes ...camera_mode_shooting_mode_action_shot_press.png | Bin 0 -> 5336 bytes .../camera_mode_shooting_mode_beach_snow_nor.png | Bin 0 -> 3553 bytes .../camera_mode_shooting_mode_beach_snow_press.png | Bin 0 -> 4898 bytes .../camera_mode_shooting_mode_beauty_nor.png | Bin 0 -> 3235 bytes .../camera_mode_shooting_mode_beauty_press.png | Bin 0 -> 4439 bytes .../camera_mode_shooting_mode_bestphoto_nor.png | Bin 0 -> 4239 bytes .../camera_mode_shooting_mode_bestphoto_press.png | Bin 0 -> 4039 bytes ...ra_mode_shooting_mode_buddy_photo_share_nor.png | Bin 0 -> 4395 bytes ..._mode_shooting_mode_buddy_photo_share_press.png | Bin 0 -> 3867 bytes .../camera_mode_shooting_mode_candlelight_nor.png | Bin 0 -> 2159 bytes ...camera_mode_shooting_mode_candlelight_press.png | Bin 0 -> 3719 bytes .../camera_mode_shooting_mode_cartoon_nor.png | Bin 0 -> 4389 bytes .../camera_mode_shooting_mode_cartoon_press.png | Bin 0 -> 5622 bytes .../camera_mode_shooting_mode_dawn_nor.png | Bin 0 -> 2398 bytes .../camera_mode_shooting_mode_dawn_press.png | Bin 0 -> 3645 bytes .../camera_mode_shooting_mode_fall_nor.png | Bin 0 -> 2739 bytes .../camera_mode_shooting_mode_fall_press.png | Bin 0 -> 4040 bytes .../camera_mode_shooting_mode_firework_nor.png | Bin 0 -> 4828 bytes .../camera_mode_shooting_mode_firework_press.png | Bin 0 -> 5657 bytes .../shortcut/camera_mode_shooting_mode_hdr_nor.png | Bin 0 -> 6662 bytes .../camera_mode_shooting_mode_hdr_press.png | Bin 0 -> 5479 bytes .../camera_mode_shooting_mode_landscape_nor.png | Bin 0 -> 2228 bytes .../camera_mode_shooting_mode_landscape_press.png | Bin 0 -> 3564 bytes .../camera_mode_shooting_mode_night_nor.png | Bin 0 -> 3679 bytes .../camera_mode_shooting_mode_night_press.png | Bin 0 -> 4778 bytes .../camera_mode_shooting_mode_panorama_nor.png | Bin 0 -> 2289 bytes .../camera_mode_shooting_mode_panorama_press.png | Bin 0 -> 3659 bytes .../camera_mode_shooting_mode_party_indoor_nor.png | Bin 0 -> 1992 bytes ...amera_mode_shooting_mode_party_indoor_press.png | Bin 0 -> 1868 bytes .../camera_mode_shooting_mode_portrait_nor.png | Bin 0 -> 3987 bytes .../camera_mode_shooting_mode_portrait_press.png | Bin 0 -> 5062 bytes .../camera_mode_shooting_mode_scene_none_nor.png | Bin 0 -> 1940 bytes .../camera_mode_shooting_mode_scene_none_press.png | Bin 0 -> 1732 bytes .../camera_mode_shooting_mode_share_nor.png | Bin 0 -> 4505 bytes .../camera_mode_shooting_mode_share_press.png | Bin 0 -> 5352 bytes .../camera_mode_shooting_mode_single_shot_nor.png | Bin 0 -> 1468 bytes ...camera_mode_shooting_mode_single_shot_press.png | Bin 0 -> 1376 bytes .../camera_mode_shooting_mode_smile_shot_nor.png | Bin 0 -> 3769 bytes .../camera_mode_shooting_mode_smile_shot_press.png | Bin 0 -> 5058 bytes .../camera_mode_shooting_mode_sports_nor.png | Bin 0 -> 4427 bytes .../camera_mode_shooting_mode_sports_press.png | Bin 0 -> 5404 bytes .../camera_mode_shooting_mode_sunset_nor.png | Bin 0 -> 2167 bytes .../camera_mode_shooting_mode_sunset_press.png | Bin 0 -> 3481 bytes .../camera_mode_shooting_mode_text_nor.png | Bin 0 -> 1792 bytes .../camera_mode_shooting_mode_text_press.png | Bin 0 -> 3324 bytes images/edc_images/shortcut/camera_mode_shutter.png | Bin 0 -> 6009 bytes .../shortcut/camera_mode_shutter_press.png | Bin 0 -> 5749 bytes .../shortcut/camera_mode_storage_mydevice_nor.png | Bin 0 -> 1482 bytes .../camera_mode_storage_mydevice_press.png | Bin 0 -> 1405 bytes .../camera_mode_storage_storagecard_nor.png | Bin 0 -> 1882 bytes .../camera_mode_storage_storagecard_press.png | Bin 0 -> 1747 bytes .../shortcut/camera_mode_timer_10_nor.png | Bin 0 -> 4772 bytes .../shortcut/camera_mode_timer_10_press.png | Bin 0 -> 5608 bytes .../shortcut/camera_mode_timer_2_nor.png | Bin 0 -> 4663 bytes .../shortcut/camera_mode_timer_2_press.png | Bin 0 -> 5494 bytes .../shortcut/camera_mode_timer_5_nor.png | Bin 0 -> 4716 bytes .../shortcut/camera_mode_timer_5_press.png | Bin 0 -> 5549 bytes .../shortcut/camera_mode_timer_off_nor.png | Bin 0 -> 4690 bytes .../shortcut/camera_mode_timer_off_press.png | Bin 0 -> 5578 bytes .../shortcut/camera_mode_whitebalance_auto_nor.png | Bin 0 -> 1970 bytes .../camera_mode_whitebalance_auto_press.png | Bin 0 -> 1751 bytes .../camera_mode_whitebalance_cloudy_nor.png | Bin 0 -> 2409 bytes .../camera_mode_whitebalance_cloudy_press.png | Bin 0 -> 3676 bytes .../camera_mode_whitebalance_day_light_nor.png | Bin 0 -> 3855 bytes .../camera_mode_whitebalance_day_light_press.png | Bin 0 -> 5020 bytes .../camera_mode_whitebalance_fluorescent_nor.png | Bin 0 -> 3281 bytes .../camera_mode_whitebalance_fluorescent_press.png | Bin 0 -> 4379 bytes .../camera_mode_whitebalance_horizon_nor.png | Bin 0 -> 2754 bytes .../camera_mode_whitebalance_horizon_press.png | Bin 0 -> 4056 bytes .../camera_mode_whitebalance_incandescent_nor.png | Bin 0 -> 3002 bytes ...camera_mode_whitebalance_incandescent_press.png | Bin 0 -> 4241 bytes .../camera_mode_whitebalance_shade_nor.png | Bin 0 -> 2072 bytes .../camera_mode_whitebalance_shade_press.png | Bin 0 -> 3504 bytes .../camera_mode_whitebalance_tungsten_nor.png | Bin 0 -> 2998 bytes .../camera_mode_whitebalance_tungsten_press.png | Bin 0 -> 4241 bytes images/edc_images/shortcut/camera_mode_zoom.png | Bin 0 -> 5293 bytes .../edc_images/shortcut/camera_mode_zoom_press.png | Bin 0 -> 5104 bytes images/edc_images/shortcut/sharewith_icon.png | Bin 0 -> 3457 bytes .../edc_images/shortcut/sharewith_icon_press.png | Bin 0 -> 3065 bytes .../edc_images/tmp/11_camcorder_standby_press.png | Bin 0 -> 25958 bytes .../tmp/11_camcorder_standby_press_ver.png | Bin 0 -> 26128 bytes images/edc_images/tmp/11_camera_mode_bg.png | Bin 0 -> 7075 bytes images/edc_images/tmp/11_camera_mode_bg_ver.png | Bin 0 -> 7163 bytes images/edc_images/tmp/11_camera_mode_button.png | Bin 0 -> 8788 bytes .../edc_images/tmp/11_camera_mode_button_ver.png | Bin 0 -> 8842 bytes .../tmp/11_camera_mode_camcorder_off.png | Bin 0 -> 3363 bytes .../edc_images/tmp/11_camera_mode_camcorder_on.png | Bin 0 -> 3363 bytes .../edc_images/tmp/11_camera_mode_camera_off.png | Bin 0 -> 3613 bytes images/edc_images/tmp/11_camera_mode_camera_on.png | Bin 0 -> 3613 bytes .../tmp/11_camera_mode_recording_normal.png | Bin 0 -> 24190 bytes .../tmp/11_camera_mode_recording_normal_ver.png | Bin 0 -> 23973 bytes .../tmp/11_camera_mode_recording_press.png | Bin 0 -> 23027 bytes .../tmp/11_camera_mode_recording_press_ver.png | Bin 0 -> 22954 bytes images/edc_images/tmp/11_camera_snapshot.png | Bin 0 -> 8360 bytes images/edc_images/tmp/11_camera_snapshot_press.png | Bin 0 -> 8146 bytes images/edc_images/tmp/37_guideline_1.png | Bin 0 -> 2812 bytes images/edc_images/tmp/37_guideline_2.png | Bin 0 -> 2811 bytes images/edc_images/tmp/37_guideline_opa_1.png | Bin 0 -> 2814 bytes images/edc_images/tmp/37_guideline_opa_2.png | Bin 0 -> 2812 bytes images/edc_images/tmp/37_shootingmode_popup_bg.png | Bin 0 -> 698 bytes images/edc_images/touch_af_focus_rect_01.png | Bin 0 -> 2852 bytes images/edc_images/touch_af_focus_rect_02.png | Bin 0 -> 2850 bytes images/edc_images/touch_af_focus_rect_03.png | Bin 0 -> 2857 bytes images/edc_images/vertical/camera_mode_bg_ver.png | Bin 0 -> 3770 bytes .../edc_images/vertical/camera_mode_button_ver.png | Bin 0 -> 7937 bytes .../vertical/camera_mode_shutter_dim_ver.png | Bin 0 -> 20865 bytes .../camera_mode_shutter_norma_ver_inverse.png | Bin 0 -> 27060 bytes .../vertical/camera_mode_shutter_normal_ver.png | Bin 0 -> 27198 bytes .../vertical/camera_mode_shutter_press_ver.png | Bin 0 -> 20774 bytes .../edc_images/vertical/camera_normal_bg_ver.png | Bin 0 -> 1647 bytes .../edc_images/vertical/camera_normal_bg_ver2.png | Bin 0 -> 1640 bytes .../vertical/camera_normal_bg_ver2_01.png | Bin 0 -> 625 bytes .../vertical/camera_normal_bg_ver_01.png | Bin 0 -> 625 bytes .../camera_option_popup_anker_vertical.png | Bin 0 -> 3154 bytes .../camera_option_popup_anker_vertical_inverse.png | Bin 0 -> 3150 bytes .../vertical/camera_popup_ex_bar_ver.png | Bin 0 -> 3111 bytes .../vertical/camera_popup_zoom_bar_ver.png | Bin 0 -> 1292 bytes .../edc_images/vertical/camera_popup_zoom_ver.png | Bin 0 -> 515 bytes .../vertical/camera_shrtcut_edit_bg_02_ver.png | Bin 0 -> 3682 bytes .../vertical/camera_shrtcut_edit_bg_ver.png | Bin 0 -> 4250 bytes .../vertical/camera_shrtcut_menubar_bg_ver.png | Bin 0 -> 1783 bytes .../vertical/camera_shrtcut_text_bg_ver.png | Bin 0 -> 1618 bytes include/CamDeviceCapacity.h | 118 + include/CamTypeConverter.h | 48 + include/cam.h | 394 + include/cam_animation.h | 28 + include/cam_app.h | 498 ++ include/cam_capacity_type.h | 188 + include/cam_config.h | 84 + include/cam_continuous_shot.h | 49 + include/cam_debug.h | 296 + include/cam_device_capacity.h | 51 + include/cam_error.h | 68 + include/cam_exif_info.h | 35 + include/cam_face_detection_focus.h | 70 + include/cam_file.h | 87 + include/cam_lbs.h | 46 + include/cam_long_press.h | 41 + include/cam_menu_composer.h | 45 + include/cam_mm.h | 252 + include/cam_popup.h | 76 + include/cam_property.h | 955 +++ include/cam_rec.h | 45 + include/cam_sound.h | 55 + include/cam_ta.h | 112 + include/cam_typeconverter.h | 55 + include/cam_ui_effect_utils.h | 86 + include/cam_ui_rotate_utils.h | 101 + include/cam_voice_command.h | 37 + include/camera_utils.h | 153 + include/edc-callback/cam_common_edc_callback.h | 46 + include/edc-callback/cam_ev_edc_callback.h | 26 + include/edc-callback/cam_indicator_edc_callback.h | 35 + include/edc-callback/cam_recording_edc_callback.h | 28 + include/edc-callback/cam_toolbar_edc_callback.h | 120 + include/edc-callback/cam_zoom_edc_callback.h | 30 + include/edc_image_name.h | 402 + include/edc_string.h | 104 + packaging/ug-camera-efl.spec | 80 + po/CMakeLists.txt | 25 + po/ar.po | 342 + po/az.po | 342 + po/bg.po | 342 + po/ca.po | 342 + po/cs.po | 342 + po/da.po | 342 + po/de_DE.po | 342 + po/el_GR.po | 342 + po/en.po | 342 + po/en_PH.po | 342 + po/en_US.po | 342 + po/es_ES.po | 342 + po/es_MX.po | 342 + po/et.po | 342 + po/eu.po | 342 + po/fi.po | 342 + po/fr_CA.po | 342 + po/fr_FR.po | 342 + po/ga.po | 342 + po/gl.po | 342 + po/hi.po | 342 + po/hr.po | 342 + po/htm2po.py | 97 + po/hu.po | 342 + po/hy.po | 342 + po/is.po | 342 + po/it_IT.po | 342 + po/ja_JP.po | 342 + po/ka.po | 342 + po/kk.po | 342 + po/ko_KR.po | 342 + po/lt.po | 342 + po/lv.po | 342 + po/mk.po | 342 + po/nb.po | 342 + po/nl_NL.po | 342 + po/pl.po | 342 + po/pt_BR.po | 342 + po/pt_PT.po | 342 + po/ro.po | 342 + po/ru_RU.po | 342 + po/sk.po | 342 + po/sl.po | 342 + po/sr.po | 342 + po/sv.po | 342 + po/tr_TR.po | 342 + po/uk.po | 342 + po/update-po.sh | 57 + po/uz.po | 342 + po/zh_CN.po | 342 + po/zh_HK.po | 342 + po/zh_SG.po | 342 + po/zh_TW.po | 342 + sounds/af_fail.wav | Bin 0 -> 18132 bytes sounds/af_ok.wav | Bin 0 -> 16104 bytes sounds/count.wav | Bin 0 -> 26700 bytes src/CamDeviceCapacity.cpp | 715 ++ src/CamTypeConverter.cpp | 672 ++ src/cam.c | 924 +++ src/cam_animation.c | 196 + src/cam_app.c | 8669 ++++++++++++++++++++ src/cam_config.c | 361 + src/cam_continuous_shot.c | 621 ++ src/cam_debug.c | 291 + src/cam_device_capacity.cpp | 108 + src/cam_exif_info.c | 264 + src/cam_face_detection_focus.c | 223 + src/cam_file.c | 489 ++ src/cam_lbs.c | 304 + src/cam_long_press.c | 162 + src/cam_menu_composer.c | 1254 +++ src/cam_mm.c | 2431 ++++++ src/cam_popup.c | 392 + src/cam_rec.c | 495 ++ src/cam_sound.c | 249 + src/cam_ta.c | 620 ++ src/cam_typeconverter.cpp | 109 + src/cam_ui_effect_utils.c | 199 + src/cam_ui_rotate_utils.c | 589 ++ src/cam_voice_command.c | 139 + src/camera_utils.c | 1461 ++++ src/edc-callback/cam_common_edc_callback.c | 949 +++ src/edc-callback/cam_ev_edc_callback.c | 277 + src/edc-callback/cam_indicator_edc_callback.c | 435 + src/edc-callback/cam_recording_edc_callback.c | 383 + src/edc-callback/cam_toolbar_edc_callback.c | 8327 +++++++++++++++++++ src/edc-callback/cam_zoom_edc_callback.c | 418 + ug-camera-efl.manifest | 13 + ug-camera-efl.png | Bin 0 -> 57662 bytes ug-camera-efl.xml | 70 + ug.camera-efl.include | 26 + 515 files changed, 72085 insertions(+) create mode 100644 .camera.ini create mode 100644 .gitignore create mode 100755 CMakeLists.txt create mode 100755 LICENSE.Flora create mode 100644 NOTICE create mode 100755 edc/cam_ctxpopup_shortcuts.edc create mode 100755 edc/cam_ctxpopup_shortcuts_inc.edc create mode 100755 edc/cam_ev_layout.edc create mode 100755 edc/cam_ev_layout_inverse.edc create mode 100755 edc/cam_ev_layout_vertical.edc create mode 100755 edc/cam_ev_layout_vertical_inverse.edc create mode 100755 edc/cam_funcs.edc create mode 100755 edc/cam_guideline_edje.edc create mode 100755 edc/cam_images.edc create mode 100755 edc/cam_indicator_layout.edc create mode 100755 edc/cam_main_layout.edc create mode 100755 edc/cam_recording_edje.edc create mode 100755 edc/cam_recording_edje_inc.edc create mode 100755 edc/cam_recording_edje_inverse.edc create mode 100755 edc/cam_recording_edje_inverse_inc.edc create mode 100755 edc/cam_recording_edje_vertical.edc create mode 100755 edc/cam_recording_edje_vertical_inc.edc create mode 100755 edc/cam_recording_edje_vertical_inverse.edc create mode 100755 edc/cam_recording_edje_vertical_inverse_inc.edc create mode 100755 edc/cam_setting_popup_layout.edc create mode 100755 edc/cam_setting_popup_layout_inc.edc create mode 100755 edc/cam_toolbar_layout.edc create mode 100755 edc/cam_toolbar_layout_inc.edc create mode 100755 edc/cam_toolbar_layout_inverse.edc create mode 100755 edc/cam_toolbar_layout_inverse_inc.edc create mode 100755 edc/cam_toolbar_layout_vertical.edc create mode 100755 edc/cam_toolbar_layout_vertical_inc.edc create mode 100755 edc/cam_toolbar_layout_vertical_inverse.edc create mode 100755 edc/cam_toolbar_layout_vertical_inverse_inc.edc create mode 100755 edc/cam_utils.edc create mode 100755 edc/cam_zoom_layout.edc create mode 100755 edc/cam_zoom_layout_inverse.edc create mode 100755 edc/cam_zoom_layout_vertical.edc create mode 100755 edc/cam_zoom_layout_vertical_inverse.edc create mode 100755 edc/style_button_camera.edc create mode 100755 edc/style_ctxpopup_camera_with_radio.edc create mode 100755 edc/style_genlist_macro.edc create mode 100755 edc/style_genlist_normal.edc create mode 100755 edc/style_label_camera.edc create mode 100755 edc/style_slider_camera.edc create mode 100755 edc/style_tizen_hd_inc.edc create mode 100644 images/edc_images/00_button_01_normal.png create mode 100644 images/edc_images/00_button_01_normal_Focus.png create mode 100644 images/edc_images/00_button_01_normal_dim.png create mode 100644 images/edc_images/00_button_01_normal_press.png create mode 100644 images/edc_images/00_check_off.png create mode 100644 images/edc_images/camara_back_button.png create mode 100755 images/edc_images/camara_back_button_press.png create mode 100755 images/edc_images/camcorder_recording_pause.png create mode 100755 images/edc_images/camcorder_recording_pause_press.png create mode 100755 images/edc_images/camcorder_recording_shutter.png create mode 100755 images/edc_images/camcorder_recording_stop.png create mode 100755 images/edc_images/camcorder_recording_stop_press.png create mode 100755 images/edc_images/camcorder_standby_shutter.png create mode 100755 images/edc_images/camcorder_standby_shutter_dim.png create mode 100755 images/edc_images/camcorder_standby_shutter_press.png create mode 100755 images/edc_images/camcorder_stop_shutter_icon.png create mode 100644 images/edc_images/camera_button_off.png create mode 100644 images/edc_images/camera_button_on.png create mode 100755 images/edc_images/camera_handle.png create mode 100644 images/edc_images/camera_help_image.png create mode 100755 images/edc_images/camera_menu_bg.png create mode 100755 images/edc_images/camera_menu_bg_press.png create mode 100755 images/edc_images/camera_menu_tab_hold.png create mode 100755 images/edc_images/camera_mode_shutter_dim.png create mode 100755 images/edc_images/camera_mode_shutter_icon.png create mode 100755 images/edc_images/camera_mode_shutter_icon_dim.png create mode 100755 images/edc_images/camera_mode_shutter_normal.png create mode 100644 images/edc_images/camera_mode_shutter_normal_inverse.png create mode 100755 images/edc_images/camera_mode_shutter_press.png create mode 100755 images/edc_images/camera_mode_thumbnail_bg.png create mode 100755 images/edc_images/camera_mode_thumbnail_bg_press.png create mode 100755 images/edc_images/camera_normal_left.png create mode 100755 images/edc_images/camera_normal_opacity_l_bg.png create mode 100755 images/edc_images/camera_normal_opacity_r_bg.png create mode 100755 images/edc_images/camera_normal_right.png create mode 100755 images/edc_images/camera_option_popup_anker.png create mode 100755 images/edc_images/camera_option_popup_anker_inverse.png create mode 100755 images/edc_images/camera_option_popup_bg.png create mode 100755 images/edc_images/camera_option_popup_bg_2depth.png create mode 100755 images/edc_images/camera_popup_ex_bar.png create mode 100755 images/edc_images/camera_popup_zoom.png create mode 100755 images/edc_images/camera_popup_zoom_bar.png create mode 100755 images/edc_images/camera_radio_btn_off.png create mode 100755 images/edc_images/camera_radio_btn_on.png create mode 100755 images/edc_images/camera_recording_btn_caf.png create mode 100755 images/edc_images/camera_recording_btn_caf_press.png create mode 100755 images/edc_images/camera_shortcut_line_h_01.png create mode 100755 images/edc_images/camera_shortcut_line_v_01.png create mode 100755 images/edc_images/camera_shortcut_line_v_02.png create mode 100755 images/edc_images/camera_shrtcut_edit_bg.png create mode 100755 images/edc_images/camera_shrtcut_menubar_bg.png create mode 100755 images/edc_images/camera_shrtcut_text_bg.png create mode 100755 images/edc_images/camera_timer_popup.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_00.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_01.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_02.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_03.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_04.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_05.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_charge.png create mode 100755 images/edc_images/indicator/camera_indicator_battery_full.png create mode 100755 images/edc_images/indicator/camera_indicator_gps_connection01.png create mode 100755 images/edc_images/indicator/camera_indicator_gps_connection02.png create mode 100755 images/edc_images/indicator/camera_indicator_gps_connection03.png create mode 100755 images/edc_images/indicator/camera_indicator_gps_off.png create mode 100755 images/edc_images/indicator/camera_indicator_gps_on.png create mode 100755 images/edc_images/indicator/camera_indicator_mute.png create mode 100755 images/edc_images/indicator/camera_indicator_smile_shot.png create mode 100755 images/edc_images/indicator/camera_indicator_storage_in.png create mode 100755 images/edc_images/indicator/camera_indicator_storage_memoryfull.png create mode 100755 images/edc_images/indicator/camera_indicator_storage_phonefull.png create mode 100755 images/edc_images/indicator/camera_indicator_storage_t_flash.png create mode 100755 images/edc_images/indicator/camera_rec.png create mode 100755 images/edc_images/shortcut/camera_mode_anti_shake_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_anti_shake_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_anti_shake_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_anti_shake_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_auto_contrast_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_auto_contrast_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_auto_contrast_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_auto_contrast_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_burstshot_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_burstshot_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_burstshot_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_burstshot_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_capture_voice_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_capture_voice_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_capture_voice_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_capture_voice_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_Black and white_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_Black and white_press.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_negative_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_negative_press.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_none_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_none_press.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_sepia_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_effect_sepia_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_1_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_1_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_2_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_2_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_3_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_3_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_4_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_4_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_5_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_5_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_6_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_6_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_7_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_7_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_8_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_8_press.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_9_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_exposure_9_press.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_auto_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_auto_press.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_flash_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_auto_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_auto_press.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_face_detection_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_face_detection_press.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_macro_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_focus_macro_press.png create mode 100755 images/edc_images/shortcut/camera_mode_gps_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_gps_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_gps_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_gps_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_guidelines_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_guidelines_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_guidelines_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_guidelines_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_100_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_100_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_200_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_200_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_400_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_400_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_50_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_50_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_800_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_800_press.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_auto_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_iso_auto_press.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_center_weighted_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_center_weighted_press.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_matrix_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_matrix_press.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_normal_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_pressmal_press.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_spot_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_metering_spot_press.png create mode 100755 images/edc_images/shortcut/camera_mode_outdoor_visibility_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_outdoor_visibility_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_outdoor_visibility_on_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_outdoor_visibility_on_press.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_fast_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_fast_press.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_limit_for_mms_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_limit_for_mms_press.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_normal_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_normal_press.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_slowmotion_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_recording_slowmotion_press.png create mode 100755 images/edc_images/shortcut/camera_mode_refresh_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_refresh_press.png create mode 100755 images/edc_images/shortcut/camera_mode_reset_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_reset_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_0_3m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_0_3m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1280X720_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1280X720_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_176X144_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_176X144_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1920X1080_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1920X1080_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1_3m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_1_3m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_2m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_2m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_320X240_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_320X240_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_3_2m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_3_2m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_5m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_5m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_640X480_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_640X480_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_720X480_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_720X480_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_8m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_8m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w0_9m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w0_9m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w2_4m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w2_4m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w2m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w2m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w3_6m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w3_6m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w4m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w4m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w5_7m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w5_7m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w6m_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_resolution_w6m_press.png create mode 100755 images/edc_images/shortcut/camera_mode_self_rec_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_self_rec_press.png create mode 100755 images/edc_images/shortcut/camera_mode_self_shot_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_self_shot_press.png create mode 100755 images/edc_images/shortcut/camera_mode_setting_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_setting_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_Backlight_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_action_shot_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_beach_snow_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_beauty_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_beauty_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_bestphoto_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_buddy_photo_share_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_candlelight_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_cartoon_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_dawn_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_dawn_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_fall_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_fall_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_firework_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_firework_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_hdr_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_hdr_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_landscape_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_landscape_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_night_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_night_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_panorama_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_panorama_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_party_indoor_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_portrait_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_portrait_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_scene_none_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_share_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_share_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_single_shot_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_smile_shot_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_sports_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_sports_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_sunset_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_sunset_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_text_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_shooting_mode_text_press.png create mode 100755 images/edc_images/shortcut/camera_mode_shutter.png create mode 100755 images/edc_images/shortcut/camera_mode_shutter_press.png create mode 100755 images/edc_images/shortcut/camera_mode_storage_mydevice_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_storage_mydevice_press.png create mode 100755 images/edc_images/shortcut/camera_mode_storage_storagecard_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_storage_storagecard_press.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_10_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_10_press.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_2_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_2_press.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_5_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_5_press.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_off_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_timer_off_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_auto_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_auto_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_cloudy_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_cloudy_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_day_light_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_day_light_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_fluorescent_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_horizon_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_horizon_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_incandescent_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_incandescent_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_shade_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_shade_press.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_tungsten_nor.png create mode 100755 images/edc_images/shortcut/camera_mode_whitebalance_tungsten_press.png create mode 100755 images/edc_images/shortcut/camera_mode_zoom.png create mode 100755 images/edc_images/shortcut/camera_mode_zoom_press.png create mode 100755 images/edc_images/shortcut/sharewith_icon.png create mode 100755 images/edc_images/shortcut/sharewith_icon_press.png create mode 100755 images/edc_images/tmp/11_camcorder_standby_press.png create mode 100755 images/edc_images/tmp/11_camcorder_standby_press_ver.png create mode 100755 images/edc_images/tmp/11_camera_mode_bg.png create mode 100755 images/edc_images/tmp/11_camera_mode_bg_ver.png create mode 100755 images/edc_images/tmp/11_camera_mode_button.png create mode 100755 images/edc_images/tmp/11_camera_mode_button_ver.png create mode 100755 images/edc_images/tmp/11_camera_mode_camcorder_off.png create mode 100755 images/edc_images/tmp/11_camera_mode_camcorder_on.png create mode 100755 images/edc_images/tmp/11_camera_mode_camera_off.png create mode 100755 images/edc_images/tmp/11_camera_mode_camera_on.png create mode 100755 images/edc_images/tmp/11_camera_mode_recording_normal.png create mode 100755 images/edc_images/tmp/11_camera_mode_recording_normal_ver.png create mode 100755 images/edc_images/tmp/11_camera_mode_recording_press.png create mode 100755 images/edc_images/tmp/11_camera_mode_recording_press_ver.png create mode 100755 images/edc_images/tmp/11_camera_snapshot.png create mode 100755 images/edc_images/tmp/11_camera_snapshot_press.png create mode 100644 images/edc_images/tmp/37_guideline_1.png create mode 100644 images/edc_images/tmp/37_guideline_2.png create mode 100644 images/edc_images/tmp/37_guideline_opa_1.png create mode 100644 images/edc_images/tmp/37_guideline_opa_2.png create mode 100755 images/edc_images/tmp/37_shootingmode_popup_bg.png create mode 100755 images/edc_images/touch_af_focus_rect_01.png create mode 100755 images/edc_images/touch_af_focus_rect_02.png create mode 100755 images/edc_images/touch_af_focus_rect_03.png create mode 100755 images/edc_images/vertical/camera_mode_bg_ver.png create mode 100755 images/edc_images/vertical/camera_mode_button_ver.png create mode 100755 images/edc_images/vertical/camera_mode_shutter_dim_ver.png create mode 100644 images/edc_images/vertical/camera_mode_shutter_norma_ver_inverse.png create mode 100644 images/edc_images/vertical/camera_mode_shutter_normal_ver.png create mode 100755 images/edc_images/vertical/camera_mode_shutter_press_ver.png create mode 100755 images/edc_images/vertical/camera_normal_bg_ver.png create mode 100755 images/edc_images/vertical/camera_normal_bg_ver2.png create mode 100755 images/edc_images/vertical/camera_normal_bg_ver2_01.png create mode 100755 images/edc_images/vertical/camera_normal_bg_ver_01.png create mode 100755 images/edc_images/vertical/camera_option_popup_anker_vertical.png create mode 100755 images/edc_images/vertical/camera_option_popup_anker_vertical_inverse.png create mode 100755 images/edc_images/vertical/camera_popup_ex_bar_ver.png create mode 100755 images/edc_images/vertical/camera_popup_zoom_bar_ver.png create mode 100755 images/edc_images/vertical/camera_popup_zoom_ver.png create mode 100755 images/edc_images/vertical/camera_shrtcut_edit_bg_02_ver.png create mode 100755 images/edc_images/vertical/camera_shrtcut_edit_bg_ver.png create mode 100755 images/edc_images/vertical/camera_shrtcut_menubar_bg_ver.png create mode 100755 images/edc_images/vertical/camera_shrtcut_text_bg_ver.png create mode 100755 include/CamDeviceCapacity.h create mode 100755 include/CamTypeConverter.h create mode 100755 include/cam.h create mode 100755 include/cam_animation.h create mode 100755 include/cam_app.h create mode 100755 include/cam_capacity_type.h create mode 100755 include/cam_config.h create mode 100755 include/cam_continuous_shot.h create mode 100755 include/cam_debug.h create mode 100755 include/cam_device_capacity.h create mode 100755 include/cam_error.h create mode 100755 include/cam_exif_info.h create mode 100755 include/cam_face_detection_focus.h create mode 100755 include/cam_file.h create mode 100755 include/cam_lbs.h create mode 100755 include/cam_long_press.h create mode 100755 include/cam_menu_composer.h create mode 100755 include/cam_mm.h create mode 100755 include/cam_popup.h create mode 100755 include/cam_property.h create mode 100755 include/cam_rec.h create mode 100755 include/cam_sound.h create mode 100755 include/cam_ta.h create mode 100755 include/cam_typeconverter.h create mode 100755 include/cam_ui_effect_utils.h create mode 100755 include/cam_ui_rotate_utils.h create mode 100755 include/cam_voice_command.h create mode 100755 include/camera_utils.h create mode 100755 include/edc-callback/cam_common_edc_callback.h create mode 100755 include/edc-callback/cam_ev_edc_callback.h create mode 100755 include/edc-callback/cam_indicator_edc_callback.h create mode 100755 include/edc-callback/cam_recording_edc_callback.h create mode 100755 include/edc-callback/cam_toolbar_edc_callback.h create mode 100755 include/edc-callback/cam_zoom_edc_callback.h create mode 100755 include/edc_image_name.h create mode 100755 include/edc_string.h create mode 100755 packaging/ug-camera-efl.spec create mode 100644 po/CMakeLists.txt create mode 100755 po/ar.po create mode 100755 po/az.po create mode 100755 po/bg.po create mode 100755 po/ca.po create mode 100755 po/cs.po create mode 100755 po/da.po create mode 100755 po/de_DE.po create mode 100755 po/el_GR.po create mode 100755 po/en.po create mode 100755 po/en_PH.po create mode 100755 po/en_US.po create mode 100755 po/es_ES.po create mode 100755 po/es_MX.po create mode 100755 po/et.po create mode 100755 po/eu.po create mode 100755 po/fi.po create mode 100755 po/fr_CA.po create mode 100755 po/fr_FR.po create mode 100755 po/ga.po create mode 100755 po/gl.po create mode 100755 po/hi.po create mode 100755 po/hr.po create mode 100755 po/htm2po.py create mode 100755 po/hu.po create mode 100755 po/hy.po create mode 100755 po/is.po create mode 100755 po/it_IT.po create mode 100755 po/ja_JP.po create mode 100755 po/ka.po create mode 100755 po/kk.po create mode 100755 po/ko_KR.po create mode 100755 po/lt.po create mode 100755 po/lv.po create mode 100755 po/mk.po create mode 100755 po/nb.po create mode 100755 po/nl_NL.po create mode 100755 po/pl.po create mode 100755 po/pt_BR.po create mode 100755 po/pt_PT.po create mode 100755 po/ro.po create mode 100755 po/ru_RU.po create mode 100755 po/sk.po create mode 100755 po/sl.po create mode 100755 po/sr.po create mode 100755 po/sv.po create mode 100755 po/tr_TR.po create mode 100755 po/uk.po create mode 100755 po/update-po.sh create mode 100755 po/uz.po create mode 100755 po/zh_CN.po create mode 100755 po/zh_HK.po create mode 100755 po/zh_SG.po create mode 100755 po/zh_TW.po create mode 100755 sounds/af_fail.wav create mode 100755 sounds/af_ok.wav create mode 100755 sounds/count.wav create mode 100755 src/CamDeviceCapacity.cpp create mode 100755 src/CamTypeConverter.cpp create mode 100755 src/cam.c create mode 100755 src/cam_animation.c create mode 100755 src/cam_app.c create mode 100755 src/cam_config.c create mode 100755 src/cam_continuous_shot.c create mode 100755 src/cam_debug.c create mode 100755 src/cam_device_capacity.cpp create mode 100755 src/cam_exif_info.c create mode 100755 src/cam_face_detection_focus.c create mode 100755 src/cam_file.c create mode 100755 src/cam_lbs.c create mode 100755 src/cam_long_press.c create mode 100755 src/cam_menu_composer.c create mode 100755 src/cam_mm.c create mode 100755 src/cam_popup.c create mode 100755 src/cam_rec.c create mode 100755 src/cam_sound.c create mode 100755 src/cam_ta.c create mode 100755 src/cam_typeconverter.cpp create mode 100755 src/cam_ui_effect_utils.c create mode 100755 src/cam_ui_rotate_utils.c create mode 100755 src/cam_voice_command.c create mode 100755 src/camera_utils.c create mode 100755 src/edc-callback/cam_common_edc_callback.c create mode 100755 src/edc-callback/cam_ev_edc_callback.c create mode 100755 src/edc-callback/cam_indicator_edc_callback.c create mode 100755 src/edc-callback/cam_recording_edc_callback.c create mode 100755 src/edc-callback/cam_toolbar_edc_callback.c create mode 100755 src/edc-callback/cam_zoom_edc_callback.c create mode 100644 ug-camera-efl.manifest create mode 100755 ug-camera-efl.png create mode 100755 ug-camera-efl.xml create mode 100755 ug.camera-efl.include diff --git a/.camera.ini b/.camera.ini new file mode 100644 index 0000000..aae96f8 --- /dev/null +++ b/.camera.ini @@ -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 index 0000000..2c4290f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.orig diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..1f04124 --- /dev/null +++ b/CMakeLists.txt @@ -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 index 0000000..571fe79 --- /dev/null +++ b/LICENSE.Flora @@ -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 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 index 0000000..8de32fc --- /dev/null +++ b/edc/cam_ctxpopup_shortcuts.edc @@ -0,0 +1,1010 @@ +/* + * 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_ctxpopup_shortcuts_inc.edc" + +#define SHORTCUTS_PANEL_WIDTH 720 +#define SHORTCUTS_PANEL_HEIGHT 900 + + +images { + image: SHOTCUTS_LINE_V_IMAGE COMP; + image: SHOTCUTS_EDIT_BG_H_IMAGE COMP; + image: SHOTCUTS_EDIT_MENU_BG_H_IMAGE COMP; + image: SHOTCUTS_LINE_H_IMAGE COMP; + image: SHOTCUTS_TEXT_BG_IMAGE COMP; +} + +collections { + styles + { + style { + name: "cam_textblock_effect_default"; + base: "font=SLP:style=Roman font_size=30 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"; + } + style { + name: "cam_textblock_effect_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"; + } + style { + name: "cam_text_default"; + base: "font=SLP:style=Roman font_size=30 align=center color=#FFFFFF ellipise=1.0 wrap=mixed"; + tag: "br" " \n"; + } + style { + name: "cam_text_left"; + base: "font=SLP:style=Roman font_size=30 align=left color=#FFFFFF ellipise=1.0 wrap=mixed"; + tag: "br" " \n"; + } + } + group { + name: "camera/shortcuts/ele"; + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 180 200; + max: 180 200; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "ele.bg.top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to:"bg";} + rel2 { relative: 1.0 122/200; to:"bg";} + } + } + part { + name: "ele.bg.bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 100/200; to:"bg";} + rel2 { relative: 1.0 1.0; to:"bg";} + } + } + part { + name: "ele.icon"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 86 86; + max: 86 86; + align: 0.5 0.5; + aspect: 1.0 1.0; + rel1 { relative: 14/180 0.0; to:"ele.bg.top";} + rel2 { relative: (1-14/180) 1.0; to:"ele.bg.top";} + } + } + part { + name: "ele.txt"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1 { relative: 0.05 0.05; to:"ele.bg.bottom";} + rel2 { relative: 0.95 0.80; to:"ele.bg.bottom";} + text { + style: cam_textblock_effect_default; + min: 0 0; + } + } + } + part { + name: "ele.bg.bottom.pad"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + min: 0 4; + rel1 { relative: 1.0 1.0; to:"ele.txt";} + } + } + } + } + + #define SHORTCUST_LAYOUT_WIDTH 720 + #define SHORTCUST_LAYOUT_HEIGHT 1000 + + group { + name : "camera/shortcuts/layout/description"; + parts { + part { + name: "bg"; + type: RECT; +// scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 720 120; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "bg.content.img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + image{ + normal: SHOTCUTS_TEXT_BG_IMAGE ; + } + } + } + part { + name: "description.txtblock"; + type: TEXTBLOCK; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 80/720 30/120; to: "bg.content.img";} + rel2 { relative: 640/720 100/120; to: "bg.content.img";} + align: 0.0 0.0; + text { + style: cam_textblock_effect_default; + min: 0 0; + max: 0 1; + } + } + } + }//end parts + } + + group { + name:"camera/shortcuts/layout"; + parts { + part { + name: "bg"; + type: RECT; +// scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: SHORTCUST_LAYOUT_WIDTH SHORTCUST_LAYOUT_HEIGHT; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "bg.content.img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + image{ + normal: SHOTCUTS_EDIT_BG_H_IMAGE ; + } + } + } + + part { + name: "bg.content.shortcuts"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + + part { + name: "line_h.1.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 200; + visible: 0; + rel1 { relative: 0.0 0.0; to: "bg.content.shortcuts";} + rel2 { relative: 1.0 0.0; to: "bg.content.shortcuts";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_h.1"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 720 4; + visible: 1; + rel1 { relative: 0.0 1.0; to: "line_h.1.padding.top";} + rel2 { relative: 1.0 1.0; to: "line_h.1.padding.top";} + align: 0.0 0.0; + image{ + normal: SHOTCUTS_LINE_H_IMAGE ; + } + } + } + + part { + name: "line_h.2.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 200; + visible: 0; + rel1 { relative: 0.0 1.0; to: "line_h.1";} + rel2 { relative: 1.0 1.0; to: "line_h.1";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_h.2"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 720 4; + visible: 1; + rel1 { relative: 0.0 1.0; to: "line_h.2.padding.top";} + rel2 { relative: 1.0 1.0; to: "line_h.2.padding.top";} + image{ + normal: SHOTCUTS_LINE_H_IMAGE ; + } + align: 0.0 0.0; + } + } + + part { + name: "line_h.3.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 200; + visible: 0; + rel1 { relative: 0.0 1.0; to: "line_h.2";} + rel2 { relative: 1.0 1.0; to: "line_h.2";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_h.3"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 720 4; + visible: 1; + rel1 { relative: 0.0 1.0; to: "line_h.3.padding.top";} + rel2 { relative: 1.0 1.0; to: "line_h.3.padding.top";} + align: 0.0 0.0; + image{ + normal: SHOTCUTS_LINE_H_IMAGE ; + } + } + } + + part { + name: "line_h.4.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 200; + visible: 0; + rel1 { relative: 0.0 1.0; to: "line_h.3";} + rel2 { relative: 1.0 1.0; to: "line_h.3";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_h.4"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 720 4; + visible: 1; + rel1 { relative: 0.0 1.0; to: "line_h.4.padding.top";} + rel2 { relative: 1.0 1.0; to: "line_h.4.padding.top";} + align: 0.0 0.0; + image{ + normal: SHOTCUTS_LINE_H_IMAGE ; + } + } + } + + part { + name: "line_h.5.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 720 200; + visible: 0; + rel1 { relative: 0.0 1.0; to: "line_h.4";} + rel2 { relative: 1.0 1.0; to: "line_h.4";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_v.1.padding.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 180 1000; + visible: 0; + rel1 { relative: 0.0 0.0; to:"bg.content.shortcuts";} + rel2 { relative: 0.0 1.0; to:"bg.content.shortcuts";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_v.1"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 4 1000; + visible: 1; + rel1 { relative: 1.0 0.0; to:"line_v.1.padding.left";} + rel2 { relative: 1.0 1.0; to:"line_v.1.padding.left";} + image{ + normal: SHOTCUTS_LINE_V_IMAGE ; + } + align: 0.0 0.0; + } + } + + part { + name: "line_v.2.padding.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 180 1000; + visible: 0; + rel1 { relative: 1.0 0.0; to:"line_v.1";} + rel2 { relative: 1.0 1.0; to:"line_v.1";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_v.2"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 4 1000; + rel1 { relative: 1.0 0.0; to:"line_v.2.padding.left";} + rel2 { relative: 1.0 1.0; to:"line_v.2.padding.left";} + image{ + normal: SHOTCUTS_LINE_V_IMAGE ; + } + align: 0.0 0.0; + } + } + + part { + name: "line_v.3.padding.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 180 1000; + visible: 0; + rel1 { relative: 1.0 0.0; to:"line_v.2";} + rel2 { relative: 1.0 1.0; to:"line_v.2";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + part { + name: "line_v.3"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 4 1000; + rel1 { relative: 1.0 0.0; to:"line_v.3.padding.left";} + rel2 { relative: 1.0 1.0; to:"line_v.3.padding.left";} + image{ + normal: SHOTCUTS_LINE_V_IMAGE ; + } + align: 0.0 0.0; + } + } + + part { + name: "line_v.4.padding.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 180 1000; + visible: 0; + rel1 { relative: 1.0 0.0; to:"line_v.3";} + rel2 { relative: 1.0 1.0; to:"line_v.3";} + align: 0.0 0.0; + color: 0 0 0 255; + } + } + + SHORTCUTS_ITEM_BG(0,1,1); + SHORTCUTS_ITEM_BG(1,1,2); + SHORTCUTS_ITEM_BG(2,1,3); + SHORTCUTS_ITEM_BG(3,1,4); + + SHORTCUTS_ITEM_BG(4,2,1); + SHORTCUTS_ITEM_BG(5,2,2); + SHORTCUTS_ITEM_BG(6,2,3); + SHORTCUTS_ITEM_BG(7,2,4); + + SHORTCUTS_ITEM_BG(8,3,1); + SHORTCUTS_ITEM_BG(9,3,2); + SHORTCUTS_ITEM_BG(10,3,3); + SHORTCUTS_ITEM_BG(11,3,4); + + SHORTCUTS_ITEM_BG(12,4,1); + SHORTCUTS_ITEM_BG(13,4,2); + SHORTCUTS_ITEM_BG(14,4,3); + SHORTCUTS_ITEM_BG(15,4,4); + + SHORTCUTS_ITEM_BG(16,5,1); + SHORTCUTS_ITEM_BG(17,5,2); + SHORTCUTS_ITEM_BG(18,5,3); + SHORTCUTS_ITEM_BG(19,5,4); + + + SHORTCUTS_MENU_H("0", "menu.0.bg", "menu.0.bg", "menu.1.bg") + SHORTCUTS_MENU_H("1", "menu.0.bg", "menu.1.bg", "menu.2.bg") + SHORTCUTS_MENU_H("2", "menu.1.bg", "menu.2.bg", "menu.3.bg") + SHORTCUTS_MENU_H("3", "menu.2.bg", "menu.3.bg", "menu.4.bg") + + SHORTCUTS_MENU_H("4", "menu.3.bg", "menu.4.bg", "menu.5.bg") + SHORTCUTS_MENU_H("5", "menu.4.bg", "menu.5.bg", "menu.6.bg") + SHORTCUTS_MENU_H("6", "menu.5.bg", "menu.6.bg", "menu.7.bg") + SHORTCUTS_MENU_H("7", "menu.6.bg", "menu.7.bg", "menu.8.bg") + + SHORTCUTS_MENU_H("8", "menu.7.bg", "menu.8.bg", "menu.9.bg") + SHORTCUTS_MENU_H("9", "menu.8.bg", "menu.9.bg", "menu.10.bg") + SHORTCUTS_MENU_H("10", "menu.9.bg", "menu.10.bg", "menu.11.bg") + SHORTCUTS_MENU_H("11", "menu.10.bg", "menu.11.bg", "menu.12.bg") + + SHORTCUTS_MENU_H("12", "menu.11.bg", "menu.12.bg", "menu.13.bg") + SHORTCUTS_MENU_H("13", "menu.12.bg", "menu.13.bg", "menu.14.bg") + SHORTCUTS_MENU_H("14", "menu.13.bg", "menu.14.bg", "menu.15.bg") + SHORTCUTS_MENU_H("15", "menu.14.bg", "menu.15.bg", "menu.16.bg") + + SHORTCUTS_MENU_H("16", "menu.15.bg", "menu.16.bg", "menu.17.bg") + SHORTCUTS_MENU_H("17", "menu.16.bg", "menu.17.bg", "menu.18.bg") + SHORTCUTS_MENU_H("18", "menu.17.bg", "menu.18.bg", "menu.19.bg") + SHORTCUTS_MENU_H("19", "menu.18.bg", "menu.19.bg", "menu.19.bg") + + } + programs { + SHORTCUTS_MENU_PROGRAM(0) + SHORTCUTS_MENU_PROGRAM(1) + SHORTCUTS_MENU_PROGRAM(2) + SHORTCUTS_MENU_PROGRAM(3) + + SHORTCUTS_MENU_PROGRAM(4) + SHORTCUTS_MENU_PROGRAM(5) + SHORTCUTS_MENU_PROGRAM(6) + SHORTCUTS_MENU_PROGRAM(7) + + SHORTCUTS_MENU_PROGRAM(8) + SHORTCUTS_MENU_PROGRAM(9) + SHORTCUTS_MENU_PROGRAM(10) + SHORTCUTS_MENU_PROGRAM(11) + + SHORTCUTS_MENU_PROGRAM(12) + SHORTCUTS_MENU_PROGRAM(13) + SHORTCUTS_MENU_PROGRAM(14) + SHORTCUTS_MENU_PROGRAM(15) + + SHORTCUTS_MENU_PROGRAM(16) + SHORTCUTS_MENU_PROGRAM(17) + SHORTCUTS_MENU_PROGRAM(18) + SHORTCUTS_MENU_PROGRAM(19) + + } + } + +/*NOTE: shortcuts popup tip define*/ +/** +* width:10(left_pading) + 16 + 306(help image width) +16 + 16 + 10(right padding) +* width = 10 + 16 + 306 + 16 + 306 + 16 + 10 = 680 +* height = 10 + 64 + 22 + 240 + 22 + 60 + 22 + 96 + 10 = 546 +*/ + + group { + name: "camera/shortcuts/help/check/layout"; + parts { + part { + name: "check.swallow"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 42 42; + max: 42 42; + fixed: 1 0; + align: 0.0 0.5; + } + } + + part { + name: "check.txt"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 120 42; + max: 120 42; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "check.swallow";} + rel2 { relative: 1.0 1.0;} + text { + font: FONT_NAME; + size: 30; + align: 0.0 0.5; + min: 1 1; + text: "Don't ask again"; + } + } + }//part + }//parts + + } + + group { + name: "camera/shortcuts/help"; + min: 680 546; + max: 680 546; + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 680 546; + max: 680 546; + fixed: 1 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 255 255 255; + } + } + CAM_SHORTCUTS_HELP_PART_PADDING_TOP(10) + CAM_SHORTCUTS_HELP_PART_PADDING_BOTTOM(10) + CAM_SHORTCUTS_HELP_PART_PADDING_LEFT(10) + CAM_SHORTCUTS_HELP_PART_PADDING_RIGHT(10) + + part { + name: "tips"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 64; + fixed: 0 1; + align: 0 0; + rel1 { relative: 1.0 1.0; to_x: "elm.padding.left"; to_y: "elm.padding.top";} + rel2 { relative: 0.0 1.0; to_x: "elm.padding.right"; to_y: "elm.padding.top";} + color: 51 102 153 255; + /*color: 0 0 0 196;*/ + } + } + + part { + name: "tips.txt"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "tips";} + rel2 { relative: 1.0 1.0; to: "tips";} + text { + style: "cam_text_default"; + min: 1 1; + } + } + } + + part { + name: "button.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 0 96; + fixed: 0 1; + align: 1 1; + rel1 { relative: 1.0 0.0; to_x: "elm.padding.left"; to_y: "elm.padding.bottom";} + rel2 { relative: 0.0 0.0; to_x: "elm.padding.right"; to_y: "elm.padding.bottom";} + color: 255 255 255 64; + } + } + + part { + name: "button.swallow"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1 { relative: 0.2 0.0; to: "button.bg";} + rel2 { relative: 0.8 0.8; to: "button.bg";} + color: 51 102 153 255; + } + } + + + part { + name: "content.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 1.0 1.0; to_x: "elm.padding.left"; to_y: "tips";} + rel2 { relative: 0.0 0.0; to_x: "elm.padding.right"; to_y: "button.bg";} + color: 0 0 0 64; + } + } + /*note: content: + * width: 16 + 306 + 16 + 306 + 16 = 660 + * height: 22 + 60*4 + 22 + 60 + 22 = 366 + */ + part { + name: "content.help.image"; + type: SWALLOW; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 1 1; + rel1 { relative: 16/660 22/366; to: "content.bg";} + rel2 { relative: (16+306)/660 (22 + 240)/366; to: "content.bg";} + } + } + part { + name: "content.help.txt.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: (16+306)/660 22/366; to: "content.bg";} + rel2 { relative: (16+306+306)/660 (22 + 240)/366; to: "content.bg";} + color: 0 0 0 64; + } + } + + part { + name: "content.help.check"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 16/660 (22 + 240 + 22)/366; to: "content.bg";} + rel2 { relative: (16+306+306)/660 (22 + 240 + 22 + 60)/366; to: "content.bg";} + color: 0 0 0 64; + } + } + + part { + name: "content.help.check.swallow"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { relative: 0.25 0.0; to: "content.help.check";} + rel2 { relative: 0.40 1.0; to: "content.help.check";} + color: 0 0 0 64; + } + } + + part { + name: "content.help.check.txt"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.5; + rel1 { relative: 0.40 0.0; to: "content.help.check";} + rel2 { relative: 1.0 1.0; to: "content.help.check";} + text { + style: "cam_text_left"; + min: 1 1; + } + color: 0 0 0 255; + } + } + + part { + name: "content.help.txt.1.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 0.0 0.0; to: "content.help.txt.bg";} + rel2 { relative: 1.0 60/240; to: "content.help.txt.bg";} + color: 0 0 0 64; + } + } + part { + name: "content.help.txt.2.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 0.0 60/240; to: "content.help.txt.bg";} + rel2 { relative: 1.0 120/240; to: "content.help.txt.bg";} + color: 0 0 0 64; + } + } + part { + name: "content.help.txt.3.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 0.0 120/240; to: "content.help.txt.bg";} + rel2 { relative: 1.0 180/240; to: "content.help.txt.bg";} + color: 0 0 0 64; + } + } + part { + name: "content.help.txt.4.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 0.0 180/240; to: "content.help.txt.bg";} + rel2 { relative: 1.0 240/240; to: "content.help.txt.bg";} + color: 0 0 0 64; + } + } +#if 1/*note: using textblock, block two lines parts*/ + part { + name: "content.help.txtblock.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 1 1; + rel1 { relative: 0.0 0/240; to: "content.help.txt.bg";} + rel2 { relative: 1.0 180/240; to: "content.help.txt.bg";} + color: 0 0 0 64; + } + } + part { + name: "content.help.txtblock"; + type: TEXTBLOCK; + scale: 1; + multiline: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "content.help.txtblock.bg";} + rel2 { relative: 1.0 1.0; to: "content.help.txtblock.bg";} + text { + style: cam_textblock_effect_align_left; + align: 0.0 1.0; + min: 0 0; + max: 0 1; + //text: "Tap and hold

shortcuts

to edit them"; + } + } + } + +#else + part { + name: "content.help.txt.1"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 1 1; + rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.1.bg";} + rel2 { relative: 1.0 1.0; to: "content.help.txt.1.bg";} + text { + font: FONT_NAME; + size: 30; + align: 0.0 0.5; + min: 1 1; + text: "Tap and hold"; + } + } + } + part { + name: "content.help.txt.2"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 1 1; + rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.2.bg";} + rel2 { relative: 1.0 1.0; to: "content.help.txt.2.bg";} + text { + font: FONT_NAME; + size: 30; + align: 0.0 0.5; + min: 1 1; + text: "shortcuts"; + } + } + } + part { + name: "content.help.txt.3"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 1 1; + rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.3.bg";} + rel2 { relative: 1.0 1.0; to: "content.help.txt.3.bg";} + text { + font: FONT_NAME; + size: 30; + align: 0.0 0.5; + min: 1 1; + text: "to edit them"; + } + } + } + part { + name: "content.help.txt.4"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 1 1; + rel1 { relative: 16/(306+16) 0.0; to: "content.help.txt.4.bg";} + rel2 { relative: 1.0 1.0; to: "content.help.txt.4.bg";} + text { + font: FONT_NAME; + size: 30; + align: 0.0 0.5; + min: 1 1; + text: ""; + } + } + } +#endif + + }//end parts + }//end group + +}//END connection +//end file diff --git a/edc/cam_ctxpopup_shortcuts_inc.edc b/edc/cam_ctxpopup_shortcuts_inc.edc new file mode 100755 index 0000000..8889e36 --- /dev/null +++ b/edc/cam_ctxpopup_shortcuts_inc.edc @@ -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_image_name.h" +#include "cam_funcs.edc" + +#define SHORTCUTS_PANEL_WIDTH 720 +#define SHORTCUTS_PANEL_HEIGHT 900 + +#define SHORTCUTS_ITEM_BG(part_no,row,col) \ + part {\ + name: "menu."part_no".bg";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + rel1 {\ + relative: 0.0 0.0;\ + to_x: "line_v."col".padding.left";\ + to_y: "line_h."row".padding.top";\ + }\ + rel2 {\ + relative: 1.0 1.0;\ + to_x: "line_v."col".padding.left";\ + to_y: "line_h."row".padding.top";\ + }\ + color: 255 255 255 255;\ + align: 0.0 0.0;\ + }\ + } + +#define SHORTCUTS_MENU_H(part_name, pre_to_part, to_part, next_to_part) \ + part { \ + name: "row."part_name; \ + type: SWALLOW; \ + scale: 1; \ + mouse_events: 1; \ + repeat_events: 0;\ + description { \ + state: "default" 0.0; \ + visible: 1; \ + align: 0.5 0.5; \ + aspect: 1.0 1.0; \ + rel1 { relative: 0.0 0.0; to:to_part;} \ + rel2 { relative: 1.0 1.0; to:to_part;} \ + } \ + description { \ + state: "prev" 0.0; \ + inherit: "default" 0.0;\ + rel1 { relative: 0.0 0.0; to:pre_to_part;} \ + rel2 { relative: 1.0 1.0; to:pre_to_part;} \ + } \ + description { \ + state: "next" 0.0; \ + inherit: "default" 0.0;\ + rel1 { relative: 0.0 0.0; to:next_to_part;} \ + rel2 { relative: 1.0 1.0; to:next_to_part;} \ + } \ + } + +#define SHORTCUTS_MENU_PROGRAM(part_name) \ + program { \ + name: "row."part_name".prev"; \ + signal: "move,prev"; \ + source: "row."part_name; \ + action: STATE_SET "prev" 0.0; \ + target: "row."part_name; \ + } \ + program { \ + name: "row."part_name".next"; \ + signal: "move,next"; \ + source: "row."part_name; \ + action: STATE_SET "next" 0.0; \ + target: "row."part_name; \ + } \ + program { \ + name: "row."part_name".ani"; \ + signal: "ani,return"; \ + source: "row."part_name; \ + action: STATE_SET "default" 0.0; \ + target: "row."part_name; \ + transition: DECELERATE 0.4; \ + } + + +/*note: for shotcuts popup tip*/ + +#define CAM_SHORTCUTS_HELP_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; to: "bg";}\ + align: 0.0 0.0; \ + color: 0 0 0 64;\ + } \ + } + + +#define CAM_SHORTCUTS_HELP_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; to: "bg";}\ + align: 0.0 1.0; \ + color: 0 0 0 64;\ + } \ + } + +#define CAM_SHORTCUTS_HELP_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; to: "bg";}\ + align: 0.0 0.0; \ + color: 0 0 0 64;\ + } \ + } + +#define CAM_SHORTCUTS_HELP_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; to: "bg";}\ + align: 1.0 0.0; \ + color: 0 0 0 64;\ + } \ + } + +//end file + diff --git a/edc/cam_ev_layout.edc b/edc/cam_ev_layout.edc new file mode 100755 index 0000000..45662d6 --- /dev/null +++ b/edc/cam_ev_layout.edc @@ -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 index 0000000..c2c77f7 --- /dev/null +++ b/edc/cam_ev_layout_inverse.edc @@ -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 index 0000000..395b6ca --- /dev/null +++ b/edc/cam_ev_layout_vertical.edc @@ -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 index 0000000..8aff53c --- /dev/null +++ b/edc/cam_ev_layout_vertical_inverse.edc @@ -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 index 0000000..06bc800 --- /dev/null +++ b/edc/cam_funcs.edc @@ -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 index 0000000..20c9f57 --- /dev/null +++ b/edc/cam_guideline_edje.edc @@ -0,0 +1,453 @@ +/* + * 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. + */ + + +images { + image: GUDIE_LINE_1_IMAGE COMP; + image: GUDIE_LINE_2_IMAGE COMP; + image: GUDIE_OPA_LINE_1_IMAGE COMP; + image: GUDIE_OPA_LINE_2_IMAGE COMP; +} + +#define GUIDE_LINE_H1 238 +#define GUIDE_LINE_H2 238 +#define GUIDE_LINE_H3 238 + +#define GUIDE_LINE_W1 425 +#define GUIDE_LINE_W2 424 +#define GUIDE_LINE_W3 425 + +#define VER_GUIDE_LINE_H1 425 +#define VER_GUIDE_LINE_H2 424 +#define VER_GUIDE_LINE_H3 425 + +#define VER_GUIDE_LINE_W1 238 +#define VER_GUIDE_LINE_W2 238 +#define VER_GUIDE_LINE_W3 238 + + +#define GUIDE_LINE_GAP 3 + +group { + name: "guideline"; + /**min: MAIN_W MAIN_H;*/ + + parts{ + /*outline*/ + part { + name: "guide_line1_outline1_1"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_W1 - 1)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_1_IMAGE ; + } + color: 0 0 0 25; + } + } + + part { + name: "guide_line1"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: GUIDE_LINE_W1/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP)/MAIN_W 1.0; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_default" 0.0; + rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.125; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_wide" 0.0; + rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.0; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 1.0; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_square" 0.0; + rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W ((VER_MAIN_H-VER_MAIN_W)/2)/VER_MAIN_H; } + 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; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + + } + /*outline*/ + part { + name: "guide_line1_outline1_2"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_1_IMAGE ; + } + color: 0 0 0 25; + } + } + /*outline*/ + + part { + name: "guide_line2_outline2_1"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 - 1)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_1_IMAGE ; + } + color: 0 0 0 25; + } + } + + part { + name: "guide_line2"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP)/MAIN_W 1.0; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_default" 0.0; + rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.125; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_wide" 0.0; + rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.0; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 1.0; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_square" 0.0; + 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; } + 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; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + + } + /*outline*/ + part { + name: "guide_line2_outline2_2"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_1_IMAGE ; + } + color: 0 0 0 25; + } + } + /*outline*/ + part { + name: "guide_line3_outline3_1"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_H1 - 1)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_H1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_2_IMAGE ; + } + color: 0 0 0 25; + } + } + + part { + name: "guide_line3"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.125 GUIDE_LINE_H1/MAIN_H; } + rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "wide" 0.0; + rel1 { relative: 0.0 GUIDE_LINE_H1/MAIN_H; } + rel2 { relative: 1.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + } + description { + state: "square" 0.0; + rel1 { relative: ((MAIN_W-MAIN_H)/2)/MAIN_W GUIDE_LINE_H1/MAIN_H; } + rel2 { relative: (((MAIN_W-MAIN_H)/2+MAIN_H))/MAIN_W (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "ver_default" 0.0; + rel1 { relative: 0.0 VER_GUIDE_LINE_H1/VER_MAIN_H; } + rel2 { relative: 1.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP)/VER_MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + color: 255 255 255 255; + } + } + /*outline*/ + part { + name: "guide_line3_outline3_2"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_2_IMAGE ; + } + color: 0 0 0 25; + } + } + + /*outline*/ + part { + name: "guide_line4_outline4_1"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 - 1)/MAIN_W 0.0; } + rel2 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_2_IMAGE ; + } + color: 0 0 0 25; + } + } + + part { + name: "guide_line4"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.125 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; } + rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "square" 0.0; + rel1 { relative: ((MAIN_W-MAIN_H)/2)/MAIN_W (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; } + 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; } + image{ + normal: GUDIE_LINE_1_IMAGE ; + } + color: 255 255 255 255; + } + description { + state: "wide" 0.0; + rel1 { relative: 0.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; } + rel2 { relative: 1.0 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + } + description { + state: "ver_default" 0.0; + rel1 { relative: 0.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2)/VER_MAIN_H; } + rel2 { relative: 1.0 (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP)/VER_MAIN_H; } + image{ + normal: GUDIE_LINE_2_IMAGE ; + } + color: 255 255 255 255; + } + + } + /*outline*/ + part { + name: "guide_line4_outline4_2"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_W 0.0; } + rel2 { relative: (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP + 1)/MAIN_W 1.0; } + image{ + normal: GUDIE_OPA_LINE_2_IMAGE ; + } + color: 0 0 0 25; + } + } + + + }/*end parts*/ + + programs{ + + /*line1 line2*/ + program { + name: "prog_guideline12_set_normal"; + source: "prog_guideline"; + signal: "guide_line,1,2,normal"; + script: { + set_state(PART:"guide_line1", "default", 0.0); + set_state(PART:"guide_line2", "default", 0.0); + + } + } + + program { + name:"prog_guideline12_set_wide_ver"; + source: "prog_guideline"; + signal: "guide_line,1,2,vertical,wide"; + script: { + set_state(PART:"guide_line1", "ver_wide", 0.0); + set_state(PART:"guide_line2", "ver_wide", 0.0); + } + } + + program { + name: "prog_guideline12_set_normal_ver"; + source: "prog_guideline"; + signal: "guide_line,1,2,vertical,normal"; + script: { + set_state(PART:"guide_line1", "ver_default", 0.0); + set_state(PART:"guide_line2", "ver_default", 0.0); + + } + } + + program { + name: "prog_guideline12_set_square_ver"; + source: "prog_guideline"; + signal: "guide_line,1,2,vertical,square"; + script: { + set_state(PART:"guide_line1", "ver_square", 0.0); + set_state(PART:"guide_line2", "ver_square", 0.0); + + } + } + + /*line3 line4 */ + program { + name:"prog_guideline34_set_wide"; + source: "prog_guideline"; + signal: "guide_line,3,4,wide"; + script: { + set_state(PART:"guide_line3", "wide", 0.0); + set_state(PART:"guide_line4", "wide", 0.0); + } + } + + program { + name: "prog_guideline34_set_normal"; + source: "prog_guideline"; + signal: "guide_line,3,4,normal"; + script: { + set_state(PART:"guide_line3", "default", 0.0); + set_state(PART:"guide_line4", "default", 0.0); + + } + } + + program { + name: "prog_guideline34_set_square"; + source: "prog_guideline"; + signal: "guide_line,3,4,square"; + script: { + set_state(PART:"guide_line3", "square", 0.0); + set_state(PART:"guide_line4", "square", 0.0); + + } + } + + program { + name: "prog_guideline34_set_normal_ver"; + source: "prog_guideline"; + signal: "guide_line,3,4,vertical,normal"; + script: { + set_state(PART:"guide_line3", "ver_default", 0.0); + set_state(PART:"guide_line4", "ver_default", 0.0); + + } + } + + + + }/*end programs*/ + + +}/*end group*/ + + diff --git a/edc/cam_images.edc b/edc/cam_images.edc new file mode 100755 index 0000000..a51397a --- /dev/null +++ b/edc/cam_images.edc @@ -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 index 0000000..debe3d7 --- /dev/null +++ b/edc/cam_indicator_layout.edc @@ -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 index 0000000..b555771 --- /dev/null +++ b/edc/cam_main_layout.edc @@ -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 index 0000000..5af9fd3 --- /dev/null +++ b/edc/cam_recording_edje.edc @@ -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 index 0000000..727c92f --- /dev/null +++ b/edc/cam_recording_edje_inc.edc @@ -0,0 +1,40 @@ +/* + * 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 diff --git a/edc/cam_recording_edje_inverse.edc b/edc/cam_recording_edje_inverse.edc new file mode 100755 index 0000000..3b7269b --- /dev/null +++ b/edc/cam_recording_edje_inverse.edc @@ -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 index 0000000..a910913 --- /dev/null +++ b/edc/cam_recording_edje_inverse_inc.edc @@ -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 index 0000000..1234ac9 --- /dev/null +++ b/edc/cam_recording_edje_vertical.edc @@ -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 index 0000000..1a450ee --- /dev/null +++ b/edc/cam_recording_edje_vertical_inc.edc @@ -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 index 0000000..98e958a --- /dev/null +++ b/edc/cam_recording_edje_vertical_inverse.edc @@ -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 index 0000000..446acea --- /dev/null +++ b/edc/cam_recording_edje_vertical_inverse_inc.edc @@ -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 index 0000000..21b22b1 --- /dev/null +++ b/edc/cam_setting_popup_layout.edc @@ -0,0 +1,50 @@ +/* + * 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_setting_popup_layout_inc.edc" + +#define SETTING_POPUP_WIDTH 550 +#define SETTING_POPUP_HEIGHT 661 + +images { + image: CTXPOPUP_BG_IMAGE COMP; +} + +collections { + group { + name:"camera/setting/popup/area/toolbar"; + min: MAIN_W MAIN_H; + parts { + part { name: "setting_popup"; + type: SWALLOW; + repeat_events: 0; + 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;} + } + } + } + } + + CAMERA_SETTING_POPUP_GROUP_LAYOUT("toolbar", SETTING_POPUP_WIDTH, SETTING_POPUP_HEIGHT) +} + + + diff --git a/edc/cam_setting_popup_layout_inc.edc b/edc/cam_setting_popup_layout_inc.edc new file mode 100755 index 0000000..d32da91 --- /dev/null +++ b/edc/cam_setting_popup_layout_inc.edc @@ -0,0 +1,288 @@ +/* + * 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 __H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__ +#define __H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__ +#define SETTING_POPUP_WIDTH 550 +#define SETTING_POPUP_HEIGHT 661 + + +#define CAMERA_SETTING_POPUP_AREA_PART(part_name, width, height) \ + part { name: "camera/setting/popup/area/"part_name;\ + type: SWALLOW;\ + scale: 1;\ + repeat_events: 0;\ + description {\ + state:"default" 0.0;\ + min: width height;\ + max: width height;\ + fixed: 1 1;\ + align: 0 0;\ + rel1{ relative: 0.0 0.0; to: "popup_area";}\ + rel2{ relative: 0.0 0.0; to: "popup_area";}\ + } \ + } + + +/*Ctxpopup Style*/ +#define CTXPOPUP_BORDER_CORNER_SIZE 9 + +#define CAMERA_SETTING_POPUP_GROUP_LAYOUT(group_name, width, height)\ + group { \ + name: "camera/setting/popup/"group_name;\ + min: width height;\ + max: width height;\ + parts {\ + part { name: "elm.padding.top"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 CTXPOPUP_BORDER_CORNER_SIZE; \ + fixed: 0 1; \ + visible: 0; \ + rel2.relative: 1.0 0.0; \ + align: 0.0 0.0; \ + color: 255 255 255 255;\ + } \ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part { name: "elm.padding.bottom"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 CTXPOPUP_BORDER_CORNER_SIZE; \ + fixed: 0 1; \ + visible: 0; \ + rel1.relative: 0.0 1.0; \ + align: 0.0 1.0; \ + color: 255 255 255 255;\ + } \ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: CTXPOPUP_BORDER_CORNER_SIZE 0; \ + fixed: 1 0; \ + visible: 0; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + color: 255 255 255 255;\ + } \ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: CTXPOPUP_BORDER_CORNER_SIZE 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + color: 255 255 255 255;\ + } \ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part {\ + name: "bg";\ + type: RECT;\ + mouse_events: 0;\ + repeat_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + rel1 { relative: 0.0 0.0; }\ + rel2 { relative: 1.0 1.0; }\ + }\ + }\ + part {\ + name: "bg_image";\ + type: IMAGE;\ + scale: 1;\ + mouse_events: 0;\ + repeat_events: 0;\ + description {\ + align: 1 1;\ + visible: 0;\ + image {\ + normal: CTXPOPUP_BG_IMAGE;\ + border: 67 67 92 42;\ + border_scale: 1;\ + }\ + rel1 {relative: 0.0 0.0; to: "bg";}\ + rel2 {relative: 1.0. 1.0; to: "bg";}\ + }\ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part {\ + name: "ele.bg.top";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + repeat_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + rel1 { relative: 0.0 0.0; to:"bg";}\ + rel2 { relative: 1.0 60/height; to:"bg";}\ + }\ + }\ + part {\ + name: "ele.bg.bottom";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + repeat_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + rel1 { relative: 0.0 60/height; to:"bg";}\ + rel2 { relative: 1.0 1.0; to:"bg";}\ + }\ + }\ + part {\ + name: "elm.text";\ + type: TEXT;\ + scale: 1;\ + mouse_events: 1;\ + repeat_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + align: 0.5 0.5;\ + rel1 { relative: 0.0 0.0; to:"ele.bg.top";}\ + rel2 { relative: 1.0 1.0; to:"ele.bg.top";}\ + text {\ + font: FONT_NAME;\ + size: 30;\ + align: 0.5 0.5;\ + min: 1 1;\ + text: "";\ + }\ + }\ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + part {\ + name: "elm.swallow.box";\ + type: SWALLOW;\ + scale: 1;\ + mouse_events: 1;\ + repeat_events: 0;\ + description {\ + state: "default" 0.0;\ + visible: 0;\ + align: 0.5 0.5;\ + rel1 { relative: 0.0 0.0; to:"ele.bg.bottom";}\ + rel2 { relative: 1.0 1.0; to:"ele.bg.bottom";}\ + }\ + description {\ + state: "show" 0.0;\ + inherit: "default" 0.0;\ + visible: 1;\ + }\ + description {\ + state: "dim" 0.0;\ + inherit: "default" 0.0;\ + }\ + }\ + }\ + programs {\ + program {\ + name: "set.popup.dim";\ + source: "prog";\ + signal: "set.popup.dim";\ + script: {\ + set_state(PART:"bg_image", "dim", 0.0);\ + set_state(PART:"elm.text", "dim", 0.0);\ + set_state(PART:"elm.swallow.box", "dim", 0.0);\ + set_state(PART:"elm.padding.right", "dim", 0.0);\ + set_state(PART:"elm.padding.left", "dim", 0.0);\ + set_state(PART:"elm.padding.top", "dim", 0.0);\ + set_state(PART:"elm.padding.bottom", "dim", 0.0);\ + }\ + }\ + program {\ + name: "set.popup.show";\ + source: "prog";\ + signal: "set.popup.show";\ + script: {\ + set_state(PART:"bg_image", "show", 0.0);\ + set_state(PART:"elm.text", "show", 0.0);\ + set_state(PART:"elm.swallow.box", "show", 0.0);\ + set_state(PART:"elm.padding.right", "show", 0.0);\ + set_state(PART:"elm.padding.left", "show", 0.0);\ + set_state(PART:"elm.padding.top", "show", 0.0);\ + set_state(PART:"elm.padding.bottom", "show", 0.0);\ + }\ + }\ + }\ + } + + +#endif /*__H_EDC_CAM_SETTING_POPUP_LAYOUT_EDC_H__*/ +//end file diff --git a/edc/cam_toolbar_layout.edc b/edc/cam_toolbar_layout.edc new file mode 100755 index 0000000..5be5582 --- /dev/null +++ b/edc/cam_toolbar_layout.edc @@ -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 index 0000000..ae6e1c8 --- /dev/null +++ b/edc/cam_toolbar_layout_inc.edc @@ -0,0 +1,353 @@ +/* + * 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 __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ +#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ + +#define SETTING_TOOLBAR_W 1156 +#define SETTING_TOOLBAR_H 116 + +#define TOOLBAR_ITEM_W 86 +#define TOOLBAR_ITEM_H 86 + +#define TOOLBAR_0_X 38 +#define TOOLBAR_0_Y 594 + +#define TOOLBAR_1_X 38 +#define TOOLBAR_1_Y 454 + +#define TOOLBAR_2_X 38 +#define TOOLBAR_2_Y 317 + +#define TOOLBAR_3_X 38 +#define TOOLBAR_3_Y 180 + +#define TOOLBAR_4_X 38 +#define TOOLBAR_4_Y 40 + +#define SHUTTER_X 1146 +#define SHUTTER_Y 194 +#define SHUTTER_W 108 +#define SHUTTER_H 214 + +#define BACKBTN_X 1146 +#define BACKBTN_Y 18 +#define BACKBTN_W 108 +#define BACKBTN_H 108 + +#define QUICKVIEW_X 1146 +#define QUICKVIEW_Y 604 +#define QUICKVIEW_W 108 +#define QUICKVIEW_H 108 + +#define RECORDINGBTN_X 1146 +#define RECORDINGBTN_Y 418 +#define RECORDINGBTN_W 108 +#define RECORDINGBTN_H 108 + +#define REC_STOP_BTN_X 1146 +#define REC_STOP_BTN_Y 594 +#define REC_STOP_BTN_W 108 +#define REC_STOP_BTN_H 108 + +#define CAF_BUTTON_X 38 +#define CAF_BUTTON_Y 606 +#define CAF_BUTTON_W 87 +#define CAF_BUTTON_H 88 + +#define CAMERA_BUTTON_X 38 +#define CAMERA_BUTTON_Y 65 +#define CAMERA_BUTTON_W 61 +#define CAMERA_BUTTON_H 61 +#define CAMCORDER_BUTTON_X 38 +#define CAMCORDER_BUTTON_Y 109 +#define CAMCORDER_BUTTON_W 61 +#define CAMCORDER_BUTTON_H 61 +#define CAMERA_ICON_X 38 +#define CAMERA_ICON_Y 10 +#define CAMERA_ICON_W 56 +#define CAMERA_ICON_H 48 + +images { + /*item_button*/ + image: BUTTON_BG_NORMAL_IMAGE COMP; + image: BUTTON_BG_PRESS_IMAGE COMP; + + image: SNAPSHOT_PRESS_IMAGE COMP; + image: SNAPSHOT_NORMAL_IMAGE COMP; + image: LEFT_TOOLBAR_BG_IMAGE COMP; + image: RIGHT_TOOLBAR_BG_IMAGE COMP; + + image: CAF_BUTTON_NORMAL_IMAGE COMP; + image: CAF_BUTTON_PRESS_IMAGE COMP; +} + +#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \ + part { \ + name: part_name; \ + type: IMAGE; \ + scale: 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: "hide" 0.0; \ + inherit:"default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \ + part { name: button_name; \ + type: IMAGE; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \ + rel2 { relative: (x+TOOLBAR_ITEM_W)/(bg_w) (y+TOOLBAR_ITEM_H)/(bg_h); offset: 0 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_NORMAL_IMAGE; } \ + } \ + description { \ + state: "press" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_PRESS_IMAGE; } \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \ + rel2 { relative: (x+w)/(bg_w) (y+h)/(bg_h); offset: 0 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: icon_name"_event"; \ + type: RECT; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1.to: icon_name; \ + rel2.to: icon_name; \ + color: 0 0 0 0; \ + visible: 1; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (x)/(bg_w) (y)/(bg_h); offset: 0 0;} \ + rel2 { relative: (x+w)/(bg_w) (y+h)/(bg_h); offset: -1 -1;} \ + } \ + } + +#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( press_signal, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( release_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( click_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",edit"; \ + source: "prog"; \ + signal: icon_name",edit"; \ + script: { \ + set_state(PART:button_name, "normal", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( press_signal_name, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( release_signal_name, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) \ + emit( click_signal_name, "toolbar_signal" );\ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",press"; \ + source: "prog"; \ + signal: icon_name",press"; \ + script: { \ + set_state(PART:icon_name, "press", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON(name, x, y) \ + TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/ +//end files diff --git a/edc/cam_toolbar_layout_inverse.edc b/edc/cam_toolbar_layout_inverse.edc new file mode 100755 index 0000000..5dd92d1 --- /dev/null +++ b/edc/cam_toolbar_layout_inverse.edc @@ -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 index 0000000..448631c --- /dev/null +++ b/edc/cam_toolbar_layout_inverse_inc.edc @@ -0,0 +1,353 @@ +/* + * 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 __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ +#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ + +#define SETTING_TOOLBAR_W 1156 +#define SETTING_TOOLBAR_H 116 + +#define TOOLBAR_ITEM_W 86 +#define TOOLBAR_ITEM_H 86 + +#define TOOLBAR_0_X 38 +#define TOOLBAR_0_Y 594 + +#define TOOLBAR_1_X 38 +#define TOOLBAR_1_Y 454 + +#define TOOLBAR_2_X 38 +#define TOOLBAR_2_Y 317 + +#define TOOLBAR_3_X 38 +#define TOOLBAR_3_Y 180 + +#define TOOLBAR_4_X 38 +#define TOOLBAR_4_Y 40 + +#define SHUTTER_X 1146 +#define SHUTTER_Y 194 +#define SHUTTER_W 108 +#define SHUTTER_H 214 + +#define BACKBTN_X 1146 +#define BACKBTN_Y 18 +#define BACKBTN_W 108 +#define BACKBTN_H 108 + +#define QUICKVIEW_X 1146 +#define QUICKVIEW_Y 604 +#define QUICKVIEW_W 108 +#define QUICKVIEW_H 108 + +#define RECORDINGBTN_X 1146 +#define RECORDINGBTN_Y 418 +#define RECORDINGBTN_W 108 +#define RECORDINGBTN_H 108 + +#define REC_STOP_BTN_X 1146 +#define REC_STOP_BTN_Y 594 +#define REC_STOP_BTN_W 108 +#define REC_STOP_BTN_H 108 + +#define CAF_BUTTON_X 38 +#define CAF_BUTTON_Y 606 +#define CAF_BUTTON_W 87 +#define CAF_BUTTON_H 88 + +#define CAMERA_BUTTON_X 38 +#define CAMERA_BUTTON_Y 65 +#define CAMERA_BUTTON_W 61 +#define CAMERA_BUTTON_H 61 +#define CAMCORDER_BUTTON_X 38 +#define CAMCORDER_BUTTON_Y 109 +#define CAMCORDER_BUTTON_W 61 +#define CAMCORDER_BUTTON_H 61 +#define CAMERA_ICON_X 38 +#define CAMERA_ICON_Y 10 +#define CAMERA_ICON_W 56 +#define CAMERA_ICON_H 48 + +images { + /*item_button*/ + image: BUTTON_BG_NORMAL_IMAGE COMP; + image: BUTTON_BG_PRESS_IMAGE COMP; + + image: SNAPSHOT_PRESS_IMAGE COMP; + image: SNAPSHOT_NORMAL_IMAGE COMP; + image: LEFT_TOOLBAR_BG_IMAGE COMP; + image: RIGHT_TOOLBAR_BG_IMAGE COMP; + + image: CAF_BUTTON_NORMAL_IMAGE COMP; + image: CAF_BUTTON_PRESS_IMAGE COMP; +} + +#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \ + part { \ + name: part_name; \ + type: IMAGE; \ + scale: 1;\ + description { \ + state: "default" 0.0;\ + rel1 { relative: (1 - (x+w)/MAIN_W) (1 - (y+h)/MAIN_H); } \ + rel2 { relative: (1 - (x)/MAIN_W) (1 - (y)/MAIN_H); } \ + image { normal: img; } \ + } \ + description{ \ + state: "hide" 0.0; \ + inherit:"default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \ + part { name: button_name; \ + type: IMAGE; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (x+TOOLBAR_ITEM_W)/(bg_w)) (1 - (y+TOOLBAR_ITEM_H)/(bg_h)); offset: 1 0;} \ + rel2 { relative: (1 - (x)/(bg_w)) (1 - (y)/(bg_h)); offset: 1 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_NORMAL_IMAGE; } \ + } \ + description { \ + state: "press" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_PRESS_IMAGE; } \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (x+w)/(bg_w)) (1 - (y+h)/(bg_h)); offset: 1 0;} \ + rel2 { relative: (1 - (x)/(bg_w)) (1 - (y)/(bg_h)); offset: 1 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: icon_name"_event"; \ + type: RECT; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1.to: icon_name; \ + rel2.to: icon_name; \ + color: 0 0 0 0; \ + visible: 1; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (x+w)/(bg_w)) (1 - (y+h)/(bg_h)); offset: 1 1;} \ + rel2 { relative: (1 - (x)/(bg_w)) (1 - (y)/(bg_h)); offset: 0 0;} \ + } \ + } + +#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( press_signal, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( release_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( click_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",edit"; \ + source: "prog"; \ + signal: icon_name",edit"; \ + script: { \ + set_state(PART:button_name, "normal", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( press_signal_name, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( release_signal_name, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) \ + emit( click_signal_name, "toolbar_signal" );\ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",press"; \ + source: "prog"; \ + signal: icon_name",press"; \ + script: { \ + set_state(PART:icon_name, "press", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON(name, x, y) \ + TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/ +//end files diff --git a/edc/cam_toolbar_layout_vertical.edc b/edc/cam_toolbar_layout_vertical.edc new file mode 100755 index 0000000..1b21d76 --- /dev/null +++ b/edc/cam_toolbar_layout_vertical.edc @@ -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 index 0000000..f5099ff --- /dev/null +++ b/edc/cam_toolbar_layout_vertical_inc.edc @@ -0,0 +1,353 @@ +/* + * 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 __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ +#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ + +#define SETTING_TOOLBAR_W 1156 +#define SETTING_TOOLBAR_H 116 + +#define TOOLBAR_ITEM_W 86 +#define TOOLBAR_ITEM_H 86 + +#define TOOLBAR_0_X 38 +#define TOOLBAR_0_Y 594 + +#define TOOLBAR_1_X 38 +#define TOOLBAR_1_Y 454 + +#define TOOLBAR_2_X 38 +#define TOOLBAR_2_Y 317 + +#define TOOLBAR_3_X 38 +#define TOOLBAR_3_Y 180 + +#define TOOLBAR_4_X 38 +#define TOOLBAR_4_Y 40 + +#define SHUTTER_X 1146 +#define SHUTTER_Y 194 +#define SHUTTER_W 108 +#define SHUTTER_H 214 + +#define BACKBTN_X 1146 +#define BACKBTN_Y 18 +#define BACKBTN_W 108 +#define BACKBTN_H 108 + +#define QUICKVIEW_X 1146 +#define QUICKVIEW_Y 604 +#define QUICKVIEW_W 108 +#define QUICKVIEW_H 108 + +#define RECORDINGBTN_X 1146 +#define RECORDINGBTN_Y 418 +#define RECORDINGBTN_W 108 +#define RECORDINGBTN_H 108 + +#define REC_STOP_BTN_X 1146 +#define REC_STOP_BTN_Y 594 +#define REC_STOP_BTN_W 108 +#define REC_STOP_BTN_H 108 + +#define CAF_BUTTON_X 38 +#define CAF_BUTTON_Y 606 +#define CAF_BUTTON_W 87 +#define CAF_BUTTON_H 88 + +#define CAMERA_BUTTON_X 38 +#define CAMERA_BUTTON_Y 65 +#define CAMERA_BUTTON_W 61 +#define CAMERA_BUTTON_H 61 +#define CAMCORDER_BUTTON_X 38 +#define CAMCORDER_BUTTON_Y 109 +#define CAMCORDER_BUTTON_W 61 +#define CAMCORDER_BUTTON_H 61 +#define CAMERA_ICON_X 38 +#define CAMERA_ICON_Y 10 +#define CAMERA_ICON_W 56 +#define CAMERA_ICON_H 48 + +images { + /*item_button*/ + image: BUTTON_BG_NORMAL_IMAGE COMP; + image: BUTTON_BG_PRESS_IMAGE COMP; + + image: SNAPSHOT_PRESS_IMAGE COMP; + image: SNAPSHOT_NORMAL_IMAGE COMP; + image: LEFT_TOOLBAR_BG_VER_IMAGE COMP; + image: RIGHT_TOOLBAR_BG_VER_IMAGE COMP; + + image: CAF_BUTTON_NORMAL_IMAGE COMP; + image: CAF_BUTTON_PRESS_IMAGE COMP; +} + +#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \ + part { \ + name: part_name; \ + type: IMAGE; \ + scale: 1;\ + description { \ + state: "default" 0.0;\ + rel1 { relative: (1 - (y+h)/MAIN_H) (x)/MAIN_W; } \ + rel2 { relative: (1 - (y)/MAIN_H) (x+w)/MAIN_W; } \ + image { normal: img; } \ + }\ + description{ \ + state: "hide" 0.0; \ + inherit:"default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \ + part { name: button_name; \ + type: IMAGE; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (y+TOOLBAR_ITEM_H)/(bg_h)) (x)/(bg_w); offset: 0 0;} \ + rel2 { relative: (1 - (y)/(bg_h)) (x+TOOLBAR_ITEM_W)/(bg_w); offset: 0 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_NORMAL_IMAGE; } \ + } \ + description { \ + state: "press" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_PRESS_IMAGE; } \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (y+h)/(bg_h)) (x)/(bg_w); offset: 0 0;} \ + rel2 { relative: (1 - (y)/(bg_h)) (x+w)/(bg_w); offset: 0 0;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: icon_name"_event"; \ + type: RECT; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1.to: icon_name; \ + rel2.to: icon_name; \ + color: 0 0 0 0; \ + visible: 1; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (1 - (y+h)/(bg_h)) (x)/(bg_w); offset: 1 0;} \ + rel2 { relative: (1 - (y)/(bg_h)) (x+w)/(bg_w); offset: 0 -1;} \ + } \ + } + +#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( press_signal, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( release_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( click_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",edit"; \ + source: "prog"; \ + signal: icon_name",edit"; \ + script: { \ + set_state(PART:button_name, "normal", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( press_signal_name, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( release_signal_name, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) \ + emit( click_signal_name, "toolbar_signal" );\ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",press"; \ + source: "prog"; \ + signal: icon_name",press"; \ + script: { \ + set_state(PART:icon_name, "press", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON(name, x, y) \ + TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/ +//end files diff --git a/edc/cam_toolbar_layout_vertical_inverse.edc b/edc/cam_toolbar_layout_vertical_inverse.edc new file mode 100755 index 0000000..c84ee63 --- /dev/null +++ b/edc/cam_toolbar_layout_vertical_inverse.edc @@ -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_inverse_inc.edc" +#include "cam_setting_popup_layout_inc.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, RIGHT_TOOLBAR_BG_VER_IMAGE) + TOOLBAR_BACKGROUND_IMAGE("right_bg", MAIN_W-TOOLBAR_W, 0, TOOLBAR_W, MAIN_H, LEFT_TOOLBAR_BG_VER_IMAGE) + + part { name: "popup_area"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description{ + state:"default" 0.0; + rel1{ relative: 0.0 (1 - (MAIN_W-TOOLBAR_W)/MAIN_W); to: "bg";} + rel2{ relative: 1.0 (1 - TOOLBAR_W/MAIN_W); to: "bg";} + } + } + + part { name: "setting_popup"; + type: SWALLOW; + scale: 1; + description{ + state:"default" 0.0; + rel1{ relative: 0.0 (1 - (MAIN_W-TOOLBAR_W)/MAIN_W) ; to: "bg";} + rel2{ relative: 1.0 (1 - TOOLBAR_W/MAIN_W); to: "bg";} + } + } + + part { name: "shortcuts_popup"; + type: SWALLOW; + scale: 1; + description{ + state:"default" 0.0; + rel1{ relative: 0.0 (1 - (TOOLBAR_W+720)/MAIN_W); to: "bg";} + rel2{ relative: 1.0 (1 - (TOOLBAR_W+120)/MAIN_W); to: "bg";} + } + } + + part { name: "shortcuts_popup_description"; + type: SWALLOW; + scale: 1; + description{ + state:"default" 0.0; + rel1{ relative: 0.0 (1 - (TOOLBAR_W+120)/MAIN_W); to: "bg";} + rel2{ relative: 1.0 (1 - (TOOLBAR_W)/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_INVERSE_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_INVERSE_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_inverse_inc.edc b/edc/cam_toolbar_layout_vertical_inverse_inc.edc new file mode 100755 index 0000000..827ee9c --- /dev/null +++ b/edc/cam_toolbar_layout_vertical_inverse_inc.edc @@ -0,0 +1,353 @@ +/* + * 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 __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ +#define __H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__ + +#define SETTING_TOOLBAR_W 1156 +#define SETTING_TOOLBAR_H 116 + +#define TOOLBAR_ITEM_W 86 +#define TOOLBAR_ITEM_H 86 + +#define TOOLBAR_0_X 38 +#define TOOLBAR_0_Y 594 + +#define TOOLBAR_1_X 38 +#define TOOLBAR_1_Y 454 + +#define TOOLBAR_2_X 38 +#define TOOLBAR_2_Y 317 + +#define TOOLBAR_3_X 38 +#define TOOLBAR_3_Y 180 + +#define TOOLBAR_4_X 38 +#define TOOLBAR_4_Y 40 + +#define SHUTTER_X 1146 +#define SHUTTER_Y 194 +#define SHUTTER_W 108 +#define SHUTTER_H 214 + +#define BACKBTN_X 1146 +#define BACKBTN_Y 18 +#define BACKBTN_W 108 +#define BACKBTN_H 108 + +#define QUICKVIEW_X 1146 +#define QUICKVIEW_Y 604 +#define QUICKVIEW_W 108 +#define QUICKVIEW_H 108 + +#define RECORDINGBTN_X 1146 +#define RECORDINGBTN_Y 418 +#define RECORDINGBTN_W 108 +#define RECORDINGBTN_H 108 + +#define REC_STOP_BTN_X 1146 +#define REC_STOP_BTN_Y 594 +#define REC_STOP_BTN_W 108 +#define REC_STOP_BTN_H 108 + +#define CAF_BUTTON_X 38 +#define CAF_BUTTON_Y 606 +#define CAF_BUTTON_W 87 +#define CAF_BUTTON_H 88 + +#define CAMERA_BUTTON_X 38 +#define CAMERA_BUTTON_Y 65 +#define CAMERA_BUTTON_W 61 +#define CAMERA_BUTTON_H 61 +#define CAMCORDER_BUTTON_X 38 +#define CAMCORDER_BUTTON_Y 109 +#define CAMCORDER_BUTTON_W 61 +#define CAMCORDER_BUTTON_H 61 +#define CAMERA_ICON_X 38 +#define CAMERA_ICON_Y 10 +#define CAMERA_ICON_W 56 +#define CAMERA_ICON_H 48 + +images { + /*item_button*/ + image: BUTTON_BG_NORMAL_IMAGE COMP; + image: BUTTON_BG_PRESS_IMAGE COMP; + + image: SNAPSHOT_PRESS_IMAGE COMP; + image: SNAPSHOT_NORMAL_IMAGE COMP; + image: LEFT_TOOLBAR_BG_VER_IMAGE COMP; + image: RIGHT_TOOLBAR_BG_VER_IMAGE COMP; + + image: CAF_BUTTON_NORMAL_IMAGE COMP; + image: CAF_BUTTON_PRESS_IMAGE COMP; +} + +#define TOOLBAR_BACKGROUND_IMAGE(part_name, x, y, w, h, img) \ + part { \ + name: part_name; \ + type: IMAGE; \ + scale: 1;\ + description { \ + state: "default" 0.0;\ + rel1 { relative: (y)/MAIN_H (1 - (x+w)/MAIN_W); } \ + rel2 { relative: (y+h)/MAIN_H (1 - (x)/MAIN_W); } \ + image { normal: img; } \ + } \ + description{ \ + state: "hide" 0.0; \ + inherit:"default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON_WITH_BG(button_name, x, y, bg_w, bg_h) \ + part { name: button_name; \ + type: IMAGE; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (y)/(bg_h) (1 - (x+TOOLBAR_ITEM_W)/(bg_w)); offset: 0 1;} \ + rel2 { relative: (y+TOOLBAR_ITEM_H)/(bg_h) (1 - (x)/(bg_w)); offset: 0 1;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_NORMAL_IMAGE; } \ + } \ + description { \ + state: "press" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + image { normal: BUTTON_BG_PRESS_IMAGE; } \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (y)/(bg_h) (1 - (x+w)/(bg_w)); offset: 0 1;} \ + rel2 { relative: (y+h)/(bg_h) (1 - (x)/(bg_w)); offset: 0 1;} \ + visible: 0; \ + } \ + description { \ + state: "normal" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { \ + state: "dim" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: icon_name"_event"; \ + type: RECT; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1.to: icon_name; \ + rel2.to: icon_name; \ + color: 0 0 0 0; \ + visible: 1; \ + } \ + } + +#define TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(icon_name, x, y, w, h, bg_w, bg_h) \ + part { name: icon_name; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1;\ + description { \ + state: "default" 0.0; \ + rel1 { relative: (y)/(bg_h) (1 - (x+w)/(bg_w)); offset: 0 1;} \ + rel2 { relative: (y+h)/(bg_h) (1 - (x)/(bg_w)); offset: -1 0;} \ + } \ + } + +#define TOOLBAR_LEFT_ITEM_PROGRAM(button_name, icon_name, press_signal, release_signal, click_signal) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( press_signal, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( release_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name"_event"; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "normal") == 0) { \ + emit( click_signal, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",edit"; \ + source: "prog"; \ + signal: icon_name",edit"; \ + script: { \ + set_state(PART:button_name, "normal", 0.0); \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:button_name, "default", 0.0); \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_RIGHT_ITEM_PROGRAM(icon_name, press_signal_name, release_signal_name, click_signal_name) \ + program { \ + name: "mouse_down_"icon_name; \ + signal: "mouse,down,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( press_signal_name, "toolbar_signal" );\ + } \ + }\ + } \ + program { \ + name: "mouse_up_"icon_name; \ + signal: "mouse,up,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) { \ + emit( release_signal_name, "toolbar_signal" );\ + } \ + }\ + }\ + program { \ + name: "mouse_clicked_"icon_name; \ + signal: "mouse,clicked,1"; \ + source: icon_name; \ + script {\ + new st[31];\ + new Float:vl;\ + get_state(PART:icon_name, st, 30, vl);\ + if (strcmp(st, "dim") != 0) \ + emit( click_signal_name, "toolbar_signal" );\ + }\ + }\ + program { \ + name: icon_name",invisible"; \ + source: "prog"; \ + signal: icon_name",invisible"; \ + script: { \ + set_state(PART:icon_name, "default", 0.0); \ + } \ + } \ + program { \ + name: icon_name",normal"; \ + source: "prog"; \ + signal: icon_name",normal"; \ + script: { \ + set_state(PART:icon_name, "normal", 0.0); \ + } \ + } \ + program { \ + name: icon_name",press"; \ + source: "prog"; \ + signal: icon_name",press"; \ + script: { \ + set_state(PART:icon_name, "press", 0.0); \ + } \ + } \ + program { \ + name: icon_name",dim"; \ + source: "prog"; \ + signal: icon_name",dim"; \ + script: { \ + set_state(PART:icon_name, "dim", 0.0); \ + } \ + } + +#define TOOLBAR_ITEM_BUTTON(name, x, y) \ + TOOLBAR_ITEM_BUTTON_WITH_BG(name, x, y, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_ICON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_ICON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#define TOOLBAR_ITEM_SWALLOW_BUTTON(name, x, y, w, h) \ + TOOLBAR_ITEM_SWALLOW_BUTTON_WITH_BG(name, x, y, w, h, MAIN_W, MAIN_H) + +#endif /*__H_EDC_CAM_TOOLBAR_LAYOUT_INC_EDC_H__*/ +//end files diff --git a/edc/cam_utils.edc b/edc/cam_utils.edc new file mode 100755 index 0000000..3a213db --- /dev/null +++ b/edc/cam_utils.edc @@ -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 index 0000000..06edd50 --- /dev/null +++ b/edc/cam_zoom_layout.edc @@ -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 index 0000000..8eefd89 --- /dev/null +++ b/edc/cam_zoom_layout_inverse.edc @@ -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 index 0000000..68df3a1 --- /dev/null +++ b/edc/cam_zoom_layout_vertical.edc @@ -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 index 0000000..2b07bc0 --- /dev/null +++ b/edc/cam_zoom_layout_vertical_inverse.edc @@ -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 index 0000000..fe51a1a --- /dev/null +++ b/edc/style_button_camera.edc @@ -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 index 0000000..baa3ac6 --- /dev/null +++ b/edc/style_ctxpopup_camera_with_radio.edc @@ -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 index 0000000..72b46db --- /dev/null +++ b/edc/style_genlist_macro.edc @@ -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 index 0000000..7d0eeb2 --- /dev/null +++ b/edc/style_genlist_normal.edc @@ -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 index 0000000..c7fb7be --- /dev/null +++ b/edc/style_label_camera.edc @@ -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 index 0000000..0d2bd99 --- /dev/null +++ b/edc/style_slider_camera.edc @@ -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 index 0000000..a1c2d57 --- /dev/null +++ b/edc/style_tizen_hd_inc.edc @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 0000000..72fb09d --- /dev/null +++ b/include/CamDeviceCapacity.h @@ -0,0 +1,118 @@ +/* + * 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 _CCAM_DEVICE_CAPACITY_H_ +#define _CCAM_DEVICE_CAPACITY_H_ + +#include "cam_property.h" + +class CCamDeviceCapacity +{ + //=========================================================================== + // Constructor & Destructor +public: + +protected: + CCamDeviceCapacity(); + virtual ~CCamDeviceCapacity(); + + + //=========================================================================== + // Attributes +protected: + static CCamDeviceCapacity* m_pInstance; + + typedef struct _DevCapsSupported + { + bool bChecked; + bool bSupported; + }DevCapsSupported; + + typedef struct _DevCapsMinMax + { + bool bChecked; + bool bSupported; + int nMin; + int nMax; + }DevCapsMinMax; + + typedef struct _DevCapsRange + { + bool bChecked; + bool bSupported; + unsigned int unCaps; + }DevCapsRange; + + + DevCapsRange m_CamRes; + DevCapsRange m_RecRes; + DevCapsRange m_Focus; + DevCapsRange m_Effect; + DevCapsRange m_WB; + DevCapsRange m_Scene; + DevCapsRange m_Metering; + DevCapsRange m_ISO; + DevCapsRange m_Flash; + DevCapsRange m_Fps; + DevCapsRange m_Shot; + DevCapsRange m_RecMode; + + DevCapsMinMax m_Zoom; + DevCapsMinMax m_Ev; + DevCapsMinMax m_Br; + + DevCapsSupported m_WDR; + DevCapsSupported m_AntiShake; + DevCapsSupported m_RecAntiShake; + DevCapsSupported m_Outdoorvisibility; + + unsigned int m_uFuncCaps; + //=========================================================================== + // Interfaces +public: + + static CCamDeviceCapacity* GetInstance(); + void Destroy(); + void ResetCaps(); + + void GetCamDevFuncCaps(unsigned int *eType, void *user_data); + + bool GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevWBCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevISOCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data); + bool GetCamDevZoomCaps(int *min, int *max); + bool GetCamDevEvCaps(int *min, int *max); + bool GetCamDevBrCaps(int *min, int *max); + + + +private: + bool IsSupported(unsigned int type, CamDeviceType deviceType, void *user_data); +}; + + +#endif //_CCAM_DEVICE_CAPACITY_H_ + diff --git a/include/CamTypeConverter.h b/include/CamTypeConverter.h new file mode 100755 index 0000000..699fee5 --- /dev/null +++ b/include/CamTypeConverter.h @@ -0,0 +1,48 @@ +/* + * 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_ + +#include "camera.h" +#include "cam_property.h" + +class CCamTypeConverter { + +public: +static unsigned int CamIsoDevConvertCaps(camera_attr_iso_e iso); +static unsigned int CamEffectDevConvertCaps(camera_attr_effect_mode_e effect); +static unsigned int CamFpsDevConvertCaps(camera_attr_fps_e fps); +static unsigned int CamWbDevConvertCaps(camera_attr_whitebalance_e wb); +static unsigned int CamMeteringDevConvertCaps(camera_attr_exposure_mode_e metering); +static unsigned int CamSceneDevConvertCaps(camera_attr_scene_mode_e scene); +static unsigned int CamFlashDevConvertCaps(camera_attr_flash_mode_e flash); +static unsigned int CamFocusDevConvertCaps(camera_attr_af_mode_e focus); + +static unsigned int CamIsoCamConvertCaps(CamIso iso); +static unsigned int CamEffectCamConvertCaps(CamSettingsEffects effect); +static unsigned int CamWbCamConvertCaps(CamSettingsWB wb); +static unsigned int CamMeteringCamConvertCaps(CamMetering metering); +static unsigned int CamSceneCamConvertCaps(CamSceneMode scene); +static unsigned int CamFlashCamConvertCaps(CamFlashMode flash); +static unsigned int CamFocusCamConvertCaps(CamFocusMode focus); +static unsigned int CamResolutionCamConvertCaps(unsigned int res); + +}; + +#endif /* CAM_TYPECONVERTER_H_ */ + diff --git a/include/cam.h b/include/cam.h new file mode 100755 index 0000000..cb1aba9 --- /dev/null +++ b/include/cam.h @@ -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 +#include +#include +#include +#include + +#include "cam_property.h" +#include "cam_app.h" +#include "edc_string.h" +#include + +#include +#include +#include +#include +#include + + +#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 index 0000000..013b938 --- /dev/null +++ b/include/cam_animation.h @@ -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 index 0000000..edc040d --- /dev/null +++ b/include/cam_app.h @@ -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 +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "cam_property.h" +#include "cam_debug.h" + +#include + +#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 +#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 index 0000000..2635c5f --- /dev/null +++ b/include/cam_capacity_type.h @@ -0,0 +1,188 @@ +/* + * 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_CAPACITY_TYPE_H_ +#define _CAM_CAPACITY_TYPE_H_ + + +#ifdef __cplusplus +extern "C" { +#endif // #ifdef __cplusplus + + +// Resolution +#define CAM_CP_SIZE_176X144 0x00000001 +#define CAM_CP_SIZE_320X240 0x00000002 +#define CAM_CP_SIZE_400X240 0x00000004 +#define CAM_CP_SIZE_640X480 0x00000008 +#define CAM_CP_SIZE_720X480 0x00000010 +#define CAM_CP_SIZE_800X480 0x00000020 +#define CAM_CP_SIZE_800X600 0x00000040 +#define CAM_CP_SIZE_1280X960 0x00000080 +#define CAM_CP_SIZE_1280X720 0x00000100 +#define CAM_CP_SIZE_1392X1392 0x00000200 +#define CAM_CP_SIZE_1600X1200 0x00000400 +#define CAM_CP_SIZE_1920X1080 0x00000800 +#define CAM_CP_SIZE_2048X1152 0x00001000 +#define CAM_CP_SIZE_2048X1536 0x00002000 +#define CAM_CP_SIZE_2800X1920 0x00004000 +#define CAM_CP_SIZE_2560X1440 0x00008000 +#define CAM_CP_SIZE_2560X1536 0x00010000 +#define CAM_CP_SIZE_2560X1920 0x00020000 +#define CAM_CP_SIZE_3264X1836 0x00040000 +#define CAM_CP_SIZE_3264X1960 0x00080000 +#define CAM_CP_SIZE_3264X2176 0x00100000 +#define CAM_CP_SIZE_3264X2448 0x00200000 + +// White balance +#define CAM_CP_WB_AUTO 0x00000001 +#define CAM_CP_WB_DAYLIGHT 0x00000002 +#define CAM_CP_WB_INCANDESCENT 0x00000004 +#define CAM_CP_WB_FLUORESCENT 0x00000008 +#define CAM_CP_WB_CLOUDY 0x00000010 +#define CAM_CP_WB_CUSTOM 0x00000020 +#define CAM_CP_WB_SHADE 0x00000040 +#define CAM_CP_WB_FLASH 0x00000080 +#define CAM_CP_WB_HORIZON 0x00000100 + +// Scene mode +#define CAM_CP_SCENE_MODE_AUTO 0x00000001 +#define CAM_CP_SCENE_MODE_PORTRAIT 0x00000002 +#define CAM_CP_SCENE_MODE_SPORTS 0x00000004 +#define CAM_CP_SCENE_MODE_PARTY_AND_INDOOR 0x00000008 +#define CAM_CP_SCENE_MODE_BEACH_AND_SNOW 0x00000010 +#define CAM_CP_SCENE_MODE_SUNSET 0x00000020 +#define CAM_CP_SCENE_MODE_DUSK_AND_DAWN 0x00000040 +#define CAM_CP_SCENE_MODE_NIGHTSHOT 0x00000080 +#define CAM_CP_SCENE_MODE_FALLCOLOR 0x00000100 +#define CAM_CP_SCENE_MODE_FIREWORK 0x00000200 +#define CAM_CP_SCENE_MODE_CANDLE_LIGHT 0x00000400 +#define CAM_CP_SCENE_MODE_BACK_LIGHT 0x00000800 +#define CAM_CP_SCENE_MODE_LANDSCAPE 0x00001000 +#define CAM_CP_SCENE_MODE_TEXT 0x00002000 +#define CAM_CP_SCENE_MODE_SHOW_WINDOW 0x00004000 + +// EFFECT +#define CAM_CP_EFFECT_NONE 0x00000001 +#define CAM_CP_EFFECT_SEPIA 0x00000002 +#define CAM_CP_EFFECT_NEGATIVE 0x00000004 +#define CAM_CP_EFFECT_MONO 0x00000008 +#define CAM_CP_EFFECT_CARTOON 0x00000010 +#define CAM_CP_EFFECT_WASHED 0x00000020 +#define CAM_CP_EFFECT_SELECTIVE_RED_YELLOW 0x00000040 +#define CAM_CP_EFFECT_SELECTIVE_BLUE 0x00000080 +#define CAM_CP_EFFECT_SELECTIVE_GREEN 0x00000100 +#define CAM_CP_EFFECT_SOLAR 0x00000200 +#define CAM_CP_EFFECT_POSTERIZATION 0x00000400 +#define CAM_CP_EFFECT_VINTAGE_WARM 0x00000800 +#define CAM_CP_EFFECT_VINTAGE_COLD 0x00001000 + + +// ISO +#define CAM_CP_ISO_AUTO 0x00000001 +#define CAM_CP_ISO_50 0x00000002 +#define CAM_CP_ISO_100 0x00000004 +#define CAM_CP_ISO_200 0x00000008 +#define CAM_CP_ISO_400 0x00000010 +#define CAM_CP_ISO_800 0x00000020 +#define CAM_CP_ISO_1600 0x00000040 +#define CAM_CP_ISO_3200 0x00000080 + +// FLASH +#define CAM_CP_FLASH_AUTO 0x00000001 +#define CAM_CP_FLASH_ON 0x00000002 +#define CAM_CP_FLASH_OFF 0x00000004 +#define CAM_CP_FLASH_REDEYE 0x00000008 +#define CAM_CP_FLASH_SLOW_SYNC 0x00000010 +#define CAM_CP_FLASH_FRONT_CURTAIN 0x00000020 +#define CAM_CP_FLASH_REAR_CURTAIN 0x00000040 +#define CAM_CP_FLASH_PERMANENT 0x00000080 + +// METERING +#define CAM_CP_METERING_MATRIX 0x00000001 +#define CAM_CP_METERING_SPOT 0x00000002 +#define CAM_CP_METERING_CENTERWEIGHT 0x00000004 + +// SHOT MODE +#define CAM_CP_SHOT_MODE_SINGLE 0x00000001 + +// REC MODE +#define CAM_CP_REC_MODE_NORMAL 0x00000001 +#define CAM_CP_REC_MODE_MMS 0x00000002 +#define CAM_CP_REC_MODE_SLOW_MOTION 0x00000004 +#define CAM_CP_REC_MODE_FAST_MOTION 0x00000008 + +// FOCUS +#define CAM_CP_FOCUS_NONE 0x00000001 +#define CAM_CP_FOCUS_AUTO_FOCUS 0x00000002 +#define CAM_CP_FOCUS_CAF 0x00000004 +#define CAM_CP_FOCUS_FACE_DETECTION 0x00000008 +#define CAM_CP_FOCUS_MACRO 0x00000010 +#define CAM_CP_FOCUS_TOUCH_AF 0x00000020 + + +// FPS +#define CAM_CP_FPS_AUTO 0x00000001 +#define CAM_CP_FPS_8 0x00000002 +#define CAM_CP_FPS_15 0x00000004 +#define CAM_CP_FPS_24 0x00000008 +#define CAM_CP_FPS_25 0x00000010 +#define CAM_CP_FPS_30 0x00000020 +#define CAM_CP_FPS_60 0x00000040 +#define CAM_CP_FPS_120 0x00000080 + +// FUNCTION +#define CAM_CP_FUNC_BURST_SHOT_MODE 0x00000001 +#define CAM_CP_FUNC_SELF_MODE 0x00000002 +#define CAM_CP_FUNC_FLASH_MODE 0x00000004 +#define CAM_CP_FUNC_SHOT_MODE 0x00000008 +#define CAM_CP_FUNC_REC_MODE 0x00000010 +#define CAM_CP_FUNC_SCENE_MODE 0x00000020 +#define CAM_CP_FUNC_EXPOSURE 0x00000040 +#define CAM_CP_FUNC_FOCUS_MODE 0x00000080 +#define CAM_CP_FUNC_EFFECT_MODE 0x00000100 +#define CAM_CP_FUNC_CAM_RESOLUTION 0x00000200 +#define CAM_CP_FUNC_REC_RESOLUTION 0x00000400 +#define CAM_CP_FUNC_WHITE_BALANCE 0x00000800 +#define CAM_CP_FUNC_ISO 0x00001000 +#define CAM_CP_FUNC_METERING 0x00002000 +#define CAM_CP_FUNC_CAM_ANS 0x00004000 +#define CAM_CP_FUNC_REC_ANS 0x00008000 +#define CAM_CP_FUNC_OUTDOOR 0x00010000 +#define CAM_CP_FUNC_AUTO_CONTRAST 0x00020000 +#define CAM_CP_FUNC_CAPTURE_VOICE 0x00040000 +#define CAM_CP_FUNC_GPS 0x00080000 +#define CAM_CP_FUNC_STORAGE 0x00100000 +#define CAM_CP_FUNC_ZOOM 0x00200000 +#define CAM_CP_FUNC_BRIGHTNESS 0x00400000 +#define CAM_CP_FUNC_FPS 0x00800000 +#define CAM_CP_FUNC_SAVE_AS_FLIP 0x01000000 + +#define CAM_CP_FUNC_COUNT 25 +// LCD +#define CAM_CP_LCD_NORMAL 0x00000001 +#define CAM_CP_LCD_WIDE 0x00000002 + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif // _CAM_CAPACITY_TYPE_H_ + + diff --git a/include/cam_config.h b/include/cam_config.h new file mode 100755 index 0000000..23278cc --- /dev/null +++ b/include/cam_config.h @@ -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 +/* +#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 index 0000000..941942d --- /dev/null +++ b/include/cam_continuous_shot.h @@ -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 index 0000000..007663c --- /dev/null +++ b/include/cam_debug.h @@ -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 +#include +#include + +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 +struct mallinfo g_mem_info; +#endif + +#ifdef USE_DLOG_MESSAGE + +#include +#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 +#include + 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 index 0000000..eaacb23 --- /dev/null +++ b/include/cam_device_capacity.h @@ -0,0 +1,51 @@ +/* + * 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_DEVICE_CAPACITY_H_ +#define _CAM_DEVICE_CAPACITY_H_ + +#ifdef _cplusplus +extern "C" { +#endif + +void ResetCaps(); + +void GetCamDevFuncCaps(unsigned int *eType, void *user_data); + +bool GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevWBCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevISOCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDebFpsCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data); +bool GetCamDevZoomCaps(int *min, int *max); +bool GetCamDevEvCaps(int *min, int *max); +bool GetCamDevBrCaps(int *min, int *max); + + +#ifdef _cplusplus +} +#endif + +#endif + + diff --git a/include/cam_error.h b/include/cam_error.h new file mode 100755 index 0000000..cd8ae97 --- /dev/null +++ b/include/cam_error.h @@ -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 +#include + +#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 index 0000000..98657ea --- /dev/null +++ b/include/cam_exif_info.h @@ -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 __CAM_EXIF_INFO_H__ +#define __CAM_EXIF_INFO_H__ + +#include "glib.h" +#include + + + +ExifData* cam_exif_get_exif_from_data(unsigned char *data, unsigned int data_size); +gboolean cam_exif_set_entry(ExifData *in_exif, ExifIfd ifd, ExifTag tag, ExifFormat format, unsigned long components, unsigned char *data); +gboolean cam_exif_get_data_from_exif(unsigned char *out_data, unsigned int out_size, ExifData *in_exif); +gboolean cam_exif_change_thumb_info(unsigned char *exif_raw, unsigned int exif_raw_size, unsigned char *thumb_data + , int thumb_w, int thumb_h, unsigned int thumb_size); +gboolean cam_exif_write_to_jpeg(unsigned char *in_data, unsigned int in_size, unsigned char *exif_data, unsigned int exif_size + ,unsigned char **out_data, unsigned int *out_size); + +#endif + diff --git a/include/cam_face_detection_focus.h b/include/cam_face_detection_focus.h new file mode 100755 index 0000000..96fc581 --- /dev/null +++ b/include/cam_face_detection_focus.h @@ -0,0 +1,70 @@ +/* + * 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_FACE_DETECTION_FOCUS_H_ +#define _CAM_FACE_DETECTION_FOCUS_H_ +#include "cam_property.h" +#include "camera_utils.h" + + +#define MAX_FACE_COUNT 10 +typedef struct _cam_face_info CamFaceInfo; + +struct _cam_face_info { + camera_detected_face_s faces[MAX_FACE_COUNT]; + int count; + +}; + + +/** + * @brief called by preview callback function + * @param[in] preview_frame the camera preview image stream + * @param[in] user_data user_data set for preview callback + * @return void + */ +void cam_face_detection_focus_start_stream(camera_preview_data_s *preview_frame, void *user_data); +/** + * @brief init face deteciton pthread variables + * @return void + */ +gboolean cam_face_detection_focus_init(void); +/** + * @brief delete face deteciton pthread variables + * @return void + */ +gboolean cam_face_detection_focus_finish(void); +/** + * @brief called while face detected + * @param[in] faces camera_detected_face_s array + * @param[in] count face count + * @param[in] user_data user_data set for preview callback + * @return void + */ +void cam_face_detection_focus_face_detected_cb(camera_detected_face_s *faces, int count, void *user_data); +/** + * @brief in face detection mode, set mouse click coordinate for cacluate the faceid by xy + * @param[in] x mouse x when doulbe click + * @param[in] y mouse y when doulbe click + * @return void + */ +void cam_common_set_mouse_double_click_xy(Evas_Coord x, Evas_Coord y); + +void cam_face_detection_reset(); + +#endif /* _CAM_FACE_DETECTION_FOCUS_H_ */ + diff --git a/include/cam_file.h b/include/cam_file.h new file mode 100755 index 0000000..00593ab --- /dev/null +++ b/include/cam_file.h @@ -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 +#include +#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 index 0000000..afe27a8 --- /dev/null +++ b/include/cam_lbs.h @@ -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 + +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 index 0000000..f2f8666 --- /dev/null +++ b/include/cam_long_press.h @@ -0,0 +1,41 @@ +/* + * 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_LONG_PRESS_H_DEF__ +#define __CAM_LONG_PRESS_H_DEF__ + +typedef int (*LONG_PRESS_START_CALLBACK)(void*, int, int); +typedef int (*LONG_PRESS_CANCEL_CALLBACK)(void*, int, int); +int cam_long_press_register(int index, double time, + LONG_PRESS_START_CALLBACK start_func, + LONG_PRESS_CANCEL_CALLBACK end_func, + void *data); +int cam_long_press_unregister(int index); +void cam_long_press_trigger(int index, Evas_Coord x, Evas_Coord y); +void cam_long_press_validate(int index, Evas_Coord x, Evas_Coord y); +void cam_long_press_cancel(int index); +bool cam_get_long_press_running_state(int index); + +enum { + LONG_PRESS_ID_EDIT = 0, + LONG_PRESS_ID_SCROLL, + LONG_PRESS_ID_MAX_NUMS, +}; +#endif /*__CAM_LONG_PRESS_H_DEF__*/ + + diff --git a/include/cam_menu_composer.h b/include/cam_menu_composer.h new file mode 100755 index 0000000..d897dcd --- /dev/null +++ b/include/cam_menu_composer.h @@ -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 index 0000000..694390b --- /dev/null +++ b/include/cam_mm.h @@ -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 +#include +#include +#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 index 0000000..7da6fec --- /dev/null +++ b/include/cam_popup.h @@ -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 +#include + +/* 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 index 0000000..c2ffd35 --- /dev/null +++ b/include/cam_property.h @@ -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 +/*#include */ +#include +#include +#include +#include + + +#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 index 0000000..81de3bd --- /dev/null +++ b/include/cam_rec.h @@ -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 */ +#include +/* #include */ +#include +#include +#include +/*#include */ + +#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 index 0000000..89f11af --- /dev/null +++ b/include/cam_sound.h @@ -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 + +#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 index 0000000..d89411d --- /dev/null +++ b/include/cam_ta.h @@ -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 index 0000000..ffdc4f6 --- /dev/null +++ b/include/cam_typeconverter.h @@ -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 index 0000000..a3d4f94 --- /dev/null +++ b/include/cam_ui_effect_utils.h @@ -0,0 +1,86 @@ +/* + * 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 __H_CAM_UI_EFFECT_UTILS_H__ +#define __H_CAM_UI_EFFECT_UTILS_H__ + +#include "cam.h" +/* +* for thumbnail animation +*/ +struct cam_ui_effect_custom_effect +{ + Evas_Coord x, y; + struct _size + { + Evas_Coord w, h; + } from, to; +}; + +/** + * @brief get @focus object zoom or origin state + * @return Operation result + * @return TRUE: origin state, not zoom; FALSE: zoom state. + */ +gboolean cam_ui_effect_utils_get_zoom_state(); +/** + * @brief set @obj zoom from @from_rate to @to_rate and then go back origin size + * @param[in] obj The object to be set + * @param[in] from_rate start size + * @param[in] to_rate end size + * @param[in] duration effect duration time + * @return Operation result + * @return void + */ +void cam_ui_effect_utils_set_zoom_inout_effect(Evas_Object *obj, float from_rate, float to_rate, double duration); +/** + * @brief set @obj zoom from @from_rate to @to_rate + * @param[in] obj The object to be set + * @param[in] from_rate start size + * @param[in] to_rate end size + * @param[in] duration effect duration time + * @return Operation result + * @return void + */ +void cam_ui_effect_utils_set_zoom_effect(Evas_Object *obj, float from_rate, float to_rate, double duration); + +/** + * @brief set @obj resize at x,y h: fixed value @h; w: from 0 to @w + * @param[in] obj The object to be set + * @param[in] x x coordinate + * @param[in] y y coordinate + * @param[in] w @obj max width + * @param[in] h @obj max height + * @param[in] duration effect duration time + * @return Operation result + * @return void + */ +void cam_ui_effect_utils_set_thumbnail_effect(Evas_Object *obj, + Evas_Coord x, + Evas_Coord y, + Evas_Coord w, + Evas_Coord h, + double duration); +/** + * @brief stop zoom effect transit pointer, created by cam_ui_effect_utils_set_zoom_effect + * @param[in] void + * @return void + */ +void cam_ui_effect_utils_stop_zoom_effect(void); + +#endif /* __H_CAM_UI_EFFECT_UTILS_H__ */ +//end file diff --git a/include/cam_ui_rotate_utils.h b/include/cam_ui_rotate_utils.h new file mode 100755 index 0000000..2c683f9 --- /dev/null +++ b/include/cam_ui_rotate_utils.h @@ -0,0 +1,101 @@ +/* + * 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 __H_CAM_UI_ROTATE_UTILS_H__ +#define __H_CAM_UI_ROTATE_UTILS_H__ + +#include "cam.h" + +struct cam_ui_rotate_obj_params +{ + Evas_Coord x, y;/*start_x, start_y*/ + double degree; + + Evas_Object *obj; +}; + +/** + * @brief set @obj rotate @degree, the @obj left_top coordinate (start_x, start_y) + * @param[in] obj The object to be set + * @param[in] start_x left_top coordinate x, + * @param[in] start_y left_top coordinate y, + * @param[in] degree the rotate angle + * @return Operation result + * @return void + */ +void cam_ui_rotate_utils_map_rotate(Evas_Object *obj, + Evas_Coord start_x, + Evas_Coord start_y, + double degree); +/** + * @brief set @obj rotate from@from_degree to @to_degree, the time is @duration + * @param[in] obj The object to be set + * @param[in] from_degree start angle + * @param[in] to_degree end angle + * @param[in] duration effect duration time + * @param[in] cb callback function, it will be called in the rotation end + * @param[in] data @cb user data. + * @return Operation result + * @return void + */ +void cam_ui_rotate_utils_rotation_effect(Evas_Object *obj, + float from_degree, + float to_degree, + double duration, + void (*cb) (void *data, Elm_Transit *transit), + void *data); +/** + * @brief set @setting popup rotate, @degree, the @obj left_top coordinate (start_x, start_y) + * @param[in] obj The object to be set + * @param[in] start_x left_top coordinate x, + * @param[in] start_y left_top coordinate y, + * @param[in] degree the rotate angle + * @return Operation result + * @return void + */ +void cam_ui_rotate_utils_map_setting_popup_rotate(Evas_Object *obj, + Evas_Coord start_x, + Evas_Coord start_y, + double degree); +/** + * @brief @data appdata, rotate the camera ui icons + * @param[in] data appdata + * @param[in] duration effect duration time + * @return Operation result + * @return void + */ +gboolean cam_ui_rotate_utils_rotate_start(void *data, double duration); +/** + * @brief set @obj, self rotate @degree, using evas_map. + * @param[in] obj The object to be set + * @param[in] degree the rotate angle + * @return Operation result + * @return void + */ +void cam_ui_rotate_utils_map_self_rotate(Evas_Object *obj, + double degree); +/** + * @brief @data appdata, rotate the camera ui:toolbar shortcust icons + * @param[in] data appdata + * @param[in] duration effect duration time + * @return Operation result + * @return void + */ +gboolean cam_ui_rotate_utils_rotate_toolbar_shortcuts(void *data, double duration); + +#endif /* __H_CAM_UI_ROTATE_UTILS_H__ */ +//end file diff --git a/include/cam_voice_command.h b/include/cam_voice_command.h new file mode 100755 index 0000000..5c831b8 --- /dev/null +++ b/include/cam_voice_command.h @@ -0,0 +1,37 @@ +/* + * 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_VOICE_COMMAND_H__ +#define __CAM_VOICE_COMMAND_H__ + +#include "glib.h" + +typedef enum { + CAM_VIOCE_CMD_MIN, + CAM_VOICE_CMD_READY, + CAM_VOICE_CMD_REJECT, + CAM_VOICE_CMD_ERROR, + CAM_VOICE_CMD_MAX +}CamVoiceCmdState; + + +typedef void (*cam_voice_cmd_cb)(CamVoiceCmdState state, void* data); + +gboolean cam_voice_cmd_create(cam_voice_cmd_cb cmd_cb, void *data); +void cam_voice_cmd_destroy(); + +#endif + diff --git a/include/camera_utils.h b/include/camera_utils.h new file mode 100755 index 0000000..98ae2a3 --- /dev/null +++ b/include/camera_utils.h @@ -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 + +#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 index 0000000..e809d0e --- /dev/null +++ b/include/edc-callback/cam_common_edc_callback.h @@ -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 index 0000000..f4c4a60 --- /dev/null +++ b/include/edc-callback/cam_ev_edc_callback.h @@ -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 index 0000000..b9de17b --- /dev/null +++ b/include/edc-callback/cam_indicator_edc_callback.h @@ -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 index 0000000..c30a4d4 --- /dev/null +++ b/include/edc-callback/cam_recording_edc_callback.h @@ -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 index 0000000..b07facc --- /dev/null +++ b/include/edc-callback/cam_toolbar_edc_callback.h @@ -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 index 0000000..4af204b --- /dev/null +++ b/include/edc-callback/cam_zoom_edc_callback.h @@ -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 index 0000000..683ce07 --- /dev/null +++ b/include/edc_image_name.h @@ -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 index 0000000..ef18f14 --- /dev/null +++ b/include/edc_string.h @@ -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 index 0000000..57b7d98 --- /dev/null +++ b/packaging/ug-camera-efl.spec @@ -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 index 0000000..26272d3 --- /dev/null +++ b/po/CMakeLists.txt @@ -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 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 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 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 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 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 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 index 0000000..f315c8a --- /dev/null +++ b/po/de_DE.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 "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 index 0000000..eab0278 --- /dev/null +++ b/po/el_GR.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 "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 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 index 0000000..e4ff940 --- /dev/null +++ b/po/en_PH.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 "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 index 0000000..74c2f22 --- /dev/null +++ b/po/en_US.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 "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 index 0000000..08571a9 --- /dev/null +++ b/po/es_ES.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 "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 index 0000000..b3a428c --- /dev/null +++ b/po/es_MX.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 "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 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 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 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 index 0000000..a8f98af --- /dev/null +++ b/po/fr_CA.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 "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 index 0000000..d2c6e70 --- /dev/null +++ b/po/fr_FR.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 "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 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 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 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 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 index 0000000..683240e --- /dev/null +++ b/po/htm2po.py @@ -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 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 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 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 index 0000000..ae63983 --- /dev/null +++ b/po/it_IT.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 "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 index 0000000..728f7c9 --- /dev/null +++ b/po/ja_JP.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 "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 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 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 index 0000000..b80ebb8 --- /dev/null +++ b/po/ko_KR.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/lt.po b/po/lt.po new file mode 100755 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 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 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 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 index 0000000..7902d0b --- /dev/null +++ b/po/nl_NL.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 "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 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 index 0000000..ca45f04 --- /dev/null +++ b/po/pt_BR.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-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 index 0000000..de0c618 --- /dev/null +++ b/po/pt_PT.po @@ -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 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 index 0000000..3028b93 --- /dev/null +++ b/po/ru_RU.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 "Невозможно запустить камеру\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 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 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 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 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 index 0000000..23d2b9b --- /dev/null +++ b/po/tr_TR.po @@ -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 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 index 0000000..628a88d --- /dev/null +++ b/po/update-po.sh @@ -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 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 index 0000000..890707b --- /dev/null +++ b/po/zh_CN.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 "感光度" + +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 index 0000000..a80c1f7 --- /dev/null +++ b/po/zh_HK.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/zh_SG.po b/po/zh_SG.po new file mode 100755 index 0000000..35e4261 --- /dev/null +++ b/po/zh_SG.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 "通话时\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 index 0000000..90b91e2 --- /dev/null +++ b/po/zh_TW.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/sounds/af_fail.wav b/sounds/af_fail.wav new file mode 100755 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 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 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 index 0000000..55158d3 --- /dev/null +++ b/src/CamDeviceCapacity.cpp @@ -0,0 +1,715 @@ + +/* + * 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 + +#include "CamDeviceCapacity.h" +#include "cam_capacity_type.h" + + +extern "C" { +#include "cam_mm.h" +#include "cam_debug.h" +} + +#define CAM_ATTR_NOT_SUPPORTED (1) +#define CAM_CP_FUNC_UNMARKED (0) +CCamDeviceCapacity* CCamDeviceCapacity::m_pInstance = NULL; + +///////////////////////////////////////////////////////////////////////////// +// Construction/Destruction +///////////////////////////////////////////////////////////////////////////// +CCamDeviceCapacity::CCamDeviceCapacity() +{ + ResetCaps(); +} + +CCamDeviceCapacity::~CCamDeviceCapacity() +{ + Destroy(); +} + +void +CCamDeviceCapacity::ResetCaps() +{ + m_CamRes.bChecked = FALSE; + m_RecRes.bChecked = FALSE; + m_Focus.bChecked = FALSE; + m_Effect.bChecked = FALSE; + m_WB.bChecked = FALSE; + m_Scene.bChecked = FALSE; + m_Metering.bChecked = FALSE; + m_ISO.bChecked = FALSE; + m_Flash.bChecked = FALSE; + m_Fps.bChecked = FALSE; + m_Shot.bChecked = FALSE; + m_Zoom.bChecked = FALSE; + m_Ev.bChecked = FALSE; + m_Br.bChecked = FALSE; + m_RecMode.bChecked = FALSE; + + m_WDR.bChecked = FALSE; + m_AntiShake.bChecked = FALSE; + m_RecAntiShake.bChecked = FALSE; + m_Outdoorvisibility.bChecked = FALSE; + + m_uFuncCaps = 0; + +} + +CCamDeviceCapacity* +CCamDeviceCapacity::GetInstance() +{ + if(m_pInstance == NULL) + m_pInstance = new CCamDeviceCapacity; + return m_pInstance; +} + +void +CCamDeviceCapacity::Destroy() +{ + if(m_pInstance) + { + delete m_pInstance; + m_pInstance = NULL; + } +} + +void +CCamDeviceCapacity::GetCamDevFuncCaps(unsigned int *uCapacity, void *user_data) +{ + unsigned int uSearchCaps = CAM_CP_FUNC_BURST_SHOT_MODE; + unsigned int uCaps = 0; + + int deviceType = 0; + if (!cam_mm_get_video_device(&deviceType)) { + cam_debug(LOG_CAM, "cam_mm_get_video_device() fail"); + *uCapacity = 0; + return; + } + + if (m_uFuncCaps == CAM_CP_FUNC_UNMARKED) { + for(int i = 0; i < CAM_CP_FUNC_COUNT; i++) { + if (IsSupported(uSearchCaps, (CamDeviceType)deviceType, user_data)) + uCaps |= uSearchCaps; + + uSearchCaps *= 2; + cam_debug(LOG_CAM, "i[%d] uSearchCaps [0x%x]", i, uSearchCaps); + } + + m_uFuncCaps = uCaps; + } + + *uCapacity = m_uFuncCaps; +} + + +bool +CCamDeviceCapacity::GetCamDevSceneModeCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Scene.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_SCENE_MODE, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Scene.bSupported = TRUE; + else + m_Scene.bSupported = FALSE; + + m_Scene.bChecked = TRUE; + m_Scene.unCaps = uCaps; + + } + + *uCapacity = m_Scene.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevWBCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_WB.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_WHITE_BALANCE, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_WB.bSupported = TRUE; + else + m_WB.bSupported = FALSE; + + m_WB.bChecked = TRUE; + m_WB.unCaps = uCaps; + + } + + *uCapacity = m_WB.unCaps; + return TRUE; +} + + +bool +CCamDeviceCapacity::GetCamDevEffectCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Effect.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_EFFECT_MODE, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Effect.bSupported = TRUE; + else + m_Effect.bSupported = FALSE; + + m_Effect.bChecked = TRUE; + m_Effect.unCaps = uCaps; + } + + *uCapacity = m_Effect.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevFocusCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Focus.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_FOCUS_MODE, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Focus.bSupported = TRUE; + else + m_Focus.bSupported = FALSE; + + if (cam_mm_is_supported_face_detection()) + uCaps |= CAM_CP_FOCUS_FACE_DETECTION; + + m_Focus.bChecked = TRUE; + m_Focus.unCaps = uCaps; + } + + *uCapacity = m_Focus.unCaps; + return TRUE; +} + + +bool +CCamDeviceCapacity::GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + *uCapacity = 0; + m_Shot.bSupported = FALSE; + m_Shot.bChecked = TRUE; + + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + *uCapacity = 0; +#ifdef CAMERA_MACHINE_I686 + m_RecMode.bSupported = FALSE; + m_RecMode.bChecked = TRUE; + +#else + if (!m_RecMode.bChecked) { + m_RecMode.unCaps = 0; + m_RecMode.unCaps |= CAM_CP_REC_MODE_NORMAL; + m_RecMode.unCaps |= CAM_CP_REC_MODE_MMS; + m_RecMode.unCaps |= CAM_CP_REC_MODE_SLOW_MOTION; + m_RecMode.unCaps |= CAM_CP_REC_MODE_FAST_MOTION; + + m_RecMode.bSupported = TRUE; + m_RecMode.bChecked = TRUE; + } + + *uCapacity = m_RecMode.unCaps; +#endif + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevCamResolutionCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_CamRes.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_CAM_RESOLUTION, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_CamRes.bSupported = TRUE; + else + m_CamRes.bSupported = FALSE; + + m_CamRes.bSupported = TRUE; + m_CamRes.bChecked = TRUE; + m_CamRes.unCaps = uCaps; + } + + *uCapacity = m_CamRes.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevISOCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_ISO.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_ISO, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_ISO.bSupported = TRUE; + else + m_ISO.bSupported = FALSE; + + m_ISO.bChecked = TRUE; + m_ISO.unCaps = uCaps; + } + + *uCapacity = m_ISO.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevMeteringCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Metering.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_METERING, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Metering.bSupported = TRUE; + else + m_Metering.bSupported = FALSE; + + m_Metering.bChecked = TRUE; + m_Metering.unCaps = uCaps; + } + + *uCapacity = m_Metering.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevFlashCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Flash.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_FLASH_MODE, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Flash.bSupported = TRUE; + else + m_Flash.bSupported = FALSE; + + m_Flash.bChecked = TRUE; + m_Flash.unCaps = uCaps; + } + + *uCapacity = m_Flash.unCaps; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevRecResolutionCaps(unsigned int* uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_RecRes.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_REC_RESOLUTION, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_RecRes.bSupported = TRUE; + else + m_RecRes.bSupported = FALSE; + + m_RecRes.bChecked = TRUE; + m_RecRes.unCaps = uCaps; + } + + *uCapacity = m_RecRes.unCaps; + return TRUE; + +} + + +bool +CCamDeviceCapacity::GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data) +{ + cam_retvm_if(uCapacity == NULL, FALSE, "input param is NULL"); + + unsigned int uCaps = 0; + *uCapacity = 0; + + if (!m_Fps.bChecked) { + if (!cam_mm_get_caps_range(CAM_CP_FUNC_FPS, &uCaps, user_data)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if (cam_mm_get_caps_cb_cnt() > CAM_ATTR_NOT_SUPPORTED) + m_Fps.bSupported = TRUE; + else + m_Fps.bSupported = FALSE; + + m_Fps.bChecked = TRUE; + m_Fps.bChecked = TRUE; + m_Fps.unCaps = uCaps; + } + + *uCapacity = m_Fps.unCaps; + return TRUE; +} + + +bool +CCamDeviceCapacity::GetCamDevZoomCaps(int *min, int *max) +{ + cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL"); + + int nMin, nMax = 0; + + if (!m_Zoom.bChecked) { + if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_ZOOM, &nMin, &nMax)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if ((nMin == 0) && (nMax == 0)) + m_Zoom.bSupported = FALSE; + else + m_Zoom.bSupported = TRUE; + + m_Zoom.bChecked = TRUE; + m_Zoom.nMin = nMin; + m_Zoom.nMax = nMax; + } + + *min = m_Zoom.nMin; + *max = m_Zoom.nMax; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevEvCaps(int *min, int *max) +{ + cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL"); + + int nMin, nMax = 0; + + if (!m_Ev.bChecked) { + if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_EXPOSURE, &nMin, &nMax)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if ((nMin == 0) && (nMax == 0)) + m_Ev.bSupported = FALSE; + else + m_Ev.bSupported = TRUE; + + m_Ev.bChecked = TRUE; + m_Ev.nMin = nMin; + m_Ev.nMax = nMax; + } + + *min = m_Ev.nMin; + *max = m_Ev.nMax; + return TRUE; +} + +bool +CCamDeviceCapacity::GetCamDevBrCaps(int *min, int *max) +{ + cam_retvm_if((min == NULL || max == NULL), FALSE, "input parameter is NULL"); + + int nMin, nMax = 0; + + if (!m_Br.bChecked) { + if (!cam_mm_get_caps_minmax(CAM_CP_FUNC_BRIGHTNESS, &nMin, &nMax)) { + cam_debug(LOG_CAM, "cam_mm_get_caps_range() fail"); + return FALSE; + } + + if ((nMin == 0) && (nMax == 0)) + m_Br.bSupported = FALSE; + else + m_Br.bSupported = TRUE; + + m_Br.bChecked = TRUE; + m_Br.nMin = nMin; + m_Br.nMax = nMax; + } + + *min = m_Br.nMin; + *max = m_Br.nMax; + return TRUE; +} + + +// private +bool +CCamDeviceCapacity::IsSupported(unsigned int type, CamDeviceType deviceType, void *user_data) +{ + bool ret = FALSE; + unsigned int uCaps = 0; + int min, max = 0; + + switch(type) { + case CAM_CP_FUNC_FPS: + { + if (GetCamDevFpsCaps(&uCaps, user_data)) + ret = m_Fps.bSupported; + } + break; + case CAM_CP_FUNC_CAM_RESOLUTION: + { + if (GetCamDevCamResolutionCaps(&uCaps, user_data)) + ret = m_CamRes.bSupported; + } + break; + case CAM_CP_FUNC_REC_RESOLUTION: + { + if (GetCamDevRecResolutionCaps(&uCaps, user_data)) + ret = m_RecRes.bSupported; + } + break; + case CAM_CP_FUNC_FLASH_MODE: + { + if (GetCamDevFlashCaps(&uCaps, user_data)) + ret = m_Flash.bSupported; + } + break; + + case CAM_CP_FUNC_SHOT_MODE: + { + if (GetCamDevShotModeCaps(&uCaps, user_data)) + ret = m_Shot.bSupported; + } + break; + + case CAM_CP_FUNC_REC_MODE: + { + if (GetCamDevRecModeCaps(&uCaps, user_data)) { + ret = m_RecMode.bSupported; + DEBUG_TRACE("ret:%d", ret); + } + } + break; + + case CAM_CP_FUNC_SCENE_MODE: + { + if (GetCamDevSceneModeCaps(&uCaps, user_data)) + ret = m_Scene.bSupported; + } + break; + + case CAM_CP_FUNC_FOCUS_MODE: + { + if (GetCamDevFocusCaps(&uCaps, user_data)) + ret = m_Focus.bSupported; + } + break; + + case CAM_CP_FUNC_EFFECT_MODE: + { + if (GetCamDevEffectCaps(&uCaps, user_data)) + ret = m_Effect.bSupported; + } + break; + + case CAM_CP_FUNC_WHITE_BALANCE: + { + if (GetCamDevWBCaps(&uCaps, user_data)) + ret = m_WB.bSupported; + } + break; + + case CAM_CP_FUNC_ISO: + { + if (GetCamDevISOCaps(&uCaps, user_data)) + ret = m_ISO.bSupported; + } + break; + + case CAM_CP_FUNC_METERING: + { + if (GetCamDevMeteringCaps(&uCaps, user_data)) + ret = m_Metering.bSupported; + } + break; + + case CAM_CP_FUNC_OUTDOOR: + { + if (cam_mm_is_supported_outdoor_visibility()) + m_Outdoorvisibility.bSupported = TRUE; + else + m_Outdoorvisibility.bSupported = FALSE; + + ret = m_Outdoorvisibility.bSupported; + } + break; + + case CAM_CP_FUNC_AUTO_CONTRAST: // not supported mmfw + { + #ifdef CAMERA_MACHINE_I686 + ret = FALSE; + #else + if (deviceType == CAM_DEVICE_MEGA) + m_WDR.bSupported = TRUE; + else + m_WDR.bSupported = FALSE; + ret = m_WDR.bSupported; + #endif + } + break; + + case CAM_CP_FUNC_ZOOM: + { + if (GetCamDevZoomCaps(&min, &max)) + ret = m_Zoom.bSupported; + } + break; + + case CAM_CP_FUNC_BRIGHTNESS: + { + if (GetCamDevBrCaps(&min, &max)) + ret = m_Br.bSupported; + } + break; + + case CAM_CP_FUNC_EXPOSURE: + { + if (GetCamDevEvCaps(&min, &max)) + ret = m_Ev.bSupported; + } + break; + + case CAM_CP_FUNC_CAM_ANS: + { + if (cam_mm_is_support_anti_hand_shake()) + ret = TRUE; + } + break; + case CAM_CP_FUNC_REC_ANS: // not supported mmfw + ret = FALSE; + break; + case CAM_CP_FUNC_SELF_MODE: + { + #ifdef CAMERA_MACHINE_I686 + ret = FALSE; + #else + if (cam_mm_is_support_front_camera()) + ret = TRUE; + else + ret = FALSE; + #endif + } + break; + case CAM_CP_FUNC_GPS: + case CAM_CP_FUNC_STORAGE: + { + #ifdef CAMERA_MACHINE_I686 + ret = FALSE; + #else + ret = TRUE; + #endif + } + break; + case CAM_CP_FUNC_BURST_SHOT_MODE: + ret = TRUE; + break; + case CAM_CP_FUNC_CAPTURE_VOICE: + ret = FALSE; + break; + case CAM_CP_FUNC_SAVE_AS_FLIP: + { + ret = FALSE; + } + break; + default: + break; + } + + return ret; +} + diff --git a/src/CamTypeConverter.cpp b/src/CamTypeConverter.cpp new file mode 100755 index 0000000..b403a8a --- /dev/null +++ b/src/CamTypeConverter.cpp @@ -0,0 +1,672 @@ +/* + * 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 "CamTypeConverter.h" +#include "cam_capacity_type.h" + +unsigned int +CCamTypeConverter::CamIsoDevConvertCaps(camera_attr_iso_e iso) +{ + unsigned int ret = 0; + + switch(iso) { + case CAMERA_ATTR_ISO_AUTO: + ret = CAM_CP_ISO_AUTO; + break; + case CAMERA_ATTR_ISO_50: + ret = CAM_CP_ISO_50; + break; + case CAMERA_ATTR_ISO_100: + ret = CAM_CP_ISO_100; + break; + case CAMERA_ATTR_ISO_200: + ret = CAM_CP_ISO_200; + break; + case CAMERA_ATTR_ISO_400: + ret = CAM_CP_ISO_400; + break; + case CAMERA_ATTR_ISO_800: + ret = CAM_CP_ISO_800; + break; + case CAMERA_ATTR_ISO_1600: + ret = CAM_CP_ISO_1600; + break; + case CAMERA_ATTR_ISO_3200: + ret = CAM_CP_ISO_3200; + break; + default: + break; + } + + return ret; + +} + +unsigned int +CCamTypeConverter::CamIsoCamConvertCaps(CamIso iso) +{ + unsigned int ret = 0; + + switch(iso) { + case CAM_ISO_AUTO: + ret = CAM_CP_ISO_AUTO; + break; + case CAM_ISO_50: + ret = CAM_CP_ISO_50; + break; + case CAM_ISO_100: + ret = CAM_CP_ISO_100; + break; + case CAM_ISO_200: + ret = CAM_CP_ISO_200; + break; + case CAM_ISO_400: + ret = CAM_CP_ISO_400; + break; + case CAM_ISO_800: + ret = CAM_CP_ISO_800; + break; + case CAM_ISO_1600: + ret = CAM_CP_ISO_1600; + break; + case CAM_ISO_3200: + ret = CAM_CP_ISO_3200; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamEffectDevConvertCaps(camera_attr_effect_mode_e effect) +{ + unsigned int ret = 0; + + switch(effect){ + case CAMERA_ATTR_EFFECT_NONE: + ret = CAM_CP_EFFECT_NONE; + break; + case CAMERA_ATTR_EFFECT_MONO: + ret = CAM_CP_EFFECT_MONO; + break; + case CAMERA_ATTR_EFFECT_SEPIA: + ret = CAM_CP_EFFECT_SEPIA; + break; + case CAMERA_ATTR_EFFECT_NEGATIVE: + ret = CAM_CP_EFFECT_NEGATIVE; + break; + case CAMERA_ATTR_EFFECT_CARTOON: + ret = CAM_CP_EFFECT_CARTOON; + break; + case CAMERA_ATTR_EFFECT_WASHED: + ret = CAM_CP_EFFECT_WASHED; + break; + case CAMERA_ATTR_EFFECT_SELECTIVE_RED_YELLOW: + ret = CAM_CP_EFFECT_SELECTIVE_RED_YELLOW; + break; + case CAMERA_ATTR_EFFECT_SELECTIVE_BLUE: + ret = CAM_CP_EFFECT_SELECTIVE_BLUE; + break; + case CAMERA_ATTR_EFFECT_SELECTIVE_GREEN: + ret = CAM_CP_EFFECT_SELECTIVE_GREEN; + break; + case CAMERA_ATTR_EFFECT_SOLARIZATION: + ret = CAM_CP_EFFECT_SOLAR; + break; + case CAMERA_ATTR_EFFECT_POSTERIZATION: + ret = CAM_CP_EFFECT_POSTERIZATION; + break; + case CAMERA_ATTR_EFFECT_VINTAGE_WARM: + ret = CAM_CP_EFFECT_VINTAGE_WARM; + break; + case CAMERA_ATTR_EFFECT_VINTAGE_COLD: + ret = CAM_CP_EFFECT_VINTAGE_COLD; + break; + + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamEffectCamConvertCaps(CamSettingsEffects effect) +{ + unsigned int ret = 0; + + switch(effect){ + case CAM_SETTINGS_EFFECTS_NOR: + ret = CAM_CP_EFFECT_NONE; + break; + case CAM_SETTINGS_EFFECTS_MONO: + ret = CAM_CP_EFFECT_MONO; + break; + case CAM_SETTINGS_EFFECTS_SEPIA: + ret = CAM_CP_EFFECT_SEPIA; + break; + case CAM_SETTINGS_EFFECTS_NEGATIVE: + ret = CAM_CP_EFFECT_NEGATIVE; + break; + case CAM_SETTINGS_EFFECTS_CARTOON: + ret = CAM_CP_EFFECT_CARTOON; + break; + case CAM_SETTINGS_EFFECTS_WASHED: + ret = CAM_CP_EFFECT_WASHED; + break; + case CAM_SETTINGS_EFFECTS_SELECTIVE_RED_YELLOW: + ret = CAM_CP_EFFECT_SELECTIVE_RED_YELLOW; + break; + case CAM_SETTINGS_EFFECTS_SELECTIVE_BLUE: + ret = CAM_CP_EFFECT_SELECTIVE_BLUE; + break; + case CAM_SETTINGS_EFFECTS_SELECTIVE_GREEN: + ret = CAM_CP_EFFECT_SELECTIVE_GREEN; + break; + case CAM_SETTINGS_EFFECTS_SOLARIZATION: + ret = CAM_CP_EFFECT_SOLAR; + break; + case CAM_SETTINGS_EFFECTS_POSTERIZATION: + ret = CAM_CP_EFFECT_POSTERIZATION; + break; + case CAM_SETTINGS_EFFECTS_VINTAGE_WARM: + ret = CAM_CP_EFFECT_VINTAGE_WARM; + break; + case CAM_SETTINGS_EFFECTS_VINTAGE_COLD: + ret = CAM_CP_EFFECT_VINTAGE_COLD; + break; + + default: + break; + } + + return ret; +} + + +unsigned int +CCamTypeConverter::CamFpsDevConvertCaps(camera_attr_fps_e fps) +{ + unsigned int ret = 0; + + switch(fps) { + case CAMERA_ATTR_FPS_AUTO: + ret = CAM_CP_FPS_AUTO; + break; + case CAMERA_ATTR_FPS_8: + ret = CAM_CP_FPS_8; + break; + case CAMERA_ATTR_FPS_15: + ret = CAM_CP_FPS_15; + break; + case CAMERA_ATTR_FPS_24: + ret = CAM_CP_FPS_24; + break; + case CAMERA_ATTR_FPS_25: + ret = CAM_CP_FPS_25; + break; + case CAMERA_ATTR_FPS_30: + ret = CAM_CP_FPS_30; + break; + case CAMERA_ATTR_FPS_60: + ret = CAM_CP_FPS_60; + break; + case CAMERA_ATTR_FPS_120: + ret = CAM_CP_FPS_120; + break; + default: + break; + } + + return ret; + +} + +unsigned int +CCamTypeConverter::CamWbDevConvertCaps(camera_attr_whitebalance_e wb) +{ + unsigned int ret = 0; + + switch(wb) { + case CAMERA_ATTR_WHITE_BALANCE_NONE: + break; + case CAMERA_ATTR_WHITE_BALANCE_AUTOMATIC: + ret = CAM_CP_WB_AUTO; + break; + case CAMERA_ATTR_WHITE_BALANCE_DAYLIGHT: + ret = CAM_CP_WB_DAYLIGHT; + break; + case CAMERA_ATTR_WHITE_BALANCE_CLOUDY: + ret = CAM_CP_WB_CLOUDY; + break; + case CAMERA_ATTR_WHITE_BALANCE_FLUORESCENT: + ret = CAM_CP_WB_FLUORESCENT; + break; + case CAMERA_ATTR_WHITE_BALANCE_INCANDESCENT: + ret = CAM_CP_WB_INCANDESCENT; + break; + case CAMERA_ATTR_WHITE_BALANCE_SHADE: + ret = CAM_CP_WB_SHADE; + break; + case CAMERA_ATTR_WHITE_BALANCE_HORIZON: + ret = CAM_CP_WB_HORIZON; + break; + case CAMERA_ATTR_WHITE_BALANCE_FLASH: + ret = CAM_CP_WB_FLASH; + break; + case CAMERA_ATTR_WHITE_BALANCE_CUSTOM: + ret = CAM_CP_WB_CUSTOM; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamWbCamConvertCaps(CamSettingsWB wb) +{ + unsigned int ret = 0; + + switch(wb) { + case CAM_SETTINGS_WB_AWB: + ret = CAM_CP_WB_AUTO; + break; + case CAM_SETTINGS_WB_DAYLIGHT: + ret = CAM_CP_WB_DAYLIGHT; + break; + case CAM_SETTINGS_WB_CLOUDY: + ret = CAM_CP_WB_CLOUDY; + break; + case CAM_SETTINGS_WB_FLUORESCENT: + ret = CAM_CP_WB_FLUORESCENT; + break; + case CAM_SETTINGS_WB_INCANDESCENT: + ret = CAM_CP_WB_INCANDESCENT; + break; + case CAM_SETTINGS_WB_SHADE: + ret = CAM_CP_WB_SHADE; + break; + case CAM_SETTINGS_WB_HORIZON: + ret = CAM_CP_WB_HORIZON; + break; + case CAM_SETTINGS_WB_FLASH: + ret = CAM_CP_WB_FLASH; + break; + case CAM_SETTINGS_WB_CUSTOM: + ret = CAM_CP_WB_CUSTOM; + break; + default: + break; + } + + return ret; +} + + +unsigned int +CCamTypeConverter::CamFocusDevConvertCaps(camera_attr_af_mode_e focus) +{ + unsigned int ret = 0; + + switch(focus) { + case CAMERA_ATTR_AF_NONE: + ret = CAM_CP_FOCUS_NONE; + break; + case CAMERA_ATTR_AF_NORMAL: + ret = CAM_CP_FOCUS_AUTO_FOCUS; + break; + case CAMERA_ATTR_AF_MACRO: + ret = CAM_CP_FOCUS_MACRO; + break; + case CAMERA_ATTR_AF_FULL: + ret = CAM_CP_FOCUS_CAF; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamFocusCamConvertCaps(CamFocusMode focus) +{ + unsigned int ret = 0; + + switch(focus) { + case CAM_FOCUS_AUTO: + ret = CAM_CP_FOCUS_AUTO_FOCUS; + break; + case CAM_FOCUS_MACRO: + ret = CAM_CP_FOCUS_MACRO; + break; + case CAM_FOCUS_FACE: + ret = CAM_CP_FOCUS_FACE_DETECTION; + break; + case CAM_FOCUS_CAF: + ret = CAM_CP_FOCUS_CAF; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamMeteringDevConvertCaps(camera_attr_exposure_mode_e metering) +{ + unsigned int ret = 0; + + switch(metering) { + case CAMERA_ATTR_EXPOSURE_MODE_CENTER: + ret = CAM_CP_METERING_CENTERWEIGHT; + break; + case CAMERA_ATTR_EXPOSURE_MODE_SPOT: + ret = CAM_CP_METERING_SPOT; + break; + case CAMERA_ATTR_EXPOSURE_MODE_ALL: + ret = CAM_CP_METERING_MATRIX; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamMeteringCamConvertCaps(CamMetering type) +{ + unsigned int ret = 0; + + switch(type) { + case CAM_METERING_MATRIX: + ret = CAM_CP_METERING_MATRIX; + break; + case CAM_METERING_CENTER_WEIGHTED: + ret = CAM_CP_METERING_CENTERWEIGHT; + break; + case CAM_METERING_SPOT: + ret = CAM_CP_METERING_SPOT; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamSceneDevConvertCaps(camera_attr_scene_mode_e scene) +{ + unsigned int ret = 0; + + switch(scene) { + case CAMERA_ATTR_SCENE_MODE_NORMAL: + ret = CAM_CP_SCENE_MODE_AUTO; + break; + case CAMERA_ATTR_SCENE_MODE_PORTRAIT: + ret = CAM_CP_SCENE_MODE_PORTRAIT; + break; + case CAMERA_ATTR_SCENE_MODE_LANDSCAPE: + ret = CAM_CP_SCENE_MODE_LANDSCAPE; + break; + case CAMERA_ATTR_SCENE_MODE_SPORTS: + ret = CAM_CP_SCENE_MODE_SPORTS; + break; + case CAMERA_ATTR_SCENE_MODE_PARTY_N_INDOOR: + ret = CAM_CP_SCENE_MODE_PARTY_AND_INDOOR; + break; + case CAMERA_ATTR_SCENE_MODE_BEACH_N_INDOOR: + ret = CAM_CP_SCENE_MODE_BEACH_AND_SNOW; + break; + case CAMERA_ATTR_SCENE_MODE_SUNSET: + ret = CAM_CP_SCENE_MODE_SUNSET; + break; + case CAMERA_ATTR_SCENE_MODE_DUSK_N_DAWN: + ret = CAM_CP_SCENE_MODE_DUSK_AND_DAWN; + break; + case CAMERA_ATTR_SCENE_MODE_FALL_COLOR: + ret = CAM_CP_SCENE_MODE_FALLCOLOR; + break; + case CAMERA_ATTR_SCENE_MODE_NIGHT_SCENE: + ret = CAM_CP_SCENE_MODE_NIGHTSHOT; + break; + case CAMERA_ATTR_SCENE_MODE_FIREWORK: + ret = CAM_CP_SCENE_MODE_FIREWORK; + break; + case CAMERA_ATTR_SCENE_MODE_TEXT: + ret = CAM_CP_SCENE_MODE_TEXT; + break; + case CAMERA_ATTR_SCENE_MODE_CANDLE_LIGHT: + ret = CAM_CP_SCENE_MODE_CANDLE_LIGHT; + break; + case CAMERA_ATTR_SCENE_MODE_BACKLIGHT: + ret = CAM_CP_SCENE_MODE_BACK_LIGHT; + break; + case CAMERA_ATTR_SCENE_MODE_SHOW_WINDOW: + ret = CAM_CP_SCENE_MODE_SHOW_WINDOW; + break; + default: + break; + } + + return ret; +} + + +unsigned int +CCamTypeConverter::CamSceneCamConvertCaps(CamSceneMode scene) +{ + unsigned int ret = 0; + + switch(scene) { + case CAM_SCENE_NONE: + ret = CAM_CP_SCENE_MODE_AUTO; + break; + case CAM_SCENE_PORTRAIT: + ret = CAM_CP_SCENE_MODE_PORTRAIT; + break; + case CAM_SCENE_LANDSCAPE: + ret = CAM_CP_SCENE_MODE_LANDSCAPE; + break; + case CAM_SCENE_SPORTS: + ret = CAM_CP_SCENE_MODE_SPORTS; + break; + case CAM_SCENE_PARTY: + ret = CAM_CP_SCENE_MODE_PARTY_AND_INDOOR; + break; + case CAM_SCENE_BEACHSNOW: + ret = CAM_CP_SCENE_MODE_BEACH_AND_SNOW; + break; + case CAM_SCENE_SUNSET: + ret = CAM_CP_SCENE_MODE_SUNSET; + break; + case CAM_SCENE_DUSKDAWN: + ret = CAM_CP_SCENE_MODE_DUSK_AND_DAWN; + break; + case CAM_SCENE_FALL: + ret = CAM_CP_SCENE_MODE_FALLCOLOR; + break; + case CAM_SCENE_NIGHT: + ret = CAM_CP_SCENE_MODE_NIGHTSHOT; + break; + case CAM_SCENE_FIREWORK: + ret = CAM_CP_SCENE_MODE_FIREWORK; + break; + case CAM_SCENE_TEXT: + ret = CAM_CP_SCENE_MODE_TEXT; + break; + case CAM_SCENE_CANDLELIGHT: + ret = CAM_CP_SCENE_MODE_CANDLE_LIGHT; + break; + case CAM_SCENE_BACKLIGHT: + ret = CAM_CP_SCENE_MODE_BACK_LIGHT; + break; + case CAM_SCENE_SHOW_WINDOW: + ret = CAM_CP_SCENE_MODE_SHOW_WINDOW; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamFlashDevConvertCaps(camera_attr_flash_mode_e flash) +{ + unsigned int ret = 0; + + switch(flash) { + case CAMERA_ATTR_FLASH_MODE_OFF: + ret = CAM_CP_FLASH_OFF; + break; + case CAMERA_ATTR_FLASH_MODE_ON: + ret = CAM_CP_FLASH_ON; + break; + case CAMERA_ATTR_FLASH_MODE_AUTO: + ret = CAM_CP_FLASH_AUTO; + break; + case CAMERA_ATTR_FLASH_MODE_REDEYE_REDUCTION: + ret = CAM_CP_FLASH_REDEYE; + break; + case CAMERA_ATTR_FLASH_MODE_SLOW_SYNC: + ret = CAM_CP_FLASH_SLOW_SYNC; + break; + case CAMERA_ATTR_FLASH_MODE_FRONT_CURTAIN: + ret = CAM_CP_FLASH_FRONT_CURTAIN; + break; + case CAMERA_ATTR_FLASH_MODE_REAR_CURTAIN: + ret = CAM_CP_FLASH_REAR_CURTAIN; + break; + case CAMERA_ATTR_FLASH_MODE_PERMANENT: + ret = CAM_CP_FLASH_PERMANENT; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamFlashCamConvertCaps(CamFlashMode flash) +{ + unsigned int ret = 0; + + switch(flash) { + case CAM_FLASH_OFF: + ret = CAM_CP_FLASH_OFF; + break; + case CAM_FLASH_ON: + ret = CAM_CP_FLASH_ON; + break; + case CAM_FLASH_AUTO: + ret = CAM_CP_FLASH_AUTO; + break; + case CAM_FLASH_MOVIE_ON: + ret = CAM_CP_FLASH_PERMANENT; + break; + default: + break; + } + + return ret; +} + +unsigned int +CCamTypeConverter::CamResolutionCamConvertCaps(unsigned int res) +{ + unsigned int ret = 0; + + switch(res) { + case CAM_RESOLUTION_3264x2448: + ret = CAM_CP_SIZE_3264X2448; + break; + case CAM_RESOLUTION_3264x2176: + ret = CAM_CP_SIZE_3264X2176; + break; + case CAM_RESOLUTION_3264x1960: + ret = CAM_CP_SIZE_3264X1960; + break; + case CAM_RESOLUTION_3264x1836: + ret = CAM_CP_SIZE_3264X1836; + break; + case CAM_RESOLUTION_2560x1920: + ret = CAM_CP_SIZE_2560X1920; + break; + case CAM_RESOLUTION_2560x1536: + ret = CAM_CP_SIZE_2560X1536; + break; + case CAM_RESOLUTION_2560x1440: + ret = CAM_CP_SIZE_2560X1440; + break; + case CAM_RESOLUTION_2048x1536: + ret = CAM_CP_SIZE_2048X1536; + break; + case CAM_RESOLUTION_2048x1152: + ret = CAM_CP_SIZE_2048X1152; + break; + case CAM_RESOLUTION_1920x1080: + ret = CAM_CP_SIZE_1920X1080; + break; + case CAM_RESOLUTION_1600x1200: + ret = CAM_CP_SIZE_1600X1200; + break; + case CAM_RESOLUTION_1392x1392: + ret = CAM_CP_SIZE_1392X1392; + break; + case CAM_RESOLUTION_1280x960: + ret = CAM_CP_SIZE_1280X960; + break; + case CAM_RESOLUTION_1280x720: + ret = CAM_CP_SIZE_1280X720; + break; + case CAM_RESOLUTION_SVGA: + ret = CAM_CP_SIZE_800X600; + break; + case CAM_RESOLUTION_WVGA: + ret = CAM_CP_SIZE_800X480; + break; + case CAM_RESOLUTION_WVGA2: + ret = CAM_CP_SIZE_720X480; + break; + case CAM_RESOLUTION_VGA: + ret = CAM_CP_SIZE_640X480; + break; + case CAM_RESOLUTION_WQVGA: + ret = CAM_CP_SIZE_400X240; + break; + case CAM_RESOLUTION_QVGA: + ret = CAM_CP_SIZE_320X240; + break; + case CAM_RESOLUTION_QCIF: + ret = CAM_CP_SIZE_176X144; + break; + default: + break; + } + + return ret; +} + + diff --git a/src/cam.c b/src/cam.c new file mode 100755 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 +#include +#include +#include +#include +#include +#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 index 0000000..f20517c --- /dev/null +++ b/src/cam_animation.c @@ -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 index 0000000..a8f8161 --- /dev/null +++ b/src/cam_app.c @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 +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", _(""), + msg, _("")); + + 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 index 0000000..c929864 --- /dev/null +++ b/src/cam_config.c @@ -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 +#include +#include +#include + +/* +#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 /* */ + 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 /* */ + 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 /* */ + 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 /* */ + 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 index 0000000..9056983 --- /dev/null +++ b/src/cam_continuous_shot.c @@ -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 index 0000000..6ec53fa --- /dev/null +++ b/src/cam_debug.c @@ -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 +#include +#include +/* #include */ + +#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 index 0000000..6bbced2 --- /dev/null +++ b/src/cam_device_capacity.cpp @@ -0,0 +1,108 @@ +/* + * 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 "CamDeviceCapacity.h" + +extern "C" { + +void ResetCaps() +{ + CCamDeviceCapacity::GetInstance()->ResetCaps(); +} + + +void GetCamDevFuncCaps(unsigned int *eType, void *user_data) +{ + CCamDeviceCapacity::GetInstance()->GetCamDevFuncCaps(eType, user_data); +} + +bool GetCamDevCamResolutionCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevCamResolutionCaps(uCapacity, user_data); +} + + bool GetCamDevRecResolutionCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevRecResolutionCaps(uCapacity, user_data); +} + +bool GetCamDevFocusCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevFocusCaps(uCapacity, user_data); +} + + bool GetCamDevEffectCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevEffectCaps(uCapacity, user_data); +} + +bool GetCamDevWBCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevWBCaps(uCapacity, user_data); +} + +bool GetCamDevSceneModeCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevSceneModeCaps(uCapacity, user_data); +} + +bool GetCamDevMeteringCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevMeteringCaps(uCapacity, user_data); +} + + bool GetCamDevISOCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevISOCaps(uCapacity, user_data); +} + + bool GetCamDevFlashCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevFlashCaps(uCapacity, user_data); +} + + bool GetCamDevFpsCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevFpsCaps(uCapacity, user_data); +} + +bool GetCamDevShotModeCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevShotModeCaps(uCapacity, user_data); +} + +bool GetCamDevRecModeCaps(unsigned int *uCapacity, void *user_data) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevRecModeCaps(uCapacity, user_data); +} + +bool GetCamDevZoomCaps(int *min, int *max) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevZoomCaps(min, max); +} + + bool GetCamDevEvCaps(int *min, int *max) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevEvCaps(min, max); +} + +bool GetCamDevBrCaps(int *min, int *max) +{ + return CCamDeviceCapacity::GetInstance()->GetCamDevBrCaps(min, max); +} + +} + diff --git a/src/cam_exif_info.c b/src/cam_exif_info.c new file mode 100755 index 0000000..ebad409 --- /dev/null +++ b/src/cam_exif_info.c @@ -0,0 +1,264 @@ +/* + * 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 "cam_exif_info.h" +#include +#include + + + +//#include + +static void _set_uint16 (int is_motorola, void * out, unsigned short in) +{ + if (is_motorola) { + ((unsigned char *)out)[0] = in & 0x00ff; + ((unsigned char *)out)[1] = in >> 8; + } else { + ((unsigned char *)out)[0] = in >> 8; + ((unsigned char *)out)[1] = in & 0x00ff; + } +} + + +ExifData* cam_exif_get_exif_from_data(unsigned char *data, unsigned int data_size) +{ + ExifData *exif = NULL; + ExifLoader *loader = NULL; + unsigned char size[2]; + unsigned int i; + + loader = exif_loader_new(); + + if (loader != NULL) { + size[0] = (unsigned char) (data_size); + size[1] = (unsigned char) (data_size >> 8); + exif_loader_write (loader, size, 2); + + for (i = 0; i < data_size && exif_loader_write (loader, data + i, 1); i++); + + exif = exif_loader_get_data (loader); + if (exif == NULL) + cam_critical(LOG_CAM, "exif_loader_get_data() fail"); + + exif_loader_unref (loader); + + } else + cam_critical(LOG_CAM, "exif_loader_new() fail"); + + return exif; +} + +gboolean cam_exif_set_entry(ExifData *in_exif, ExifIfd ifd, ExifTag tag, ExifFormat format, unsigned long components, unsigned char *data) +{ + ExifData *exif = (ExifData *)in_exif; + ExifEntry *entry = NULL; + + if (in_exif == NULL || format <= 0 || components <= 0 || data == NULL) { + cam_critical(LOG_CAM, "invalid input!! (exif:%p format:%d component=%lu data:%p)", in_exif, format, components, data); + return FALSE; + } + + exif_content_remove_entry(exif->ifd[ifd], exif_content_get_entry(exif->ifd[ifd], tag)); + + entry = exif_entry_new(); + if (entry == NULL) { + cam_critical(LOG_CAM, "exif_entry_new() return NULL"); + return FALSE; + } + + exif_entry_initialize(entry, tag); + + entry->tag = tag; + entry->format = format; + entry->components = components; + + if (entry->size == 0) { + entry->data = NULL; + entry->data = malloc(exif_format_get_size(format) * entry->components); + if (!entry->data) { + exif_entry_unref(entry); + cam_critical(LOG_CAM, "entry->data malloc fail"); + return FALSE; + } + + if (format == EXIF_FORMAT_ASCII) { + memset(entry->data, '\0', exif_format_get_size(format) * entry->components); + } + } + + entry->size = exif_format_get_size(format) * entry->components; + memcpy(entry->data,data,entry->size); + exif_content_add_entry(exif->ifd[ifd], entry); + exif_entry_unref(entry); + + return TRUE; + + +} + +gboolean cam_exif_get_data_from_exif(unsigned char *out_data, unsigned int out_size, ExifData *in_exif) +{ + unsigned char *exif_raw = NULL; + unsigned int size = 0; + + if (in_exif == NULL) { + cam_critical(LOG_CAM, "in_exif is NULL"); + return FALSE; + } + + cam_debug(LOG_CAM, "exif->ifd:%p", in_exif->ifd); + + exif_data_save_data(in_exif, &exif_raw, &size); + + if (exif_raw == NULL) { + cam_critical(LOG_CAM, "exif_data_save_data() is fail"); + return FALSE; + } + + if (out_data) { + free (out_data); + out_data = NULL; + out_size = 0; + } + + out_data = exif_raw; + out_size = size; + + return TRUE; + +} + +gboolean cam_exif_change_thumb_info(unsigned char *exif_raw, unsigned int exif_raw_size, unsigned char *thumb_data + , int thumb_w, int thumb_h, unsigned int thumb_size) +{ + ExifData *exif = NULL; + static ExifLong elong[10]; + + unsigned char *p_compressed = NULL; + int cntl = 0; + + exif = cam_exif_get_exif_from_data(exif_raw, exif_raw_size); + exif->data = thumb_data; + exif->size = thumb_size; + + // set thumbnail data + p_compressed = malloc(sizeof(ExifShort)); + if (p_compressed != NULL) { + exif_set_short(p_compressed, exif_data_get_byte_order(exif), 6); + + if (!cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_COMPRESSION, EXIF_FORMAT_SHORT, 1, p_compressed)) { + cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_COMPRESSION) fail"); + goto exit; + } + } else { + cam_critical(LOG_CAM, "p_compressed is NULL"); + goto exit; + } + + // set thumbnail size + exif_set_long ((unsigned char *)&elong[cntl], exif_data_get_byte_order(exif), thumb_w); + if( !cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_IMAGE_WIDTH, EXIF_FORMAT_LONG, 1, (unsigned char*)&elong[cntl++])) { + cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_IMAGE_WIDTH) fail"); + goto exit; + } + exif_set_long ((unsigned char *)&elong[cntl], exif_data_get_byte_order(exif), thumb_h); + if (!cam_exif_set_entry(exif, EXIF_IFD_1, EXIF_TAG_IMAGE_LENGTH, EXIF_FORMAT_LONG, 1, (unsigned char*)&elong[cntl++])) { + cam_critical(LOG_CAM, "cam_exif_set_entry(tag:EXIF_TAG_IMAGE_LENGTH) fail"); + goto exit; + } + + cam_debug(LOG_CAM, "exif:%p exif_size:%d", exif, exif->size); + + if (!cam_exif_get_data_from_exif (exif_raw, exif_raw_size, exif)) { + cam_critical(LOG_CAM, "cam_exif_get_data_from_exif() fail"); + goto exit; + } + + exif->data = NULL; + exif->size = 0; + exif_data_unref (exif); + + if(p_compressed != NULL) + free(p_compressed); + p_compressed = NULL; + + return TRUE; + + exit : + if(p_compressed != NULL) + free(p_compressed); + p_compressed = NULL; + + return FALSE; + +} + +gboolean cam_exif_write_to_jpeg(unsigned char *in_data, unsigned int in_size, unsigned char *exif_data, unsigned int exif_size + ,unsigned char **out_data, unsigned int *out_size) +{ + unsigned char *data = NULL; + int data_size = 0; + unsigned short head[2] = {0,}; + unsigned short head_len = 0; + + data_size = 2 + 2 + 2 + exif_size + (in_size - 2); + + data = (unsigned char*)malloc(sizeof(unsigned char)*data_size); + if (!data) { + cam_critical(LOG_SYS, "alloc fail"); + goto exit; + } + + _set_uint16(0, &head[0], 0xffd8); + _set_uint16(0, &head[1], 0xffe1); + _set_uint16(0, &head_len, (unsigned short)(exif_size + 2)); + + + if (head[0] == 0 || head[1] == 0 || head_len == 0) { + cam_critical(LOG_SYS, "set header fail"); + goto exit; + } + + // Complete JPEG+EXIF // + // SOI marker // + memcpy(data, &head[0], 2); + + //APP1 marker + memcpy(data + 2, &head[1], 2); + //length of APP1 + memcpy(data + 2 + 2, &head_len, 2); + //EXIF + memcpy(data + 2 + 2 + 2, exif_data, exif_size); + //IMAGE + memcpy(data + 2 + 2 + 2 + exif_size, in_data + 2, in_size - 2); + + if (data != NULL) { + *out_data = data; + *out_size = data_size; + } + + return TRUE; + + exit: + if (data) + free(data); + data = NULL; + return FALSE; + +} diff --git a/src/cam_face_detection_focus.c b/src/cam_face_detection_focus.c new file mode 100755 index 0000000..1b1665d --- /dev/null +++ b/src/cam_face_detection_focus.c @@ -0,0 +1,223 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include "cam.h" +#include "cam_error.h" +#include "cam_debug.h" +#include "cam_mm.h" +#include "cam_face_detection_focus.h" + +static pthread_mutex_t face_detecton_mutex = PTHREAD_MUTEX_INITIALIZER; +static gboolean is_face_zoom = FALSE; /*note: the flag: now is in face zoom state or not*/ +static CamFaceInfo face_info; + + +#define RECT_CORRECTION_VALUE (20) + + +/*note:check point whether in rect, @correction_value for enhance/weaken the condition*/ +static gboolean __check_point_whether_in_rect(int point_x, + int point_y, + CamVideoRectangle rect, + int correction_value) +{ + + if (point_x > (rect.x - correction_value) + && point_y > (rect.y - correction_value) + && point_x < (rect.w + rect.x + correction_value) + && point_y < (rect.h + rect.y + correction_value)) { + DEBUG_TRACE("point is in rect"); + return TRUE; + } + return FALSE; +} + +void cam_face_detection_focus_start_stream(camera_preview_data_s *preview_frame, void *user_data) +{ + + cam_retm_if(user_data == NULL, "data is null"); + cam_retm_if(preview_frame == NULL, "data is null"); + struct appdata *ad = (struct appdata *)user_data; + CamAppData *camapp = ad->camapp_handle; + cam_retm_if(camapp == NULL, "camapp is null"); + + if (cam_app_is_skip_video_stream()) { + return; + } + if (cam_utils_set_guide_rect_color(ad) ==FALSE) { + DEBUG_TRACE("cam_utils_set_guide_rect_color failed"); + } + void *frame = NULL; + switch (preview_frame->num_of_planes) { + case 1: + frame = preview_frame->data.single_plane.yuv; + break; + case 2: + /*TODO: now do not support two planes*/ + return; + case 3: + /*TODO: now do not support three planes*/ + return; + default: + return; + } + pthread_mutex_lock(&face_detecton_mutex); + int i; + for(i = 0; i < face_info.count; i++ ) { + + if(i == 0){ + camapp->guide_rect_color = camapp->guide_rect_green; + }else{ + camapp->guide_rect_color = camapp->guide_rect_white; + } + + cam_utils_draw_guide_rectangle(ad, + frame, + face_info.faces[i].x, + face_info.faces[i].y, + face_info.faces[i].width, + face_info.faces[i].height); + + } + pthread_mutex_unlock(&face_detecton_mutex); + return ; + +} + +gboolean cam_face_detection_focus_init() +{ + int err = 0; + err = pthread_mutex_init(&(face_detecton_mutex), NULL); + if (err != 0) { + cam_critical(LOG_CAM, "Create face detection mutex failed"); + return FALSE; + } + return TRUE; +} + +gboolean cam_face_detection_focus_finish() +{ + pthread_mutex_destroy(&face_detecton_mutex); + return TRUE; +} + + +/*note: in face detection focus mode, when face deteced , callback will be called*/ +void cam_face_detection_focus_face_detected_cb(camera_detected_face_s *faces, int count, void *user_data) +{ + pthread_mutex_lock(&face_detecton_mutex); + + if(count > MAX_FACE_COUNT) + count = MAX_FACE_COUNT; + + int i ; + for(i = 0; i < count; i++ ) { + + face_info.faces[i].height = faces->height; + face_info.faces[i].id = faces->id; + face_info.faces[i].score = faces->score; + face_info.faces[i].width = faces->width; + face_info.faces[i].x = faces->x; + face_info.faces[i].y = faces->y; + faces++; + } + face_info.count = count; + pthread_mutex_unlock(&face_detecton_mutex); + + return; +} + +void cam_common_set_mouse_double_click_xy(Evas_Coord x, Evas_Coord y) +{ + 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 is NULL"); + + if (is_face_zoom) { + + cam_critical(LOG_CAM, "cancel face zoom"); + if (cam_mm_camera_cancel_face_zoom()) + is_face_zoom = FALSE; + return; + } + + pthread_mutex_lock(&face_detecton_mutex); + + if(face_info.count < 1 ) + { + cam_debug(LOG_CAM, "not detected face"); + pthread_mutex_unlock(&face_detecton_mutex); + return; + } + + cam_debug(LOG_CAM, "x = %d, y = %d", x, y); + + /*calculate*/ + int i; + for(i=0; izoom_mode != camapp->zoom_min)) { + if (cam_mm_camera_cancel_face_zoom()){ + is_face_zoom = FALSE; + camapp->zoom_mode = ZOOM_DEFAULT; + } + } else { + if (cam_mm_set_camera_face_zoom(face_info.faces[i].id)) { + is_face_zoom = TRUE; + } + } + }else{ + cam_debug(LOG_CAM, "not matcing"); + } + } + pthread_mutex_unlock(&face_detecton_mutex); + + +} +void cam_face_detection_reset() +{ + face_info.count = 0; +} + +//end file diff --git a/src/cam_file.c b/src/cam_file.c new file mode 100755 index 0000000..5f965a0 --- /dev/null +++ b/src/cam_file.c @@ -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 +#include +#include "cam_file.h" +#include "cam_error.h" +#include "cam_debug.h" +#include "cam_ta.h" + +#include +#include +#include +#include +#include + +#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 index 0000000..453fd94 --- /dev/null +++ b/src/cam_lbs.c @@ -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 +#include +#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, ×tamp); + 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 index 0000000..efdb0ec --- /dev/null +++ b/src/cam_long_press.c @@ -0,0 +1,162 @@ +/* + * 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 +#include +#include +#include "cam.h" +#include "cam_long_press.h" + +typedef struct cb_item { + LONG_PRESS_START_CALLBACK start_func; + LONG_PRESS_CANCEL_CALLBACK cancel_func; + void *data; + + Evas_Coord x; + Evas_Coord y; + + Ecore_Timer *hold_timer; + double time; + + bool runing; +}long_press_timer_t; + +static long_press_timer_t g_timer[LONG_PRESS_ID_MAX_NUMS]; + +bool cam_get_long_press_running_state(int index) +{ + if (index >=LONG_PRESS_ID_MAX_NUMS || index < 0) { + return FALSE; + } + return g_timer[index].runing; +} +static Eina_Bool _timer_cb(void *data) +{ + if(NULL == data) { + return FALSE; + } + + long_press_timer_t *item = (long_press_timer_t*)data; + + item->hold_timer = NULL; + if (item->start_func) { + item->start_func(item->data, item->x, item->y); + item->runing = TRUE; + } + return ECORE_CALLBACK_CANCEL; +} + +int cam_long_press_register(int index, double time, + LONG_PRESS_START_CALLBACK start_func, + LONG_PRESS_CANCEL_CALLBACK end_func, + void *data) +{ + if(index >= LONG_PRESS_ID_MAX_NUMS) + return EXIT_FAILURE; + + if(g_timer[index].hold_timer != NULL) { + DEBUG_TRACE("Already register! \n"); + return EXIT_SUCCESS; + } + + g_timer[index].start_func = start_func; + g_timer[index].cancel_func = end_func; + g_timer[index].data = data; + g_timer[index].runing = FALSE; + g_timer[index].time = time; + + return EXIT_SUCCESS; +} + +int cam_long_press_unregister(int index) +{ + if(index >= LONG_PRESS_ID_MAX_NUMS) + return EXIT_FAILURE; + + if (g_timer[index].hold_timer) { + ecore_timer_del(g_timer[index].hold_timer); + g_timer[index].hold_timer = NULL; + } + + return EXIT_SUCCESS; +} + +void cam_long_press_trigger(int index, Evas_Coord x, Evas_Coord y) +{ + if(index >= LONG_PRESS_ID_MAX_NUMS) + return; + + if (g_timer[index].hold_timer) { + return; + } + + g_timer[index].hold_timer = ecore_timer_add(g_timer[index].time, _timer_cb, &g_timer[index]); + if (!g_timer[index].hold_timer) { + DEBUG_TRACE("Failed to trigger the hold timer\n"); + } + + /*Update valid region*/ + g_timer[index].x = x; + g_timer[index].y = y; + g_timer[index].runing = FALSE; +} + +void cam_long_press_validate(int index, Evas_Coord x, Evas_Coord y) +{ + if(index >= LONG_PRESS_ID_MAX_NUMS) + return; + + int dx; + int dy; + + if (!g_timer[index].hold_timer) { + return; + } + + dx = (g_timer[index].x - x); + dx *= dx; + + dy = (g_timer[index].y - y); + dy *= dy; + + /*TODO:this condision is too strict*/ + if ((dx + dy) > ((elm_config_finger_size_get() / 2) * (elm_config_finger_size_get() / 2))) { + DEBUG_TRACE("validate failed, del timer\n"); + ecore_timer_del(g_timer[index].hold_timer); + g_timer[index].hold_timer = NULL; + } + +} + +void cam_long_press_cancel(int index) +{ + if(index >= LONG_PRESS_ID_MAX_NUMS) + return; + + if (g_timer[index].hold_timer) { + ecore_timer_del(g_timer[index].hold_timer); + g_timer[index].hold_timer = NULL; + } + g_timer[index].runing = FALSE; + if (g_timer[index].cancel_func) { + g_timer[index].cancel_func(g_timer[index].data, g_timer[index].x, g_timer[index].y); + } +} + + diff --git a/src/cam_menu_composer.c b/src/cam_menu_composer.c new file mode 100755 index 0000000..ae3045c --- /dev/null +++ b/src/cam_menu_composer.c @@ -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 +#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, ¬i_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 index 0000000..5d799ad --- /dev/null +++ b/src/cam_mm.c @@ -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 +#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 index 0000000..17cf9e6 --- /dev/null +++ b/src/cam_popup.c @@ -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), "%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 index 0000000..6a58ecb --- /dev/null +++ b/src/cam_rec.c @@ -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 +#include +#include +#include +#include + +#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 index 0000000..6cb88c9 --- /dev/null +++ b/src/cam_sound.c @@ -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 +#include +#include +#include +#include +#include +#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 index 0000000..fc6851a --- /dev/null +++ b/src/cam_ta.c @@ -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 +#include +#include +#include +#include /* time, ctime */ +#include /* gettimeofday */ +#include +#include +#include +#include + +#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 index 0000000..49102c7 --- /dev/null +++ b/src/cam_typeconverter.cpp @@ -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 index 0000000..f817810 --- /dev/null +++ b/src/cam_ui_effect_utils.c @@ -0,0 +1,199 @@ +/* + * 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_ui_effect_utils.h" +static gboolean __focus_zoom_origin_state = TRUE; +static Elm_Transit *zoom_transit_effect = NULL; + +gboolean cam_ui_effect_utils_get_zoom_state() +{ + return __focus_zoom_origin_state; +} + +static void __zoom_effect_transit_del_cb(void *data, Elm_Transit *transit) +{ + DEBUG_TRACE("TODO: set default transit callback process"); + zoom_transit_effect = NULL; +} + +/* +* note: it is for cam_ui_effect_utils_set_zoom_effect +* and now: there will be always one zoom effect running for +* cam_ui_effect_utils_set_zoom_effect at same time. +*/ + +Elm_Transit * cam_ui_effect_utils_get_zoom_effect() +{ + return zoom_transit_effect; +} + +void cam_ui_effect_utils_stop_zoom_effect() +{ + if (zoom_transit_effect) { + elm_transit_del(zoom_transit_effect); + zoom_transit_effect = NULL; + } +} + +void cam_ui_effect_utils_set_zoom_effect(Evas_Object *obj, float from_rate, float to_rate, double duration) +{ + Evas_Object *layout = obj; + + if (layout == NULL) + return; + /*Zoom in/out to scale to_rate/from_rate.*/ + if (zoom_transit_effect) { + elm_transit_del(zoom_transit_effect); + zoom_transit_effect = NULL; + } + zoom_transit_effect = elm_transit_add(); + if (zoom_transit_effect == NULL) + return; + if (to_rate < from_rate) + __focus_zoom_origin_state = TRUE; + else + __focus_zoom_origin_state = FALSE; + elm_transit_object_add(zoom_transit_effect, layout); + elm_transit_effect_zoom_add(zoom_transit_effect, from_rate, to_rate); + elm_transit_duration_set(zoom_transit_effect, duration); + elm_transit_objects_final_state_keep_set(zoom_transit_effect, EINA_TRUE); + elm_transit_del_cb_set(zoom_transit_effect, __zoom_effect_transit_del_cb, NULL); + elm_transit_go(zoom_transit_effect); + +} + +void cam_ui_effect_utils_set_zoom_inout_effect(Evas_Object *obj, float from_rate, float to_rate, double duration) +{ + Evas_Object *layout = obj; + + if (layout == NULL) + return; + /*Zoom out to scale */ + Elm_Transit *transit = elm_transit_add(); + elm_transit_object_add(transit, layout); + elm_transit_effect_zoom_add(transit, from_rate, to_rate); + elm_transit_duration_set(transit, duration); + + /*Zoom in to be original size.*/ + Elm_Transit *transit2 = elm_transit_add(); + elm_transit_object_add(transit2, layout); + elm_transit_effect_zoom_add(transit2, to_rate, from_rate); + elm_transit_duration_set(transit2, duration); + + elm_transit_chain_transit_add(transit, transit2); + elm_transit_go(transit); + +} + + +/*for thumnail animation start*/ +/*note: init custom effect memory*/ +static Elm_Transit_Effect * __cam_ui_effect_custom_context_new(Evas_Coord from_w, + Evas_Coord from_h, + Evas_Coord to_w, + Evas_Coord to_h + ) +{ + struct cam_ui_effect_custom_effect *custom_effect = calloc( 1, sizeof( struct cam_ui_effect_custom_effect ) ); + if (!custom_effect) return NULL; + + custom_effect->from.w = from_w; + custom_effect->from.h = from_h; + custom_effect->to.w = to_w - from_w; + custom_effect->to.h = to_h - from_h; + return custom_effect; +} + +/*note: free custom effect memory*/ +static void __cam_ui_effect_custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit) +{ + struct cam_ui_effect_custom_effect *custom_effect = effect; + free(custom_effect); + custom_effect = NULL; +} + +/*note: implement the effect solution, you could write new effect, by change these function*/ +static void __cam_ui_effect_custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress) +{ + if (!effect) return; + + Evas_Coord w, h; + Evas_Object *obj; + const Eina_List *elist; + + struct cam_ui_effect_custom_effect *custom_effect = (struct cam_ui_effect_custom_effect *) effect; + const Eina_List *objs = elm_transit_objects_get(transit); + + if (progress < 0.5) { + h = custom_effect->from.h + (custom_effect->to.h * progress * 2); + w = custom_effect->from.w; + } else { + h = custom_effect->from.h + custom_effect->to.h; + w = custom_effect->from.w + (custom_effect->to.w * (progress - 0.5) * 2); + } + EINA_LIST_FOREACH(objs, elist, obj) { + if (obj) { + evas_object_resize(obj, w, h); + } + } + +} + +/*note: when transit effect end, before transit del, this fuction will be called*/ +static void __cam_ui_effect_utils_transit_del_cb(void *data, Elm_Transit *transit) +{ + Evas_Object *obj = (Evas_Object *)data; + DEBUG_TRACE(""); + if (obj) { + DEBUG_TRACE(""); + struct appdata *ad = (struct appdata *)cam_appdata_get(); + if (!ad) + return; + if (!ad->toolbar.quickview_item.edje) { + DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image); + DEL_EVAS_OBJECT(obj); + return; + } + DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image); + ad->toolbar.quickview_item.thumbnail_image = obj; + elm_object_part_content_set(ad->toolbar.quickview_item.edje, + "thumbnail", ad->toolbar.quickview_item.thumbnail_image); + } +} + +void cam_ui_effect_utils_set_thumbnail_effect(Evas_Object *obj, + Evas_Coord x, + Evas_Coord y, + Evas_Coord w, + Evas_Coord h, + double duration) +{ + Evas_Object *layout = obj; + Elm_Transit_Effect *effect_context = __cam_ui_effect_custom_context_new(0, h, w, h); + + Elm_Transit *transit = elm_transit_add(); + elm_transit_object_add(transit, layout); + elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR); + elm_transit_effect_add(transit, __cam_ui_effect_custom_op, effect_context, __cam_ui_effect_custom_context_free); + + elm_transit_objects_final_state_keep_set(transit, TRUE); + elm_transit_duration_set(transit, duration); + elm_transit_del_cb_set(transit, __cam_ui_effect_utils_transit_del_cb, (void *)obj); + elm_transit_go(transit); +} +/*for thumbnail antimation end*/ +//end file diff --git a/src/cam_ui_rotate_utils.c b/src/cam_ui_rotate_utils.c new file mode 100755 index 0000000..d37ea4e --- /dev/null +++ b/src/cam_ui_rotate_utils.c @@ -0,0 +1,589 @@ +/* + * 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_ui_rotate_utils.h" +#include "cam_toolbar_edc_callback.h" +#include "cam_mm.h" +static void __cam_ui_rotate_utils_rotation_del_cb(void *data, Elm_Transit *transit) +{ + DEBUG_TRACE("rotate transition will be deleted"); +} + +static Ecore_Idler *__cam_ui_rotate_utils_idler = NULL; +static Eina_Bool __cam_ui_rotate_utils_obj_rotation_idler_cb(void *data) +{ + if (__cam_ui_rotate_utils_idler) { + ecore_idler_del(__cam_ui_rotate_utils_idler); + __cam_ui_rotate_utils_idler = NULL; + } + + struct cam_ui_rotate_obj_params *rotate_obj_params = (struct cam_ui_rotate_obj_params *)data; + if (!rotate_obj_params) + return ECORE_CALLBACK_CANCEL; + if (!rotate_obj_params->obj) + return ECORE_CALLBACK_CANCEL; + + struct appdata *ad = (struct appdata *)cam_appdata_get(); + cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL"); + + Evas_Object *obj = rotate_obj_params->obj; + + ////TODO:add a function, to unset popup + Evas_Coord x, y, w, h; + evas_object_geometry_get(obj, &x, &y, &w, &h); + static int repeat_count = 0; + if (w == 0 || h == 0) { + if (repeat_count++ == 10) { + repeat_count = 0; + return ECORE_CALLBACK_CANCEL; + } + DEBUG_TRACE("repeat_count = %d", repeat_count); + return ECORE_CALLBACK_RENEW; + } + + elm_object_part_content_unset(ad->toolbar_edje, "camera/setting/popup/area/toolbar"); + DEBUG_TRACE("rotate_obj_params->x = %d", rotate_obj_params->x); + DEBUG_TRACE("rotate_obj_params->y = %d", rotate_obj_params->y); + cam_ui_rotate_utils_map_rotate(obj, rotate_obj_params->x, rotate_obj_params->y, rotate_obj_params->degree); + free(rotate_obj_params); + rotate_obj_params = NULL; + + edje_object_signal_emit(_EDJ(obj), "set.popup.show", "prog"); + evas_object_raise(obj); + evas_object_show(obj); + + return ECORE_CALLBACK_CANCEL; +} + +void cam_ui_rotate_utils_map_setting_popup_rotate(Evas_Object *obj, + Evas_Coord start_x, + Evas_Coord start_y, + double degree) +{ + DEBUG_TRACE("degree = %f", degree); + struct cam_ui_rotate_obj_params *rotate_obj_params = calloc( 1, sizeof( struct cam_ui_rotate_obj_params ) ); + if (!rotate_obj_params) return; + rotate_obj_params->obj = obj; + rotate_obj_params->x = start_x; + rotate_obj_params->y = start_y; + rotate_obj_params->degree = degree; + DEBUG_TRACE("rotate_obj_params->x = %d", start_x); + DEBUG_TRACE("rotate_obj_params->y = %d", start_y); + DEBUG_TRACE("rotate_obj_params->x = %d", start_x); + DEBUG_TRACE("rotate_obj_params->degree = %f", degree); + if (__cam_ui_rotate_utils_idler) { + ecore_idler_del(__cam_ui_rotate_utils_idler); + __cam_ui_rotate_utils_idler = NULL; + + } + __cam_ui_rotate_utils_idler = ecore_idler_add(__cam_ui_rotate_utils_obj_rotation_idler_cb, (void *)rotate_obj_params); +} + +void cam_ui_rotate_utils_map_rotate(Evas_Object *obj, + Evas_Coord start_x, + Evas_Coord start_y, + double degree) +{ + if (!obj) return; + Evas_Map *map = NULL; + map = evas_map_new(4); + if (!map) return; + + Evas_Coord x, y, w, h; + float half_w, half_h; + + evas_map_util_points_populate_from_object_full(map, obj, 0); + evas_object_geometry_get(obj, &x, &y, &w, &h); + DEBUG_TRACE("obj x, y, w, h:%d %d %d %d", x, y, w, h); + DEBUG_TRACE("start x, y, w, h: %d %d %d %d", start_x, start_y, w, h); + half_w = (float)w * 0.5; + half_h = (float)h * 0.5; + evas_map_point_coord_set(map, 0, start_x, start_y, 0); + evas_map_point_coord_set(map, 1, start_x + w , start_y, 0); + evas_map_point_coord_set(map, 2, start_x + w , start_y + h, 0); + evas_map_point_coord_set(map, 3, start_x, start_y + h, 0); + evas_map_util_rotate(map, degree, start_x + half_w, start_y + half_h); + /*note:foc 2000, just default*/ + evas_map_util_3d_perspective(map, start_x + half_w, start_y + half_h, 0, 2000); + evas_object_map_enable_set(obj, EINA_TRUE); + evas_object_map_set(obj, map); + + evas_map_free(map); + map = NULL; + +} + +void cam_ui_rotate_utils_map_self_rotate(Evas_Object *obj, + double degree) +{ + if (!obj) return; + Evas_Map *map = NULL; + map = evas_map_new(4); + if (!map) return; + + Evas_Coord x, y, w, h; + float half_w, half_h; + + evas_map_util_points_populate_from_object_full(map, obj, 0); + evas_object_geometry_get(obj, &x, &y, &w, &h); + DEBUG_TRACE("obj x, y, w, h:%d %d %d %d", x, y, w, h); + half_w = (float)w * 0.5; + half_h = (float)h * 0.5; + evas_map_point_coord_set(map, 0, x, y, 0); + evas_map_point_coord_set(map, 1, x + w , y, 0); + evas_map_point_coord_set(map, 2, x + w , y + h, 0); + evas_map_point_coord_set(map, 3, x, y + h, 0); + evas_map_util_rotate(map, degree, x + half_w, y + half_h); + /*note:foc 2000, just default*/ + evas_map_util_3d_perspective(map, x + half_w, y + half_h, 0, 2000); + evas_object_map_enable_set(obj, EINA_TRUE); + evas_object_map_set(obj, map); + + evas_map_free(map); + map = NULL; + +} + + +void cam_ui_rotate_utils_rotation_effect(Evas_Object *obj, + float from_degree, + float to_degree, + double duration, + void (*cb) (void *data, Elm_Transit *transit), + void *data) +{ + DEBUG_TRACE(); + Evas_Object *nf = obj; + Elm_Transit *transit = elm_transit_add(); + /*360 degree rotation effect with clock wise direction.*/ + elm_transit_object_add(transit, nf); + elm_transit_effect_rotation_add(transit, from_degree, to_degree); + elm_transit_duration_set(transit, duration); + if (cb) + elm_transit_del_cb_set(transit, cb, data); + else + elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_rotation_del_cb, data); + elm_transit_objects_final_state_keep_set(transit, TRUE); + elm_transit_go(transit); +} + +/*note: below is for icon rotate*/ + +static gboolean cam_ui_rotate_utils_get_clockwise_state(struct appdata *ad) +{ + gboolean IsClockwise = FALSE; + + if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) { + if (ad->rot_current > ad->rot_previous){ + IsClockwise = TRUE; + } else { + IsClockwise = FALSE; + } + } else { + if(ad->rot_current > ad->rot_previous) { + IsClockwise = FALSE; + } else { + IsClockwise = TRUE; + } + } + return IsClockwise; + +} +void cam_ui_rotate_utils_get_rotation_degree(void* data, int* from_degree, int* to_degree) +{ + struct appdata *ad = (struct appdata *)data; + cam_retm_if(ad == NULL, "appdata is NULL"); + + int tmp_to_degree = 0; + int tmp_from_degree = 0; + gboolean IsClockwise = FALSE; + + if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) { + if (ad->rot_current > ad->rot_previous){ + IsClockwise = TRUE; + } else { + IsClockwise = FALSE; + } + } else { + if(ad->rot_current > ad->rot_previous) { + IsClockwise = FALSE; + } else { + IsClockwise = TRUE; + } + } + + switch(ad->rot_previous) { + case APP_DEVICE_ORIENTATION_270: + if(ad->rot_current == APP_DEVICE_ORIENTATION_0) { + tmp_from_degree = 360; + } else { + tmp_from_degree = 0; + } + break; + case APP_DEVICE_ORIENTATION_0: + tmp_from_degree = 270; + break; + case APP_DEVICE_ORIENTATION_90: + tmp_from_degree = 180; + break; + case APP_DEVICE_ORIENTATION_180: + tmp_from_degree = 90; + break; + default: + break; + } + + switch(ad->rot_current) { + case APP_DEVICE_ORIENTATION_270: + if( ad->rot_previous == APP_DEVICE_ORIENTATION_0) { + tmp_to_degree = 360; + } else { + tmp_to_degree = 0; + } + break; + case APP_DEVICE_ORIENTATION_0: + tmp_to_degree = 270; + break; + case APP_DEVICE_ORIENTATION_90: + tmp_to_degree = 180; + break; + case APP_DEVICE_ORIENTATION_180: + tmp_to_degree = 90; + break; + default: + break; + } + + *from_degree = tmp_from_degree; + *to_degree = tmp_to_degree; + + cam_debug(LOG_UI, "from_degree : %d, to_degree : %d ", *from_degree, *to_degree ); +} + + +void cam_ui_rotate_utils_get_rotation_degree_map(void* data, int* degree) +{ + struct appdata *ad = (struct appdata *)data; + cam_retm_if(ad == NULL, "appdata is NULL"); + + int tmp_degree = 0; + + gboolean IsClockwise = FALSE; + + if (ad->rot_previous == APP_DEVICE_ORIENTATION_270) { + if (ad->rot_current > ad->rot_previous) { + IsClockwise = TRUE; + } else { + IsClockwise = FALSE; + } + } else { + if (ad->rot_current > ad->rot_previous) { + IsClockwise = FALSE; + } else { + IsClockwise = TRUE; + } + } + + switch(ad->rot_current) { + case APP_DEVICE_ORIENTATION_0: + tmp_degree = 270; + break; + case APP_DEVICE_ORIENTATION_90: + tmp_degree = 90; + break; + case APP_DEVICE_ORIENTATION_180: + tmp_degree = 180; + break; + case APP_DEVICE_ORIENTATION_270: + tmp_degree = 0; + break; + default: + break; + } + + *degree = tmp_degree; + + cam_debug(LOG_UI, "degree : %d", *degree ); + +} + +static void __cam_ui_rotate_utils_focus_coordate_rotate(struct appdata *ad) +{ + /*TODO: for animator, we just rotate when popup create*/ + cam_retm_if(ad == NULL, "appdata is NULL"); + + int af_start_x, af_start_y; + af_start_x = af_start_y = 0; + + int x_w, y_h; + x_w = y_h = 0; + if (ad->angle == 90 + || ad->angle == 270) { + x_w = 1280 * elm_config_scale_get(); + y_h = 720 * elm_config_scale_get(); + } else if (ad->angle == 0 + || ad->angle == 180) { + x_w = 720 * elm_config_scale_get(); + y_h = 1280 * elm_config_scale_get(); + } else { + DEBUG_TRACE("%d", ad->angle_pre); + x_w = 1280 * elm_config_scale_get(); + y_h = 720 * elm_config_scale_get(); + } + + switch (ad->rotate_angle) { + case 0: + af_start_x = ad->af_start_x; + af_start_y = ad->af_start_y; + break; + case 90:/*un-clockwise*/ + af_start_x = ad->af_start_y; + af_start_y = y_h - ad->af_start_x; + if (ad->angle == 0 || ad->angle == 180) { + af_start_y -= ad->camera_focus_w; + } else { + af_start_y -= ad->camera_focus_h; + } + break; + case -90: + af_start_x = x_w - ad->af_start_y; + af_start_y = ad->af_start_x; + if (ad->angle == 0 || ad->angle == 180) { + af_start_x -= ad->camera_focus_h; + } else { + af_start_x -= ad->camera_focus_w; + } + break; + case 180: + case -180: + af_start_x = x_w - ad->af_start_x; + af_start_y = y_h - ad->af_start_y; + if (ad->angle == 0 || ad->angle == 180) { + af_start_x -= ad->camera_focus_h; + af_start_y -= ad->camera_focus_w; + } else { + af_start_x -= ad->camera_focus_w; + af_start_y -= ad->camera_focus_h; + } + break; + default: + DEBUG_TRACE("%d", ad->rotate_angle); + } + + ad->af_start_x = af_start_x; + ad->af_start_y = af_start_y; + +} + +static void __cam_ui_rotate_utils_after_rotate_cb(void *data, Elm_Transit *transit) +{ + + struct appdata *ad = (struct appdata *)data; + cam_retm_if(ad == NULL, "appdata is NULL"); + + __cam_ui_rotate_utils_focus_coordate_rotate(ad); + ad->angle_pre = ad->angle;/*must called after __cam_ui_roate_utils_focus_coordate_rotate*/ + cam_app_screen_rotate(ad); + /*cam_screen_rotate(ad);*/ +} + +static void __cam_ui_rotate_utils_after_shortcuts_rotate_cb(void *data, Elm_Transit *transit) +{ + + struct appdata *ad = (struct appdata *)data; + cam_retm_if(ad == NULL, "appdata is NULL"); + cam_retm_if(ad->toolbar_edje == NULL, "appdata is 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"); + +} + +gboolean cam_ui_rotate_utils_rotate_start(void *data, double duration) +{ + struct appdata *ad = (struct appdata *)data; + cam_retvm_if(ad == NULL, FALSE, "appdata is NULL"); + + if (ad->toolbar_setting_popup) { + ad->show_setting_popup_after_rotate = TRUE; + cam_toolbar_setting_popup_destroy(ad); + } + + if (ad->setting_ctxpopup) { + cam_toolbar_setting_popup_destroy(ad); + } + + if (ad->edit_shortcuts_popup) { + ad->show_edit_shortcuts_popup_after_rotate = TRUE; + toolbar_destroy_shortcuts_popup(ad); + } + + cam_debug(LOG_UI, "duration : %d", duration); + + ad->is_rotating = TRUE; + Elm_Transit* transit= elm_transit_add(); + + int from_degree = 0; + int to_degree = 0; + + 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 (icon == NULL) { + cam_debug(LOG_UI, "toolbar_0_icon is null" ); + } else { + elm_transit_object_add(transit, icon); + } + } + +#if 0 /*TODO: block temporary, good solution should be consider*/ + if (ad->indicator_edje) { + elm_transit_object_add(transit, ad->indicator_edje); + } + +#endif + + if (ad->focus_edje) { + elm_transit_object_add(transit, ad->focus_edje); + } + if (ad->timer_icon_edje) { + elm_transit_object_add(transit, ad->timer_icon_edje); + } + if (ad->capturebtn_edje) { + elm_transit_object_add(transit, ad->capturebtn_edje); + } + if (ad->shutterbtn_camera_icon) { + elm_transit_object_add(transit, ad->shutterbtn_camera_icon); + } + if (ad->recordingbtn) { + elm_transit_object_add(transit, ad->recordingbtn); + } + if (ad->recording_stop_btn) { + elm_transit_object_add(transit, ad->recording_stop_btn); + } + if (ad->toolbar.quickview_item.edje) { + elm_transit_object_add(transit, ad->toolbar.quickview_item.edje); + } + if (ad->backbtn) { + elm_transit_object_add(transit, ad->backbtn); + } + if (ad->caf_button) { + elm_transit_object_add(transit, ad->caf_button); + } + +/* + if (ad->recording_edje + && cam_mm_get_state() == RECORDER_STATE_RECORDING) + elm_transit_object_add(transit, ad->recording_edje);*/ + cam_ui_rotate_utils_get_rotation_degree(ad, &from_degree, &to_degree); + from_degree = ad->angle_pre; + to_degree = ad->angle; + +#if 0 + if ((from_degree == 0 && to_degree == 90) + || (from_degree == 90 && to_degree == 180) + || (from_degree == 180 && to_degree == 270) + || (from_degree == 270 && to_degree == 0)) { + from_degree = 0; + to_degree = -90; + DEBUG_TRACE("CLOCKWISE"); + } else if ((from_degree == 90 && to_degree == 0) + || (from_degree == 180 && to_degree == 90) + || (from_degree == 270 && to_degree == 180) + || (from_degree == 0 && to_degree == 270)) { + from_degree = 0; + to_degree = 90; + DEBUG_TRACE("UN-CLOCKWISE"); + } +#else + DEBUG_TRACE("from_degree->to_degree %d->%d", from_degree, to_degree); + + if ((to_degree - from_degree) == 270) { + from_degree = 0; + to_degree = 90; + ad->rotate_angle = 90; + } else if ((to_degree - from_degree) == -270) { + from_degree = 0; + to_degree = -90; + ad->rotate_angle = -90; + } else { + to_degree = (to_degree - from_degree) *(-1); + from_degree = 0; + ad->rotate_angle = to_degree; + } + DEBUG_TRACE("from_degree->to_degree %d->%d", from_degree, to_degree); +#endif + cam_debug(LOG_UI, "ad->angle : %d, ad->angle_pre : %d ", ad->angle, ad->angle_pre ); + gboolean is_clockwise = cam_ui_rotate_utils_get_clockwise_state(ad); + cam_debug(LOG_UI, "is_clockwise : %d, ", is_clockwise ); + elm_transit_effect_rotation_add(transit, from_degree, to_degree); + elm_transit_duration_set(transit, duration); + elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_after_rotate_cb, data); + elm_transit_objects_final_state_keep_set(transit, TRUE); + elm_transit_go(transit); + + cam_debug(LOG_UI, "real_from_degree : %d, real_to_degree : %d ", from_degree, to_degree ); + /*ad->angle_pre = ad->angle;*/ + return FALSE; + +} + +gboolean cam_ui_rotate_utils_rotate_toolbar_shortcuts(void *data, double duration) +{ + struct appdata *ad = (struct appdata *)data; + cam_retvm_if(ad == NULL, FALSE, "appdata is NULL"); + + cam_debug(LOG_UI, "duration : %d", duration); + + Elm_Transit* transit= elm_transit_add(); + + int from_degree = 0; + int to_degree = 0; + + + 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 (icon == NULL) { + cam_debug(LOG_UI, "toolbar_0_icon is null" ); + } else { + elm_transit_object_add(transit, icon); + } + } + + cam_ui_rotate_utils_get_rotation_degree(ad, &from_degree, &to_degree); + + elm_transit_effect_rotation_add(transit, from_degree, to_degree); + elm_transit_duration_set(transit, duration); + elm_transit_del_cb_set(transit, __cam_ui_rotate_utils_after_shortcuts_rotate_cb, data); + elm_transit_objects_final_state_keep_set(transit, TRUE); + elm_transit_go(transit); + + cam_debug(LOG_UI, "real_from_degree : %d, real_to_degree : %d ", from_degree, to_degree ); + return FALSE; + +} + + +//end file diff --git a/src/cam_voice_command.c b/src/cam_voice_command.c new file mode 100755 index 0000000..eb8491f --- /dev/null +++ b/src/cam_voice_command.c @@ -0,0 +1,139 @@ +/* + * 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_voice_command.h" +#include "cam_debug.h" + +// voice control module is not setup. +#ifdef ENABLE_VOICE_CONTROL +#include + +static vc_bargein_h voice_cmd_h = NULL; +static cam_voice_cmd_cb g_cmd_cb; + +static void __init_cb(vc_bargein_h vc, void *user_data); +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); +static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data); +static void __start_voice_cmd(void *user_data); + +static void __init_cb(vc_bargein_h vc, void *user_data) +{ + + cam_retm_if(user_data == NULL, "user_data is NULL"); + + if (vc == NULL) { + cam_debug(LOG_CAM, "voice handle init fail"); + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + } + + __start_voice_cmd(user_data); + + return; +} + +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) +{ + if (voice_cmd_h == NULL) { + cam_debug(LOG_CAM, "voice_cmd_h is NULL"); + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + } + + if (app_type == VC_BARGEIN_APP_TYPE_CAMERA && action_type == VC_BARGEIN_CAMERA_ACTION_CAPTURE) { + switch(event) { + case VC_BARGEIN_RESULT_EVENT_SUCCESS: + { + g_cmd_cb(CAM_VOICE_CMD_READY, user_data); + } + break; + case VC_BARGEIN_RESULT_EVENT_REJECTED: + { + g_cmd_cb(CAM_VOICE_CMD_REJECT, user_data); + } + break; + case VC_BARGEIN_RESULT_EVENT_ERROR: + default: + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + return; + } + } + else + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + + return; +} + +static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data) +{ + cam_debug(LOG_CAM, "error is [%d]", reason); + g_cmd_cb(CAM_VOICE_CMD_READY, user_data); + return; +} + +static void __start_voice_cmd(void *user_data) +{ + if (voice_cmd_h == NULL) { + cam_debug(LOG_CAM, "voice_cmd_h is NULL"); + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + } + + if (vc_bargein_start(voice_cmd_h, VC_BARGEIN_LANGUAGE_KO_KR, VC_BARGEIN_APP_TYPE_CAMERA) != VC_BARGEIN_ERROR_NONE) { + cam_debug(LOG_CAM, "vc_bargein_start() fail"); + g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data); + } + return; +} + +#endif + +gboolean cam_voice_cmd_create(cam_voice_cmd_cb cmd_cb, void *user_data) +{ +#ifdef ENABLE_VOICE_CONTROL + + cam_retvm_if(user_data == NULL, FALSE, "user_data is NULL"); + if (voice_cmd_h) { + vc_bargein_cancel(voice_cmd_h); + vc_bargein_destroy(voice_cmd_h); + voice_cmd_h = NULL; + } + + g_cmd_cb = cmd_cb; + + if (vc_bargein_create(&voice_cmd_h, (vc_bargein_initialized_cb)__init_cb, + (vc_bargein_result_cb)__result_cb, (vc_bargein_error_cb)__error_cb, user_data) != VC_BARGEIN_ERROR_NONE) { + cam_debug(LOG_CAM, "vc_bargein_create() fail"); + return FALSE; + } +#endif + + return TRUE; +} + +void cam_voice_cmd_destroy() +{ +#ifdef ENABLE_VOICE_CONTROL + if (voice_cmd_h == NULL) { + cam_debug(LOG_CAM, "voice_cmd_h is already delete"); + return; + } + + vc_bargein_cancel(voice_cmd_h); + vc_bargein_destroy(voice_cmd_h); + voice_cmd_h = NULL; +#endif + return; +} + diff --git a/src/camera_utils.c b/src/camera_utils.c new file mode 100755 index 0000000..6dbc292 --- /dev/null +++ b/src/camera_utils.c @@ -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 +#include +#include +#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 index 0000000..07235bd --- /dev/null +++ b/src/edc-callback/cam_common_edc_callback.c @@ -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 +#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 index 0000000..1f76c1e --- /dev/null +++ b/src/edc-callback/cam_ev_edc_callback.c @@ -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 index 0000000..a79b75e --- /dev/null +++ b/src/edc-callback/cam_indicator_edc_callback.c @@ -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 +#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 index 0000000..76b92d8 --- /dev/null +++ b/src/edc-callback/cam_recording_edc_callback.c @@ -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 +#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 index 0000000..94d585d --- /dev/null +++ b/src/edc-callback/cam_toolbar_edc_callback.c @@ -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 +#include +/* +#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", _(""), + dgettext(PACKAGE, "IDS_CAM_POP_RESET_SETTINGS_Q"), _("")); + + 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 index 0000000..410876f --- /dev/null +++ b/src/edc-callback/cam_zoom_edc_callback.c @@ -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 index 0000000..8051632 --- /dev/null +++ b/ug-camera-efl.manifest @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ug-camera-efl.png b/ug-camera-efl.png new file mode 100755 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 index 0000000..d391ca2 --- /dev/null +++ b/ug-camera-efl.xml @@ -0,0 +1,70 @@ + + + + Namjin Kim + Sora Hyun + Hyunho Seo + Camera UI Gadget + + + ug-camera-efl.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ug.camera-efl.include b/ug.camera-efl.include new file mode 100755 index 0000000..7511392 --- /dev/null +++ b/ug.camera-efl.include @@ -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 -- cgit v1.2.3