*/
#include <new>
+#include <errno.h>\r
+#include <string.h>
#include <sys/shm.h>
#include <X11/Xlib.h>
#include <X11/extensions/XShm.h>
#include "FShell_AppWidgetLayer.h"
#include "FShell_AppWidgetProviderManagerImpl.h"
+//#define _BUFFER_TEST
+
using namespace std;
using namespace Tizen::Base;
using namespace Tizen::Graphics;
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);
#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"
#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;
{
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;
}
{
result r = E_SUCCESS;
+ _Window* pWindow = _ControlManager::GetInstance()->GetCurrentFrame();
+ if (pWindow)
+ {
+ _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
+ if (pFrame)
+ {
+ pFrame->RemoveFrameEventListener(*this);
+ }
+ }
+
return r;
}
}
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;
#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"
, public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
, public Tizen::Ui::_ITouchFlickGestureEventListener
, public _IAppWidgetPopupViewEventListener
+ , public Tizen::Ui::Controls::_IFrameEventListener
{
public:
static _AppWidgetView* CreateAppWidgetViewN(void);
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);
#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"
using namespace Tizen::Base::Collection;
using namespace Tizen::Graphics;
using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
namespace
{
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)
{
_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
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
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);
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
{
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;
};