From d73905cbfe1054b05db38c463b0d2e628ca5a842 Mon Sep 17 00:00:00 2001 From: "kyeongwoo.lee" Date: Thu, 13 Jun 2013 22:35:54 +0900 Subject: [PATCH] add new features Change-Id: I08ff1d4b33955a4b3dc642903e172438a7e9b7d5 --- src/FShell_AppWidgetManagerProxy.cpp | 16 ++- src/FShell_AppWidgetProviderManagerImpl.cpp | 196 ++++++++++++++++---------- src/inc/FShell_AppWidgetManagerIpcMessage.h | 3 +- src/inc/FShell_AppWidgetManagerProxy.h | 6 + src/inc/FShell_AppWidgetProviderManagerImpl.h | 35 ++++- 5 files changed, 173 insertions(+), 83 deletions(-) diff --git a/src/FShell_AppWidgetManagerProxy.cpp b/src/FShell_AppWidgetManagerProxy.cpp index 85d6ef4..184ef12 100644 --- a/src/FShell_AppWidgetManagerProxy.cpp +++ b/src/FShell_AppWidgetManagerProxy.cpp @@ -20,6 +20,10 @@ */ #include +#include +#include +#include +#include #include #include #include "FShell_AppWidgetProviderManagerImpl.h" @@ -33,7 +37,8 @@ const char IPC_SERVER_NAME[] = "osp.shell.ipcserver.appwidgetmanager"; }; using namespace Tizen::Io; - +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; _AppWidgetManagerProxy::_AppWidgetManagerProxy() : __pIpcClient(null) @@ -241,6 +246,12 @@ _AppWidgetManagerProxy::OnTouchEventReceived(const Tizen::Base::String& instance } result +_AppWidgetManagerProxy::OnAppWidgetEventReceived(const String& instanceId, const String& operationId, const HashMap& args) +{ + return _AppWidgetProviderManagerImpl::GetInstance()->HandleAppWidgetRequest(operationId, &args, true); +} + +result _AppWidgetManagerProxy::OnTouchEventReceivedForPD(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y ) { return _AppWidgetProviderManagerImpl::GetInstance()->ForwardTouchEventForPD(instanceId, eventType, timeStamp, x, y); @@ -251,7 +262,8 @@ _AppWidgetManagerProxy::OnIpcResponseReceived(_IpcClient& client, const IPC::Mes { SysLog(NID_SHELL, "Enter."); IPC_BEGIN_MESSAGE_MAP(_AppWidgetManagerProxy, message) - IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendTouchEvent, &client, OnTouchEventReceived ) + IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendAppWidgetEvent, &client, OnAppWidgetEventReceived) + IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendTouchEvent, &client, OnTouchEventReceived) IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendTouchEventForPD, &client, OnTouchEventReceivedForPD ) IPC_END_MESSAGE_MAP() diff --git a/src/FShell_AppWidgetProviderManagerImpl.cpp b/src/FShell_AppWidgetProviderManagerImpl.cpp index bc4c416..eb7ace7 100644 --- a/src/FShell_AppWidgetProviderManagerImpl.cpp +++ b/src/FShell_AppWidgetProviderManagerImpl.cpp @@ -58,7 +58,6 @@ namespace Tizen { namespace Shell { - using namespace std; using namespace Tizen::Base; using namespace Tizen::Base::Collection; @@ -67,33 +66,29 @@ using namespace Tizen::App::Package; using namespace Tizen::Security; using namespace Tizen::Graphics; - -namespace -{ -const char APPWIDGET_ON_ADD[] = "http://tizen.org/appcontrol/appwidget/add"; -const char APPWIDGET_ON_REMOVE[] = "http://tizen.org/appcontrol/appwidget/remove"; -const char APPWIDGET_ON_UPDATE[] = "http://tizen.org/appcontrol/appwidget/update"; -const char APPWIDGET_ON_RESIZE[] = "http://tizen.org/appcontrol/appwidget/resize"; -const char APPWIDGET_ON_TOUCH[] = "http://tizen.org/appcontrol/appwidget/touch"; -const char APPWIDGET_POPUP_ON_CREATE[] = "http://tizen.org/appcontrol/appwidgetpopup/create"; -const char APPWIDGET_POPUP_ON_DESTROY[] = "http://tizen.org/appcontrol/appwidgetpopup/destroy"; -const char APPWIDGET_POPUP_ON_TOUCH[] = "http://tizen.org/appcontrol/appwidgetpopup/touch"; -const char APPWIDGET_POPUP_PREFIX[] = "http://tizen.org/appcontrol/appwidgetpopup"; - -const String ARG_KEY_INSTANCE_ID = L"_InstanceId"; -const String ARG_KEY_PROVIDER_NAME = L"_ProviderName"; -const String ARG_KEY_USER_INFO = L"_UserInfo"; -const String ARG_KEY_X = L"_X"; -const String ARG_KEY_Y = L"_Y"; -const String ARG_KEY_WIDTH = L"_Width"; -const String ARG_KEY_HEIGHT = L"_Height"; -const String ARG_KEY_POPUP_WIDTH = L"_PopupWidth"; -const String ARG_KEY_POPUP_HEIGHT = L"_PopupHeight"; -const String ARG_KEY_ARGUMENT = L"_Argument"; -const String ARG_KEY_EVENT_TYPE = L"_EventType"; -const String ARG_KEY_TIME_STAMP = L"_TimeStamp"; - -} +extern const wchar_t APPWIDGET_ON_ADD[] = L"http://tizen.org/appcontrol/appwidget/add"; +extern const wchar_t APPWIDGET_ON_REMOVE[] = L"http://tizen.org/appcontrol/appwidget/remove"; +extern const wchar_t APPWIDGET_ON_UPDATE[] = L"http://tizen.org/appcontrol/appwidget/update"; +extern const wchar_t APPWIDGET_ON_RESIZE[] = L"http://tizen.org/appcontrol/appwidget/resize"; +extern const wchar_t APPWIDGET_ON_TOUCH[] = L"http://tizen.org/appcontrol/appwidget/touch"; +extern const wchar_t APPWIDGET_POPUP_ON_CREATE[] = L"http://tizen.org/appcontrol/appwidgetpopup/create"; +extern const wchar_t APPWIDGET_POPUP_ON_DESTROY[] = L"http://tizen.org/appcontrol/appwidgetpopup/destroy"; +extern const wchar_t APPWIDGET_POPUP_ON_TOUCH[] = L"http://tizen.org/appcontrol/appwidgetpopup/touch"; +extern const wchar_t APPWIDGET_POPUP_PREFIX[] = L"http://tizen.org/appcontrol/appwidgetpopup"; +extern const wchar_t INVALID_INSTANCE[] = L"file://invalid instance id"; + +extern const String ARG_KEY_INSTANCE_ID = L"_InstanceId"; +extern const String ARG_KEY_PROVIDER_NAME = L"_ProviderName"; +extern const String ARG_KEY_USER_INFO = L"_UserInfo"; +extern const String ARG_KEY_X = L"_X"; +extern const String ARG_KEY_Y = L"_Y"; +extern const String ARG_KEY_WIDTH = L"_Width"; +extern const String ARG_KEY_HEIGHT = L"_Height"; +extern const String ARG_KEY_POPUP_WIDTH = L"_PopupWidth"; +extern const String ARG_KEY_POPUP_HEIGHT = L"_PopupHeight"; +extern const String ARG_KEY_ARGUMENT = L"_Argument"; +extern const String ARG_KEY_EVENT_TYPE = L"_EventType"; +extern const String ARG_KEY_TIME_STAMP = L"_TimeStamp"; _AppWidgetProviderManagerImpl::_AppWidgetProviderManagerImpl() :__pAppWidgetFactory(null) @@ -109,7 +104,6 @@ _AppWidgetProviderManagerImpl::~_AppWidgetProviderManagerImpl() SysLog(NID_SHELL, ""); } - _AppWidgetProviderManagerImpl* _AppWidgetProviderManagerImpl::GetInstance() { @@ -119,6 +113,8 @@ _AppWidgetProviderManagerImpl::GetInstance() __pAppWidgetManagerImpl = new (nothrow)_AppWidgetProviderManagerImpl; SysTryReturn(NID_SHELL, __pAppWidgetManagerImpl, null, E_OUT_OF_MEMORY, "Allocating new _AppWidgetManagerProxy failed."); + _AppWidgetManagerProxy::GetInstance(); + result r = __pAppWidgetManagerImpl->Construct(); SysTryReturn(NID_SHELL, !IsFailed(r), null, r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -148,7 +144,17 @@ result _AppWidgetProviderManagerImpl::SetAppWidgetProviderFactory(IAppWidgetProviderFactory& factory) { result r = ValidateApplicationAttribute(); - SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest." ); + if (IsFailed(r)) + { + SysLog(NID_SHELL, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest and it's not allowed that declaring 'AUTO_RESTART' attribute for AppWidget."); + + r = SendResult(INVALID_INSTANCE, false); + SysTryLog(NID_SHELL, !IsFailed(r), "Because the context for this dynamic box is removed, POLLRDHUP occurs."); + + SysAssertf(false, "The application's attribute does not meet the condition to provide Dynamic Box."); + } + + SysLog(NID_SHELL, "enter"); __pAppWidgetFactory = &factory; return E_SUCCESS; @@ -158,7 +164,15 @@ result _AppWidgetProviderManagerImpl::SetAppWidgetPopupProviderFactory(IAppWidgetPopupProviderFactory& factory) { result r = ValidateApplicationAttribute(); - SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest."); + if (IsFailed(r)) + { + SysLog(NID_SHELL, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest and it's not allowed that declaring 'AUTO_RESTART' attribute for AppWidget."); + + r = SendResult(INVALID_INSTANCE, false); + SysTryLog(NID_SHELL, !IsFailed(r), "Because the context for this dynamic box is removed, POLLRDHUP occurs."); + + SysAssertf(false, "The application's attribute does not meet the condition to provide Dynamic Box."); + } __pAppWidgetPopupProviderFactory = &factory; return E_SUCCESS; @@ -372,64 +386,84 @@ _AppWidgetProviderManagerImpl::ContainsAppWidget(const String& instanceId) const return contains; } -void -_AppWidgetProviderManagerImpl::OnAppControlRequestReceived(RequestId reqId, const String& operationId, const String* pUri, const String* pMimeType, const IMap* pArgs) +result +_AppWidgetProviderManagerImpl::CreateAppWidget(const String& instanceId, const String& operationId, const IMap* pArgs) { - SysAssertf( pArgs, "[E_SYSTEN] pArgs should not be null."); - SysAssertf( pArgs->GetCount() > 0, "[E_SYSTEN] pArgs should have one more key-values."); + const String* pName = dynamic_cast(pArgs->GetValue(ARG_KEY_PROVIDER_NAME)); + SysTryReturnResult(NID_SHELL, pName, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_PROVIDER_NAME.GetPointer() ); - SysLog(NID_SHELL, "operationId(%ls), argc(%d)", operationId.GetPointer(), pArgs->GetCount()); + const String* pParam = dynamic_cast(pArgs->GetValue(ARG_KEY_USER_INFO)); + SysTryReturnResult(NID_SHELL, pParam, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_USER_INFO.GetPointer() ); - const String* pInstanceId = dynamic_cast(pArgs->GetValue(ARG_KEY_INSTANCE_ID)); - SysTryReturnVoidResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer() ); + SysSecureLog(NID_SHELL, "id(%ls), name(%ls), param(%ls)", instanceId.GetPointer(), pName->GetPointer(), pParam->GetPointer()); - const String* pName = dynamic_cast(pArgs->GetValue(ARG_KEY_PROVIDER_NAME)); - SysTryReturnVoidResult(NID_SHELL, pName, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_PROVIDER_NAME.GetPointer() ); + SysLog(NID_SHELL, "no appwidget instance, creating.."); - const String* pParam = dynamic_cast(pArgs->GetValue(ARG_KEY_USER_INFO)); - SysTryReturnVoidResult(NID_SHELL, pParam, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_USER_INFO.GetPointer() ); + int width = 0; + const String* pValue = dynamic_cast(pArgs->GetValue(ARG_KEY_WIDTH)); + SysTryReturnResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_WIDTH.GetPointer() ); + Integer::Parse(*pValue, width); - SysSecureLog(NID_SHELL, "id(%ls), name(%ls), param(%ls)", pInstanceId->GetPointer(), pName->GetPointer(), pParam->GetPointer()); + int height = 0; + pValue = dynamic_cast(pArgs->GetValue(ARG_KEY_HEIGHT)); + SysTryReturnResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_HEIGHT.GetPointer() ); + Integer::Parse(*pValue, height); - if(this->ContainsAppWidget(*pInstanceId) == false) + this->CreateAppWidget(*pName, instanceId, width, height, *pParam); + + if(operationId == APPWIDGET_ON_RESIZE) { - SysLog(NID_SHELL, "no appwidget instance, creating.."); + SysLog(NID_SHELL, "operation is resize, but appwidget is already recreated with new size, so OnSize won't be called."); + } - int width = 0; - const String* pValue = dynamic_cast(pArgs->GetValue(ARG_KEY_WIDTH)); - SysTryReturnVoidResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_WIDTH.GetPointer() ); - Integer::Parse(*pValue, width); + return E_SUCCESS; +} - int height = 0; - pValue = dynamic_cast(pArgs->GetValue(ARG_KEY_HEIGHT)); - SysTryReturnVoidResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_HEIGHT.GetPointer() ); - Integer::Parse(*pValue, height); +// entry point for AppControl Request +void +_AppWidgetProviderManagerImpl::OnAppControlRequestReceived(RequestId reqId, const String& operationId, const String* pUri, const String* pMimeType, const IMap* pArgs) +{ + SysAssertf( pArgs, "[E_SYSTEN] pArgs should not be null."); + SysAssertf( pArgs->GetCount() > 0, "[E_SYSTEN] pArgs should have one more key-values."); - this->CreateAppWidget( *pName, *pInstanceId, width, height, *pParam); + SysLog(NID_SHELL, "operationId(%ls), argc(%d)", operationId.GetPointer(), pArgs->GetCount()); - if(operationId == APPWIDGET_ON_RESIZE) - { - SysLog(NID_SHELL, "operation is resize, but appwidget is already recreated with new size, so OnSize won't be called."); - return; - } + HandleRequest(operationId, pArgs); + + SysLog(NID_SHELL, "Exit"); +} + +result +_AppWidgetProviderManagerImpl::HandleRequest(const String& operationId, const IMap* pArgs) +{ + const String* pInstanceId = dynamic_cast(pArgs->GetValue(ARG_KEY_INSTANCE_ID)); + SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to execute GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer()); + + if (this->ContainsAppWidget(*pInstanceId) == false) + { + SysLog(NID_SHELL, "CreateAppWidget with appcontrol"); + result r = CreateAppWidget(*pInstanceId, operationId, pArgs); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_FAILURE, "Failed to execute CreateAppWidget."); } if(operationId.StartsWith(APPWIDGET_POPUP_PREFIX, 0) == true) { - SysTryReturnVoidResult(NID_SHELL, __pAppWidgetPopupProviderFactory, E_FAILURE, "[E_FAILURE] __pAppWidgetPopupProviderFactory is null"); + SysTryReturnResult(NID_SHELL, __pAppWidgetPopupProviderFactory, E_FAILURE, "__pAppWidgetPopupProviderFactory is null"); HandleAppWidgetPopupRequest(operationId, pArgs); } else { - SysTryReturnVoidResult(NID_SHELL, __pAppWidgetFactory, E_FAILURE, "[E_FAILURE] __pAppWidgetFactory is null"); HandleAppWidgetRequest(operationId, pArgs); } - SysLog(NID_SHELL, "Exit"); + + return E_SUCCESS; } result -_AppWidgetProviderManagerImpl::HandleAppWidgetRequest(const String& operationId, const IMap* pArgs) +_AppWidgetProviderManagerImpl::HandleAppWidgetRequest(const String& operationId, const IMap* pArgs, bool isConnected) { + SysTryReturnResult(NID_SHELL, __pAppWidgetFactory, E_FAILURE, "[E_FAILURE] __pAppWidgetFactory is null"); + if( pArgs == null || pArgs->GetCount() < 3) { SysAssertf(pArgs, "[E_SYSTEN] pArgs should not be null."); @@ -439,7 +473,19 @@ _AppWidgetProviderManagerImpl::HandleAppWidgetRequest(const String& operationId, SysLog(NID_SHELL, "operationId(%ls), argc(%d)", operationId.GetPointer(), pArgs->GetCount()); const String* pInstanceId = dynamic_cast(pArgs->GetValue(ARG_KEY_INSTANCE_ID)); - SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "[E_FAILURE] pId is null."); + SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "pId is null."); + + result r = E_SUCCESS; + + if (isConnected) + { + if(this->ContainsAppWidget(*pInstanceId) == false) + { + SysLog(NID_SHELL, "CreateAppWidget with ipc"); + r = CreateAppWidget(*pInstanceId, operationId, pArgs); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_FAILURE, "[E_FAILURE] Failed to execute CreateAppWidget."); + } + } if (operationId == APPWIDGET_ON_RESIZE) { @@ -453,7 +499,8 @@ _AppWidgetProviderManagerImpl::HandleAppWidgetRequest(const String& operationId, SysTryReturnResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_HEIGHT.GetPointer() ); Integer::Parse(*pValue, height); - this->ResizeAppWidget(*pInstanceId, width, height); + r = this->ResizeAppWidget(*pInstanceId, width, height); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_FAILURE, "Failed to execute ResizeAppWidget."); } else if (operationId == APPWIDGET_ON_UPDATE) { @@ -470,16 +517,21 @@ _AppWidgetProviderManagerImpl::HandleAppWidgetRequest(const String& operationId, pValue = dynamic_cast(pArgs->GetValue(ARG_KEY_ARGUMENT)); SysTryReturnResult(NID_SHELL, pValue, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_ARGUMENT.GetPointer() ); - this->UpdateAppWidget(*pInstanceId, width, height, *pValue); + r = this->UpdateAppWidget(*pInstanceId, width, height, *pValue); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_FAILURE, "Failed to execute UpdateAppWidget."); } else if (operationId == APPWIDGET_ON_REMOVE) { - this->RemoveAppWidget(*pInstanceId, true); + r = this->RemoveAppWidget(*pInstanceId, true); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_FAILURE, "Failed to execute RemoveAppWidget."); } else if (operationId == APPWIDGET_ON_TOUCH) { SysLog(NID_SHELL, "[APPWIDGET_ON_TOUCH] touch events will be delivered after provider is initialized"); } + + SendResult(*pInstanceId, true); + SysLog(NID_SHELL, "Exit"); return E_SUCCESS; } @@ -761,9 +813,7 @@ _AppWidgetProviderManagerImpl::RequestSyncSharedMemory(const String& instanceId, _AppWidgetManagerProxy* pProxy = _AppWidgetManagerProxy::GetInstance(); SysTryReturnResult(NID_SHELL, pProxy, E_SYSTEM, "Failed to get proxy instance!"); - result r = pProxy->RequestSyncSharedMemory(instanceId, width, height); - - return r; + return pProxy->RequestSyncSharedMemory(instanceId, width, height); } result @@ -844,16 +894,16 @@ _AppWidgetProviderManagerImpl::ValidateApplicationAttribute(void) int lifeDuration = 0; r = Integer::Parse(lifeDurationValue, lifeDuration); SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "Failed to parse %ls attribute for the ServiceApp in package information.", LIFE_DURATION_KEY ); -// SysTryReturnResult(NID_SHELL, lifeDuration <= LIFE_DURATION_MIN, E_INVALID_OPERATION, "%ls attribute value should be less than '%d' to be an application that providing AppWidget, but value is %d", LIFE_DURATION_KEY, LIFE_DURATION_MIN, lifeDuration ); + //SysTryReturnResult(NID_SHELL, lifeDuration <= LIFE_DURATION_MIN, E_INVALID_OPERATION, "%ls attribute value should be less than '%d' to be an application that providing AppWidget, but value is %d", LIFE_DURATION_KEY, LIFE_DURATION_MIN, lifeDuration ); // AutoRestart - /*r = pInfo->GetValue(AUTO_RESTART_KEY, pFeature); + r = pInfo->GetValue(AUTO_RESTART_KEY, pFeature); if (!IsFailed(r)) { String autoRestart = pFeature->GetValue(); autoRestart.ToLowerCase(); SysTryReturnResult(NID_SHELL, autoRestart != "true", E_INVALID_OPERATION, "It's not allowed that declaring 'AUTO_RESTART' attribute for AppWidget."); - }*/ + } _DeleteCollectionMapValue(*pInfo); diff --git a/src/inc/FShell_AppWidgetManagerIpcMessage.h b/src/inc/FShell_AppWidgetManagerIpcMessage.h index c8c584f..084818e 100644 --- a/src/inc/FShell_AppWidgetManagerIpcMessage.h +++ b/src/inc/FShell_AppWidgetManagerIpcMessage.h @@ -39,8 +39,9 @@ IPC_SYNC_MESSAGE_CONTROL3_1(AppWidgetManager_RequestSyncSharedMemory, Tizen::Bas IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestSyncSharedMemoryForPD, Tizen::Base::String, result) IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestReleaseSharedMemory, Tizen::Base::String, result) IPC_SYNC_MESSAGE_CONTROL1_1(AppWidgetManager_RequestReleaseSharedMemoryForPD, Tizen::Base::String, result) -IPC_SYNC_MESSAGE_CONTROL2_0(AppWidgetManager_SendResult, Tizen::Base::String, bool) +IPC_MESSAGE_CONTROL2(AppWidgetManager_SendResult, Tizen::Base::String, bool) // Message from service +IPC_MESSAGE_CONTROL3(AppWidgetManager_SendAppWidgetEvent, Tizen::Base::String, Tizen::Base::String, Tizen::Base::Collection::HashMap) IPC_MESSAGE_CONTROL5(AppWidgetManager_SendTouchEvent, Tizen::Base::String, int, double, double, double) IPC_MESSAGE_CONTROL5(AppWidgetManager_SendTouchEventForPD, Tizen::Base::String, int, double, double, double) diff --git a/src/inc/FShell_AppWidgetManagerProxy.h b/src/inc/FShell_AppWidgetManagerProxy.h index 66b92bb..4e540ed 100644 --- a/src/inc/FShell_AppWidgetManagerProxy.h +++ b/src/inc/FShell_AppWidgetManagerProxy.h @@ -27,6 +27,11 @@ #include #include +namespace Tizen { namespace Base { namespace Collection +{ +class HashMap; +}}} + namespace Tizen { namespace Shell { class _AppWidgetManagerProxy @@ -51,6 +56,7 @@ public: result RequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId); result SendResult(const Tizen::Base::String& instanceId, bool isSucceeded); + result OnAppWidgetEventReceived(const Tizen::Base::String& instanceId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::HashMap& args); result OnTouchEventReceived(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y ); result OnTouchEventReceivedForPD(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y ); diff --git a/src/inc/FShell_AppWidgetProviderManagerImpl.h b/src/inc/FShell_AppWidgetProviderManagerImpl.h index 47a5f98..b2eced5 100644 --- a/src/inc/FShell_AppWidgetProviderManagerImpl.h +++ b/src/inc/FShell_AppWidgetProviderManagerImpl.h @@ -32,7 +32,6 @@ #include #include - namespace Tizen { namespace Shell { class AppWidgetFrame; @@ -45,11 +44,33 @@ class AppWidgetPopupProvider; class _IAppWidgetTouchEventListener; class _AppWidgetManagerProxy; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_ADD[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_REMOVE[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_UPDATE[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_RESIZE[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_TOUCH[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_CREATE[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_DESTROY[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_TOUCH[]; +_OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_PREFIX[]; + +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_INSTANCE_ID; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_PROVIDER_NAME; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_USER_INFO; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_X; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_Y; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_WIDTH; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_HEIGHT; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_POPUP_WIDTH; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_POPUP_HEIGHT; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_ARGUMENT; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_EVENT_TYPE; +_OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_TIME_STAMP; class _OSP_EXPORT_ _AppWidgetProviderManagerImpl - : public Tizen::App::IAppControlProviderEventListener + : public Tizen::Base::Object + , public Tizen::App::IAppControlProviderEventListener , public Tizen::App::_IAppEventListener - , public Tizen::Base::Object { public: static _AppWidgetProviderManagerImpl* GetInstance(); @@ -77,17 +98,18 @@ public: result ForwardTouchEvent(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y); result ForwardTouchEventForPD(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y); + result HandleRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs); + result HandleAppWidgetRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs, bool isConnected = false); + // helper -// static result ExtractAppIdAndProviderName(const Tizen::Base::String& providerId, Tizen::App::AppId& appId, Tizen::Base::String& providerName); static result ValidateApplicationAttribute(void); - void TerminateAppIfInvalidState(); - private: _AppWidgetProviderManagerImpl(); virtual ~_AppWidgetProviderManagerImpl(); result Construct(); + result CreateAppWidget(const Tizen::Base::String& instanceId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs); result CreateAppWidget(const Tizen::Base::String& name, const Tizen::Base::String& instanceId, int width, int height, const Tizen::Base::String& userInfo); result UpdateAppWidget(const Tizen::Base::String& instanceId, int width, int height, const Tizen::Base::String& argument); result ResizeAppWidget(const Tizen::Base::String& instanceId, int width, int height); @@ -99,7 +121,6 @@ private: virtual void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData); - result HandleAppWidgetRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs); result HandleAppWidgetPopupRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs); static result CheckCertificate(const Tizen::App::AppId& localAppId, const Tizen::App::AppId& remoteAppId); -- 2.7.4