From: Ryszard Matuszyk Date: Tue, 17 Mar 2015 12:11:44 +0000 (+0100) Subject: [Notification] getAll X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~278 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6e7426eb4cdea828645b1743cf9ca06a6001c768;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Notification] getAll [Verification] Build required Change-Id: I2512e66dca6082a791710afef020b6c686cc578f Signed-off-by: Ryszard Matuszyk --- diff --git a/src/notification/notification_manager.cc b/src/notification/notification_manager.cc index ce50be1c..de95488a 100644 --- a/src/notification/notification_manager.cc +++ b/src/notification/notification_manager.cc @@ -9,6 +9,7 @@ #include "common/converter.h" #include "common/logger.h" +#include "common/scope_exit.h" #include "notification/status_notification.h" @@ -80,6 +81,52 @@ PlatformResult NotificationManager::Get(const picojson::object& args, } PlatformResult NotificationManager::GetAll(picojson::array& out) { + notification_h noti = nullptr; + notification_list_h noti_list = nullptr; + notification_list_h noti_list_iter = nullptr; + + int ret = + notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list); + if (ret != NOTIFICATION_ERROR_NONE) { + LoggerD("Get notification list error: %d", ret); + return PlatformResult(ErrorCode::UNKNOWN_ERR, + "Get notification list error"); + } + + SCOPE_EXIT { + notification_free_list(noti_list); + }; + + noti_list_iter = notification_list_get_head(noti_list); + + while (noti_list_iter != nullptr) { + noti = notification_list_get_data(noti_list_iter); + if (noti != nullptr) { + int noti_priv = -1; + ret = notification_get_id(noti, NULL, ¬i_priv); + if (ret != NOTIFICATION_ERROR_NONE) { + LoggerE("Cannot get notification id, error: %d", ret); + return PlatformResult(ErrorCode::UNKNOWN_ERR, + "Cannot get notification id error"); + } + + app_control_h app_control; + PlatformResult status = + StatusNotification::GetAppControl(noti, &app_control); + if (status.IsError()) return status; + + picojson::object noti_item = picojson::object(); + + status = + StatusNotification::ToJson(noti_priv, noti, app_control, ¬i_item); + if (status.IsError()) return status; + + out.push_back(picojson::value(noti_item)); + } + + noti_list_iter = notification_list_get_next(noti_list_iter); + } + return PlatformResult(ErrorCode::NO_ERROR); }