2 * Copyright (c) [2012] Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <sound_manager.h>
32 #include <ui-gadget.h>
33 #include <Ecore_Evas.h>
34 #include <vconf-keys.h>
37 #include "mp-video-log.h"
38 #include "mp-util-media-service.h"
39 #include "mp-video-type-define.h"
40 #include "mp-video-value-define.h"
41 #include "mp-video-string-define.h"
42 //#include "mp-video-info-ctrl.h"
44 #define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME "org.tizen.bluetooth"
46 #define MP_UTIL_USER_AGENT_KEY "db/admin/uagent"
47 //#define MP_UTIL_TEMP_USER_AGENT_VALUE "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
48 #define MP_UTIL_TEMP_USER_AGENT_VALUE "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B"
49 #define MP_UTIL_MMC_PATH "/opt/storage/sdcard"
50 #define MP_UTIL_FILE_PREFIX "file://"
52 #define MP_UTIL_ALLSHARE_CHANGE_NOTI "memory/allshare/status"
53 #define MP_UTIL_ALLSHARE_NOTI_ON 1
54 #define MP_UTIL_ALLSHARE_NOTI_OFF 0
56 #define MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS "db/private/org.tizen.video-player/preview_url_videos"
57 #define MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS "db/private/org.tizen.video-player/preview_url_records"
59 static bool bAlphaSet = TRUE;
61 static Ecore_X_Window pMainXwindow = 0;
62 static Ecore_X_Display *pX11DisplayHandle = NULL;
64 static Evas_Object *pPopUpHandle = NULL;
65 static Evas_Object *pPopupWindow = NULL;
67 static MpVideoRotateType nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
73 static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData)
77 int nLowBatteryStatus = 0;
80 VideoLogInfo("User data is NULL.");
84 VideoAppData *pAppData = (VideoAppData *)pUserData;
87 (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
88 if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
89 /* MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpUtilBatteryExitCb); */
90 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
94 VideoLogInfo("Fail to get vconf");
98 static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
102 char szFilename[9] = { 0 };
104 if (!pUserData || !pKeyNode) {
105 VideoLogInfo("User data is NULL.");
109 VideoAppData *pAppData = (VideoAppData *)pUserData;
110 char *keyname = vconf_keynode_get_name(pKeyNode);
111 if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
112 int nMMCState = vconf_keynode_get_int(pKeyNode);
113 if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
114 strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
115 VideoLogInfo("FILE NAME[%s]", szFilename);
116 if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
117 /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */
118 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
122 VideoLogInfo("Fail to get vconf");
130 void MpUtilExitVideoPlayer(void)
137 static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
142 MpUtilExitVideoPlayer();
145 void MpUtilResetForRelaunching(void)
149 pX11DisplayHandle = NULL;
154 void MpUtilSetAlphaOfMainWindow(bool bSetAlpha)
164 bAlphaSet = bSetAlpha;
167 void *MpUtilCreateMainWindow(const char *pStrName)
172 VideoLogInfo("[ERR] No exist pStrName.");
177 evas_object_del((Evas_Object *)pMainXwindow);
181 Evas_Object *pEvasObject;
183 pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
185 elm_win_title_set(pEvasObject, pStrName);
186 evas_object_smart_callback_add(pEvasObject, "delete,request",
187 MpUtilDestroyMainWindow, NULL);
188 elm_win_borderless_set(pEvasObject, EINA_FALSE);
191 Evas *pEvas = evas_object_evas_get(pEvasObject);
192 Evas_Object *pMainRect = evas_object_rectangle_add(pEvas);
196 evas_object_size_hint_weight_set(pMainRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
197 evas_object_color_set(pMainRect, 0, 0, 0, 0);
198 evas_object_render_op_set(pMainRect, EVAS_RENDER_COPY);
199 evas_object_show(pMainRect);
200 elm_win_resize_object_add(pEvasObject, pMainRect);
202 pMainXwindow = elm_win_xwindow_get(pEvasObject);
204 return (void *)pEvasObject;
207 int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode)
210 if (!pX11DisplayHandle) {
211 pX11DisplayHandle = ecore_x_display_get();
215 VideoLogInfo("Not exist pMainXwindow.");
218 utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode);
222 int MpUtilSetKeyUngrab(const char *szKeyName)
225 if (pMainXwindow && pX11DisplayHandle) {
226 utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName);
232 bool MpUtilCheckRTSPType(char *szUriPath)
234 if(szUriPath == NULL) {
235 VideoLogInfo("ERR:");
239 //VideoLogInfo(" URI : %s", szUriPath);
241 if (strstr(szUriPath, "rtp"))
243 else if (strstr(szUriPath, "rtsp"))
249 int MpUtilCheckUriType(char *szUriPath)
251 if(szUriPath == NULL) {
252 VideoLogInfo("ERR:");
256 VideoLogInfo(" URI : %s", szUriPath);
258 if (strstr(szUriPath, "rtp"))
260 else if (strstr(szUriPath, "rtsp"))
262 else if (strstr(szUriPath, "http"))
264 else if (strstr(szUriPath, "https"))
270 bool MpUtilCheckLocalFileExist(char *uri)
276 VideoLogInfo("[ERR]");
280 if(strstr(uri,MP_UTIL_FILE_PREFIX))
282 if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
290 if(!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
298 bool MpUtilCheckBatteryStatus(void)
302 int nLowBatteryStatus = 0;
305 (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
306 if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
314 int MpUtilBatteryStatusNoti(VideoAppData *pAppData)
320 VideoLogInfo("[ERR] No exist appdata.");
324 if(vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb, pAppData))
326 VideoLogInfo("[ERR] Fail to set Battery notification.");
333 int MpUtilBatteryStatusNotiIgnore(void)
337 if (vconf_ignore_key_changed
338 (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
339 MpUtilBatteryStatusChangeCb) < 0) {
340 VideoLogInfo("[ERR] Fail to ignore battery status.");
347 int MpUtilMMCstatusNoti(VideoAppData *pAppData)
352 VideoLogInfo("[ERR] No exist appdata.");
356 if (vconf_notify_key_changed
357 (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb,
359 VideoLogInfo("[ERR] Fail to set MMC notification.");
366 int MpUtilMMCstatusNotiIgnore(void)
370 if (vconf_ignore_key_changed
371 (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) {
372 VideoLogInfo("[ERR] Fail to ignore MMC status.");
379 int MpUtilGetRotationStateFromAppcore(void)
384 if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0)
386 VideoLogInfo("Get vlalue fail");
387 return nCurRotateValue;
392 switch(app_get_device_orientation())
394 case APP_DEVICE_ORIENTATION_0:
395 VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
396 nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
399 case APP_DEVICE_ORIENTATION_90:
400 VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
401 nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE;
404 case APP_DEVICE_ORIENTATION_180:
405 VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
406 nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE;
409 case APP_DEVICE_ORIENTATION_270:
410 VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
411 nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL;
415 return nCurRotateValue;
418 int MpUtilGetRotationState(void)
422 return nCurRotateValue;
425 void MpUtilSetRotationState(int nCurRotation)
429 nCurRotateValue = nCurRotation;
432 MpUtilRotateWindow(nCurRotation, pPopupWindow);
436 bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle)
440 if (!szFilepath || !szTitle) {
441 VideoLogInfo("[ERR]");
448 memset(szTitle, 0, nLengthTitle);
450 szTitleName = strrchr(szFilepath, '/');
455 szTitleName = szFilepath;
457 szExt = strrchr(szTitleName, '.');
460 int nTmpStringSize = szExt - szTitleName;
461 strncpy(szTitle, szTitleName, nTmpStringSize);
463 strncpy(szTitle, szTitleName, STR_LEN_MAX - 1);
469 void MpUtilInitSession(void)
473 sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE);
476 void MpUtilFinishSession(void)
479 //sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
483 void MpUtilVolumeTypeSet(void)
487 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
490 void MpUtilVolumeTypeUnset(void)
494 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
497 void MpUtilSetVolumeChangeCbUnset()
501 sound_manager_unset_volume_changed_cb();
505 void MpUtilDeletePopupHandle(void)
510 evas_object_del(pPopUpHandle);
513 VideoLogInfo("No exist popup.");
517 evas_object_del(pPopupWindow);
520 VideoLogInfo("No exist popup window.");
523 MpUtilSetAlphaOfMainWindow(TRUE);
526 bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc)
530 if (pAppData == NULL || szContents == NULL) {
531 VideoLogInfo("No have popup message or pAppData is null.");
535 MpUtilDeletePopupHandle();
537 MpUtilSetAlphaOfMainWindow(FALSE);
539 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
541 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
542 elm_object_text_set(pPopUpHandle, szContents);
543 elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
544 elm_popup_timeout_set(pPopUpHandle, 3.0);
546 if(PopupButtonCallbackFunc)
548 evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
553 MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
556 evas_object_show(pPopUpHandle);
561 bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,
562 void *PopupButtonCallbackFunc)
566 if (pAppData == NULL || szContents == NULL) {
567 VideoLogInfo("No have popup message or pAppData is null.");
571 MpUtilDeletePopupHandle();
573 MpUtilSetAlphaOfMainWindow(FALSE);
575 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
577 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
578 elm_object_text_set(pPopUpHandle, szContents);
579 elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
580 elm_popup_timeout_set(pPopUpHandle, 3.0);
582 if (PopupButtonCallbackFunc) {
583 evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
586 evas_object_show(pPopUpHandle);
592 bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc)
596 if(szTitle == NULL || szContents == NULL || pAppData == NULL)
598 VideoLogInfo("No have popup message or pAppData is null.");
602 Evas_Object *pButton = NULL;
604 MpUtilDeletePopupHandle();
606 MpUtilSetAlphaOfMainWindow(FALSE);
608 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
610 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
611 elm_object_text_set(pPopUpHandle, szContents);
612 elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
614 pButton = elm_button_add(pPopUpHandle);
615 elm_object_style_set ( pButton, "popup_button/default");
616 elm_object_text_set(pButton, MP_COM_SK_YES);
617 elm_object_part_content_set(pPopUpHandle, "button1", pButton);
619 if(PopupYesButtonCallbackFunc)
621 evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData);
624 pButton = elm_button_add(pPopUpHandle);
625 elm_object_text_set(pButton, MP_COM_SK_NO);
626 elm_object_style_set ( pButton, "popup_button/default");
627 elm_object_part_content_set(pPopUpHandle, "button2", pButton);
629 if(PopupNoButtonCallbackFunc)
631 evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData);
634 //elm_popup_timeout_set(pPopUpHandle, 3.0);
636 evas_object_show(pPopUpHandle);
641 bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData)
647 VideoLogInfo("No have popup message or pAppData is null.");
651 Evas_Object *pButton = NULL;
653 MpUtilDeletePopupHandle();
655 MpUtilSetAlphaOfMainWindow(FALSE);
657 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
659 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
660 elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_BODY_DELETE_Q);
662 pButton = elm_button_add(pPopUpHandle);
663 elm_object_text_set(pButton, MP_COM_BODY_DELETE);
664 elm_object_style_set(pButton, "sweep/delete");
665 elm_object_part_content_set(pPopUpHandle, "button1", pButton);
667 if(PopupDeleteButtonCallbackFunc)
669 evas_object_smart_callback_add(pButton, "clicked", PopupDeleteButtonCallbackFunc, pUserData);
672 pButton = elm_button_add(pPopUpHandle);
673 elm_object_text_set(pButton, MP_COM_BUTTON_CANCEL);
674 elm_object_part_content_set(pPopUpHandle, "button2", pButton);
676 if(PopupCancelButtonCallbackFunc)
678 evas_object_smart_callback_add(pButton, "clicked", PopupCancelButtonCallbackFunc, pUserData);
681 //elm_popup_timeout_set(pPopUpHandle, 3.0);
683 evas_object_show(pPopUpHandle);
688 void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString)
692 Evas_Object *pLabel = NULL;
694 pLabel = elm_label_add(pBox);
695 elm_object_style_set(pLabel, "popup/default");
696 elm_object_text_set(pLabel, szString);
697 elm_label_ellipsis_set(pLabel, EINA_TRUE);
698 elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get());
699 evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
700 evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get());
701 elm_box_pack_end(pBox, pLabel);
702 evas_object_show(pLabel);
705 /*bool MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc)
709 if(szTitle == NULL || pAppData == NULL)
711 VideoLogInfo("No have popup message or pAppData is null.");
714 char *szFilePath = NULL;
715 char *szVideoTitle = NULL;
717 char szTmpStr[STR_LEN_MAX] = {0};
718 char szTmpFileDate[STR_LEN_MAX] = {0};
719 char szTmpFileExtension[STR_LEN_MAX] = {0};
720 char szTmpFileSize[STR_LEN_MAX] = {0};
722 double nLongtitude = 0.0;
723 double nLatitude = 0.0;
728 Evas_Object *pBox = NULL;
729 Evas_Object *pButton = NULL;
731 MpUtilDeletePopupHandle();
733 MpUtilSetAlphaOfMainWindow(FALSE);
735 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
737 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
739 szFilePath = MpUtilMediaSvcGetVideoUrl(nVideoItemIndex);
740 szVideoTitle = MpUtilMediaSvcGetVideoTitle(nVideoItemIndex);
741 nWidth = MpUtilMediaSvcGetVideoItemWidth(nVideoItemIndex);
742 nHeight = MpUtilMediaSvcGetVideoItemHeight(nVideoItemIndex);
744 MpVideoInfoCtrlGetFileInfo(szFilePath, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX);
745 MpVideoInfoCtrlGetGPS(szFilePath, &nLongtitude, &nLatitude);
747 pBox = elm_box_add(pPopUpHandle);
749 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s </align></font_size>", MP_COM_BODY_DETAILS_TITLE, szVideoTitle);
750 MpUtilSetLabelForDetail(pBox, szTmpStr);
751 memset(szTmpStr, 0, STR_LEN_MAX);
753 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_FORMAT, szTmpFileExtension);
754 MpUtilSetLabelForDetail(pBox, szTmpStr);
755 memset(szTmpStr, 0, STR_LEN_MAX);
757 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_POP_DATE, szTmpFileDate);
758 MpUtilSetLabelForDetail(pBox, szTmpStr);
759 memset(szTmpStr, 0, STR_LEN_MAX);
761 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_SIZE, szTmpFileSize);
762 MpUtilSetLabelForDetail(pBox, szTmpStr);
763 memset(szTmpStr, 0, STR_LEN_MAX);
765 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %d x %d</align></font_size>", MP_IDLE_BODY_RESOLUTION, nWidth, nHeight);
766 MpUtilSetLabelForDetail(pBox, szTmpStr);
767 memset(szTmpStr, 0, STR_LEN_MAX);
769 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LATITUDE), nLatitude);
770 MpUtilSetLabelForDetail(pBox, szTmpStr);
771 memset(szTmpStr, 0, STR_LEN_MAX);
773 snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LONGITUTD), nLongtitude);
774 MpUtilSetLabelForDetail(pBox, szTmpStr);
775 memset(szTmpStr, 0, STR_LEN_MAX);
777 elm_object_content_set(pPopUpHandle, pBox);
779 elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
780 pButton = elm_button_add(pPopUpHandle);
781 elm_object_style_set (pButton, "popup_button/default");
782 elm_object_text_set(pButton, MP_COM_SK_BACK);
783 elm_object_part_content_set(pPopUpHandle, "button1", pButton);
797 if(PopupButtonCallbackFunc)
799 evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData);
802 evas_object_show(pPopUpHandle);
807 bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel)
811 if (pAppData == NULL || szLabel == NULL) {
812 VideoLogInfo("No have popup message or pAppData is null.");
816 MpUtilDeletePopupHandle();
818 MpUtilSetAlphaOfMainWindow(FALSE);
820 pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
822 evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
823 Evas_Object *progressbar, *box, *label;
825 label = elm_label_add(pPopUpHandle);
826 elm_object_text_set(label, szLabel);
827 evas_object_show(label);
829 progressbar = elm_progressbar_add(pPopUpHandle);
830 elm_object_style_set(progressbar, "pending_list");
831 elm_progressbar_pulse(progressbar, EINA_TRUE);
832 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
833 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
834 elm_progressbar_pulse(progressbar, EINA_TRUE);
835 evas_object_show(progressbar);
837 box = elm_box_add(pPopUpHandle);
838 elm_box_pack_end(box, label);
839 elm_box_pack_end(box, progressbar);
840 evas_object_show(box);
841 elm_object_content_set(pPopUpHandle, box);
844 MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
847 evas_object_show(pPopUpHandle);
853 void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func)
857 Evas_Object *pButton = NULL;
858 Evas_Object *pIcon = NULL;
860 pButton = elm_button_add(pParent);
864 pIcon = elm_icon_add(pParent);
865 elm_image_file_set(pIcon, szIconPath, NULL);
866 //evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, nAspectWidth, nAspectHeight);
867 evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_NEITHER, nAspectWidth, nAspectHeight);
868 //elm_icon_resizable_set(pIcon, bSizeUp, bSizeDown);
873 elm_object_style_set(pButton, szButtonStyle);
878 elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon);
883 evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData);
886 elm_object_focus_allow_set(pButton, EINA_FALSE);
887 evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
888 evas_object_show(pButton);
890 return (void *)pButton;
893 void *MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func)
897 Evas_Object *pButton = NULL;
899 pButton = elm_button_add(pParent);
903 elm_object_style_set(pButton, szButtonStyle);
908 elm_object_text_set(pButton, szButtonText);
913 evas_object_smart_callback_add(pButton, "clicked", func, pUserData);
916 elm_object_focus_allow_set(pButton, EINA_FALSE);
917 evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
918 evas_object_show(pButton);
920 return (void *)pButton;
923 void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName)
927 Evas_Object *pEdj = NULL;
931 pEdj = edje_object_add(pEvas);
932 if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) {
933 VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName,
938 edje_object_size_min_get(pEdj, &nWidth, &nHeight);
939 evas_object_resize(pEdj, nWidth, nHeight);
944 bool MpUtilIsCallOff(void)
950 if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
951 if (nCallStatus == VCONFKEY_CALL_OFF)
953 VideoLogInfo("Call off");
958 VideoLogInfo("!!! CALL ON !!!");
966 bool MpUtilIsCameraOff(void)
970 int nCameraStatus = 0;
972 if (!vconf_get_int(VCONFKEY_CAMERA_STATE, &nCameraStatus)) {
973 if (nCameraStatus == VCONFKEY_CAMERA_STATE_NULL)
975 VideoLogInfo("Camera off");
980 VideoLogInfo("!!! CAMERA ON !!!");
987 bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData)
989 if (!pCameraStatusCb) {
990 VideoLogInfo("pEarjackCb is empty.");
996 vconf_notify_key_changed(VCONFKEY_CAMERA_STATE, pCameraStatusCb, pUserData);
1001 bool MpUtilIsConnectEarjack(void)
1007 if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) {
1016 bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData)
1019 VideoLogInfo("pEarjackCb is empty.");
1025 vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData);
1030 bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl)
1032 if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
1034 VideoLogInfo("[ERR]");
1037 VideoLogInfo("szPreviewUrl : %s", szPreviewUrl);
1041 if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS, szPreviewUrl))
1043 VideoLogInfo("Fail to write szPreviewUrl.");
1048 VideoLogInfo("Success to write it.");
1055 bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize)
1057 if(!szRetPreviewUrl)
1059 VideoLogInfo("[ERR]");
1063 memset(szRetPreviewUrl, 0, nStrSize);
1069 char *szPreviewUrl = NULL;
1072 szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS);
1073 if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
1075 VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
1080 VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
1081 strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
1089 bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl)
1091 if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
1093 VideoLogInfo("[ERR]");
1100 if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS, szPreviewUrl))
1102 VideoLogInfo("Fail to write szPreviewUrl.");
1107 VideoLogInfo("Success to write it.");
1114 bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize)
1116 if(!szRetPreviewUrl)
1118 VideoLogInfo("[ERR]");
1122 memset(szRetPreviewUrl, 0, nStrSize);
1128 char *szPreviewUrl = NULL;
1131 szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS);
1132 if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
1134 VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
1139 VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
1140 strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
1148 unsigned int MpUtilGetMainWindowXID(void)
1152 VideoLogInfo("pMainXwindow : %d", pMainXwindow);
1153 return pMainXwindow;
1155 VideoLogInfo("No exist main window XID.");
1160 void MpUtilRotateWindow(int nRotateMode, void *pWindowHandle)
1164 if (!pWindowHandle) {
1168 switch (nRotateMode) {
1169 case VIDEO_ROTATE_UNKNOWN:
1170 VideoLogInfo("VIDEO_ROTATE_UNKNOWN");
1171 elm_win_rotation_with_resize_set(pWindowHandle, 0);
1174 case VIDEO_ROTATE_PORTRAIT_NORMAL:
1175 VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
1176 elm_win_rotation_with_resize_set(pWindowHandle, 0);
1179 case VIDEO_ROTATE_LANDSCAPE_NORMAL:
1180 VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
1181 elm_win_rotation_with_resize_set(pWindowHandle, 270);
1184 case VIDEO_ROTATE_PORTRAIT_REVERSE:
1185 VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
1186 elm_win_rotation_with_resize_set(pWindowHandle, 180);
1189 case VIDEO_ROTATE_LANDSCAPE_REVERSE:
1190 VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
1191 elm_win_rotation_with_resize_set(pWindowHandle, 90);
1195 VideoLogInfo("DEFAULT - VIDEO_ROTATE_UNKNOWN");
1196 elm_win_rotation_with_resize_set(pWindowHandle, 0);
1201 void MpUtilGetUserAgent(VideoAppData *pAppData)
1207 char *szUserAgent = NULL;
1208 szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT);
1211 memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
1212 strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1);
1217 VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!");
1221 memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
1222 snprintf(pAppData->szUserAgent, STR_LEN_MAX, "%s", MP_UTIL_TEMP_USER_AGENT_VALUE);
1225 if(!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode))
1227 VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode);
1232 double MpUtilGetSysTime(void)
1236 gettimeofday(&tv, NULL);
1237 return (double)tv.tv_sec + (double)tv.tv_usec / 1E6;
1240 void MpUtilLcdNormalPowerLockForResume(void)
1244 pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0);
1247 void MpUtilLcdNormalPowerUnlockForPause(void)
1251 pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
1254 void MpUtilLcdOffForPowerButton(void)
1258 pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
1261 void MpUtilMultimediaKeyGrab(void)
1264 MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE);
1265 MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE);
1266 MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE);
1267 MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE);
1268 MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE);
1269 MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE);
1270 MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE);
1273 void MpUtilMultimediaKeyUngrab(void)
1277 MpUtilSetKeyUngrab(PAUSE_KEY);
1278 MpUtilSetKeyUngrab(PLAY_KEY);
1279 MpUtilSetKeyUngrab(STOP_KEY);
1280 MpUtilSetKeyUngrab(NEXT_KEY);
1281 MpUtilSetKeyUngrab(PREV_KEY);
1282 MpUtilSetKeyUngrab(FORWARD_KEY);
1283 MpUtilSetKeyUngrab(REWIND_KEY);
1287 void MpUtilMultimediaVolumeKeyGrab(void)
1291 MpUtilSetKeyGrab(VOLUME_UP_KEY, KEY_GRAB_EXCLUSIVE);
1292 MpUtilSetKeyGrab(VOLUME_DOWN_KEY, KEY_GRAB_EXCLUSIVE);
1295 nRet = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1);
1298 VideoLogError("VCONFKEY_STARTER_USE_VOLUME_KEY set fail: %d", nRet);
1301 void MpUtilMultimediaVolumeKeyUngrab(void)
1305 MpUtilSetKeyUngrab(VOLUME_UP_KEY);
1306 MpUtilSetKeyUngrab(VOLUME_DOWN_KEY);
1310 bool MpUtilSbeamIsActive(void)
1312 VideoLogInfo("bIsActiveNfcSbeam : %d", bIsActiveNfcSbeam);
1314 return bIsActiveNfcSbeam;
1317 void MpUtilSbeamP2pTargetDiscoveredCb(nfc_discovered_type_e nType, nfc_p2p_target_h pTarget, void *pUserData)
1321 VideoLogInfo("User data is NULL.");
1325 VideoAppData *pAppData = (VideoAppData *)pUserData;
1329 if(nType == NFC_DISCOVERED_TYPE_ATTACHED)
1331 VideoLogInfo("NFC_DISCOVERED_TYPE_ATTACHED");
1333 if(bIsActiveNfcSbeam)
1335 char szWindowId[STR_LEN_MAX] = {0};
1337 if(strlen(pAppData->szMediaUri) <= 0)
1339 VideoLogInfo("[ERR]No exist media uri.");
1343 service_h svc_handle;
1344 service_create(&svc_handle);
1345 snprintf(szWindowId, STR_LEN_MAX-1, "%d", elm_win_xwindow_get(pAppData->pMainWindow));
1347 service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/nfc_sbeam_send");
1348 service_set_mime(svc_handle, "text/DirectShareVideos");
1349 service_set_window(svc_handle, elm_win_xwindow_get(pAppData->pMainWindow));
1350 service_set_uri(svc_handle, pAppData->szMediaUri);
1351 service_send_launch_request(svc_handle, NULL, NULL);
1352 service_destroy(svc_handle);
1356 VideoLogInfo("bIsActiveNfcSbeam is NULL.");
1361 void MpUtilSbeamInit(void* pUserData)
1365 VideoLogInfo("User data is NULL.");
1371 int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
1373 if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
1375 VideoLogInfo("Fail to get value.");
1379 if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
1381 VideoLogInfo("Off state about nfc sbeam");
1386 if(bIsActiveNfcSbeam == FALSE)
1388 if(nfc_manager_initialize(NULL, NULL) != NFC_ERROR_NONE)
1390 VideoLogInfo("[Err] Fail to initialize nfc manager.");
1394 nfc_manager_set_p2p_target_discovered_cb(MpUtilSbeamP2pTargetDiscoveredCb, pUserData);
1396 bIsActiveNfcSbeam = TRUE;
1400 VideoLogInfo("Already set sbeam activation.");
1404 void MpUtilSbeamDeinit(void)
1408 int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
1410 if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
1412 VideoLogInfo("Fail to get value.");
1416 if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
1418 VideoLogInfo("Off state about nfc sbeam");
1423 if(bIsActiveNfcSbeam == TRUE)
1425 if(nfc_manager_deinitialize() != NFC_ERROR_NONE)
1427 VideoLogInfo("[Err] Fail to deinitialize nfc manager.");
1430 bIsActiveNfcSbeam = FALSE;
1434 VideoLogInfo("Already set sbeam unactivation.");
1439 char* MpUtilGetFileSize(unsigned int size)
1443 #define FILE_SIZE_LEN_MAX 64
1444 #define BASIC_SIZE 1024 //used for file size check
1446 enum VIDEO_PLAYER_FILE_SIZE_TYPE
1456 char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
1462 while(size >= (BASIC_SIZE))
1468 if(nCount == SIZE_BYTE)
1470 snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuB", size);
1472 else if(nCount == SIZE_KB)
1474 snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuKB", size);
1476 else if(nCount == SIZE_MB)
1478 snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", size);
1480 else if(nCount == SIZE_GB)
1482 snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuGB", size);
1486 snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", 0);
1489 VideoLogInfo("Size=%s", pTmp);
1494 void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour)
1496 #define VIDEO_TIME_MSEC_PER_SEC 1000
1497 #define VIDEO_TIME_SEC_PER_MIN 60
1498 #define VIDEO_TIME_MIN_PER_HOUR 60
1499 #define VIDEO_TIME_SEC_PER_HOUR (VIDEO_TIME_MIN_PER_HOUR * VIDEO_TIME_SEC_PER_MIN)
1503 VideoLogInfo("[ERR] No exist szRetTime pointer.");
1508 memset(szRetTime, 0, STR_LEN_MAX);
1513 VideoLogInfo("nVideoTime : %d", nVideoTime);
1516 int nTime = floor(nVideoTime / VIDEO_TIME_MSEC_PER_SEC);
1522 if (nTime >= VIDEO_TIME_SEC_PER_HOUR)
1524 nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
1525 nTmp = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
1526 nMin = nTmp % VIDEO_TIME_MIN_PER_HOUR;
1527 nHour = floor(nTmp / VIDEO_TIME_MIN_PER_HOUR);
1529 else if (nTime >= VIDEO_TIME_SEC_PER_MIN)
1532 nMin = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
1533 nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
1539 nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
1546 snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
1550 snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d", nMin, nSec);
1555 snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
1558 szRetTime[strlen(szRetTime)] = '\0';
1560 VideoLogInfo("szRetTime : %s", szRetTime);
1563 void MpUtilLayoutVisibleOff(void *pWindowHandle)
1567 if(pWindowHandle == NULL)
1569 VideoLogError("Window handle is NULL");
1573 if(pX11DisplayHandle == NULL)
1575 VideoLogError("Display handle is NULL");
1579 if (!strcmp ("mobile", elm_win_profile_get (pWindowHandle)))
1581 utilx_set_fb_visible (pX11DisplayHandle, UTILX_FB_TYPE_UI, FALSE);
1585 VideoLogError("Skip for Desktop mode : %s", elm_win_profile_get (pWindowHandle));