2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * @file SettingsLogic.cpp
20 * @author Tomasz Swierczek (t.swierczek@samsung.com)
22 * @brief SettingsLogic implementation
25 #include <ace/SettingsLogic.h>
27 #include <dpl/log/log.h>
28 #include <dpl/foreach.h>
30 #include <ace/Preference.h>
32 using namespace AceDB;
34 Preference SettingsLogic::findGlobalUserSettings(
35 const std::string &resource,
38 Preference p = AceDAO::getWidgetDevCapSetting(resource, handler);
39 if (PreferenceTypes::PREFERENCE_DEFAULT == p) {
40 return AceDAO::getDevCapSetting(resource);
46 Preference SettingsLogic::findGlobalUserSettings(
47 const Request &request)
49 Request::DeviceCapabilitySet devset = request.getDeviceCapabilitySet();
50 Assert(!devset.empty() && "No device cap set in request");
51 return findGlobalUserSettings(
53 request.getWidgetHandle());
56 Preference SettingsLogic::getDevCapSetting(const std::string &resource)
58 return AceDAO::getDevCapSetting(resource);
61 void SettingsLogic::getDevCapSettings(PreferenceMap *globalSettingsMap)
63 AceDAO::getDevCapSettings(globalSettingsMap); // NULL check inside
67 void SettingsLogic::setDevCapSetting(const std::string &resource,
68 Preference preference)
70 if (resource.empty()) {
71 LogInfo("WARNING: setting resource settings for empty resource name");
74 AceDAO::addResource(resource);
76 if (preference == PreferenceTypes::PREFERENCE_DEFAULT) {
80 Assert((PreferenceTypes::PREFERENCE_PERMIT == preference ||
81 PreferenceTypes::PREFERENCE_DENY == preference ||
82 PreferenceTypes::PREFERENCE_BLANKET_PROMPT == preference ||
83 PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT == preference ||
84 PreferenceTypes::PREFERENCE_SESSION_PROMPT == preference));
86 AceDAO::setDevCapSetting(resource,preference);
89 void SettingsLogic::setAllDevCapSettings(
90 const std::list < std::pair < const std::string*,
91 Preference > > &resourcesList)
93 std::list < std::pair < const std::string*,
94 Preference > >::const_iterator iter;
95 for (iter = resourcesList.begin(); iter != resourcesList.end(); ++iter) {
96 SettingsLogic::setDevCapSetting(*(iter->first), iter->second);
100 void SettingsLogic::removeDevCapSetting(const std::string &resource)
102 AceDAO::removeDevCapSetting(resource);
105 void SettingsLogic::updateDevCapSetting(const std::string &resource,
108 if (PreferenceTypes::PREFERENCE_DEFAULT == p) {
109 SettingsLogic::removeDevCapSetting(resource);
111 SettingsLogic::setDevCapSetting(resource, p);
115 Preference SettingsLogic::getWidgetDevCapSetting(
116 const std::string &resource,
117 WidgetHandle handler)
119 return AceDAO::getWidgetDevCapSetting(resource, handler);
122 void SettingsLogic::getWidgetDevCapSettings(PermissionList *outputList)
124 AceDAO::getWidgetDevCapSettings(outputList); // NULL check inside
128 void SettingsLogic::setWidgetDevCapSetting(
129 const std::string &resource,
130 WidgetHandle handler,
131 Preference preference)
133 if (resource.empty()) {
134 LogError("Empty resource");
138 LogDebug("userSetting, resource: " << resource <<
139 " app_id: " << handler);
141 AceDAO::addResource(resource);
142 SettingsLogic::removeWidgetDevCapSetting(resource, handler);
144 if (PreferenceTypes::PREFERENCE_DEFAULT == preference) {
148 Assert((PreferenceTypes::PREFERENCE_PERMIT == preference ||
149 PreferenceTypes::PREFERENCE_DENY == preference ||
150 PreferenceTypes::PREFERENCE_BLANKET_PROMPT == preference ||
151 PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT == preference ||
152 PreferenceTypes::PREFERENCE_SESSION_PROMPT == preference));
154 AceDAO::setWidgetDevCapSetting(resource, handler, preference);
158 void SettingsLogic::setWidgetDevCapSettings(const PermissionList &permissionsList)
160 FOREACH(i, permissionsList) {
161 SettingsLogic::setWidgetDevCapSetting(i->devCap,
168 void SettingsLogic::removeWidgetDevCapSetting(const std::string &resource,
169 WidgetHandle handler)
171 AceDAO::removeWidgetDevCapSetting(resource, handler);