2 * To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
4 * Copyright [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.tizenopensource.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
24 #include <syspopup_caller.h>
27 #include "mp-drm-ctrl.h"
28 #include "mp-video-log.h"
29 #include "video-player.h"
30 #include "mp-video-display-view.h"
31 #include "mp-video-progressbar.h"
32 #include "mp-video-type-define.h"
33 #include "mp-video-value-define.h"
34 #include "mp-util-media-service.h"
35 #include "mp-video-string-define.h"
36 #include "mp-video-sound-path-ctrl.h"
37 #include "mp-external-ug.h"
38 #include "mp-video-service-ctrl.h"
40 #define CTRL_PANEL_SHOW_TIME 5.0
41 #define MAX_SPEED_STEP 4
43 static Evas_Object *pNaviFrameHandle = NULL;
44 static Evas_Object *pDisplayViewLayout = NULL;
45 static Evas_Object *pDisplayViewPanelEdj = NULL;
46 static Evas_Object *pDisplayViewCtrlEdj = NULL;
47 static Evas_Object *pDisplayViewProgressbarEdj = NULL;
48 static Evas_Object *pDisplaySoundpathButton = NULL;
50 static Ecore_Timer *pCtrlPanelHideTimer = NULL;
51 static Ecore_Timer *pSpeedPressTimer = NULL;
53 static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
55 static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
57 static bool bIsVideoViewScreenLock = FALSE;
58 static bool bSwitchDisplayViewUI = TRUE;
59 static bool bIsSpeedLongPress = FALSE;
60 static bool bIsDisplayViewOnlyAudio = FALSE;
61 static int nSpeedMode = 0; /* (-1:REW, 1: FF) */
62 static int nControlMouseDownPos = 0;
63 static int nControlMouseMovePos = 0;
65 static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
67 static bool bIsPauseByUser = FALSE;
70 * When the video display view is hieded by others view(favorite/info/etc),
71 * passing click event of mouse up in video display view.
73 static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
80 static void MpVideoDisplayViewUpdateFFStep(int nStep)
84 if (nStep < 0 || nStep > MAX_SPEED_STEP) {
85 VideoLogInfo("Invalid Step value:%d", nStep);
89 char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
93 case MP_PLAYING_SPEED_2X: nStep = 1; break;
94 case MP_PLAYING_SPEED_3X: nStep = 2; break;
95 case MP_PLAYING_SPEED_4X: nStep = 3; break;
96 case MP_PLAYING_SPEED_5X: nStep = 4; break;
99 if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
101 snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_FF_STEP, nStep);
105 snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_FF_LANDSCAPE_STEP, nStep);
108 VideoLogInfo("%s", sig_format);
109 edje_object_signal_emit(pDisplayViewCtrlEdj, sig_format, "*");
112 static void MpVideoDisplayViewUpdateREWStep(int nStep)
116 if (nStep < 0 || nStep > MAX_SPEED_STEP) {
117 VideoLogInfo("Invalid Step value:%d", nStep);
121 char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
125 case MP_PLAYING_SPEED_2X: nStep = 1; break;
126 case MP_PLAYING_SPEED_3X: nStep = 2; break;
127 case MP_PLAYING_SPEED_4X: nStep = 3; break;
128 case MP_PLAYING_SPEED_5X: nStep = 4; break;
131 if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
133 snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_REW_STEP, nStep);
137 snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_REW_LANDSCAPE_STEP, nStep);
140 VideoLogInfo("%s", sig_format);
141 edje_object_signal_emit(pDisplayViewCtrlEdj, sig_format, "*");
148 static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
151 VideoLogInfo("No exist pUserData");
157 MpUtilDeletePopupHandle();
160 static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
163 VideoLogInfo("[ERR] No exist pUserData");
169 VideoAppData *pAppData = (VideoAppData *)pUserData;
171 if (MpVideoSoundpathIsConnectOtherSoundpath()) {
172 VideoLogInfo("Connect BT or earjack.");
173 MpVideoSoundpathShow(pUserData);
175 MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
179 static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
184 VideoLogInfo("[ERR]");
188 VideoAppData *pAppData = (VideoAppData *)pUserData;
190 if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
191 VideoLogInfo("Press Pause button.");
193 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME ||
194 pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
195 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
196 bIsPauseByUser = TRUE;
201 static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
206 VideoLogInfo("[ERR]");
210 VideoAppData *pAppData = (VideoAppData *)pUserData;
212 if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
213 VideoLogInfo("Press Resume/Play button.");
215 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
216 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
217 bIsPauseByUser = FALSE;
222 static Eina_Bool MpVideoDisplayViewSpeedLongPressCb(void *pUserData)
227 VideoLogInfo("[ERR]");
231 VideoAppData *pAppData = (VideoAppData *)pUserData;
233 if (pSpeedPressTimer) {
234 ecore_timer_del(pSpeedPressTimer);
235 pSpeedPressTimer = NULL;
238 bIsSpeedLongPress = TRUE;
239 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
241 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
245 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
246 snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast forward", pAppData->nPlayingSpeed);
247 MpVideoDisplayViewUpdateFFStep(pAppData->nPlayingSpeed);
249 else if(nSpeedMode == -1)
251 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
252 snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast reverse", pAppData->nPlayingSpeed);
253 MpVideoDisplayViewUpdateREWStep(pAppData->nPlayingSpeed);
256 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
257 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
263 static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
268 VideoLogInfo("[ERR]");
272 VideoAppData *pAppData = (VideoAppData *)pUserData;
274 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
275 VideoLogInfo("Press FF down button.");
276 if (pCtrlPanelHideTimer) {
277 ecore_timer_del(pCtrlPanelHideTimer);
278 pCtrlPanelHideTimer = NULL;
281 if (pSpeedPressTimer) {
282 ecore_timer_del(pSpeedPressTimer);
283 pSpeedPressTimer = NULL;
287 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
291 static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
296 VideoLogInfo("[ERR]");
300 VideoAppData *pAppData = (VideoAppData *)pUserData;
302 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
303 VideoLogInfo("Press FF up button.");
304 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
306 if (pSpeedPressTimer) {
307 ecore_timer_del(pSpeedPressTimer);
308 pSpeedPressTimer = NULL;
309 bIsPauseByUser = FALSE;
310 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
312 MpVideoDisplayViewUpdateFFStep(0);
314 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
315 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
317 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
319 bIsSpeedLongPress = FALSE;
323 static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
328 VideoLogInfo("[ERR]");
332 VideoAppData *pAppData = (VideoAppData *)pUserData;
334 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
335 VideoLogInfo("Press Rewind donw button.");
337 if (pCtrlPanelHideTimer) {
338 ecore_timer_del(pCtrlPanelHideTimer);
339 pCtrlPanelHideTimer = NULL;
342 if (pSpeedPressTimer) {
343 ecore_timer_del(pSpeedPressTimer);
344 pSpeedPressTimer = NULL;
348 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
352 static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
357 VideoLogInfo("[ERR]");
361 VideoAppData *pAppData = (VideoAppData *)pUserData;
363 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
364 VideoLogInfo("Press Rewind up button.");
365 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
367 if (pSpeedPressTimer) {
368 ecore_timer_del(pSpeedPressTimer);
369 pSpeedPressTimer = NULL;
370 bIsPauseByUser = FALSE;
371 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
373 MpVideoDisplayViewUpdateREWStep(0);
375 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
376 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
378 pAppData->VideoAppCtrlCallbackFunc. VideoAppCtrlSpeedReset(pAppData);
380 bIsSpeedLongPress = FALSE;
385 static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
390 VideoLogInfo("[ERR]");
394 edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
396 VideoAppData *pAppData = (VideoAppData *)pUserData;
398 if(pAppData->nCurPosition >= 0)
400 MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
403 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
405 MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
407 edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
411 static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
416 static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
420 syspopup_launch("volume", NULL);
423 static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
428 VideoLogInfo("[ERR] No Exist pUserData.");
432 VideoAppData *pAppData = (VideoAppData *)pUserData;
434 if (pCtrlPanelHideTimer) {
435 ecore_timer_del(pCtrlPanelHideTimer);
436 pCtrlPanelHideTimer = NULL;
439 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
445 static void MpVideoDisplayViewSpeedChange(void *pUserData)
448 VideoLogInfo("[ERR] No Exist pUserData.");
452 VideoAppData *pAppData = (VideoAppData *)pUserData;
454 int booster_step = 0;
456 if (nSpeedMode == 1) {
457 booster_step = nControlMouseMovePos - nControlMouseDownPos;
458 booster_step = booster_step / BOOSTER_STEP_DISTANCE;
459 } else if (nSpeedMode == -1) {
460 booster_step = nControlMouseDownPos - nControlMouseMovePos;
461 booster_step = booster_step / BOOSTER_STEP_DISTANCE;
463 VideoLogInfo("[ERR] Invalid SpeedMode.");
467 if(booster_step == 0)
469 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
471 else if(booster_step == 1)
473 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
475 else if(booster_step == 2)
477 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
479 else if(booster_step > 3)
481 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
484 VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
486 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
488 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
492 snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast forward", pAppData->nPlayingSpeed);
493 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
494 MpVideoDisplayViewUpdateFFStep(pAppData->nPlayingSpeed);
498 snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast reverse", pAppData->nPlayingSpeed);
499 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
500 MpVideoDisplayViewUpdateREWStep(pAppData->nPlayingSpeed);
503 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
508 static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
511 VideoLogInfo("[ERR]");
516 VideoLogInfo("[ERR] No Exist pUserData.");
520 Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
522 if (bIsSpeedLongPress) {
523 nControlMouseMovePos = pBtnEvent->cur.output.x;
524 MpVideoDisplayViewSpeedChange(pUserData);
528 static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
533 VideoLogInfo("[ERR]");
537 Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
539 nControlMouseDownPos = pBtnEvent->output.x;
542 static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
545 VideoLogInfo("[ERR]");
551 MpVideoSoundpathHide();
552 MpUtilDeletePopupHandle();
554 if (MpUtilIsConnectEarjack()) {
555 VideoLogInfo("Connect earjack.");
556 if (pDisplaySoundpathButton) {
557 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
559 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
560 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
563 VideoLogInfo("Disconnect earjack.");
565 if (pDisplaySoundpathButton) {
566 evas_object_del(pDisplaySoundpathButton);
567 pDisplaySoundpathButton = NULL;
570 elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
574 void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
579 VideoLogInfo("[ERR]");
583 VideoAppData *pAppData = (VideoAppData *)pUserData;
585 pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
586 if (pDisplayViewLayout) {
587 Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
589 elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
591 pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
593 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData);
594 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData);
596 pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
598 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
600 pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
601 if (pDisplayViewProgressbarEdj) {
602 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
604 VideoLogInfo("Progressbar edj handle is null.");
607 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
609 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
612 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
613 SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
614 SIGNAL_CONTROL_PART_PLAY_BUTTON,
615 (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
617 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
618 SIGNAL_CONTROL_PLAY_RESUME_PRESS,
619 SIGNAL_CONTROL_PART_PLAY_BUTTON,
620 (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
622 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
623 SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
624 SIGNAL_CONTROL_PART_FF_BUTTON,
625 (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
627 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
628 SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
629 SIGNAL_CONTROL_PART_FF_BUTTON,
630 (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
632 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
633 SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
634 SIGNAL_CONTROL_PART_REW_BUTTON,
635 (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
637 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
638 SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
639 SIGNAL_CONTROL_PART_REW_BUTTON,
640 (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
642 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
643 SIGNAL_CONTROL_BACK_BUTTON_DOWN,
644 SIGNAL_CONTROL_PART_BACK_BUTTON,
645 (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
647 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
648 SIGNAL_CONTROL_VOL_BUTTON_DOWN,
649 SIGNAL_CONTROL_PART_VOL_BUTTON,
650 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
652 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
653 SIGNAL_CONTROL_VOL_BUTTON_UP,
654 SIGNAL_CONTROL_PART_VOL_BUTTON,
655 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
657 MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
661 void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
665 if (!pNaviFrameHandle|| !pUserData) {
666 VideoLogInfo("[ERR]");
670 MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
677 void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
679 if (!pNaviFrame || !pUserData) {
680 VideoLogInfo("[ERR]");
686 pNaviFrameHandle = pNaviFrame;
687 pChangeViewUserCbFunc = pChangeViewCb;
689 MpVideoDisplayViewInit(pUserData, nPlayerType);
690 pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
692 if(MpVideoSoundpathIsConnectOtherSoundpath())
694 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
695 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
698 MpVideoDisplayViewShowControlPanel(pUserData);
701 void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
705 VideoLogInfo("[ERR]");
711 VideoAppData *pAppData = (VideoAppData *)pUserData;
713 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
714 if(nTmpPlayerType == MP_VIDEO_PLAYER ||
715 nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
716 nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
717 nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL||
718 nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
720 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
724 void MpVideoDisplayViewDestroy(void *pUserData)
728 MpVideoDisplayViewHideControlPanel(pUserData);
729 MpVideoProgressbarDestroy();
731 pNaviFrameHandle = NULL;
732 pDisplayViewProgressbarEdj = NULL;
734 if (pDisplayViewPanelEdj) {
735 evas_object_del(pDisplayViewPanelEdj);
736 pDisplayViewPanelEdj = NULL;
739 if (pDisplayViewCtrlEdj) {
740 evas_object_del(pDisplayViewCtrlEdj);
741 pDisplayViewCtrlEdj = NULL;
744 if (pSpeedPressTimer) {
745 ecore_timer_del(pSpeedPressTimer);
746 pSpeedPressTimer = NULL;
749 if (pCtrlPanelHideTimer) {
750 ecore_timer_del(pCtrlPanelHideTimer);
751 pCtrlPanelHideTimer = NULL;
754 if (pDisplayViewLayout) {
755 evas_object_del(pDisplayViewLayout);
756 pDisplayViewLayout = NULL;
759 if (pDisplaySoundpathButton) {
760 evas_object_del(pDisplaySoundpathButton);
761 pDisplaySoundpathButton = NULL;
764 bIsVideoViewScreenLock = FALSE;
766 bSwitchDisplayViewUI = TRUE;
767 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
768 nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
769 bIsDisplayViewOnlyAudio = FALSE;
770 bIsPauseByUser = FALSE;
773 void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
778 VideoLogInfo("[ERR]");
782 VideoAppData *pAppData = (VideoAppData *)pUserData;
784 MpVideoProgressbarBeginOfStream((void *)pAppData);
786 if (pAppData->nDuration > 1) {
787 char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
789 snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
791 MpVideoProgressbarUpdateDurationTime(szDurationTime);
794 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
796 if(MpVideoDisplayViewIsPauseByUser() == FALSE)
798 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
802 void MpVideoDisplayViewUpdatePauseKey(void)
806 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
809 void MpVideoDisplayViewUpdateResumeKey(void)
813 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
816 void MpVideoDisplayViewShowControlPanel(void *pUserData)
821 VideoLogInfo("[ERR]");
825 if (!pDisplayViewPanelEdj) {
826 VideoLogInfo("No exist play control panel edc.");
830 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
831 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
835 VideoAppData *pAppData = (VideoAppData *)pUserData;
836 MpVideoProgressbarCreateTimer((void *)pAppData);
838 bSwitchDisplayViewUI = TRUE;
839 evas_object_show(pDisplayViewLayout);
841 if (pCtrlPanelHideTimer) {
842 ecore_timer_del(pCtrlPanelHideTimer);
843 pCtrlPanelHideTimer = NULL;
848 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
852 pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
855 MpVideoDisplayViewActivate();
856 MpVideoDisplayViewUnlockScreen(pUserData);
859 void MpVideoDisplayViewHideControlPanel(void *pUserData)
864 VideoLogInfo("[ERR]");
868 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
869 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
873 if (!pDisplayViewPanelEdj) {
874 VideoLogInfo("No exist play control panel edc.");
878 if(bIsDisplayViewOnlyAudio)
880 VideoLogInfo("Not hide control panel and UI because of audio only.");
884 bSwitchDisplayViewUI = FALSE;
886 evas_object_hide(pDisplayViewLayout);
888 MpVideoProgressbarDeleteTimer();
890 if (pCtrlPanelHideTimer) {
891 ecore_timer_del(pCtrlPanelHideTimer);
892 pCtrlPanelHideTimer = NULL;
896 void MpVideoDisplayViewActivate(void)
900 nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
903 void MpVideoDisplayViewUnactivate(void)
907 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
911 void MpVideoDisplayViewHideSoundpath(void)
915 MpVideoSoundpathHide();
918 void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
923 VideoLogInfo("[ERR]");
927 VideoAppData *pAppData = (VideoAppData *)pUserData;
929 Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
931 if (pNaviFrameItemForDisplayerView != NULL) {
932 VideoLogInfo("%s", pAppData->szVideoTitle);
933 elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
937 bool MpVideoDisplayViewIsTopView(void)
941 Evas_Object *pTmpContents = NULL;
942 Elm_Object_Item *pTmpItem = NULL;
944 if (!pNaviFrameHandle) {
945 VideoLogInfo("[ERR] No exist navigationbar handle.");
949 pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
950 pTmpContents = elm_object_item_content_get(pTmpItem);
952 if (pTmpContents == pDisplayViewLayout) {
953 VideoLogInfo("Video display view is staing in top view.");
956 VideoLogInfo("Video display view is not staied in top view.");
960 VideoLogInfo("[ERR] No exist navigationbar top item.");
967 void MpVideoDisplayViewShowNocontentImage(void *pUserData)
971 if (pDisplayViewLayout) {
972 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
975 bIsDisplayViewOnlyAudio = TRUE;
977 MpVideoDisplayViewShowControlPanel(pUserData);
980 void MpVideoDisplayViewHideNocontentImage(void)
984 if (pDisplayViewLayout) {
985 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
988 bIsDisplayViewOnlyAudio = FALSE;
991 void MpVideoDisplayViewPortrate(void)
995 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
996 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
997 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
998 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
999 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*");
1002 void MpVideoDisplayViewLandscape(void)
1006 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
1007 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
1008 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
1009 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
1010 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
1013 void MpVideoDisplayViewResetProgressBar(void *pUserData)
1017 if (pDisplayViewLayout) {
1018 MpVideoProgressbarReset(pUserData);
1022 void MpVideoDisplayViewLockScreen(void *pUserData)
1026 VideoAppData *pAppData = (VideoAppData *)pUserData;
1028 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1030 bIsVideoViewScreenLock = TRUE;
1033 void MpVideoDisplayViewUnlockScreen(void *pUserData)
1037 bIsVideoViewScreenLock = FALSE;
1040 bool MpVideoDisplayViewGetScreenLockState(void)
1044 return bIsVideoViewScreenLock;
1047 int MpVideoDisplayViewGetScreenSize(void)
1051 return nScreensizeStatus;
1054 bool MpVideoDisplayViewIsPauseByUser(void)
1056 VideoLogInfo("%d", bIsPauseByUser);
1058 return bIsPauseByUser;
1061 void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
1066 VideoLogInfo("[ERR]");
1070 MpVideoProgressbarCreateTimer(pUserData);