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://www.tizenopensource.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 "ivug-common.h"
21 #include "ivug-slider-item.h"
23 #include "ivug-image.h"
25 #include "ivug-drm-common.h"
27 #include "ivug-config.h"
29 #define DEFAULT_THUMBNAIL_PATH IMAGE_PATH"/T01_Nocontents_broken.png"
30 #define DRM_NO_RIGHT_IMAGE_PATH IMAGE_PATH"/image_drm_no_rights.jpg"
32 #define IVUG_SLIDER_EDJ EDJ_PATH"/ivug-slider.edj"
34 #define USE_VIDEO_THUMBNAIL
38 Determine whether LIL(Large image layer) loads or not.
40 if define this feature, slider does not try to load image. only thumbnail is shown.
42 #undef DISABLE_LIL_LOADING
45 Use elm_icon istead of elm_image. elm_icon preserve image ratio. and seems more faster.
49 _show_thumbnail( Slide_Item* si, const char *filepath)
51 IV_ASSERT(si != NULL);
53 if (si->thumbnail == NULL)
55 MSG_SITEM_FATAL("slide item or thumbnail object is NULL");
59 if ( filepath == NULL )
61 MSG_SITEM_ERROR("thumbnail path is not exist");
65 MSG_SITEM_MED("Set thumbnail : %s", ivug_get_filename(filepath));
67 if (ivug_is_file_exist(filepath) == false )
69 MSG_SITEM_ERROR("Cannot find thumbnail : %s", filepath);
70 filepath = DEFAULT_THUMBNAIL_PATH;
73 if (elm_image_file_set(si->thumbnail, filepath, NULL) == EINA_FALSE)
75 MSG_SITEM_ERROR("Cannot load thumbnail : %s", filepath);
81 elm_image_object_size_get(si->thumbnail , &iw, &ih);
83 evas_object_repeat_events_set(si->thumbnail, EINA_FALSE);
84 edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_thumbnail", "slider");
86 MSG_SITEM_HIGH("Set thumbnail(%dx%d). %s", iw, ih, ivug_get_filename(filepath));
90 evas_object_geometry_get(si->layout, &bx, &by, &bw, &bh);
92 MSG_SITEM_MED("EDJE Geomtetry(%d,%d,%d,%d)", bx, by, bw, bh);
99 _hide_thumbnail(Slide_Item* si)
101 IV_ASSERT(si != NULL);
103 evas_object_repeat_events_set(si->thumbnail, EINA_TRUE);
105 edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_thumbnail", "slider");
110 static void _show_progressbar(Slide_Item *si)
112 IV_ASSERT(si != NULL);
114 if ( si->progress == NULL )
117 PERF_CHECK_BEGIN(LVL6, "set progress");
119 PERF_CHECK_BEGIN(LVL7, "elm_progressbar_add");
120 si->progress = elm_progressbar_add(si->layout);
121 PERF_CHECK_END(LVL7, "elm_progressbar_add");
123 IV_ASSERT(si->progress != NULL);
125 PERF_CHECK_BEGIN(LVL7, "set style");
126 elm_object_style_set(si->progress, "list_process");
127 PERF_CHECK_END(LVL7, "set style");
129 PERF_CHECK_BEGIN(LVL7, "set pulse");
130 elm_progressbar_pulse(si->progress, EINA_FALSE);
131 PERF_CHECK_END(LVL7, "set pulse");
133 PERF_CHECK_BEGIN(LVL7, "swallow progress");
134 elm_object_part_content_set(si->layout, "slider.progress", si->progress);
135 PERF_CHECK_END(LVL7, "swallow progress");
137 PERF_CHECK_END(LVL6, "set progress");
140 elm_progressbar_pulse(si->progress, EINA_TRUE); //start pulse.
142 edje_object_signal_emit(_EDJ(si->layout), "elm,state,show,progress", "slider");
145 static void _hide_progressbar(Slide_Item *si)
147 IV_ASSERT(si != NULL);
151 elm_progressbar_pulse(si->progress, EINA_FALSE); //stop pulse.
153 edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide,progress", "slider");
157 static void _show_videoicon(Slide_Item *si)
159 IV_ASSERT(si != NULL);
161 edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_icon", "slider"); // Hide video play icon
164 static void _hide_videoicon(Slide_Item *si)
166 IV_ASSERT(si != NULL);
168 edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_icon", "slider"); // Hide video play icon
170 // edje_object_signal_emit((si->layout), "elm,state,hide_icon", "slider"); // Hide video play icon
173 static sitem_type_t _get_sitem_type(Media_Type mtype)
177 case SLIDE_TYPE_IMAGE:
178 return SITEM_TYPE_IMAGE;
180 case SLIDE_TYPE_VIDEO:
181 return SITEM_TYPE_VIDEO;
183 case SLIDE_TYPE_NONE:
184 case SLIDE_TYPE_UNKNOWN:
186 return SITEM_TYPE_UNKNOWN;
189 return SITEM_TYPE_UNKNOWN;
192 static char *_get_file_name(Slide_Item* si)
194 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
201 return ivug_get_filename(mdata->filepath);
205 static bool _set_mitem(Slide_Item* si, Media_Item *item)
207 Media_Data *mdata = ivug_medialist_get_data(item);
208 IV_ASSERT(mdata != NULL);
212 si->type = _get_sitem_type(mdata->slide_type);
214 if ( si->type == SITEM_TYPE_IMAGE )
217 elm_object_part_content_set(si->layout, "slider.contents", si->photocam);
219 else if ( si->type == SITEM_TYPE_VIDEO )
221 elm_image_file_set(si->vIcon, EDJ_PATH"/ivug-icons.edj", "btn.video.play");
226 MSG_SITEM_WARN("Unknown type : %s", ivug_get_filename(mdata->filepath));
230 switch(mdata->slide_type)
232 case SLIDE_TYPE_IMAGE:
233 MSG_SITEM_HIGH("Set image. %s", ivug_get_filename(mdata->filepath));
235 if(mdata->bIsDRMContent == EINA_FALSE)
237 si->state = SLIDE_STATE_READY;
241 si->state = SLIDE_STATE_DRM_CHECKING;
245 case SLIDE_TYPE_VIDEO:
246 MSG_SITEM_HIGH("Set video. %s", ivug_get_filename(mdata->filepath));
248 si->state = SLIDE_STATE_READY; // Video dont need to load photocam
251 case SLIDE_TYPE_UNKNOWN:
252 MSG_SITEM_ERROR("Unknown image. %s", ivug_get_filename(mdata->filepath));
254 si->state = SLIDE_STATE_ERROR;
259 MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type);
260 si->state = SLIDE_STATE_ERROR;
270 static bool _unset_mitem(Slide_Item* si)
272 // Unswallow photocam
273 elm_object_part_content_unset(si->layout, "slider.contents");
277 case SITEM_TYPE_IMAGE:
278 evas_object_hide(si->photocam);
279 ivug_image_unset(si->photocam); //init photocam.
281 case SITEM_TYPE_VIDEO:
287 si->state = SLIDE_STATE_NONE;
290 _hide_progressbar(si);
294 si->type = SITEM_TYPE_UNKNOWN;
297 MSG_SITEM_HIGH("Slider Item is cleared.");
305 void _call_user_callback(Slide_Item* si)
309 (si->cb)(si->state, si, si->client_data);
315 _photocam_loaded_cb(void *data, Evas_Object *obj, void *event_info)
317 IV_ASSERT(data != NULL);
319 Slide_Item* si = static_cast<Slide_Item*>(data);
322 _hide_progressbar(si);
324 if ( si->mitem == NULL)
326 MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
330 Media_Data* mdata = ivug_medialist_get_data(si->mitem);
333 MSG_SITEM_ERROR("ivug_medialist_get_data failed.");
334 si->state = SLIDE_STATE_ERROR;
338 if ( si->state != SLIDE_STATE_LOADING )
340 // can be STATE_ERROR, STATE_NO_RIGHT
341 MSG_SITEM_ERROR("Invalid slide state. %s", ivug_get_filename(mdata->filepath));
342 MSG_SITEM_ERROR("state=%d %s (%d,%d,%d,%d)", si->state, mdata->filepath, si->x, si->y, si->w, si->h);
346 typedef enum _Evas_Load_Error
348 EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */
349 EVAS_LOAD_ERROR_GENERIC = 1, /**< A non-specific error occurred */
350 EVAS_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< File (or file path) does not exist */
351 EVAS_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission deinied to an existing file (or path) */
352 EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Allocation of resources failure prevented load */
353 EVAS_LOAD_ERROR_CORRUPT_FILE = 5, /**< File corrupt (but was detected as a known format) */
354 EVAS_LOAD_ERROR_UNKNOWN_FORMAT = 6 /**< File is not a known format */
355 } Evas_Load_Error; /**< Load error you can get from loading of files - see evas_load_error_str() too */
358 Evas_Load_Error error = static_cast<Evas_Load_Error>(reinterpret_cast<int>(event_info));
359 // Evas_Load_Error error = evas_object_image_load_error_get(ivug_image_internal_image_get(si->photocam));
361 if ( error != EVAS_LOAD_ERROR_NONE )
363 MSG_SITEM_ERROR("Image loading failed. Error=%d File=%s", error, mdata->filepath);
364 si->state = SLIDE_STATE_ERROR;
366 evas_object_hide(si->photocam);
368 if ( error == EVAS_LOAD_ERROR_PERMISSION_DENIED)
370 _show_thumbnail(si, DRM_NO_RIGHT_IMAGE_PATH);
374 _show_thumbnail(si, DEFAULT_THUMBNAIL_PATH);
377 _call_user_callback(si);
382 si->state = SLIDE_STATE_LOADED;
386 ivug_image_image_size_get(si->photocam, &w, &h);
388 if (mdata->slide_type == SLIDE_TYPE_VIDEO) //if slide type is video,
390 MSG_SITEM_FATAL("slide type is video. thumbnail image ");
394 evas_object_show(obj); //photocam show.
396 _call_user_callback(si);
398 MSG_SITEM_HIGH("Photocam Pre-loaded. File=%s", ivug_get_filename(mdata->filepath));
401 static void _on_event_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
403 MSG_SITEM_HIGH("Event layer clicked : %s Layer=%d", evas_object_name_get(obj), evas_object_layer_get(obj));
408 ivug_slider_item_add(Evas_Object *slider)
410 Slide_Item* si = NULL;
412 PERF_CHECK_BEGIN(LVL6, "init variable");
415 si = (Slide_Item*)calloc(1, sizeof (Slide_Item));
419 MSG_SITEM_FATAL("Cannot allocated memory : %d.", sizeof (Slide_Item));
423 si->state = SLIDE_STATE_NONE; //set slide state
424 si->type = SITEM_TYPE_UNKNOWN;
426 PERF_CHECK_END(LVL6, "init variable");
428 //Create the slider item layout
429 PERF_CHECK_BEGIN(LVL6, "create slider item layout");
431 Evas_Object *layout = EFL::create_layout(slider, IVUG_SLIDER_EDJ, "slider");
434 MSG_SITEM_ERROR("Cannot load file : %s", IVUG_SLIDER_EDJ);
439 evas_object_name_set(layout, "Slider item edj");
440 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, _on_event_mouse_down, NULL);
444 PERF_CHECK_END(LVL6, "create slider item layout");
447 PERF_CHECK_BEGIN(LVL6, "set thumbnail");
449 si->thumbnail = elm_icon_add(slider);
450 evas_object_name_set(si->thumbnail, "Thumbnail");
451 elm_image_resizable_set(si->thumbnail, EINA_TRUE, EINA_TRUE);
452 elm_image_preload_disabled_set(si->thumbnail, EINA_FALSE);
454 evas_object_event_callback_add(si->thumbnail, EVAS_CALLBACK_MOUSE_DOWN, _on_event_mouse_down, NULL);
456 elm_object_part_content_set(si->layout, "slider.thumbnail", si->thumbnail);
458 PERF_CHECK_END(LVL6, "set thumbnail");
461 PERF_CHECK_BEGIN(LVL6, "ivug_image_create");
463 si->photocam = ivug_image_create(si->layout);
464 evas_object_name_set(si->photocam, "photocam");
465 evas_object_smart_callback_add(si->photocam, "loaded", _photocam_loaded_cb, si);
467 PERF_CHECK_END(LVL6, "ivug_image_create");
469 PERF_CHECK_BEGIN(LVL6, "video icon");
471 // z-order be decided along added order
472 si->vIcon = elm_icon_add(slider);
473 elm_image_file_set(si->vIcon, EDJ_PATH"/ivug-icons.edj", "btn.video.play");
475 evas_object_name_set(si->vIcon, "video icon");
476 evas_object_event_callback_add(si->vIcon, EVAS_CALLBACK_MOUSE_DOWN, _on_event_mouse_down, NULL);
478 elm_object_part_content_set(si->layout, "slider.icon", si->vIcon);
479 PERF_CHECK_END(LVL6, "video icon");
481 si->bMenuVisible = true; // Default visibility is true
483 evas_object_smart_member_add(si->layout, slider);
486 evas_object_geometry_get(si->layout, &bx, &by, &bw, &bh);
488 MSG_SITEM_HIGH("Creating sitem(0x%08x): (%d,%d,%d,%d)", si, bx, by, bw, bh);
495 ivug_slider_item_resize(Slide_Item* si, int w, int h)
497 IV_ASSERT(si != NULL );
499 if ( si->w == w && si->h == h ) return;
500 MSG_SITEM_HIGH("SLIDER Resize to XYWH(%d,%d,%d,%d)", si->x, si->y, w, h );
502 // w,h is not Image's scale, but Object's scale
506 // MSG_SITEM_HIGH("resize layout: %d, %d", si->w, si->h);
507 evas_object_resize(si->layout, si->w, si->h);
512 void ivug_slider_item_move(Slide_Item* si, int x, int y)
514 IV_ASSERT(si != NULL );
516 MSG_SITEM_MED("SLIDER Move to XYWH(%d,%d,%d,%d)", x, y, si->w, si->h );
518 if ( si->x == x && si->y == y) return;
524 if ( si->w == 0 || si->h == 0) return;
526 evas_object_move(si->layout, x, y);
529 // evas_object_move();
534 void ivug_slider_item_del(Slide_Item* si)
536 IV_ASSERT(si != NULL );
538 MSG_SITEM_HIGH("Removing Slider Item");
540 ivug_slider_item_stop(si);
542 si->mitem = NULL; // for error handling
546 evas_object_del(si->photocam);
552 evas_object_del(si->thumbnail);
553 si->thumbnail = NULL;
558 evas_object_del(si->progress);
564 evas_object_del(si->layout);
570 evas_object_del(si->vIcon);
578 MSG_SITEM_HIGH("Removed Slider Item");
582 void ivug_slider_item_hide(Slide_Item* si)
584 IV_ASSERT(si != NULL );
586 MSG_SITEM_HIGH("Hide slide item");
587 evas_object_hide(si->layout);
591 void ivug_slider_item_show(Slide_Item* si)
593 IV_ASSERT(si != NULL );
595 MSG_SITEM_HIGH("Show slide item");
596 evas_object_show(si->layout);
601 ivug_slider_item_clip_set(Slide_Item* si, Evas_Object *clipper)
603 IV_ASSERT(si != NULL );
604 // no need to check layout is NULL
607 evas_object_geometry_get(clipper, &x, &y, &w, &h);
609 MSG_SITEM_MED("SItem clip SET!! Geometry(%d,%d,%d,%d)", x, y, w, h);
611 evas_object_clip_set(si->layout, clipper);
612 // evas_object_clip_set(si->photocam, clipper);
616 ivug_slider_item_clip_unset(Slide_Item* si)
618 IV_ASSERT(si != NULL );
619 // no need to check layout is NULL
620 evas_object_clip_unset(si->layout);
621 // evas_object_clip_unset(si->photocam);
625 ivug_slider_item_data_set(Slide_Item* si, Media_Item *item)
627 IV_ASSERT(si != NULL );
629 MSG_SITEM_HIGH("Data set. Item(0x%08x)", item);
633 if ( si->state == SLIDE_STATE_NONE )
635 MSG_SITEM_WARN("Slide item is already cleared. just return. Mitem=0x%08x", si->mitem);
639 MSG_SITEM_WARN("Set data NULL : %s", _get_file_name(si));
644 if ( si->state != SLIDE_STATE_NONE )
646 MSG_SITEM_WARN("State is %d. Remove old : %s", si->state, _get_file_name(si));
650 _set_mitem(si, item);
657 #ifdef DISABLE_LIL_LOADING
658 Eina_Bool _signal_send_idler(void *data)
660 Slide_Item *si = (Slide_Item *)data;
662 _call_user_callback(si);
671 ivug_slider_item_load(Slide_Item *si)
673 IV_ASSERT(si != NULL);
675 if (si->state != SLIDE_STATE_READY)
677 MSG_SITEM_ERROR("Invalid state : %d", si->state);
681 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
682 IV_ASSERT(mdata != NULL);
684 if(mdata->filepath == NULL)
686 MSG_SITEM_ERROR("file path is NULL");
690 MSG_SITEM_HIGH("Load file. %s", ivug_get_filename(mdata->filepath));
692 char path[IVUG_MAX_FILE_PATH_LEN] = {0,};
695 strncpy(path, mdata->filepath, sizeof(path));
699 #ifdef DISABLE_LIL_LOADING
701 si->state = SLIDE_STATE_LOADED;
703 ecore_idler_add(_signal_send_idler, si);
708 switch(mdata->slide_type)
710 case SLIDE_TYPE_IMAGE:
712 si->state = SLIDE_STATE_LOADING;
714 if (ivug_image_file_set(si->photocam, path, NULL) != EVAS_LOAD_ERROR_NONE)
716 MSG_SITEM_ERROR("Failed photocam to set file file=%s", path);
717 si->state = SLIDE_STATE_ERROR;
719 _show_thumbnail(si, DEFAULT_THUMBNAIL_PATH);
721 _call_user_callback(si);
729 case SLIDE_TYPE_VIDEO:
731 si->state = SLIDE_STATE_LOADED;
737 MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type);
745 void ivug_slider_item_play(Slide_Item* si)
747 IV_ASSERT(si != NULL );
749 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
752 MSG_SITEM_ERROR("current data is NULL");
756 MSG_SITEM_HIGH("Start sitem. Type(%d) State(%d) %s", si->type, si->state, mdata->filepath);
758 if ( si->state != SLIDE_STATE_LOADED )
760 MSG_SITEM_ERROR("Play. but state is %d", si->state);
764 if ( si->type == SITEM_TYPE_IMAGE )
766 ivug_image_animated_set(si->photocam, EINA_TRUE);
770 void ivug_slider_item_stop(Slide_Item* si)
772 IV_ASSERT(si != NULL );
774 if ( si->state != SLIDE_STATE_LOADED )
776 // When very first/last image and invalid
780 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
781 MSG_SITEM_HIGH("Stop sitem. %s", mdata->filepath);
783 if (si->type == SITEM_TYPE_VIDEO)
787 else if ( si->type == SITEM_TYPE_IMAGE )
789 ivug_image_animated_set(si->photocam, EINA_FALSE);
794 void ivug_slider_item_pause(Slide_Item* si)
796 IV_ASSERT(si != NULL );
798 if ( si->state != SLIDE_STATE_LOADED )
800 // When very first/last image and invalid
804 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
805 MSG_SITEM_HIGH("Pause sitem. %s", mdata->filepath);
807 if (si->type == SITEM_TYPE_VIDEO)
811 else if ( si->type == SITEM_TYPE_IMAGE )
813 ivug_image_animated_set(si->photocam, EINA_FALSE);
817 void ivug_slider_item_resume(Slide_Item* si)
819 IV_ASSERT(si != NULL );
821 if ( si->state != SLIDE_STATE_LOADED )
823 // When very first/last image and invalid
827 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
828 MSG_SITEM_HIGH("Resume sitem. %s", mdata->filepath);
830 if (si->type == SITEM_TYPE_IMAGE)
832 ivug_image_animated_set(si->photocam, EINA_TRUE);
834 else if (si->type == SITEM_TYPE_VIDEO)
840 ivug_slider_item_set_callback(Slide_Item* si, OnSliderStateChanged cb, void *data)
842 IV_ASSERT(si != NULL );
845 si->client_data = data;
852 ivug_slider_item_data_get(Slide_Item *si)
854 IV_ASSERT(si != NULL);
861 ivug_slider_item_region_size_get(Slide_Item* si, int *x, int *y, int *w, int *h)
863 IV_ASSERT(si != NULL );
865 if ( si->mitem == NULL)
867 MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
871 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
875 MSG_SITEM_ERROR("slide type is NULL. Item=0x%08x", si);
881 case SITEM_TYPE_IMAGE:
883 ivug_image_region_get(si->photocam, x, y, w, h);
887 case SITEM_TYPE_VIDEO:
895 case SITEM_TYPE_UNKNOWN:
900 MSG_SITEM_ERROR("Unknwon type: %d", si->type);
911 ivug_slider_item_hold_set(Slide_Item* si, Eina_Bool hold)
913 IV_ASSERT(si != NULL );
917 case SITEM_TYPE_IMAGE:
919 ivug_image_hold_set(si->photocam, hold);
923 case SITEM_TYPE_VIDEO:
929 case SITEM_TYPE_UNKNOWN:
931 MSG_SITEM_ERROR("Unknwon type: %d", si->type);
940 ivug_slider_item_zoom_reset(Slide_Item* si, Eina_Bool bAnim, int center_x, int center_y)
942 IV_ASSERT(si != NULL );
946 case SITEM_TYPE_IMAGE:
953 ivug_image_zoom_reset(si->photocam, &pt);
957 case SITEM_TYPE_VIDEO:
963 case SITEM_TYPE_UNKNOWN:
967 MSG_SITEM_ERROR("Unknwon type: %d", si->type);
976 ivug_slider_item_zoom_set(Slide_Item* si, double zoom, int center_x, int center_y)
978 IV_ASSERT(si != NULL );
982 case SITEM_TYPE_IMAGE:
988 ivug_image_zoom_set(si->photocam, zoom, &Center);
993 case SITEM_TYPE_VIDEO:
996 case SITEM_TYPE_UNKNOWN:
1000 MSG_SITEM_ERROR("Unknwon type: %d", si->type);
1008 ivug_slider_item_zoom_get(Slide_Item* si)
1010 IV_ASSERT(si != NULL );
1016 case SITEM_TYPE_IMAGE:
1018 ret = ivug_image_zoom_get(si->photocam);
1022 case SITEM_TYPE_VIDEO:
1025 case SITEM_TYPE_UNKNOWN:
1029 MSG_SITEM_ERROR("Unknwon type: %d", si->type);
1040 ivug_slider_item_icon_click_check(Slide_Item *si, int x, int y)
1042 MSG_SITEM_HIGH("Check play icon clicked. SI=0x%08x, XY(%d,%d)", si, x, y);
1044 IV_ASSERT(si != NULL );
1046 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
1048 if ( mdata == NULL )
1050 MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
1054 if ( mdata->slide_type == SLIDE_TYPE_VIDEO )
1058 Evas_Coord ix,iy,iw,ih;
1060 evas_object_geometry_get(si->vIcon, &ix, &iy, &iw, &ih);
1062 bool bInside = !( (x) > (ix + iw) || (x) < (ix)
1063 || (y) > (iy + iw) || (y) < (iy) );
1065 MSG_SITEM_HIGH("Item XYWH(%d,%d,%d,%d) XY(%d,%d) bInside=%d", ix,iy,iw,ih, x, y, bInside);
1071 MSG_SITEM_HIGH("Slide type = %d", mdata->slide_type);
1075 drm_data_t * ivug_slider_item_check_drm_constraint(Slide_Item *si)
1077 IV_ASSERT(si != NULL);
1079 Media_Data *mdata = ivug_medialist_get_data(si->mitem);
1082 MSG_SLIDER_ERROR("mdata is NULL");
1086 if(mdata->bIsDRMContent == EINA_FALSE)
1088 MSG_SITEM_HIGH("It is not DRM file, path = %s", mdata->filepath);
1092 MSG_SITEM_HIGH("before check valid");
1093 if(ivug_drm_has_valid_ro(mdata->filepath) == 0)
1095 MSG_SITEM_HIGH("RO is invalid, path = %s", mdata->filepath);
1096 si->state = SLIDE_STATE_ERROR;
1097 _show_thumbnail(si, DRM_NO_RIGHT_IMAGE_PATH);
1098 evas_object_smart_callback_call(si->photocam, "loaded", (void *)EVAS_LOAD_ERROR_PERMISSION_DENIED);
1099 //for lauch WAP purchase page
1100 drm_data_t *result = (drm_data_t *)calloc(1, sizeof(drm_data_t));
1101 result->constraints = IVUG_DRM_RESULT_LIMITED;
1105 MSG_SITEM_HIGH("RO is valid, path = %s", mdata->filepath);
1107 return ivug_drm_check_constraint(mdata->filepath);
1113 ivug_slider_item_image_rotate_set(Slide_Item *si, int angle)
1115 IV_ASSERT(si != NULL);
1117 ivug_image_rotate_set(si->photocam, ( (ivug_image_rotate_get(si->photocam) - angle) % 360 ));
1123 // Video specific APIs
1125 void ivug_slider_item_video_play(Slide_Item* si)
1127 IV_ASSERT(si != NULL );
1129 MSG_SITEM_HIGH("Start Video play");
1131 if (si->type == SITEM_TYPE_VIDEO)
1139 void ivug_slider_item_video_pause(Slide_Item* si)
1141 IV_ASSERT(si != NULL );
1143 MSG_SITEM_HIGH("Pause Video play");
1145 if (si->type == SITEM_TYPE_VIDEO)
1151 void ivug_slider_item_hide_menu(Slide_Item* si)
1153 IV_ASSERT(si != NULL );
1155 MSG_SITEM_HIGH("Hide menu");
1157 si->bMenuVisible = false;
1159 // Item is video and state is playing then hide paused icon
1160 if (si->type == SITEM_TYPE_VIDEO)
1162 _hide_videoicon(si);
1168 void ivug_slider_item_show_menu(Slide_Item* si)
1170 IV_ASSERT(si != NULL );
1172 MSG_SITEM_HIGH("Show menu");
1174 si->bMenuVisible = true;
1176 // Item is video and state is pause then show paused icon
1177 if (si->type == SITEM_TYPE_VIDEO)
1179 _show_videoicon(si);
1184 ivug_slider_item_image_get(Slide_Item* si)
1186 IV_ASSERT(si != NULL );
1188 if ( (si->type == SITEM_TYPE_IMAGE) && (si->state == SLIDE_STATE_LOADED) )
1190 return ivug_image_internal_image_get(si->photocam);
1198 void ivug_slider_item_image_size_get(Slide_Item* si, int *w, int *h)
1200 IV_ASSERT(si != NULL );
1202 if ( (si->type == SITEM_TYPE_IMAGE) && (si->state == SLIDE_STATE_LOADED) )
1204 ivug_image_image_size_get(si->photocam, w, h);