//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
//
/**
- * @file FShell_NotificationManagerImpl.cpp
- * @brief This is the placeholder for _NotificationManagerImpl class.
+ * @file FShell_NotificationManagerImpl.cpp
+ * @brief This is the implementation for _NotificationManagerImpl class.
*/
#include <unique_ptr.h>
-#include <appsvc/appsvc.h>
-#include <bundle.h>
#include <notification/notification.h>
#include <appfw/app.h>
#include <appfw/app_manager.h>
-#include <appfw/app_ui_notification.h>
#include <badge.h>
-
#include <FBaseSysLog.h>
-#include <FApp.h>
-//#include <FAppTypes.h>
+#include <FIoFile.h>
+#include <FAppApp.h>
+#include <FGrpColor.h>
#include <FShellNotificationManager.h>
#include <FShellNotificationRequest.h>
-
-//#include <FBaseInternalTypes.h>
+#include <FShellIBadgeEventListener.h>
#include <FBase_StringConverter.h>
-#include "FApp_AppInfo.h"
-#include "FApp_Aul.h"
-#include "FIoFile.h"
-#include "FAppPkg_PackageManagerImpl.h"
-#include "FApp_AppArg.h"
-#include "FAppPkgPackageAppInfo.h"
-#include "FAppPkg_PackageAppInfoImpl.h"
+#include <FApp_Aul.h>
+#include <FApp_AppArg.h>
#include "FShell_NotificationManagerImpl.h"
#include "FShell_NotificationRequestImpl.h"
using namespace Tizen::Base;
using namespace Tizen::Base::Collection;
using namespace Tizen::App;
-using namespace Tizen::App::Package;
using namespace Tizen::Io;
-using namespace Tizen::Shell;
+using namespace Tizen::Graphics;
extern "C" int service_create_request(bundle *data, service_h *service);
extern "C" int service_to_bundle(service_h service, bundle** data);
case NOTIFICATION_ERROR_NO_MEMORY:
return E_OUT_OF_MEMORY;
case NOTIFICATION_ERROR_FROM_DB:
- return E_DATABASE;
+ // fall through
case NOTIFICATION_ERROR_ALREADY_EXIST_ID:
- return E_OPERATION_FAILED;
+ // fall through
case NOTIFICATION_ERROR_NOT_EXIST_ID:
return E_OPERATION_FAILED;
default:
}
}
-bool
-IsPosted(ui_notification_h handle)
+result
+ConvertAppManagerResult(int error)
{
- struct ui_notification_s
+ switch (error)
{
- void* raw_handle;
- bool ongoing;
- bool posted;
- bool removed;
- char *icon;
- struct tm *time;
- char *title;
- char *content;
- service_h service;
- char *sound;
- bool vibration;
- };
+ case APP_MANAGER_ERROR_NONE:
+ return E_SUCCESS;
+ case APP_MANAGER_ERROR_INVALID_PARAMETER:
+ // fall through
+ case APP_MANAGER_ERROR_INVALID_PACKAGE:
+ return E_INVALID_ARG;
+ case NOTIFICATION_ERROR_NO_MEMORY:
+ return E_OUT_OF_MEMORY;
+ case APP_MANAGER_ERROR_DB_FAILED:
+ return E_OPERATION_FAILED;
+ default:
+ return E_OPERATION_FAILED;
+ }
+}
+
+} // namespace
+
+
+namespace Tizen { namespace Shell
+{
+
+///////////////////////////////////////////////////////////////////
+// _BadgeManagerImpl
+///////////////////////////////////////////////////////////////////
+void
+BadgeChangedCallback(unsigned int action, const char *pkgname, unsigned int count, void *data)
+{
+ Tizen::Base::Collection::LinkedListT<Tizen::Shell::IBadgeEventListener*>* pBadgeEventListenerList = static_cast<Tizen::Base::Collection::LinkedListT<Tizen::Shell::IBadgeEventListener*>*>(data);
+ SysAssert(pBadgeEventListenerList);
+
+ std::unique_ptr<IEnumeratorT<Tizen::Shell::IBadgeEventListener* > > pEnum(pBadgeEventListenerList->GetEnumeratorN());
+ SysTryReturnVoidResult(NID_SHELL, pEnum.get(), E_OUT_OF_MEMORY, "Failed to GetEnumeratorN()!");
- if (handle == NULL)
+ IBadgeEventListener* pListener;
+ while (pEnum->MoveNext() == E_SUCCESS)
{
- return false;
+ pListener = null;
+ pEnum->GetCurrent(pListener);
+ if (!pListener)
+ {
+ SysLog(NID_SHELL, "pListener is null!");
+ continue;
+ }
+
+ pListener->OnBadgeUpdated(pkgname, count);
}
+}
+
+_BadgeManagerImpl*
+_BadgeManagerImpl::GetInstance(void)
+{
+ static _BadgeManagerImpl* pTheInstance = null;
+ if (pTheInstance == null)
+ {
+ pTheInstance = new (std::nothrow) _BadgeManagerImpl;
+ SysTryReturn(NID_SHELL, pTheInstance != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
- ui_notification_s* pStruct = reinterpret_cast<ui_notification_s*>(handle);
+ pTheInstance->Construct();
+ }
+ return pTheInstance;
+}
- return pStruct->posted;
+result
+_BadgeManagerImpl::Construct(void)
+{
+ return E_SUCCESS;
}
-} // namespace
+result
+_BadgeManagerImpl::AddPrimaryBadgeEventListener(IBadgeEventListener& primaryListener)
+{
+ if( __primaryBadgeEventListenerList.GetCount() == 0)
+ {
+ int ret = badge_register_changed_cb(BadgeChangedCallback, &__primaryBadgeEventListenerList);
+ SysTryReturnResult(NID_SHELL, ret == BADGE_ERROR_NONE, E_SYSTEM, "Failed to badge_register_changed_cb, (%d)", ret);
+ }
+ return __primaryBadgeEventListenerList.Add(&primaryListener);
+}
-namespace Tizen { namespace Shell
+result
+_BadgeManagerImpl::RemovePrimaryBadgeEventListener(IBadgeEventListener& primaryListener)
{
+ __primaryBadgeEventListenerList.Remove(&primaryListener);
+ if( __primaryBadgeEventListenerList.GetCount() == 0)
+ {
+ int ret = badge_unregister_changed_cb(BadgeChangedCallback);
+ SysTryReturnResult(NID_SHELL, ret == BADGE_ERROR_NONE, E_SYSTEM, "Failed to badge_unregister_changed_cb, (%d)", ret);
+ }
+ return E_SUCCESS;
+}
+
+///////////////////////////////////////////////////////////////////
+// _NotificationManagerImpl
+///////////////////////////////////////////////////////////////////
_NotificationManagerImpl::_NotificationManagerImpl(void)
- : __notifyPrivitId(-1)
- , __notifyPrivitIdForOngoing(-1)
+ : __notifyPrivateId(-1)
+ , __notifyPrivateIdForOngoing(-1)
+ , __lastNotifyPrivateId(-1)
+ , __lightActivated(false)
{
}
_NotificationManagerImpl::~_NotificationManagerImpl(void)
{
+ bool isListeningBadgeEvent = (__badgeEventListenerList.GetCount() > 0)? true : false;
+ if(isListeningBadgeEvent == true)
+ {
+ _BadgeManagerImpl::GetInstance()->RemovePrimaryBadgeEventListener(*this);
+ }
}
result
int
_NotificationManagerImpl::GetBadgeNumber(void) const
{
+ ClearLastResult();
+
Tizen::App::App* pApp = Tizen::App::App::GetInstance();
std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(pApp->GetAppId()));
int count = GetBadgeCount(pAppId.get());
- SysTryReturn(NID_APP, count != -1, count, E_OPERATION_FAILED, "[%s] The operation has failed. Badge may not exist.",
- GetErrorMessage(E_OPERATION_FAILED));
+ SysTryReturn(NID_SHELL, count != -1, count, E_OPERATION_FAILED, "[E_OPERATION_FAILED] The operation has failed. Badge may not exist.");
- ClearLastResult();
return count;
}
result
_NotificationManagerImpl::Notify(int badgeNumber)
{
- SysTryReturnResult(NID_APP, badgeNumber >= 0, E_INVALID_ARG, "BadgeNumber is less than 0.");
-
- if (badgeNumber > MAX_NOTIFICATION_BADGE_NUMBER)
- {
- badgeNumber = MAX_NOTIFICATION_BADGE_NUMBER;
- }
+ SysTryReturnResult(NID_SHELL, badgeNumber >= 0 && badgeNumber <= MAX_NOTIFICATION_BADGE_NUMBER, E_INVALID_ARG,
+ "badgeNumber is less than 0 or greater than MAX_NOTIFICATION_BADGE_NUMBER.");
Tizen::App::App* pApp = Tizen::App::App::GetInstance();
std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(pApp->GetAppId()));
+ result r = E_SUCCESS;
+
if (badgeNumber == 0)
{
- RemoveBadge(pAppId.get());
+ r = RemoveBadge(pAppId.get());
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), r, "Failed to remove the badge.");
}
else
if (badgeNumber > 0)
{
- SetBadgeCount(pAppId.get(), badgeNumber);
+ r = SetBadgeCount(pAppId.get(), badgeNumber);
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), r, "Failed to set the badge.");
}
- return E_SUCCESS;
+ return r;
}
result
_NotificationManagerImpl::Notify(const String& messageText)
{
- SysTryReturnResult(NID_APP, messageText.GetLength() > 0, E_INVALID_ARG, "MessageText is less than 0.");
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
NotificationRequest request;
request.SetAlertText(messageText);
result
_NotificationManagerImpl::Notify(const String& messageText, int badgeNumber)
{
- SysTryReturnResult(NID_APP, badgeNumber >= 0, E_INVALID_ARG, "BadgeNumber is less than 0.");
- SysTryReturnResult(NID_APP, messageText.GetLength() > 0, E_INVALID_ARG, "MessageText is less than 0.");
-
- if (badgeNumber > MAX_NOTIFICATION_BADGE_NUMBER)
- {
- badgeNumber = MAX_NOTIFICATION_BADGE_NUMBER;
- }
+ SysTryReturnResult(NID_SHELL, badgeNumber >= 0 && badgeNumber <= MAX_NOTIFICATION_BADGE_NUMBER, E_INVALID_ARG,
+ "badgeNumber is less than 0 or greater than MAX_NOTIFICATION_BADGE_NUMBER.");
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
NotificationRequest request;
request.SetAlertText(messageText);
result
_NotificationManagerImpl::Notify(const String& messageText, int badgeNumber, const String& launchArguments)
{
- SysTryReturnResult(NID_APP, badgeNumber >= 0, E_INVALID_ARG, "BadgeNumber is less than 0.");
- SysTryReturnResult(NID_APP, messageText.GetLength() > 0, E_INVALID_ARG, "MessageText is less than 0.");
- SysTryReturnResult(NID_APP, launchArguments != null && launchArguments.GetLength() > 0, E_INVALID_ARG,
- "launchArguments is less than 0.");
-
- SysTryReturnResult(NID_APP, launchArguments.GetLength() <= MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH, E_INVALID_ARG,
- "launchArguments is greater than MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH.");
-
- if (badgeNumber > MAX_NOTIFICATION_BADGE_NUMBER)
- {
- badgeNumber = MAX_NOTIFICATION_BADGE_NUMBER;
- }
+ SysTryReturnResult(NID_SHELL, badgeNumber >= 0 && badgeNumber <= MAX_NOTIFICATION_BADGE_NUMBER, E_INVALID_ARG,
+ "badgeNumber is less than 0 or greater than MAX_NOTIFICATION_BADGE_NUMBER.");
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
+ SysTryReturnResult(NID_SHELL, launchArguments.GetLength() > 0 && launchArguments.GetLength() <= MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH, E_INVALID_ARG,
+ "launchArguments is less than 1 or greater than MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH.");
NotificationRequest request;
request.SetAlertText(messageText);
int
_NotificationManagerImpl::GetBadgeNumber(const AppId& appId) const
{
+ ClearLastResult();
+
bool b = _Aul::IsInstalled(appId);
- SysTryReturn(NID_APP, b == true, -1, E_APP_NOT_INSTALLED, "[E_OBJ_NOT_FOUND] The application %ls is not installed",
+ SysTryReturn(NID_SHELL, b == true, -1, E_APP_NOT_INSTALLED, "[E_APP_NOT_INSTALLED] The application %ls is not installed",
appId.GetPointer());
std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
int count = GetBadgeCount(pAppId.get());
- SysTryReturn(NID_APP, count != -1, count, E_OPERATION_FAILED, "[%s] The operation has failed. Badge may not exist.",
- GetErrorMessage(E_OPERATION_FAILED));
- ClearLastResult();
+ SysTryReturn(NID_SHELL, count != -1, count, E_OPERATION_FAILED, "[E_OPERATION_FAILED] The operation has failed. Badge may not exist.");
return count;
}
result
_NotificationManagerImpl::NotifyOngoingActivity(const String& messageText)
{
- SysTryReturnResult(NID_APP, messageText.GetLength() > 0, E_INVALID_ARG, "MessageText is less than 0.");
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
NotificationRequest request;
request.SetAlertText(messageText);
result
_NotificationManagerImpl::NotifyOngoingActivity(const String& messageText, const String& launchArguments)
{
- SysTryReturnResult(NID_APP, messageText.GetLength() > 0, E_INVALID_ARG, "MessageText is less than 0.");
- SysTryReturnResult(NID_APP, launchArguments.GetLength() > 0, E_INVALID_ARG, "launchArguments is less than 0.");
- SysTryReturnResult(NID_APP, launchArguments.GetLength() <= MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH, E_INVALID_ARG,
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
+ SysTryReturnResult(NID_SHELL, launchArguments.GetLength() > 0, E_INVALID_ARG, "launchArguments is less than 0.");
+ SysTryReturnResult(NID_SHELL, launchArguments.GetLength() <= MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH, E_INVALID_ARG,
"launchArguments is greater than MAX_NOTIFICATION_LAUNCH_ARGUMENTS_LENGTH.");
NotificationRequest request;
result
_NotificationManagerImpl::NotifyTextMessage(const String& messageText) const
{
- SysTryReturnResult(NID_APP, !messageText.IsEmpty(), E_INVALID_ARG, "MessageText is less than 0.");
+ SysTryReturnResult(NID_SHELL, messageText.GetLength() > 0 && messageText.GetLength() <= MAX_NOTIFICATION_MESSAGE_LENGTH, E_INVALID_ARG,
+ "messageText is less than 1 or greater than MAX_NOTIFICATION_MESSAGE_LENGTH.");
std::unique_ptr<char[]> pMsg(_StringConverter::CopyToCharArrayN(messageText));
int res = notification_status_message_post(pMsg.get());
r = E_INVALID_ARG;
break;
case NOTIFICATION_ERROR_IO:
- r = E_SYSTEM;
+ r = E_OPERATION_FAILED;
break;
default:
- r = E_SYSTEM;
+ r = E_OPERATION_FAILED;
break;
}
- SysLog(NID_APP, "[%s] %ls posted.", GetErrorMessage(r), messageText.GetPointer());
+ SysLog(NID_SHELL, "[%s] %ls posted.", GetErrorMessage(r), messageText.GetPointer());
return r;
}
return r;
}
-
+//
+// E_SUCCESS
+// E_INVALID_ARG
+// E_APP_NOT_INSTALLED - If AppId is invalid, it can occur.
+// E_OPERATION_FAILED
+// E_OUT_OF_MEMORY
+//
result
_NotificationManagerImpl::NotifyMessage(_NotifyType notifyType, bool isOngoing, const NotificationRequest& notifyRequest, const AppId* pAppId,
const Tizen::Base::String* pOperationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pDataType, const Tizen::Base::Collection::IMap* pExtraData)
result r = E_SUCCESS;
std::unique_ptr<char[]> pAppIdChar(null);
const _NotificationRequestImpl* pRequestImpl = _NotificationRequestImpl::GetInstance(notifyRequest);
- SysTryReturnResult(NID_APP, pRequestImpl != null, E_INVALID_ARG, "Invalid argument is used.");
+ SysTryReturnResult(NID_SHELL, pRequestImpl != null, E_INVALID_ARG, "Invalid argument is used.");
// Set pAppIdChar
if ((notifyType == NOTIFY_TYPE_SIMPLE) || (notifyType == NOTIFY_TYPE_APP_CONTROL))
{
-// char* pkgname = null;
-// app_get_id(&pkgname); // AppId. (Not package Id)
-// SysTryReturnResult(NID_APP, pkgname != NULL, E_OBJ_NOT_FOUND,"Cannot acquire package name for current application.");
-// const String currentAppId(pkgname);
-// free(pkgname);
Tizen::App::App* pApp = Tizen::App::App::GetInstance();
const String currentAppId = pApp->GetAppId();
std::unique_ptr<char[]> pAppIdTemp(_StringConverter::CopyToCharArrayN(currentAppId));
pAppIdChar = std::move(pAppIdTemp);
- SysLog(NID_APP, "app_get_id: %ls", currentAppId.GetPointer());
+ SysLog(NID_SHELL, "App ID is %ls.", currentAppId.GetPointer());
}
else
if (notifyType == NOTIFY_TYPE_APP_ID)
{
bool isAppInstalled = _Aul::IsInstalled(*pAppId);
- SysTryReturnResult(NID_APP, isAppInstalled == true, E_APP_NOT_INSTALLED, "The application %ls is not installed", pAppId->GetPointer());
+ SysTryReturnResult(NID_SHELL, isAppInstalled == true, E_APP_NOT_INSTALLED, "The application %ls is not installed.", pAppId->GetPointer());
std::unique_ptr<char[]> pAppIdTemp(_StringConverter::CopyToCharArrayN(*pAppId));
pAppIdChar = std::move(pAppIdTemp);
}
else
{
- SysTryReturnResult(NID_APP, false, E_INVALID_ARG, "Invalid argument is used.");
+ SysTryReturnResult(NID_SHELL, false, E_INVALID_ARG, "Invalid argument is used.");
}
+ __lastAppId = pAppIdChar.get();
const int badgeNumber = notifyRequest.GetBadgeNumber();
const int badgeOffset = notifyRequest.GetBadgeOffset();
const String& contentText = notifyRequest.GetAlertText();
// Allow change the badge without other properties.
- if (badgeNumber != -1 || badgeOffset != -1)
+ if (badgeNumber != -1 || badgeOffset != 0)
{
// Set - Badge
if (badgeOffset != 0)
{
if (badgeNumber == 0)
{
- RemoveBadge(pAppIdChar.get());
+ r = RemoveBadge(pAppIdChar.get());
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), r, "Failed to remove the badge.");
}
else
if (badgeNumber > 0)
{
- SetBadgeCount(pAppIdChar.get(), badgeNumber);
+ r = SetBadgeCount(pAppIdChar.get(), badgeNumber);
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), r, "Failed to set the badge.");
}
}
if (!(isOngoing || !contentText.IsEmpty()))
{
- SysLog(NID_APP, "No valid for Notification, just for set a badgeNumber update.");
+ SysLog(NID_SHELL, "No valid for Notification, just for set a badgeNumber update.");
return E_SUCCESS;
}
}
- SysTryReturnResult(NID_APP, (isOngoing || !contentText.IsEmpty()), E_INVALID_ARG, "Invalid argument is used. MessageText is Empty");
+ SysTryReturnResult(NID_SHELL, (isOngoing || !contentText.IsEmpty()), E_INVALID_ARG, "Invalid argument is used. MessageText is Empty");
const String& titleText = notifyRequest.GetTitleText();
const String& launchArguments = notifyRequest.GetAppMessage();
const String& iconPath = notifyRequest.GetIconFilePath();
const String& soundPath = notifyRequest.GetSoundFilePath();
const notification_type_e notiType = isOngoing ? NOTIFICATION_TYPE_ONGOING : NOTIFICATION_TYPE_NOTI;
- int notiPrivateId = isOngoing ? __notifyPrivitIdForOngoing : __notifyPrivitId;
+ int notiPrivateId = isOngoing ? __notifyPrivateIdForOngoing : __notifyPrivateId;
+ __lastNotifyPrivateId = notiPrivateId;
notification_h notiHandle = null;
bundle* pBundle = null;
bool needUpdate = false;
if (notiPrivateId != -1)
{
notiHandle = notification_load(pAppIdChar.get(), notiPrivateId);
- SysTryLog(NID_APP, notiHandle != null, "Get notiHandle(%d) from notiPrivateId(%d).", notiHandle, notiPrivateId);
+ SysTryLog(NID_SHELL, notiHandle != null, "Get notiHandle(%d) from notiPrivateId(%d).", notiHandle, notiPrivateId);
}
if (notiHandle == null)
{
- SysLog(NID_APP, "Previous notification(%d) no more valid - create new notification", notiPrivateId);
+ SysLog(NID_SHELL, "Previous notification(%d) no more valid - create new notification", notiPrivateId);
notiPrivateId = -1; // reset
notiHandle = notification_create(notiType);
}
{
needUpdate = true; // No need to notification_insert.
}
- SysTryReturnResult(NID_APP, notiHandle != null , E_SYSTEM, "A system error has been occurred. Notification creation/load failed ");
+ SysTryReturnResult(NID_SHELL, notiHandle != null, E_OPERATION_FAILED, "Notification creation or loading failed.");
// Content text(Alert text)
std::unique_ptr<char[]> pMsg(_StringConverter::CopyToCharArrayN(contentText));
else
{
char* pAppName = null;
- app_manager_get_app_name(pAppIdChar.get(), &pAppName);
+ r = ConvertAppManagerResult(app_manager_get_app_name(pAppIdChar.get(), &pAppName));
if (pAppName)
{
String appName(pAppName);
std::unique_ptr<char[]> pTitleTextTemp(_StringConverter::CopyToCharArrayN(appName));
pTitleText = std::move(pTitleTextTemp);
free(pAppName);
- //SysLog(NID_APP, "Application Id is %ls.", appName.GetPointer());
- }
- else
- {
- SysTryLog(NID_APP, pTitleText, "Failed to get title from app_manager_get_app_name for default setting.");
+ SysSecureLog(NID_SHELL, "App name is %ls.", appName.GetPointer());
}
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Failed to get title from app_manager_get_app_name for default setting.", GetErrorMessage(r));
}
// Icon file path
std::unique_ptr<char[]> pIconPath(null);
}
else
{
- std::unique_ptr<PackageAppInfo> pPackageAppInfo(_PackageManagerImpl::GetInstance()->GetPackageAppInfoN(pAppIdChar.get()));
- const String& appIconPath(_PackageAppInfoImpl::GetInstance(pPackageAppInfo.get())->GetAppNotificationIconPath());
-
- if (!appIconPath.IsEmpty() && File::IsFileExist(appIconPath))
+ char* pDefaultIconPath = null;
+ r = ConvertAppManagerResult(app_manager_get_app_icon_path(pAppIdChar.get(), &pDefaultIconPath));
+ if (pDefaultIconPath)
{
- std::unique_ptr<char[]> pIconPathTemp(_StringConverter::CopyToCharArrayN(appIconPath));
+ String iconPath(pDefaultIconPath);
+ std::unique_ptr<char[]> pIconPathTemp(_StringConverter::CopyToCharArrayN(iconPath));
pIconPath = std::move(pIconPathTemp);
+ free(pDefaultIconPath);
}
- else
- {
- char* pDefaultIconPath = null;
- app_manager_get_app_icon_path(pAppIdChar.get(), &pDefaultIconPath);
- if (pDefaultIconPath)
- {
- String iconPath(pDefaultIconPath);
- std::unique_ptr<char[]> pIconPathTemp(_StringConverter::CopyToCharArrayN(iconPath));
- pIconPath = std::move(pIconPathTemp);
- free(pDefaultIconPath);
- }
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set icon path failed.", GetErrorMessage(r));
- }
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the icon path failed.", GetErrorMessage(r));
}
// Sound file path
std::unique_ptr<char[]> pSoundPath(null);
if (notifyType == NOTIFY_TYPE_APP_ID)
{
r = ConvertNotificationResult(notification_set_pkgname(notiHandle, pAppIdChar.get()));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Package name failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the package name failed.", GetErrorMessage(r));
}
// Set - title text
if (pTitleText.get())
{
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_TITLE, pTitleText.get(), NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Title Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the title text failed.", GetErrorMessage(r));
}
// Set - content text
if (pMsg.get())
{
- r = notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_CONTENT, pMsg.get(), NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Title Text failed.", GetErrorMessage(r));
+ r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_CONTENT, pMsg.get(), NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting content text failed.", GetErrorMessage(r));
}
// Set - icon file path
r = ConvertNotificationResult(notification_set_image(notiHandle, NOTIFICATION_IMAGE_TYPE_ICON, pIconPath.get()));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set icon path failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the icon path failed.", GetErrorMessage(r));
// Set - sound file path
- r = ConvertNotificationResult(notification_set_sound(notiHandle, NOTIFICATION_SOUND_TYPE_USER_DATA, pSoundPath.get()));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set sound failed.", GetErrorMessage(r));
+ if (pSoundPath.get())
+ {
+ if (isOngoing && needUpdate)
+ {
+ r = ConvertNotificationResult(notification_set_sound(notiHandle, NOTIFICATION_SOUND_TYPE_NONE, NULL));
+ }
+ else
+ {
+ r = ConvertNotificationResult(notification_set_sound(notiHandle, NOTIFICATION_SOUND_TYPE_USER_DATA, pSoundPath.get()));
+ }
+ }
+ else
+ {
+ if (isOngoing)
+ {
+ r = ConvertNotificationResult(notification_set_sound(notiHandle, NOTIFICATION_SOUND_TYPE_NONE, NULL));
+ }
+ else
+ {
+ r = ConvertNotificationResult(notification_set_sound(notiHandle, NOTIFICATION_SOUND_TYPE_DEFAULT, NULL));
+ }
+ }
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the sound failed.", GetErrorMessage(r));
// Set extended - text, thumbnail and background image
if (!isOngoing)
{
std::unique_ptr<char[]> pBgImageFilePath(_StringConverter::CopyToCharArrayN(bgImageFilePath));
r = ConvertNotificationResult(notification_set_image(notiHandle, NOTIFICATION_IMAGE_TYPE_BACKGROUND, pBgImageFilePath.get()));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Background image path failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the background image path failed.", GetErrorMessage(r));
}
for (int i = 0; i < itemCount; i++)
{
const String* pThumbnailPath = static_cast<const String*>(pThumbnailList->GetAt(i));
- // TODO: check pThumbnailPath
std::unique_ptr<char[]> filePath(_StringConverter::CopyToCharArrayN(*pThumbnailPath));
r = ConvertNotificationResult(notification_set_image(notiHandle, thumbnailListEnum[i], filePath.get()));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set thumnail path failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the thumbnail path failed.", GetErrorMessage(r));
}
}
}
else
{
- // TODO: Check the valid
const IList* pMessageTextList = pRequestImpl->GetMessageTextList();
if (pMessageTextList && pMessageTextList->GetCount())
{
std::unique_ptr<char[]> leftText(_StringConverter::CopyToCharArrayN(subText));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_1, leftText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info1 text failed.", GetErrorMessage(r));
subText.Clear();
if (E_SUCCESS == pText1->SubString(matchIndex+1, subText))
{
std::unique_ptr<char[]> rightText(_StringConverter::CopyToCharArrayN(subText));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, rightText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Sub Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info1 sub text failed.", GetErrorMessage(r));
}
}
else
std::unique_ptr<char[]> leftText(_StringConverter::CopyToCharArrayN(*pText1));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_1, leftText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info1 text failed.", GetErrorMessage(r));
}
}
const String* pText2 = static_cast<const String*>(pMessageTextList->GetAt(1));
{
int matchIndex;
// 2.1: Multiple layout has single line text for 2nd information text.
- if ((layout == NOTIFICATION_LY_NOTI_EVENT_MULTIPLE && E_SUCCESS) == (pText2->IndexOf(L'\t', 0, matchIndex)))
+ if ((layout == NOTIFICATION_LY_NOTI_EVENT_MULTIPLE) && (E_SUCCESS == (pText2->IndexOf(L'\t', 0, matchIndex))))
{
// Make two token
String subText;
std::unique_ptr<char[]> leftText(_StringConverter::CopyToCharArrayN(subText));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_2, leftText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info2 text failed.", GetErrorMessage(r));
subText.Clear();
if (E_SUCCESS == pText2->SubString(matchIndex+1, subText))
{
std::unique_ptr<char[]> rightText(_StringConverter::CopyToCharArrayN(subText));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, rightText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Sub Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info2 sub text failed.", GetErrorMessage(r));
}
}
else
std::unique_ptr<char[]> leftText(_StringConverter::CopyToCharArrayN(*pText2));
r = ConvertNotificationResult(notification_set_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_2, leftText.get(),
NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification Set Info1 Text failed.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the Info2 text failed.", GetErrorMessage(r));
}
}
}
else
if (needUpdate)
- { // Reset text for update case. also must be check the previous text with get_text
+ { // Reset text for update case. also must be checked the previous text with get_text
char* pRetStr = null;
notification_get_text(notiHandle, NOTIFICATION_TEXT_TYPE_INFO_1, &pRetStr);
if (pRetStr)
NOTIFICATION_TEXT_TYPE_INFO_2, NOTIFICATION_TEXT_TYPE_INFO_SUB_2 };
for (unsigned int i = 0; i < sizeof(infoTextEnums)/sizeof(infoTextEnums[0]); i++)
{
- notification_set_text(notiHandle, infoTextEnums[i], null, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ r = ConvertNotificationResult(notification_set_text(notiHandle, infoTextEnums[i], null, NULL, NOTIFICATION_VARIABLE_TYPE_NONE));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the initial text failed.", GetErrorMessage(r));
}
}
}
}
}
+ // light
+ Color lightColor;
+ int lightColor32 = 0;
+
// Set - service
+ int retVal = SERVICE_ERROR_NONE;
+ int previousDisplaySet = NOTIFICATION_DISPLAY_APP_ALL;
+ int newDisplaySet = 0;
+
r = arg.Construct(launchArguments);
- SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Propagated.", GetErrorMessage(r));
+ SysTryCatch(NID_SHELL, !IsFailed(r), r = E_OPERATION_FAILED, r, "[E_OPERATION_FAILED] Failed to construct _AppArg.");
pBundle = arg.GetBundle();
service_create_request(pBundle, &hSvc);
- SysTryCatch(NID_APP, hSvc != null, r = E_SYSTEM, r, "[%s] A system error has been occurred. service_create_request failed.", GetErrorMessage(E_SYSTEM));
+ SysTryCatch(NID_SHELL, hSvc != null, r = E_OPERATION_FAILED, r, "[E_OPERATION_FAILED] service_create_request failed.");
if (notifyType == NOTIFY_TYPE_SIMPLE || notifyType == NOTIFY_TYPE_APP_ID)
{
- service_set_app_id(hSvc, pRequestImpl->IsAppBinding() ? pAppIdChar.get() : null);
+ retVal = service_set_app_id(hSvc, pRequestImpl->IsAppBinding() ? pAppIdChar.get() : null);
+ SysTryCatch(NID_SHELL, retVal == SERVICE_ERROR_NONE, r = E_OPERATION_FAILED, r, "[E_OPERATION_FAILED] service_set_app_id failed(%d).", retVal);
}
else
if (notifyType == NOTIFY_TYPE_APP_CONTROL)
{
-
std::unique_ptr<char[]> pOperationIdChar(_StringConverter::CopyToCharArrayN(*pOperationId));
- service_set_operation(hSvc, pOperationIdChar.get());
+ retVal = service_set_operation(hSvc, pOperationIdChar.get());
+ SysTryCatch(NID_SHELL, retVal == SERVICE_ERROR_NONE, r = E_OPERATION_FAILED, r, "[E_OPERATION_FAILED] service_set_operation failed(%d).", retVal);
+
if (pUriData)
{
std::unique_ptr<char[]> pUri(_StringConverter::CopyToCharArrayN(*pUriData));
- service_set_uri(hSvc, pUri.get());
+ retVal = service_set_uri(hSvc, pUri.get());
+ SysTryLog(NID_SHELL, retVal == SERVICE_ERROR_NONE, "service_set_uri failed(%d).", retVal);
}
if (pDataType)
{
std::unique_ptr<char[]> pMime(_StringConverter::CopyToCharArrayN(*pDataType));
- service_set_mime(hSvc, pMime.get());
+ retVal = service_set_mime(hSvc, pMime.get());
+ SysTryLog(NID_SHELL, retVal == SERVICE_ERROR_NONE, "service_set_mime failed(%d).", retVal);
}
if (pExtraData)
{
{
std::unique_ptr<char[]> pKeyString(_StringConverter::CopyToCharArrayN(*pKey));
std::unique_ptr<char[]> pValueString(_StringConverter::CopyToCharArrayN(*pValue));
- service_add_extra_data(hSvc, pKeyString.get(), pValueString.get());
+ retVal = service_add_extra_data(hSvc, pKeyString.get(), pValueString.get());
+ SysTryLog(NID_SHELL, retVal == SERVICE_ERROR_NONE, "service_add_extra_data failed(%d).", retVal);
}
else
{
- SysLog(NID_APP, "pKey or pValue is ivalid.");
+ SysLog(NID_SHELL, "pKey or pValue is invalid.");
}
}
}
}
}
- if (service_to_bundle(hSvc, &service_data) == SERVICE_ERROR_NONE)
- {
- notification_set_property(notiHandle, 0);
- notification_set_execute_option(notiHandle, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, service_data);
- }
- else
- {
- SysLog(NID_APP, "service_to_bundle failed");
- }
+ retVal = service_to_bundle(hSvc, &service_data);
+ SysTryCatch(NID_SHELL, retVal == SERVICE_ERROR_NONE, r = E_OPERATION_FAILED, r, "[E_OPERATION_FAILED] service_to_bundle failed(%d).", retVal);
+
+ r = ConvertNotificationResult(notification_set_property(notiHandle, 0));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification property failed.", GetErrorMessage(r));
+
+ r = ConvertNotificationResult(notification_set_execute_option(notiHandle, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, service_data));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the execute option failed.", GetErrorMessage(r));
// Set layout
if (isOngoing)
layout = NOTIFICATION_LY_ONGOING_PROGRESS;
}
}
- notification_set_layout(notiHandle, layout);
+ r = ConvertNotificationResult(notification_set_layout(notiHandle, layout));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification layout failed.", GetErrorMessage(r));
// For ongoing
if (isOngoing)
case ONGOING_ACTIVITY_TYPE_PROGRESS_PERCENTAGE:
if (needUpdate)
{
- r = ConvertNotificationResult(notification_update_progress(notiHandle, notiPrivateId, progress/100.));
+ r = ConvertNotificationResult(notification_set_size(notiHandle, 0)); // Reset for override BYTE type
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification size failed.", GetErrorMessage(r));
}
- else
- {
- r = ConvertNotificationResult(notification_set_progress(notiHandle, progress/100.));
- }
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification update failure.", GetErrorMessage(r));
+ r = ConvertNotificationResult(notification_set_progress(notiHandle, progress/100.));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification progress failed.", GetErrorMessage(r));
break;
case ONGOING_ACTIVITY_TYPE_PROGRESS_BYTE:
if (needUpdate)
{
- r = ConvertNotificationResult(notification_update_size(notiHandle, notiPrivateId, progress));
- }
- else
- {
- r = ConvertNotificationResult(notification_set_size(notiHandle, progress));
+ r = ConvertNotificationResult(notification_set_progress(notiHandle, 0.0)); // Reset for override PERCENTAGE type
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification progress failed.", GetErrorMessage(r));
}
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification update failure.", GetErrorMessage(r));
+ r = ConvertNotificationResult(notification_set_size(notiHandle, progress));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification size failed.", GetErrorMessage(r));
break;
case ONGOING_ACTIVITY_TYPE_TEXT:
- // Do nothing
+ r = ConvertNotificationResult(notification_set_progress(notiHandle, 0.0)); // Reset the progress
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification progress failed.", GetErrorMessage(r));
+ r = ConvertNotificationResult(notification_set_size(notiHandle, 0));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification size failed.", GetErrorMessage(r));
break;
default:
r = E_OPERATION_FAILED;
break;
}
- if (needUpdate)
- {
- r = ConvertNotificationResult(notification_update_content(notiHandle, notiPrivateId, pMsg.get()));
+
+ r = ConvertNotificationResult(notification_get_display_applist(notiHandle, &previousDisplaySet));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification area failed.", GetErrorMessage(r));
+
+ newDisplaySet = previousDisplaySet & ~NOTIFICATION_DISPLAY_APP_TICKER;
+ r = ConvertNotificationResult(notification_set_display_applist(notiHandle, newDisplaySet));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification area failed.", GetErrorMessage(r));
+ }
+
+ // Set LED
+ lightColor = pRequestImpl->GetColor();
+ lightColor32 = lightColor.GetRGB32();
+
+ if (lightColor32 == 0 || (pRequestImpl->GetOnTime() == 0))
+ { // Turn off case
+ if (needUpdate && __lightActivated)
+ { // Not for first insertion
+ r = ConvertNotificationResult(notification_set_led(notiHandle, NOTIFICATION_LED_OP_OFF, 0x00000000));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification led failed.", GetErrorMessage(r));
+ __lightActivated = false;
}
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification update failure.", GetErrorMessage(r));
+ }
+ else
+ {
+ r = ConvertNotificationResult(notification_set_led(notiHandle, NOTIFICATION_LED_OP_ON_CUSTOM_COLOR, lightColor32));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification led failed.", GetErrorMessage(r));
+
+ r = ConvertNotificationResult(notification_set_led_time_period(notiHandle, pRequestImpl->GetOnTime(), pRequestImpl->GetOffTime()));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification led time period failed.", GetErrorMessage(r));
+ __lightActivated = true;
}
// insert for new notification
if (!needUpdate)
{ // new
r = ConvertNotificationResult(notification_insert(notiHandle, ¬iPrivateId));
- SysLog(NID_APP, "Insert notification and get new notiPrivateId(%d)", notiPrivateId);
- SysTryLog(NID_APP, !IsFailed(r), "[%s] Notification post failure.", GetErrorMessage(r));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting new notification failed.", GetErrorMessage(r));
+
+ SysLog(NID_SHELL, "Getting new notiPrivateId(%d)", notiPrivateId);
+
if (isOngoing)
{
- __notifyPrivitIdForOngoing = notiPrivateId;
+ __notifyPrivateIdForOngoing = notiPrivateId;
}
else
{
- __notifyPrivitId = notiPrivateId;
+ __notifyPrivateId = notiPrivateId;
}
+ __lastNotifyPrivateId = notiPrivateId;
}
-
- // notification_update just for non ongoing and text type ongoing only.
- if (needUpdate && !isOngoing)
+ else
{
- notification_update(notiHandle);
- SysLog(NID_APP, "Notification update from notiPrivateId(%d)", notiPrivateId);
+ r = ConvertNotificationResult(notification_update(notiHandle));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Updating the notification failed. notiPrivateId(%d)", GetErrorMessage(r), notiPrivateId);
}
+ if (isOngoing)
+ {
+ r = ConvertNotificationResult(notification_set_display_applist(notiHandle, previousDisplaySet));
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Setting the notification area failed.", GetErrorMessage(r));
+ }
CATCH:
service_destroy(hSvc);
result r = E_SUCCESS;
notification_error_e err = NOTIFICATION_ERROR_NONE;
const notification_type_e notiType = onGoing ? NOTIFICATION_TYPE_ONGOING : NOTIFICATION_TYPE_NOTI;
- const int notiPrivateId = onGoing ? __notifyPrivitIdForOngoing : __notifyPrivitId;
+ const int notiPrivateId = onGoing ? __notifyPrivateIdForOngoing : __notifyPrivateId;
if (notiPrivateId != -1)
{
- notification_h notiHandle = notification_load(null, notiPrivateId);
+ std::unique_ptr<char[]> pAppIdTemp(_StringConverter::CopyToCharArrayN(__lastAppId));
+ notification_h notiHandle = notification_load(pAppIdTemp.get(), notiPrivateId);
if (notiHandle)
{
err = notification_delete(notiHandle);
- SysLog(NID_APP, "Notification deleted.");
+ SysLog(NID_SHELL, "Notification deleted.");
}
else
{
- SysLog(NID_APP, "Notification already deleted.");
+ SysLog(NID_SHELL, "Notification already deleted.");
}
- notification_free(notiHandle);
+ err = notification_free(notiHandle);
}
else
{
err = notification_delete_all_by_type(null, notiType);
- SysLog(NID_APP, "All [%s] notification deleted.", onGoing ? "Ongoing" : "Normal");
- }
-
- switch (err)
- {
- case NOTIFICATION_ERROR_NONE:
- r = E_SUCCESS;
- break;
-
- case NOTIFICATION_ERROR_INVALID_DATA:
- r = E_INVALID_ARG;
- break;
-
- default:
- r = E_SYSTEM;
- break;
+ SysLog(NID_SHELL, "All [%s] notifications deleted.", onGoing ? "Ongoing" : "Normal");
}
+ SysTryReturnResult(NID_SHELL, err == NOTIFICATION_ERROR_NONE, E_OPERATION_FAILED, "Failed to RemoveNotification with reason (%d).", err);
return r;
}
result r = E_SUCCESS;
notification_error_e err = NOTIFICATION_ERROR_NONE;
bool isValidAppId = _Aul::IsInstalled(appId);
- SysTryReturnResult(NID_APP, isValidAppId == true, E_APP_NOT_INSTALLED, "The application %ls is not installed", appId.GetPointer());
+ SysTryReturnResult(NID_SHELL, isValidAppId == true, E_APP_NOT_INSTALLED, "The application %ls is not installed", appId.GetPointer());
std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
const notification_type_e notiType = onGoing ? NOTIFICATION_TYPE_ONGOING : NOTIFICATION_TYPE_NOTI;
- const int notiPrivateId = onGoing ? __notifyPrivitIdForOngoing : __notifyPrivitId;
+ const int notiPrivateId = onGoing ? __notifyPrivateIdForOngoing : __notifyPrivateId;
if (notiPrivateId != -1)
{
if (notiHandle)
{
err = notification_delete(notiHandle);
- SysLog(NID_APP, "Notification deleted.");
+ SysLog(NID_SHELL, "Notification deleted.");
}
else
{
- SysLog(NID_APP, "Notification already deleted.");
+ SysLog(NID_SHELL, "Notification already deleted.");
}
- notification_free(notiHandle);
+ err = notification_free(notiHandle);
}
else
{
err = notification_delete_all_by_type(pAppId.get(), notiType);
- SysLog(NID_APP, "All [%s] notification deleted.", onGoing ? "Ongoing" : "Normal");
- }
-
- switch (err)
- {
- case NOTIFICATION_ERROR_NONE:
- r = E_SUCCESS;
- break;
-
- case NOTIFICATION_ERROR_INVALID_DATA:
- r = E_INVALID_ARG;
- break;
-
- default:
- r = E_SYSTEM;
- break;
+ SysLog(NID_SHELL, "All [%s] notifications deleted.", onGoing ? "Ongoing" : "Normal");
}
+ SysTryReturnResult(NID_SHELL, err == NOTIFICATION_ERROR_NONE, E_OPERATION_FAILED, "Failed to RemoveNotificationByAppId with reason (%d).", err);
return r;
}
-void
+result
_NotificationManagerImpl::RemoveBadge(const char* pkgName) const
{
bool badgeExist = false;
badge_error_e badgeError = badge_is_existing(pkgName, &badgeExist);
- SysLog(NID_APP, "badge_is_existing: exitst= %d, error= %d.", badgeExist, badgeError); //#####
+ SysTryLog(NID_SHELL, badgeError == BADGE_ERROR_NONE, "badge_is_existing failed(%d).", badgeError);
+
if (badgeExist)
{
badgeError = badge_remove(pkgName);
- SysLog(NID_APP, "badge_remove: error= %d.", badgeError); //#####
+ SysTryReturnResult(NID_SHELL, badgeError == BADGE_ERROR_NONE, E_OPERATION_FAILED, "badge_remove failed(%d).", badgeError);
}
- SysLog(NID_APP, "Badge removed.");
+
+ SysLog(NID_SHELL, "Badge is removed.");
+ return E_SUCCESS;
}
-void
+result
_NotificationManagerImpl::SetBadgeCount(const char* pkgName, int badgeCount) const
{
bool badgeExist;
badge_error_e badgeError = badge_is_existing(pkgName, &badgeExist);
- SysLog(NID_APP, "badge_is_existing: error= %d.", badgeError); //#####
+ SysTryLog(NID_SHELL, badgeError == BADGE_ERROR_NONE, "badge_is_existing failed(%d).", badgeError);
+
if (!badgeExist)
{
badgeError = badge_create(pkgName, pkgName);
- SysLog(NID_APP, "badge_create: error= %d.", badgeError); //#####
+ SysTryReturnResult(NID_SHELL, badgeError == BADGE_ERROR_NONE, E_OPERATION_FAILED, "badge_create failed(%d).", badgeError);
}
- badge_set_count(pkgName, badgeCount);
- SysLog(NID_APP, "badge_set_count: badgeNumber= %d.", badgeCount);
+ badgeError = badge_set_count(pkgName, badgeCount);
+ SysTryLog(NID_SHELL, badgeError == BADGE_ERROR_NONE, "badge_set_count failed(%d).", badgeError);
+
+ SysLog(NID_SHELL, "Badge count is %d.", badgeCount);
+ return E_SUCCESS;
}
int
badge_error_e badgeError = badge_get_count(pkgName, &count);
if (badgeError == BADGE_ERROR_NONE)
{
- SysLog(NID_APP, "badge_get_count: ret= %d.", count);
+ SysLog(NID_SHELL, "badge_get_count(%d)", count);
return count;
}
else
{
- SysLog(NID_APP, "badge_get_count: error= %d.", badgeError);
+ SysLog(NID_SHELL, "badge_get_count failed(%d).", badgeError);
return -1;
}
}
+result
+_NotificationManagerImpl::AddBadgeEventListener(IBadgeEventListener& listener)
+{
+ SysTryReturnResult(NID_SHELL, !__badgeEventListenerList.Contains(&listener), E_OBJ_ALREADY_EXIST, "The listener is already added.");
+ SysLog(NID_SHELL, "AddBadgeEventListener (%x)", &listener);
+
+ result r = _BadgeManagerImpl::GetInstance()->AddPrimaryBadgeEventListener(*this);
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to AddPrimaryBadgeEventListener with reason (%s)", GetErrorMessage(r) );
+
+ return __badgeEventListenerList.Add(&listener);
+}
+
+result
+_NotificationManagerImpl::RemoveBadgeEventListener(IBadgeEventListener& listener)
+{
+ SysLog(NID_SHELL, "RemoveBadgeEventListener (%x)", &listener);
+
+ result r = __badgeEventListenerList.Remove(&listener); // Remove() can return E_SUCCESS and E_OBJ_NOT_FOUND.
+ SysTryReturn(NID_SHELL, !IsFailed(r), r, r, "Failed to RemoveBadgeEventListener with reason (%s)", GetErrorMessage(r) );
+
+ return _BadgeManagerImpl::GetInstance()->RemovePrimaryBadgeEventListener(*this);
+}
+
+int
+_NotificationManagerImpl::GetLastNotificationId(void) const
+{
+ return __lastNotifyPrivateId;
+}
+
+const Tizen::Base::String&
+_NotificationManagerImpl::GetLastAppId(void) const
+{
+ return __lastAppId;
+}
+
+void
+_NotificationManagerImpl::OnBadgeUpdated(const Tizen::App::AppId& appId, int badgeNumber)
+{
+ std::unique_ptr<IEnumeratorT<Tizen::Shell::IBadgeEventListener* > > pEnum(__badgeEventListenerList.GetEnumeratorN());
+ SysTryReturnVoidResult(NID_SHELL, pEnum.get(), E_OUT_OF_MEMORY, "Failed to GetEnumeratorN()!");
+
+ IBadgeEventListener* pListener;
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pListener = null;
+ pEnum->GetCurrent(pListener);
+ if( !pListener)
+ {
+ SysLog(NID_SHELL, "pListener is null!");
+ continue;
+ }
+ pListener->OnBadgeUpdated(appId, badgeNumber);
+ }
+}
+
} } // Tizen::Shell