2 * Copyright (c) [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.
22 #include <syspopup_caller.h>
25 #include "mp-video-log.h"
26 #include "video-player.h"
27 #include "mp-video-display-view.h"
28 #include "mp-video-progressbar.h"
29 #include "mp-video-type-define.h"
30 #include "mp-video-value-define.h"
31 #include "mp-util-media-service.h"
32 #include "mp-video-string-define.h"
33 #include "mp-video-sound-path-ctrl.h"
35 #include "mp-external-ug.h"
36 #include "mp-video-service-ctrl.h"
38 #define CTRL_PANEL_SHOW_TIME 5.0
39 #define MAX_SPEED_STEP 4
40 #define REWIND_SPACE_TIME 3000
42 static Evas_Object *pNaviFrameHandle = NULL;
43 static Evas_Object *pDisplayViewLayout = NULL;
44 static Evas_Object *pDisplayViewPanelEdj = NULL;
45 static Evas_Object *pDisplayViewCtrlEdj = NULL;
46 static Evas_Object *pDisplayViewOptionEdj = NULL;
47 static Evas_Object *pDisplayViewProgressbarEdj = NULL;
48 static Evas_Object *pDisplaySoundpathButton = NULL;
50 static Evas_Object *pDisplayViewSpeedboxEdj = NULL;
52 static Ecore_Timer *pCtrlPanelHideTimer = NULL;
53 static Ecore_Timer *pSpeedPressTimer = NULL;
54 static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
55 static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
57 static bool bSwitchDisplayViewUI = TRUE;
58 static bool bIsSpeedLongPress = FALSE;
59 static bool bIsDisplayViewOnlyAudio = FALSE;
60 static int nSpeedMode = 0; /* (-1:REW, 1: FF) */
61 static int nControlMouseDownPos = 0;
62 static int nControlMouseMovePos = 0;
63 static bool bIsPauseByUser = FALSE;
64 static bool bIsBeginOfStream = FALSE;
65 static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
68 static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
71 VideoLogInfo("No exist pUserData");
77 MpUtilDeletePopupHandle();
81 static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
84 VideoLogInfo("[ERR] No exist pUserData");
90 VideoAppData *pAppData = (VideoAppData *)pUserData;
92 if (MpVideoSoundpathIsConnectOtherSoundpath()) {
93 VideoLogInfo("Connect BT or earjack.");
94 MpVideoSoundpathShow(pUserData);
96 MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
101 static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
104 VideoLogInfo("[ERR]");
110 VideoAppData *pAppData = (VideoAppData *)pUserData;
112 if(!bIsBeginOfStream)
114 VideoLogInfo("Skip for BOF");
118 if(pCtrlPanelHideTimer)
120 ecore_timer_del(pCtrlPanelHideTimer);
121 pCtrlPanelHideTimer = NULL;
124 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
126 MpExternalUgShow((void *)pAppData, pNaviFrameHandle);
129 static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
135 VideoLogInfo("[ERR]");
139 if(!bIsBeginOfStream)
141 VideoLogInfo("Skip for BOF");
145 VideoAppData *pAppData = (VideoAppData *)pUserData;
147 if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS))
149 VideoLogInfo("Press Pause button.");
151 if(pAppData->bSeekComplete == FALSE)
153 bIsPauseByUser = TRUE;
154 pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
158 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
160 bIsPauseByUser = TRUE;
161 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
166 static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
171 VideoLogInfo("[ERR]");
175 if(!bIsBeginOfStream)
177 VideoLogInfo("Skip for BOF");
181 VideoAppData *pAppData = (VideoAppData *)pUserData;
183 if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
184 VideoLogInfo("Press Resume/Play button.");
186 if(pAppData->bSeekComplete == FALSE)
188 bIsPauseByUser = FALSE;
189 pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
193 if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY)
195 bIsPauseByUser = FALSE;
196 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
201 static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData)
206 VideoLogInfo("[ERR]");
210 VideoAppData *pAppData = (VideoAppData *)pUserData;
212 if (pSpeedPressTimer) {
213 ecore_timer_del(pSpeedPressTimer);
214 pSpeedPressTimer = NULL;
217 bIsSpeedLongPress = TRUE;
218 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
220 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
224 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
225 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
227 edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj);
228 evas_object_show(pDisplayViewSpeedboxEdj);
230 else if(nSpeedMode == -1)
232 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
233 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
234 edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj);
235 evas_object_show(pDisplayViewSpeedboxEdj);
238 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*");
239 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
241 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
242 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
248 static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
253 VideoLogInfo("[ERR]");
257 VideoAppData *pAppData = (VideoAppData *)pUserData;
259 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
260 VideoLogInfo("Press FF down button.");
261 if (pCtrlPanelHideTimer) {
262 ecore_timer_del(pCtrlPanelHideTimer);
263 pCtrlPanelHideTimer = NULL;
266 if (pSpeedPressTimer) {
267 ecore_timer_del(pSpeedPressTimer);
268 pSpeedPressTimer = NULL;
272 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
276 static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
281 VideoLogInfo("[ERR]");
285 VideoAppData *pAppData = (VideoAppData *)pUserData;
287 if(!bIsBeginOfStream)
289 VideoLogInfo("Skip for BOF");
293 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
294 VideoLogInfo("Press FF up button.");
295 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
297 if (pSpeedPressTimer) {
298 ecore_timer_del(pSpeedPressTimer);
299 pSpeedPressTimer = NULL;
300 bIsPauseByUser = FALSE;
304 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
305 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
307 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
309 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
310 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
311 evas_object_hide(pDisplayViewSpeedboxEdj);
314 bIsSpeedLongPress = FALSE;
318 static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
324 VideoLogInfo("[ERR]");
328 VideoAppData *pAppData = (VideoAppData *)pUserData;
330 if(!bIsBeginOfStream)
332 VideoLogInfo("Skip for BOF");
336 if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED))
338 VideoLogInfo("Press FF clicked button.");
340 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
342 bIsPauseByUser = FALSE;
346 static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
351 VideoLogInfo("[ERR]");
355 if(!bIsBeginOfStream)
357 VideoLogInfo("Skip for BOF");
361 VideoAppData *pAppData = (VideoAppData *)pUserData;
363 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
364 VideoLogInfo("Press Rewind donw button.");
366 if (pCtrlPanelHideTimer) {
367 ecore_timer_del(pCtrlPanelHideTimer);
368 pCtrlPanelHideTimer = NULL;
371 if (pSpeedPressTimer) {
372 ecore_timer_del(pSpeedPressTimer);
373 pSpeedPressTimer = NULL;
377 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
381 static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
386 VideoLogInfo("[ERR]");
390 if(!bIsBeginOfStream)
392 VideoLogInfo("Skip for BOF");
396 VideoAppData *pAppData = (VideoAppData *)pUserData;
398 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
399 VideoLogInfo("Press Rewind up button.");
400 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
402 if (pSpeedPressTimer) {
403 ecore_timer_del(pSpeedPressTimer);
404 pSpeedPressTimer = NULL;
405 bIsPauseByUser = FALSE;
409 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
410 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
412 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
415 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
416 evas_object_hide(pDisplayViewSpeedboxEdj);
417 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
420 bIsSpeedLongPress = FALSE;
424 static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
429 VideoLogInfo("[ERR]");
433 if(!bIsBeginOfStream)
435 VideoLogInfo("Skip for BOF");
439 VideoAppData *pAppData = (VideoAppData *)pUserData;
441 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) {
442 VideoLogInfo("Press Rewind clicked button.");
444 if(pAppData->nCurPosition > REWIND_SPACE_TIME)
446 pAppData->nSetPosition = 0;
447 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
451 bIsPauseByUser = FALSE;
456 static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
461 VideoLogInfo("[ERR]");
465 edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
467 VideoAppData *pAppData = (VideoAppData *)pUserData;
469 if(pAppData->nCurPosition >= 0)
471 MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
474 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
476 MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
478 edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
482 static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
487 static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
488 Evas_Object *pObject,
489 const char *szEmission,
490 const char *szSource)
495 VideoLogInfo("[ERR]");
499 VideoAppData *pAppData = (VideoAppData *)pUserData;
501 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
504 static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
509 VideoLogInfo("[ERR] No Exist pUserData.");
513 VideoAppData *pAppData = (VideoAppData *)pUserData;
515 if (pCtrlPanelHideTimer) {
516 ecore_timer_del(pCtrlPanelHideTimer);
517 pCtrlPanelHideTimer = NULL;
520 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
526 static void MpVideoDisplayViewSpeedChange(void *pUserData)
529 VideoLogInfo("[ERR] No Exist pUserData.");
533 VideoAppData *pAppData = (VideoAppData *)pUserData;
535 int booster_step = 0;
537 if (nSpeedMode == 1) {
538 booster_step = nControlMouseDownPos - nControlMouseMovePos;
539 booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
540 } else if (nSpeedMode == -1) {
541 booster_step = nControlMouseDownPos - nControlMouseMovePos;
542 booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
544 VideoLogInfo("[ERR] Invalid SpeedMode.");
549 if(booster_step == 0)
551 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
552 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
554 else if(booster_step == 1)
556 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
557 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*");
559 else if(booster_step > 2)
561 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
562 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*");
565 VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
567 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
569 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
573 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
574 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
578 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
579 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
582 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
587 static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
590 VideoLogInfo("[ERR]");
595 VideoLogInfo("[ERR] No Exist pUserData.");
599 Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
601 if (bIsSpeedLongPress) {
602 nControlMouseMovePos = pBtnEvent->cur.output.y;
603 MpVideoDisplayViewSpeedChange(pUserData);
607 static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
612 VideoLogInfo("[ERR]");
616 Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
618 nControlMouseDownPos = pBtnEvent->output.y;
621 static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
624 VideoLogInfo("[ERR]");
630 MpVideoSoundpathHide();
631 MpUtilDeletePopupHandle();
633 if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) {
634 VideoLogInfo("Connect earjack.");
635 if (pDisplaySoundpathButton) {
636 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
638 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
639 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
642 VideoLogInfo("Disconnect earjack.");
644 if (pDisplaySoundpathButton) {
645 evas_object_del(pDisplaySoundpathButton);
646 pDisplaySoundpathButton = NULL;
649 elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
653 static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData)
657 VideoLogInfo("[ERR]");
663 VideoAppData *pAppData = (VideoAppData *)pUserData;
665 if(!MpUtilIsCameraOff())
667 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
670 static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
675 VideoLogError("[ERR]");
679 VideoAppData *pAppData = (VideoAppData *)pUserData;
681 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
683 evas_object_hide(pDisplayViewLayout);
686 static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
691 VideoLogError("[ERR]");
695 VideoAppData *pAppData = (VideoAppData *)pUserData;
697 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
700 void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
705 VideoLogInfo("[ERR]");
709 VideoAppData *pAppData = (VideoAppData *)pUserData;
711 pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
712 if (pDisplayViewLayout) {
713 Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
715 elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
717 pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
718 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
720 edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*");
722 pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
724 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData);
725 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData);
727 if(nPlayerType == MP_VIDEO_PLAYER_GALLERY)
732 int item_width = 120;
733 int item_height = 90;
735 ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
737 item_width = 170 * width/DEFAULT_SCALE_WIDTH;
741 item_height = 145 * height/DEFAULT_SCALE_HEIGHT;
745 pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
747 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
749 pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
750 if (pDisplayViewProgressbarEdj) {
751 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
753 VideoLogInfo("Progressbar edj handle is null.");
756 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
757 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
759 edje_object_signal_callback_add(pDisplayViewOptionEdj,
760 SIGNAL_OPTION_SHARE_DOWN,
762 (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData);
764 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
765 SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
766 SIGNAL_CONTROL_PART_PLAY_BUTTON,
767 (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
769 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
770 SIGNAL_CONTROL_PLAY_RESUME_PRESS,
771 SIGNAL_CONTROL_PART_PLAY_BUTTON,
772 (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
774 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
775 SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
776 SIGNAL_CONTROL_PART_FF_BUTTON,
777 (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
779 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
780 SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
781 SIGNAL_CONTROL_PART_FF_BUTTON,
782 (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
784 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
785 SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED,
786 SIGNAL_CONTROL_PART_FF_BUTTON,
787 (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData);
789 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
790 SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
791 SIGNAL_CONTROL_PART_REW_BUTTON,
792 (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
794 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
795 SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
796 SIGNAL_CONTROL_PART_REW_BUTTON,
797 (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
799 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
800 SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED,
801 SIGNAL_CONTROL_PART_REW_BUTTON,
802 (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData);
804 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
805 SIGNAL_CONTROL_BACK_BUTTON_DOWN,
806 SIGNAL_CONTROL_PART_BACK_BUTTON,
807 (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
809 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
810 SIGNAL_CONTROL_VOL_BUTTON_DOWN,
811 SIGNAL_CONTROL_PART_VOL_BUTTON,
812 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
814 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
815 SIGNAL_CONTROL_VOL_BUTTON_UP,
816 SIGNAL_CONTROL_PART_VOL_BUTTON,
817 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
819 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
820 SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
821 SIGNAL_CONTROL_PART_MUTE_BUTTON,
822 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
824 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
825 SIGNAL_CONTROL_MUTE_BUTTON_UP,
826 SIGNAL_CONTROL_PART_MUTE_BUTTON,
827 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
829 pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP);
830 evas_object_hide(pDisplayViewSpeedboxEdj);
832 MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
833 MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData);
837 void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
841 if (!pNaviFrameHandle|| !pUserData) {
842 VideoLogInfo("[ERR]");
845 bIsPauseByUser = FALSE;
847 MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
854 void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
856 if (!pNaviFrame || !pUserData) {
857 VideoLogInfo("[ERR]");
863 VideoAppData *pAppData = (VideoAppData *)pUserData;
865 pNaviFrameHandle = pNaviFrame;
866 pChangeViewUserCbFunc = pChangeViewCb;
868 MpVideoDisplayViewInit(pUserData, nPlayerType);
869 pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
871 elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData);
872 elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData);
874 if(MpVideoSoundpathIsConnectOtherSoundpath())
876 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
877 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
880 if(MpUtilCheckMuteStatus())
882 MpVideoDisplayViewSetMuteStatus(TRUE);
885 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
888 void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
892 VideoLogInfo("[ERR]");
898 VideoAppData *pAppData = (VideoAppData *)pUserData;
900 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
901 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
904 void MpVideoDisplayViewDestroy(void *pUserData)
908 MpVideoDisplayViewHideControlPanel(pUserData);
909 MpVideoProgressbarDestroy();
911 pNaviFrameHandle = NULL;
912 pDisplayViewProgressbarEdj = NULL;
914 if (pDisplayViewPanelEdj) {
915 evas_object_del(pDisplayViewPanelEdj);
916 pDisplayViewPanelEdj = NULL;
919 if (pDisplayViewCtrlEdj) {
920 evas_object_del(pDisplayViewCtrlEdj);
921 pDisplayViewCtrlEdj = NULL;
924 if (pDisplayViewOptionEdj) {
925 evas_object_del(pDisplayViewOptionEdj);
926 pDisplayViewOptionEdj = NULL;
929 if (pSpeedPressTimer) {
930 ecore_timer_del(pSpeedPressTimer);
931 pSpeedPressTimer = NULL;
934 if (pCtrlPanelHideTimer) {
935 ecore_timer_del(pCtrlPanelHideTimer);
936 pCtrlPanelHideTimer = NULL;
939 if (pDisplayViewLayout) {
940 evas_object_del(pDisplayViewLayout);
941 pDisplayViewLayout = NULL;
944 if (pDisplaySoundpathButton) {
945 evas_object_del(pDisplaySoundpathButton);
946 pDisplaySoundpathButton = NULL;
949 if (pDisplayViewSpeedboxEdj) {
950 evas_object_del(pDisplayViewSpeedboxEdj);
951 pDisplayViewSpeedboxEdj = NULL;
954 bSwitchDisplayViewUI = TRUE;
955 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
956 bIsDisplayViewOnlyAudio = FALSE;
957 bIsPauseByUser = FALSE;
960 void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
965 VideoLogInfo("[ERR]");
969 VideoAppData *pAppData = (VideoAppData *)pUserData;
971 bIsBeginOfStream = TRUE;
973 pAppData->bSeekComplete = TRUE;
975 MpVideoProgressbarBeginOfStream((void *)pAppData);
977 if (pAppData->nDuration > 1) {
978 char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
980 snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
982 MpVideoProgressbarUpdateDurationTime(szDurationTime);
985 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
987 if(MpVideoDisplayViewIsPauseByUser() == FALSE)
989 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
993 void MpVideoDisplayViewUpdatePauseKey(void)
997 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
1000 void MpVideoDisplayViewUpdateResumeKey(void)
1004 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
1010 void MpVideoDisplayViewShowControlPanel(void *pUserData)
1015 VideoLogInfo("[ERR]");
1019 if (!pDisplayViewPanelEdj) {
1020 VideoLogInfo("No exist play control panel edc.");
1024 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1025 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1029 VideoAppData *pAppData = (VideoAppData *)pUserData;
1031 if(bIsBeginOfStream)
1033 MpVideoProgressbarCreateTimer((void *)pAppData);
1036 bSwitchDisplayViewUI = TRUE;
1037 evas_object_show(pDisplayViewLayout);
1039 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
1040 int nRotate = MpUtilGetRotationState();
1041 if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
1043 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
1047 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
1050 if (pCtrlPanelHideTimer) {
1051 ecore_timer_del(pCtrlPanelHideTimer);
1052 pCtrlPanelHideTimer = NULL;
1057 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
1061 pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
1064 MpVideoDisplayViewActivate();
1067 void MpVideoDisplayViewHideControlPanel(void *pUserData)
1072 VideoLogInfo("[ERR]");
1076 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1077 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1081 if (!pDisplayViewPanelEdj) {
1082 VideoLogInfo("No exist play control panel edc.");
1086 if(bIsDisplayViewOnlyAudio)
1088 VideoLogInfo("Not hide control panel and UI because of audio only.");
1092 bSwitchDisplayViewUI = FALSE;
1094 MpVideoProgressbarDeleteTimer();
1097 if (pCtrlPanelHideTimer) {
1098 ecore_timer_del(pCtrlPanelHideTimer);
1099 pCtrlPanelHideTimer = NULL;
1102 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
1103 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
1106 void MpVideoDisplayViewActivate(void)
1110 nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
1113 void MpVideoDisplayViewUnactivate(void)
1117 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
1120 void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
1125 VideoLogInfo("[ERR]");
1129 VideoAppData *pAppData = (VideoAppData *)pUserData;
1131 Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
1133 bIsBeginOfStream = FALSE;
1134 MpVideoProgressbarDeleteTimer();
1136 if (pSpeedPressTimer) {
1137 ecore_timer_del(pSpeedPressTimer);
1138 pSpeedPressTimer = NULL;
1141 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1142 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1144 if (pNaviFrameItemForDisplayerView != NULL) {
1145 VideoLogInfo("%s", pAppData->szVideoTitle);
1146 elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
1150 bool MpVideoDisplayViewIsTopView(void)
1154 Evas_Object *pTmpContents = NULL;
1155 Elm_Object_Item *pTmpItem = NULL;
1157 if (!pNaviFrameHandle) {
1158 VideoLogInfo("[ERR] No exist navigationbar handle.");
1162 pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
1163 pTmpContents = elm_object_item_content_get(pTmpItem);
1165 if (pTmpContents == pDisplayViewLayout) {
1166 VideoLogInfo("Video display view is staing in top view.");
1169 VideoLogInfo("Video display view is not staied in top view.");
1173 VideoLogInfo("[ERR] No exist navigationbar top item.");
1180 void MpVideoDisplayViewShowNocontentImage(void *pUserData)
1184 if (pDisplayViewLayout) {
1185 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
1188 bIsDisplayViewOnlyAudio = TRUE;
1190 MpVideoDisplayViewShowControlPanel(pUserData);
1193 void MpVideoDisplayViewHideNocontentImage(void)
1197 if (pDisplayViewLayout) {
1198 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
1201 bIsDisplayViewOnlyAudio = FALSE;
1204 void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData)
1209 VideoLogError("[ERR]");
1213 VideoAppData *pAppData = (VideoAppData *)pUserData;
1215 if(bIsSpeedLongPress)
1217 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1218 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1220 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1221 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1223 evas_object_hide(pDisplayViewSpeedboxEdj);
1224 bIsSpeedLongPress = FALSE;
1226 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1229 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
1230 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
1231 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
1232 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
1233 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*");
1236 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1237 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1241 void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData)
1246 VideoLogError("[ERR]");
1250 VideoAppData *pAppData = (VideoAppData *)pUserData;
1252 if(bIsSpeedLongPress)
1254 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1255 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1257 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1258 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1260 evas_object_hide(pDisplayViewSpeedboxEdj);
1261 bIsSpeedLongPress = FALSE;
1263 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1266 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
1268 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
1269 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
1270 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
1271 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
1275 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1276 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1281 void MpVideoDisplayViewResetProgressBar(void *pUserData)
1285 if (pDisplayViewLayout) {
1286 MpVideoProgressbarReset(pUserData);
1290 bool MpVideoDisplayViewIsPauseByUser(void)
1292 VideoLogInfo("%d", bIsPauseByUser);
1294 return bIsPauseByUser;
1297 void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser)
1301 bIsPauseByUser = bPauseByUser;
1305 void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
1311 VideoLogInfo("[ERR]");
1315 if(bIsBeginOfStream)
1317 MpVideoProgressbarCreateTimer(pUserData);
1321 void MpVideoDisplayViewSetMuteStatus(bool bMute)
1325 if(pDisplayViewCtrlEdj == NULL)
1327 VideoLogError("Display control edj is NULL");
1333 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SET_MUTE, "*");
1337 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_UNSET_MUTE, "*");