For NSE_45763
[apps/osp/Gallery.git] / src / GlTimerBase.cpp
index 2516b42..5891c6e 100644 (file)
@@ -1,7 +1,7 @@
 //
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
  * @brief              This is the source file for GlTimerBase class.
  */
 
+#include <FBase.h>
 #include <FUi.h>
 
+#include "GlContentUpdateEventListener.h"
 #include "GlProgressBar.h"
 #include "GlTimerBase.h"
 #include "GlTypes.h"
 
 using namespace Tizen::Ui;
+using namespace Tizen::Base::Runtime;
 
-GlTimerBase::GlTimerBase(IFileOpInvalidateListener* invalidateListener,
-               enum FileActionMode actionId)
-       : __pInvalidate(invalidateListener)
-       , __actionId(actionId)
+GlTimerBase::GlTimerBase(IFileOpInvalidateListener* invalidateListener, enum FileActionMode actionId)
+       : _actionId(actionId)
+       , __pContentIdList(null)
+       , __moveToCount(0)
+       , __pMoveProBar(null)
+       , __pInvalidate(invalidateListener)
+       , __isStarted(false)
 {
-
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
 GlTimerBase::~GlTimerBase(void)
 {
        AppLogDebug("ENTER");
        __pInvalidate = null;
-       if (__pContentIdList != null && __pContentIdList->GetCount() > 0)
+       if (__pContentIdList != null && __pContentIdList->GetCount() > 0 && __isStarted)
        {
                __moveTimer.Cancel();
+               __isStarted = false;
        }
        delete __pContentIdList;
+       if (__pMoveProBar)
+       {
+               __pMoveProBar->HideFileProgressingPopup();
+               delete __pMoveProBar;
+       }
        AppLogDebug("ENTER");
 }
 
-bool GlTimerBase::StartTimer(void)
+bool
+GlTimerBase::StartTimer(void)
 {
        AppLogDebug("ENTER");
        __pContentIdList = TimerStart();
        if (__pContentIdList != null && __pContentIdList->GetCount() > 0)
        {
                AppLogDebug("Starting timer");
-               __pMoveProBar = new GlProgressBar(static_cast<IActionEventListener*>(this));
-               __pMoveProBar->ShowFileProgressingPopup(__pContentIdList->GetCount(), __actionId);
+               __pMoveProBar = new (std::nothrow) GlProgressBar(static_cast<IActionEventListener*>(this),
+                               static_cast<IPropagatedKeyEventListener*>(this));
+               __pMoveProBar->ShowFileProgressingPopup(__pContentIdList->GetCount(), _actionId);
                __moveToCount = 0;
                __moveTimer.Construct(*this);
                __moveTimer.Start(1);
-               AppLogDebug("Returned true");
+               __isStarted = true;
+               ContentUpdateEventListener* pContentListener = ContentUpdateEventListener::GetInstance();
+               pContentListener->RemoveContentListener();
+               AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
                return E_SUCCESS;
        }
-       AppLogDebug("Returned false");
+       AppLogDebug("EXIT1(%s)", GetErrorMessage(GetLastResult()));
        return E_FAILURE;
 }
 
-void GlTimerBase::CancelTimer(void)
+void
+GlTimerBase::CancelTimer(void)
 {
        AppLogDebug("ENTER");
        __moveTimer.Cancel();
+       __isStarted = false;
        OnOpCancelled(CANCEL_USER);
        __moveToCount = 0;
-       AppLogDebug("EXIT");
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
-void GlTimerBase::OnTimerExpired(Timer& timer)
+void
+GlTimerBase::OnTimerExpired(Timer& timer)
 {
        AppLogDebug("ENTER");
        if (&timer == &__moveTimer)
@@ -84,58 +105,64 @@ void GlTimerBase::OnTimerExpired(Timer& timer)
                if (__moveToCount < __pContentIdList->GetCount())
                {
                        AppLogDebug("__pContentIdList count is %d", __pContentIdList->GetCount());
-                       ContentId* pContentId = static_cast<ContentId*>(__pContentIdList->GetAt(__moveToCount));
-                       if (pContentId != null)
+                       if (__pContentIdList->GetAt(__moveToCount) != null)
                        {
-                               result r = TimerExpired(*pContentId);
-                               if (IsFailed(r))
-                               {
-                                       AppLogDebug("OnTimerExpired EXIT(%s)", GetErrorMessage(r));
-                                       OnOpCancelled(CANCEL_SYS_ERROR);
-                                       return;
-                               }
+                               result r = TimerExpired(__pContentIdList->GetAt(__moveToCount));
                        }
-                       __moveToCount++;
+                       ++__moveToCount;
                        __pMoveProBar->IncProgress(__moveToCount);
                        if (__pInvalidate)
                        {
-                               __pInvalidate->OnFileOpInvalidate(__actionId);
+                               __pInvalidate->OnFileOpInvalidate(_actionId);
                        }
                        __moveTimer.Start(1);
+                       __isStarted = true;
                }
                else
                {
                        __moveTimer.Cancel();
+                       __isStarted = false;
                        OnOpComplete(COMPLETE_SUCCESS);
                        __moveToCount = 0;
                }
        }
-       AppLogDebug("EXIT");
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
 void
 GlTimerBase::OnActionPerformed(const Control& source, int actionId)
 {
+       AppLogDebug("ENTER");
        switch (actionId)
        {
-       case ACTION_ID_PROGRESSBAR_CANCEL:
+       case IDA_PROGRESSBAR_CANCEL:
        {
                CancelTimer();
-               break;
        }
+       break;
+
        default:
                break;
        }
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
+int
+GlTimerBase::GetMovedCount() const
+{
+       return __moveToCount;
+}
 
-void GlTimerBase::OnOpCancelled(enum FileActionCancelRes res)
+void
+GlTimerBase::OnOpCancelled(enum FileActionCancelRes res)
 {
        AppLogDebug("ENTER");
        __pMoveProBar->HideFileProgressingPopup();
+       ContentUpdateEventListener* pContentListener = ContentUpdateEventListener::GetInstance();
+       pContentListener->AddContentListener();
        if (__pInvalidate)
        {
-               __pInvalidate->OnFileOpInvalidate(__actionId);
+               __pInvalidate->OnFileOpInvalidate(_actionId);
        }
        if (__moveToCount > 0)
        {
@@ -143,11 +170,11 @@ void GlTimerBase::OnOpCancelled(enum FileActionCancelRes res)
                {
                        if (res != CANCEL_USER)
                        {
-                               __pInvalidate->OnFileOpComplete(__actionId, COMPLETE_SYS_PARTIAL);
+                               __pInvalidate->OnFileOpComplete(_actionId, COMPLETE_SYS_PARTIAL);
                        }
                        else
                        {
-                               __pInvalidate->OnFileOpComplete(__actionId, COMPLETE_SUCCESS);
+                               __pInvalidate->OnFileOpComplete(_actionId, COMPLETE_SUCCESS);
                        }
                }
        }
@@ -157,11 +184,11 @@ void GlTimerBase::OnOpCancelled(enum FileActionCancelRes res)
                {
                        if (res != CANCEL_USER)
                        {
-                               __pInvalidate->OnFileOpComplete(__actionId, COMPLETE_SYS_FAILURE);
+                               __pInvalidate->OnFileOpComplete(_actionId, COMPLETE_SYS_FAILURE);
                        }
                        else
                        {
-                               __pInvalidate->OnFileOpComplete(__actionId, COMPLETE_SUCCESS);
+                               __pInvalidate->OnFileOpComplete(_actionId, COMPLETE_SUCCESS);
                        }
                }
        }
@@ -169,15 +196,55 @@ void GlTimerBase::OnOpCancelled(enum FileActionCancelRes res)
        AppLogDebug("EXIT");
 }
 
-void GlTimerBase::OnOpComplete(enum FileActionCompleteRes res)
+void
+GlTimerBase::OnOpComplete(enum FileActionCompleteRes res)
 {
        AppLogDebug("ENTER");
+       ContentUpdateEventListener* pContentListener = ContentUpdateEventListener::GetInstance();
+       pContentListener->AddContentListener();
        __pMoveProBar->HideFileProgressingPopup();
        if (__pInvalidate)
        {
-               __pInvalidate->OnFileOpInvalidate(__actionId);
-               __pInvalidate->OnFileOpComplete(__actionId, res);
+               __pInvalidate->OnFileOpInvalidate(_actionId);
+               __pInvalidate->OnFileOpComplete(_actionId, res);
        }
        TimerComplete(__moveToCount, res);
        AppLogDebug("EXIT");
 }
+
+void
+GlTimerBase::SetActionMode(const enum FileActionMode actionId)
+{
+       _actionId = actionId;
+}
+
+bool
+GlTimerBase::IsStarted(void)
+{
+       return __isStarted;
+}
+
+void
+GlTimerBase::Cancel(void)
+{
+       if (__isStarted)
+       {
+               ContentUpdateEventListener* pContentListener = ContentUpdateEventListener::GetInstance();
+               pContentListener->AddContentListener();
+               __pMoveProBar->HideFileProgressingPopup();
+               __moveTimer.Cancel();
+               __isStarted = false;
+       }
+}
+
+bool
+GlTimerBase::OnKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo)
+{
+       AppLogDebug("ENTER");
+
+       if(keyEventInfo.GetKeyCode() == KEY_BACK)
+       {
+               CancelTimer();
+       }
+       return true;
+}