2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (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 static Shortcuts_List_Prop edit_shortcuts_prop_array[CAM_EDIT_SHORTCUTS_INDEX_MAX]
109 {CAM_EDIT_SHORTCUTS_INDEX_0, PROP_SHORTCUTS_PART_INDEX_0},
110 {CAM_EDIT_SHORTCUTS_INDEX_1, PROP_SHORTCUTS_PART_INDEX_1},
111 {CAM_EDIT_SHORTCUTS_INDEX_2, PROP_SHORTCUTS_PART_INDEX_2},
112 {CAM_EDIT_SHORTCUTS_INDEX_3, PROP_SHORTCUTS_PART_INDEX_3},
114 {CAM_EDIT_SHORTCUTS_INDEX_4, PROP_SHORTCUTS_PART_INDEX_4},
115 {CAM_EDIT_SHORTCUTS_INDEX_5, PROP_SHORTCUTS_PART_INDEX_5},
116 {CAM_EDIT_SHORTCUTS_INDEX_6, PROP_SHORTCUTS_PART_INDEX_6},
117 {CAM_EDIT_SHORTCUTS_INDEX_7, PROP_SHORTCUTS_PART_INDEX_7},
119 {CAM_EDIT_SHORTCUTS_INDEX_8, PROP_SHORTCUTS_PART_INDEX_8},
120 {CAM_EDIT_SHORTCUTS_INDEX_9, PROP_SHORTCUTS_PART_INDEX_9},
121 {CAM_EDIT_SHORTCUTS_INDEX_10, PROP_SHORTCUTS_PART_INDEX_10},
122 {CAM_EDIT_SHORTCUTS_INDEX_11, PROP_SHORTCUTS_PART_INDEX_11},
124 {CAM_EDIT_SHORTCUTS_INDEX_12, PROP_SHORTCUTS_PART_INDEX_12},
125 {CAM_EDIT_SHORTCUTS_INDEX_13, PROP_SHORTCUTS_PART_INDEX_13},
126 {CAM_EDIT_SHORTCUTS_INDEX_14, PROP_SHORTCUTS_PART_INDEX_14},
127 {CAM_EDIT_SHORTCUTS_INDEX_15, PROP_SHORTCUTS_PART_INDEX_15},
129 {CAM_EDIT_SHORTCUTS_INDEX_16, PROP_SHORTCUTS_PART_INDEX_16},
130 {CAM_EDIT_SHORTCUTS_INDEX_17, PROP_SHORTCUTS_PART_INDEX_17},
131 {CAM_EDIT_SHORTCUTS_INDEX_18, PROP_SHORTCUTS_PART_INDEX_18},
132 {CAM_EDIT_SHORTCUTS_INDEX_19, PROP_SHORTCUTS_PART_INDEX_19},
135 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
136 char **file_path, char **text, Evas_Object_Event_Cb *func);
137 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon);
139 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
140 void create_menubar_shortcuts_mouse_event(struct appdata *ad);
141 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
142 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no);
143 int toolbar_create_shortcuts_popup(struct appdata *ad);
145 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow);
146 static void setting_ctxpopup_destroy(struct appdata *ad);
148 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y);
150 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y);
151 static int __get_menubar_no_by_index(struct appdata *ad, int index);
153 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj, void *event_info);
154 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info);
155 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj, void *event_info);
156 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info);
157 static void __update_menubar_icon_by_index(struct appdata *ad, int index);
158 static void __cam_toolbar_edit_shortcuts_data_clean();
159 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y);
160 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y);
162 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon, int type, void *data, ButtonState state, Evas_Object_Event_Cb *func);
163 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction, int mouse_point, int *x, int *y);
165 /* Setting list callback*/
166 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting);
167 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info);
168 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info);
169 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info);
170 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info);
171 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info);
172 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info);
173 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info);
174 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info);
175 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info);
176 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info);
177 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info);
178 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info);
179 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info);
180 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info);
181 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info);
182 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info);
183 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info);
184 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info);
185 static void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info);
186 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info);
187 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info);
188 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info);
189 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info);
190 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
191 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
192 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info);
194 /* Toolbar functions */
195 static void __toolbar_menu_icon_update(struct appdata *ad);
196 static int __toolbar_menu_item_create(struct appdata *ad);
197 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state);
198 static void __toolbar_menu_item_reset(struct appdata *ad);
199 static int __toolbar_shutter_button_create(struct appdata *ad);
200 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state);
201 static int __toolbar_recording_button_create(struct appdata *ad);
202 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state);
203 static int __toolbar_quickview_item_create(struct appdata *ad);
204 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state);
205 static int __toolbar_backbutton_create(struct appdata *ad);
206 static void __toolbar_backbutton_destroy(struct appdata *ad);
207 static int __toolbar_cafbutton_create(struct appdata *ad);
208 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state);
209 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state);;
211 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state);
212 static const char* __get_text_name(CAM_MENU_ITEM item);
214 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
215 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
216 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect);
217 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
227 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
228 ShortCutData *swap_ele,
229 ShortCutData *cur_ele);
231 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no);
232 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata);
233 static void __cam_setting_sub_gl_style_set();
234 static int __get_sub_menu_height(int count);
235 int cam_toolbar_displaypopup_map_menu_value(int display_popup);
236 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item);
237 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2);
238 static void __resort_edit_shortcuts_list_by_part_index(void);
239 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele);
240 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no);
242 static void __update_setting_popup(void* data);
243 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele);
244 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
247 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no);
248 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
249 ShortCutData *cur_ele,
250 ShortCutData *insert_ele);
252 static void __set_show_state_preview_obj(void *data, gboolean show);
253 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part);
255 static Eina_Bool __setting_popup_timeout_checker_cb(void *data);
256 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad);
257 static void __cam_toolbar_display_shortcuts_editmode(void *data);
259 static void __cam_toolbar_exit_shortcuts_editmode(void *data);
260 static void __toolbar_dim_setting_shortcuts(struct appdata *ad);
263 static void cam_popup_warning_response_cb(void *data, Evas_Object *obj, void *event_info)
266 evas_object_del(obj);
270 static void cam_storage_warning_popup()
272 struct appdata *ad = (struct appdata *)cam_appdata_get();
273 cam_retm_if(ad == NULL, " appdata is NULL");
275 popup = elm_popup_add(ad->ug_base);
276 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
277 elm_object_text_set(popup, dgettext(PACKAGE, "IDS_CAM_POP_INSERT_MEMORY_CARD_TO_USE_CAMERA"));
278 elm_popup_timeout_set(popup, 3.0);
279 evas_object_smart_callback_add(popup, "timeout", cam_popup_warning_response_cb, NULL);
280 evas_object_show(popup);
283 static Eina_Bool __toolbar_check_af_timer(void *data)
286 struct appdata *ad = (struct appdata *)data;
287 cam_retv_if(ad == NULL, 0);
288 CamAppData *camapp = ad->camapp_handle;
289 if (camapp == NULL) {
290 if (ad->check_af_timer)
291 ad->check_af_timer = NULL;
292 return ECORE_CALLBACK_CANCEL;
295 if(camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
296 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
297 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
298 ad->emit_continuous_shutter = TRUE;
299 cam_mm_stop_focusing();
300 if (!cam_do_capture(ad)) {
301 cam_warning(LOG_UI, "cam_do_capture failed");
302 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
303 ad->emit_continuous_shutter = FALSE;
306 if (ad->check_af_timer)
307 ad->check_af_timer = NULL;
309 return ECORE_CALLBACK_CANCEL;
312 return ECORE_CALLBACK_RENEW;
314 static Eina_Bool __toolbar_continuous_shot_timer(void *data)
317 struct appdata *ad = (struct appdata *)data;
318 cam_retv_if(ad == NULL, 0);
319 CamAppData *camapp = ad->camapp_handle;
320 if (camapp == NULL) {
321 if (ad->continuous_shot_timer)
322 ad->continuous_shot_timer = NULL;
323 return ECORE_CALLBACK_CANCEL;
326 DEBUG_TRACE("camapp->burst_shot is %d", camapp->burst_shot);
327 if (camapp->burst_shot) {// burst shot mode 'on'
328 camapp->default_capture_mode = CAM_CAPTURE_BURST;
329 ad->emit_continuous_shutter = TRUE;
330 if (camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
331 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
332 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
333 REMOVE_TIMER(ad->continuous_af_timer);
334 cam_mm_stop_focusing();
336 if (!cam_do_capture(ad)) {
337 cam_warning(LOG_UI, "cam_do_capture failed");
338 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
341 cam_debug(LOG_UI, "Not focused");
343 REMOVE_TIMER(ad->check_af_timer);
344 ad->check_af_timer = ecore_timer_add(0.2, __toolbar_check_af_timer, ad);
348 if (ad->continuous_shot_timer)
349 ad->continuous_shot_timer = NULL;
350 return ECORE_CALLBACK_CANCEL;
353 /* start AF after SHUTTER_LONG_TAP_TIME */
354 static Eina_Bool __toolbar_shutter_long_tap_af_timer(void *data)
356 struct appdata *ad = (struct appdata *)data;
357 cam_retv_if(ad == NULL, 0);
358 CamAppData *camapp = ad->camapp_handle;
359 if (camapp == NULL) {
360 if (ad->shutter_long_tap_timer)
361 ad->shutter_long_tap_timer = NULL;
362 return ECORE_CALLBACK_CANCEL;
365 if (!camapp->key_lock) {
366 camapp->key_lock = TRUE;
367 camapp->focus_mode = CAM_FOCUS_MODE_HALFSHUTTER;
368 camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
369 if (!cam_camera_key_half_press(ad)) {
370 cam_warning(LOG_UI, "cam_camera_key_half_press failed");
372 camapp->key_lock = FALSE;
375 if (ad->shutter_long_tap_timer)
376 ad->shutter_long_tap_timer = NULL;
377 return ECORE_CALLBACK_CANCEL;
380 static void __shutter_button_focus_out_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
382 DEBUG_TRACE("START");
384 struct appdata *ad = (struct appdata *)data;
385 cam_retm_if(ad == NULL, "appdata is NULL");
386 CamAppData *camapp = ad->camapp_handle;
387 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
389 if (ad->is_processing) {
393 cam_mm_stop_focusing();
394 cam_reset_focus_mode(ad);
397 void cam_toolbar_shutter_button_cb(void *data, Evas_Object *o,
398 const char *emission, const char *source)
400 DEBUG_TRACE("START");
402 struct appdata *ad = (struct appdata *)data;
403 cam_retm_if(ad == NULL, "appdata is NULL");
404 cam_app_timeout_checker_update();
405 if (ad->is_rotating) return;/*note: now is rotating*/
406 CamAppData *camapp = ad->camapp_handle;;
407 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
409 cam_retm_if(emission == NULL, "emission is NULL");
410 cam_retm_if(source == NULL, "source is NULL");
411 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
413 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
416 unload_zoom_edje(ad);
421 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
422 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
423 cam_toolbar_setting_popup_destroy(ad);
426 if (ad->edit_shortcuts_popup)
427 toolbar_destroy_shortcuts_popup(ad);
429 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
430 cam_debug(LOG_UI, "do not capture");
434 if (strcmp(emission, "press_shutter_sig") == 0) {
435 if ((camapp->continuous_shot_data && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING )
437 cam_critical(LOG_SYS, " capture is skipped because of CAM_CONTI_SHOT_STATUS_CAPTURING");
441 ad->emit_continuous_shutter = FALSE;
442 if (camapp->camera_mode == CAM_CAMERA_MODE) {
443 evas_object_event_callback_add(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb, (void *)ad);
445 if (camapp->af_mode == CAM_FOCUS_FACE) { /*note: face focus mode, if start capture,stop draw rect*/
446 cam_app_stop_video_stream();
448 REMOVE_TIMER(ad->continuous_shot_timer);
449 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
451 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) && (camapp->burst_shot == TRUE)) {
452 if (strcmp(source, "hard_key") == 0) {
453 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
454 ad->continuous_shot_by_hard_key = TRUE;
455 __toolbar_continuous_shot_timer(ad);
457 if (!cam_do_capture(ad))
458 cam_warning(LOG_UI, "cam_do_capture failed");
461 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
462 ad->continuous_shot_by_hard_key = FALSE;
463 ad->continuous_shot_timer = ecore_timer_add(0.5, __toolbar_continuous_shot_timer, ad);
467 ad->stop_continuous_shot = FALSE;
469 if (strcmp(source, "hard_key") == 0) {
470 if (!cam_do_capture(ad))
471 cam_warning(LOG_UI, "cam_do_capture failed");
473 if (cam_is_enabled_menu((void*)ad, CAM_MENU_FOCUS_MODE)){
474 REMOVE_TIMER(ad->continuous_af_timer);
475 ad->shutter_long_tap_timer = ecore_timer_add(SHUTTER_LONG_TAP_TIME, __toolbar_shutter_long_tap_af_timer, ad);
480 if (strcmp(source, "hard_key") == 0) {
481 if (!cam_do_capture(ad))
482 cam_warning(LOG_UI, "cam_do_capture failed");
486 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
487 } else if (strcmp(emission, "release_shutter_sig") == 0) {
488 if (camapp->camera_mode == CAM_CAMERA_MODE) {
489 evas_object_event_callback_del(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb);
490 REMOVE_TIMER(ad->shutter_long_tap_timer);
491 REMOVE_TIMER(ad->continuous_shot_timer);
492 REMOVE_TIMER(ad->check_af_timer);
494 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE)
495 && camapp->burst_shot == TRUE
496 && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
497 DEBUG_TRACE("burst capture mode");
498 if (((strcmp(source, "hard_key") == 0) && (ad->continuous_shot_by_hard_key == FALSE))
499 || ((strcmp(source, "toolbar_signal") == 0) && (ad->continuous_shot_by_hard_key == TRUE))) {
500 DEBUG_TRACE("ignore this event");
503 ad->stop_continuous_shot = TRUE;
504 ad->emit_continuous_shutter = FALSE;
505 ad->continuous_shot_by_hard_key = FALSE;
509 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
510 } else if ( strcmp(emission, "click_shutter_sig") == 0){
512 if (ad->emit_continuous_shutter == TRUE ) {
513 ad->emit_continuous_shutter = FALSE;
517 if (camapp->default_capture_mode == CAM_CAPTURE_SINGLE) {
518 if (!cam_do_capture(ad))
519 cam_warning(LOG_UI, "cam_do_capture failed");
524 void cam_toolbar_recording_button_cb(void *data, Evas_Object *o,
525 const char *emission, const char *source)
527 DEBUG_TRACE("START");
529 struct appdata *ad = (struct appdata *)data;
530 cam_retm_if(ad == NULL, "appdata is NULL");
531 cam_app_timeout_checker_update();
532 if (ad->is_rotating) return;/*note: now is rotating*/
533 CamAppData *camapp = ad->camapp_handle;;
534 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
536 cam_retm_if(emission == NULL, "emission is NULL");
537 cam_retm_if(source == NULL, "source is NULL");
538 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
540 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
543 unload_zoom_edje(ad);
548 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
549 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
550 cam_toolbar_setting_popup_destroy(ad);
553 if (ad->edit_shortcuts_popup)
554 toolbar_destroy_shortcuts_popup(ad);
556 int mm_state = cam_mm_get_state();
558 if ((camapp->camera_mode == CAM_CAMERA_MODE)
559 && (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)) {
560 cam_debug(LOG_UI, "do not record");
564 if (strcmp(emission, "press_shutter_sig") == 0) {
565 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
566 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,press", "prog");
568 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,press", "prog");
569 } else if (strcmp(emission, "release_shutter_sig") == 0) {
570 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
571 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
573 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
574 } else if (strcmp(emission, "click_shutter_sig") == 0) {
576 if (camapp->camera_mode == CAM_CAMERA_MODE) {
577 if (mm_state != CAMERA_STATE_PREVIEW) {
578 cam_critical(LOG_UI, "Cannot start recording in capturing state");
583 if (!ad->is_recording) {
584 // change to camcorder mode
585 GValue value = {0, };
586 if (camapp->camera_mode == CAM_CAMERA_MODE) {
587 CAM_GVALUE_SET_INT(value, CAM_CAMCORDER_MODE);
588 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
593 if (!camapp->key_lock) {
594 camapp->key_lock = TRUE;
596 if (!cam_do_record(ad))
597 cam_warning(LOG_UI, "cam_do_record failed");
599 camapp->key_lock = FALSE;
602 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING)) {
603 if (!cam_video_record_pause(ad))
604 cam_warning(LOG_UI, "cam_video_record_pause failed");
606 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
607 } else if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_PAUSED)) {
608 if (!cam_video_record_resume(ad))
609 cam_warning(LOG_UI, "cam_video_record_resume failed");
611 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
617 void cam_toolbar_recording_stop_button_cb(void *data, Evas_Object *o,
618 const char *emission, const char *source)
620 DEBUG_TRACE("START");
622 struct appdata *ad = (struct appdata *)data;
623 cam_retm_if(ad == NULL, "appdata is NULL");
624 cam_app_timeout_checker_update();
625 if (ad->is_rotating) return;/*note: now is rotating*/
626 CamAppData *camapp = ad->camapp_handle;;
627 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
629 cam_retm_if(emission == NULL, "emission is NULL");
630 cam_retm_if(source == NULL, "source is NULL");
631 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
636 unload_zoom_edje(ad);
637 HIDE_EVAS_OBJECT(ad->indicator_edje);
638 DEL_EVAS_OBJECT(ad->recording_edje);
640 if (strcmp(emission, "press_shutter_sig") == 0) {
641 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,press", "prog");
642 } else if (strcmp(emission, "release_shutter_sig") == 0) {
643 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
644 } else if (strcmp(emission, "click_shutter_sig") == 0) {
645 state = cam_mm_get_state();
647 if ((state == RECORDER_STATE_RECORDING)
648 || (state == RECORDER_STATE_PAUSED)) {
649 camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
650 if (!cam_video_record_stop(ad))
651 cam_warning(LOG_UI, "cam_video_record_stop failed");
653 cam_debug(LOG_UI, "error, not recording or pause state");
658 static void __toolbar_backbutton_cb(void *data, Evas_Object *o,
659 const char *emission, const char *source)
661 DEBUG_TRACE("START");
663 struct appdata *ad = (struct appdata *)data;
664 cam_retm_if(ad == NULL, "appdata is NULL");
665 if (ad->is_rotating) return;/*note: now is rotating*/
666 CamAppData *camapp = ad->camapp_handle;;
667 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
669 cam_retm_if(emission == NULL, "emission is NULL");
670 cam_retm_if(source == NULL, "source is NULL");
671 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
673 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
675 if (ad->timer_activated) {
676 cam_app_cancel_timer(ad);
677 if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
678 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
679 if (ad->ug_state != CAM_UG_PAUSE_STATE) {
680 GValue value = {0, };
681 CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
682 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
690 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
691 if (ad->is_recording) {
692 if (!camapp->key_lock) {
693 camapp->key_lock = TRUE;
695 if (!cam_video_record_cancel(ad))
696 cam_warning(LOG_UI, "failed");
698 camapp->key_lock = FALSE;
705 cam_tip_popup_destroy(ad);
707 } else if (ad->toolbar_setting_popup) {
708 if (ad->setting_ctxpopup) {
709 setting_ctxpopup_destroy(ad);
710 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
712 cam_toolbar_setting_popup_destroy(ad);
715 } else if (ad->setting_ctxpopup) {
716 setting_ctxpopup_destroy(ad);
717 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
719 } else if (ad->edit_shortcuts_popup) {
720 toolbar_destroy_shortcuts_popup(ad);
722 } else if (ad->ev_edje) {
725 } else if (ad->zoom_edje) {
726 unload_zoom_edje(ad);
731 /* TODO: Properly release video and audio when minimizing. Otherwise it keeps other apps from gaining access
732 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
735 elm_win_lower(ug_get_window());
742 static void __toolbar_cafbutton_cb(void *data, Evas_Object *o,
743 const char *emission, const char *source)
745 DEBUG_TRACE("START");
747 struct appdata *ad = (struct appdata *)data;
748 cam_retm_if(ad == NULL, "appdata is NULL");
749 CamAppData *camapp = ad->camapp_handle;;
750 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
752 cam_retm_if(emission == NULL, "emission is NULL");
753 cam_retm_if(source == NULL, "source is NULL");
754 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
759 cam_reset_focus_mode(ad);
762 static Ecore_Idler *run_image_view_idler = NULL;
763 static Eina_Bool __cam_toolbar_run_image_viewer_idler(void *data)
765 struct appdata *ad = (struct appdata *)data;
766 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
767 CamAppData *camapp = ad->camapp_handle;
768 cam_retv_if(camapp == NULL, ECORE_CALLBACK_CANCEL);
770 if (run_image_view_idler) {
771 ecore_idler_del(run_image_view_idler);
772 run_image_view_idler = NULL;
775 if (ad->ug_is_deleting_process == TRUE)
776 return ECORE_CALLBACK_CANCEL;
778 if (!cam_app_run_media_browser(ad, camapp->filename)) {
779 DEBUG_TRACE("cam_app_run_media_browser failed");
782 return ECORE_CALLBACK_CANCEL;
785 static void __toolbar_quickview_cb(void *data, Evas_Object *o,
786 const char *emission, const char *source)
788 cam_ret_if(data == NULL);
789 struct appdata *ad = (struct appdata *)data;
790 cam_retm_if(ad == NULL, "appdata is NULL");
791 cam_app_timeout_checker_update();
792 if (ad->is_rotating) return;/*note: now is rotating*/
793 CamAppData *camapp = ad->camapp_handle;
794 cam_ret_if(camapp == NULL);
795 cam_ret_if(emission == NULL);
796 cam_ret_if(source == NULL);
797 if (ad->ug_is_deleting_process == TRUE)
801 unload_zoom_edje(ad);
806 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
807 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
808 cam_toolbar_setting_popup_destroy(ad);
811 if (ad->edit_shortcuts_popup)
812 toolbar_destroy_shortcuts_popup(ad);
814 if (ad->imageviewer_ug) {
817 if (emission && source)
818 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
820 if (strcmp(emission, "portrait,quickview,release") == 0
821 || strcmp(emission, "landscape,quickview,release") == 0) {
822 pthread_mutex_lock(&ad->file_reg_mutex);
823 cam_debug(LOG_SYS, " lock file_reg_mutex");
824 pthread_mutex_unlock(&ad->file_reg_mutex);
825 run_image_view_idler = ecore_idler_add(__cam_toolbar_run_image_viewer_idler, (void *)ad);
829 #if 0 /*block it temporary*/
830 static void __shotcus_edit_shotcuts_popup_cb(void *data, Evas * evas, Evas_Object *obj,
834 __setting_edit_shortcut_popup_cb(data, obj, event_info);
838 static void __shortcuts_burst_shot_popup_cb(void *data, Evas * evas, Evas_Object *obj,
842 __setting_burst_shot_popup_cb(data, obj, event_info);
845 static void __shortcuts_volume_key_popup_cb(void *data, Evas * evas, Evas_Object *obj,
849 __setting_volume_key_popup_cb(data, obj, event_info);
852 static void __shortcuts_self_portrait_popup_cb(void *data, Evas * evas, Evas_Object *obj,
856 __setting_self_portrait_popup_cb(data, obj, event_info);
859 static void __shortcuts_setting_flash_popup_cb(void *data, Evas * evas, Evas_Object *obj,
863 __setting_flash_popup(data, obj, event_info);
866 static void __shortcuts_shooting_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
870 __setting_shot_mode_popup_cb(data, obj, event_info);
873 static void __shortcuts_record_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
877 __setting_record_mode_popup(data, obj, event_info);
880 static void __shortcuts_scene_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
884 __setting_scenemode_popup_cb(data, obj, event_info);
887 static void __shortcuts_exposure_popup_cb(void *data, Evas * evas, Evas_Object *obj,
891 __setting_ev_popup_cb(data, obj, event_info);
894 static void __shortcuts_focus_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
898 __setting_focus_mode_cb(data, obj, event_info);
901 static void __shortcuts_setting_timer_popup_cb(void *data, Evas * evas, Evas_Object *obj,
905 __setting_timer_popup_cb(data, obj, event_info);
908 static void __shortcuts_effects_popup_cb(void *data, Evas * evas, Evas_Object *obj,
912 __setting_effects_popup_cb(data, obj, event_info);
915 static void __shortcuts_photo_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
919 __setting_photo_resolution_popup_cb(data, obj, event_info);
922 static void __shortcuts_video_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
926 __setting_video_resolution_popup_cb(data, obj, event_info);
930 static void __shortcuts_white_banlance_popup_cb(void *data, Evas * evas, Evas_Object *obj,
934 __setting_wb_popup_cb(data, obj, event_info);
937 static void __shortcuts_setting_iso_popup_cb(void *data, Evas * evas, Evas_Object *obj,
941 __setting_iso_popup_cb(data, obj, event_info);
944 static void __shortcuts_setting_metering_popup_cb(void *data, Evas * evas, Evas_Object *obj,
948 __setting_metering_popup_cb(data, obj, event_info);
951 static void __shortcuts_anti_shake_popup_cb(void *data, Evas * evas, Evas_Object *obj,
955 __setting_anti_shake_popup_cb(data, obj, event_info);
958 static void __shortcuts_outdoor_visibility_popup_cb(void *data, Evas * evas, Evas_Object *obj,
962 __setting_outdoor_visibility_popup_cb(data, obj, event_info);
965 static void __shortcuts_auto_contrast_popup_cb(void *data, Evas * evas, Evas_Object *obj,
969 __setting_autocontrast_popup_cb(data, obj, event_info);
972 static void __shortcuts_guideline_popup_cb(void *data, Evas * evas, Evas_Object *obj,
976 __setting_guideline_popup_cb(data, obj, event_info);
979 static void __shortcuts_capture_voice_popup_cb(void *data, Evas * evas, Evas_Object *obj,
983 __setting_capture_by_voice_popup_cb(data, obj, event_info);
986 static void __shortcuts_gps_tag_popup_cb(void *data, Evas * evas, Evas_Object *obj,
990 __setting_gps_popup_cb(data, obj, event_info);
993 static void __shortcuts_storage_popup_cb(void *data, Evas * evas, Evas_Object *obj,
997 __setting_storage_popup_cb(data, obj, event_info);
1000 static void __shortcuts_reset_popup_cb(void *data, Evas * evas, Evas_Object *obj,
1004 __setting_restore_defaults_popup_cb(data, obj, event_info);
1007 static void __shortcuts_save_as_flip_cb(void *data, Evas * evas, Evas_Object *obj,
1011 __setting_save_as_flip_popup_cb(data, obj, event_info);
1015 static void __update_menu_bar_shortcuts_state_by_index(struct appdata *ad, int index, ToolbarItemState state)
1017 cam_ret_if(ad == NULL);
1018 int menubar_no = __get_menubar_no_by_index(ad, index);
1019 switch(menubar_no) {
1020 case CAM_MENU_BAR_LEFT_0:
1021 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1022 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1023 "toolbar_0_icon,normal", "prog");
1024 else if (TOOLBAR_ITEM_STATE_DIM == state)
1025 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1026 "toolbar_0_icon,dim", "prog");
1028 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1029 "toolbar_0_icon,invisible", "prog");
1031 case CAM_MENU_BAR_LEFT_1:
1032 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1033 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1034 "toolbar_1_icon,normal", "prog");
1035 else if (TOOLBAR_ITEM_STATE_DIM == state)
1036 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1037 "toolbar_1_icon,dim", "prog");
1039 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1040 "toolbar_1_icon,invisible", "prog");
1042 case CAM_MENU_BAR_LEFT_2:
1043 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1044 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1045 "toolbar_2_icon,normal", "prog");
1046 else if (TOOLBAR_ITEM_STATE_DIM == state)
1047 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1048 "toolbar_2_icon,dim", "prog");
1050 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1051 "toolbar_2_icon,invisible", "prog");
1053 case CAM_MENU_BAR_LEFT_3:
1054 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1055 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1056 "toolbar_3_icon,normal", "prog");
1057 else if (TOOLBAR_ITEM_STATE_DIM == state)
1058 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1059 "toolbar_3_icon,dim", "prog");
1061 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1062 "toolbar_3_icon,invisible", "prog");
1064 case CAM_MENU_BAR_LEFT_4:
1065 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1066 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1067 "toolbar_4_icon,normal", "prog");
1068 else if (TOOLBAR_ITEM_STATE_DIM == state)
1069 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1070 "toolbar_4_icon,dim", "prog");
1072 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1073 "toolbar_4_icon,invisible", "prog");
1076 DEBUG_TRACE("not in menubar");
1081 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon,
1082 int type, void *data, ButtonState state, Evas_Object_Event_Cb *func)
1084 struct appdata *ad = (struct appdata *)data;
1085 cam_ret_if(ad == NULL);
1086 CamAppData *camapp = ad->camapp_handle;
1087 cam_ret_if(camapp == NULL);
1089 char *icon_name = NULL;
1092 ButtonState button_state = state;
1093 ToolbarItemState item_state = TOOLBAR_ITEM_STATE_NORMAL;
1095 if (!cam_is_enabled_menu(ad, type)) {
1096 button_state = BUTTON_STATE_DIM;
1097 item_state = TOOLBAR_ITEM_STATE_DIM;
1100 __get_toolbar_shortcuts_file_func(ad, type, button_state, &icon_name, &text, func);
1103 elm_image_file_set(toolbar_icon, CAM_IMAGE_EDJ_NAME, icon_name);
1105 cam_critical(LOG_UI, "icon_name is NULL");
1107 __update_menu_bar_shortcuts_state_by_index(ad, type, item_state);
1109 if (button_state == BUTTON_STATE_DIM)
1110 evas_object_color_set(toolbar_icon, 255, 255, 255, 77); /*opacity 30% for dim menu */
1112 evas_object_color_set(toolbar_icon, 255, 255, 255, 255);
1115 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
1116 char **file_path, char **text, Evas_Object_Event_Cb *func)
1118 struct appdata *ad = (struct appdata *)data;
1119 cam_ret_if(ad == NULL);
1120 CamAppData *camapp = ad->camapp_handle;
1121 cam_ret_if(camapp == NULL);
1128 case CAM_MENU_EMPTY:
1129 case CAM_MENU_SHORTCUTS:
1131 case CAM_MENU_BURST_SHOT_MODE: {
1132 if (camapp->burst_shot) {
1133 if (state == BUTTON_STATE_PRESS)
1134 *file_path = BURST_SHOT_MODE_ON_PRESS_ICON;
1136 *file_path = BURST_SHOT_MODE_ON_NORMAL_ICON;
1139 if (state == BUTTON_STATE_PRESS)
1140 *file_path = BURST_SHOT_MODE_OFF_PRESS_ICON;
1142 *file_path = BURST_SHOT_MODE_OFF_NORMAL_ICON;
1145 *text = dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB");
1147 if (state != BUTTON_STATE_DIM)
1148 *func = __shortcuts_burst_shot_popup_cb;
1151 case CAM_MENU_VOLUME_KEY: {
1152 *file_path = __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), state);
1153 *text = dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS");
1155 if (state != BUTTON_STATE_DIM)
1156 *func = __shortcuts_volume_key_popup_cb;
1159 case CAM_MENU_SELF_PORTRAIT: {
1160 if (state == BUTTON_STATE_PRESS)
1161 *file_path = CAMERA_SELF_PORTRAIT_PRESS_ICON;
1163 *file_path = CAMERA_SELF_PORTRAIT_NORMAL_ICON;
1165 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT");
1167 if (state != BUTTON_STATE_DIM)
1168 *func = __shortcuts_self_portrait_popup_cb;
1171 case CAM_MENU_FLASH: {
1172 *file_path = __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), state);
1173 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FLASH");
1175 if (state != BUTTON_STATE_DIM)
1176 *func = __shortcuts_setting_flash_popup_cb;
1179 case CAM_MENU_SHOOTING_MODE: {
1180 *file_path = __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), state);
1181 *text = dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE");
1183 if (state != BUTTON_STATE_DIM)
1184 *func = __shortcuts_shooting_mode_popup_cb;
1187 case CAM_MENU_RECORDING_MODE: {
1188 *file_path = __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), state);
1189 *text = dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE");
1191 if (state != BUTTON_STATE_DIM)
1192 *func = __shortcuts_record_mode_popup_cb;
1195 case CAM_MENU_SCENE_MODE: {
1196 *file_path = __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), state);
1197 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE");
1199 if (state != BUTTON_STATE_DIM)
1200 *func = __shortcuts_scene_mode_popup_cb;
1203 case CAM_MENU_EXPLOSURE_VALUE: {
1204 *file_path = __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, state);
1205 *text = dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE");
1207 if (state != BUTTON_STATE_DIM)
1208 *func = __shortcuts_exposure_popup_cb;
1211 case CAM_MENU_FOCUS_MODE: {
1212 *file_path = __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), state);
1213 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE");
1215 if (state != BUTTON_STATE_DIM)
1216 *func = __shortcuts_focus_mode_popup_cb;
1219 case CAM_MENU_TIMER: {
1220 *file_path = __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), state);
1221 *text = dgettext(PACKAGE, "IDS_CAM_BODY_TIMER");
1223 if (state != BUTTON_STATE_DIM)
1224 *func = __shortcuts_setting_timer_popup_cb;
1228 case CAM_MENU_EFFECTS: {
1229 *file_path = __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), state);
1230 *text = dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS");
1232 if (state != BUTTON_STATE_DIM)
1233 *func = __shortcuts_effects_popup_cb;
1236 case CAM_MENU_PHOTO_RESOLUTION: {
1237 *file_path = __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), state);
1238 *text = dgettext(PACKAGE, "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB");
1240 if (state != BUTTON_STATE_DIM)
1241 *func = __shortcuts_photo_resolution_popup_cb;
1244 case CAM_MENU_VIDEO_RESOLUTION: {
1245 *file_path = __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), state);
1246 *text = dgettext(PACKAGE, "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB");
1248 if (state != BUTTON_STATE_DIM)
1249 *func = __shortcuts_video_resolution_popup_cb;
1253 case CAM_MENU_WHITE_BALANCE: {
1254 *file_path = __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), state);
1255 *text = dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB");
1257 if (state != BUTTON_STATE_DIM)
1258 *func = __shortcuts_white_banlance_popup_cb;
1261 case CAM_MENU_ISO: {
1262 *file_path = __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), state);
1263 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ISO");
1265 if (state != BUTTON_STATE_DIM)
1266 *func = __shortcuts_setting_iso_popup_cb;
1269 case CAM_MENU_METERING: {
1270 *file_path = __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), state);
1271 *text = dgettext(PACKAGE, "IDS_CAM_BODY_METERING");
1273 if (state != BUTTON_STATE_DIM)
1274 *func = __shortcuts_setting_metering_popup_cb;
1277 case CAM_MENU_ANTI_SHAKE: {
1278 if (ad->camapp_handle->anti_shake) {
1279 if (state == BUTTON_STATE_PRESS)
1280 *file_path = ANTISHAKE_ON_PRESS_ICON;
1282 *file_path = ANTISHAKE_ON_NORMAL_ICON;
1285 if (state == BUTTON_STATE_PRESS)
1286 *file_path = ANTISHAKE_OFF_PRESS_ICON;
1288 *file_path = ANTISHAKE_OFF_NORMAL_ICON;
1291 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE");
1293 if (state != BUTTON_STATE_DIM)
1294 *func = __shortcuts_anti_shake_popup_cb;
1297 case CAM_MENU_OUTDOOR_VISIBILITY: {
1298 if (ad->camapp_handle->outdoor_visibility) {
1299 if (state == BUTTON_STATE_PRESS)
1300 *file_path = OUTDOOR_VISIBILITY_ON_PRESS_ICON;
1302 *file_path = OUTDOOR_VISIBILITY_ON_NORMAL_ICON;
1305 if (state == BUTTON_STATE_PRESS)
1306 *file_path = OUTDOOR_VISIBILITY_OFF_PRESS_ICON;
1308 *file_path = OUTDOOR_VISIBILITY_OFF_NORMAL_ICON;
1311 *text = dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY");
1313 if (state != BUTTON_STATE_DIM)
1314 *func = __shortcuts_outdoor_visibility_popup_cb;
1317 case CAM_MENU_AUTO_CONTRAST: {
1318 if (ad->camapp_handle->auto_contrast) {
1319 if (state == BUTTON_STATE_PRESS)
1320 *file_path = AUTO_CONTRAST_ON_PRESS_ICON;
1322 *file_path = AUTO_CONTRAST_ON_NORMAL_ICON;
1325 if (state == BUTTON_STATE_PRESS)
1326 *file_path = AUTO_CONTRAST_OFF_PRESS_ICON;
1328 *file_path = AUTO_CONTRAST_OFF_NORMAL_ICON;
1331 *text = dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST");
1333 if (state != BUTTON_STATE_DIM)
1334 *func = __shortcuts_auto_contrast_popup_cb;
1337 case CAM_MENU_GUIDELINES: {
1338 if (ad->camapp_handle->guideline) {
1339 if (state == BUTTON_STATE_PRESS)
1340 *file_path = GUIDELINE_ON_PRESS_ICON;
1342 *file_path = GUIDELINE_ON_NORMAL_ICON;
1345 if (state == BUTTON_STATE_PRESS)
1346 *file_path = GUIDELINE_OFF_PRESS_ICON;
1348 *file_path = GUIDELINE_OFF_NORMAL_ICON;
1351 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE");
1353 if (state != BUTTON_STATE_DIM)
1354 *func = __shortcuts_guideline_popup_cb;
1357 case CAM_MENU_CAPTURE_VOICE: {
1358 if (ad->camapp_handle->capture_by_voice) {
1359 if (state == BUTTON_STATE_PRESS)
1360 *file_path = CAPTURE_WITH_VOICE_ON_PRESS_ICON;
1362 *file_path = CAPTURE_WITH_VOICE_ON_NORMAL_ICON;
1365 if (state == BUTTON_STATE_PRESS)
1366 *file_path = CAPTURE_WITH_VOICE_OFF_PRESS_ICON;
1368 *file_path = CAPTURE_WITH_VOICE_OFF_NORMAL_ICON;
1371 *text = "Capture with voice";
1373 if (state != BUTTON_STATE_DIM)
1374 *func = __shortcuts_capture_voice_popup_cb;
1377 case CAM_MENU_GPS_TAG: {
1378 if (ad->camapp_handle->gps) {
1379 if (state == BUTTON_STATE_PRESS)
1380 *file_path = GPS_ON_PRESS_ICON;
1382 *file_path = GPS_ON_NORMAL_ICON;
1385 if (state == BUTTON_STATE_PRESS)
1386 *file_path = GPS_OFF_PRESS_ICON;
1388 *file_path = GPS_OFF_NORMAL_ICON;
1391 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG");
1393 if (state != BUTTON_STATE_DIM)
1394 *func = __shortcuts_gps_tag_popup_cb;
1397 case CAM_MENU_SAVE_AS_FLIP: {
1398 if (ad->camapp_handle->save_as_flip) {
1399 if (state == BUTTON_STATE_PRESS)
1400 *file_path = SAVE_AS_FLIP_ON_PRESS_ICON;
1402 *file_path = SAVE_AS_FLIP_ON_NORMAL_ICON;
1405 if (state == BUTTON_STATE_PRESS)
1406 *file_path = SAVE_AS_FLIP_OFF_PRESS_ICON;
1408 *file_path = SAVE_AS_FLIP_OFF_NORMAL_ICON;
1411 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED");
1413 if (state != BUTTON_STATE_DIM)
1414 *func = __shortcuts_save_as_flip_cb;
1417 case CAM_MENU_STORAGE: {
1418 *file_path = __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), state);
1419 *text = dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE");
1421 if (state != BUTTON_STATE_DIM)
1422 *func = __shortcuts_storage_popup_cb;
1425 case CAM_MENU_RESET: {
1426 if (state == BUTTON_STATE_PRESS)
1427 *file_path = RESET_SETTING_PRESS_ICON;
1429 *file_path = RESET_SETTING_NORMAL_ICON;
1431 *text = dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET");
1433 if (state != BUTTON_STATE_DIM)
1434 *func = __shortcuts_reset_popup_cb;
1442 static void __toolbar_menu_icon_update(struct appdata *ad)
1444 cam_ret_if(ad == NULL);
1446 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1447 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1451 static void __toolbar_menu_item_unswallow(struct appdata *ad)
1453 cam_ret_if(ad == NULL);
1454 cam_ret_if(ad->toolbar_edje == NULL);
1457 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1458 char buf[32 + 1] = {'\0', };
1459 snprintf(buf, 32, "toolbar_%d_icon", i);
1460 elm_object_part_content_unset(ad->toolbar_edje, buf);
1464 static void __toolbar_menu_item_destroy(struct appdata *ad)
1466 cam_ret_if(ad == NULL);
1467 __toolbar_menu_item_unswallow(ad);
1468 Evas_Object *icon = NULL;
1470 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1471 icon = ad->toolbar_menu_arrays[i].icon;
1472 DEL_EVAS_OBJECT(icon);
1473 ad->toolbar_menu_arrays[i].icon = NULL;
1477 static void __toolbar_menu_item_swallow(struct appdata *ad)
1479 cam_ret_if(ad == NULL);
1480 cam_ret_if(ad->toolbar_edje == NULL);
1482 Evas_Object *icon = NULL;
1484 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1485 icon = ad->toolbar_menu_arrays[i].icon;
1486 char buf[32 + 1] = {'\0', };
1487 snprintf(buf, 32, "toolbar_%d_icon", i);
1488 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1493 static int __toolbar_menu_item_create(struct appdata *ad)
1496 cam_retv_if(ad == NULL, -1);
1497 CamAppData *camapp = ad->camapp_handle;
1498 cam_retv_if(camapp == NULL, -1);
1500 Evas_Object *icon = NULL;
1501 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
1504 icon = elm_image_add(ad->toolbar_edje);
1505 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
1507 elm_object_part_content_set(ad->toolbar_edje, "toolbar_0_icon", icon);
1508 ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon = icon;
1512 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1513 icon = ad->toolbar_menu_arrays[i].icon;
1515 icon = elm_image_add(ad->toolbar_edje);
1517 char buf[32 + 1] = {'\0', };
1518 snprintf(buf, 32, "toolbar_%d_icon", i);
1519 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1520 ad->toolbar_menu_arrays[i].icon = icon;
1525 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state)
1527 cam_retm_if(ad == NULL, "appdata is null");
1529 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1530 __update_menu_bar_shortcuts_state_by_index(ad, ad->toolbar_menu_arrays[i].menu_type, state);
1532 if(state == TOOLBAR_ITEM_STATE_DIM) { //it don't make dimming in edje
1533 Evas_Object *icon = NULL;
1534 int menubar_no = __get_menubar_no_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1535 cam_retm_if(menubar_no == CAM_MENU_BAR_LEFT_INVALID, "invalid menubar no");
1537 icon = ad->toolbar_menu_arrays[menubar_no].icon;
1540 evas_object_color_set(icon, 255, 255, 255, 77); // set opacity 30%
1545 static void __toolbar_menu_item_reset(struct appdata *ad)
1547 cam_retm_if(ad == NULL, "appdata is null");
1549 __toolbar_menu_item_destroy(ad);
1550 __toolbar_menu_item_create(ad);
1552 ad->toolbar_menu_arrays[1].menu_type = CAM_MENU_EMPTY;
1553 ad->toolbar_menu_arrays[2].menu_type = CAM_MENU_EMPTY;
1555 if (cam_mm_is_support_front_camera() == TRUE)
1556 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_SELF_PORTRAIT;
1558 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_EMPTY;
1560 #ifdef CAMERA_MACHINE_I686
1561 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_EMPTY;
1563 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_FLASH;
1566 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
1568 cam_toolbar_menu_config_update(ad);
1571 static void __toolbar_shutter_button_unset(struct appdata *ad)
1573 cam_ret_if(ad == NULL);
1574 cam_ret_if(ad->toolbar_edje == NULL);
1576 elm_object_part_content_unset(ad->toolbar_edje, "shutter_button");
1579 static void __toolbar_shutter_button_destroy(struct appdata *ad)
1581 cam_ret_if(ad == NULL);
1583 if (ad->shutterbtn) {
1584 __toolbar_shutter_button_unset(ad);
1585 if (ad->shutterbtn_camera_icon) {
1586 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1587 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1589 DEL_EVAS_OBJECT(ad->shutterbtn)
1593 static void __toolbar_shutter_button_set(struct appdata *ad)
1595 cam_ret_if(ad == NULL);
1596 cam_ret_if(ad->toolbar_edje == NULL);
1597 cam_ret_if(ad->shutterbtn == NULL);
1599 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", ad->shutterbtn);
1602 static int __toolbar_shutter_button_create(struct appdata *ad)
1605 cam_retv_if(ad == NULL, -1);
1606 Evas_Object *edje = NULL;
1607 if (ad->shutterbtn) {
1608 if (ad->shutterbtn_camera_icon) {
1609 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1610 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1612 DEL_EVAS_OBJECT(ad->shutterbtn)
1614 ad->shutterbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "shutter_button");
1615 edje = ad->shutterbtn;
1616 cam_retv_if(edje == NULL, -1);
1618 ad->shutterbtn_camera_icon = elm_image_add(edje);
1619 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1620 elm_object_part_content_set(edje, "camera_icon", ad->shutterbtn_camera_icon);
1622 edje_object_signal_callback_del(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb);
1623 edje_object_signal_callback_add(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb, ad);
1625 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", edje);
1626 evas_object_show(edje);
1629 return EXIT_SUCCESS;
1632 void cam_toolbar_update_shutter_button(struct appdata *ad, ToolbarItemState state)
1634 __toolbar_shutter_button_update(ad, state);
1637 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state)
1639 cam_ret_if(ad == NULL);
1640 CamAppData *camapp = ad->camapp_handle;
1641 cam_ret_if(camapp == NULL);
1643 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1644 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "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_PRESS) {
1648 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
1649 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
1650 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1651 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1652 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,dim", "prog");
1653 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,dim", "prog");
1654 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON_DIM);
1655 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1656 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,invisible", "prog");
1657 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,invisible", "prog");
1659 DEBUG_TRACE("Invalid state for shutter button");
1663 static void __toolbar_recording_button_unset(struct appdata *ad)
1665 cam_ret_if(ad == NULL);
1666 cam_ret_if(ad->toolbar_edje == NULL);
1668 elm_object_part_content_unset(ad->toolbar_edje, "recording_button");
1671 static void __toolbar_recording_button_destroy(struct appdata *ad)
1673 cam_ret_if(ad == NULL);
1675 __toolbar_recording_button_unset(ad);
1676 DEL_EVAS_OBJECT(ad->recordingbtn);
1679 static void __toolbar_recording_button_set(struct appdata *ad)
1681 cam_ret_if(ad == NULL);
1682 cam_ret_if(ad->toolbar_edje == NULL);
1683 cam_ret_if(ad->recordingbtn == NULL);
1685 elm_object_part_content_set(ad->toolbar_edje, "recording_button", ad->recordingbtn);
1688 static int __toolbar_recording_button_create(struct appdata *ad)
1691 cam_retv_if(ad == NULL, -1);
1692 Evas_Object *edje = NULL;
1693 DEL_EVAS_OBJECT(ad->recordingbtn);
1694 ad->recordingbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_button");
1695 edje = ad->recordingbtn;
1696 cam_retv_if(edje == NULL, -1);
1698 edje_object_signal_callback_del(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb);
1699 edje_object_signal_callback_add(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb, ad);
1700 elm_object_part_content_set(ad->toolbar_edje, "recording_button", edje);
1701 evas_object_show(edje);
1704 return EXIT_SUCCESS;
1707 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state)
1709 cam_ret_if(ad == NULL);
1710 CamAppData *camapp = ad->camapp_handle;
1711 cam_ret_if(camapp == NULL);
1712 cam_ret_if(ad->recordingbtn == NULL);
1714 int recording_state = 0;
1716 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1717 recording_state = cam_mm_get_state();
1719 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (recording_state == RECORDER_STATE_RECORDING)) {
1720 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1721 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
1723 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
1724 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,invisible", "prog");
1727 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1728 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,dim", "prog");
1729 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1730 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1732 DEBUG_TRACE("Invalid state for recording button");
1736 static void __toolbar_recording_stop_button_unset(struct appdata *ad)
1738 cam_ret_if(ad == NULL);
1739 cam_ret_if(ad->toolbar_edje == NULL);
1741 elm_object_part_content_unset(ad->toolbar_edje, "recording_stop_button");
1744 static void __toolbar_recording_stop_button_destroy(struct appdata *ad)
1746 cam_ret_if(ad == NULL);
1748 __toolbar_recording_stop_button_unset(ad);
1749 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1752 static void __toolbar_recording_stop_button_set(struct appdata *ad)
1754 cam_ret_if(ad == NULL);
1755 cam_ret_if(ad->toolbar_edje == NULL);
1756 cam_ret_if(ad->recording_stop_btn == NULL);
1758 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", ad->recording_stop_btn);
1761 static int __toolbar_recording_stop_button_create(struct appdata *ad)
1764 cam_retv_if(ad == NULL, -1);
1765 Evas_Object *edje = NULL;
1766 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1767 ad->recording_stop_btn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_stop_button");
1768 edje = ad->recording_stop_btn;
1769 cam_retv_if(edje == NULL, -1);
1771 edje_object_signal_callback_del(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb);
1772 edje_object_signal_callback_add(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb, ad);
1773 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", edje);
1774 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
1775 evas_object_show(edje);
1778 return EXIT_SUCCESS;
1781 static void __toolbar_quickview_item_unset(struct appdata *ad)
1783 cam_ret_if(ad == NULL);
1784 cam_ret_if(ad->toolbar_edje == NULL);
1786 elm_object_part_content_unset(ad->toolbar_edje, "quickview_item");
1789 static void __toolbar_quickview_item_destroy(struct appdata *ad)
1791 cam_ret_if(ad == NULL);
1793 __toolbar_quickview_item_unset(ad);
1794 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.edje);
1797 static void __toolbar_quickview_item_set(struct appdata *ad)
1799 cam_ret_if(ad == NULL);
1800 cam_ret_if(ad->toolbar_edje == NULL);
1801 cam_ret_if(ad->toolbar.quickview_item.edje == NULL);
1803 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", ad->toolbar.quickview_item.edje);
1806 static int __toolbar_quickview_item_create(struct appdata *ad)
1809 cam_retv_if(ad == NULL, -1);
1810 Evas_Object *edje = NULL;
1812 if (ad->toolbar.quickview_item.edje == NULL) {
1813 ad->toolbar.quickview_item.edje =
1814 cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_quickview_item");
1815 edje_object_signal_callback_del(_EDJ(ad->toolbar.quickview_item.edje),
1816 "*", "toolbar_signal", __toolbar_quickview_cb);
1817 edje_object_signal_callback_add(_EDJ(ad->toolbar.quickview_item.edje),
1818 "*", "toolbar_signal", __toolbar_quickview_cb, ad);
1820 edje = ad->toolbar.quickview_item.edje;
1822 cam_retv_if(edje == NULL, -1);
1823 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", edje);
1824 evas_object_show(edje);
1826 return EXIT_SUCCESS;
1829 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state)
1831 cam_ret_if(ad == NULL);
1833 Evas_Object *edje = NULL;
1834 edje = ad->toolbar.quickview_item.edje;
1836 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1837 edje_object_signal_emit(_EDJ(edje), "SET_DEFAULT", "prog");
1838 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1839 edje_object_signal_emit(_EDJ(edje), "SET_INVISIBLE", "prog");
1841 DEBUG_TRACE("Invalid state for quickview button");
1845 static int __toolbar_backbutton_create(struct appdata *ad)
1847 DEBUG_TRACE("START");
1848 cam_retv_if(ad == NULL, -1);
1849 Evas_Object *edje = NULL;
1850 if (ad->backbtn == NULL) {
1851 ad->backbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_backbutton_item");
1852 edje_object_signal_callback_del(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb);
1853 edje_object_signal_callback_add(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb, ad);
1857 cam_retv_if(edje == NULL, -1);
1858 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", edje);
1859 evas_object_show(edje);
1861 return EXIT_SUCCESS;
1864 static void __toolbar_backbutton_unset(struct appdata *ad)
1866 cam_ret_if(ad == NULL);
1867 cam_ret_if(ad->toolbar_edje == NULL);
1869 elm_object_part_content_unset(ad->toolbar_edje, "backbutton_item");
1872 static void __toolbar_backbutton_destroy(struct appdata *ad)
1874 cam_ret_if(ad == NULL);
1876 __toolbar_backbutton_unset(ad);
1877 DEL_EVAS_OBJECT(ad->backbtn);
1880 static void __toolbar_backbutton_set(struct appdata *ad)
1882 cam_ret_if(ad == NULL);
1883 cam_ret_if(ad->toolbar_edje == NULL);
1884 cam_ret_if(ad->backbtn == NULL);
1886 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", ad->backbtn);
1890 static void __toolbar_cafbutton_unset(struct appdata *ad)
1892 cam_ret_if(ad == NULL);
1893 cam_ret_if(ad->toolbar_edje == NULL);
1895 elm_object_part_content_unset(ad->toolbar_edje, "cafbutton_item");
1898 static void __toolbar_cafbutton_destroy(struct appdata *ad)
1900 cam_ret_if(ad == NULL);
1901 __toolbar_cafbutton_unset(ad);
1902 DEL_EVAS_OBJECT(ad->caf_button);
1905 static void __toolbar_cafbutton_set(struct appdata *ad)
1907 cam_ret_if(ad == NULL);
1908 cam_ret_if(ad->toolbar_edje == NULL);
1909 cam_ret_if(ad->caf_button == NULL);
1911 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1914 static int __toolbar_cafbutton_create(struct appdata *ad)
1916 DEBUG_TRACE("START");
1917 cam_retvm_if(ad == NULL, -1, "appdata is null");
1918 if (ad->caf_button == NULL) {
1919 ad->caf_button = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_cafbutton_item");
1921 cam_retvm_if(ad->caf_button == NULL, -1, "ad->caf_button is null");
1923 edje_object_signal_callback_del(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb);
1924 edje_object_signal_callback_add(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb, ad);
1926 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1927 evas_object_show(ad->caf_button);
1929 return EXIT_SUCCESS;
1932 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state)
1934 cam_retm_if(ad == NULL, "appdata is null");
1935 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1937 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1938 show_caf_button = TRUE;
1939 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,normal", "prog");
1940 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1941 show_caf_button = FALSE;
1942 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,invisible", "prog");
1944 show_caf_button = FALSE;
1945 DEBUG_TRACE("Invalid state for caf_button");
1949 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state)
1951 cam_retm_if(ad == NULL, "appdata is null");
1952 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1954 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1955 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,show", "prog");
1956 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1957 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,hide", "prog");
1959 DEBUG_TRACE("Invalid state for caf_button");
1963 #define SETTING_SHORTCUTS_HOLD_TIME (0.5)
1964 static Ecore_Timer *edit_shortcuts_timer = NULL;
1965 static Eina_Bool __toolbar_show_edit_shortcuts_timer_cb(void *data)
1967 struct appdata *ad = (struct appdata *)data;
1968 cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
1969 if (edit_shortcuts_timer) {
1970 edit_shortcuts_timer = NULL;
1972 toolbar_create_shortcuts_popup(ad);
1973 return ECORE_CALLBACK_CANCEL;
1976 static void __toolbar_create_show_edit_shortcuts_timer(void *data)
1978 struct appdata *ad = (struct appdata *)data;
1979 cam_ret_if(ad == NULL);
1980 if (edit_shortcuts_timer) {
1981 ecore_timer_del(edit_shortcuts_timer);
1982 edit_shortcuts_timer = NULL;
1984 edit_shortcuts_timer = ecore_timer_add(SETTING_SHORTCUTS_HOLD_TIME,
1985 __toolbar_show_edit_shortcuts_timer_cb,
1989 static void __toolbar_destroy_show_edit_shortcuts_timer(void)
1991 if (edit_shortcuts_timer) {
1992 ecore_timer_del(edit_shortcuts_timer);
1993 edit_shortcuts_timer = NULL;
1997 static void __toolbar_edje_signal_cb(void *data, Evas_Object *o,
1998 const char *emission, const char *source)
2000 DEBUG_TRACE("_________________################____________________\n");
2002 struct appdata *ad = (struct appdata *)data;
2003 cam_ret_if(ad == NULL);
2004 cam_app_timeout_checker_update();
2005 DEBUG_TRACE("ad->is_rotating = %d", ad->is_rotating);
2006 if (ad->is_rotating == TRUE) {
2007 DEBUG_TRACE("now in rotating target, do not accept signal");
2010 CamAppData *camapp = ad->camapp_handle;
2011 cam_ret_if(camapp == NULL);
2012 cam_ret_if(emission == NULL);
2013 cam_ret_if(source == NULL);
2016 unload_zoom_edje(ad);
2022 cam_tip_popup_destroy(ad);
2024 if (ad->edit_shortcuts_popup) {
2025 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2029 if(ad->battery_status == LOW_BATTERY_CRITICAL_STATUS)
2032 if (emission && source)
2033 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
2035 Evas_Object_Event_Cb func = NULL;
2037 if (strcmp(emission, "toolbar_0_press_sig") == 0) {
2038 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_PRESS_ICON);
2039 __toolbar_create_show_edit_shortcuts_timer(ad);
2040 } else if (strcmp(emission, "toolbar_0_release_sig") == 0) {
2041 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2042 __toolbar_destroy_show_edit_shortcuts_timer();
2043 } else if (strcmp(emission, "toolbar_0_click_sig") == 0) {
2044 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2046 if (ad->toolbar_setting_popup) {
2047 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2048 cam_toolbar_setting_popup_destroy(ad);
2051 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2052 cam_toolbar_setting_popup_create(ad);
2053 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2054 } else if (strcmp(emission, "toolbar_1_press_sig") == 0) {
2055 Evas_Object *icon = NULL;
2057 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2058 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2059 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2060 __toolbar_create_show_edit_shortcuts_timer(ad);
2061 } else if (strcmp(emission, "toolbar_1_release_sig") == 0) {
2062 Evas_Object *icon = NULL;
2064 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2065 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2066 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2067 __toolbar_destroy_show_edit_shortcuts_timer();
2068 } else if (strcmp(emission, "toolbar_1_click_sig") == 0) {
2069 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2071 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2072 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2073 if (menu_bar_no == CAM_MENU_BAR_LEFT_1) {
2074 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2075 cam_toolbar_setting_popup_destroy(ad);
2078 if (ad->toolbar_setting_popup) {
2079 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2080 cam_toolbar_setting_popup_destroy(ad);
2083 Evas_Object *icon = NULL;
2085 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2086 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2087 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2089 (*func)((void *)ad, NULL, o, NULL);
2091 } else if (strcmp(emission, "toolbar_2_press_sig") == 0) {
2092 Evas_Object *icon = NULL;
2094 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2095 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2096 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2097 __toolbar_create_show_edit_shortcuts_timer(ad);
2098 } else if (strcmp(emission, "toolbar_2_release_sig") == 0) {
2099 Evas_Object *icon = NULL;
2101 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2102 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2103 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2104 __toolbar_destroy_show_edit_shortcuts_timer();
2105 } else if (strcmp(emission, "toolbar_2_click_sig") == 0) {
2106 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2108 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2109 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2110 if (menu_bar_no == CAM_MENU_BAR_LEFT_2) {
2111 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2112 cam_toolbar_setting_popup_destroy(ad);
2115 if (ad->toolbar_setting_popup) {
2116 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2117 cam_toolbar_setting_popup_destroy(ad);
2119 Evas_Object *icon = NULL;
2121 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2122 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2123 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2125 (*func)((void *)ad, NULL, o, NULL);
2127 } else if (strcmp(emission, "toolbar_3_press_sig") == 0) {
2128 Evas_Object *icon = NULL;
2130 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2131 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2132 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2133 __toolbar_create_show_edit_shortcuts_timer(ad);
2134 } else if (strcmp(emission, "toolbar_3_release_sig") == 0) {
2135 Evas_Object *icon = NULL;
2137 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2138 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2139 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2140 __toolbar_destroy_show_edit_shortcuts_timer();
2141 } else if (strcmp(emission, "toolbar_3_click_sig") == 0) {
2142 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2144 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2145 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2146 if (menu_bar_no == CAM_MENU_BAR_LEFT_3) {
2147 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2148 cam_toolbar_setting_popup_destroy(ad);
2151 if (ad->toolbar_setting_popup) {
2152 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2153 cam_toolbar_setting_popup_destroy(ad);
2155 Evas_Object *icon = NULL;
2157 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2158 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2159 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2161 (*func)((void *)ad, NULL, o, NULL);
2163 } else if (strcmp(emission, "toolbar_4_press_sig") == 0) {
2164 Evas_Object *icon = NULL;
2166 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2167 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2168 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2169 __toolbar_create_show_edit_shortcuts_timer(ad);
2170 } else if (strcmp(emission, "toolbar_4_release_sig") == 0) {
2171 Evas_Object *icon = NULL;
2173 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2174 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2175 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2176 __toolbar_destroy_show_edit_shortcuts_timer();
2177 } else if (strcmp(emission, "toolbar_4_click_sig") == 0) {
2178 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2180 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2181 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2182 if (menu_bar_no == CAM_MENU_BAR_LEFT_4) {
2183 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2184 cam_toolbar_setting_popup_destroy(ad);
2187 if (ad->toolbar_setting_popup) {
2188 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2189 cam_toolbar_setting_popup_destroy(ad);
2191 Evas_Object *icon = NULL;
2193 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2194 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2195 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2197 (*func)((void *)ad, NULL, o, NULL);
2200 DEBUG_TRACE("invalid signal");
2204 int cam_toolbar_create(struct appdata *ad)
2207 cam_retv_if(ad == NULL, -1);
2208 CamAppData *cam_handle = ad->camapp_handle;
2209 cam_retv_if(cam_handle == NULL, -1);
2211 elm_object_part_content_unset(ad->ug_base, "toolbar_layout");
2213 /*note: create layout*/
2214 switch (ad->target_direction) {
2215 case CAM_TARGET_DIRECTION_LANDSCAPE:
2216 if (ad->toolbar_edje_landscape == NULL) {
2217 ad->toolbar_edje_landscape = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2218 cam_retv_if(ad->toolbar_edje_landscape == NULL, -1);
2220 ad->toolbar_edje = ad->toolbar_edje_landscape;
2222 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2223 if (ad->toolbar_edje_landscape_inverse == NULL) {
2224 ad->toolbar_edje_landscape_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2225 cam_retv_if(ad->toolbar_edje_landscape_inverse == NULL, -1);
2227 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2229 case CAM_TARGET_DIRECTION_PORTRAIT:
2230 if (ad->toolbar_edje_portrait == NULL) {
2231 ad->toolbar_edje_portrait = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2232 cam_retv_if(ad->toolbar_edje_portrait == NULL, -1);
2234 ad->toolbar_edje = ad->toolbar_edje_portrait;
2236 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2237 if (ad->toolbar_edje_portrait_inverse == NULL) {
2238 ad->toolbar_edje_portrait_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2239 cam_retv_if(ad->toolbar_edje_portrait_inverse == NULL, -1);
2241 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2244 DEBUG_TRACE("note: run into un-reached codes");
2246 cam_retv_if(ad->toolbar_edje == NULL, -1);
2248 elm_object_part_content_set(ad->ug_base, "toolbar_layout", ad->toolbar_edje);
2250 __toolbar_menu_item_create(ad);
2252 elm_object_signal_callback_del(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb);
2253 elm_object_signal_callback_add(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb, ad);
2255 __toolbar_shutter_button_create(ad);
2256 __toolbar_recording_button_create(ad);
2258 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL)
2259 __toolbar_quickview_item_create(ad);
2261 __toolbar_backbutton_create(ad);
2262 __toolbar_cafbutton_create(ad);
2264 cam_toolbar_update(ad);
2266 return EXIT_SUCCESS;
2269 void cam_toolbar_content_destroy(struct appdata *ad)
2271 cam_retm_if(ad == NULL, "appdata is NULL");
2272 __toolbar_menu_item_destroy(ad);
2273 __toolbar_shutter_button_destroy(ad);
2274 __toolbar_recording_button_destroy(ad);
2275 __toolbar_recording_stop_button_destroy(ad);
2276 __toolbar_quickview_item_destroy(ad);
2277 __toolbar_backbutton_destroy(ad);
2278 __toolbar_cafbutton_destroy(ad);
2281 void cam_toolbar_destroy(struct appdata *ad)
2283 cam_retm_if(ad == NULL, "appdata is NULL");
2284 cam_toolbar_content_destroy(ad);
2285 /*NOTE: all sub obj of toolbar will be deleted auto while toolar is deleted*/
2286 edje_object_signal_callback_del(_EDJ(ad->toolbar_edje), "*", "toolbar_signal", __toolbar_edje_signal_cb);
2287 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape);
2288 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape_inverse);
2289 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait);
2290 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait_inverse);
2292 ad->toolbar_edje = NULL;
2294 REMOVE_TIMER(ad->setting_toolbar_hide_timer);
2296 /*elm_all_flush();*/
2297 cam_elm_cache_flush();
2300 void cam_toolbar_update(struct appdata *ad)
2303 cam_retm_if(ad == NULL, "appdata is NULL");
2304 CamAppData *camapp = ad->camapp_handle;
2305 cam_retm_if(camapp == NULL, "camapp is NULL");
2306 CamShotMode shotmode = camapp->shooting_mode;
2308 __toolbar_menu_icon_update(ad);
2310 if (ad->timer_activated) {
2311 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2312 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2314 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2315 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2316 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2318 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2319 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2322 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2323 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2326 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2328 case CAM_SINGLE_MODE:
2329 case CAM_SELF_SINGLE_MODE:
2330 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2332 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL){
2333 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2334 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2335 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2337 if (cam_is_enabled_menu(ad, CAM_MENU_BURST_SHOT_MODE)
2338 && camapp->continuous_shot_data
2339 && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING) {
2340 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_DIM);
2341 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_PRESS);
2342 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2344 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2345 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2346 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2349 __toolbar_recording_stop_button_destroy(ad);
2351 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2352 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2357 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2358 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2359 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2360 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2361 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2362 __toolbar_recording_stop_button_destroy(ad);
2363 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2367 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2369 if (ad->is_recording) {
2370 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2371 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2373 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2375 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2376 __toolbar_recording_stop_button_create(ad);
2378 if (show_caf_button)
2379 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2381 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2382 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2385 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2386 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2388 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL){
2389 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2391 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2394 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2395 __toolbar_recording_stop_button_destroy(ad);
2397 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2399 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2400 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2407 int cam_toolbar_rotate(struct appdata *ad)
2410 cam_retv_if(ad == NULL, -1);
2411 CamAppData *cam_handle = ad->camapp_handle;
2412 cam_retv_if(cam_handle == NULL, -1);
2413 cam_toolbar_setting_popup_destroy(ad);
2414 cam_toolbar_destroy(ad);
2416 switch (ad->target_direction) {
2417 case CAM_TARGET_DIRECTION_LANDSCAPE:
2418 if (ad->toolbar_edje_landscape == NULL) {
2419 cam_toolbar_create(ad);
2421 ad->toolbar_edje = ad->toolbar_edje_landscape;
2423 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2424 if (ad->toolbar_edje_landscape_inverse == NULL) {
2425 cam_toolbar_create(ad);
2427 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2429 case CAM_TARGET_DIRECTION_PORTRAIT:
2430 if (ad->toolbar_edje_portrait == NULL) {
2431 cam_toolbar_create(ad);
2433 ad->toolbar_edje = ad->toolbar_edje_portrait;
2435 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2436 if (ad->toolbar_edje_portrait_inverse == NULL) {
2437 cam_toolbar_create(ad);
2439 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2442 DEBUG_TRACE("note: run into un-reached codes");
2445 evas_object_show(ad->toolbar_edje);
2447 return EXIT_SUCCESS;
2450 int show_toolbar_edje(struct appdata *ad)
2452 cam_retv_if(ad == NULL, -1);
2453 if (ad->toolbar_edje == NULL) {
2456 if (!ad->toolbar_hided) {
2457 cam_toolbar_update(ad);
2458 evas_object_show(ad->toolbar_edje);
2460 hide_toolbar_edje(ad);
2463 return EXIT_SUCCESS;
2466 int hide_toolbar_edje(struct appdata *ad)
2468 cam_retv_if(ad == NULL, -1);
2469 evas_object_hide(ad->toolbar_edje);
2470 return EXIT_SUCCESS;
2473 gboolean toolbar_update_quickview_thumbnail_no_animation(struct appdata *ad)
2475 cam_retv_if(ad == NULL, FALSE);
2476 CamAppData *camapp = ad->camapp_handle;
2477 cam_retv_if(camapp == NULL, FALSE);
2478 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);
2479 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2481 if (camapp->thumbnail_name != NULL) {
2482 ad->toolbar.quickview_item.thumbnail_image = elm_bg_add(ad->toolbar.quickview_item.edje);
2483 cam_retv_if(ad->toolbar.quickview_item.thumbnail_image == NULL, FALSE);
2484 elm_bg_file_set(ad->toolbar.quickview_item.thumbnail_image, camapp->thumbnail_name, NULL);
2486 Evas_Object *layout = elm_layout_edje_get(ad->toolbar.quickview_item.edje);
2487 Evas_Object *thumbnail_area = (Evas_Object *) edje_object_part_object_get(layout, "thumbnail_area");
2488 cam_retv_if(thumbnail_area == NULL, FALSE);
2489 Evas_Coord x = 0, y = 0, w = 0, h = 0;
2490 evas_object_geometry_get(thumbnail_area, &x, &y, &w, &h);
2491 evas_object_resize(ad->toolbar.quickview_item.thumbnail_image, w, h);
2492 DEBUG_TRACE("%d %d %d %d", x, y, w, h);
2494 if (ad->toolbar.quickview_item.edje) {
2495 elm_object_part_content_set(ad->toolbar.quickview_item.edje,
2496 "thumbnail", ad->toolbar.quickview_item.thumbnail_image);
2497 evas_object_show(ad->toolbar.quickview_item.edje);
2505 gboolean toolbar_update_quickview_thumbnail(struct appdata *ad)
2507 cam_retv_if(ad == NULL, FALSE);
2508 CamAppData *camapp = ad->camapp_handle;
2509 cam_retv_if(camapp == NULL, FALSE);
2510 cam_retv_if(ad->evas == NULL, FALSE);
2512 cam_retv_if(ad->toolbar.quickview_item.edje == NULL, FALSE);
2513 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2515 cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL);
2520 static void setting_ctxpopup_destroy(struct appdata *ad)
2522 cam_retm_if(ad == NULL, "appdata is NULL");
2524 DEL_EVAS_OBJECT(ad->sub_menu_group);
2526 if (ad->sub_genlist != NULL) {
2527 elm_genlist_clear(ad->sub_genlist);
2528 evas_object_del(ad->sub_genlist);
2529 ad->sub_genlist = NULL;
2532 DEL_EVAS_OBJECT(ad->setting_ctxpopup);
2533 ad->ctxpopup_area = NULL;
2534 ad->sub_menu_type = CAM_MENU_EMPTY;
2536 if (ad->toolbar_setting_popup == NULL)
2537 __set_show_state_preview_obj(ad, TRUE);
2540 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow)
2542 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2544 if (ad->setting_ctxpopup)
2545 setting_ctxpopup_destroy(ad);
2547 if (ad->toolbar_edje == NULL)
2548 DEBUG_TRACE("error occur");
2550 __set_show_state_preview_obj(ad, FALSE);
2552 ad->ctxpopup_area = (Evas_Object *)
2553 edje_object_part_object_get(elm_layout_edje_get
2554 (ad->toolbar_edje), "popup_area");
2555 ad->setting_ctxpopup = elm_ctxpopup_add(ad->ctxpopup_area);
2556 elm_object_scroll_hold_push(ad->setting_ctxpopup);
2558 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera");
2560 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera_no_arrow");
2561 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2562 return EXIT_SUCCESS;
2565 static int setting_toolbar_popup_create(struct appdata *ad)
2567 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2569 if (ad->setting_ctxpopup)
2570 setting_ctxpopup_destroy(ad);
2572 if (ad->toolbar_edje == NULL)
2573 DEBUG_TRACE("error occur");
2575 ad->toolbar_setting_popup_area = (Evas_Object *)
2576 edje_object_part_object_get(elm_layout_edje_get
2577 (ad->toolbar_edje), "setting_popup");
2578 ad->toolbar_setting_popup = elm_ctxpopup_add(ad->toolbar_setting_popup_area);
2579 elm_object_scroll_hold_push(ad->toolbar_setting_popup);
2580 elm_object_style_set(ad->toolbar_setting_popup, "beat_winset_test/camera");
2581 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2582 return EXIT_SUCCESS;
2585 static int setting_shortcuts_popup_create(struct appdata *ad)
2587 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2589 if (ad->setting_ctxpopup)
2590 setting_ctxpopup_destroy(ad);
2592 if (ad->toolbar_edje == NULL)
2593 DEBUG_TRACE("error occur");
2595 ad->edit_shortcuts_popup = (Evas_Object *)
2596 edje_object_part_object_get(elm_layout_edje_get
2597 (ad->toolbar_edje), "shortcuts_popup");
2599 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
2600 ad->edit_shortcuts_popup_description =
2601 cam_app_load_edj(ad->toolbar_edje, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME,
2602 "camera/shortcuts/layout/description");
2604 /*TODO: need id: IDS_CAM_POP_TAP_AND_HOLD_AN_ICON_AND_MOVE_TO_EDIT_SHORTCUTS*/
2605 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"));
2606 elm_object_scroll_hold_push(ad->edit_shortcuts_popup);
2607 return EXIT_SUCCESS;
2610 int cam_guideline_create(struct appdata *ad)
2612 cam_retv_if(ad == NULL, -1);
2613 cam_retv_if(ad->camapp_handle == NULL, -1);
2615 DEL_EVAS_OBJECT(ad->guideline_edje);
2616 elm_object_part_content_unset(ad->ug_base, "guideline_layout");
2618 if (ad->guideline_edje == NULL) {
2619 ad->guideline_edje = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, "guideline");
2622 cam_retv_if(ad->guideline_edje == NULL, -1);
2623 elm_object_part_content_set(ad->ug_base, "guideline_layout", ad->guideline_edje);
2625 gboolean wide_mode = FALSE;
2630 ret = cam_mm_get_video_size(&p_width, &p_height);
2633 DEBUG_TRACE("Middle Ware error occur!");
2637 DEBUG_TRACE("p_width == %d ,p_height = %d" ,p_width , p_height);
2638 if (ad->camapp_handle->camera_mode == CAM_CAMERA_MODE) {
2639 wide_mode = cam_utils_check_wide_resolution(p_width, p_height);
2640 } else if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE) {
2641 if ( p_width > PREVIEW_W ) {
2648 if (p_width == 1392 && p_height == 1392) {
2649 switch (ad->target_direction) {
2650 case CAM_TARGET_DIRECTION_LANDSCAPE:
2651 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2652 DEBUG_TRACE("landscape");
2653 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2654 "guide_line,1,2,normal", "prog_guideline");
2655 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2656 "guide_line,3,4,square", "prog_guideline");
2658 case CAM_TARGET_DIRECTION_PORTRAIT:
2659 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2660 DEBUG_TRACE("portrait");
2661 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2662 "guide_line,1,2,vertical,square", "prog_guideline");
2663 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2664 "guide_line,3,4,vertical,normal", "prog_guideline");
2669 DEBUG_TRACE("hor,wide_mode");
2670 switch (ad->target_direction) {
2671 case CAM_TARGET_DIRECTION_LANDSCAPE:
2672 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2673 DEBUG_TRACE("landscape");
2674 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2675 "guide_line,1,2,normal", "prog_guideline");
2676 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2677 "guide_line,3,4,wide", "prog_guideline");
2679 case CAM_TARGET_DIRECTION_PORTRAIT:
2680 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2681 DEBUG_TRACE("portrait");
2682 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2683 "guide_line,1,2,vertical,wide", "prog_guideline");
2684 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2685 "guide_line,3,4,vertical,normal", "prog_guideline");
2690 DEBUG_TRACE("hor,normal mode");
2691 switch (ad->target_direction) {
2692 case CAM_TARGET_DIRECTION_LANDSCAPE:
2693 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2694 DEBUG_TRACE("landscape");
2695 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2696 "guide_line,1,2,normal", "prog_guideline");
2697 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2698 "guide_line,3,4,normal", "prog_guideline");
2700 case CAM_TARGET_DIRECTION_PORTRAIT:
2701 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2702 DEBUG_TRACE("portrait");
2703 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2704 "guide_line,1,2,vertical,normal", "prog_guideline");
2705 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2706 "guide_line,3,4,vertical,normal", "prog_guideline");
2712 /*evas_object_lower(ad->guideline_edje);*/
2713 evas_object_show(ad->guideline_edje);
2715 DEBUG_TRACE("over");
2719 static void __volume_key_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2721 cam_retm_if(obj == NULL, "obj is NULL");
2722 struct appdata *ad = (struct appdata *)cam_appdata_get();
2723 cam_retm_if(ad == NULL, "appdata is NULL");
2730 case CAM_MENU_VOLUME_KEY_ZOOM:
2732 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_ZOOM);
2733 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2736 case CAM_MENU_VOLUME_KEY_SHUTTER:
2738 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_SHUTTER);
2739 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2746 evas_object_show(ad->toolbar_setting_popup);
2747 if (ad->setting_select_item)
2748 elm_genlist_item_update(ad->setting_select_item);
2749 __update_menubar_icon_by_index(ad, CAM_MENU_VOLUME_KEY);
2751 setting_ctxpopup_destroy(ad);
2752 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2755 static void __storage_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2757 cam_retm_if(obj == NULL, "obj is NULL");
2758 struct appdata *ad = (struct appdata *)cam_appdata_get();
2759 cam_retm_if(ad == NULL, "appdata is NULL");
2767 case CAM_MENU_STORAGE_PHONE:
2769 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2770 cam_handle_value_set(ad, PROP_STORAGE, &value);
2773 case CAM_MENU_STORAGE_MMC:
2775 if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
2776 if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
2780 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2781 cam_handle_value_set(ad, PROP_STORAGE, &value);
2782 cam_info(LOG_UI, "MMC card is removed");
2783 cam_storage_warning_popup();
2785 CAM_GVALUE_SET_INT(value, CAM_STORAGE_EXTERNAL);
2786 cam_handle_value_set(ad, PROP_STORAGE, &value);
2795 evas_object_show(ad->toolbar_setting_popup);
2796 if (ad->setting_select_item)
2797 elm_genlist_item_update(ad->setting_select_item);
2798 __update_menubar_icon_by_index(ad, CAM_MENU_STORAGE);
2800 setting_ctxpopup_destroy(ad);
2801 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2804 static void __wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
2806 cam_retm_if(obj == NULL, "obj is NULL");
2807 struct appdata *ad = (struct appdata *)cam_appdata_get();
2808 cam_retm_if(ad == NULL, "appdata is NULL");
2812 int wb = cam_convert_menu_item_to_mmfw_value((int)data);
2815 if (ad->camapp_handle->white_balance != wb) {
2817 CAM_GVALUE_SET_INT(value, wb);
2818 cam_handle_value_set(ad, PROP_WB, &value);
2820 evas_object_show(ad->toolbar_setting_popup);
2821 if (ad->setting_select_item)
2822 elm_genlist_item_update(ad->setting_select_item);
2823 __update_menubar_icon_by_index(ad, CAM_MENU_WHITE_BALANCE);
2825 setting_ctxpopup_destroy(ad);
2826 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2829 static void __iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
2831 cam_retm_if(obj == NULL, "obj is NULL");
2832 struct appdata *ad = (struct appdata *)cam_appdata_get();
2833 cam_retm_if(ad == NULL, "appdata is NULL");
2837 int iso = cam_convert_menu_item_to_mmfw_value((int)data);
2840 if (ad->camapp_handle->iso != iso) {
2842 CAM_GVALUE_SET_INT(value, iso);
2843 cam_handle_value_set(ad, PROP_ISO, &value);
2845 evas_object_show(ad->toolbar_setting_popup);
2846 if (ad->setting_select_item)
2847 elm_genlist_item_update(ad->setting_select_item);
2848 __update_menubar_icon_by_index(ad, CAM_MENU_ISO);
2850 setting_ctxpopup_destroy(ad);
2851 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2853 static void __metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
2855 cam_retm_if(obj == NULL, "obj is NULL");
2856 struct appdata *ad = (struct appdata *)cam_appdata_get();
2857 cam_retm_if(ad == NULL, "appdata is NULL");
2861 int metering = cam_convert_menu_item_to_mmfw_value((int)data);
2863 /* set metering value */
2864 if (ad->camapp_handle->auto_exposure != metering) {
2866 CAM_GVALUE_SET_INT(value, metering);
2867 cam_handle_value_set(ad, PROP_METERING, &value);
2869 evas_object_show(ad->toolbar_setting_popup);
2870 if (ad->setting_select_item)
2871 elm_genlist_item_update(ad->setting_select_item);
2872 __update_menubar_icon_by_index(ad, CAM_MENU_METERING);
2874 setting_ctxpopup_destroy(ad);
2875 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2878 static void __timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
2880 cam_retm_if(obj == NULL, "obj is NULL");
2881 struct appdata *ad = (struct appdata *)cam_appdata_get();
2882 cam_retm_if(ad == NULL, "appdata is NULL");
2886 int index = (int)data - CAM_MENU_TIMER_OFF;
2887 DEBUG_TRACE("index : [%d]", index);
2888 cam_ret_if(index < 0 || index >= CAM_SETTINGS_TIMER_NUMS);
2890 /* set timer value */
2891 if (ad->camapp_handle->timer != index) {
2893 CAM_GVALUE_SET_INT(value, index);
2894 cam_handle_value_set(ad, PROP_TIMER, &value);/*set ad->camapp_handle->timer*/
2895 evas_object_show(ad->toolbar_setting_popup);
2896 if (ad->setting_select_item)
2897 elm_genlist_item_update(ad->setting_select_item);
2898 __update_menubar_icon_by_index(ad, CAM_MENU_TIMER);
2901 setting_ctxpopup_destroy(ad);
2902 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2905 static void __reset_settings_launch(void)
2907 GValue i_value = { 0, };
2908 GValue b_value = { 0, };
2909 struct appdata *ad = (struct appdata *)cam_appdata_get();
2910 CamAppData *camapp = NULL;
2912 cam_debug(LOG_CAM, "!!!!!!!!!cam_app_reset_settings_launch_cb");
2914 cam_retm_if(ad == NULL, " appdata is NULL");
2915 camapp = ad->camapp_handle;
2916 cam_retm_if(camapp == NULL, " cam_handle is NULL");
2918 g_value_init(&i_value, G_TYPE_INT);
2919 g_value_init(&b_value, G_TYPE_BOOLEAN);
2921 camapp->device_type = CAM_DEVICE_MEGA;
2924 g_value_set_int(&i_value, SHOTMODE_DEFAULT);
2925 cam_handle_value_set(ad, PROP_SHOT_MODE, &i_value);
2928 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
2929 && ad->exe_args->size_limit > 0) {
2930 g_value_set_int(&i_value, CAM_RECORD_MMS);
2932 g_value_set_int(&i_value, RECMODE_DEFAULT);
2934 cam_handle_value_set(ad, PROP_REC_MODE, &i_value);
2937 g_value_set_int(&i_value, PG_MODE_DEFAULT);
2938 cam_handle_value_set(ad, PROP_SCENE_MODE, &i_value);
2941 g_value_set_int(&i_value, AF_DEFAULT);
2942 cam_handle_value_set(ad, PROP_AF_MODE, &i_value);
2945 g_value_set_int(&i_value, TIMER_DEFAULT);
2946 cam_handle_value_set(ad, PROP_TIMER, &i_value);
2949 g_value_set_int(&i_value, WB_DEFAULT);
2950 cam_handle_value_set(ad, PROP_WB, &i_value);
2953 g_value_set_int(&i_value, EFFECT_DEFAULT);
2954 cam_handle_value_set(ad, PROP_EFFECT, &i_value);
2957 g_value_set_int(&i_value, ISO_DEFAULT);
2958 cam_handle_value_set(ad, PROP_ISO, &i_value);
2961 g_value_set_int(&i_value, AE_DEFAULT);
2962 cam_handle_value_set(ad, PROP_METERING, &i_value);
2965 g_value_set_int(&i_value, AHS_DEFAULT);
2966 cam_handle_value_set(ad, PROP_AHS, &i_value);
2968 /* wild dynamic range */
2969 g_value_set_int(&i_value, WDR_DEFAULT);
2970 cam_handle_value_set(ad, PROP_WDR, &i_value);
2973 g_value_set_int(&i_value, QUALITY_DEFAULT);
2974 cam_handle_value_set(ad, PROP_IMAGE_QUALITY, &i_value);
2977 g_value_set_int(&i_value, QUALITY_DEFAULT);
2978 cam_handle_value_set(ad, PROP_VIDEO_QUALITY, &i_value);
2981 g_value_set_int(&i_value, FALSE);
2982 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &i_value);
2985 g_value_set_boolean(&b_value, GUIDE_LINE_DEFAULT);
2986 cam_handle_value_set(ad, PROP_GUIDELINE, &b_value);
2987 settings_guideline_refresh(ad);
2990 g_value_set_boolean(&b_value, FALSE);
2991 cam_handle_value_set(ad, PROP_REVIEW, &b_value);
2994 g_value_set_boolean(&b_value, FALSE);
2995 cam_handle_value_set(ad, PROP_GPS, &b_value);
2998 g_value_set_int(&i_value, SHUTTER_SOUND_DEFAULT);
2999 cam_handle_value_set(ad, PROP_SHUTTER_SOUND, &i_value);
3002 cam_mm_set_shutter_sound(SOUND_DEFAULT);
3003 ad->camapp_handle->shutter_sound = SHUTTER_SOUND_DEFAULT;
3005 /* audio recording */
3006 g_value_set_boolean(&b_value, TRUE);
3007 cam_handle_value_set(ad, PROP_AUDIO_REC, &b_value);
3010 g_value_set_int(&i_value, STORAGE_DEFAULT);
3011 cam_handle_value_set(ad, PROP_STORAGE, &i_value);
3014 g_value_set_int(&i_value, BRIGHTNESS_DEFAULT);
3015 cam_handle_value_set(ad, PROP_BRIGHTNESS, &i_value);
3018 g_value_set_int(&i_value, IMAGE_RESOLUTION_DEFAULT);
3019 cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &i_value);
3021 g_value_set_int(&i_value, REC_RESOLUTION_DEFAULT);
3022 cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &i_value);
3024 if (ad->indicator_edje) {
3025 /* delete indicator */
3026 evas_object_hide(ad->indicator_edje);
3027 cam_indicator_destory(ad);
3029 cam_indicator_create(ad);
3032 if (camapp->camera_mode == CAM_CAMERA_MODE) {
3033 g_value_set_int(&i_value, FLASH_DEFAULT);
3035 g_value_set_int(&i_value, REC_FLASH_DEFAULT);
3037 cam_handle_value_set(ad, PROP_FLASH, &i_value);
3039 /* Outdoor visibility */
3040 g_value_set_boolean(&b_value, FALSE);
3041 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &b_value);
3044 g_value_set_boolean(&b_value, FALSE);
3045 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &b_value);
3049 g_value_set_int(&i_value, ZOOM_DEFAULT);
3050 cam_handle_value_set(ad, PROP_ZOOM, &i_value);
3052 /* Size limit type */
3053 g_value_set_int(&i_value, CAM_MM_SIZE_LIMIT_TYPE_BYTE);
3054 cam_handle_value_set(ad, PROP_SIZE_LIMIT_TYPE, &i_value);
3057 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
3058 && ad->exe_args->size_limit > 0) {
3059 g_value_set_int(&i_value, CAM_REC_MMS_MAX_SIZE);
3061 g_value_set_int(&i_value, REC_SIZE_LIMIT_DEFAULT);
3063 cam_handle_value_set(ad, PROP_SIZE_LIMIT, &i_value);
3066 g_value_set_int(&i_value, TIMER_DEFAULT);
3067 cam_handle_value_set(ad, PROP_TIMER, &i_value);
3070 g_value_set_int(&i_value, IMAGE_COUNT_DEFAULT);
3071 cam_handle_value_set(ad, PROP_IMAGE_COUNT, &i_value);
3073 CAM_GVALUE_SET_INT(i_value, CAM_VOLUME_KEY_ZOOM);
3074 cam_handle_value_set(ad, PROP_VOLUME_KEY, &i_value);
3076 camapp->continuous_shot_data = NULL;
3077 camapp->enable_touch_af = TRUE;
3078 camapp->burst_shot = TRUE;
3081 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3083 TRUE);/*note: set show pop tip flag*/
3084 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3085 PROP_SHORTCUTS_INIT_PART_INDEX,
3086 FALSE);/*note: set shorcuts init flag*/
3089 static void __restore_defaults_popup_cb_ok_cb(void *data, Evas_Object *obj, void *event_info)
3091 struct appdata *ad = (struct appdata *)cam_appdata_get();
3092 cam_retm_if(ad == NULL, " appdata is NULL");
3093 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3095 DEL_EVAS_OBJECT(ad->confirm_popup);
3097 hide_toolbar_edje(ad);
3098 cam_app_preview_stop();
3100 __reset_settings_launch();
3101 __toolbar_menu_item_reset(ad);
3105 show_toolbar_edje(ad);
3107 if (!cam_app_preview_start(ad)) {
3108 cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
3113 static void __restore_defaults_popup_cb_cancel_cb(void *data, Evas_Object *obj, void *event_info)
3115 struct appdata *ad = (struct appdata *)cam_appdata_get();
3116 cam_retm_if(ad == NULL, " appdata is NULL");
3117 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3119 DEL_EVAS_OBJECT(ad->confirm_popup);
3122 static void __effects_selected_cb(void *data, Evas_Object *obj, void *event_info)
3124 cam_retm_if(obj == NULL, "obj is NULL");
3125 struct appdata *ad = (struct appdata *)cam_appdata_get();
3126 cam_retm_if(ad == NULL, "appdata is NULL");
3131 int effect = CAM_SCENE_NONE;
3132 switch ((int)data) {
3133 case CAM_MENU_EFFECT_NONE:
3134 effect = CAMERA_ATTR_EFFECT_NONE;
3136 case CAM_MENU_EFFECT_NEGATIVE:
3137 effect = CAMERA_ATTR_EFFECT_NEGATIVE;
3139 case CAM_MENU_EFFECT_BLACKANDWHITE:
3140 effect = CAMERA_ATTR_EFFECT_MONO;
3142 case CAM_MENU_EFFECT_SEPIA:
3143 effect = CAMERA_ATTR_EFFECT_SEPIA;
3149 if (ad->camapp_handle->effect != effect) {
3150 CAM_GVALUE_SET_INT(value, effect);
3151 cam_handle_value_set(ad, PROP_EFFECT, &value);
3154 if (ad->setting_select_item)
3155 elm_genlist_item_update(ad->setting_select_item);
3156 __update_menubar_icon_by_index(ad, CAM_MENU_EFFECTS);
3158 setting_ctxpopup_destroy(ad);
3159 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3162 static void __shot_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3164 cam_retm_if(obj == NULL, "obj is NULL");
3165 struct appdata *ad = (struct appdata *)cam_appdata_get();
3166 cam_retm_if(ad == NULL, "appdata is NULL");
3170 switch ((int)data) {
3171 case CAM_MENU_SHOOTING_SINGLE:
3172 shot_mode_set(ad, CAM_SINGLE_MODE);
3174 case CAM_MENU_SHOOTING_SELF_SINGLE:
3175 shot_mode_set(ad, CAM_SELF_SINGLE_MODE);
3181 evas_object_show(ad->toolbar_setting_popup);
3182 if (ad->setting_select_item) {
3183 elm_genlist_item_update(ad->setting_select_item);
3186 __toolbar_menu_icon_update(ad);
3188 setting_ctxpopup_destroy(ad);
3189 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3190 cam_toolbar_setting_popup_destroy(ad);
3193 static void __scene_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3195 cam_retm_if(obj == NULL, "obj is NULL");
3196 struct appdata *ad = (struct appdata *)cam_appdata_get();
3197 cam_retm_if(ad == NULL, "appdata is NULL");
3203 int scene = CAM_MENU_SCENE_AUTO;
3204 switch ((int)data) {
3205 case CAM_MENU_SCENE_AUTO:
3206 scene = CAM_SCENE_NONE;
3208 case CAM_MENU_SCENE_PORTRAIT:
3209 scene = CAM_SCENE_PORTRAIT;
3211 case CAM_MENU_SCENE_LANDSCAPE:
3212 scene = CAM_SCENE_LANDSCAPE;
3214 case CAM_MENU_SCENE_NIGHT:
3215 scene = CAM_SCENE_NIGHT;
3217 case CAM_MENU_SCENE_SPORTS:
3218 scene = CAM_SCENE_SPORTS;
3220 case CAM_MENU_SCENE_PARTY:
3221 scene = CAM_SCENE_PARTY;
3223 case CAM_MENU_SCENE_BEACHSNOW:
3224 scene = CAM_SCENE_BEACHSNOW;
3226 case CAM_MENU_SCENE_SUNSET:
3227 scene = CAM_SCENE_SUNSET;
3229 case CAM_MENU_SCENE_DUSKDAWN:
3230 scene = CAM_SCENE_DUSKDAWN;
3232 case CAM_MENU_SCENE_FALL:
3233 scene = CAM_SCENE_FALL;
3235 case CAM_MENU_SCENE_FIREWORK:
3236 scene = CAM_SCENE_FIREWORK;
3238 case CAM_MENU_SCENE_TEXT:
3239 scene = CAM_SCENE_TEXT;
3241 case CAM_MENU_SCENE_CANDLELIGHT:
3242 scene = CAM_SCENE_CANDLELIGHT;
3244 case CAM_MENU_SCENE_BACKLIGHT:
3245 scene = CAM_SCENE_BACKLIGHT;
3247 case CAM_MENU_SCENE_SHOW_WINDOW:
3248 scene = CAM_SCENE_SHOW_WINDOW;
3254 if (ad->camapp_handle->scene_mode != scene) {
3255 CAM_GVALUE_SET_INT(value, scene);
3256 cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
3259 if (ad->setting_select_item)
3260 elm_genlist_item_update(ad->setting_select_item);
3262 __toolbar_menu_icon_update(ad);
3264 setting_ctxpopup_destroy(ad);
3265 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3266 __update_setting_popup(ad);
3269 static void __focus_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3271 cam_retm_if(obj == NULL, "obj is NULL");
3272 struct appdata *ad = (struct appdata *)cam_appdata_get();
3273 cam_retm_if(ad == NULL, "appdata is NULL");
3278 int focus_mode = CAM_FOCUS_AUTO;
3279 switch ((int)data) {
3280 case CAM_MENU_FOCUS_AUTO:
3281 focus_mode = CAM_FOCUS_AUTO;
3283 case CAM_MENU_FOCUS_MACRO:
3284 focus_mode = CAM_FOCUS_MACRO;
3286 case CAM_MENU_FOCUS_FACE_DETECTION:
3287 focus_mode = CAM_FOCUS_FACE;
3293 CAM_GVALUE_SET_INT(value, focus_mode);
3294 cam_handle_value_set(ad, PROP_AF_MODE, &value);
3296 if (ad->setting_select_item)
3297 elm_genlist_item_update(ad->setting_select_item);
3298 __update_menubar_icon_by_index(ad, CAM_MENU_FOCUS_MODE);
3300 setting_ctxpopup_destroy(ad);
3301 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3302 __update_setting_popup(ad);
3305 static void __record_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3307 cam_retm_if(obj == NULL, "obj is NULL");
3308 struct appdata *ad = (struct appdata *)cam_appdata_get();
3309 cam_retm_if(ad == NULL, "appdata is NULL");
3314 int record_mode = CAM_RECORD_NORMAL;
3315 switch ((int)data) {
3316 case CAM_MENU_RECORDING_MODE_NORMAL:
3317 record_mode = CAM_RECORD_NORMAL;
3319 case CAM_MENU_RECORDING_MODE_LIMIT:
3320 record_mode = CAM_RECORD_MMS;
3322 case CAM_MENU_RECORDING_MODE_SLOW:
3323 record_mode = CAM_RECORD_SLOW;
3325 case CAM_MENU_RECORDING_MODE_FAST:
3326 record_mode = CAM_RECORD_FAST;
3328 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
3329 record_mode = CAM_RECORD_SELF;
3331 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
3332 record_mode = CAM_RECORD_SELF_MMS;
3338 if (ad->camapp_handle->recording_mode != record_mode) {
3339 CAM_GVALUE_SET_INT(value, record_mode);
3340 cam_handle_value_set(ad, PROP_REC_MODE, &value);
3343 evas_object_show(ad->toolbar_setting_popup);
3344 if (ad->setting_select_item) {
3345 elm_genlist_item_update(ad->setting_select_item);
3348 __toolbar_menu_icon_update(ad);
3350 setting_ctxpopup_destroy(ad);
3351 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3352 cam_toolbar_setting_popup_destroy(ad);
3355 static void __update_menubar_icon_by_index(struct appdata *ad, int index)
3357 Evas_Object_Event_Cb func = NULL;
3358 int menubar_no = -1;
3359 menubar_no = __get_menubar_no_by_index(ad, index);
3360 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
3361 Evas_Object *icon = NULL;
3362 icon = ad->toolbar_menu_arrays[menubar_no].icon;
3364 __toolbar_menu_type_update(icon, index, ad, BUTTON_STATE_NORMAL, &func);
3367 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info)
3369 cam_retm_if(obj == NULL, "obj is NULL");
3370 struct appdata *ad = (struct appdata *)cam_appdata_get();
3371 cam_retm_if(ad == NULL, "appdata is NULL");
3375 int flash_value = 0;
3377 switch ((int)data) {
3378 case CAM_MENU_FLASH_OFF:
3379 flash_value = CAM_FLASH_OFF;
3381 case CAM_MENU_FLASH_ON:
3382 flash_value = CAM_FLASH_ON;
3384 case CAM_MENU_FLASH_AUTO:
3385 flash_value = CAM_FLASH_AUTO;
3388 flash_value = CAM_FLASH_OFF;
3391 CAM_GVALUE_SET_INT(value, flash_value);
3392 cam_handle_value_set(ad, PROP_FLASH, &value);
3393 __update_menubar_icon_by_index(ad, CAM_MENU_FLASH);
3394 if (ad->setting_select_item)
3395 elm_genlist_item_update(ad->setting_select_item);
3397 setting_ctxpopup_destroy(ad);
3398 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3401 static void toolbar_move_with_scale(Evas_Object *eo, double x, double y)
3403 DEBUG_TRACE("x = %f, y = %f" , x, y);
3404 DEBUG_TRACE("elm_config_scale_get() = %f" , elm_config_scale_get());
3405 evas_object_move(eo, x * elm_config_scale_get(), y * elm_config_scale_get());
3408 /*note: @mouse_point is the coordinate of mouse click, output is scaled*/
3409 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction,
3414 int ver_x, ver_y, h_x, h_y;
3415 ver_x = ver_y = h_x = h_y = 0;
3416 switch (target_direction) {
3417 case CAM_TARGET_DIRECTION_LANDSCAPE:
3418 *x = (int)(SETTING_HOR_CTX_POPUP_X * elm_config_scale_get());
3421 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3422 *x = (int)((1280 - SETTING_HOR_CTX_POPUP_X) * elm_config_scale_get());
3425 case CAM_TARGET_DIRECTION_PORTRAIT:
3426 *x = (int)(SETTING_VER_CTX_POPUP_X * elm_config_scale_get());;
3429 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3430 *x = (int)((720 - SETTING_VER_CTX_POPUP_X) * elm_config_scale_get());
3434 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3439 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y)
3441 switch (target_direction) {
3442 case CAM_TARGET_DIRECTION_LANDSCAPE:
3443 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3444 *out_x = (int)((MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3445 *out_y = (int)(0.9*MAIN_H);
3447 case CAM_TARGET_DIRECTION_PORTRAIT:
3448 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3449 *out_x = (int)((VER_MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3450 *out_y = (int)(0.8*VER_MAIN_H);
3453 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3457 /*note: in this func, all coordinate is not scale*/
3458 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y)
3460 int menu_bar_no = menubar_no;
3461 int ver_x, ver_y, hor_x, hor_y;
3462 ver_x = ver_y = hor_x = hor_y = 0;
3464 switch (menu_bar_no) {
3465 case CAM_MENU_BAR_LEFT_0:
3471 case CAM_MENU_BAR_LEFT_1:
3477 case CAM_MENU_BAR_LEFT_2:
3483 case CAM_MENU_BAR_LEFT_3:
3489 case CAM_MENU_BAR_LEFT_4:
3496 DEBUG_TRACE("input para,error!");
3500 switch (target_direction) {
3501 case CAM_TARGET_DIRECTION_LANDSCAPE:
3505 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3509 case CAM_TARGET_DIRECTION_PORTRAIT:
3513 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3518 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3523 static int __get_menubar_no_by_index(struct appdata *ad, int index)
3527 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
3528 if (index == ad->toolbar_menu_arrays[i].menu_type) {
3532 return CAM_MENU_BAR_LEFT_INVALID;
3535 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y)
3538 switch (target_direction) {
3539 case CAM_TARGET_DIRECTION_LANDSCAPE:
3540 elm_ctxpopup_direction_priority_set(obj,
3541 ELM_CTXPOPUP_DIRECTION_RIGHT,
3542 ELM_CTXPOPUP_DIRECTION_UP,
3543 ELM_CTXPOPUP_DIRECTION_LEFT,
3544 ELM_CTXPOPUP_DIRECTION_DOWN);
3547 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3548 elm_ctxpopup_direction_priority_set(obj,
3549 ELM_CTXPOPUP_DIRECTION_LEFT,
3550 ELM_CTXPOPUP_DIRECTION_DOWN,
3551 ELM_CTXPOPUP_DIRECTION_RIGHT,
3552 ELM_CTXPOPUP_DIRECTION_UP);
3554 case CAM_TARGET_DIRECTION_PORTRAIT:
3555 elm_ctxpopup_direction_priority_set(obj,
3556 ELM_CTXPOPUP_DIRECTION_DOWN,
3557 ELM_CTXPOPUP_DIRECTION_RIGHT,
3558 ELM_CTXPOPUP_DIRECTION_UP,
3559 ELM_CTXPOPUP_DIRECTION_LEFT);
3561 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3562 elm_ctxpopup_direction_priority_set(obj,
3563 ELM_CTXPOPUP_DIRECTION_UP,
3564 ELM_CTXPOPUP_DIRECTION_LEFT,
3565 ELM_CTXPOPUP_DIRECTION_DOWN,
3566 ELM_CTXPOPUP_DIRECTION_RIGHT);
3569 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3572 toolbar_move_with_scale(obj, x, y);
3575 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y)
3578 switch (target_direction) {
3579 case CAM_TARGET_DIRECTION_LANDSCAPE:
3580 case CAM_TARGET_DIRECTION_PORTRAIT:
3581 elm_ctxpopup_direction_priority_set(obj,
3582 ELM_CTXPOPUP_DIRECTION_RIGHT,
3583 ELM_CTXPOPUP_DIRECTION_UP,
3584 ELM_CTXPOPUP_DIRECTION_LEFT,
3585 ELM_CTXPOPUP_DIRECTION_DOWN);
3587 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3588 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3589 elm_ctxpopup_direction_priority_set(obj,
3590 ELM_CTXPOPUP_DIRECTION_LEFT,
3591 ELM_CTXPOPUP_DIRECTION_DOWN,
3592 ELM_CTXPOPUP_DIRECTION_RIGHT,
3593 ELM_CTXPOPUP_DIRECTION_UP);
3596 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3599 evas_object_move(obj, x, y);
3602 static void __tip_popup_check_cb(void *data, Evas_Object *obj, void *event_info)
3604 struct appdata *ad = (struct appdata *)cam_appdata_get();
3605 cam_retm_if(ad == NULL, "appdata is NULL");
3606 gboolean pop_tip = FALSE;
3607 pop_tip = elm_check_state_get(obj);
3608 DEBUG_TRACE("do_not_ask_again = %d", pop_tip);
3609 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, !pop_tip);
3613 static void __tip_popup_button_selected_cb(void *data, Evas_Object * obj, void *event_info)
3616 struct appdata *ad = (struct appdata *)cam_appdata_get();
3617 cam_retm_if(ad == NULL, "appdata is NULL");
3619 cam_tip_popup_destroy(ad);
3622 /*note: input x,y should be landscape mode coordinate*/
3623 static void __get_tip_popup_coord(int target_direction, int *out_x, int *out_y)
3625 switch (target_direction) {
3626 case CAM_TARGET_DIRECTION_LANDSCAPE:
3627 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3628 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3630 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3631 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3632 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3634 case CAM_TARGET_DIRECTION_PORTRAIT:
3635 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3636 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3638 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3639 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3640 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3643 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3647 void cam_tip_popup_create(struct appdata *ad, const CamTipPopupType type)
3649 cam_retm_if(ad == NULL, "appdata is NULL");
3651 if (ad->toolbar_setting_popup) {
3652 cam_toolbar_setting_popup_destroy(ad);
3655 if (ad->edit_shortcuts_popup_scroll) {
3656 toolbar_destroy_shortcuts_popup(ad);
3659 if (ad->tip_popup) {
3660 cam_tip_popup_destroy(ad);
3663 /*hide focus guide*/
3664 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
3666 elm_object_part_content_unset(ad->ug_base, "tip_popup_layout");
3668 ad->tip_popup = cam_app_load_edj(ad->ug_base, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/help");
3670 cam_retm_if(ad->tip_popup == NULL, "tip_popup is NULL");
3671 elm_object_part_content_set(ad->ug_base, "tip_popup_layout", ad->tip_popup);
3673 Evas_Object *check = elm_check_add(ad->tip_popup);
3674 evas_object_smart_callback_add(check, "changed", __tip_popup_check_cb, (void*)ad);
3675 evas_object_show(check);
3676 elm_object_part_content_set(ad->tip_popup, "content.help.check.swallow", check);
3678 gboolean show_popup_tip = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, POP_TIP_DEFAULT);
3680 elm_check_state_set(check, EINA_FALSE);
3682 elm_check_state_set(check, EINA_TRUE);
3684 Evas_Object *btn = elm_button_add(ad->tip_popup);
3685 elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_OK"));
3686 evas_object_smart_callback_add(btn, "unpressed", __tip_popup_button_selected_cb, (void *)ad);
3687 evas_object_show(btn);
3688 elm_object_part_content_set(ad->tip_popup, "button.swallow", btn);
3690 Evas_Object *image = elm_image_add(ad->tip_popup);
3691 elm_object_part_content_set(ad->tip_popup, "content.help.image", image);
3693 if (ad->tip_popup) {
3694 evas_object_show(ad->tip_popup);
3695 evas_object_size_hint_min_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3696 evas_object_size_hint_max_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3697 evas_object_resize(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3699 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.check.txt", dgettext(PACKAGE, "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"));
3700 edje_object_part_text_set(_EDJ(ad->tip_popup), "tips.txt", dgettext(PACKAGE, "IDS_CAM_HEADER_TIPS"));
3703 case CAM_TIP_POPUP_BURSTSHOT_HELP:
3704 ad->tip_popup_type = CAM_TIP_POPUP_BURSTSHOT_HELP;
3705 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3706 dgettext(PACKAGE, "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"));
3707 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_BURSTSHOT_HELP_IMAGE);
3709 case CAM_TIP_POPUP_VOLUMEKEY_HELP:
3710 ad->tip_popup_type = CAM_TIP_POPUP_VOLUMEKEY_HELP;
3711 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3712 dgettext(PACKAGE, "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"));
3713 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_VOLUMEKEY_HELP_IMAGE);
3716 DEBUG_TRACE("invalid tip-popup type");
3720 evas_object_show(ad->tip_popup);
3722 int output_x, output_y;
3723 output_x = output_y = 0;
3724 __get_tip_popup_coord(ad->target_direction, &output_x, &output_y);
3725 evas_object_move(ad->tip_popup, output_x, output_y);/*landscape*/
3729 void cam_tip_popup_destroy(struct appdata *ad)
3731 cam_retm_if(ad == NULL, "appdata is NULL");
3733 DEL_EVAS_OBJECT(ad->tip_popup);
3734 ad->tip_popup_type = CAM_TIP_POPUP_NONE;
3737 void cam_tip_popup_rotate(struct appdata *ad)
3739 cam_retm_if(ad == NULL, "appdata is NULL");
3741 DEL_EVAS_OBJECT(ad->tip_popup);
3742 cam_tip_popup_create(ad, ad->tip_popup_type);
3745 static char *__sub_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
3747 int index = (int)data;
3749 struct appdata *ad = (struct appdata *)cam_appdata_get();
3750 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3752 CAM_MENU_ITEM* menu_item = NULL;
3753 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3754 return strdup(dgettext(PACKAGE, __get_text_name(*menu_item)));
3757 static Evas_Object *__sub_menu_gl_icon_get(void *data, Evas_Object *obj, const char *part)
3759 struct appdata *ad = (struct appdata *)cam_appdata_get();
3760 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3762 CamAppData *camapp = ad->camapp_handle;
3763 cam_retvm_if(camapp == NULL, NULL, "camapp_handle is NULL");
3765 int index = (int)data;
3766 int value_index = 0;
3768 if (strcmp(part, "elm.radio") == 0) {
3769 Evas_Object* radio = elm_radio_add(obj);
3771 elm_object_style_set(radio, "beat_winset_test/camera");
3772 elm_radio_state_value_set(radio, index);
3773 elm_radio_group_add(radio, ad->sub_menu_group);
3775 switch (ad->sub_menu_type) {
3776 case CAM_MENU_FLASH:
3777 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FLASH, camapp->flash);
3778 if (index == value_index) {
3779 elm_radio_value_set(radio, value_index);
3782 case CAM_MENU_SHOOTING_MODE:
3783 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SHOOTING_MODE, camapp->shooting_mode);
3784 if (index == value_index) {
3785 elm_radio_value_set(radio, value_index);
3788 case CAM_MENU_RECORDING_MODE:
3789 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_RECORDING_MODE, camapp->recording_mode);
3790 if (index == value_index) {
3791 elm_radio_value_set(radio, value_index);
3794 case CAM_MENU_SCENE_MODE:
3795 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SCENE_MODE, camapp->scene_mode);
3796 if (index == value_index) {
3797 elm_radio_value_set(radio, value_index);
3800 case CAM_MENU_FOCUS_MODE:
3801 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FOCUS_MODE, camapp->af_mode);
3802 if (index == value_index) {
3803 elm_radio_value_set(radio, value_index);
3806 case CAM_MENU_TIMER:
3807 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_TIMER, camapp->timer);
3808 if (index == value_index) {
3809 elm_radio_value_set(radio, value_index);
3812 case CAM_MENU_EFFECTS:
3813 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_EFFECTS, camapp->effect);
3814 if (index == value_index) {
3815 elm_radio_value_set(radio, value_index);
3818 case CAM_MENU_PHOTO_RESOLUTION:
3819 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_PHOTO_RESOLUTION, camapp->photo_resolution);
3820 if (index == value_index) {
3821 elm_radio_value_set(radio, value_index);
3824 case CAM_MENU_VIDEO_RESOLUTION:
3825 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VIDEO_RESOLUTION, camapp->video_resolution);
3826 if (index == value_index) {
3827 elm_radio_value_set(radio, value_index);
3830 case CAM_MENU_WHITE_BALANCE:
3831 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_WHITE_BALANCE, camapp->white_balance);
3832 if (index == value_index) {
3833 elm_radio_value_set(radio, value_index);
3837 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_ISO, camapp->iso);
3838 if (index == value_index) {
3839 elm_radio_value_set(radio, value_index);
3842 case CAM_MENU_METERING:
3843 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_METERING, camapp->auto_exposure);
3844 if (index == value_index) {
3845 elm_radio_value_set(radio, value_index);
3848 case CAM_MENU_STORAGE:
3849 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_STORAGE, camapp->storage);
3850 if (index == value_index) {
3851 elm_radio_value_set(radio, value_index);
3854 case CAM_MENU_VOLUME_KEY:
3855 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VOLUME_KEY, camapp->volume_key);
3856 if (index == value_index) {
3857 elm_radio_value_set(radio, value_index);
3863 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3864 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
3867 } else if (strcmp(part, "elm.icon") == 0) {
3868 Evas_Object *icon = NULL;
3869 char icon_name[1024+1] = { '\0', };
3870 CAM_MENU_ITEM* menu_item = NULL;
3872 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3873 strncpy(icon_name, __get_icon_image_name(*menu_item, BUTTON_STATE_NORMAL), sizeof(icon_name));
3874 icon = elm_image_add(obj);
3875 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
3882 void __cam_setting_sub_gl_style_set()
3885 sub_itc.item_style = "camera/1text.2icon";
3886 sub_itc.func.text_get = __sub_menu_gl_text_get;
3887 sub_itc.func.content_get = __sub_menu_gl_icon_get;
3888 sub_itc.func.state_get = NULL;
3889 sub_itc.func.del = NULL;
3892 static void* __get_sub_menu_genlist_cb(const CAM_MENU_ITEM item)
3895 case CAM_MENU_FLASH:
3896 return __flash_selected_cb;
3897 case CAM_MENU_SHOOTING_MODE:
3898 return __shot_mode_selected_cb;
3899 case CAM_MENU_RECORDING_MODE:
3900 return __record_mode_selected_cb;
3901 case CAM_MENU_SCENE_MODE:
3902 return __scene_mode_selected_cb;
3903 case CAM_MENU_FOCUS_MODE:
3904 return __focus_mode_selected_cb;
3905 case CAM_MENU_TIMER:
3906 return __timer_popup_cb;
3907 case CAM_MENU_EFFECTS:
3908 return __effects_selected_cb;
3909 case CAM_MENU_PHOTO_RESOLUTION:
3910 return __photo_resolution_popup_cb;
3911 case CAM_MENU_VIDEO_RESOLUTION:
3912 return __video_resolution_popup_cb;
3913 case CAM_MENU_WHITE_BALANCE:
3914 return __wb_popup_cb;
3916 return __iso_popup_cb;
3917 case CAM_MENU_METERING:
3918 return __metering_popup_cb;
3919 case CAM_MENU_STORAGE:
3920 return __storage_popup_cb;
3921 case CAM_MENU_VOLUME_KEY:
3922 return __volume_key_popup_cb;
3928 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata)
3930 struct appdata *ad = (struct appdata *)fdata;
3931 cam_retv_if(ad == NULL, EINA_FALSE);
3933 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
3934 DEBUG_TRACE("item = %d", *item);
3936 elm_genlist_item_append(ad->sub_genlist, &sub_itc, (void*)(ad->sub_menu_index),
3937 NULL, ELM_GENLIST_ITEM_NONE, __get_sub_menu_genlist_cb(ad->sub_menu_type), (void *)*item);
3939 ad->sub_menu_index++;
3943 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting)
3945 DEBUG_TRACE("START");
3947 struct appdata *ad = data;
3948 cam_retm_if(ad == NULL, "appdata is NULL");
3950 Evas_Object *layout = NULL;
3951 int menu_bar_no = -1;
3954 setting_ctxpopup_create(ad, from_setting);
3955 layout = elm_layout_add(ad->setting_ctxpopup);
3956 elm_layout_file_set(layout, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout");
3959 edje_object_part_text_set(elm_layout_edje_get(layout), "elm.text", _setting_gl_text_get((void*)menu_item, NULL, NULL));
3961 if (ad->sub_menu_composer) {
3962 cam_compose_free(ad->sub_menu_composer);
3963 ad->sub_menu_composer = NULL;
3966 if (ad->sub_menu_composer == NULL) {
3967 ad->sub_menu_composer = calloc(1, sizeof(cam_menu_composer));
3968 cam_compose_list_menu((void*)ad, menu_item, ad->sub_menu_composer);
3971 int size = eina_array_count(ad->sub_menu_composer->array);
3972 int sub_menu_height = __get_sub_menu_height(size);
3973 evas_object_size_hint_min_set(layout,
3974 SUB_MENU_POPUP_WIDTH * elm_config_scale_get(),
3975 sub_menu_height * elm_config_scale_get());
3977 ad->sub_menu_type = menu_item;
3978 ad->sub_menu_index = 0;
3979 ad->sub_genlist = elm_genlist_add(layout);
3980 ad->sub_menu_group = elm_radio_add(ad->sub_genlist);
3982 __cam_setting_sub_gl_style_set();
3983 eina_array_foreach(ad->sub_menu_composer->array, __sub_menu_genlist_each_cb, ad);
3985 evas_object_show(ad->sub_genlist);
3986 elm_object_part_content_set(layout, "elm.swallow.box", ad->sub_genlist);
3987 elm_object_content_set(ad->setting_ctxpopup, layout);
3990 __cam_get_ctxpopup_coord_in_setting_toolbar(ad->target_direction, setting_gl_y, &x, &y);
3991 __cam_toolbar_move_sub_menu(ad->setting_ctxpopup, ad->target_direction, x, y);
3993 menu_bar_no = __get_menubar_no_by_index(ad, menu_item);
3994 __get_option_coord_by_menubar_no(menu_bar_no, ad->target_direction, &x, &y);
3995 __cam_toolbar_move_ctxpopup(ad->setting_ctxpopup, ad->target_direction, x, y);
3998 evas_object_show(ad->setting_ctxpopup);
3999 __setting_popup_timeout_checker_start(ad);
4002 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info)
4004 struct appdata *ad = (struct appdata *)cam_appdata_get();
4005 cam_retm_if(ad == NULL, "appdata is NULL");
4006 gboolean from_setting = FALSE;
4007 if (event_info) { /*call by setting*/
4008 from_setting = TRUE;
4009 } else { /*call by click icon*/
4010 from_setting = FALSE;
4013 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4014 ad->setting_select_item = (Elm_Object_Item *)event_info;
4017 ad->displayed_setting_popup = FALSE;
4018 toolbar_create_shortcuts_popup(ad);
4021 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info)
4023 DEBUG_TRACE("START");
4025 struct appdata *ad = data;
4026 cam_retm_if(ad == NULL, "appdata is NULL");
4028 gboolean from_setting = FALSE;
4030 if (event_info) { /*call by setting*/
4031 from_setting = TRUE;
4032 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4033 ad->setting_select_item = (Elm_Object_Item *)event_info;
4034 } else { /*call by click icon*/
4035 from_setting = FALSE;
4036 ad->displayed_setting_popup = DISPLAY_VOLUME_KEY_POPUP;
4039 __create_setting_listmenu(ad, CAM_MENU_VOLUME_KEY, from_setting);
4042 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info)
4044 struct appdata *ad = (struct appdata *)(data);
4045 cam_retm_if(ad == NULL, "appdata is NULL");
4046 CamAppData *camapp = ad->camapp_handle;
4047 cam_retm_if(camapp == NULL, "camapp is NULL");
4049 if (!ad->enable_mode_change) {
4050 DEBUG_TRACE("Can not change mode");
4054 ad->enable_mode_change = FALSE;
4056 cam_toolbar_setting_popup_destroy(ad);
4057 setting_ctxpopup_destroy(ad);
4058 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4060 if (camapp->self_portrait == TRUE)
4061 camapp->self_portrait = FALSE;
4063 camapp->self_portrait = TRUE;
4065 GValue value = {0, };
4066 CAM_GVALUE_SET_BOOLEAN(value, camapp->self_portrait);
4067 cam_handle_value_set(ad, PROP_SELF_PORTRAIT, &value);
4069 cam_toolbar_update(ad);
4072 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info)
4074 DEBUG_TRACE("START");
4076 struct appdata *ad = (struct appdata *)data;
4077 cam_retm_if(ad == NULL, "appdata is NULL");
4079 gboolean from_setting = FALSE;
4081 if (event_info) { /*call by setting*/
4082 from_setting = TRUE;
4083 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4084 ad->setting_select_item = (Elm_Object_Item *)event_info;
4085 } else { /*call by click icon*/
4086 from_setting = FALSE;
4087 ad->displayed_setting_popup = DISPLAY_FLASH_POPUP;
4090 __create_setting_listmenu(ad, CAM_MENU_FLASH, from_setting);
4093 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4095 DEBUG_TRACE("START");
4097 struct appdata *ad = (struct appdata *)data;
4098 cam_retm_if(ad == NULL, "appdata is NULL");
4100 gboolean from_setting = FALSE;
4102 if (event_info) { /*call by setting*/
4103 from_setting = TRUE;
4104 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4105 ad->setting_select_item = (Elm_Object_Item *)event_info;
4106 } else { /*call by click icon*/
4107 from_setting = FALSE;
4108 ad->displayed_setting_popup = DISPLAY_SHOOTING_MODE_POPUP;
4111 __create_setting_listmenu(ad, CAM_MENU_SHOOTING_MODE, from_setting);
4114 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info)
4116 DEBUG_TRACE("START");
4118 struct appdata *ad = data;
4119 cam_retm_if(ad == NULL, "appdata is NULL");
4121 gboolean from_setting = FALSE;
4123 if (event_info) { /*call by setting*/
4124 from_setting = TRUE;
4125 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4126 ad->setting_select_item = (Elm_Object_Item *)event_info;
4127 } else { /*call by click icon*/
4128 from_setting = FALSE;
4129 ad->displayed_setting_popup = DISPLAY_RECORDING_MODE_POPUP;
4132 __create_setting_listmenu(ad, CAM_MENU_RECORDING_MODE, from_setting);
4135 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4137 DEBUG_TRACE("START");
4139 struct appdata *ad = data;
4140 cam_retm_if(ad == NULL, "appdata is NULL");
4142 gboolean from_setting = FALSE;
4144 if (event_info) { /*call by setting*/
4145 from_setting = TRUE;
4146 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4147 ad->setting_select_item = (Elm_Object_Item *)event_info;
4148 } else { /*call by click icon*/
4149 from_setting = FALSE;
4150 ad->displayed_setting_popup = DISPLAY_SCENE_MODE_POPUP;
4153 __create_setting_listmenu(ad, CAM_MENU_SCENE_MODE, from_setting);
4156 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info)
4158 struct appdata *ad = (struct appdata *)cam_appdata_get();
4159 cam_retm_if(ad == NULL, "appdata is NULL");
4160 cam_retm_if(ad->camapp_handle == NULL, "ad->camapp_handle is NULL");
4164 cam_toolbar_setting_popup_destroy(ad);
4167 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info)
4169 struct appdata *ad = (struct appdata *)cam_appdata_get();
4170 cam_retm_if(ad == NULL, "appdata is NULL");
4171 CamAppData *camapp = NULL;
4172 camapp = ad->camapp_handle;
4173 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4175 DEBUG_TRACE("camapp->burst_shot = %d", camapp->burst_shot);
4177 if (obj != ad->burst_shot_mode_radio) {
4178 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4180 if (camapp->burst_shot == TRUE) {
4181 camapp->burst_shot = FALSE;
4182 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4184 camapp->burst_shot = TRUE;
4185 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4188 /* to reset check button */
4189 if (camapp->burst_shot == TRUE)
4190 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4192 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4196 GValue value = {0, };
4197 CAM_GVALUE_SET_BOOLEAN(value, camapp->burst_shot);
4198 cam_handle_value_set(ad, PROP_BURST_SHOT, &value);
4201 __update_menubar_icon_by_index(ad, CAM_MENU_BURST_SHOT_MODE);
4202 __setting_popup_timeout_checker_start(ad);
4205 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info)
4207 DEBUG_TRACE("START");
4209 struct appdata *ad = data;
4210 cam_retm_if(ad == NULL, "appdata is NULL");
4212 gboolean from_setting = FALSE;
4214 if (event_info) { /*call by setting*/
4215 from_setting = TRUE;
4216 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4217 ad->setting_select_item = (Elm_Object_Item *)event_info;
4218 } else { /*call by click icon*/
4219 from_setting = FALSE;
4220 ad->displayed_setting_popup = DISPLAY_FOCUS_MODE_POPUP;
4223 __create_setting_listmenu(ad, CAM_MENU_FOCUS_MODE, from_setting);
4226 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
4228 DEBUG_TRACE("START");
4230 struct appdata *ad = data;
4231 cam_retm_if(ad == NULL, "appdata is NULL");
4233 gboolean from_setting = FALSE;
4235 if (event_info) { /*call by setting*/
4236 from_setting = TRUE;
4237 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4238 ad->setting_select_item = (Elm_Object_Item *)event_info;
4239 } else { /*call by click icon*/
4240 from_setting = FALSE;
4241 ad->displayed_setting_popup = DISPLAY_TIMER_POPUP;
4244 __create_setting_listmenu(ad, CAM_MENU_TIMER, from_setting);
4247 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info)
4249 DEBUG_TRACE("START");
4251 struct appdata *ad = data;
4252 cam_retm_if(ad == NULL, "appdata is NULL");
4254 gboolean from_setting = FALSE;
4256 if (event_info) { /*call by setting*/
4257 from_setting = TRUE;
4258 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4259 ad->setting_select_item = (Elm_Object_Item *)event_info;
4260 } else { /*call by click icon*/
4261 from_setting = FALSE;
4262 ad->displayed_setting_popup = DISPLAY_EFFECTS_POPUP;
4265 __create_setting_listmenu(ad, CAM_MENU_EFFECTS, from_setting);
4268 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
4270 DEBUG_TRACE("START");
4272 struct appdata *ad = data;
4273 cam_retm_if(ad == NULL, "appdata is NULL");
4275 gboolean from_setting = FALSE;
4277 if (event_info) { /*call by setting*/
4278 from_setting = TRUE;
4279 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4280 ad->setting_select_item = (Elm_Object_Item *)event_info;
4281 } else { /*call by click icon*/
4282 from_setting = FALSE;
4283 ad->displayed_setting_popup = DISPLAY_WHITE_BALANCE_POPUP;
4286 __create_setting_listmenu(ad, CAM_MENU_WHITE_BALANCE, from_setting);
4289 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
4291 DEBUG_TRACE("START");
4293 struct appdata *ad = data;
4294 cam_retm_if(ad == NULL, "appdata is NULL");
4296 gboolean from_setting = FALSE;
4298 if (event_info) { /*call by setting*/
4299 from_setting = TRUE;
4300 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4301 ad->setting_select_item = (Elm_Object_Item *)event_info;
4302 } else { /*call by click icon*/
4303 from_setting = FALSE;
4304 ad->displayed_setting_popup = DISPLAY_ISO_POPUP;
4307 __create_setting_listmenu(ad, CAM_MENU_ISO, from_setting);
4310 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
4312 DEBUG_TRACE("START");
4314 struct appdata *ad = data;
4315 cam_retm_if(ad == NULL, "appdata is NULL");
4317 gboolean from_setting = FALSE;
4319 if (event_info) { /*call by setting*/
4320 from_setting = TRUE;
4321 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4322 ad->setting_select_item = (Elm_Object_Item *)event_info;
4323 } else { /*call by click icon*/
4324 from_setting = FALSE;
4325 ad->displayed_setting_popup = DISPLAY_METERING_POPUP;
4328 __create_setting_listmenu(ad, CAM_MENU_METERING, from_setting);
4331 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info)
4333 struct appdata *ad = (struct appdata *)cam_appdata_get();
4334 cam_retm_if(ad == NULL, "appdata is NULL");
4335 CamAppData *camapp = NULL;
4336 camapp = ad->camapp_handle;
4337 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4339 DEBUG_TRACE("camapp->anti_shake = %d", camapp->anti_shake);
4341 if (obj != ad->antishake_radio) {
4342 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4344 if (camapp->anti_shake == TRUE) {
4345 camapp->anti_shake = FALSE;
4346 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4348 camapp->anti_shake = TRUE;
4349 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4352 /* to reset check button */
4353 if (camapp->anti_shake == TRUE)
4354 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4356 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4360 GValue value = {0, };
4361 CAM_GVALUE_SET_BOOLEAN(value, camapp->anti_shake);
4362 cam_handle_value_set(ad, PROP_AHS, &value);
4364 __update_menubar_icon_by_index(ad, CAM_MENU_ANTI_SHAKE);
4365 __setting_popup_timeout_checker_start(ad);
4368 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info)
4370 struct appdata *ad = (struct appdata *)cam_appdata_get();
4371 cam_retm_if(ad == NULL, "appdata is NULL");
4372 CamAppData *camapp = NULL;
4373 camapp = ad->camapp_handle;
4374 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4376 DEBUG_TRACE("camapp->outdoor_visibility = %d", camapp->outdoor_visibility);
4378 if (obj != ad->outdoor_visibility_radio) {
4379 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4381 if (camapp->outdoor_visibility == TRUE) {
4382 camapp->outdoor_visibility = FALSE;
4383 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4385 camapp->outdoor_visibility = TRUE;
4386 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4389 /* to reset check button */
4390 if (camapp->outdoor_visibility == TRUE)
4391 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4393 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4397 GValue value = {0, };
4398 CAM_GVALUE_SET_BOOLEAN(value, camapp->outdoor_visibility);
4399 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &value);
4401 __update_menubar_icon_by_index(ad, CAM_MENU_OUTDOOR_VISIBILITY);
4402 __setting_popup_timeout_checker_start(ad);
4405 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info)
4407 cam_ret_if(obj == NULL);
4408 struct appdata *ad = (struct appdata *)cam_appdata_get();
4409 cam_retm_if(ad == NULL, "appdata is NULL");
4410 CamAppData *camapp = NULL;
4411 camapp = ad->camapp_handle;
4412 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4414 DEBUG_TRACE("camapp->auto_contrast = %d", camapp->auto_contrast);
4416 if (obj != ad->autocontrast_radio) {
4417 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4419 if (camapp->auto_contrast == TRUE) {
4420 camapp->auto_contrast = FALSE;
4421 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4423 camapp->auto_contrast = TRUE;
4424 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4427 /* to reset check button */
4428 if (camapp->auto_contrast == TRUE)
4429 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4431 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4435 GValue value = {0, };
4436 CAM_GVALUE_SET_BOOLEAN(value, camapp->auto_contrast);
4437 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &value);
4439 __update_menubar_icon_by_index(ad, CAM_MENU_AUTO_CONTRAST);
4440 __setting_popup_timeout_checker_start(ad);
4444 void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info)
4446 cam_ret_if(obj == NULL);
4447 struct appdata *ad = (struct appdata *)cam_appdata_get();
4448 cam_retm_if(ad == NULL, "appdata is NULL");
4449 CamAppData *camapp = NULL;
4450 camapp = ad->camapp_handle;
4451 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4453 DEBUG_TRACE("camapp->guideline = %d", camapp->guideline);
4455 if (obj != ad->guideline_radio) {
4456 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4458 if (camapp->guideline == TRUE) {
4459 camapp->guideline = FALSE;
4460 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4462 camapp->guideline = TRUE;
4463 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4466 /* to reset check button */
4467 if (camapp->guideline == TRUE)
4468 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4470 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4474 GValue value = {0, };
4475 CAM_GVALUE_SET_BOOLEAN(value, camapp->guideline);
4476 cam_handle_value_set(ad, PROP_GUIDELINE, &value);
4478 settings_guideline_refresh(ad);
4480 __update_menubar_icon_by_index(ad, CAM_MENU_GUIDELINES);
4481 __setting_popup_timeout_checker_start(ad);
4485 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info)
4487 cam_ret_if(obj == NULL);
4488 struct appdata *ad = (struct appdata *)cam_appdata_get();
4489 cam_retm_if(ad == NULL, "appdata is NULL");
4490 CamAppData *camapp = NULL;
4491 camapp = ad->camapp_handle;
4492 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4494 DEBUG_TRACE("camapp->save_as_flip = %d", camapp->save_as_flip);
4496 if (obj != ad->save_as_flip_radio) {
4497 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4499 if (camapp->save_as_flip == TRUE) {
4500 camapp->save_as_flip = FALSE;
4501 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4503 camapp->save_as_flip = TRUE;
4504 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4507 /* to reset check button */
4508 if (camapp->save_as_flip == TRUE)
4509 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4511 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4515 GValue value = {0, };
4516 CAM_GVALUE_SET_BOOLEAN(value, camapp->save_as_flip);
4517 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &value);
4519 __update_menubar_icon_by_index(ad, CAM_MENU_SAVE_AS_FLIP);
4520 __setting_popup_timeout_checker_start(ad);
4524 static void __voice_cmd_cb(CamVoiceCmdState state, void* data)
4527 case CAM_VOICE_CMD_READY:
4530 char *emission = "release_shutter_sig";
4531 char *source = "temp";
4532 cam_toolbar_shutter_button_cb(data, NULL,
4536 case CAM_VOICE_CMD_REJECT:
4537 // do action - after discuss with UX
4539 case CAM_VOICE_CMD_ERROR:
4540 //do action - after discuss with UX
4547 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info)
4549 cam_ret_if(obj == NULL);
4550 struct appdata *ad = (struct appdata *)cam_appdata_get();
4551 cam_retm_if(ad == NULL, "appdata is NULL");
4552 CamAppData *camapp = NULL;
4553 camapp = ad->camapp_handle;
4554 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4556 DEBUG_TRACE("camapp->capture_by_voice = %d", camapp->capture_by_voice);
4558 if (obj != ad->capture_by_voice_radio) {
4559 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4561 if (camapp->capture_by_voice == TRUE) {
4562 camapp->capture_by_voice = FALSE;
4563 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4565 camapp->capture_by_voice = TRUE;
4566 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4569 /* to reset check button */
4570 if (camapp->capture_by_voice == TRUE)
4571 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4573 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4577 if (camapp->capture_by_voice) {
4578 if ( !cam_voice_cmd_create((cam_voice_cmd_cb)__voice_cmd_cb,ad)) {
4579 cam_voice_cmd_destroy();
4580 camapp->capture_by_voice = FALSE;
4581 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4584 } else cam_voice_cmd_destroy();
4586 __update_menubar_icon_by_index(ad, CAM_MENU_CAPTURE_VOICE);
4587 __setting_popup_timeout_checker_start(ad);
4590 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info)
4592 cam_ret_if(obj == NULL);
4593 struct appdata *ad = (struct appdata *)cam_appdata_get();
4594 cam_retm_if(ad == NULL, "appdata is NULL");
4595 CamAppData *camapp = NULL;
4596 camapp = ad->camapp_handle;
4597 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4599 DEBUG_TRACE("camapp->gps = %d", camapp->gps);
4601 if (obj != ad->gps_radio) {
4602 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4604 if (camapp->gps == TRUE) {
4605 camapp->gps = FALSE;
4606 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4609 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4612 /* to reset check button */
4613 if (camapp->gps == TRUE)
4614 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4616 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4620 GValue value = {0, };
4621 CAM_GVALUE_SET_BOOLEAN(value, camapp->gps);
4622 cam_handle_value_set(ad, PROP_GPS, &value);
4624 __update_menubar_icon_by_index(ad, CAM_MENU_GPS_TAG);
4625 __setting_popup_timeout_checker_start(ad);
4627 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4628 cam_toolbar_setting_popup_destroy(ad);
4631 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info)
4633 DEBUG_TRACE("START");
4635 struct appdata *ad = data;
4636 cam_retm_if(ad == NULL, "appdata is NULL");
4638 gboolean from_setting = FALSE;
4640 if (event_info) { /*call by setting*/
4641 from_setting = TRUE;
4642 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4643 ad->setting_select_item = (Elm_Object_Item *)event_info;
4644 } else { /*call by click icon*/
4645 from_setting = FALSE;
4646 ad->displayed_setting_popup = DISPLAY_STORAGE_POPUP;
4649 __create_setting_listmenu(ad, CAM_MENU_STORAGE, from_setting);
4652 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4654 DEBUG_TRACE("START");
4656 struct appdata *ad = data;
4657 cam_retm_if(ad == NULL, "appdata is NULL");
4659 gboolean from_setting = FALSE;
4661 if (event_info) { /*call by setting*/
4662 from_setting = TRUE;
4663 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4664 ad->setting_select_item = (Elm_Object_Item *)event_info;
4665 } else { /*call by click icon*/
4666 from_setting = FALSE;
4667 ad->displayed_setting_popup = DISPLAY_PHOTO_RESOLUTION_POPUP;
4670 __create_setting_listmenu(ad, CAM_MENU_PHOTO_RESOLUTION, from_setting);
4673 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4675 DEBUG_TRACE("START");
4677 struct appdata *ad = data;
4678 cam_retm_if(ad == NULL, "appdata is NULL");
4680 gboolean from_setting = FALSE;
4682 if (event_info) { /*call by setting*/
4683 from_setting = TRUE;
4684 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4685 ad->setting_select_item = (Elm_Object_Item *)event_info;
4686 } else { /*call by click icon*/
4687 from_setting = FALSE;
4688 ad->displayed_setting_popup = DISPLAY_VIDEO_RESOLUTION_POPUP;
4691 __create_setting_listmenu(ad, CAM_MENU_VIDEO_RESOLUTION, from_setting);
4694 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info)
4696 cam_ret_if(data == NULL);
4697 struct appdata *ad = (struct appdata *)(data);
4698 cam_retm_if(ad == NULL, " appdata is NULL");
4699 gboolean from_setting = FALSE;
4700 if (event_info) { /*call by setting*/
4701 from_setting = TRUE;
4702 } else { /*call by click icon*/
4703 from_setting = FALSE;
4704 ad->displayed_setting_popup = DISPLAY_RESET_POPUP;
4707 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4708 ad->setting_select_item = (Elm_Object_Item *)event_info;
4711 DEL_EVAS_OBJECT(ad->confirm_popup);
4713 ad->confirm_popup = elm_popup_add(ad->ug_base);
4714 evas_object_size_hint_weight_set(ad->confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
4715 elm_popup_timeout_set(ad->confirm_popup, 9.0);
4718 char popup_str[1024 + 1] = { '\0',};
4719 snprintf(popup_str, 1024, "%s%s%s", _("<font=SLP:style=Roman><color=#000000><align=center>"),
4720 dgettext(PACKAGE, "IDS_CAM_POP_RESET_SETTINGS_Q"), _("</align></color></font>"));
4722 elm_object_text_set(ad->confirm_popup, popup_str);
4723 Evas_Object *btn1 = elm_button_add(ad->confirm_popup);
4724 elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
4725 elm_object_part_content_set(ad->confirm_popup, "button1", btn1);
4726 evas_object_smart_callback_add(btn1, "clicked", __restore_defaults_popup_cb_ok_cb, (void*)ad);
4727 Evas_Object *btn2 = elm_button_add(ad->confirm_popup);
4728 elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
4729 elm_object_part_content_set(ad->confirm_popup, "button2", btn2);
4730 evas_object_smart_callback_add(btn2, "clicked", __restore_defaults_popup_cb_cancel_cb, (void*)ad);
4732 evas_object_show(ad->confirm_popup);
4734 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4735 cam_toolbar_setting_popup_destroy(ad);
4738 void settings_guideline_refresh(struct appdata *ad)
4740 cam_retm_if(ad == NULL, "appdata is NULL");
4741 CamAppData *camapp = ad->camapp_handle;
4742 cam_retm_if(camapp == NULL,"camapp is NULL");
4743 DEBUG_TRACE("ad->camapp_handle->guideline = %d" ,ad->camapp_handle->guideline);
4745 if( ad->camapp_handle->guideline == TRUE) {
4746 cam_guideline_create(ad);
4748 if (ad->guideline_edje && ad->toolbar_setting_popup) {
4749 evas_object_hide(ad->guideline_edje);
4751 if (ad->toolbar_edje)
4752 evas_object_raise(ad->toolbar_edje);
4755 DEL_EVAS_OBJECT(ad->guideline_edje);
4759 static Eina_Bool __setting_popup_timeout_checker_cb(void *data)
4761 struct appdata *ad = (struct appdata *)data;
4762 CamAppData *camapp = NULL;
4763 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
4764 camapp = ad->camapp_handle;
4765 if (camapp == NULL) {
4766 if (ad->setting_toolbar_hide_timer)
4767 ad->setting_toolbar_hide_timer = NULL;
4768 return ECORE_CALLBACK_CANCEL;
4771 if (ad->setting_toolbar_hide_timer)
4772 ad->setting_toolbar_hide_timer = NULL;
4773 gdouble diff_time = 0.0;
4774 diff_time = _get_current_time() - camapp->start_time;
4775 if ((cam_mm_get_state() == CAMERA_STATE_PREVIEW)
4776 && (diff_time >= CAM_SETTING_POPUP_TIMEOUT)) {
4777 DEBUG_TRACE("destroy setting pupup");
4778 if (ad->setting_toolbar_hide_timer) {
4779 if (ad->setting_ctxpopup) {
4780 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4781 cam_toolbar_setting_popup_destroy(ad);
4782 if (ad->shot_mode_guide_popup)
4783 toolbar_shot_guide_popup_create(ad, ad->camapp_handle->shooting_mode);
4784 } else if (ad->toolbar_setting_popup) {
4785 cam_toolbar_setting_popup_destroy(ad);
4788 if (ad->edit_shortcuts_popup_scroll) {
4789 toolbar_destroy_shortcuts_popup(ad);
4793 return ECORE_CALLBACK_CANCEL;
4796 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad)
4798 DEBUG_TRACE("START");
4799 CamAppData *camapp = NULL;
4800 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4801 camapp = ad->camapp_handle;
4802 cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
4803 if (ad->setting_toolbar_hide_timer) {
4804 ecore_timer_del(ad->setting_toolbar_hide_timer);
4805 ad->setting_toolbar_hide_timer = NULL;
4807 ad->setting_toolbar_hide_timer =
4808 ecore_timer_add(CAM_SETTING_POPUP_TIMEOUT, __setting_popup_timeout_checker_cb, ad);
4809 camapp->start_time = _get_current_time();
4814 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item)
4816 int menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
4817 Evas_Object *icon = NULL;
4818 __get_menubar_shortcuts_info(ad, menu_item, &menu_bar_no, &icon);
4822 /*note: output menu index, input display popup value*/
4823 int cam_toolbar_displaypopup_map_menu_value(int display_popup)
4825 switch (display_popup) {
4826 case DISPLAY_NONE_POPUP:
4827 return CAM_MENU_EMPTY;
4829 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4830 return CAM_MENU_SHORTCUTS;
4832 case DISPLAY_BURST_SHOT_MODE_POPUP:
4833 return CAM_MENU_BURST_SHOT_MODE;
4835 case DISPLAY_VOLUME_KEY_POPUP:
4836 return CAM_MENU_VOLUME_KEY;
4838 case DISPLAY_SELF_PORTRAIT_POPUP:
4839 return CAM_MENU_SELF_PORTRAIT;
4841 case DISPLAY_SCENE_MODE_POPUP:
4842 return CAM_MENU_SCENE_MODE;
4844 case DISPLAY_FOCUS_MODE_POPUP:
4845 return CAM_MENU_FOCUS_MODE;
4847 case DISPLAY_EFFECTS_POPUP:
4848 return CAM_MENU_EFFECTS;
4850 case DISPLAY_ANTI_SHAKE_POPUP:
4851 return CAM_MENU_ANTI_SHAKE;
4853 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4854 return CAM_MENU_OUTDOOR_VISIBILITY;
4856 case DISPLAY_AUTO_CONTRAST_POPUP:
4857 return CAM_MENU_AUTO_CONTRAST;
4859 case DISPLAY_GUIDELINES_POPUP:
4860 return CAM_MENU_GUIDELINES;
4862 case DISPLAY_CAPTURE_VOICE_POPUP:
4863 return CAM_MENU_CAPTURE_VOICE;
4865 case DISPLAY_GPS_TAG_POPUP:
4866 return CAM_MENU_GPS_TAG;
4868 case DISPLAY_STORAGE_POPUP:
4869 return CAM_MENU_STORAGE;
4871 case DISPLAY_RESET_POPUP:
4872 return CAM_MENU_RESET;
4874 case DISPLAY_SHOOTING_MODE_POPUP:
4875 return CAM_MENU_SHOOTING_MODE;
4877 case DISPLAY_RECORDING_MODE_POPUP:
4878 return CAM_MENU_RECORDING_MODE;
4880 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4881 return CAM_MENU_VIDEO_RESOLUTION;
4883 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4884 return CAM_MENU_PHOTO_RESOLUTION;
4886 case DISPLAY_ISO_POPUP:
4887 return CAM_MENU_ISO;
4889 case DISPLAY_METERING_POPUP:
4890 return CAM_MENU_METERING;
4892 case DISPLAY_WHITE_BALANCE_POPUP:
4893 return CAM_MENU_WHITE_BALANCE;
4895 case DISPLAY_FLASH_POPUP:
4896 return CAM_MENU_FLASH;
4898 case DISPLAY_TIMER_POPUP:
4899 return CAM_MENU_TIMER;
4901 case DISPLAY_SAVE_AS_FLIP:
4902 return CAM_MENU_SAVE_AS_FLIP;
4904 return CAM_MENU_EMPTY;
4909 Eina_Bool cam_show_setting_menu_option_popup(void *data)
4911 struct appdata *ad = (struct appdata *)data;
4912 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4914 switch (ad->displayed_setting_popup) {
4915 case DISPLAY_NONE_POPUP:
4917 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4918 __setting_edit_shortcut_popup_cb(ad, NULL, NULL);
4920 case DISPLAY_VOLUME_KEY_POPUP:
4921 __setting_volume_key_popup_cb(ad, NULL, NULL);
4923 case DISPLAY_SELF_PORTRAIT_POPUP:
4924 __setting_self_portrait_popup_cb(ad, NULL, NULL);
4926 case DISPLAY_SCENE_MODE_POPUP:
4927 __setting_scenemode_popup_cb(ad, NULL, NULL);
4929 case DISPLAY_FOCUS_MODE_POPUP:
4930 __setting_focus_mode_cb(ad, NULL, NULL);
4932 case DISPLAY_EFFECTS_POPUP:
4933 __setting_effects_popup_cb(ad, NULL, NULL);
4935 case DISPLAY_ANTI_SHAKE_POPUP:
4936 __setting_anti_shake_popup_cb(ad, NULL, NULL);
4938 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4939 __setting_outdoor_visibility_popup_cb(ad, NULL, NULL);
4941 case DISPLAY_AUTO_CONTRAST_POPUP:
4942 __setting_autocontrast_popup_cb(ad, NULL, NULL);
4944 case DISPLAY_GUIDELINES_POPUP:
4945 __setting_guideline_popup_cb(ad, NULL, NULL);
4947 case DISPLAY_CAPTURE_VOICE_POPUP:
4948 __setting_capture_by_voice_popup_cb(ad, NULL, NULL);
4950 case DISPLAY_GPS_TAG_POPUP:
4951 __setting_gps_popup_cb(ad, NULL, NULL);
4953 case DISPLAY_STORAGE_POPUP:
4954 __setting_storage_popup_cb(ad, NULL, NULL);
4956 case DISPLAY_RESET_POPUP:
4957 __setting_restore_defaults_popup_cb(ad, NULL, NULL);
4959 case DISPLAY_SHOOTING_MODE_POPUP:
4960 __setting_shot_mode_popup_cb(ad, NULL, NULL);
4962 case DISPLAY_RECORDING_MODE_POPUP:
4963 __setting_record_mode_popup(ad, NULL, NULL);
4965 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4966 __setting_video_resolution_popup_cb(ad, NULL, NULL);
4968 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4969 __setting_photo_resolution_popup_cb(ad, NULL, NULL);
4971 case DISPLAY_ISO_POPUP:
4972 __setting_iso_popup_cb(ad, NULL, NULL);
4974 case DISPLAY_METERING_POPUP:
4975 __setting_metering_popup_cb(ad, NULL, NULL);
4977 case DISPLAY_WHITE_BALANCE_POPUP:
4978 __setting_wb_popup_cb(ad, NULL, NULL);
4980 case DISPLAY_FLASH_POPUP:
4981 __setting_flash_popup(ad, NULL, NULL);
4983 case DISPLAY_TIMER_POPUP:
4984 __setting_timer_popup_cb(ad,NULL,NULL);
4986 case DISPLAY_SAVE_AS_FLIP:
4987 __setting_save_as_flip_popup_cb(ad, NULL, NULL);
4993 return ECORE_CALLBACK_CANCEL;
4996 Eina_Bool cam_show_setting_menu(void *data)
4998 struct appdata *ad = (struct appdata *)data;
4999 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
5001 if (ad->show_setting_popup_after_rotate == TRUE) {
5002 cam_toolbar_setting_popup_create(ad);
5003 } else if (ad->show_edit_shortcuts_popup_after_rotate == TRUE) {
5004 toolbar_create_shortcuts_popup(ad);
5007 if (ad->displayed_setting_popup != DISPLAY_NONE_POPUP) {
5008 ecore_idler_add(cam_show_setting_menu_option_popup, ad);
5011 ad->is_rotating = FALSE;
5013 return ECORE_CALLBACK_CANCEL;
5016 void toolbar_destroy_shortcuts_popup(struct appdata *ad)
5018 cam_retm_if(ad == NULL, "appdata is null");
5019 cam_retm_if(ad->toolbar_edje == NULL, "appdata is null");
5020 elm_object_part_content_unset(ad->toolbar_edje, "shortcuts_popup");
5022 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_scroll);
5023 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
5024 ad->edit_shortcuts_popup_scroll = NULL;
5025 ad->edit_shortcuts_popup_ctx = NULL;
5026 ad->edit_shortcuts_popup = NULL;
5029 __cam_toolbar_edit_shortcuts_data_clean();
5031 destroy_menubar_shortcuts_mouse_event(ad, 0, TRUE);
5034 /*TODO: here should be rotate icon*/
5036 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5037 "toolbar_1_icon,normal", "prog");
5038 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5039 "toolbar_2_icon,normal", "prog");
5040 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5041 "toolbar_3_icon,normal", "prog");
5042 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5043 "toolbar_4_icon,normal", "prog");
5045 __set_show_state_preview_obj(ad, TRUE);
5048 for (i = CAM_MENU_EMPTY + 1; i < CAM_MENU_MAX_NUMS; i++) {
5049 __update_menubar_icon_by_index(ad, i);
5053 void cam_toolbar_setting_popup_destroy(struct appdata *ad)
5055 cam_retm_if(ad == NULL, "appdata is null");
5058 if (ad->setting_ctxpopup)
5059 setting_ctxpopup_destroy(ad);
5062 elm_genlist_clear(ad->genlist);
5063 evas_object_del(ad->genlist);
5067 DEL_EVAS_OBJECT(ad->toolbar_setting_popup);
5068 ad->toolbar_setting_popup_area = NULL;
5069 ad->setting_select_item = NULL; /*select item*/
5071 /*elm_all_flush();*/
5072 cam_elm_cache_flush();
5074 __set_show_state_preview_obj(ad, TRUE);
5077 void cam_toolbar_setting_popup_update(struct appdata *ad)
5079 cam_retm_if(ad == NULL, "appdata is null");
5081 if (!ad->toolbar_setting_popup)
5084 if (ad->setting_ctxpopup)
5085 setting_ctxpopup_destroy(ad);
5087 __update_setting_popup(ad);
5090 static Evas_Object *_setting_gl_icon_get(void *data, Evas_Object *obj, const char *part)
5092 struct appdata *ad = (struct appdata *)cam_appdata_get();
5093 cam_retvm_if(ad == NULL, NULL, "appdata is null");
5095 int index = (int)data;
5097 CamAppData *camapp = ad->camapp_handle;
5098 cam_retv_if(camapp == NULL, NULL);
5099 Evas_Object *icon = NULL;
5102 case CAM_MENU_SHORTCUTS:
5105 case CAM_MENU_BURST_SHOT_MODE:
5107 icon = elm_check_add(obj);
5109 if (ad->camapp_handle->burst_shot) {
5110 elm_check_state_set(icon, EINA_TRUE);
5112 elm_check_state_set(icon, EINA_FALSE);
5115 elm_object_style_set(icon, "genlist/on&off");
5116 evas_object_smart_callback_add(icon, "changed", __setting_burst_shot_popup_cb, (void*)ad);
5117 ad->burst_shot_mode_radio = icon;
5120 case CAM_MENU_VOLUME_KEY:
5122 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5123 icon = elm_image_add(obj);
5124 strncpy(icon_name, __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), BUTTON_STATE_NORMAL), sizeof(icon_name));
5125 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5128 case CAM_MENU_SELF_PORTRAIT:
5129 icon = elm_check_add(obj);
5131 if (camapp->self_portrait == FALSE) {
5132 elm_check_state_set(icon, EINA_FALSE);
5134 elm_check_state_set(icon, EINA_TRUE);
5137 elm_object_style_set(icon, "genlist/on&off");
5139 case CAM_MENU_FLASH:
5141 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5142 icon = elm_image_add(obj);
5143 strncpy(icon_name, __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), BUTTON_STATE_NORMAL), sizeof(icon_name));
5144 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5147 case CAM_MENU_SHOOTING_MODE:
5149 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5150 icon = elm_image_add(obj);
5151 strncpy(icon_name, __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5152 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5155 case CAM_MENU_RECORDING_MODE:
5157 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5158 icon = elm_image_add(obj);
5159 strncpy(icon_name, __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5160 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5163 case CAM_MENU_SCENE_MODE:
5165 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5166 icon = elm_image_add(obj);
5167 strncpy(icon_name, __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5168 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5171 case CAM_MENU_EXPLOSURE_VALUE:
5173 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5174 icon = elm_image_add(obj);
5175 strncpy(icon_name, __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, BUTTON_STATE_NORMAL), sizeof(icon_name));
5176 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5179 case CAM_MENU_FOCUS_MODE:
5181 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5182 icon = elm_image_add(obj);
5183 strncpy(icon_name, __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5184 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5187 case CAM_MENU_TIMER:
5189 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5190 icon = elm_image_add(obj);
5191 strncpy(icon_name, __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), BUTTON_STATE_NORMAL), sizeof(icon_name));
5192 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5195 case CAM_MENU_EFFECTS:
5197 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5198 icon = elm_image_add(obj);
5199 strncpy(icon_name, __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), BUTTON_STATE_NORMAL), sizeof(icon_name));
5200 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5203 case CAM_MENU_PHOTO_RESOLUTION:
5205 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5206 icon = elm_image_add(obj);
5207 strncpy(icon_name, __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5208 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5211 case CAM_MENU_VIDEO_RESOLUTION:
5213 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5214 icon = elm_image_add(obj);
5215 strncpy(icon_name, __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5216 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5219 case CAM_MENU_WHITE_BALANCE:
5221 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5222 icon = elm_image_add(obj);
5223 strncpy(icon_name, __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), BUTTON_STATE_NORMAL), sizeof(icon_name));
5224 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5229 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5230 icon = elm_image_add(obj);
5231 strncpy(icon_name, __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), BUTTON_STATE_NORMAL), sizeof(icon_name));
5232 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5235 case CAM_MENU_METERING:
5237 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5238 icon = elm_image_add(obj);
5239 strncpy(icon_name, __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), BUTTON_STATE_NORMAL), sizeof(icon_name));
5240 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5243 case CAM_MENU_ANTI_SHAKE:
5244 icon = elm_check_add(obj);
5246 if (ad->camapp_handle->anti_shake) {
5247 elm_check_state_set(icon, EINA_TRUE);
5249 elm_check_state_set(icon, EINA_FALSE);
5252 elm_object_style_set(icon, "genlist/on&off");
5253 evas_object_smart_callback_add(icon, "changed", __setting_anti_shake_popup_cb, (void*)ad);
5254 ad->antishake_radio = icon;
5256 case CAM_MENU_OUTDOOR_VISIBILITY:/*TODO:is finding solution*/
5257 icon = elm_check_add(obj);
5259 if (ad->camapp_handle->outdoor_visibility) {
5260 elm_check_state_set(icon, EINA_TRUE);
5262 elm_check_state_set(icon, EINA_FALSE);
5265 elm_object_style_set(icon, "genlist/on&off");
5266 evas_object_smart_callback_add(icon, "changed", __setting_outdoor_visibility_popup_cb, (void*)ad);
5267 ad->outdoor_visibility_radio = icon;
5269 case CAM_MENU_AUTO_CONTRAST:
5270 icon = elm_check_add(obj);
5272 if (ad->camapp_handle->auto_contrast) {
5273 elm_check_state_set(icon, EINA_TRUE);
5276 elm_check_state_set(icon, EINA_FALSE);
5278 elm_object_style_set(icon, "genlist/on&off");
5279 evas_object_smart_callback_add(icon, "changed", __setting_autocontrast_popup_cb, (void*)ad);
5280 ad->autocontrast_radio = icon;
5283 case CAM_MENU_GUIDELINES:
5284 icon = elm_check_add(obj);
5286 if (ad->camapp_handle->guideline) {
5287 elm_check_state_set(icon, EINA_TRUE);
5289 elm_check_state_set(icon, EINA_FALSE);
5292 elm_object_style_set(icon, "genlist/on&off");
5293 evas_object_smart_callback_add(icon, "changed", __setting_guideline_popup_cb, (void*)ad);
5294 ad->guideline_radio = icon;
5296 case CAM_MENU_CAPTURE_VOICE:/*TODO:now no relase solution to support it*/
5297 icon = elm_check_add(obj);
5299 if (ad->camapp_handle->capture_by_voice) {
5300 elm_check_state_set(icon, EINA_TRUE);
5302 elm_check_state_set(icon, EINA_FALSE);
5305 elm_object_style_set(icon, "genlist/on&off");
5306 evas_object_smart_callback_add(icon, "changed", __setting_capture_by_voice_popup_cb, (void*)ad);
5307 ad->capture_by_voice_radio = icon;
5309 case CAM_MENU_GPS_TAG:
5310 icon = elm_check_add(obj);
5313 elm_check_state_set(icon, EINA_TRUE);
5315 elm_check_state_set(icon, EINA_FALSE);
5318 elm_object_style_set(icon, "genlist/on&off");
5319 evas_object_smart_callback_add(icon, "changed", __setting_gps_popup_cb, (void*)ad);
5320 ad->gps_radio = icon;
5322 case CAM_MENU_SAVE_AS_FLIP:
5323 icon = elm_check_add(obj);
5325 if (ad->camapp_handle->save_as_flip) {
5326 elm_check_state_set(icon, EINA_TRUE);
5328 elm_check_state_set(icon, EINA_FALSE);
5331 elm_object_style_set(icon, "genlist/on&off");
5332 evas_object_smart_callback_add(icon, "changed", __setting_save_as_flip_popup_cb, (void*)ad);
5333 ad->save_as_flip_radio = icon;
5335 case CAM_MENU_STORAGE:
5337 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5338 icon = elm_image_add(obj);
5339 strncpy(icon_name, __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), BUTTON_STATE_NORMAL), sizeof(icon_name));
5340 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5343 case CAM_MENU_RESET:
5345 case CAM_MENU_MAX_NUMS:
5346 DEBUG_TRACE("your array out, please check!");
5349 DEBUG_TRACE("Error occur!");
5352 /*evas_object_resize(icon, 86 , 84);
5353 evas_object_size_hint_min_set(icon, 86, 84);
5354 evas_object_size_hint_max_set(icon, 86, 84);*/
5355 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5356 evas_object_size_hint_align_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5361 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part)
5363 int index = (int)data;
5366 case CAM_MENU_SHORTCUTS:
5367 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EDIT_SHORTCUTS"));
5369 case CAM_MENU_BURST_SHOT_MODE:
5370 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB"));
5372 case CAM_MENU_VOLUME_KEY:
5373 return strdup(dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"));
5375 case CAM_MENU_SELF_PORTRAIT:
5376 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT"));
5378 case CAM_MENU_FLASH:
5379 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FLASH"));
5381 case CAM_MENU_SHOOTING_MODE:
5382 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE"));
5384 case CAM_MENU_RECORDING_MODE:
5385 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE"));
5387 case CAM_MENU_SCENE_MODE:
5388 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE"));
5390 case CAM_MENU_EXPLOSURE_VALUE:
5391 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE"));
5393 case CAM_MENU_FOCUS_MODE:
5394 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE"));
5396 case CAM_MENU_TIMER:
5397 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_TIMER"));
5399 case CAM_MENU_EFFECTS:
5400 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS"));
5402 case CAM_MENU_PHOTO_RESOLUTION:
5403 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"));
5405 case CAM_MENU_VIDEO_RESOLUTION:
5406 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"));
5408 case CAM_MENU_WHITE_BALANCE:
5409 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB"));
5412 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ISO"));
5414 case CAM_MENU_METERING:
5415 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_METERING"));
5417 case CAM_MENU_ANTI_SHAKE:
5418 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE"));
5420 case CAM_MENU_OUTDOOR_VISIBILITY:
5421 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY"));
5423 case CAM_MENU_AUTO_CONTRAST:
5424 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST"));
5426 case CAM_MENU_GUIDELINES:
5427 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE"));
5429 case CAM_MENU_CAPTURE_VOICE:
5430 return strdup("Capture with voice");
5432 case CAM_MENU_GPS_TAG:
5433 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG"));
5435 case CAM_MENU_SAVE_AS_FLIP:
5436 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED"));
5438 case CAM_MENU_STORAGE:
5439 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE"));
5441 case CAM_MENU_RESET:
5442 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET"));
5444 case CAM_MENU_MAX_NUMS:
5445 DEBUG_TRACE("your array out, please check!");
5448 DEBUG_TRACE("Error occur!");
5450 return strdup("test");
5453 static void __setting_gl_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5456 struct appdata *ad = (struct appdata *)data;
5458 if (!event_info) return;
5459 if (ad->setting_ctxpopup) {
5460 /*setting_ctxpopup_destroy(ad);*/
5461 evas_object_hide(ad->setting_ctxpopup);
5463 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5464 setting_gl_x = mu->canvas.x;
5465 setting_gl_y = mu->canvas.y;
5466 setting_gl_x = mu->output.x;
5467 setting_gl_y = mu->output.y;
5468 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5469 DEBUG_TRACE("mu->output.x = %d, mu->output.y = %d", mu->output.x, mu->output.y);
5471 __setting_popup_timeout_checker_start(ad);
5472 cam_app_timeout_checker_update();
5475 /*mouse move func for setting popup*/
5476 static void __setting_gl_mouse_move(void *data, Evas * evas, Evas_Object *obj,
5479 struct appdata *ad = (struct appdata *)data;
5481 if (!event_info) return;
5482 if (ad->setting_ctxpopup) {
5483 /*setting_ctxpopup_destroy(ad);*/
5484 evas_object_hide(ad->setting_ctxpopup);
5486 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
5487 setting_gl_x = mu->cur.canvas.x;
5488 setting_gl_y = mu->cur.canvas.y;
5489 setting_gl_x = mu->cur.output.x;
5490 setting_gl_y = mu->cur.output.y;
5491 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5492 DEBUG_TRACE("mu->cur->canvas.x = %d, mu->cur->canvas.y = %d", mu->cur.canvas.x, mu->cur.canvas.y);
5494 __setting_popup_timeout_checker_start(ad);
5495 cam_app_timeout_checker_update();
5498 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5501 struct appdata *ad = (struct appdata *)data;
5503 cam_app_timeout_checker_update();
5504 __setting_popup_timeout_checker_start(ad);
5505 if (!event_info) return;
5506 Evas_Coord x, y, w, h;
5508 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5509 shortcuts_canvas_prev_x = mu->canvas.x;
5510 shortcuts_canvas_prev_y = mu->canvas.y;
5511 DEBUG_TRACE("x = %d, y = %d", shortcuts_canvas_prev_x, shortcuts_canvas_prev_y);
5513 cam_long_press_trigger(LONG_PRESS_ID_EDIT, mu->canvas.x, mu->canvas.y);
5515 evas_object_geometry_get(obj, &x, &y, &w, &h);
5516 Eina_List *l = NULL;
5517 ShortCutData *shortcuts_ele = NULL;
5519 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5520 if (shortcuts_ele == NULL)
5522 evas_object_geometry_get(shortcuts_ele->icon, &x, &y, &w, &h);
5523 shortcuts_ele->x = x;
5524 shortcuts_ele->y = y;
5525 shortcuts_ele->w = w;
5526 shortcuts_ele->h = h;
5527 DEBUG_TRACE("x,%d y,%d w,%d h,%d index %d",x, y, w, h, shortcuts_ele->part_index);
5529 if (obj == shortcuts_ele->icon) {
5530 ad->shortcut_data = shortcuts_ele;
5533 if (!ad->shortcut_data) { /*not find shortcut data, so it will come from menubar*/
5534 int menubar_no = -1;
5535 if (check_if_shortcuts_from_menubar(ad, obj, &menubar_no)) {
5536 /*get shortcuts data:*/
5537 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5538 if (shortcuts_ele == NULL)
5540 if (shortcuts_ele->menu_bar_no == menubar_no) {
5541 ad->shortcut_data = shortcuts_ele;
5545 DEBUG_TRACE("error occur!");
5548 DEBUG_TRACE("find in the shortcuts panel");
5551 evas_object_raise(obj);
5552 evas_object_lower(evas_object_above_get(obj));
5556 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj,void *event_info)
5559 struct appdata *ad = (struct appdata *)data;
5561 if (!event_info) return;
5562 pthread_mutex_lock(&edit_shortcuts_move_mutex);
5563 ShortCutData *moving_ele = ad->shortcut_data;
5564 ShortCutData *swap_ele = ad->swap_data;
5566 /*NOTE: reset opacity*/
5567 if (ad->swap_data) {
5568 if (ad->swap_data->is_on_menu_bar) {
5571 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
5572 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
5573 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
5578 if (ad->swap_data->icon) {
5579 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
5580 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
5586 if (swap_ele && swap_ele->setting_type >= 0) {
5587 if ((swap_ele->is_on_menu_bar & moving_ele->is_on_menu_bar) == TRUE) {/*note: both in menubar*/
5588 __swap_menubar_shortcuts(ad, moving_ele, swap_ele);
5589 cam_toolbar_menu_config_update((void *)ad);
5590 } else if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
5591 DEBUG_TRACE("do nothing in mouse up");
5592 } else {/*note: one is in menubar, one is not*/
5593 if (swap_ele->is_on_menu_bar == TRUE) {/*note: swap_ele is on menubar*/
5594 evas_object_event_callback_del(obj,
5595 EVAS_CALLBACK_MOUSE_MOVE,
5596 __setting_shortcuts_mouse_move);
5597 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
5598 } else {/*note: swap_ele is not on menubar*/
5599 moving_ele->is_on_menu_bar = FALSE;
5600 int tmp_menub_bar_no = moving_ele->menu_bar_no;
5601 moving_ele->menu_bar_no = -1;
5602 DEL_EVAS_OBJECT(obj);
5603 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
5604 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5605 cam_toolbar_menu_config_update((void *)ad);
5606 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5608 /*TODO: update part_index*/
5609 __edit_shortcuts_layout_shortcuts_insert(ad, swap_ele, moving_ele);
5613 if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar)) {
5614 /*note: menu bar shortcuts move to the empty item in toolbar*/
5615 if (moving_ele->is_on_menu_bar) {
5616 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5618 moving_ele->is_on_menu_bar = TRUE;
5619 moving_ele->menu_bar_no = swap_ele->menu_bar_no;
5620 moving_ele->part_index = -1;
5621 ad->toolbar_menu_arrays[moving_ele->menu_bar_no].menu_type = moving_ele->setting_type;
5622 cam_toolbar_menu_config_update((void *)ad);
5623 update_menubar_shortcuts_mouse_event(ad, moving_ele->menu_bar_no, FALSE);
5624 evas_object_hide(moving_ele->icon);
5627 ad->swap_data = NULL;
5628 } else if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar == FALSE)) {
5629 /*note: case: menubar shortcuts move to the empty item in edit short panel: flash|empty(move to here)|empty*/
5630 if (moving_ele->is_on_menu_bar) {
5631 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5633 moving_ele->is_on_menu_bar = FALSE;
5634 moving_ele->menu_bar_no = -1;
5635 moving_ele->part_index = swap_ele->part_index;
5636 moving_ele->list_index = swap_ele->list_index;
5637 cam_toolbar_menu_config_update((void *)ad);
5638 evas_object_show(moving_ele->icon);
5639 HIDE_EVAS_OBJECT(obj);
5642 ad->swap_data = NULL;
5643 __resort_edit_shortcuts_list_by_part_index();
5645 ad->swap_data = NULL;
5646 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5647 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
5651 bool shortcuts_rect_check_intersect(Evas_Coord a_left, Evas_Coord a_top, Evas_Coord a_right, Evas_Coord a_bottom,
5652 Evas_Coord b_left, Evas_Coord b_top, Evas_Coord b_right, Evas_Coord b_bottom)
5654 if( (MIN(a_right, b_right) - MAX(a_left, b_left) > 60)
5655 && (MIN(a_bottom, b_bottom) - MAX(a_top, b_top)> 30)) {
5663 /*note: parent_shortcuts is swap_ele, sub_shortcuts is cur_ele, if cur_ele is in swap_ele, not swap them*/
5664 gboolean __cam_toolbar_shortcuts_rect_contain_check(CAM_Edit_ShortCuts_Rect sub_shortcuts,
5665 CAM_Edit_ShortCuts_Rect parent_shortcuts,
5669 int swap_rel1_x, swap_rel1_y, swap_w, swap_h;
5670 int cur_rel1_x, cur_rel1_y, cur_w, cur_h;
5671 cur_rel1_x = sub_shortcuts.x;
5672 cur_rel1_y = sub_shortcuts.y;
5673 cur_w = sub_shortcuts.w;
5674 cur_h = sub_shortcuts.h;
5676 swap_rel1_x = parent_shortcuts.x;
5677 swap_rel1_y = parent_shortcuts.y;
5678 swap_w = parent_shortcuts.w;
5679 swap_h = parent_shortcuts.h;
5681 return __shortcuts_rect_contain_check(swap_rel1_x, swap_rel1_y, swap_w, swap_h,
5682 cur_rel1_x, cur_rel1_y, cur_w, cur_h,
5683 correction_w, correction_h);
5686 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
5697 int a_rel1_x = swap_rel1_x - correction_w;
5698 int a_rel1_y = swap_rel1_y - correction_h;
5701 a_rel2_x = swap_rel1_x + cur_w + correction_w;
5703 a_rel2_x = swap_rel1_x + swap_w + correction_w;
5706 a_rel2_y = swap_rel1_y + cur_h + correction_h;
5708 a_rel2_y = swap_rel1_y + swap_h + correction_h;
5710 int b_rel1_x = cur_rel1_x;
5711 int b_rel1_y = cur_rel1_y;
5712 int b_rel2_x = cur_rel1_x + cur_w;
5713 int b_rel2_y = cur_rel1_y + cur_h;
5715 if ((a_rel1_x < b_rel1_x)
5716 &&(a_rel1_y < b_rel1_y)
5717 &&(a_rel2_x > b_rel2_x)
5718 &&(a_rel2_y > b_rel2_y)
5730 @item_2:behind item_1
5732 void shortcuts_swap(Eina_List **head, Eina_List * item_1, Eina_List * item_2)
5735 Eina_List *tmp_item_1_next = item_1->next;
5736 Eina_List *tmp_item_2_prev = item_2->prev;
5737 if(item_1->prev!=NULL)
5738 item_1->prev->next = item_2;
5742 item_2->prev = item_1->prev;
5744 item_1->next = item_2->next;
5746 if(item_2->next!=NULL)
5747 item_2->next->prev = item_1;
5749 if (tmp_item_1_next == item_2) { /*item_1->item_2*/
5750 item_2->next = item_1;
5751 item_1->prev = item_2;
5752 } else {/*item_1->....->item_2*/
5753 tmp_item_1_next->prev = item_2;
5754 item_2->next = tmp_item_1_next;
5755 tmp_item_2_prev->next = item_1;
5756 item_1->prev = tmp_item_2_prev;
5760 static void __swap_menubar_shortcuts_ctx(struct appdata *ad, ShortCutData *menu_ele, ShortCutData *cur_ele)
5762 if (!cur_ele || !ad || !menu_ele)
5764 cur_ele->is_on_menu_bar = TRUE;
5765 cur_ele->menu_bar_no = menu_ele->menu_bar_no;
5766 DEBUG_TRACE("cur_ele->menu_bar_no = %d", cur_ele->menu_bar_no);
5767 if (cur_ele->menu_bar_no > CAM_MENU_BAR_LEFT_4 || cur_ele->menu_bar_no < CAM_MENU_BAR_LEFT_0) {
5768 cam_critical(LOG_UI, "menubar no error, check it ASAP");
5773 ad->toolbar_menu_arrays[cur_ele->menu_bar_no].menu_type = cur_ele->setting_type;
5774 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5776 menu_ele->is_on_menu_bar = FALSE;
5777 menu_ele->menu_bar_no = -1;
5778 char buf[16] = { 0 };
5779 snprintf(buf, sizeof(buf),"row.%d", menu_ele->part_index);
5780 DEBUG_TRACE("PART:%s", buf);
5781 evas_object_show(menu_ele->icon);
5782 evas_object_hide(cur_ele->icon);
5783 snprintf(buf, sizeof(buf),"row.%d", cur_ele->part_index);
5784 DEBUG_TRACE("PART:%s", buf);
5785 cam_toolbar_menu_config_update((void *)ad);
5789 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect)
5792 Evas_Coord x=0, y=0, w=0, h=0;
5794 evas_object_geometry_get(shortcuts_icon, &x, &y, &w, &h);
5801 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no)
5804 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0)
5807 ad->toolbar_menu_arrays[menubar_no].menu_type = -1;
5808 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5809 edje_object_part_unswallow(_EDJ(ad->toolbar_edje), icon);
5810 DEL_EVAS_OBJECT(icon);
5811 icon = elm_image_add(ad->toolbar_edje);
5812 elm_image_file_set(icon, NULL, NULL);
5813 char buf[32+1] = {'\0',};
5814 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5815 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5816 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5820 * note: check moving shortcuts with possible empty shortcuts in menubar,
5821 * if find, and moving shortcuts is in the empty shortcuts area, push this moving
5822 * shortcuts in this empty shortcuts. and return true, else return false
5824 gboolean check_with_menubar_empty_shortcuts(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5826 if (!ad || !moving_ele ||!moving_obj)
5828 CAM_Edit_ShortCuts_Rect sub_rect;
5829 ShortCutData *cur_ele = moving_ele;
5830 __get_shortcuts_rect(moving_obj, &sub_rect);
5833 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5834 int type = ad->toolbar_menu_arrays[i].menu_type;
5835 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5837 CAM_Edit_ShortCuts_Rect parent_rect;
5838 __get_shortcuts_rect(icon, &parent_rect);
5839 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
5840 gboolean sub_in_parent = FALSE;
5841 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
5845 if (sub_in_parent) {
5846 if (cur_ele->is_on_menu_bar) {
5847 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
5849 cur_ele->is_on_menu_bar = TRUE;
5850 cur_ele->menu_bar_no = i;
5851 cur_ele->part_index = -1;
5852 ad->toolbar_menu_arrays[i].menu_type = cur_ele->setting_type;
5853 cam_toolbar_menu_config_update((void *)ad);
5855 update_menubar_shortcuts_mouse_event(ad, i, FALSE);
5857 evas_object_hide(cur_ele->icon);
5858 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5867 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no)
5869 if (!obj || !ad || !menubar_no)
5872 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5873 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5883 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele)
5886 Evas_Object_Event_Cb func;
5887 CAM_MENU_ITEM setting_type;
5888 char *icon_filepath;
5891 gboolean is_on_menu_bar;
5892 Evas_Coord x, y, w, h;
5898 icon = cur_ele->icon;
5899 func = cur_ele->func;
5900 setting_type = cur_ele->setting_type;
5901 icon_filepath = cur_ele->icon_filepath;
5902 name = cur_ele->name;
5903 menu_bar_no = cur_ele->menu_bar_no;
5904 is_on_menu_bar = cur_ele->is_on_menu_bar;
5909 part_index = cur_ele->part_index;
5910 list_index = cur_ele->list_index;
5914 cur_ele->icon = swap_ele->icon;
5915 cur_ele->func = swap_ele->func;
5916 cur_ele->setting_type = swap_ele->setting_type;
5917 cur_ele->icon_filepath = swap_ele->icon_filepath;
5918 cur_ele->name = swap_ele->name;
5919 /*cur_ele->menu_bar_no = swap_ele->menu_bar_no;*/
5920 cur_ele->is_on_menu_bar = swap_ele->is_on_menu_bar;
5921 cur_ele->x = swap_ele->x;
5922 cur_ele->y = swap_ele->y;
5923 cur_ele->w = swap_ele->w;
5924 cur_ele->h = swap_ele->h;
5925 cur_ele->part_index = swap_ele->part_index;
5926 /*cur_ele->list_index = swap_ele->list_index;*/
5927 cur_ele->row = swap_ele->row;
5928 cur_ele->col = swap_ele->col;
5930 swap_ele->icon = icon;
5931 swap_ele->func = func;
5932 swap_ele->setting_type = setting_type;
5933 swap_ele->icon_filepath = icon_filepath;
5934 swap_ele->name = name;
5935 /*swap_ele->menu_bar_no = menu_bar_no;*/
5936 swap_ele->is_on_menu_bar = is_on_menu_bar;
5941 swap_ele->part_index = part_index;
5942 /*swap_ele->list_index = swap_ele->list_index;*/
5943 swap_ele->row = row;
5944 swap_ele->col = col;
5948 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
5953 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
5955 ad->toolbar_menu_arrays[menubar_no].menu_type = setting_type;
5956 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5957 DEL_EVAS_OBJECT(icon);
5958 icon = elm_image_add(ad->toolbar_edje);
5959 char buf[32 + 1] = { '\0', };
5960 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5961 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5962 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5963 __update_menubar_icon_by_index(ad, setting_type);
5966 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele)
5968 __shortcuts_data_swap(cur_ele, swap_ele);
5969 __update_menubar_shortcuts_by_menubar_no(ad, cur_ele->setting_type, cur_ele->menu_bar_no);
5970 __update_menubar_shortcuts_by_menubar_no(ad, swap_ele->setting_type, swap_ele->menu_bar_no);
5971 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5972 update_menubar_shortcuts_mouse_event(ad, swap_ele->menu_bar_no, FALSE);
5975 /*NOTE: moving shortcuts, is from menubar*/
5976 static gboolean __check_menubar_moving_shortcuts_swap(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5978 cam_retv_if(ad == NULL, FALSE);
5979 cam_retv_if(moving_ele == NULL, FALSE);
5980 cam_retv_if(moving_obj == NULL, FALSE);
5982 ShortCutData *shortcuts_ele;
5983 ShortCutData *cur_ele = moving_ele;
5984 CAM_Edit_ShortCuts_Rect sub_rect;
5985 __get_shortcuts_rect(moving_obj, &sub_rect);
5987 ShortCutData *swap_ele = NULL;
5988 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5989 if (shortcuts_ele == NULL)
5991 if (shortcuts_ele->icon == cur_ele->icon) {
5992 DEBUG_TRACE("find self");
5995 Evas_Object *parent_icon = NULL;
5996 if (shortcuts_ele->is_on_menu_bar) {
5997 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6000 parent_icon = shortcuts_ele->icon;
6003 CAM_Edit_ShortCuts_Rect parent_rect;
6004 __get_shortcuts_rect(parent_icon, &parent_rect);
6006 gboolean sub_in_parent = FALSE;
6007 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6011 if (sub_in_parent) {
6012 DEBUG_TRACE("find swap ele");
6013 swap_ele = shortcuts_ele;
6018 DEBUG_TRACE("not find, continue");
6020 /*evas_object_move(moving_obj, x , y);*/
6023 if (swap_ele->is_on_menu_bar) {/*TODO: support menubar shortcuts swap*/
6024 __swap_menubar_shortcuts(ad, cur_ele, swap_ele);
6025 cam_toolbar_menu_config_update((void *)ad);
6026 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6029 cur_ele->is_on_menu_bar = FALSE;
6030 int tmp_menub_bar_no = cur_ele->menu_bar_no;
6031 cur_ele->menu_bar_no = -1;
6032 DEL_EVAS_OBJECT(moving_obj);
6034 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
6035 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6037 cam_toolbar_menu_config_update((void *)ad);
6039 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6040 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6047 static void __edit_shortcuts_layout_shortcuts_move_prev(struct appdata *ad,
6048 ShortCutData *swap_ele,
6049 ShortCutData *cur_ele)
6051 cam_ret_if(ad == NULL);
6052 cam_ret_if(swap_ele == NULL);
6053 cam_ret_if(cur_ele == NULL);
6055 ShortCutData *shortcuts_ele;
6056 Eina_List *cur_item = NULL;
6057 Eina_List *swap_item = NULL;
6058 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6059 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6063 * note: cur_item ->...->swap_item, should insert cur_item after swap_item, and
6064 * move between cur_item ...swap_item items.
6070 int temp_swap_ele_list_index = swap_ele->list_index;
6071 int temp_swap_ele_part_index = swap_ele->part_index;
6072 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6073 if (shortcuts_ele == NULL)
6075 if (shortcuts_ele == cur_ele) {
6076 cur_ele->list_index = temp_swap_ele_list_index;
6077 cur_ele->part_index = temp_swap_ele_part_index;
6081 if (!shortcuts_ele->is_on_menu_bar) {
6082 /* TODO: for animator effect*/
6083 char buf[32+1] = { '\0',};
6084 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6085 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_PREV, buf);
6086 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6087 shortcuts_ele->part_index -= 1;
6089 shortcuts_ele->list_index -= 1;
6090 if (shortcuts_ele == swap_ele) {
6094 Eina_List *left = NULL;
6095 Eina_List *right = NULL;
6096 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6098 left = eina_list_split_list(shortcuts_ele_list, swap_item, &right);
6099 left = eina_list_append(left, cur_ele);
6100 shortcuts_ele_list = eina_list_merge(left, right);
6105 /*note: insert insert_ele before cur_ele*/
6106 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
6107 ShortCutData *cur_ele,
6108 ShortCutData *insert_ele)
6110 cam_ret_if(ad == NULL);
6111 cam_ret_if(cur_ele == NULL);
6112 cam_ret_if(insert_ele == NULL);
6113 Eina_List *l = NULL;
6114 ShortCutData *shortcuts_ele = NULL;
6115 Eina_List *cur_item = NULL;
6117 insert_ele->part_index = cur_ele->part_index;
6118 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6119 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6120 if (shortcuts_ele == NULL)
6122 if (!shortcuts_ele->is_on_menu_bar) {
6123 char buf[32+1] = { '\0',};
6124 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6125 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6126 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6127 shortcuts_ele->part_index += 1;
6130 __resort_edit_shortcuts_list_by_part_index();
6135 static void __edit_shortcuts_layout_shortcuts_move_next(struct appdata *ad,
6136 ShortCutData *swap_ele,
6137 ShortCutData *cur_ele)
6139 cam_ret_if(ad == NULL);
6140 cam_ret_if(swap_ele == NULL);
6141 cam_ret_if(cur_ele == NULL);
6143 ShortCutData *shortcuts_ele;
6144 Eina_List *swap_item = NULL;
6146 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6150 * note: swap_item ->...->cur_item, should insert cur_item before swap_item, and
6151 * move between swap_item ...cur_item items.
6155 int temp_swap_ele_list_index = swap_ele->list_index;
6156 int temp_swap_ele_part_index = swap_ele->part_index;
6157 EINA_LIST_FOREACH(swap_item, l, shortcuts_ele) {
6158 if (shortcuts_ele == NULL)
6160 if (shortcuts_ele == cur_ele) {
6161 cur_ele->list_index = temp_swap_ele_list_index;
6162 cur_ele->part_index = temp_swap_ele_part_index;
6165 if (!shortcuts_ele->is_on_menu_bar) {
6166 /* TODO: for animator effect*/
6167 char buf[32+1] = { '\0',};
6168 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6169 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6170 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6171 shortcuts_ele->part_index += 1;
6173 shortcuts_ele->list_index += 1;
6175 Eina_List *left = NULL;
6176 Eina_List *right = NULL;
6177 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6178 if (swap_item->prev) {
6179 left = eina_list_split_list(shortcuts_ele_list, swap_item->prev, &right);
6180 left = eina_list_append(left, cur_ele);
6181 shortcuts_ele_list = eina_list_merge(left, right);
6183 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, cur_ele);
6187 static void __resort_edit_shortcuts(struct appdata *ad, Evas_Object *moving_obj)
6189 cam_ret_if(ad == NULL);
6190 cam_ret_if(moving_obj == NULL);
6191 __resort_edit_shortcuts_list_by_part_index();
6193 ShortCutData *shortcuts_ele;
6194 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6195 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6196 if (shortcuts_ele == NULL)
6198 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6202 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6204 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6205 if (shortcuts_ele == NULL)
6207 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6208 if (shortcuts_ele->part_index >=0
6209 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
6211 shortcuts_part_to_menu[shortcuts_ele->part_index] = shortcuts_ele->setting_type;
6213 if (moving_obj == shortcuts_ele->icon) {
6214 ad->shortcut_data = shortcuts_ele;
6215 DEBUG_TRACE("PART:%s", buf);
6218 DEBUG_TRACE("PART:%s", buf);
6219 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6223 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6224 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6225 edit_shortcuts_prop_array[index].prop_name,
6226 shortcuts_part_to_menu[index]);
6231 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
6232 ShortCutData *swap_ele,
6233 ShortCutData *cur_ele)
6235 cam_ret_if(ad == NULL);
6236 cam_ret_if(swap_ele == NULL);
6237 cam_ret_if(cur_ele == NULL);
6238 Eina_List *cur_item = NULL;
6239 Eina_List *prev_item = NULL;
6240 Eina_List *next_item = NULL;
6241 Evas_Coord prev_x=0, prev_y=0, prev_w=0, prev_h=0;
6242 Evas_Coord next_x=0, next_y=0, next_w=0, next_h=0;
6244 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6247 if (swap_ele->list_index > cur_ele->list_index) {
6248 next_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6249 if (NULL != next_item) {
6250 evas_object_geometry_get(swap_ele->icon, &next_x, &next_y, &next_w, &next_h);
6251 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6252 cur_ele->x = next_x;
6253 cur_ele->y = next_y;
6254 cur_ele->w = next_w;
6255 cur_ele->h = next_h;
6256 int idx = swap_ele->part_index;
6257 swap_ele->part_index = cur_ele->part_index;
6258 cur_ele->part_index = idx;
6260 idx = swap_ele->list_index;
6261 swap_ele->list_index = cur_ele->list_index;
6262 cur_ele->list_index = idx;
6263 if (swap_ele->is_on_menu_bar)
6264 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6265 shortcuts_swap(&shortcuts_ele_list, cur_item, next_item);
6268 prev_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6269 if(NULL != prev_item) {
6270 evas_object_geometry_get(swap_ele->icon, &prev_x, &prev_y, &prev_w, &prev_h);
6271 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6272 cur_ele->x = prev_x;
6273 cur_ele->y = prev_y;
6274 cur_ele->w = prev_w;
6275 cur_ele->h = prev_h;
6276 int idx = swap_ele->part_index;
6277 swap_ele->part_index = cur_ele->part_index;
6278 cur_ele->part_index = idx;
6280 idx = swap_ele->list_index;
6281 swap_ele->list_index = cur_ele->list_index;
6282 cur_ele->list_index = idx;
6283 if (swap_ele->is_on_menu_bar)
6284 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6285 shortcuts_swap(&shortcuts_ele_list, prev_item, cur_item);
6290 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no)
6292 if (!ad) return NULL;
6293 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return NULL;
6294 return ad->toolbar_menu_arrays[menubar_no].icon;
6297 /*note: check with menu_no menubar shortcut*/
6298 static gboolean __check_with_menubar_shortcuts(struct appdata *ad, int menu_no, ShortCutData *moving_ele, Evas_Object *moving_obj)
6300 if (!ad || !moving_ele ||!moving_obj)
6302 CAM_Edit_ShortCuts_Rect sub_rect;
6303 ShortCutData *cur_ele = moving_ele;
6304 __get_shortcuts_rect(moving_obj, &sub_rect);
6306 Evas_Object *toolbar_icon = __get_toolbar_shortcuts_evas_object(ad, menu_no);
6308 /*check space menu*/
6309 CAM_Edit_ShortCuts_Rect parent_rect;
6310 __get_shortcuts_rect(toolbar_icon, &parent_rect);
6311 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6312 gboolean sub_in_parent = FALSE;
6313 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6317 if (sub_in_parent) {
6318 if (cur_ele->is_on_menu_bar) {
6319 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
6321 cur_ele->is_on_menu_bar = TRUE;
6322 cur_ele->menu_bar_no = menu_no;
6323 cur_ele->part_index = -1;
6324 ad->toolbar_menu_arrays[menu_no].menu_type = cur_ele->setting_type;
6325 cam_toolbar_menu_config_update((void *)ad);
6326 update_menubar_shortcuts_mouse_event(ad, menu_no, FALSE);
6327 evas_object_hide(cur_ele->icon);
6328 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6336 /*note: get menubar_no now is covering*/
6337 static int __get_edit_shortcuts_swap_menubar_no(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
6339 if (!ad || !moving_ele ||!moving_obj)
6341 CAM_Edit_ShortCuts_Rect sub_rect;
6343 __get_shortcuts_rect(moving_obj, &sub_rect);
6346 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6347 int type = ad->toolbar_menu_arrays[i].menu_type;
6348 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6350 CAM_Edit_ShortCuts_Rect parent_rect;
6351 __get_shortcuts_rect(icon, &parent_rect);
6352 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6353 gboolean sub_in_parent = FALSE;
6354 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6358 if (sub_in_parent) {
6364 return CAM_MENU_BAR_LEFT_INVALID;
6369 static gboolean __get_edit_shortcuts_swap_element(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj, ShortCutData **swap_ele)
6371 if (swap_ele == NULL) return FALSE;
6373 ShortCutData *cur_ele = moving_ele;
6374 CAM_Edit_ShortCuts_Rect sub_rect;
6375 __get_shortcuts_rect(moving_obj, &sub_rect);
6377 Eina_List *l = NULL;
6378 ShortCutData *shortcuts_ele = NULL;
6379 int edit_shortcuts_item_count = -1;
6380 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6381 if (shortcuts_ele == NULL)
6383 if (shortcuts_ele->icon == cur_ele->icon) {
6386 Evas_Object *parent_icon = NULL;
6387 if (shortcuts_ele->is_on_menu_bar) {
6388 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6391 parent_icon = shortcuts_ele->icon;
6392 edit_shortcuts_item_count++;
6395 CAM_Edit_ShortCuts_Rect parent_rect;
6396 __get_shortcuts_rect(parent_icon, &parent_rect);
6398 gboolean sub_in_parent = FALSE;
6399 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6403 if (sub_in_parent) {
6404 DEBUG_TRACE("find swap ele");
6405 *swap_ele = shortcuts_ele;
6410 /*NOTE: case: moving shortcut is from menubar, and it is moving into the edit shortcuts the first empty panel*/
6411 char buf[16] = { 0 };
6412 snprintf(buf, sizeof(buf),"row.%d", (edit_shortcuts_item_count+1));
6413 Evas_Object *part_object = (Evas_Object *)
6414 edje_object_part_object_get(_EDJ
6415 (ad->edit_shortcuts_popup_ctx), buf);
6416 if (cur_ele->is_on_menu_bar) {
6417 CAM_Edit_ShortCuts_Rect parent_rect;
6418 __get_shortcuts_rect(part_object, &parent_rect);
6420 gboolean sub_in_parent = FALSE;
6421 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6425 if (sub_in_parent) {
6426 ShortCutData *virtual_ele = NULL;
6427 if (ad->swap_data) {
6428 if (ad->swap_data->is_virtual) {
6429 free(ad->swap_data);
6430 ad->swap_data = NULL;
6433 virtual_ele = calloc(1, sizeof(ShortCutData));
6435 virtual_ele->is_virtual = TRUE;
6436 virtual_ele->setting_type = -1;
6437 virtual_ele->is_on_menu_bar = FALSE;
6438 virtual_ele->part_index= edit_shortcuts_item_count+1;
6440 *swap_ele = virtual_ele;
6448 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
6449 static void __resort_edit_shortcuts_list_by_part_index(void)
6451 if (shortcuts_ele_list == NULL) return;
6452 shortcuts_ele_list = eina_list_sort(shortcuts_ele_list,
6453 eina_list_count(shortcuts_ele_list),
6454 __edit_shortcuts_list_sort_cb);
6455 Eina_List *l = NULL;
6456 ShortCutData *shortcuts_ele = NULL;
6458 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6459 if (shortcuts_ele == NULL)
6461 shortcuts_ele->list_index = list_index;
6462 DEBUG_TRACE("part_index %d, list_index %d", shortcuts_ele->part_index, shortcuts_ele->list_index);
6468 /*NOTE: swap integer, we do not judge a, b wether null*/
6469 static void __swap_int_type_value(int *a, int *b)
6477 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info)
6479 struct appdata *ad = (struct appdata *)data;
6481 if (!event_info) return;
6482 cam_app_timeout_checker_update();/*note: update check_timer*/
6483 __setting_popup_timeout_checker_start(ad);
6485 /*note: check wether is long press*/
6486 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
6487 cam_long_press_validate(LONG_PRESS_ID_EDIT, mu->cur.canvas.x, mu->cur.canvas.y);
6488 if (!cam_get_long_press_running_state(LONG_PRESS_ID_EDIT)) {
6492 /*note: update coordinate*/
6493 Evas_Coord cur_x=0, cur_y=0, cur_w=0, cur_h=0;
6494 Evas_Coord x=0, y=0;
6496 evas_object_geometry_get(obj, &cur_x, &cur_y, &cur_w, &cur_h);
6497 x = cur_x + (mu->cur.canvas.x - shortcuts_canvas_prev_x);
6498 y = cur_y + (mu->cur.canvas.y - shortcuts_canvas_prev_y);
6499 dx = mu->cur.canvas.x - shortcuts_canvas_prev_x;
6500 dy = mu->cur.canvas.y - shortcuts_canvas_prev_y;
6501 shortcuts_canvas_prev_x = mu->cur.canvas.x;
6502 shortcuts_canvas_prev_y = mu->cur.canvas.y;
6505 /*note: check swap elements*/
6506 pthread_mutex_lock(&edit_shortcuts_move_mutex);
6507 ShortCutData *moving_ele = ad->shortcut_data;
6508 ShortCutData *swap_ele = NULL;
6509 gboolean swap_condition = __get_edit_shortcuts_swap_element(ad, moving_ele, obj, &swap_ele);
6510 DEBUG_TRACE("%d", swap_condition);
6512 if (swap_condition) {
6513 ad->swap_data = swap_ele;
6514 if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
6515 if (ABS(moving_ele->part_index - swap_ele->part_index) == 1) {
6516 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
6517 } else if (moving_ele->list_index > swap_ele->list_index) {
6518 __edit_shortcuts_layout_shortcuts_move_next(ad, swap_ele, moving_ele);
6520 __edit_shortcuts_layout_shortcuts_move_prev(ad, swap_ele, moving_ele);
6522 __resort_edit_shortcuts(ad, obj);
6523 evas_object_move(obj, x , y);
6526 if (swap_ele->is_on_menu_bar) {
6529 if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
6530 evas_object_color_get(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, &r, &g, &b, &a);
6531 evas_object_color_set(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, r, g, b, 30);
6535 if (swap_ele->setting_type == -1) {/*note: swap_ele is empty part in edit shortcuts panel*/
6536 DEBUG_TRACE("swap_ele is empty part in edit shortcuts panel");
6542 if (swap_ele->icon) {
6543 evas_object_color_get(swap_ele->icon, &r, &g, &b, &a);
6544 evas_object_color_set(swap_ele->icon, r, g, b, 30);
6548 evas_object_move(obj, x , y);
6551 if (ad->swap_data) {
6552 if (ad->swap_data->is_on_menu_bar) {
6555 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
6556 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
6557 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
6562 if (ad->swap_data->icon) {
6563 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
6564 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
6568 ad->swap_data = NULL;
6571 int menu_no = __get_edit_shortcuts_swap_menubar_no(ad, moving_ele, obj);
6572 /*TODO: for mouse up swap, we could to record a virtual shortcut element*/
6573 if (menu_no != CAM_MENU_BAR_LEFT_INVALID) {
6574 ShortCutData *virtual_ele = NULL;
6575 virtual_ele = calloc(1, sizeof(ShortCutData));
6577 virtual_ele->is_virtual = TRUE;
6578 virtual_ele->setting_type = -1;
6579 virtual_ele->menu_bar_no = menu_no;
6580 virtual_ele->is_on_menu_bar = TRUE;
6582 ad->swap_data = virtual_ele;
6584 /*TODO: set swap_ele style*/
6587 evas_object_move(obj, x , y);
6589 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
6593 void cam_setting_gl_style_set(void)
6595 itc.item_style = "camera/1text.1icon";
6596 itc.func.text_get = _setting_gl_text_get;
6597 itc.func.content_get = _setting_gl_icon_get;
6598 itc.func.state_get = NULL;
6599 itc.func.del = NULL;
6602 static void __cam_toolbar_display_shortcuts_editmode(void *data)
6604 struct appdata *ad = (struct appdata *)data;
6605 cam_ret_if(ad == NULL);
6607 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6608 "toolbar_1_icon,edit", "prog");
6609 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6610 "toolbar_2_icon,edit", "prog");
6611 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6612 "toolbar_3_icon,edit", "prog");
6613 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6614 "toolbar_4_icon,edit", "prog");
6617 static void __cam_toolbar_exit_shortcuts_editmode(void *data)
6619 struct appdata *ad = (struct appdata *)data;
6620 cam_ret_if(ad == NULL);
6622 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6623 "toolbar_1_icon,normal", "prog");
6624 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6625 "toolbar_2_icon,normal", "prog");
6626 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6627 "toolbar_3_icon,normal", "prog");
6628 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6629 "toolbar_4_icon,normal", "prog");
6633 static int __cam_long_press_editmode_cb(void *data, int x, int y)
6635 struct appdata *ad = (struct appdata *)data;
6636 cam_retv_if(ad == NULL, -1);
6637 CamAppData *camapp = ad->camapp_handle;
6638 cam_retv_if(camapp == NULL, -1);
6642 err = pthread_mutex_init(&edit_shortcuts_move_mutex, NULL);
6644 cam_critical(LOG_CAM, "Create px inst mutex failed");
6648 if (ad->shortcut_data) {
6649 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), ad->shortcut_data->icon);
6650 evas_object_event_callback_add(ad->shortcut_data->icon,
6651 EVAS_CALLBACK_MOUSE_MOVE,
6652 __setting_shortcuts_mouse_move,
6655 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, TRUE);
6660 static int __cam_long_press_exit_editmode_cb(void *data, int x, int y)
6662 struct appdata *ad = (struct appdata *)data;
6663 cam_retv_if(ad == NULL, -1);
6664 CamAppData *camapp = ad->camapp_handle;
6665 cam_retv_if(camapp == NULL, -1);
6668 /*re-sort sortcuts element list*/
6669 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6671 ShortCutData *shortcuts_ele = NULL;
6672 Eina_List *l = NULL;
6674 int temp_list_index = 0;
6675 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6676 if (shortcuts_ele == NULL)
6678 shortcuts_ele->list_index = temp_list_index;
6680 if (shortcuts_ele->is_on_menu_bar) {
6681 shortcuts_ele->part_index = -1;
6684 shortcuts_ele->part_index = temp_index;
6685 shortcuts_part_to_menu[temp_index] = shortcuts_ele->setting_type;
6687 DEBUG_TRACE("shortcuts_ele->index %d" , shortcuts_ele->part_index);
6690 /*re-set menubar shortcuts*/
6692 for (i = CAM_MENU_SHORTCUTS; i < CAM_MENU_MAX_NUMS; i++) {
6693 __update_menubar_icon_by_index(ad, i);
6696 /*menu bar shortcut update*/
6697 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6698 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
6701 /* shortcut panel update*/
6702 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6704 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6705 if (shortcuts_ele == NULL)
6707 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6710 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6711 if (shortcuts_ele == NULL)
6713 if (shortcuts_ele->part_index < 0 ||
6714 shortcuts_ele->part_index >19) {
6717 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6718 DEBUG_TRACE("PART:%s", buf);
6719 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6723 for (index = CAM_EDIT_SHORTCUTS_INDEX_1; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6724 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6725 edit_shortcuts_prop_array[index].prop_name,
6726 shortcuts_part_to_menu[index]);
6729 __cam_toolbar_display_shortcuts_editmode(ad);
6730 __toolbar_dim_setting_shortcuts(ad);
6731 if (ad->shortcut_data) {
6732 if (ad->shortcut_data->icon) {
6733 evas_object_event_callback_del(ad->shortcut_data->icon,
6734 EVAS_CALLBACK_MOUSE_MOVE,
6735 __setting_shortcuts_mouse_move);
6739 ad->shortcut_data = NULL;
6740 ad->swap_data = NULL;
6741 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, FALSE);
6742 pthread_mutex_destroy(&edit_shortcuts_move_mutex);
6746 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon)
6750 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6755 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6756 if (index == ad->toolbar_menu_arrays[i].menu_type) {
6758 *icon = ad->toolbar_menu_arrays[i].icon;
6764 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6769 void create_menubar_shortcuts_mouse_event(struct appdata *ad)
6774 /*note: CAM_MENU_BAR_LEFT_0: do not need register*/
6775 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6776 int type = ad->toolbar_menu_arrays[i].menu_type;
6777 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6779 evas_object_event_callback_del(icon,
6780 EVAS_CALLBACK_MOUSE_DOWN,
6781 __setting_shortcuts_mouse_down);
6782 evas_object_event_callback_add(icon,
6783 EVAS_CALLBACK_MOUSE_DOWN,
6784 __setting_shortcuts_mouse_down,
6786 evas_object_event_callback_del(icon,
6787 EVAS_CALLBACK_MOUSE_MOVE,
6788 __setting_shortcuts_mouse_move);
6789 evas_object_event_callback_add(icon,
6790 EVAS_CALLBACK_MOUSE_MOVE,
6791 __setting_shortcuts_mouse_move,
6793 evas_object_event_callback_del(icon,
6794 EVAS_CALLBACK_MOUSE_UP,
6795 __setting_shortcuts_mouse_up);
6796 evas_object_event_callback_add(icon,
6797 EVAS_CALLBACK_MOUSE_UP,
6798 __setting_shortcuts_mouse_up,
6805 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6810 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6811 int type = ad->toolbar_menu_arrays[i].menu_type;
6812 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6813 if (i == menubar_no || all_menubar) {
6815 evas_object_event_callback_del(icon,
6816 EVAS_CALLBACK_MOUSE_DOWN,
6817 __setting_shortcuts_mouse_down);
6818 evas_object_event_callback_del(icon,
6819 EVAS_CALLBACK_MOUSE_MOVE,
6820 __setting_shortcuts_mouse_move);
6821 evas_object_event_callback_del(icon,
6822 EVAS_CALLBACK_MOUSE_UP,
6823 __setting_shortcuts_mouse_up);
6825 evas_object_event_callback_del(icon,
6826 EVAS_CALLBACK_MOUSE_DOWN,
6827 __setting_shortcuts_mouse_down);
6828 evas_object_event_callback_add(icon,
6829 EVAS_CALLBACK_MOUSE_DOWN,
6830 __setting_shortcuts_mouse_down,
6832 evas_object_event_callback_del(icon,
6833 EVAS_CALLBACK_MOUSE_MOVE,
6834 __setting_shortcuts_mouse_move);
6835 evas_object_event_callback_add(icon,
6836 EVAS_CALLBACK_MOUSE_MOVE,
6837 __setting_shortcuts_mouse_move,
6839 evas_object_event_callback_del(icon,
6840 EVAS_CALLBACK_MOUSE_UP,
6841 __setting_shortcuts_mouse_up);
6842 evas_object_event_callback_add(icon,
6843 EVAS_CALLBACK_MOUSE_UP,
6844 __setting_shortcuts_mouse_up,
6853 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6858 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6859 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6860 if (i == menubar_no || all_menubar) {
6861 evas_object_event_callback_del(icon,
6862 EVAS_CALLBACK_MOUSE_DOWN,
6863 __setting_shortcuts_mouse_down);
6864 evas_object_event_callback_del(icon,
6865 EVAS_CALLBACK_MOUSE_MOVE,
6866 __setting_shortcuts_mouse_move);
6867 evas_object_event_callback_del(icon,
6868 EVAS_CALLBACK_MOUSE_UP,
6869 __setting_shortcuts_mouse_up);
6876 /*free all memory for shortcuts*/
6877 static void __cam_toolbar_edit_shortcuts_data_clean()
6880 if (NULL != shortcuts_ele_list) {
6881 eina_list_free(shortcuts_ele_list);
6882 shortcuts_ele_list = NULL;
6886 static void __toolbar_edit_shortcuts_mouse_down_cb (void *data,
6892 /*struct appdata *ad = (struct appdata *)data;
6893 cam_long_press_register(LONG_PRESS_ID_EDIT,
6895 __cam_long_press_editmode_cb,
6896 __cam_long_press_exit_editmode_cb,
6901 static void __toolbar_edit_shortcuts_mouse_move_cb (void *data,
6907 /*struct appdata *ad = (struct appdata *)data;*/
6908 ShortCutData *shortcuts_ele = NULL;
6909 Eina_List *l = NULL;
6910 /** TODO: find solution to distinguish the scroll move
6911 cam_long_press_unregister(LONG_PRESS_ID_EDIT);
6913 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6914 if (shortcuts_ele) {
6915 if (shortcuts_ele->icon) {
6916 evas_object_freeze_events_set(shortcuts_ele->icon, TRUE);
6923 static void __toolbar_edit_shortcuts_mouse_up_cb (void *data,
6930 struct appdata *ad = (struct appdata *)data;
6931 cam_ret_if(ad == NULL);
6932 ShortCutData *shortcuts_ele = NULL;
6933 Eina_List *l = NULL;
6934 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6935 if (shortcuts_ele) {
6936 if (shortcuts_ele->icon) {
6937 evas_object_freeze_events_set(shortcuts_ele->icon, FALSE);
6943 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2)
6945 ShortCutData *ele_0 = (ShortCutData *)data1;
6946 ShortCutData *ele_1 = (ShortCutData *)data2;
6947 int part_index_0 = ele_0->part_index;
6948 int part_index_1 = ele_1->part_index;
6949 DEBUG_TRACE("part_index_0 %d", part_index_0);
6950 DEBUG_TRACE("part_index_1 %d", part_index_1);
6951 if (part_index_0 > part_index_1)
6953 else if (part_index_0 < part_index_1)
6959 static void __edit_shortcuts_create_empty_menubar_shortcut(struct appdata *ad,
6961 ShortCutData **shortcuts_ele)
6963 if (menu_no > CAM_MENU_BAR_LEFT_4 || menu_no < CAM_MENU_BAR_LEFT_0) return;
6964 ShortCutData *sd = (ShortCutData *)malloc(sizeof(ShortCutData));
6966 memset(sd, '\0', sizeof(ShortCutData));
6967 sd->icon = ad->toolbar_menu_arrays[menu_no].icon;
6968 sd->list_index = -1;
6969 sd->part_index = -1;
6970 sd->setting_type = -1;
6971 sd->menu_bar_no = menu_no;
6972 sd->is_on_menu_bar = TRUE;
6974 *shortcuts_ele = sd;
6978 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no)
6981 if (menu_no > CAM_MENU_BAR_LEFT_4 || CAM_MENU_BAR_LEFT_1) return; /*note: CAM_MENU_BAR_LEFT_0, do not update*/
6982 ShortCutData *shortcuts_ele = NULL;
6983 /*note: add empty menubar shortcuts to list*/
6984 if (ad->toolbar_menu_arrays[menu_no].menu_type < 0) {
6985 __edit_shortcuts_create_empty_menubar_shortcut(ad, CAM_MENU_BAR_LEFT_1, &shortcuts_ele);
6986 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, shortcuts_ele);
6990 static void __toolbar_dim_setting_shortcuts(struct appdata *ad)
6992 cam_ret_if(ad == NULL);
6993 Evas_Object *setting_icon = NULL;
6994 Evas_Object_Event_Cb func = NULL;
6996 setting_icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
6997 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].menu_type;
6998 __toolbar_menu_type_update(setting_icon, type, ad, BUTTON_STATE_DIM, &func);
7001 int toolbar_create_shortcuts_popup(struct appdata *ad)
7003 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7004 CamAppData *cam_handle = ad->camapp_handle;
7005 cam_retv_if(cam_handle == NULL, -1);
7007 gboolean init_state = FALSE;
7008 init_state = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7009 PROP_SHORTCUTS_INIT_PART_INDEX,
7012 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7013 PROP_SHORTCUTS_INIT_PART_INDEX,
7017 if (ad->edit_shortcuts_popup_scroll) {
7018 toolbar_destroy_shortcuts_popup(ad);
7020 ad->show_edit_shortcuts_popup_after_rotate = FALSE;
7022 __toolbar_dim_setting_shortcuts(ad);
7025 Evas_Object *icon = NULL;
7026 Evas_Object *setting_popup = NULL;
7027 Evas_Object *ele_layout = NULL;
7029 cam_long_press_register(LONG_PRESS_ID_EDIT,
7031 __cam_long_press_editmode_cb,
7032 __cam_long_press_exit_editmode_cb,
7035 setting_shortcuts_popup_create(ad);
7037 setting_popup = elm_layout_add(ad->edit_shortcuts_popup);
7038 elm_layout_file_set(setting_popup, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/layout");
7041 Evas_Object *scroller = elm_scroller_add(ad->edit_shortcuts_popup);
7042 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
7043 elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
7045 char *icon_name = NULL;
7047 char part_name[16] = { '\0', };
7048 ShortCutData *shortcuts_ele = NULL;
7049 Evas_Object_Event_Cb callback = NULL;
7052 gboolean is_on_toolbar = FALSE;
7053 int menu_bar_no = -1;
7055 /*create edit callback in the menubar*/
7056 create_menubar_shortcuts_mouse_event(ad);
7059 __cam_toolbar_edit_shortcuts_data_clean();
7061 if( ad->setting_menu_composer == NULL){
7062 cam_critical(LOG_UI,"ad->setting_menu_composer is null");
7066 int shortcuts_menu_to_part[CAM_MENU_RESET + 1] = { -1,};
7068 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
7069 int item = cam_config_get_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7070 edit_shortcuts_prop_array[index].prop_name,
7072 shortcuts_menu_to_part[item] = index;
7073 DEBUG_TRACE("item %d index %d", item, index);
7077 CAM_MENU_ITEM* menu_item = NULL;
7078 int size = eina_array_count(ad->setting_menu_composer->array);
7080 for (index = 0; index < size; index++) {
7081 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->setting_menu_composer->array, index);
7083 if (*menu_item == CAM_MENU_EFFECTS
7084 || *menu_item == CAM_MENU_ANTI_SHAKE
7085 || *menu_item == CAM_MENU_CAPTURE_VOICE
7086 || *menu_item == CAM_MENU_GPS_TAG
7087 || *menu_item == CAM_MENU_STORAGE
7088 || *menu_item == CAM_MENU_RESET) {
7089 DEBUG_TRACE("Do not add menu in shortcut");
7093 Evas_Object *menubar_obj = NULL;
7094 __get_menubar_shortcuts_info(ad, *menu_item, &menu_bar_no, &menubar_obj);
7095 is_on_toolbar = ((menu_bar_no == CAM_MENU_BAR_LEFT_INVALID) ? FALSE : TRUE);
7096 __get_toolbar_shortcuts_file_func((void *)ad, *menu_item, BUTTON_STATE_NORMAL, &icon_name, &text, &callback);
7099 /*create layout for element*/
7100 ele_layout = elm_layout_add(setting_popup);
7101 elm_layout_file_set(ele_layout, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/ele");
7102 icon = elm_image_add(ele_layout);
7103 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
7105 DEBUG_TRACE("index = %d, no icon file path or file path error, please check!", index);
7114 edje_object_part_text_set(elm_layout_edje_get(ele_layout), "ele.txt", text);
7115 DEBUG_TRACE("text %s", text);
7118 edje_object_part_swallow(_EDJ(ele_layout), "ele.icon", icon);
7119 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_DOWN, __setting_shortcuts_mouse_down, (void *)ad);
7120 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_UP, __setting_shortcuts_mouse_up, (void *)ad);
7122 evas_object_show(ele_layout);
7124 shortcuts_ele = (ShortCutData *)malloc(sizeof(ShortCutData));
7125 shortcuts_ele->icon = ele_layout;
7126 shortcuts_ele->list_index = list_index;
7127 shortcuts_ele->setting_type = *menu_item;
7128 shortcuts_ele->icon_filepath = icon_name;
7129 shortcuts_ele->name = text;
7130 shortcuts_ele->func = callback;
7131 shortcuts_ele->menu_bar_no = menu_bar_no;
7132 shortcuts_ele->is_on_menu_bar = is_on_toolbar;
7134 if (is_on_toolbar) {
7135 shortcuts_ele->part_index = -1;
7136 evas_object_hide(ele_layout);
7138 if (!init_state) { /*note: if there is no init value in config file, init now*/
7139 shortcuts_ele->part_index = part_index;
7140 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7141 edit_shortcuts_prop_array[part_index].prop_name,
7143 shortcuts_menu_to_part[*menu_item] = part_index;
7144 } else { /*note: if there is init value in config file, read value from init*/
7145 shortcuts_ele->part_index = shortcuts_menu_to_part[*menu_item];
7148 if (shortcuts_ele->part_index > CAM_EDIT_SHORTCUTS_INDEX_INVALID
7149 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
7150 snprintf(part_name, sizeof(part_name),"row.%d",(shortcuts_ele->part_index));
7151 edje_object_part_swallow(_EDJ(setting_popup), part_name, ele_layout);
7154 shortcuts_ele_list = eina_list_append(shortcuts_ele_list, shortcuts_ele);
7155 if (shortcuts_ele_list == NULL) {
7164 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
7165 __resort_edit_shortcuts_list_by_part_index();
7167 elm_object_content_set(scroller, setting_popup);
7168 /*elm_object_part_content_set(edit_shortcuts_layout, "swallow.items", setting_popup);*/
7169 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup", scroller);
7170 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup_description", ad->edit_shortcuts_popup_description);
7173 __cam_toolbar_display_shortcuts_editmode(ad);
7174 #if 0 /*TODO: TODO: find solution to distinguish the scroll move*/
7175 evas_object_event_callback_del(scroller,
7176 EVAS_CALLBACK_MOUSE_DOWN,
7177 __toolbar_edit_shortcuts_mouse_down_cb);
7179 evas_object_event_callback_del(scroller,
7180 EVAS_CALLBACK_MOUSE_MOVE,
7181 __toolbar_edit_shortcuts_mouse_move_cb);
7182 evas_object_event_callback_del(scroller,
7183 EVAS_CALLBACK_MOUSE_UP,
7184 __toolbar_edit_shortcuts_mouse_up_cb);
7185 evas_object_event_callback_add(scroller,
7186 EVAS_CALLBACK_MOUSE_DOWN,
7187 __toolbar_edit_shortcuts_mouse_down_cb,
7189 evas_object_event_callback_add(scroller,
7190 EVAS_CALLBACK_MOUSE_MOVE,
7191 __toolbar_edit_shortcuts_mouse_move_cb,
7193 evas_object_event_callback_add(scroller,
7194 EVAS_CALLBACK_MOUSE_UP,
7195 __toolbar_edit_shortcuts_mouse_up_cb,
7200 ad->edit_shortcuts_popup_ctx = setting_popup;
7201 ad->edit_shortcuts_popup_scroll = scroller;
7203 evas_object_show(ad->toolbar_edje);
7204 __setting_popup_timeout_checker_start(ad);
7205 /*note: set destroy operation after display to avoid bs*/
7206 if (ad->toolbar_setting_popup) {
7207 cam_toolbar_setting_popup_destroy(ad);
7210 __set_show_state_preview_obj(ad, FALSE);
7212 return EXIT_SUCCESS;
7215 void* __get_genlist_cb(const CAM_MENU_ITEM item)
7218 case CAM_MENU_SHORTCUTS:
7219 return __setting_edit_shortcut_popup_cb;
7220 case CAM_MENU_BURST_SHOT_MODE:
7221 return __setting_burst_shot_popup_cb;
7222 case CAM_MENU_VOLUME_KEY:
7223 return __setting_volume_key_popup_cb;
7224 case CAM_MENU_SELF_PORTRAIT:
7225 return __setting_self_portrait_popup_cb;
7226 case CAM_MENU_FLASH:
7227 return __setting_flash_popup;
7228 case CAM_MENU_SHOOTING_MODE:
7229 return __setting_shot_mode_popup_cb;
7230 case CAM_MENU_RECORDING_MODE:
7231 return __setting_record_mode_popup;
7232 case CAM_MENU_SCENE_MODE:
7233 return __setting_scenemode_popup_cb;
7234 case CAM_MENU_EXPLOSURE_VALUE:
7235 return __setting_ev_popup_cb;
7236 case CAM_MENU_FOCUS_MODE:
7237 return __setting_focus_mode_cb;
7238 case CAM_MENU_TIMER:
7239 return __setting_timer_popup_cb;
7240 case CAM_MENU_EFFECTS:
7241 return __setting_effects_popup_cb;
7242 case CAM_MENU_PHOTO_RESOLUTION:
7243 return __setting_photo_resolution_popup_cb;
7244 case CAM_MENU_VIDEO_RESOLUTION:
7245 return __setting_video_resolution_popup_cb;
7246 case CAM_MENU_WHITE_BALANCE:
7247 return __setting_wb_popup_cb;
7249 return __setting_iso_popup_cb;
7250 case CAM_MENU_METERING:
7251 return __setting_metering_popup_cb;
7252 case CAM_MENU_ANTI_SHAKE:
7253 return __setting_anti_shake_popup_cb;
7254 case CAM_MENU_OUTDOOR_VISIBILITY:
7255 return __setting_outdoor_visibility_popup_cb;
7256 case CAM_MENU_AUTO_CONTRAST:
7257 return __setting_autocontrast_popup_cb;
7258 case CAM_MENU_GUIDELINES:
7259 return __setting_guideline_popup_cb;
7260 case CAM_MENU_CAPTURE_VOICE:
7261 return __setting_capture_by_voice_popup_cb;
7262 case CAM_MENU_GPS_TAG:
7263 return __setting_gps_popup_cb;
7264 case CAM_MENU_SAVE_AS_FLIP:
7265 return __setting_save_as_flip_popup_cb;
7266 case CAM_MENU_STORAGE:
7267 return __setting_storage_popup_cb;
7268 case CAM_MENU_RESET:
7269 return __setting_restore_defaults_popup_cb;
7275 static Eina_Bool __genlist_each_cb(const void *container, void *data, void *fdata)
7277 struct appdata *ad = (struct appdata *)fdata;
7278 cam_retv_if(ad == NULL, EINA_FALSE);
7280 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
7281 Elm_Object_Item *object_item = NULL;
7282 object_item = elm_genlist_item_append(ad->genlist,
7286 ELM_GENLIST_ITEM_NONE,
7287 __get_genlist_cb(*item),
7290 if(!cam_is_enabled_menu(ad,*item))
7291 elm_object_item_disabled_set(object_item, TRUE);
7296 int cam_toolbar_setting_popup_create(struct appdata *ad)
7298 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7299 CamAppData *cam_handle = ad->camapp_handle;
7300 cam_retv_if(cam_handle == NULL, -1);
7302 if (ad->toolbar_setting_popup) {
7303 cam_toolbar_setting_popup_destroy(ad);
7305 if (ad->edit_shortcuts_popup_scroll) {
7306 toolbar_destroy_shortcuts_popup(ad);
7309 ad->show_setting_popup_after_rotate = FALSE;
7311 Evas_Object *setting_popup = NULL;
7313 setting_toolbar_popup_create(ad);
7315 setting_popup = elm_layout_add(ad->toolbar_setting_popup);
7316 elm_layout_file_set(setting_popup, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout/setting");
7319 edje_object_part_text_set(elm_layout_edje_get(setting_popup), "elm.text", dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
7321 evas_object_size_hint_min_set(setting_popup,
7322 SETTING_POPUP_WIDTH * elm_config_scale_get(),
7323 SETTING_POPUP_HEIGHT * elm_config_scale_get());
7325 ad->genlist = elm_genlist_add(setting_popup);
7326 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_DOWN, __setting_gl_mouse_down, (void *)ad);
7327 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_MOVE, __setting_gl_mouse_move, (void *)ad);
7329 cam_setting_gl_style_set();
7331 if( ad->setting_menu_composer != NULL)
7332 eina_array_foreach(ad->setting_menu_composer->array, __genlist_each_cb, ad);
7334 evas_object_show(ad->genlist);
7335 elm_object_part_content_set(setting_popup, "elm.swallow.box", ad->genlist);
7336 elm_object_content_set(ad->toolbar_setting_popup, setting_popup);
7340 DEBUG_TRACE("ad->target_direction = %d", ad->target_direction);
7341 __get_option_coord_by_menubar_no(CAM_MENU_BAR_LEFT_0, ad->target_direction, &x, &y);
7342 DEBUG_TRACE("x = %d y = %d", x, y);
7343 __cam_toolbar_move_ctxpopup(ad->toolbar_setting_popup, ad->target_direction, x, y);
7345 evas_object_show(ad->toolbar_setting_popup);
7346 __setting_popup_timeout_checker_start(ad);
7348 __set_show_state_preview_obj(ad, FALSE);
7350 return EXIT_SUCCESS;
7353 int toolbar_shot_guide_popup_create(struct appdata *ad, int shot_mode)
7355 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
7356 CamAppData *cam_handle = ad->camapp_handle;
7357 cam_retv_if(cam_handle == NULL, -1);
7363 if (ad->shot_mode_guide_popup) {
7364 toolbar_shot_guide_popup_destory(ad);
7367 elm_object_part_content_unset(ad->ug_base, "shot_guide_popup_layout");
7369 if ((cam_handle->shooting_mode == CAM_SINGLE_MODE)
7370 || (cam_handle->shooting_mode == CAM_SELF_SINGLE_MODE))
7371 return EXIT_SUCCESS;
7373 switch (ad->target_direction) {
7374 case CAM_TARGET_DIRECTION_LANDSCAPE:
7375 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
7376 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_landscape");
7378 case CAM_TARGET_DIRECTION_PORTRAIT:
7379 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
7380 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_potrait");
7383 DEBUG_TRACE("Invalid direction type!!!");
7386 cam_retvm_if(ad->shot_mode_guide_popup == NULL, -1, "shot_mode_guide_popup is NULL");
7387 elm_object_part_content_set(ad->ug_base, "shot_guide_popup_layout", ad->shot_mode_guide_popup);
7389 char popup_str[1024 + 1] = { '\0',};
7390 snprintf(popup_str, 1024, "%s", dgettext(PACKAGE, "IDS_CAM_POP_PRESS_SHUTTER"));
7391 edje_object_part_text_set(_EDJ(ad->shot_mode_guide_popup), "text", popup_str);
7393 evas_object_show(ad->shot_mode_guide_popup);
7395 return EXIT_SUCCESS;
7398 int toolbar_shot_guide_popup_destory(struct appdata *ad)
7400 cam_retv_if(ad == NULL, -1);
7401 UI_TEST_LOG("Guide popup destory");
7403 if (ad->shot_mode_guide_popup) {
7404 evas_object_del(ad->shot_mode_guide_popup);
7405 ad->shot_mode_guide_popup = NULL;
7411 int toolbar_shot_guide_popup_move(struct appdata *ad)
7413 cam_retv_if(ad == NULL, -1);
7417 if (ad->shot_mode_guide_popup) {
7418 Eina_Bool setting_ctxpopup_is_visible = false;
7419 ecore_x_window_size_get(ad->main_xid, &x, &y);
7421 if (ad->setting_ctxpopup)
7422 setting_ctxpopup_is_visible = evas_object_visible_get(ad->setting_ctxpopup);
7424 cam_debug(LOG_UI, "evas_object_visible_get(ad->setting_ctxpopup) =%d", setting_ctxpopup_is_visible);
7426 if (ad->toolbar_setting_popup) {
7427 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7428 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7430 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7431 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7434 cam_critical(LOG_UI, "x = %d, y= %d", x, y);
7440 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state)
7442 struct appdata *ad = (struct appdata *)cam_appdata_get();
7443 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
7444 CamAppData *camapp = ad->camapp_handle;
7445 cam_retvm_if(camapp == NULL, NULL, "camapp is NULL");
7447 char *icon_name = NULL;
7448 int exposure_value = 0;
7451 case CAM_MENU_SCENE_AUTO:
7452 if (state == BUTTON_STATE_PRESS)
7453 icon_name = SCENE_MODE_AUTO_PRESS_ICON;
7455 icon_name = SCENE_MODE_AUTO_NORMAL_ICON;
7457 case CAM_MENU_SCENE_PORTRAIT:
7458 if (state == BUTTON_STATE_PRESS)
7459 icon_name = SCENE_MODE_PORTRAIT_PRESS_ICON;
7461 icon_name = SCENE_MODE_PORTRAIT_NORMAL_ICON;
7463 case CAM_MENU_SCENE_LANDSCAPE:
7464 if (state == BUTTON_STATE_PRESS)
7465 icon_name = SCENE_MODE_LANDSCAPE_PRESS_ICON;
7467 icon_name = SCENE_MODE_LANDSCAPE_NORMAL_ICON;
7469 case CAM_MENU_SCENE_NIGHT:
7470 if (state == BUTTON_STATE_PRESS)
7471 icon_name = SCENE_MODE_NIGHT_PRESS_ICON;
7473 icon_name = SCENE_MODE_NIGHT_NORMAL_ICON;
7475 case CAM_MENU_SCENE_SPORTS:
7476 if (state == BUTTON_STATE_PRESS)
7477 icon_name = SCENE_MODE_SPORTS_PRESS_ICON;
7479 icon_name = SCENE_MODE_SPORTS_NORMAL_ICON;
7481 case CAM_MENU_SCENE_PARTY:
7482 if (state == BUTTON_STATE_PRESS)
7483 icon_name = SCENE_MODE_PARTY_PRESS_ICON;
7485 icon_name = SCENE_MODE_PARTY_NORMAL_ICON;
7487 case CAM_MENU_SCENE_BEACHSNOW:
7488 if (state == BUTTON_STATE_PRESS)
7489 icon_name = SCENE_MODE_BEACHSNOW_PRESS_ICON;
7491 icon_name = SCENE_MODE_BEACHSNOW_NORMAL_ICON;
7493 case CAM_MENU_SCENE_SUNSET:
7494 if (state == BUTTON_STATE_PRESS)
7495 icon_name = SCENE_MODE_SUNSET_PRESS_ICON;
7497 icon_name = SCENE_MODE_SUNSET_NORMAL_ICON;
7499 case CAM_MENU_SCENE_DUSKDAWN:
7500 if (state == BUTTON_STATE_PRESS)
7501 icon_name = SCENE_MODE_DUSKDAWN_PRESS_ICON;
7503 icon_name = SCENE_MODE_DUSKDAWN_NORMAL_ICON;
7505 case CAM_MENU_SCENE_FALL:
7506 if (state == BUTTON_STATE_PRESS)
7507 icon_name = SCENE_MODE_FALL_PRESS_ICON;
7509 icon_name = SCENE_MODE_FALL_NORMAL_ICON;
7511 case CAM_MENU_SCENE_FIREWORK:
7512 if (state == BUTTON_STATE_PRESS)
7513 icon_name = SCENE_MODE_FIREWORK_PRESS_ICON;
7515 icon_name = SCENE_MODE_FIREWORK_NORMAL_ICON;
7517 case CAM_MENU_SCENE_TEXT:
7518 if (state == BUTTON_STATE_PRESS)
7519 icon_name = SCENE_MODE_TEXT_PRESS_ICON;
7521 icon_name = SCENE_MODE_TEXT_NORMAL_ICON;
7523 case CAM_MENU_SCENE_CANDLELIGHT:
7524 if (state == BUTTON_STATE_PRESS)
7525 icon_name = SCENE_MODE_CANDLELIGHT_PRESS_ICON;
7527 icon_name = SCENE_MODE_CANDLELIGHT_NORMAL_ICON;
7529 case CAM_MENU_SCENE_BACKLIGHT:
7530 if (state == BUTTON_STATE_PRESS)
7531 icon_name = SCENE_MODE_BACKLIGHT_PRESS_ICON;
7533 icon_name = SCENE_MODE_BACKLIGHT_NORMAL_ICON;
7535 case CAM_MENU_SHOOTING_SINGLE:
7536 case CAM_MENU_SHOOTING_SELF_SINGLE:
7537 if (state == BUTTON_STATE_PRESS)
7538 icon_name = SHOOTING_MODE_SINGLE_PRESS_ICON;
7540 icon_name = SHOOTING_MODE_SINGLE_NORMAL_ICON;
7542 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
7543 if (state == BUTTON_STATE_PRESS)
7544 icon_name = CAM_RESOLUTION_8M_PRESS_ICON;
7546 icon_name = CAM_RESOLUTION_8M_NORMAL_ICON;
7549 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
7550 if (state == BUTTON_STATE_PRESS)
7551 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7553 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7555 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
7556 if (state == BUTTON_STATE_PRESS)
7557 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7559 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7561 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
7562 if (state == BUTTON_STATE_PRESS)
7563 icon_name = CAM_RESOLUTION_W5_7M_PRESS_ICON;
7565 icon_name = CAM_RESOLUTION_W5_7M_NORMAL_ICON;
7567 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
7568 if (state == BUTTON_STATE_PRESS)
7569 icon_name = CAM_RESOLUTION_5M_PRESS_ICON;
7571 icon_name = CAM_RESOLUTION_5M_NORMAL_ICON;
7573 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
7574 if (state == BUTTON_STATE_PRESS)
7579 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
7580 if (state == BUTTON_STATE_PRESS)
7581 icon_name = CAM_RESOLUTION_3_2M_PRESS_ICON;
7583 icon_name = CAM_RESOLUTION_3_2M_NORMAL_ICON;
7585 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
7586 if (state == BUTTON_STATE_PRESS)
7587 icon_name = CAM_RESOLUTION_W2_4M_PRESS_ICON;
7589 icon_name = CAM_RESOLUTION_W2_4M_NORMAL_ICON;
7591 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
7592 if (state == BUTTON_STATE_PRESS)
7593 icon_name = CAM_RESOLUTION_W2M_PRESS_ICON;
7595 icon_name = CAM_RESOLUTION_W2M_NORMAL_ICON;
7597 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
7598 if (state == BUTTON_STATE_PRESS)
7599 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7601 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7603 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
7604 if (state == BUTTON_STATE_PRESS)
7605 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7607 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7609 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
7610 if (state == BUTTON_STATE_PRESS)
7611 icon_name = CAM_RESOLUTION_1_3M_PRESS_ICON;
7613 icon_name = CAM_RESOLUTION_1_3M_NORMAL_ICON;
7615 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
7616 if (state == BUTTON_STATE_PRESS)
7617 icon_name = CAM_RESOLUTION_W0_9M_PRESS_ICON;
7619 icon_name = CAM_RESOLUTION_W0_9M_NORMAL_ICON;
7621 case CAM_MENU_PHOTO_RESOLUTION_640x480:
7622 if (state == BUTTON_STATE_PRESS)
7623 icon_name = CAM_RESOLUTION_0_3M_PRESS_ICON;
7625 icon_name = CAM_RESOLUTION_0_3M_NORMAL_ICON;
7627 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
7628 if (state == BUTTON_STATE_PRESS)
7629 icon_name = REC_RESOLUTION_FULLHD_PRESS_ICON;
7631 icon_name = REC_RESOLUTION_FULLHD_NORMAL_ICON;
7633 case CAM_MENU_VIDEO_RESOLUTION_HD:
7634 if (state == BUTTON_STATE_PRESS)
7635 icon_name = REC_RESOLUTION_HD_PRESS_ICON;
7637 icon_name = REC_RESOLUTION_HD_NORMAL_ICON;
7639 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
7640 if (state == BUTTON_STATE_PRESS)
7641 icon_name = REC_RESOLUTION_WVGA_PRESS_ICON;
7643 icon_name = REC_RESOLUTION_WVGA_NORMAL_ICON;
7645 case CAM_MENU_VIDEO_RESOLUTION_VGA:
7646 if (state == BUTTON_STATE_PRESS)
7647 icon_name = REC_RESOLUTION_VGA_PRESS_ICON;
7649 icon_name = REC_RESOLUTION_VGA_NORMAL_ICON;
7651 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
7652 if (state == BUTTON_STATE_PRESS)
7653 icon_name = REC_RESOLUTION_QVGA_PRESS_ICON;
7655 icon_name = REC_RESOLUTION_QVGA_NORMAL_ICON;
7657 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
7658 if (state == BUTTON_STATE_PRESS)
7659 icon_name = REC_RESOLUTION_QCIF_PRESS_ICON;
7661 icon_name = REC_RESOLUTION_QCIF_NORMAL_ICON;
7663 case CAM_MENU_WB_AWB:
7664 if (state == BUTTON_STATE_PRESS)
7665 icon_name = WHITE_BALANCE_AUTO_PRESS_ICON;
7667 icon_name = WHITE_BALANCE_AUTO_NORMAL_ICON;
7669 case CAM_MENU_WB_INCANDESCENT:
7670 if (state == BUTTON_STATE_PRESS)
7671 icon_name = WHITE_BALANCE_INCANDESCENT_PRESS_ICON;
7673 icon_name = WHITE_BALANCE_INCANDESCENT_NORMAL_ICON;
7675 case CAM_MENU_WB_FLUORESCENT:
7676 if (state == BUTTON_STATE_PRESS)
7677 icon_name = WHITE_BALANCE_FLUORESCENT_PRESS_ICON;
7679 icon_name = WHITE_BALANCE_FLUORESCENT_NORMAL_ICON;
7681 case CAM_MENU_WB_DAYLIGHT:
7682 if (state == BUTTON_STATE_PRESS)
7683 icon_name = WHITE_BALANCE_DAYLIGHT_PRESS_ICON;
7685 icon_name = WHITE_BALANCE_DAYLIGHT_NORMAL_ICON;
7687 case CAM_MENU_WB_CLOUDY:
7688 if (state == BUTTON_STATE_PRESS)
7689 icon_name = WHITE_BALANCE_CLOUDY_PRESS_ICON;
7691 icon_name = WHITE_BALANCE_CLOUDY_NORMAL_ICON;
7693 case CAM_MENU_WB_SHADE:
7694 if (state == BUTTON_STATE_PRESS)
7695 icon_name = WHITE_BALANCE_SHADE_PRESS_ICON;
7697 icon_name = WHITE_BALANCE_SHADE_NORMAL_ICON;
7699 case CAM_MENU_WB_HORIZON:
7700 if (state == BUTTON_STATE_PRESS)
7701 icon_name = WHITE_BALANCE_HORIZON_PRESS_ICON;
7703 icon_name = WHITE_BALANCE_HORIZON_NORMAL_ICON;
7705 case CAM_MENU_WB_FLASH:
7706 if (state == BUTTON_STATE_PRESS)
7711 case CAM_MENU_WB_CUSTOM:
7712 if (state == BUTTON_STATE_PRESS)
7717 case CAM_MENU_EFFECT_NONE:
7718 if (state == BUTTON_STATE_PRESS)
7719 icon_name = EFFECTS_NONE_PRESS_ICON;
7721 icon_name = EFFECTS_NONE_NORMAL_ICON;
7723 case CAM_MENU_EFFECT_NEGATIVE:
7724 if (state == BUTTON_STATE_PRESS)
7725 icon_name = EFFECTS_NEGATIVE_PRESS_ICON;
7727 icon_name = EFFECTS_NEGATIVE_NORMAL_ICON;
7729 case CAM_MENU_EFFECT_BLACKANDWHITE:
7730 if (state == BUTTON_STATE_PRESS)
7731 icon_name = EFFECTS_BLACKANDWHITE_PRESS_ICON;
7733 icon_name = EFFECTS_BLACKANDWHITE_NORMAL_ICON;
7735 case CAM_MENU_EFFECT_SEPIA:
7736 if (state == BUTTON_STATE_PRESS)
7737 icon_name = EFFECTS_SEPIA_PRESS_ICON;
7739 icon_name = EFFECTS_SEPIA_NORMAL_ICON;
7741 case CAM_MENU_FOCUS_AUTO:
7742 if (state == BUTTON_STATE_PRESS)
7743 icon_name = FOCUS_MODE_AUTO_PRESS_ICON;
7745 icon_name = FOCUS_MODE_AUTO_NORMAL_ICON;
7747 case CAM_MENU_FOCUS_MACRO:
7748 if (state == BUTTON_STATE_PRESS)
7749 icon_name = FOCUS_MODE_MACRO_PRESS_ICON;
7751 icon_name = FOCUS_MODE_MACRO_NORMAL_ICON;
7753 case CAM_MENU_FOCUS_FACE_DETECTION:
7754 if (state == BUTTON_STATE_PRESS)
7755 icon_name = FOCUS_MODE_FACE_DETECTION_PRESS_ICON;
7757 icon_name = FOCUS_MODE_FACE_DETECTION_NORMAL_ICON;
7759 case CAM_MENU_RECORDING_MODE_NORMAL:
7760 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
7761 if (state == BUTTON_STATE_PRESS)
7762 icon_name = RECORDING_MODE_NORMAL_PRESS_ICON;
7764 icon_name = RECORDING_MODE_NORMAL_NORMAL_ICON;
7766 case CAM_MENU_RECORDING_MODE_LIMIT:
7767 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
7768 if (state == BUTTON_STATE_PRESS)
7769 icon_name = RECORDING_MODE_LIMIT_MMS_PRESS_ICON;
7771 icon_name = RECORDING_MODE_LIMIT_MMS_NORMAL_ICON;
7773 case CAM_MENU_RECORDING_MODE_SLOW:
7774 if (state == BUTTON_STATE_PRESS)
7775 icon_name = RECORDING_MODE_SLOW_MOTION_PRESS_ICON;
7777 icon_name = RECORDING_MODE_SLOW_MOTION_NORMAL_ICON;
7779 case CAM_MENU_RECORDING_MODE_FAST:
7780 if (state == BUTTON_STATE_PRESS)
7781 icon_name = RECORDING_MODE_FAST_MOTION_PRESS_ICON;
7783 icon_name = RECORDING_MODE_FAST_MOTION_NORMAL_ICON;
7785 case CAM_MENU_FLASH_OFF:
7786 if (state == BUTTON_STATE_PRESS)
7787 icon_name = FLASH_OFF_PRESS_ICON;
7789 icon_name = FLASH_OFF_NORMAL_ICON;
7791 case CAM_MENU_FLASH_ON:
7792 if (state == BUTTON_STATE_PRESS)
7793 icon_name = FLASH_ON_PRESS_ICON;
7795 icon_name = FLASH_ON_NORMAL_ICON;
7797 case CAM_MENU_FLASH_AUTO:
7798 if (state == BUTTON_STATE_PRESS)
7799 icon_name = FLASH_AUTO_PRESS_ICON;
7801 icon_name = FLASH_AUTO_NORMAL_ICON;
7803 case CAM_MENU_METERING_MATRIX:
7804 if (state == BUTTON_STATE_PRESS)
7805 icon_name = METERING_MATRIX_PRESS_ICON;
7807 icon_name = METERING_MATRIX_NORMAL_ICON;
7809 case CAM_MENU_METERING_CENTER_WEIGHTED:
7810 if (state == BUTTON_STATE_PRESS)
7811 icon_name = METERING_CENTER_WEIGHTED_PRESS_ICON;
7813 icon_name = METERING_CENTER_WEIGHTED_NORMAL_ICON;
7815 case CAM_MENU_METERING_SPOT:
7816 if (state == BUTTON_STATE_PRESS)
7817 icon_name = METERING_SPOT_PRESS_ICON;
7819 icon_name = METERING_SPOT_NORMAL_ICON;
7821 case CAM_MENU_ISO_AUTO:
7822 if (state == BUTTON_STATE_PRESS)
7823 icon_name = ISO_AUTO_PRESS_ICON;
7825 icon_name = ISO_AUTO_NORMAL_ICON;
7827 case CAM_MENU_ISO_50:
7828 if (state == BUTTON_STATE_PRESS)
7829 icon_name = ISO_50_PRESS_ICON;
7831 icon_name = ISO_50_NORMAL_ICON;
7833 case CAM_MENU_ISO_100:
7834 if (state == BUTTON_STATE_PRESS)
7835 icon_name = ISO_100_PRESS_ICON;
7837 icon_name = ISO_100_NORMAL_ICON;
7839 case CAM_MENU_ISO_200:
7840 if (state == BUTTON_STATE_PRESS)
7841 icon_name = ISO_200_PRESS_ICON;
7843 icon_name = ISO_200_NORMAL_ICON;
7845 case CAM_MENU_ISO_400:
7846 if (state == BUTTON_STATE_PRESS)
7847 icon_name = ISO_400_PRESS_ICON;
7849 icon_name = ISO_400_NORMAL_ICON;
7851 case CAM_MENU_ISO_80O:
7852 if (state == BUTTON_STATE_PRESS)
7853 icon_name = ISO_800_PRESS_ICON;
7855 icon_name = ISO_800_NORMAL_ICON;
7857 case CAM_MENU_ISO_1600:
7858 if (state == BUTTON_STATE_PRESS)
7863 case CAM_MENU_ISO_320O:
7864 if (state == BUTTON_STATE_PRESS)
7869 case CAM_MENU_STORAGE_PHONE:
7870 if (state == BUTTON_STATE_PRESS)
7871 icon_name = STORAGE_MYDEVICE_PRESS_ICON;
7873 icon_name = STORAGE_MYDEVICE_NORMAL_ICON;
7875 case CAM_MENU_STORAGE_MMC:
7876 if (state == BUTTON_STATE_PRESS)
7877 icon_name = STORAGE_CARD_PRESS_ICON;
7879 icon_name = STORAGE_CARD_NORMAL_ICON;
7881 case CAM_MENU_TIMER_OFF:
7882 if (state == BUTTON_STATE_PRESS)
7883 icon_name = TIMER_OFF_PRESS_ICON;
7885 icon_name = TIMER_OFF_NORMAL_ICON;
7887 case CAM_MENU_TIMER_2SEC:
7888 if (state == BUTTON_STATE_PRESS)
7889 icon_name = TIMER_2SEC_PRESS_ICON;
7891 icon_name = TIMER_2SEC_NORMAL_ICON;
7893 case CAM_MENU_TIMER_5SEC:
7894 if (state == BUTTON_STATE_PRESS)
7895 icon_name = TIMER_5SEC_PRESS_ICON;
7897 icon_name = TIMER_5SEC_NORMAL_ICON;
7899 case CAM_MENU_TIMER_10SEC:
7900 if (state == BUTTON_STATE_PRESS)
7901 icon_name = TIMER_10SEC_PRESS_ICON;
7903 icon_name = TIMER_10SEC_NORMAL_ICON;
7905 case CAM_MENU_VOLUME_KEY_ZOOM:
7906 if (state == BUTTON_STATE_PRESS)
7907 icon_name = VOLUME_KEY_AS_ZOOM_PRESS_ICON;
7909 icon_name = VOLUME_KEY_AS_ZOOM_NORMAL_ICON;
7911 case CAM_MENU_VOLUME_KEY_SHUTTER:
7912 if (state == BUTTON_STATE_PRESS)
7913 icon_name = VOLUME_KEY_AS_SHUTTER_PRESS_ICON;
7915 icon_name = VOLUME_KEY_AS_SHUTTER_NORMAL_ICON;
7917 case CAM_MENU_EXPLOSURE_VALUE:
7918 if (camapp->self_portrait == FALSE)
7919 exposure_value = camapp->brightness;
7921 exposure_value = camapp->brightness + 4;
7923 if (exposure_value == 0) {
7924 if (state == BUTTON_STATE_PRESS)
7925 icon_name = EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON;
7927 icon_name = EXPOSURE_VALUE_MINUS_2_0_ICON;
7928 } else if (exposure_value == 1) {
7929 if (state == BUTTON_STATE_PRESS)
7930 icon_name = EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON;
7932 icon_name = EXPOSURE_VALUE_MINUS_1_5_ICON;
7933 } else if (exposure_value == 2) {
7934 if (state == BUTTON_STATE_PRESS)
7935 icon_name = EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON;
7937 icon_name = EXPOSURE_VALUE_MINUS_1_0_ICON;
7938 } else if (exposure_value == 3) {
7939 if (state == BUTTON_STATE_PRESS)
7940 icon_name = EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON;
7942 icon_name = EXPOSURE_VALUE_MINUS_0_5_ICON;
7943 } else if (exposure_value == 4) {
7944 if (state == BUTTON_STATE_PRESS)
7945 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
7947 icon_name = EXPOSURE_VALUE_0_ICON;
7948 } else if (exposure_value == 5) {
7949 if (state == BUTTON_STATE_PRESS)
7950 icon_name = EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON;
7952 icon_name = EXPOSURE_VALUE_PLUS_0_5_ICON;
7953 } else if (exposure_value == 6) {
7954 if (state == BUTTON_STATE_PRESS)
7955 icon_name = EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON;
7957 icon_name = EXPOSURE_VALUE_PLUS_1_0_ICON;
7958 } else if (exposure_value == 7) {
7959 if (state == BUTTON_STATE_PRESS)
7960 icon_name = EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON;
7962 icon_name = EXPOSURE_VALUE_PLUS_1_5_ICON;
7963 } else if (exposure_value == 8) {
7964 if (state == BUTTON_STATE_PRESS)
7965 icon_name = EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON;
7967 icon_name = EXPOSURE_VALUE_PLUS_2_0_ICON;
7969 if (state == BUTTON_STATE_PRESS)
7970 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
7972 icon_name = EXPOSURE_VALUE_0_ICON;
7982 static const char* __get_text_name(CAM_MENU_ITEM item)
7985 case CAM_MENU_SCENE_AUTO:
7986 return "IDS_CAM_BODY_NONE";
7987 case CAM_MENU_SCENE_PORTRAIT:
7988 return "IDS_CAM_OPT_SCENE_PORTRAIT";
7989 case CAM_MENU_SCENE_LANDSCAPE:
7990 return "IDS_CAM_OPT_SCENE_LANDSCAPE";
7991 case CAM_MENU_SCENE_NIGHT:
7992 return "IDS_CAM_OPT_SCENEMODE_NIGHT";
7993 case CAM_MENU_SCENE_SPORTS:
7994 return "IDS_CAM_OPT_SCENE_SPORTS";
7995 case CAM_MENU_SCENE_PARTY:
7996 return "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR";
7997 case CAM_MENU_SCENE_BEACHSNOW:
7998 return "IDS_CAM_OPT_BEACH_SNOW";
7999 case CAM_MENU_SCENE_SUNSET:
8000 return "IDS_CAM_OPT_SCENEMODE_SUNSET";
8001 case CAM_MENU_SCENE_DUSKDAWN:
8002 return "IDS_CAM_OPT_SCENE_DAWN";
8003 case CAM_MENU_SCENE_FALL:
8004 return "IDS_CAM_OPT_AUTUMN_COLOUR";
8005 case CAM_MENU_SCENE_FIREWORK:
8006 return "IDS_CAM_BODY_SCENEMODE_FIREWORK";
8007 case CAM_MENU_SCENE_TEXT:
8008 return "IDS_CAM_BODY_SCENEMODE_TEXT";
8009 case CAM_MENU_SCENE_CANDLELIGHT:
8010 return "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT";
8011 case CAM_MENU_SCENE_BACKLIGHT:
8012 return "IDS_CAM_OPT_SCENE_BACKLIGHT";
8013 case CAM_MENU_SHOOTING_SINGLE:
8014 case CAM_MENU_SHOOTING_SELF_SINGLE:
8015 return "IDS_CAM_BODY_SINGLE";
8016 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
8018 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
8020 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
8022 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
8024 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
8026 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
8028 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
8030 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
8032 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
8034 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
8036 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
8038 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
8040 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
8042 case CAM_MENU_PHOTO_RESOLUTION_640x480:
8044 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
8046 case CAM_MENU_VIDEO_RESOLUTION_HD:
8048 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
8050 case CAM_MENU_VIDEO_RESOLUTION_VGA:
8052 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
8054 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
8056 case CAM_MENU_WB_AWB:
8057 return "IDS_CAM_BODY_AUTO";
8058 case CAM_MENU_WB_INCANDESCENT:
8059 return "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT";
8060 case CAM_MENU_WB_FLUORESCENT:
8061 return "IDS_CAM_BODY_FLUORESCENT";
8062 case CAM_MENU_WB_DAYLIGHT:
8063 return "IDS_CAM_BODY_DAYLIGHT";
8064 case CAM_MENU_WB_CLOUDY:
8065 return "IDS_CAM_BODY_CLOUDY";
8066 case CAM_MENU_WB_SHADE:
8067 return "IDS_CAM_BODY_SHADE";
8068 case CAM_MENU_WB_HORIZON:
8069 return "IDS_CAM_BODY_HORIZON";
8070 case CAM_MENU_WB_FLASH:
8071 return "IDS_CAM_OPT_FLASH";
8072 case CAM_MENU_WB_CUSTOM:
8073 return "IDS_CAM_BODY_CUSTOM";
8074 case CAM_MENU_EFFECT_NONE:
8075 return "IDS_CAM_BODY_NONE";
8076 case CAM_MENU_EFFECT_NEGATIVE:
8077 return "IDS_CAM_BODY_NEGATIVE";
8078 case CAM_MENU_EFFECT_BLACKANDWHITE:
8079 return "IDS_CAM_BODY_BLACK_AND_WHITE";
8080 case CAM_MENU_EFFECT_SEPIA:
8081 return "IDS_CAM_BODY_SEPIA";
8082 case CAM_MENU_FOCUS_AUTO:
8083 return "IDS_CAM_OPT_AUTO_FOCUS";
8084 case CAM_MENU_FOCUS_MACRO:
8085 return "IDS_CAM_BODY_MACRO";
8086 case CAM_MENU_FOCUS_FACE_DETECTION:
8087 return "IDS_CAM_OPT_FACE_DETECTION";
8088 case CAM_MENU_RECORDING_MODE_NORMAL:
8089 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8090 case CAM_MENU_RECORDING_MODE_LIMIT:
8091 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8092 case CAM_MENU_RECORDING_MODE_SLOW:
8093 return "IDS_CAM_OPT_SLOW_MOTION";
8094 case CAM_MENU_RECORDING_MODE_FAST:
8095 return "IDS_CAM_BODY_FAST_MOTION";
8096 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
8097 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8098 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
8099 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8100 case CAM_MENU_FLASH_OFF:
8101 return "IDS_CAM_BODY_OFF";
8102 case CAM_MENU_FLASH_ON:
8103 return "IDS_CAM_BODY_ON";
8104 case CAM_MENU_FLASH_AUTO:
8105 return "IDS_CAM_BODY_AUTO";
8106 case CAM_MENU_METERING_MATRIX:
8107 return "IDS_CAM_BODY_MATRIX";
8108 case CAM_MENU_METERING_CENTER_WEIGHTED:
8109 return "IDS_CAM_BODY_CENTER_WEIGHTED";
8110 case CAM_MENU_METERING_SPOT:
8111 return "IDS_CAM_BODY_SPOT";
8112 case CAM_MENU_ISO_AUTO:
8113 return "IDS_CAM_BODY_AUTO";
8114 case CAM_MENU_ISO_50:
8116 case CAM_MENU_ISO_100:
8118 case CAM_MENU_ISO_200:
8120 case CAM_MENU_ISO_400:
8122 case CAM_MENU_ISO_80O:
8124 case CAM_MENU_ISO_1600:
8126 case CAM_MENU_ISO_320O:
8128 case CAM_MENU_STORAGE_PHONE:
8129 return "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY";
8130 case CAM_MENU_STORAGE_MMC:
8131 return "IDS_CAM_OPT_MEMORY_CARD";
8132 case CAM_MENU_TIMER_OFF:
8133 return "IDS_CAM_BODY_OFF";
8134 case CAM_MENU_TIMER_2SEC:
8135 return "IDS_CAM_BODY_2_SEC";
8136 case CAM_MENU_TIMER_5SEC:
8137 return "IDS_CAM_BODY_5_SEC";
8138 case CAM_MENU_TIMER_10SEC:
8139 return "IDS_CAM_BODY_10_SEC";
8140 case CAM_MENU_VOLUME_KEY_ZOOM:
8141 return "IDS_CAM_MBODY_THE_ZOOM_KEY";
8142 case CAM_MENU_VOLUME_KEY_SHUTTER:
8143 return "IDS_CAM_MBODY_THE_CAMERA_KEY";
8149 #define SUB_MENU_MAX_COUNT (5)
8150 #define SUB_MENU_2_COUNT_GAP (35)
8151 #define SUB_MENU_3_COUNT_GAP (30)
8152 #define SUB_MENU_4_COUNT_GAP (25)
8153 #define SUB_MENU_5_COUNT_GAP (15)
8155 static int __get_sub_menu_height(int count)
8159 height = SUB_MENU_POPUP_HEIGHT;
8161 height = (int)(SUB_MENU_POPUP_HEIGHT * count/SUB_MENU_MAX_COUNT);
8164 height += SUB_MENU_2_COUNT_GAP;
8167 height += SUB_MENU_3_COUNT_GAP;
8170 height += SUB_MENU_4_COUNT_GAP;
8173 height += SUB_MENU_5_COUNT_GAP;
8180 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8182 cam_retm_if(obj == NULL, "obj is NULL");
8183 struct appdata *ad = (struct appdata *)cam_appdata_get();
8184 cam_retm_if(ad == NULL, "appdata is NULL");
8185 CamAppData *camapp = ad->camapp_handle;
8186 cam_retm_if(camapp == NULL, "camapp is NULL");
8190 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8192 /* set resolution value */
8193 if (camapp->photo_resolution != resolution) {
8195 CAM_GVALUE_SET_INT(value, resolution);
8196 if (!cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value)) {
8197 DEBUG_TRACE("set photo resolution failed!");
8201 __update_menubar_icon_by_index(ad, CAM_MENU_PHOTO_RESOLUTION);
8202 if (ad->setting_select_item)
8203 elm_genlist_item_update(ad->setting_select_item);
8205 setting_ctxpopup_destroy(ad);
8206 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8209 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8211 cam_retm_if(obj == NULL, "obj is NULL");
8212 struct appdata *ad = (struct appdata *)cam_appdata_get();
8213 cam_retm_if(ad == NULL, "appdata is NULL");
8214 CamAppData *camapp = ad->camapp_handle;
8215 cam_retm_if(camapp == NULL, "camapp is NULL");
8219 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8221 /* set resolution value */
8222 if (camapp->video_resolution != resolution) {
8224 CAM_GVALUE_SET_INT(value, resolution);
8225 if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
8226 DEBUG_TRACE("set video resolution failed!");
8230 __update_menubar_icon_by_index(ad, CAM_MENU_VIDEO_RESOLUTION);
8231 if (ad->setting_select_item)
8232 elm_genlist_item_update(ad->setting_select_item);
8234 setting_ctxpopup_destroy(ad);
8235 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8238 void cam_toolbar_show_cafbutton(struct appdata *ad, gboolean show)
8240 cam_retm_if(ad == NULL, "appdata is NULL");
8243 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
8246 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
8250 static void __update_setting_popup(void* data)
8253 struct appdata *ad = data;
8254 cam_retm_if(ad == NULL, "appdata is NULL");
8256 Elm_Object_Item *it = NULL;
8257 it = elm_genlist_first_item_get(ad->genlist);
8260 CAM_MENU_ITEM item = (CAM_MENU_ITEM)elm_object_item_data_get(it);
8261 gboolean cap_enable = cam_is_enabled_menu(ad,item);
8262 gboolean cur_state = elm_object_item_disabled_get(it);
8263 DEBUG_TRACE("cap_enable %d", cap_enable);
8264 DEBUG_TRACE("cur_state %d", cap_enable);
8265 if(cap_enable == cur_state) {
8266 DEBUG_TRACE("cur_state|cap_enable %d", cap_enable|cur_state);
8267 elm_object_item_disabled_set(it, !cap_enable);
8268 elm_genlist_item_update(it);
8271 it = elm_genlist_item_next_get(it);
8277 static void __set_show_state_preview_obj(void *data, gboolean show)
8279 struct appdata *ad = data;
8280 cam_retm_if(ad == NULL, "appdata is NULL");
8283 cam_app_focus_guide_update(ad);
8284 cam_indicator_set_show_state(ad, TRUE);
8286 if (ad->guideline_edje)
8287 evas_object_show(ad->guideline_edje);
8289 if (ad->shot_mode_guide_popup)
8290 evas_object_show(ad->shot_mode_guide_popup);
8292 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
8293 cam_indicator_set_show_state(ad, FALSE);
8295 if (ad->guideline_edje)
8296 evas_object_hide(ad->guideline_edje);
8298 if (ad->shot_mode_guide_popup)
8299 evas_object_hide(ad->shot_mode_guide_popup);