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.
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 MpExternalUgShow((void *)pAppData, pNaviFrameHandle);
127 static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
133 VideoLogInfo("[ERR]");
137 if(!bIsBeginOfStream)
139 VideoLogInfo("Skip for BOF");
143 VideoAppData *pAppData = (VideoAppData *)pUserData;
145 if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS))
147 VideoLogInfo("Press Pause button.");
149 if(pAppData->bSeekComplete == FALSE)
151 bIsPauseByUser = TRUE;
152 pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
156 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
158 bIsPauseByUser = TRUE;
159 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
164 static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
169 VideoLogInfo("[ERR]");
173 if(!bIsBeginOfStream)
175 VideoLogInfo("Skip for BOF");
179 VideoAppData *pAppData = (VideoAppData *)pUserData;
181 if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
182 VideoLogInfo("Press Resume/Play button.");
184 if(pAppData->bSeekComplete == FALSE)
186 bIsPauseByUser = FALSE;
187 pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
191 if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY)
193 bIsPauseByUser = FALSE;
194 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
199 static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData)
204 VideoLogInfo("[ERR]");
208 VideoAppData *pAppData = (VideoAppData *)pUserData;
210 if (pSpeedPressTimer) {
211 ecore_timer_del(pSpeedPressTimer);
212 pSpeedPressTimer = NULL;
215 bIsSpeedLongPress = TRUE;
216 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
218 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
222 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
223 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
225 edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj);
226 evas_object_show(pDisplayViewSpeedboxEdj);
228 else if(nSpeedMode == -1)
230 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
231 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
232 edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj);
233 evas_object_show(pDisplayViewSpeedboxEdj);
236 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*");
237 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
239 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
240 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
246 static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
251 VideoLogInfo("[ERR]");
255 VideoAppData *pAppData = (VideoAppData *)pUserData;
257 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
258 VideoLogInfo("Press FF down button.");
259 if (pCtrlPanelHideTimer) {
260 ecore_timer_del(pCtrlPanelHideTimer);
261 pCtrlPanelHideTimer = NULL;
264 if (pSpeedPressTimer) {
265 ecore_timer_del(pSpeedPressTimer);
266 pSpeedPressTimer = NULL;
270 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
274 static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
279 VideoLogInfo("[ERR]");
283 VideoAppData *pAppData = (VideoAppData *)pUserData;
285 if(!bIsBeginOfStream)
287 VideoLogInfo("Skip for BOF");
291 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
292 VideoLogInfo("Press FF up button.");
293 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
295 if (pSpeedPressTimer) {
296 ecore_timer_del(pSpeedPressTimer);
297 pSpeedPressTimer = NULL;
298 bIsPauseByUser = FALSE;
302 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
303 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
305 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
307 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
308 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
309 evas_object_hide(pDisplayViewSpeedboxEdj);
312 bIsSpeedLongPress = FALSE;
316 static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
322 VideoLogInfo("[ERR]");
326 VideoAppData *pAppData = (VideoAppData *)pUserData;
328 if(!bIsBeginOfStream)
330 VideoLogInfo("Skip for BOF");
334 if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED))
336 VideoLogInfo("Press FF clicked button.");
338 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
340 bIsPauseByUser = FALSE;
344 static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
349 VideoLogInfo("[ERR]");
353 if(!bIsBeginOfStream)
355 VideoLogInfo("Skip for BOF");
359 VideoAppData *pAppData = (VideoAppData *)pUserData;
361 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
362 VideoLogInfo("Press Rewind donw button.");
364 if (pCtrlPanelHideTimer) {
365 ecore_timer_del(pCtrlPanelHideTimer);
366 pCtrlPanelHideTimer = NULL;
369 if (pSpeedPressTimer) {
370 ecore_timer_del(pSpeedPressTimer);
371 pSpeedPressTimer = NULL;
375 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
379 static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
384 VideoLogInfo("[ERR]");
388 if(!bIsBeginOfStream)
390 VideoLogInfo("Skip for BOF");
394 VideoAppData *pAppData = (VideoAppData *)pUserData;
396 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
397 VideoLogInfo("Press Rewind up button.");
398 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
400 if (pSpeedPressTimer) {
401 ecore_timer_del(pSpeedPressTimer);
402 pSpeedPressTimer = NULL;
403 bIsPauseByUser = FALSE;
407 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
408 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
410 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
413 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
414 evas_object_hide(pDisplayViewSpeedboxEdj);
415 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
418 bIsSpeedLongPress = FALSE;
422 static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
427 VideoLogInfo("[ERR]");
431 if(!bIsBeginOfStream)
433 VideoLogInfo("Skip for BOF");
437 VideoAppData *pAppData = (VideoAppData *)pUserData;
439 if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) {
440 VideoLogInfo("Press Rewind clicked button.");
442 if(pAppData->nCurPosition > REWIND_SPACE_TIME)
444 pAppData->nSetPosition = 0;
445 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
449 bIsPauseByUser = FALSE;
454 static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
459 VideoLogInfo("[ERR]");
463 edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
465 VideoAppData *pAppData = (VideoAppData *)pUserData;
467 if(pAppData->nCurPosition >= 0)
469 MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
472 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
474 MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
476 edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
480 static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
485 static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
486 Evas_Object *pObject,
487 const char *szEmission,
488 const char *szSource)
493 VideoLogInfo("[ERR]");
497 VideoAppData *pAppData = (VideoAppData *)pUserData;
499 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
502 static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
507 VideoLogInfo("[ERR] No Exist pUserData.");
511 VideoAppData *pAppData = (VideoAppData *)pUserData;
513 if (pCtrlPanelHideTimer) {
514 ecore_timer_del(pCtrlPanelHideTimer);
515 pCtrlPanelHideTimer = NULL;
518 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
524 static void MpVideoDisplayViewSpeedChange(void *pUserData)
527 VideoLogInfo("[ERR] No Exist pUserData.");
531 VideoAppData *pAppData = (VideoAppData *)pUserData;
533 int booster_step = 0;
535 if (nSpeedMode == 1) {
536 booster_step = nControlMouseDownPos - nControlMouseMovePos;
537 booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
538 } else if (nSpeedMode == -1) {
539 booster_step = nControlMouseDownPos - nControlMouseMovePos;
540 booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
542 VideoLogInfo("[ERR] Invalid SpeedMode.");
547 if(booster_step == 0)
549 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
550 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
552 else if(booster_step == 1)
554 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
555 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*");
557 else if(booster_step > 2)
559 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
560 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*");
563 VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
565 char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
567 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
571 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
572 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
576 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
577 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
580 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
585 static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
588 VideoLogInfo("[ERR]");
593 VideoLogInfo("[ERR] No Exist pUserData.");
597 Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
599 if (bIsSpeedLongPress) {
600 nControlMouseMovePos = pBtnEvent->cur.output.y;
601 MpVideoDisplayViewSpeedChange(pUserData);
605 static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
610 VideoLogInfo("[ERR]");
614 Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
616 nControlMouseDownPos = pBtnEvent->output.y;
619 static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
622 VideoLogInfo("[ERR]");
628 MpVideoSoundpathHide();
629 MpUtilDeletePopupHandle();
631 if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) {
632 VideoLogInfo("Connect earjack.");
633 if (pDisplaySoundpathButton) {
634 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
636 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
637 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
640 VideoLogInfo("Disconnect earjack.");
642 if (pDisplaySoundpathButton) {
643 evas_object_del(pDisplaySoundpathButton);
644 pDisplaySoundpathButton = NULL;
647 elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
651 static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData)
655 VideoLogInfo("[ERR]");
661 VideoAppData *pAppData = (VideoAppData *)pUserData;
663 if(!MpUtilIsCameraOff())
665 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
668 static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
673 VideoLogError("[ERR]");
677 VideoAppData *pAppData = (VideoAppData *)pUserData;
679 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
681 evas_object_hide(pDisplayViewLayout);
684 static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
689 VideoLogError("[ERR]");
693 VideoAppData *pAppData = (VideoAppData *)pUserData;
695 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
698 void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
703 VideoLogInfo("[ERR]");
707 VideoAppData *pAppData = (VideoAppData *)pUserData;
709 pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
710 if (pDisplayViewLayout) {
711 Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
713 elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
715 pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
716 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
718 edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*");
720 pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
722 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData);
723 evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData);
725 if(nPlayerType == MP_VIDEO_PLAYER_GALLERY)
730 int item_width = 120;
731 int item_height = 90;
733 ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
735 item_width = 170 * width/DEFAULT_SCALE_WIDTH;
739 item_height = 145 * height/DEFAULT_SCALE_HEIGHT;
743 pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
745 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
747 pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
748 if (pDisplayViewProgressbarEdj) {
749 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
751 VideoLogInfo("Progressbar edj handle is null.");
754 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
755 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
757 edje_object_signal_callback_add(pDisplayViewOptionEdj,
758 SIGNAL_OPTION_SHARE_DOWN,
760 (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData);
762 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
763 SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
764 SIGNAL_CONTROL_PART_PLAY_BUTTON,
765 (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
767 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
768 SIGNAL_CONTROL_PLAY_RESUME_PRESS,
769 SIGNAL_CONTROL_PART_PLAY_BUTTON,
770 (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
772 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
773 SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
774 SIGNAL_CONTROL_PART_FF_BUTTON,
775 (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
777 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
778 SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
779 SIGNAL_CONTROL_PART_FF_BUTTON,
780 (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
782 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
783 SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED,
784 SIGNAL_CONTROL_PART_FF_BUTTON,
785 (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData);
787 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
788 SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
789 SIGNAL_CONTROL_PART_REW_BUTTON,
790 (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
792 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
793 SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
794 SIGNAL_CONTROL_PART_REW_BUTTON,
795 (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
797 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
798 SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED,
799 SIGNAL_CONTROL_PART_REW_BUTTON,
800 (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData);
802 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
803 SIGNAL_CONTROL_BACK_BUTTON_DOWN,
804 SIGNAL_CONTROL_PART_BACK_BUTTON,
805 (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
807 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
808 SIGNAL_CONTROL_VOL_BUTTON_DOWN,
809 SIGNAL_CONTROL_PART_VOL_BUTTON,
810 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
812 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
813 SIGNAL_CONTROL_VOL_BUTTON_UP,
814 SIGNAL_CONTROL_PART_VOL_BUTTON,
815 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
817 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
818 SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
819 SIGNAL_CONTROL_PART_MUTE_BUTTON,
820 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
822 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
823 SIGNAL_CONTROL_MUTE_BUTTON_UP,
824 SIGNAL_CONTROL_PART_MUTE_BUTTON,
825 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
827 pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP);
828 evas_object_hide(pDisplayViewSpeedboxEdj);
830 MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
831 MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData);
835 void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
839 if (!pNaviFrameHandle|| !pUserData) {
840 VideoLogInfo("[ERR]");
843 bIsPauseByUser = FALSE;
845 MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
852 void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
854 if (!pNaviFrame || !pUserData) {
855 VideoLogInfo("[ERR]");
861 VideoAppData *pAppData = (VideoAppData *)pUserData;
863 pNaviFrameHandle = pNaviFrame;
864 pChangeViewUserCbFunc = pChangeViewCb;
866 MpVideoDisplayViewInit(pUserData, nPlayerType);
867 pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
869 elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData);
870 elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData);
872 if(MpVideoSoundpathIsConnectOtherSoundpath())
874 pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
875 elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
879 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
882 void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
886 VideoLogInfo("[ERR]");
892 VideoAppData *pAppData = (VideoAppData *)pUserData;
894 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
895 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
898 void MpVideoDisplayViewDestroy(void *pUserData)
902 MpVideoDisplayViewHideControlPanel(pUserData);
903 MpVideoProgressbarDestroy();
905 pNaviFrameHandle = NULL;
906 pDisplayViewProgressbarEdj = NULL;
908 if (pDisplayViewPanelEdj) {
909 evas_object_del(pDisplayViewPanelEdj);
910 pDisplayViewPanelEdj = NULL;
913 if (pDisplayViewCtrlEdj) {
914 evas_object_del(pDisplayViewCtrlEdj);
915 pDisplayViewCtrlEdj = NULL;
918 if (pDisplayViewOptionEdj) {
919 evas_object_del(pDisplayViewOptionEdj);
920 pDisplayViewOptionEdj = NULL;
923 if (pSpeedPressTimer) {
924 ecore_timer_del(pSpeedPressTimer);
925 pSpeedPressTimer = NULL;
928 if (pCtrlPanelHideTimer) {
929 ecore_timer_del(pCtrlPanelHideTimer);
930 pCtrlPanelHideTimer = NULL;
933 if (pDisplayViewLayout) {
934 evas_object_del(pDisplayViewLayout);
935 pDisplayViewLayout = NULL;
938 if (pDisplaySoundpathButton) {
939 evas_object_del(pDisplaySoundpathButton);
940 pDisplaySoundpathButton = NULL;
943 if (pDisplayViewSpeedboxEdj) {
944 evas_object_del(pDisplayViewSpeedboxEdj);
945 pDisplayViewSpeedboxEdj = NULL;
948 bSwitchDisplayViewUI = TRUE;
949 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
950 bIsDisplayViewOnlyAudio = FALSE;
951 bIsPauseByUser = FALSE;
954 void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
959 VideoLogInfo("[ERR]");
963 VideoAppData *pAppData = (VideoAppData *)pUserData;
965 bIsBeginOfStream = TRUE;
967 pAppData->bSeekComplete = TRUE;
969 MpVideoProgressbarBeginOfStream((void *)pAppData);
971 if (pAppData->nDuration > 1) {
972 char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
974 snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
976 MpVideoProgressbarUpdateDurationTime(szDurationTime);
979 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
981 if(MpVideoDisplayViewIsPauseByUser() == FALSE)
983 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
987 void MpVideoDisplayViewUpdatePauseKey(void)
991 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
994 void MpVideoDisplayViewUpdateResumeKey(void)
998 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
1004 void MpVideoDisplayViewShowControlPanel(void *pUserData)
1009 VideoLogInfo("[ERR]");
1013 if (!pDisplayViewPanelEdj) {
1014 VideoLogInfo("No exist play control panel edc.");
1018 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1019 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1023 VideoAppData *pAppData = (VideoAppData *)pUserData;
1025 if(bIsBeginOfStream)
1027 MpVideoProgressbarCreateTimer((void *)pAppData);
1030 bSwitchDisplayViewUI = TRUE;
1031 evas_object_show(pDisplayViewLayout);
1033 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
1034 int nRotate = MpUtilGetRotationState();
1035 if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
1037 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
1041 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
1044 if (pCtrlPanelHideTimer) {
1045 ecore_timer_del(pCtrlPanelHideTimer);
1046 pCtrlPanelHideTimer = NULL;
1051 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
1055 pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
1058 MpVideoDisplayViewActivate();
1061 void MpVideoDisplayViewHideControlPanel(void *pUserData)
1066 VideoLogInfo("[ERR]");
1070 if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1071 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1075 if (!pDisplayViewPanelEdj) {
1076 VideoLogInfo("No exist play control panel edc.");
1080 if(bIsDisplayViewOnlyAudio)
1082 VideoLogInfo("Not hide control panel and UI because of audio only.");
1086 bSwitchDisplayViewUI = FALSE;
1088 MpVideoProgressbarDeleteTimer();
1091 if (pCtrlPanelHideTimer) {
1092 ecore_timer_del(pCtrlPanelHideTimer);
1093 pCtrlPanelHideTimer = NULL;
1096 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
1097 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
1100 void MpVideoDisplayViewActivate(void)
1104 nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
1107 void MpVideoDisplayViewUnactivate(void)
1111 nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
1114 void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
1119 VideoLogInfo("[ERR]");
1123 VideoAppData *pAppData = (VideoAppData *)pUserData;
1125 Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
1127 bIsBeginOfStream = FALSE;
1128 MpVideoProgressbarDeleteTimer();
1130 if (pSpeedPressTimer) {
1131 ecore_timer_del(pSpeedPressTimer);
1132 pSpeedPressTimer = NULL;
1135 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1136 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1138 if (pNaviFrameItemForDisplayerView != NULL) {
1139 VideoLogInfo("%s", pAppData->szVideoTitle);
1140 elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
1144 bool MpVideoDisplayViewIsTopView(void)
1148 Evas_Object *pTmpContents = NULL;
1149 Elm_Object_Item *pTmpItem = NULL;
1151 if (!pNaviFrameHandle) {
1152 VideoLogInfo("[ERR] No exist navigationbar handle.");
1156 pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
1157 pTmpContents = elm_object_item_content_get(pTmpItem);
1159 if (pTmpContents == pDisplayViewLayout) {
1160 VideoLogInfo("Video display view is staing in top view.");
1163 VideoLogInfo("Video display view is not staied in top view.");
1167 VideoLogInfo("[ERR] No exist navigationbar top item.");
1174 void MpVideoDisplayViewShowNocontentImage(void *pUserData)
1178 if (pDisplayViewLayout) {
1179 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
1182 bIsDisplayViewOnlyAudio = TRUE;
1184 MpVideoDisplayViewShowControlPanel(pUserData);
1187 void MpVideoDisplayViewHideNocontentImage(void)
1191 if (pDisplayViewLayout) {
1192 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
1195 bIsDisplayViewOnlyAudio = FALSE;
1198 void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData)
1203 VideoLogError("[ERR]");
1207 VideoAppData *pAppData = (VideoAppData *)pUserData;
1209 if(bIsSpeedLongPress)
1211 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1212 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1214 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1215 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1217 evas_object_hide(pDisplayViewSpeedboxEdj);
1218 bIsSpeedLongPress = FALSE;
1220 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1223 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
1224 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
1225 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
1226 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
1227 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*");
1230 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1231 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1235 void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData)
1240 VideoLogError("[ERR]");
1244 VideoAppData *pAppData = (VideoAppData *)pUserData;
1246 if(bIsSpeedLongPress)
1248 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1249 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1251 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1252 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1254 evas_object_hide(pDisplayViewSpeedboxEdj);
1255 bIsSpeedLongPress = FALSE;
1257 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1260 elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
1262 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
1263 edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
1264 edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
1265 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
1269 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1270 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1275 void MpVideoDisplayViewResetProgressBar(void *pUserData)
1279 if (pDisplayViewLayout) {
1280 MpVideoProgressbarReset(pUserData);
1284 bool MpVideoDisplayViewIsPauseByUser(void)
1286 VideoLogInfo("%d", bIsPauseByUser);
1288 return bIsPauseByUser;
1291 void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser)
1295 bIsPauseByUser = bPauseByUser;
1299 void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
1305 VideoLogInfo("[ERR]");
1309 if(bIsBeginOfStream)
1311 MpVideoProgressbarCreateTimer(pUserData);