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.
17 #include <ui-gadget-module.h> // ug_destroy_me, ug_send_result
19 #include <vconf-keys.h>
20 #include <utilX.h> // Key event
21 #include <math.h> // round
23 #include "ivug-common.h"
24 #include "ivug-parameter.h"
26 #include "ivug-main-view.h"
27 #include "ivug-main-view-toolbar.h"
28 #include "ivug-main-view-menu.h"
30 #include "ivug-filter.h"
32 #include "ivug-ext-ug.h"
34 #include "ivug-util.h"
35 #include "ivug-medialist.h"
36 #include "ivug-media.h"
38 #include "ivug-popup.h"
39 #include "ivug-selectioninfo.h"
41 #include "ivug-slider-item.h"
42 #include "ivug-slider.h"
44 #include "ivug-setas-view.h"
45 #include "ivug-name-view.h"
46 #include "ivug-details-view.h"
48 #include "ivug-listpopup.h"
49 #include "ivug-slideshow.h"
52 #include "ivug-ext-ug.h"
54 #include "ivug-drm-common.h"
58 #include "ivug-image.h"
60 #include "ivug-main-view-priv.h"
62 #undef HIDE_INDICATOR // For testing.
63 #define TEST_MOUSE_EVENT
65 #define DEFAULT_THUMBNAIL_PATH IMAGE_PATH"/T01_Nocontents_broken.png"
67 #define LONGTAP_TIMEOUT (2.0) // 2secs
70 #define IVUG_MAIN_EDJ EDJ_PATH"/ivug-main.edj"
71 ///////////////////////////////////////////////////////////////////////////////////////////////////
74 static bool _destory_slideshow_and_ug(Ivug_MainView *pMainView, int state, bool bMmc_out);
75 static void _on_slideshow_finished(void *data, Evas_Object *obj, void *event_info);
77 void _update_title(Ivug_MainView *pMainView)
79 #define MAX_TITLE_LEN 256
81 static char title[MAX_TITLE_LEN];
83 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
84 Media_Data *mdata = ivug_medialist_get_data(mitem);
88 MSG_MAIN_ERROR("slider data is NULL");
92 if (pMainView->view_by == IVUG_VIEW_BY_FOLDER
93 || pMainView->view_by == IVUG_VIEW_BY_ALL
94 || pMainView->view_by == IVUG_VIEW_BY_PLACES)
96 snprintf(title, sizeof(title), "%d/%d",
98 ivug_medialist_get_count(pMainView->mList)); //get title.
100 else if(mdata->fileurl != NULL)
102 const char* filename = ivug_get_filename(mdata->fileurl);
105 snprintf(title, sizeof(title), "%s", filename);
110 MSG_MAIN_ERROR("set Title error");
113 IV_ASSERT(pMainView->navi_bar != NULL);
115 MSG_MAIN_HIGH("Update title : %s", title);
117 elm_object_item_text_set(pMainView->navi_it, title);
123 _on_longpress_popup_selected(void *data, Evas_Object *obj, void *event_info)
125 Ivug_MainView *pMainView = (Ivug_MainView *)data;
126 IV_ASSERT(pMainView != NULL);
128 // Destroy copy popup
129 pMainView->longpress_popup = NULL; // object is removed automatically
131 int response = (int)event_info;
133 Media_Item *mtiem = ivug_slider_get_item(pMainView->slider);
134 Media_Data *mdata = ivug_medialist_get_data(mtiem);
137 MSG_MAIN_ERROR("slider data is NULL");
141 if(response == LPPOPUP_RESPONSE_COPY)
143 //get current file path.
147 // This Will add to the article
148 char buf[IVUG_MAX_FILE_PATH_LEN] = {0,};
151 path = mdata->filepath;
152 len = strlen(mdata->filepath)+strlen("file://")+1;
153 snprintf(buf, IVUG_MAX_FILE_PATH_LEN, "file://%s", mdata->filepath);
156 if (len < IVUG_MAX_FILE_PATH_LEN)
158 MSG_MAIN_HIGH("file path = %s, file url =%s", path, buf);
159 elm_cnp_selection_set(pMainView->layout, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_IMAGE, buf, sizeof(buf));
160 _ivug_selectioninfo_create(pMainView, IDS_COPIED_TO_CLIPBOARD);
164 MSG_MAIN_ERROR("slider file path is too long");
170 static Eina_Bool _on_key_down(void *user_data, int type, void *event)
173 MSG_IMAGEVIEW_ERROR("user data is NULL");
174 return ECORE_CALLBACK_PASS_ON;
177 Ivug_MainView *pMainView = (Ivug_MainView *)user_data;
179 Ecore_Event_Key *key_event = (Ecore_Event_Key *) event;
181 if (!strcmp(key_event->keyname, KEY_END))
183 MSG_IMAGEVIEW_HIGH("Bakc(End) key");
185 else if (!strcmp(key_event->keyname, KEY_SELECT))
187 MSG_IMAGEVIEW_HIGH("Home key");
189 else if (!strcmp(key_event->keyname, KEY_POWER))
191 MSG_IMAGEVIEW_HIGH("Power key");
192 if ( pMainView->ssHandle )
194 ivug_ss_stop(pMainView->ssHandle);
198 MSG_IMAGEVIEW_LOW("Key down : %s", key_event->keyname);
200 return ECORE_CALLBACK_PASS_ON;
203 static Eina_Bool _on_exit_timer_expired(void *data)
205 ivug_retv_if(!data, ECORE_CALLBACK_CANCEL);
207 Ivug_MainView *pMainView = (Ivug_MainView *)data;
209 pMainView->exit_timer = NULL;
213 return ECORE_CALLBACK_CANCEL;
216 static void _on_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
218 Ivug_MainView *pMainView = static_cast<Ivug_MainView *>(data);
219 IV_ASSERT(pMainView != NULL);
222 evas_object_geometry_get(obj, &x, &y, &w, &h);
224 * during slideshow, after rotation, resize cb of slideshow obj cannot be invoked,
225 so invoke it manually
227 if(pMainView->ssHandle)
228 ivug_ss_resize(pMainView->ssHandle);
229 MSG_MAIN_HIGH("MainView resized geomtery XYWH(%d,%d,%d,%d) Rotate=%d", x, y, w, h, gGetRotationDegree());
231 if(pMainView->ctx_popup) // when rotated context popup will disapper at EFL
233 evas_object_del(pMainView->ctx_popup);
234 pMainView->ctx_popup = NULL;
237 ivug_slider_zoom_reset(pMainView->slider);
239 pMainView->zoom_level = 1;
240 elm_slider_value_set(pMainView->zoom_slider, 1.0);
243 static bool _destory_slideshow_and_ug(Ivug_MainView *pMainView,
247 IV_ASSERT(pMainView != NULL);
248 evas_object_smart_callback_del_full(ivug_ss_object_get(pMainView->ssHandle),
249 "slideshow,finished", _on_slideshow_finished, pMainView);
251 ivug_allow_lcd_off();
252 /*from gallery ablum*/
255 if (pMainView->ssHandle)
257 MSG_MAIN_HIGH("image viewer end cause slide show ended");
258 ivug_ss_delete(pMainView->ssHandle);
259 pMainView->ssHandle = NULL;
270 void _ivug_main_on_mmc_state_changed(keynode_t* node, void *data)
272 Ivug_MainView *pMainView = (Ivug_MainView *)data;
273 if (NULL == pMainView) {
277 if ( pMainView->ext_ug )
279 MSG_IMAGEVIEW_HIGH("Extern UG is running");
282 if(pMainView->ssHandle)
284 ivug_ss_set_stop(pMainView->ssHandle);
285 _destory_slideshow_and_ug(pMainView, SLIDE_SHOW_STOPPED, true);
287 if(pMainView->exit_timer == NULL)
289 pMainView->exit_timer = ecore_timer_add(0.2, _on_exit_timer_expired, data);
294 static void _show_zoom_icon(Ivug_MainView *pMainView)
296 ivug_ret_if(!pMainView);
298 MSG_MAIN_ERROR("_show_zoom_icon");
300 /*unsigned int zoom_level = ivug_slider_zoom_level_get(pMainView->slider);
303 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,disable","elm");
304 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
306 else if(zoom_level == ZOOM_LEVEL_MAX)
308 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,disable","elm");
309 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
313 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
314 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
317 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,zoom_slider,show","elm");
320 static void _hide_zoom_icon(Ivug_MainView *pMainView)
322 ivug_ret_if(!pMainView);
324 MSG_MAIN_ERROR("_hide_zoom_icon");
326 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm");
327 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm");
328 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,zoom_slider,hide","elm");
331 static void _update_main_view(Ivug_MainView *pMainView)
333 IV_ASSERT(pMainView != NULL);
335 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
336 Media_Data *mdata = ivug_medialist_get_data(mitem);
340 MSG_MAIN_ERROR("mdata is NULL");
344 PERF_CHECK_BEGIN(LVL6, "Set menu title");
346 _update_title(pMainView);
348 PERF_CHECK_END(LVL6, "Set menu title");
350 slide_state_t state = ivug_slider_get_state(pMainView->slider);
352 if(mdata->slide_type == SLIDE_TYPE_IMAGE && mdata->bIsDRMContent == false && state != SLIDE_STATE_ERROR)
354 _show_zoom_icon(pMainView);
358 _hide_zoom_icon(pMainView);
366 _ivug_main_drm_popup_purchase_cb(void *data, Evas_Object *obj, void *event_info)
368 int response_id = (int)event_info;
369 IV_ASSERT(data != NULL);
371 Ivug_MainView *pMainView = (Ivug_MainView *)data;
373 MSG_MAIN_HIGH("DRM popup selected : %d", response_id);
375 if(response_id == POPUP_RESPONSE_CANCEL)
377 MSG_MAIN_HIGH("cancel selected");
378 #ifdef USE_SLIDE_SKIP
379 MSG_MAIN_HIGH("shift again");
380 ivug_slider_skip(pMainView->slider);
382 ivug_slider_load(pMainView->slider);
387 MSG_MAIN_HIGH("unlock process");
389 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
390 Media_Data *mdata = ivug_medialist_get_data(mitem);
392 char *url = ivug_drm_get_right_url(mdata->filepath);
395 MSG_MAIN_HIGH("path = %s, right url : %s", mdata->filepath, url);
396 ivug_ext_launch_browser(url);
401 MSG_MAIN_ERROR("ivug_drm_get_right_url error. path = %s", mdata->filepath);
408 _ivug_main_drm_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
410 int response_id = (int)event_info;
411 IV_ASSERT(data != NULL);
413 Ivug_MainView *pMainView = (Ivug_MainView *)data;
415 MSG_MAIN_HIGH("DRM popup selected : %d", response_id);
417 if(response_id == POPUP_RESPONSE_CANCEL)
419 MSG_MAIN_HIGH("cancel selected");
420 #ifdef USE_SLIDE_SKIP
421 MSG_MAIN_HIGH("shift again");
422 ivug_slider_skip(pMainView->slider);
424 ivug_slider_load(pMainView->slider);
430 ivug_slider_load(pMainView->slider);
435 void _ivug_main_view_drm_process(drm_constraints result, int info, void *data)
437 #define MAX_DBUFFER_SIZE 2048
440 Ivug_MainView *pMainView = (Ivug_MainView *)data;
442 char string[MAX_DBUFFER_SIZE] = "";
443 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
444 Media_Data *mdata = ivug_medialist_get_data(mitem);
445 slide_state_t state = ivug_slider_get_state(pMainView->slider);
449 MSG_MAIN_ERROR("mdata is NULL");
455 case IVUG_DRM_RESULT_LIMITED:
456 MSG_MAIN_HIGH("Limited");
457 snprintf(string, sizeof(string),
459 ecore_file_file_get(mdata->filepath));
460 ivug_2btn_popup_show(pMainView->layout, NULL, string, _ivug_main_drm_popup_purchase_cb, pMainView);
462 case IVUG_DRM_RESULT_UNLIMITED:
463 MSG_MAIN_HIGH("Unlimited");
464 if(state != SLIDE_STATE_LOADED)
466 ivug_slider_load(pMainView->slider);
469 case IVUG_DRM_RESULT_COUNT:
470 MSG_MAIN_HIGH("Count = %d", info);
473 ivug_slider_load(pMainView->slider);
477 snprintf(string, sizeof(string),
478 IDS_DRM_COUNT_BASED_OPEN_MANY, 2,
479 ecore_file_file_get(mdata->filepath));
480 ivug_2btn_popup_show(pMainView->layout, NULL, string, _ivug_main_drm_popup_response_cb, pMainView);
484 snprintf(string, sizeof(string),
485 IDS_DRM_COUNT_BASED_OPEN_ONE,
486 ecore_file_file_get(mdata->filepath));
487 ivug_2btn_popup_show(pMainView->layout, NULL, string, _ivug_main_drm_popup_response_cb, pMainView);
490 case IVUG_DRM_RESULT_INTERVAL_DAYS:
491 MSG_MAIN_HIGH("Interval days = %d", info);
492 snprintf(string, sizeof(string),
493 IDS_DRM_INTERVAL_BASED_DAYS,
494 ecore_file_file_get(mdata->filepath),
496 ivug_2btn_popup_show(pMainView->layout, NULL, string, _ivug_main_drm_popup_response_cb, pMainView);
498 case IVUG_DRM_RESULT_ACCUMULATED:
499 MSG_MAIN_HIGH("Accumulated time = %d", info);
501 case IVUG_DRM_RESULT_DATETIME:
502 case IVUG_DRM_RESULT_TIMED_COUNT:
503 case IVUG_DRM_RESULT_SYSTEM:
504 ivug_slider_load(pMainView->slider);
507 MSG_MAIN_WARN("Unknown resule : %d", result);
508 ivug_slider_load(pMainView->slider);
515 _on_slider_clicked(void *data, Evas_Object *obj, void *event_info)
517 MSG_MAIN_HIGH("Main View Clicked");
518 IV_ASSERT(data != NULL);
520 Ivug_MainView *pMainView = (Ivug_MainView *)data;
522 if(pMainView->bClickPrevent == true)
524 pMainView->bClickPrevent = false;
528 if (pMainView->bShowMenu)
530 ivug_main_view_hide_menu_bar(pMainView);
534 ivug_main_view_show_menu_bar(pMainView);
540 _on_slider_icon_clicked(void *data, Evas_Object *obj, void *event_info)
542 MSG_MAIN_HIGH("Main View Video icon Clicked");
543 IV_ASSERT(data != NULL);
545 Ivug_MainView *pMainView = (Ivug_MainView *)data;
547 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
548 Media_Data *mdata = ivug_medialist_get_data(mitem);
551 MSG_MAIN_ERROR("slide data is NULL");
555 // "Add tag" in video player shows only when launching from gallery.
556 else if (pMainView->mode == IVUG_MODE_FILE || pMainView->mode == IVUG_MODE_DISPLAY || pMainView->mode == IVUG_MODE_SINGLE )
558 MSG_MAIN_HIGH("Launching simple video player. Mode=%d", pMainView->mode);
559 ivug_ext_launch_videoplayer_simple(mdata->filepath);
563 MSG_MAIN_HIGH("Launching normal video player");
564 ivug_ext_launch_videoplayer(mdata->filepath);
569 static Eina_Bool _ivug_long_press_timer_expired(void *data)
571 ivug_retv_if(!data, ECORE_CALLBACK_CANCEL);
573 Ivug_MainView *pMainView = (Ivug_MainView *)data;
575 MSG_SETAS_HIGH("long press timer expired");
577 pMainView->popup_timer = NULL;
579 if(pMainView->bLongpressEnd == false) // still press
581 if(pMainView->longpress_popup)
583 IVUG_DEBUG_WARNING("copy popup remove");
584 evas_object_del(pMainView->longpress_popup);
585 pMainView->longpress_popup = NULL;
590 return ECORE_CALLBACK_CANCEL;
594 _on_slider_long_press_start(void *data, Evas_Object *obj, void *event_info)
596 Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
597 ivug_ret_if(!data||!p);
599 Ivug_MainView *pMainView = (Ivug_MainView *)data;
601 MSG_MAIN_HIGH("LongPressed XY(%d,%d)", p->x, p->y);
606 if ( ivug_slider_get_state(pMainView->slider) != SLIDE_STATE_LOADED)
608 MSG_MAIN_ERROR("Long pressed. but state is not ready");
612 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
613 Media_Data *mdata = ivug_medialist_get_data(mitem);
616 MSG_MAIN_ERROR("mdata is NULL");
620 if(mdata->slide_type != SLIDE_TYPE_IMAGE)
622 MSG_MAIN_ERROR("Long pressed. but it is not image");
626 pMainView->longpress_popup = ivug_longpress_popup_show(pMainView->slider, x, y, _on_longpress_popup_selected, pMainView);
627 if (pMainView->longpress_popup == NULL)
629 IVUG_DEBUG_WARNING("long press popup create failed");
633 pMainView->bLongpressEnd = false;
635 if(pMainView->popup_timer)
637 ecore_timer_del(pMainView->popup_timer);
639 pMainView->popup_timer = ecore_timer_add(LONGTAP_TIMEOUT, _ivug_long_press_timer_expired, pMainView);
643 _on_slider_long_press_end(void *data, Evas_Object *obj, void *event_info)
645 //Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info;
646 //ivug_ret_if(!data||!p);
649 Ivug_MainView *pMainView = (Ivug_MainView *)data;
651 pMainView->bLongpressEnd = true;
653 if(pMainView->popup_timer)
655 ecore_timer_del(pMainView->popup_timer);
656 pMainView->popup_timer = NULL;
659 if((int)event_info == LONGTAP_CANCELED)
661 if(pMainView->longpress_popup)
663 IVUG_DEBUG_WARNING("copy popup remove");
664 evas_object_del(pMainView->longpress_popup);
665 pMainView->longpress_popup = NULL;
670 static void _on_remove_main_view_ui(Ivug_MainView *pMainView)
672 IV_ASSERT(pMainView != NULL);
674 ivug_main_view_del_hide_timer(pMainView);
676 // Slider should be removed before mList is freed.
677 if ( pMainView->slider )
679 evas_object_del(pMainView->slider);
680 pMainView->slider = NULL;
683 if ( pMainView->pCropView )
685 MSG_MAIN_HIGH("Crop View Destroy");
686 ivug_crop_view_destroy(pMainView->pCropView);
687 pMainView->pCropView = NULL;
690 if ( pMainView->pNameView )
692 MSG_MAIN_HIGH("Name View Destroy");
693 ivug_name_view_destroy(pMainView->pNameView);
694 pMainView->pNameView = NULL;
697 if ( pMainView->pSetAsView )
699 MSG_MAIN_HIGH("SetAS View Destroy");
700 ivug_setas_view_destroy(pMainView->pSetAsView);
701 pMainView->pSetAsView = NULL;
704 if ( pMainView->pDetailsView )
706 MSG_MAIN_HIGH("Details View Destroy");
708 ivug_details_view_destroy(pMainView->pDetailsView);
709 pMainView->pDetailsView = NULL;
713 if(pMainView->layout) // Remove topmost parent in main view.
715 evas_object_del(pMainView->layout);
716 pMainView->layout = NULL;
719 if(pMainView->empty_layout)
721 evas_object_del(pMainView->empty_layout);
722 pMainView->empty_layout = NULL;
725 if ( pMainView->mList )
727 MSG_MAIN_HIGH("Remove media list");
728 ivug_medialist_del(pMainView->mList); // ivug_medialist_del() is not working on destroy cb.
729 pMainView->mList = NULL;
735 _on_slider_item_changed(void *data, Evas_Object *obj, void *event_info)
737 IV_ASSERT(data != NULL);
739 Ivug_MainView *pMainView = (Ivug_MainView *)data;
740 Slide_Item *sitem = (Slide_Item *)event_info;
742 MSG_MAIN_HIGH("Image slider changed callback. ");
744 if ( sitem == NULL || sitem->mitem == NULL)
746 // There is no item existed. terminate UG
747 MSG_MAIN_ERROR("No item is remained. exit UG. Sitem=0x%08x", sitem);
748 _on_remove_main_view_ui(pMainView);
753 if(pMainView->selectioninfo != NULL)
755 MSG_MAIN_MED("Delete small noti");
756 evas_object_del(pMainView->selectioninfo);
757 pMainView->selectioninfo = NULL;
760 if (pMainView->longpress_popup)
762 MSG_MAIN_MED("Delete copy popup");
763 evas_object_del(pMainView->longpress_popup);
764 pMainView->longpress_popup = NULL;
767 drm_data_t *drm_data = ivug_slider_item_check_drm_constraint(sitem);
770 _ivug_main_view_drm_process(drm_data->constraints, drm_data->data, pMainView);
775 if ( pMainView->bShowMenu == true )
777 PERF_CHECK_BEGIN(LVL5, "Update main view");
778 _update_main_view(pMainView);
779 PERF_CHECK_END(LVL5, "Update main view");
782 Media_Data *mdata = ivug_medialist_get_data(ivug_slider_item_data_get(sitem));
784 if(mdata->bIsDRMContent == true && ivug_drm_get_forwarding_info(mdata->filepath) == false)
786 elm_object_disabled_set(pMainView->btn_share, EINA_TRUE);
789 pMainView->zoom_level = 1;
790 elm_slider_value_set(pMainView->zoom_slider, 1.0);
792 ivug_slider_zoom_reset(pMainView->slider);
797 _on_slider_item_state_changed(void *data, Evas_Object *obj, void *event_info)
799 // Only called center item state is changed/
800 MSG_MAIN_HIGH("Image slider item state changed callback. ");
803 Ivug_MainView *pMainView = (Ivug_MainView *)data;
804 Slide_Item *sitem = (Slide_Item *)event_info;
806 if ( sitem == NULL || sitem->mitem == NULL)
808 // There is no item existed. terminate UG
809 MSG_MAIN_ERROR("No item is remained. exit UG");
815 if(sitem->state == SLIDE_STATE_DOWNLOAD_FAILED)
817 MSG_MAIN_ERROR("Download failed");
818 _ivug_selectioninfo_create(pMainView, IDS_DOWNLOAD_FAILED);
825 static void _on_receive_mouse_down (void *data, Evas *e, Evas_Object *obj, void *event_info)
827 Ivug_MainView *pMainView = (Ivug_MainView *)data;
828 if (NULL == pMainView) {
832 ivug_main_view_del_hide_timer(pMainView);
834 MSG_MAIN_HIGH("Event layer clicked : %s %s Layer=%d",evas_object_name_get(obj), evas_object_type_get(obj), evas_object_layer_get(obj));
837 #ifdef TEST_MOUSE_EVENT
838 static void _on_receive_mouse_down1 (void *data, Evas *e, Evas_Object *obj, void *event_info)
840 char *name = (char *)data;
842 MSG_MAIN_HIGH("Event layer mouse down : %s %s Layer=%d",evas_object_name_get(obj), name, evas_object_layer_get(obj));
845 static void _on_receive_mouse_up1 (void *data, Evas *e, Evas_Object *obj, void *event_info)
847 char *name = (char *)data;
849 MSG_MAIN_HIGH("Event layer mouse up : %s %s Layer=%d",evas_object_name_get(obj), name, evas_object_layer_get(obj));
855 static void _on_receive_mouse_up (void *data, Evas *e, Evas_Object *obj, void *event_info)
857 Ivug_MainView *pMainView = (Ivug_MainView *)data;
858 if (NULL == pMainView) {
862 ivug_main_view_set_hide_timer(pMainView);
866 _on_menu_state_changed(void *data, Evas_Object *obj, const char *emission, const char *source)
868 Ivug_MainView *pMainView = static_cast<Ivug_MainView *>(data);
869 if (NULL == pMainView) {
873 MSG_MAIN_HIGH("Receive %s %s", emission, source);
875 if ( strncmp(emission, "menu,show,finished", strlen(emission)) == 0 )
877 elm_object_disabled_set(pMainView->ctrl_bar, EINA_FALSE);
881 evas_object_hide(pMainView->ctrl_bar);
882 elm_object_disabled_set(pMainView->ctrl_bar, EINA_TRUE);
887 static void _win_profile_changed_cb(void *data, Evas_Object * obj, void *event_info)
889 Ivug_MainView *pMainView = (Ivug_MainView *)data;
890 IV_ASSERT(pMainView != NULL);
892 const char *profile = elm_config_profile_get();
894 if (!strcmp(profile, "desktop"))
897 // hide naviframe's back key
898 elm_object_item_part_content_set(pMainView->navi_it, "prev_btn", NULL);
903 // show naviframe's back key
904 elm_object_item_part_content_set(pMainView->navi_it, "prev_btn", pMainView->back_btn);
909 ///////////////////////////////////////////////////////////////////////////////////////////////////
914 static char * _ivug_get_folder_name(char *filepath)
916 char *folder = ecore_file_dir_get(filepath);
920 name = strrchr(folder, '/');
921 if ( (name != NULL) && ((name+1) != NULL) )
923 return strdup(name + 1);
931 ivug_main_view_set_list(Ivug_MainView *pMainView, ivug_parameter *ivug_param)
933 MSG_MAIN_HIGH("Load media list.");
935 PERF_CHECK_BEGIN(LVL2, "create media list");
936 if (NULL == pMainView) {
940 Media_List *mlist = ivug_medialist_create();
943 MSG_MAIN_ERROR("Creating media list failed");
946 PERF_CHECK_END(LVL2, "create media list");
948 PERF_CHECK_BEGIN(LVL2, "create filter");
950 Filter_struct *filter = ivug_param_create_filter(ivug_param);
953 MSG_MAIN_ERROR("Creating filter failed");
954 ivug_medialist_del(mlist);
958 //do not use ivug_param->view_by after here
960 PERF_CHECK_END(LVL2, "create filter");
962 Media_Item *current = NULL;
963 Media_Data *pData = NULL;
967 PERF_CHECK_BEGIN(LVL2, "media list load");
968 current = ivug_medialist_load(mlist, filter);
969 PERF_CHECK_END(LVL2, "media list load");
974 MSG_MAIN_ERROR("Media list load failed");
975 goto LOAD_LIST_FAILED;
978 pData = ivug_medialist_get_data(current);
981 MSG_MAIN_ERROR("current data is NULL");
982 goto LOAD_LIST_FAILED;
984 if(pData->fileurl == NULL)
986 MSG_MAIN_ERROR("current fileurl is NULL");
987 goto LOAD_LIST_FAILED;
990 if(filter->view_by == IVUG_VIEW_BY_ALL)
992 pMainView->album_name = strdup(IDS_ALL_ALBUMS);
994 else if(filter->view_by == IVUG_VIEW_BY_FOLDER)
997 media_handle m_handle = ivug_db_get_folder_handle(ecore_file_dir_get(ivug_param->filepath));
1000 MSG_IVUG_FATAL("View by Folder. but media handle is NULL" );
1004 pMainView->album_name = ivug_db_get_folder_name(m_handle);
1006 pMainView->album_name = _ivug_get_folder_name(ivug_param->filepath);
1007 if(pMainView->album_name == NULL)
1009 pMainView->album_name = strdup(IDS_NO_NAME);
1013 pMainView->mList = mlist;
1014 PERF_CHECK_BEGIN(LVL2, "media list set");
1016 if(!ivug_slider_set_medialist(pMainView->slider, mlist, current)) {
1017 MSG_MAIN_ERROR("ivug_slider_set_medialist error");
1018 goto LOAD_LIST_FAILED;
1021 PERF_CHECK_END(LVL2, "media list set");
1023 ivug_data_filter_delete(filter);
1029 ivug_data_filter_delete(filter);
1031 ivug_medialist_del(mlist);
1032 pMainView->mList = NULL;
1037 _on_slideshow_finished(void *data, Evas_Object *obj, void *event_info)
1039 MSG_MAIN_HIGH("_on_slideshow_finished");
1040 IV_ASSERT(data != NULL);
1042 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1043 int ss_state = (int)event_info;
1044 bool bDestoryed = false;
1045 bDestoryed = _destory_slideshow_and_ug(pMainView, ss_state, false);
1050 Media_Item * item = NULL;
1052 if(pMainView->ssHandle)
1055 item = ivug_ss_item_get(pMainView->ssHandle);
1056 ivug_ss_delete(pMainView->ssHandle);
1057 pMainView->ssHandle = NULL;
1060 ivug_slider_set_item(pMainView->slider, item, SLIDE_INSTANTLY);
1064 ivug_slider_load(pMainView->slider);
1065 ivug_main_view_show_menu_bar(pMainView);
1069 _ivug_main_view_zoom_out_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
1074 MSG_MAIN_ERROR("_ivug_main_view_zoom_out_cb");
1076 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1078 double d_value = elm_slider_value_get(pMainView->zoom_slider);
1080 MSG_MAIN_HIGH("d_value = %lf", d_value);
1082 int value = (int)round(d_value);
1084 MSG_MAIN_HIGH("value = %d", value);
1088 ivug_main_view_del_hide_timer(pMainView);
1090 ivug_slider_zoom_out(pMainView->slider);
1091 pMainView->zoom_level--;
1092 elm_slider_value_set(pMainView->zoom_slider, value-1.0);
1094 ivug_main_view_set_hide_timer(pMainView);
1097 _show_zoom_icon(pMainView);
1101 _ivug_main_view_zoom_in_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
1106 MSG_MAIN_ERROR("_ivug_main_view_zoom_in_cb");
1108 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1110 double d_value = elm_slider_value_get(pMainView->zoom_slider);
1112 MSG_MAIN_HIGH("d_value = %lf", d_value);
1114 int value = (int)round(d_value);
1116 MSG_MAIN_HIGH("value = %d", value);
1118 if(value <= ZOOM_LEVEL_MAX)
1120 ivug_main_view_del_hide_timer(pMainView);
1122 ivug_slider_zoom_in(pMainView->slider);
1123 pMainView->zoom_level++;
1124 elm_slider_value_set(pMainView->zoom_slider, value+1.0);
1126 ivug_main_view_set_hide_timer(pMainView);
1129 _show_zoom_icon(pMainView);
1132 static void _zoom_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
1134 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1136 double d_value = elm_slider_value_get(pMainView->zoom_slider);
1138 MSG_MAIN_HIGH("d_value = %lf", d_value);
1140 int value = (int)round(d_value);
1142 MSG_MAIN_HIGH("value = %d", value);
1144 while(pMainView->zoom_level > 0
1145 && pMainView->zoom_level <= ZOOM_LEVEL_MAX+1
1146 && value != pMainView->zoom_level)
1148 if(value > pMainView->zoom_level)
1150 ivug_slider_zoom_in(pMainView->slider);
1151 pMainView->zoom_level++;
1153 else if(value < pMainView->zoom_level)
1155 ivug_slider_zoom_out(pMainView->slider);
1156 pMainView->zoom_level--;
1161 static void _zoom_slider_start_cb(void *data, Evas_Object *obj, void *event_info)
1163 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1165 ivug_main_view_del_hide_timer(pMainView);
1168 static void _zoom_slider_end_cb(void *data, Evas_Object *obj, void *event_info)
1170 Ivug_MainView *pMainView = (Ivug_MainView *)data;
1172 ivug_main_view_set_hide_timer(pMainView);
1176 ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by)
1178 IV_ASSERT(parent != NULL);
1180 MSG_MAIN_HIGH("Creating main view. Parent=0x%08x Mode=%d ViewBy=%d", parent, mode, view_by);
1182 PERF_CHECK_BEGIN(LVL2, "Create layout");
1184 //create main view layout
1185 Ivug_MainView *pMainView = (Ivug_MainView *)calloc(1, sizeof(Ivug_MainView) );
1186 IV_ASSERT(pMainView != NULL);
1188 // Set default value
1189 pMainView->parent = parent;
1190 pMainView->mode = mode;
1191 pMainView->view_by = view_by;
1193 pMainView->bShowMenu = true;
1195 pMainView->hide_count = -1;
1197 Evas_Object *layout = EFL::create_layout(parent, IVUG_MAIN_EDJ, "mainview");
1198 if ( layout == NULL) //if failed
1200 MSG_MAIN_ERROR("main layout create failed");
1205 pMainView->layout = layout;
1206 evas_object_name_set(pMainView->layout, "Main Layout");
1208 PERF_CHECK_END(LVL2, "Create layout");
1210 edje_object_signal_callback_add(_EDJ(pMainView->layout),
1211 "menu,hide,finished",
1213 _on_menu_state_changed,
1216 edje_object_signal_callback_add(_EDJ(pMainView->layout),
1217 "menu,show,finished",
1219 _on_menu_state_changed,
1223 PERF_CHECK_BEGIN(LVL2, "elm_naviframe_add");
1225 pMainView->navi_bar = elm_naviframe_add(layout);
1226 if ( pMainView->navi_bar == NULL)
1228 MSG_MAIN_ERROR("navigation bar failed");
1229 ivug_main_view_destroy(pMainView);
1232 evas_object_name_set(pMainView->navi_bar, "Main naviframe");
1234 // Layout life cycle is controlled by application explictily.
1235 elm_naviframe_content_preserve_on_pop_set(pMainView->navi_bar, EINA_TRUE);
1237 #ifdef USE_CUSTOM_STYLE
1238 elm_object_theme_set(pMainView->navi_bar, gGetSystemTheme() );
1240 const char *profile = elm_config_profile_get();
1241 if (!strcmp(profile,"mobile"))
1243 elm_object_style_set(pMainView->navi_bar, "ivug-main/default");
1245 else if (!strcmp(profile,"desktop"))
1247 elm_object_style_set(pMainView->navi_bar, "ivug-main/noindicator");
1251 MSG_MAIN_ERROR("Unknown profile : %s", profile);
1254 elm_object_part_content_set(layout, "mainview.navibar", pMainView->navi_bar); //swallow
1256 PERF_CHECK_END(LVL2, "elm_naviframe_add");
1258 PERF_CHECK_BEGIN(LVL2, "elm_layout_add");
1260 pMainView->empty_layout = EFL::create_layout(layout, IVUG_MAIN_EDJ, "navi_content");
1261 if (pMainView->empty_layout == NULL)
1263 IVUG_DEBUG_WARNING("layout create failed");
1264 ivug_main_view_destroy(pMainView);
1268 evas_object_name_set(pMainView->empty_layout, "Empty layout");
1269 PERF_CHECK_END(LVL2,"elm_layout_add");
1271 if(pMainView->view_by != IVUG_VIEW_BY_FILE && pMainView->view_by != IVUG_VIEW_BY_INVAILD)
1273 PERF_CHECK_BEGIN(LVL2, "Create thumblist");
1276 PERF_CHECK_END(LVL2, "Create thumblist");
1280 PERF_CHECK_BEGIN(LVL2, "ivug_slider_add");
1282 pMainView->slider = ivug_slider_add(pMainView->empty_layout);
1283 if (pMainView->slider == NULL)
1285 MSG_MAIN_ERROR("image slider create failed");
1286 ivug_main_view_destroy(pMainView);
1290 elm_object_part_content_set(pMainView->empty_layout, "mainview.slider", pMainView->slider); //swallow
1292 PERF_CHECK_END(LVL2, "ivug_slider_add");
1294 Evas_Object *slider = elm_slider_add(pMainView->empty_layout);
1295 elm_slider_indicator_format_set(slider, "%1.0f");
1296 elm_slider_min_max_set(slider, 1, 5);
1297 elm_slider_value_set(slider, 1);
1299 evas_object_smart_callback_add(slider, "changed", _zoom_slider_change_cb, pMainView);
1300 evas_object_smart_callback_add(slider, "slider,drag,start", _zoom_slider_start_cb, pMainView);
1301 evas_object_smart_callback_add(slider, "slider,drag,stop", _zoom_slider_end_cb, pMainView);
1303 elm_object_part_content_set(pMainView->empty_layout, "zoom_slider_area", slider); //swallow
1305 pMainView->zoom_slider = slider;
1306 pMainView->zoom_level = 1;
1308 if (pMainView->mode != IVUG_MODE_DISPLAY)
1310 PERF_CHECK_BEGIN(LVL2, "ivug_button_add");
1311 pMainView->back_btn = ivug_button_add(pMainView->navi_bar, "naviframe/end_btn/default", IDS_BACK, NULL, on_btn_back_clicked, pMainView);
1312 PERF_CHECK_END(LVL2, "ivug_button_add");
1316 PERF_CHECK_BEGIN(LVL2, "ivug_button_add");
1317 pMainView->back_btn = ivug_button_add(pMainView->navi_bar, "naviframe/end_btn/default", IDS_BACK, NULL, on_btn_selectcancel_clicked, pMainView);
1318 PERF_CHECK_END(LVL2, "ivug_button_add");
1321 PERF_CHECK_BEGIN(LVL2, "elm_naviframe_item_push");
1322 pMainView->navi_it = elm_naviframe_item_push(pMainView->navi_bar, NULL, pMainView->back_btn, NULL, pMainView->empty_layout, NULL);
1323 PERF_CHECK_END(LVL2, "elm_naviframe_item_push");
1325 //Evas_Object *conformant = (Evas_Object *)ug_get_conformant();
1326 //elm_object_signal_emit(conformant, "elm,state,indicator,overlap", "");
1328 evas_object_smart_callback_add((Evas_Object *)ug_get_window(), "profile,changed", _win_profile_changed_cb, pMainView);
1330 _create_main_menu(pMainView);
1332 PERF_CHECK_BEGIN(LVL2, "add event handler");
1334 // elm_object_part_content_set(layout, "mainview.slider", pMainView->slider); //swallow
1336 //register mouse call back.
1337 evas_object_smart_callback_add(pMainView->slider, "slider,clicked", _on_slider_clicked, pMainView);
1338 evas_object_smart_callback_add(pMainView->slider, "slider,longpress,start", _on_slider_long_press_start, pMainView);
1339 evas_object_smart_callback_add(pMainView->slider, "slider,longpress,end", _on_slider_long_press_end, pMainView);
1340 evas_object_smart_callback_add(pMainView->slider, "slider,clicked,icon", _on_slider_icon_clicked, pMainView);
1342 evas_object_smart_callback_add(pMainView->slider, "slider,item,changed", _on_slider_item_changed, pMainView);
1343 evas_object_smart_callback_add(pMainView->slider, "slider,item,state,changed", _on_slider_item_state_changed, pMainView);
1345 //MSG_MAIN_HIGH("binded main win address is %p\n", main_win);
1347 #ifdef TEST_MOUSE_EVENT
1348 evas_object_event_callback_add(pMainView->navi_bar, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"navigarion");
1349 evas_object_event_callback_add(pMainView->layout, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"layout");
1350 evas_object_event_callback_add(pMainView->slider, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"slider");
1351 evas_object_event_callback_add(pMainView->slider, EVAS_CALLBACK_MOUSE_UP, _on_receive_mouse_up1, (void *)"slider");
1352 evas_object_event_callback_add(const_cast<Evas_Object *>(edje_object_part_object_get(_EDJ(pMainView->layout) , "clip")), EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"clip");
1353 evas_object_event_callback_add(const_cast<Evas_Object *>(edje_object_part_object_get(_EDJ(pMainView->layout) , "mainview.navibar")), EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"navi swallow");
1354 evas_object_event_callback_add(pMainView->ctrl_bar, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down1, (void *)"controlbar");
1357 evas_object_event_callback_add(pMainView->layout, EVAS_CALLBACK_RESIZE, _on_resize, pMainView);
1360 edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
1361 "mainview,zoom_out,clicked",
1363 _ivug_main_view_zoom_out_cb,
1365 edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
1366 "mainview,zoom_in,clicked",
1368 _ivug_main_view_zoom_in_cb,
1371 _show_zoom_icon(pMainView);
1373 pMainView->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _on_key_down, (void *)pMainView);
1377 evas_object_geometry_get(pMainView->navi_bar, &bx, &by, &bw, &bh);
1379 MSG_MAIN_HIGH("Navibar Created. (%d,%d,%d,%d)", bx, by, bw, bh);
1384 evas_object_geometry_get(pMainView->slider, &bx, &by, &bw, &bh);
1386 MSG_MAIN_HIGH("Slider Created. (%d,%d,%d,%d)", bx, by, bw, bh);
1391 evas_object_geometry_get(pMainView->empty_layout, &bx, &by, &bw, &bh);
1393 MSG_MAIN_HIGH("Empty Created. (%d,%d,%d,%d)", bx, by, bw, bh);
1397 evas_object_geometry_get(pMainView->layout, &bx, &by, &bw, &bh);
1399 MSG_MAIN_HIGH("Main View Created. (%d,%d,%d,%d)", bx, by, bw, bh);
1402 DELETE_NOTIFY(pMainView->layout);
1404 PERF_CHECK_END(LVL2, "add event handler");
1410 void ivug_main_view_start_slideshow(Ivug_MainView *pMainView, Eina_Bool bSlideFirst)
1412 IV_ASSERT(pMainView != NULL);
1414 Media_Item *current = NULL;
1416 // Stop animation & movie play before slideshow is started.
1417 ivug_slider_pause(pMainView->slider);
1418 current = ivug_slider_get_item(pMainView->slider);
1420 ivug_prohibit_lcd_off();
1421 //ivug_main_view_hide_menu_bar(pMainView);
1423 pMainView->ssHandle = ivug_ss_create(pMainView->layout);
1425 // Register callback
1426 evas_object_smart_callback_add(ivug_ss_object_get(pMainView->ssHandle), "slideshow,finished", _on_slideshow_finished, pMainView);
1428 ivug_main_view_hide_menu_bar(pMainView);
1430 ivug_ss_start(pMainView->ssHandle, current, pMainView->mList, bSlideFirst);
1435 ivug_main_view_object_get(Ivug_MainView *pMainView)
1437 IV_ASSERT(pMainView != NULL);
1439 return pMainView->layout;
1443 ivug_main_view_start(Ivug_MainView *pMainView)
1445 IV_ASSERT(pMainView != NULL);
1449 ivug_main_view_set_hide_timer(pMainView);
1453 PERF_CHECK_BEGIN(LVL2, "slider start");
1454 ivug_slider_start(pMainView->slider);
1455 PERF_CHECK_END(LVL2, "slider start");
1458 pMainView->area_obj = evas_object_rectangle_add(evas_object_evas_get(pMainView->layout));
1459 evas_object_size_hint_expand_set(pMainView->area_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1460 evas_object_size_hint_fill_set(pMainView->area_obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
1461 evas_object_color_set(pMainView->area_obj, 0,0,0,0);
1462 elm_object_part_content_set(pMainView->layout, "mainview.area", pMainView->area_obj);
1464 // evas_object_show(pMainView->area_obj);
1469 ivug_main_view_resume(Ivug_MainView *pMainView)
1471 IV_ASSERT(pMainView != NULL);
1472 if (pMainView->slider == NULL) {
1473 MSG_MAIN_HIGH("slider is NULL");
1476 MSG_MAIN_HIGH("Main View Update");
1478 Media_Item *mitem = ivug_slider_get_item(pMainView->slider);
1479 Media_Data *mdata = ivug_medialist_get_data(mitem);
1481 IV_ASSERT(mdata != NULL);
1483 if (mdata->slide_type == SLIDE_TYPE_IMAGE || mdata->slide_type == SLIDE_TYPE_VIDEO )
1485 if(mdata->filepath && ecore_file_exists(mdata->filepath)) // Current file is not deleted
1487 MSG_MAIN_HIGH("Current filepath : %s", mdata->filepath);
1491 /*if file is not exist ug terminated temporally */
1492 MSG_MAIN_ERROR("Center file is not exist. stype=%d name=%s", mdata->slide_type, mdata->filepath);
1499 MSG_MAIN_ERROR("Unhandled slide type : %d", mdata->slide_type);
1502 // When resume, menu bar will be appeared.
1503 if(!(pMainView->pNameView
1504 || pMainView->pSetAsView
1505 || pMainView->pCropView)) //child view is not exist
1507 ivug_main_view_show_menu_bar(pMainView);
1510 ivug_slider_resume(pMainView->slider);
1514 ivug_main_view_pause(Ivug_MainView *pMainView)
1516 IV_ASSERT(pMainView != NULL);
1518 if ( pMainView->ssHandle )
1520 ivug_ss_stop(pMainView->ssHandle);
1522 if (pMainView->slider) {
1523 ivug_slider_pause(pMainView->slider);
1526 if(pMainView->bShowMenu == true)
1528 ivug_main_view_del_hide_timer(pMainView);
1530 // Stop photocam If AGIF
1535 ivug_main_view_destroy(Ivug_MainView *pMainView)
1537 IV_ASSERT(pMainView != NULL);
1539 MSG_MAIN_HIGH("ENTER : Main View Destroy. pMainView=0x%08x", pMainView);
1541 ivug_main_view_del_hide_timer(pMainView);
1543 if (pMainView->popup_timer)
1545 ecore_timer_del(pMainView->popup_timer);
1546 pMainView->popup_timer = NULL;
1549 if (pMainView->popup)
1551 evas_object_del(pMainView->popup);
1552 pMainView->popup = NULL;
1555 if (pMainView->ext_ug)
1557 MSG_MAIN_HIGH("External UG Destroy");
1558 ug_destroy(pMainView->ext_ug);
1559 pMainView->ext_ug = NULL;
1562 if (pMainView->exit_timer)
1564 ecore_timer_del(pMainView->exit_timer);
1565 pMainView->exit_timer = NULL;
1568 if ( pMainView->zoom_slider )
1570 evas_object_del(pMainView->zoom_slider);
1571 pMainView->zoom_slider = NULL;
1574 MSG_MAIN_HIGH("Unregister system notifications");
1576 if(pMainView->keydown_handler)
1578 ecore_event_handler_del(pMainView->keydown_handler);
1579 pMainView->keydown_handler = NULL;
1582 if(pMainView->album_name)
1584 free(pMainView->album_name);
1587 if(pMainView->area_obj)
1589 evas_object_del(pMainView->area_obj);
1590 pMainView->area_obj = NULL;
1593 // Who remove medialist?????
1594 _on_remove_main_view_ui(pMainView);
1596 EFL::dump_obj(pMainView->parent, 0);
1599 MSG_MAIN_HIGH("LEAVE : Main View Destroy.");
1604 void ivug_main_view_set_hide_timer(Ivug_MainView *pMainView)
1606 IV_ASSERT(pMainView != NULL);
1611 void ivug_main_view_del_hide_timer(Ivug_MainView *pMainView)
1613 IV_ASSERT(pMainView != NULL);
1619 ivug_main_view_show_menu_bar(Ivug_MainView *pMainView)
1621 MSG_MAIN_HIGH("Show Menu");
1622 if (NULL == pMainView) {
1626 pMainView->bShowMenu = true;
1627 evas_object_show(pMainView->ctrl_bar);
1629 _update_main_view(pMainView);
1631 #ifdef HIDE_INDICATOR
1632 elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE);
1634 if(gIsDesktopMode() == false)
1636 elm_win_indicator_mode_set((Evas_Object *)ug_get_window(), ELM_WIN_INDICATOR_SHOW);
1639 // edje_object_signal_emit(_EDJ(pMainView->layout), "mainview,show,menu", "elm");
1641 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,show", "user");
1643 elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_TRUE);
1644 elm_object_item_signal_emit(pMainView->navi_it, "elm,state,toolbar,open", "");
1646 ivug_slider_set_menu_visibility(pMainView->slider, EINA_TRUE);
1648 #ifdef TEST_MOUSE_EVENT
1649 Eina_List *l = const_cast<Eina_List *>(evas_object_clipees_get(pMainView->navi_bar));
1651 MSG_MAIN_HIGH("Clipper clips %i objects", eina_list_count(l));
1656 EINA_LIST_FOREACH(l, l1, obj)
1658 MSG_MAIN_HIGH("Object Type : %s", evas_object_name_get((Evas_Object *)obj));
1664 above = evas_object_above_get(pMainView->navi_bar);
1665 MSG_MAIN_HIGH("Navi Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above));
1667 below = evas_object_below_get(pMainView->navi_bar);
1668 MSG_MAIN_HIGH("Navi Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below));
1670 above = evas_object_above_get(pMainView->slider);
1671 MSG_MAIN_HIGH("Slider Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above));
1673 below = evas_object_below_get(pMainView->slider);
1674 MSG_MAIN_HIGH("Slider Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below));
1677 ivug_main_view_set_hide_timer(pMainView);
1682 ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView)
1684 MSG_MAIN_HIGH("Hide Menu");
1685 if (NULL == pMainView) {
1689 ivug_main_view_del_hide_timer(pMainView);
1691 pMainView->bShowMenu = false;
1693 elm_object_disabled_set(pMainView->ctrl_bar, EINA_TRUE);
1695 edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,hide", "user");
1697 elm_win_indicator_mode_set((Evas_Object *)ug_get_window(), ELM_WIN_INDICATOR_HIDE);
1699 // edje_object_signal_emit(_EDJ(pMainView->layout), "mainview,hide,menu","elm");
1700 elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_FALSE);
1701 elm_object_item_signal_emit(pMainView->navi_it, "elm,state,toolbar,close", "");
1704 _hide_zoom_icon(pMainView);
1706 ivug_slider_set_menu_visibility(pMainView->slider, EINA_FALSE);