Tizen 2.1 base
[apps/core/preloaded/video-player.git] / src / mp-video-streaming-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
18 #include <aul.h>
19 #include <ctype.h>
20 #include <fcntl.h>
21 #include <unistd.h>
22 #include <sys/stat.h>
23 #include <syspopup_caller.h>
24
25 #include "mp-util.h"
26 #include "mp-video-log.h"
27 #include "video-player.h"
28 #include "mp-video-type-define.h"
29 #include "mp-video-value-define.h"
30 #include "mp-video-string-define.h"
31 #include "mp-video-progressbar.h"
32 #include "mp-video-animation-ctrl.h"
33 #include "mp-video-streaming-view.h"
34 #include "mp-video-service-ctrl.h"
35
36 #define CTRL_PANEL_SHOW_TIME                                    5.0
37
38 static Evas_Object *pNaviFrameHandle = NULL;
39 static Evas_Object *pStreamingViewNaviControlBar = NULL;
40 static Evas_Object *pBufferingAnimationHandle = NULL;
41
42 static Evas_Object *pStreamingViewLayout = NULL;
43 static Evas_Object *pStreamingViewPanelEdj = NULL;
44 static Evas_Object *pStreamingViewCtrlEdj = NULL;
45 static Evas_Object *pStreamingViewOptionEdj = NULL;
46 static Evas_Object *pStreamingViewProgressbarEdj = NULL;
47
48 static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL;
49 static Elm_Object_Item *pNaviFrameItemStreamingView = NULL;
50
51 static ChangeStreamingViewCbFunc pChangeViewUserCbFunc = NULL;
52
53 static bool bIsStreamingViewScreenLock = FALSE;
54 static bool bSwitchStreamingViewUI = TRUE;
55 static bool bIsStreamingHightQuality = TRUE;
56 static bool bIsChangeResolution = FALSE;
57 static bool bIsStreamingViewOnlyAudio = FALSE;
58 static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
59
60 /*
61  *      Callback function.
62  */
63
64 static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
65 {
66         VideoLogInfo("");
67
68         if (!pUserData) {
69                 VideoLogInfo("[ERR]");
70                 return;
71         }
72
73         VideoAppData *pAppData = (VideoAppData *)pUserData;
74
75         if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
76                 VideoLogInfo("Press Pause button.");
77
78                 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
79                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
80                 }
81         }
82 }
83
84 static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData,
85                                                     Evas_Object *pObject,
86                                                     const char *szEmission,
87                                                     const char *szSource)
88 {
89         VideoLogInfo("");
90
91         if (!pUserData) {
92                 VideoLogInfo("[ERR]");
93                 return;
94         }
95
96         VideoAppData *pAppData = (VideoAppData *)pUserData;
97
98         if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
99                 VideoLogInfo("Press Resume/Play button.");
100
101                 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
102                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
103                 }
104         }
105 }
106
107 static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
108 {
109         VideoLogInfo("");
110
111         if (!pUserData) {
112                 VideoLogInfo("[ERR]");
113                 return;
114         }
115
116         edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb);
117
118         MpVideoStreamingViewPop(pNaviFrameHandle, pUserData);
119
120         edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData);
121 }
122
123 static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
124 {
125         VideoLogInfo("");
126
127         if (!pUserData) {
128                 VideoLogError("[ERR] No Exist pUserData.");
129                 return;
130         }
131
132         VideoAppData *pAppData = (VideoAppData *)pUserData;
133
134         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
135 }
136
137 static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
138 {
139         VideoLogInfo("");
140         //syspopup_launch("volume", NULL);
141 }
142
143 static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData)
144 {
145         VideoLogInfo("");
146
147         if (!pUserData) {
148                 VideoLogInfo("[ERR] No Exist pUserData.");
149                 return EINA_FALSE;
150         }
151
152         if(bIsStreamingViewOnlyAudio)
153         {
154                 VideoLogInfo("Not hide control panel and UI because of audio only.");
155                 return EINA_FALSE;
156         }
157
158         if (MpVideoStreamingViewGetBufferingState()) {
159                 VideoLogInfo("skip for Buffering");
160                 return EINA_TRUE;
161         }
162
163         VideoAppData *pAppData = (VideoAppData *)pUserData;
164
165         if (pStreamingViewCtrlPanelHideTimer) {
166                 ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
167                 pStreamingViewCtrlPanelHideTimer = NULL;
168         }
169
170         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
171
172         return EINA_FALSE;
173
174 }
175
176 static void MpVideoStreamingViewChangedCameraStatusCb(void *pNode, void *pUserData)
177 {
178         if(!pUserData)
179 {
180                 VideoLogInfo("[ERR]");
181                 return;
182         }
183
184         VideoLogInfo("");
185
186         VideoAppData *pAppData = (VideoAppData *)pUserData;
187
188         if(!MpUtilIsCameraOff())
189         {
190                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
191         }
192                 }
193
194 static void MpVideoStreamingViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
195 {
196         VideoLogInfo("");
197
198         if (!pUserData) {
199                 VideoLogError("[ERR]");
200                 return;
201                 }
202
203         VideoAppData *pAppData = (VideoAppData *)pUserData;
204
205         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
206
207         evas_object_hide(pStreamingViewLayout);
208         }
209
210 static void MpVideoStreamingViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
211 {
212         VideoLogInfo("");
213
214         if (!pUserData) {
215                 VideoLogError("[ERR]");
216                 return;
217         }
218
219         VideoAppData *pAppData = (VideoAppData *)pUserData;
220
221         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
222 }
223
224
225 /*
226  * Internal function
227  */
228
229 void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData)
230 {
231         VideoLogInfo("");
232
233         if (!pUserData) {
234                 VideoLogInfo("[ERR]");
235                 return;
236         }
237
238         VideoAppData *pAppData = (VideoAppData *)pUserData;
239
240         pStreamingViewLayout = elm_layout_add(pParent);
241         if (pStreamingViewLayout) {
242                 Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
243
244                 elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
245
246                 // Option Button (Screen size, Share, Info, 5.1 Surround)
247                 pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
248                 elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj);
249                 edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_WEB, "*");
250
251                 pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
252                 pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
253                 pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas);
254
255                 edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj);
256                 elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle);
257                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
258
259                 MpVideoAnimationCtrlShow();
260
261                 pStreamingViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
262                 MpVideoProgressbarSetSkipEvent(TRUE);
263                 if (pStreamingViewProgressbarEdj) {
264                         edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pStreamingViewProgressbarEdj);
265                 } else {
266                         VideoLogInfo("Progressbar edj handle is null.");
267                 }
268
269                 elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj);
270
271                 edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*");
272
273                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
274                                         SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
275                                         SIGNAL_CONTROL_PART_PLAY_BUTTON,
276                                         (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData);
277
278                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
279                                         SIGNAL_CONTROL_PLAY_RESUME_PRESS,
280                                         SIGNAL_CONTROL_PART_PLAY_BUTTON,
281                                         (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData);
282
283                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
284                                         SIGNAL_CONTROL_BACK_BUTTON_DOWN,
285                                         SIGNAL_CONTROL_PART_BACK_BUTTON,
286                                         (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData);
287
288                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
289                                         SIGNAL_CONTROL_VOL_BUTTON_DOWN,
290                                         SIGNAL_CONTROL_PART_VOL_BUTTON,
291                                         (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
292
293                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
294                                         SIGNAL_CONTROL_VOL_BUTTON_UP,
295                                         SIGNAL_CONTROL_PART_VOL_BUTTON,
296                                         (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
297
298                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
299                                         SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
300                                         SIGNAL_CONTROL_PART_MUTE_BUTTON,
301                                         (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
302
303                 edje_object_signal_callback_add(pStreamingViewCtrlEdj,
304                                         SIGNAL_CONTROL_MUTE_BUTTON_UP,
305                                         SIGNAL_CONTROL_PART_MUTE_BUTTON,
306                                         (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
307
308                 MpUtilRegisteCameraStatusCbFunc((void *)MpVideoStreamingViewChangedCameraStatusCb, pUserData);
309         }
310 }
311
312 void MpVideoStreamingViewInit(void *pUserData)
313 {
314         VideoLogInfo("");
315
316         if (!pNaviFrameHandle|| !pUserData) {
317                 VideoLogInfo("[ERR]");
318                 return;
319         }
320
321         MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData);
322 }
323
324
325
326 /*
327  * External function
328  */
329 void MpVideoStreamingViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeStreamingViewCbFunc pChangeViewCb)
330 {
331         VideoLogInfo("");
332
333         pNaviFrameHandle = pNaviFrame;
334         pChangeViewUserCbFunc = pChangeViewCb;
335
336         MpVideoStreamingViewInit(pUserData);
337
338         pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line");
339
340         elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoStreamingViewShowLayoutFinish, pUserData);
341         elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoStreamingViewHideLayoutFinish, pUserData);
342
343         int nRotate = MpUtilGetRotationState();
344         if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
345         {
346                 MpVideoStreamingViewPortrate();
347         }
348         else
349         {
350                 MpVideoStreamingViewLandscape();
351         }
352
353
354 }
355
356 void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
357 {
358         VideoLogInfo("");
359
360         if (!pUserData) {
361                 VideoLogInfo("[ERR]");
362                 return;
363         }
364
365         VideoAppData *pAppData = (VideoAppData *)pUserData;
366
367         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
368
369         int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
370         if(nTmpPlayerType == MP_STREAMING_PLAYER)
371         {
372                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
373         }
374         else
375         {
376                 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
377         }
378 }
379
380 void MpVideoStreamingViewDestroy(void *pUserData)
381 {
382         VideoLogInfo("");
383
384         MpVideoStreamingViewHideControlPanel(pUserData);
385         MpVideoProgressbarDestroy();
386         MpVideoAnimationCtrlDestroy();
387
388         pNaviFrameHandle = NULL;
389         pBufferingAnimationHandle = NULL;
390         pNaviFrameItemStreamingView = NULL;
391         pStreamingViewProgressbarEdj = NULL;
392
393         if (pStreamingViewNaviControlBar) {
394                 evas_object_del(pStreamingViewNaviControlBar);
395                 pStreamingViewNaviControlBar = NULL;
396         }
397
398         if (pStreamingViewLayout) {
399                 evas_object_del(pStreamingViewLayout);
400                 pStreamingViewLayout = NULL;
401         }
402
403         if (pStreamingViewPanelEdj) {
404                 evas_object_del(pStreamingViewPanelEdj);
405                 pStreamingViewPanelEdj = NULL;
406         }
407
408         if (pStreamingViewCtrlEdj) {
409                 evas_object_del(pStreamingViewCtrlEdj);
410                 pStreamingViewCtrlEdj = NULL;
411         }
412
413         if (pStreamingViewCtrlPanelHideTimer) {
414                 ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
415                 pStreamingViewCtrlPanelHideTimer = NULL;
416         }
417
418         if (pStreamingViewOptionEdj) {
419                 evas_object_del(pStreamingViewOptionEdj);
420                 pStreamingViewOptionEdj = NULL;
421         }
422
423         bIsStreamingViewScreenLock = FALSE;
424         bIsStreamingViewOnlyAudio = FALSE;
425
426         bSwitchStreamingViewUI = TRUE;
427         nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
428
429         bIsStreamingHightQuality = TRUE;
430         bIsChangeResolution = FALSE;
431 }
432
433 void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData)
434 {
435         VideoLogInfo("");
436
437         if (!pUserData) {
438                 VideoLogInfo("[ERR]");
439                 return;
440         }
441
442         VideoAppData *pAppData = (VideoAppData *)pUserData;
443         MpVideoProgressbarSetSkipEvent(FALSE);
444         MpVideoProgressbarBeginOfStream((void *)pAppData);
445
446         if (pAppData->nDuration > 1) {
447                 char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
448                 snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
449                          PLAY_TIME_ARGS(pAppData->nDuration / 1000));
450                 MpVideoProgressbarUpdateDurationTime(szDurationTime);
451         }
452
453         MpVideoAnimationCtrlHide();
454         edje_object_signal_emit(_EDJ(pStreamingViewLayout),
455                                                 SIGNAL_MAIN_ANIMATION_HIDE, "*");
456
457         edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
458
459         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
460
461         if(pAppData->nDuration < 1)
462                 pAppData->nDuration = 1;
463
464         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
465 }
466
467 void MpVideoStreamingViewUpdatePauseKey(void)
468 {
469         VideoLogInfo("");
470
471         edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
472 }
473
474 void MpVideoStreamingViewUpdateResumeKey(void)
475 {
476         VideoLogInfo("");
477
478         edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
479 }
480
481 void MpVideoStreamingViewShowControlPanel(void *pUserData)
482 {
483         VideoLogInfo("");
484
485         if (!pUserData) {
486                 VideoLogInfo("[ERR]");
487                 return;
488         }
489
490         if (!pStreamingViewPanelEdj) {
491                 VideoLogInfo("No exist play control panel edc.");
492                 return;
493         }
494
495         VideoAppData *pAppData = (VideoAppData *)pUserData;
496
497         if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
498                 VideoLogInfo("");
499                 return;
500         }
501
502         bSwitchStreamingViewUI = TRUE;
503         MpVideoProgressbarCreateTimer((void *)pAppData);
504
505         evas_object_show(pStreamingViewLayout);
506
507         elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
508
509         int nRotate = MpUtilGetRotationState();
510         if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
511         {
512                 elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
513         }
514         else
515         {
516                 elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
517         }
518
519         if (pStreamingViewCtrlPanelHideTimer) {
520                 ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
521                 pStreamingViewCtrlPanelHideTimer = NULL;
522         }
523
524         if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsStreamingViewOnlyAudio == TRUE) {
525         } else {
526                 pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
527         }
528
529         MpVideoStreamingViewActivate();
530 }
531
532 void MpVideoStreamingViewHideControlPanel(void *pUserData)
533 {
534         VideoLogInfo("");
535
536         if (!pUserData) {
537                 VideoLogInfo("[ERR]");
538                 return;
539         }
540
541         if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
542                 VideoLogInfo("");
543                 return;
544         }
545
546         if (!pStreamingViewPanelEdj) {
547                 VideoLogInfo("No exist play control panel edc.");
548                 return;
549         }
550
551         if(bIsStreamingViewOnlyAudio)
552         {
553                 VideoLogInfo("Not hide control panel and UI because of audio only.");
554                 return;
555         }
556
557         bSwitchStreamingViewUI = FALSE;
558         MpVideoProgressbarDeleteTimer();
559
560         elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
561         elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
562
563         if (pStreamingViewCtrlPanelHideTimer) {
564                 ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
565                 pStreamingViewCtrlPanelHideTimer = NULL;
566         }
567 }
568
569 void MpVideoStreamingViewActivate(void)
570 {
571         VideoLogInfo("");
572
573         nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE;
574 }
575
576 void MpVideoStreamingViewUnactivate(void)
577 {
578         VideoLogInfo("");
579
580         nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
581 }
582
583 void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide)
584 {
585         VideoLogInfo("");
586         if (!pUserData) {
587                 VideoLogInfo("[ERR]");
588                 return;
589         }
590
591         VideoAppData *pAppData = (VideoAppData *)pUserData;
592
593         if (MpVideoStreamingViewGetBufferingState())
594         {
595                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
596         }
597         else
598         {
599                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
600                 if(bLayoutHide)
601                 {
602                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
603                         pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
604                 }
605         }
606 }
607
608 void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
609 {
610         if (nSetBufferingRate > 95) {
611                 MpVideoAnimationCtrlHide();
612                 MpVideoProgressbarSetSkipEvent(FALSE);
613                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
614         } else {
615                 MpVideoProgressbarSetSkipEvent(TRUE);
616                 MpVideoAnimationCtrlShow();
617                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
618
619                 if(nSetBufferingRate >= 0)
620                         MpVideoAnimationCtrlSetPercent(nSetBufferingRate);
621         }
622 }
623
624 bool MpVideoStreamingViewGetBufferingState(void)
625 {
626         VideoLogInfo("");
627
628         return MpVideoAnimationCtrlGetActiveState();
629 }
630
631 bool MpVideoStreamingViewIsTopView(void)
632 {
633         VideoLogInfo("");
634
635         Evas_Object *pTmpContents = NULL;
636         Elm_Object_Item *pTmpItem = NULL;
637
638         if (!pNaviFrameHandle) {
639                 VideoLogInfo("[ERR] No exist navigationbar handle.");
640                 return FALSE;
641         }
642
643         pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
644         pTmpContents = elm_object_item_content_get(pTmpItem);
645         if (pTmpContents) {
646                 if (pTmpContents == pStreamingViewLayout) {
647                         VideoLogInfo("Streaming display view is staing in top view.");
648                         return TRUE;
649                 } else {
650                         VideoLogInfo("Streaming display view is not staied in top view.");
651                         return FALSE;
652                 }
653         } else {
654                 VideoLogInfo("[ERR] No exist naviFrame top item.");
655                 return FALSE;
656         }
657
658         return FALSE;
659 }
660
661 void MpVideoStreamingViewShowNocontentImage(void *pUserData)
662 {
663         VideoLogInfo("");
664
665         if (pStreamingViewLayout) {
666                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
667         }
668
669         bIsStreamingViewOnlyAudio = TRUE;
670
671         MpVideoStreamingViewShowControlPanel(pUserData);
672 }
673
674 void MpVideoStreamingViewHideNocontentImage(void)
675 {
676         VideoLogInfo("");
677
678         if (pStreamingViewLayout) {
679                 edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
680         }
681
682         bIsStreamingViewOnlyAudio = FALSE;
683 }
684
685 void MpVideoStreamingViewPortrate(void)
686 {
687         VideoLogInfo("");
688
689         elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
690         edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
691         edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
692         edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
693         edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*");
694 }
695
696 void MpVideoStreamingViewLandscape(void)
697 {
698         VideoLogInfo("");
699
700         elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
701         edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
702         edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
703         edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
704         edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*");
705 }
706
707 void MpVideoStreamingViewUpdateProgressBar(void *pUserData)
708 {
709         VideoLogInfo("");
710
711         if (!pUserData) {
712                 VideoLogInfo("[ERR]");
713                 return;
714         }
715
716         MpVideoProgressbarCreateTimer(pUserData);
717
718 }