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 #define EDIT_SHOTCUTS_CONTIAIN_CORRECT_W 10
107 #define EDIT_SHOTCUTS_CONTIAIN_CORRECT_H 10
110 static Shortcuts_List_Prop edit_shortcuts_prop_array[CAM_EDIT_SHORTCUTS_INDEX_MAX]
113 {CAM_EDIT_SHORTCUTS_INDEX_0, PROP_SHORTCUTS_PART_INDEX_0},
114 {CAM_EDIT_SHORTCUTS_INDEX_1, PROP_SHORTCUTS_PART_INDEX_1},
115 {CAM_EDIT_SHORTCUTS_INDEX_2, PROP_SHORTCUTS_PART_INDEX_2},
116 {CAM_EDIT_SHORTCUTS_INDEX_3, PROP_SHORTCUTS_PART_INDEX_3},
118 {CAM_EDIT_SHORTCUTS_INDEX_4, PROP_SHORTCUTS_PART_INDEX_4},
119 {CAM_EDIT_SHORTCUTS_INDEX_5, PROP_SHORTCUTS_PART_INDEX_5},
120 {CAM_EDIT_SHORTCUTS_INDEX_6, PROP_SHORTCUTS_PART_INDEX_6},
121 {CAM_EDIT_SHORTCUTS_INDEX_7, PROP_SHORTCUTS_PART_INDEX_7},
123 {CAM_EDIT_SHORTCUTS_INDEX_8, PROP_SHORTCUTS_PART_INDEX_8},
124 {CAM_EDIT_SHORTCUTS_INDEX_9, PROP_SHORTCUTS_PART_INDEX_9},
125 {CAM_EDIT_SHORTCUTS_INDEX_10, PROP_SHORTCUTS_PART_INDEX_10},
126 {CAM_EDIT_SHORTCUTS_INDEX_11, PROP_SHORTCUTS_PART_INDEX_11},
128 {CAM_EDIT_SHORTCUTS_INDEX_12, PROP_SHORTCUTS_PART_INDEX_12},
129 {CAM_EDIT_SHORTCUTS_INDEX_13, PROP_SHORTCUTS_PART_INDEX_13},
130 {CAM_EDIT_SHORTCUTS_INDEX_14, PROP_SHORTCUTS_PART_INDEX_14},
131 {CAM_EDIT_SHORTCUTS_INDEX_15, PROP_SHORTCUTS_PART_INDEX_15},
133 {CAM_EDIT_SHORTCUTS_INDEX_16, PROP_SHORTCUTS_PART_INDEX_16},
134 {CAM_EDIT_SHORTCUTS_INDEX_17, PROP_SHORTCUTS_PART_INDEX_17},
135 {CAM_EDIT_SHORTCUTS_INDEX_18, PROP_SHORTCUTS_PART_INDEX_18},
136 {CAM_EDIT_SHORTCUTS_INDEX_19, PROP_SHORTCUTS_PART_INDEX_19},
139 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
140 char **file_path, char **text, Evas_Object_Event_Cb *func);
141 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon);
143 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
144 void create_menubar_shortcuts_mouse_event(struct appdata *ad);
145 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar);
146 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no);
147 int toolbar_create_shortcuts_popup(struct appdata *ad);
149 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow);
150 static void setting_ctxpopup_destroy(struct appdata *ad);
152 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y);
154 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y);
155 static int __get_menubar_no_by_index(struct appdata *ad, int index);
157 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj, void *event_info);
158 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info);
159 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj, void *event_info);
160 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info);
161 static void __update_menubar_icon_by_index(struct appdata *ad, int index);
162 static void __cam_toolbar_edit_shortcuts_data_clean();
163 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y);
164 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y);
166 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon, int type, void *data, ButtonState state, Evas_Object_Event_Cb *func);
167 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction, int mouse_point, int *x, int *y);
169 /* Setting list callback*/
170 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting);
171 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info);
172 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info);
173 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info);
174 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info);
175 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info);
176 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info);
177 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info);
178 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info);
179 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info);
180 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info);
181 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info);
182 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info);
183 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info);
184 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info);
185 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info);
186 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info);
187 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info);
188 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info);
189 static void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info);
190 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info);
191 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info);
192 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info);
193 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info);
194 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
195 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
196 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info);
198 /* Toolbar functions */
199 static void __toolbar_menu_icon_update(struct appdata *ad);
200 static int __toolbar_menu_item_create(struct appdata *ad);
201 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state);
202 static void __toolbar_menu_item_reset(struct appdata *ad);
203 static int __toolbar_shutter_button_create(struct appdata *ad);
204 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state);
205 static int __toolbar_recording_button_create(struct appdata *ad);
206 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state);
207 static int __toolbar_quickview_item_create(struct appdata *ad);
208 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state);
209 static int __toolbar_backbutton_create(struct appdata *ad);
210 static void __toolbar_backbutton_destroy(struct appdata *ad);
211 static int __toolbar_cafbutton_create(struct appdata *ad);
212 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state);
213 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state);;
215 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state);
216 static const char* __get_text_name(CAM_MENU_ITEM item);
218 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
219 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info);
220 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect);
221 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
231 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
232 ShortCutData *swap_ele,
233 ShortCutData *cur_ele);
235 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no);
236 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata);
237 static void __cam_setting_sub_gl_style_set();
238 static int __get_sub_menu_height(int count);
239 int cam_toolbar_displaypopup_map_menu_value(int display_popup);
240 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item);
241 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2);
242 static void __resort_edit_shortcuts_list_by_part_index(void);
243 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele);
244 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no);
246 static void __update_setting_popup(void* data);
247 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele);
248 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
251 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no);
252 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
253 ShortCutData *cur_ele,
254 ShortCutData *insert_ele);
256 static void __set_show_state_preview_obj(void *data, gboolean show);
257 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part);
259 static Eina_Bool __setting_popup_timeout_checker_cb(void *data);
260 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad);
261 static void __cam_toolbar_display_shortcuts_editmode(void *data);
263 static void __cam_toolbar_exit_shortcuts_editmode(void *data);
264 static void __toolbar_dim_setting_shortcuts(struct appdata *ad);
267 static void cam_popup_warning_response_cb(void *data, Evas_Object *obj, void *event_info)
270 evas_object_del(obj);
274 static void cam_storage_warning_popup()
276 struct appdata *ad = (struct appdata *)cam_appdata_get();
277 cam_retm_if(ad == NULL, " appdata is NULL");
279 popup = elm_popup_add(ad->ug_base);
280 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
281 elm_object_text_set(popup, dgettext(PACKAGE, "IDS_CAM_POP_INSERT_MEMORY_CARD_TO_USE_CAMERA"));
282 elm_popup_timeout_set(popup, 3.0);
283 evas_object_smart_callback_add(popup, "timeout", cam_popup_warning_response_cb, NULL);
284 evas_object_show(popup);
287 static Eina_Bool __toolbar_check_af_timer(void *data)
290 struct appdata *ad = (struct appdata *)data;
291 cam_retv_if(ad == NULL, 0);
292 CamAppData *camapp = ad->camapp_handle;
293 if (camapp == NULL) {
294 if (ad->check_af_timer)
295 ad->check_af_timer = NULL;
296 return ECORE_CALLBACK_CANCEL;
299 if(camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
300 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
301 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
302 ad->emit_continuous_shutter = TRUE;
303 cam_mm_stop_focusing();
304 if (!cam_do_capture(ad)) {
305 cam_warning(LOG_UI, "cam_do_capture failed");
306 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
307 ad->emit_continuous_shutter = FALSE;
310 if (ad->check_af_timer)
311 ad->check_af_timer = NULL;
313 return ECORE_CALLBACK_CANCEL;
316 return ECORE_CALLBACK_RENEW;
318 static Eina_Bool __toolbar_continuous_shot_timer(void *data)
321 struct appdata *ad = (struct appdata *)data;
322 cam_retv_if(ad == NULL, 0);
323 CamAppData *camapp = ad->camapp_handle;
324 if (camapp == NULL) {
325 if (ad->continuous_shot_timer)
326 ad->continuous_shot_timer = NULL;
327 return ECORE_CALLBACK_CANCEL;
330 DEBUG_TRACE("camapp->burst_shot is %d", camapp->burst_shot);
331 if (camapp->burst_shot) {// burst shot mode 'on'
332 camapp->default_capture_mode = CAM_CAPTURE_BURST;
333 ad->emit_continuous_shutter = TRUE;
334 if (camapp->focus_state == CAMERA_FOCUS_STATE_FAILED
335 || camapp->focus_state == CAMERA_FOCUS_STATE_FOCUSED
336 || camapp->focus_state == CAMERA_FOCUS_STATE_RELEASED){
337 REMOVE_TIMER(ad->continuous_af_timer);
338 cam_mm_stop_focusing();
340 if (!cam_do_capture(ad)) {
341 cam_warning(LOG_UI, "cam_do_capture failed");
342 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
345 cam_debug(LOG_UI, "Not focused");
347 REMOVE_TIMER(ad->check_af_timer);
348 ad->check_af_timer = ecore_timer_add(0.2, __toolbar_check_af_timer, ad);
352 if (ad->continuous_shot_timer)
353 ad->continuous_shot_timer = NULL;
354 return ECORE_CALLBACK_CANCEL;
357 /* start AF after SHUTTER_LONG_TAP_TIME */
358 static Eina_Bool __toolbar_shutter_long_tap_af_timer(void *data)
360 struct appdata *ad = (struct appdata *)data;
361 cam_retv_if(ad == NULL, 0);
362 CamAppData *camapp = ad->camapp_handle;
363 if (camapp == NULL) {
364 if (ad->shutter_long_tap_timer)
365 ad->shutter_long_tap_timer = NULL;
366 return ECORE_CALLBACK_CANCEL;
369 if (!camapp->key_lock) {
370 camapp->key_lock = TRUE;
371 camapp->focus_mode = CAM_FOCUS_MODE_HALFSHUTTER;
372 camapp->touch_af_state = CAM_TOUCH_AF_STATE_NONE;
373 if (!cam_camera_key_half_press(ad)) {
374 cam_warning(LOG_UI, "cam_camera_key_half_press failed");
376 camapp->key_lock = FALSE;
379 if (ad->shutter_long_tap_timer)
380 ad->shutter_long_tap_timer = NULL;
381 return ECORE_CALLBACK_CANCEL;
384 static void __shutter_button_focus_out_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
386 DEBUG_TRACE("START");
388 struct appdata *ad = (struct appdata *)data;
389 cam_retm_if(ad == NULL, "appdata is NULL");
390 CamAppData *camapp = ad->camapp_handle;
391 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
393 if (ad->is_processing) {
397 cam_mm_stop_focusing();
398 cam_reset_focus_mode(ad);
401 void cam_toolbar_shutter_button_cb(void *data, Evas_Object *o,
402 const char *emission, const char *source)
404 DEBUG_TRACE("START");
406 struct appdata *ad = (struct appdata *)data;
407 cam_retm_if(ad == NULL, "appdata is NULL");
408 cam_app_timeout_checker_update();
409 if (ad->is_rotating) return;/*note: now is rotating*/
410 CamAppData *camapp = ad->camapp_handle;;
411 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
413 cam_retm_if(emission == NULL, "emission is NULL");
414 cam_retm_if(source == NULL, "source is NULL");
415 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
417 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
420 unload_zoom_edje(ad);
425 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
426 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
427 cam_toolbar_setting_popup_destroy(ad);
430 if (ad->edit_shortcuts_popup)
431 toolbar_destroy_shortcuts_popup(ad);
433 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
434 cam_debug(LOG_UI, "do not capture");
438 if (strcmp(emission, "press_shutter_sig") == 0) {
439 if ((camapp->continuous_shot_data && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING )
441 cam_critical(LOG_SYS, " capture is skipped because of CAM_CONTI_SHOT_STATUS_CAPTURING");
445 ad->emit_continuous_shutter = FALSE;
446 if (camapp->camera_mode == CAM_CAMERA_MODE) {
447 evas_object_event_callback_add(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb, (void *)ad);
449 if (camapp->af_mode == CAM_FOCUS_FACE) { /*note: face focus mode, if start capture,stop draw rect*/
450 cam_app_stop_video_stream();
452 REMOVE_TIMER(ad->continuous_shot_timer);
453 camapp->default_capture_mode = CAM_CAPTURE_SINGLE;
455 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE) && (camapp->burst_shot == TRUE)) {
456 if (strcmp(source, "hard_key") == 0) {
457 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
458 ad->continuous_shot_by_hard_key = TRUE;
459 __toolbar_continuous_shot_timer(ad);
461 if (!cam_do_capture(ad))
462 cam_warning(LOG_UI, "cam_do_capture failed");
465 if (camapp->timer == CAM_SETTINGS_TIMER_OFF) {
466 ad->continuous_shot_by_hard_key = FALSE;
467 ad->continuous_shot_timer = ecore_timer_add(0.5, __toolbar_continuous_shot_timer, ad);
471 ad->stop_continuous_shot = FALSE;
473 if (strcmp(source, "hard_key") == 0) {
474 if (!cam_do_capture(ad))
475 cam_warning(LOG_UI, "cam_do_capture failed");
477 if (cam_is_enabled_menu((void*)ad, CAM_MENU_FOCUS_MODE)){
478 REMOVE_TIMER(ad->continuous_af_timer);
479 ad->shutter_long_tap_timer = ecore_timer_add(SHUTTER_LONG_TAP_TIME, __toolbar_shutter_long_tap_af_timer, ad);
484 if (strcmp(source, "hard_key") == 0) {
485 if (!cam_do_capture(ad))
486 cam_warning(LOG_UI, "cam_do_capture failed");
490 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
491 } else if (strcmp(emission, "release_shutter_sig") == 0) {
492 if (camapp->camera_mode == CAM_CAMERA_MODE) {
493 evas_object_event_callback_del(ad->shutterbtn, EVAS_CALLBACK_MOUSE_OUT, __shutter_button_focus_out_cb);
494 REMOVE_TIMER(ad->shutter_long_tap_timer);
495 REMOVE_TIMER(ad->continuous_shot_timer);
496 REMOVE_TIMER(ad->check_af_timer);
498 if (cam_is_enabled_menu((void*)ad, CAM_MENU_BURST_SHOT_MODE)
499 && camapp->burst_shot == TRUE
500 && camapp->default_capture_mode == CAM_CAPTURE_BURST) {
501 DEBUG_TRACE("burst capture mode");
502 if (((strcmp(source, "hard_key") == 0) && (ad->continuous_shot_by_hard_key == FALSE))
503 || ((strcmp(source, "toolbar_signal") == 0) && (ad->continuous_shot_by_hard_key == TRUE))) {
504 DEBUG_TRACE("ignore this event");
507 ad->stop_continuous_shot = TRUE;
508 ad->emit_continuous_shutter = FALSE;
509 ad->continuous_shot_by_hard_key = FALSE;
513 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
514 } else if ( strcmp(emission, "click_shutter_sig") == 0){
516 if (ad->emit_continuous_shutter == TRUE ) {
517 ad->emit_continuous_shutter = FALSE;
521 if (camapp->default_capture_mode == CAM_CAPTURE_SINGLE) {
522 if (!cam_do_capture(ad))
523 cam_warning(LOG_UI, "cam_do_capture failed");
528 void cam_toolbar_recording_button_cb(void *data, Evas_Object *o,
529 const char *emission, const char *source)
531 DEBUG_TRACE("START");
533 struct appdata *ad = (struct appdata *)data;
534 cam_retm_if(ad == NULL, "appdata is NULL");
535 cam_app_timeout_checker_update();
536 if (ad->is_rotating) return;/*note: now is rotating*/
537 CamAppData *camapp = ad->camapp_handle;;
538 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
540 cam_retm_if(emission == NULL, "emission is NULL");
541 cam_retm_if(source == NULL, "source is NULL");
542 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
544 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
547 unload_zoom_edje(ad);
552 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
553 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
554 cam_toolbar_setting_popup_destroy(ad);
557 if (ad->edit_shortcuts_popup)
558 toolbar_destroy_shortcuts_popup(ad);
560 int mm_state = cam_mm_get_state();
562 if ((camapp->camera_mode == CAM_CAMERA_MODE)
563 && (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)) {
564 cam_debug(LOG_UI, "do not record");
568 if (strcmp(emission, "press_shutter_sig") == 0) {
569 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
570 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,press", "prog");
572 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,press", "prog");
573 } else if (strcmp(emission, "release_shutter_sig") == 0) {
574 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING))
575 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
577 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
578 } else if (strcmp(emission, "click_shutter_sig") == 0) {
580 if (camapp->camera_mode == CAM_CAMERA_MODE) {
581 if (mm_state != CAMERA_STATE_PREVIEW) {
582 cam_critical(LOG_UI, "Cannot start recording in capturing state");
587 if (!ad->is_recording) {
588 // change to camcorder mode
589 GValue value = {0, };
590 if (camapp->camera_mode == CAM_CAMERA_MODE) {
591 CAM_GVALUE_SET_INT(value, CAM_CAMCORDER_MODE);
592 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
597 if (!camapp->key_lock) {
598 camapp->key_lock = TRUE;
600 if (!cam_do_record(ad))
601 cam_warning(LOG_UI, "cam_do_record failed");
603 camapp->key_lock = FALSE;
606 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_RECORDING)) {
607 if (!cam_video_record_pause(ad))
608 cam_warning(LOG_UI, "cam_video_record_pause failed");
610 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
611 } else if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (mm_state == RECORDER_STATE_PAUSED)) {
612 if (!cam_video_record_resume(ad))
613 cam_warning(LOG_UI, "cam_video_record_resume failed");
615 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
621 void cam_toolbar_recording_stop_button_cb(void *data, Evas_Object *o,
622 const char *emission, const char *source)
624 DEBUG_TRACE("START");
626 struct appdata *ad = (struct appdata *)data;
627 cam_retm_if(ad == NULL, "appdata is NULL");
628 cam_app_timeout_checker_update();
629 if (ad->is_rotating) return;/*note: now is rotating*/
630 CamAppData *camapp = ad->camapp_handle;;
631 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
633 cam_retm_if(emission == NULL, "emission is NULL");
634 cam_retm_if(source == NULL, "source is NULL");
635 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
640 unload_zoom_edje(ad);
641 HIDE_EVAS_OBJECT(ad->indicator_edje);
642 DEL_EVAS_OBJECT(ad->recording_edje);
644 if (strcmp(emission, "press_shutter_sig") == 0) {
645 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,press", "prog");
646 } else if (strcmp(emission, "release_shutter_sig") == 0) {
647 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
648 } else if (strcmp(emission, "click_shutter_sig") == 0) {
649 state = cam_mm_get_state();
651 if ((state == RECORDER_STATE_RECORDING)
652 || (state == RECORDER_STATE_PAUSED)) {
653 camapp->rec_stop_type = CAM_REC_STOP_NORMAL;
654 if (!cam_video_record_stop(ad))
655 cam_warning(LOG_UI, "cam_video_record_stop failed");
657 cam_debug(LOG_UI, "error, not recording or pause state");
662 static void __toolbar_backbutton_cb(void *data, Evas_Object *o,
663 const char *emission, const char *source)
665 DEBUG_TRACE("START");
667 struct appdata *ad = (struct appdata *)data;
668 cam_retm_if(ad == NULL, "appdata is NULL");
669 if (ad->is_rotating) return;/*note: now is rotating*/
670 CamAppData *camapp = ad->camapp_handle;;
671 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
673 cam_retm_if(emission == NULL, "emission is NULL");
674 cam_retm_if(source == NULL, "source is NULL");
675 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
677 if (!cam_mm_is_preview_started(camapp->camera_mode)) return;
679 if (ad->timer_activated) {
680 cam_app_cancel_timer(ad);
681 if(ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
682 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
683 if (ad->ug_state != CAM_UG_PAUSE_STATE) {
684 GValue value = {0, };
685 CAM_GVALUE_SET_INT(value, CAM_CAMERA_MODE);
686 if (!cam_handle_value_set(ad, PROP_MODE, &value)) {
694 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
695 if (ad->is_recording) {
696 if (!camapp->key_lock) {
697 camapp->key_lock = TRUE;
699 if (!cam_video_record_cancel(ad))
700 cam_warning(LOG_UI, "failed");
702 camapp->key_lock = FALSE;
709 cam_tip_popup_destroy(ad);
711 } else if (ad->toolbar_setting_popup) {
712 if (ad->setting_ctxpopup) {
713 setting_ctxpopup_destroy(ad);
714 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
716 cam_toolbar_setting_popup_destroy(ad);
719 } else if (ad->setting_ctxpopup) {
720 setting_ctxpopup_destroy(ad);
721 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
723 } else if (ad->edit_shortcuts_popup) {
724 toolbar_destroy_shortcuts_popup(ad);
726 } else if (ad->ev_edje) {
729 } else if (ad->zoom_edje) {
730 unload_zoom_edje(ad);
735 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
738 elm_win_lower(ug_get_window());
744 static void __toolbar_cafbutton_cb(void *data, Evas_Object *o,
745 const char *emission, const char *source)
747 DEBUG_TRACE("START");
749 struct appdata *ad = (struct appdata *)data;
750 cam_retm_if(ad == NULL, "appdata is NULL");
751 CamAppData *camapp = ad->camapp_handle;;
752 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
754 cam_retm_if(emission == NULL, "emission is NULL");
755 cam_retm_if(source == NULL, "source is NULL");
756 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
761 cam_reset_focus_mode(ad);
764 static Ecore_Idler *run_image_view_idler = NULL;
765 static Eina_Bool __cam_toolbar_run_image_viewer_idler(void *data)
767 struct appdata *ad = (struct appdata *)data;
768 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
769 CamAppData *camapp = ad->camapp_handle;
770 cam_retv_if(camapp == NULL, ECORE_CALLBACK_CANCEL);
772 if (run_image_view_idler) {
773 ecore_idler_del(run_image_view_idler);
774 run_image_view_idler = NULL;
777 if (ad->ug_is_deleting_process == TRUE)
778 return ECORE_CALLBACK_CANCEL;
780 if (!cam_app_run_media_browser(ad, camapp->filename)) {
781 DEBUG_TRACE("cam_app_run_media_browser failed");
784 return ECORE_CALLBACK_CANCEL;
787 static void __toolbar_quickview_cb(void *data, Evas_Object *o,
788 const char *emission, const char *source)
790 cam_ret_if(data == NULL);
791 struct appdata *ad = (struct appdata *)data;
792 cam_retm_if(ad == NULL, "appdata is NULL");
793 cam_app_timeout_checker_update();
794 if (ad->is_rotating) return;/*note: now is rotating*/
795 CamAppData *camapp = ad->camapp_handle;
796 cam_ret_if(camapp == NULL);
797 cam_ret_if(emission == NULL);
798 cam_ret_if(source == NULL);
799 if (ad->ug_is_deleting_process == TRUE)
803 unload_zoom_edje(ad);
808 if (ad->setting_ctxpopup || ad->toolbar_setting_popup) {
809 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
810 cam_toolbar_setting_popup_destroy(ad);
813 if (ad->edit_shortcuts_popup)
814 toolbar_destroy_shortcuts_popup(ad);
816 if (ad->imageviewer_ug) {
819 if (emission && source)
820 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
822 if (strcmp(emission, "portrait,quickview,release") == 0
823 || strcmp(emission, "landscape,quickview,release") == 0) {
824 pthread_mutex_lock(&ad->file_reg_mutex);
825 cam_debug(LOG_SYS, " lock file_reg_mutex");
826 pthread_mutex_unlock(&ad->file_reg_mutex);
827 run_image_view_idler = ecore_idler_add(__cam_toolbar_run_image_viewer_idler, (void *)ad);
831 #if 0 /*block it temporary*/
832 static void __shotcus_edit_shotcuts_popup_cb(void *data, Evas * evas, Evas_Object *obj,
836 __setting_edit_shortcut_popup_cb(data, obj, event_info);
840 static void __shortcuts_burst_shot_popup_cb(void *data, Evas * evas, Evas_Object *obj,
844 __setting_burst_shot_popup_cb(data, obj, event_info);
847 static void __shortcuts_volume_key_popup_cb(void *data, Evas * evas, Evas_Object *obj,
851 __setting_volume_key_popup_cb(data, obj, event_info);
854 static void __shortcuts_self_portrait_popup_cb(void *data, Evas * evas, Evas_Object *obj,
858 __setting_self_portrait_popup_cb(data, obj, event_info);
861 static void __shortcuts_setting_flash_popup_cb(void *data, Evas * evas, Evas_Object *obj,
865 __setting_flash_popup(data, obj, event_info);
868 static void __shortcuts_shooting_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
872 __setting_shot_mode_popup_cb(data, obj, event_info);
875 static void __shortcuts_record_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
879 __setting_record_mode_popup(data, obj, event_info);
882 static void __shortcuts_scene_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
886 __setting_scenemode_popup_cb(data, obj, event_info);
889 static void __shortcuts_exposure_popup_cb(void *data, Evas * evas, Evas_Object *obj,
893 __setting_ev_popup_cb(data, obj, event_info);
896 static void __shortcuts_focus_mode_popup_cb(void *data, Evas * evas, Evas_Object *obj,
900 __setting_focus_mode_cb(data, obj, event_info);
903 static void __shortcuts_setting_timer_popup_cb(void *data, Evas * evas, Evas_Object *obj,
907 __setting_timer_popup_cb(data, obj, event_info);
910 static void __shortcuts_effects_popup_cb(void *data, Evas * evas, Evas_Object *obj,
914 __setting_effects_popup_cb(data, obj, event_info);
917 static void __shortcuts_photo_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
921 __setting_photo_resolution_popup_cb(data, obj, event_info);
924 static void __shortcuts_video_resolution_popup_cb(void *data, Evas * evas, Evas_Object *obj,
928 __setting_video_resolution_popup_cb(data, obj, event_info);
932 static void __shortcuts_white_banlance_popup_cb(void *data, Evas * evas, Evas_Object *obj,
936 __setting_wb_popup_cb(data, obj, event_info);
939 static void __shortcuts_setting_iso_popup_cb(void *data, Evas * evas, Evas_Object *obj,
943 __setting_iso_popup_cb(data, obj, event_info);
946 static void __shortcuts_setting_metering_popup_cb(void *data, Evas * evas, Evas_Object *obj,
950 __setting_metering_popup_cb(data, obj, event_info);
953 static void __shortcuts_anti_shake_popup_cb(void *data, Evas * evas, Evas_Object *obj,
957 __setting_anti_shake_popup_cb(data, obj, event_info);
960 static void __shortcuts_outdoor_visibility_popup_cb(void *data, Evas * evas, Evas_Object *obj,
964 __setting_outdoor_visibility_popup_cb(data, obj, event_info);
967 static void __shortcuts_auto_contrast_popup_cb(void *data, Evas * evas, Evas_Object *obj,
971 __setting_autocontrast_popup_cb(data, obj, event_info);
974 static void __shortcuts_guideline_popup_cb(void *data, Evas * evas, Evas_Object *obj,
978 __setting_guideline_popup_cb(data, obj, event_info);
981 static void __shortcuts_capture_voice_popup_cb(void *data, Evas * evas, Evas_Object *obj,
985 __setting_capture_by_voice_popup_cb(data, obj, event_info);
988 static void __shortcuts_gps_tag_popup_cb(void *data, Evas * evas, Evas_Object *obj,
992 __setting_gps_popup_cb(data, obj, event_info);
995 static void __shortcuts_storage_popup_cb(void *data, Evas * evas, Evas_Object *obj,
999 __setting_storage_popup_cb(data, obj, event_info);
1002 static void __shortcuts_reset_popup_cb(void *data, Evas * evas, Evas_Object *obj,
1006 __setting_restore_defaults_popup_cb(data, obj, event_info);
1009 static void __shortcuts_save_as_flip_cb(void *data, Evas * evas, Evas_Object *obj,
1013 __setting_save_as_flip_popup_cb(data, obj, event_info);
1017 static void __update_menu_bar_shortcuts_state_by_index(struct appdata *ad, int index, ToolbarItemState state)
1019 cam_ret_if(ad == NULL);
1020 int menubar_no = __get_menubar_no_by_index(ad, index);
1021 switch(menubar_no) {
1022 case CAM_MENU_BAR_LEFT_0:
1023 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1024 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1025 "toolbar_0_icon,normal", "prog");
1026 else if (TOOLBAR_ITEM_STATE_DIM == state)
1027 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1028 "toolbar_0_icon,dim", "prog");
1030 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1031 "toolbar_0_icon,invisible", "prog");
1033 case CAM_MENU_BAR_LEFT_1:
1034 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1035 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1036 "toolbar_1_icon,normal", "prog");
1037 else if (TOOLBAR_ITEM_STATE_DIM == state)
1038 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1039 "toolbar_1_icon,dim", "prog");
1041 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1042 "toolbar_1_icon,invisible", "prog");
1044 case CAM_MENU_BAR_LEFT_2:
1045 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1046 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1047 "toolbar_2_icon,normal", "prog");
1048 else if (TOOLBAR_ITEM_STATE_DIM == state)
1049 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1050 "toolbar_2_icon,dim", "prog");
1052 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1053 "toolbar_2_icon,invisible", "prog");
1055 case CAM_MENU_BAR_LEFT_3:
1056 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1057 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1058 "toolbar_3_icon,normal", "prog");
1059 else if (TOOLBAR_ITEM_STATE_DIM == state)
1060 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1061 "toolbar_3_icon,dim", "prog");
1063 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1064 "toolbar_3_icon,invisible", "prog");
1066 case CAM_MENU_BAR_LEFT_4:
1067 if (TOOLBAR_ITEM_STATE_NORMAL == state)
1068 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1069 "toolbar_4_icon,normal", "prog");
1070 else if (TOOLBAR_ITEM_STATE_DIM == state)
1071 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1072 "toolbar_4_icon,dim", "prog");
1074 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
1075 "toolbar_4_icon,invisible", "prog");
1078 DEBUG_TRACE("not in menubar");
1083 static void __toolbar_menu_type_update(Evas_Object *toolbar_icon,
1084 int type, void *data, ButtonState state, Evas_Object_Event_Cb *func)
1086 struct appdata *ad = (struct appdata *)data;
1087 cam_ret_if(ad == NULL);
1088 CamAppData *camapp = ad->camapp_handle;
1089 cam_ret_if(camapp == NULL);
1091 char *icon_name = NULL;
1094 ButtonState button_state = state;
1095 ToolbarItemState item_state = TOOLBAR_ITEM_STATE_NORMAL;
1097 if (!cam_is_enabled_menu(ad, type)) {
1098 button_state = BUTTON_STATE_DIM;
1099 item_state = TOOLBAR_ITEM_STATE_DIM;
1102 __get_toolbar_shortcuts_file_func(ad, type, button_state, &icon_name, &text, func);
1105 elm_image_file_set(toolbar_icon, CAM_IMAGE_EDJ_NAME, icon_name);
1107 cam_critical(LOG_UI, "icon_name is NULL");
1109 __update_menu_bar_shortcuts_state_by_index(ad, type, item_state);
1111 if (button_state == BUTTON_STATE_DIM)
1112 evas_object_color_set(toolbar_icon, 255, 255, 255, 77); /*opacity 30% for dim menu */
1114 evas_object_color_set(toolbar_icon, 255, 255, 255, 255);
1117 static void __get_toolbar_shortcuts_file_func(void *data, int type, ButtonState state,
1118 char **file_path, char **text, Evas_Object_Event_Cb *func)
1120 struct appdata *ad = (struct appdata *)data;
1121 cam_ret_if(ad == NULL);
1122 CamAppData *camapp = ad->camapp_handle;
1123 cam_ret_if(camapp == NULL);
1130 case CAM_MENU_EMPTY:
1131 case CAM_MENU_SHORTCUTS:
1133 case CAM_MENU_BURST_SHOT_MODE: {
1134 if (camapp->burst_shot) {
1135 if (state == BUTTON_STATE_PRESS)
1136 *file_path = BURST_SHOT_MODE_ON_PRESS_ICON;
1138 *file_path = BURST_SHOT_MODE_ON_NORMAL_ICON;
1141 if (state == BUTTON_STATE_PRESS)
1142 *file_path = BURST_SHOT_MODE_OFF_PRESS_ICON;
1144 *file_path = BURST_SHOT_MODE_OFF_NORMAL_ICON;
1147 *text = dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB");
1149 if (state != BUTTON_STATE_DIM)
1150 *func = __shortcuts_burst_shot_popup_cb;
1153 case CAM_MENU_VOLUME_KEY: {
1154 *file_path = __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), state);
1155 *text = dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS");
1157 if (state != BUTTON_STATE_DIM)
1158 *func = __shortcuts_volume_key_popup_cb;
1161 case CAM_MENU_SELF_PORTRAIT: {
1162 if (state == BUTTON_STATE_PRESS)
1163 *file_path = CAMERA_SELF_PORTRAIT_PRESS_ICON;
1165 *file_path = CAMERA_SELF_PORTRAIT_NORMAL_ICON;
1167 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT");
1169 if (state != BUTTON_STATE_DIM)
1170 *func = __shortcuts_self_portrait_popup_cb;
1173 case CAM_MENU_FLASH: {
1174 *file_path = __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), state);
1175 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FLASH");
1177 if (state != BUTTON_STATE_DIM)
1178 *func = __shortcuts_setting_flash_popup_cb;
1181 case CAM_MENU_SHOOTING_MODE: {
1182 *file_path = __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), state);
1183 *text = dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE");
1185 if (state != BUTTON_STATE_DIM)
1186 *func = __shortcuts_shooting_mode_popup_cb;
1189 case CAM_MENU_RECORDING_MODE: {
1190 *file_path = __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), state);
1191 *text = dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE");
1193 if (state != BUTTON_STATE_DIM)
1194 *func = __shortcuts_record_mode_popup_cb;
1197 case CAM_MENU_SCENE_MODE: {
1198 *file_path = __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), state);
1199 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE");
1201 if (state != BUTTON_STATE_DIM)
1202 *func = __shortcuts_scene_mode_popup_cb;
1205 case CAM_MENU_EXPLOSURE_VALUE: {
1206 *file_path = __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, state);
1207 *text = dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE");
1209 if (state != BUTTON_STATE_DIM)
1210 *func = __shortcuts_exposure_popup_cb;
1213 case CAM_MENU_FOCUS_MODE: {
1214 *file_path = __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), state);
1215 *text = dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE");
1217 if (state != BUTTON_STATE_DIM)
1218 *func = __shortcuts_focus_mode_popup_cb;
1221 case CAM_MENU_TIMER: {
1222 *file_path = __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), state);
1223 *text = dgettext(PACKAGE, "IDS_CAM_BODY_TIMER");
1225 if (state != BUTTON_STATE_DIM)
1226 *func = __shortcuts_setting_timer_popup_cb;
1230 case CAM_MENU_EFFECTS: {
1231 *file_path = __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), state);
1232 *text = dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS");
1234 if (state != BUTTON_STATE_DIM)
1235 *func = __shortcuts_effects_popup_cb;
1238 case CAM_MENU_PHOTO_RESOLUTION: {
1239 *file_path = __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), state);
1240 *text = dgettext(PACKAGE, "IDS_CAM_OPT_PHOTO_RESOLUTION_ABB");
1242 if (state != BUTTON_STATE_DIM)
1243 *func = __shortcuts_photo_resolution_popup_cb;
1246 case CAM_MENU_VIDEO_RESOLUTION: {
1247 *file_path = __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), state);
1248 *text = dgettext(PACKAGE, "IDS_CAM_OPT_VIDEO_RESOLUTION_ABB");
1250 if (state != BUTTON_STATE_DIM)
1251 *func = __shortcuts_video_resolution_popup_cb;
1255 case CAM_MENU_WHITE_BALANCE: {
1256 *file_path = __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), state);
1257 *text = dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB");
1259 if (state != BUTTON_STATE_DIM)
1260 *func = __shortcuts_white_banlance_popup_cb;
1263 case CAM_MENU_ISO: {
1264 *file_path = __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), state);
1265 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ISO");
1267 if (state != BUTTON_STATE_DIM)
1268 *func = __shortcuts_setting_iso_popup_cb;
1271 case CAM_MENU_METERING: {
1272 *file_path = __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), state);
1273 *text = dgettext(PACKAGE, "IDS_CAM_BODY_METERING");
1275 if (state != BUTTON_STATE_DIM)
1276 *func = __shortcuts_setting_metering_popup_cb;
1279 case CAM_MENU_ANTI_SHAKE: {
1280 if (ad->camapp_handle->anti_shake) {
1281 if (state == BUTTON_STATE_PRESS)
1282 *file_path = ANTISHAKE_ON_PRESS_ICON;
1284 *file_path = ANTISHAKE_ON_NORMAL_ICON;
1287 if (state == BUTTON_STATE_PRESS)
1288 *file_path = ANTISHAKE_OFF_PRESS_ICON;
1290 *file_path = ANTISHAKE_OFF_NORMAL_ICON;
1293 *text = dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE");
1295 if (state != BUTTON_STATE_DIM)
1296 *func = __shortcuts_anti_shake_popup_cb;
1299 case CAM_MENU_OUTDOOR_VISIBILITY: {
1300 if (ad->camapp_handle->outdoor_visibility) {
1301 if (state == BUTTON_STATE_PRESS)
1302 *file_path = OUTDOOR_VISIBILITY_ON_PRESS_ICON;
1304 *file_path = OUTDOOR_VISIBILITY_ON_NORMAL_ICON;
1307 if (state == BUTTON_STATE_PRESS)
1308 *file_path = OUTDOOR_VISIBILITY_OFF_PRESS_ICON;
1310 *file_path = OUTDOOR_VISIBILITY_OFF_NORMAL_ICON;
1313 *text = dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY");
1315 if (state != BUTTON_STATE_DIM)
1316 *func = __shortcuts_outdoor_visibility_popup_cb;
1319 case CAM_MENU_AUTO_CONTRAST: {
1320 if (ad->camapp_handle->auto_contrast) {
1321 if (state == BUTTON_STATE_PRESS)
1322 *file_path = AUTO_CONTRAST_ON_PRESS_ICON;
1324 *file_path = AUTO_CONTRAST_ON_NORMAL_ICON;
1327 if (state == BUTTON_STATE_PRESS)
1328 *file_path = AUTO_CONTRAST_OFF_PRESS_ICON;
1330 *file_path = AUTO_CONTRAST_OFF_NORMAL_ICON;
1333 *text = dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST");
1335 if (state != BUTTON_STATE_DIM)
1336 *func = __shortcuts_auto_contrast_popup_cb;
1339 case CAM_MENU_GUIDELINES: {
1340 if (ad->camapp_handle->guideline) {
1341 if (state == BUTTON_STATE_PRESS)
1342 *file_path = GUIDELINE_ON_PRESS_ICON;
1344 *file_path = GUIDELINE_ON_NORMAL_ICON;
1347 if (state == BUTTON_STATE_PRESS)
1348 *file_path = GUIDELINE_OFF_PRESS_ICON;
1350 *file_path = GUIDELINE_OFF_NORMAL_ICON;
1353 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE");
1355 if (state != BUTTON_STATE_DIM)
1356 *func = __shortcuts_guideline_popup_cb;
1359 case CAM_MENU_CAPTURE_VOICE: {
1360 if (ad->camapp_handle->capture_by_voice) {
1361 if (state == BUTTON_STATE_PRESS)
1362 *file_path = CAPTURE_WITH_VOICE_ON_PRESS_ICON;
1364 *file_path = CAPTURE_WITH_VOICE_ON_NORMAL_ICON;
1367 if (state == BUTTON_STATE_PRESS)
1368 *file_path = CAPTURE_WITH_VOICE_OFF_PRESS_ICON;
1370 *file_path = CAPTURE_WITH_VOICE_OFF_NORMAL_ICON;
1373 *text = "Capture with voice";
1375 if (state != BUTTON_STATE_DIM)
1376 *func = __shortcuts_capture_voice_popup_cb;
1379 case CAM_MENU_GPS_TAG: {
1380 if (ad->camapp_handle->gps) {
1381 if (state == BUTTON_STATE_PRESS)
1382 *file_path = GPS_ON_PRESS_ICON;
1384 *file_path = GPS_ON_NORMAL_ICON;
1387 if (state == BUTTON_STATE_PRESS)
1388 *file_path = GPS_OFF_PRESS_ICON;
1390 *file_path = GPS_OFF_NORMAL_ICON;
1393 *text = dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG");
1395 if (state != BUTTON_STATE_DIM)
1396 *func = __shortcuts_gps_tag_popup_cb;
1399 case CAM_MENU_SAVE_AS_FLIP: {
1400 if (ad->camapp_handle->save_as_flip) {
1401 if (state == BUTTON_STATE_PRESS)
1402 *file_path = SAVE_AS_FLIP_ON_PRESS_ICON;
1404 *file_path = SAVE_AS_FLIP_ON_NORMAL_ICON;
1407 if (state == BUTTON_STATE_PRESS)
1408 *file_path = SAVE_AS_FLIP_OFF_PRESS_ICON;
1410 *file_path = SAVE_AS_FLIP_OFF_NORMAL_ICON;
1413 *text = dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED");
1415 if (state != BUTTON_STATE_DIM)
1416 *func = __shortcuts_save_as_flip_cb;
1419 case CAM_MENU_STORAGE: {
1420 *file_path = __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), state);
1421 *text = dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE");
1423 if (state != BUTTON_STATE_DIM)
1424 *func = __shortcuts_storage_popup_cb;
1427 case CAM_MENU_RESET: {
1428 if (state == BUTTON_STATE_PRESS)
1429 *file_path = RESET_SETTING_PRESS_ICON;
1431 *file_path = RESET_SETTING_NORMAL_ICON;
1433 *text = dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET");
1435 if (state != BUTTON_STATE_DIM)
1436 *func = __shortcuts_reset_popup_cb;
1444 static void __toolbar_menu_icon_update(struct appdata *ad)
1446 cam_ret_if(ad == NULL);
1448 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1449 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1453 static void __toolbar_menu_item_unswallow(struct appdata *ad)
1455 cam_ret_if(ad == NULL);
1456 cam_ret_if(ad->toolbar_edje == NULL);
1459 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1460 char buf[32 + 1] = {'\0', };
1461 snprintf(buf, 32, "toolbar_%d_icon", i);
1462 elm_object_part_content_unset(ad->toolbar_edje, buf);
1466 static void __toolbar_menu_item_destroy(struct appdata *ad)
1468 cam_ret_if(ad == NULL);
1469 __toolbar_menu_item_unswallow(ad);
1470 Evas_Object *icon = NULL;
1472 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1473 icon = ad->toolbar_menu_arrays[i].icon;
1474 DEL_EVAS_OBJECT(icon);
1475 ad->toolbar_menu_arrays[i].icon = NULL;
1479 static void __toolbar_menu_item_swallow(struct appdata *ad)
1481 cam_ret_if(ad == NULL);
1482 cam_ret_if(ad->toolbar_edje == NULL);
1484 Evas_Object *icon = NULL;
1486 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1487 icon = ad->toolbar_menu_arrays[i].icon;
1488 char buf[32 + 1] = {'\0', };
1489 snprintf(buf, 32, "toolbar_%d_icon", i);
1490 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1495 static int __toolbar_menu_item_create(struct appdata *ad)
1498 cam_retv_if(ad == NULL, -1);
1499 CamAppData *camapp = ad->camapp_handle;
1500 cam_retv_if(camapp == NULL, -1);
1502 Evas_Object *icon = NULL;
1503 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
1506 icon = elm_image_add(ad->toolbar_edje);
1507 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
1509 elm_object_part_content_set(ad->toolbar_edje, "toolbar_0_icon", icon);
1510 ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon = icon;
1514 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1515 icon = ad->toolbar_menu_arrays[i].icon;
1517 icon = elm_image_add(ad->toolbar_edje);
1519 char buf[32 + 1] = {'\0', };
1520 snprintf(buf, 32, "toolbar_%d_icon", i);
1521 elm_object_part_content_set(ad->toolbar_edje, buf, icon);
1522 ad->toolbar_menu_arrays[i].icon = icon;
1527 static void __toolbar_menu_item_update(struct appdata *ad, ToolbarItemState state)
1529 cam_retm_if(ad == NULL, "appdata is null");
1531 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
1532 __update_menu_bar_shortcuts_state_by_index(ad, ad->toolbar_menu_arrays[i].menu_type, state);
1534 if(state == TOOLBAR_ITEM_STATE_DIM) { //it don't make dimming in edje
1535 Evas_Object *icon = NULL;
1536 int menubar_no = __get_menubar_no_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
1537 cam_retm_if(menubar_no == CAM_MENU_BAR_LEFT_INVALID, "invalid menubar no");
1539 icon = ad->toolbar_menu_arrays[menubar_no].icon;
1542 evas_object_color_set(icon, 255, 255, 255, 77); // set opacity 30%
1547 static void __toolbar_menu_item_reset(struct appdata *ad)
1549 cam_retm_if(ad == NULL, "appdata is null");
1551 __toolbar_menu_item_destroy(ad);
1552 __toolbar_menu_item_create(ad);
1554 ad->toolbar_menu_arrays[1].menu_type = CAM_MENU_EMPTY;
1555 ad->toolbar_menu_arrays[2].menu_type = CAM_MENU_EMPTY;
1557 if (cam_mm_is_support_front_camera() == TRUE)
1558 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_SELF_PORTRAIT;
1560 ad->toolbar_menu_arrays[3].menu_type = CAM_MENU_EMPTY;
1562 #ifdef CAMERA_MACHINE_I686
1563 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_EMPTY;
1565 ad->toolbar_menu_arrays[4].menu_type = CAM_MENU_FLASH;
1568 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
1570 cam_toolbar_menu_config_update(ad);
1573 static void __toolbar_shutter_button_unset(struct appdata *ad)
1575 cam_ret_if(ad == NULL);
1576 cam_ret_if(ad->toolbar_edje == NULL);
1578 elm_object_part_content_unset(ad->toolbar_edje, "shutter_button");
1581 static void __toolbar_shutter_button_destroy(struct appdata *ad)
1583 cam_ret_if(ad == NULL);
1585 if (ad->shutterbtn) {
1586 __toolbar_shutter_button_unset(ad);
1587 if (ad->shutterbtn_camera_icon) {
1588 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1589 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1591 DEL_EVAS_OBJECT(ad->shutterbtn)
1595 static void __toolbar_shutter_button_set(struct appdata *ad)
1597 cam_ret_if(ad == NULL);
1598 cam_ret_if(ad->toolbar_edje == NULL);
1599 cam_ret_if(ad->shutterbtn == NULL);
1601 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", ad->shutterbtn);
1604 static int __toolbar_shutter_button_create(struct appdata *ad)
1607 cam_retv_if(ad == NULL, -1);
1608 Evas_Object *edje = NULL;
1609 if (ad->shutterbtn) {
1610 if (ad->shutterbtn_camera_icon) {
1611 elm_object_part_content_unset(ad->shutterbtn, "camera_icon");
1612 DEL_EVAS_OBJECT(ad->shutterbtn_camera_icon)
1614 DEL_EVAS_OBJECT(ad->shutterbtn)
1616 ad->shutterbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "shutter_button");
1617 edje = ad->shutterbtn;
1618 cam_retv_if(edje == NULL, -1);
1620 ad->shutterbtn_camera_icon = elm_image_add(edje);
1621 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1622 elm_object_part_content_set(edje, "camera_icon", ad->shutterbtn_camera_icon);
1624 edje_object_signal_callback_del(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb);
1625 edje_object_signal_callback_add(_EDJ(edje), "*", "toolbar_signal", cam_toolbar_shutter_button_cb, ad);
1627 elm_object_part_content_set(ad->toolbar_edje, "shutter_button", edje);
1628 evas_object_show(edje);
1631 return EXIT_SUCCESS;
1634 void cam_toolbar_update_shutter_button(struct appdata *ad, ToolbarItemState state)
1636 __toolbar_shutter_button_update(ad, state);
1639 static void __toolbar_shutter_button_update(struct appdata *ad, ToolbarItemState state)
1641 cam_ret_if(ad == NULL);
1642 CamAppData *camapp = ad->camapp_handle;
1643 cam_ret_if(camapp == NULL);
1645 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1646 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,normal", "prog");
1647 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
1648 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1649 } else if (state == TOOLBAR_ITEM_STATE_PRESS) {
1650 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,press", "prog");
1651 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,normal", "prog");
1652 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON);
1653 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1654 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,dim", "prog");
1655 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,dim", "prog");
1656 elm_image_file_set(ad->shutterbtn_camera_icon, CAM_IMAGE_EDJ_NAME, CAMERA_SHUTTER_ICON_DIM);
1657 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1658 edje_object_signal_emit(_EDJ(ad->shutterbtn), "capture_button,invisible", "prog");
1659 edje_object_signal_emit(_EDJ(ad->shutterbtn), "camera_icon,invisible", "prog");
1661 DEBUG_TRACE("Invalid state for shutter button");
1665 static void __toolbar_recording_button_unset(struct appdata *ad)
1667 cam_ret_if(ad == NULL);
1668 cam_ret_if(ad->toolbar_edje == NULL);
1670 elm_object_part_content_unset(ad->toolbar_edje, "recording_button");
1673 static void __toolbar_recording_button_destroy(struct appdata *ad)
1675 cam_ret_if(ad == NULL);
1677 __toolbar_recording_button_unset(ad);
1678 DEL_EVAS_OBJECT(ad->recordingbtn);
1681 static void __toolbar_recording_button_set(struct appdata *ad)
1683 cam_ret_if(ad == NULL);
1684 cam_ret_if(ad->toolbar_edje == NULL);
1685 cam_ret_if(ad->recordingbtn == NULL);
1687 elm_object_part_content_set(ad->toolbar_edje, "recording_button", ad->recordingbtn);
1690 static int __toolbar_recording_button_create(struct appdata *ad)
1693 cam_retv_if(ad == NULL, -1);
1694 Evas_Object *edje = NULL;
1695 DEL_EVAS_OBJECT(ad->recordingbtn);
1696 ad->recordingbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_button");
1697 edje = ad->recordingbtn;
1698 cam_retv_if(edje == NULL, -1);
1700 edje_object_signal_callback_del(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb);
1701 edje_object_signal_callback_add(_EDJ(ad->recordingbtn), "*", "toolbar_signal", cam_toolbar_recording_button_cb, ad);
1702 elm_object_part_content_set(ad->toolbar_edje, "recording_button", edje);
1703 evas_object_show(edje);
1706 return EXIT_SUCCESS;
1709 static void __toolbar_recording_button_update(struct appdata *ad, ToolbarItemState state)
1711 cam_ret_if(ad == NULL);
1712 CamAppData *camapp = ad->camapp_handle;
1713 cam_ret_if(camapp == NULL);
1714 cam_ret_if(ad->recordingbtn == NULL);
1716 int recording_state = 0;
1718 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1719 recording_state = cam_mm_get_state();
1721 if ((camapp->camera_mode == CAM_CAMCORDER_MODE) && (recording_state == RECORDER_STATE_RECORDING)) {
1722 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1723 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,normal", "prog");
1725 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,normal", "prog");
1726 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_pause_button,invisible", "prog");
1729 } else if (state == TOOLBAR_ITEM_STATE_DIM) {
1730 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,dim", "prog");
1731 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1732 edje_object_signal_emit(_EDJ(ad->recordingbtn), "recording_button,invisible", "prog");
1734 DEBUG_TRACE("Invalid state for recording button");
1738 static void __toolbar_recording_stop_button_unset(struct appdata *ad)
1740 cam_ret_if(ad == NULL);
1741 cam_ret_if(ad->toolbar_edje == NULL);
1743 elm_object_part_content_unset(ad->toolbar_edje, "recording_stop_button");
1746 static void __toolbar_recording_stop_button_destroy(struct appdata *ad)
1748 cam_ret_if(ad == NULL);
1750 __toolbar_recording_stop_button_unset(ad);
1751 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1754 static void __toolbar_recording_stop_button_set(struct appdata *ad)
1756 cam_ret_if(ad == NULL);
1757 cam_ret_if(ad->toolbar_edje == NULL);
1758 cam_ret_if(ad->recording_stop_btn == NULL);
1760 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", ad->recording_stop_btn);
1763 static int __toolbar_recording_stop_button_create(struct appdata *ad)
1766 cam_retv_if(ad == NULL, -1);
1767 Evas_Object *edje = NULL;
1768 DEL_EVAS_OBJECT(ad->recording_stop_btn);
1769 ad->recording_stop_btn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "recording_stop_button");
1770 edje = ad->recording_stop_btn;
1771 cam_retv_if(edje == NULL, -1);
1773 edje_object_signal_callback_del(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb);
1774 edje_object_signal_callback_add(_EDJ(ad->recording_stop_btn), "*", "toolbar_signal", cam_toolbar_recording_stop_button_cb, ad);
1775 elm_object_part_content_set(ad->toolbar_edje, "recording_stop_button", edje);
1776 edje_object_signal_emit(_EDJ(ad->recording_stop_btn), "recording_stop_button,normal", "prog");
1777 evas_object_show(edje);
1780 return EXIT_SUCCESS;
1783 static void __toolbar_quickview_item_unset(struct appdata *ad)
1785 cam_ret_if(ad == NULL);
1786 cam_ret_if(ad->toolbar_edje == NULL);
1788 elm_object_part_content_unset(ad->toolbar_edje, "quickview_item");
1791 static void __toolbar_quickview_item_destroy(struct appdata *ad)
1793 cam_ret_if(ad == NULL);
1795 __toolbar_quickview_item_unset(ad);
1796 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.edje);
1799 static void __toolbar_quickview_item_set(struct appdata *ad)
1801 cam_ret_if(ad == NULL);
1802 cam_ret_if(ad->toolbar_edje == NULL);
1803 cam_ret_if(ad->toolbar.quickview_item.edje == NULL);
1805 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", ad->toolbar.quickview_item.edje);
1808 static int __toolbar_quickview_item_create(struct appdata *ad)
1811 cam_retv_if(ad == NULL, -1);
1812 Evas_Object *edje = NULL;
1814 if (ad->toolbar.quickview_item.edje == NULL) {
1815 ad->toolbar.quickview_item.edje =
1816 cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_quickview_item");
1817 edje_object_signal_callback_del(_EDJ(ad->toolbar.quickview_item.edje),
1818 "*", "toolbar_signal", __toolbar_quickview_cb);
1819 edje_object_signal_callback_add(_EDJ(ad->toolbar.quickview_item.edje),
1820 "*", "toolbar_signal", __toolbar_quickview_cb, ad);
1822 edje = ad->toolbar.quickview_item.edje;
1824 cam_retv_if(edje == NULL, -1);
1825 elm_object_part_content_set(ad->toolbar_edje, "quickview_item", edje);
1826 evas_object_show(edje);
1828 return EXIT_SUCCESS;
1831 static void __toolbar_quickview_item_update(struct appdata *ad, ToolbarItemState state)
1833 cam_ret_if(ad == NULL);
1835 Evas_Object *edje = NULL;
1836 edje = ad->toolbar.quickview_item.edje;
1838 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1839 edje_object_signal_emit(_EDJ(edje), "SET_DEFAULT", "prog");
1840 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1841 edje_object_signal_emit(_EDJ(edje), "SET_INVISIBLE", "prog");
1843 DEBUG_TRACE("Invalid state for quickview button");
1847 static int __toolbar_backbutton_create(struct appdata *ad)
1849 DEBUG_TRACE("START");
1850 cam_retv_if(ad == NULL, -1);
1851 Evas_Object *edje = NULL;
1852 if (ad->backbtn == NULL) {
1853 ad->backbtn = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_backbutton_item");
1854 edje_object_signal_callback_del(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb);
1855 edje_object_signal_callback_add(_EDJ(ad->backbtn), "*", "toolbar_signal", __toolbar_backbutton_cb, ad);
1859 cam_retv_if(edje == NULL, -1);
1860 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", edje);
1861 evas_object_show(edje);
1863 return EXIT_SUCCESS;
1866 static void __toolbar_backbutton_unset(struct appdata *ad)
1868 cam_ret_if(ad == NULL);
1869 cam_ret_if(ad->toolbar_edje == NULL);
1871 elm_object_part_content_unset(ad->toolbar_edje, "backbutton_item");
1874 static void __toolbar_backbutton_destroy(struct appdata *ad)
1876 cam_ret_if(ad == NULL);
1878 __toolbar_backbutton_unset(ad);
1879 DEL_EVAS_OBJECT(ad->backbtn);
1882 static void __toolbar_backbutton_set(struct appdata *ad)
1884 cam_ret_if(ad == NULL);
1885 cam_ret_if(ad->toolbar_edje == NULL);
1886 cam_ret_if(ad->backbtn == NULL);
1888 elm_object_part_content_set(ad->toolbar_edje, "backbutton_item", ad->backbtn);
1892 static void __toolbar_cafbutton_unset(struct appdata *ad)
1894 cam_ret_if(ad == NULL);
1895 cam_ret_if(ad->toolbar_edje == NULL);
1897 elm_object_part_content_unset(ad->toolbar_edje, "cafbutton_item");
1900 static void __toolbar_cafbutton_destroy(struct appdata *ad)
1902 cam_ret_if(ad == NULL);
1903 __toolbar_cafbutton_unset(ad);
1904 DEL_EVAS_OBJECT(ad->caf_button);
1907 static void __toolbar_cafbutton_set(struct appdata *ad)
1909 cam_ret_if(ad == NULL);
1910 cam_ret_if(ad->toolbar_edje == NULL);
1911 cam_ret_if(ad->caf_button == NULL);
1913 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1916 static int __toolbar_cafbutton_create(struct appdata *ad)
1918 DEBUG_TRACE("START");
1919 cam_retvm_if(ad == NULL, -1, "appdata is null");
1920 if (ad->caf_button == NULL) {
1921 ad->caf_button = cam_app_load_edj(ad->toolbar_edje, ad->toolbar_edj_file, "toolbar_cafbutton_item");
1923 cam_retvm_if(ad->caf_button == NULL, -1, "ad->caf_button is null");
1925 edje_object_signal_callback_del(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb);
1926 edje_object_signal_callback_add(_EDJ(ad->caf_button), "*", "toolbar_signal", __toolbar_cafbutton_cb, ad);
1928 elm_object_part_content_set(ad->toolbar_edje, "cafbutton_item", ad->caf_button);
1929 evas_object_show(ad->caf_button);
1931 return EXIT_SUCCESS;
1934 static void __toolbar_cafbutton_update(struct appdata *ad, ToolbarItemState state)
1936 cam_retm_if(ad == NULL, "appdata is null");
1937 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1939 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1940 show_caf_button = TRUE;
1941 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,normal", "prog");
1942 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1943 show_caf_button = FALSE;
1944 edje_object_signal_emit(_EDJ(ad->caf_button), "caf_button,invisible", "prog");
1946 show_caf_button = FALSE;
1947 DEBUG_TRACE("Invalid state for caf_button");
1951 static void __toolbar_bg_update(struct appdata *ad, ToolbarItemState state)
1953 cam_retm_if(ad == NULL, "appdata is null");
1954 cam_retm_if(ad->caf_button == NULL, "ad->caf_button is null");
1956 if (state == TOOLBAR_ITEM_STATE_NORMAL) {
1957 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,show", "prog");
1958 } else if (state == TOOLBAR_ITEM_STATE_INVISIBLE) {
1959 edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,hide", "prog");
1961 DEBUG_TRACE("Invalid state for caf_button");
1965 #define SETTING_SHORTCUTS_HOLD_TIME (0.5)
1966 static Ecore_Timer *edit_shortcuts_timer = NULL;
1967 static Eina_Bool __toolbar_show_edit_shortcuts_timer_cb(void *data)
1969 struct appdata *ad = (struct appdata *)data;
1970 cam_retv_if(ad == NULL, ECORE_CALLBACK_CANCEL);
1971 if (edit_shortcuts_timer) {
1972 edit_shortcuts_timer = NULL;
1974 toolbar_create_shortcuts_popup(ad);
1975 return ECORE_CALLBACK_CANCEL;
1978 static void __toolbar_create_show_edit_shortcuts_timer(void *data)
1980 struct appdata *ad = (struct appdata *)data;
1981 cam_ret_if(ad == NULL);
1982 if (edit_shortcuts_timer) {
1983 ecore_timer_del(edit_shortcuts_timer);
1984 edit_shortcuts_timer = NULL;
1986 edit_shortcuts_timer = ecore_timer_add(SETTING_SHORTCUTS_HOLD_TIME,
1987 __toolbar_show_edit_shortcuts_timer_cb,
1991 static void __toolbar_destroy_show_edit_shortcuts_timer(void)
1993 if (edit_shortcuts_timer) {
1994 ecore_timer_del(edit_shortcuts_timer);
1995 edit_shortcuts_timer = NULL;
1999 static void __toolbar_edje_signal_cb(void *data, Evas_Object *o,
2000 const char *emission, const char *source)
2002 DEBUG_TRACE("_________________################____________________\n");
2004 struct appdata *ad = (struct appdata *)data;
2005 cam_ret_if(ad == NULL);
2006 cam_app_timeout_checker_update();
2007 DEBUG_TRACE("ad->is_rotating = %d", ad->is_rotating);
2008 if (ad->is_rotating == TRUE) {
2009 DEBUG_TRACE("now in rotating target, do not accept signal");
2012 CamAppData *camapp = ad->camapp_handle;
2013 cam_ret_if(camapp == NULL);
2014 cam_ret_if(emission == NULL);
2015 cam_ret_if(source == NULL);
2018 unload_zoom_edje(ad);
2024 cam_tip_popup_destroy(ad);
2026 if (ad->edit_shortcuts_popup) {
2027 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2031 if(ad->battery_status == LOW_BATTERY_CRITICAL_STATUS)
2034 if (emission && source)
2035 cam_debug(LOG_UI, "signal: %s, comes from:%s", emission, source);
2037 Evas_Object_Event_Cb func = NULL;
2039 if (strcmp(emission, "toolbar_0_press_sig") == 0) {
2040 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_PRESS_ICON);
2041 __toolbar_create_show_edit_shortcuts_timer(ad);
2042 } else if (strcmp(emission, "toolbar_0_release_sig") == 0) {
2043 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2044 __toolbar_destroy_show_edit_shortcuts_timer();
2045 } else if (strcmp(emission, "toolbar_0_click_sig") == 0) {
2046 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2048 if (ad->toolbar_setting_popup) {
2049 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2050 cam_toolbar_setting_popup_destroy(ad);
2053 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2054 cam_toolbar_setting_popup_create(ad);
2055 elm_image_file_set(ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon, CAM_IMAGE_EDJ_NAME, SETTING_NORMAL_ICON);
2056 } else if (strcmp(emission, "toolbar_1_press_sig") == 0) {
2057 Evas_Object *icon = NULL;
2059 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2060 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2061 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2062 __toolbar_create_show_edit_shortcuts_timer(ad);
2063 } else if (strcmp(emission, "toolbar_1_release_sig") == 0) {
2064 Evas_Object *icon = NULL;
2066 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2067 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2068 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2069 __toolbar_destroy_show_edit_shortcuts_timer();
2070 } else if (strcmp(emission, "toolbar_1_click_sig") == 0) {
2071 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2073 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2074 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2075 if (menu_bar_no == CAM_MENU_BAR_LEFT_1) {
2076 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2077 cam_toolbar_setting_popup_destroy(ad);
2080 if (ad->toolbar_setting_popup) {
2081 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2082 cam_toolbar_setting_popup_destroy(ad);
2085 Evas_Object *icon = NULL;
2087 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].icon;
2088 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_1].menu_type;
2089 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2091 (*func)((void *)ad, NULL, o, NULL);
2093 } else if (strcmp(emission, "toolbar_2_press_sig") == 0) {
2094 Evas_Object *icon = NULL;
2096 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2097 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2098 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2099 __toolbar_create_show_edit_shortcuts_timer(ad);
2100 } else if (strcmp(emission, "toolbar_2_release_sig") == 0) {
2101 Evas_Object *icon = NULL;
2103 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2104 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2105 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2106 __toolbar_destroy_show_edit_shortcuts_timer();
2107 } else if (strcmp(emission, "toolbar_2_click_sig") == 0) {
2108 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2110 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2111 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2112 if (menu_bar_no == CAM_MENU_BAR_LEFT_2) {
2113 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2114 cam_toolbar_setting_popup_destroy(ad);
2117 if (ad->toolbar_setting_popup) {
2118 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2119 cam_toolbar_setting_popup_destroy(ad);
2121 Evas_Object *icon = NULL;
2123 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].icon;
2124 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_2].menu_type;
2125 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2127 (*func)((void *)ad, NULL, o, NULL);
2129 } else if (strcmp(emission, "toolbar_3_press_sig") == 0) {
2130 Evas_Object *icon = NULL;
2132 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2133 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2134 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2135 __toolbar_create_show_edit_shortcuts_timer(ad);
2136 } else if (strcmp(emission, "toolbar_3_release_sig") == 0) {
2137 Evas_Object *icon = NULL;
2139 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2140 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2141 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2142 __toolbar_destroy_show_edit_shortcuts_timer();
2143 } else if (strcmp(emission, "toolbar_3_click_sig") == 0) {
2144 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2146 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2147 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2148 if (menu_bar_no == CAM_MENU_BAR_LEFT_3) {
2149 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2150 cam_toolbar_setting_popup_destroy(ad);
2153 if (ad->toolbar_setting_popup) {
2154 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2155 cam_toolbar_setting_popup_destroy(ad);
2157 Evas_Object *icon = NULL;
2159 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].icon;
2160 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_3].menu_type;
2161 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2163 (*func)((void *)ad, NULL, o, NULL);
2165 } else if (strcmp(emission, "toolbar_4_press_sig") == 0) {
2166 Evas_Object *icon = NULL;
2168 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2169 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2170 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_PRESS, &func);
2171 __toolbar_create_show_edit_shortcuts_timer(ad);
2172 } else if (strcmp(emission, "toolbar_4_release_sig") == 0) {
2173 Evas_Object *icon = NULL;
2175 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2176 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2177 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2178 __toolbar_destroy_show_edit_shortcuts_timer();
2179 } else if (strcmp(emission, "toolbar_4_click_sig") == 0) {
2180 if (ad->edit_shortcuts_popup) /*when edit mode, could not using shortcuts*/
2182 int menu_item = cam_toolbar_displaypopup_map_menu_value(ad->displayed_setting_popup);
2183 int menu_bar_no = cam_toolbar_get_menubarno_by_menuitem(ad, menu_item);
2184 if (menu_bar_no == CAM_MENU_BAR_LEFT_4) {
2185 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2186 cam_toolbar_setting_popup_destroy(ad);
2189 if (ad->toolbar_setting_popup) {
2190 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2191 cam_toolbar_setting_popup_destroy(ad);
2193 Evas_Object *icon = NULL;
2195 icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].icon;
2196 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_4].menu_type;
2197 __toolbar_menu_type_update(icon, type, ad, BUTTON_STATE_NORMAL, &func);
2199 (*func)((void *)ad, NULL, o, NULL);
2202 DEBUG_TRACE("invalid signal");
2206 int cam_toolbar_create(struct appdata *ad)
2209 cam_retv_if(ad == NULL, -1);
2210 CamAppData *cam_handle = ad->camapp_handle;
2211 cam_retv_if(cam_handle == NULL, -1);
2213 elm_object_part_content_unset(ad->ug_base, "toolbar_layout");
2215 /*note: create layout*/
2216 switch (ad->target_direction) {
2217 case CAM_TARGET_DIRECTION_LANDSCAPE:
2218 if (ad->toolbar_edje_landscape == NULL) {
2219 ad->toolbar_edje_landscape = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2220 cam_retv_if(ad->toolbar_edje_landscape == NULL, -1);
2222 ad->toolbar_edje = ad->toolbar_edje_landscape;
2224 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2225 if (ad->toolbar_edje_landscape_inverse == NULL) {
2226 ad->toolbar_edje_landscape_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2227 cam_retv_if(ad->toolbar_edje_landscape_inverse == NULL, -1);
2229 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2231 case CAM_TARGET_DIRECTION_PORTRAIT:
2232 if (ad->toolbar_edje_portrait == NULL) {
2233 ad->toolbar_edje_portrait = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2234 cam_retv_if(ad->toolbar_edje_portrait == NULL, -1);
2236 ad->toolbar_edje = ad->toolbar_edje_portrait;
2238 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2239 if (ad->toolbar_edje_portrait_inverse == NULL) {
2240 ad->toolbar_edje_portrait_inverse = cam_app_load_edj(ad->ug_base, ad->toolbar_edj_file, "toolbar");
2241 cam_retv_if(ad->toolbar_edje_portrait_inverse == NULL, -1);
2243 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2246 DEBUG_TRACE("note: run into un-reached codes");
2248 cam_retv_if(ad->toolbar_edje == NULL, -1);
2250 elm_object_part_content_set(ad->ug_base, "toolbar_layout", ad->toolbar_edje);
2252 __toolbar_menu_item_create(ad);
2254 elm_object_signal_callback_del(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb);
2255 elm_object_signal_callback_add(ad->toolbar_edje, "*", "toolbar_signal", __toolbar_edje_signal_cb, ad);
2257 __toolbar_shutter_button_create(ad);
2258 __toolbar_recording_button_create(ad);
2260 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL)
2261 __toolbar_quickview_item_create(ad);
2263 __toolbar_backbutton_create(ad);
2264 __toolbar_cafbutton_create(ad);
2266 cam_toolbar_update(ad);
2268 return EXIT_SUCCESS;
2271 void cam_toolbar_content_destroy(struct appdata *ad)
2273 cam_retm_if(ad == NULL, "appdata is NULL");
2274 __toolbar_menu_item_destroy(ad);
2275 __toolbar_shutter_button_destroy(ad);
2276 __toolbar_recording_button_destroy(ad);
2277 __toolbar_recording_stop_button_destroy(ad);
2278 __toolbar_quickview_item_destroy(ad);
2279 __toolbar_backbutton_destroy(ad);
2280 __toolbar_cafbutton_destroy(ad);
2283 void cam_toolbar_destroy(struct appdata *ad)
2285 cam_retm_if(ad == NULL, "appdata is NULL");
2286 cam_toolbar_content_destroy(ad);
2287 /*NOTE: all sub obj of toolbar will be deleted auto while toolar is deleted*/
2288 edje_object_signal_callback_del(_EDJ(ad->toolbar_edje), "*", "toolbar_signal", __toolbar_edje_signal_cb);
2289 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape);
2290 DEL_EVAS_OBJECT(ad->toolbar_edje_landscape_inverse);
2291 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait);
2292 DEL_EVAS_OBJECT(ad->toolbar_edje_portrait_inverse);
2294 ad->toolbar_edje = NULL;
2296 REMOVE_TIMER(ad->setting_toolbar_hide_timer);
2298 /*elm_all_flush();*/
2299 cam_elm_cache_flush();
2302 void cam_toolbar_update(struct appdata *ad)
2305 cam_retm_if(ad == NULL, "appdata is NULL");
2306 CamAppData *camapp = ad->camapp_handle;
2307 cam_retm_if(camapp == NULL, "camapp is NULL");
2308 CamShotMode shotmode = camapp->shooting_mode;
2310 __toolbar_menu_icon_update(ad);
2312 if (ad->timer_activated) {
2313 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2314 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2316 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2317 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2318 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2320 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2321 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2324 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2325 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2328 if (camapp->camera_mode == CAM_CAMERA_MODE) {
2330 case CAM_SINGLE_MODE:
2331 case CAM_SELF_SINGLE_MODE:
2332 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2334 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL){
2335 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2336 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2337 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2339 if (cam_is_enabled_menu(ad, CAM_MENU_BURST_SHOT_MODE)
2340 && camapp->continuous_shot_data
2341 && camapp->continuous_shot_data->capture_status == CAM_CONTI_SHOT_STATUS_CAPTURING) {
2342 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_DIM);
2343 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_PRESS);
2344 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2346 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2347 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2348 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2351 __toolbar_recording_stop_button_destroy(ad);
2353 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2354 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2359 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2360 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2361 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2362 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2363 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2364 __toolbar_recording_stop_button_destroy(ad);
2365 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2369 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2371 if (ad->is_recording) {
2372 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2373 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2375 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2377 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2378 __toolbar_recording_stop_button_create(ad);
2380 if (show_caf_button)
2381 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2383 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2384 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2387 __toolbar_bg_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2388 __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2390 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL){
2391 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_DIM);
2393 __toolbar_shutter_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2396 __toolbar_recording_button_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2397 __toolbar_recording_stop_button_destroy(ad);
2399 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
2401 if (ad->launching_mode == CAM_LAUNCHING_MODE_NORMAL) {
2402 __toolbar_quickview_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
2409 int cam_toolbar_rotate(struct appdata *ad)
2412 cam_retv_if(ad == NULL, -1);
2413 CamAppData *cam_handle = ad->camapp_handle;
2414 cam_retv_if(cam_handle == NULL, -1);
2415 cam_toolbar_setting_popup_destroy(ad);
2416 cam_toolbar_destroy(ad);
2418 switch (ad->target_direction) {
2419 case CAM_TARGET_DIRECTION_LANDSCAPE:
2420 if (ad->toolbar_edje_landscape == NULL) {
2421 cam_toolbar_create(ad);
2423 ad->toolbar_edje = ad->toolbar_edje_landscape;
2425 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2426 if (ad->toolbar_edje_landscape_inverse == NULL) {
2427 cam_toolbar_create(ad);
2429 ad->toolbar_edje = ad->toolbar_edje_landscape_inverse;
2431 case CAM_TARGET_DIRECTION_PORTRAIT:
2432 if (ad->toolbar_edje_portrait == NULL) {
2433 cam_toolbar_create(ad);
2435 ad->toolbar_edje = ad->toolbar_edje_portrait;
2437 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2438 if (ad->toolbar_edje_portrait_inverse == NULL) {
2439 cam_toolbar_create(ad);
2441 ad->toolbar_edje = ad->toolbar_edje_portrait_inverse;
2444 DEBUG_TRACE("note: run into un-reached codes");
2447 evas_object_show(ad->toolbar_edje);
2449 return EXIT_SUCCESS;
2452 int show_toolbar_edje(struct appdata *ad)
2454 cam_retv_if(ad == NULL, -1);
2455 if (ad->toolbar_edje == NULL) {
2458 if (!ad->toolbar_hided) {
2459 cam_toolbar_update(ad);
2460 evas_object_show(ad->toolbar_edje);
2462 hide_toolbar_edje(ad);
2465 return EXIT_SUCCESS;
2468 int hide_toolbar_edje(struct appdata *ad)
2470 cam_retv_if(ad == NULL, -1);
2471 evas_object_hide(ad->toolbar_edje);
2472 return EXIT_SUCCESS;
2475 gboolean toolbar_update_quickview_thumbnail_no_animation(struct appdata *ad)
2477 cam_retv_if(ad == NULL, FALSE);
2478 CamAppData *camapp = ad->camapp_handle;
2479 cam_retv_if(camapp == NULL, FALSE);
2480 DEL_EVAS_OBJECT(ad->toolbar.quickview_item.thumbnail_image);
2481 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2483 if (camapp->thumbnail_name != NULL) {
2484 ad->toolbar.quickview_item.thumbnail_image = elm_bg_add(ad->toolbar.quickview_item.edje);
2485 cam_retv_if(ad->toolbar.quickview_item.thumbnail_image == NULL, FALSE);
2486 elm_bg_file_set(ad->toolbar.quickview_item.thumbnail_image, camapp->thumbnail_name, NULL);
2488 Evas_Object *layout = elm_layout_edje_get(ad->toolbar.quickview_item.edje);
2489 Evas_Object *thumbnail_area = (Evas_Object *) edje_object_part_object_get(layout, "thumbnail_area");
2490 cam_retv_if(thumbnail_area == NULL, FALSE);
2491 Evas_Coord x = 0, y = 0, w = 0, h = 0;
2492 evas_object_geometry_get(thumbnail_area, &x, &y, &w, &h);
2493 evas_object_resize(ad->toolbar.quickview_item.thumbnail_image, w, h);
2494 DEBUG_TRACE("%d %d %d %d", x, y, w, h);
2496 if (ad->toolbar.quickview_item.edje) {
2497 elm_object_part_content_set(ad->toolbar.quickview_item.edje,
2498 "thumbnail", ad->toolbar.quickview_item.thumbnail_image);
2499 evas_object_show(ad->toolbar.quickview_item.edje);
2507 gboolean toolbar_update_quickview_thumbnail(struct appdata *ad)
2509 cam_retv_if(ad == NULL, FALSE);
2510 CamAppData *camapp = ad->camapp_handle;
2511 cam_retv_if(camapp == NULL, FALSE);
2512 cam_retv_if(ad->evas == NULL, FALSE);
2514 cam_retv_if(ad->toolbar.quickview_item.edje == NULL, FALSE);
2515 DEBUG_TRACE("camapp->thumbnail_name: [%s]", camapp->thumbnail_name);
2517 cam_utils_request_main_pipe_handler(ad, NULL, CAM_MAIN_PIPE_OP_TYPE_UPDATE_THUMBNAIL);
2522 static void setting_ctxpopup_destroy(struct appdata *ad)
2524 cam_retm_if(ad == NULL, "appdata is NULL");
2526 DEL_EVAS_OBJECT(ad->sub_menu_group);
2528 if (ad->sub_genlist != NULL) {
2529 elm_genlist_clear(ad->sub_genlist);
2530 evas_object_del(ad->sub_genlist);
2531 ad->sub_genlist = NULL;
2534 DEL_EVAS_OBJECT(ad->setting_ctxpopup);
2535 ad->ctxpopup_area = NULL;
2536 ad->sub_menu_type = CAM_MENU_EMPTY;
2538 if (ad->toolbar_setting_popup == NULL)
2539 __set_show_state_preview_obj(ad, TRUE);
2542 static int setting_ctxpopup_create(struct appdata *ad, gboolean bNoArrow)
2544 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2546 if (ad->setting_ctxpopup)
2547 setting_ctxpopup_destroy(ad);
2549 if (ad->toolbar_edje == NULL)
2550 DEBUG_TRACE("error occur");
2552 __set_show_state_preview_obj(ad, FALSE);
2554 ad->ctxpopup_area = (Evas_Object *)
2555 edje_object_part_object_get(elm_layout_edje_get
2556 (ad->toolbar_edje), "popup_area");
2557 ad->setting_ctxpopup = elm_ctxpopup_add(ad->ctxpopup_area);
2558 elm_object_scroll_hold_push(ad->setting_ctxpopup);
2560 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera");
2562 elm_object_style_set(ad->setting_ctxpopup, "beat_winset_test/camera_no_arrow");
2563 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2564 return EXIT_SUCCESS;
2567 static int setting_toolbar_popup_create(struct appdata *ad)
2569 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2571 if (ad->setting_ctxpopup)
2572 setting_ctxpopup_destroy(ad);
2574 if (ad->toolbar_edje == NULL)
2575 DEBUG_TRACE("error occur");
2577 ad->toolbar_setting_popup_area = (Evas_Object *)
2578 edje_object_part_object_get(elm_layout_edje_get
2579 (ad->toolbar_edje), "setting_popup");
2580 ad->toolbar_setting_popup = elm_ctxpopup_add(ad->toolbar_setting_popup_area);
2581 elm_object_scroll_hold_push(ad->toolbar_setting_popup);
2582 elm_object_style_set(ad->toolbar_setting_popup, "beat_winset_test/camera");
2583 /*elm_ctxpopup_hover_parent_set(ad->setting_ctxpopup, ad->ctxpopup_area);*/
2584 return EXIT_SUCCESS;
2587 static int setting_shortcuts_popup_create(struct appdata *ad)
2589 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
2591 if (ad->setting_ctxpopup)
2592 setting_ctxpopup_destroy(ad);
2594 if (ad->toolbar_edje == NULL)
2595 DEBUG_TRACE("error occur");
2597 ad->edit_shortcuts_popup = (Evas_Object *)
2598 edje_object_part_object_get(elm_layout_edje_get
2599 (ad->toolbar_edje), "shortcuts_popup");
2601 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
2602 ad->edit_shortcuts_popup_description =
2603 cam_app_load_edj(ad->toolbar_edje, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME,
2604 "camera/shortcuts/layout/description");
2606 /*TODO: need id: IDS_CAM_POP_TAP_AND_HOLD_AN_ICON_AND_MOVE_TO_EDIT_SHORTCUTS*/
2607 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"));
2608 elm_object_scroll_hold_push(ad->edit_shortcuts_popup);
2609 return EXIT_SUCCESS;
2612 int cam_guideline_create(struct appdata *ad)
2614 cam_retv_if(ad == NULL, -1);
2615 cam_retv_if(ad->camapp_handle == NULL, -1);
2617 DEL_EVAS_OBJECT(ad->guideline_edje);
2618 elm_object_part_content_unset(ad->ug_base, "guideline_layout");
2620 if (ad->guideline_edje == NULL) {
2621 ad->guideline_edje = cam_app_load_edj(ad->ug_base, CAM_MAIN_LAYOUT_EDJ_NAME, "guideline");
2624 cam_retv_if(ad->guideline_edje == NULL, -1);
2625 elm_object_part_content_set(ad->ug_base, "guideline_layout", ad->guideline_edje);
2627 gboolean wide_mode = FALSE;
2632 ret = cam_mm_get_video_size(&p_width, &p_height);
2635 DEBUG_TRACE("Middle Ware error occur!");
2639 DEBUG_TRACE("p_width == %d ,p_height = %d" ,p_width , p_height);
2640 if (ad->camapp_handle->camera_mode == CAM_CAMERA_MODE) {
2641 wide_mode = cam_utils_check_wide_resolution(p_width, p_height);
2642 } else if (ad->camapp_handle->camera_mode == CAM_CAMCORDER_MODE) {
2643 if ( p_width > PREVIEW_W ) {
2650 if (p_width == 1392 && p_height == 1392) {
2651 switch (ad->target_direction) {
2652 case CAM_TARGET_DIRECTION_LANDSCAPE:
2653 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2654 DEBUG_TRACE("landscape");
2655 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2656 "guide_line,1,2,normal", "prog_guideline");
2657 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2658 "guide_line,3,4,square", "prog_guideline");
2660 case CAM_TARGET_DIRECTION_PORTRAIT:
2661 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2662 DEBUG_TRACE("portrait");
2663 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2664 "guide_line,1,2,vertical,square", "prog_guideline");
2665 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2666 "guide_line,3,4,vertical,normal", "prog_guideline");
2671 DEBUG_TRACE("hor,wide_mode");
2672 switch (ad->target_direction) {
2673 case CAM_TARGET_DIRECTION_LANDSCAPE:
2674 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2675 DEBUG_TRACE("landscape");
2676 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2677 "guide_line,1,2,normal", "prog_guideline");
2678 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2679 "guide_line,3,4,wide", "prog_guideline");
2681 case CAM_TARGET_DIRECTION_PORTRAIT:
2682 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2683 DEBUG_TRACE("portrait");
2684 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2685 "guide_line,1,2,vertical,wide", "prog_guideline");
2686 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2687 "guide_line,3,4,vertical,normal", "prog_guideline");
2692 DEBUG_TRACE("hor,normal mode");
2693 switch (ad->target_direction) {
2694 case CAM_TARGET_DIRECTION_LANDSCAPE:
2695 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
2696 DEBUG_TRACE("landscape");
2697 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2698 "guide_line,1,2,normal", "prog_guideline");
2699 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2700 "guide_line,3,4,normal", "prog_guideline");
2702 case CAM_TARGET_DIRECTION_PORTRAIT:
2703 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
2704 DEBUG_TRACE("portrait");
2705 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2706 "guide_line,1,2,vertical,normal", "prog_guideline");
2707 edje_object_signal_emit(_EDJ(ad->guideline_edje),
2708 "guide_line,3,4,vertical,normal", "prog_guideline");
2714 /*evas_object_lower(ad->guideline_edje);*/
2715 evas_object_show(ad->guideline_edje);
2717 DEBUG_TRACE("over");
2721 static void __volume_key_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2723 cam_retm_if(obj == NULL, "obj is NULL");
2724 struct appdata *ad = (struct appdata *)cam_appdata_get();
2725 cam_retm_if(ad == NULL, "appdata is NULL");
2732 case CAM_MENU_VOLUME_KEY_ZOOM:
2734 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_ZOOM);
2735 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2738 case CAM_MENU_VOLUME_KEY_SHUTTER:
2740 CAM_GVALUE_SET_INT(value, CAM_VOLUME_KEY_SHUTTER);
2741 cam_handle_value_set(ad, PROP_VOLUME_KEY, &value);
2748 evas_object_show(ad->toolbar_setting_popup);
2749 if (ad->setting_select_item)
2750 elm_genlist_item_update(ad->setting_select_item);
2751 __update_menubar_icon_by_index(ad, CAM_MENU_VOLUME_KEY);
2753 setting_ctxpopup_destroy(ad);
2754 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2757 static void __storage_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
2759 cam_retm_if(obj == NULL, "obj is NULL");
2760 struct appdata *ad = (struct appdata *)cam_appdata_get();
2761 cam_retm_if(ad == NULL, "appdata is NULL");
2769 case CAM_MENU_STORAGE_PHONE:
2771 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2772 cam_handle_value_set(ad, PROP_STORAGE, &value);
2775 case CAM_MENU_STORAGE_MMC:
2777 if (!vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_state)) {
2778 if (mmc_state == VCONFKEY_SYSMAN_MMC_REMOVED) {
2782 CAM_GVALUE_SET_INT(value, CAM_STORAGE_INTERNAL);
2783 cam_handle_value_set(ad, PROP_STORAGE, &value);
2784 cam_info(LOG_UI, "MMC card is removed");
2785 cam_storage_warning_popup();
2787 CAM_GVALUE_SET_INT(value, CAM_STORAGE_EXTERNAL);
2788 cam_handle_value_set(ad, PROP_STORAGE, &value);
2797 evas_object_show(ad->toolbar_setting_popup);
2798 if (ad->setting_select_item)
2799 elm_genlist_item_update(ad->setting_select_item);
2800 __update_menubar_icon_by_index(ad, CAM_MENU_STORAGE);
2802 setting_ctxpopup_destroy(ad);
2803 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2806 static void __wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
2808 cam_retm_if(obj == NULL, "obj is NULL");
2809 struct appdata *ad = (struct appdata *)cam_appdata_get();
2810 cam_retm_if(ad == NULL, "appdata is NULL");
2814 int wb = cam_convert_menu_item_to_mmfw_value((int)data);
2817 if (ad->camapp_handle->white_balance != wb) {
2819 CAM_GVALUE_SET_INT(value, wb);
2820 cam_handle_value_set(ad, PROP_WB, &value);
2822 evas_object_show(ad->toolbar_setting_popup);
2823 if (ad->setting_select_item)
2824 elm_genlist_item_update(ad->setting_select_item);
2825 __update_menubar_icon_by_index(ad, CAM_MENU_WHITE_BALANCE);
2827 setting_ctxpopup_destroy(ad);
2828 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2831 static void __iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
2833 cam_retm_if(obj == NULL, "obj is NULL");
2834 struct appdata *ad = (struct appdata *)cam_appdata_get();
2835 cam_retm_if(ad == NULL, "appdata is NULL");
2839 int iso = cam_convert_menu_item_to_mmfw_value((int)data);
2842 if (ad->camapp_handle->iso != iso) {
2844 CAM_GVALUE_SET_INT(value, iso);
2845 cam_handle_value_set(ad, PROP_ISO, &value);
2847 evas_object_show(ad->toolbar_setting_popup);
2848 if (ad->setting_select_item)
2849 elm_genlist_item_update(ad->setting_select_item);
2850 __update_menubar_icon_by_index(ad, CAM_MENU_ISO);
2852 setting_ctxpopup_destroy(ad);
2853 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2855 static void __metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
2857 cam_retm_if(obj == NULL, "obj is NULL");
2858 struct appdata *ad = (struct appdata *)cam_appdata_get();
2859 cam_retm_if(ad == NULL, "appdata is NULL");
2863 int metering = cam_convert_menu_item_to_mmfw_value((int)data);
2865 /* set metering value */
2866 if (ad->camapp_handle->auto_exposure != metering) {
2868 CAM_GVALUE_SET_INT(value, metering);
2869 cam_handle_value_set(ad, PROP_METERING, &value);
2871 evas_object_show(ad->toolbar_setting_popup);
2872 if (ad->setting_select_item)
2873 elm_genlist_item_update(ad->setting_select_item);
2874 __update_menubar_icon_by_index(ad, CAM_MENU_METERING);
2876 setting_ctxpopup_destroy(ad);
2877 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2880 static void __timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
2882 cam_retm_if(obj == NULL, "obj is NULL");
2883 struct appdata *ad = (struct appdata *)cam_appdata_get();
2884 cam_retm_if(ad == NULL, "appdata is NULL");
2888 int index = (int)data - CAM_MENU_TIMER_OFF;
2889 DEBUG_TRACE("index : [%d]", index);
2890 cam_ret_if(index < 0 || index >= CAM_SETTINGS_TIMER_NUMS);
2892 /* set timer value */
2893 if (ad->camapp_handle->timer != index) {
2895 CAM_GVALUE_SET_INT(value, index);
2896 cam_handle_value_set(ad, PROP_TIMER, &value);/*set ad->camapp_handle->timer*/
2897 evas_object_show(ad->toolbar_setting_popup);
2898 if (ad->setting_select_item)
2899 elm_genlist_item_update(ad->setting_select_item);
2900 __update_menubar_icon_by_index(ad, CAM_MENU_TIMER);
2903 setting_ctxpopup_destroy(ad);
2904 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
2907 static void __reset_settings_launch(void)
2909 GValue i_value = { 0, };
2910 GValue b_value = { 0, };
2911 struct appdata *ad = (struct appdata *)cam_appdata_get();
2912 CamAppData *camapp = NULL;
2914 cam_debug(LOG_CAM, "!!!!!!!!!cam_app_reset_settings_launch_cb");
2916 cam_retm_if(ad == NULL, " appdata is NULL");
2917 camapp = ad->camapp_handle;
2918 cam_retm_if(camapp == NULL, " cam_handle is NULL");
2920 g_value_init(&i_value, G_TYPE_INT);
2921 g_value_init(&b_value, G_TYPE_BOOLEAN);
2923 camapp->device_type = CAM_DEVICE_MEGA;
2926 g_value_set_int(&i_value, SHOTMODE_DEFAULT);
2927 cam_handle_value_set(ad, PROP_SHOT_MODE, &i_value);
2930 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
2931 && ad->exe_args->size_limit > 0) {
2932 g_value_set_int(&i_value, CAM_RECORD_MMS);
2934 g_value_set_int(&i_value, RECMODE_DEFAULT);
2936 cam_handle_value_set(ad, PROP_REC_MODE, &i_value);
2939 g_value_set_int(&i_value, PG_MODE_DEFAULT);
2940 cam_handle_value_set(ad, PROP_SCENE_MODE, &i_value);
2943 g_value_set_int(&i_value, AF_DEFAULT);
2944 cam_handle_value_set(ad, PROP_AF_MODE, &i_value);
2947 g_value_set_int(&i_value, TIMER_DEFAULT);
2948 cam_handle_value_set(ad, PROP_TIMER, &i_value);
2951 g_value_set_int(&i_value, WB_DEFAULT);
2952 cam_handle_value_set(ad, PROP_WB, &i_value);
2955 g_value_set_int(&i_value, EFFECT_DEFAULT);
2956 cam_handle_value_set(ad, PROP_EFFECT, &i_value);
2959 g_value_set_int(&i_value, ISO_DEFAULT);
2960 cam_handle_value_set(ad, PROP_ISO, &i_value);
2963 g_value_set_int(&i_value, AE_DEFAULT);
2964 cam_handle_value_set(ad, PROP_METERING, &i_value);
2967 g_value_set_int(&i_value, AHS_DEFAULT);
2968 cam_handle_value_set(ad, PROP_AHS, &i_value);
2970 /* wild dynamic range */
2971 g_value_set_int(&i_value, WDR_DEFAULT);
2972 cam_handle_value_set(ad, PROP_WDR, &i_value);
2975 g_value_set_int(&i_value, QUALITY_DEFAULT);
2976 cam_handle_value_set(ad, PROP_IMAGE_QUALITY, &i_value);
2979 g_value_set_int(&i_value, QUALITY_DEFAULT);
2980 cam_handle_value_set(ad, PROP_VIDEO_QUALITY, &i_value);
2983 g_value_set_int(&i_value, FALSE);
2984 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &i_value);
2987 g_value_set_boolean(&b_value, GUIDE_LINE_DEFAULT);
2988 cam_handle_value_set(ad, PROP_GUIDELINE, &b_value);
2989 settings_guideline_refresh(ad);
2992 g_value_set_boolean(&b_value, FALSE);
2993 cam_handle_value_set(ad, PROP_REVIEW, &b_value);
2996 g_value_set_boolean(&b_value, FALSE);
2997 cam_handle_value_set(ad, PROP_GPS, &b_value);
3000 g_value_set_int(&i_value, SHUTTER_SOUND_DEFAULT);
3001 cam_handle_value_set(ad, PROP_SHUTTER_SOUND, &i_value);
3004 cam_mm_set_shutter_sound(SOUND_DEFAULT);
3005 ad->camapp_handle->shutter_sound = SHUTTER_SOUND_DEFAULT;
3007 /* audio recording */
3008 g_value_set_boolean(&b_value, TRUE);
3009 cam_handle_value_set(ad, PROP_AUDIO_REC, &b_value);
3012 g_value_set_int(&i_value, STORAGE_DEFAULT);
3013 cam_handle_value_set(ad, PROP_STORAGE, &i_value);
3016 g_value_set_int(&i_value, BRIGHTNESS_DEFAULT);
3017 cam_handle_value_set(ad, PROP_BRIGHTNESS, &i_value);
3020 g_value_set_int(&i_value, IMAGE_RESOLUTION_DEFAULT);
3021 cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &i_value);
3023 g_value_set_int(&i_value, REC_RESOLUTION_DEFAULT);
3024 cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &i_value);
3026 if (ad->indicator_edje) {
3027 /* delete indicator */
3028 evas_object_hide(ad->indicator_edje);
3029 cam_indicator_destory(ad);
3031 cam_indicator_create(ad);
3034 if (camapp->camera_mode == CAM_CAMERA_MODE) {
3035 g_value_set_int(&i_value, FLASH_DEFAULT);
3037 g_value_set_int(&i_value, REC_FLASH_DEFAULT);
3039 cam_handle_value_set(ad, PROP_FLASH, &i_value);
3041 /* Outdoor visibility */
3042 g_value_set_boolean(&b_value, FALSE);
3043 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &b_value);
3046 g_value_set_boolean(&b_value, FALSE);
3047 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &b_value);
3051 g_value_set_int(&i_value, ZOOM_DEFAULT);
3052 cam_handle_value_set(ad, PROP_ZOOM, &i_value);
3054 /* Size limit type */
3055 g_value_set_int(&i_value, CAM_MM_SIZE_LIMIT_TYPE_BYTE);
3056 cam_handle_value_set(ad, PROP_SIZE_LIMIT_TYPE, &i_value);
3059 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
3060 && ad->exe_args->size_limit > 0) {
3061 g_value_set_int(&i_value, CAM_REC_MMS_MAX_SIZE);
3063 g_value_set_int(&i_value, REC_SIZE_LIMIT_DEFAULT);
3065 cam_handle_value_set(ad, PROP_SIZE_LIMIT, &i_value);
3068 g_value_set_int(&i_value, TIMER_DEFAULT);
3069 cam_handle_value_set(ad, PROP_TIMER, &i_value);
3072 g_value_set_int(&i_value, IMAGE_COUNT_DEFAULT);
3073 cam_handle_value_set(ad, PROP_IMAGE_COUNT, &i_value);
3075 CAM_GVALUE_SET_INT(i_value, CAM_VOLUME_KEY_ZOOM);
3076 cam_handle_value_set(ad, PROP_VOLUME_KEY, &i_value);
3078 camapp->continuous_shot_data = NULL;
3079 camapp->enable_touch_af = TRUE;
3080 camapp->burst_shot = TRUE;
3083 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3085 TRUE);/*note: set show pop tip flag*/
3086 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
3087 PROP_SHORTCUTS_INIT_PART_INDEX,
3088 FALSE);/*note: set shorcuts init flag*/
3091 static void __restore_defaults_popup_cb_ok_cb(void *data, Evas_Object *obj, void *event_info)
3093 struct appdata *ad = (struct appdata *)cam_appdata_get();
3094 cam_retm_if(ad == NULL, " appdata is NULL");
3095 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3097 DEL_EVAS_OBJECT(ad->confirm_popup);
3099 hide_toolbar_edje(ad);
3100 cam_app_preview_stop();
3102 __reset_settings_launch();
3103 __toolbar_menu_item_reset(ad);
3107 show_toolbar_edje(ad);
3109 if (!cam_app_preview_start(ad)) {
3110 cam_app_notice_popup(ad, dgettext(PACKAGE, "IDS_CAM_POP_UNABLE_TO_START_CAMERA"), cam_app_timeout_notice_response_cb);
3115 static void __restore_defaults_popup_cb_cancel_cb(void *data, Evas_Object *obj, void *event_info)
3117 struct appdata *ad = (struct appdata *)cam_appdata_get();
3118 cam_retm_if(ad == NULL, " appdata is NULL");
3119 cam_retm_if(ad->camapp_handle == NULL, " camapp_handle is NULL");
3121 DEL_EVAS_OBJECT(ad->confirm_popup);
3124 static void __effects_selected_cb(void *data, Evas_Object *obj, void *event_info)
3126 cam_retm_if(obj == NULL, "obj is NULL");
3127 struct appdata *ad = (struct appdata *)cam_appdata_get();
3128 cam_retm_if(ad == NULL, "appdata is NULL");
3133 int effect = CAM_SCENE_NONE;
3134 switch ((int)data) {
3135 case CAM_MENU_EFFECT_NONE:
3136 effect = CAMERA_ATTR_EFFECT_NONE;
3138 case CAM_MENU_EFFECT_NEGATIVE:
3139 effect = CAMERA_ATTR_EFFECT_NEGATIVE;
3141 case CAM_MENU_EFFECT_BLACKANDWHITE:
3142 effect = CAMERA_ATTR_EFFECT_MONO;
3144 case CAM_MENU_EFFECT_SEPIA:
3145 effect = CAMERA_ATTR_EFFECT_SEPIA;
3151 if (ad->camapp_handle->effect != effect) {
3152 CAM_GVALUE_SET_INT(value, effect);
3153 cam_handle_value_set(ad, PROP_EFFECT, &value);
3156 if (ad->setting_select_item)
3157 elm_genlist_item_update(ad->setting_select_item);
3158 __update_menubar_icon_by_index(ad, CAM_MENU_EFFECTS);
3160 setting_ctxpopup_destroy(ad);
3161 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3164 static void __shot_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3166 cam_retm_if(obj == NULL, "obj is NULL");
3167 struct appdata *ad = (struct appdata *)cam_appdata_get();
3168 cam_retm_if(ad == NULL, "appdata is NULL");
3172 switch ((int)data) {
3173 case CAM_MENU_SHOOTING_SINGLE:
3174 shot_mode_set(ad, CAM_SINGLE_MODE);
3176 case CAM_MENU_SHOOTING_SELF_SINGLE:
3177 shot_mode_set(ad, CAM_SELF_SINGLE_MODE);
3183 evas_object_show(ad->toolbar_setting_popup);
3184 if (ad->setting_select_item) {
3185 elm_genlist_item_update(ad->setting_select_item);
3188 __toolbar_menu_icon_update(ad);
3190 setting_ctxpopup_destroy(ad);
3191 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3192 cam_toolbar_setting_popup_destroy(ad);
3195 static void __scene_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3197 cam_retm_if(obj == NULL, "obj is NULL");
3198 struct appdata *ad = (struct appdata *)cam_appdata_get();
3199 cam_retm_if(ad == NULL, "appdata is NULL");
3205 int scene = CAM_MENU_SCENE_AUTO;
3206 switch ((int)data) {
3207 case CAM_MENU_SCENE_AUTO:
3208 scene = CAM_SCENE_NONE;
3210 case CAM_MENU_SCENE_PORTRAIT:
3211 scene = CAM_SCENE_PORTRAIT;
3213 case CAM_MENU_SCENE_LANDSCAPE:
3214 scene = CAM_SCENE_LANDSCAPE;
3216 case CAM_MENU_SCENE_NIGHT:
3217 scene = CAM_SCENE_NIGHT;
3219 case CAM_MENU_SCENE_SPORTS:
3220 scene = CAM_SCENE_SPORTS;
3222 case CAM_MENU_SCENE_PARTY:
3223 scene = CAM_SCENE_PARTY;
3225 case CAM_MENU_SCENE_BEACHSNOW:
3226 scene = CAM_SCENE_BEACHSNOW;
3228 case CAM_MENU_SCENE_SUNSET:
3229 scene = CAM_SCENE_SUNSET;
3231 case CAM_MENU_SCENE_DUSKDAWN:
3232 scene = CAM_SCENE_DUSKDAWN;
3234 case CAM_MENU_SCENE_FALL:
3235 scene = CAM_SCENE_FALL;
3237 case CAM_MENU_SCENE_FIREWORK:
3238 scene = CAM_SCENE_FIREWORK;
3240 case CAM_MENU_SCENE_TEXT:
3241 scene = CAM_SCENE_TEXT;
3243 case CAM_MENU_SCENE_CANDLELIGHT:
3244 scene = CAM_SCENE_CANDLELIGHT;
3246 case CAM_MENU_SCENE_BACKLIGHT:
3247 scene = CAM_SCENE_BACKLIGHT;
3249 case CAM_MENU_SCENE_SHOW_WINDOW:
3250 scene = CAM_SCENE_SHOW_WINDOW;
3256 if (ad->camapp_handle->scene_mode != scene) {
3257 CAM_GVALUE_SET_INT(value, scene);
3258 cam_handle_value_set(ad, PROP_SCENE_MODE, &value);
3261 if (ad->setting_select_item)
3262 elm_genlist_item_update(ad->setting_select_item);
3264 __toolbar_menu_icon_update(ad);
3266 setting_ctxpopup_destroy(ad);
3267 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3268 __update_setting_popup(ad);
3271 static void __focus_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3273 cam_retm_if(obj == NULL, "obj is NULL");
3274 struct appdata *ad = (struct appdata *)cam_appdata_get();
3275 cam_retm_if(ad == NULL, "appdata is NULL");
3280 int focus_mode = CAM_FOCUS_AUTO;
3281 switch ((int)data) {
3282 case CAM_MENU_FOCUS_AUTO:
3283 focus_mode = CAM_FOCUS_AUTO;
3285 case CAM_MENU_FOCUS_MACRO:
3286 focus_mode = CAM_FOCUS_MACRO;
3288 case CAM_MENU_FOCUS_FACE_DETECTION:
3289 focus_mode = CAM_FOCUS_FACE;
3295 CAM_GVALUE_SET_INT(value, focus_mode);
3296 cam_handle_value_set(ad, PROP_AF_MODE, &value);
3298 if (ad->setting_select_item)
3299 elm_genlist_item_update(ad->setting_select_item);
3300 __update_menubar_icon_by_index(ad, CAM_MENU_FOCUS_MODE);
3302 setting_ctxpopup_destroy(ad);
3303 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3304 __update_setting_popup(ad);
3307 static void __record_mode_selected_cb(void *data, Evas_Object *obj, void *event_info)
3309 cam_retm_if(obj == NULL, "obj is NULL");
3310 struct appdata *ad = (struct appdata *)cam_appdata_get();
3311 cam_retm_if(ad == NULL, "appdata is NULL");
3316 int record_mode = CAM_RECORD_NORMAL;
3317 switch ((int)data) {
3318 case CAM_MENU_RECORDING_MODE_NORMAL:
3319 record_mode = CAM_RECORD_NORMAL;
3321 case CAM_MENU_RECORDING_MODE_LIMIT:
3322 record_mode = CAM_RECORD_MMS;
3324 case CAM_MENU_RECORDING_MODE_SLOW:
3325 record_mode = CAM_RECORD_SLOW;
3327 case CAM_MENU_RECORDING_MODE_FAST:
3328 record_mode = CAM_RECORD_FAST;
3330 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
3331 record_mode = CAM_RECORD_SELF;
3333 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
3334 record_mode = CAM_RECORD_SELF_MMS;
3340 if (ad->camapp_handle->recording_mode != record_mode) {
3341 CAM_GVALUE_SET_INT(value, record_mode);
3342 cam_handle_value_set(ad, PROP_REC_MODE, &value);
3345 evas_object_show(ad->toolbar_setting_popup);
3346 if (ad->setting_select_item) {
3347 elm_genlist_item_update(ad->setting_select_item);
3350 __toolbar_menu_icon_update(ad);
3352 setting_ctxpopup_destroy(ad);
3353 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3354 cam_toolbar_setting_popup_destroy(ad);
3357 static void __update_menubar_icon_by_index(struct appdata *ad, int index)
3359 Evas_Object_Event_Cb func = NULL;
3360 int menubar_no = -1;
3361 menubar_no = __get_menubar_no_by_index(ad, index);
3362 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
3363 Evas_Object *icon = NULL;
3364 icon = ad->toolbar_menu_arrays[menubar_no].icon;
3366 __toolbar_menu_type_update(icon, index, ad, BUTTON_STATE_NORMAL, &func);
3369 static void __flash_selected_cb(void *data, Evas_Object *obj, void *event_info)
3371 cam_retm_if(obj == NULL, "obj is NULL");
3372 struct appdata *ad = (struct appdata *)cam_appdata_get();
3373 cam_retm_if(ad == NULL, "appdata is NULL");
3377 int flash_value = 0;
3379 switch ((int)data) {
3380 case CAM_MENU_FLASH_OFF:
3381 flash_value = CAM_FLASH_OFF;
3383 case CAM_MENU_FLASH_ON:
3384 flash_value = CAM_FLASH_ON;
3386 case CAM_MENU_FLASH_AUTO:
3387 flash_value = CAM_FLASH_AUTO;
3390 flash_value = CAM_FLASH_OFF;
3393 CAM_GVALUE_SET_INT(value, flash_value);
3394 cam_handle_value_set(ad, PROP_FLASH, &value);
3395 __update_menubar_icon_by_index(ad, CAM_MENU_FLASH);
3396 if (ad->setting_select_item)
3397 elm_genlist_item_update(ad->setting_select_item);
3399 setting_ctxpopup_destroy(ad);
3400 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
3403 static void toolbar_move_with_scale(Evas_Object *eo, double x, double y)
3405 DEBUG_TRACE("x = %f, y = %f" , x, y);
3406 DEBUG_TRACE("elm_config_scale_get() = %f" , elm_config_scale_get());
3407 evas_object_move(eo, x * elm_config_scale_get(), y * elm_config_scale_get());
3410 /*note: @mouse_point is the coordinate of mouse click, output is scaled*/
3411 static void __cam_get_ctxpopup_coord_in_setting_toolbar(int target_direction,
3416 int ver_x, ver_y, h_x, h_y;
3417 ver_x = ver_y = h_x = h_y = 0;
3418 switch (target_direction) {
3419 case CAM_TARGET_DIRECTION_LANDSCAPE:
3420 *x = (int)(SETTING_HOR_CTX_POPUP_X * elm_config_scale_get());
3423 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3424 *x = (int)((1280 - SETTING_HOR_CTX_POPUP_X) * elm_config_scale_get());
3427 case CAM_TARGET_DIRECTION_PORTRAIT:
3428 *x = (int)(SETTING_VER_CTX_POPUP_X * elm_config_scale_get());;
3431 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3432 *x = (int)((720 - SETTING_VER_CTX_POPUP_X) * elm_config_scale_get());
3436 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3441 static void __cam_get_shotguide_popup_coord(int target_direction, int *out_x, int *out_y)
3443 switch (target_direction) {
3444 case CAM_TARGET_DIRECTION_LANDSCAPE:
3445 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3446 *out_x = (int)((MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3447 *out_y = (int)(0.9*MAIN_H);
3449 case CAM_TARGET_DIRECTION_PORTRAIT:
3450 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3451 *out_x = (int)((VER_MAIN_W - SHOT_GUIDE_POPUP_WIDTH) / 2);
3452 *out_y = (int)(0.8*VER_MAIN_H);
3455 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3459 /*note: in this func, all coordinate is not scale*/
3460 static void __get_option_coord_by_menubar_no(int menubar_no, int target_direction, int *x, int *y)
3462 int menu_bar_no = menubar_no;
3463 int ver_x, ver_y, hor_x, hor_y;
3464 ver_x = ver_y = hor_x = hor_y = 0;
3466 switch (menu_bar_no) {
3467 case CAM_MENU_BAR_LEFT_0:
3473 case CAM_MENU_BAR_LEFT_1:
3479 case CAM_MENU_BAR_LEFT_2:
3485 case CAM_MENU_BAR_LEFT_3:
3491 case CAM_MENU_BAR_LEFT_4:
3498 DEBUG_TRACE("input para,error!");
3502 switch (target_direction) {
3503 case CAM_TARGET_DIRECTION_LANDSCAPE:
3507 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3511 case CAM_TARGET_DIRECTION_PORTRAIT:
3515 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3520 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3525 static int __get_menubar_no_by_index(struct appdata *ad, int index)
3529 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
3530 if (index == ad->toolbar_menu_arrays[i].menu_type) {
3534 return CAM_MENU_BAR_LEFT_INVALID;
3537 static void __cam_toolbar_move_ctxpopup(Evas_Object *obj, int target_direction, int x, int y)
3540 switch (target_direction) {
3541 case CAM_TARGET_DIRECTION_LANDSCAPE:
3542 elm_ctxpopup_direction_priority_set(obj,
3543 ELM_CTXPOPUP_DIRECTION_RIGHT,
3544 ELM_CTXPOPUP_DIRECTION_UP,
3545 ELM_CTXPOPUP_DIRECTION_LEFT,
3546 ELM_CTXPOPUP_DIRECTION_DOWN);
3549 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3550 elm_ctxpopup_direction_priority_set(obj,
3551 ELM_CTXPOPUP_DIRECTION_LEFT,
3552 ELM_CTXPOPUP_DIRECTION_DOWN,
3553 ELM_CTXPOPUP_DIRECTION_RIGHT,
3554 ELM_CTXPOPUP_DIRECTION_UP);
3556 case CAM_TARGET_DIRECTION_PORTRAIT:
3557 elm_ctxpopup_direction_priority_set(obj,
3558 ELM_CTXPOPUP_DIRECTION_DOWN,
3559 ELM_CTXPOPUP_DIRECTION_RIGHT,
3560 ELM_CTXPOPUP_DIRECTION_UP,
3561 ELM_CTXPOPUP_DIRECTION_LEFT);
3563 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3564 elm_ctxpopup_direction_priority_set(obj,
3565 ELM_CTXPOPUP_DIRECTION_UP,
3566 ELM_CTXPOPUP_DIRECTION_LEFT,
3567 ELM_CTXPOPUP_DIRECTION_DOWN,
3568 ELM_CTXPOPUP_DIRECTION_RIGHT);
3571 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3574 toolbar_move_with_scale(obj, x, y);
3577 static void __cam_toolbar_move_sub_menu(Evas_Object *obj, int target_direction, int x, int y)
3580 switch (target_direction) {
3581 case CAM_TARGET_DIRECTION_LANDSCAPE:
3582 case CAM_TARGET_DIRECTION_PORTRAIT:
3583 elm_ctxpopup_direction_priority_set(obj,
3584 ELM_CTXPOPUP_DIRECTION_RIGHT,
3585 ELM_CTXPOPUP_DIRECTION_UP,
3586 ELM_CTXPOPUP_DIRECTION_LEFT,
3587 ELM_CTXPOPUP_DIRECTION_DOWN);
3589 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3590 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3591 elm_ctxpopup_direction_priority_set(obj,
3592 ELM_CTXPOPUP_DIRECTION_LEFT,
3593 ELM_CTXPOPUP_DIRECTION_DOWN,
3594 ELM_CTXPOPUP_DIRECTION_RIGHT,
3595 ELM_CTXPOPUP_DIRECTION_UP);
3598 DEBUG_TRACE("wow, check it, reached un-able reached codes");
3601 evas_object_move(obj, x, y);
3604 static void __tip_popup_check_cb(void *data, Evas_Object *obj, void *event_info)
3606 struct appdata *ad = (struct appdata *)cam_appdata_get();
3607 cam_retm_if(ad == NULL, "appdata is NULL");
3608 gboolean pop_tip = FALSE;
3609 pop_tip = elm_check_state_get(obj);
3610 DEBUG_TRACE("do_not_ask_again = %d", pop_tip);
3611 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, !pop_tip);
3615 static void __tip_popup_button_selected_cb(void *data, Evas_Object * obj, void *event_info)
3618 struct appdata *ad = (struct appdata *)cam_appdata_get();
3619 cam_retm_if(ad == NULL, "appdata is NULL");
3621 cam_tip_popup_destroy(ad);
3624 /*note: input x,y should be landscape mode coordinate*/
3625 static void __get_tip_popup_coord(int target_direction, int *out_x, int *out_y)
3627 switch (target_direction) {
3628 case CAM_TARGET_DIRECTION_LANDSCAPE:
3629 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3630 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3632 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
3633 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_X;
3634 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_LANDSCAPE_Y;
3636 case CAM_TARGET_DIRECTION_PORTRAIT:
3637 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3638 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3640 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
3641 *out_x = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_X;
3642 *out_y = EDIT_SHORTCUTS_TIPS_COORDINATE_PORTRAIT_Y;
3645 DEBUG_TRACE("REACHED UN-ABLE REACHED CODES");
3649 void cam_tip_popup_create(struct appdata *ad, const CamTipPopupType type)
3651 cam_retm_if(ad == NULL, "appdata is NULL");
3653 if (ad->toolbar_setting_popup) {
3654 cam_toolbar_setting_popup_destroy(ad);
3657 if (ad->edit_shortcuts_popup_scroll) {
3658 toolbar_destroy_shortcuts_popup(ad);
3661 if (ad->tip_popup) {
3662 cam_tip_popup_destroy(ad);
3665 /*hide focus guide*/
3666 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
3668 elm_object_part_content_unset(ad->ug_base, "tip_popup_layout");
3670 ad->tip_popup = cam_app_load_edj(ad->ug_base, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/help");
3672 cam_retm_if(ad->tip_popup == NULL, "tip_popup is NULL");
3673 elm_object_part_content_set(ad->ug_base, "tip_popup_layout", ad->tip_popup);
3675 Evas_Object *check = elm_check_add(ad->tip_popup);
3676 evas_object_smart_callback_add(check, "changed", __tip_popup_check_cb, (void*)ad);
3677 evas_object_show(check);
3678 elm_object_part_content_set(ad->tip_popup, "content.help.check.swallow", check);
3680 gboolean show_popup_tip = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS, PROP_SHOW_POP_TIP, POP_TIP_DEFAULT);
3682 elm_check_state_set(check, EINA_FALSE);
3684 elm_check_state_set(check, EINA_TRUE);
3686 Evas_Object *btn = elm_button_add(ad->tip_popup);
3687 elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_OK"));
3688 evas_object_smart_callback_add(btn, "unpressed", __tip_popup_button_selected_cb, (void *)ad);
3689 evas_object_show(btn);
3690 elm_object_part_content_set(ad->tip_popup, "button.swallow", btn);
3692 Evas_Object *image = elm_image_add(ad->tip_popup);
3693 elm_object_part_content_set(ad->tip_popup, "content.help.image", image);
3695 if (ad->tip_popup) {
3696 evas_object_show(ad->tip_popup);
3697 evas_object_size_hint_min_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3698 evas_object_size_hint_max_set(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3699 evas_object_resize(ad->tip_popup, EDIT_SHORTCUTS_TIP_WIDTH, EDIT_SHORTCUTS_TIP_HEIGHT);
3701 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.check.txt", dgettext(PACKAGE, "IDS_CAM_POP_DO_NOT_SHOW_AGAIN"));
3702 edje_object_part_text_set(_EDJ(ad->tip_popup), "tips.txt", dgettext(PACKAGE, "IDS_CAM_HEADER_TIPS"));
3705 case CAM_TIP_POPUP_BURSTSHOT_HELP:
3706 ad->tip_popup_type = CAM_TIP_POPUP_BURSTSHOT_HELP;
3707 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3708 dgettext(PACKAGE, "IDS_CAM_BODY_TAP_AND_HOLD_THE_CAMERA_BUTTON_TO_TAKE_A_BURST_SHOT"));
3709 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_BURSTSHOT_HELP_IMAGE);
3711 case CAM_TIP_POPUP_VOLUMEKEY_HELP:
3712 ad->tip_popup_type = CAM_TIP_POPUP_VOLUMEKEY_HELP;
3713 edje_object_part_text_set(_EDJ(ad->tip_popup), "content.help.txtblock",
3714 dgettext(PACKAGE, "IDS_CAM_POP_PRESS_THE_VOLUME_UP_KEY_TO_TAKE_A_PICTURE_PRESS_THE_VOLUME_DOWN_KEY_TO_START_RECORDING"));
3715 elm_image_file_set(image, CAM_IMAGE_EDJ_NAME, TIP_POPUP_VOLUMEKEY_HELP_IMAGE);
3718 DEBUG_TRACE("invalid tip-popup type");
3722 evas_object_show(ad->tip_popup);
3724 int output_x, output_y;
3725 output_x = output_y = 0;
3726 __get_tip_popup_coord(ad->target_direction, &output_x, &output_y);
3727 evas_object_move(ad->tip_popup, output_x, output_y);/*landscape*/
3731 void cam_tip_popup_destroy(struct appdata *ad)
3733 cam_retm_if(ad == NULL, "appdata is NULL");
3735 DEL_EVAS_OBJECT(ad->tip_popup);
3736 ad->tip_popup_type = CAM_TIP_POPUP_NONE;
3739 void cam_tip_popup_rotate(struct appdata *ad)
3741 cam_retm_if(ad == NULL, "appdata is NULL");
3743 DEL_EVAS_OBJECT(ad->tip_popup);
3744 cam_tip_popup_create(ad, ad->tip_popup_type);
3747 static char *__sub_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
3749 int index = (int)data;
3751 struct appdata *ad = (struct appdata *)cam_appdata_get();
3752 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3754 CAM_MENU_ITEM* menu_item = NULL;
3755 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3756 return strdup(dgettext(PACKAGE, __get_text_name(*menu_item)));
3759 static Evas_Object *__sub_menu_gl_icon_get(void *data, Evas_Object *obj, const char *part)
3761 struct appdata *ad = (struct appdata *)cam_appdata_get();
3762 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
3764 CamAppData *camapp = ad->camapp_handle;
3765 cam_retvm_if(camapp == NULL, NULL, "camapp_handle is NULL");
3767 int index = (int)data;
3768 int value_index = 0;
3770 if (strcmp(part, "elm.radio") == 0) {
3771 Evas_Object* radio = elm_radio_add(obj);
3773 elm_object_style_set(radio, "beat_winset_test/camera");
3774 elm_radio_state_value_set(radio, index);
3775 elm_radio_group_add(radio, ad->sub_menu_group);
3777 switch (ad->sub_menu_type) {
3778 case CAM_MENU_FLASH:
3779 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FLASH, camapp->flash);
3780 if (index == value_index) {
3781 elm_radio_value_set(radio, value_index);
3784 case CAM_MENU_SHOOTING_MODE:
3785 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SHOOTING_MODE, camapp->shooting_mode);
3786 if (index == value_index) {
3787 elm_radio_value_set(radio, value_index);
3790 case CAM_MENU_RECORDING_MODE:
3791 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_RECORDING_MODE, camapp->recording_mode);
3792 if (index == value_index) {
3793 elm_radio_value_set(radio, value_index);
3796 case CAM_MENU_SCENE_MODE:
3797 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_SCENE_MODE, camapp->scene_mode);
3798 if (index == value_index) {
3799 elm_radio_value_set(radio, value_index);
3802 case CAM_MENU_FOCUS_MODE:
3803 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_FOCUS_MODE, camapp->af_mode);
3804 if (index == value_index) {
3805 elm_radio_value_set(radio, value_index);
3808 case CAM_MENU_TIMER:
3809 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_TIMER, camapp->timer);
3810 if (index == value_index) {
3811 elm_radio_value_set(radio, value_index);
3814 case CAM_MENU_EFFECTS:
3815 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_EFFECTS, camapp->effect);
3816 if (index == value_index) {
3817 elm_radio_value_set(radio, value_index);
3820 case CAM_MENU_PHOTO_RESOLUTION:
3821 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_PHOTO_RESOLUTION, camapp->photo_resolution);
3822 if (index == value_index) {
3823 elm_radio_value_set(radio, value_index);
3826 case CAM_MENU_VIDEO_RESOLUTION:
3827 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VIDEO_RESOLUTION, camapp->video_resolution);
3828 if (index == value_index) {
3829 elm_radio_value_set(radio, value_index);
3832 case CAM_MENU_WHITE_BALANCE:
3833 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_WHITE_BALANCE, camapp->white_balance);
3834 if (index == value_index) {
3835 elm_radio_value_set(radio, value_index);
3839 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_ISO, camapp->iso);
3840 if (index == value_index) {
3841 elm_radio_value_set(radio, value_index);
3844 case CAM_MENU_METERING:
3845 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_METERING, camapp->auto_exposure);
3846 if (index == value_index) {
3847 elm_radio_value_set(radio, value_index);
3850 case CAM_MENU_STORAGE:
3851 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_STORAGE, camapp->storage);
3852 if (index == value_index) {
3853 elm_radio_value_set(radio, value_index);
3856 case CAM_MENU_VOLUME_KEY:
3857 value_index = cam_get_value_to_index((void*)ad, CAM_MENU_VOLUME_KEY, camapp->volume_key);
3858 if (index == value_index) {
3859 elm_radio_value_set(radio, value_index);
3865 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3866 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
3869 } else if (strcmp(part, "elm.icon") == 0) {
3870 Evas_Object *icon = NULL;
3871 char icon_name[1024+1] = { '\0', };
3872 CAM_MENU_ITEM* menu_item = NULL;
3874 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->sub_menu_composer->array, index);
3875 strncpy(icon_name, __get_icon_image_name(*menu_item, BUTTON_STATE_NORMAL), sizeof(icon_name));
3876 icon = elm_image_add(obj);
3877 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
3884 void __cam_setting_sub_gl_style_set()
3887 sub_itc.item_style = "camera/1text.2icon";
3888 sub_itc.func.text_get = __sub_menu_gl_text_get;
3889 sub_itc.func.content_get = __sub_menu_gl_icon_get;
3890 sub_itc.func.state_get = NULL;
3891 sub_itc.func.del = NULL;
3894 static void* __get_sub_menu_genlist_cb(const CAM_MENU_ITEM item)
3897 case CAM_MENU_FLASH:
3898 return __flash_selected_cb;
3899 case CAM_MENU_SHOOTING_MODE:
3900 return __shot_mode_selected_cb;
3901 case CAM_MENU_RECORDING_MODE:
3902 return __record_mode_selected_cb;
3903 case CAM_MENU_SCENE_MODE:
3904 return __scene_mode_selected_cb;
3905 case CAM_MENU_FOCUS_MODE:
3906 return __focus_mode_selected_cb;
3907 case CAM_MENU_TIMER:
3908 return __timer_popup_cb;
3909 case CAM_MENU_EFFECTS:
3910 return __effects_selected_cb;
3911 case CAM_MENU_PHOTO_RESOLUTION:
3912 return __photo_resolution_popup_cb;
3913 case CAM_MENU_VIDEO_RESOLUTION:
3914 return __video_resolution_popup_cb;
3915 case CAM_MENU_WHITE_BALANCE:
3916 return __wb_popup_cb;
3918 return __iso_popup_cb;
3919 case CAM_MENU_METERING:
3920 return __metering_popup_cb;
3921 case CAM_MENU_STORAGE:
3922 return __storage_popup_cb;
3923 case CAM_MENU_VOLUME_KEY:
3924 return __volume_key_popup_cb;
3930 static Eina_Bool __sub_menu_genlist_each_cb(const void *container, void *data, void *fdata)
3932 struct appdata *ad = (struct appdata *)fdata;
3933 cam_retv_if(ad == NULL, EINA_FALSE);
3935 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
3936 DEBUG_TRACE("item = %d", *item);
3938 elm_genlist_item_append(ad->sub_genlist, &sub_itc, (void*)(ad->sub_menu_index),
3939 NULL, ELM_GENLIST_ITEM_NONE, __get_sub_menu_genlist_cb(ad->sub_menu_type), (void *)*item);
3941 ad->sub_menu_index++;
3945 static void __create_setting_listmenu(void *data, int menu_item, gboolean from_setting)
3947 DEBUG_TRACE("START");
3949 struct appdata *ad = data;
3950 cam_retm_if(ad == NULL, "appdata is NULL");
3952 Evas_Object *layout = NULL;
3953 int menu_bar_no = -1;
3956 setting_ctxpopup_create(ad, from_setting);
3957 layout = elm_layout_add(ad->setting_ctxpopup);
3958 elm_layout_file_set(layout, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout");
3961 edje_object_part_text_set(elm_layout_edje_get(layout), "elm.text", _setting_gl_text_get((void*)menu_item, NULL, NULL));
3963 if (ad->sub_menu_composer) {
3964 cam_compose_free(ad->sub_menu_composer);
3965 ad->sub_menu_composer = NULL;
3968 if (ad->sub_menu_composer == NULL) {
3969 ad->sub_menu_composer = calloc(1, sizeof(cam_menu_composer));
3970 cam_compose_list_menu((void*)ad, menu_item, ad->sub_menu_composer);
3973 int size = eina_array_count(ad->sub_menu_composer->array);
3974 int sub_menu_height = __get_sub_menu_height(size);
3975 evas_object_size_hint_min_set(layout,
3976 SUB_MENU_POPUP_WIDTH * elm_config_scale_get(),
3977 sub_menu_height * elm_config_scale_get());
3979 ad->sub_menu_type = menu_item;
3980 ad->sub_menu_index = 0;
3981 ad->sub_genlist = elm_genlist_add(layout);
3982 ad->sub_menu_group = elm_radio_add(ad->sub_genlist);
3984 __cam_setting_sub_gl_style_set();
3985 eina_array_foreach(ad->sub_menu_composer->array, __sub_menu_genlist_each_cb, ad);
3987 evas_object_show(ad->sub_genlist);
3988 elm_object_part_content_set(layout, "elm.swallow.box", ad->sub_genlist);
3989 elm_object_content_set(ad->setting_ctxpopup, layout);
3992 __cam_get_ctxpopup_coord_in_setting_toolbar(ad->target_direction, setting_gl_y, &x, &y);
3993 __cam_toolbar_move_sub_menu(ad->setting_ctxpopup, ad->target_direction, x, y);
3995 menu_bar_no = __get_menubar_no_by_index(ad, menu_item);
3996 __get_option_coord_by_menubar_no(menu_bar_no, ad->target_direction, &x, &y);
3997 __cam_toolbar_move_ctxpopup(ad->setting_ctxpopup, ad->target_direction, x, y);
4000 evas_object_show(ad->setting_ctxpopup);
4001 __setting_popup_timeout_checker_start(ad);
4004 static void __setting_edit_shortcut_popup_cb(void *data, Evas_Object *obj, void *event_info)
4006 struct appdata *ad = (struct appdata *)cam_appdata_get();
4007 cam_retm_if(ad == NULL, "appdata is NULL");
4008 gboolean from_setting = FALSE;
4009 if (event_info) { /*call by setting*/
4010 from_setting = TRUE;
4011 } else { /*call by click icon*/
4012 from_setting = FALSE;
4015 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4016 ad->setting_select_item = (Elm_Object_Item *)event_info;
4019 ad->displayed_setting_popup = FALSE;
4020 toolbar_create_shortcuts_popup(ad);
4023 static void __setting_volume_key_popup_cb(void *data, Evas_Object *obj, void *event_info)
4025 DEBUG_TRACE("START");
4027 struct appdata *ad = data;
4028 cam_retm_if(ad == NULL, "appdata is NULL");
4030 gboolean from_setting = FALSE;
4032 if (event_info) { /*call by setting*/
4033 from_setting = TRUE;
4034 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4035 ad->setting_select_item = (Elm_Object_Item *)event_info;
4036 } else { /*call by click icon*/
4037 from_setting = FALSE;
4038 ad->displayed_setting_popup = DISPLAY_VOLUME_KEY_POPUP;
4041 __create_setting_listmenu(ad, CAM_MENU_VOLUME_KEY, from_setting);
4044 static void __setting_self_portrait_popup_cb(void *data, Evas_Object *obj, void *event_info)
4046 struct appdata *ad = (struct appdata *)(data);
4047 cam_retm_if(ad == NULL, "appdata is NULL");
4048 CamAppData *camapp = ad->camapp_handle;
4049 cam_retm_if(camapp == NULL, "camapp is NULL");
4051 if (!ad->enable_mode_change) {
4052 DEBUG_TRACE("Can not change mode");
4056 ad->enable_mode_change = FALSE;
4058 cam_toolbar_setting_popup_destroy(ad);
4059 setting_ctxpopup_destroy(ad);
4060 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4062 if (camapp->self_portrait == TRUE)
4063 camapp->self_portrait = FALSE;
4065 camapp->self_portrait = TRUE;
4067 GValue value = {0, };
4068 CAM_GVALUE_SET_BOOLEAN(value, camapp->self_portrait);
4069 cam_handle_value_set(ad, PROP_SELF_PORTRAIT, &value);
4071 cam_toolbar_update(ad);
4074 static void __setting_flash_popup(void *data, Evas_Object *obj, void *event_info)
4076 DEBUG_TRACE("START");
4078 struct appdata *ad = (struct appdata *)data;
4079 cam_retm_if(ad == NULL, "appdata is NULL");
4081 gboolean from_setting = FALSE;
4083 if (event_info) { /*call by setting*/
4084 from_setting = TRUE;
4085 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4086 ad->setting_select_item = (Elm_Object_Item *)event_info;
4087 } else { /*call by click icon*/
4088 from_setting = FALSE;
4089 ad->displayed_setting_popup = DISPLAY_FLASH_POPUP;
4092 __create_setting_listmenu(ad, CAM_MENU_FLASH, from_setting);
4095 static void __setting_shot_mode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4097 DEBUG_TRACE("START");
4099 struct appdata *ad = (struct appdata *)data;
4100 cam_retm_if(ad == NULL, "appdata is NULL");
4102 gboolean from_setting = FALSE;
4104 if (event_info) { /*call by setting*/
4105 from_setting = TRUE;
4106 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4107 ad->setting_select_item = (Elm_Object_Item *)event_info;
4108 } else { /*call by click icon*/
4109 from_setting = FALSE;
4110 ad->displayed_setting_popup = DISPLAY_SHOOTING_MODE_POPUP;
4113 __create_setting_listmenu(ad, CAM_MENU_SHOOTING_MODE, from_setting);
4116 static void __setting_record_mode_popup(void *data, Evas_Object *obj, void *event_info)
4118 DEBUG_TRACE("START");
4120 struct appdata *ad = data;
4121 cam_retm_if(ad == NULL, "appdata is NULL");
4123 gboolean from_setting = FALSE;
4125 if (event_info) { /*call by setting*/
4126 from_setting = TRUE;
4127 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4128 ad->setting_select_item = (Elm_Object_Item *)event_info;
4129 } else { /*call by click icon*/
4130 from_setting = FALSE;
4131 ad->displayed_setting_popup = DISPLAY_RECORDING_MODE_POPUP;
4134 __create_setting_listmenu(ad, CAM_MENU_RECORDING_MODE, from_setting);
4137 static void __setting_scenemode_popup_cb(void *data, Evas_Object *obj, void *event_info)
4139 DEBUG_TRACE("START");
4141 struct appdata *ad = data;
4142 cam_retm_if(ad == NULL, "appdata is NULL");
4144 gboolean from_setting = FALSE;
4146 if (event_info) { /*call by setting*/
4147 from_setting = TRUE;
4148 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4149 ad->setting_select_item = (Elm_Object_Item *)event_info;
4150 } else { /*call by click icon*/
4151 from_setting = FALSE;
4152 ad->displayed_setting_popup = DISPLAY_SCENE_MODE_POPUP;
4155 __create_setting_listmenu(ad, CAM_MENU_SCENE_MODE, from_setting);
4158 static void __setting_ev_popup_cb(void *data, Evas_Object *obj, void *event_info)
4160 struct appdata *ad = (struct appdata *)cam_appdata_get();
4161 cam_retm_if(ad == NULL, "appdata is NULL");
4162 cam_retm_if(ad->camapp_handle == NULL, "ad->camapp_handle is NULL");
4166 cam_toolbar_setting_popup_destroy(ad);
4169 static void __setting_burst_shot_popup_cb(void *data, Evas_Object *obj, void *event_info)
4171 struct appdata *ad = (struct appdata *)cam_appdata_get();
4172 cam_retm_if(ad == NULL, "appdata is NULL");
4173 CamAppData *camapp = NULL;
4174 camapp = ad->camapp_handle;
4175 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4177 DEBUG_TRACE("camapp->burst_shot = %d", camapp->burst_shot);
4179 if (obj != ad->burst_shot_mode_radio) {
4180 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4182 if (camapp->burst_shot == TRUE) {
4183 camapp->burst_shot = FALSE;
4184 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4186 camapp->burst_shot = TRUE;
4187 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4190 /* to reset check button */
4191 if (camapp->burst_shot == TRUE)
4192 elm_check_state_set(ad->burst_shot_mode_radio, EINA_TRUE);
4194 elm_check_state_set(ad->burst_shot_mode_radio, EINA_FALSE);
4198 GValue value = {0, };
4199 CAM_GVALUE_SET_BOOLEAN(value, camapp->burst_shot);
4200 cam_handle_value_set(ad, PROP_BURST_SHOT, &value);
4203 __update_menubar_icon_by_index(ad, CAM_MENU_BURST_SHOT_MODE);
4204 __setting_popup_timeout_checker_start(ad);
4207 static void __setting_focus_mode_cb(void *data, Evas_Object *obj, void *event_info)
4209 DEBUG_TRACE("START");
4211 struct appdata *ad = data;
4212 cam_retm_if(ad == NULL, "appdata is NULL");
4214 gboolean from_setting = FALSE;
4216 if (event_info) { /*call by setting*/
4217 from_setting = TRUE;
4218 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4219 ad->setting_select_item = (Elm_Object_Item *)event_info;
4220 } else { /*call by click icon*/
4221 from_setting = FALSE;
4222 ad->displayed_setting_popup = DISPLAY_FOCUS_MODE_POPUP;
4225 __create_setting_listmenu(ad, CAM_MENU_FOCUS_MODE, from_setting);
4228 static void __setting_timer_popup_cb(void *data, Evas_Object *obj, void *event_info)
4230 DEBUG_TRACE("START");
4232 struct appdata *ad = data;
4233 cam_retm_if(ad == NULL, "appdata is NULL");
4235 gboolean from_setting = FALSE;
4237 if (event_info) { /*call by setting*/
4238 from_setting = TRUE;
4239 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4240 ad->setting_select_item = (Elm_Object_Item *)event_info;
4241 } else { /*call by click icon*/
4242 from_setting = FALSE;
4243 ad->displayed_setting_popup = DISPLAY_TIMER_POPUP;
4246 __create_setting_listmenu(ad, CAM_MENU_TIMER, from_setting);
4249 static void __setting_effects_popup_cb(void *data, Evas_Object *obj, void *event_info)
4251 DEBUG_TRACE("START");
4253 struct appdata *ad = data;
4254 cam_retm_if(ad == NULL, "appdata is NULL");
4256 gboolean from_setting = FALSE;
4258 if (event_info) { /*call by setting*/
4259 from_setting = TRUE;
4260 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4261 ad->setting_select_item = (Elm_Object_Item *)event_info;
4262 } else { /*call by click icon*/
4263 from_setting = FALSE;
4264 ad->displayed_setting_popup = DISPLAY_EFFECTS_POPUP;
4267 __create_setting_listmenu(ad, CAM_MENU_EFFECTS, from_setting);
4270 static void __setting_wb_popup_cb(void *data, Evas_Object *obj, void *event_info)
4272 DEBUG_TRACE("START");
4274 struct appdata *ad = data;
4275 cam_retm_if(ad == NULL, "appdata is NULL");
4277 gboolean from_setting = FALSE;
4279 if (event_info) { /*call by setting*/
4280 from_setting = TRUE;
4281 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4282 ad->setting_select_item = (Elm_Object_Item *)event_info;
4283 } else { /*call by click icon*/
4284 from_setting = FALSE;
4285 ad->displayed_setting_popup = DISPLAY_WHITE_BALANCE_POPUP;
4288 __create_setting_listmenu(ad, CAM_MENU_WHITE_BALANCE, from_setting);
4291 static void __setting_iso_popup_cb(void *data, Evas_Object *obj, void *event_info)
4293 DEBUG_TRACE("START");
4295 struct appdata *ad = data;
4296 cam_retm_if(ad == NULL, "appdata is NULL");
4298 gboolean from_setting = FALSE;
4300 if (event_info) { /*call by setting*/
4301 from_setting = TRUE;
4302 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4303 ad->setting_select_item = (Elm_Object_Item *)event_info;
4304 } else { /*call by click icon*/
4305 from_setting = FALSE;
4306 ad->displayed_setting_popup = DISPLAY_ISO_POPUP;
4309 __create_setting_listmenu(ad, CAM_MENU_ISO, from_setting);
4312 static void __setting_metering_popup_cb(void *data, Evas_Object *obj, void *event_info)
4314 DEBUG_TRACE("START");
4316 struct appdata *ad = data;
4317 cam_retm_if(ad == NULL, "appdata is NULL");
4319 gboolean from_setting = FALSE;
4321 if (event_info) { /*call by setting*/
4322 from_setting = TRUE;
4323 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4324 ad->setting_select_item = (Elm_Object_Item *)event_info;
4325 } else { /*call by click icon*/
4326 from_setting = FALSE;
4327 ad->displayed_setting_popup = DISPLAY_METERING_POPUP;
4330 __create_setting_listmenu(ad, CAM_MENU_METERING, from_setting);
4333 static void __setting_anti_shake_popup_cb(void *data, Evas_Object *obj, void *event_info)
4335 struct appdata *ad = (struct appdata *)cam_appdata_get();
4336 cam_retm_if(ad == NULL, "appdata is NULL");
4337 CamAppData *camapp = NULL;
4338 camapp = ad->camapp_handle;
4339 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4341 DEBUG_TRACE("camapp->anti_shake = %d", camapp->anti_shake);
4343 if (obj != ad->antishake_radio) {
4344 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4346 if (camapp->anti_shake == TRUE) {
4347 camapp->anti_shake = FALSE;
4348 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4350 camapp->anti_shake = TRUE;
4351 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4354 /* to reset check button */
4355 if (camapp->anti_shake == TRUE)
4356 elm_check_state_set(ad->antishake_radio, EINA_TRUE);
4358 elm_check_state_set(ad->antishake_radio, EINA_FALSE);
4362 GValue value = {0, };
4363 CAM_GVALUE_SET_BOOLEAN(value, camapp->anti_shake);
4364 cam_handle_value_set(ad, PROP_AHS, &value);
4366 __update_menubar_icon_by_index(ad, CAM_MENU_ANTI_SHAKE);
4367 __setting_popup_timeout_checker_start(ad);
4370 static void __setting_outdoor_visibility_popup_cb(void *data, Evas_Object *obj, void *event_info)
4372 struct appdata *ad = (struct appdata *)cam_appdata_get();
4373 cam_retm_if(ad == NULL, "appdata is NULL");
4374 CamAppData *camapp = NULL;
4375 camapp = ad->camapp_handle;
4376 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4378 DEBUG_TRACE("camapp->outdoor_visibility = %d", camapp->outdoor_visibility);
4380 if (obj != ad->outdoor_visibility_radio) {
4381 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4383 if (camapp->outdoor_visibility == TRUE) {
4384 camapp->outdoor_visibility = FALSE;
4385 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4387 camapp->outdoor_visibility = TRUE;
4388 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4391 /* to reset check button */
4392 if (camapp->outdoor_visibility == TRUE)
4393 elm_check_state_set(ad->outdoor_visibility_radio, EINA_TRUE);
4395 elm_check_state_set(ad->outdoor_visibility_radio, EINA_FALSE);
4399 GValue value = {0, };
4400 CAM_GVALUE_SET_BOOLEAN(value, camapp->outdoor_visibility);
4401 cam_handle_value_set(ad, PROP_OUTDOOR_VISIBILITY, &value);
4403 __update_menubar_icon_by_index(ad, CAM_MENU_OUTDOOR_VISIBILITY);
4404 __setting_popup_timeout_checker_start(ad);
4407 static void __setting_autocontrast_popup_cb(void *data, Evas_Object *obj, void *event_info)
4409 cam_ret_if(obj == NULL);
4410 struct appdata *ad = (struct appdata *)cam_appdata_get();
4411 cam_retm_if(ad == NULL, "appdata is NULL");
4412 CamAppData *camapp = NULL;
4413 camapp = ad->camapp_handle;
4414 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4416 DEBUG_TRACE("camapp->auto_contrast = %d", camapp->auto_contrast);
4418 if (obj != ad->autocontrast_radio) {
4419 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4421 if (camapp->auto_contrast == TRUE) {
4422 camapp->auto_contrast = FALSE;
4423 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4425 camapp->auto_contrast = TRUE;
4426 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4429 /* to reset check button */
4430 if (camapp->auto_contrast == TRUE)
4431 elm_check_state_set(ad->autocontrast_radio, EINA_TRUE);
4433 elm_check_state_set(ad->autocontrast_radio, EINA_FALSE);
4437 GValue value = {0, };
4438 CAM_GVALUE_SET_BOOLEAN(value, camapp->auto_contrast);
4439 cam_handle_value_set(ad, PROP_AUTO_CONTRAST, &value);
4441 __update_menubar_icon_by_index(ad, CAM_MENU_AUTO_CONTRAST);
4442 __setting_popup_timeout_checker_start(ad);
4446 void __setting_guideline_popup_cb(void *data, Evas_Object *obj, void *event_info)
4448 cam_ret_if(obj == NULL);
4449 struct appdata *ad = (struct appdata *)cam_appdata_get();
4450 cam_retm_if(ad == NULL, "appdata is NULL");
4451 CamAppData *camapp = NULL;
4452 camapp = ad->camapp_handle;
4453 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4455 DEBUG_TRACE("camapp->guideline = %d", camapp->guideline);
4457 if (obj != ad->guideline_radio) {
4458 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4460 if (camapp->guideline == TRUE) {
4461 camapp->guideline = FALSE;
4462 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4464 camapp->guideline = TRUE;
4465 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4468 /* to reset check button */
4469 if (camapp->guideline == TRUE)
4470 elm_check_state_set(ad->guideline_radio, EINA_TRUE);
4472 elm_check_state_set(ad->guideline_radio, EINA_FALSE);
4476 GValue value = {0, };
4477 CAM_GVALUE_SET_BOOLEAN(value, camapp->guideline);
4478 cam_handle_value_set(ad, PROP_GUIDELINE, &value);
4480 settings_guideline_refresh(ad);
4482 __update_menubar_icon_by_index(ad, CAM_MENU_GUIDELINES);
4483 __setting_popup_timeout_checker_start(ad);
4487 static void __setting_save_as_flip_popup_cb(void *data, Evas_Object *obj, void *event_info)
4489 cam_ret_if(obj == NULL);
4490 struct appdata *ad = (struct appdata *)cam_appdata_get();
4491 cam_retm_if(ad == NULL, "appdata is NULL");
4492 CamAppData *camapp = NULL;
4493 camapp = ad->camapp_handle;
4494 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4496 DEBUG_TRACE("camapp->save_as_flip = %d", camapp->save_as_flip);
4498 if (obj != ad->save_as_flip_radio) {
4499 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4501 if (camapp->save_as_flip == TRUE) {
4502 camapp->save_as_flip = FALSE;
4503 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4505 camapp->save_as_flip = TRUE;
4506 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4509 /* to reset check button */
4510 if (camapp->save_as_flip == TRUE)
4511 elm_check_state_set(ad->save_as_flip_radio, EINA_TRUE);
4513 elm_check_state_set(ad->save_as_flip_radio, EINA_FALSE);
4517 GValue value = {0, };
4518 CAM_GVALUE_SET_BOOLEAN(value, camapp->save_as_flip);
4519 cam_handle_value_set(ad, PROP_SAVE_AS_FLIP, &value);
4521 __update_menubar_icon_by_index(ad, CAM_MENU_SAVE_AS_FLIP);
4522 __setting_popup_timeout_checker_start(ad);
4526 static void __voice_cmd_cb(CamVoiceCmdState state, void* data)
4529 case CAM_VOICE_CMD_READY:
4532 char *emission = "release_shutter_sig";
4533 char *source = "temp";
4534 cam_toolbar_shutter_button_cb(data, NULL,
4538 case CAM_VOICE_CMD_REJECT:
4539 // do action - after discuss with UX
4541 case CAM_VOICE_CMD_ERROR:
4542 //do action - after discuss with UX
4549 static void __setting_capture_by_voice_popup_cb(void *data, Evas_Object *obj, void *event_info)
4551 cam_ret_if(obj == NULL);
4552 struct appdata *ad = (struct appdata *)cam_appdata_get();
4553 cam_retm_if(ad == NULL, "appdata is NULL");
4554 CamAppData *camapp = NULL;
4555 camapp = ad->camapp_handle;
4556 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4558 DEBUG_TRACE("camapp->capture_by_voice = %d", camapp->capture_by_voice);
4560 if (obj != ad->capture_by_voice_radio) {
4561 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4563 if (camapp->capture_by_voice == TRUE) {
4564 camapp->capture_by_voice = FALSE;
4565 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4567 camapp->capture_by_voice = TRUE;
4568 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4571 /* to reset check button */
4572 if (camapp->capture_by_voice == TRUE)
4573 elm_check_state_set(ad->capture_by_voice_radio, EINA_TRUE);
4575 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4579 if (camapp->capture_by_voice) {
4580 if ( !cam_voice_cmd_create((cam_voice_cmd_cb)__voice_cmd_cb,ad)) {
4581 cam_voice_cmd_destroy();
4582 camapp->capture_by_voice = FALSE;
4583 elm_check_state_set(ad->capture_by_voice_radio, EINA_FALSE);
4586 } else cam_voice_cmd_destroy();
4588 __update_menubar_icon_by_index(ad, CAM_MENU_CAPTURE_VOICE);
4589 __setting_popup_timeout_checker_start(ad);
4592 static void __setting_gps_popup_cb(void *data, Evas_Object *obj, void *event_info)
4594 cam_ret_if(obj == NULL);
4595 struct appdata *ad = (struct appdata *)cam_appdata_get();
4596 cam_retm_if(ad == NULL, "appdata is NULL");
4597 CamAppData *camapp = NULL;
4598 camapp = ad->camapp_handle;
4599 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
4601 DEBUG_TRACE("camapp->gps = %d", camapp->gps);
4603 if (obj != ad->gps_radio) {
4604 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4606 if (camapp->gps == TRUE) {
4607 camapp->gps = FALSE;
4608 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4611 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4614 /* to reset check button */
4615 if (camapp->gps == TRUE)
4616 elm_check_state_set(ad->gps_radio, EINA_TRUE);
4618 elm_check_state_set(ad->gps_radio, EINA_FALSE);
4622 GValue value = {0, };
4623 CAM_GVALUE_SET_BOOLEAN(value, camapp->gps);
4624 cam_handle_value_set(ad, PROP_GPS, &value);
4626 __update_menubar_icon_by_index(ad, CAM_MENU_GPS_TAG);
4627 __setting_popup_timeout_checker_start(ad);
4629 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4630 cam_toolbar_setting_popup_destroy(ad);
4633 static void __setting_storage_popup_cb(void *data, Evas_Object *obj, void *event_info)
4635 DEBUG_TRACE("START");
4637 struct appdata *ad = data;
4638 cam_retm_if(ad == NULL, "appdata is NULL");
4640 gboolean from_setting = FALSE;
4642 if (event_info) { /*call by setting*/
4643 from_setting = TRUE;
4644 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4645 ad->setting_select_item = (Elm_Object_Item *)event_info;
4646 } else { /*call by click icon*/
4647 from_setting = FALSE;
4648 ad->displayed_setting_popup = DISPLAY_STORAGE_POPUP;
4651 __create_setting_listmenu(ad, CAM_MENU_STORAGE, from_setting);
4654 static void __setting_photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4656 DEBUG_TRACE("START");
4658 struct appdata *ad = data;
4659 cam_retm_if(ad == NULL, "appdata is NULL");
4661 gboolean from_setting = FALSE;
4663 if (event_info) { /*call by setting*/
4664 from_setting = TRUE;
4665 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4666 ad->setting_select_item = (Elm_Object_Item *)event_info;
4667 } else { /*call by click icon*/
4668 from_setting = FALSE;
4669 ad->displayed_setting_popup = DISPLAY_PHOTO_RESOLUTION_POPUP;
4672 __create_setting_listmenu(ad, CAM_MENU_PHOTO_RESOLUTION, from_setting);
4675 static void __setting_video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
4677 DEBUG_TRACE("START");
4679 struct appdata *ad = data;
4680 cam_retm_if(ad == NULL, "appdata is NULL");
4682 gboolean from_setting = FALSE;
4684 if (event_info) { /*call by setting*/
4685 from_setting = TRUE;
4686 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4687 ad->setting_select_item = (Elm_Object_Item *)event_info;
4688 } else { /*call by click icon*/
4689 from_setting = FALSE;
4690 ad->displayed_setting_popup = DISPLAY_VIDEO_RESOLUTION_POPUP;
4693 __create_setting_listmenu(ad, CAM_MENU_VIDEO_RESOLUTION, from_setting);
4696 static void __setting_restore_defaults_popup_cb(void *data, Evas_Object *obj, void *event_info)
4698 cam_ret_if(data == NULL);
4699 struct appdata *ad = (struct appdata *)(data);
4700 cam_retm_if(ad == NULL, " appdata is NULL");
4701 gboolean from_setting = FALSE;
4702 if (event_info) { /*call by setting*/
4703 from_setting = TRUE;
4704 } else { /*call by click icon*/
4705 from_setting = FALSE;
4706 ad->displayed_setting_popup = DISPLAY_RESET_POPUP;
4709 elm_genlist_item_selected_set(event_info, EINA_FALSE);
4710 ad->setting_select_item = (Elm_Object_Item *)event_info;
4713 DEL_EVAS_OBJECT(ad->confirm_popup);
4715 ad->confirm_popup = elm_popup_add(ad->ug_base);
4716 evas_object_size_hint_weight_set(ad->confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
4717 elm_popup_timeout_set(ad->confirm_popup, 9.0);
4720 char popup_str[1024 + 1] = { '\0',};
4721 snprintf(popup_str, 1024, "%s%s%s", _("<font=SLP:style=Roman><color=#000000><align=center>"),
4722 dgettext(PACKAGE, "IDS_CAM_POP_RESET_SETTINGS_Q"), _("</align></color></font>"));
4724 elm_object_text_set(ad->confirm_popup, popup_str);
4725 Evas_Object *btn1 = elm_button_add(ad->confirm_popup);
4726 elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
4727 elm_object_part_content_set(ad->confirm_popup, "button1", btn1);
4728 evas_object_smart_callback_add(btn1, "clicked", __restore_defaults_popup_cb_ok_cb, (void*)ad);
4729 Evas_Object *btn2 = elm_button_add(ad->confirm_popup);
4730 elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
4731 elm_object_part_content_set(ad->confirm_popup, "button2", btn2);
4732 evas_object_smart_callback_add(btn2, "clicked", __restore_defaults_popup_cb_cancel_cb, (void*)ad);
4734 evas_object_show(ad->confirm_popup);
4736 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4737 cam_toolbar_setting_popup_destroy(ad);
4740 void settings_guideline_refresh(struct appdata *ad)
4742 cam_retm_if(ad == NULL, "appdata is NULL");
4743 CamAppData *camapp = ad->camapp_handle;
4744 cam_retm_if(camapp == NULL,"camapp is NULL");
4745 DEBUG_TRACE("ad->camapp_handle->guideline = %d" ,ad->camapp_handle->guideline);
4747 if( ad->camapp_handle->guideline == TRUE) {
4748 cam_guideline_create(ad);
4750 if (ad->guideline_edje && ad->toolbar_setting_popup) {
4751 evas_object_hide(ad->guideline_edje);
4753 if (ad->toolbar_edje)
4754 evas_object_raise(ad->toolbar_edje);
4757 DEL_EVAS_OBJECT(ad->guideline_edje);
4761 static Eina_Bool __setting_popup_timeout_checker_cb(void *data)
4763 struct appdata *ad = (struct appdata *)data;
4764 CamAppData *camapp = NULL;
4765 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
4766 camapp = ad->camapp_handle;
4767 if (camapp == NULL) {
4768 if (ad->setting_toolbar_hide_timer)
4769 ad->setting_toolbar_hide_timer = NULL;
4770 return ECORE_CALLBACK_CANCEL;
4773 if (ad->setting_toolbar_hide_timer)
4774 ad->setting_toolbar_hide_timer = NULL;
4775 gdouble diff_time = 0.0;
4776 diff_time = _get_current_time() - camapp->start_time;
4777 if ((cam_mm_get_state() == CAMERA_STATE_PREVIEW)
4778 && (diff_time >= CAM_SETTING_POPUP_TIMEOUT)) {
4779 DEBUG_TRACE("destroy setting pupup");
4780 if (ad->setting_toolbar_hide_timer) {
4781 if (ad->setting_ctxpopup) {
4782 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
4783 cam_toolbar_setting_popup_destroy(ad);
4784 if (ad->shot_mode_guide_popup)
4785 toolbar_shot_guide_popup_create(ad, ad->camapp_handle->shooting_mode);
4786 } else if (ad->toolbar_setting_popup) {
4787 cam_toolbar_setting_popup_destroy(ad);
4790 if (ad->edit_shortcuts_popup_scroll) {
4791 toolbar_destroy_shortcuts_popup(ad);
4795 return ECORE_CALLBACK_CANCEL;
4798 static gboolean __setting_popup_timeout_checker_start(struct appdata *ad)
4800 DEBUG_TRACE("START");
4801 CamAppData *camapp = NULL;
4802 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4803 camapp = ad->camapp_handle;
4804 cam_retvm_if(camapp == NULL, FALSE, "cam_handle is NULL");
4805 if (ad->setting_toolbar_hide_timer) {
4806 ecore_timer_del(ad->setting_toolbar_hide_timer);
4807 ad->setting_toolbar_hide_timer = NULL;
4809 ad->setting_toolbar_hide_timer =
4810 ecore_timer_add(CAM_SETTING_POPUP_TIMEOUT, __setting_popup_timeout_checker_cb, ad);
4811 camapp->start_time = _get_current_time();
4816 int cam_toolbar_get_menubarno_by_menuitem(struct appdata *ad, int menu_item)
4818 int menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
4819 Evas_Object *icon = NULL;
4820 __get_menubar_shortcuts_info(ad, menu_item, &menu_bar_no, &icon);
4824 /*note: output menu index, input display popup value*/
4825 int cam_toolbar_displaypopup_map_menu_value(int display_popup)
4827 switch (display_popup) {
4828 case DISPLAY_NONE_POPUP:
4829 return CAM_MENU_EMPTY;
4831 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4832 return CAM_MENU_SHORTCUTS;
4834 case DISPLAY_BURST_SHOT_MODE_POPUP:
4835 return CAM_MENU_BURST_SHOT_MODE;
4837 case DISPLAY_VOLUME_KEY_POPUP:
4838 return CAM_MENU_VOLUME_KEY;
4840 case DISPLAY_SELF_PORTRAIT_POPUP:
4841 return CAM_MENU_SELF_PORTRAIT;
4843 case DISPLAY_SCENE_MODE_POPUP:
4844 return CAM_MENU_SCENE_MODE;
4846 case DISPLAY_FOCUS_MODE_POPUP:
4847 return CAM_MENU_FOCUS_MODE;
4849 case DISPLAY_EFFECTS_POPUP:
4850 return CAM_MENU_EFFECTS;
4852 case DISPLAY_ANTI_SHAKE_POPUP:
4853 return CAM_MENU_ANTI_SHAKE;
4855 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4856 return CAM_MENU_OUTDOOR_VISIBILITY;
4858 case DISPLAY_AUTO_CONTRAST_POPUP:
4859 return CAM_MENU_AUTO_CONTRAST;
4861 case DISPLAY_GUIDELINES_POPUP:
4862 return CAM_MENU_GUIDELINES;
4864 case DISPLAY_CAPTURE_VOICE_POPUP:
4865 return CAM_MENU_CAPTURE_VOICE;
4867 case DISPLAY_GPS_TAG_POPUP:
4868 return CAM_MENU_GPS_TAG;
4870 case DISPLAY_STORAGE_POPUP:
4871 return CAM_MENU_STORAGE;
4873 case DISPLAY_RESET_POPUP:
4874 return CAM_MENU_RESET;
4876 case DISPLAY_SHOOTING_MODE_POPUP:
4877 return CAM_MENU_SHOOTING_MODE;
4879 case DISPLAY_RECORDING_MODE_POPUP:
4880 return CAM_MENU_RECORDING_MODE;
4882 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4883 return CAM_MENU_VIDEO_RESOLUTION;
4885 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4886 return CAM_MENU_PHOTO_RESOLUTION;
4888 case DISPLAY_ISO_POPUP:
4889 return CAM_MENU_ISO;
4891 case DISPLAY_METERING_POPUP:
4892 return CAM_MENU_METERING;
4894 case DISPLAY_WHITE_BALANCE_POPUP:
4895 return CAM_MENU_WHITE_BALANCE;
4897 case DISPLAY_FLASH_POPUP:
4898 return CAM_MENU_FLASH;
4900 case DISPLAY_TIMER_POPUP:
4901 return CAM_MENU_TIMER;
4903 case DISPLAY_SAVE_AS_FLIP:
4904 return CAM_MENU_SAVE_AS_FLIP;
4906 return CAM_MENU_EMPTY;
4911 Eina_Bool cam_show_setting_menu_option_popup(void *data)
4913 struct appdata *ad = (struct appdata *)data;
4914 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
4916 switch (ad->displayed_setting_popup) {
4917 case DISPLAY_NONE_POPUP:
4919 case DISPLAY_EDIT_SHOTCUTS_POPUP:
4920 __setting_edit_shortcut_popup_cb(ad, NULL, NULL);
4922 case DISPLAY_VOLUME_KEY_POPUP:
4923 __setting_volume_key_popup_cb(ad, NULL, NULL);
4925 case DISPLAY_SELF_PORTRAIT_POPUP:
4926 __setting_self_portrait_popup_cb(ad, NULL, NULL);
4928 case DISPLAY_SCENE_MODE_POPUP:
4929 __setting_scenemode_popup_cb(ad, NULL, NULL);
4931 case DISPLAY_FOCUS_MODE_POPUP:
4932 __setting_focus_mode_cb(ad, NULL, NULL);
4934 case DISPLAY_EFFECTS_POPUP:
4935 __setting_effects_popup_cb(ad, NULL, NULL);
4937 case DISPLAY_ANTI_SHAKE_POPUP:
4938 __setting_anti_shake_popup_cb(ad, NULL, NULL);
4940 case DISPLAY_OUTDOOR_VISIBILITY_POPUP:
4941 __setting_outdoor_visibility_popup_cb(ad, NULL, NULL);
4943 case DISPLAY_AUTO_CONTRAST_POPUP:
4944 __setting_autocontrast_popup_cb(ad, NULL, NULL);
4946 case DISPLAY_GUIDELINES_POPUP:
4947 __setting_guideline_popup_cb(ad, NULL, NULL);
4949 case DISPLAY_CAPTURE_VOICE_POPUP:
4950 __setting_capture_by_voice_popup_cb(ad, NULL, NULL);
4952 case DISPLAY_GPS_TAG_POPUP:
4953 __setting_gps_popup_cb(ad, NULL, NULL);
4955 case DISPLAY_STORAGE_POPUP:
4956 __setting_storage_popup_cb(ad, NULL, NULL);
4958 case DISPLAY_RESET_POPUP:
4959 __setting_restore_defaults_popup_cb(ad, NULL, NULL);
4961 case DISPLAY_SHOOTING_MODE_POPUP:
4962 __setting_shot_mode_popup_cb(ad, NULL, NULL);
4964 case DISPLAY_RECORDING_MODE_POPUP:
4965 __setting_record_mode_popup(ad, NULL, NULL);
4967 case DISPLAY_VIDEO_RESOLUTION_POPUP:
4968 __setting_video_resolution_popup_cb(ad, NULL, NULL);
4970 case DISPLAY_PHOTO_RESOLUTION_POPUP:
4971 __setting_photo_resolution_popup_cb(ad, NULL, NULL);
4973 case DISPLAY_ISO_POPUP:
4974 __setting_iso_popup_cb(ad, NULL, NULL);
4976 case DISPLAY_METERING_POPUP:
4977 __setting_metering_popup_cb(ad, NULL, NULL);
4979 case DISPLAY_WHITE_BALANCE_POPUP:
4980 __setting_wb_popup_cb(ad, NULL, NULL);
4982 case DISPLAY_FLASH_POPUP:
4983 __setting_flash_popup(ad, NULL, NULL);
4985 case DISPLAY_TIMER_POPUP:
4986 __setting_timer_popup_cb(ad,NULL,NULL);
4988 case DISPLAY_SAVE_AS_FLIP:
4989 __setting_save_as_flip_popup_cb(ad, NULL, NULL);
4995 return ECORE_CALLBACK_CANCEL;
4998 Eina_Bool cam_show_setting_menu(void *data)
5000 struct appdata *ad = (struct appdata *)data;
5001 cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
5003 if (ad->show_setting_popup_after_rotate == TRUE) {
5004 cam_toolbar_setting_popup_create(ad);
5005 } else if (ad->show_edit_shortcuts_popup_after_rotate == TRUE) {
5006 toolbar_create_shortcuts_popup(ad);
5009 if (ad->displayed_setting_popup != DISPLAY_NONE_POPUP) {
5010 ecore_idler_add(cam_show_setting_menu_option_popup, ad);
5013 ad->is_rotating = FALSE;
5015 return ECORE_CALLBACK_CANCEL;
5018 void toolbar_destroy_shortcuts_popup(struct appdata *ad)
5020 cam_retm_if(ad == NULL, "appdata is null");
5021 cam_retm_if(ad->toolbar_edje == NULL, "appdata is null");
5022 elm_object_part_content_unset(ad->toolbar_edje, "shortcuts_popup");
5024 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_scroll);
5025 DEL_EVAS_OBJECT(ad->edit_shortcuts_popup_description);
5026 ad->edit_shortcuts_popup_scroll = NULL;
5027 ad->edit_shortcuts_popup_ctx = NULL;
5028 ad->edit_shortcuts_popup = NULL;
5031 __cam_toolbar_edit_shortcuts_data_clean();
5033 destroy_menubar_shortcuts_mouse_event(ad, 0, TRUE);
5036 /*TODO: here should be rotate icon*/
5038 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5039 "toolbar_1_icon,normal", "prog");
5040 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5041 "toolbar_2_icon,normal", "prog");
5042 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5043 "toolbar_3_icon,normal", "prog");
5044 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
5045 "toolbar_4_icon,normal", "prog");
5047 __set_show_state_preview_obj(ad, TRUE);
5050 for (i = CAM_MENU_EMPTY + 1; i < CAM_MENU_MAX_NUMS; i++) {
5051 __update_menubar_icon_by_index(ad, i);
5055 void cam_toolbar_setting_popup_destroy(struct appdata *ad)
5057 cam_retm_if(ad == NULL, "appdata is null");
5060 if (ad->setting_ctxpopup)
5061 setting_ctxpopup_destroy(ad);
5064 elm_genlist_clear(ad->genlist);
5065 evas_object_del(ad->genlist);
5069 DEL_EVAS_OBJECT(ad->toolbar_setting_popup);
5070 ad->toolbar_setting_popup_area = NULL;
5071 ad->setting_select_item = NULL; /*select item*/
5073 /*elm_all_flush();*/
5074 cam_elm_cache_flush();
5076 __set_show_state_preview_obj(ad, TRUE);
5079 void cam_toolbar_setting_popup_update(struct appdata *ad)
5081 cam_retm_if(ad == NULL, "appdata is null");
5083 if (!ad->toolbar_setting_popup)
5086 if (ad->setting_ctxpopup)
5087 setting_ctxpopup_destroy(ad);
5089 __update_setting_popup(ad);
5092 static Evas_Object *_setting_gl_icon_get(void *data, Evas_Object *obj, const char *part)
5094 struct appdata *ad = (struct appdata *)cam_appdata_get();
5095 cam_retvm_if(ad == NULL, NULL, "appdata is null");
5097 int index = (int)data;
5099 CamAppData *camapp = ad->camapp_handle;
5100 cam_retv_if(camapp == NULL, NULL);
5101 Evas_Object *icon = NULL;
5104 case CAM_MENU_SHORTCUTS:
5107 case CAM_MENU_BURST_SHOT_MODE:
5109 icon = elm_check_add(obj);
5111 if (ad->camapp_handle->burst_shot) {
5112 elm_check_state_set(icon, EINA_TRUE);
5114 elm_check_state_set(icon, EINA_FALSE);
5117 elm_object_style_set(icon, "genlist/on&off");
5118 evas_object_smart_callback_add(icon, "changed", __setting_burst_shot_popup_cb, (void*)ad);
5119 ad->burst_shot_mode_radio = icon;
5122 case CAM_MENU_VOLUME_KEY:
5124 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5125 icon = elm_image_add(obj);
5126 strncpy(icon_name, __get_icon_image_name(cam_convert_volume_key_to_menu_item(camapp->volume_key), BUTTON_STATE_NORMAL), sizeof(icon_name));
5127 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5130 case CAM_MENU_SELF_PORTRAIT:
5131 icon = elm_check_add(obj);
5133 if (camapp->self_portrait == FALSE) {
5134 elm_check_state_set(icon, EINA_FALSE);
5136 elm_check_state_set(icon, EINA_TRUE);
5139 elm_object_style_set(icon, "genlist/on&off");
5141 case CAM_MENU_FLASH:
5143 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5144 icon = elm_image_add(obj);
5145 strncpy(icon_name, __get_icon_image_name(cam_convert_flash_to_menu_item(camapp->flash), BUTTON_STATE_NORMAL), sizeof(icon_name));
5146 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5149 case CAM_MENU_SHOOTING_MODE:
5151 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5152 icon = elm_image_add(obj);
5153 strncpy(icon_name, __get_icon_image_name(cam_convert_shot_mode_to_menu_item(camapp->shooting_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5154 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5157 case CAM_MENU_RECORDING_MODE:
5159 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5160 icon = elm_image_add(obj);
5161 strncpy(icon_name, __get_icon_image_name(cam_convert_recording_mode_to_menu_item(camapp->recording_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5162 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5165 case CAM_MENU_SCENE_MODE:
5167 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5168 icon = elm_image_add(obj);
5169 strncpy(icon_name, __get_icon_image_name(cam_convert_scene_mode_to_menu_item(camapp->scene_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5170 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5173 case CAM_MENU_EXPLOSURE_VALUE:
5175 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5176 icon = elm_image_add(obj);
5177 strncpy(icon_name, __get_icon_image_name(CAM_MENU_EXPLOSURE_VALUE, BUTTON_STATE_NORMAL), sizeof(icon_name));
5178 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5181 case CAM_MENU_FOCUS_MODE:
5183 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5184 icon = elm_image_add(obj);
5185 strncpy(icon_name, __get_icon_image_name(cam_convert_focus_to_menu_item(camapp->af_mode), BUTTON_STATE_NORMAL), sizeof(icon_name));
5186 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5189 case CAM_MENU_TIMER:
5191 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5192 icon = elm_image_add(obj);
5193 strncpy(icon_name, __get_icon_image_name(cam_convert_timer_to_menu_item(camapp->timer), BUTTON_STATE_NORMAL), sizeof(icon_name));
5194 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5197 case CAM_MENU_EFFECTS:
5199 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5200 icon = elm_image_add(obj);
5201 strncpy(icon_name, __get_icon_image_name(cam_convert_effect_to_menu_item(camapp->effect), BUTTON_STATE_NORMAL), sizeof(icon_name));
5202 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5205 case CAM_MENU_PHOTO_RESOLUTION:
5207 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5208 icon = elm_image_add(obj);
5209 strncpy(icon_name, __get_icon_image_name(cam_convert_photo_resolution_to_menu_item(camapp->photo_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5210 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5213 case CAM_MENU_VIDEO_RESOLUTION:
5215 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5216 icon = elm_image_add(obj);
5217 strncpy(icon_name, __get_icon_image_name(cam_convert_video_resolution_to_menu_item(camapp->video_resolution), BUTTON_STATE_NORMAL), sizeof(icon_name));
5218 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5221 case CAM_MENU_WHITE_BALANCE:
5223 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5224 icon = elm_image_add(obj);
5225 strncpy(icon_name, __get_icon_image_name(cam_convert_wb_to_menu_item(camapp->white_balance), BUTTON_STATE_NORMAL), sizeof(icon_name));
5226 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5231 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5232 icon = elm_image_add(obj);
5233 strncpy(icon_name, __get_icon_image_name(cam_convert_iso_to_menu_item(camapp->iso), BUTTON_STATE_NORMAL), sizeof(icon_name));
5234 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5237 case CAM_MENU_METERING:
5239 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5240 icon = elm_image_add(obj);
5241 strncpy(icon_name, __get_icon_image_name(cam_convert_metering_to_menu_item(camapp->auto_exposure), BUTTON_STATE_NORMAL), sizeof(icon_name));
5242 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5245 case CAM_MENU_ANTI_SHAKE:
5246 icon = elm_check_add(obj);
5248 if (ad->camapp_handle->anti_shake) {
5249 elm_check_state_set(icon, EINA_TRUE);
5251 elm_check_state_set(icon, EINA_FALSE);
5254 elm_object_style_set(icon, "genlist/on&off");
5255 evas_object_smart_callback_add(icon, "changed", __setting_anti_shake_popup_cb, (void*)ad);
5256 ad->antishake_radio = icon;
5258 case CAM_MENU_OUTDOOR_VISIBILITY:/*TODO:is finding solution*/
5259 icon = elm_check_add(obj);
5261 if (ad->camapp_handle->outdoor_visibility) {
5262 elm_check_state_set(icon, EINA_TRUE);
5264 elm_check_state_set(icon, EINA_FALSE);
5267 elm_object_style_set(icon, "genlist/on&off");
5268 evas_object_smart_callback_add(icon, "changed", __setting_outdoor_visibility_popup_cb, (void*)ad);
5269 ad->outdoor_visibility_radio = icon;
5271 case CAM_MENU_AUTO_CONTRAST:
5272 icon = elm_check_add(obj);
5274 if (ad->camapp_handle->auto_contrast) {
5275 elm_check_state_set(icon, EINA_TRUE);
5278 elm_check_state_set(icon, EINA_FALSE);
5280 elm_object_style_set(icon, "genlist/on&off");
5281 evas_object_smart_callback_add(icon, "changed", __setting_autocontrast_popup_cb, (void*)ad);
5282 ad->autocontrast_radio = icon;
5285 case CAM_MENU_GUIDELINES:
5286 icon = elm_check_add(obj);
5288 if (ad->camapp_handle->guideline) {
5289 elm_check_state_set(icon, EINA_TRUE);
5291 elm_check_state_set(icon, EINA_FALSE);
5294 elm_object_style_set(icon, "genlist/on&off");
5295 evas_object_smart_callback_add(icon, "changed", __setting_guideline_popup_cb, (void*)ad);
5296 ad->guideline_radio = icon;
5298 case CAM_MENU_CAPTURE_VOICE:/*TODO:now no relase solution to support it*/
5299 icon = elm_check_add(obj);
5301 if (ad->camapp_handle->capture_by_voice) {
5302 elm_check_state_set(icon, EINA_TRUE);
5304 elm_check_state_set(icon, EINA_FALSE);
5307 elm_object_style_set(icon, "genlist/on&off");
5308 evas_object_smart_callback_add(icon, "changed", __setting_capture_by_voice_popup_cb, (void*)ad);
5309 ad->capture_by_voice_radio = icon;
5311 case CAM_MENU_GPS_TAG:
5312 icon = elm_check_add(obj);
5315 elm_check_state_set(icon, EINA_TRUE);
5317 elm_check_state_set(icon, EINA_FALSE);
5320 elm_object_style_set(icon, "genlist/on&off");
5321 evas_object_smart_callback_add(icon, "changed", __setting_gps_popup_cb, (void*)ad);
5322 ad->gps_radio = icon;
5324 case CAM_MENU_SAVE_AS_FLIP:
5325 icon = elm_check_add(obj);
5327 if (ad->camapp_handle->save_as_flip) {
5328 elm_check_state_set(icon, EINA_TRUE);
5330 elm_check_state_set(icon, EINA_FALSE);
5333 elm_object_style_set(icon, "genlist/on&off");
5334 evas_object_smart_callback_add(icon, "changed", __setting_save_as_flip_popup_cb, (void*)ad);
5335 ad->save_as_flip_radio = icon;
5337 case CAM_MENU_STORAGE:
5339 char icon_name[CAM_FILE_PATH_MAX] = { 0 };
5340 icon = elm_image_add(obj);
5341 strncpy(icon_name, __get_icon_image_name(cam_convert_storage_to_menu_item(camapp->storage), BUTTON_STATE_NORMAL), sizeof(icon_name));
5342 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
5345 case CAM_MENU_RESET:
5347 case CAM_MENU_MAX_NUMS:
5348 DEBUG_TRACE("your array out, please check!");
5351 DEBUG_TRACE("Error occur!");
5354 /*evas_object_resize(icon, 86 , 84);
5355 evas_object_size_hint_min_set(icon, 86, 84);
5356 evas_object_size_hint_max_set(icon, 86, 84);*/
5357 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5358 evas_object_size_hint_align_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
5363 static char *_setting_gl_text_get(void *data, Evas_Object *obj, const char *part)
5365 int index = (int)data;
5368 case CAM_MENU_SHORTCUTS:
5369 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EDIT_SHORTCUTS"));
5371 case CAM_MENU_BURST_SHOT_MODE:
5372 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_BURST_SHOT_ABB"));
5374 case CAM_MENU_VOLUME_KEY:
5375 return strdup(dgettext(PACKAGE, "IDS_CAM_MBODY_USE_THE_VOLUME_KEY_AS"));
5377 case CAM_MENU_SELF_PORTRAIT:
5378 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SELF_SHOT"));
5380 case CAM_MENU_FLASH:
5381 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FLASH"));
5383 case CAM_MENU_SHOOTING_MODE:
5384 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_SHOOTING_MODE"));
5386 case CAM_MENU_RECORDING_MODE:
5387 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_RECORDING_MODE"));
5389 case CAM_MENU_SCENE_MODE:
5390 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SCENE_MODE"));
5392 case CAM_MENU_EXPLOSURE_VALUE:
5393 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_EXPOSURE_VALUE"));
5395 case CAM_MENU_FOCUS_MODE:
5396 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_FOCUS_MODE"));
5398 case CAM_MENU_TIMER:
5399 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_TIMER"));
5401 case CAM_MENU_EFFECTS:
5402 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_EFFECTS"));
5404 case CAM_MENU_PHOTO_RESOLUTION:
5405 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_PHOTO_RESOLUTION_ABB"));
5407 case CAM_MENU_VIDEO_RESOLUTION:
5408 return strdup(dgettext(PACKAGE,"IDS_CAM_OPT_VIDEO_RESOLUTION_ABB"));
5410 case CAM_MENU_WHITE_BALANCE:
5411 return strdup(dgettext(PACKAGE, "IDS_CAM_OPT_WHITE_BALANCE_ABB"));
5414 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ISO"));
5416 case CAM_MENU_METERING:
5417 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_METERING"));
5419 case CAM_MENU_ANTI_SHAKE:
5420 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_ANTI_SHAKE"));
5422 case CAM_MENU_OUTDOOR_VISIBILITY:
5423 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_OUTDOOR_VISIBILITY"));
5425 case CAM_MENU_AUTO_CONTRAST:
5426 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_AUTO_CONTRAST"));
5428 case CAM_MENU_GUIDELINES:
5429 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GUIDELINE"));
5431 case CAM_MENU_CAPTURE_VOICE:
5432 return strdup("Capture with voice");
5434 case CAM_MENU_GPS_TAG:
5435 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_GPS_TAG"));
5437 case CAM_MENU_SAVE_AS_FLIP:
5438 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SAVE_AS_FLIPPED"));
5440 case CAM_MENU_STORAGE:
5441 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_STORAGE"));
5443 case CAM_MENU_RESET:
5444 return strdup(dgettext(PACKAGE, "IDS_CAM_BODY_RESET_SETTINGS_RESET"));
5446 case CAM_MENU_MAX_NUMS:
5447 DEBUG_TRACE("your array out, please check!");
5450 DEBUG_TRACE("Error occur!");
5452 return strdup("test");
5455 static void __setting_gl_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5458 struct appdata *ad = (struct appdata *)data;
5460 if (!event_info) return;
5461 if (ad->setting_ctxpopup) {
5462 /*setting_ctxpopup_destroy(ad);*/
5463 evas_object_hide(ad->setting_ctxpopup);
5465 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5466 setting_gl_x = mu->canvas.x;
5467 setting_gl_y = mu->canvas.y;
5468 setting_gl_x = mu->output.x;
5469 setting_gl_y = mu->output.y;
5470 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5471 DEBUG_TRACE("mu->output.x = %d, mu->output.y = %d", mu->output.x, mu->output.y);
5473 __setting_popup_timeout_checker_start(ad);
5474 cam_app_timeout_checker_update();
5477 /*mouse move func for setting popup*/
5478 static void __setting_gl_mouse_move(void *data, Evas * evas, Evas_Object *obj,
5481 struct appdata *ad = (struct appdata *)data;
5483 if (!event_info) return;
5484 if (ad->setting_ctxpopup) {
5485 /*setting_ctxpopup_destroy(ad);*/
5486 evas_object_hide(ad->setting_ctxpopup);
5488 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
5489 setting_gl_x = mu->cur.canvas.x;
5490 setting_gl_y = mu->cur.canvas.y;
5491 setting_gl_x = mu->cur.output.x;
5492 setting_gl_y = mu->cur.output.y;
5493 DEBUG_TRACE("x = %d, y = %d", setting_gl_x, setting_gl_y);
5494 DEBUG_TRACE("mu->cur->canvas.x = %d, mu->cur->canvas.y = %d", mu->cur.canvas.x, mu->cur.canvas.y);
5496 __setting_popup_timeout_checker_start(ad);
5497 cam_app_timeout_checker_update();
5500 static void __setting_shortcuts_mouse_down(void *data, Evas * evas, Evas_Object *obj,
5503 struct appdata *ad = (struct appdata *)data;
5505 cam_app_timeout_checker_update();
5506 __setting_popup_timeout_checker_start(ad);
5507 if (!event_info) return;
5508 Evas_Coord x, y, w, h;
5510 Evas_Event_Mouse_Down *mu = (Evas_Event_Mouse_Down *)event_info;
5511 shortcuts_canvas_prev_x = mu->canvas.x;
5512 shortcuts_canvas_prev_y = mu->canvas.y;
5513 DEBUG_TRACE("x = %d, y = %d", shortcuts_canvas_prev_x, shortcuts_canvas_prev_y);
5515 cam_long_press_trigger(LONG_PRESS_ID_EDIT, mu->canvas.x, mu->canvas.y);
5517 evas_object_geometry_get(obj, &x, &y, &w, &h);
5518 Eina_List *l = NULL;
5519 ShortCutData *shortcuts_ele = NULL;
5521 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5522 if (shortcuts_ele == NULL)
5524 evas_object_geometry_get(shortcuts_ele->icon, &x, &y, &w, &h);
5525 shortcuts_ele->x = x;
5526 shortcuts_ele->y = y;
5527 shortcuts_ele->w = w;
5528 shortcuts_ele->h = h;
5529 DEBUG_TRACE("x,%d y,%d w,%d h,%d index %d",x, y, w, h, shortcuts_ele->part_index);
5531 if (obj == shortcuts_ele->icon) {
5532 ad->shortcut_data = shortcuts_ele;
5535 if (!ad->shortcut_data) { /*not find shortcut data, so it will come from menubar*/
5536 int menubar_no = -1;
5537 if (check_if_shortcuts_from_menubar(ad, obj, &menubar_no)) {
5538 /*get shortcuts data:*/
5539 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
5540 if (shortcuts_ele == NULL)
5542 if (shortcuts_ele->menu_bar_no == menubar_no) {
5543 ad->shortcut_data = shortcuts_ele;
5547 DEBUG_TRACE("error occur!");
5550 DEBUG_TRACE("find in the shortcuts panel");
5553 evas_object_raise(obj);
5554 evas_object_lower(evas_object_above_get(obj));
5558 static void __setting_shortcuts_mouse_up(void *data, Evas * evas, Evas_Object *obj,void *event_info)
5561 struct appdata *ad = (struct appdata *)data;
5563 if (!event_info) return;
5564 pthread_mutex_lock(&edit_shortcuts_move_mutex);
5565 ShortCutData *moving_ele = ad->shortcut_data;
5566 ShortCutData *swap_ele = ad->swap_data;
5568 /*NOTE: reset opacity*/
5569 if (ad->swap_data) {
5570 if (ad->swap_data->is_on_menu_bar) {
5573 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
5574 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
5575 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
5580 if (ad->swap_data->icon) {
5581 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
5582 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
5588 if (swap_ele && swap_ele->setting_type >= 0) {
5589 if ((swap_ele->is_on_menu_bar & moving_ele->is_on_menu_bar) == TRUE) {/*note: both in menubar*/
5590 __swap_menubar_shortcuts(ad, moving_ele, swap_ele);
5591 cam_toolbar_menu_config_update((void *)ad);
5592 } else if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
5593 DEBUG_TRACE("do nothing in mouse up");
5594 } else {/*note: one is in menubar, one is not*/
5595 if (swap_ele->is_on_menu_bar == TRUE) {/*note: swap_ele is on menubar*/
5596 evas_object_event_callback_del(obj,
5597 EVAS_CALLBACK_MOUSE_MOVE,
5598 __setting_shortcuts_mouse_move);
5599 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
5600 } else {/*note: swap_ele is not on menubar*/
5601 moving_ele->is_on_menu_bar = FALSE;
5602 int tmp_menub_bar_no = moving_ele->menu_bar_no;
5603 moving_ele->menu_bar_no = -1;
5604 DEL_EVAS_OBJECT(obj);
5605 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
5606 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5607 cam_toolbar_menu_config_update((void *)ad);
5608 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
5610 /*TODO: update part_index*/
5611 __edit_shortcuts_layout_shortcuts_insert(ad, swap_ele, moving_ele);
5615 if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar)) {
5616 /*note: menu bar shortcuts move to the empty item in toolbar*/
5617 if (moving_ele->is_on_menu_bar) {
5618 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5620 moving_ele->is_on_menu_bar = TRUE;
5621 moving_ele->menu_bar_no = swap_ele->menu_bar_no;
5622 moving_ele->part_index = -1;
5623 ad->toolbar_menu_arrays[moving_ele->menu_bar_no].menu_type = moving_ele->setting_type;
5624 cam_toolbar_menu_config_update((void *)ad);
5625 update_menubar_shortcuts_mouse_event(ad, moving_ele->menu_bar_no, FALSE);
5626 evas_object_hide(moving_ele->icon);
5629 ad->swap_data = NULL;
5630 } else if (swap_ele && (swap_ele->setting_type == -1) && (swap_ele->is_on_menu_bar == FALSE)) {
5631 /*note: case: menubar shortcuts move to the empty item in edit short panel: flash|empty(move to here)|empty*/
5632 if (moving_ele->is_on_menu_bar) {
5633 __remove_menubar_shortcut(ad, moving_ele->menu_bar_no);
5635 moving_ele->is_on_menu_bar = FALSE;
5636 moving_ele->menu_bar_no = -1;
5637 moving_ele->part_index = swap_ele->part_index;
5638 moving_ele->list_index = swap_ele->list_index;
5639 cam_toolbar_menu_config_update((void *)ad);
5640 evas_object_show(moving_ele->icon);
5641 HIDE_EVAS_OBJECT(obj);
5644 ad->swap_data = NULL;
5645 __resort_edit_shortcuts_list_by_part_index();
5647 ad->swap_data = NULL;
5648 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5649 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
5653 bool shortcuts_rect_check_intersect(Evas_Coord a_left, Evas_Coord a_top, Evas_Coord a_right, Evas_Coord a_bottom,
5654 Evas_Coord b_left, Evas_Coord b_top, Evas_Coord b_right, Evas_Coord b_bottom)
5656 if( (MIN(a_right, b_right) - MAX(a_left, b_left) > 60)
5657 && (MIN(a_bottom, b_bottom) - MAX(a_top, b_top)> 30)) {
5665 /*note: parent_shortcuts is swap_ele, sub_shortcuts is cur_ele, if cur_ele is in swap_ele, not swap them*/
5666 gboolean __cam_toolbar_shortcuts_rect_contain_check(CAM_Edit_ShortCuts_Rect sub_shortcuts,
5667 CAM_Edit_ShortCuts_Rect parent_shortcuts,
5671 int swap_rel1_x, swap_rel1_y, swap_w, swap_h;
5672 int cur_rel1_x, cur_rel1_y, cur_w, cur_h;
5673 if (parent_shortcuts.w * parent_shortcuts.h < sub_shortcuts.w * sub_shortcuts.h) {
5674 swap_rel1_x = sub_shortcuts.x;
5675 swap_rel1_y = sub_shortcuts.y;
5676 swap_w = sub_shortcuts.w;
5677 swap_h = sub_shortcuts.h;
5679 cur_rel1_x = parent_shortcuts.x;
5680 cur_rel1_y = parent_shortcuts.y;
5681 cur_w = parent_shortcuts.w;
5682 cur_h = parent_shortcuts.h;
5685 cur_rel1_x = sub_shortcuts.x;
5686 cur_rel1_y = sub_shortcuts.y;
5687 cur_w = sub_shortcuts.w;
5688 cur_h = sub_shortcuts.h;
5690 swap_rel1_x = parent_shortcuts.x;
5691 swap_rel1_y = parent_shortcuts.y;
5692 swap_w = parent_shortcuts.w;
5693 swap_h = parent_shortcuts.h;
5696 return __shortcuts_rect_contain_check(swap_rel1_x, swap_rel1_y, swap_w, swap_h,
5697 cur_rel1_x, cur_rel1_y, cur_w, cur_h,
5698 correction_w, correction_h);
5701 static gboolean __shortcuts_rect_contain_check(int swap_rel1_x,
5712 int a_rel1_x = swap_rel1_x - correction_w;
5713 int a_rel1_y = swap_rel1_y - correction_h;
5716 a_rel2_x = swap_rel1_x + cur_w + correction_w;
5718 a_rel2_x = swap_rel1_x + swap_w + correction_w;
5721 a_rel2_y = swap_rel1_y + cur_h + correction_h;
5723 a_rel2_y = swap_rel1_y + swap_h + correction_h;
5725 int b_rel1_x = cur_rel1_x;
5726 int b_rel1_y = cur_rel1_y;
5727 int b_rel2_x = cur_rel1_x + cur_w;
5728 int b_rel2_y = cur_rel1_y + cur_h;
5730 if ((a_rel1_x < b_rel1_x)
5731 &&(a_rel1_y < b_rel1_y)
5732 &&(a_rel2_x > b_rel2_x)
5733 &&(a_rel2_y > b_rel2_y)
5745 @item_2:behind item_1
5747 void shortcuts_swap(Eina_List **head, Eina_List * item_1, Eina_List * item_2)
5750 Eina_List *tmp_item_1_next = item_1->next;
5751 Eina_List *tmp_item_2_prev = item_2->prev;
5752 if(item_1->prev!=NULL)
5753 item_1->prev->next = item_2;
5757 item_2->prev = item_1->prev;
5759 item_1->next = item_2->next;
5761 if(item_2->next!=NULL)
5762 item_2->next->prev = item_1;
5764 if (tmp_item_1_next == item_2) { /*item_1->item_2*/
5765 item_2->next = item_1;
5766 item_1->prev = item_2;
5767 } else {/*item_1->....->item_2*/
5768 tmp_item_1_next->prev = item_2;
5769 item_2->next = tmp_item_1_next;
5770 tmp_item_2_prev->next = item_1;
5771 item_1->prev = tmp_item_2_prev;
5775 static void __swap_menubar_shortcuts_ctx(struct appdata *ad, ShortCutData *menu_ele, ShortCutData *cur_ele)
5777 if (!cur_ele || !ad || !menu_ele)
5779 cur_ele->is_on_menu_bar = TRUE;
5780 cur_ele->menu_bar_no = menu_ele->menu_bar_no;
5781 DEBUG_TRACE("cur_ele->menu_bar_no = %d", cur_ele->menu_bar_no);
5782 if (cur_ele->menu_bar_no > CAM_MENU_BAR_LEFT_4 || cur_ele->menu_bar_no < CAM_MENU_BAR_LEFT_0) {
5783 cam_critical(LOG_UI, "menubar no error, check it ASAP");
5788 ad->toolbar_menu_arrays[cur_ele->menu_bar_no].menu_type = cur_ele->setting_type;
5789 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5791 menu_ele->is_on_menu_bar = FALSE;
5792 menu_ele->menu_bar_no = -1;
5793 char buf[16] = { 0 };
5794 snprintf(buf, sizeof(buf),"row.%d", menu_ele->part_index);
5795 DEBUG_TRACE("PART:%s", buf);
5796 evas_object_show(menu_ele->icon);
5797 evas_object_hide(cur_ele->icon);
5798 snprintf(buf, sizeof(buf),"row.%d", cur_ele->part_index);
5799 DEBUG_TRACE("PART:%s", buf);
5800 cam_toolbar_menu_config_update((void *)ad);
5804 static void __get_shortcuts_rect(Evas_Object *shortcuts_icon, CAM_Edit_ShortCuts_Rect *rect)
5807 Evas_Coord x=0, y=0, w=0, h=0;
5809 evas_object_geometry_get(shortcuts_icon, &x, &y, &w, &h);
5816 static void __remove_menubar_shortcut(struct appdata *ad, int menubar_no)
5819 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0)
5822 ad->toolbar_menu_arrays[menubar_no].menu_type = -1;
5823 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5824 edje_object_part_unswallow(_EDJ(ad->toolbar_edje), icon);
5825 DEL_EVAS_OBJECT(icon);
5826 icon = elm_image_add(ad->toolbar_edje);
5827 elm_image_file_set(icon, NULL, NULL);
5828 char buf[32+1] = {'\0',};
5829 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5830 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5831 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5835 * note: check moving shortcuts with possible empty shortcuts in menubar,
5836 * if find, and moving shortcuts is in the empty shortcuts area, push this moving
5837 * shortcuts in this empty shortcuts. and return true, else return false
5839 gboolean check_with_menubar_empty_shortcuts(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5841 if (!ad || !moving_ele ||!moving_obj)
5843 CAM_Edit_ShortCuts_Rect sub_rect;
5844 ShortCutData *cur_ele = moving_ele;
5845 __get_shortcuts_rect(moving_obj, &sub_rect);
5848 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5849 int type = ad->toolbar_menu_arrays[i].menu_type;
5850 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5852 CAM_Edit_ShortCuts_Rect parent_rect;
5853 __get_shortcuts_rect(icon, &parent_rect);
5854 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
5855 gboolean sub_in_parent = FALSE;
5856 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
5858 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
5859 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
5860 if (sub_in_parent) {
5861 if (cur_ele->is_on_menu_bar) {
5862 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
5864 cur_ele->is_on_menu_bar = TRUE;
5865 cur_ele->menu_bar_no = i;
5866 cur_ele->part_index = -1;
5867 ad->toolbar_menu_arrays[i].menu_type = cur_ele->setting_type;
5868 cam_toolbar_menu_config_update((void *)ad);
5870 update_menubar_shortcuts_mouse_event(ad, i, FALSE);
5872 evas_object_hide(cur_ele->icon);
5873 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
5882 gboolean check_if_shortcuts_from_menubar(struct appdata *ad, Evas_Object *obj, int *menubar_no)
5884 if (!obj || !ad || !menubar_no)
5887 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
5888 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
5898 static void __shortcuts_data_swap(ShortCutData *cur_ele, ShortCutData *swap_ele)
5901 Evas_Object_Event_Cb func;
5902 CAM_MENU_ITEM setting_type;
5903 char *icon_filepath;
5906 gboolean is_on_menu_bar;
5907 Evas_Coord x, y, w, h;
5913 icon = cur_ele->icon;
5914 func = cur_ele->func;
5915 setting_type = cur_ele->setting_type;
5916 icon_filepath = cur_ele->icon_filepath;
5917 name = cur_ele->name;
5918 menu_bar_no = cur_ele->menu_bar_no;
5919 is_on_menu_bar = cur_ele->is_on_menu_bar;
5924 part_index = cur_ele->part_index;
5925 list_index = cur_ele->list_index;
5929 cur_ele->icon = swap_ele->icon;
5930 cur_ele->func = swap_ele->func;
5931 cur_ele->setting_type = swap_ele->setting_type;
5932 cur_ele->icon_filepath = swap_ele->icon_filepath;
5933 cur_ele->name = swap_ele->name;
5934 /*cur_ele->menu_bar_no = swap_ele->menu_bar_no;*/
5935 cur_ele->is_on_menu_bar = swap_ele->is_on_menu_bar;
5936 cur_ele->x = swap_ele->x;
5937 cur_ele->y = swap_ele->y;
5938 cur_ele->w = swap_ele->w;
5939 cur_ele->h = swap_ele->h;
5940 cur_ele->part_index = swap_ele->part_index;
5941 /*cur_ele->list_index = swap_ele->list_index;*/
5942 cur_ele->row = swap_ele->row;
5943 cur_ele->col = swap_ele->col;
5945 swap_ele->icon = icon;
5946 swap_ele->func = func;
5947 swap_ele->setting_type = setting_type;
5948 swap_ele->icon_filepath = icon_filepath;
5949 swap_ele->name = name;
5950 /*swap_ele->menu_bar_no = menu_bar_no;*/
5951 swap_ele->is_on_menu_bar = is_on_menu_bar;
5956 swap_ele->part_index = part_index;
5957 /*swap_ele->list_index = swap_ele->list_index;*/
5958 swap_ele->row = row;
5959 swap_ele->col = col;
5963 static void __update_menubar_shortcuts_by_menubar_no(struct appdata *ad,
5968 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return;
5970 ad->toolbar_menu_arrays[menubar_no].menu_type = setting_type;
5971 Evas_Object *icon = ad->toolbar_menu_arrays[menubar_no].icon;
5972 DEL_EVAS_OBJECT(icon);
5973 icon = elm_image_add(ad->toolbar_edje);
5974 char buf[32 + 1] = { '\0', };
5975 snprintf(buf, 32, "toolbar_%d_icon", menubar_no);
5976 edje_object_part_swallow(_EDJ(ad->toolbar_edje), buf, icon);
5977 ad->toolbar_menu_arrays[menubar_no].icon = icon;
5978 __update_menubar_icon_by_index(ad, setting_type);
5981 static void __swap_menubar_shortcuts(struct appdata *ad, ShortCutData *cur_ele, ShortCutData *swap_ele)
5983 __shortcuts_data_swap(cur_ele, swap_ele);
5984 __update_menubar_shortcuts_by_menubar_no(ad, cur_ele->setting_type, cur_ele->menu_bar_no);
5985 __update_menubar_shortcuts_by_menubar_no(ad, swap_ele->setting_type, swap_ele->menu_bar_no);
5986 update_menubar_shortcuts_mouse_event(ad, cur_ele->menu_bar_no, FALSE);
5987 update_menubar_shortcuts_mouse_event(ad, swap_ele->menu_bar_no, FALSE);
5990 /*NOTE: moving shortcuts, is from menubar*/
5991 static gboolean __check_menubar_moving_shortcuts_swap(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
5993 cam_retv_if(ad == NULL, FALSE);
5994 cam_retv_if(moving_ele == NULL, FALSE);
5995 cam_retv_if(moving_obj == NULL, FALSE);
5997 ShortCutData *shortcuts_ele;
5998 ShortCutData *cur_ele = moving_ele;
5999 CAM_Edit_ShortCuts_Rect sub_rect;
6000 __get_shortcuts_rect(moving_obj, &sub_rect);
6002 ShortCutData *swap_ele = NULL;
6003 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6004 if (shortcuts_ele == NULL)
6006 if (shortcuts_ele->icon == cur_ele->icon) {
6007 DEBUG_TRACE("find self");
6010 Evas_Object *parent_icon = NULL;
6011 if (shortcuts_ele->is_on_menu_bar) {
6012 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6015 parent_icon = shortcuts_ele->icon;
6018 CAM_Edit_ShortCuts_Rect parent_rect;
6019 __get_shortcuts_rect(parent_icon, &parent_rect);
6021 gboolean sub_in_parent = FALSE;
6022 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6024 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6025 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6026 if (sub_in_parent) {
6027 DEBUG_TRACE("find swap ele");
6028 swap_ele = shortcuts_ele;
6033 DEBUG_TRACE("not find, continue");
6035 /*evas_object_move(moving_obj, x , y);*/
6038 if (swap_ele->is_on_menu_bar) {/*TODO: support menubar shortcuts swap*/
6039 __swap_menubar_shortcuts(ad, cur_ele, swap_ele);
6040 cam_toolbar_menu_config_update((void *)ad);
6041 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6044 cur_ele->is_on_menu_bar = FALSE;
6045 int tmp_menub_bar_no = cur_ele->menu_bar_no;
6046 cur_ele->menu_bar_no = -1;
6047 DEL_EVAS_OBJECT(moving_obj);
6049 __update_menubar_shortcuts_by_menubar_no(ad, -1, tmp_menub_bar_no);
6050 update_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6052 cam_toolbar_menu_config_update((void *)ad);
6054 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6055 destroy_menubar_shortcuts_mouse_event(ad, tmp_menub_bar_no, FALSE);
6062 static void __edit_shortcuts_layout_shortcuts_move_prev(struct appdata *ad,
6063 ShortCutData *swap_ele,
6064 ShortCutData *cur_ele)
6066 cam_ret_if(ad == NULL);
6067 cam_ret_if(swap_ele == NULL);
6068 cam_ret_if(cur_ele == NULL);
6070 ShortCutData *shortcuts_ele;
6071 Eina_List *cur_item = NULL;
6072 Eina_List *swap_item = NULL;
6073 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6074 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6078 * note: cur_item ->...->swap_item, should insert cur_item after swap_item, and
6079 * move between cur_item ...swap_item items.
6085 int temp_swap_ele_list_index = swap_ele->list_index;
6086 int temp_swap_ele_part_index = swap_ele->part_index;
6087 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6088 if (shortcuts_ele == NULL)
6090 if (shortcuts_ele == cur_ele) {
6091 cur_ele->list_index = temp_swap_ele_list_index;
6092 cur_ele->part_index = temp_swap_ele_part_index;
6096 if (!shortcuts_ele->is_on_menu_bar) {
6097 /* TODO: for animator effect*/
6098 char buf[32+1] = { '\0',};
6099 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6100 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_PREV, buf);
6101 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6102 shortcuts_ele->part_index -= 1;
6104 shortcuts_ele->list_index -= 1;
6105 if (shortcuts_ele == swap_ele) {
6109 Eina_List *left = NULL;
6110 Eina_List *right = NULL;
6111 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6113 left = eina_list_split_list(shortcuts_ele_list, swap_item, &right);
6114 left = eina_list_append(left, cur_ele);
6115 shortcuts_ele_list = eina_list_merge(left, right);
6120 /*note: insert insert_ele before cur_ele*/
6121 static void __edit_shortcuts_layout_shortcuts_insert(struct appdata *ad,
6122 ShortCutData *cur_ele,
6123 ShortCutData *insert_ele)
6125 cam_ret_if(ad == NULL);
6126 cam_ret_if(cur_ele == NULL);
6127 cam_ret_if(insert_ele == NULL);
6128 Eina_List *l = NULL;
6129 ShortCutData *shortcuts_ele = NULL;
6130 Eina_List *cur_item = NULL;
6132 insert_ele->part_index = cur_ele->part_index;
6133 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6134 EINA_LIST_FOREACH(cur_item, l, shortcuts_ele) {
6135 if (shortcuts_ele == NULL)
6137 if (!shortcuts_ele->is_on_menu_bar) {
6138 char buf[32+1] = { '\0',};
6139 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6140 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6141 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6142 shortcuts_ele->part_index += 1;
6145 __resort_edit_shortcuts_list_by_part_index();
6150 static void __edit_shortcuts_layout_shortcuts_move_next(struct appdata *ad,
6151 ShortCutData *swap_ele,
6152 ShortCutData *cur_ele)
6154 cam_ret_if(ad == NULL);
6155 cam_ret_if(swap_ele == NULL);
6156 cam_ret_if(cur_ele == NULL);
6158 ShortCutData *shortcuts_ele;
6159 Eina_List *swap_item = NULL;
6161 swap_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6165 * note: swap_item ->...->cur_item, should insert cur_item before swap_item, and
6166 * move between swap_item ...cur_item items.
6170 int temp_swap_ele_list_index = swap_ele->list_index;
6171 int temp_swap_ele_part_index = swap_ele->part_index;
6172 EINA_LIST_FOREACH(swap_item, l, shortcuts_ele) {
6173 if (shortcuts_ele == NULL)
6175 if (shortcuts_ele == cur_ele) {
6176 cur_ele->list_index = temp_swap_ele_list_index;
6177 cur_ele->part_index = temp_swap_ele_part_index;
6180 if (!shortcuts_ele->is_on_menu_bar) {
6181 /* TODO: for animator effect*/
6182 char buf[32+1] = { '\0',};
6183 snprintf(buf, 32, "row.%d", shortcuts_ele->part_index);
6184 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_MOVE_NEXT, buf);
6185 edje_object_signal_emit(_EDJ(shortcuts_ele->icon), STR_ANI_RETURN, buf);
6186 shortcuts_ele->part_index += 1;
6188 shortcuts_ele->list_index += 1;
6190 Eina_List *left = NULL;
6191 Eina_List *right = NULL;
6192 shortcuts_ele_list = eina_list_remove(shortcuts_ele_list, cur_ele);
6193 if (swap_item->prev) {
6194 left = eina_list_split_list(shortcuts_ele_list, swap_item->prev, &right);
6195 left = eina_list_append(left, cur_ele);
6196 shortcuts_ele_list = eina_list_merge(left, right);
6198 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, cur_ele);
6202 static void __resort_edit_shortcuts(struct appdata *ad, Evas_Object *moving_obj)
6204 cam_ret_if(ad == NULL);
6205 cam_ret_if(moving_obj == NULL);
6206 __resort_edit_shortcuts_list_by_part_index();
6208 ShortCutData *shortcuts_ele;
6209 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6210 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6211 if (shortcuts_ele == NULL)
6213 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6217 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6219 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6220 if (shortcuts_ele == NULL)
6222 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6223 if (shortcuts_ele->part_index >=0
6224 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
6226 shortcuts_part_to_menu[shortcuts_ele->part_index] = shortcuts_ele->setting_type;
6228 if (moving_obj == shortcuts_ele->icon) {
6229 ad->shortcut_data = shortcuts_ele;
6230 DEBUG_TRACE("PART:%s", buf);
6233 DEBUG_TRACE("PART:%s", buf);
6234 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6238 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6239 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6240 edit_shortcuts_prop_array[index].prop_name,
6241 shortcuts_part_to_menu[index]);
6246 static void __shortcuts_in_layout_swap_with_shortcut(struct appdata *ad,
6247 ShortCutData *swap_ele,
6248 ShortCutData *cur_ele)
6250 cam_ret_if(ad == NULL);
6251 cam_ret_if(swap_ele == NULL);
6252 cam_ret_if(cur_ele == NULL);
6253 Eina_List *cur_item = NULL;
6254 Eina_List *prev_item = NULL;
6255 Eina_List *next_item = NULL;
6256 Evas_Coord prev_x=0, prev_y=0, prev_w=0, prev_h=0;
6257 Evas_Coord next_x=0, next_y=0, next_w=0, next_h=0;
6259 cur_item = eina_list_data_find_list (shortcuts_ele_list, cur_ele);
6262 if (swap_ele->list_index > cur_ele->list_index) {
6263 next_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6264 if (NULL != next_item) {
6265 evas_object_geometry_get(swap_ele->icon, &next_x, &next_y, &next_w, &next_h);
6266 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6267 cur_ele->x = next_x;
6268 cur_ele->y = next_y;
6269 cur_ele->w = next_w;
6270 cur_ele->h = next_h;
6271 int idx = swap_ele->part_index;
6272 swap_ele->part_index = cur_ele->part_index;
6273 cur_ele->part_index = idx;
6275 idx = swap_ele->list_index;
6276 swap_ele->list_index = cur_ele->list_index;
6277 cur_ele->list_index = idx;
6278 if (swap_ele->is_on_menu_bar)
6279 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6280 shortcuts_swap(&shortcuts_ele_list, cur_item, next_item);
6283 prev_item = eina_list_data_find_list (shortcuts_ele_list, swap_ele);
6284 if(NULL != prev_item) {
6285 evas_object_geometry_get(swap_ele->icon, &prev_x, &prev_y, &prev_w, &prev_h);
6286 evas_object_move(swap_ele->icon, cur_ele->x, cur_ele->y);
6287 cur_ele->x = prev_x;
6288 cur_ele->y = prev_y;
6289 cur_ele->w = prev_w;
6290 cur_ele->h = prev_h;
6291 int idx = swap_ele->part_index;
6292 swap_ele->part_index = cur_ele->part_index;
6293 cur_ele->part_index = idx;
6295 idx = swap_ele->list_index;
6296 swap_ele->list_index = cur_ele->list_index;
6297 cur_ele->list_index = idx;
6298 if (swap_ele->is_on_menu_bar)
6299 __swap_menubar_shortcuts_ctx(ad, swap_ele, cur_ele);
6300 shortcuts_swap(&shortcuts_ele_list, prev_item, cur_item);
6305 static Evas_Object *__get_toolbar_shortcuts_evas_object(struct appdata *ad, int menubar_no)
6307 if (!ad) return NULL;
6308 if (menubar_no > CAM_MENU_BAR_LEFT_4 || menubar_no < CAM_MENU_BAR_LEFT_0) return NULL;
6309 return ad->toolbar_menu_arrays[menubar_no].icon;
6312 /*note: check with menu_no menubar shortcut*/
6313 static gboolean __check_with_menubar_shortcuts(struct appdata *ad, int menu_no, ShortCutData *moving_ele, Evas_Object *moving_obj)
6315 if (!ad || !moving_ele ||!moving_obj)
6317 CAM_Edit_ShortCuts_Rect sub_rect;
6318 ShortCutData *cur_ele = moving_ele;
6319 __get_shortcuts_rect(moving_obj, &sub_rect);
6321 Evas_Object *toolbar_icon = __get_toolbar_shortcuts_evas_object(ad, menu_no);
6323 /*check space menu*/
6324 CAM_Edit_ShortCuts_Rect parent_rect;
6325 __get_shortcuts_rect(toolbar_icon, &parent_rect);
6326 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6327 gboolean sub_in_parent = FALSE;
6328 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6330 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6331 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6332 if (sub_in_parent) {
6333 if (cur_ele->is_on_menu_bar) {
6334 __remove_menubar_shortcut(ad, cur_ele->menu_bar_no);
6336 cur_ele->is_on_menu_bar = TRUE;
6337 cur_ele->menu_bar_no = menu_no;
6338 cur_ele->part_index = -1;
6339 ad->toolbar_menu_arrays[menu_no].menu_type = cur_ele->setting_type;
6340 cam_toolbar_menu_config_update((void *)ad);
6341 update_menubar_shortcuts_mouse_event(ad, menu_no, FALSE);
6342 evas_object_hide(cur_ele->icon);
6343 cam_long_press_cancel(LONG_PRESS_ID_EDIT);
6351 /*note: get menubar_no now is covering*/
6352 static int __get_edit_shortcuts_swap_menubar_no(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj)
6354 if (!ad || !moving_ele ||!moving_obj)
6356 CAM_Edit_ShortCuts_Rect sub_rect;
6358 __get_shortcuts_rect(moving_obj, &sub_rect);
6361 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6362 int type = ad->toolbar_menu_arrays[i].menu_type;
6363 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6365 CAM_Edit_ShortCuts_Rect parent_rect;
6366 __get_shortcuts_rect(icon, &parent_rect);
6367 DEBUG_TRACE("==%d==", i);
6368 DEBUG_TRACE("x y w h%d %d %d %d", parent_rect.x, parent_rect.y, parent_rect.w, parent_rect.h);
6369 DEBUG_TRACE("x y w h%d %d %d %d", sub_rect.x, sub_rect.y, sub_rect.w, sub_rect.h);
6370 gboolean sub_in_parent = FALSE;
6371 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6373 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6374 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6375 if (sub_in_parent) {
6376 DEBUG_TRACE("%d", i);
6382 return CAM_MENU_BAR_LEFT_INVALID;
6387 static gboolean __get_edit_shortcuts_swap_element(struct appdata *ad, ShortCutData *moving_ele, Evas_Object *moving_obj, ShortCutData **swap_ele)
6389 if (swap_ele == NULL) return FALSE;
6391 ShortCutData *cur_ele = moving_ele;
6392 CAM_Edit_ShortCuts_Rect sub_rect;
6393 __get_shortcuts_rect(moving_obj, &sub_rect);
6395 Eina_List *l = NULL;
6396 ShortCutData *shortcuts_ele = NULL;
6397 int edit_shortcuts_item_count = -1;
6398 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6399 if (shortcuts_ele == NULL)
6401 if (shortcuts_ele->icon == cur_ele->icon) {
6404 Evas_Object *parent_icon = NULL;
6405 if (shortcuts_ele->is_on_menu_bar) {
6406 parent_icon = __get_toolbar_shortcuts_evas_object(ad, shortcuts_ele->menu_bar_no);
6409 parent_icon = shortcuts_ele->icon;
6410 edit_shortcuts_item_count++;
6413 CAM_Edit_ShortCuts_Rect parent_rect;
6414 __get_shortcuts_rect(parent_icon, &parent_rect);
6416 gboolean sub_in_parent = FALSE;
6417 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6419 EDIT_SHOTCUTS_CONTIAIN_CORRECT_W,
6420 EDIT_SHOTCUTS_CONTIAIN_CORRECT_H);
6421 if (sub_in_parent) {
6422 DEBUG_TRACE("find swap ele");
6423 *swap_ele = shortcuts_ele;
6428 /*NOTE: case: moving shortcut is from menubar, and it is moving into the edit shortcuts the first empty panel*/
6429 char buf[16] = { 0 };
6430 snprintf(buf, sizeof(buf),"row.%d", (edit_shortcuts_item_count+1));
6431 Evas_Object *part_object = (Evas_Object *)
6432 edje_object_part_object_get(_EDJ
6433 (ad->edit_shortcuts_popup_ctx), buf);
6434 if (cur_ele->is_on_menu_bar) {
6435 CAM_Edit_ShortCuts_Rect parent_rect;
6436 __get_shortcuts_rect(part_object, &parent_rect);
6438 gboolean sub_in_parent = FALSE;
6439 sub_in_parent = __cam_toolbar_shortcuts_rect_contain_check(sub_rect,
6443 if (sub_in_parent) {
6444 ShortCutData *virtual_ele = NULL;
6445 if (ad->swap_data) {
6446 if (ad->swap_data->is_virtual) {
6447 free(ad->swap_data);
6448 ad->swap_data = NULL;
6451 virtual_ele = calloc(1, sizeof(ShortCutData));
6453 virtual_ele->is_virtual = TRUE;
6454 virtual_ele->setting_type = -1;
6455 virtual_ele->is_on_menu_bar = FALSE;
6456 virtual_ele->part_index= edit_shortcuts_item_count+1;
6458 *swap_ele = virtual_ele;
6466 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
6467 static void __resort_edit_shortcuts_list_by_part_index(void)
6469 if (shortcuts_ele_list == NULL) return;
6470 shortcuts_ele_list = eina_list_sort(shortcuts_ele_list,
6471 eina_list_count(shortcuts_ele_list),
6472 __edit_shortcuts_list_sort_cb);
6473 Eina_List *l = NULL;
6474 ShortCutData *shortcuts_ele = NULL;
6476 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6477 if (shortcuts_ele == NULL)
6479 shortcuts_ele->list_index = list_index;
6480 DEBUG_TRACE("part_index %d, list_index %d", shortcuts_ele->part_index, shortcuts_ele->list_index);
6486 /*NOTE: swap integer, we do not judge a, b wether null*/
6487 static void __swap_int_type_value(int *a, int *b)
6495 static void __setting_shortcuts_mouse_move(void *data, Evas * evas, Evas_Object *obj, void *event_info)
6497 struct appdata *ad = (struct appdata *)data;
6499 if (!event_info) return;
6500 cam_app_timeout_checker_update();/*note: update check_timer*/
6501 __setting_popup_timeout_checker_start(ad);
6503 /*note: check wether is long press*/
6504 Evas_Event_Mouse_Move *mu = (Evas_Event_Mouse_Move *)event_info;
6505 cam_long_press_validate(LONG_PRESS_ID_EDIT, mu->cur.canvas.x, mu->cur.canvas.y);
6506 if (!cam_get_long_press_running_state(LONG_PRESS_ID_EDIT)) {
6510 /*note: update coordinate*/
6511 Evas_Coord cur_x=0, cur_y=0, cur_w=0, cur_h=0;
6512 Evas_Coord x=0, y=0;
6514 evas_object_geometry_get(obj, &cur_x, &cur_y, &cur_w, &cur_h);
6515 x = cur_x + (mu->cur.canvas.x - shortcuts_canvas_prev_x);
6516 y = cur_y + (mu->cur.canvas.y - shortcuts_canvas_prev_y);
6517 dx = mu->cur.canvas.x - shortcuts_canvas_prev_x;
6518 dy = mu->cur.canvas.y - shortcuts_canvas_prev_y;
6519 shortcuts_canvas_prev_x = mu->cur.canvas.x;
6520 shortcuts_canvas_prev_y = mu->cur.canvas.y;
6523 /*note: check swap elements*/
6524 pthread_mutex_lock(&edit_shortcuts_move_mutex);
6525 ShortCutData *moving_ele = ad->shortcut_data;
6526 ShortCutData *swap_ele = NULL;
6527 gboolean swap_condition = __get_edit_shortcuts_swap_element(ad, moving_ele, obj, &swap_ele);
6528 DEBUG_TRACE("%d", swap_condition);
6530 if (swap_condition) {
6531 if (ad->swap_data) {
6532 if (ad->swap_data->is_on_menu_bar) {
6533 if (ad->swap_data->menu_bar_no != swap_ele->menu_bar_no) {
6536 if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
6537 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
6538 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
6543 ad->swap_data = swap_ele;
6544 if ((swap_ele->is_on_menu_bar | moving_ele->is_on_menu_bar) == FALSE) {/*note: both is not in menubar*/
6545 if (ABS(moving_ele->part_index - swap_ele->part_index) == 1) {
6546 __shortcuts_in_layout_swap_with_shortcut(ad, swap_ele, moving_ele);
6547 } else if (moving_ele->list_index > swap_ele->list_index) {
6548 __edit_shortcuts_layout_shortcuts_move_next(ad, swap_ele, moving_ele);
6550 __edit_shortcuts_layout_shortcuts_move_prev(ad, swap_ele, moving_ele);
6552 __resort_edit_shortcuts(ad, obj);
6553 evas_object_move(obj, x , y);
6556 if (swap_ele->is_on_menu_bar) {
6559 if (ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon) {
6560 evas_object_color_get(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, &r, &g, &b, &a);
6561 evas_object_color_set(ad->toolbar_menu_arrays[swap_ele->menu_bar_no].icon, r, g, b, 30);
6565 if (swap_ele->setting_type == -1) {/*note: swap_ele is empty part in edit shortcuts panel*/
6566 DEBUG_TRACE("swap_ele is empty part in edit shortcuts panel");
6572 if (swap_ele->icon) {
6573 evas_object_color_get(swap_ele->icon, &r, &g, &b, &a);
6574 evas_object_color_set(swap_ele->icon, r, g, b, 30);
6578 evas_object_move(obj, x , y);
6581 if (ad->swap_data) {
6582 if (ad->swap_data->is_on_menu_bar) {
6585 if (ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon) {
6586 evas_object_color_get(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, &r, &g, &b, &a);
6587 evas_object_color_set(ad->toolbar_menu_arrays[ad->swap_data->menu_bar_no].icon, 255, 255, 255, 255);
6592 if (ad->swap_data->icon) {
6593 evas_object_color_get(ad->swap_data->icon, &r, &g, &b, &a);
6594 evas_object_color_set(ad->swap_data->icon, 255, 255, 255, 255);
6598 ad->swap_data = NULL;
6601 int menu_no = __get_edit_shortcuts_swap_menubar_no(ad, moving_ele, obj);
6602 /*TODO: for mouse up swap, we could to record a virtual shortcut element*/
6603 if (menu_no != CAM_MENU_BAR_LEFT_INVALID) {
6604 ShortCutData *virtual_ele = NULL;
6605 virtual_ele = calloc(1, sizeof(ShortCutData));
6607 virtual_ele->is_virtual = TRUE;
6608 virtual_ele->setting_type = -1;
6609 virtual_ele->menu_bar_no = menu_no;
6610 virtual_ele->is_on_menu_bar = TRUE;
6612 ad->swap_data = virtual_ele;
6614 /*TODO: set swap_ele style*/
6617 evas_object_move(obj, x , y);
6619 pthread_mutex_unlock(&edit_shortcuts_move_mutex);
6623 void cam_setting_gl_style_set(void)
6625 itc.item_style = "camera/1text.1icon";
6626 itc.func.text_get = _setting_gl_text_get;
6627 itc.func.content_get = _setting_gl_icon_get;
6628 itc.func.state_get = NULL;
6629 itc.func.del = NULL;
6632 static void __cam_toolbar_display_shortcuts_editmode(void *data)
6634 struct appdata *ad = (struct appdata *)data;
6635 cam_ret_if(ad == NULL);
6637 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6638 "toolbar_1_icon,edit", "prog");
6639 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6640 "toolbar_2_icon,edit", "prog");
6641 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6642 "toolbar_3_icon,edit", "prog");
6643 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6644 "toolbar_4_icon,edit", "prog");
6647 static void __cam_toolbar_exit_shortcuts_editmode(void *data)
6649 struct appdata *ad = (struct appdata *)data;
6650 cam_ret_if(ad == NULL);
6652 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6653 "toolbar_1_icon,normal", "prog");
6654 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6655 "toolbar_2_icon,normal", "prog");
6656 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6657 "toolbar_3_icon,normal", "prog");
6658 edje_object_signal_emit(_EDJ(ad->toolbar_edje),
6659 "toolbar_4_icon,normal", "prog");
6663 static int __cam_long_press_editmode_cb(void *data, int x, int y)
6665 struct appdata *ad = (struct appdata *)data;
6666 cam_retv_if(ad == NULL, -1);
6667 CamAppData *camapp = ad->camapp_handle;
6668 cam_retv_if(camapp == NULL, -1);
6672 err = pthread_mutex_init(&edit_shortcuts_move_mutex, NULL);
6674 cam_critical(LOG_CAM, "Create px inst mutex failed");
6678 if (ad->shortcut_data) {
6679 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), ad->shortcut_data->icon);
6680 evas_object_event_callback_add(ad->shortcut_data->icon,
6681 EVAS_CALLBACK_MOUSE_MOVE,
6682 __setting_shortcuts_mouse_move,
6685 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, TRUE);
6690 static int __cam_long_press_exit_editmode_cb(void *data, int x, int y)
6692 struct appdata *ad = (struct appdata *)data;
6693 cam_retv_if(ad == NULL, -1);
6694 CamAppData *camapp = ad->camapp_handle;
6695 cam_retv_if(camapp == NULL, -1);
6698 /*re-sort sortcuts element list*/
6699 int shortcuts_part_to_menu[CAM_EDIT_SHORTCUTS_INDEX_MAX] = { -1,};
6701 ShortCutData *shortcuts_ele = NULL;
6702 Eina_List *l = NULL;
6704 int temp_list_index = 0;
6705 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6706 if (shortcuts_ele == NULL)
6708 shortcuts_ele->list_index = temp_list_index;
6710 if (shortcuts_ele->is_on_menu_bar) {
6711 shortcuts_ele->part_index = -1;
6714 shortcuts_ele->part_index = temp_index;
6715 shortcuts_part_to_menu[temp_index] = shortcuts_ele->setting_type;
6717 DEBUG_TRACE("shortcuts_ele->index %d" , shortcuts_ele->part_index);
6720 /*re-set menubar shortcuts*/
6722 for (i = CAM_MENU_SHORTCUTS; i < CAM_MENU_MAX_NUMS; i++) {
6723 __update_menubar_icon_by_index(ad, i);
6726 /*menu bar shortcut update*/
6727 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6728 __update_menubar_icon_by_index(ad, ad->toolbar_menu_arrays[i].menu_type);
6731 /* shortcut panel update*/
6732 char buf[SHORTCUTS_PART_ARRAY_MAX_LEN] = { '\0', };
6734 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6735 if (shortcuts_ele == NULL)
6737 edje_object_part_unswallow(_EDJ(ad->edit_shortcuts_popup_ctx), shortcuts_ele->icon);
6740 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6741 if (shortcuts_ele == NULL)
6743 if (shortcuts_ele->part_index < 0 ||
6744 shortcuts_ele->part_index >19) {
6747 snprintf(buf, sizeof(buf),"row.%d", shortcuts_ele->part_index);
6748 DEBUG_TRACE("PART:%s", buf);
6749 edje_object_part_swallow(_EDJ(ad->edit_shortcuts_popup_ctx), buf, shortcuts_ele->icon);
6753 for (index = CAM_EDIT_SHORTCUTS_INDEX_1; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
6754 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
6755 edit_shortcuts_prop_array[index].prop_name,
6756 shortcuts_part_to_menu[index]);
6759 __cam_toolbar_display_shortcuts_editmode(ad);
6760 __toolbar_dim_setting_shortcuts(ad);
6761 if (ad->shortcut_data) {
6762 if (ad->shortcut_data->icon) {
6763 evas_object_event_callback_del(ad->shortcut_data->icon,
6764 EVAS_CALLBACK_MOUSE_MOVE,
6765 __setting_shortcuts_mouse_move);
6769 ad->shortcut_data = NULL;
6770 ad->swap_data = NULL;
6771 evas_object_freeze_events_set(ad->edit_shortcuts_popup_scroll, FALSE);
6772 pthread_mutex_destroy(&edit_shortcuts_move_mutex);
6776 static void __get_menubar_shortcuts_info(struct appdata *ad, int index, int *menu_bar_no, Evas_Object **icon)
6780 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6785 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6786 if (index == ad->toolbar_menu_arrays[i].menu_type) {
6788 *icon = ad->toolbar_menu_arrays[i].icon;
6794 *menu_bar_no = CAM_MENU_BAR_LEFT_INVALID;
6799 void create_menubar_shortcuts_mouse_event(struct appdata *ad)
6804 /*note: CAM_MENU_BAR_LEFT_0: do not need register*/
6805 for (i = CAM_MENU_BAR_LEFT_1; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6806 int type = ad->toolbar_menu_arrays[i].menu_type;
6807 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6809 evas_object_event_callback_del(icon,
6810 EVAS_CALLBACK_MOUSE_DOWN,
6811 __setting_shortcuts_mouse_down);
6812 evas_object_event_callback_add(icon,
6813 EVAS_CALLBACK_MOUSE_DOWN,
6814 __setting_shortcuts_mouse_down,
6816 evas_object_event_callback_del(icon,
6817 EVAS_CALLBACK_MOUSE_MOVE,
6818 __setting_shortcuts_mouse_move);
6819 evas_object_event_callback_add(icon,
6820 EVAS_CALLBACK_MOUSE_MOVE,
6821 __setting_shortcuts_mouse_move,
6823 evas_object_event_callback_del(icon,
6824 EVAS_CALLBACK_MOUSE_UP,
6825 __setting_shortcuts_mouse_up);
6826 evas_object_event_callback_add(icon,
6827 EVAS_CALLBACK_MOUSE_UP,
6828 __setting_shortcuts_mouse_up,
6835 void update_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6840 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6841 int type = ad->toolbar_menu_arrays[i].menu_type;
6842 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6843 if (i == menubar_no || all_menubar) {
6845 evas_object_event_callback_del(icon,
6846 EVAS_CALLBACK_MOUSE_DOWN,
6847 __setting_shortcuts_mouse_down);
6848 evas_object_event_callback_del(icon,
6849 EVAS_CALLBACK_MOUSE_MOVE,
6850 __setting_shortcuts_mouse_move);
6851 evas_object_event_callback_del(icon,
6852 EVAS_CALLBACK_MOUSE_UP,
6853 __setting_shortcuts_mouse_up);
6855 evas_object_event_callback_del(icon,
6856 EVAS_CALLBACK_MOUSE_DOWN,
6857 __setting_shortcuts_mouse_down);
6858 evas_object_event_callback_add(icon,
6859 EVAS_CALLBACK_MOUSE_DOWN,
6860 __setting_shortcuts_mouse_down,
6862 evas_object_event_callback_del(icon,
6863 EVAS_CALLBACK_MOUSE_MOVE,
6864 __setting_shortcuts_mouse_move);
6865 evas_object_event_callback_add(icon,
6866 EVAS_CALLBACK_MOUSE_MOVE,
6867 __setting_shortcuts_mouse_move,
6869 evas_object_event_callback_del(icon,
6870 EVAS_CALLBACK_MOUSE_UP,
6871 __setting_shortcuts_mouse_up);
6872 evas_object_event_callback_add(icon,
6873 EVAS_CALLBACK_MOUSE_UP,
6874 __setting_shortcuts_mouse_up,
6883 void destroy_menubar_shortcuts_mouse_event(struct appdata *ad, int menubar_no, bool all_menubar)
6888 for (i = CAM_MENU_BAR_LEFT_0; i < CAM_MENU_BAR_LEFT_MAX_NUM; i++) {
6889 Evas_Object *icon = ad->toolbar_menu_arrays[i].icon;
6890 if (i == menubar_no || all_menubar) {
6891 evas_object_event_callback_del(icon,
6892 EVAS_CALLBACK_MOUSE_DOWN,
6893 __setting_shortcuts_mouse_down);
6894 evas_object_event_callback_del(icon,
6895 EVAS_CALLBACK_MOUSE_MOVE,
6896 __setting_shortcuts_mouse_move);
6897 evas_object_event_callback_del(icon,
6898 EVAS_CALLBACK_MOUSE_UP,
6899 __setting_shortcuts_mouse_up);
6906 /*free all memory for shortcuts*/
6907 static void __cam_toolbar_edit_shortcuts_data_clean()
6910 if (NULL != shortcuts_ele_list) {
6911 eina_list_free(shortcuts_ele_list);
6912 shortcuts_ele_list = NULL;
6916 static void __toolbar_edit_shortcuts_mouse_down_cb (void *data,
6922 /*struct appdata *ad = (struct appdata *)data;
6923 cam_long_press_register(LONG_PRESS_ID_EDIT,
6925 __cam_long_press_editmode_cb,
6926 __cam_long_press_exit_editmode_cb,
6931 static void __toolbar_edit_shortcuts_mouse_move_cb (void *data,
6937 /*struct appdata *ad = (struct appdata *)data;*/
6938 ShortCutData *shortcuts_ele = NULL;
6939 Eina_List *l = NULL;
6940 /** TODO: find solution to distinguish the scroll move
6941 cam_long_press_unregister(LONG_PRESS_ID_EDIT);
6943 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6944 if (shortcuts_ele) {
6945 if (shortcuts_ele->icon) {
6946 evas_object_freeze_events_set(shortcuts_ele->icon, TRUE);
6953 static void __toolbar_edit_shortcuts_mouse_up_cb (void *data,
6960 struct appdata *ad = (struct appdata *)data;
6961 cam_ret_if(ad == NULL);
6962 ShortCutData *shortcuts_ele = NULL;
6963 Eina_List *l = NULL;
6964 EINA_LIST_FOREACH(shortcuts_ele_list, l, shortcuts_ele) {
6965 if (shortcuts_ele) {
6966 if (shortcuts_ele->icon) {
6967 evas_object_freeze_events_set(shortcuts_ele->icon, FALSE);
6973 static int __edit_shortcuts_list_sort_cb(const void *data1, const void *data2)
6975 ShortCutData *ele_0 = (ShortCutData *)data1;
6976 ShortCutData *ele_1 = (ShortCutData *)data2;
6977 int part_index_0 = ele_0->part_index;
6978 int part_index_1 = ele_1->part_index;
6979 DEBUG_TRACE("part_index_0 %d", part_index_0);
6980 DEBUG_TRACE("part_index_1 %d", part_index_1);
6981 if (part_index_0 > part_index_1)
6983 else if (part_index_0 < part_index_1)
6989 static void __edit_shortcuts_create_empty_menubar_shortcut(struct appdata *ad,
6991 ShortCutData **shortcuts_ele)
6993 if (menu_no > CAM_MENU_BAR_LEFT_4 || menu_no < CAM_MENU_BAR_LEFT_0) return;
6994 ShortCutData *sd = (ShortCutData *)malloc(sizeof(ShortCutData));
6996 memset(sd, '\0', sizeof(ShortCutData));
6997 sd->icon = ad->toolbar_menu_arrays[menu_no].icon;
6998 sd->list_index = -1;
6999 sd->part_index = -1;
7000 sd->setting_type = -1;
7001 sd->menu_bar_no = menu_no;
7002 sd->is_on_menu_bar = TRUE;
7004 *shortcuts_ele = sd;
7008 static void __edit_shortcuts_add_empty_shortcuts_to_list(struct appdata *ad, int menu_no)
7011 if (menu_no > CAM_MENU_BAR_LEFT_4 || CAM_MENU_BAR_LEFT_1) return; /*note: CAM_MENU_BAR_LEFT_0, do not update*/
7012 ShortCutData *shortcuts_ele = NULL;
7013 /*note: add empty menubar shortcuts to list*/
7014 if (ad->toolbar_menu_arrays[menu_no].menu_type < 0) {
7015 __edit_shortcuts_create_empty_menubar_shortcut(ad, CAM_MENU_BAR_LEFT_1, &shortcuts_ele);
7016 shortcuts_ele_list = eina_list_prepend(shortcuts_ele_list, shortcuts_ele);
7020 static void __toolbar_dim_setting_shortcuts(struct appdata *ad)
7022 cam_ret_if(ad == NULL);
7023 Evas_Object *setting_icon = NULL;
7024 Evas_Object_Event_Cb func = NULL;
7026 setting_icon = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].icon;
7027 type = ad->toolbar_menu_arrays[CAM_MENU_BAR_LEFT_0].menu_type;
7028 __toolbar_menu_type_update(setting_icon, type, ad, BUTTON_STATE_DIM, &func);
7031 int toolbar_create_shortcuts_popup(struct appdata *ad)
7033 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7034 CamAppData *cam_handle = ad->camapp_handle;
7035 cam_retv_if(cam_handle == NULL, -1);
7037 gboolean init_state = FALSE;
7038 init_state = cam_config_get_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7039 PROP_SHORTCUTS_INIT_PART_INDEX,
7042 cam_config_set_boolean_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7043 PROP_SHORTCUTS_INIT_PART_INDEX,
7047 if (ad->edit_shortcuts_popup_scroll) {
7048 toolbar_destroy_shortcuts_popup(ad);
7050 ad->show_edit_shortcuts_popup_after_rotate = FALSE;
7052 __toolbar_dim_setting_shortcuts(ad);
7055 Evas_Object *icon = NULL;
7056 Evas_Object *setting_popup = NULL;
7057 Evas_Object *ele_layout = NULL;
7059 cam_long_press_register(LONG_PRESS_ID_EDIT,
7061 __cam_long_press_editmode_cb,
7062 __cam_long_press_exit_editmode_cb,
7065 setting_shortcuts_popup_create(ad);
7067 setting_popup = elm_layout_add(ad->edit_shortcuts_popup);
7068 elm_layout_file_set(setting_popup, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/layout");
7071 Evas_Object *scroller = elm_scroller_add(ad->edit_shortcuts_popup);
7072 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
7073 elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
7075 char *icon_name = NULL;
7077 char part_name[16] = { '\0', };
7078 ShortCutData *shortcuts_ele = NULL;
7079 Evas_Object_Event_Cb callback = NULL;
7082 gboolean is_on_toolbar = FALSE;
7083 int menu_bar_no = -1;
7085 /*create edit callback in the menubar*/
7086 create_menubar_shortcuts_mouse_event(ad);
7089 __cam_toolbar_edit_shortcuts_data_clean();
7091 if( ad->setting_menu_composer == NULL){
7092 cam_critical(LOG_UI,"ad->setting_menu_composer is null");
7096 int shortcuts_menu_to_part[CAM_MENU_RESET + 1] = { -1,};
7098 for (index = CAM_EDIT_SHORTCUTS_INDEX_0; index < CAM_EDIT_SHORTCUTS_INDEX_MAX; index++) {
7099 int item = cam_config_get_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7100 edit_shortcuts_prop_array[index].prop_name,
7102 shortcuts_menu_to_part[item] = index;
7103 DEBUG_TRACE("item %d index %d", item, index);
7107 CAM_MENU_ITEM* menu_item = NULL;
7108 int size = eina_array_count(ad->setting_menu_composer->array);
7110 for (index = 0; index < size; index++) {
7111 menu_item = (CAM_MENU_ITEM *)eina_array_data_get(ad->setting_menu_composer->array, index);
7113 if (*menu_item == CAM_MENU_EFFECTS
7114 || *menu_item == CAM_MENU_ANTI_SHAKE
7115 || *menu_item == CAM_MENU_CAPTURE_VOICE
7116 || *menu_item == CAM_MENU_GPS_TAG
7117 || *menu_item == CAM_MENU_STORAGE
7118 || *menu_item == CAM_MENU_RESET) {
7119 DEBUG_TRACE("Do not add menu in shortcut");
7123 Evas_Object *menubar_obj = NULL;
7124 __get_menubar_shortcuts_info(ad, *menu_item, &menu_bar_no, &menubar_obj);
7125 is_on_toolbar = ((menu_bar_no == CAM_MENU_BAR_LEFT_INVALID) ? FALSE : TRUE);
7126 __get_toolbar_shortcuts_file_func((void *)ad, *menu_item, BUTTON_STATE_NORMAL, &icon_name, &text, &callback);
7129 /*create layout for element*/
7130 ele_layout = elm_layout_add(setting_popup);
7131 elm_layout_file_set(ele_layout, CAM_SHOTCUTS_EDIT_CTXPOPUP_EDJ_NAME, "camera/shortcuts/ele");
7132 icon = elm_image_add(ele_layout);
7133 elm_image_file_set(icon, CAM_IMAGE_EDJ_NAME, icon_name);
7135 DEBUG_TRACE("index = %d, no icon file path or file path error, please check!", index);
7144 edje_object_part_text_set(elm_layout_edje_get(ele_layout), "ele.txt", text);
7145 DEBUG_TRACE("text %s", text);
7148 edje_object_part_swallow(_EDJ(ele_layout), "ele.icon", icon);
7149 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_DOWN, __setting_shortcuts_mouse_down, (void *)ad);
7150 evas_object_event_callback_add(ele_layout, EVAS_CALLBACK_MOUSE_UP, __setting_shortcuts_mouse_up, (void *)ad);
7152 evas_object_show(ele_layout);
7154 shortcuts_ele = (ShortCutData *)malloc(sizeof(ShortCutData));
7155 shortcuts_ele->icon = ele_layout;
7156 shortcuts_ele->list_index = list_index;
7157 shortcuts_ele->setting_type = *menu_item;
7158 shortcuts_ele->icon_filepath = icon_name;
7159 shortcuts_ele->name = text;
7160 shortcuts_ele->func = callback;
7161 shortcuts_ele->menu_bar_no = menu_bar_no;
7162 shortcuts_ele->is_on_menu_bar = is_on_toolbar;
7164 if (is_on_toolbar) {
7165 shortcuts_ele->part_index = -1;
7166 evas_object_hide(ele_layout);
7168 if (!init_state) { /*note: if there is no init value in config file, init now*/
7169 shortcuts_ele->part_index = part_index;
7170 cam_config_set_int_by_type(CAM_CONFIG_TYPE_SHORTCUTS,
7171 edit_shortcuts_prop_array[part_index].prop_name,
7173 shortcuts_menu_to_part[*menu_item] = part_index;
7174 } else { /*note: if there is init value in config file, read value from init*/
7175 shortcuts_ele->part_index = shortcuts_menu_to_part[*menu_item];
7178 if (shortcuts_ele->part_index > CAM_EDIT_SHORTCUTS_INDEX_INVALID
7179 && shortcuts_ele->part_index < CAM_EDIT_SHORTCUTS_INDEX_MAX) {
7180 snprintf(part_name, sizeof(part_name),"row.%d",(shortcuts_ele->part_index));
7181 edje_object_part_swallow(_EDJ(setting_popup), part_name, ele_layout);
7184 shortcuts_ele_list = eina_list_append(shortcuts_ele_list, shortcuts_ele);
7185 if (shortcuts_ele_list == NULL) {
7194 /*note: sort shortcuts list for in it, part_index, list_index both are sorted*/
7195 __resort_edit_shortcuts_list_by_part_index();
7197 elm_object_content_set(scroller, setting_popup);
7198 /*elm_object_part_content_set(edit_shortcuts_layout, "swallow.items", setting_popup);*/
7199 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup", scroller);
7200 elm_object_part_content_set(ad->toolbar_edje, "shortcuts_popup_description", ad->edit_shortcuts_popup_description);
7203 __cam_toolbar_display_shortcuts_editmode(ad);
7204 #if 0 /*TODO: TODO: find solution to distinguish the scroll move*/
7205 evas_object_event_callback_del(scroller,
7206 EVAS_CALLBACK_MOUSE_DOWN,
7207 __toolbar_edit_shortcuts_mouse_down_cb);
7209 evas_object_event_callback_del(scroller,
7210 EVAS_CALLBACK_MOUSE_MOVE,
7211 __toolbar_edit_shortcuts_mouse_move_cb);
7212 evas_object_event_callback_del(scroller,
7213 EVAS_CALLBACK_MOUSE_UP,
7214 __toolbar_edit_shortcuts_mouse_up_cb);
7215 evas_object_event_callback_add(scroller,
7216 EVAS_CALLBACK_MOUSE_DOWN,
7217 __toolbar_edit_shortcuts_mouse_down_cb,
7219 evas_object_event_callback_add(scroller,
7220 EVAS_CALLBACK_MOUSE_MOVE,
7221 __toolbar_edit_shortcuts_mouse_move_cb,
7223 evas_object_event_callback_add(scroller,
7224 EVAS_CALLBACK_MOUSE_UP,
7225 __toolbar_edit_shortcuts_mouse_up_cb,
7230 ad->edit_shortcuts_popup_ctx = setting_popup;
7231 ad->edit_shortcuts_popup_scroll = scroller;
7233 evas_object_show(ad->toolbar_edje);
7234 __setting_popup_timeout_checker_start(ad);
7235 /*note: set destroy operation after display to avoid bs*/
7236 if (ad->toolbar_setting_popup) {
7237 cam_toolbar_setting_popup_destroy(ad);
7240 __set_show_state_preview_obj(ad, FALSE);
7242 return EXIT_SUCCESS;
7245 void* __get_genlist_cb(const CAM_MENU_ITEM item)
7248 case CAM_MENU_SHORTCUTS:
7249 return __setting_edit_shortcut_popup_cb;
7250 case CAM_MENU_BURST_SHOT_MODE:
7251 return __setting_burst_shot_popup_cb;
7252 case CAM_MENU_VOLUME_KEY:
7253 return __setting_volume_key_popup_cb;
7254 case CAM_MENU_SELF_PORTRAIT:
7255 return __setting_self_portrait_popup_cb;
7256 case CAM_MENU_FLASH:
7257 return __setting_flash_popup;
7258 case CAM_MENU_SHOOTING_MODE:
7259 return __setting_shot_mode_popup_cb;
7260 case CAM_MENU_RECORDING_MODE:
7261 return __setting_record_mode_popup;
7262 case CAM_MENU_SCENE_MODE:
7263 return __setting_scenemode_popup_cb;
7264 case CAM_MENU_EXPLOSURE_VALUE:
7265 return __setting_ev_popup_cb;
7266 case CAM_MENU_FOCUS_MODE:
7267 return __setting_focus_mode_cb;
7268 case CAM_MENU_TIMER:
7269 return __setting_timer_popup_cb;
7270 case CAM_MENU_EFFECTS:
7271 return __setting_effects_popup_cb;
7272 case CAM_MENU_PHOTO_RESOLUTION:
7273 return __setting_photo_resolution_popup_cb;
7274 case CAM_MENU_VIDEO_RESOLUTION:
7275 return __setting_video_resolution_popup_cb;
7276 case CAM_MENU_WHITE_BALANCE:
7277 return __setting_wb_popup_cb;
7279 return __setting_iso_popup_cb;
7280 case CAM_MENU_METERING:
7281 return __setting_metering_popup_cb;
7282 case CAM_MENU_ANTI_SHAKE:
7283 return __setting_anti_shake_popup_cb;
7284 case CAM_MENU_OUTDOOR_VISIBILITY:
7285 return __setting_outdoor_visibility_popup_cb;
7286 case CAM_MENU_AUTO_CONTRAST:
7287 return __setting_autocontrast_popup_cb;
7288 case CAM_MENU_GUIDELINES:
7289 return __setting_guideline_popup_cb;
7290 case CAM_MENU_CAPTURE_VOICE:
7291 return __setting_capture_by_voice_popup_cb;
7292 case CAM_MENU_GPS_TAG:
7293 return __setting_gps_popup_cb;
7294 case CAM_MENU_SAVE_AS_FLIP:
7295 return __setting_save_as_flip_popup_cb;
7296 case CAM_MENU_STORAGE:
7297 return __setting_storage_popup_cb;
7298 case CAM_MENU_RESET:
7299 return __setting_restore_defaults_popup_cb;
7305 static Eina_Bool __genlist_each_cb(const void *container, void *data, void *fdata)
7307 struct appdata *ad = (struct appdata *)fdata;
7308 cam_retv_if(ad == NULL, EINA_FALSE);
7310 CAM_MENU_ITEM* item = (CAM_MENU_ITEM*)data;
7311 Elm_Object_Item *object_item = NULL;
7312 object_item = elm_genlist_item_append(ad->genlist,
7316 ELM_GENLIST_ITEM_NONE,
7317 __get_genlist_cb(*item),
7320 if(!cam_is_enabled_menu(ad,*item))
7321 elm_object_item_disabled_set(object_item, TRUE);
7326 int cam_toolbar_setting_popup_create(struct appdata *ad)
7328 cam_retv_if(ad == NULL || ad->toolbar_edje == NULL, -1);
7329 CamAppData *cam_handle = ad->camapp_handle;
7330 cam_retv_if(cam_handle == NULL, -1);
7332 if (ad->toolbar_setting_popup) {
7333 cam_toolbar_setting_popup_destroy(ad);
7335 if (ad->edit_shortcuts_popup_scroll) {
7336 toolbar_destroy_shortcuts_popup(ad);
7339 ad->show_setting_popup_after_rotate = FALSE;
7341 Evas_Object *setting_popup = NULL;
7343 setting_toolbar_popup_create(ad);
7345 setting_popup = elm_layout_add(ad->toolbar_setting_popup);
7346 elm_layout_file_set(setting_popup, CAM_SETTING_POPUP_STYLE_WITH_RADIO_EDJ_NAME, "camera/layout/setting");
7349 edje_object_part_text_set(elm_layout_edje_get(setting_popup), "elm.text", dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
7351 evas_object_size_hint_min_set(setting_popup,
7352 SETTING_POPUP_WIDTH * elm_config_scale_get(),
7353 SETTING_POPUP_HEIGHT * elm_config_scale_get());
7355 ad->genlist = elm_genlist_add(setting_popup);
7356 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_DOWN, __setting_gl_mouse_down, (void *)ad);
7357 evas_object_event_callback_add(ad->genlist, EVAS_CALLBACK_MOUSE_MOVE, __setting_gl_mouse_move, (void *)ad);
7359 cam_setting_gl_style_set();
7361 if( ad->setting_menu_composer != NULL)
7362 eina_array_foreach(ad->setting_menu_composer->array, __genlist_each_cb, ad);
7364 evas_object_show(ad->genlist);
7365 elm_object_part_content_set(setting_popup, "elm.swallow.box", ad->genlist);
7366 elm_object_content_set(ad->toolbar_setting_popup, setting_popup);
7370 DEBUG_TRACE("ad->target_direction = %d", ad->target_direction);
7371 __get_option_coord_by_menubar_no(CAM_MENU_BAR_LEFT_0, ad->target_direction, &x, &y);
7372 DEBUG_TRACE("x = %d y = %d", x, y);
7373 __cam_toolbar_move_ctxpopup(ad->toolbar_setting_popup, ad->target_direction, x, y);
7375 evas_object_show(ad->toolbar_setting_popup);
7376 __setting_popup_timeout_checker_start(ad);
7378 __set_show_state_preview_obj(ad, FALSE);
7380 return EXIT_SUCCESS;
7383 int toolbar_shot_guide_popup_create(struct appdata *ad, int shot_mode)
7385 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
7386 CamAppData *cam_handle = ad->camapp_handle;
7387 cam_retv_if(cam_handle == NULL, -1);
7393 if (ad->shot_mode_guide_popup) {
7394 toolbar_shot_guide_popup_destory(ad);
7397 elm_object_part_content_unset(ad->ug_base, "shot_guide_popup_layout");
7399 if ((cam_handle->shooting_mode == CAM_SINGLE_MODE)
7400 || (cam_handle->shooting_mode == CAM_SELF_SINGLE_MODE))
7401 return EXIT_SUCCESS;
7403 switch (ad->target_direction) {
7404 case CAM_TARGET_DIRECTION_LANDSCAPE:
7405 case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE:
7406 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_landscape");
7408 case CAM_TARGET_DIRECTION_PORTRAIT:
7409 case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE:
7410 ad->shot_mode_guide_popup = cam_app_load_edj(ad->ug_base, CAM_UTILS_EDJ_NAME, "shot_guide_potrait");
7413 DEBUG_TRACE("Invalid direction type!!!");
7416 cam_retvm_if(ad->shot_mode_guide_popup == NULL, -1, "shot_mode_guide_popup is NULL");
7417 elm_object_part_content_set(ad->ug_base, "shot_guide_popup_layout", ad->shot_mode_guide_popup);
7419 char popup_str[1024 + 1] = { '\0',};
7420 snprintf(popup_str, 1024, "%s", dgettext(PACKAGE, "IDS_CAM_POP_PRESS_SHUTTER"));
7421 edje_object_part_text_set(_EDJ(ad->shot_mode_guide_popup), "text", popup_str);
7423 evas_object_show(ad->shot_mode_guide_popup);
7425 return EXIT_SUCCESS;
7428 int toolbar_shot_guide_popup_destory(struct appdata *ad)
7430 cam_retv_if(ad == NULL, -1);
7431 UI_TEST_LOG("Guide popup destory");
7433 if (ad->shot_mode_guide_popup) {
7434 evas_object_del(ad->shot_mode_guide_popup);
7435 ad->shot_mode_guide_popup = NULL;
7441 int toolbar_shot_guide_popup_move(struct appdata *ad)
7443 cam_retv_if(ad == NULL, -1);
7447 if (ad->shot_mode_guide_popup) {
7448 Eina_Bool setting_ctxpopup_is_visible = false;
7449 ecore_x_window_size_get(ad->main_xid, &x, &y);
7451 if (ad->setting_ctxpopup)
7452 setting_ctxpopup_is_visible = evas_object_visible_get(ad->setting_ctxpopup);
7454 cam_debug(LOG_UI, "evas_object_visible_get(ad->setting_ctxpopup) =%d", setting_ctxpopup_is_visible);
7456 if (ad->toolbar_setting_popup) {
7457 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7458 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7460 __cam_get_shotguide_popup_coord(ad->target_direction, &x, &y);
7461 toolbar_move_with_scale(ad->shot_mode_guide_popup, x, y);
7464 cam_critical(LOG_UI, "x = %d, y= %d", x, y);
7470 static const char* __get_icon_image_name(CAM_MENU_ITEM item, ButtonState state)
7472 struct appdata *ad = (struct appdata *)cam_appdata_get();
7473 cam_retvm_if(ad == NULL, NULL, "appdata is NULL");
7474 CamAppData *camapp = ad->camapp_handle;
7475 cam_retvm_if(camapp == NULL, NULL, "camapp is NULL");
7477 char *icon_name = NULL;
7478 int exposure_value = 0;
7481 case CAM_MENU_SCENE_AUTO:
7482 if (state == BUTTON_STATE_PRESS)
7483 icon_name = SCENE_MODE_AUTO_PRESS_ICON;
7485 icon_name = SCENE_MODE_AUTO_NORMAL_ICON;
7487 case CAM_MENU_SCENE_PORTRAIT:
7488 if (state == BUTTON_STATE_PRESS)
7489 icon_name = SCENE_MODE_PORTRAIT_PRESS_ICON;
7491 icon_name = SCENE_MODE_PORTRAIT_NORMAL_ICON;
7493 case CAM_MENU_SCENE_LANDSCAPE:
7494 if (state == BUTTON_STATE_PRESS)
7495 icon_name = SCENE_MODE_LANDSCAPE_PRESS_ICON;
7497 icon_name = SCENE_MODE_LANDSCAPE_NORMAL_ICON;
7499 case CAM_MENU_SCENE_NIGHT:
7500 if (state == BUTTON_STATE_PRESS)
7501 icon_name = SCENE_MODE_NIGHT_PRESS_ICON;
7503 icon_name = SCENE_MODE_NIGHT_NORMAL_ICON;
7505 case CAM_MENU_SCENE_SPORTS:
7506 if (state == BUTTON_STATE_PRESS)
7507 icon_name = SCENE_MODE_SPORTS_PRESS_ICON;
7509 icon_name = SCENE_MODE_SPORTS_NORMAL_ICON;
7511 case CAM_MENU_SCENE_PARTY:
7512 if (state == BUTTON_STATE_PRESS)
7513 icon_name = SCENE_MODE_PARTY_PRESS_ICON;
7515 icon_name = SCENE_MODE_PARTY_NORMAL_ICON;
7517 case CAM_MENU_SCENE_BEACHSNOW:
7518 if (state == BUTTON_STATE_PRESS)
7519 icon_name = SCENE_MODE_BEACHSNOW_PRESS_ICON;
7521 icon_name = SCENE_MODE_BEACHSNOW_NORMAL_ICON;
7523 case CAM_MENU_SCENE_SUNSET:
7524 if (state == BUTTON_STATE_PRESS)
7525 icon_name = SCENE_MODE_SUNSET_PRESS_ICON;
7527 icon_name = SCENE_MODE_SUNSET_NORMAL_ICON;
7529 case CAM_MENU_SCENE_DUSKDAWN:
7530 if (state == BUTTON_STATE_PRESS)
7531 icon_name = SCENE_MODE_DUSKDAWN_PRESS_ICON;
7533 icon_name = SCENE_MODE_DUSKDAWN_NORMAL_ICON;
7535 case CAM_MENU_SCENE_FALL:
7536 if (state == BUTTON_STATE_PRESS)
7537 icon_name = SCENE_MODE_FALL_PRESS_ICON;
7539 icon_name = SCENE_MODE_FALL_NORMAL_ICON;
7541 case CAM_MENU_SCENE_FIREWORK:
7542 if (state == BUTTON_STATE_PRESS)
7543 icon_name = SCENE_MODE_FIREWORK_PRESS_ICON;
7545 icon_name = SCENE_MODE_FIREWORK_NORMAL_ICON;
7547 case CAM_MENU_SCENE_TEXT:
7548 if (state == BUTTON_STATE_PRESS)
7549 icon_name = SCENE_MODE_TEXT_PRESS_ICON;
7551 icon_name = SCENE_MODE_TEXT_NORMAL_ICON;
7553 case CAM_MENU_SCENE_CANDLELIGHT:
7554 if (state == BUTTON_STATE_PRESS)
7555 icon_name = SCENE_MODE_CANDLELIGHT_PRESS_ICON;
7557 icon_name = SCENE_MODE_CANDLELIGHT_NORMAL_ICON;
7559 case CAM_MENU_SCENE_BACKLIGHT:
7560 if (state == BUTTON_STATE_PRESS)
7561 icon_name = SCENE_MODE_BACKLIGHT_PRESS_ICON;
7563 icon_name = SCENE_MODE_BACKLIGHT_NORMAL_ICON;
7565 case CAM_MENU_SHOOTING_SINGLE:
7566 case CAM_MENU_SHOOTING_SELF_SINGLE:
7567 if (state == BUTTON_STATE_PRESS)
7568 icon_name = SHOOTING_MODE_SINGLE_PRESS_ICON;
7570 icon_name = SHOOTING_MODE_SINGLE_NORMAL_ICON;
7572 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
7573 if (state == BUTTON_STATE_PRESS)
7574 icon_name = CAM_RESOLUTION_8M_PRESS_ICON;
7576 icon_name = CAM_RESOLUTION_8M_NORMAL_ICON;
7579 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
7580 if (state == BUTTON_STATE_PRESS)
7581 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7583 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7585 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
7586 if (state == BUTTON_STATE_PRESS)
7587 icon_name = CAM_RESOLUTION_W6M_PRESS_ICON;
7589 icon_name = CAM_RESOLUTION_W6M_NORMAL_ICON;
7591 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
7592 if (state == BUTTON_STATE_PRESS)
7593 icon_name = CAM_RESOLUTION_W5_7M_PRESS_ICON;
7595 icon_name = CAM_RESOLUTION_W5_7M_NORMAL_ICON;
7597 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
7598 if (state == BUTTON_STATE_PRESS)
7599 icon_name = CAM_RESOLUTION_5M_PRESS_ICON;
7601 icon_name = CAM_RESOLUTION_5M_NORMAL_ICON;
7603 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
7604 if (state == BUTTON_STATE_PRESS)
7609 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
7610 if (state == BUTTON_STATE_PRESS)
7611 icon_name = CAM_RESOLUTION_3_2M_PRESS_ICON;
7613 icon_name = CAM_RESOLUTION_3_2M_NORMAL_ICON;
7615 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
7616 if (state == BUTTON_STATE_PRESS)
7617 icon_name = CAM_RESOLUTION_W2_4M_PRESS_ICON;
7619 icon_name = CAM_RESOLUTION_W2_4M_NORMAL_ICON;
7621 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
7622 if (state == BUTTON_STATE_PRESS)
7623 icon_name = CAM_RESOLUTION_W2M_PRESS_ICON;
7625 icon_name = CAM_RESOLUTION_W2M_NORMAL_ICON;
7627 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
7628 if (state == BUTTON_STATE_PRESS)
7629 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7631 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7633 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
7634 if (state == BUTTON_STATE_PRESS)
7635 icon_name = CAM_RESOLUTION_2M_PRESS_ICON;
7637 icon_name = CAM_RESOLUTION_2M_NORMAL_ICON;
7639 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
7640 if (state == BUTTON_STATE_PRESS)
7641 icon_name = CAM_RESOLUTION_1_3M_PRESS_ICON;
7643 icon_name = CAM_RESOLUTION_1_3M_NORMAL_ICON;
7645 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
7646 if (state == BUTTON_STATE_PRESS)
7647 icon_name = CAM_RESOLUTION_W0_9M_PRESS_ICON;
7649 icon_name = CAM_RESOLUTION_W0_9M_NORMAL_ICON;
7651 case CAM_MENU_PHOTO_RESOLUTION_640x480:
7652 if (state == BUTTON_STATE_PRESS)
7653 icon_name = CAM_RESOLUTION_0_3M_PRESS_ICON;
7655 icon_name = CAM_RESOLUTION_0_3M_NORMAL_ICON;
7657 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
7658 if (state == BUTTON_STATE_PRESS)
7659 icon_name = REC_RESOLUTION_FULLHD_PRESS_ICON;
7661 icon_name = REC_RESOLUTION_FULLHD_NORMAL_ICON;
7663 case CAM_MENU_VIDEO_RESOLUTION_HD:
7664 if (state == BUTTON_STATE_PRESS)
7665 icon_name = REC_RESOLUTION_HD_PRESS_ICON;
7667 icon_name = REC_RESOLUTION_HD_NORMAL_ICON;
7669 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
7670 if (state == BUTTON_STATE_PRESS)
7671 icon_name = REC_RESOLUTION_WVGA_PRESS_ICON;
7673 icon_name = REC_RESOLUTION_WVGA_NORMAL_ICON;
7675 case CAM_MENU_VIDEO_RESOLUTION_VGA:
7676 if (state == BUTTON_STATE_PRESS)
7677 icon_name = REC_RESOLUTION_VGA_PRESS_ICON;
7679 icon_name = REC_RESOLUTION_VGA_NORMAL_ICON;
7681 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
7682 if (state == BUTTON_STATE_PRESS)
7683 icon_name = REC_RESOLUTION_QVGA_PRESS_ICON;
7685 icon_name = REC_RESOLUTION_QVGA_NORMAL_ICON;
7687 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
7688 if (state == BUTTON_STATE_PRESS)
7689 icon_name = REC_RESOLUTION_QCIF_PRESS_ICON;
7691 icon_name = REC_RESOLUTION_QCIF_NORMAL_ICON;
7693 case CAM_MENU_WB_AWB:
7694 if (state == BUTTON_STATE_PRESS)
7695 icon_name = WHITE_BALANCE_AUTO_PRESS_ICON;
7697 icon_name = WHITE_BALANCE_AUTO_NORMAL_ICON;
7699 case CAM_MENU_WB_INCANDESCENT:
7700 if (state == BUTTON_STATE_PRESS)
7701 icon_name = WHITE_BALANCE_INCANDESCENT_PRESS_ICON;
7703 icon_name = WHITE_BALANCE_INCANDESCENT_NORMAL_ICON;
7705 case CAM_MENU_WB_FLUORESCENT:
7706 if (state == BUTTON_STATE_PRESS)
7707 icon_name = WHITE_BALANCE_FLUORESCENT_PRESS_ICON;
7709 icon_name = WHITE_BALANCE_FLUORESCENT_NORMAL_ICON;
7711 case CAM_MENU_WB_DAYLIGHT:
7712 if (state == BUTTON_STATE_PRESS)
7713 icon_name = WHITE_BALANCE_DAYLIGHT_PRESS_ICON;
7715 icon_name = WHITE_BALANCE_DAYLIGHT_NORMAL_ICON;
7717 case CAM_MENU_WB_CLOUDY:
7718 if (state == BUTTON_STATE_PRESS)
7719 icon_name = WHITE_BALANCE_CLOUDY_PRESS_ICON;
7721 icon_name = WHITE_BALANCE_CLOUDY_NORMAL_ICON;
7723 case CAM_MENU_WB_SHADE:
7724 if (state == BUTTON_STATE_PRESS)
7725 icon_name = WHITE_BALANCE_SHADE_PRESS_ICON;
7727 icon_name = WHITE_BALANCE_SHADE_NORMAL_ICON;
7729 case CAM_MENU_WB_HORIZON:
7730 if (state == BUTTON_STATE_PRESS)
7731 icon_name = WHITE_BALANCE_HORIZON_PRESS_ICON;
7733 icon_name = WHITE_BALANCE_HORIZON_NORMAL_ICON;
7735 case CAM_MENU_WB_FLASH:
7736 if (state == BUTTON_STATE_PRESS)
7741 case CAM_MENU_WB_CUSTOM:
7742 if (state == BUTTON_STATE_PRESS)
7747 case CAM_MENU_EFFECT_NONE:
7748 if (state == BUTTON_STATE_PRESS)
7749 icon_name = EFFECTS_NONE_PRESS_ICON;
7751 icon_name = EFFECTS_NONE_NORMAL_ICON;
7753 case CAM_MENU_EFFECT_NEGATIVE:
7754 if (state == BUTTON_STATE_PRESS)
7755 icon_name = EFFECTS_NEGATIVE_PRESS_ICON;
7757 icon_name = EFFECTS_NEGATIVE_NORMAL_ICON;
7759 case CAM_MENU_EFFECT_BLACKANDWHITE:
7760 if (state == BUTTON_STATE_PRESS)
7761 icon_name = EFFECTS_BLACKANDWHITE_PRESS_ICON;
7763 icon_name = EFFECTS_BLACKANDWHITE_NORMAL_ICON;
7765 case CAM_MENU_EFFECT_SEPIA:
7766 if (state == BUTTON_STATE_PRESS)
7767 icon_name = EFFECTS_SEPIA_PRESS_ICON;
7769 icon_name = EFFECTS_SEPIA_NORMAL_ICON;
7771 case CAM_MENU_FOCUS_AUTO:
7772 if (state == BUTTON_STATE_PRESS)
7773 icon_name = FOCUS_MODE_AUTO_PRESS_ICON;
7775 icon_name = FOCUS_MODE_AUTO_NORMAL_ICON;
7777 case CAM_MENU_FOCUS_MACRO:
7778 if (state == BUTTON_STATE_PRESS)
7779 icon_name = FOCUS_MODE_MACRO_PRESS_ICON;
7781 icon_name = FOCUS_MODE_MACRO_NORMAL_ICON;
7783 case CAM_MENU_FOCUS_FACE_DETECTION:
7784 if (state == BUTTON_STATE_PRESS)
7785 icon_name = FOCUS_MODE_FACE_DETECTION_PRESS_ICON;
7787 icon_name = FOCUS_MODE_FACE_DETECTION_NORMAL_ICON;
7789 case CAM_MENU_RECORDING_MODE_NORMAL:
7790 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
7791 if (state == BUTTON_STATE_PRESS)
7792 icon_name = RECORDING_MODE_NORMAL_PRESS_ICON;
7794 icon_name = RECORDING_MODE_NORMAL_NORMAL_ICON;
7796 case CAM_MENU_RECORDING_MODE_LIMIT:
7797 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
7798 if (state == BUTTON_STATE_PRESS)
7799 icon_name = RECORDING_MODE_LIMIT_MMS_PRESS_ICON;
7801 icon_name = RECORDING_MODE_LIMIT_MMS_NORMAL_ICON;
7803 case CAM_MENU_RECORDING_MODE_SLOW:
7804 if (state == BUTTON_STATE_PRESS)
7805 icon_name = RECORDING_MODE_SLOW_MOTION_PRESS_ICON;
7807 icon_name = RECORDING_MODE_SLOW_MOTION_NORMAL_ICON;
7809 case CAM_MENU_RECORDING_MODE_FAST:
7810 if (state == BUTTON_STATE_PRESS)
7811 icon_name = RECORDING_MODE_FAST_MOTION_PRESS_ICON;
7813 icon_name = RECORDING_MODE_FAST_MOTION_NORMAL_ICON;
7815 case CAM_MENU_FLASH_OFF:
7816 if (state == BUTTON_STATE_PRESS)
7817 icon_name = FLASH_OFF_PRESS_ICON;
7819 icon_name = FLASH_OFF_NORMAL_ICON;
7821 case CAM_MENU_FLASH_ON:
7822 if (state == BUTTON_STATE_PRESS)
7823 icon_name = FLASH_ON_PRESS_ICON;
7825 icon_name = FLASH_ON_NORMAL_ICON;
7827 case CAM_MENU_FLASH_AUTO:
7828 if (state == BUTTON_STATE_PRESS)
7829 icon_name = FLASH_AUTO_PRESS_ICON;
7831 icon_name = FLASH_AUTO_NORMAL_ICON;
7833 case CAM_MENU_METERING_MATRIX:
7834 if (state == BUTTON_STATE_PRESS)
7835 icon_name = METERING_MATRIX_PRESS_ICON;
7837 icon_name = METERING_MATRIX_NORMAL_ICON;
7839 case CAM_MENU_METERING_CENTER_WEIGHTED:
7840 if (state == BUTTON_STATE_PRESS)
7841 icon_name = METERING_CENTER_WEIGHTED_PRESS_ICON;
7843 icon_name = METERING_CENTER_WEIGHTED_NORMAL_ICON;
7845 case CAM_MENU_METERING_SPOT:
7846 if (state == BUTTON_STATE_PRESS)
7847 icon_name = METERING_SPOT_PRESS_ICON;
7849 icon_name = METERING_SPOT_NORMAL_ICON;
7851 case CAM_MENU_ISO_AUTO:
7852 if (state == BUTTON_STATE_PRESS)
7853 icon_name = ISO_AUTO_PRESS_ICON;
7855 icon_name = ISO_AUTO_NORMAL_ICON;
7857 case CAM_MENU_ISO_50:
7858 if (state == BUTTON_STATE_PRESS)
7859 icon_name = ISO_50_PRESS_ICON;
7861 icon_name = ISO_50_NORMAL_ICON;
7863 case CAM_MENU_ISO_100:
7864 if (state == BUTTON_STATE_PRESS)
7865 icon_name = ISO_100_PRESS_ICON;
7867 icon_name = ISO_100_NORMAL_ICON;
7869 case CAM_MENU_ISO_200:
7870 if (state == BUTTON_STATE_PRESS)
7871 icon_name = ISO_200_PRESS_ICON;
7873 icon_name = ISO_200_NORMAL_ICON;
7875 case CAM_MENU_ISO_400:
7876 if (state == BUTTON_STATE_PRESS)
7877 icon_name = ISO_400_PRESS_ICON;
7879 icon_name = ISO_400_NORMAL_ICON;
7881 case CAM_MENU_ISO_80O:
7882 if (state == BUTTON_STATE_PRESS)
7883 icon_name = ISO_800_PRESS_ICON;
7885 icon_name = ISO_800_NORMAL_ICON;
7887 case CAM_MENU_ISO_1600:
7888 if (state == BUTTON_STATE_PRESS)
7893 case CAM_MENU_ISO_320O:
7894 if (state == BUTTON_STATE_PRESS)
7899 case CAM_MENU_STORAGE_PHONE:
7900 if (state == BUTTON_STATE_PRESS)
7901 icon_name = STORAGE_MYDEVICE_PRESS_ICON;
7903 icon_name = STORAGE_MYDEVICE_NORMAL_ICON;
7905 case CAM_MENU_STORAGE_MMC:
7906 if (state == BUTTON_STATE_PRESS)
7907 icon_name = STORAGE_CARD_PRESS_ICON;
7909 icon_name = STORAGE_CARD_NORMAL_ICON;
7911 case CAM_MENU_TIMER_OFF:
7912 if (state == BUTTON_STATE_PRESS)
7913 icon_name = TIMER_OFF_PRESS_ICON;
7915 icon_name = TIMER_OFF_NORMAL_ICON;
7917 case CAM_MENU_TIMER_2SEC:
7918 if (state == BUTTON_STATE_PRESS)
7919 icon_name = TIMER_2SEC_PRESS_ICON;
7921 icon_name = TIMER_2SEC_NORMAL_ICON;
7923 case CAM_MENU_TIMER_5SEC:
7924 if (state == BUTTON_STATE_PRESS)
7925 icon_name = TIMER_5SEC_PRESS_ICON;
7927 icon_name = TIMER_5SEC_NORMAL_ICON;
7929 case CAM_MENU_TIMER_10SEC:
7930 if (state == BUTTON_STATE_PRESS)
7931 icon_name = TIMER_10SEC_PRESS_ICON;
7933 icon_name = TIMER_10SEC_NORMAL_ICON;
7935 case CAM_MENU_VOLUME_KEY_ZOOM:
7936 if (state == BUTTON_STATE_PRESS)
7937 icon_name = VOLUME_KEY_AS_ZOOM_PRESS_ICON;
7939 icon_name = VOLUME_KEY_AS_ZOOM_NORMAL_ICON;
7941 case CAM_MENU_VOLUME_KEY_SHUTTER:
7942 if (state == BUTTON_STATE_PRESS)
7943 icon_name = VOLUME_KEY_AS_SHUTTER_PRESS_ICON;
7945 icon_name = VOLUME_KEY_AS_SHUTTER_NORMAL_ICON;
7947 case CAM_MENU_EXPLOSURE_VALUE:
7948 if (camapp->self_portrait == FALSE)
7949 exposure_value = camapp->brightness;
7951 exposure_value = camapp->brightness + 4;
7953 if (exposure_value == 0) {
7954 if (state == BUTTON_STATE_PRESS)
7955 icon_name = EXPOSURE_VALUE_MINUS_2_0_PRESS_ICON;
7957 icon_name = EXPOSURE_VALUE_MINUS_2_0_ICON;
7958 } else if (exposure_value == 1) {
7959 if (state == BUTTON_STATE_PRESS)
7960 icon_name = EXPOSURE_VALUE_MINUS_1_5_PRESS_ICON;
7962 icon_name = EXPOSURE_VALUE_MINUS_1_5_ICON;
7963 } else if (exposure_value == 2) {
7964 if (state == BUTTON_STATE_PRESS)
7965 icon_name = EXPOSURE_VALUE_MINUS_1_0_PRESS_ICON;
7967 icon_name = EXPOSURE_VALUE_MINUS_1_0_ICON;
7968 } else if (exposure_value == 3) {
7969 if (state == BUTTON_STATE_PRESS)
7970 icon_name = EXPOSURE_VALUE_MINUS_0_5_PRESS_ICON;
7972 icon_name = EXPOSURE_VALUE_MINUS_0_5_ICON;
7973 } else if (exposure_value == 4) {
7974 if (state == BUTTON_STATE_PRESS)
7975 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
7977 icon_name = EXPOSURE_VALUE_0_ICON;
7978 } else if (exposure_value == 5) {
7979 if (state == BUTTON_STATE_PRESS)
7980 icon_name = EXPOSURE_VALUE_PLUS_0_5_PRESS_ICON;
7982 icon_name = EXPOSURE_VALUE_PLUS_0_5_ICON;
7983 } else if (exposure_value == 6) {
7984 if (state == BUTTON_STATE_PRESS)
7985 icon_name = EXPOSURE_VALUE_PLUS_1_0_PRESS_ICON;
7987 icon_name = EXPOSURE_VALUE_PLUS_1_0_ICON;
7988 } else if (exposure_value == 7) {
7989 if (state == BUTTON_STATE_PRESS)
7990 icon_name = EXPOSURE_VALUE_PLUS_1_5_PRESS_ICON;
7992 icon_name = EXPOSURE_VALUE_PLUS_1_5_ICON;
7993 } else if (exposure_value == 8) {
7994 if (state == BUTTON_STATE_PRESS)
7995 icon_name = EXPOSURE_VALUE_PLUS_2_0_PRESS_ICON;
7997 icon_name = EXPOSURE_VALUE_PLUS_2_0_ICON;
7999 if (state == BUTTON_STATE_PRESS)
8000 icon_name = EXPOSURE_VALUE_0_PRESS_ICON;
8002 icon_name = EXPOSURE_VALUE_0_ICON;
8012 static const char* __get_text_name(CAM_MENU_ITEM item)
8015 case CAM_MENU_SCENE_AUTO:
8016 return "IDS_CAM_BODY_NONE";
8017 case CAM_MENU_SCENE_PORTRAIT:
8018 return "IDS_CAM_OPT_SCENE_PORTRAIT";
8019 case CAM_MENU_SCENE_LANDSCAPE:
8020 return "IDS_CAM_OPT_SCENE_LANDSCAPE";
8021 case CAM_MENU_SCENE_NIGHT:
8022 return "IDS_CAM_OPT_SCENEMODE_NIGHT";
8023 case CAM_MENU_SCENE_SPORTS:
8024 return "IDS_CAM_OPT_SCENE_SPORTS";
8025 case CAM_MENU_SCENE_PARTY:
8026 return "IDS_CAM_OPT_SCENEMODE_PARTY_INDOOR";
8027 case CAM_MENU_SCENE_BEACHSNOW:
8028 return "IDS_CAM_OPT_BEACH_SNOW";
8029 case CAM_MENU_SCENE_SUNSET:
8030 return "IDS_CAM_OPT_SCENEMODE_SUNSET";
8031 case CAM_MENU_SCENE_DUSKDAWN:
8032 return "IDS_CAM_OPT_SCENE_DAWN";
8033 case CAM_MENU_SCENE_FALL:
8034 return "IDS_CAM_OPT_AUTUMN_COLOUR";
8035 case CAM_MENU_SCENE_FIREWORK:
8036 return "IDS_CAM_BODY_SCENEMODE_FIREWORK";
8037 case CAM_MENU_SCENE_TEXT:
8038 return "IDS_CAM_BODY_SCENEMODE_TEXT";
8039 case CAM_MENU_SCENE_CANDLELIGHT:
8040 return "IDS_CAM_OPT_SCENEMODE_CANDLELIGHT";
8041 case CAM_MENU_SCENE_BACKLIGHT:
8042 return "IDS_CAM_OPT_SCENE_BACKLIGHT";
8043 case CAM_MENU_SHOOTING_SINGLE:
8044 case CAM_MENU_SHOOTING_SELF_SINGLE:
8045 return "IDS_CAM_BODY_SINGLE";
8046 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
8048 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
8050 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
8052 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
8054 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
8056 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
8058 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
8060 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
8062 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
8064 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
8066 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
8068 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
8070 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
8072 case CAM_MENU_PHOTO_RESOLUTION_640x480:
8074 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
8076 case CAM_MENU_VIDEO_RESOLUTION_HD:
8078 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
8080 case CAM_MENU_VIDEO_RESOLUTION_VGA:
8082 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
8084 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
8086 case CAM_MENU_WB_AWB:
8087 return "IDS_CAM_BODY_AUTO";
8088 case CAM_MENU_WB_INCANDESCENT:
8089 return "IDS_CAM_BODY_WHITEBALANCE_INCANDESCENT";
8090 case CAM_MENU_WB_FLUORESCENT:
8091 return "IDS_CAM_BODY_FLUORESCENT";
8092 case CAM_MENU_WB_DAYLIGHT:
8093 return "IDS_CAM_BODY_DAYLIGHT";
8094 case CAM_MENU_WB_CLOUDY:
8095 return "IDS_CAM_BODY_CLOUDY";
8096 case CAM_MENU_WB_SHADE:
8097 return "IDS_CAM_BODY_SHADE";
8098 case CAM_MENU_WB_HORIZON:
8099 return "IDS_CAM_BODY_HORIZON";
8100 case CAM_MENU_WB_FLASH:
8101 return "IDS_CAM_OPT_FLASH";
8102 case CAM_MENU_WB_CUSTOM:
8103 return "IDS_CAM_BODY_CUSTOM";
8104 case CAM_MENU_EFFECT_NONE:
8105 return "IDS_CAM_BODY_NONE";
8106 case CAM_MENU_EFFECT_NEGATIVE:
8107 return "IDS_CAM_BODY_NEGATIVE";
8108 case CAM_MENU_EFFECT_BLACKANDWHITE:
8109 return "IDS_CAM_BODY_BLACK_AND_WHITE";
8110 case CAM_MENU_EFFECT_SEPIA:
8111 return "IDS_CAM_BODY_SEPIA";
8112 case CAM_MENU_FOCUS_AUTO:
8113 return "IDS_CAM_OPT_AUTO_FOCUS";
8114 case CAM_MENU_FOCUS_MACRO:
8115 return "IDS_CAM_BODY_MACRO";
8116 case CAM_MENU_FOCUS_FACE_DETECTION:
8117 return "IDS_CAM_OPT_FACE_DETECTION";
8118 case CAM_MENU_RECORDING_MODE_NORMAL:
8119 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8120 case CAM_MENU_RECORDING_MODE_LIMIT:
8121 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8122 case CAM_MENU_RECORDING_MODE_SLOW:
8123 return "IDS_CAM_OPT_SLOW_MOTION";
8124 case CAM_MENU_RECORDING_MODE_FAST:
8125 return "IDS_CAM_BODY_FAST_MOTION";
8126 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
8127 return "IDS_CAM_BODY_RECORDINGMODE_NORMAL";
8128 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
8129 return "IDS_CAM_OPT_MESSAGE_LIMIT";
8130 case CAM_MENU_FLASH_OFF:
8131 return "IDS_CAM_BODY_OFF";
8132 case CAM_MENU_FLASH_ON:
8133 return "IDS_CAM_BODY_ON";
8134 case CAM_MENU_FLASH_AUTO:
8135 return "IDS_CAM_BODY_AUTO";
8136 case CAM_MENU_METERING_MATRIX:
8137 return "IDS_CAM_BODY_MATRIX";
8138 case CAM_MENU_METERING_CENTER_WEIGHTED:
8139 return "IDS_CAM_BODY_CENTER_WEIGHTED";
8140 case CAM_MENU_METERING_SPOT:
8141 return "IDS_CAM_BODY_SPOT";
8142 case CAM_MENU_ISO_AUTO:
8143 return "IDS_CAM_BODY_AUTO";
8144 case CAM_MENU_ISO_50:
8146 case CAM_MENU_ISO_100:
8148 case CAM_MENU_ISO_200:
8150 case CAM_MENU_ISO_400:
8152 case CAM_MENU_ISO_80O:
8154 case CAM_MENU_ISO_1600:
8156 case CAM_MENU_ISO_320O:
8158 case CAM_MENU_STORAGE_PHONE:
8159 return "IDS_CAM_OPT_DEVICE_ABB_M_MEMORY";
8160 case CAM_MENU_STORAGE_MMC:
8161 return "IDS_CAM_OPT_MEMORY_CARD";
8162 case CAM_MENU_TIMER_OFF:
8163 return "IDS_CAM_BODY_OFF";
8164 case CAM_MENU_TIMER_2SEC:
8165 return "IDS_CAM_BODY_2_SEC";
8166 case CAM_MENU_TIMER_5SEC:
8167 return "IDS_CAM_BODY_5_SEC";
8168 case CAM_MENU_TIMER_10SEC:
8169 return "IDS_CAM_BODY_10_SEC";
8170 case CAM_MENU_VOLUME_KEY_ZOOM:
8171 return "IDS_CAM_MBODY_THE_ZOOM_KEY";
8172 case CAM_MENU_VOLUME_KEY_SHUTTER:
8173 return "IDS_CAM_MBODY_THE_CAMERA_KEY";
8179 #define SUB_MENU_MAX_COUNT (5)
8180 #define SUB_MENU_2_COUNT_GAP (35)
8181 #define SUB_MENU_3_COUNT_GAP (30)
8182 #define SUB_MENU_4_COUNT_GAP (25)
8183 #define SUB_MENU_5_COUNT_GAP (15)
8185 static int __get_sub_menu_height(int count)
8189 height = SUB_MENU_POPUP_HEIGHT;
8191 height = (int)(SUB_MENU_POPUP_HEIGHT * count/SUB_MENU_MAX_COUNT);
8194 height += SUB_MENU_2_COUNT_GAP;
8197 height += SUB_MENU_3_COUNT_GAP;
8200 height += SUB_MENU_4_COUNT_GAP;
8203 height += SUB_MENU_5_COUNT_GAP;
8210 static void __photo_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8212 cam_retm_if(obj == NULL, "obj is NULL");
8213 struct appdata *ad = (struct appdata *)cam_appdata_get();
8214 cam_retm_if(ad == NULL, "appdata is NULL");
8215 CamAppData *camapp = ad->camapp_handle;
8216 cam_retm_if(camapp == NULL, "camapp is NULL");
8220 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8222 /* set resolution value */
8223 if (camapp->photo_resolution != resolution) {
8225 CAM_GVALUE_SET_INT(value, resolution);
8226 if (!cam_handle_value_set(ad, PROP_PHOTO_RESOLUTION, &value)) {
8227 DEBUG_TRACE("set photo resolution failed!");
8231 __update_menubar_icon_by_index(ad, CAM_MENU_PHOTO_RESOLUTION);
8232 if (ad->setting_select_item)
8233 elm_genlist_item_update(ad->setting_select_item);
8235 setting_ctxpopup_destroy(ad);
8236 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8239 static void __video_resolution_popup_cb(void *data, Evas_Object *obj, void *event_info)
8241 cam_retm_if(obj == NULL, "obj is NULL");
8242 struct appdata *ad = (struct appdata *)cam_appdata_get();
8243 cam_retm_if(ad == NULL, "appdata is NULL");
8244 CamAppData *camapp = ad->camapp_handle;
8245 cam_retm_if(camapp == NULL, "camapp is NULL");
8249 int resolution = cam_convert_menu_item_to_mmfw_value((int)data);
8251 /* set resolution value */
8252 if (camapp->video_resolution != resolution) {
8254 CAM_GVALUE_SET_INT(value, resolution);
8255 if (!cam_handle_value_set(ad, PROP_VIDEO_RESOLUTION, &value)) {
8256 DEBUG_TRACE("set video resolution failed!");
8260 __update_menubar_icon_by_index(ad, CAM_MENU_VIDEO_RESOLUTION);
8261 if (ad->setting_select_item)
8262 elm_genlist_item_update(ad->setting_select_item);
8264 setting_ctxpopup_destroy(ad);
8265 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
8268 void cam_toolbar_show_cafbutton(struct appdata *ad, gboolean show)
8270 cam_retm_if(ad == NULL, "appdata is NULL");
8273 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_NORMAL);
8276 __toolbar_cafbutton_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE);
8280 static void __update_setting_popup(void* data)
8283 struct appdata *ad = data;
8284 cam_retm_if(ad == NULL, "appdata is NULL");
8286 Elm_Object_Item *it = NULL;
8287 it = elm_genlist_first_item_get(ad->genlist);
8290 CAM_MENU_ITEM item = (CAM_MENU_ITEM)elm_object_item_data_get(it);
8291 gboolean cap_enable = cam_is_enabled_menu(ad,item);
8292 gboolean cur_state = elm_object_item_disabled_get(it);
8293 DEBUG_TRACE("cap_enable %d", cap_enable);
8294 DEBUG_TRACE("cur_state %d", cap_enable);
8295 if(cap_enable == cur_state) {
8296 DEBUG_TRACE("cur_state|cap_enable %d", cap_enable|cur_state);
8297 elm_object_item_disabled_set(it, !cap_enable);
8298 elm_genlist_item_update(it);
8301 it = elm_genlist_item_next_get(it);
8307 static void __set_show_state_preview_obj(void *data, gboolean show)
8309 struct appdata *ad = data;
8310 cam_retm_if(ad == NULL, "appdata is NULL");
8313 cam_app_focus_guide_update(ad);
8314 cam_indicator_set_show_state(ad, TRUE);
8316 if (ad->guideline_edje)
8317 evas_object_show(ad->guideline_edje);
8319 if (ad->shot_mode_guide_popup)
8320 evas_object_show(ad->shot_mode_guide_popup);
8322 edje_object_signal_emit(_EDJ(ad->focus_edje), "focus,hide", "program");
8323 cam_indicator_set_show_state(ad, FALSE);
8325 if (ad->guideline_edje)
8326 evas_object_hide(ad->guideline_edje);
8328 if (ad->shot_mode_guide_popup)
8329 evas_object_hide(ad->shot_mode_guide_popup);