2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include "camera_utils.h"
24 #include "edc_string.h"
25 #include "edc_image_name.h"
27 #include "cam_config.h"
29 #include "cam_toolbar_edc_callback.h"
30 #include "cam_common_edc_callback.h"
31 #include "cam_indicator_edc_callback.h"
32 #include "cam_long_press.h"
33 #include "cam_zoom_edc_callback.h"
34 #include "cam_ev_edc_callback.h"
35 #include "cam_ui_effect_utils.h"
36 #include "cam_menu_composer.h"
37 #include "cam_device_capacity.h"
38 #include "cam_voice_command.h"
39 #include "cam_face_detection_focus.h"
44 #define SHUTTER_LONG_TAP_TIME 0.5 /*latency time of AF function*/
45 #define CAM_SHOTCUTS_NUMS 22
47 static int setting_gl_x = 0; /*mouse in setting popup coordinate: x*/
48 static int setting_gl_y = 0; /*mouse in setting popup coordinate: y*/
49 static Elm_Genlist_Item_Class itc;
50 static Elm_Genlist_Item_Class sub_itc;
52 static Evas_Coord shortcuts_canvas_prev_x;
53 static Evas_Coord shortcuts_canvas_prev_y;
54 static Eina_List *shortcuts_ele_list = NULL;
55 static pthread_mutex_t edit_shortcuts_move_mutex = PTHREAD_MUTEX_INITIALIZER;
56 static gboolean show_caf_button = FALSE;
58 #define POPUP_WIDTH 350
59 #define WB_POPUP_HEIGHT 478
60 #define EFFECT_MODE_POPUP_NORMAL_HEIGHT 382
61 #define FOCUS_POPUP_CAM_HEIGHT 309
62 #define FLASH_POPUP_CAM_HEIGHT 338
63 #define FLASH_POPUP_REC_HEIGHT 338
64 #define REC_MODE_POPUP_HEIGHT 309
65 #define SHOT_MODE_POPUP_NORMAL_HEIGHT 382
66 #define SHOT_MODE_POPUP_EXTERNAL_HEIGHT 309
67 #define MORE_POPUP_HEIGHT 500
68 #define METERING_POPUP_HIGHT 309
69 #define ISO_POPUP_HEIGHT 561
70 #define POPUP_HEIGHT 561
71 #define RESOLUTION_POPUP_CAM_HEIGHT (561)
72 #define RESOLUTION_POPUP_REC_HEIGHT (561)
73 #define TIMER_POPUP_CAM_HEIGHT 382
75 #define SETTING_POPUP_X (114)
76 #define SETTING_POPUP_Y (55)
77 #define VER_SETTING_POPUP_X SETTING_POPUP_Y
78 #define VER_SETTING_POPUP_Y SETTING_POPUP_X
79 #define SHORTCUTS_PART_ARRAY_MAX_LEN (16)
81 #define OPTION_POPUP_X 107
82 #define OPTION_POPUP_Y 613
83 #define SHOT_MODE_POPUP 203
85 #define TIMER_POPUP 472
87 #define RESOLUTION_POPUP 610
89 #define METERING_POPUP 743
91 #define MORE_POPUP 1067
93 #define SETTING_HOR_CTX_POPUP_X 554
94 #define SETTING_VER_CTX_POPUP_X 152
95 #define SCENE_MODE_POPUP_WIDTH 400
97 #define SUB_MENU_POPUP_WIDTH 502
98 #define SUB_MENU_POPUP_HEIGHT 580
100 #define SETTING_POPUP_WIDTH 550
101 #define SETTING_POPUP_HEIGHT 661
103 #define SHOT_GUIDE_POPUP_WIDTH 600
104 #define SHOT_GUIDE_POPUP_HEIGHT 72
106 #define EDIT_SHOTCUTS_CONTIAIN_CORRECT_W 10
107 #define EDIT_SHOTCUTS_CONTIAIN_CORRECT_H 10
110 static Shortcuts_List_Prop edit_shortcuts_prop_array[CAM_EDIT_SHORTCUTS_INDEX_MAX]
113 {CAM_EDIT_SHORTCUTS_INDEX_0, PROP_SHORTCUTS_PART_INDEX_0},
114 {CAM_EDIT_SHORTCUTS_INDEX_1, PROP_SHORTCUTS_PART_INDEX_1},
115 {CAM_EDIT_SHORTCUTS_INDEX_2, PROP_SHORTCUTS_PART_INDEX_2},
116 {CAM_EDIT_SHORTCUTS_INDEX_3, PROP_SHORTCUTS_PART_INDEX_3},
118 {CAM_EDIT_SHORTCUTS_INDEX_4, PROP_SHORTCUTS_PART_INDEX_4},
119 {CAM_EDIT_SHORTCUTS_INDEX_5, PROP_SHORTCUTS_PART_INDEX_5},
120 {CAM_EDIT_SHORTCUTS_INDEX_6, PROP_SHORTCUTS_PART_INDEX_6},
121 {CAM_EDIT_SHORTCUTS_INDEX_7, PROP_SHORTCUTS_PART_INDEX_7},
123 {CAM_EDIT_SHORTCUTS_INDEX_8, PROP_SHORTCUTS_PART_INDEX_8},
124 {CAM_EDIT_SHORTCUTS_INDEX_9, PROP_SHORTCUTS_PART_INDEX_9},
125 {CAM_EDIT_SHORTCUTS_INDEX_10, PROP_SHORTCUTS_PART_INDEX_10},
126 {CAM_EDIT_SHORTCUTS_INDEX_11, PROP_SHORTCUTS_PART_INDEX_11},
128 {CAM_EDIT_SHORTCUTS_INDEX_12, PROP_SHORTCUTS_PART_INDEX_12},
129 {CAM_EDIT_SHORTCUTS_INDEX_13, PROP_SHORTCUTS_PART_INDEX_13},
130 {CAM_EDIT_SHORTCUTS_INDEX_14, PROP_SHORTCUTS_PART_INDEX_14},
131 {CAM_EDIT_SHORTCUTS_INDEX_15, PROP_SHORTCUTS_PART_INDEX_15},
133 {CAM_EDIT_SHORTCUTS_INDEX_16, PROP_SHORTCUTS_PART_INDEX_16},
134 {CAM_EDIT_SHORTCUTS_INDEX_17, PROP_SHORTCUTS_PART_INDEX_17},
135 {CAM_EDIT_SHORTCUTS_INDEX_18, PROP_SHORTCUTS_PART_INDEX_18},
136 {CAM_EDIT_SHORTCUTS_INDEX_19, PROP_SHORTCUTS_PART_INDEX_19},
139 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
140 char **file_path, char **text, Evas_Object_Event_Cb *func);
141 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon);
143 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
144 void create_menubar_shortcuts_mouse_event(struct appdata *ad);
145 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
146 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no);
147 int toolbar_create_shortcuts_popup(struct appdata *ad);
149 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow);
150 static void setting_ctxpopup_destroy(struct appdata *ad);
152 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y);
154 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y);
155 static int __get_menubar_no_by_index(struct appdata *ad, int index);
157 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj, void *event_info);
158 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info);
159 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj, void *event_info);
160 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info);
161 static void __update_menubar_icon_by_index(struct appdata *ad, int index);
162 static void __cam_toolbar_edit_shortcuts_data_clean();
163 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y);
164 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y);
166 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon, int type, void *data, ButtonState state, Evas_Object_Event_Cb *func);
167 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction, int mouse_point, int *x, int *y);
169 /* Setting list callback*/
170 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting);
171 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info);
172 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info);
173 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info);
174 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info);
175 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info);
176 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info);
177 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info);
178 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info);
179 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info);
180 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info);
181 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info);
182 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info);
183 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info);
184 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info);
185 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info);
186 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info);
187 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info);
188 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info);
189 static void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info);
190 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info);
191 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info);
192 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info);
193 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info);
194 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
195 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
196 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info);
198 /* Toolbar functions */
199 static void __toolbar_menu_icon_update(struct appdata *ad);
200 static int __toolbar_menu_item_create(struct appdata *ad);
201 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state);
202 static void __toolbar_menu_item_reset(struct appdata *ad);
203 static int __toolbar_shutter_button_create(struct appdata *ad);
204 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state);
205 static int __toolbar_recording_button_create(struct appdata *ad);
206 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state);
207 static int __toolbar_quickview_item_create(struct appdata *ad);
208 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state);
209 static int __toolbar_backbutton_create(struct appdata *ad);
210 static void __toolbar_backbutton_destroy(struct appdata *ad);
211 static int __toolbar_cafbutton_create(struct appdata *ad);
212 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state);
213 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state);;
215 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state);
216 static const char* __get_text_name(CAM_MENU_ITEM item);
218 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
219 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
220 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect);
221 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
231 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
232 ShortCutData *swap_ele,
233 ShortCutData *cur_ele);
235 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no);
236 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata);
237 static void __cam_setting_sub_gl_style_set();
238 static int __get_sub_menu_height(int count);
239 int cam_toolbar_displaypopup_map_menu_value(int display_popup);
240 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item);
241 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2);
242 static void __resort_edit_shortcuts_list_by_part_index(void);
243 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele);
244 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no);
246 static void __update_setting_popup(void* data);
247 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele);
248 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
251 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no);
252 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
253 ShortCutData *cur_ele,
254 ShortCutData *insert_ele);
256 static void __set_show_state_preview_obj(void *data, gboolean show);
257 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part);
259 static Eina_Bool __setting_popup_timeout_checker_cb(void *data);
260 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad);
261 static void __cam_toolbar_display_shortcuts_editmode(void *data);
263 static void __cam_toolbar_exit_shortcuts_editmode(void *data);
264 static void __toolbar_dim_setting_shortcuts(struct appdata *ad);
267 static void cam_popup_warning_response_cb(void *data, Evas_Object *obj, void *event_info)
270 evas_object_del(obj);
274 static void cam_storage_warning_popup()
276 struct appdata *ad = (struct appdata *)cam_appdata_get();
277 cam_retm_if(ad == NULL, " appdata is NULL");
279 popup = elm_popup_add(ad->ug_base);
280 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
281 elm_object_text_set(popup, dgettext(PACKAGE, "IDS_CAM_POP_INSERT_MEMORY_CARD_TO_USE_CAMERA"));
282 elm_popup_timeout_set(popup, 3.0);
283 evas_object_smart_callback_add(popup, "timeout", cam_popup_warning_response_cb, NULL);
284 evas_object_show(popup);
287 static Eina_Bool __toolbar_check_af_timer(void *data)
290 struct appdata *ad = (struct appdata *)data;
291 cam_retv_if(ad == NULL, 0);
292 CamAppData *camapp = ad->camapp_handle;
293 if (camapp == NULL) {
294 if (ad->check_af_timer)
295 ad->check_af_timer = NULL;
296 return ECORE_CALLBACK_CANCEL;
299 if(camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
300 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
301 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
302 ad->emit_continuous_shutter = TRUE;
303 cam_mm_stop_focusing();
304 if (!cam_do_capture(ad)) {
305 cam_warning(LOG_UI, "cam_do_capture failed");
306 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
307 ad->emit_continuous_shutter = FALSE;
310 if (ad->check_af_timer)
311 ad->check_af_timer = NULL;
313 return ECORE_CALLBACK_CANCEL;
316 return ECORE_CALLBACK_RENEW;
318 static Eina_Bool __toolbar_continuous_shot_timer(void *data)
321 struct appdata *ad = (struct appdata *)data;
322 cam_retv_if(ad == NULL, 0);
323 CamAppData *camapp = ad->camapp_handle;
324 if (camapp == NULL) {
325 if (ad->continuous_shot_timer)
326 ad->continuous_shot_timer = NULL;
327 return ECORE_CALLBACK_CANCEL;
330 DEBUG_TRACE("camapp->burst_shot is %d", camapp->burst_shot);
331 if (camapp->burst_shot) {// burst shot mode 'on'
332 camapp->default_capture_mode = CAM_CAPTURE_BURST;
333 ad->emit_continuous_shutter = TRUE;
334 if (camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
335 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
336 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
337 REMOVE_TIMER(ad->continuous_af_timer);
338 cam_mm_stop_focusing();
340 if (!cam_do_capture(ad)) {
341 cam_warning(LOG_UI, "cam_do_capture failed");
342 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
345 cam_debug(LOG_UI, "Not focused");
347 REMOVE_TIMER(ad->check_af_timer);
348 ad->check_af_timer = ecore_timer_add(0.2, __toolbar_check_af_timer, ad);
352 if (ad->continuous_shot_timer)
353 ad->continuous_shot_timer = NULL;
354 return ECORE_CALLBACK_CANCEL;
357 /* start AF after SHUTTER_LONG_TAP_TIME */
358 static Eina_Bool __toolbar_shutter_long_tap_af_timer(void *data)
360 struct appdata *ad = (struct appdata *)data;
361 cam_retv_if(ad == NULL, 0);
362 CamAppData *camapp = ad->camapp_handle;
363 if (camapp == NULL) {
364 if (ad->shutter_long_tap_timer)
365 ad->shutter_long_tap_timer = NULL;
366 return ECORE_CALLBACK_CANCEL;
369 if (!camapp->key_lock) {
370 camapp->key_lock = TRUE;
371 camapp->focus_mode = CAM_FOCUS_MODE_HALFSHUTTER;
372 camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
373 if (!cam_camera_key_half_press(ad)) {
374 cam_warning(LOG_UI, "cam_camera_key_half_press failed");
376 camapp->key_lock = FALSE;
379 if (ad->shutter_long_tap_timer)
380 ad->shutter_long_tap_timer = NULL;
381 return ECORE_CALLBACK_CANCEL;
384 static void __shutter_button_focus_out_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
386 DEBUG_TRACE("START");
388 struct appdata *ad = (struct appdata *)data;
389 cam_retm_if(ad == NULL, "appdata is NULL");
390 CamAppData *camapp = ad->camapp_handle;
391 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
393 if (ad->is_processing) {
397 cam_mm_stop_focusing();
398 cam_reset_focus_mode(ad);
401 void cam_toolbar_shutter_button_cb(void *data, Evas_Object *o,
402 const char *emission, const char *source)
404 DEBUG_TRACE("START");
406 struct appdata *ad = (struct appdata *)data;
407 cam_retm_if(ad == NULL, "appdata is NULL");
408 cam_app_timeout_checker_update();
409 if (ad->is_rotating) return;/*note: now is rotating*/
410 CamAppData *camapp = ad->camapp_handle;;
411 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
413 cam_retm_if(emission == NULL, "emission is NULL");
414 cam_retm_if(source == NULL, "source is NULL");
415 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
417 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
420 unload_zoom_edje(ad);
425 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
426 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
427 cam_toolbar_setting_popup_destroy(ad);
430 if (ad->edit_shortcuts_popup)
431 toolbar_destroy_shortcuts_popup(ad);
433 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
434 cam_debug(LOG_UI, "do not capture");
438 if (strcmp(emission, "press_shutter_sig") == 0) {
439 if ((camapp->continuous_shot_data && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING )
441 cam_critical(LOG_SYS, " capture is skipped because of CAM_CONTI_SHOT_STATUS_CAPTURING");
445 ad->emit_continuous_shutter = FALSE;
446 if (camapp->camera_mode == CAM_CAMERA_MODE) {
447 evas_object_event_callback_add(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb, (void *)ad);
449 if (camapp->af_mode == CAM_FOCUS_FACE) { /*note: face focus mode, if start capture,stop draw rect*/
450 cam_app_stop_video_stream();
452 REMOVE_TIMER(ad->continuous_shot_timer);
453 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
455 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) && (camapp->burst_shot == TRUE)) {
456 if (strcmp(source, "hard_key") == 0) {
457 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
458 ad->continuous_shot_by_hard_key = TRUE;
459 __toolbar_continuous_shot_timer(ad);
461 if (!cam_do_capture(ad))
462 cam_warning(LOG_UI, "cam_do_capture failed");
465 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
466 ad->continuous_shot_by_hard_key = FALSE;
467 ad->continuous_shot_timer = ecore_timer_add(0.5, __toolbar_continuous_shot_timer, ad);
471 ad->stop_continuous_shot = FALSE;
473 if (strcmp(source, "hard_key") == 0) {
474 if (!cam_do_capture(ad))
475 cam_warning(LOG_UI, "cam_do_capture failed");
477 if (cam_is_enabled_menu((void*)ad, CAM_MENU_FOCUS_MODE)){
478 REMOVE_TIMER(ad->continuous_af_timer);
479 ad->shutter_long_tap_timer = ecore_timer_add(SHUTTER_LONG_TAP_TIME, __toolbar_shutter_long_tap_af_timer, ad);
484 if (strcmp(source, "hard_key") == 0) {
485 if (!cam_do_capture(ad))
486 cam_warning(LOG_UI, "cam_do_capture failed");
490 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
491 } else if (strcmp(emission, "release_shutter_sig") == 0) {
492 if (camapp->camera_mode == CAM_CAMERA_MODE) {
493 evas_object_event_callback_del(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb);
494 REMOVE_TIMER(ad->shutter_long_tap_timer);
495 REMOVE_TIMER(ad->continuous_shot_timer);
496 REMOVE_TIMER(ad->check_af_timer);
498 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE)
499 && camapp->burst_shot == TRUE
500 && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
501 DEBUG_TRACE("burst capture mode");
502 if (((strcmp(source, "hard_key") == 0) && (ad->continuous_shot_by_hard_key == FALSE))
503 || ((strcmp(source, "toolbar_signal") == 0) && (ad->continuous_shot_by_hard_key == TRUE))) {
504 DEBUG_TRACE("ignore this event");
507 ad->stop_continuous_shot = TRUE;
508 ad->emit_continuous_shutter = FALSE;
509 ad->continuous_shot_by_hard_key = FALSE;
513 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
514 } else if ( strcmp(emission, "click_shutter_sig") == 0){
516 if (ad->emit_continuous_shutter == TRUE ) {
517 ad->emit_continuous_shutter = FALSE;
521 if (camapp->default_capture_mode == CAM_CAPTURE_SINGLE) {
522 if (!cam_do_capture(ad))
523 cam_warning(LOG_UI, "cam_do_capture failed");
528 void cam_toolbar_recording_button_cb(void *data, Evas_Object *o,
529 const char *emission, const char *source)
531 DEBUG_TRACE("START");
533 struct appdata *ad = (struct appdata *)data;
534 cam_retm_if(ad == NULL, "appdata is NULL");
535 cam_app_timeout_checker_update();
536 if (ad->is_rotating) return;/*note: now is rotating*/
537 CamAppData *camapp = ad->camapp_handle;;
538 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
540 cam_retm_if(emission == NULL, "emission is NULL");
541 cam_retm_if(source == NULL, "source is NULL");
542 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
544 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
547 unload_zoom_edje(ad);
552 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
553 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
554 cam_toolbar_setting_popup_destroy(ad);
557 if (ad->edit_shortcuts_popup)
558 toolbar_destroy_shortcuts_popup(ad);
560 int mm_state = cam_mm_get_state();
562 if (strcmp(emission, "press_shutter_sig") == 0) {
563 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
564 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,press", "prog");
566 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,press", "prog");
567 } else if (strcmp(emission, "release_shutter_sig") == 0) {
568 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
569 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
571 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
572 } else if (strcmp(emission, "click_shutter_sig") == 0) {
574 if (camapp->camera_mode == CAM_CAMERA_MODE) {
575 if (mm_state != CAMERA_STATE_PREVIEW) {
576 cam_critical(LOG_UI, "Cannot start recording in capturing state");
581 if (!ad->is_recording) {
582 // change to camcorder mode
583 GValue value = {0, };
584 if (camapp->camera_mode == CAM_CAMERA_MODE) {
585 CAM_GVALUE_SET_INT(value, CAM_CAMCORDER_MODE);
586 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
591 if (!camapp->key_lock) {
592 camapp->key_lock = TRUE;
594 if (!cam_do_record(ad))
595 cam_warning(LOG_UI, "cam_do_record failed");
597 camapp->key_lock = FALSE;
600 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING)) {
601 if (!cam_video_record_pause(ad))
602 cam_warning(LOG_UI, "cam_video_record_pause failed");
604 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
605 } else if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_PAUSED)) {
606 if (!cam_video_record_resume(ad))
607 cam_warning(LOG_UI, "cam_video_record_resume failed");
609 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
615 void cam_toolbar_recording_stop_button_cb(void *data, Evas_Object *o,
616 const char *emission, const char *source)
618 DEBUG_TRACE("START");
620 struct appdata *ad = (struct appdata *)data;
621 cam_retm_if(ad == NULL, "appdata is NULL");
622 cam_app_timeout_checker_update();
623 if (ad->is_rotating) return;/*note: now is rotating*/
624 CamAppData *camapp = ad->camapp_handle;;
625 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
627 cam_retm_if(emission == NULL, "emission is NULL");
628 cam_retm_if(source == NULL, "source is NULL");
629 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
634 unload_zoom_edje(ad);
635 HIDE_EVAS_OBJECT(ad->indicator_edje);
636 DEL_EVAS_OBJECT(ad->recording_edje);
638 if (strcmp(emission, "press_shutter_sig") == 0) {
639 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,press", "prog");
640 } else if (strcmp(emission, "release_shutter_sig") == 0) {
641 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
642 } else if (strcmp(emission, "click_shutter_sig") == 0) {
643 state = cam_mm_get_state();
645 if ((state == RECORDER_STATE_RECORDING)
646 || (state == RECORDER_STATE_PAUSED)) {
647 camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
648 if (!cam_video_record_stop(ad))
649 cam_warning(LOG_UI, "cam_video_record_stop failed");
651 cam_debug(LOG_UI, "error, not recording or pause state");
656 static void __toolbar_backbutton_cb(void *data, Evas_Object *o,
657 const char *emission, const char *source)
659 DEBUG_TRACE("START");
661 struct appdata *ad = (struct appdata *)data;
662 cam_retm_if(ad == NULL, "appdata is NULL");
663 if (ad->is_rotating) return;/*note: now is rotating*/
664 CamAppData *camapp = ad->camapp_handle;;
665 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
667 cam_retm_if(emission == NULL, "emission is NULL");
668 cam_retm_if(source == NULL, "source is NULL");
669 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
671 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
673 if (ad->timer_activated) {
674 cam_app_cancel_timer(ad);
675 if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
676 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
677 if (ad->ug_state != CAM_UG_PAUSE_STATE) {
678 GValue value = {0, };
679 CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
680 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
688 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
689 if (ad->is_recording) {
690 if (!camapp->key_lock) {
691 camapp->key_lock = TRUE;
693 if (!cam_video_record_cancel(ad))
694 cam_warning(LOG_UI, "failed");
696 camapp->key_lock = FALSE;
703 cam_tip_popup_destroy(ad);
705 } else if (ad->toolbar_setting_popup) {
706 if (ad->setting_ctxpopup) {
707 setting_ctxpopup_destroy(ad);
708 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
710 cam_toolbar_setting_popup_destroy(ad);
713 } else if (ad->setting_ctxpopup) {
714 setting_ctxpopup_destroy(ad);
715 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
717 } else if (ad->edit_shortcuts_popup) {
718 toolbar_destroy_shortcuts_popup(ad);
720 } else if (ad->ev_edje) {
723 } else if (ad->zoom_edje) {
724 unload_zoom_edje(ad);
729 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
732 elm_win_lower(ug_get_window());
738 static void __toolbar_cafbutton_cb(void *data, Evas_Object *o,
739 const char *emission, const char *source)
741 DEBUG_TRACE("START");
743 struct appdata *ad = (struct appdata *)data;
744 cam_retm_if(ad == NULL, "appdata is NULL");
745 CamAppData *camapp = ad->camapp_handle;;
746 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
748 cam_retm_if(emission == NULL, "emission is NULL");
749 cam_retm_if(source == NULL, "source is NULL");
750 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
755 cam_reset_focus_mode(ad);
758 static Ecore_Idler *run_image_view_idler = NULL;
759 static Eina_Bool __cam_toolbar_run_image_viewer_idler(void *data)
761 struct appdata *ad = (struct appdata *)data;
762 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
763 CamAppData *camapp = ad->camapp_handle;
764 cam_retv_if(camapp == NULL, ECORE_CALLBACK_CANCEL);
766 if (run_image_view_idler) {
767 ecore_idler_del(run_image_view_idler);
768 run_image_view_idler = NULL;
771 if (ad->ug_is_deleting_process == TRUE)
772 return ECORE_CALLBACK_CANCEL;
774 if (!cam_app_run_media_browser(ad, camapp->filename)) {
775 DEBUG_TRACE("cam_app_run_media_browser failed");
778 return ECORE_CALLBACK_CANCEL;
781 static void __toolbar_quickview_cb(void *data, Evas_Object *o,
782 const char *emission, const char *source)
784 cam_ret_if(data == NULL);
785 struct appdata *ad = (struct appdata *)data;
786 cam_retm_if(ad == NULL, "appdata is NULL");
787 cam_app_timeout_checker_update();
788 if (ad->is_rotating) return;/*note: now is rotating*/
789 CamAppData *camapp = ad->camapp_handle;
790 cam_ret_if(camapp == NULL);
791 cam_ret_if(emission == NULL);
792 cam_ret_if(source == NULL);
793 if (ad->ug_is_deleting_process == TRUE)
797 unload_zoom_edje(ad);
802 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
803 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
804 cam_toolbar_setting_popup_destroy(ad);
807 if (ad->edit_shortcuts_popup)
808 toolbar_destroy_shortcuts_popup(ad);
810 if (ad->imageviewer_ug) {
813 if (emission && source)
814 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
816 if (strcmp(emission, "portrait,quickview,release") == 0
817 || strcmp(emission, "landscape,quickview,release") == 0) {
818 pthread_mutex_lock(&ad->file_reg_mutex);
819 cam_debug(LOG_SYS, " lock file_reg_mutex");
820 pthread_mutex_unlock(&ad->file_reg_mutex);
821 run_image_view_idler = ecore_idler_add(__cam_toolbar_run_image_viewer_idler, (void *)ad);
825 #if 0 /*block it temporary*/
826 static void __shotcus_edit_shotcuts_popup_cb(void *data, Evas * evas, Evas_Object *obj,
830 __setting_edit_shortcut_popup_cb(data, obj, event_info);
834 static void __shortcuts_burst_shot_popup_cb(void *data, Evas * evas, Evas_Object *obj,
838 __setting_burst_shot_popup_cb(data, obj, event_info);
841 static void __shortcuts_volume_key_popup_cb(void *data, Evas * evas, Evas_Object *obj,
845 __setting_volume_key_popup_cb(data, obj, event_info);
848 static void __shortcuts_self_portrait_popup_cb(void *data, Evas * evas, Evas_Object *obj,
852 __setting_self_portrait_popup_cb(data, obj, event_info);
855 static void __shortcuts_setting_flash_popup_cb(void *data, Evas * evas, Evas_Object *obj,
859 __setting_flash_popup(data, obj, event_info);
862 static void __shortcuts_shooting_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
866 __setting_shot_mode_popup_cb(data, obj, event_info);
869 static void __shortcuts_record_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
873 __setting_record_mode_popup(data, obj, event_info);
876 static void __shortcuts_scene_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
880 __setting_scenemode_popup_cb(data, obj, event_info);
883 static void __shortcuts_exposure_popup_cb(void *data, Evas * evas, Evas_Object *obj,
887 __setting_ev_popup_cb(data, obj, event_info);
890 static void __shortcuts_focus_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
894 __setting_focus_mode_cb(data, obj, event_info);
897 static void __shortcuts_setting_timer_popup_cb(void *data, Evas * evas, Evas_Object *obj,
901 __setting_timer_popup_cb(data, obj, event_info);
904 static void __shortcuts_effects_popup_cb(void *data, Evas * evas, Evas_Object *obj,
908 __setting_effects_popup_cb(data, obj, event_info);
911 static void __shortcuts_photo_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
915 __setting_photo_resolution_popup_cb(data, obj, event_info);
918 static void __shortcuts_video_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
922 __setting_video_resolution_popup_cb(data, obj, event_info);
926 static void __shortcuts_white_banlance_popup_cb(void *data, Evas * evas, Evas_Object *obj,
930 __setting_wb_popup_cb(data, obj, event_info);
933 static void __shortcuts_setting_iso_popup_cb(void *data, Evas * evas, Evas_Object *obj,
937 __setting_iso_popup_cb(data, obj, event_info);
940 static void __shortcuts_setting_metering_popup_cb(void *data, Evas * evas, Evas_Object *obj,
944 __setting_metering_popup_cb(data, obj, event_info);
947 static void __shortcuts_anti_shake_popup_cb(void *data, Evas * evas, Evas_Object *obj,
951 __setting_anti_shake_popup_cb(data, obj, event_info);
954 static void __shortcuts_outdoor_visibility_popup_cb(void *data, Evas * evas, Evas_Object *obj,
958 __setting_outdoor_visibility_popup_cb(data, obj, event_info);
961 static void __shortcuts_auto_contrast_popup_cb(void *data, Evas * evas, Evas_Object *obj,
965 __setting_autocontrast_popup_cb(data, obj, event_info);
968 static void __shortcuts_guideline_popup_cb(void *data, Evas * evas, Evas_Object *obj,
972 __setting_guideline_popup_cb(data, obj, event_info);
975 static void __shortcuts_capture_voice_popup_cb(void *data, Evas * evas, Evas_Object *obj,
979 __setting_capture_by_voice_popup_cb(data, obj, event_info);
982 static void __shortcuts_gps_tag_popup_cb(void *data, Evas * evas, Evas_Object *obj,
986 __setting_gps_popup_cb(data, obj, event_info);
989 static void __shortcuts_storage_popup_cb(void *data, Evas * evas, Evas_Object *obj,
993 __setting_storage_popup_cb(data, obj, event_info);
996 static void __shortcuts_reset_popup_cb(void *data, Evas * evas, Evas_Object *obj,
1000 __setting_restore_defaults_popup_cb(data, obj, event_info);
1003 static void __shortcuts_save_as_flip_cb(void *data, Evas * evas, Evas_Object *obj,
1007 __setting_save_as_flip_popup_cb(data, obj, event_info);
1011 static void __update_menu_bar_shortcuts_state_by_index(struct appdata *ad, int index, ToolbarItemState state)
1013 cam_ret_if(ad == NULL);
1014 int menubar_no = __get_menubar_no_by_index(ad, index);
1015 switch(menubar_no) {
1016 case CAM_MENU_BAR_LEFT_0:
1017 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1018 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1019 "toolbar_0_icon,normal", "prog");
1020 else if (TOOLBAR_ITEM_STATE_DIM == state)
1021 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1022 "toolbar_0_icon,dim", "prog");
1024 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1025 "toolbar_0_icon,invisible", "prog");
1027 case CAM_MENU_BAR_LEFT_1:
1028 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1029 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1030 "toolbar_1_icon,normal", "prog");
1031 else if (TOOLBAR_ITEM_STATE_DIM == state)
1032 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1033 "toolbar_1_icon,dim", "prog");
1035 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1036 "toolbar_1_icon,invisible", "prog");
1038 case CAM_MENU_BAR_LEFT_2:
1039 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1040 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1041 "toolbar_2_icon,normal", "prog");
1042 else if (TOOLBAR_ITEM_STATE_DIM == state)
1043 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1044 "toolbar_2_icon,dim", "prog");
1046 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1047 "toolbar_2_icon,invisible", "prog");
1049 case CAM_MENU_BAR_LEFT_3:
1050 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1051 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1052 "toolbar_3_icon,normal", "prog");
1053 else if (TOOLBAR_ITEM_STATE_DIM == state)
1054 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1055 "toolbar_3_icon,dim", "prog");
1057 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1058 "toolbar_3_icon,invisible", "prog");
1060 case CAM_MENU_BAR_LEFT_4:
1061 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1062 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1063 "toolbar_4_icon,normal", "prog");
1064 else if (TOOLBAR_ITEM_STATE_DIM == state)
1065 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1066 "toolbar_4_icon,dim", "prog");
1068 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1069 "toolbar_4_icon,invisible", "prog");
1072 DEBUG_TRACE("not in menubar");
1077 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon,
1078 int type, void *data, ButtonState state, Evas_Object_Event_Cb *func)
1080 struct appdata *ad = (struct appdata *)data;
1081 cam_ret_if(ad == NULL);
1082 CamAppData *camapp = ad->camapp_handle;
1083 cam_ret_if(camapp == NULL);
1085 char *icon_name = NULL;
1088 ButtonState button_state = state;
1089 ToolbarItemState item_state = TOOLBAR_ITEM_STATE_NORMAL;
1091 if (!cam_is_enabled_menu(ad, type)) {
1092 button_state = BUTTON_STATE_DIM;
1093 item_state = TOOLBAR_ITEM_STATE_DIM;
1096 __get_toolbar_shortcuts_file_func(ad, type, button_state, &icon_name, &text, func);
1099 elm_image_file_set(toolbar_icon, CAM_IMAGE_EDJ_NAME, icon_name);
1101 cam_critical(LOG_UI, "icon_name is NULL");
1103 __update_menu_bar_shortcuts_state_by_index(ad, type, item_state);
1105 if (button_state == BUTTON_STATE_DIM)
1106 evas_object_color_set(toolbar_icon, 255, 255, 255, 77); /*opacity 30% for dim menu */
1108 evas_object_color_set(toolbar_icon, 255, 255, 255, 255);
1111 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
1112 char **file_path, char **text, Evas_Object_Event_Cb *func)
1114 struct appdata *ad = (struct appdata *)data;
1115 cam_ret_if(ad == NULL);
1116 CamAppData *camapp = ad->camapp_handle;
1117 cam_ret_if(camapp == NULL);
1124 case CAM_MENU_EMPTY:
1125 case CAM_MENU_SHORTCUTS:
1127 case CAM_MENU_BURST_SHOT_MODE: {
1128 if (camapp->burst_shot) {
1129 if (state == BUTTON_STATE_PRESS)
1130 *file_path = BURST_SHOT_MODE_ON_PRESS_ICON;
1132 *file_path = BURST_SHOT_MODE_ON_NORMAL_ICON;
1135 if (state == BUTTON_STATE_PRESS)
1136 *file_path = BURST_SHOT_MODE_OFF_PRESS_ICON;
1138 *file_path = BURST_SHOT_MODE_OFF_NORMAL_ICON;
1141 *text = dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB");
1143 if (state != BUTTON_STATE_DIM)
1144 *func = __shortcuts_burst_shot_popup_cb;
1147 case CAM_MENU_VOLUME_KEY: {
1148 *file_path = __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), state);
1149 *text = dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS");
1151 if (state != BUTTON_STATE_DIM)
1152 *func = __shortcuts_volume_key_popup_cb;
1155 case CAM_MENU_SELF_PORTRAIT: {
1156 if (state == BUTTON_STATE_PRESS)
1157 *file_path = CAMERA_SELF_PORTRAIT_PRESS_ICON;
1159 *file_path = CAMERA_SELF_PORTRAIT_NORMAL_ICON;
1161 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT");
1163 if (state != BUTTON_STATE_DIM)
1164 *func = __shortcuts_self_portrait_popup_cb;
1167 case CAM_MENU_FLASH: {
1168 *file_path = __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), state);
1169 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FLASH");
1171 if (state != BUTTON_STATE_DIM)
1172 *func = __shortcuts_setting_flash_popup_cb;
1175 case CAM_MENU_SHOOTING_MODE: {
1176 *file_path = __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), state);
1177 *text = dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE");
1179 if (state != BUTTON_STATE_DIM)
1180 *func = __shortcuts_shooting_mode_popup_cb;
1183 case CAM_MENU_RECORDING_MODE: {
1184 *file_path = __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), state);
1185 *text = dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE");
1187 if (state != BUTTON_STATE_DIM)
1188 *func = __shortcuts_record_mode_popup_cb;
1191 case CAM_MENU_SCENE_MODE: {
1192 *file_path = __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), state);
1193 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE");
1195 if (state != BUTTON_STATE_DIM)
1196 *func = __shortcuts_scene_mode_popup_cb;
1199 case CAM_MENU_EXPLOSURE_VALUE: {
1200 *file_path = __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, state);
1201 *text = dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE");
1203 if (state != BUTTON_STATE_DIM)
1204 *func = __shortcuts_exposure_popup_cb;
1207 case CAM_MENU_FOCUS_MODE: {
1208 *file_path = __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), state);
1209 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE");
1211 if (state != BUTTON_STATE_DIM)
1212 *func = __shortcuts_focus_mode_popup_cb;
1215 case CAM_MENU_TIMER: {
1216 *file_path = __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), state);
1217 *text = dgettext(PACKAGE, "IDS_CAM_BODY_TIMER");
1219 if (state != BUTTON_STATE_DIM)
1220 *func = __shortcuts_setting_timer_popup_cb;
1224 case CAM_MENU_EFFECTS: {
1225 *file_path = __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), state);
1226 *text = dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS");
1228 if (state != BUTTON_STATE_DIM)
1229 *func = __shortcuts_effects_popup_cb;
1232 case CAM_MENU_PHOTO_RESOLUTION: {
1233 *file_path = __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), state);
1234 *text = dgettext(PACKAGE, "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB");
1236 if (state != BUTTON_STATE_DIM)
1237 *func = __shortcuts_photo_resolution_popup_cb;
1240 case CAM_MENU_VIDEO_RESOLUTION: {
1241 *file_path = __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), state);
1242 *text = dgettext(PACKAGE, "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB");
1244 if (state != BUTTON_STATE_DIM)
1245 *func = __shortcuts_video_resolution_popup_cb;
1249 case CAM_MENU_WHITE_BALANCE: {
1250 *file_path = __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), state);
1251 *text = dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB");
1253 if (state != BUTTON_STATE_DIM)
1254 *func = __shortcuts_white_banlance_popup_cb;
1257 case CAM_MENU_ISO: {
1258 *file_path = __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), state);
1259 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ISO");
1261 if (state != BUTTON_STATE_DIM)
1262 *func = __shortcuts_setting_iso_popup_cb;
1265 case CAM_MENU_METERING: {
1266 *file_path = __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), state);
1267 *text = dgettext(PACKAGE, "IDS_CAM_BODY_METERING");
1269 if (state != BUTTON_STATE_DIM)
1270 *func = __shortcuts_setting_metering_popup_cb;
1273 case CAM_MENU_ANTI_SHAKE: {
1274 if (ad->camapp_handle->anti_shake) {
1275 if (state == BUTTON_STATE_PRESS)
1276 *file_path = ANTISHAKE_ON_PRESS_ICON;
1278 *file_path = ANTISHAKE_ON_NORMAL_ICON;
1281 if (state == BUTTON_STATE_PRESS)
1282 *file_path = ANTISHAKE_OFF_PRESS_ICON;
1284 *file_path = ANTISHAKE_OFF_NORMAL_ICON;
1287 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE");
1289 if (state != BUTTON_STATE_DIM)
1290 *func = __shortcuts_anti_shake_popup_cb;
1293 case CAM_MENU_OUTDOOR_VISIBILITY: {
1294 if (ad->camapp_handle->outdoor_visibility) {
1295 if (state == BUTTON_STATE_PRESS)
1296 *file_path = OUTDOOR_VISIBILITY_ON_PRESS_ICON;
1298 *file_path = OUTDOOR_VISIBILITY_ON_NORMAL_ICON;
1301 if (state == BUTTON_STATE_PRESS)
1302 *file_path = OUTDOOR_VISIBILITY_OFF_PRESS_ICON;
1304 *file_path = OUTDOOR_VISIBILITY_OFF_NORMAL_ICON;
1307 *text = dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY");
1309 if (state != BUTTON_STATE_DIM)
1310 *func = __shortcuts_outdoor_visibility_popup_cb;
1313 case CAM_MENU_AUTO_CONTRAST: {
1314 if (ad->camapp_handle->auto_contrast) {
1315 if (state == BUTTON_STATE_PRESS)
1316 *file_path = AUTO_CONTRAST_ON_PRESS_ICON;
1318 *file_path = AUTO_CONTRAST_ON_NORMAL_ICON;
1321 if (state == BUTTON_STATE_PRESS)
1322 *file_path = AUTO_CONTRAST_OFF_PRESS_ICON;
1324 *file_path = AUTO_CONTRAST_OFF_NORMAL_ICON;
1327 *text = dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST");
1329 if (state != BUTTON_STATE_DIM)
1330 *func = __shortcuts_auto_contrast_popup_cb;
1333 case CAM_MENU_GUIDELINES: {
1334 if (ad->camapp_handle->guideline) {
1335 if (state == BUTTON_STATE_PRESS)
1336 *file_path = GUIDELINE_ON_PRESS_ICON;
1338 *file_path = GUIDELINE_ON_NORMAL_ICON;
1341 if (state == BUTTON_STATE_PRESS)
1342 *file_path = GUIDELINE_OFF_PRESS_ICON;
1344 *file_path = GUIDELINE_OFF_NORMAL_ICON;
1347 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE");
1349 if (state != BUTTON_STATE_DIM)
1350 *func = __shortcuts_guideline_popup_cb;
1353 case CAM_MENU_CAPTURE_VOICE: {
1354 if (ad->camapp_handle->capture_by_voice) {
1355 if (state == BUTTON_STATE_PRESS)
1356 *file_path = CAPTURE_WITH_VOICE_ON_PRESS_ICON;
1358 *file_path = CAPTURE_WITH_VOICE_ON_NORMAL_ICON;
1361 if (state == BUTTON_STATE_PRESS)
1362 *file_path = CAPTURE_WITH_VOICE_OFF_PRESS_ICON;
1364 *file_path = CAPTURE_WITH_VOICE_OFF_NORMAL_ICON;
1367 *text = "Capture with voice";
1369 if (state != BUTTON_STATE_DIM)
1370 *func = __shortcuts_capture_voice_popup_cb;
1373 case CAM_MENU_GPS_TAG: {
1374 if (ad->camapp_handle->gps) {
1375 if (state == BUTTON_STATE_PRESS)
1376 *file_path = GPS_ON_PRESS_ICON;
1378 *file_path = GPS_ON_NORMAL_ICON;
1381 if (state == BUTTON_STATE_PRESS)
1382 *file_path = GPS_OFF_PRESS_ICON;
1384 *file_path = GPS_OFF_NORMAL_ICON;
1387 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG");
1389 if (state != BUTTON_STATE_DIM)
1390 *func = __shortcuts_gps_tag_popup_cb;
1393 case CAM_MENU_SAVE_AS_FLIP: {
1394 if (ad->camapp_handle->save_as_flip) {
1395 if (state == BUTTON_STATE_PRESS)
1396 *file_path = SAVE_AS_FLIP_ON_PRESS_ICON;
1398 *file_path = SAVE_AS_FLIP_ON_NORMAL_ICON;
1401 if (state == BUTTON_STATE_PRESS)
1402 *file_path = SAVE_AS_FLIP_OFF_PRESS_ICON;
1404 *file_path = SAVE_AS_FLIP_OFF_NORMAL_ICON;
1407 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED");
1409 if (state != BUTTON_STATE_DIM)
1410 *func = __shortcuts_save_as_flip_cb;
1413 case CAM_MENU_STORAGE: {
1414 *file_path = __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), state);
1415 *text = dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE");
1417 if (state != BUTTON_STATE_DIM)
1418 *func = __shortcuts_storage_popup_cb;
1421 case CAM_MENU_RESET: {
1422 if (state == BUTTON_STATE_PRESS)
1423 *file_path = RESET_SETTING_PRESS_ICON;
1425 *file_path = RESET_SETTING_NORMAL_ICON;
1427 *text = dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET");
1429 if (state != BUTTON_STATE_DIM)
1430 *func = __shortcuts_reset_popup_cb;
1438 static void __toolbar_menu_icon_update(struct appdata *ad)
1440 cam_ret_if(ad == NULL);
1442 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1443 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1447 static void __toolbar_menu_item_unswallow(struct appdata *ad)
1449 cam_ret_if(ad == NULL);
1450 cam_ret_if(ad->toolbar_edje == NULL);
1453 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1454 char buf[32 + 1] = {'\0', };
1455 snprintf(buf, 32, "toolbar_%d_icon", i);
1456 elm_object_part_content_unset(ad->toolbar_edje, buf);
1460 static void __toolbar_menu_item_destroy(struct appdata *ad)
1462 cam_ret_if(ad == NULL);
1463 __toolbar_menu_item_unswallow(ad);
1464 Evas_Object *icon = NULL;
1466 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1467 icon = ad->toolbar_menu_arrays[i].icon;
1468 DEL_EVAS_OBJECT(icon);
1469 ad->toolbar_menu_arrays[i].icon = NULL;
1473 static void __toolbar_menu_item_swallow(struct appdata *ad)
1475 cam_ret_if(ad == NULL);
1476 cam_ret_if(ad->toolbar_edje == NULL);
1478 Evas_Object *icon = NULL;
1480 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1481 icon = ad->toolbar_menu_arrays[i].icon;
1482 char buf[32 + 1] = {'\0', };
1483 snprintf(buf, 32, "toolbar_%d_icon", i);
1484 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1489 static int __toolbar_menu_item_create(struct appdata *ad)
1492 cam_retv_if(ad == NULL, -1);
1493 CamAppData *camapp = ad->camapp_handle;
1494 cam_retv_if(camapp == NULL, -1);
1496 Evas_Object *icon = NULL;
1497 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
1500 icon = elm_image_add(ad->toolbar_edje);
1501 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
1503 elm_object_part_content_set(ad->toolbar_edje, "toolbar_0_icon", icon);
1504 ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon = icon;
1508 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1509 icon = ad->toolbar_menu_arrays[i].icon;
1511 icon = elm_image_add(ad->toolbar_edje);
1513 char buf[32 + 1] = {'\0', };
1514 snprintf(buf, 32, "toolbar_%d_icon", i);
1515 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1516 ad->toolbar_menu_arrays[i].icon = icon;
1521 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state)
1523 cam_retm_if(ad == NULL, "appdata is null");
1525 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1526 __update_menu_bar_shortcuts_state_by_index(ad, ad->toolbar_menu_arrays[i].menu_type, state);
1528 if(state == TOOLBAR_ITEM_STATE_DIM) { //it don't make dimming in edje
1529 Evas_Object *icon = NULL;
1530 int menubar_no = __get_menubar_no_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1531 cam_retm_if(menubar_no == CAM_MENU_BAR_LEFT_INVALID, "invalid menubar no");
1533 icon = ad->toolbar_menu_arrays[menubar_no].icon;
1536 evas_object_color_set(icon, 255, 255, 255, 77); // set opacity 30%
1541 static void __toolbar_menu_item_reset(struct appdata *ad)
1543 cam_retm_if(ad == NULL, "appdata is null");
1545 __toolbar_menu_item_destroy(ad);
1546 __toolbar_menu_item_create(ad);
1548 ad->toolbar_menu_arrays[1].menu_type = CAM_MENU_EMPTY;
1549 ad->toolbar_menu_arrays[2].menu_type = CAM_MENU_EMPTY;
1551 if (cam_mm_is_support_front_camera() == TRUE)
1552 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_SELF_PORTRAIT;
1554 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_EMPTY;
1556 #ifdef CAMERA_MACHINE_I686
1557 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_EMPTY;
1559 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_FLASH;
1562 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
1564 cam_toolbar_menu_config_update(ad);
1567 static void __toolbar_shutter_button_unset(struct appdata *ad)
1569 cam_ret_if(ad == NULL);
1570 cam_ret_if(ad->toolbar_edje == NULL);
1572 elm_object_part_content_unset(ad->toolbar_edje, "shutter_button");
1575 static void __toolbar_shutter_button_destroy(struct appdata *ad)
1577 cam_ret_if(ad == NULL);
1579 if (ad->shutterbtn) {
1580 __toolbar_shutter_button_unset(ad);
1581 if (ad->shutterbtn_camera_icon) {
1582 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1583 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1585 DEL_EVAS_OBJECT(ad->shutterbtn)
1589 static void __toolbar_shutter_button_set(struct appdata *ad)
1591 cam_ret_if(ad == NULL);
1592 cam_ret_if(ad->toolbar_edje == NULL);
1593 cam_ret_if(ad->shutterbtn == NULL);
1595 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", ad->shutterbtn);
1598 static int __toolbar_shutter_button_create(struct appdata *ad)
1601 cam_retv_if(ad == NULL, -1);
1602 Evas_Object *edje = NULL;
1603 if (ad->shutterbtn) {
1604 if (ad->shutterbtn_camera_icon) {
1605 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1606 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1608 DEL_EVAS_OBJECT(ad->shutterbtn)
1610 ad->shutterbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "shutter_button");
1611 edje = ad->shutterbtn;
1612 cam_retv_if(edje == NULL, -1);
1614 ad->shutterbtn_camera_icon = elm_image_add(edje);
1615 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1616 elm_object_part_content_set(edje, "camera_icon", ad->shutterbtn_camera_icon);
1618 edje_object_signal_callback_del(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb);
1619 edje_object_signal_callback_add(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb, ad);
1621 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", edje);
1622 evas_object_show(edje);
1625 return EXIT_SUCCESS;
1628 void cam_toolbar_update_shutter_button(struct appdata *ad, ToolbarItemState state)
1630 __toolbar_shutter_button_update(ad, state);
1633 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state)
1635 cam_ret_if(ad == NULL);
1636 CamAppData *camapp = ad->camapp_handle;
1637 cam_ret_if(camapp == NULL);
1639 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1640 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
1641 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
1642 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1643 } else if (state == TOOLBAR_ITEM_STATE_PRESS) {
1644 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
1645 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
1646 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1647 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1648 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,dim", "prog");
1649 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,dim", "prog");
1650 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON_DIM);
1651 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1652 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,invisible", "prog");
1653 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,invisible", "prog");
1655 DEBUG_TRACE("Invalid state for shutter button");
1659 static void __toolbar_recording_button_unset(struct appdata *ad)
1661 cam_ret_if(ad == NULL);
1662 cam_ret_if(ad->toolbar_edje == NULL);
1664 elm_object_part_content_unset(ad->toolbar_edje, "recording_button");
1667 static void __toolbar_recording_button_destroy(struct appdata *ad)
1669 cam_ret_if(ad == NULL);
1671 __toolbar_recording_button_unset(ad);
1672 DEL_EVAS_OBJECT(ad->recordingbtn);
1675 static void __toolbar_recording_button_set(struct appdata *ad)
1677 cam_ret_if(ad == NULL);
1678 cam_ret_if(ad->toolbar_edje == NULL);
1679 cam_ret_if(ad->recordingbtn == NULL);
1681 elm_object_part_content_set(ad->toolbar_edje, "recording_button", ad->recordingbtn);
1684 static int __toolbar_recording_button_create(struct appdata *ad)
1687 cam_retv_if(ad == NULL, -1);
1688 Evas_Object *edje = NULL;
1689 DEL_EVAS_OBJECT(ad->recordingbtn);
1690 ad->recordingbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_button");
1691 edje = ad->recordingbtn;
1692 cam_retv_if(edje == NULL, -1);
1694 edje_object_signal_callback_del(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb);
1695 edje_object_signal_callback_add(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb, ad);
1696 elm_object_part_content_set(ad->toolbar_edje, "recording_button", edje);
1697 evas_object_show(edje);
1700 return EXIT_SUCCESS;
1703 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state)
1705 cam_ret_if(ad == NULL);
1706 CamAppData *camapp = ad->camapp_handle;
1707 cam_ret_if(camapp == NULL);
1708 cam_ret_if(ad->recordingbtn == NULL);
1710 int recording_state = 0;
1712 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1713 recording_state = cam_mm_get_state();
1715 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (recording_state == RECORDER_STATE_RECORDING)) {
1716 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1717 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
1719 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
1720 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,invisible", "prog");
1723 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1724 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,dim", "prog");
1725 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1726 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1728 DEBUG_TRACE("Invalid state for recording button");
1732 static void __toolbar_recording_stop_button_unset(struct appdata *ad)
1734 cam_ret_if(ad == NULL);
1735 cam_ret_if(ad->toolbar_edje == NULL);
1737 elm_object_part_content_unset(ad->toolbar_edje, "recording_stop_button");
1740 static void __toolbar_recording_stop_button_destroy(struct appdata *ad)
1742 cam_ret_if(ad == NULL);
1744 __toolbar_recording_stop_button_unset(ad);
1745 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1748 static void __toolbar_recording_stop_button_set(struct appdata *ad)
1750 cam_ret_if(ad == NULL);
1751 cam_ret_if(ad->toolbar_edje == NULL);
1752 cam_ret_if(ad->recording_stop_btn == NULL);
1754 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", ad->recording_stop_btn);
1757 static int __toolbar_recording_stop_button_create(struct appdata *ad)
1760 cam_retv_if(ad == NULL, -1);
1761 Evas_Object *edje = NULL;
1762 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1763 ad->recording_stop_btn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_stop_button");
1764 edje = ad->recording_stop_btn;
1765 cam_retv_if(edje == NULL, -1);
1767 edje_object_signal_callback_del(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb);
1768 edje_object_signal_callback_add(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb, ad);
1769 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", edje);
1770 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
1771 evas_object_show(edje);
1774 return EXIT_SUCCESS;
1777 static void __toolbar_quickview_item_unset(struct appdata *ad)
1779 cam_ret_if(ad == NULL);
1780 cam_ret_if(ad->toolbar_edje == NULL);
1782 elm_object_part_content_unset(ad->toolbar_edje, "quickview_item");
1785 static void __toolbar_quickview_item_destroy(struct appdata *ad)
1787 cam_ret_if(ad == NULL);
1789 __toolbar_quickview_item_unset(ad);
1790 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.edje);
1793 static void __toolbar_quickview_item_set(struct appdata *ad)
1795 cam_ret_if(ad == NULL);
1796 cam_ret_if(ad->toolbar_edje == NULL);
1797 cam_ret_if(ad->toolbar.quickview_item.edje == NULL);
1799 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", ad->toolbar.quickview_item.edje);
1802 static int __toolbar_quickview_item_create(struct appdata *ad)
1805 cam_retv_if(ad == NULL, -1);
1806 Evas_Object *edje = NULL;
1808 if (ad->toolbar.quickview_item.edje == NULL) {
1809 ad->toolbar.quickview_item.edje =
1810 cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_quickview_item");
1811 edje_object_signal_callback_del(_EDJ(ad->toolbar.quickview_item.edje),
1812 "*", "toolbar_signal", __toolbar_quickview_cb);
1813 edje_object_signal_callback_add(_EDJ(ad->toolbar.quickview_item.edje),
1814 "*", "toolbar_signal", __toolbar_quickview_cb, ad);
1816 edje = ad->toolbar.quickview_item.edje;
1818 cam_retv_if(edje == NULL, -1);
1819 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", edje);
1820 evas_object_show(edje);
1822 return EXIT_SUCCESS;
1825 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state)
1827 cam_ret_if(ad == NULL);
1829 Evas_Object *edje = NULL;
1830 edje = ad->toolbar.quickview_item.edje;
1832 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1833 edje_object_signal_emit(_EDJ(edje), "SET_DEFAULT", "prog");
1834 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1835 edje_object_signal_emit(_EDJ(edje), "SET_INVISIBLE", "prog");
1837 DEBUG_TRACE("Invalid state for quickview button");
1841 static int __toolbar_backbutton_create(struct appdata *ad)
1843 DEBUG_TRACE("START");
1844 cam_retv_if(ad == NULL, -1);
1845 Evas_Object *edje = NULL;
1846 if (ad->backbtn == NULL) {
1847 ad->backbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_backbutton_item");
1848 edje_object_signal_callback_del(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb);
1849 edje_object_signal_callback_add(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb, ad);
1853 cam_retv_if(edje == NULL, -1);
1854 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", edje);
1855 evas_object_show(edje);
1857 return EXIT_SUCCESS;
1860 static void __toolbar_backbutton_unset(struct appdata *ad)
1862 cam_ret_if(ad == NULL);
1863 cam_ret_if(ad->toolbar_edje == NULL);
1865 elm_object_part_content_unset(ad->toolbar_edje, "backbutton_item");
1868 static void __toolbar_backbutton_destroy(struct appdata *ad)
1870 cam_ret_if(ad == NULL);
1872 __toolbar_backbutton_unset(ad);
1873 DEL_EVAS_OBJECT(ad->backbtn);
1876 static void __toolbar_backbutton_set(struct appdata *ad)
1878 cam_ret_if(ad == NULL);
1879 cam_ret_if(ad->toolbar_edje == NULL);
1880 cam_ret_if(ad->backbtn == NULL);
1882 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", ad->backbtn);
1886 static void __toolbar_cafbutton_unset(struct appdata *ad)
1888 cam_ret_if(ad == NULL);
1889 cam_ret_if(ad->toolbar_edje == NULL);
1891 elm_object_part_content_unset(ad->toolbar_edje, "cafbutton_item");
1894 static void __toolbar_cafbutton_destroy(struct appdata *ad)
1896 cam_ret_if(ad == NULL);
1897 __toolbar_cafbutton_unset(ad);
1898 DEL_EVAS_OBJECT(ad->caf_button);
1901 static void __toolbar_cafbutton_set(struct appdata *ad)
1903 cam_ret_if(ad == NULL);
1904 cam_ret_if(ad->toolbar_edje == NULL);
1905 cam_ret_if(ad->caf_button == NULL);
1907 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1910 static int __toolbar_cafbutton_create(struct appdata *ad)
1912 DEBUG_TRACE("START");
1913 cam_retvm_if(ad == NULL, -1, "appdata is null");
1914 if (ad->caf_button == NULL) {
1915 ad->caf_button = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_cafbutton_item");
1917 cam_retvm_if(ad->caf_button == NULL, -1, "ad->caf_button is null");
1919 edje_object_signal_callback_del(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb);
1920 edje_object_signal_callback_add(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb, ad);
1922 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1923 evas_object_show(ad->caf_button);
1925 return EXIT_SUCCESS;
1928 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state)
1930 cam_retm_if(ad == NULL, "appdata is null");
1931 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1933 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1934 show_caf_button = TRUE;
1935 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,normal", "prog");
1936 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1937 show_caf_button = FALSE;
1938 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,invisible", "prog");
1940 show_caf_button = FALSE;
1941 DEBUG_TRACE("Invalid state for caf_button");
1945 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state)
1947 cam_retm_if(ad == NULL, "appdata is null");
1948 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1950 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1951 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,show", "prog");
1952 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1953 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,hide", "prog");
1955 DEBUG_TRACE("Invalid state for caf_button");
1959 #define SETTING_SHORTCUTS_HOLD_TIME (0.5)
1960 static Ecore_Timer *edit_shortcuts_timer = NULL;
1961 static Eina_Bool __toolbar_show_edit_shortcuts_timer_cb(void *data)
1963 struct appdata *ad = (struct appdata *)data;
1964 cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
1965 if (edit_shortcuts_timer) {
1966 edit_shortcuts_timer = NULL;
1968 toolbar_create_shortcuts_popup(ad);
1969 return ECORE_CALLBACK_CANCEL;
1972 static void __toolbar_create_show_edit_shortcuts_timer(void *data)
1974 struct appdata *ad = (struct appdata *)data;
1975 cam_ret_if(ad == NULL);
1976 if (edit_shortcuts_timer) {
1977 ecore_timer_del(edit_shortcuts_timer);
1978 edit_shortcuts_timer = NULL;
1980 edit_shortcuts_timer = ecore_timer_add(SETTING_SHORTCUTS_HOLD_TIME,
1981 __toolbar_show_edit_shortcuts_timer_cb,
1985 static void __toolbar_destroy_show_edit_shortcuts_timer(void)
1987 if (edit_shortcuts_timer) {
1988 ecore_timer_del(edit_shortcuts_timer);
1989 edit_shortcuts_timer = NULL;
1993 static void __toolbar_edje_signal_cb(void *data, Evas_Object *o,
1994 const char *emission, const char *source)
1996 DEBUG_TRACE("_________________################____________________\n");
1998 struct appdata *ad = (struct appdata *)data;
1999 cam_ret_if(ad == NULL);
2000 cam_app_timeout_checker_update();
2001 DEBUG_TRACE("ad->is_rotating = %d", ad->is_rotating);
2002 if (ad->is_rotating == TRUE) {
2003 DEBUG_TRACE("now in rotating target, do not accept signal");
2006 CamAppData *camapp = ad->camapp_handle;
2007 cam_ret_if(camapp == NULL);
2008 cam_ret_if(emission == NULL);
2009 cam_ret_if(source == NULL);
2012 unload_zoom_edje(ad);
2018 cam_tip_popup_destroy(ad);
2020 if (ad->edit_shortcuts_popup) {
2021 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2025 if(ad->battery_status == LOW_BATTERY_CRITICAL_STATUS)
2028 if (emission && source)
2029 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
2031 Evas_Object_Event_Cb func = NULL;
2033 if (strcmp(emission, "toolbar_0_press_sig") == 0) {
2034 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_PRESS_ICON);
2035 __toolbar_create_show_edit_shortcuts_timer(ad);
2036 } else if (strcmp(emission, "toolbar_0_release_sig") == 0) {
2037 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2038 __toolbar_destroy_show_edit_shortcuts_timer();
2039 } else if (strcmp(emission, "toolbar_0_click_sig") == 0) {
2040 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2042 if (ad->toolbar_setting_popup) {
2043 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2044 cam_toolbar_setting_popup_destroy(ad);
2047 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2048 cam_toolbar_setting_popup_create(ad);
2049 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2050 } else if (strcmp(emission, "toolbar_1_press_sig") == 0) {
2051 Evas_Object *icon = NULL;
2053 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2054 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2055 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2056 __toolbar_create_show_edit_shortcuts_timer(ad);
2057 } else if (strcmp(emission, "toolbar_1_release_sig") == 0) {
2058 Evas_Object *icon = NULL;
2060 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2061 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2062 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2063 __toolbar_destroy_show_edit_shortcuts_timer();
2064 } else if (strcmp(emission, "toolbar_1_click_sig") == 0) {
2065 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2067 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2068 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2069 if (menu_bar_no == CAM_MENU_BAR_LEFT_1) {
2070 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2071 cam_toolbar_setting_popup_destroy(ad);
2074 if (ad->toolbar_setting_popup) {
2075 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2076 cam_toolbar_setting_popup_destroy(ad);
2079 Evas_Object *icon = NULL;
2081 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2082 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2083 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2085 (*func)((void *)ad, NULL, o, NULL);
2087 } else if (strcmp(emission, "toolbar_2_press_sig") == 0) {
2088 Evas_Object *icon = NULL;
2090 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2091 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2092 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2093 __toolbar_create_show_edit_shortcuts_timer(ad);
2094 } else if (strcmp(emission, "toolbar_2_release_sig") == 0) {
2095 Evas_Object *icon = NULL;
2097 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2098 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2099 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2100 __toolbar_destroy_show_edit_shortcuts_timer();
2101 } else if (strcmp(emission, "toolbar_2_click_sig") == 0) {
2102 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2104 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2105 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2106 if (menu_bar_no == CAM_MENU_BAR_LEFT_2) {
2107 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2108 cam_toolbar_setting_popup_destroy(ad);
2111 if (ad->toolbar_setting_popup) {
2112 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2113 cam_toolbar_setting_popup_destroy(ad);
2115 Evas_Object *icon = NULL;
2117 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2118 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2119 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2121 (*func)((void *)ad, NULL, o, NULL);
2123 } else if (strcmp(emission, "toolbar_3_press_sig") == 0) {
2124 Evas_Object *icon = NULL;
2126 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2127 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2128 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2129 __toolbar_create_show_edit_shortcuts_timer(ad);
2130 } else if (strcmp(emission, "toolbar_3_release_sig") == 0) {
2131 Evas_Object *icon = NULL;
2133 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2134 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2135 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2136 __toolbar_destroy_show_edit_shortcuts_timer();
2137 } else if (strcmp(emission, "toolbar_3_click_sig") == 0) {
2138 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2140 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2141 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2142 if (menu_bar_no == CAM_MENU_BAR_LEFT_3) {
2143 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2144 cam_toolbar_setting_popup_destroy(ad);
2147 if (ad->toolbar_setting_popup) {
2148 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2149 cam_toolbar_setting_popup_destroy(ad);
2151 Evas_Object *icon = NULL;
2153 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2154 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2155 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2157 (*func)((void *)ad, NULL, o, NULL);
2159 } else if (strcmp(emission, "toolbar_4_press_sig") == 0) {
2160 Evas_Object *icon = NULL;
2162 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2163 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2164 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2165 __toolbar_create_show_edit_shortcuts_timer(ad);
2166 } else if (strcmp(emission, "toolbar_4_release_sig") == 0) {
2167 Evas_Object *icon = NULL;
2169 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2170 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2171 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2172 __toolbar_destroy_show_edit_shortcuts_timer();
2173 } else if (strcmp(emission, "toolbar_4_click_sig") == 0) {
2174 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2176 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2177 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2178 if (menu_bar_no == CAM_MENU_BAR_LEFT_4) {
2179 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2180 cam_toolbar_setting_popup_destroy(ad);
2183 if (ad->toolbar_setting_popup) {
2184 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2185 cam_toolbar_setting_popup_destroy(ad);
2187 Evas_Object *icon = NULL;
2189 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2190 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2191 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2193 (*func)((void *)ad, NULL, o, NULL);
2196 DEBUG_TRACE("invalid signal");
2200 int cam_toolbar_create(struct appdata *ad)
2203 cam_retv_if(ad == NULL, -1);
2204 CamAppData *cam_handle = ad->camapp_handle;
2205 cam_retv_if(cam_handle == NULL, -1);
2207 elm_object_part_content_unset(ad->ug_base, "toolbar_layout");
2209 /*note: create layout*/
2210 switch (ad->target_direction) {
2211 case CAM_TARGET_DIRECTION_LANDSCAPE:
2212 if (ad->toolbar_edje_landscape == NULL) {
2213 ad->toolbar_edje_landscape = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2214 cam_retv_if(ad->toolbar_edje_landscape == NULL, -1);
2216 ad->toolbar_edje = ad->toolbar_edje_landscape;
2218 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2219 if (ad->toolbar_edje_landscape_inverse == NULL) {
2220 ad->toolbar_edje_landscape_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2221 cam_retv_if(ad->toolbar_edje_landscape_inverse == NULL, -1);
2223 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2225 case CAM_TARGET_DIRECTION_PORTRAIT:
2226 if (ad->toolbar_edje_portrait == NULL) {
2227 ad->toolbar_edje_portrait = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2228 cam_retv_if(ad->toolbar_edje_portrait == NULL, -1);
2230 ad->toolbar_edje = ad->toolbar_edje_portrait;
2232 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2233 if (ad->toolbar_edje_portrait_inverse == NULL) {
2234 ad->toolbar_edje_portrait_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2235 cam_retv_if(ad->toolbar_edje_portrait_inverse == NULL, -1);
2237 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2240 DEBUG_TRACE("note: run into un-reached codes");
2242 cam_retv_if(ad->toolbar_edje == NULL, -1);
2244 elm_object_part_content_set(ad->ug_base, "toolbar_layout", ad->toolbar_edje);
2246 __toolbar_menu_item_create(ad);
2248 elm_object_signal_callback_del(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb);
2249 elm_object_signal_callback_add(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb, ad);
2251 __toolbar_shutter_button_create(ad);
2252 __toolbar_recording_button_create(ad);
2254 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL)
2255 __toolbar_quickview_item_create(ad);
2257 __toolbar_backbutton_create(ad);
2258 __toolbar_cafbutton_create(ad);
2260 cam_toolbar_update(ad);
2262 return EXIT_SUCCESS;
2265 void cam_toolbar_content_destroy(struct appdata *ad)
2267 cam_retm_if(ad == NULL, "appdata is NULL");
2268 __toolbar_menu_item_destroy(ad);
2269 __toolbar_shutter_button_destroy(ad);
2270 __toolbar_recording_button_destroy(ad);
2271 __toolbar_recording_stop_button_destroy(ad);
2272 __toolbar_quickview_item_destroy(ad);
2273 __toolbar_backbutton_destroy(ad);
2274 __toolbar_cafbutton_destroy(ad);
2277 void cam_toolbar_destroy(struct appdata *ad)
2279 cam_retm_if(ad == NULL, "appdata is NULL");
2280 cam_toolbar_content_destroy(ad);
2281 /*NOTE: all sub obj of toolbar will be deleted auto while toolar is deleted*/
2282 edje_object_signal_callback_del(_EDJ(ad->toolbar_edje), "*", "toolbar_signal", __toolbar_edje_signal_cb);
2283 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape);
2284 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape_inverse);
2285 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait);
2286 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait_inverse);
2288 ad->toolbar_edje = NULL;
2290 REMOVE_TIMER(ad->setting_toolbar_hide_timer);
2292 /*elm_all_flush();*/
2293 cam_elm_cache_flush();
2296 void cam_toolbar_update(struct appdata *ad)
2299 cam_retm_if(ad == NULL, "appdata is NULL");
2300 CamAppData *camapp = ad->camapp_handle;
2301 cam_retm_if(camapp == NULL, "camapp is NULL");
2302 CamShotMode shotmode = camapp->shooting_mode;
2304 __toolbar_menu_icon_update(ad);
2306 if (ad->timer_activated) {
2307 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2308 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2310 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2311 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2312 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2314 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2315 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2318 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2319 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2322 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2324 case CAM_SINGLE_MODE:
2325 case CAM_SELF_SINGLE_MODE:
2326 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2328 if((ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) && (ad->exe_args->allow_switch == FALSE)){
2329 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2330 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2331 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2333 if (cam_is_enabled_menu(ad, CAM_MENU_BURST_SHOT_MODE)
2334 && camapp->continuous_shot_data
2335 && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING) {
2336 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_DIM);
2337 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_PRESS);
2338 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2340 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2341 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2342 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2345 __toolbar_recording_stop_button_destroy(ad);
2347 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2348 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2353 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2354 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2355 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2356 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2357 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2358 __toolbar_recording_stop_button_destroy(ad);
2359 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2363 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2365 if (ad->is_recording) {
2366 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2367 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2369 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2371 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2372 __toolbar_recording_stop_button_create(ad);
2374 if (show_caf_button)
2375 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2377 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2378 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2381 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2382 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2384 if((ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL) && (ad->exe_args->allow_switch == FALSE)){
2385 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2387 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2390 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2391 __toolbar_recording_stop_button_destroy(ad);
2393 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2395 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2396 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2403 int cam_toolbar_rotate(struct appdata *ad)
2406 cam_retv_if(ad == NULL, -1);
2407 CamAppData *cam_handle = ad->camapp_handle;
2408 cam_retv_if(cam_handle == NULL, -1);
2409 cam_toolbar_setting_popup_destroy(ad);
2410 cam_toolbar_destroy(ad);
2412 switch (ad->target_direction) {
2413 case CAM_TARGET_DIRECTION_LANDSCAPE:
2414 if (ad->toolbar_edje_landscape == NULL) {
2415 cam_toolbar_create(ad);
2417 ad->toolbar_edje = ad->toolbar_edje_landscape;
2419 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2420 if (ad->toolbar_edje_landscape_inverse == NULL) {
2421 cam_toolbar_create(ad);
2423 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2425 case CAM_TARGET_DIRECTION_PORTRAIT:
2426 if (ad->toolbar_edje_portrait == NULL) {
2427 cam_toolbar_create(ad);
2429 ad->toolbar_edje = ad->toolbar_edje_portrait;
2431 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2432 if (ad->toolbar_edje_portrait_inverse == NULL) {
2433 cam_toolbar_create(ad);
2435 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2438 DEBUG_TRACE("note: run into un-reached codes");
2441 evas_object_show(ad->toolbar_edje);
2443 return EXIT_SUCCESS;
2446 int show_toolbar_edje(struct appdata *ad)
2448 cam_retv_if(ad == NULL, -1);
2449 if (ad->toolbar_edje == NULL) {
2452 if (!ad->toolbar_hided) {
2453 cam_toolbar_update(ad);
2454 evas_object_show(ad->toolbar_edje);
2456 hide_toolbar_edje(ad);
2459 return EXIT_SUCCESS;
2462 int hide_toolbar_edje(struct appdata *ad)
2464 cam_retv_if(ad == NULL, -1);
2465 evas_object_hide(ad->toolbar_edje);
2466 return EXIT_SUCCESS;
2469 gboolean toolbar_update_quickview_thumbnail_no_animation(struct appdata *ad)
2471 cam_retv_if(ad == NULL, FALSE);
2472 CamAppData *camapp = ad->camapp_handle;
2473 cam_retv_if(camapp == NULL, FALSE);
2474 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);
2475 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2477 if (camapp->thumbnail_name != NULL) {
2478 ad->toolbar.quickview_item.thumbnail_image = elm_bg_add(ad->toolbar.quickview_item.edje);
2479 cam_retv_if(ad->toolbar.quickview_item.thumbnail_image == NULL, FALSE);
2480 elm_bg_file_set(ad->toolbar.quickview_item.thumbnail_image, camapp->thumbnail_name, NULL);
2482 Evas_Object *layout = elm_layout_edje_get(ad->toolbar.quickview_item.edje);
2483 Evas_Object *thumbnail_area = (Evas_Object *) edje_object_part_object_get(layout, "thumbnail_area");
2484 cam_retv_if(thumbnail_area == NULL, FALSE);
2485 Evas_Coord x = 0, y = 0, w = 0, h = 0;
2486 evas_object_geometry_get(thumbnail_area, &x, &y, &w, &h);
2487 evas_object_resize(ad->toolbar.quickview_item.thumbnail_image, w, h);
2488 DEBUG_TRACE("%d %d %d %d", x, y, w, h);
2490 if (ad->toolbar.quickview_item.edje) {
2491 elm_object_part_content_set(ad->toolbar.quickview_item.edje,
2492 "thumbnail", ad->toolbar.quickview_item.thumbnail_image);
2493 evas_object_show(ad->toolbar.quickview_item.edje);
2501 gboolean toolbar_update_quickview_thumbnail(struct appdata *ad)
2503 cam_retv_if(ad == NULL, FALSE);
2504 CamAppData *camapp = ad->camapp_handle;
2505 cam_retv_if(camapp == NULL, FALSE);
2506 cam_retv_if(ad->evas == NULL, FALSE);
2508 cam_retv_if(ad->toolbar.quickview_item.edje == NULL, FALSE);
2509 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2511 cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL);
2516 static void setting_ctxpopup_destroy(struct appdata *ad)
2518 cam_retm_if(ad == NULL, "appdata is NULL");
2520 DEL_EVAS_OBJECT(ad->sub_menu_group);
2522 if (ad->sub_genlist != NULL) {
2523 elm_genlist_clear(ad->sub_genlist);
2524 evas_object_del(ad->sub_genlist);
2525 ad->sub_genlist = NULL;
2528 DEL_EVAS_OBJECT(ad->setting_ctxpopup);
2529 ad->ctxpopup_area = NULL;
2530 ad->sub_menu_type = CAM_MENU_EMPTY;
2532 if (ad->toolbar_setting_popup == NULL)
2533 __set_show_state_preview_obj(ad, TRUE);
2536 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow)
2538 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2540 if (ad->setting_ctxpopup)
2541 setting_ctxpopup_destroy(ad);
2543 if (ad->toolbar_edje == NULL)
2544 DEBUG_TRACE("error occur");
2546 __set_show_state_preview_obj(ad, FALSE);
2548 ad->ctxpopup_area = (Evas_Object *)
2549 edje_object_part_object_get(elm_layout_edje_get
2550 (ad->toolbar_edje), "popup_area");
2551 ad->setting_ctxpopup = elm_ctxpopup_add(ad->ctxpopup_area);
2552 elm_object_scroll_hold_push(ad->setting_ctxpopup);
2554 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera");
2556 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera_no_arrow");
2557 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2558 return EXIT_SUCCESS;
2561 static int setting_toolbar_popup_create(struct appdata *ad)
2563 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2565 if (ad->setting_ctxpopup)
2566 setting_ctxpopup_destroy(ad);
2568 if (ad->toolbar_edje == NULL)
2569 DEBUG_TRACE("error occur");
2571 ad->toolbar_setting_popup_area = (Evas_Object *)
2572 edje_object_part_object_get(elm_layout_edje_get
2573 (ad->toolbar_edje), "setting_popup");
2574 ad->toolbar_setting_popup = elm_ctxpopup_add(ad->toolbar_setting_popup_area);
2575 elm_object_scroll_hold_push(ad->toolbar_setting_popup);
2576 elm_object_style_set(ad->toolbar_setting_popup, "beat_winset_test/camera");
2577 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2578 return EXIT_SUCCESS;
2581 static int setting_shortcuts_popup_create(struct appdata *ad)
2583 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2585 if (ad->setting_ctxpopup)
2586 setting_ctxpopup_destroy(ad);
2588 if (ad->toolbar_edje == NULL)
2589 DEBUG_TRACE("error occur");
2591 ad->edit_shortcuts_popup = (Evas_Object *)
2592 edje_object_part_object_get(elm_layout_edje_get
2593 (ad->toolbar_edje), "shortcuts_popup");
2595 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
2596 ad->edit_shortcuts_popup_description =
2597 cam_app_load_edj(ad->toolbar_edje, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME,
2598 "camera/shortcuts/layout/description");
2600 /*TODO: need id: IDS_CAM_POP_TAP_AND_HOLD_AN_ICON_AND_MOVE_TO_EDIT_SHORTCUTS*/
2601 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"));
2602 elm_object_scroll_hold_push(ad->edit_shortcuts_popup);
2603 return EXIT_SUCCESS;
2606 int cam_guideline_create(struct appdata *ad)
2608 cam_retv_if(ad == NULL, -1);
2609 cam_retv_if(ad->camapp_handle == NULL, -1);
2611 DEL_EVAS_OBJECT(ad->guideline_edje);
2612 elm_object_part_content_unset(ad->ug_base, "guideline_layout");
2614 if (ad->guideline_edje == NULL) {
2615 ad->guideline_edje = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, "guideline");
2618 cam_retv_if(ad->guideline_edje == NULL, -1);
2619 elm_object_part_content_set(ad->ug_base, "guideline_layout", ad->guideline_edje);
2621 gboolean wide_mode = FALSE;
2626 ret = cam_mm_get_video_size(&p_width, &p_height);
2629 DEBUG_TRACE("Middle Ware error occur!");
2633 DEBUG_TRACE("p_width == %d ,p_height = %d" ,p_width , p_height);
2634 if (ad->camapp_handle->camera_mode == CAM_CAMERA_MODE) {
2635 wide_mode = cam_utils_check_wide_resolution(p_width, p_height);
2636 } else if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE) {
2637 if ( p_width > PREVIEW_W ) {
2644 if (p_width == 1392 && p_height == 1392) {
2645 switch (ad->target_direction) {
2646 case CAM_TARGET_DIRECTION_LANDSCAPE:
2647 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2648 DEBUG_TRACE("landscape");
2649 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2650 "guide_line,1,2,normal", "prog_guideline");
2651 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2652 "guide_line,3,4,square", "prog_guideline");
2654 case CAM_TARGET_DIRECTION_PORTRAIT:
2655 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2656 DEBUG_TRACE("portrait");
2657 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2658 "guide_line,1,2,vertical,square", "prog_guideline");
2659 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2660 "guide_line,3,4,vertical,normal", "prog_guideline");
2665 DEBUG_TRACE("hor,wide_mode");
2666 switch (ad->target_direction) {
2667 case CAM_TARGET_DIRECTION_LANDSCAPE:
2668 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2669 DEBUG_TRACE("landscape");
2670 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2671 "guide_line,1,2,normal", "prog_guideline");
2672 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2673 "guide_line,3,4,wide", "prog_guideline");
2675 case CAM_TARGET_DIRECTION_PORTRAIT:
2676 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2677 DEBUG_TRACE("portrait");
2678 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2679 "guide_line,1,2,vertical,wide", "prog_guideline");
2680 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2681 "guide_line,3,4,vertical,normal", "prog_guideline");
2686 DEBUG_TRACE("hor,normal mode");
2687 switch (ad->target_direction) {
2688 case CAM_TARGET_DIRECTION_LANDSCAPE:
2689 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2690 DEBUG_TRACE("landscape");
2691 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2692 "guide_line,1,2,normal", "prog_guideline");
2693 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2694 "guide_line,3,4,normal", "prog_guideline");
2696 case CAM_TARGET_DIRECTION_PORTRAIT:
2697 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2698 DEBUG_TRACE("portrait");
2699 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2700 "guide_line,1,2,vertical,normal", "prog_guideline");
2701 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2702 "guide_line,3,4,vertical,normal", "prog_guideline");
2708 /*evas_object_lower(ad->guideline_edje);*/
2709 evas_object_show(ad->guideline_edje);
2711 DEBUG_TRACE("over");
2715 static void __volume_key_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2717 cam_retm_if(obj == NULL, "obj is NULL");
2718 struct appdata *ad = (struct appdata *)cam_appdata_get();
2719 cam_retm_if(ad == NULL, "appdata is NULL");
2726 case CAM_MENU_VOLUME_KEY_ZOOM:
2728 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_ZOOM);
2729 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2732 case CAM_MENU_VOLUME_KEY_SHUTTER:
2734 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_SHUTTER);
2735 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2742 evas_object_show(ad->toolbar_setting_popup);
2743 if (ad->setting_select_item)
2744 elm_genlist_item_update(ad->setting_select_item);
2745 __update_menubar_icon_by_index(ad, CAM_MENU_VOLUME_KEY);
2747 setting_ctxpopup_destroy(ad);
2748 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2751 static void __storage_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2753 cam_retm_if(obj == NULL, "obj is NULL");
2754 struct appdata *ad = (struct appdata *)cam_appdata_get();
2755 cam_retm_if(ad == NULL, "appdata is NULL");
2763 case CAM_MENU_STORAGE_PHONE:
2765 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2766 cam_handle_value_set(ad, PROP_STORAGE, &value);
2769 case CAM_MENU_STORAGE_MMC:
2771 if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
2772 if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
2776 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2777 cam_handle_value_set(ad, PROP_STORAGE, &value);
2778 cam_info(LOG_UI, "MMC card is removed");
2779 cam_storage_warning_popup();
2781 CAM_GVALUE_SET_INT(value, CAM_STORAGE_EXTERNAL);
2782 cam_handle_value_set(ad, PROP_STORAGE, &value);
2791 evas_object_show(ad->toolbar_setting_popup);
2792 if (ad->setting_select_item)
2793 elm_genlist_item_update(ad->setting_select_item);
2794 __update_menubar_icon_by_index(ad, CAM_MENU_STORAGE);
2796 setting_ctxpopup_destroy(ad);
2797 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2800 static void __wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
2802 cam_retm_if(obj == NULL, "obj is NULL");
2803 struct appdata *ad = (struct appdata *)cam_appdata_get();
2804 cam_retm_if(ad == NULL, "appdata is NULL");
2808 int wb = cam_convert_menu_item_to_mmfw_value((int)data);
2811 if (ad->camapp_handle->white_balance != wb) {
2813 CAM_GVALUE_SET_INT(value, wb);
2814 cam_handle_value_set(ad, PROP_WB, &value);
2816 evas_object_show(ad->toolbar_setting_popup);
2817 if (ad->setting_select_item)
2818 elm_genlist_item_update(ad->setting_select_item);
2819 __update_menubar_icon_by_index(ad, CAM_MENU_WHITE_BALANCE);
2821 setting_ctxpopup_destroy(ad);
2822 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2825 static void __iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
2827 cam_retm_if(obj == NULL, "obj is NULL");
2828 struct appdata *ad = (struct appdata *)cam_appdata_get();
2829 cam_retm_if(ad == NULL, "appdata is NULL");
2833 int iso = cam_convert_menu_item_to_mmfw_value((int)data);
2836 if (ad->camapp_handle->iso != iso) {
2838 CAM_GVALUE_SET_INT(value, iso);
2839 cam_handle_value_set(ad, PROP_ISO, &value);
2841 evas_object_show(ad->toolbar_setting_popup);
2842 if (ad->setting_select_item)
2843 elm_genlist_item_update(ad->setting_select_item);
2844 __update_menubar_icon_by_index(ad, CAM_MENU_ISO);
2846 setting_ctxpopup_destroy(ad);
2847 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2849 static void __metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
2851 cam_retm_if(obj == NULL, "obj is NULL");
2852 struct appdata *ad = (struct appdata *)cam_appdata_get();
2853 cam_retm_if(ad == NULL, "appdata is NULL");
2857 int metering = cam_convert_menu_item_to_mmfw_value((int)data);
2859 /* set metering value */
2860 if (ad->camapp_handle->auto_exposure != metering) {
2862 CAM_GVALUE_SET_INT(value, metering);
2863 cam_handle_value_set(ad, PROP_METERING, &value);
2865 evas_object_show(ad->toolbar_setting_popup);
2866 if (ad->setting_select_item)
2867 elm_genlist_item_update(ad->setting_select_item);
2868 __update_menubar_icon_by_index(ad, CAM_MENU_METERING);
2870 setting_ctxpopup_destroy(ad);
2871 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2874 static void __timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
2876 cam_retm_if(obj == NULL, "obj is NULL");
2877 struct appdata *ad = (struct appdata *)cam_appdata_get();
2878 cam_retm_if(ad == NULL, "appdata is NULL");
2882 int index = (int)data - CAM_MENU_TIMER_OFF;
2883 DEBUG_TRACE("index : [%d]", index);
2884 cam_ret_if(index < 0 || index >= CAM_SETTINGS_TIMER_NUMS);
2886 /* set timer value */
2887 if (ad->camapp_handle->timer != index) {
2889 CAM_GVALUE_SET_INT(value, index);
2890 cam_handle_value_set(ad, PROP_TIMER, &value);/*set ad->camapp_handle->timer*/
2891 evas_object_show(ad->toolbar_setting_popup);
2892 if (ad->setting_select_item)
2893 elm_genlist_item_update(ad->setting_select_item);
2894 __update_menubar_icon_by_index(ad, CAM_MENU_TIMER);
2897 setting_ctxpopup_destroy(ad);
2898 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2901 static void __reset_settings_launch(void)
2903 GValue i_value = { 0, };
2904 GValue b_value = { 0, };
2905 struct appdata *ad = (struct appdata *)cam_appdata_get();
2906 CamAppData *camapp = NULL;
2908 cam_debug(LOG_CAM, "!!!!!!!!!cam_app_reset_settings_launch_cb");
2910 cam_retm_if(ad == NULL, " appdata is NULL");
2911 camapp = ad->camapp_handle;
2912 cam_retm_if(camapp == NULL, " cam_handle is NULL");
2914 g_value_init(&i_value, G_TYPE_INT);
2915 g_value_init(&b_value, G_TYPE_BOOLEAN);
2917 camapp->device_type = CAM_DEVICE_MEGA;
2920 g_value_set_int(&i_value, SHOTMODE_DEFAULT);
2921 cam_handle_value_set(ad, PROP_SHOT_MODE, &i_value);
2924 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
2925 && ad->exe_args->size_limit > 0) {
2926 g_value_set_int(&i_value, CAM_RECORD_MMS);
2928 g_value_set_int(&i_value, RECMODE_DEFAULT);
2930 cam_handle_value_set(ad, PROP_REC_MODE, &i_value);
2933 g_value_set_int(&i_value, PG_MODE_DEFAULT);
2934 cam_handle_value_set(ad, PROP_SCENE_MODE, &i_value);
2937 g_value_set_int(&i_value, AF_DEFAULT);
2938 cam_handle_value_set(ad, PROP_AF_MODE, &i_value);
2941 g_value_set_int(&i_value, TIMER_DEFAULT);
2942 cam_handle_value_set(ad, PROP_TIMER, &i_value);
2945 g_value_set_int(&i_value, WB_DEFAULT);
2946 cam_handle_value_set(ad, PROP_WB, &i_value);
2949 g_value_set_int(&i_value, EFFECT_DEFAULT);
2950 cam_handle_value_set(ad, PROP_EFFECT, &i_value);
2953 g_value_set_int(&i_value, ISO_DEFAULT);
2954 cam_handle_value_set(ad, PROP_ISO, &i_value);
2957 g_value_set_int(&i_value, AE_DEFAULT);
2958 cam_handle_value_set(ad, PROP_METERING, &i_value);
2961 g_value_set_int(&i_value, AHS_DEFAULT);
2962 cam_handle_value_set(ad, PROP_AHS, &i_value);
2964 /* wild dynamic range */
2965 g_value_set_int(&i_value, WDR_DEFAULT);
2966 cam_handle_value_set(ad, PROP_WDR, &i_value);
2969 g_value_set_int(&i_value, QUALITY_DEFAULT);
2970 cam_handle_value_set(ad, PROP_IMAGE_QUALITY, &i_value);
2973 g_value_set_int(&i_value, QUALITY_DEFAULT);
2974 cam_handle_value_set(ad, PROP_VIDEO_QUALITY, &i_value);
2977 g_value_set_int(&i_value, FALSE);
2978 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &i_value);
2981 g_value_set_boolean(&b_value, GUIDE_LINE_DEFAULT);
2982 cam_handle_value_set(ad, PROP_GUIDELINE, &b_value);
2983 settings_guideline_refresh(ad);
2986 g_value_set_boolean(&b_value, FALSE);
2987 cam_handle_value_set(ad, PROP_REVIEW, &b_value);
2990 g_value_set_boolean(&b_value, FALSE);
2991 cam_handle_value_set(ad, PROP_GPS, &b_value);
2994 g_value_set_int(&i_value, SHUTTER_SOUND_DEFAULT);
2995 cam_handle_value_set(ad, PROP_SHUTTER_SOUND, &i_value);
2998 cam_mm_set_shutter_sound(SOUND_DEFAULT);
2999 ad->camapp_handle->shutter_sound = SHUTTER_SOUND_DEFAULT;
3001 /* audio recording */
3002 g_value_set_boolean(&b_value, TRUE);
3003 cam_handle_value_set(ad, PROP_AUDIO_REC, &b_value);
3006 g_value_set_int(&i_value, STORAGE_DEFAULT);
3007 cam_handle_value_set(ad, PROP_STORAGE, &i_value);
3010 g_value_set_int(&i_value, BRIGHTNESS_DEFAULT);
3011 cam_handle_value_set(ad, PROP_BRIGHTNESS, &i_value);
3014 g_value_set_int(&i_value, IMAGE_RESOLUTION_DEFAULT);
3015 cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &i_value);
3017 g_value_set_int(&i_value, REC_RESOLUTION_DEFAULT);
3018 cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &i_value);
3020 if (ad->indicator_edje) {
3021 /* delete indicator */
3022 evas_object_hide(ad->indicator_edje);
3023 cam_indicator_destory(ad);
3025 cam_indicator_create(ad);
3028 if (camapp->camera_mode == CAM_CAMERA_MODE) {
3029 g_value_set_int(&i_value, FLASH_DEFAULT);
3031 g_value_set_int(&i_value, REC_FLASH_DEFAULT);
3033 cam_handle_value_set(ad, PROP_FLASH, &i_value);
3035 /* Outdoor visibility */
3036 g_value_set_boolean(&b_value, FALSE);
3037 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &b_value);
3040 g_value_set_boolean(&b_value, FALSE);
3041 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &b_value);
3045 g_value_set_int(&i_value, ZOOM_DEFAULT);
3046 cam_handle_value_set(ad, PROP_ZOOM, &i_value);
3048 /* Size limit type */
3049 g_value_set_int(&i_value, CAM_MM_SIZE_LIMIT_TYPE_BYTE);
3050 cam_handle_value_set(ad, PROP_SIZE_LIMIT_TYPE, &i_value);
3053 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
3054 && ad->exe_args->size_limit > 0) {
3055 g_value_set_int(&i_value, CAM_REC_MMS_MAX_SIZE);
3057 g_value_set_int(&i_value, REC_SIZE_LIMIT_DEFAULT);
3059 cam_handle_value_set(ad, PROP_SIZE_LIMIT, &i_value);
3062 g_value_set_int(&i_value, TIMER_DEFAULT);
3063 cam_handle_value_set(ad, PROP_TIMER, &i_value);
3066 g_value_set_int(&i_value, IMAGE_COUNT_DEFAULT);
3067 cam_handle_value_set(ad, PROP_IMAGE_COUNT, &i_value);
3069 CAM_GVALUE_SET_INT(i_value, CAM_VOLUME_KEY_ZOOM);
3070 cam_handle_value_set(ad, PROP_VOLUME_KEY, &i_value);
3072 camapp->continuous_shot_data = NULL;
3073 camapp->enable_touch_af = TRUE;
3074 camapp->burst_shot = TRUE;
3077 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3079 TRUE);/*note: set show pop tip flag*/
3080 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3081 PROP_SHORTCUTS_INIT_PART_INDEX,
3082 FALSE);/*note: set shorcuts init flag*/
3085 static void __restore_defaults_popup_cb_ok_cb(void *data, Evas_Object *obj, void *event_info)
3087 struct appdata *ad = (struct appdata *)cam_appdata_get();
3088 cam_retm_if(ad == NULL, " appdata is NULL");
3089 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3091 DEL_EVAS_OBJECT(ad->confirm_popup);
3093 hide_toolbar_edje(ad);
3094 cam_app_preview_stop();
3096 __reset_settings_launch();
3097 __toolbar_menu_item_reset(ad);
3101 show_toolbar_edje(ad);
3103 if (!cam_app_preview_start(ad)) {
3104 cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
3109 static void __restore_defaults_popup_cb_cancel_cb(void *data, Evas_Object *obj, void *event_info)
3111 struct appdata *ad = (struct appdata *)cam_appdata_get();
3112 cam_retm_if(ad == NULL, " appdata is NULL");
3113 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3115 DEL_EVAS_OBJECT(ad->confirm_popup);
3118 static void __effects_selected_cb(void *data, Evas_Object *obj, void *event_info)
3120 cam_retm_if(obj == NULL, "obj is NULL");
3121 struct appdata *ad = (struct appdata *)cam_appdata_get();
3122 cam_retm_if(ad == NULL, "appdata is NULL");
3127 int effect = CAM_SCENE_NONE;
3128 switch ((int)data) {
3129 case CAM_MENU_EFFECT_NONE:
3130 effect = CAMERA_ATTR_EFFECT_NONE;
3132 case CAM_MENU_EFFECT_NEGATIVE:
3133 effect = CAMERA_ATTR_EFFECT_NEGATIVE;
3135 case CAM_MENU_EFFECT_BLACKANDWHITE:
3136 effect = CAMERA_ATTR_EFFECT_MONO;
3138 case CAM_MENU_EFFECT_SEPIA:
3139 effect = CAMERA_ATTR_EFFECT_SEPIA;
3145 if (ad->camapp_handle->effect != effect) {
3146 CAM_GVALUE_SET_INT(value, effect);
3147 cam_handle_value_set(ad, PROP_EFFECT, &value);
3150 if (ad->setting_select_item)
3151 elm_genlist_item_update(ad->setting_select_item);
3152 __update_menubar_icon_by_index(ad, CAM_MENU_EFFECTS);
3154 setting_ctxpopup_destroy(ad);
3155 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3158 static void __shot_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3160 cam_retm_if(obj == NULL, "obj is NULL");
3161 struct appdata *ad = (struct appdata *)cam_appdata_get();
3162 cam_retm_if(ad == NULL, "appdata is NULL");
3166 switch ((int)data) {
3167 case CAM_MENU_SHOOTING_SINGLE:
3168 shot_mode_set(ad, CAM_SINGLE_MODE);
3170 case CAM_MENU_SHOOTING_SELF_SINGLE:
3171 shot_mode_set(ad, CAM_SELF_SINGLE_MODE);
3177 evas_object_show(ad->toolbar_setting_popup);
3178 if (ad->setting_select_item) {
3179 elm_genlist_item_update(ad->setting_select_item);
3182 __toolbar_menu_icon_update(ad);
3184 setting_ctxpopup_destroy(ad);
3185 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3186 cam_toolbar_setting_popup_destroy(ad);
3189 static void __scene_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3191 cam_retm_if(obj == NULL, "obj is NULL");
3192 struct appdata *ad = (struct appdata *)cam_appdata_get();
3193 cam_retm_if(ad == NULL, "appdata is NULL");
3199 int scene = CAM_MENU_SCENE_AUTO;
3200 switch ((int)data) {
3201 case CAM_MENU_SCENE_AUTO:
3202 scene = CAM_SCENE_NONE;
3204 case CAM_MENU_SCENE_PORTRAIT:
3205 scene = CAM_SCENE_PORTRAIT;
3207 case CAM_MENU_SCENE_LANDSCAPE:
3208 scene = CAM_SCENE_LANDSCAPE;
3210 case CAM_MENU_SCENE_NIGHT:
3211 scene = CAM_SCENE_NIGHT;
3213 case CAM_MENU_SCENE_SPORTS:
3214 scene = CAM_SCENE_SPORTS;
3216 case CAM_MENU_SCENE_PARTY:
3217 scene = CAM_SCENE_PARTY;
3219 case CAM_MENU_SCENE_BEACHSNOW:
3220 scene = CAM_SCENE_BEACHSNOW;
3222 case CAM_MENU_SCENE_SUNSET:
3223 scene = CAM_SCENE_SUNSET;
3225 case CAM_MENU_SCENE_DUSKDAWN:
3226 scene = CAM_SCENE_DUSKDAWN;
3228 case CAM_MENU_SCENE_FALL:
3229 scene = CAM_SCENE_FALL;
3231 case CAM_MENU_SCENE_FIREWORK:
3232 scene = CAM_SCENE_FIREWORK;
3234 case CAM_MENU_SCENE_TEXT:
3235 scene = CAM_SCENE_TEXT;
3237 case CAM_MENU_SCENE_CANDLELIGHT:
3238 scene = CAM_SCENE_CANDLELIGHT;
3240 case CAM_MENU_SCENE_BACKLIGHT:
3241 scene = CAM_SCENE_BACKLIGHT;
3243 case CAM_MENU_SCENE_SHOW_WINDOW:
3244 scene = CAM_SCENE_SHOW_WINDOW;
3250 if (ad->camapp_handle->scene_mode != scene) {
3251 CAM_GVALUE_SET_INT(value, scene);
3252 cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
3255 if (ad->setting_select_item)
3256 elm_genlist_item_update(ad->setting_select_item);
3258 __toolbar_menu_icon_update(ad);
3260 setting_ctxpopup_destroy(ad);
3261 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3262 __update_setting_popup(ad);
3265 static void __focus_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3267 cam_retm_if(obj == NULL, "obj is NULL");
3268 struct appdata *ad = (struct appdata *)cam_appdata_get();
3269 cam_retm_if(ad == NULL, "appdata is NULL");
3274 int focus_mode = CAM_FOCUS_AUTO;
3275 switch ((int)data) {
3276 case CAM_MENU_FOCUS_AUTO:
3277 focus_mode = CAM_FOCUS_AUTO;
3279 case CAM_MENU_FOCUS_MACRO:
3280 focus_mode = CAM_FOCUS_MACRO;
3282 case CAM_MENU_FOCUS_FACE_DETECTION:
3283 focus_mode = CAM_FOCUS_FACE;
3289 CAM_GVALUE_SET_INT(value, focus_mode);
3290 cam_handle_value_set(ad, PROP_AF_MODE, &value);
3292 if (ad->setting_select_item)
3293 elm_genlist_item_update(ad->setting_select_item);
3294 __update_menubar_icon_by_index(ad, CAM_MENU_FOCUS_MODE);
3296 setting_ctxpopup_destroy(ad);
3297 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3298 __update_setting_popup(ad);
3301 static void __record_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3303 cam_retm_if(obj == NULL, "obj is NULL");
3304 struct appdata *ad = (struct appdata *)cam_appdata_get();
3305 cam_retm_if(ad == NULL, "appdata is NULL");
3310 int record_mode = CAM_RECORD_NORMAL;
3311 switch ((int)data) {
3312 case CAM_MENU_RECORDING_MODE_NORMAL:
3313 record_mode = CAM_RECORD_NORMAL;
3315 case CAM_MENU_RECORDING_MODE_LIMIT:
3316 record_mode = CAM_RECORD_MMS;
3318 case CAM_MENU_RECORDING_MODE_SLOW:
3319 record_mode = CAM_RECORD_SLOW;
3321 case CAM_MENU_RECORDING_MODE_FAST:
3322 record_mode = CAM_RECORD_FAST;
3324 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
3325 record_mode = CAM_RECORD_SELF;
3327 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
3328 record_mode = CAM_RECORD_SELF_MMS;
3334 if (ad->camapp_handle->recording_mode != record_mode) {
3335 CAM_GVALUE_SET_INT(value, record_mode);
3336 cam_handle_value_set(ad, PROP_REC_MODE, &value);
3339 evas_object_show(ad->toolbar_setting_popup);
3340 if (ad->setting_select_item) {
3341 elm_genlist_item_update(ad->setting_select_item);
3344 __toolbar_menu_icon_update(ad);
3346 setting_ctxpopup_destroy(ad);
3347 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3348 cam_toolbar_setting_popup_destroy(ad);
3351 static void __update_menubar_icon_by_index(struct appdata *ad, int index)
3353 Evas_Object_Event_Cb func = NULL;
3354 int menubar_no = -1;
3355 menubar_no = __get_menubar_no_by_index(ad, index);
3356 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
3357 Evas_Object *icon = NULL;
3358 icon = ad->toolbar_menu_arrays[menubar_no].icon;
3360 __toolbar_menu_type_update(icon, index, ad, BUTTON_STATE_NORMAL, &func);
3363 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info)
3365 cam_retm_if(obj == NULL, "obj is NULL");
3366 struct appdata *ad = (struct appdata *)cam_appdata_get();
3367 cam_retm_if(ad == NULL, "appdata is NULL");
3371 int flash_value = 0;
3373 switch ((int)data) {
3374 case CAM_MENU_FLASH_OFF:
3375 flash_value = CAM_FLASH_OFF;
3377 case CAM_MENU_FLASH_ON:
3378 flash_value = CAM_FLASH_ON;
3380 case CAM_MENU_FLASH_AUTO:
3381 flash_value = CAM_FLASH_AUTO;
3384 flash_value = CAM_FLASH_OFF;
3387 CAM_GVALUE_SET_INT(value, flash_value);
3388 cam_handle_value_set(ad, PROP_FLASH, &value);
3389 __update_menubar_icon_by_index(ad, CAM_MENU_FLASH);
3390 if (ad->setting_select_item)
3391 elm_genlist_item_update(ad->setting_select_item);
3393 setting_ctxpopup_destroy(ad);
3394 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3397 static void toolbar_move_with_scale(Evas_Object *eo, double x, double y)
3399 DEBUG_TRACE("x = %f, y = %f" , x, y);
3400 DEBUG_TRACE("elm_config_scale_get() = %f" , elm_config_scale_get());
3401 evas_object_move(eo, x * elm_config_scale_get(), y * elm_config_scale_get());
3404 /*note: @mouse_point is the coordinate of mouse click, output is scaled*/
3405 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction,
3410 int ver_x, ver_y, h_x, h_y;
3411 ver_x = ver_y = h_x = h_y = 0;
3412 switch (target_direction) {
3413 case CAM_TARGET_DIRECTION_LANDSCAPE:
3414 *x = (int)(SETTING_HOR_CTX_POPUP_X * elm_config_scale_get());
3417 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3418 *x = (int)((1280 - SETTING_HOR_CTX_POPUP_X) * elm_config_scale_get());
3421 case CAM_TARGET_DIRECTION_PORTRAIT:
3422 *x = (int)(SETTING_VER_CTX_POPUP_X * elm_config_scale_get());;
3425 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3426 *x = (int)((720 - SETTING_VER_CTX_POPUP_X) * elm_config_scale_get());
3430 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3435 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y)
3437 switch (target_direction) {
3438 case CAM_TARGET_DIRECTION_LANDSCAPE:
3439 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3440 *out_x = (int)((MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3441 *out_y = (int)(0.9*MAIN_H);
3443 case CAM_TARGET_DIRECTION_PORTRAIT:
3444 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3445 *out_x = (int)((VER_MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3446 *out_y = (int)(0.8*VER_MAIN_H);
3449 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3453 /*note: in this func, all coordinate is not scale*/
3454 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y)
3456 int menu_bar_no = menubar_no;
3457 int ver_x, ver_y, hor_x, hor_y;
3458 ver_x = ver_y = hor_x = hor_y = 0;
3460 switch (menu_bar_no) {
3461 case CAM_MENU_BAR_LEFT_0:
3467 case CAM_MENU_BAR_LEFT_1:
3473 case CAM_MENU_BAR_LEFT_2:
3479 case CAM_MENU_BAR_LEFT_3:
3485 case CAM_MENU_BAR_LEFT_4:
3492 DEBUG_TRACE("input para,error!");
3496 switch (target_direction) {
3497 case CAM_TARGET_DIRECTION_LANDSCAPE:
3501 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3505 case CAM_TARGET_DIRECTION_PORTRAIT:
3509 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3514 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3519 static int __get_menubar_no_by_index(struct appdata *ad, int index)
3523 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
3524 if (index == ad->toolbar_menu_arrays[i].menu_type) {
3528 return CAM_MENU_BAR_LEFT_INVALID;
3531 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y)
3534 switch (target_direction) {
3535 case CAM_TARGET_DIRECTION_LANDSCAPE:
3536 elm_ctxpopup_direction_priority_set(obj,
3537 ELM_CTXPOPUP_DIRECTION_RIGHT,
3538 ELM_CTXPOPUP_DIRECTION_UP,
3539 ELM_CTXPOPUP_DIRECTION_LEFT,
3540 ELM_CTXPOPUP_DIRECTION_DOWN);
3543 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3544 elm_ctxpopup_direction_priority_set(obj,
3545 ELM_CTXPOPUP_DIRECTION_LEFT,
3546 ELM_CTXPOPUP_DIRECTION_DOWN,
3547 ELM_CTXPOPUP_DIRECTION_RIGHT,
3548 ELM_CTXPOPUP_DIRECTION_UP);
3550 case CAM_TARGET_DIRECTION_PORTRAIT:
3551 elm_ctxpopup_direction_priority_set(obj,
3552 ELM_CTXPOPUP_DIRECTION_DOWN,
3553 ELM_CTXPOPUP_DIRECTION_RIGHT,
3554 ELM_CTXPOPUP_DIRECTION_UP,
3555 ELM_CTXPOPUP_DIRECTION_LEFT);
3557 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3558 elm_ctxpopup_direction_priority_set(obj,
3559 ELM_CTXPOPUP_DIRECTION_UP,
3560 ELM_CTXPOPUP_DIRECTION_LEFT,
3561 ELM_CTXPOPUP_DIRECTION_DOWN,
3562 ELM_CTXPOPUP_DIRECTION_RIGHT);
3565 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3568 toolbar_move_with_scale(obj, x, y);
3571 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y)
3574 switch (target_direction) {
3575 case CAM_TARGET_DIRECTION_LANDSCAPE:
3576 case CAM_TARGET_DIRECTION_PORTRAIT:
3577 elm_ctxpopup_direction_priority_set(obj,
3578 ELM_CTXPOPUP_DIRECTION_RIGHT,
3579 ELM_CTXPOPUP_DIRECTION_UP,
3580 ELM_CTXPOPUP_DIRECTION_LEFT,
3581 ELM_CTXPOPUP_DIRECTION_DOWN);
3583 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3584 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3585 elm_ctxpopup_direction_priority_set(obj,
3586 ELM_CTXPOPUP_DIRECTION_LEFT,
3587 ELM_CTXPOPUP_DIRECTION_DOWN,
3588 ELM_CTXPOPUP_DIRECTION_RIGHT,
3589 ELM_CTXPOPUP_DIRECTION_UP);
3592 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3595 evas_object_move(obj, x, y);
3598 static void __tip_popup_check_cb(void *data, Evas_Object *obj, void *event_info)
3600 struct appdata *ad = (struct appdata *)cam_appdata_get();
3601 cam_retm_if(ad == NULL, "appdata is NULL");
3602 gboolean pop_tip = FALSE;
3603 pop_tip = elm_check_state_get(obj);
3604 DEBUG_TRACE("do_not_ask_again = %d", pop_tip);
3605 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, !pop_tip);
3609 static void __tip_popup_button_selected_cb(void *data, Evas_Object * obj, void *event_info)
3612 struct appdata *ad = (struct appdata *)cam_appdata_get();
3613 cam_retm_if(ad == NULL, "appdata is NULL");
3615 cam_tip_popup_destroy(ad);
3618 /*note: input x,y should be landscape mode coordinate*/
3619 static void __get_tip_popup_coord(int target_direction, int *out_x, int *out_y)
3621 switch (target_direction) {
3622 case CAM_TARGET_DIRECTION_LANDSCAPE:
3623 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3624 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3626 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3627 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3628 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3630 case CAM_TARGET_DIRECTION_PORTRAIT:
3631 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3632 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3634 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3635 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3636 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3639 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3643 void cam_tip_popup_create(struct appdata *ad, const CamTipPopupType type)
3645 cam_retm_if(ad == NULL, "appdata is NULL");
3647 if (ad->toolbar_setting_popup) {
3648 cam_toolbar_setting_popup_destroy(ad);
3651 if (ad->edit_shortcuts_popup_scroll) {
3652 toolbar_destroy_shortcuts_popup(ad);
3655 if (ad->tip_popup) {
3656 cam_tip_popup_destroy(ad);
3659 /*hide focus guide*/
3660 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
3662 elm_object_part_content_unset(ad->ug_base, "tip_popup_layout");
3664 ad->tip_popup = cam_app_load_edj(ad->ug_base, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/help");
3666 cam_retm_if(ad->tip_popup == NULL, "tip_popup is NULL");
3667 elm_object_part_content_set(ad->ug_base, "tip_popup_layout", ad->tip_popup);
3669 Evas_Object *check = elm_check_add(ad->tip_popup);
3670 evas_object_smart_callback_add(check, "changed", __tip_popup_check_cb, (void*)ad);
3671 evas_object_show(check);
3672 elm_object_part_content_set(ad->tip_popup, "content.help.check.swallow", check);
3674 gboolean show_popup_tip = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, POP_TIP_DEFAULT);
3676 elm_check_state_set(check, EINA_FALSE);
3678 elm_check_state_set(check, EINA_TRUE);
3680 Evas_Object *btn = elm_button_add(ad->tip_popup);
3681 elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_OK"));
3682 evas_object_smart_callback_add(btn, "unpressed", __tip_popup_button_selected_cb, (void *)ad);
3683 evas_object_show(btn);
3684 elm_object_part_content_set(ad->tip_popup, "button.swallow", btn);
3686 Evas_Object *image = elm_image_add(ad->tip_popup);
3687 elm_object_part_content_set(ad->tip_popup, "content.help.image", image);
3689 if (ad->tip_popup) {
3690 evas_object_show(ad->tip_popup);
3691 evas_object_size_hint_min_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3692 evas_object_size_hint_max_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3693 evas_object_resize(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3695 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.check.txt", dgettext(PACKAGE, "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"));
3696 edje_object_part_text_set(_EDJ(ad->tip_popup), "tips.txt", dgettext(PACKAGE, "IDS_CAM_HEADER_TIPS"));
3699 case CAM_TIP_POPUP_BURSTSHOT_HELP:
3700 ad->tip_popup_type = CAM_TIP_POPUP_BURSTSHOT_HELP;
3701 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3702 dgettext(PACKAGE, "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"));
3703 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_BURSTSHOT_HELP_IMAGE);
3705 case CAM_TIP_POPUP_VOLUMEKEY_HELP:
3706 ad->tip_popup_type = CAM_TIP_POPUP_VOLUMEKEY_HELP;
3707 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3708 dgettext(PACKAGE, "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"));
3709 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_VOLUMEKEY_HELP_IMAGE);
3712 DEBUG_TRACE("invalid tip-popup type");
3716 evas_object_show(ad->tip_popup);
3718 int output_x, output_y;
3719 output_x = output_y = 0;
3720 __get_tip_popup_coord(ad->target_direction, &output_x, &output_y);
3721 evas_object_move(ad->tip_popup, output_x, output_y);/*landscape*/
3725 void cam_tip_popup_destroy(struct appdata *ad)
3727 cam_retm_if(ad == NULL, "appdata is NULL");
3729 DEL_EVAS_OBJECT(ad->tip_popup);
3730 ad->tip_popup_type = CAM_TIP_POPUP_NONE;
3733 void cam_tip_popup_rotate(struct appdata *ad)
3735 cam_retm_if(ad == NULL, "appdata is NULL");
3737 DEL_EVAS_OBJECT(ad->tip_popup);
3738 cam_tip_popup_create(ad, ad->tip_popup_type);
3741 static char *__sub_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
3743 int index = (int)data;
3745 struct appdata *ad = (struct appdata *)cam_appdata_get();
3746 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3748 CAM_MENU_ITEM* menu_item = NULL;
3749 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3750 return strdup(dgettext(PACKAGE, __get_text_name(*menu_item)));
3753 static Evas_Object *__sub_menu_gl_icon_get(void *data, Evas_Object *obj, const char *part)
3755 struct appdata *ad = (struct appdata *)cam_appdata_get();
3756 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3758 CamAppData *camapp = ad->camapp_handle;
3759 cam_retvm_if(camapp == NULL, NULL, "camapp_handle is NULL");
3761 int index = (int)data;
3762 int value_index = 0;
3764 if (strcmp(part, "elm.radio") == 0) {
3765 Evas_Object* radio = elm_radio_add(obj);
3767 elm_object_style_set(radio, "beat_winset_test/camera");
3768 elm_radio_state_value_set(radio, index);
3769 elm_radio_group_add(radio, ad->sub_menu_group);
3771 switch (ad->sub_menu_type) {
3772 case CAM_MENU_FLASH:
3773 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FLASH, camapp->flash);
3774 if (index == value_index) {
3775 elm_radio_value_set(radio, value_index);
3778 case CAM_MENU_SHOOTING_MODE:
3779 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SHOOTING_MODE, camapp->shooting_mode);
3780 if (index == value_index) {
3781 elm_radio_value_set(radio, value_index);
3784 case CAM_MENU_RECORDING_MODE:
3785 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_RECORDING_MODE, camapp->recording_mode);
3786 if (index == value_index) {
3787 elm_radio_value_set(radio, value_index);
3790 case CAM_MENU_SCENE_MODE:
3791 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SCENE_MODE, camapp->scene_mode);
3792 if (index == value_index) {
3793 elm_radio_value_set(radio, value_index);
3796 case CAM_MENU_FOCUS_MODE:
3797 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FOCUS_MODE, camapp->af_mode);
3798 if (index == value_index) {
3799 elm_radio_value_set(radio, value_index);
3802 case CAM_MENU_TIMER:
3803 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_TIMER, camapp->timer);
3804 if (index == value_index) {
3805 elm_radio_value_set(radio, value_index);
3808 case CAM_MENU_EFFECTS:
3809 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_EFFECTS, camapp->effect);
3810 if (index == value_index) {
3811 elm_radio_value_set(radio, value_index);
3814 case CAM_MENU_PHOTO_RESOLUTION:
3815 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_PHOTO_RESOLUTION, camapp->photo_resolution);
3816 if (index == value_index) {
3817 elm_radio_value_set(radio, value_index);
3820 case CAM_MENU_VIDEO_RESOLUTION:
3821 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VIDEO_RESOLUTION, camapp->video_resolution);
3822 if (index == value_index) {
3823 elm_radio_value_set(radio, value_index);
3826 case CAM_MENU_WHITE_BALANCE:
3827 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_WHITE_BALANCE, camapp->white_balance);
3828 if (index == value_index) {
3829 elm_radio_value_set(radio, value_index);
3833 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_ISO, camapp->iso);
3834 if (index == value_index) {
3835 elm_radio_value_set(radio, value_index);
3838 case CAM_MENU_METERING:
3839 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_METERING, camapp->auto_exposure);
3840 if (index == value_index) {
3841 elm_radio_value_set(radio, value_index);
3844 case CAM_MENU_STORAGE:
3845 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_STORAGE, camapp->storage);
3846 if (index == value_index) {
3847 elm_radio_value_set(radio, value_index);
3850 case CAM_MENU_VOLUME_KEY:
3851 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VOLUME_KEY, camapp->volume_key);
3852 if (index == value_index) {
3853 elm_radio_value_set(radio, value_index);
3859 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3860 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
3863 } else if (strcmp(part, "elm.icon") == 0) {
3864 Evas_Object *icon = NULL;
3865 char icon_name[1024+1] = { '\0', };
3866 CAM_MENU_ITEM* menu_item = NULL;
3868 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3869 strncpy(icon_name, __get_icon_image_name(*menu_item, BUTTON_STATE_NORMAL), sizeof(icon_name));
3870 icon = elm_image_add(obj);
3871 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
3878 void __cam_setting_sub_gl_style_set()
3881 sub_itc.item_style = "camera/1text.2icon";
3882 sub_itc.func.text_get = __sub_menu_gl_text_get;
3883 sub_itc.func.content_get = __sub_menu_gl_icon_get;
3884 sub_itc.func.state_get = NULL;
3885 sub_itc.func.del = NULL;
3888 static void* __get_sub_menu_genlist_cb(const CAM_MENU_ITEM item)
3891 case CAM_MENU_FLASH:
3892 return __flash_selected_cb;
3893 case CAM_MENU_SHOOTING_MODE:
3894 return __shot_mode_selected_cb;
3895 case CAM_MENU_RECORDING_MODE:
3896 return __record_mode_selected_cb;
3897 case CAM_MENU_SCENE_MODE:
3898 return __scene_mode_selected_cb;
3899 case CAM_MENU_FOCUS_MODE:
3900 return __focus_mode_selected_cb;
3901 case CAM_MENU_TIMER:
3902 return __timer_popup_cb;
3903 case CAM_MENU_EFFECTS:
3904 return __effects_selected_cb;
3905 case CAM_MENU_PHOTO_RESOLUTION:
3906 return __photo_resolution_popup_cb;
3907 case CAM_MENU_VIDEO_RESOLUTION:
3908 return __video_resolution_popup_cb;
3909 case CAM_MENU_WHITE_BALANCE:
3910 return __wb_popup_cb;
3912 return __iso_popup_cb;
3913 case CAM_MENU_METERING:
3914 return __metering_popup_cb;
3915 case CAM_MENU_STORAGE:
3916 return __storage_popup_cb;
3917 case CAM_MENU_VOLUME_KEY:
3918 return __volume_key_popup_cb;
3924 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata)
3926 struct appdata *ad = (struct appdata *)fdata;
3927 cam_retv_if(ad == NULL, EINA_FALSE);
3929 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
3930 DEBUG_TRACE("item = %d", *item);
3932 elm_genlist_item_append(ad->sub_genlist, &sub_itc, (void*)(ad->sub_menu_index),
3933 NULL, ELM_GENLIST_ITEM_NONE, __get_sub_menu_genlist_cb(ad->sub_menu_type), (void *)*item);
3935 ad->sub_menu_index++;
3939 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting)
3941 DEBUG_TRACE("START");
3943 struct appdata *ad = data;
3944 cam_retm_if(ad == NULL, "appdata is NULL");
3946 Evas_Object *layout = NULL;
3947 int menu_bar_no = -1;
3950 setting_ctxpopup_create(ad, from_setting);
3951 layout = elm_layout_add(ad->setting_ctxpopup);
3952 elm_layout_file_set(layout, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout");
3955 edje_object_part_text_set(elm_layout_edje_get(layout), "elm.text", _setting_gl_text_get((void*)menu_item, NULL, NULL));
3957 if (ad->sub_menu_composer) {
3958 cam_compose_free(ad->sub_menu_composer);
3959 ad->sub_menu_composer = NULL;
3962 if (ad->sub_menu_composer == NULL) {
3963 ad->sub_menu_composer = calloc(1, sizeof(cam_menu_composer));
3964 cam_compose_list_menu((void*)ad, menu_item, ad->sub_menu_composer);
3967 int size = eina_array_count(ad->sub_menu_composer->array);
3968 int sub_menu_height = __get_sub_menu_height(size);
3969 evas_object_size_hint_min_set(layout,
3970 SUB_MENU_POPUP_WIDTH * elm_config_scale_get(),
3971 sub_menu_height * elm_config_scale_get());
3973 ad->sub_menu_type = menu_item;
3974 ad->sub_menu_index = 0;
3975 ad->sub_genlist = elm_genlist_add(layout);
3976 ad->sub_menu_group = elm_radio_add(ad->sub_genlist);
3978 __cam_setting_sub_gl_style_set();
3979 eina_array_foreach(ad->sub_menu_composer->array, __sub_menu_genlist_each_cb, ad);
3981 evas_object_show(ad->sub_genlist);
3982 elm_object_part_content_set(layout, "elm.swallow.box", ad->sub_genlist);
3983 elm_object_content_set(ad->setting_ctxpopup, layout);
3986 __cam_get_ctxpopup_coord_in_setting_toolbar(ad->target_direction, setting_gl_y, &x, &y);
3987 __cam_toolbar_move_sub_menu(ad->setting_ctxpopup, ad->target_direction, x, y);
3989 menu_bar_no = __get_menubar_no_by_index(ad, menu_item);
3990 __get_option_coord_by_menubar_no(menu_bar_no, ad->target_direction, &x, &y);
3991 __cam_toolbar_move_ctxpopup(ad->setting_ctxpopup, ad->target_direction, x, y);
3994 evas_object_show(ad->setting_ctxpopup);
3995 __setting_popup_timeout_checker_start(ad);
3998 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info)
4000 struct appdata *ad = (struct appdata *)cam_appdata_get();
4001 cam_retm_if(ad == NULL, "appdata is NULL");
4002 gboolean from_setting = FALSE;
4003 if (event_info) { /*call by setting*/
4004 from_setting = TRUE;
4005 } else { /*call by click icon*/
4006 from_setting = FALSE;
4009 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4010 ad->setting_select_item = (Elm_Object_Item *)event_info;
4013 ad->displayed_setting_popup = FALSE;
4014 toolbar_create_shortcuts_popup(ad);
4017 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info)
4019 DEBUG_TRACE("START");
4021 struct appdata *ad = data;
4022 cam_retm_if(ad == NULL, "appdata is NULL");
4024 gboolean from_setting = FALSE;
4026 if (event_info) { /*call by setting*/
4027 from_setting = TRUE;
4028 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4029 ad->setting_select_item = (Elm_Object_Item *)event_info;
4030 } else { /*call by click icon*/
4031 from_setting = FALSE;
4032 ad->displayed_setting_popup = DISPLAY_VOLUME_KEY_POPUP;
4035 __create_setting_listmenu(ad, CAM_MENU_VOLUME_KEY, from_setting);
4038 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info)
4040 struct appdata *ad = (struct appdata *)(data);
4041 cam_retm_if(ad == NULL, "appdata is NULL");
4042 CamAppData *camapp = ad->camapp_handle;
4043 cam_retm_if(camapp == NULL, "camapp is NULL");
4045 if (!ad->enable_mode_change) {
4046 DEBUG_TRACE("Can not change mode");
4050 ad->enable_mode_change = FALSE;
4052 cam_toolbar_setting_popup_destroy(ad);
4053 setting_ctxpopup_destroy(ad);
4054 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4056 if (camapp->self_portrait == TRUE)
4057 camapp->self_portrait = FALSE;
4059 camapp->self_portrait = TRUE;
4061 GValue value = {0, };
4062 CAM_GVALUE_SET_BOOLEAN(value, camapp->self_portrait);
4063 cam_handle_value_set(ad, PROP_SELF_PORTRAIT, &value);
4065 cam_toolbar_update(ad);
4068 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info)
4070 DEBUG_TRACE("START");
4072 struct appdata *ad = (struct appdata *)data;
4073 cam_retm_if(ad == NULL, "appdata is NULL");
4075 gboolean from_setting = FALSE;
4077 if (event_info) { /*call by setting*/
4078 from_setting = TRUE;
4079 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4080 ad->setting_select_item = (Elm_Object_Item *)event_info;
4081 } else { /*call by click icon*/
4082 from_setting = FALSE;
4083 ad->displayed_setting_popup = DISPLAY_FLASH_POPUP;
4086 __create_setting_listmenu(ad, CAM_MENU_FLASH, from_setting);
4089 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4091 DEBUG_TRACE("START");
4093 struct appdata *ad = (struct appdata *)data;
4094 cam_retm_if(ad == NULL, "appdata is NULL");
4096 gboolean from_setting = FALSE;
4098 if (event_info) { /*call by setting*/
4099 from_setting = TRUE;
4100 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4101 ad->setting_select_item = (Elm_Object_Item *)event_info;
4102 } else { /*call by click icon*/
4103 from_setting = FALSE;
4104 ad->displayed_setting_popup = DISPLAY_SHOOTING_MODE_POPUP;
4107 __create_setting_listmenu(ad, CAM_MENU_SHOOTING_MODE, from_setting);
4110 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info)
4112 DEBUG_TRACE("START");
4114 struct appdata *ad = data;
4115 cam_retm_if(ad == NULL, "appdata is NULL");
4117 gboolean from_setting = FALSE;
4119 if (event_info) { /*call by setting*/
4120 from_setting = TRUE;
4121 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4122 ad->setting_select_item = (Elm_Object_Item *)event_info;
4123 } else { /*call by click icon*/
4124 from_setting = FALSE;
4125 ad->displayed_setting_popup = DISPLAY_RECORDING_MODE_POPUP;
4128 __create_setting_listmenu(ad, CAM_MENU_RECORDING_MODE, from_setting);
4131 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4133 DEBUG_TRACE("START");
4135 struct appdata *ad = data;
4136 cam_retm_if(ad == NULL, "appdata is NULL");
4138 gboolean from_setting = FALSE;
4140 if (event_info) { /*call by setting*/
4141 from_setting = TRUE;
4142 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4143 ad->setting_select_item = (Elm_Object_Item *)event_info;
4144 } else { /*call by click icon*/
4145 from_setting = FALSE;
4146 ad->displayed_setting_popup = DISPLAY_SCENE_MODE_POPUP;
4149 __create_setting_listmenu(ad, CAM_MENU_SCENE_MODE, from_setting);
4152 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info)
4154 struct appdata *ad = (struct appdata *)cam_appdata_get();
4155 cam_retm_if(ad == NULL, "appdata is NULL");
4156 cam_retm_if(ad->camapp_handle == NULL, "ad->camapp_handle is NULL");
4160 cam_toolbar_setting_popup_destroy(ad);
4163 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info)
4165 struct appdata *ad = (struct appdata *)cam_appdata_get();
4166 cam_retm_if(ad == NULL, "appdata is NULL");
4167 CamAppData *camapp = NULL;
4168 camapp = ad->camapp_handle;
4169 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4171 DEBUG_TRACE("camapp->burst_shot = %d", camapp->burst_shot);
4173 if (obj != ad->burst_shot_mode_radio) {
4174 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4176 if (camapp->burst_shot == TRUE) {
4177 camapp->burst_shot = FALSE;
4178 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4180 camapp->burst_shot = TRUE;
4181 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4184 /* to reset check button */
4185 if (camapp->burst_shot == TRUE)
4186 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4188 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4192 GValue value = {0, };
4193 CAM_GVALUE_SET_BOOLEAN(value, camapp->burst_shot);
4194 cam_handle_value_set(ad, PROP_BURST_SHOT, &value);
4197 __update_menubar_icon_by_index(ad, CAM_MENU_BURST_SHOT_MODE);
4198 __setting_popup_timeout_checker_start(ad);
4201 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info)
4203 DEBUG_TRACE("START");
4205 struct appdata *ad = data;
4206 cam_retm_if(ad == NULL, "appdata is NULL");
4208 gboolean from_setting = FALSE;
4210 if (event_info) { /*call by setting*/
4211 from_setting = TRUE;
4212 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4213 ad->setting_select_item = (Elm_Object_Item *)event_info;
4214 } else { /*call by click icon*/
4215 from_setting = FALSE;
4216 ad->displayed_setting_popup = DISPLAY_FOCUS_MODE_POPUP;
4219 __create_setting_listmenu(ad, CAM_MENU_FOCUS_MODE, from_setting);
4222 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
4224 DEBUG_TRACE("START");
4226 struct appdata *ad = data;
4227 cam_retm_if(ad == NULL, "appdata is NULL");
4229 gboolean from_setting = FALSE;
4231 if (event_info) { /*call by setting*/
4232 from_setting = TRUE;
4233 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4234 ad->setting_select_item = (Elm_Object_Item *)event_info;
4235 } else { /*call by click icon*/
4236 from_setting = FALSE;
4237 ad->displayed_setting_popup = DISPLAY_TIMER_POPUP;
4240 __create_setting_listmenu(ad, CAM_MENU_TIMER, from_setting);
4243 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info)
4245 DEBUG_TRACE("START");
4247 struct appdata *ad = data;
4248 cam_retm_if(ad == NULL, "appdata is NULL");
4250 gboolean from_setting = FALSE;
4252 if (event_info) { /*call by setting*/
4253 from_setting = TRUE;
4254 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4255 ad->setting_select_item = (Elm_Object_Item *)event_info;
4256 } else { /*call by click icon*/
4257 from_setting = FALSE;
4258 ad->displayed_setting_popup = DISPLAY_EFFECTS_POPUP;
4261 __create_setting_listmenu(ad, CAM_MENU_EFFECTS, from_setting);
4264 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
4266 DEBUG_TRACE("START");
4268 struct appdata *ad = data;
4269 cam_retm_if(ad == NULL, "appdata is NULL");
4271 gboolean from_setting = FALSE;
4273 if (event_info) { /*call by setting*/
4274 from_setting = TRUE;
4275 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4276 ad->setting_select_item = (Elm_Object_Item *)event_info;
4277 } else { /*call by click icon*/
4278 from_setting = FALSE;
4279 ad->displayed_setting_popup = DISPLAY_WHITE_BALANCE_POPUP;
4282 __create_setting_listmenu(ad, CAM_MENU_WHITE_BALANCE, from_setting);
4285 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
4287 DEBUG_TRACE("START");
4289 struct appdata *ad = data;
4290 cam_retm_if(ad == NULL, "appdata is NULL");
4292 gboolean from_setting = FALSE;
4294 if (event_info) { /*call by setting*/
4295 from_setting = TRUE;
4296 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4297 ad->setting_select_item = (Elm_Object_Item *)event_info;
4298 } else { /*call by click icon*/
4299 from_setting = FALSE;
4300 ad->displayed_setting_popup = DISPLAY_ISO_POPUP;
4303 __create_setting_listmenu(ad, CAM_MENU_ISO, from_setting);
4306 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
4308 DEBUG_TRACE("START");
4310 struct appdata *ad = data;
4311 cam_retm_if(ad == NULL, "appdata is NULL");
4313 gboolean from_setting = FALSE;
4315 if (event_info) { /*call by setting*/
4316 from_setting = TRUE;
4317 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4318 ad->setting_select_item = (Elm_Object_Item *)event_info;
4319 } else { /*call by click icon*/
4320 from_setting = FALSE;
4321 ad->displayed_setting_popup = DISPLAY_METERING_POPUP;
4324 __create_setting_listmenu(ad, CAM_MENU_METERING, from_setting);
4327 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info)
4329 struct appdata *ad = (struct appdata *)cam_appdata_get();
4330 cam_retm_if(ad == NULL, "appdata is NULL");
4331 CamAppData *camapp = NULL;
4332 camapp = ad->camapp_handle;
4333 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4335 DEBUG_TRACE("camapp->anti_shake = %d", camapp->anti_shake);
4337 if (obj != ad->antishake_radio) {
4338 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4340 if (camapp->anti_shake == TRUE) {
4341 camapp->anti_shake = FALSE;
4342 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4344 camapp->anti_shake = TRUE;
4345 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4348 /* to reset check button */
4349 if (camapp->anti_shake == TRUE)
4350 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4352 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4356 GValue value = {0, };
4357 CAM_GVALUE_SET_BOOLEAN(value, camapp->anti_shake);
4358 cam_handle_value_set(ad, PROP_AHS, &value);
4360 __update_menubar_icon_by_index(ad, CAM_MENU_ANTI_SHAKE);
4361 __setting_popup_timeout_checker_start(ad);
4364 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info)
4366 struct appdata *ad = (struct appdata *)cam_appdata_get();
4367 cam_retm_if(ad == NULL, "appdata is NULL");
4368 CamAppData *camapp = NULL;
4369 camapp = ad->camapp_handle;
4370 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4372 DEBUG_TRACE("camapp->outdoor_visibility = %d", camapp->outdoor_visibility);
4374 if (obj != ad->outdoor_visibility_radio) {
4375 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4377 if (camapp->outdoor_visibility == TRUE) {
4378 camapp->outdoor_visibility = FALSE;
4379 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4381 camapp->outdoor_visibility = TRUE;
4382 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4385 /* to reset check button */
4386 if (camapp->outdoor_visibility == TRUE)
4387 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4389 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4393 GValue value = {0, };
4394 CAM_GVALUE_SET_BOOLEAN(value, camapp->outdoor_visibility);
4395 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &value);
4397 __update_menubar_icon_by_index(ad, CAM_MENU_OUTDOOR_VISIBILITY);
4398 __setting_popup_timeout_checker_start(ad);
4401 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info)
4403 cam_ret_if(obj == NULL);
4404 struct appdata *ad = (struct appdata *)cam_appdata_get();
4405 cam_retm_if(ad == NULL, "appdata is NULL");
4406 CamAppData *camapp = NULL;
4407 camapp = ad->camapp_handle;
4408 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4410 DEBUG_TRACE("camapp->auto_contrast = %d", camapp->auto_contrast);
4412 if (obj != ad->autocontrast_radio) {
4413 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4415 if (camapp->auto_contrast == TRUE) {
4416 camapp->auto_contrast = FALSE;
4417 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4419 camapp->auto_contrast = TRUE;
4420 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4423 /* to reset check button */
4424 if (camapp->auto_contrast == TRUE)
4425 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4427 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4431 GValue value = {0, };
4432 CAM_GVALUE_SET_BOOLEAN(value, camapp->auto_contrast);
4433 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &value);
4435 __update_menubar_icon_by_index(ad, CAM_MENU_AUTO_CONTRAST);
4436 __setting_popup_timeout_checker_start(ad);
4440 void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info)
4442 cam_ret_if(obj == NULL);
4443 struct appdata *ad = (struct appdata *)cam_appdata_get();
4444 cam_retm_if(ad == NULL, "appdata is NULL");
4445 CamAppData *camapp = NULL;
4446 camapp = ad->camapp_handle;
4447 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4449 DEBUG_TRACE("camapp->guideline = %d", camapp->guideline);
4451 if (obj != ad->guideline_radio) {
4452 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4454 if (camapp->guideline == TRUE) {
4455 camapp->guideline = FALSE;
4456 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4458 camapp->guideline = TRUE;
4459 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4462 /* to reset check button */
4463 if (camapp->guideline == TRUE)
4464 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4466 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4470 GValue value = {0, };
4471 CAM_GVALUE_SET_BOOLEAN(value, camapp->guideline);
4472 cam_handle_value_set(ad, PROP_GUIDELINE, &value);
4474 settings_guideline_refresh(ad);
4476 __update_menubar_icon_by_index(ad, CAM_MENU_GUIDELINES);
4477 __setting_popup_timeout_checker_start(ad);
4481 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info)
4483 cam_ret_if(obj == NULL);
4484 struct appdata *ad = (struct appdata *)cam_appdata_get();
4485 cam_retm_if(ad == NULL, "appdata is NULL");
4486 CamAppData *camapp = NULL;
4487 camapp = ad->camapp_handle;
4488 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4490 DEBUG_TRACE("camapp->save_as_flip = %d", camapp->save_as_flip);
4492 if (obj != ad->save_as_flip_radio) {
4493 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4495 if (camapp->save_as_flip == TRUE) {
4496 camapp->save_as_flip = FALSE;
4497 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4499 camapp->save_as_flip = TRUE;
4500 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4503 /* to reset check button */
4504 if (camapp->save_as_flip == TRUE)
4505 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4507 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4511 GValue value = {0, };
4512 CAM_GVALUE_SET_BOOLEAN(value, camapp->save_as_flip);
4513 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &value);
4515 __update_menubar_icon_by_index(ad, CAM_MENU_SAVE_AS_FLIP);
4516 __setting_popup_timeout_checker_start(ad);
4520 static void __voice_cmd_cb(CamVoiceCmdState state, void* data)
4523 case CAM_VOICE_CMD_READY:
4526 char *emission = "release_shutter_sig";
4527 char *source = "temp";
4528 cam_toolbar_shutter_button_cb(data, NULL,
4532 case CAM_VOICE_CMD_REJECT:
4533 // do action - after discuss with UX
4535 case CAM_VOICE_CMD_ERROR:
4536 //do action - after discuss with UX
4543 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info)
4545 cam_ret_if(obj == NULL);
4546 struct appdata *ad = (struct appdata *)cam_appdata_get();
4547 cam_retm_if(ad == NULL, "appdata is NULL");
4548 CamAppData *camapp = NULL;
4549 camapp = ad->camapp_handle;
4550 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4552 DEBUG_TRACE("camapp->capture_by_voice = %d", camapp->capture_by_voice);
4554 if (obj != ad->capture_by_voice_radio) {
4555 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4557 if (camapp->capture_by_voice == TRUE) {
4558 camapp->capture_by_voice = FALSE;
4559 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4561 camapp->capture_by_voice = TRUE;
4562 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4565 /* to reset check button */
4566 if (camapp->capture_by_voice == TRUE)
4567 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4569 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4573 if (camapp->capture_by_voice) {
4574 if ( !cam_voice_cmd_create((cam_voice_cmd_cb)__voice_cmd_cb,ad)) {
4575 cam_voice_cmd_destroy();
4576 camapp->capture_by_voice = FALSE;
4577 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4580 } else cam_voice_cmd_destroy();
4582 __update_menubar_icon_by_index(ad, CAM_MENU_CAPTURE_VOICE);
4583 __setting_popup_timeout_checker_start(ad);
4586 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info)
4588 cam_ret_if(obj == NULL);
4589 struct appdata *ad = (struct appdata *)cam_appdata_get();
4590 cam_retm_if(ad == NULL, "appdata is NULL");
4591 CamAppData *camapp = NULL;
4592 camapp = ad->camapp_handle;
4593 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4595 DEBUG_TRACE("camapp->gps = %d", camapp->gps);
4597 if (obj != ad->gps_radio) {
4598 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4600 if (camapp->gps == TRUE) {
4601 camapp->gps = FALSE;
4602 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4605 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4608 /* to reset check button */
4609 if (camapp->gps == TRUE)
4610 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4612 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4616 GValue value = {0, };
4617 CAM_GVALUE_SET_BOOLEAN(value, camapp->gps);
4618 cam_handle_value_set(ad, PROP_GPS, &value);
4620 __update_menubar_icon_by_index(ad, CAM_MENU_GPS_TAG);
4621 __setting_popup_timeout_checker_start(ad);
4623 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4624 cam_toolbar_setting_popup_destroy(ad);
4627 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info)
4629 DEBUG_TRACE("START");
4631 struct appdata *ad = data;
4632 cam_retm_if(ad == NULL, "appdata is NULL");
4634 gboolean from_setting = FALSE;
4636 if (event_info) { /*call by setting*/
4637 from_setting = TRUE;
4638 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4639 ad->setting_select_item = (Elm_Object_Item *)event_info;
4640 } else { /*call by click icon*/
4641 from_setting = FALSE;
4642 ad->displayed_setting_popup = DISPLAY_STORAGE_POPUP;
4645 __create_setting_listmenu(ad, CAM_MENU_STORAGE, from_setting);
4648 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4650 DEBUG_TRACE("START");
4652 struct appdata *ad = data;
4653 cam_retm_if(ad == NULL, "appdata is NULL");
4655 gboolean from_setting = FALSE;
4657 if (event_info) { /*call by setting*/
4658 from_setting = TRUE;
4659 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4660 ad->setting_select_item = (Elm_Object_Item *)event_info;
4661 } else { /*call by click icon*/
4662 from_setting = FALSE;
4663 ad->displayed_setting_popup = DISPLAY_PHOTO_RESOLUTION_POPUP;
4666 __create_setting_listmenu(ad, CAM_MENU_PHOTO_RESOLUTION, from_setting);
4669 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4671 DEBUG_TRACE("START");
4673 struct appdata *ad = data;
4674 cam_retm_if(ad == NULL, "appdata is NULL");
4676 gboolean from_setting = FALSE;
4678 if (event_info) { /*call by setting*/
4679 from_setting = TRUE;
4680 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4681 ad->setting_select_item = (Elm_Object_Item *)event_info;
4682 } else { /*call by click icon*/
4683 from_setting = FALSE;
4684 ad->displayed_setting_popup = DISPLAY_VIDEO_RESOLUTION_POPUP;
4687 __create_setting_listmenu(ad, CAM_MENU_VIDEO_RESOLUTION, from_setting);
4690 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info)
4692 cam_ret_if(data == NULL);
4693 struct appdata *ad = (struct appdata *)(data);
4694 cam_retm_if(ad == NULL, " appdata is NULL");
4695 gboolean from_setting = FALSE;
4696 if (event_info) { /*call by setting*/
4697 from_setting = TRUE;
4698 } else { /*call by click icon*/
4699 from_setting = FALSE;
4700 ad->displayed_setting_popup = DISPLAY_RESET_POPUP;
4703 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4704 ad->setting_select_item = (Elm_Object_Item *)event_info;
4707 DEL_EVAS_OBJECT(ad->confirm_popup);
4709 ad->confirm_popup = elm_popup_add(ad->ug_base);
4710 evas_object_size_hint_weight_set(ad->confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
4711 elm_popup_timeout_set(ad->confirm_popup, 9.0);
4714 char popup_str[1024 + 1] = { '\0',};
4715 snprintf(popup_str, 1024, "%s%s%s", _("<font=SLP:style=Roman><color=#000000><align=center>"),
4716 dgettext(PACKAGE, "IDS_CAM_POP_RESET_SETTINGS_Q"), _("</align></color></font>"));
4718 elm_object_text_set(ad->confirm_popup, popup_str);
4719 Evas_Object *btn1 = elm_button_add(ad->confirm_popup);
4720 elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
4721 elm_object_part_content_set(ad->confirm_popup, "button1", btn1);
4722 evas_object_smart_callback_add(btn1, "clicked", __restore_defaults_popup_cb_ok_cb, (void*)ad);
4723 Evas_Object *btn2 = elm_button_add(ad->confirm_popup);
4724 elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
4725 elm_object_part_content_set(ad->confirm_popup, "button2", btn2);
4726 evas_object_smart_callback_add(btn2, "clicked", __restore_defaults_popup_cb_cancel_cb, (void*)ad);
4728 evas_object_show(ad->confirm_popup);
4730 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4731 cam_toolbar_setting_popup_destroy(ad);
4734 void settings_guideline_refresh(struct appdata *ad)
4736 cam_retm_if(ad == NULL, "appdata is NULL");
4737 CamAppData *camapp = ad->camapp_handle;
4738 cam_retm_if(camapp == NULL,"camapp is NULL");
4739 DEBUG_TRACE("ad->camapp_handle->guideline = %d" ,ad->camapp_handle->guideline);
4741 if( ad->camapp_handle->guideline == TRUE) {
4742 cam_guideline_create(ad);
4744 if (ad->guideline_edje && ad->toolbar_setting_popup) {
4745 evas_object_hide(ad->guideline_edje);
4747 if (ad->toolbar_edje)
4748 evas_object_raise(ad->toolbar_edje);
4751 DEL_EVAS_OBJECT(ad->guideline_edje);
4755 static Eina_Bool __setting_popup_timeout_checker_cb(void *data)
4757 struct appdata *ad = (struct appdata *)data;
4758 CamAppData *camapp = NULL;
4759 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
4760 camapp = ad->camapp_handle;
4761 if (camapp == NULL) {
4762 if (ad->setting_toolbar_hide_timer)
4763 ad->setting_toolbar_hide_timer = NULL;
4764 return ECORE_CALLBACK_CANCEL;
4767 if (ad->setting_toolbar_hide_timer)
4768 ad->setting_toolbar_hide_timer = NULL;
4769 gdouble diff_time = 0.0;
4770 diff_time = _get_current_time() - camapp->start_time;
4771 if ((cam_mm_get_state() == CAMERA_STATE_PREVIEW)
4772 && (diff_time >= CAM_SETTING_POPUP_TIMEOUT)) {
4773 DEBUG_TRACE("destroy setting pupup");
4774 if (ad->setting_toolbar_hide_timer) {
4775 if (ad->setting_ctxpopup) {
4776 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4777 cam_toolbar_setting_popup_destroy(ad);
4778 if (ad->shot_mode_guide_popup)
4779 toolbar_shot_guide_popup_create(ad, ad->camapp_handle->shooting_mode);
4780 } else if (ad->toolbar_setting_popup) {
4781 cam_toolbar_setting_popup_destroy(ad);
4784 if (ad->edit_shortcuts_popup_scroll) {
4785 toolbar_destroy_shortcuts_popup(ad);
4789 return ECORE_CALLBACK_CANCEL;
4792 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad)
4794 DEBUG_TRACE("START");
4795 CamAppData *camapp = NULL;
4796 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4797 camapp = ad->camapp_handle;
4798 cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
4799 if (ad->setting_toolbar_hide_timer) {
4800 ecore_timer_del(ad->setting_toolbar_hide_timer);
4801 ad->setting_toolbar_hide_timer = NULL;
4803 ad->setting_toolbar_hide_timer =
4804 ecore_timer_add(CAM_SETTING_POPUP_TIMEOUT, __setting_popup_timeout_checker_cb, ad);
4805 camapp->start_time = _get_current_time();
4810 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item)
4812 int menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
4813 Evas_Object *icon = NULL;
4814 __get_menubar_shortcuts_info(ad, menu_item, &menu_bar_no, &icon);
4818 /*note: output menu index, input display popup value*/
4819 int cam_toolbar_displaypopup_map_menu_value(int display_popup)
4821 switch (display_popup) {
4822 case DISPLAY_NONE_POPUP:
4823 return CAM_MENU_EMPTY;
4825 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4826 return CAM_MENU_SHORTCUTS;
4828 case DISPLAY_BURST_SHOT_MODE_POPUP:
4829 return CAM_MENU_BURST_SHOT_MODE;
4831 case DISPLAY_VOLUME_KEY_POPUP:
4832 return CAM_MENU_VOLUME_KEY;
4834 case DISPLAY_SELF_PORTRAIT_POPUP:
4835 return CAM_MENU_SELF_PORTRAIT;
4837 case DISPLAY_SCENE_MODE_POPUP:
4838 return CAM_MENU_SCENE_MODE;
4840 case DISPLAY_FOCUS_MODE_POPUP:
4841 return CAM_MENU_FOCUS_MODE;
4843 case DISPLAY_EFFECTS_POPUP:
4844 return CAM_MENU_EFFECTS;
4846 case DISPLAY_ANTI_SHAKE_POPUP:
4847 return CAM_MENU_ANTI_SHAKE;
4849 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4850 return CAM_MENU_OUTDOOR_VISIBILITY;
4852 case DISPLAY_AUTO_CONTRAST_POPUP:
4853 return CAM_MENU_AUTO_CONTRAST;
4855 case DISPLAY_GUIDELINES_POPUP:
4856 return CAM_MENU_GUIDELINES;
4858 case DISPLAY_CAPTURE_VOICE_POPUP:
4859 return CAM_MENU_CAPTURE_VOICE;
4861 case DISPLAY_GPS_TAG_POPUP:
4862 return CAM_MENU_GPS_TAG;
4864 case DISPLAY_STORAGE_POPUP:
4865 return CAM_MENU_STORAGE;
4867 case DISPLAY_RESET_POPUP:
4868 return CAM_MENU_RESET;
4870 case DISPLAY_SHOOTING_MODE_POPUP:
4871 return CAM_MENU_SHOOTING_MODE;
4873 case DISPLAY_RECORDING_MODE_POPUP:
4874 return CAM_MENU_RECORDING_MODE;
4876 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4877 return CAM_MENU_VIDEO_RESOLUTION;
4879 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4880 return CAM_MENU_PHOTO_RESOLUTION;
4882 case DISPLAY_ISO_POPUP:
4883 return CAM_MENU_ISO;
4885 case DISPLAY_METERING_POPUP:
4886 return CAM_MENU_METERING;
4888 case DISPLAY_WHITE_BALANCE_POPUP:
4889 return CAM_MENU_WHITE_BALANCE;
4891 case DISPLAY_FLASH_POPUP:
4892 return CAM_MENU_FLASH;
4894 case DISPLAY_TIMER_POPUP:
4895 return CAM_MENU_TIMER;
4897 case DISPLAY_SAVE_AS_FLIP:
4898 return CAM_MENU_SAVE_AS_FLIP;
4900 return CAM_MENU_EMPTY;
4905 Eina_Bool cam_show_setting_menu_option_popup(void *data)
4907 struct appdata *ad = (struct appdata *)data;
4908 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4910 switch (ad->displayed_setting_popup) {
4911 case DISPLAY_NONE_POPUP:
4913 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4914 __setting_edit_shortcut_popup_cb(ad, NULL, NULL);
4916 case DISPLAY_VOLUME_KEY_POPUP:
4917 __setting_volume_key_popup_cb(ad, NULL, NULL);
4919 case DISPLAY_SELF_PORTRAIT_POPUP:
4920 __setting_self_portrait_popup_cb(ad, NULL, NULL);
4922 case DISPLAY_SCENE_MODE_POPUP:
4923 __setting_scenemode_popup_cb(ad, NULL, NULL);
4925 case DISPLAY_FOCUS_MODE_POPUP:
4926 __setting_focus_mode_cb(ad, NULL, NULL);
4928 case DISPLAY_EFFECTS_POPUP:
4929 __setting_effects_popup_cb(ad, NULL, NULL);
4931 case DISPLAY_ANTI_SHAKE_POPUP:
4932 __setting_anti_shake_popup_cb(ad, NULL, NULL);
4934 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4935 __setting_outdoor_visibility_popup_cb(ad, NULL, NULL);
4937 case DISPLAY_AUTO_CONTRAST_POPUP:
4938 __setting_autocontrast_popup_cb(ad, NULL, NULL);
4940 case DISPLAY_GUIDELINES_POPUP:
4941 __setting_guideline_popup_cb(ad, NULL, NULL);
4943 case DISPLAY_CAPTURE_VOICE_POPUP:
4944 __setting_capture_by_voice_popup_cb(ad, NULL, NULL);
4946 case DISPLAY_GPS_TAG_POPUP:
4947 __setting_gps_popup_cb(ad, NULL, NULL);
4949 case DISPLAY_STORAGE_POPUP:
4950 __setting_storage_popup_cb(ad, NULL, NULL);
4952 case DISPLAY_RESET_POPUP:
4953 __setting_restore_defaults_popup_cb(ad, NULL, NULL);
4955 case DISPLAY_SHOOTING_MODE_POPUP:
4956 __setting_shot_mode_popup_cb(ad, NULL, NULL);
4958 case DISPLAY_RECORDING_MODE_POPUP:
4959 __setting_record_mode_popup(ad, NULL, NULL);
4961 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4962 __setting_video_resolution_popup_cb(ad, NULL, NULL);
4964 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4965 __setting_photo_resolution_popup_cb(ad, NULL, NULL);
4967 case DISPLAY_ISO_POPUP:
4968 __setting_iso_popup_cb(ad, NULL, NULL);
4970 case DISPLAY_METERING_POPUP:
4971 __setting_metering_popup_cb(ad, NULL, NULL);
4973 case DISPLAY_WHITE_BALANCE_POPUP:
4974 __setting_wb_popup_cb(ad, NULL, NULL);
4976 case DISPLAY_FLASH_POPUP:
4977 __setting_flash_popup(ad, NULL, NULL);
4979 case DISPLAY_TIMER_POPUP:
4980 __setting_timer_popup_cb(ad,NULL,NULL);
4982 case DISPLAY_SAVE_AS_FLIP:
4983 __setting_save_as_flip_popup_cb(ad, NULL, NULL);
4989 return ECORE_CALLBACK_CANCEL;
4992 Eina_Bool cam_show_setting_menu(void *data)
4994 struct appdata *ad = (struct appdata *)data;
4995 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
4997 if (ad->show_setting_popup_after_rotate == TRUE) {
4998 cam_toolbar_setting_popup_create(ad);
4999 } else if (ad->show_edit_shortcuts_popup_after_rotate == TRUE) {
5000 toolbar_create_shortcuts_popup(ad);
5003 if (ad->displayed_setting_popup != DISPLAY_NONE_POPUP) {
5004 ecore_idler_add(cam_show_setting_menu_option_popup, ad);
5007 ad->is_rotating = FALSE;
5009 return ECORE_CALLBACK_CANCEL;
5012 void toolbar_destroy_shortcuts_popup(struct appdata *ad)
5014 cam_retm_if(ad == NULL, "appdata is null");
5015 cam_retm_if(ad->toolbar_edje == NULL, "appdata is null");
5016 elm_object_part_content_unset(ad->toolbar_edje, "shortcuts_popup");
5018 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_scroll);
5019 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
5020 ad->edit_shortcuts_popup_scroll = NULL;
5021 ad->edit_shortcuts_popup_ctx = NULL;
5022 ad->edit_shortcuts_popup = NULL;
5025 __cam_toolbar_edit_shortcuts_data_clean();
5027 destroy_menubar_shortcuts_mouse_event(ad, 0, TRUE);
5030 /*TODO: here should be rotate icon*/
5032 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5033 "toolbar_1_icon,normal", "prog");
5034 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5035 "toolbar_2_icon,normal", "prog");
5036 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5037 "toolbar_3_icon,normal", "prog");
5038 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5039 "toolbar_4_icon,normal", "prog");
5041 __set_show_state_preview_obj(ad, TRUE);
5044 for (i = CAM_MENU_EMPTY + 1; i < CAM_MENU_MAX_NUMS; i++) {
5045 __update_menubar_icon_by_index(ad, i);
5049 void cam_toolbar_setting_popup_destroy(struct appdata *ad)
5051 cam_retm_if(ad == NULL, "appdata is null");
5054 if (ad->setting_ctxpopup)
5055 setting_ctxpopup_destroy(ad);
5058 elm_genlist_clear(ad->genlist);
5059 evas_object_del(ad->genlist);
5063 DEL_EVAS_OBJECT(ad->toolbar_setting_popup);
5064 ad->toolbar_setting_popup_area = NULL;
5065 ad->setting_select_item = NULL; /*select item*/
5067 /*elm_all_flush();*/
5068 cam_elm_cache_flush();
5070 __set_show_state_preview_obj(ad, TRUE);
5073 void cam_toolbar_setting_popup_update(struct appdata *ad)
5075 cam_retm_if(ad == NULL, "appdata is null");
5077 if (!ad->toolbar_setting_popup)
5080 if (ad->setting_ctxpopup)
5081 setting_ctxpopup_destroy(ad);
5083 __update_setting_popup(ad);
5086 static Evas_Object *_setting_gl_icon_get(void *data, Evas_Object *obj, const char *part)
5088 struct appdata *ad = (struct appdata *)cam_appdata_get();
5089 cam_retvm_if(ad == NULL, NULL, "appdata is null");
5091 int index = (int)data;
5093 CamAppData *camapp = ad->camapp_handle;
5094 cam_retv_if(camapp == NULL, NULL);
5095 Evas_Object *icon = NULL;
5098 case CAM_MENU_SHORTCUTS:
5101 case CAM_MENU_BURST_SHOT_MODE:
5103 icon = elm_check_add(obj);
5105 if (ad->camapp_handle->burst_shot) {
5106 elm_check_state_set(icon, EINA_TRUE);
5108 elm_check_state_set(icon, EINA_FALSE);
5111 elm_object_style_set(icon, "genlist/on&off");
5112 evas_object_smart_callback_add(icon, "changed", __setting_burst_shot_popup_cb, (void*)ad);
5113 ad->burst_shot_mode_radio = icon;
5116 case CAM_MENU_VOLUME_KEY:
5118 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5119 icon = elm_image_add(obj);
5120 strncpy(icon_name, __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), BUTTON_STATE_NORMAL), sizeof(icon_name));
5121 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5124 case CAM_MENU_SELF_PORTRAIT:
5125 icon = elm_check_add(obj);
5127 if (camapp->self_portrait == FALSE) {
5128 elm_check_state_set(icon, EINA_FALSE);
5130 elm_check_state_set(icon, EINA_TRUE);
5133 elm_object_style_set(icon, "genlist/on&off");
5135 case CAM_MENU_FLASH:
5137 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5138 icon = elm_image_add(obj);
5139 strncpy(icon_name, __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), BUTTON_STATE_NORMAL), sizeof(icon_name));
5140 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5143 case CAM_MENU_SHOOTING_MODE:
5145 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5146 icon = elm_image_add(obj);
5147 strncpy(icon_name, __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5148 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5151 case CAM_MENU_RECORDING_MODE:
5153 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5154 icon = elm_image_add(obj);
5155 strncpy(icon_name, __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5156 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5159 case CAM_MENU_SCENE_MODE:
5161 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5162 icon = elm_image_add(obj);
5163 strncpy(icon_name, __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5164 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5167 case CAM_MENU_EXPLOSURE_VALUE:
5169 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5170 icon = elm_image_add(obj);
5171 strncpy(icon_name, __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, BUTTON_STATE_NORMAL), sizeof(icon_name));
5172 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5175 case CAM_MENU_FOCUS_MODE:
5177 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5178 icon = elm_image_add(obj);
5179 strncpy(icon_name, __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5180 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5183 case CAM_MENU_TIMER:
5185 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5186 icon = elm_image_add(obj);
5187 strncpy(icon_name, __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), BUTTON_STATE_NORMAL), sizeof(icon_name));
5188 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5191 case CAM_MENU_EFFECTS:
5193 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5194 icon = elm_image_add(obj);
5195 strncpy(icon_name, __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), BUTTON_STATE_NORMAL), sizeof(icon_name));
5196 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5199 case CAM_MENU_PHOTO_RESOLUTION:
5201 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5202 icon = elm_image_add(obj);
5203 strncpy(icon_name, __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5204 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5207 case CAM_MENU_VIDEO_RESOLUTION:
5209 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5210 icon = elm_image_add(obj);
5211 strncpy(icon_name, __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5212 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5215 case CAM_MENU_WHITE_BALANCE:
5217 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5218 icon = elm_image_add(obj);
5219 strncpy(icon_name, __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), BUTTON_STATE_NORMAL), sizeof(icon_name));
5220 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5225 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5226 icon = elm_image_add(obj);
5227 strncpy(icon_name, __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), BUTTON_STATE_NORMAL), sizeof(icon_name));
5228 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5231 case CAM_MENU_METERING:
5233 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5234 icon = elm_image_add(obj);
5235 strncpy(icon_name, __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), BUTTON_STATE_NORMAL), sizeof(icon_name));
5236 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5239 case CAM_MENU_ANTI_SHAKE:
5240 icon = elm_check_add(obj);
5242 if (ad->camapp_handle->anti_shake) {
5243 elm_check_state_set(icon, EINA_TRUE);
5245 elm_check_state_set(icon, EINA_FALSE);
5248 elm_object_style_set(icon, "genlist/on&off");
5249 evas_object_smart_callback_add(icon, "changed", __setting_anti_shake_popup_cb, (void*)ad);
5250 ad->antishake_radio = icon;
5252 case CAM_MENU_OUTDOOR_VISIBILITY:/*TODO:is finding solution*/
5253 icon = elm_check_add(obj);
5255 if (ad->camapp_handle->outdoor_visibility) {
5256 elm_check_state_set(icon, EINA_TRUE);
5258 elm_check_state_set(icon, EINA_FALSE);
5261 elm_object_style_set(icon, "genlist/on&off");
5262 evas_object_smart_callback_add(icon, "changed", __setting_outdoor_visibility_popup_cb, (void*)ad);
5263 ad->outdoor_visibility_radio = icon;
5265 case CAM_MENU_AUTO_CONTRAST:
5266 icon = elm_check_add(obj);
5268 if (ad->camapp_handle->auto_contrast) {
5269 elm_check_state_set(icon, EINA_TRUE);
5272 elm_check_state_set(icon, EINA_FALSE);
5274 elm_object_style_set(icon, "genlist/on&off");
5275 evas_object_smart_callback_add(icon, "changed", __setting_autocontrast_popup_cb, (void*)ad);
5276 ad->autocontrast_radio = icon;
5279 case CAM_MENU_GUIDELINES:
5280 icon = elm_check_add(obj);
5282 if (ad->camapp_handle->guideline) {
5283 elm_check_state_set(icon, EINA_TRUE);
5285 elm_check_state_set(icon, EINA_FALSE);
5288 elm_object_style_set(icon, "genlist/on&off");
5289 evas_object_smart_callback_add(icon, "changed", __setting_guideline_popup_cb, (void*)ad);
5290 ad->guideline_radio = icon;
5292 case CAM_MENU_CAPTURE_VOICE:/*TODO:now no relase solution to support it*/
5293 icon = elm_check_add(obj);
5295 if (ad->camapp_handle->capture_by_voice) {
5296 elm_check_state_set(icon, EINA_TRUE);
5298 elm_check_state_set(icon, EINA_FALSE);
5301 elm_object_style_set(icon, "genlist/on&off");
5302 evas_object_smart_callback_add(icon, "changed", __setting_capture_by_voice_popup_cb, (void*)ad);
5303 ad->capture_by_voice_radio = icon;
5305 case CAM_MENU_GPS_TAG:
5306 icon = elm_check_add(obj);
5309 elm_check_state_set(icon, EINA_TRUE);
5311 elm_check_state_set(icon, EINA_FALSE);
5314 elm_object_style_set(icon, "genlist/on&off");
5315 evas_object_smart_callback_add(icon, "changed", __setting_gps_popup_cb, (void*)ad);
5316 ad->gps_radio = icon;
5318 case CAM_MENU_SAVE_AS_FLIP:
5319 icon = elm_check_add(obj);
5321 if (ad->camapp_handle->save_as_flip) {
5322 elm_check_state_set(icon, EINA_TRUE);
5324 elm_check_state_set(icon, EINA_FALSE);
5327 elm_object_style_set(icon, "genlist/on&off");
5328 evas_object_smart_callback_add(icon, "changed", __setting_save_as_flip_popup_cb, (void*)ad);
5329 ad->save_as_flip_radio = icon;
5331 case CAM_MENU_STORAGE:
5333 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5334 icon = elm_image_add(obj);
5335 strncpy(icon_name, __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), BUTTON_STATE_NORMAL), sizeof(icon_name));
5336 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5339 case CAM_MENU_RESET:
5341 case CAM_MENU_MAX_NUMS:
5342 DEBUG_TRACE("your array out, please check!");
5345 DEBUG_TRACE("Error occur!");
5348 /*evas_object_resize(icon, 86 , 84);
5349 evas_object_size_hint_min_set(icon, 86, 84);
5350 evas_object_size_hint_max_set(icon, 86, 84);*/
5351 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5352 evas_object_size_hint_align_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5357 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part)
5359 int index = (int)data;
5362 case CAM_MENU_SHORTCUTS:
5363 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EDIT_SHORTCUTS"));
5365 case CAM_MENU_BURST_SHOT_MODE:
5366 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB"));
5368 case CAM_MENU_VOLUME_KEY:
5369 return strdup(dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"));
5371 case CAM_MENU_SELF_PORTRAIT:
5372 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT"));
5374 case CAM_MENU_FLASH:
5375 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FLASH"));
5377 case CAM_MENU_SHOOTING_MODE:
5378 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE"));
5380 case CAM_MENU_RECORDING_MODE:
5381 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE"));
5383 case CAM_MENU_SCENE_MODE:
5384 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE"));
5386 case CAM_MENU_EXPLOSURE_VALUE:
5387 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE"));
5389 case CAM_MENU_FOCUS_MODE:
5390 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE"));
5392 case CAM_MENU_TIMER:
5393 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_TIMER"));
5395 case CAM_MENU_EFFECTS:
5396 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS"));
5398 case CAM_MENU_PHOTO_RESOLUTION:
5399 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"));
5401 case CAM_MENU_VIDEO_RESOLUTION:
5402 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"));
5404 case CAM_MENU_WHITE_BALANCE:
5405 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB"));
5408 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ISO"));
5410 case CAM_MENU_METERING:
5411 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_METERING"));
5413 case CAM_MENU_ANTI_SHAKE:
5414 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE"));
5416 case CAM_MENU_OUTDOOR_VISIBILITY:
5417 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY"));
5419 case CAM_MENU_AUTO_CONTRAST:
5420 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST"));
5422 case CAM_MENU_GUIDELINES:
5423 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE"));
5425 case CAM_MENU_CAPTURE_VOICE:
5426 return strdup("Capture with voice");
5428 case CAM_MENU_GPS_TAG:
5429 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG"));
5431 case CAM_MENU_SAVE_AS_FLIP:
5432 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED"));
5434 case CAM_MENU_STORAGE:
5435 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE"));
5437 case CAM_MENU_RESET:
5438 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET"));
5440 case CAM_MENU_MAX_NUMS:
5441 DEBUG_TRACE("your array out, please check!");
5444 DEBUG_TRACE("Error occur!");
5446 return strdup("test");
5449 static void __setting_gl_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5452 struct appdata *ad = (struct appdata *)data;
5454 if (!event_info) return;
5455 if (ad->setting_ctxpopup) {
5456 /*setting_ctxpopup_destroy(ad);*/
5457 evas_object_hide(ad->setting_ctxpopup);
5459 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5460 setting_gl_x = mu->canvas.x;
5461 setting_gl_y = mu->canvas.y;
5462 setting_gl_x = mu->output.x;
5463 setting_gl_y = mu->output.y;
5464 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5465 DEBUG_TRACE("mu->output.x = %d, mu->output.y = %d", mu->output.x, mu->output.y);
5467 __setting_popup_timeout_checker_start(ad);
5468 cam_app_timeout_checker_update();
5471 /*mouse move func for setting popup*/
5472 static void __setting_gl_mouse_move(void *data, Evas * evas, Evas_Object *obj,
5475 struct appdata *ad = (struct appdata *)data;
5477 if (!event_info) return;
5478 if (ad->setting_ctxpopup) {
5479 /*setting_ctxpopup_destroy(ad);*/
5480 evas_object_hide(ad->setting_ctxpopup);
5482 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
5483 setting_gl_x = mu->cur.canvas.x;
5484 setting_gl_y = mu->cur.canvas.y;
5485 setting_gl_x = mu->cur.output.x;
5486 setting_gl_y = mu->cur.output.y;
5487 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5488 DEBUG_TRACE("mu->cur->canvas.x = %d, mu->cur->canvas.y = %d", mu->cur.canvas.x, mu->cur.canvas.y);
5490 __setting_popup_timeout_checker_start(ad);
5491 cam_app_timeout_checker_update();
5494 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5497 struct appdata *ad = (struct appdata *)data;
5499 cam_app_timeout_checker_update();
5500 __setting_popup_timeout_checker_start(ad);
5501 if (!event_info) return;
5502 Evas_Coord x, y, w, h;
5504 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5505 shortcuts_canvas_prev_x = mu->canvas.x;
5506 shortcuts_canvas_prev_y = mu->canvas.y;
5507 DEBUG_TRACE("x = %d, y = %d", shortcuts_canvas_prev_x, shortcuts_canvas_prev_y);
5509 cam_long_press_trigger(LONG_PRESS_ID_EDIT, mu->canvas.x, mu->canvas.y);
5511 evas_object_geometry_get(obj, &x, &y, &w, &h);
5512 Eina_List *l = NULL;
5513 ShortCutData *shortcuts_ele = NULL;
5515 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5516 if (shortcuts_ele == NULL)
5518 evas_object_geometry_get(shortcuts_ele->icon, &x, &y, &w, &h);
5519 shortcuts_ele->x = x;
5520 shortcuts_ele->y = y;
5521 shortcuts_ele->w = w;
5522 shortcuts_ele->h = h;
5523 DEBUG_TRACE("x,%d y,%d w,%d h,%d index %d",x, y, w, h, shortcuts_ele->part_index);
5525 if (obj == shortcuts_ele->icon) {
5526 ad->shortcut_data = shortcuts_ele;
5529 if (!ad->shortcut_data) { /*not find shortcut data, so it will come from menubar*/
5530 int menubar_no = -1;
5531 if (check_if_shortcuts_from_menubar(ad, obj, &menubar_no)) {
5532 /*get shortcuts data:*/
5533 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5534 if (shortcuts_ele == NULL)
5536 if (shortcuts_ele->menu_bar_no == menubar_no) {
5537 ad->shortcut_data = shortcuts_ele;
5541 DEBUG_TRACE("error occur!");
5544 DEBUG_TRACE("find in the shortcuts panel");
5547 evas_object_raise(obj);
5548 evas_object_lower(evas_object_above_get(obj));
5552 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj,void *event_info)
5555 struct appdata *ad = (struct appdata *)data;
5557 if (!event_info) return;
5558 pthread_mutex_lock(&edit_shortcuts_move_mutex);
5559 ShortCutData *moving_ele = ad->shortcut_data;
5560 ShortCutData *swap_ele = ad->swap_data;
5562 /*NOTE: reset opacity*/
5563 if (ad->swap_data) {
5564 if (ad->swap_data->is_on_menu_bar) {
5567 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
5568 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
5569 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
5574 if (ad->swap_data->icon) {
5575 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
5576 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
5582 if (swap_ele && swap_ele->setting_type >= 0) {
5583 if ((swap_ele->is_on_menu_bar & moving_ele->is_on_menu_bar) == TRUE) {/*note: both in menubar*/
5584 __swap_menubar_shortcuts(ad, moving_ele, swap_ele);
5585 cam_toolbar_menu_config_update((void *)ad);
5586 } else if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
5587 DEBUG_TRACE("do nothing in mouse up");
5588 } else {/*note: one is in menubar, one is not*/
5589 if (swap_ele->is_on_menu_bar == TRUE) {/*note: swap_ele is on menubar*/
5590 evas_object_event_callback_del(obj,
5591 EVAS_CALLBACK_MOUSE_MOVE,
5592 __setting_shortcuts_mouse_move);
5593 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
5594 } else {/*note: swap_ele is not on menubar*/
5595 moving_ele->is_on_menu_bar = FALSE;
5596 int tmp_menub_bar_no = moving_ele->menu_bar_no;
5597 moving_ele->menu_bar_no = -1;
5598 DEL_EVAS_OBJECT(obj);
5599 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
5600 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5601 cam_toolbar_menu_config_update((void *)ad);
5602 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5604 /*TODO: update part_index*/
5605 __edit_shortcuts_layout_shortcuts_insert(ad, swap_ele, moving_ele);
5609 if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar)) {
5610 /*note: menu bar shortcuts move to the empty item in toolbar*/
5611 if (moving_ele->is_on_menu_bar) {
5612 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5614 moving_ele->is_on_menu_bar = TRUE;
5615 moving_ele->menu_bar_no = swap_ele->menu_bar_no;
5616 moving_ele->part_index = -1;
5617 ad->toolbar_menu_arrays[moving_ele->menu_bar_no].menu_type = moving_ele->setting_type;
5618 cam_toolbar_menu_config_update((void *)ad);
5619 update_menubar_shortcuts_mouse_event(ad, moving_ele->menu_bar_no, FALSE);
5620 evas_object_hide(moving_ele->icon);
5623 ad->swap_data = NULL;
5624 } else if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar == FALSE)) {
5625 /*note: case: menubar shortcuts move to the empty item in edit short panel: flash|empty(move to here)|empty*/
5626 if (moving_ele->is_on_menu_bar) {
5627 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5629 moving_ele->is_on_menu_bar = FALSE;
5630 moving_ele->menu_bar_no = -1;
5631 moving_ele->part_index = swap_ele->part_index;
5632 moving_ele->list_index = swap_ele->list_index;
5633 cam_toolbar_menu_config_update((void *)ad);
5634 evas_object_show(moving_ele->icon);
5635 HIDE_EVAS_OBJECT(obj);
5638 ad->swap_data = NULL;
5639 __resort_edit_shortcuts_list_by_part_index();
5641 ad->swap_data = NULL;
5642 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5643 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
5647 bool shortcuts_rect_check_intersect(Evas_Coord a_left, Evas_Coord a_top, Evas_Coord a_right, Evas_Coord a_bottom,
5648 Evas_Coord b_left, Evas_Coord b_top, Evas_Coord b_right, Evas_Coord b_bottom)
5650 if( (MIN(a_right, b_right) - MAX(a_left, b_left) > 60)
5651 && (MIN(a_bottom, b_bottom) - MAX(a_top, b_top)> 30)) {
5659 /*note: parent_shortcuts is swap_ele, sub_shortcuts is cur_ele, if cur_ele is in swap_ele, not swap them*/
5660 gboolean __cam_toolbar_shortcuts_rect_contain_check(CAM_Edit_ShortCuts_Rect sub_shortcuts,
5661 CAM_Edit_ShortCuts_Rect parent_shortcuts,
5665 int swap_rel1_x, swap_rel1_y, swap_w, swap_h;
5666 int cur_rel1_x, cur_rel1_y, cur_w, cur_h;
5667 if (parent_shortcuts.w * parent_shortcuts.h < sub_shortcuts.w * sub_shortcuts.h) {
5668 swap_rel1_x = sub_shortcuts.x;
5669 swap_rel1_y = sub_shortcuts.y;
5670 swap_w = sub_shortcuts.w;
5671 swap_h = sub_shortcuts.h;
5673 cur_rel1_x = parent_shortcuts.x;
5674 cur_rel1_y = parent_shortcuts.y;
5675 cur_w = parent_shortcuts.w;
5676 cur_h = parent_shortcuts.h;
5679 cur_rel1_x = sub_shortcuts.x;
5680 cur_rel1_y = sub_shortcuts.y;
5681 cur_w = sub_shortcuts.w;
5682 cur_h = sub_shortcuts.h;
5684 swap_rel1_x = parent_shortcuts.x;
5685 swap_rel1_y = parent_shortcuts.y;
5686 swap_w = parent_shortcuts.w;
5687 swap_h = parent_shortcuts.h;
5690 return __shortcuts_rect_contain_check(swap_rel1_x, swap_rel1_y, swap_w, swap_h,
5691 cur_rel1_x, cur_rel1_y, cur_w, cur_h,
5692 correction_w, correction_h);
5695 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
5706 int a_rel1_x = swap_rel1_x - correction_w;
5707 int a_rel1_y = swap_rel1_y - correction_h;
5710 a_rel2_x = swap_rel1_x + cur_w + correction_w;
5712 a_rel2_x = swap_rel1_x + swap_w + correction_w;
5715 a_rel2_y = swap_rel1_y + cur_h + correction_h;
5717 a_rel2_y = swap_rel1_y + swap_h + correction_h;
5719 int b_rel1_x = cur_rel1_x;
5720 int b_rel1_y = cur_rel1_y;
5721 int b_rel2_x = cur_rel1_x + cur_w;
5722 int b_rel2_y = cur_rel1_y + cur_h;
5724 if ((a_rel1_x < b_rel1_x)
5725 &&(a_rel1_y < b_rel1_y)
5726 &&(a_rel2_x > b_rel2_x)
5727 &&(a_rel2_y > b_rel2_y)
5739 @item_2:behind item_1
5741 void shortcuts_swap(Eina_List **head, Eina_List * item_1, Eina_List * item_2)
5744 Eina_List *tmp_item_1_next = item_1->next;
5745 Eina_List *tmp_item_2_prev = item_2->prev;
5746 if(item_1->prev!=NULL)
5747 item_1->prev->next = item_2;
5751 item_2->prev = item_1->prev;
5753 item_1->next = item_2->next;
5755 if(item_2->next!=NULL)
5756 item_2->next->prev = item_1;
5758 if (tmp_item_1_next == item_2) { /*item_1->item_2*/
5759 item_2->next = item_1;
5760 item_1->prev = item_2;
5761 } else {/*item_1->....->item_2*/
5762 tmp_item_1_next->prev = item_2;
5763 item_2->next = tmp_item_1_next;
5764 tmp_item_2_prev->next = item_1;
5765 item_1->prev = tmp_item_2_prev;
5769 static void __swap_menubar_shortcuts_ctx(struct appdata *ad, ShortCutData *menu_ele, ShortCutData *cur_ele)
5771 if (!cur_ele || !ad || !menu_ele)
5773 cur_ele->is_on_menu_bar = TRUE;
5774 cur_ele->menu_bar_no = menu_ele->menu_bar_no;
5775 DEBUG_TRACE("cur_ele->menu_bar_no = %d", cur_ele->menu_bar_no);
5776 if (cur_ele->menu_bar_no > CAM_MENU_BAR_LEFT_4 || cur_ele->menu_bar_no < CAM_MENU_BAR_LEFT_0) {
5777 cam_critical(LOG_UI, "menubar no error, check it ASAP");
5782 ad->toolbar_menu_arrays[cur_ele->menu_bar_no].menu_type = cur_ele->setting_type;
5783 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5785 menu_ele->is_on_menu_bar = FALSE;
5786 menu_ele->menu_bar_no = -1;
5787 char buf[16] = { 0 };
5788 snprintf(buf, sizeof(buf),"row.%d", menu_ele->part_index);
5789 DEBUG_TRACE("PART:%s", buf);
5790 evas_object_show(menu_ele->icon);
5791 evas_object_hide(cur_ele->icon);
5792 snprintf(buf, sizeof(buf),"row.%d", cur_ele->part_index);
5793 DEBUG_TRACE("PART:%s", buf);
5794 cam_toolbar_menu_config_update((void *)ad);
5798 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect)
5801 Evas_Coord x=0, y=0, w=0, h=0;
5803 evas_object_geometry_get(shortcuts_icon, &x, &y, &w, &h);
5810 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no)
5813 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0)
5816 ad->toolbar_menu_arrays[menubar_no].menu_type = -1;
5817 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5818 edje_object_part_unswallow(_EDJ(ad->toolbar_edje), icon);
5819 DEL_EVAS_OBJECT(icon);
5820 icon = elm_image_add(ad->toolbar_edje);
5821 elm_image_file_set(icon, NULL, NULL);
5822 char buf[32+1] = {'\0',};
5823 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5824 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5825 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5829 * note: check moving shortcuts with possible empty shortcuts in menubar,
5830 * if find, and moving shortcuts is in the empty shortcuts area, push this moving
5831 * shortcuts in this empty shortcuts. and return true, else return false
5833 gboolean check_with_menubar_empty_shortcuts(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5835 if (!ad || !moving_ele ||!moving_obj)
5837 CAM_Edit_ShortCuts_Rect sub_rect;
5838 ShortCutData *cur_ele = moving_ele;
5839 __get_shortcuts_rect(moving_obj, &sub_rect);
5842 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5843 int type = ad->toolbar_menu_arrays[i].menu_type;
5844 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5846 CAM_Edit_ShortCuts_Rect parent_rect;
5847 __get_shortcuts_rect(icon, &parent_rect);
5848 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
5849 gboolean sub_in_parent = FALSE;
5850 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
5852 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
5853 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
5854 if (sub_in_parent) {
5855 if (cur_ele->is_on_menu_bar) {
5856 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
5858 cur_ele->is_on_menu_bar = TRUE;
5859 cur_ele->menu_bar_no = i;
5860 cur_ele->part_index = -1;
5861 ad->toolbar_menu_arrays[i].menu_type = cur_ele->setting_type;
5862 cam_toolbar_menu_config_update((void *)ad);
5864 update_menubar_shortcuts_mouse_event(ad, i, FALSE);
5866 evas_object_hide(cur_ele->icon);
5867 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5876 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no)
5878 if (!obj || !ad || !menubar_no)
5881 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5882 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5892 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele)
5895 Evas_Object_Event_Cb func;
5896 CAM_MENU_ITEM setting_type;
5897 char *icon_filepath;
5900 gboolean is_on_menu_bar;
5901 Evas_Coord x, y, w, h;
5907 icon = cur_ele->icon;
5908 func = cur_ele->func;
5909 setting_type = cur_ele->setting_type;
5910 icon_filepath = cur_ele->icon_filepath;
5911 name = cur_ele->name;
5912 menu_bar_no = cur_ele->menu_bar_no;
5913 is_on_menu_bar = cur_ele->is_on_menu_bar;
5918 part_index = cur_ele->part_index;
5919 list_index = cur_ele->list_index;
5923 cur_ele->icon = swap_ele->icon;
5924 cur_ele->func = swap_ele->func;
5925 cur_ele->setting_type = swap_ele->setting_type;
5926 cur_ele->icon_filepath = swap_ele->icon_filepath;
5927 cur_ele->name = swap_ele->name;
5928 /*cur_ele->menu_bar_no = swap_ele->menu_bar_no;*/
5929 cur_ele->is_on_menu_bar = swap_ele->is_on_menu_bar;
5930 cur_ele->x = swap_ele->x;
5931 cur_ele->y = swap_ele->y;
5932 cur_ele->w = swap_ele->w;
5933 cur_ele->h = swap_ele->h;
5934 cur_ele->part_index = swap_ele->part_index;
5935 /*cur_ele->list_index = swap_ele->list_index;*/
5936 cur_ele->row = swap_ele->row;
5937 cur_ele->col = swap_ele->col;
5939 swap_ele->icon = icon;
5940 swap_ele->func = func;
5941 swap_ele->setting_type = setting_type;
5942 swap_ele->icon_filepath = icon_filepath;
5943 swap_ele->name = name;
5944 /*swap_ele->menu_bar_no = menu_bar_no;*/
5945 swap_ele->is_on_menu_bar = is_on_menu_bar;
5950 swap_ele->part_index = part_index;
5951 /*swap_ele->list_index = swap_ele->list_index;*/
5952 swap_ele->row = row;
5953 swap_ele->col = col;
5957 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
5962 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
5964 ad->toolbar_menu_arrays[menubar_no].menu_type = setting_type;
5965 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5966 DEL_EVAS_OBJECT(icon);
5967 icon = elm_image_add(ad->toolbar_edje);
5968 char buf[32 + 1] = { '\0', };
5969 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5970 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5971 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5972 __update_menubar_icon_by_index(ad, setting_type);
5975 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele)
5977 __shortcuts_data_swap(cur_ele, swap_ele);
5978 __update_menubar_shortcuts_by_menubar_no(ad, cur_ele->setting_type, cur_ele->menu_bar_no);
5979 __update_menubar_shortcuts_by_menubar_no(ad, swap_ele->setting_type, swap_ele->menu_bar_no);
5980 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5981 update_menubar_shortcuts_mouse_event(ad, swap_ele->menu_bar_no, FALSE);
5984 /*NOTE: moving shortcuts, is from menubar*/
5985 static gboolean __check_menubar_moving_shortcuts_swap(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5987 cam_retv_if(ad == NULL, FALSE);
5988 cam_retv_if(moving_ele == NULL, FALSE);
5989 cam_retv_if(moving_obj == NULL, FALSE);
5991 ShortCutData *shortcuts_ele;
5992 ShortCutData *cur_ele = moving_ele;
5993 CAM_Edit_ShortCuts_Rect sub_rect;
5994 __get_shortcuts_rect(moving_obj, &sub_rect);
5996 ShortCutData *swap_ele = NULL;
5997 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5998 if (shortcuts_ele == NULL)
6000 if (shortcuts_ele->icon == cur_ele->icon) {
6001 DEBUG_TRACE("find self");
6004 Evas_Object *parent_icon = NULL;
6005 if (shortcuts_ele->is_on_menu_bar) {
6006 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6009 parent_icon = shortcuts_ele->icon;
6012 CAM_Edit_ShortCuts_Rect parent_rect;
6013 __get_shortcuts_rect(parent_icon, &parent_rect);
6015 gboolean sub_in_parent = FALSE;
6016 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6018 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6019 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6020 if (sub_in_parent) {
6021 DEBUG_TRACE("find swap ele");
6022 swap_ele = shortcuts_ele;
6027 DEBUG_TRACE("not find, continue");
6029 /*evas_object_move(moving_obj, x , y);*/
6032 if (swap_ele->is_on_menu_bar) {/*TODO: support menubar shortcuts swap*/
6033 __swap_menubar_shortcuts(ad, cur_ele, swap_ele);
6034 cam_toolbar_menu_config_update((void *)ad);
6035 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6038 cur_ele->is_on_menu_bar = FALSE;
6039 int tmp_menub_bar_no = cur_ele->menu_bar_no;
6040 cur_ele->menu_bar_no = -1;
6041 DEL_EVAS_OBJECT(moving_obj);
6043 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
6044 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6046 cam_toolbar_menu_config_update((void *)ad);
6048 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6049 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6056 static void __edit_shortcuts_layout_shortcuts_move_prev(struct appdata *ad,
6057 ShortCutData *swap_ele,
6058 ShortCutData *cur_ele)
6060 cam_ret_if(ad == NULL);
6061 cam_ret_if(swap_ele == NULL);
6062 cam_ret_if(cur_ele == NULL);
6064 ShortCutData *shortcuts_ele;
6065 Eina_List *cur_item = NULL;
6066 Eina_List *swap_item = NULL;
6067 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6068 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6072 * note: cur_item ->...->swap_item, should insert cur_item after swap_item, and
6073 * move between cur_item ...swap_item items.
6079 int temp_swap_ele_list_index = swap_ele->list_index;
6080 int temp_swap_ele_part_index = swap_ele->part_index;
6081 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6082 if (shortcuts_ele == NULL)
6084 if (shortcuts_ele == cur_ele) {
6085 cur_ele->list_index = temp_swap_ele_list_index;
6086 cur_ele->part_index = temp_swap_ele_part_index;
6090 if (!shortcuts_ele->is_on_menu_bar) {
6091 /* TODO: for animator effect*/
6092 char buf[32+1] = { '\0',};
6093 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6094 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_PREV, buf);
6095 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6096 shortcuts_ele->part_index -= 1;
6098 shortcuts_ele->list_index -= 1;
6099 if (shortcuts_ele == swap_ele) {
6103 Eina_List *left = NULL;
6104 Eina_List *right = NULL;
6105 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6107 left = eina_list_split_list(shortcuts_ele_list, swap_item, &right);
6108 left = eina_list_append(left, cur_ele);
6109 shortcuts_ele_list = eina_list_merge(left, right);
6114 /*note: insert insert_ele before cur_ele*/
6115 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
6116 ShortCutData *cur_ele,
6117 ShortCutData *insert_ele)
6119 cam_ret_if(ad == NULL);
6120 cam_ret_if(cur_ele == NULL);
6121 cam_ret_if(insert_ele == NULL);
6122 Eina_List *l = NULL;
6123 ShortCutData *shortcuts_ele = NULL;
6124 Eina_List *cur_item = NULL;
6126 insert_ele->part_index = cur_ele->part_index;
6127 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6128 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6129 if (shortcuts_ele == NULL)
6131 if (!shortcuts_ele->is_on_menu_bar) {
6132 char buf[32+1] = { '\0',};
6133 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6134 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6135 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6136 shortcuts_ele->part_index += 1;
6139 __resort_edit_shortcuts_list_by_part_index();
6144 static void __edit_shortcuts_layout_shortcuts_move_next(struct appdata *ad,
6145 ShortCutData *swap_ele,
6146 ShortCutData *cur_ele)
6148 cam_ret_if(ad == NULL);
6149 cam_ret_if(swap_ele == NULL);
6150 cam_ret_if(cur_ele == NULL);
6152 ShortCutData *shortcuts_ele;
6153 Eina_List *swap_item = NULL;
6155 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6159 * note: swap_item ->...->cur_item, should insert cur_item before swap_item, and
6160 * move between swap_item ...cur_item items.
6164 int temp_swap_ele_list_index = swap_ele->list_index;
6165 int temp_swap_ele_part_index = swap_ele->part_index;
6166 EINA_LIST_FOREACH(swap_item, l, shortcuts_ele) {
6167 if (shortcuts_ele == NULL)
6169 if (shortcuts_ele == cur_ele) {
6170 cur_ele->list_index = temp_swap_ele_list_index;
6171 cur_ele->part_index = temp_swap_ele_part_index;
6174 if (!shortcuts_ele->is_on_menu_bar) {
6175 /* TODO: for animator effect*/
6176 char buf[32+1] = { '\0',};
6177 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6178 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6179 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6180 shortcuts_ele->part_index += 1;
6182 shortcuts_ele->list_index += 1;
6184 Eina_List *left = NULL;
6185 Eina_List *right = NULL;
6186 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6187 if (swap_item->prev) {
6188 left = eina_list_split_list(shortcuts_ele_list, swap_item->prev, &right);
6189 left = eina_list_append(left, cur_ele);
6190 shortcuts_ele_list = eina_list_merge(left, right);
6192 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, cur_ele);
6196 static void __resort_edit_shortcuts(struct appdata *ad, Evas_Object *moving_obj)
6198 cam_ret_if(ad == NULL);
6199 cam_ret_if(moving_obj == NULL);
6200 __resort_edit_shortcuts_list_by_part_index();
6202 ShortCutData *shortcuts_ele;
6203 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6204 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6205 if (shortcuts_ele == NULL)
6207 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6211 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6213 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6214 if (shortcuts_ele == NULL)
6216 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6217 if (shortcuts_ele->part_index >=0
6218 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
6220 shortcuts_part_to_menu[shortcuts_ele->part_index] = shortcuts_ele->setting_type;
6222 if (moving_obj == shortcuts_ele->icon) {
6223 ad->shortcut_data = shortcuts_ele;
6224 DEBUG_TRACE("PART:%s", buf);
6227 DEBUG_TRACE("PART:%s", buf);
6228 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6232 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6233 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6234 edit_shortcuts_prop_array[index].prop_name,
6235 shortcuts_part_to_menu[index]);
6240 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
6241 ShortCutData *swap_ele,
6242 ShortCutData *cur_ele)
6244 cam_ret_if(ad == NULL);
6245 cam_ret_if(swap_ele == NULL);
6246 cam_ret_if(cur_ele == NULL);
6247 Eina_List *cur_item = NULL;
6248 Eina_List *prev_item = NULL;
6249 Eina_List *next_item = NULL;
6250 Evas_Coord prev_x=0, prev_y=0, prev_w=0, prev_h=0;
6251 Evas_Coord next_x=0, next_y=0, next_w=0, next_h=0;
6253 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6256 if (swap_ele->list_index > cur_ele->list_index) {
6257 next_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6258 if (NULL != next_item) {
6259 evas_object_geometry_get(swap_ele->icon, &next_x, &next_y, &next_w, &next_h);
6260 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6261 cur_ele->x = next_x;
6262 cur_ele->y = next_y;
6263 cur_ele->w = next_w;
6264 cur_ele->h = next_h;
6265 int idx = swap_ele->part_index;
6266 swap_ele->part_index = cur_ele->part_index;
6267 cur_ele->part_index = idx;
6269 idx = swap_ele->list_index;
6270 swap_ele->list_index = cur_ele->list_index;
6271 cur_ele->list_index = idx;
6272 if (swap_ele->is_on_menu_bar)
6273 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6274 shortcuts_swap(&shortcuts_ele_list, cur_item, next_item);
6277 prev_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6278 if(NULL != prev_item) {
6279 evas_object_geometry_get(swap_ele->icon, &prev_x, &prev_y, &prev_w, &prev_h);
6280 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6281 cur_ele->x = prev_x;
6282 cur_ele->y = prev_y;
6283 cur_ele->w = prev_w;
6284 cur_ele->h = prev_h;
6285 int idx = swap_ele->part_index;
6286 swap_ele->part_index = cur_ele->part_index;
6287 cur_ele->part_index = idx;
6289 idx = swap_ele->list_index;
6290 swap_ele->list_index = cur_ele->list_index;
6291 cur_ele->list_index = idx;
6292 if (swap_ele->is_on_menu_bar)
6293 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6294 shortcuts_swap(&shortcuts_ele_list, prev_item, cur_item);
6299 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no)
6301 if (!ad) return NULL;
6302 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return NULL;
6303 return ad->toolbar_menu_arrays[menubar_no].icon;
6306 /*note: check with menu_no menubar shortcut*/
6307 static gboolean __check_with_menubar_shortcuts(struct appdata *ad, int menu_no, ShortCutData *moving_ele, Evas_Object *moving_obj)
6309 if (!ad || !moving_ele ||!moving_obj)
6311 CAM_Edit_ShortCuts_Rect sub_rect;
6312 ShortCutData *cur_ele = moving_ele;
6313 __get_shortcuts_rect(moving_obj, &sub_rect);
6315 Evas_Object *toolbar_icon = __get_toolbar_shortcuts_evas_object(ad, menu_no);
6317 /*check space menu*/
6318 CAM_Edit_ShortCuts_Rect parent_rect;
6319 __get_shortcuts_rect(toolbar_icon, &parent_rect);
6320 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6321 gboolean sub_in_parent = FALSE;
6322 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6324 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6325 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6326 if (sub_in_parent) {
6327 if (cur_ele->is_on_menu_bar) {
6328 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
6330 cur_ele->is_on_menu_bar = TRUE;
6331 cur_ele->menu_bar_no = menu_no;
6332 cur_ele->part_index = -1;
6333 ad->toolbar_menu_arrays[menu_no].menu_type = cur_ele->setting_type;
6334 cam_toolbar_menu_config_update((void *)ad);
6335 update_menubar_shortcuts_mouse_event(ad, menu_no, FALSE);
6336 evas_object_hide(cur_ele->icon);
6337 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6345 /*note: get menubar_no now is covering*/
6346 static int __get_edit_shortcuts_swap_menubar_no(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
6348 if (!ad || !moving_ele ||!moving_obj)
6350 CAM_Edit_ShortCuts_Rect sub_rect;
6352 __get_shortcuts_rect(moving_obj, &sub_rect);
6355 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6356 int type = ad->toolbar_menu_arrays[i].menu_type;
6357 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6359 CAM_Edit_ShortCuts_Rect parent_rect;
6360 __get_shortcuts_rect(icon, &parent_rect);
6361 DEBUG_TRACE("==%d==", i);
6362 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6363 DEBUG_TRACE("x y w h%d %d %d %d", sub_rect.x, sub_rect.y, sub_rect.w, sub_rect.h);
6364 gboolean sub_in_parent = FALSE;
6365 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6367 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6368 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6369 if (sub_in_parent) {
6370 DEBUG_TRACE("%d", i);
6376 return CAM_MENU_BAR_LEFT_INVALID;
6381 static gboolean __get_edit_shortcuts_swap_element(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj, ShortCutData **swap_ele)
6383 if (swap_ele == NULL) return FALSE;
6385 ShortCutData *cur_ele = moving_ele;
6386 CAM_Edit_ShortCuts_Rect sub_rect;
6387 __get_shortcuts_rect(moving_obj, &sub_rect);
6389 Eina_List *l = NULL;
6390 ShortCutData *shortcuts_ele = NULL;
6391 int edit_shortcuts_item_count = -1;
6392 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6393 if (shortcuts_ele == NULL)
6395 if (shortcuts_ele->icon == cur_ele->icon) {
6398 Evas_Object *parent_icon = NULL;
6399 if (shortcuts_ele->is_on_menu_bar) {
6400 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6403 parent_icon = shortcuts_ele->icon;
6404 edit_shortcuts_item_count++;
6407 CAM_Edit_ShortCuts_Rect parent_rect;
6408 __get_shortcuts_rect(parent_icon, &parent_rect);
6410 gboolean sub_in_parent = FALSE;
6411 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6413 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6414 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6415 if (sub_in_parent) {
6416 DEBUG_TRACE("find swap ele");
6417 *swap_ele = shortcuts_ele;
6422 /*NOTE: case: moving shortcut is from menubar, and it is moving into the edit shortcuts the first empty panel*/
6423 char buf[16] = { 0 };
6424 snprintf(buf, sizeof(buf),"row.%d", (edit_shortcuts_item_count+1));
6425 Evas_Object *part_object = (Evas_Object *)
6426 edje_object_part_object_get(_EDJ
6427 (ad->edit_shortcuts_popup_ctx), buf);
6428 if (cur_ele->is_on_menu_bar) {
6429 CAM_Edit_ShortCuts_Rect parent_rect;
6430 __get_shortcuts_rect(part_object, &parent_rect);
6432 gboolean sub_in_parent = FALSE;
6433 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6437 if (sub_in_parent) {
6438 ShortCutData *virtual_ele = NULL;
6439 if (ad->swap_data) {
6440 if (ad->swap_data->is_virtual) {
6441 free(ad->swap_data);
6442 ad->swap_data = NULL;
6445 virtual_ele = calloc(1, sizeof(ShortCutData));
6447 virtual_ele->is_virtual = TRUE;
6448 virtual_ele->setting_type = -1;
6449 virtual_ele->is_on_menu_bar = FALSE;
6450 virtual_ele->part_index= edit_shortcuts_item_count+1;
6452 *swap_ele = virtual_ele;
6460 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
6461 static void __resort_edit_shortcuts_list_by_part_index(void)
6463 if (shortcuts_ele_list == NULL) return;
6464 shortcuts_ele_list = eina_list_sort(shortcuts_ele_list,
6465 eina_list_count(shortcuts_ele_list),
6466 __edit_shortcuts_list_sort_cb);
6467 Eina_List *l = NULL;
6468 ShortCutData *shortcuts_ele = NULL;
6470 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6471 if (shortcuts_ele == NULL)
6473 shortcuts_ele->list_index = list_index;
6474 DEBUG_TRACE("part_index %d, list_index %d", shortcuts_ele->part_index, shortcuts_ele->list_index);
6480 /*NOTE: swap integer, we do not judge a, b wether null*/
6481 static void __swap_int_type_value(int *a, int *b)
6489 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info)
6491 struct appdata *ad = (struct appdata *)data;
6493 if (!event_info) return;
6494 cam_app_timeout_checker_update();/*note: update check_timer*/
6495 __setting_popup_timeout_checker_start(ad);
6497 /*note: check wether is long press*/
6498 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
6499 cam_long_press_validate(LONG_PRESS_ID_EDIT, mu->cur.canvas.x, mu->cur.canvas.y);
6500 if (!cam_get_long_press_running_state(LONG_PRESS_ID_EDIT)) {
6504 /*note: update coordinate*/
6505 Evas_Coord cur_x=0, cur_y=0, cur_w=0, cur_h=0;
6506 Evas_Coord x=0, y=0;
6508 evas_object_geometry_get(obj, &cur_x, &cur_y, &cur_w, &cur_h);
6509 x = cur_x + (mu->cur.canvas.x - shortcuts_canvas_prev_x);
6510 y = cur_y + (mu->cur.canvas.y - shortcuts_canvas_prev_y);
6511 dx = mu->cur.canvas.x - shortcuts_canvas_prev_x;
6512 dy = mu->cur.canvas.y - shortcuts_canvas_prev_y;
6513 shortcuts_canvas_prev_x = mu->cur.canvas.x;
6514 shortcuts_canvas_prev_y = mu->cur.canvas.y;
6517 /*note: check swap elements*/
6518 pthread_mutex_lock(&edit_shortcuts_move_mutex);
6519 ShortCutData *moving_ele = ad->shortcut_data;
6520 ShortCutData *swap_ele = NULL;
6521 gboolean swap_condition = __get_edit_shortcuts_swap_element(ad, moving_ele, obj, &swap_ele);
6522 DEBUG_TRACE("%d", swap_condition);
6524 if (swap_condition) {
6525 if (ad->swap_data) {
6526 if (ad->swap_data->is_on_menu_bar) {
6527 if (ad->swap_data->menu_bar_no != swap_ele->menu_bar_no) {
6530 if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
6531 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
6532 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
6537 ad->swap_data = swap_ele;
6538 if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
6539 if (ABS(moving_ele->part_index - swap_ele->part_index) == 1) {
6540 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
6541 } else if (moving_ele->list_index > swap_ele->list_index) {
6542 __edit_shortcuts_layout_shortcuts_move_next(ad, swap_ele, moving_ele);
6544 __edit_shortcuts_layout_shortcuts_move_prev(ad, swap_ele, moving_ele);
6546 __resort_edit_shortcuts(ad, obj);
6547 evas_object_move(obj, x , y);
6550 if (swap_ele->is_on_menu_bar) {
6553 if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
6554 evas_object_color_get(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, &r, &g, &b, &a);
6555 evas_object_color_set(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, r, g, b, 30);
6559 if (swap_ele->setting_type == -1) {/*note: swap_ele is empty part in edit shortcuts panel*/
6560 DEBUG_TRACE("swap_ele is empty part in edit shortcuts panel");
6566 if (swap_ele->icon) {
6567 evas_object_color_get(swap_ele->icon, &r, &g, &b, &a);
6568 evas_object_color_set(swap_ele->icon, r, g, b, 30);
6572 evas_object_move(obj, x , y);
6575 if (ad->swap_data) {
6576 if (ad->swap_data->is_on_menu_bar) {
6579 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
6580 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
6581 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
6586 if (ad->swap_data->icon) {
6587 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
6588 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
6592 ad->swap_data = NULL;
6595 int menu_no = __get_edit_shortcuts_swap_menubar_no(ad, moving_ele, obj);
6596 /*TODO: for mouse up swap, we could to record a virtual shortcut element*/
6597 if (menu_no != CAM_MENU_BAR_LEFT_INVALID) {
6598 ShortCutData *virtual_ele = NULL;
6599 virtual_ele = calloc(1, sizeof(ShortCutData));
6601 virtual_ele->is_virtual = TRUE;
6602 virtual_ele->setting_type = -1;
6603 virtual_ele->menu_bar_no = menu_no;
6604 virtual_ele->is_on_menu_bar = TRUE;
6606 ad->swap_data = virtual_ele;
6608 /*TODO: set swap_ele style*/
6611 evas_object_move(obj, x , y);
6613 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
6617 void cam_setting_gl_style_set(void)
6619 itc.item_style = "camera/1text.1icon";
6620 itc.func.text_get = _setting_gl_text_get;
6621 itc.func.content_get = _setting_gl_icon_get;
6622 itc.func.state_get = NULL;
6623 itc.func.del = NULL;
6626 static void __cam_toolbar_display_shortcuts_editmode(void *data)
6628 struct appdata *ad = (struct appdata *)data;
6629 cam_ret_if(ad == NULL);
6631 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6632 "toolbar_1_icon,edit", "prog");
6633 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6634 "toolbar_2_icon,edit", "prog");
6635 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6636 "toolbar_3_icon,edit", "prog");
6637 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6638 "toolbar_4_icon,edit", "prog");
6641 static void __cam_toolbar_exit_shortcuts_editmode(void *data)
6643 struct appdata *ad = (struct appdata *)data;
6644 cam_ret_if(ad == NULL);
6646 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6647 "toolbar_1_icon,normal", "prog");
6648 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6649 "toolbar_2_icon,normal", "prog");
6650 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6651 "toolbar_3_icon,normal", "prog");
6652 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6653 "toolbar_4_icon,normal", "prog");
6657 static int __cam_long_press_editmode_cb(void *data, int x, int y)
6659 struct appdata *ad = (struct appdata *)data;
6660 cam_retv_if(ad == NULL, -1);
6661 CamAppData *camapp = ad->camapp_handle;
6662 cam_retv_if(camapp == NULL, -1);
6666 err = pthread_mutex_init(&edit_shortcuts_move_mutex, NULL);
6668 cam_critical(LOG_CAM, "Create px inst mutex failed");
6672 if (ad->shortcut_data) {
6673 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), ad->shortcut_data->icon);
6674 evas_object_event_callback_add(ad->shortcut_data->icon,
6675 EVAS_CALLBACK_MOUSE_MOVE,
6676 __setting_shortcuts_mouse_move,
6679 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, TRUE);
6684 static int __cam_long_press_exit_editmode_cb(void *data, int x, int y)
6686 struct appdata *ad = (struct appdata *)data;
6687 cam_retv_if(ad == NULL, -1);
6688 CamAppData *camapp = ad->camapp_handle;
6689 cam_retv_if(camapp == NULL, -1);
6692 /*re-sort sortcuts element list*/
6693 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6695 ShortCutData *shortcuts_ele = NULL;
6696 Eina_List *l = NULL;
6698 int temp_list_index = 0;
6699 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6700 if (shortcuts_ele == NULL)
6702 shortcuts_ele->list_index = temp_list_index;
6704 if (shortcuts_ele->is_on_menu_bar) {
6705 shortcuts_ele->part_index = -1;
6708 shortcuts_ele->part_index = temp_index;
6709 shortcuts_part_to_menu[temp_index] = shortcuts_ele->setting_type;
6711 DEBUG_TRACE("shortcuts_ele->index %d" , shortcuts_ele->part_index);
6714 /*re-set menubar shortcuts*/
6716 for (i = CAM_MENU_SHORTCUTS; i < CAM_MENU_MAX_NUMS; i++) {
6717 __update_menubar_icon_by_index(ad, i);
6720 /*menu bar shortcut update*/
6721 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6722 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
6725 /* shortcut panel update*/
6726 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6728 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6729 if (shortcuts_ele == NULL)
6731 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6734 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6735 if (shortcuts_ele == NULL)
6737 if (shortcuts_ele->part_index < 0 ||
6738 shortcuts_ele->part_index >19) {
6741 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6742 DEBUG_TRACE("PART:%s", buf);
6743 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6747 for (index = CAM_EDIT_SHORTCUTS_INDEX_1; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6748 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6749 edit_shortcuts_prop_array[index].prop_name,
6750 shortcuts_part_to_menu[index]);
6753 __cam_toolbar_display_shortcuts_editmode(ad);
6754 __toolbar_dim_setting_shortcuts(ad);
6755 if (ad->shortcut_data) {
6756 if (ad->shortcut_data->icon) {
6757 evas_object_event_callback_del(ad->shortcut_data->icon,
6758 EVAS_CALLBACK_MOUSE_MOVE,
6759 __setting_shortcuts_mouse_move);
6763 ad->shortcut_data = NULL;
6764 ad->swap_data = NULL;
6765 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, FALSE);
6766 pthread_mutex_destroy(&edit_shortcuts_move_mutex);
6770 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon)
6774 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6779 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6780 if (index == ad->toolbar_menu_arrays[i].menu_type) {
6782 *icon = ad->toolbar_menu_arrays[i].icon;
6788 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6793 void create_menubar_shortcuts_mouse_event(struct appdata *ad)
6798 /*note: CAM_MENU_BAR_LEFT_0: do not need register*/
6799 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6800 int type = ad->toolbar_menu_arrays[i].menu_type;
6801 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6803 evas_object_event_callback_del(icon,
6804 EVAS_CALLBACK_MOUSE_DOWN,
6805 __setting_shortcuts_mouse_down);
6806 evas_object_event_callback_add(icon,
6807 EVAS_CALLBACK_MOUSE_DOWN,
6808 __setting_shortcuts_mouse_down,
6810 evas_object_event_callback_del(icon,
6811 EVAS_CALLBACK_MOUSE_MOVE,
6812 __setting_shortcuts_mouse_move);
6813 evas_object_event_callback_add(icon,
6814 EVAS_CALLBACK_MOUSE_MOVE,
6815 __setting_shortcuts_mouse_move,
6817 evas_object_event_callback_del(icon,
6818 EVAS_CALLBACK_MOUSE_UP,
6819 __setting_shortcuts_mouse_up);
6820 evas_object_event_callback_add(icon,
6821 EVAS_CALLBACK_MOUSE_UP,
6822 __setting_shortcuts_mouse_up,
6829 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6834 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6835 int type = ad->toolbar_menu_arrays[i].menu_type;
6836 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6837 if (i == menubar_no || all_menubar) {
6839 evas_object_event_callback_del(icon,
6840 EVAS_CALLBACK_MOUSE_DOWN,
6841 __setting_shortcuts_mouse_down);
6842 evas_object_event_callback_del(icon,
6843 EVAS_CALLBACK_MOUSE_MOVE,
6844 __setting_shortcuts_mouse_move);
6845 evas_object_event_callback_del(icon,
6846 EVAS_CALLBACK_MOUSE_UP,
6847 __setting_shortcuts_mouse_up);
6849 evas_object_event_callback_del(icon,
6850 EVAS_CALLBACK_MOUSE_DOWN,
6851 __setting_shortcuts_mouse_down);
6852 evas_object_event_callback_add(icon,
6853 EVAS_CALLBACK_MOUSE_DOWN,
6854 __setting_shortcuts_mouse_down,
6856 evas_object_event_callback_del(icon,
6857 EVAS_CALLBACK_MOUSE_MOVE,
6858 __setting_shortcuts_mouse_move);
6859 evas_object_event_callback_add(icon,
6860 EVAS_CALLBACK_MOUSE_MOVE,
6861 __setting_shortcuts_mouse_move,
6863 evas_object_event_callback_del(icon,
6864 EVAS_CALLBACK_MOUSE_UP,
6865 __setting_shortcuts_mouse_up);
6866 evas_object_event_callback_add(icon,
6867 EVAS_CALLBACK_MOUSE_UP,
6868 __setting_shortcuts_mouse_up,
6877 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6882 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6883 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6884 if (i == menubar_no || all_menubar) {
6885 evas_object_event_callback_del(icon,
6886 EVAS_CALLBACK_MOUSE_DOWN,
6887 __setting_shortcuts_mouse_down);
6888 evas_object_event_callback_del(icon,
6889 EVAS_CALLBACK_MOUSE_MOVE,
6890 __setting_shortcuts_mouse_move);
6891 evas_object_event_callback_del(icon,
6892 EVAS_CALLBACK_MOUSE_UP,
6893 __setting_shortcuts_mouse_up);
6900 /*free all memory for shortcuts*/
6901 static void __cam_toolbar_edit_shortcuts_data_clean()
6904 if (NULL != shortcuts_ele_list) {
6905 eina_list_free(shortcuts_ele_list);
6906 shortcuts_ele_list = NULL;
6910 static void __toolbar_edit_shortcuts_mouse_down_cb (void *data,
6916 /*struct appdata *ad = (struct appdata *)data;
6917 cam_long_press_register(LONG_PRESS_ID_EDIT,
6919 __cam_long_press_editmode_cb,
6920 __cam_long_press_exit_editmode_cb,
6925 static void __toolbar_edit_shortcuts_mouse_move_cb (void *data,
6931 /*struct appdata *ad = (struct appdata *)data;*/
6932 ShortCutData *shortcuts_ele = NULL;
6933 Eina_List *l = NULL;
6934 /** TODO: find solution to distinguish the scroll move
6935 cam_long_press_unregister(LONG_PRESS_ID_EDIT);
6937 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6938 if (shortcuts_ele) {
6939 if (shortcuts_ele->icon) {
6940 evas_object_freeze_events_set(shortcuts_ele->icon, TRUE);
6947 static void __toolbar_edit_shortcuts_mouse_up_cb (void *data,
6954 struct appdata *ad = (struct appdata *)data;
6955 cam_ret_if(ad == NULL);
6956 ShortCutData *shortcuts_ele = NULL;
6957 Eina_List *l = NULL;
6958 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6959 if (shortcuts_ele) {
6960 if (shortcuts_ele->icon) {
6961 evas_object_freeze_events_set(shortcuts_ele->icon, FALSE);
6967 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2)
6969 ShortCutData *ele_0 = (ShortCutData *)data1;
6970 ShortCutData *ele_1 = (ShortCutData *)data2;
6971 int part_index_0 = ele_0->part_index;
6972 int part_index_1 = ele_1->part_index;
6973 DEBUG_TRACE("part_index_0 %d", part_index_0);
6974 DEBUG_TRACE("part_index_1 %d", part_index_1);
6975 if (part_index_0 > part_index_1)
6977 else if (part_index_0 < part_index_1)
6983 static void __edit_shortcuts_create_empty_menubar_shortcut(struct appdata *ad,
6985 ShortCutData **shortcuts_ele)
6987 if (menu_no > CAM_MENU_BAR_LEFT_4 || menu_no < CAM_MENU_BAR_LEFT_0) return;
6988 ShortCutData *sd = (ShortCutData *)malloc(sizeof(ShortCutData));
6990 memset(sd, '\0', sizeof(ShortCutData));
6991 sd->icon = ad->toolbar_menu_arrays[menu_no].icon;
6992 sd->list_index = -1;
6993 sd->part_index = -1;
6994 sd->setting_type = -1;
6995 sd->menu_bar_no = menu_no;
6996 sd->is_on_menu_bar = TRUE;
6998 *shortcuts_ele = sd;
7002 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no)
7005 if (menu_no > CAM_MENU_BAR_LEFT_4 || CAM_MENU_BAR_LEFT_1) return; /*note: CAM_MENU_BAR_LEFT_0, do not update*/
7006 ShortCutData *shortcuts_ele = NULL;
7007 /*note: add empty menubar shortcuts to list*/
7008 if (ad->toolbar_menu_arrays[menu_no].menu_type < 0) {
7009 __edit_shortcuts_create_empty_menubar_shortcut(ad, CAM_MENU_BAR_LEFT_1, &shortcuts_ele);
7010 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, shortcuts_ele);
7014 static void __toolbar_dim_setting_shortcuts(struct appdata *ad)
7016 cam_ret_if(ad == NULL);
7017 Evas_Object *setting_icon = NULL;
7018 Evas_Object_Event_Cb func = NULL;
7020 setting_icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
7021 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].menu_type;
7022 __toolbar_menu_type_update(setting_icon, type, ad, BUTTON_STATE_DIM, &func);
7025 int toolbar_create_shortcuts_popup(struct appdata *ad)
7027 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7028 CamAppData *cam_handle = ad->camapp_handle;
7029 cam_retv_if(cam_handle == NULL, -1);
7031 gboolean init_state = FALSE;
7032 init_state = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7033 PROP_SHORTCUTS_INIT_PART_INDEX,
7036 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7037 PROP_SHORTCUTS_INIT_PART_INDEX,
7041 if (ad->edit_shortcuts_popup_scroll) {
7042 toolbar_destroy_shortcuts_popup(ad);
7044 ad->show_edit_shortcuts_popup_after_rotate = FALSE;
7046 __toolbar_dim_setting_shortcuts(ad);
7049 Evas_Object *icon = NULL;
7050 Evas_Object *setting_popup = NULL;
7051 Evas_Object *ele_layout = NULL;
7053 cam_long_press_register(LONG_PRESS_ID_EDIT,
7055 __cam_long_press_editmode_cb,
7056 __cam_long_press_exit_editmode_cb,
7059 setting_shortcuts_popup_create(ad);
7061 setting_popup = elm_layout_add(ad->edit_shortcuts_popup);
7062 elm_layout_file_set(setting_popup, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/layout");
7065 Evas_Object *scroller = elm_scroller_add(ad->edit_shortcuts_popup);
7066 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
7067 elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
7069 char *icon_name = NULL;
7071 char part_name[16] = { '\0', };
7072 ShortCutData *shortcuts_ele = NULL;
7073 Evas_Object_Event_Cb callback = NULL;
7076 gboolean is_on_toolbar = FALSE;
7077 int menu_bar_no = -1;
7079 /*create edit callback in the menubar*/
7080 create_menubar_shortcuts_mouse_event(ad);
7083 __cam_toolbar_edit_shortcuts_data_clean();
7085 if( ad->setting_menu_composer == NULL){
7086 cam_critical(LOG_UI,"ad->setting_menu_composer is null");
7090 int shortcuts_menu_to_part[CAM_MENU_RESET + 1] = { -1,};
7092 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
7093 int item = cam_config_get_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7094 edit_shortcuts_prop_array[index].prop_name,
7096 shortcuts_menu_to_part[item] = index;
7097 DEBUG_TRACE("item %d index %d", item, index);
7101 CAM_MENU_ITEM* menu_item = NULL;
7102 int size = eina_array_count(ad->setting_menu_composer->array);
7104 for (index = 0; index < size; index++) {
7105 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->setting_menu_composer->array, index);
7107 if (*menu_item == CAM_MENU_EFFECTS
7108 || *menu_item == CAM_MENU_ANTI_SHAKE
7109 || *menu_item == CAM_MENU_CAPTURE_VOICE
7110 || *menu_item == CAM_MENU_GPS_TAG
7111 || *menu_item == CAM_MENU_STORAGE
7112 || *menu_item == CAM_MENU_RESET) {
7113 DEBUG_TRACE("Do not add menu in shortcut");
7117 Evas_Object *menubar_obj = NULL;
7118 __get_menubar_shortcuts_info(ad, *menu_item, &menu_bar_no, &menubar_obj);
7119 is_on_toolbar = ((menu_bar_no == CAM_MENU_BAR_LEFT_INVALID) ? FALSE : TRUE);
7120 __get_toolbar_shortcuts_file_func((void *)ad, *menu_item, BUTTON_STATE_NORMAL, &icon_name, &text, &callback);
7123 /*create layout for element*/
7124 ele_layout = elm_layout_add(setting_popup);
7125 elm_layout_file_set(ele_layout, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/ele");
7126 icon = elm_image_add(ele_layout);
7127 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
7129 DEBUG_TRACE("index = %d, no icon file path or file path error, please check!", index);
7138 edje_object_part_text_set(elm_layout_edje_get(ele_layout), "ele.txt", text);
7139 DEBUG_TRACE("text %s", text);
7142 edje_object_part_swallow(_EDJ(ele_layout), "ele.icon", icon);
7143 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_DOWN, __setting_shortcuts_mouse_down, (void *)ad);
7144 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_UP, __setting_shortcuts_mouse_up, (void *)ad);
7146 evas_object_show(ele_layout);
7148 shortcuts_ele = (ShortCutData *)malloc(sizeof(ShortCutData));
7149 shortcuts_ele->icon = ele_layout;
7150 shortcuts_ele->list_index = list_index;
7151 shortcuts_ele->setting_type = *menu_item;
7152 shortcuts_ele->icon_filepath = icon_name;
7153 shortcuts_ele->name = text;
7154 shortcuts_ele->func = callback;
7155 shortcuts_ele->menu_bar_no = menu_bar_no;
7156 shortcuts_ele->is_on_menu_bar = is_on_toolbar;
7158 if (is_on_toolbar) {
7159 shortcuts_ele->part_index = -1;
7160 evas_object_hide(ele_layout);
7162 if (!init_state) { /*note: if there is no init value in config file, init now*/
7163 shortcuts_ele->part_index = part_index;
7164 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7165 edit_shortcuts_prop_array[part_index].prop_name,
7167 shortcuts_menu_to_part[*menu_item] = part_index;
7168 } else { /*note: if there is init value in config file, read value from init*/
7169 shortcuts_ele->part_index = shortcuts_menu_to_part[*menu_item];
7172 if (shortcuts_ele->part_index > CAM_EDIT_SHORTCUTS_INDEX_INVALID
7173 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
7174 snprintf(part_name, sizeof(part_name),"row.%d",(shortcuts_ele->part_index));
7175 edje_object_part_swallow(_EDJ(setting_popup), part_name, ele_layout);
7178 shortcuts_ele_list = eina_list_append(shortcuts_ele_list, shortcuts_ele);
7179 if (shortcuts_ele_list == NULL) {
7188 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
7189 __resort_edit_shortcuts_list_by_part_index();
7191 elm_object_content_set(scroller, setting_popup);
7192 /*elm_object_part_content_set(edit_shortcuts_layout, "swallow.items", setting_popup);*/
7193 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup", scroller);
7194 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup_description", ad->edit_shortcuts_popup_description);
7197 __cam_toolbar_display_shortcuts_editmode(ad);
7198 #if 0 /*TODO: TODO: find solution to distinguish the scroll move*/
7199 evas_object_event_callback_del(scroller,
7200 EVAS_CALLBACK_MOUSE_DOWN,
7201 __toolbar_edit_shortcuts_mouse_down_cb);
7203 evas_object_event_callback_del(scroller,
7204 EVAS_CALLBACK_MOUSE_MOVE,
7205 __toolbar_edit_shortcuts_mouse_move_cb);
7206 evas_object_event_callback_del(scroller,
7207 EVAS_CALLBACK_MOUSE_UP,
7208 __toolbar_edit_shortcuts_mouse_up_cb);
7209 evas_object_event_callback_add(scroller,
7210 EVAS_CALLBACK_MOUSE_DOWN,
7211 __toolbar_edit_shortcuts_mouse_down_cb,
7213 evas_object_event_callback_add(scroller,
7214 EVAS_CALLBACK_MOUSE_MOVE,
7215 __toolbar_edit_shortcuts_mouse_move_cb,
7217 evas_object_event_callback_add(scroller,
7218 EVAS_CALLBACK_MOUSE_UP,
7219 __toolbar_edit_shortcuts_mouse_up_cb,
7224 ad->edit_shortcuts_popup_ctx = setting_popup;
7225 ad->edit_shortcuts_popup_scroll = scroller;
7227 evas_object_show(ad->toolbar_edje);
7228 __setting_popup_timeout_checker_start(ad);
7229 /*note: set destroy operation after display to avoid bs*/
7230 if (ad->toolbar_setting_popup) {
7231 cam_toolbar_setting_popup_destroy(ad);
7234 __set_show_state_preview_obj(ad, FALSE);
7236 return EXIT_SUCCESS;
7239 void* __get_genlist_cb(const CAM_MENU_ITEM item)
7242 case CAM_MENU_SHORTCUTS:
7243 return __setting_edit_shortcut_popup_cb;
7244 case CAM_MENU_BURST_SHOT_MODE:
7245 return __setting_burst_shot_popup_cb;
7246 case CAM_MENU_VOLUME_KEY:
7247 return __setting_volume_key_popup_cb;
7248 case CAM_MENU_SELF_PORTRAIT:
7249 return __setting_self_portrait_popup_cb;
7250 case CAM_MENU_FLASH:
7251 return __setting_flash_popup;
7252 case CAM_MENU_SHOOTING_MODE:
7253 return __setting_shot_mode_popup_cb;
7254 case CAM_MENU_RECORDING_MODE:
7255 return __setting_record_mode_popup;
7256 case CAM_MENU_SCENE_MODE:
7257 return __setting_scenemode_popup_cb;
7258 case CAM_MENU_EXPLOSURE_VALUE:
7259 return __setting_ev_popup_cb;
7260 case CAM_MENU_FOCUS_MODE:
7261 return __setting_focus_mode_cb;
7262 case CAM_MENU_TIMER:
7263 return __setting_timer_popup_cb;
7264 case CAM_MENU_EFFECTS:
7265 return __setting_effects_popup_cb;
7266 case CAM_MENU_PHOTO_RESOLUTION:
7267 return __setting_photo_resolution_popup_cb;
7268 case CAM_MENU_VIDEO_RESOLUTION:
7269 return __setting_video_resolution_popup_cb;
7270 case CAM_MENU_WHITE_BALANCE:
7271 return __setting_wb_popup_cb;
7273 return __setting_iso_popup_cb;
7274 case CAM_MENU_METERING:
7275 return __setting_metering_popup_cb;
7276 case CAM_MENU_ANTI_SHAKE:
7277 return __setting_anti_shake_popup_cb;
7278 case CAM_MENU_OUTDOOR_VISIBILITY:
7279 return __setting_outdoor_visibility_popup_cb;
7280 case CAM_MENU_AUTO_CONTRAST:
7281 return __setting_autocontrast_popup_cb;
7282 case CAM_MENU_GUIDELINES:
7283 return __setting_guideline_popup_cb;
7284 case CAM_MENU_CAPTURE_VOICE:
7285 return __setting_capture_by_voice_popup_cb;
7286 case CAM_MENU_GPS_TAG:
7287 return __setting_gps_popup_cb;
7288 case CAM_MENU_SAVE_AS_FLIP:
7289 return __setting_save_as_flip_popup_cb;
7290 case CAM_MENU_STORAGE:
7291 return __setting_storage_popup_cb;
7292 case CAM_MENU_RESET:
7293 return __setting_restore_defaults_popup_cb;
7299 static Eina_Bool __genlist_each_cb(const void *container, void *data, void *fdata)
7301 struct appdata *ad = (struct appdata *)fdata;
7302 cam_retv_if(ad == NULL, EINA_FALSE);
7304 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
7305 Elm_Object_Item *object_item = NULL;
7306 object_item = elm_genlist_item_append(ad->genlist,
7310 ELM_GENLIST_ITEM_NONE,
7311 __get_genlist_cb(*item),
7314 if(!cam_is_enabled_menu(ad,*item))
7315 elm_object_item_disabled_set(object_item, TRUE);
7320 int cam_toolbar_setting_popup_create(struct appdata *ad)
7322 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7323 CamAppData *cam_handle = ad->camapp_handle;
7324 cam_retv_if(cam_handle == NULL, -1);
7326 if (ad->toolbar_setting_popup) {
7327 cam_toolbar_setting_popup_destroy(ad);
7329 if (ad->edit_shortcuts_popup_scroll) {
7330 toolbar_destroy_shortcuts_popup(ad);
7333 ad->show_setting_popup_after_rotate = FALSE;
7335 Evas_Object *setting_popup = NULL;
7337 setting_toolbar_popup_create(ad);
7339 setting_popup = elm_layout_add(ad->toolbar_setting_popup);
7340 elm_layout_file_set(setting_popup, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout/setting");
7343 edje_object_part_text_set(elm_layout_edje_get(setting_popup), "elm.text", dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
7345 evas_object_size_hint_min_set(setting_popup,
7346 SETTING_POPUP_WIDTH * elm_config_scale_get(),
7347 SETTING_POPUP_HEIGHT * elm_config_scale_get());
7349 ad->genlist = elm_genlist_add(setting_popup);
7350 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_DOWN, __setting_gl_mouse_down, (void *)ad);
7351 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_MOVE, __setting_gl_mouse_move, (void *)ad);
7353 cam_setting_gl_style_set();
7355 if( ad->setting_menu_composer != NULL)
7356 eina_array_foreach(ad->setting_menu_composer->array, __genlist_each_cb, ad);
7358 evas_object_show(ad->genlist);
7359 elm_object_part_content_set(setting_popup, "elm.swallow.box", ad->genlist);
7360 elm_object_content_set(ad->toolbar_setting_popup, setting_popup);
7364 DEBUG_TRACE("ad->target_direction = %d", ad->target_direction);
7365 __get_option_coord_by_menubar_no(CAM_MENU_BAR_LEFT_0, ad->target_direction, &x, &y);
7366 DEBUG_TRACE("x = %d y = %d", x, y);
7367 __cam_toolbar_move_ctxpopup(ad->toolbar_setting_popup, ad->target_direction, x, y);
7369 evas_object_show(ad->toolbar_setting_popup);
7370 __setting_popup_timeout_checker_start(ad);
7372 __set_show_state_preview_obj(ad, FALSE);
7374 return EXIT_SUCCESS;
7377 int toolbar_shot_guide_popup_create(struct appdata *ad, int shot_mode)
7379 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
7380 CamAppData *cam_handle = ad->camapp_handle;
7381 cam_retv_if(cam_handle == NULL, -1);
7387 if (ad->shot_mode_guide_popup) {
7388 toolbar_shot_guide_popup_destory(ad);
7391 elm_object_part_content_unset(ad->ug_base, "shot_guide_popup_layout");
7393 if ((cam_handle->shooting_mode == CAM_SINGLE_MODE)
7394 || (cam_handle->shooting_mode == CAM_SELF_SINGLE_MODE))
7395 return EXIT_SUCCESS;
7397 switch (ad->target_direction) {
7398 case CAM_TARGET_DIRECTION_LANDSCAPE:
7399 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
7400 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_landscape");
7402 case CAM_TARGET_DIRECTION_PORTRAIT:
7403 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
7404 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_potrait");
7407 DEBUG_TRACE("Invalid direction type!!!");
7410 cam_retvm_if(ad->shot_mode_guide_popup == NULL, -1, "shot_mode_guide_popup is NULL");
7411 elm_object_part_content_set(ad->ug_base, "shot_guide_popup_layout", ad->shot_mode_guide_popup);
7413 char popup_str[1024 + 1] = { '\0',};
7414 snprintf(popup_str, 1024, "%s", dgettext(PACKAGE, "IDS_CAM_POP_PRESS_SHUTTER"));
7415 edje_object_part_text_set(_EDJ(ad->shot_mode_guide_popup), "text", popup_str);
7417 evas_object_show(ad->shot_mode_guide_popup);
7419 return EXIT_SUCCESS;
7422 int toolbar_shot_guide_popup_destory(struct appdata *ad)
7424 cam_retv_if(ad == NULL, -1);
7425 UI_TEST_LOG("Guide popup destory");
7427 if (ad->shot_mode_guide_popup) {
7428 evas_object_del(ad->shot_mode_guide_popup);
7429 ad->shot_mode_guide_popup = NULL;
7435 int toolbar_shot_guide_popup_move(struct appdata *ad)
7437 cam_retv_if(ad == NULL, -1);
7441 if (ad->shot_mode_guide_popup) {
7442 Eina_Bool setting_ctxpopup_is_visible = false;
7443 ecore_x_window_size_get(ad->main_xid, &x, &y);
7445 if (ad->setting_ctxpopup)
7446 setting_ctxpopup_is_visible = evas_object_visible_get(ad->setting_ctxpopup);
7448 cam_debug(LOG_UI, "evas_object_visible_get(ad->setting_ctxpopup) =%d", setting_ctxpopup_is_visible);
7450 if (ad->toolbar_setting_popup) {
7451 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7452 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7454 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7455 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7458 cam_critical(LOG_UI, "x = %d, y= %d", x, y);
7464 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state)
7466 struct appdata *ad = (struct appdata *)cam_appdata_get();
7467 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
7468 CamAppData *camapp = ad->camapp_handle;
7469 cam_retvm_if(camapp == NULL, NULL, "camapp is NULL");
7471 char *icon_name = NULL;
7472 int exposure_value = 0;
7475 case CAM_MENU_SCENE_AUTO:
7476 if (state == BUTTON_STATE_PRESS)
7477 icon_name = SCENE_MODE_AUTO_PRESS_ICON;
7479 icon_name = SCENE_MODE_AUTO_NORMAL_ICON;
7481 case CAM_MENU_SCENE_PORTRAIT:
7482 if (state == BUTTON_STATE_PRESS)
7483 icon_name = SCENE_MODE_PORTRAIT_PRESS_ICON;
7485 icon_name = SCENE_MODE_PORTRAIT_NORMAL_ICON;
7487 case CAM_MENU_SCENE_LANDSCAPE:
7488 if (state == BUTTON_STATE_PRESS)
7489 icon_name = SCENE_MODE_LANDSCAPE_PRESS_ICON;
7491 icon_name = SCENE_MODE_LANDSCAPE_NORMAL_ICON;
7493 case CAM_MENU_SCENE_NIGHT:
7494 if (state == BUTTON_STATE_PRESS)
7495 icon_name = SCENE_MODE_NIGHT_PRESS_ICON;
7497 icon_name = SCENE_MODE_NIGHT_NORMAL_ICON;
7499 case CAM_MENU_SCENE_SPORTS:
7500 if (state == BUTTON_STATE_PRESS)
7501 icon_name = SCENE_MODE_SPORTS_PRESS_ICON;
7503 icon_name = SCENE_MODE_SPORTS_NORMAL_ICON;
7505 case CAM_MENU_SCENE_PARTY:
7506 if (state == BUTTON_STATE_PRESS)
7507 icon_name = SCENE_MODE_PARTY_PRESS_ICON;
7509 icon_name = SCENE_MODE_PARTY_NORMAL_ICON;
7511 case CAM_MENU_SCENE_BEACHSNOW:
7512 if (state == BUTTON_STATE_PRESS)
7513 icon_name = SCENE_MODE_BEACHSNOW_PRESS_ICON;
7515 icon_name = SCENE_MODE_BEACHSNOW_NORMAL_ICON;
7517 case CAM_MENU_SCENE_SUNSET:
7518 if (state == BUTTON_STATE_PRESS)
7519 icon_name = SCENE_MODE_SUNSET_PRESS_ICON;
7521 icon_name = SCENE_MODE_SUNSET_NORMAL_ICON;
7523 case CAM_MENU_SCENE_DUSKDAWN:
7524 if (state == BUTTON_STATE_PRESS)
7525 icon_name = SCENE_MODE_DUSKDAWN_PRESS_ICON;
7527 icon_name = SCENE_MODE_DUSKDAWN_NORMAL_ICON;
7529 case CAM_MENU_SCENE_FALL:
7530 if (state == BUTTON_STATE_PRESS)
7531 icon_name = SCENE_MODE_FALL_PRESS_ICON;
7533 icon_name = SCENE_MODE_FALL_NORMAL_ICON;
7535 case CAM_MENU_SCENE_FIREWORK:
7536 if (state == BUTTON_STATE_PRESS)
7537 icon_name = SCENE_MODE_FIREWORK_PRESS_ICON;
7539 icon_name = SCENE_MODE_FIREWORK_NORMAL_ICON;
7541 case CAM_MENU_SCENE_TEXT:
7542 if (state == BUTTON_STATE_PRESS)
7543 icon_name = SCENE_MODE_TEXT_PRESS_ICON;
7545 icon_name = SCENE_MODE_TEXT_NORMAL_ICON;
7547 case CAM_MENU_SCENE_CANDLELIGHT:
7548 if (state == BUTTON_STATE_PRESS)
7549 icon_name = SCENE_MODE_CANDLELIGHT_PRESS_ICON;
7551 icon_name = SCENE_MODE_CANDLELIGHT_NORMAL_ICON;
7553 case CAM_MENU_SCENE_BACKLIGHT:
7554 if (state == BUTTON_STATE_PRESS)
7555 icon_name = SCENE_MODE_BACKLIGHT_PRESS_ICON;
7557 icon_name = SCENE_MODE_BACKLIGHT_NORMAL_ICON;
7559 case CAM_MENU_SHOOTING_SINGLE:
7560 case CAM_MENU_SHOOTING_SELF_SINGLE:
7561 if (state == BUTTON_STATE_PRESS)
7562 icon_name = SHOOTING_MODE_SINGLE_PRESS_ICON;
7564 icon_name = SHOOTING_MODE_SINGLE_NORMAL_ICON;
7566 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
7567 if (state == BUTTON_STATE_PRESS)
7568 icon_name = CAM_RESOLUTION_8M_PRESS_ICON;
7570 icon_name = CAM_RESOLUTION_8M_NORMAL_ICON;
7573 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
7574 if (state == BUTTON_STATE_PRESS)
7575 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7577 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7579 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
7580 if (state == BUTTON_STATE_PRESS)
7581 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7583 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7585 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
7586 if (state == BUTTON_STATE_PRESS)
7587 icon_name = CAM_RESOLUTION_W5_7M_PRESS_ICON;
7589 icon_name = CAM_RESOLUTION_W5_7M_NORMAL_ICON;
7591 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
7592 if (state == BUTTON_STATE_PRESS)
7593 icon_name = CAM_RESOLUTION_5M_PRESS_ICON;
7595 icon_name = CAM_RESOLUTION_5M_NORMAL_ICON;
7597 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
7598 if (state == BUTTON_STATE_PRESS)
7603 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
7604 if (state == BUTTON_STATE_PRESS)
7605 icon_name = CAM_RESOLUTION_3_2M_PRESS_ICON;
7607 icon_name = CAM_RESOLUTION_3_2M_NORMAL_ICON;
7609 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
7610 if (state == BUTTON_STATE_PRESS)
7611 icon_name = CAM_RESOLUTION_W2_4M_PRESS_ICON;
7613 icon_name = CAM_RESOLUTION_W2_4M_NORMAL_ICON;
7615 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
7616 if (state == BUTTON_STATE_PRESS)
7617 icon_name = CAM_RESOLUTION_W2M_PRESS_ICON;
7619 icon_name = CAM_RESOLUTION_W2M_NORMAL_ICON;
7621 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
7622 if (state == BUTTON_STATE_PRESS)
7623 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7625 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7627 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
7628 if (state == BUTTON_STATE_PRESS)
7629 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7631 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7633 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
7634 if (state == BUTTON_STATE_PRESS)
7635 icon_name = CAM_RESOLUTION_1_3M_PRESS_ICON;
7637 icon_name = CAM_RESOLUTION_1_3M_NORMAL_ICON;
7639 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
7640 if (state == BUTTON_STATE_PRESS)
7641 icon_name = CAM_RESOLUTION_W0_9M_PRESS_ICON;
7643 icon_name = CAM_RESOLUTION_W0_9M_NORMAL_ICON;
7645 case CAM_MENU_PHOTO_RESOLUTION_640x480:
7646 if (state == BUTTON_STATE_PRESS)
7647 icon_name = CAM_RESOLUTION_0_3M_PRESS_ICON;
7649 icon_name = CAM_RESOLUTION_0_3M_NORMAL_ICON;
7651 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
7652 if (state == BUTTON_STATE_PRESS)
7653 icon_name = REC_RESOLUTION_FULLHD_PRESS_ICON;
7655 icon_name = REC_RESOLUTION_FULLHD_NORMAL_ICON;
7657 case CAM_MENU_VIDEO_RESOLUTION_HD:
7658 if (state == BUTTON_STATE_PRESS)
7659 icon_name = REC_RESOLUTION_HD_PRESS_ICON;
7661 icon_name = REC_RESOLUTION_HD_NORMAL_ICON;
7663 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
7664 if (state == BUTTON_STATE_PRESS)
7665 icon_name = REC_RESOLUTION_WVGA_PRESS_ICON;
7667 icon_name = REC_RESOLUTION_WVGA_NORMAL_ICON;
7669 case CAM_MENU_VIDEO_RESOLUTION_VGA:
7670 if (state == BUTTON_STATE_PRESS)
7671 icon_name = REC_RESOLUTION_VGA_PRESS_ICON;
7673 icon_name = REC_RESOLUTION_VGA_NORMAL_ICON;
7675 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
7676 if (state == BUTTON_STATE_PRESS)
7677 icon_name = REC_RESOLUTION_QVGA_PRESS_ICON;
7679 icon_name = REC_RESOLUTION_QVGA_NORMAL_ICON;
7681 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
7682 if (state == BUTTON_STATE_PRESS)
7683 icon_name = REC_RESOLUTION_QCIF_PRESS_ICON;
7685 icon_name = REC_RESOLUTION_QCIF_NORMAL_ICON;
7687 case CAM_MENU_WB_AWB:
7688 if (state == BUTTON_STATE_PRESS)
7689 icon_name = WHITE_BALANCE_AUTO_PRESS_ICON;
7691 icon_name = WHITE_BALANCE_AUTO_NORMAL_ICON;
7693 case CAM_MENU_WB_INCANDESCENT:
7694 if (state == BUTTON_STATE_PRESS)
7695 icon_name = WHITE_BALANCE_INCANDESCENT_PRESS_ICON;
7697 icon_name = WHITE_BALANCE_INCANDESCENT_NORMAL_ICON;
7699 case CAM_MENU_WB_FLUORESCENT:
7700 if (state == BUTTON_STATE_PRESS)
7701 icon_name = WHITE_BALANCE_FLUORESCENT_PRESS_ICON;
7703 icon_name = WHITE_BALANCE_FLUORESCENT_NORMAL_ICON;
7705 case CAM_MENU_WB_DAYLIGHT:
7706 if (state == BUTTON_STATE_PRESS)
7707 icon_name = WHITE_BALANCE_DAYLIGHT_PRESS_ICON;
7709 icon_name = WHITE_BALANCE_DAYLIGHT_NORMAL_ICON;
7711 case CAM_MENU_WB_CLOUDY:
7712 if (state == BUTTON_STATE_PRESS)
7713 icon_name = WHITE_BALANCE_CLOUDY_PRESS_ICON;
7715 icon_name = WHITE_BALANCE_CLOUDY_NORMAL_ICON;
7717 case CAM_MENU_WB_SHADE:
7718 if (state == BUTTON_STATE_PRESS)
7719 icon_name = WHITE_BALANCE_SHADE_PRESS_ICON;
7721 icon_name = WHITE_BALANCE_SHADE_NORMAL_ICON;
7723 case CAM_MENU_WB_HORIZON:
7724 if (state == BUTTON_STATE_PRESS)
7725 icon_name = WHITE_BALANCE_HORIZON_PRESS_ICON;
7727 icon_name = WHITE_BALANCE_HORIZON_NORMAL_ICON;
7729 case CAM_MENU_WB_FLASH:
7730 if (state == BUTTON_STATE_PRESS)
7735 case CAM_MENU_WB_CUSTOM:
7736 if (state == BUTTON_STATE_PRESS)
7741 case CAM_MENU_EFFECT_NONE:
7742 if (state == BUTTON_STATE_PRESS)
7743 icon_name = EFFECTS_NONE_PRESS_ICON;
7745 icon_name = EFFECTS_NONE_NORMAL_ICON;
7747 case CAM_MENU_EFFECT_NEGATIVE:
7748 if (state == BUTTON_STATE_PRESS)
7749 icon_name = EFFECTS_NEGATIVE_PRESS_ICON;
7751 icon_name = EFFECTS_NEGATIVE_NORMAL_ICON;
7753 case CAM_MENU_EFFECT_BLACKANDWHITE:
7754 if (state == BUTTON_STATE_PRESS)
7755 icon_name = EFFECTS_BLACKANDWHITE_PRESS_ICON;
7757 icon_name = EFFECTS_BLACKANDWHITE_NORMAL_ICON;
7759 case CAM_MENU_EFFECT_SEPIA:
7760 if (state == BUTTON_STATE_PRESS)
7761 icon_name = EFFECTS_SEPIA_PRESS_ICON;
7763 icon_name = EFFECTS_SEPIA_NORMAL_ICON;
7765 case CAM_MENU_FOCUS_AUTO:
7766 if (state == BUTTON_STATE_PRESS)
7767 icon_name = FOCUS_MODE_AUTO_PRESS_ICON;
7769 icon_name = FOCUS_MODE_AUTO_NORMAL_ICON;
7771 case CAM_MENU_FOCUS_MACRO:
7772 if (state == BUTTON_STATE_PRESS)
7773 icon_name = FOCUS_MODE_MACRO_PRESS_ICON;
7775 icon_name = FOCUS_MODE_MACRO_NORMAL_ICON;
7777 case CAM_MENU_FOCUS_FACE_DETECTION:
7778 if (state == BUTTON_STATE_PRESS)
7779 icon_name = FOCUS_MODE_FACE_DETECTION_PRESS_ICON;
7781 icon_name = FOCUS_MODE_FACE_DETECTION_NORMAL_ICON;
7783 case CAM_MENU_RECORDING_MODE_NORMAL:
7784 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
7785 if (state == BUTTON_STATE_PRESS)
7786 icon_name = RECORDING_MODE_NORMAL_PRESS_ICON;
7788 icon_name = RECORDING_MODE_NORMAL_NORMAL_ICON;
7790 case CAM_MENU_RECORDING_MODE_LIMIT:
7791 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
7792 if (state == BUTTON_STATE_PRESS)
7793 icon_name = RECORDING_MODE_LIMIT_MMS_PRESS_ICON;
7795 icon_name = RECORDING_MODE_LIMIT_MMS_NORMAL_ICON;
7797 case CAM_MENU_RECORDING_MODE_SLOW:
7798 if (state == BUTTON_STATE_PRESS)
7799 icon_name = RECORDING_MODE_SLOW_MOTION_PRESS_ICON;
7801 icon_name = RECORDING_MODE_SLOW_MOTION_NORMAL_ICON;
7803 case CAM_MENU_RECORDING_MODE_FAST:
7804 if (state == BUTTON_STATE_PRESS)
7805 icon_name = RECORDING_MODE_FAST_MOTION_PRESS_ICON;
7807 icon_name = RECORDING_MODE_FAST_MOTION_NORMAL_ICON;
7809 case CAM_MENU_FLASH_OFF:
7810 if (state == BUTTON_STATE_PRESS)
7811 icon_name = FLASH_OFF_PRESS_ICON;
7813 icon_name = FLASH_OFF_NORMAL_ICON;
7815 case CAM_MENU_FLASH_ON:
7816 if (state == BUTTON_STATE_PRESS)
7817 icon_name = FLASH_ON_PRESS_ICON;
7819 icon_name = FLASH_ON_NORMAL_ICON;
7821 case CAM_MENU_FLASH_AUTO:
7822 if (state == BUTTON_STATE_PRESS)
7823 icon_name = FLASH_AUTO_PRESS_ICON;
7825 icon_name = FLASH_AUTO_NORMAL_ICON;
7827 case CAM_MENU_METERING_MATRIX:
7828 if (state == BUTTON_STATE_PRESS)
7829 icon_name = METERING_MATRIX_PRESS_ICON;
7831 icon_name = METERING_MATRIX_NORMAL_ICON;
7833 case CAM_MENU_METERING_CENTER_WEIGHTED:
7834 if (state == BUTTON_STATE_PRESS)
7835 icon_name = METERING_CENTER_WEIGHTED_PRESS_ICON;
7837 icon_name = METERING_CENTER_WEIGHTED_NORMAL_ICON;
7839 case CAM_MENU_METERING_SPOT:
7840 if (state == BUTTON_STATE_PRESS)
7841 icon_name = METERING_SPOT_PRESS_ICON;
7843 icon_name = METERING_SPOT_NORMAL_ICON;
7845 case CAM_MENU_ISO_AUTO:
7846 if (state == BUTTON_STATE_PRESS)
7847 icon_name = ISO_AUTO_PRESS_ICON;
7849 icon_name = ISO_AUTO_NORMAL_ICON;
7851 case CAM_MENU_ISO_50:
7852 if (state == BUTTON_STATE_PRESS)
7853 icon_name = ISO_50_PRESS_ICON;
7855 icon_name = ISO_50_NORMAL_ICON;
7857 case CAM_MENU_ISO_100:
7858 if (state == BUTTON_STATE_PRESS)
7859 icon_name = ISO_100_PRESS_ICON;
7861 icon_name = ISO_100_NORMAL_ICON;
7863 case CAM_MENU_ISO_200:
7864 if (state == BUTTON_STATE_PRESS)
7865 icon_name = ISO_200_PRESS_ICON;
7867 icon_name = ISO_200_NORMAL_ICON;
7869 case CAM_MENU_ISO_400:
7870 if (state == BUTTON_STATE_PRESS)
7871 icon_name = ISO_400_PRESS_ICON;
7873 icon_name = ISO_400_NORMAL_ICON;
7875 case CAM_MENU_ISO_80O:
7876 if (state == BUTTON_STATE_PRESS)
7877 icon_name = ISO_800_PRESS_ICON;
7879 icon_name = ISO_800_NORMAL_ICON;
7881 case CAM_MENU_ISO_1600:
7882 if (state == BUTTON_STATE_PRESS)
7887 case CAM_MENU_ISO_320O:
7888 if (state == BUTTON_STATE_PRESS)
7893 case CAM_MENU_STORAGE_PHONE:
7894 if (state == BUTTON_STATE_PRESS)
7895 icon_name = STORAGE_MYDEVICE_PRESS_ICON;
7897 icon_name = STORAGE_MYDEVICE_NORMAL_ICON;
7899 case CAM_MENU_STORAGE_MMC:
7900 if (state == BUTTON_STATE_PRESS)
7901 icon_name = STORAGE_CARD_PRESS_ICON;
7903 icon_name = STORAGE_CARD_NORMAL_ICON;
7905 case CAM_MENU_TIMER_OFF:
7906 if (state == BUTTON_STATE_PRESS)
7907 icon_name = TIMER_OFF_PRESS_ICON;
7909 icon_name = TIMER_OFF_NORMAL_ICON;
7911 case CAM_MENU_TIMER_2SEC:
7912 if (state == BUTTON_STATE_PRESS)
7913 icon_name = TIMER_2SEC_PRESS_ICON;
7915 icon_name = TIMER_2SEC_NORMAL_ICON;
7917 case CAM_MENU_TIMER_5SEC:
7918 if (state == BUTTON_STATE_PRESS)
7919 icon_name = TIMER_5SEC_PRESS_ICON;
7921 icon_name = TIMER_5SEC_NORMAL_ICON;
7923 case CAM_MENU_TIMER_10SEC:
7924 if (state == BUTTON_STATE_PRESS)
7925 icon_name = TIMER_10SEC_PRESS_ICON;
7927 icon_name = TIMER_10SEC_NORMAL_ICON;
7929 case CAM_MENU_VOLUME_KEY_ZOOM:
7930 if (state == BUTTON_STATE_PRESS)
7931 icon_name = VOLUME_KEY_AS_ZOOM_PRESS_ICON;
7933 icon_name = VOLUME_KEY_AS_ZOOM_NORMAL_ICON;
7935 case CAM_MENU_VOLUME_KEY_SHUTTER:
7936 if (state == BUTTON_STATE_PRESS)
7937 icon_name = VOLUME_KEY_AS_SHUTTER_PRESS_ICON;
7939 icon_name = VOLUME_KEY_AS_SHUTTER_NORMAL_ICON;
7941 case CAM_MENU_EXPLOSURE_VALUE:
7942 if (camapp->self_portrait == FALSE)
7943 exposure_value = camapp->brightness;
7945 exposure_value = camapp->brightness + 4;
7947 if (exposure_value == 0) {
7948 if (state == BUTTON_STATE_PRESS)
7949 icon_name = EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON;
7951 icon_name = EXPOSURE_VALUE_MINUS_2_0_ICON;
7952 } else if (exposure_value == 1) {
7953 if (state == BUTTON_STATE_PRESS)
7954 icon_name = EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON;
7956 icon_name = EXPOSURE_VALUE_MINUS_1_5_ICON;
7957 } else if (exposure_value == 2) {
7958 if (state == BUTTON_STATE_PRESS)
7959 icon_name = EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON;
7961 icon_name = EXPOSURE_VALUE_MINUS_1_0_ICON;
7962 } else if (exposure_value == 3) {
7963 if (state == BUTTON_STATE_PRESS)
7964 icon_name = EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON;
7966 icon_name = EXPOSURE_VALUE_MINUS_0_5_ICON;
7967 } else if (exposure_value == 4) {
7968 if (state == BUTTON_STATE_PRESS)
7969 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
7971 icon_name = EXPOSURE_VALUE_0_ICON;
7972 } else if (exposure_value == 5) {
7973 if (state == BUTTON_STATE_PRESS)
7974 icon_name = EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON;
7976 icon_name = EXPOSURE_VALUE_PLUS_0_5_ICON;
7977 } else if (exposure_value == 6) {
7978 if (state == BUTTON_STATE_PRESS)
7979 icon_name = EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON;
7981 icon_name = EXPOSURE_VALUE_PLUS_1_0_ICON;
7982 } else if (exposure_value == 7) {
7983 if (state == BUTTON_STATE_PRESS)
7984 icon_name = EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON;
7986 icon_name = EXPOSURE_VALUE_PLUS_1_5_ICON;
7987 } else if (exposure_value == 8) {
7988 if (state == BUTTON_STATE_PRESS)
7989 icon_name = EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON;
7991 icon_name = EXPOSURE_VALUE_PLUS_2_0_ICON;
7993 if (state == BUTTON_STATE_PRESS)
7994 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
7996 icon_name = EXPOSURE_VALUE_0_ICON;
8006 static const char* __get_text_name(CAM_MENU_ITEM item)
8009 case CAM_MENU_SCENE_AUTO:
8010 return "IDS_CAM_BODY_NONE";
8011 case CAM_MENU_SCENE_PORTRAIT:
8012 return "IDS_CAM_OPT_SCENE_PORTRAIT";
8013 case CAM_MENU_SCENE_LANDSCAPE:
8014 return "IDS_CAM_OPT_SCENE_LANDSCAPE";
8015 case CAM_MENU_SCENE_NIGHT:
8016 return "IDS_CAM_OPT_SCENEMODE_NIGHT";
8017 case CAM_MENU_SCENE_SPORTS:
8018 return "IDS_CAM_OPT_SCENE_SPORTS";
8019 case CAM_MENU_SCENE_PARTY:
8020 return "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR";
8021 case CAM_MENU_SCENE_BEACHSNOW:
8022 return "IDS_CAM_OPT_BEACH_SNOW";
8023 case CAM_MENU_SCENE_SUNSET:
8024 return "IDS_CAM_OPT_SCENEMODE_SUNSET";
8025 case CAM_MENU_SCENE_DUSKDAWN:
8026 return "IDS_CAM_OPT_SCENE_DAWN";
8027 case CAM_MENU_SCENE_FALL:
8028 return "IDS_CAM_OPT_AUTUMN_COLOUR";
8029 case CAM_MENU_SCENE_FIREWORK:
8030 return "IDS_CAM_BODY_SCENEMODE_FIREWORK";
8031 case CAM_MENU_SCENE_TEXT:
8032 return "IDS_CAM_BODY_SCENEMODE_TEXT";
8033 case CAM_MENU_SCENE_CANDLELIGHT:
8034 return "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT";
8035 case CAM_MENU_SCENE_BACKLIGHT:
8036 return "IDS_CAM_OPT_SCENE_BACKLIGHT";
8037 case CAM_MENU_SHOOTING_SINGLE:
8038 case CAM_MENU_SHOOTING_SELF_SINGLE:
8039 return "IDS_CAM_BODY_SINGLE";
8040 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
8042 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
8044 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
8046 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
8048 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
8050 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
8052 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
8054 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
8056 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
8058 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
8060 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
8062 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
8064 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
8066 case CAM_MENU_PHOTO_RESOLUTION_640x480:
8068 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
8070 case CAM_MENU_VIDEO_RESOLUTION_HD:
8072 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
8074 case CAM_MENU_VIDEO_RESOLUTION_VGA:
8076 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
8078 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
8080 case CAM_MENU_WB_AWB:
8081 return "IDS_CAM_BODY_AUTO";
8082 case CAM_MENU_WB_INCANDESCENT:
8083 return "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT";
8084 case CAM_MENU_WB_FLUORESCENT:
8085 return "IDS_CAM_BODY_FLUORESCENT";
8086 case CAM_MENU_WB_DAYLIGHT:
8087 return "IDS_CAM_BODY_DAYLIGHT";
8088 case CAM_MENU_WB_CLOUDY:
8089 return "IDS_CAM_BODY_CLOUDY";
8090 case CAM_MENU_WB_SHADE:
8091 return "IDS_CAM_BODY_SHADE";
8092 case CAM_MENU_WB_HORIZON:
8093 return "IDS_CAM_BODY_HORIZON";
8094 case CAM_MENU_WB_FLASH:
8095 return "IDS_CAM_OPT_FLASH";
8096 case CAM_MENU_WB_CUSTOM:
8097 return "IDS_CAM_BODY_CUSTOM";
8098 case CAM_MENU_EFFECT_NONE:
8099 return "IDS_CAM_BODY_NONE";
8100 case CAM_MENU_EFFECT_NEGATIVE:
8101 return "IDS_CAM_BODY_NEGATIVE";
8102 case CAM_MENU_EFFECT_BLACKANDWHITE:
8103 return "IDS_CAM_BODY_BLACK_AND_WHITE";
8104 case CAM_MENU_EFFECT_SEPIA:
8105 return "IDS_CAM_BODY_SEPIA";
8106 case CAM_MENU_FOCUS_AUTO:
8107 return "IDS_CAM_OPT_AUTO_FOCUS";
8108 case CAM_MENU_FOCUS_MACRO:
8109 return "IDS_CAM_BODY_MACRO";
8110 case CAM_MENU_FOCUS_FACE_DETECTION:
8111 return "IDS_CAM_OPT_FACE_DETECTION";
8112 case CAM_MENU_RECORDING_MODE_NORMAL:
8113 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8114 case CAM_MENU_RECORDING_MODE_LIMIT:
8115 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8116 case CAM_MENU_RECORDING_MODE_SLOW:
8117 return "IDS_CAM_OPT_SLOW_MOTION";
8118 case CAM_MENU_RECORDING_MODE_FAST:
8119 return "IDS_CAM_BODY_FAST_MOTION";
8120 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
8121 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8122 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
8123 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8124 case CAM_MENU_FLASH_OFF:
8125 return "IDS_CAM_BODY_OFF";
8126 case CAM_MENU_FLASH_ON:
8127 return "IDS_CAM_BODY_ON";
8128 case CAM_MENU_FLASH_AUTO:
8129 return "IDS_CAM_BODY_AUTO";
8130 case CAM_MENU_METERING_MATRIX:
8131 return "IDS_CAM_BODY_MATRIX";
8132 case CAM_MENU_METERING_CENTER_WEIGHTED:
8133 return "IDS_CAM_BODY_CENTER_WEIGHTED";
8134 case CAM_MENU_METERING_SPOT:
8135 return "IDS_CAM_BODY_SPOT";
8136 case CAM_MENU_ISO_AUTO:
8137 return "IDS_CAM_BODY_AUTO";
8138 case CAM_MENU_ISO_50:
8140 case CAM_MENU_ISO_100:
8142 case CAM_MENU_ISO_200:
8144 case CAM_MENU_ISO_400:
8146 case CAM_MENU_ISO_80O:
8148 case CAM_MENU_ISO_1600:
8150 case CAM_MENU_ISO_320O:
8152 case CAM_MENU_STORAGE_PHONE:
8153 return "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY";
8154 case CAM_MENU_STORAGE_MMC:
8155 return "IDS_CAM_OPT_MEMORY_CARD";
8156 case CAM_MENU_TIMER_OFF:
8157 return "IDS_CAM_BODY_OFF";
8158 case CAM_MENU_TIMER_2SEC:
8159 return "IDS_CAM_BODY_2_SEC";
8160 case CAM_MENU_TIMER_5SEC:
8161 return "IDS_CAM_BODY_5_SEC";
8162 case CAM_MENU_TIMER_10SEC:
8163 return "IDS_CAM_BODY_10_SEC";
8164 case CAM_MENU_VOLUME_KEY_ZOOM:
8165 return "IDS_CAM_MBODY_THE_ZOOM_KEY";
8166 case CAM_MENU_VOLUME_KEY_SHUTTER:
8167 return "IDS_CAM_MBODY_THE_CAMERA_KEY";
8173 #define SUB_MENU_MAX_COUNT (5)
8174 #define SUB_MENU_2_COUNT_GAP (35)
8175 #define SUB_MENU_3_COUNT_GAP (30)
8176 #define SUB_MENU_4_COUNT_GAP (25)
8177 #define SUB_MENU_5_COUNT_GAP (15)
8179 static int __get_sub_menu_height(int count)
8183 height = SUB_MENU_POPUP_HEIGHT;
8185 height = (int)(SUB_MENU_POPUP_HEIGHT * count/SUB_MENU_MAX_COUNT);
8188 height += SUB_MENU_2_COUNT_GAP;
8191 height += SUB_MENU_3_COUNT_GAP;
8194 height += SUB_MENU_4_COUNT_GAP;
8197 height += SUB_MENU_5_COUNT_GAP;
8204 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8206 cam_retm_if(obj == NULL, "obj is NULL");
8207 struct appdata *ad = (struct appdata *)cam_appdata_get();
8208 cam_retm_if(ad == NULL, "appdata is NULL");
8209 CamAppData *camapp = ad->camapp_handle;
8210 cam_retm_if(camapp == NULL, "camapp is NULL");
8214 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8216 /* set resolution value */
8217 if (camapp->photo_resolution != resolution) {
8219 CAM_GVALUE_SET_INT(value, resolution);
8220 if (!cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value)) {
8221 DEBUG_TRACE("set photo resolution failed!");
8225 __update_menubar_icon_by_index(ad, CAM_MENU_PHOTO_RESOLUTION);
8226 if (ad->setting_select_item)
8227 elm_genlist_item_update(ad->setting_select_item);
8229 setting_ctxpopup_destroy(ad);
8230 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8233 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8235 cam_retm_if(obj == NULL, "obj is NULL");
8236 struct appdata *ad = (struct appdata *)cam_appdata_get();
8237 cam_retm_if(ad == NULL, "appdata is NULL");
8238 CamAppData *camapp = ad->camapp_handle;
8239 cam_retm_if(camapp == NULL, "camapp is NULL");
8243 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8245 /* set resolution value */
8246 if (camapp->video_resolution != resolution) {
8248 CAM_GVALUE_SET_INT(value, resolution);
8249 if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
8250 DEBUG_TRACE("set video resolution failed!");
8254 __update_menubar_icon_by_index(ad, CAM_MENU_VIDEO_RESOLUTION);
8255 if (ad->setting_select_item)
8256 elm_genlist_item_update(ad->setting_select_item);
8258 setting_ctxpopup_destroy(ad);
8259 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8262 void cam_toolbar_show_cafbutton(struct appdata *ad, gboolean show)
8264 cam_retm_if(ad == NULL, "appdata is NULL");
8267 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
8270 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
8274 static void __update_setting_popup(void* data)
8277 struct appdata *ad = data;
8278 cam_retm_if(ad == NULL, "appdata is NULL");
8280 Elm_Object_Item *it = NULL;
8281 it = elm_genlist_first_item_get(ad->genlist);
8284 CAM_MENU_ITEM item = (CAM_MENU_ITEM)elm_object_item_data_get(it);
8285 gboolean cap_enable = cam_is_enabled_menu(ad,item);
8286 gboolean cur_state = elm_object_item_disabled_get(it);
8287 DEBUG_TRACE("cap_enable %d", cap_enable);
8288 DEBUG_TRACE("cur_state %d", cap_enable);
8289 if(cap_enable == cur_state) {
8290 DEBUG_TRACE("cur_state|cap_enable %d", cap_enable|cur_state);
8291 elm_object_item_disabled_set(it, !cap_enable);
8292 elm_genlist_item_update(it);
8295 it = elm_genlist_item_next_get(it);
8301 static void __set_show_state_preview_obj(void *data, gboolean show)
8303 struct appdata *ad = data;
8304 cam_retm_if(ad == NULL, "appdata is NULL");
8307 cam_app_focus_guide_update(ad);
8308 cam_indicator_set_show_state(ad, TRUE);
8310 if (ad->guideline_edje)
8311 evas_object_show(ad->guideline_edje);
8313 if (ad->shot_mode_guide_popup)
8314 evas_object_show(ad->shot_mode_guide_popup);
8316 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
8317 cam_indicator_set_show_state(ad, FALSE);
8319 if (ad->guideline_edje)
8320 evas_object_hide(ad->guideline_edje);
8322 if (ad->shot_mode_guide_popup)
8323 evas_object_hide(ad->shot_mode_guide_popup);