Apply resume/pause
authorHeeJu Kang <mobum.kang@samsung.com>
Mon, 1 Apr 2013 05:44:56 +0000 (14:44 +0900)
committerHeeJu Kang <mobum.kang@samsung.com>
Mon, 1 Apr 2013 05:44:56 +0000 (14:44 +0900)
Change-Id: I85610b3c73bb21a28cb91c2d2ec275a96381d234
Signed-off-by: HeeJu Kang <mobum.kang@samsung.com>
src/FShell_AppWidgetLayer.cpp
src/FShell_AppWidgetPopupView.cpp
src/FShell_AppWidgetView.cpp
src/FShell_AppWidgetView.h
src/FShell_AppWidgetViewManager.cpp
src/FShell_AppWidgetViewManager.h

index 179e5f6..5f82787 100644 (file)
@@ -20,6 +20,8 @@
  */
 
 #include <new>
+#include <errno.h>\r
+#include <string.h>
 #include <sys/shm.h>
 #include <X11/Xlib.h>
 #include <X11/extensions/XShm.h>
@@ -35,6 +37,8 @@
 #include "FShell_AppWidgetLayer.h"
 #include "FShell_AppWidgetProviderManagerImpl.h"
 
+//#define _BUFFER_TEST
+
 using namespace std;
 using namespace Tizen::Base;
 using namespace Tizen::Graphics;
@@ -250,6 +254,26 @@ _AppWidgetLayer::SyncPixmap(const FloatDimension& size)
 
        memcpy(pXImage->data, __pRenderBuffer, __bufferSize);
 
+#if defined(_BUFFER_TEST)
+       {
+               FILE* pFile = null;\r
+               static int idx = 0;\r
+               char filename[1024];\r
+               snprintf(filename, sizeof(filename), "/opt/out%d.raw", idx++);\r
+               pFile = fopen(filename, "w+b");\r
+               if (pFile)\r
+               {\r
+                       fwrite(__pRenderBuffer, __bufferSize, 1, pFile);\r
+                       fclose(pFile);\r
+                       SysLog(NID_UI_CTRL, "_BUFFER_TEST: buffer (0x%x) size (%d) pixmapId (%d) width(%f) height(%f)", __pRenderBuffer, __bufferSize, __pixmapId, size.width, size.height);\r
+               }\r
+               else\r
+               {\r
+                       SysLog(NID_UI_CTRL, "File open failed: (%s) buffer (0x%x) size (%d) pixmapId (%d)", strerror(errno), __pRenderBuffer, __bufferSize, __pixmapId);\r
+               }\r
+       }
+#endif // _BUFFER_TEST
+
        // Do not send the event. Instead of X event, master will send the updated event to the viewer
        XShmPutImage(pDisplay, static_cast<Pixmap>(__pixmapId), gc, pXImage, 0, 0, 0, 0, size.width, size.height, False);
        XSync(pDisplay, False);
index 5b1e849..815f7db 100644 (file)
 #include <FGrp_BitmapImpl.h>
 #include <FMedia_ImageDecoder.h>
 #include <FUi_ControlManager.h>
+#include <FUi_CoordinateSystemUtils.h>
+#include <FUi_Types.h>
 #include <FUiAnim_EflNode.h>
 #include <FUiAnim_VisualElement.h>
 #include <FUiAnim_VisualElementImpl.h>
 #include <FUiAnim_VisualElementSurfaceImpl.h>
-#include <FUi_CoordinateSystemUtils.h>
 #include <FUiCtrl_Frame.h>
-#include <FUi_Types.h>
 #include "FShell_AppWidgetPopupView.h"
 #include "FShell_AppWidgetPopupViewPresenter.h"
 #include "FShell_AppWidgetPopupViewEvent.h"
index 456ad4b..a9a62e3 100644 (file)
 #include <FBase_StringConverter.h>
 #include <FGrp_BitmapImpl.h>
 #include <FMedia_ImageDecoder.h>
-#include "FUi_TouchFlickGestureDetector.h"
+#include <FUi_TouchFlickGestureDetector.h>
+#include <FUi_ResourceManager.h>
+#include <FUi_CoordinateSystemUtils.h>
+#include <FUiAnim_EflNode.h>
+#include <FUiAnim_VisualElementImpl.h>
+#include <FUiAnim_VisualElementSurfaceImpl.h>
+#include <FUiCtrl_Frame.h>
 #include "FShell_IAppWidgetViewEventListener.h"
 #include "FShell_AppWidgetManagerImpl.h"
 #include "FShell_AppWidgetView.h"
 #include "FShell_AppWidgetViewPresenter.h"
 #include "FShell_AppWidgetPopupView.h"
 #include "FShell_AppWidgetViewManager.h"
-#include "FUi_ResourceManager.h"
-#include "FUiAnim_EflNode.h"
-#include "FUiAnim_VisualElementImpl.h"
-#include "FUiAnim_VisualElementSurfaceImpl.h"
-#include "FUi_CoordinateSystemUtils.h"
 
 using namespace std;
 using namespace Tizen::App;
@@ -427,6 +428,18 @@ _AppWidgetView::OnAttachedToMainTree(void)
 {
        result r = E_SUCCESS;
 
+       _Window* pWindow = _ControlManager::GetInstance()->GetCurrentFrame();
+       if (pWindow)
+       {
+               _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
+               if (pFrame)
+               {
+                       pFrame->AddFrameEventListener(*this);
+               }
+
+               __pAppWidgetViewManager->AddFrameEventListener();
+       }
+
        return r;
 }
 
@@ -435,6 +448,16 @@ _AppWidgetView::OnDetachingFromMainTree(void)
 {
        result r = E_SUCCESS;
 
+       _Window* pWindow = _ControlManager::GetInstance()->GetCurrentFrame();
+       if (pWindow)
+       {
+               _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
+               if (pFrame)
+               {
+                       pFrame->RemoveFrameEventListener(*this);
+               }
+       }
+
        return r;
 }
 
@@ -565,6 +588,34 @@ _AppWidgetView::OnDraw(void)
 }
 
 void
+_AppWidgetView::OnFrameActivated(const Tizen::Ui::Controls::_Frame& source)
+{
+       if (__pAppWidget)
+       {
+               livebox_set_visibility(__pAppWidget, LB_SHOW);
+       }
+}
+
+void
+_AppWidgetView::OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source)
+{
+       if (__pAppWidget)
+       {
+               livebox_set_visibility(__pAppWidget, LB_HIDE_WITH_PAUSE);
+       }
+}
+
+void
+_AppWidgetView::OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source)
+{
+}
+
+void
+_AppWidgetView::OnFrameRestored(const Tizen::Ui::Controls::_Frame& source)
+{
+}
+
+void
 _AppWidgetView::OnAppWidgetUpdated(const Bitmap& bitmap, const FloatDimension& size)
 {
        __resizeFromRemote = true;
index 525c394..45de955 100644 (file)
@@ -30,6 +30,7 @@
 #include <FAppTypes.h>
 #include <FBaseColIListT.h>
 #include <FUiAnimIVisualElementAnimationStatusEventListener.h>
+#include <FUiCtrl_IFrameEventListener.h>
 #include "FUi_Control.h"
 #include "FUi_ITouchFlickGestureEventListener.h"
 #include "FUiAnim_VisualElement.h"
@@ -69,6 +70,7 @@ class _AppWidgetView
        , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
        , public Tizen::Ui::_ITouchFlickGestureEventListener
        , public _IAppWidgetPopupViewEventListener
+       , public Tizen::Ui::Controls::_IFrameEventListener
 {
 public:
        static _AppWidgetView* CreateAppWidgetViewN(void);
@@ -118,6 +120,10 @@ private:
        virtual void OnAppWidgetPopupViewOpened(void);
        virtual void OnAppWidgetPopupViewClosed(void);
        virtual void OnDraw(void);
+       virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
+       virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
+       virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
+       virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
 
        void OnAppWidgetUpdated(const Tizen::Graphics::Bitmap& bitmap, const Tizen::Graphics::FloatDimension& size);
        void OnAppWidgetUpdated(int pixmap);
index 6f3eee1..a0b2833 100644 (file)
@@ -43,6 +43,9 @@ extern "C"
 #include <FGrp_BitmapImpl.h>
 #include <FGrp_CoordinateSystem.h>
 #include <FMedia_ImageDecoder.h>
+#include <FUi_ControlManager.h>
+#include <FUiCtrl_Frame.h>
+#include <FUiCtrl_IFrameEventListener.h>
 #include "FShell_AppWidgetViewManager.h"
 #include "FShell_AppWidgetView.h"
 #include "FShell_AppWidgetPopupView.h"
@@ -71,6 +74,8 @@ using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Graphics;
 using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
 
 namespace
 {
@@ -433,6 +438,27 @@ _AppWidgetViewManager::SetAppWidgetSize(const _AppWidgetView& appwidgetView, con
        livebox_resize(pAppWidget, sizeType, OnAppWidgetResized, this);
 }
 
+void
+_AppWidgetViewManager::AddFrameEventListener(void)
+{
+       if (!__pFrameEventListener)
+       {
+               unique_ptr<_FrameEventListener> pFrameEventListener(new (std::nothrow) _FrameEventListener());
+               SysTryReturnVoidResult(NID_UI_CTRL, pFrameEventListener, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
+
+               _Window* pWindow = _ControlManager::GetInstance()->GetCurrentFrame();
+               SysTryReturnVoidResult(NID_UI_CTRL, pWindow, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
+
+               __pFrameEventListener = move(pFrameEventListener);
+
+               _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
+               if (pFrame)
+               {
+                       pFrame->AddFrameEventListener(*__pFrameEventListener);
+               }
+       }
+}
+
 _AppWidgetViewManager::_AppWidgetViewManager(void)
        : __glMode(false)
 {
@@ -463,6 +489,19 @@ _AppWidgetViewManager::_AppWidgetViewManager(void)
 
 _AppWidgetViewManager::~_AppWidgetViewManager(void)
 {
+       _ControlManager* pControlManager = _ControlManager::GetInstance();
+       if (pControlManager && __pFrameEventListener)
+       {
+               _Window* pWindow = pControlManager->GetCurrentFrame();
+               if (pWindow)
+               {
+                       _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
+                       if (pFrame)
+                       {
+                               pFrame->RemoveFrameEventListener(*__pFrameEventListener);
+                       }
+               }
+       }
 }
 
 int
@@ -826,4 +865,28 @@ _AppWidgetViewManager::OnAppWidgetResized(livebox* pAppWidget, int ret, void* pD
        pAppWidgetViewManager->OnAppWidgetUpdated(pAppWidget);
 }
 
+void
+_AppWidgetViewManager::_FrameEventListener::OnFrameActivated(const Tizen::Ui::Controls::_Frame& source)
+{
+       int ret = livebox_client_resumed();
+       SysLog(NID_UI_CTRL, "ret (%d)", ret);
+}
+
+void
+_AppWidgetViewManager::_FrameEventListener::OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source)
+{
+       int ret = livebox_client_paused();
+       SysLog(NID_UI_CTRL, "ret (%d)", ret);
+}
+
+void
+_AppWidgetViewManager::_FrameEventListener::OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source)
+{
+}
+
+void
+_AppWidgetViewManager::_FrameEventListener::OnFrameRestored(const Tizen::Ui::Controls::_Frame& source)
+{
+}
+
 }} // Tizen::Shell
index 8353f5b..2def690 100644 (file)
@@ -65,6 +65,7 @@ public:
        Tizen::Graphics::FloatDimension GetAppWidgetSize(livebox* pAppWidget) const;
        Tizen::Graphics::FloatDimension GetAppWidgetPopupSize(livebox* pAppWidget) const;
        void SetAppWidgetSize(const _AppWidgetView& appwidgetView, const Tizen::Graphics::FloatDimension& size);
+       void AddFrameEventListener(void);
 
 private:
        _AppWidgetViewManager(void);
@@ -91,6 +92,16 @@ private:
        static void OnAppWidgetDeleted(livebox *pAppWidget, int ret, void* pData);
        static void OnAppWidgetResized(livebox* pAppWidget, int ret, void* pData);
 
+       class _FrameEventListener
+               : public Tizen::Ui::Controls::_IFrameEventListener
+       {
+       private:
+               virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
+               virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
+               virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
+               virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
+       };
+
 private:
        struct _EventHandlerDeleter
        {
@@ -116,6 +127,7 @@ private:
        std::unique_ptr<Tizen::Graphics::_ICoordinateSystemTransformer> __pCoordinateTransformer;
        std::unique_ptr<int, _EventHandlerDeleter> __eventHandler;
        std::unique_ptr<int, _FaultEventHandlerDeleter> __faultEventHandler;
+       std::unique_ptr<_FrameEventListener> __pFrameEventListener;
        bool __glMode;
 };