2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "cam_menu_composer.h"
21 #include "cam_debug.h"
22 #include "cam_capacity_type.h"
23 #include "cam_device_capacity.h"
26 const CAM_MENU_ITEM setting[] = {CAM_MENU_SHORTCUTS , CAM_MENU_VOLUME_KEY , CAM_MENU_BURST_SHOT_MODE , CAM_MENU_SELF_PORTRAIT , CAM_MENU_FLASH , CAM_MENU_SHOOTING_MODE
27 , CAM_MENU_RECORDING_MODE , CAM_MENU_SCENE_MODE , CAM_MENU_EXPLOSURE_VALUE , CAM_MENU_FOCUS_MODE , CAM_MENU_TIMER
28 , CAM_MENU_EFFECTS , CAM_MENU_PHOTO_RESOLUTION , CAM_MENU_VIDEO_RESOLUTION , CAM_MENU_WHITE_BALANCE , CAM_MENU_ISO
29 , CAM_MENU_METERING , CAM_MENU_ANTI_SHAKE , CAM_MENU_OUTDOOR_VISIBILITY , CAM_MENU_AUTO_CONTRAST , CAM_MENU_GUIDELINES
30 , CAM_MENU_CAPTURE_VOICE , CAM_MENU_GPS_TAG , CAM_MENU_SAVE_AS_FLIP , CAM_MENU_STORAGE , CAM_MENU_RESET};
32 const CAM_MENU_ITEM scene_mode[] = {CAM_MENU_SCENE_AUTO , CAM_MENU_SCENE_PORTRAIT , CAM_MENU_SCENE_LANDSCAPE , CAM_MENU_SCENE_NIGHT , CAM_MENU_SCENE_SPORTS
33 , CAM_MENU_SCENE_PARTY , CAM_MENU_SCENE_BEACHSNOW , CAM_MENU_SCENE_SUNSET , CAM_MENU_SCENE_DUSKDAWN, CAM_MENU_SCENE_FALL
34 , CAM_MENU_SCENE_FIREWORK , CAM_MENU_SCENE_TEXT , CAM_MENU_SCENE_CANDLELIGHT, CAM_MENU_SCENE_BACKLIGHT, CAM_MENU_SCENE_SHOW_WINDOW};
36 const CAM_MENU_ITEM shooting_mode[] = {CAM_MENU_SHOOTING_SINGLE, CAM_MENU_SHOOTING_SELF_SINGLE};
38 const CAM_MENU_ITEM recording_mode[] = {CAM_MENU_RECORDING_MODE_NORMAL, CAM_MENU_RECORDING_MODE_SLOW, CAM_MENU_RECORDING_MODE_FAST, CAM_MENU_RECORDING_MODE_LIMIT,
39 CAM_MENU_RECORDING_MODE_SELF_NORMAL, CAM_MENU_RECORDING_MODE_SELF_LIMIT};
41 const CAM_MENU_ITEM photo_resolution[] = {CAM_MENU_PHOTO_RESOLUTION_3264x2448 , CAM_MENU_PHOTO_RESOLUTION_3264x1960 , CAM_MENU_PHOTO_RESOLUTION_3264x1836 , CAM_MENU_PHOTO_RESOLUTION_2560x1920
42 , CAM_MENU_PHOTO_RESOLUTION_2560x1536 , CAM_MENU_PHOTO_RESOLUTION_2560x1440 , CAM_MENU_PHOTO_RESOLUTION_2048x1536 , CAM_MENU_PHOTO_RESOLUTION_2048x1152
43 , CAM_MENU_PHOTO_RESOLUTION_1920x1080 , CAM_MENU_PHOTO_RESOLUTION_1600x1200 , CAM_MENU_PHOTO_RESOLUTION_1392x1392 , CAM_MENU_PHOTO_RESOLUTION_1280x960
44 , CAM_MENU_PHOTO_RESOLUTION_1280x720 , CAM_MENU_PHOTO_RESOLUTION_640x480};
46 const CAM_MENU_ITEM video_resolution[] = {CAM_MENU_VIDEO_RESOLUTION_FULLHD , CAM_MENU_VIDEO_RESOLUTION_HD , CAM_MENU_VIDEO_RESOLUTION_WVGA, CAM_MENU_VIDEO_RESOLUTION_VGA
47 , CAM_MENU_VIDEO_RESOLUTION_QVGA , CAM_MENU_VIDEO_RESOLUTION_QCIF};
49 const CAM_MENU_ITEM wb[] = {CAM_MENU_WB_AWB , CAM_MENU_WB_INCANDESCENT , CAM_MENU_WB_FLUORESCENT , CAM_MENU_WB_DAYLIGHT
50 , CAM_MENU_WB_CLOUDY , CAM_MENU_WB_SHADE , CAM_MENU_WB_HORIZON , CAM_MENU_WB_FLASH
51 , CAM_MENU_WB_CUSTOM};
53 const CAM_MENU_ITEM effect[] = {CAM_MENU_EFFECT_NONE , CAM_MENU_EFFECT_NEGATIVE , CAM_MENU_EFFECT_BLACKANDWHITE , CAM_MENU_EFFECT_SEPIA };
55 const CAM_MENU_ITEM focus_mode[] = {CAM_MENU_FOCUS_AUTO , CAM_MENU_FOCUS_MACRO , CAM_MENU_FOCUS_FACE_DETECTION };
57 const CAM_MENU_ITEM flash[] = {CAM_MENU_FLASH_OFF , CAM_MENU_FLASH_ON , CAM_MENU_FLASH_AUTO };
59 const CAM_MENU_ITEM metering[] = {CAM_MENU_METERING_MATRIX , CAM_MENU_METERING_CENTER_WEIGHTED , CAM_MENU_METERING_SPOT };
61 const CAM_MENU_ITEM iso[] = {CAM_MENU_ISO_AUTO , CAM_MENU_ISO_50 ,CAM_MENU_ISO_100, CAM_MENU_ISO_200
62 ,CAM_MENU_ISO_400 , CAM_MENU_ISO_80O, CAM_MENU_ISO_1600, CAM_MENU_ISO_320O};
64 const CAM_MENU_ITEM storage[] = {CAM_MENU_STORAGE_PHONE, CAM_MENU_STORAGE_MMC};
65 const CAM_MENU_ITEM timer[] = {CAM_MENU_TIMER_OFF,CAM_MENU_TIMER_2SEC, CAM_MENU_TIMER_5SEC,CAM_MENU_TIMER_10SEC};
66 const CAM_MENU_ITEM volume_key[] = {CAM_MENU_VOLUME_KEY_ZOOM, CAM_MENU_VOLUME_KEY_SHUTTER};
69 static gboolean __is_enabled_burstshot(void *data);
70 static gboolean __is_enabled_flash(void* data);
71 static gboolean __is_enabled_shooting_mode(void* data);
72 static gboolean __is_enabled_recording_mode(void* data);
73 static gboolean __is_enabled_scene_mode(void* data);
74 static gboolean __is_enabled_explosure_value(void* data);
75 static gboolean __is_enabled_focus_mode(void* data);
76 static gboolean __is_enabled_timer(void* data);
77 static gboolean __is_enabled_effects(void* data);
78 static gboolean __is_enabled_photo_resolution(void* data);
79 static gboolean __is_enabled_video_resolution(void* data);
80 static gboolean __is_enabled_white_balance(void* data);
81 static gboolean __is_enabled_iso(void* data);
82 static gboolean __is_enabled_metering(void* data);
83 static gboolean __is_enabled_anti_shake(void* data);
84 static gboolean __is_enabled_rec_anti_shake(void* data);
85 static gboolean __is_enabled_outdoor_visibility(void* data);
86 static gboolean __is_enabled_auto_contrast(void* data);
87 static gboolean __is_enabled_capture_voice(void* data);
88 static gboolean __is_enabled_gps_tag(void* data);
89 static gboolean __is_enalbed_storage(void* data);
90 static gboolean __is_enabled_self_mode(void* data);
91 static gboolean __is_enabled_save_as_flip(void *data);
94 void cam_compose_setting_menu(void *data, cam_menu_composer* composer)
96 struct appdata *ad = (struct appdata *)data;
97 cam_retm_if(ad == NULL, "appdata is NULL");
98 CamAppData *camapp = ad->camapp_handle;
99 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
101 cam_retm_if(composer == NULL, "composer is NULL");
103 composer->title = strdup(dgettext(PACKAGE, "IDS_CAM_BODY_SETTINGS"));
104 composer->array = eina_array_new(25);
105 if (!(composer->array)) {
106 cam_critical(LOG_CAM, "could not create new eina array");
110 eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
112 unsigned int capacity = 0;
113 GetCamDevFuncCaps(&capacity, data);
116 eina_array_push(composer->array, (void*)&setting[0]);
118 /* Use volume key as */
119 eina_array_push(composer->array, (void*)&setting[1]);
121 if(capacity & CAM_CP_FUNC_BURST_SHOT_MODE)
122 eina_array_push(composer->array, (void*)&setting[2]);
124 if(capacity & CAM_CP_FUNC_SELF_MODE)
125 eina_array_push(composer->array, (void*)&setting[3]);
127 if(capacity & CAM_CP_FUNC_FLASH_MODE)
128 eina_array_push(composer->array, (void*)&setting[4]);
130 if(capacity & CAM_CP_FUNC_SHOT_MODE)
131 eina_array_push(composer->array, (void*)&setting[5]);
133 if(capacity & CAM_CP_FUNC_REC_MODE)
134 eina_array_push(composer->array, (void*)&setting[6]);
136 if(capacity & CAM_CP_FUNC_SCENE_MODE)
137 eina_array_push(composer->array, (void*)&setting[7]);
139 if(capacity & CAM_CP_FUNC_EXPOSURE)
140 eina_array_push(composer->array, (void*)&setting[8]);
142 if(capacity & CAM_CP_FUNC_FOCUS_MODE)
143 eina_array_push(composer->array, (void*)&setting[9]);
146 eina_array_push(composer->array, (void*)&setting[10]);
148 if(capacity & CAM_CP_FUNC_EFFECT_MODE)
149 eina_array_push(composer->array, (void*)&setting[11]);
151 if(capacity & CAM_CP_FUNC_CAM_RESOLUTION)
152 eina_array_push(composer->array, (void*)&setting[12]);
154 if(capacity & CAM_CP_FUNC_REC_RESOLUTION)
155 eina_array_push(composer->array, (void*)&setting[13]);
157 if(capacity & CAM_CP_FUNC_WHITE_BALANCE)
158 eina_array_push(composer->array, (void*)&setting[14]);
160 if(capacity & CAM_CP_FUNC_ISO)
161 eina_array_push(composer->array, (void*)&setting[15]);
163 if(capacity & CAM_CP_FUNC_METERING)
164 eina_array_push(composer->array, (void*)&setting[16]);
166 if(capacity & CAM_CP_FUNC_CAM_ANS)
167 eina_array_push(composer->array, (void*)&setting[17]);
169 if(capacity & CAM_CP_FUNC_OUTDOOR)
170 eina_array_push(composer->array, (void*)&setting[18]);
172 if(capacity & CAM_CP_FUNC_AUTO_CONTRAST)
173 eina_array_push(composer->array, (void*)&setting[19]);
176 eina_array_push(composer->array, (void*)&setting[20]);
178 /* Capture with voice */
179 // eina_array_push(composer->array, (void*)&setting[21]);
181 if(capacity & CAM_CP_FUNC_GPS)
182 eina_array_push(composer->array, (void*)&setting[22]);
184 // eina_array_push(composer->array, (void*)&setting[23]);
186 if(capacity & CAM_CP_FUNC_STORAGE)
187 eina_array_push(composer->array, (void*)&setting[24]);
190 eina_array_push(composer->array, (void*)&setting[25]);
194 void cam_compose_list_menu(void *data, int menu_type, cam_menu_composer* composer)
196 struct appdata *ad = (struct appdata *)data;
197 cam_retm_if(ad == NULL, "appdata is NULL");
198 CamAppData *camapp = ad->camapp_handle;
199 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
201 cam_retm_if(composer == NULL, "composer is NULL");
203 switch((CAM_MENU_ITEM)menu_type)
205 case CAM_MENU_VOLUME_KEY:
206 cam_compose_menu_volume_key(data, composer);
208 case CAM_MENU_SHOOTING_MODE:
209 cam_compose_menu_shooting_mode(data, composer);
212 cam_compose_menu_flash(data, composer);
214 case CAM_MENU_RECORDING_MODE:
215 cam_compose_menu_recording_mode(data, composer);
217 case CAM_MENU_PHOTO_RESOLUTION:
218 cam_compose_menu_photo_resolution(data, composer);
220 case CAM_MENU_VIDEO_RESOLUTION:
221 cam_compose_menu_video_resolution(data, composer);
224 cam_compose_menu_iso(data, composer);
226 case CAM_MENU_FOCUS_MODE:
227 cam_compose_menu_focus_mode(data, composer);
230 cam_compose_menu_timer_mode(data, composer);
232 case CAM_MENU_SCENE_MODE:
233 cam_compose_menu_scene_mode(data, composer);
235 case CAM_MENU_WHITE_BALANCE:
236 cam_compose_menu_wb(data, composer);
238 case CAM_MENU_EFFECTS:
239 cam_compose_menu_effect(data, composer);
241 case CAM_MENU_METERING:
242 cam_compose_menu_metering(data, composer);
244 case CAM_MENU_STORAGE:
245 cam_compose_menu_storage(data, composer);
248 cam_debug(LOG_UI, "invalid menu type");
253 void cam_compose_menu_shooting_mode(void *data, cam_menu_composer* composer)
255 cam_retm_if(composer == NULL, "composer is NULL");
257 struct appdata *ad = (struct appdata *)data;
258 cam_retm_if(ad == NULL, "appdata is NULL");
259 CamAppData *camapp = ad->camapp_handle;
260 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
262 composer->array = eina_array_new(10);
263 if (!(composer->array)) {
264 cam_critical(LOG_CAM, "could not create new eina array");
267 eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
269 unsigned int capacity = 0;
270 GetCamDevShotModeCaps(&capacity, data);
272 if(camapp->device_type == CAM_DEVICE_MEGA){
273 if(capacity & CAM_CP_SHOT_MODE_SINGLE)
274 eina_array_push(composer->array, (void*)&shooting_mode[0]);
277 if(capacity & CAM_CP_SHOT_MODE_SINGLE)
278 eina_array_push(composer->array, (void*)&shooting_mode[9]);
282 void cam_compose_menu_scene_mode(void *data, cam_menu_composer* composer)
284 cam_retm_if(composer == NULL, "composer is NULL");
286 composer->array = eina_array_new(15);
287 if (!(composer->array)) {
288 cam_critical(LOG_CAM, "could not create new eina array");
292 eina_array_step_set(composer->array, sizeof(*(composer->array)), 20);
294 unsigned int capacity = 0;
295 GetCamDevSceneModeCaps(&capacity, data);
297 if(capacity & CAM_CP_SCENE_MODE_AUTO)
298 eina_array_push(composer->array, (void*)&scene_mode[0]);
300 if(capacity & CAM_CP_SCENE_MODE_PORTRAIT)
301 eina_array_push(composer->array, (void*)&scene_mode[1]);
303 if(capacity & CAM_CP_SCENE_MODE_LANDSCAPE)
304 eina_array_push(composer->array, (void*)&scene_mode[2]);
306 if(capacity & CAM_CP_SCENE_MODE_NIGHTSHOT)
307 eina_array_push(composer->array, (void*)&scene_mode[3]);
309 if(capacity & CAM_CP_SCENE_MODE_SPORTS)
310 eina_array_push(composer->array, (void*)&scene_mode[4]);
312 if(capacity & CAM_CP_SCENE_MODE_PARTY_AND_INDOOR)
313 eina_array_push(composer->array, (void*)&scene_mode[5]);
315 if(capacity & CAM_CP_SCENE_MODE_BEACH_AND_SNOW)
316 eina_array_push(composer->array, (void*)&scene_mode[6]);
318 if(capacity & CAM_CP_SCENE_MODE_SUNSET)
319 eina_array_push(composer->array, (void*)&scene_mode[7]);
321 if(capacity & CAM_CP_SCENE_MODE_DUSK_AND_DAWN)
322 eina_array_push(composer->array, (void*)&scene_mode[8]);
324 if(capacity & CAM_CP_SCENE_MODE_FALLCOLOR)
325 eina_array_push(composer->array, (void*)&scene_mode[9]);
327 if(capacity & CAM_CP_SCENE_MODE_FIREWORK)
328 eina_array_push(composer->array, (void*)&scene_mode[10]);
330 if(capacity & CAM_CP_SCENE_MODE_TEXT)
331 eina_array_push(composer->array, (void*)&scene_mode[11]);
333 if(capacity & CAM_CP_SCENE_MODE_CANDLE_LIGHT)
334 eina_array_push(composer->array, (void*)&scene_mode[12]);
336 if(capacity & CAM_CP_SCENE_MODE_BACK_LIGHT)
337 eina_array_push(composer->array, (void*)&scene_mode[13]);
339 if(capacity & CAM_CP_SCENE_MODE_SHOW_WINDOW)
340 eina_array_push(composer->array, (void*)&scene_mode[14]);
343 void cam_compose_menu_photo_resolution(void *data, cam_menu_composer* composer)
345 cam_retm_if(composer == NULL, "composer is NULL");
347 composer->array = eina_array_new(10);
348 if (!(composer->array)) {
349 cam_critical(LOG_CAM, "could not create new eina array");
352 eina_array_step_set(composer->array, sizeof(*(composer->array)), 15);
354 unsigned int capacity = 0;
355 GetCamDevCamResolutionCaps(&capacity, data);
358 if(capacity & CAM_CP_SIZE_3264X2448)
359 eina_array_push(composer->array, (void*)&photo_resolution[0]);
361 if(capacity & CAM_CP_SIZE_3264X1960)
362 eina_array_push(composer->array, (void*)&photo_resolution[1]);
364 if(capacity & CAM_CP_SIZE_3264X1836)
365 eina_array_push(composer->array, (void*)&photo_resolution[2]);
367 if(capacity & CAM_CP_SIZE_2560X1920)
368 eina_array_push(composer->array, (void*)&photo_resolution[3]);
370 if(capacity & CAM_CP_SIZE_2560X1536)
371 eina_array_push(composer->array, (void*)&photo_resolution[4]);
373 if(capacity & CAM_CP_SIZE_2560X1440)
374 eina_array_push(composer->array, (void*)&photo_resolution[5]);
376 if(capacity & CAM_CP_SIZE_2048X1536)
377 eina_array_push(composer->array, (void*)&photo_resolution[6]);
379 if(capacity & CAM_CP_SIZE_2048X1152)
380 eina_array_push(composer->array, (void*)&photo_resolution[7]);
382 if(capacity & CAM_CP_SIZE_1920X1080)
383 eina_array_push(composer->array, (void*)&photo_resolution[8]);
385 if(capacity & CAM_CP_SIZE_1600X1200)
386 eina_array_push(composer->array, (void*)&photo_resolution[9]);
388 if(capacity & CAM_CP_SIZE_1392X1392)
389 eina_array_push(composer->array, (void*)&photo_resolution[10]);
391 if(capacity & CAM_CP_SIZE_1280X960)
392 eina_array_push(composer->array, (void*)&photo_resolution[11]);
394 if(capacity & CAM_CP_SIZE_1280X720)
395 eina_array_push(composer->array, (void*)&photo_resolution[12]);
397 if(capacity & CAM_CP_SIZE_640X480)
398 eina_array_push(composer->array, (void*)&photo_resolution[13]);
400 int size = eina_array_count(composer->array);
401 cam_critical(LOG_MM, "size %d ",size );
404 void cam_compose_menu_video_resolution(void *data, cam_menu_composer* composer)
406 cam_retm_if(composer == NULL, "composer is NULL");
408 composer->array = eina_array_new(10);
409 if (!(composer->array)) {
410 cam_critical(LOG_CAM, "could not create new eina array");
413 eina_array_step_set(composer->array, sizeof(*(composer->array)), 5);
415 unsigned int capacity = 0;
416 GetCamDevRecResolutionCaps(&capacity, data);
418 if(capacity & CAM_CP_SIZE_1920X1080)
419 eina_array_push(composer->array, (void*)&video_resolution[0]);
421 if(capacity & CAM_CP_SIZE_1280X720)
422 eina_array_push(composer->array, (void*)&video_resolution[1]);
424 if(capacity & CAM_CP_SIZE_720X480)
425 eina_array_push(composer->array, (void*)&video_resolution[2]);
427 if(capacity & CAM_CP_SIZE_640X480)
428 eina_array_push(composer->array, (void*)&video_resolution[3]);
430 if(capacity & CAM_CP_SIZE_320X240)
431 eina_array_push(composer->array, (void*)&video_resolution[4]);
433 int size = eina_array_count(composer->array);
434 cam_critical(LOG_MM, "size %d ",size );
437 void cam_compose_menu_effect(void *data, cam_menu_composer* composer)
439 cam_retm_if(composer == NULL, "composer is NULL");
441 composer->array = eina_array_new(5);
442 if (!(composer->array)) {
443 cam_critical(LOG_CAM, "could not create new eina array");
446 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
448 unsigned int capacity = 0;
449 GetCamDevEffectCaps(&capacity, data);
451 if(capacity & CAM_CP_EFFECT_NONE)
452 eina_array_push(composer->array, (void*)&effect[0]);
454 if(capacity & CAM_CP_EFFECT_NEGATIVE)
455 eina_array_push(composer->array, (void*)&effect[1]);
457 if(capacity & CAM_CP_EFFECT_MONO)
458 eina_array_push(composer->array, (void*)&effect[2]);
460 if(capacity & CAM_CP_EFFECT_SEPIA)
461 eina_array_push(composer->array, (void*)&effect[3]);
464 void cam_compose_menu_wb(void *data, cam_menu_composer* composer)
466 cam_retm_if(composer == NULL, "composer is NULL");
468 composer->array = eina_array_new(5);
469 if (!(composer->array)) {
470 cam_critical(LOG_CAM, "could not create new eina array");
473 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
475 unsigned int capacity = 0;
476 GetCamDevWBCaps(&capacity, data);
478 if(capacity & CAM_CP_WB_AUTO)
479 eina_array_push(composer->array, (void*)&wb[0]);
481 if(capacity & CAM_CP_WB_INCANDESCENT)
482 eina_array_push(composer->array, (void*)&wb[1]);
484 if(capacity & CAM_CP_WB_FLUORESCENT)
485 eina_array_push(composer->array, (void*)&wb[2]);
487 if(capacity & CAM_CP_WB_DAYLIGHT)
488 eina_array_push(composer->array, (void*)&wb[3]);
490 if(capacity & CAM_CP_WB_CLOUDY)
491 eina_array_push(composer->array, (void*)&wb[4]);
493 if(capacity & CAM_CP_WB_SHADE)
494 eina_array_push(composer->array, (void*)&wb[5]);
496 if(capacity & CAM_CP_WB_HORIZON)
497 eina_array_push(composer->array, (void*)&wb[6]);
499 if(capacity & CAM_CP_WB_FLASH)
500 eina_array_push(composer->array, (void*)&wb[7]);
502 if(capacity & CAM_CP_WB_CUSTOM)
503 eina_array_push(composer->array, (void*)&wb[8]);
506 void cam_compose_menu_focus_mode(void *data, cam_menu_composer* composer)
508 struct appdata *ad = (struct appdata *)data;
509 cam_retm_if(ad == NULL, "appdata is NULL");
510 CamAppData *camapp = ad->camapp_handle;
511 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
513 cam_retm_if(composer == NULL, "composer is NULL");
515 composer->array = eina_array_new(5);
516 if (!(composer->array)) {
517 cam_critical(LOG_CAM, "could not create new eina array");
520 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
522 unsigned int capacity = 0;
523 GetCamDevFocusCaps(&capacity, data);
525 if(capacity & CAM_CP_FOCUS_AUTO_FOCUS)
526 eina_array_push(composer->array, (void*)&focus_mode[0]);
528 if(capacity & CAM_CP_FOCUS_MACRO)
529 eina_array_push(composer->array, (void*)&focus_mode[1]);
531 if(!(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
532 && camapp->camera_mode == CAM_CAMCORDER_MODE)){
533 if(capacity & CAM_CP_FOCUS_FACE_DETECTION)
534 eina_array_push(composer->array, (void*)&focus_mode[2]);
538 void cam_compose_menu_iso(void *data, cam_menu_composer* composer)
540 cam_retm_if(composer == NULL, "composer is NULL");
542 composer->array = eina_array_new(10);
543 if (!(composer->array)) {
544 cam_critical(LOG_CAM, "could not create new eina array");
547 eina_array_step_set(composer->array, sizeof(*(composer->array)), 15);
549 unsigned int capacity = 0;
550 GetCamDevISOCaps(&capacity, data);
552 if(capacity & CAM_CP_ISO_AUTO)
553 eina_array_push(composer->array, (void*)&iso[0]);
555 if(capacity & CAM_CP_ISO_50)
556 eina_array_push(composer->array, (void*)&iso[1]);
558 if(capacity & CAM_CP_ISO_100)
559 eina_array_push(composer->array, (void*)&iso[2]);
561 if(capacity & CAM_CP_ISO_200)
562 eina_array_push(composer->array, (void*)&iso[3]);
564 if(capacity & CAM_CP_ISO_400)
565 eina_array_push(composer->array, (void*)&iso[4]);
567 if(capacity & CAM_CP_ISO_800)
568 eina_array_push(composer->array, (void*)&iso[5]);
571 if(capacity & CAM_CP_ISO_1600)
572 eina_array_push(composer->array, (void*)&iso[6]);
574 if(capacity & CAM_CP_ISO_3200)
575 eina_array_push(composer->array, (void*)&iso[7]);
579 void cam_compose_menu_metering(void *data, cam_menu_composer* composer)
581 cam_retm_if(composer == NULL, "composer is NULL");
583 composer->array = eina_array_new(5);
584 if (!(composer->array)) {
585 cam_critical(LOG_CAM, "could not create new eina array");
588 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
590 unsigned int capacity = 0;
591 GetCamDevMeteringCaps(&capacity, data);
593 if(capacity & CAM_CP_METERING_MATRIX)
594 eina_array_push(composer->array, (void*)&metering[0]);
596 if(capacity & CAM_CP_METERING_CENTERWEIGHT)
597 eina_array_push(composer->array, (void*)&metering[1]);
599 if(capacity & CAM_CP_METERING_SPOT)
600 eina_array_push(composer->array, (void*)&metering[2]);
604 void cam_compose_menu_recording_mode(void *data, cam_menu_composer* composer)
606 cam_retm_if(composer == NULL, "composer is NULL");
608 struct appdata *ad = (struct appdata *)data;
609 cam_retm_if(ad == NULL, "appdata is NULL");
610 CamAppData *camapp = ad->camapp_handle;
611 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
613 composer->array = eina_array_new(5);
614 if (!(composer->array)) {
615 cam_critical(LOG_CAM, "could not create new eina array");
618 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
620 unsigned int capacity = 0;
621 GetCamDevRecModeCaps(&capacity, NULL);
623 if(camapp->device_type == CAM_DEVICE_MEGA){
624 if(capacity & CAM_CP_REC_MODE_NORMAL)
625 eina_array_push(composer->array, (void*)&recording_mode[0]);
627 if(capacity & CAM_CP_REC_MODE_SLOW_MOTION)
628 eina_array_push(composer->array, (void*)&recording_mode[1]);
630 if(capacity & CAM_CP_REC_MODE_FAST_MOTION)
631 eina_array_push(composer->array, (void*)&recording_mode[2]);
633 if(capacity & CAM_CP_REC_MODE_MMS)
634 eina_array_push(composer->array, (void*)&recording_mode[3]);
636 if(capacity & CAM_CP_REC_MODE_NORMAL)
637 eina_array_push(composer->array, (void*)&recording_mode[4]);
639 if(capacity & CAM_CP_REC_MODE_MMS)
640 eina_array_push(composer->array, (void*)&recording_mode[5]);
645 void cam_compose_menu_flash(void *data, cam_menu_composer* composer)
647 struct appdata *ad = (struct appdata *)data;
648 cam_ret_if(ad == NULL);
650 CamAppData *camapp = NULL;
651 camapp = ad->camapp_handle;
652 cam_retm_if(camapp == NULL, "camapp_handle is NULL");
654 cam_retm_if(composer == NULL, "composer is NULL");
656 composer->array = eina_array_new(5);
657 if (!(composer->array)) {
658 cam_critical(LOG_CAM, "could not create new eina array");
661 eina_array_step_set(composer->array, sizeof(*(composer->array)), 10);
663 unsigned int capacity = 0;
664 GetCamDevFlashCaps(&capacity, data);
666 if(capacity & CAM_CP_FLASH_OFF)
667 eina_array_push(composer->array, (void*)&flash[0]);
669 if(capacity & CAM_CP_FLASH_ON)
670 eina_array_push(composer->array, (void*)&flash[1]);
672 if(camapp->camera_mode == CAM_CAMERA_MODE){
673 if(capacity & CAM_CP_FLASH_AUTO)
674 eina_array_push(composer->array, (void*)&flash[2]);
679 void cam_compose_menu_timer_mode(void *data, cam_menu_composer* composer)
681 cam_retm_if(composer == NULL, "composer is NULL");
683 composer->array = eina_array_new(4);
684 if (!(composer->array)) {
685 cam_critical(LOG_CAM, "could not create new eina array");
688 eina_array_step_set(composer->array, sizeof(*(composer->array)), 8);
690 eina_array_push(composer->array, (void*)&timer[0]);
691 eina_array_push(composer->array, (void*)&timer[1]);
692 eina_array_push(composer->array, (void*)&timer[2]);
693 eina_array_push(composer->array, (void*)&timer[3]);
696 void cam_compose_menu_storage(void* data, cam_menu_composer* composer)
698 cam_retm_if(composer == NULL, "composer is NULL");
700 composer->array = eina_array_new(2);
701 if (!(composer->array)) {
702 cam_critical(LOG_CAM, "could not create new eina array");
705 eina_array_step_set(composer->array, sizeof(*(composer->array)), 4);
707 eina_array_push(composer->array, (void*)&storage[0]);
708 eina_array_push(composer->array, (void*)&storage[1]);
711 void cam_compose_menu_volume_key(void* data, cam_menu_composer* composer)
713 cam_retm_if(composer == NULL, "composer is NULL");
715 composer->array = eina_array_new(2);
716 if (!(composer->array)) {
717 cam_critical(LOG_CAM, "could not create new eina array");
720 eina_array_step_set(composer->array, sizeof(*(composer->array)), 2);
722 eina_array_push(composer->array, (void*)&volume_key[0]);
723 eina_array_push(composer->array, (void*)&volume_key[1]);
726 void cam_compose_free(cam_menu_composer* composer)
728 cam_ret_if(composer == NULL);
731 free(composer->title);
734 eina_array_free(composer->array);
739 gboolean cam_is_enabled_menu(void *data, const CAM_MENU_ITEM item)
741 struct appdata *ad = (struct appdata *)data;
742 cam_retv_if(ad == NULL, FALSE);
745 case CAM_MENU_SHORTCUTS:
747 case CAM_MENU_BURST_SHOT_MODE:
748 return __is_enabled_burstshot((void*)ad);
749 case CAM_MENU_SELF_PORTRAIT:
750 return __is_enabled_self_mode((void*)ad);
752 return __is_enabled_flash((void*)ad);
753 case CAM_MENU_SHOOTING_MODE:
754 return __is_enabled_shooting_mode((void*)ad);
755 case CAM_MENU_RECORDING_MODE:
756 return __is_enabled_recording_mode((void*)ad);
757 case CAM_MENU_SCENE_MODE:
758 return __is_enabled_scene_mode((void*)ad);
759 case CAM_MENU_EXPLOSURE_VALUE:
760 return __is_enabled_explosure_value((void*)ad);
761 case CAM_MENU_FOCUS_MODE:
762 return __is_enabled_focus_mode((void*)ad);
764 return __is_enabled_timer((void*)ad);
765 case CAM_MENU_EFFECTS:
766 return __is_enabled_effects((void*)ad);
767 case CAM_MENU_PHOTO_RESOLUTION:
768 return __is_enabled_photo_resolution((void*)ad);
769 case CAM_MENU_VIDEO_RESOLUTION:
770 return __is_enabled_video_resolution((void*)ad);
771 case CAM_MENU_WHITE_BALANCE:
772 return __is_enabled_white_balance((void*)ad);
774 return __is_enabled_iso((void*)ad);
775 case CAM_MENU_METERING:
776 return __is_enabled_metering((void*)ad);
777 case CAM_MENU_ANTI_SHAKE:
778 return __is_enabled_anti_shake((void*)ad);
779 case CAM_MENU_OUTDOOR_VISIBILITY:
780 return __is_enabled_outdoor_visibility((void*)ad);
781 case CAM_MENU_AUTO_CONTRAST:
782 return __is_enabled_auto_contrast((void*)ad);
783 case CAM_MENU_GUIDELINES:
785 case CAM_MENU_CAPTURE_VOICE:
786 return __is_enabled_capture_voice((void*)ad);
787 case CAM_MENU_SAVE_AS_FLIP:
788 return __is_enabled_save_as_flip((void*)ad);
789 case CAM_MENU_GPS_TAG:
790 return __is_enabled_gps_tag((void*)ad);
791 case CAM_MENU_STORAGE:
792 return __is_enalbed_storage((void*)ad);;
795 case CAM_MENU_VOLUME_KEY:
805 static gboolean __is_enabled_burstshot(void *data)
807 struct appdata *ad = (struct appdata *)data;
808 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
809 CamAppData *camapp = ad->camapp_handle;
810 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
812 unsigned int capacity;
813 GetCamDevFuncCaps(&capacity, NULL);
815 if (!(capacity & CAM_CP_FUNC_BURST_SHOT_MODE))
818 if ((camapp->shooting_mode != CAM_SINGLE_MODE)
819 && (camapp->shooting_mode != CAM_SELF_SINGLE_MODE))
822 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL)
828 static gboolean __is_enabled_flash(void* data)
830 struct appdata *ad = (struct appdata *)data;
831 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
832 CamAppData *camapp = ad->camapp_handle;
833 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
835 unsigned int capacity;
836 GetCamDevFuncCaps(&capacity, NULL);
838 if(!(capacity & CAM_CP_FUNC_FLASH_MODE))
841 if(ad->battery_status == LOW_BATTERY_WARNING_STATUS)
844 if(!(camapp->scene_mode == CAM_SCENE_NONE
845 || camapp->scene_mode == CAM_SCENE_PORTRAIT
846 || camapp->scene_mode == CAM_SCENE_BACKLIGHT
847 || camapp->scene_mode == CAM_SCENE_PARTY
848 || camapp->scene_mode == CAM_SCENE_TEXT) )
851 if (ad->torchlight_on)
858 static gboolean __is_enabled_shooting_mode(void* data)
860 struct appdata *ad = (struct appdata *)data;
861 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
862 CamAppData *camapp = ad->camapp_handle;
863 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
865 unsigned int capacity;
866 GetCamDevFuncCaps(&capacity, (void*)ad);
868 if(!(capacity & CAM_CP_FUNC_SHOT_MODE))
871 if (ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
872 && ad->exe_args->allow_switch == FALSE
873 && camapp->camera_mode == CAM_CAMCORDER_MODE)
879 static gboolean __is_enabled_recording_mode(void* data)
881 struct appdata *ad = (struct appdata *)data;
882 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
883 CamAppData *camapp = ad->camapp_handle;
884 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
886 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
887 && ad->exe_args->allow_switch == FALSE
888 && camapp->camera_mode == CAM_CAMERA_MODE)
891 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
892 && ad->exe_args->resolution == CAM_RESOLUTION_QCIF)
898 static gboolean __is_enabled_scene_mode(void* data)
900 struct appdata *ad = (struct appdata *)data;
901 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
902 CamAppData *camapp = ad->camapp_handle;
903 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
905 unsigned int capacity;
906 GetCamDevFuncCaps(&capacity, (void*)ad);
908 if(!(capacity & CAM_CP_FUNC_SCENE_MODE))
911 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
912 && ad->exe_args->allow_switch == FALSE
913 && camapp->camera_mode == CAM_CAMCORDER_MODE)
920 static gboolean __is_enabled_explosure_value(void* data)
922 struct appdata *ad = (struct appdata *)data;
923 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
924 CamAppData *camapp = ad->camapp_handle;
925 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
927 unsigned int capacity;
928 GetCamDevFuncCaps(&capacity, (void*)ad);
930 if(!(capacity & CAM_CP_FUNC_EXPOSURE))
933 if(camapp->scene_mode != CAM_SCENE_NONE)
940 static gboolean __is_enabled_focus_mode(void* data)
942 struct appdata *ad = (struct appdata *)data;
943 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
944 CamAppData *camapp = ad->camapp_handle;
945 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
947 unsigned int capacity;
948 GetCamDevFuncCaps(&capacity, (void*)ad);
950 if(!(capacity & CAM_CP_FUNC_FOCUS_MODE))
953 if(camapp->scene_mode != CAM_SCENE_NONE)
960 static gboolean __is_enabled_timer(void* data)
962 struct appdata *ad = (struct appdata *)data;
963 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
964 CamAppData *camapp = ad->camapp_handle;
965 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
967 unsigned int capacity;
968 GetCamDevFuncCaps(&capacity, (void*)ad);
974 static gboolean __is_enabled_effects(void* data)
976 struct appdata *ad = (struct appdata *)data;
977 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
978 CamAppData *camapp = ad->camapp_handle;
979 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
981 unsigned int capacity;
982 GetCamDevFuncCaps(&capacity, (void*)ad);
984 if(!(capacity & CAM_CP_FUNC_EFFECT_MODE))
987 if(camapp->scene_mode != CAM_SCENE_NONE)
994 static gboolean __is_enabled_photo_resolution(void* data)
996 struct appdata *ad = (struct appdata *)data;
997 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
998 CamAppData *camapp = ad->camapp_handle;
999 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1001 unsigned int capacity;
1002 GetCamDevFuncCaps(&capacity, (void*)ad);
1004 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
1005 && ad->exe_args->allow_switch == FALSE
1006 && camapp->camera_mode == CAM_CAMCORDER_MODE)
1012 static gboolean __is_enabled_video_resolution(void* data)
1014 struct appdata *ad = (struct appdata *)data;
1015 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1016 CamAppData *camapp = ad->camapp_handle;
1017 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1019 unsigned int capacity;
1020 GetCamDevFuncCaps(&capacity, (void*)ad);
1022 if(camapp->recording_mode == CAM_RECORD_MMS
1023 || camapp->recording_mode == CAM_RECORD_SELF_MMS
1024 || camapp->recording_mode == CAM_RECORD_SLOW
1025 || camapp->recording_mode == CAM_RECORD_FAST)
1028 if(ad->launching_mode == CAM_LAUNCHING_MODE_EXTERNAL
1029 && ad->exe_args->allow_switch == FALSE
1030 && camapp->camera_mode == CAM_CAMERA_MODE)
1036 static gboolean __is_enabled_white_balance(void* data)
1038 struct appdata *ad = (struct appdata *)data;
1039 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1040 CamAppData *camapp = ad->camapp_handle;
1041 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1043 unsigned int capacity;
1044 GetCamDevFuncCaps(&capacity, (void*)ad);
1046 if(!(capacity & CAM_CP_FUNC_WHITE_BALANCE))
1049 if(camapp->scene_mode != CAM_SCENE_NONE)
1055 static gboolean __is_enabled_iso(void* data)
1057 struct appdata *ad = (struct appdata *)data;
1058 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1059 CamAppData *camapp = ad->camapp_handle;
1060 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1062 unsigned int capacity;
1063 GetCamDevFuncCaps(&capacity, (void*)ad);
1065 if(!(capacity & CAM_CP_FUNC_ISO))
1068 if(camapp->scene_mode != CAM_SCENE_NONE)
1071 if(camapp->camera_mode == CAM_CAMCORDER_MODE)
1078 static gboolean __is_enabled_metering(void* data)
1080 struct appdata *ad = (struct appdata *)data;
1081 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1082 CamAppData *camapp = ad->camapp_handle;
1083 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1085 unsigned int capacity;
1086 GetCamDevFuncCaps(&capacity, (void*)ad);
1088 if(!(capacity & CAM_CP_FUNC_METERING))
1091 if(camapp->scene_mode != CAM_SCENE_NONE)
1094 if(camapp->camera_mode == CAM_CAMCORDER_MODE)
1101 static gboolean __is_enabled_anti_shake(void* data)
1103 struct appdata *ad = (struct appdata *)data;
1104 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1105 CamAppData *camapp = ad->camapp_handle;
1106 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1108 unsigned int capacity;
1109 GetCamDevFuncCaps(&capacity, (void*)ad);
1111 if (!(capacity & CAM_CP_FUNC_CAM_ANS))
1114 if (camapp->scene_mode != CAM_SCENE_NONE)
1121 static gboolean __is_enabled_rec_anti_shake(void* data)
1123 struct appdata *ad = (struct appdata *)data;
1124 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1126 unsigned int capacity;
1127 GetCamDevFuncCaps(&capacity, (void*)ad);
1129 if(!(capacity & CAM_CP_FUNC_REC_ANS))
1136 static gboolean __is_enabled_outdoor_visibility(void* data)
1138 struct appdata *ad = (struct appdata *)data;
1139 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1140 CamAppData *camapp = ad->camapp_handle;
1141 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1143 unsigned int capacity;
1144 GetCamDevFuncCaps(&capacity, (void*)ad);
1146 if(!(capacity & CAM_CP_FUNC_OUTDOOR))
1153 static gboolean __is_enabled_auto_contrast(void* data)
1155 struct appdata *ad = (struct appdata *)data;
1156 cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
1157 CamAppData *camapp = ad->camapp_handle;
1158 cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
1160 unsigned int capacity;
1161 GetCamDevFuncCaps(&capacity, (void*)ad);
1163 if(!(capacity & CAM_CP_FUNC_AUTO_CONTRAST))
1166 if(camapp->scene_mode != CAM_SCENE_NONE)
1174 static gboolean __is_enabled_self_mode(void* data)
1176 struct appdata *ad = (struct appdata *)data;
1177 cam_retv_if(ad == NULL, FALSE);
1179 unsigned int capacity;
1180 GetCamDevFuncCaps(&capacity, (void*)ad);
1182 if(!(capacity & CAM_CP_FUNC_SELF_MODE))
1189 static gboolean __is_enabled_capture_voice(void* data)
1191 struct appdata *ad = (struct appdata *)data;
1192 cam_retv_if(ad == NULL, FALSE);
1194 unsigned int capacity;
1195 GetCamDevFuncCaps(&capacity, (void*)ad);
1197 if(!(capacity & CAM_CP_FUNC_CAPTURE_VOICE))
1204 static gboolean __is_enabled_gps_tag(void* data)
1206 struct appdata *ad = (struct appdata *)data;
1207 cam_retv_if(ad == NULL, FALSE);
1209 unsigned int capacity;
1210 GetCamDevFuncCaps(&capacity, (void*)ad);
1212 if(!(capacity & CAM_CP_FUNC_GPS))
1219 static gboolean __is_enabled_save_as_flip(void *data)
1221 struct appdata *ad = (struct appdata *)data;
1222 cam_retv_if(ad == NULL, FALSE);
1224 unsigned int capacity;
1225 GetCamDevFuncCaps(&capacity, (void*)ad);
1227 if(!(capacity & CAM_CP_FUNC_SAVE_AS_FLIP))
1235 static gboolean __is_enalbed_storage(void* data)
1240 ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, ¬i_message);
1242 if ( ret != 0 ) // falied
1244 cam_debug(LOG_CAM, "Get %s is failed", VCONFKEY_SYSMAN_MMC_STATUS);
1248 if(noti_message==VCONFKEY_SYSMAN_MMC_MOUNTED)