Tizen 2.0 Release
[profile/ivi/org.tizen.video-player.git] / src / mp-video-display-view.c
1 /*
2  * Copyright (c) [2012] Samsung Electronics Co., Ltd.
3  *
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
7  *
8  *     http://floralicense.org/license/
9  *
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.
15  */
16
17 #include <aul.h>
18 #include <ctype.h>
19 #include <fcntl.h>
20 #include <unistd.h>
21 #include <sys/stat.h>
22 #include <syspopup_caller.h>
23
24 #include "mp-util.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"
34
35 #include "mp-external-ug.h"
36 #include "mp-video-service-ctrl.h"
37
38 #define CTRL_PANEL_SHOW_TIME                                    5.0
39 #define MAX_SPEED_STEP                                                  4
40 #define REWIND_SPACE_TIME                                               3000
41
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;
49
50 static Evas_Object *pDisplayViewSpeedboxEdj = NULL;
51
52 static Ecore_Timer *pCtrlPanelHideTimer = NULL;
53 static Ecore_Timer *pSpeedPressTimer = NULL;
54 static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
55 static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
56
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;
66
67
68 static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
69 {
70         if (!pUserData) {
71                 VideoLogInfo("No exist pUserData");
72                 return;
73         }
74
75         VideoLogInfo("");
76
77         MpUtilDeletePopupHandle();
78 }
79
80
81 static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
82 {
83         if (!pUserData) {
84                 VideoLogInfo("[ERR] No exist pUserData");
85                 return;
86         }
87
88         VideoLogInfo("");
89
90         VideoAppData *pAppData = (VideoAppData *)pUserData;
91
92         if (MpVideoSoundpathIsConnectOtherSoundpath()) {
93                 VideoLogInfo("Connect BT or earjack.");
94                 MpVideoSoundpathShow(pUserData);
95         } else {
96                 MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
97         }
98 }
99
100
101 static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
102 {
103         if (!pUserData) {
104                 VideoLogInfo("[ERR]");
105                 return;
106         }
107
108         VideoLogInfo("");
109
110         VideoAppData *pAppData = (VideoAppData *)pUserData;
111
112         if(!bIsBeginOfStream)
113         {
114                 VideoLogInfo("Skip for BOF");
115                 return;
116         }
117
118         if(pCtrlPanelHideTimer)
119         {
120                 ecore_timer_del(pCtrlPanelHideTimer);
121                 pCtrlPanelHideTimer = NULL;
122         }
123
124         MpExternalUgShow((void *)pAppData, pNaviFrameHandle);
125 }
126
127 static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
128 {
129         VideoLogInfo("");
130
131         if(!pUserData)
132         {
133                 VideoLogInfo("[ERR]");
134                 return;
135         }
136
137         if(!bIsBeginOfStream)
138         {
139                 VideoLogInfo("Skip for BOF");
140                 return;
141         }
142
143         VideoAppData *pAppData = (VideoAppData *)pUserData;
144
145         if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS))
146         {
147                 VideoLogInfo("Press Pause button.");
148
149                 if(pAppData->bSeekComplete == FALSE)
150                 {
151                         bIsPauseByUser = TRUE;
152                         pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
153                         return;
154                 }
155
156                 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
157                 {
158                         bIsPauseByUser = TRUE;
159                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
160                 }
161         }
162 }
163
164 static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
165 {
166         VideoLogInfo("");
167
168         if (!pUserData) {
169                 VideoLogInfo("[ERR]");
170                 return;
171         }
172
173         if(!bIsBeginOfStream)
174         {
175                 VideoLogInfo("Skip for BOF");
176                 return;
177         }
178
179         VideoAppData *pAppData = (VideoAppData *)pUserData;
180
181         if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
182                 VideoLogInfo("Press Resume/Play button.");
183
184                 if(pAppData->bSeekComplete == FALSE)
185                 {
186                         bIsPauseByUser = FALSE;
187                         pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
188                         return;
189                 }
190
191                 if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY)
192                 {
193                         bIsPauseByUser = FALSE;
194                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
195                 }
196         }
197 }
198
199 static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData)
200 {
201         VideoLogInfo("");
202
203         if (!pUserData) {
204                 VideoLogInfo("[ERR]");
205                 return EINA_FALSE;
206         }
207
208         VideoAppData *pAppData = (VideoAppData *)pUserData;
209
210         if (pSpeedPressTimer) {
211                 ecore_timer_del(pSpeedPressTimer);
212                 pSpeedPressTimer = NULL;
213         }
214
215         bIsSpeedLongPress = TRUE;
216         pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
217
218         char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
219
220         if(nSpeedMode == 1)
221         {
222                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
223                 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
224
225                 edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj);
226                 evas_object_show(pDisplayViewSpeedboxEdj);
227         }
228         else if(nSpeedMode == -1)
229         {
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);
234         }
235
236         edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*");
237         edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
238
239         edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
240         edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
241
242         return EINA_FALSE;
243 }
244
245
246 static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
247 {
248         VideoLogInfo("");
249
250         if (!pUserData) {
251                 VideoLogInfo("[ERR]");
252                 return;
253         }
254
255         VideoAppData *pAppData = (VideoAppData *)pUserData;
256
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;
262                 }
263
264                 if (pSpeedPressTimer) {
265                         ecore_timer_del(pSpeedPressTimer);
266                         pSpeedPressTimer = NULL;
267                 }
268
269                 nSpeedMode = 1;
270                 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
271         }
272 }
273
274 static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
275 {
276         VideoLogInfo("");
277
278         if (!pUserData) {
279                 VideoLogInfo("[ERR]");
280                 return;
281         }
282
283         VideoAppData *pAppData = (VideoAppData *)pUserData;
284
285         if(!bIsBeginOfStream)
286         {
287                 VideoLogInfo("Skip for BOF");
288                 return;
289         }
290
291         if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
292                 VideoLogInfo("Press FF up button.");
293                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
294
295                 if (pSpeedPressTimer) {
296                         ecore_timer_del(pSpeedPressTimer);
297                         pSpeedPressTimer = NULL;
298                         bIsPauseByUser = FALSE;
299                 }
300                 else
301                 {
302                         edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
303                         edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
304
305                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
306                 }
307                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
308                 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
309                 evas_object_hide(pDisplayViewSpeedboxEdj);
310
311
312                 bIsSpeedLongPress = FALSE;
313         }
314 }
315
316 static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
317 {
318         VideoLogInfo("");
319
320         if(!pUserData)
321         {
322                 VideoLogInfo("[ERR]");
323                 return;
324         }
325
326         VideoAppData *pAppData = (VideoAppData *)pUserData;
327
328         if(!bIsBeginOfStream)
329         {
330                 VideoLogInfo("Skip for BOF");
331                 return;
332         }
333
334         if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED))
335         {
336                 VideoLogInfo("Press FF clicked button.");
337
338                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
339
340                 bIsPauseByUser = FALSE;
341         }
342 }
343
344 static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
345 {
346         VideoLogInfo("");
347
348         if (!pUserData) {
349                 VideoLogInfo("[ERR]");
350                 return;
351         }
352
353         if(!bIsBeginOfStream)
354         {
355                 VideoLogInfo("Skip for BOF");
356                 return;
357         }
358
359         VideoAppData *pAppData = (VideoAppData *)pUserData;
360
361         if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
362                 VideoLogInfo("Press Rewind donw button.");
363
364                 if (pCtrlPanelHideTimer) {
365                         ecore_timer_del(pCtrlPanelHideTimer);
366                         pCtrlPanelHideTimer = NULL;
367                 }
368
369                 if (pSpeedPressTimer) {
370                         ecore_timer_del(pSpeedPressTimer);
371                         pSpeedPressTimer = NULL;
372                 }
373
374                 nSpeedMode = -1;
375                 pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
376         }
377 }
378
379 static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
380 {
381         VideoLogInfo("");
382
383         if (!pUserData) {
384                 VideoLogInfo("[ERR]");
385                 return;
386         }
387
388         if(!bIsBeginOfStream)
389         {
390                 VideoLogInfo("Skip for BOF");
391                 return;
392         }
393
394         VideoAppData *pAppData = (VideoAppData *)pUserData;
395
396         if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
397                 VideoLogInfo("Press Rewind up button.");
398                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
399
400                 if (pSpeedPressTimer) {
401                         ecore_timer_del(pSpeedPressTimer);
402                         pSpeedPressTimer = NULL;
403                         bIsPauseByUser = FALSE;
404                 }
405                 else
406                 {
407                         edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
408                         edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
409
410                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
411                 }
412
413                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
414                 evas_object_hide(pDisplayViewSpeedboxEdj);
415                 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
416
417
418                 bIsSpeedLongPress = FALSE;
419         }
420 }
421
422 static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
423 {
424         VideoLogInfo("");
425
426         if (!pUserData) {
427                 VideoLogInfo("[ERR]");
428                 return;
429         }
430
431         if(!bIsBeginOfStream)
432         {
433                 VideoLogInfo("Skip for BOF");
434                 return;
435         }
436
437         VideoAppData *pAppData = (VideoAppData *)pUserData;
438
439         if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) {
440                 VideoLogInfo("Press Rewind clicked button.");
441
442                 if(pAppData->nCurPosition > REWIND_SPACE_TIME)
443                 {
444                         pAppData->nSetPosition = 0;
445                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
446                 }
447                 else
448                 {
449                         bIsPauseByUser = FALSE;
450                 }
451         }
452 }
453
454 static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
455 {
456         VideoLogInfo("");
457
458         if (!pUserData) {
459                 VideoLogInfo("[ERR]");
460                 return;
461         }
462
463         edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
464
465         VideoAppData *pAppData = (VideoAppData *)pUserData;
466
467         if(pAppData->nCurPosition >= 0)
468         {
469                 MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
470         }
471
472         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
473
474         MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
475
476         edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
477 }
478
479
480 static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
481 {
482         VideoLogInfo("");
483 }
484
485 static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
486                                                Evas_Object *pObject,
487                                                const char *szEmission,
488                                                const char *szSource)
489 {
490         VideoLogInfo("");
491         if (!pUserData)
492         {
493                 VideoLogInfo("[ERR]");
494                 return;
495         }
496
497         VideoAppData *pAppData = (VideoAppData *)pUserData;
498
499         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
500 }
501
502 static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
503 {
504         VideoLogInfo("");
505
506         if (!pUserData) {
507                 VideoLogInfo("[ERR] No Exist pUserData.");
508                 return EINA_FALSE;
509         }
510
511         VideoAppData *pAppData = (VideoAppData *)pUserData;
512
513         if (pCtrlPanelHideTimer) {
514                 ecore_timer_del(pCtrlPanelHideTimer);
515                 pCtrlPanelHideTimer = NULL;
516         }
517
518         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
519
520         return EINA_FALSE;
521 }
522
523
524 static void MpVideoDisplayViewSpeedChange(void *pUserData)
525 {
526         if (!pUserData) {
527                 VideoLogInfo("[ERR] No Exist pUserData.");
528                 return;
529         }
530
531         VideoAppData *pAppData = (VideoAppData *)pUserData;
532
533         int booster_step = 0;
534
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());
541         } else {
542                 VideoLogInfo("[ERR] Invalid SpeedMode.");
543                 return;
544         }
545
546
547         if(booster_step == 0)
548         {
549                 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
550                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
551         }
552         else if(booster_step == 1)
553         {
554                 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
555                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*");
556         }
557         else if(booster_step > 2)
558         {
559                 pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
560                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*");
561         }
562
563         VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
564
565         char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
566
567         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
568
569         if(nSpeedMode == 1)
570         {
571                 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
572                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
573         }
574         else
575         {
576                 snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
577                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
578         }
579
580         edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
581
582         return;
583 }
584
585 static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
586 {
587         if (!event) {
588                 VideoLogInfo("[ERR]");
589                 return;
590         }
591
592         if (!pUserData) {
593                 VideoLogInfo("[ERR] No Exist pUserData.");
594                 return;
595         }
596
597         Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
598
599         if (bIsSpeedLongPress) {
600                 nControlMouseMovePos = pBtnEvent->cur.output.y;
601                 MpVideoDisplayViewSpeedChange(pUserData);
602         }
603 }
604
605 static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
606 {
607         VideoLogInfo("");
608
609         if (!event) {
610                 VideoLogInfo("[ERR]");
611                 return;
612         }
613
614         Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
615
616         nControlMouseDownPos = pBtnEvent->output.y;
617 }
618
619 static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
620 {
621         if (!pUserData) {
622                 VideoLogInfo("[ERR]");
623                 return;
624         }
625
626         VideoLogInfo("");
627
628         MpVideoSoundpathHide();
629         MpUtilDeletePopupHandle();
630
631         if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) {
632                 VideoLogInfo("Connect earjack.");
633                 if (pDisplaySoundpathButton) {
634                         elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
635                 } else {
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);
638                 }
639         } else {
640                 VideoLogInfo("Disconnect earjack.");
641
642                 if (pDisplaySoundpathButton) {
643                         evas_object_del(pDisplaySoundpathButton);
644                         pDisplaySoundpathButton = NULL;
645                 }
646
647                 elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
648         }
649 }
650
651 static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData)
652 {
653         if(!pUserData)
654         {
655                 VideoLogInfo("[ERR]");
656                 return;
657         }
658
659         VideoLogInfo("");
660
661         VideoAppData *pAppData = (VideoAppData *)pUserData;
662
663         if(!MpUtilIsCameraOff())
664         {
665                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
666         }
667 }
668 static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
669 {
670         VideoLogInfo("");
671
672         if (!pUserData) {
673                 VideoLogError("[ERR]");
674                 return;
675         }
676
677         VideoAppData *pAppData = (VideoAppData *)pUserData;
678
679         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
680
681         evas_object_hide(pDisplayViewLayout);
682 }
683
684 static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
685 {
686         VideoLogInfo("");
687
688         if (!pUserData) {
689                 VideoLogError("[ERR]");
690                 return;
691         }
692
693         VideoAppData *pAppData = (VideoAppData *)pUserData;
694
695         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
696 }
697
698 void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
699 {
700         VideoLogInfo("");
701
702         if (!pUserData) {
703                 VideoLogInfo("[ERR]");
704                 return;
705         }
706
707         VideoAppData *pAppData = (VideoAppData *)pUserData;
708
709         pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
710         if (pDisplayViewLayout) {
711                 Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
712
713                 elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
714
715                 pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
716                 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
717
718                 edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*");
719
720                 pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
721
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);
724
725                 if(nPlayerType == MP_VIDEO_PLAYER_GALLERY)
726                 {
727                         int width = 0;
728                         int height = 0;
729
730                         int item_width = 120;
731                         int item_height = 90;
732
733                         ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
734                         if(width > 0) {
735                                 item_width = 170 * width/DEFAULT_SCALE_WIDTH;
736                         }
737
738                         if(height > 0) {
739                                 item_height = 145 * height/DEFAULT_SCALE_HEIGHT;
740                         }
741                 }
742
743                 pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
744
745                 edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
746
747                 pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
748                 if (pDisplayViewProgressbarEdj) {
749                         edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
750                 } else {
751                         VideoLogInfo("Progressbar edj handle is null.");
752                 }
753
754                 elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
755                 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
756
757                 edje_object_signal_callback_add(pDisplayViewOptionEdj,
758                                         SIGNAL_OPTION_SHARE_DOWN,
759                                         PART_OPTION_SHARE,
760                                         (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData);
761
762                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
763                                                 SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
764                                                 SIGNAL_CONTROL_PART_PLAY_BUTTON,
765                                                 (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
766
767                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
768                                                 SIGNAL_CONTROL_PLAY_RESUME_PRESS,
769                                                 SIGNAL_CONTROL_PART_PLAY_BUTTON,
770                                                 (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
771
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);
776
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);
781
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);
786
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);
791
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);
796
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);
801
802                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
803                                                 SIGNAL_CONTROL_BACK_BUTTON_DOWN,
804                                                 SIGNAL_CONTROL_PART_BACK_BUTTON,
805                                                 (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
806
807                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
808                                                 SIGNAL_CONTROL_VOL_BUTTON_DOWN,
809                                                 SIGNAL_CONTROL_PART_VOL_BUTTON,
810                                                 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
811
812                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
813                                                 SIGNAL_CONTROL_VOL_BUTTON_UP,
814                                                 SIGNAL_CONTROL_PART_VOL_BUTTON,
815                                                 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
816
817                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
818                                                 SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
819                                                 SIGNAL_CONTROL_PART_MUTE_BUTTON,
820                                                 (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
821
822                 edje_object_signal_callback_add(pDisplayViewCtrlEdj,
823                                                 SIGNAL_CONTROL_MUTE_BUTTON_UP,
824                                                 SIGNAL_CONTROL_PART_MUTE_BUTTON,
825                                                 (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
826
827                 pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP);
828                 evas_object_hide(pDisplayViewSpeedboxEdj);
829
830                 MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
831                 MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData);
832         }
833 }
834
835 void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
836 {
837         VideoLogInfo("");
838
839         if (!pNaviFrameHandle|| !pUserData) {
840                 VideoLogInfo("[ERR]");
841                 return;
842         }
843         bIsPauseByUser = FALSE;
844
845         MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
846 }
847
848
849 /*
850  * External function
851  */
852 void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
853 {
854         if (!pNaviFrame || !pUserData) {
855                 VideoLogInfo("[ERR]");
856                 return;
857         }
858
859         VideoLogInfo("");
860
861         VideoAppData *pAppData = (VideoAppData *)pUserData;
862
863         pNaviFrameHandle = pNaviFrame;
864         pChangeViewUserCbFunc = pChangeViewCb;
865
866         MpVideoDisplayViewInit(pUserData, nPlayerType);
867         pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
868
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);
871
872         if(MpVideoSoundpathIsConnectOtherSoundpath())
873         {
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);
876         }
877
878
879         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
880 }
881
882 void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
883 {
884         if(!pUserData)
885         {
886                 VideoLogInfo("[ERR]");
887                 return;
888         }
889
890         VideoLogInfo("");
891
892         VideoAppData *pAppData = (VideoAppData *)pUserData;
893
894         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
895         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
896 }
897
898 void MpVideoDisplayViewDestroy(void *pUserData)
899 {
900         VideoLogInfo("");
901
902         MpVideoDisplayViewHideControlPanel(pUserData);
903         MpVideoProgressbarDestroy();
904
905         pNaviFrameHandle = NULL;
906         pDisplayViewProgressbarEdj = NULL;
907
908         if (pDisplayViewPanelEdj) {
909                 evas_object_del(pDisplayViewPanelEdj);
910                 pDisplayViewPanelEdj = NULL;
911         }
912
913         if (pDisplayViewCtrlEdj) {
914                 evas_object_del(pDisplayViewCtrlEdj);
915                 pDisplayViewCtrlEdj = NULL;
916         }
917
918         if (pDisplayViewOptionEdj) {
919                 evas_object_del(pDisplayViewOptionEdj);
920                 pDisplayViewOptionEdj = NULL;
921         }
922
923         if (pSpeedPressTimer) {
924                 ecore_timer_del(pSpeedPressTimer);
925                 pSpeedPressTimer = NULL;
926         }
927
928         if (pCtrlPanelHideTimer) {
929                 ecore_timer_del(pCtrlPanelHideTimer);
930                 pCtrlPanelHideTimer = NULL;
931         }
932
933         if (pDisplayViewLayout) {
934                 evas_object_del(pDisplayViewLayout);
935                 pDisplayViewLayout = NULL;
936         }
937
938         if (pDisplaySoundpathButton) {
939                 evas_object_del(pDisplaySoundpathButton);
940                 pDisplaySoundpathButton = NULL;
941         }
942
943         if (pDisplayViewSpeedboxEdj) {
944                 evas_object_del(pDisplayViewSpeedboxEdj);
945                 pDisplayViewSpeedboxEdj = NULL;
946         }
947
948         bSwitchDisplayViewUI = TRUE;
949         nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
950         bIsDisplayViewOnlyAudio = FALSE;
951         bIsPauseByUser = FALSE;
952 }
953
954 void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
955 {
956         VideoLogInfo("");
957
958         if (!pUserData) {
959                 VideoLogInfo("[ERR]");
960                 return;
961         }
962
963         VideoAppData *pAppData = (VideoAppData *)pUserData;
964
965         bIsBeginOfStream = TRUE;
966
967         pAppData->bSeekComplete = TRUE;
968
969         MpVideoProgressbarBeginOfStream((void *)pAppData);
970
971         if (pAppData->nDuration > 1) {
972                 char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
973
974                 snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
975
976                 MpVideoProgressbarUpdateDurationTime(szDurationTime);
977         }
978
979         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
980
981         if(MpVideoDisplayViewIsPauseByUser() == FALSE)
982         {
983                 edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
984         }
985 }
986
987 void MpVideoDisplayViewUpdatePauseKey(void)
988 {
989         VideoLogInfo("");
990
991         edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
992 }
993
994 void MpVideoDisplayViewUpdateResumeKey(void)
995 {
996         VideoLogInfo("");
997
998         edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
999 }
1000
1001
1002
1003
1004 void MpVideoDisplayViewShowControlPanel(void *pUserData)
1005 {
1006         VideoLogInfo("");
1007
1008         if (!pUserData) {
1009                 VideoLogInfo("[ERR]");
1010                 return;
1011         }
1012
1013         if (!pDisplayViewPanelEdj) {
1014                 VideoLogInfo("No exist play control panel edc.");
1015                 return;
1016         }
1017
1018         if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1019                 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1020                 return;
1021         }
1022
1023         VideoAppData *pAppData = (VideoAppData *)pUserData;
1024
1025         if(bIsBeginOfStream)
1026         {
1027                 MpVideoProgressbarCreateTimer((void *)pAppData);
1028         }
1029
1030         bSwitchDisplayViewUI = TRUE;
1031         evas_object_show(pDisplayViewLayout);
1032
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)
1036         {
1037                 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
1038         }
1039         else
1040         {
1041                 elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
1042         }
1043
1044         if (pCtrlPanelHideTimer) {
1045                 ecore_timer_del(pCtrlPanelHideTimer);
1046                 pCtrlPanelHideTimer = NULL;
1047         }
1048
1049         VideoLogInfo("");
1050
1051         if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
1052                 VideoLogInfo("");
1053         } else {
1054                 VideoLogInfo("");
1055                 pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
1056         }
1057
1058         MpVideoDisplayViewActivate();
1059 }
1060
1061 void MpVideoDisplayViewHideControlPanel(void *pUserData)
1062 {
1063         VideoLogInfo("");
1064
1065         if (!pUserData) {
1066                 VideoLogInfo("[ERR]");
1067                 return;
1068         }
1069
1070         if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
1071                 VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
1072                 return;
1073         }
1074
1075         if (!pDisplayViewPanelEdj) {
1076                 VideoLogInfo("No exist play control panel edc.");
1077                 return;
1078         }
1079
1080         if(bIsDisplayViewOnlyAudio)
1081         {
1082                 VideoLogInfo("Not hide control panel and UI because of audio only.");
1083                 return;
1084         }
1085
1086         bSwitchDisplayViewUI = FALSE;
1087
1088         MpVideoProgressbarDeleteTimer();
1089         MpExternalUgHide();
1090
1091         if (pCtrlPanelHideTimer) {
1092                 ecore_timer_del(pCtrlPanelHideTimer);
1093                 pCtrlPanelHideTimer = NULL;
1094         }
1095
1096         elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
1097         elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
1098 }
1099
1100 void MpVideoDisplayViewActivate(void)
1101 {
1102         VideoLogInfo("");
1103
1104         nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
1105 }
1106
1107 void MpVideoDisplayViewUnactivate(void)
1108 {
1109         VideoLogInfo("");
1110
1111         nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
1112 }
1113
1114 void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
1115 {
1116         VideoLogInfo("");
1117
1118         if (!pUserData) {
1119                 VideoLogInfo("[ERR]");
1120                 return;
1121         }
1122
1123         VideoAppData *pAppData = (VideoAppData *)pUserData;
1124
1125         Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
1126
1127         bIsBeginOfStream = FALSE;
1128         MpVideoProgressbarDeleteTimer();
1129
1130         if (pSpeedPressTimer) {
1131                 ecore_timer_del(pSpeedPressTimer);
1132                 pSpeedPressTimer = NULL;
1133         }
1134
1135         edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1136         edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1137
1138         if (pNaviFrameItemForDisplayerView != NULL) {
1139                 VideoLogInfo("%s", pAppData->szVideoTitle);
1140                 elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
1141         }
1142 }
1143
1144 bool MpVideoDisplayViewIsTopView(void)
1145 {
1146         VideoLogInfo("");
1147
1148         Evas_Object *pTmpContents = NULL;
1149         Elm_Object_Item *pTmpItem = NULL;
1150
1151         if (!pNaviFrameHandle) {
1152                 VideoLogInfo("[ERR] No exist navigationbar handle.");
1153                 return FALSE;
1154         }
1155
1156         pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
1157         pTmpContents = elm_object_item_content_get(pTmpItem);
1158         if (pTmpContents) {
1159                 if (pTmpContents == pDisplayViewLayout) {
1160                         VideoLogInfo("Video display view is staing in top view.");
1161                         return TRUE;
1162                 } else {
1163                         VideoLogInfo("Video display view is not staied in top view.");
1164                         return FALSE;
1165                 }
1166         } else {
1167                 VideoLogInfo("[ERR] No exist navigationbar top item.");
1168                 return FALSE;
1169         }
1170
1171         return FALSE;
1172 }
1173
1174 void MpVideoDisplayViewShowNocontentImage(void *pUserData)
1175 {
1176         VideoLogInfo("");
1177
1178         if (pDisplayViewLayout) {
1179                 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
1180         }
1181
1182         bIsDisplayViewOnlyAudio = TRUE;
1183
1184         MpVideoDisplayViewShowControlPanel(pUserData);
1185 }
1186
1187 void MpVideoDisplayViewHideNocontentImage(void)
1188 {
1189         VideoLogInfo("");
1190
1191         if (pDisplayViewLayout) {
1192                 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
1193         }
1194
1195         bIsDisplayViewOnlyAudio = FALSE;
1196 }
1197
1198 void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData)
1199 {
1200         VideoLogInfo("");
1201
1202         if (!pUserData) {
1203                 VideoLogError("[ERR]");
1204                 return;
1205         }
1206
1207         VideoAppData *pAppData = (VideoAppData *)pUserData;
1208
1209         if(bIsSpeedLongPress)
1210         {
1211                 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1212                 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1213
1214                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1215                 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1216
1217                 evas_object_hide(pDisplayViewSpeedboxEdj);
1218                 bIsSpeedLongPress = FALSE;
1219
1220                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1221         }
1222
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, "*");
1228         if(bLayoutHide)
1229         {
1230                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1231                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1232         }
1233 }
1234
1235 void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData)
1236 {
1237         VideoLogInfo("");
1238
1239         if (!pUserData) {
1240                 VideoLogError("[ERR]");
1241                 return;
1242         }
1243
1244         VideoAppData *pAppData = (VideoAppData *)pUserData;
1245
1246         if(bIsSpeedLongPress)
1247         {
1248                 edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
1249                 edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
1250
1251                 edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
1252                 edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
1253
1254                 evas_object_hide(pDisplayViewSpeedboxEdj);
1255                 bIsSpeedLongPress = FALSE;
1256
1257                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
1258         }
1259
1260         elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
1261
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, "*");
1266
1267         if(bLayoutHide)
1268         {
1269                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
1270                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
1271         }
1272
1273 }
1274
1275 void MpVideoDisplayViewResetProgressBar(void *pUserData)
1276 {
1277         VideoLogInfo("");
1278
1279         if (pDisplayViewLayout) {
1280                 MpVideoProgressbarReset(pUserData);
1281         }
1282 }
1283
1284 bool MpVideoDisplayViewIsPauseByUser(void)
1285 {
1286         VideoLogInfo("%d", bIsPauseByUser);
1287
1288         return bIsPauseByUser;
1289 }
1290
1291 void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser)
1292 {
1293         VideoLogInfo("");
1294
1295         bIsPauseByUser = bPauseByUser;
1296 }
1297
1298
1299 void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
1300 {
1301         VideoLogInfo("");
1302
1303         if(!pUserData)
1304         {
1305                 VideoLogInfo("[ERR]");
1306                 return;
1307         }
1308
1309         if(bIsBeginOfStream)
1310         {
1311                 MpVideoProgressbarCreateTimer(pUserData);
1312         }
1313
1314 }