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