Fix for N_SE-37736 N_SE-37709
authorabhismita ghosh <g.abhismita@samsung.com>
Thu, 9 May 2013 13:35:59 +0000 (19:05 +0530)
committerabhismita ghosh <g.abhismita@samsung.com>
Thu, 9 May 2013 14:35:56 +0000 (20:05 +0530)
Change-Id: I41329d7aa66513fbc8fe522ef36cb2c60eb64c61

inc/VpIVideoPlayerEventListener.h [changed mode: 0644->0755]
inc/VpVideoPlayerForm.h [changed mode: 0644->0755]
inc/VpVideoPlayerPresentationModel.h [changed mode: 0644->0755]
src/VpVideoPlayerForm.cpp [changed mode: 0644->0755]
src/VpVideoPlayerPresentationModel.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 45f226c..bf4bf70
@@ -36,6 +36,7 @@ public:
        virtual void OnPlayContentChanged(const Tizen::Base::String& fileName) = 0;
        virtual void OnPlayTimeChanged(int currentProgressPos, Tizen::Base::String& currentPlayTime) = 0;
        virtual void OnPlayStateChanged(Tizen::Media::PlayerState playState) = 0;
+       virtual void OnPlaySeekCompleted(result r) = 0;
 };
 
-#endif // _VP_IVIDEO_PLAYER_EVENT_LISTENER_H_
\ No newline at end of file
+#endif // _VP_IVIDEO_PLAYER_EVENT_LISTENER_H_
old mode 100644 (file)
new mode 100755 (executable)
index 933d2ec..05a725f
@@ -44,6 +44,7 @@ class VideoPlayerForm
        , public Tizen::Ui::IOrientationEventListener
        , public Tizen::Ui::ITouchEventListener
        , public Tizen::Ui::Controls::IFormBackEventListener
+       , public Tizen::Ui::Controls::ISliderEventListener
        , public Tizen::Ui::Scenes::ISceneEventListener
        , public IVideoPlayerEventListener
 {
@@ -79,8 +80,7 @@ public:
        virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
        virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
 
-       virtual void OnOrientationChanged(const Tizen::Ui::Control& source,
-                       Tizen::Ui::OrientationStatus orientationStatus);
+       virtual void OnOrientationChanged(const Tizen::Ui::Control& source,     Tizen::Ui::OrientationStatus orientationStatus);
 
        virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
                        const Tizen::Ui::TouchEventInfo& touchInfo);
@@ -111,9 +111,12 @@ public:
        virtual void OnPlayContentChanged(const Tizen::Base::String& fileName);
        virtual void OnPlayTimeChanged(int currentProgressPos, Tizen::Base::String& currentPlayTime);
        virtual void OnPlayStateChanged(Tizen::Media::PlayerState playState);
+       virtual void OnPlaySeekCompleted(result r);
 
        virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
 
+       virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value);
+
 private:
        enum ScreenMode
        {
@@ -186,8 +189,11 @@ private:
        bool __setPauseState;
        bool __isControlVisibleState;
        bool __availableAudioRoute[OUTPUT_AUDIO_ROUTE_MAX];
+       bool __sliderMoved;
+       bool __playingBeforeSlide;
        int __audioRouteMode;
+       long __timeToSeek;
        VideoPlayerPresentationModel* __pVideoPlayerPresentationModel;
 };
 
-#endif // _VP_MAIN_FORM_H_
\ No newline at end of file
+#endif // _VP_MAIN_FORM_H_
old mode 100644 (file)
new mode 100755 (executable)
index e1756b7..941d82e
@@ -53,7 +53,7 @@ public:
        long GetDuration(void) const;
        long GetPosition(void) const;
        result SeekTo(long msTime);
-       int GetRepeatMode(void);
+       int GetRepeatMode(void) const;
        void SetRepeatMode(int repeatMode);
 
        void SetVideoPlayerEventListener(IVideoPlayerEventListener* pPlayerListener);
@@ -64,6 +64,7 @@ public:
        Tizen::Base::String GetMediaPathName(void) const;
        int GetMediaCount(void) const;
        int GetCurrentMediaIndex(void) const;
+       bool GetSeekCompleted(void) const;
 
        result InitializePlayer(void);
        result ConstructPlayerInstanceWithBufferInfo(void);
@@ -120,4 +121,4 @@ private:
        int __repeatMode;
 };
 
-#endif // _VP_VIDEO_PLAYER_PRESENTATION_MODEL_H_
\ No newline at end of file
+#endif // _VP_VIDEO_PLAYER_PRESENTATION_MODEL_H_
old mode 100644 (file)
new mode 100755 (executable)
index ed29b73..380ded2
@@ -48,6 +48,7 @@ static const int SHOW_CONTROL_DURATION = 5000;
 
 static const int MILLISECOND = 1000;
 static const int START_TIME = 0;
+static const int SEEK_TIME_NONE = -1;
 
 static const int X_BASE = 0;
 static const int Y_BASE = 0;
@@ -102,7 +103,10 @@ VideoPlayerForm::VideoPlayerForm(void)
        , __actionTouchLongPressed(false)
        , __setPauseState(false)
        , __isControlVisibleState(true)
+       , __sliderMoved(false)
+       , __playingBeforeSlide(false)
        , __audioRouteMode(0)
+       , __timeToSeek(SEEK_TIME_NONE)
        , __pVideoPlayerPresentationModel(null)
 {
        for (int count = 0; count < OUTPUT_AUDIO_ROUTE_MAX; ++count)
@@ -463,6 +467,7 @@ VideoPlayerForm::InitializeController(void)
 
        __pSlider->AddAdjustmentEventListener(*this);
        __pSlider->AddTouchEventListener(*this);
+       __pSlider->AddSliderEventListener(*this);
 
 CATCH:
        delete pSliderThumbNormalBitmap;
@@ -1209,12 +1214,23 @@ VideoPlayerForm::OnAdjustmentValueChanged(const Control& source, int adjustment)
 
        AppLogDebug("OnAdjustmentValueChanged : %d", adjustment);
 
+       if (&source == __pSlider && __sliderMoved == true)
+       {
+               __sliderMoved = false;
+       }
+
        if (adjustment >= MIN_PROGRESS_RANGE && adjustment <= MAX_PROGRESS_RANGE)
        {
                seekTime = adjustment * (__pVideoPlayerPresentationModel->GetDuration() / MAX_PROGRESS_RANGE);
-
-               r = __pVideoPlayerPresentationModel->SeekTo(seekTime);
-               TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->SeekTo() failed:%s", GetErrorMessage(r));
+               if (__pVideoPlayerPresentationModel->GetSeekCompleted())
+               {
+                       r = __pVideoPlayerPresentationModel->SeekTo(seekTime);
+                       TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->SeekTo() failed:%s", GetErrorMessage(r));
+               }
+               else
+               {
+                       __timeToSeek = seekTime;
+               }
 
                UpdateProgressBar(adjustment);
        }
@@ -1583,6 +1599,25 @@ VideoPlayerForm::OnPlayStateChanged(PlayerState playState)
 }
 
 void
+VideoPlayerForm::OnPlaySeekCompleted(result r)
+{
+       AppLogDebug("OnPlaySeekCompleted ");
+
+       if (__timeToSeek != SEEK_TIME_NONE && __pVideoPlayerPresentationModel->GetSeekCompleted())
+       {
+               r = __pVideoPlayerPresentationModel->SeekTo(__timeToSeek);
+               TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->SeekTo() failed:%s", GetErrorMessage(r));
+               __timeToSeek = SEEK_TIME_NONE;
+       }
+       else if (!__sliderMoved && __playingBeforeSlide)
+       {
+               r = __pVideoPlayerPresentationModel->StartPlay();
+               TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->StartPlay() failed:%s", GetErrorMessage(r));
+               __playingBeforeSlide = false;
+       }
+}
+
+void
 VideoPlayerForm::CheckLowBatteryStatus(void)
 {
        int result = 0;
@@ -2150,3 +2185,42 @@ VideoPlayerForm::OnAppControlCompleteResponseReceived(const AppId& appId, const
 {
        AppLogDebug("OnAppControlCompleteResponseReceived : %d", appControlResult);
 }
+
+void
+VideoPlayerForm::OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value)
+{
+       PlayerState playState = PLAYER_STATE_ERROR;
+       result r = E_FAILURE;
+
+       __sliderMoved = true;
+
+       playState = __pVideoPlayerPresentationModel->GetState();
+
+       if (playState == PLAYER_STATE_PLAYING)
+       {
+               r = __pVideoPlayerPresentationModel->PausePlay();
+               TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->PausePlay() failed:%s", GetErrorMessage(r));
+               __playingBeforeSlide = true;
+       }
+       else if (playState == PLAYER_STATE_PAUSED)
+       {
+               long seekTime = value * (__pVideoPlayerPresentationModel->GetDuration() / MAX_PROGRESS_RANGE);
+               
+               if (__pVideoPlayerPresentationModel->GetSeekCompleted())
+               {
+                       r = __pVideoPlayerPresentationModel->SeekTo(seekTime);
+                       TryReturnVoid(r == E_SUCCESS, "__pVideoPlayerPresentationModel->SeekTo() failed:%s", GetErrorMessage(r));
+               }
+
+               String currentTime;
+               DateTime dateTime;
+
+               dateTime.AddSeconds(seekTime / MILLISECOND);
+               r = currentTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
+               TryReturnVoid(r == E_SUCCESS, "currentTime.Format() failed:%s", GetErrorMessage(r));
+
+               __pCurrenTimeLabel->SetText(currentTime);
+               __pCurrenTimeLabel->Invalidate(true);
+
+       }
+}
old mode 100644 (file)
new mode 100755 (executable)
index 7cf89e7..7dd7323
@@ -247,6 +247,7 @@ VideoPlayerPresentationModel::SeekTo(long msTime)
                {
                        r = __pPlayer->SeekTo(msTime);
                        TryCatch(r == E_SUCCESS, , "__pPlayer->SeekTo failed:%s", GetErrorMessage(r));
+                       __playerSeekCompleted = false;
                }
                break;
 
@@ -281,6 +282,8 @@ VideoPlayerPresentationModel::OnPlayerSeekCompleted(result r)
 
                __playerLastSeekCompleted = false;
        }
+
+       __pVideoPlayerEventListener->OnPlaySeekCompleted(r);
 }
 
 void
@@ -1063,6 +1066,12 @@ VideoPlayerPresentationModel::GetCurrentMediaIndex(void) const
        return __currentMediaIndex;
 }
 
+bool
+VideoPlayerPresentationModel::GetSeekCompleted(void) const
+{
+       return __playerSeekCompleted;
+}
+
 result
 VideoPlayerPresentationModel::InitializePlayer(void)
 {
@@ -1093,7 +1102,7 @@ CATCH:
 }
 
 int
-VideoPlayerPresentationModel::GetRepeatMode(void)
+VideoPlayerPresentationModel::GetRepeatMode(void) const
 {
        return __repeatMode;
 }