}
// c style callback for livebox_service_get_pkglist
-int GetAppWidgetProviderInfoCallback(const char *packageId, const char *pProviderId, int is_prime, void *data)
+int GetAppWidgetProviderInfoCallback(const char *pPackageId, const char *pProviderId, int is_prime, void *data)
{
- SysLog(NID_APP, "%s, %s", packageId, pProviderId);
+ SysLog(NID_APP, "%s, %s", pPackageId, pProviderId);
IList* pAppWidgetProviderInfos = static_cast<IList*>(data);
SysTryReturn(NID_APP, pAppWidgetProviderInfos, 0, E_SYSTEM, "[E_SYSTEM] system error.");
return _AppWidgetProviderInfoImpl::GetAppWidgetProviderInfoN(appId, providerName);
}
-const int PROVIDER_NAME_MAX = 256;
-char __tempDefaultProviderResult[PROVIDER_NAME_MAX];
-
-// c style callback for livebox_service_get_pkglist
-int GetDefaultAppWidgetProviderInfoCallback(const char *packageId, const char *pProviderId, int is_prime, void *data)
-{
- SysLog(NID_APP, "%s, %s", packageId, pProviderId);
- char* pInputProviderId = static_cast<char*>(data);
- SysTryReturn(NID_APP, pInputProviderId, 0, E_SYSTEM, "[E_SYSTEM] system error.");
-
- if( strncmp(packageId, pInputProviderId, PROVIDER_NAME_MAX) == 0)
- {
- strncpy(__tempDefaultProviderResult, pProviderId, PROVIDER_NAME_MAX);
- return -1;
- }
-
- return 0;
-}
-
AppWidgetProviderInfo*
_AppWidgetManagerImpl::GetDefaultAppWidgetProviderInfoN(const Tizen::App::PackageId& packageId)
{
- memset(__tempDefaultProviderResult, 0, sizeof(__tempDefaultProviderResult));
-
- AppWidgetProviderInfo* pInfo = null;
- std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
-
- int ret = livebox_service_get_pkglist(GetDefaultAppWidgetProviderInfoCallback, pPackageId.get());
- if (ret < 0)
- {
- SysLog(NID_APP, "There is no AppWidget provider specifed, or It's failed to invoke livebox_service_get_pkglist, ret (%d)", ret);
- return null;
- }
-
- String defaultProvider(__tempDefaultProviderResult);
- if( !defaultProvider.IsEmpty())
- {
- String appId;
- String providerName;
- _AppWidgetManagerImpl::ExtractAppIdAndProviderName(__tempDefaultProviderResult, appId, providerName);
-
- pInfo = _AppWidgetProviderInfoImpl::GetAppWidgetProviderInfoN(appId, providerName, true);
- }
- return pInfo;
-}
-
-
-bool __isDefault;
-// c style callback for livebox_service_get_pkglist
-int IsAppWidgetProviderDefaultInfoCallback(const char *packageId, const char *pProviderId, int is_prime, void *data)
-{
- __isDefault = false;
- SysLog(NID_APP, "%s, %s", packageId, pProviderId);
- char* pInputProviderId = static_cast<char*>(data);
- SysTryReturn(NID_APP, pInputProviderId, 0, E_SYSTEM, "[E_SYSTEM] system error.");
+ std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId) );
+ std::unique_ptr<char[]> pDefaultProviderId(livebox_service_pkgname(pPackageId.get()) );
+ SysTryReturn(NID_APP, pDefaultProviderId.get(), null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
- if( strncmp(packageId, pInputProviderId, 256) == 0)
- {
- __isDefault = is_prime;
- return -1;
- }
+ String providerId(pDefaultProviderId.get());
+ String appId;
+ String providerName;
+ _AppWidgetManagerImpl::ExtractAppIdAndProviderName(providerId, appId, providerName);
- return 0;
+ return _AppWidgetProviderInfoImpl::GetAppWidgetProviderInfoN(appId, providerName, true);
}
bool
_AppWidgetManagerImpl::IsAppWidgetProviderDefault(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName)
{
- __isDefault = false;
-
- std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(_AppWidgetManagerImpl::MakeProviderName(appId, providerName)));
-
- int ret = livebox_service_get_pkglist(IsAppWidgetProviderDefaultInfoCallback, pPackageId.get());
- if (ret < 0)
- {
- SysLog(NID_APP, "Failed to invoke livebox_service_get_pkglist, ret (%d)", ret);
- }
-
- return __isDefault;
+ std::unique_ptr<char[]> pProviderId(_StringConverter::CopyToCharArrayN(_AppWidgetManagerImpl::MakeProviderName(appId, providerName)));
+ return livebox_service_is_primary(pProviderId.get());
}
// c - style callback for shortcut_set_request_cb
result
_AppWidgetManagerImpl::ExtractAppIdAndProviderName(const Tizen::Base::String& providerId, Tizen::App::AppId& appId, Tizen::Base::String& providerName)
{
- if( providerId.StartsWith("com.samsung", 0) == true)// for core livebox (plugin)
+ int index = 0;
+
+ if( providerId.StartsWith("com.samsung.", 0) == true)// for core livebox (plugin)
{
- appId = providerId;
- providerName = L"";
+ if( providerId.IndexOf(".", 13, index) == E_SUCCESS)//"com.samsung._"
+ {
+ providerId.SubString(0, index, appId);
+ providerId.SubString(index+1, providerName);
+ }
+ else
+ {
+ appId = providerId;
+ }
}
else
{
- int index = 0;
-
- providerId.IndexOf(".", 11, index);
+ providerId.IndexOf(".", 12, index);//"1234567890._"
providerId.SubString(0, index, appId);
providerId.SubString(index+1, providerName);
}
String
_AppWidgetManagerImpl::MakeProviderName(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName)
{
- String providerId;
-
- if( appId.StartsWith("com.samsung", 0) == true)// for core livebox (plugin)
+ if( providerName.IsEmpty() )
{
- // or providerName.IsEmpty()
- providerId = appId;
+ return appId;// some of core appwidget
}
- else
+
+ if (appId.IsEmpty())
{
- // for web
- if (appId.IsEmpty())
- {
- providerId.Format(128, L"%ls", providerName.GetPointer() );
- }
- else
- {
- providerId.Format(128, L"%ls.%ls", appId.GetPointer(), providerName.GetPointer() );
- }
+ return providerName;// web appwidget
}
+ String providerId;
+ providerId.Format(128, L"%ls.%ls", appId.GetPointer(), providerName.GetPointer() );// native appwidget
+
return providerId;
}