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.
17 * @file ace_api_settings.cpp
18 * @author Tomasz Swierczek (t.swierczek@samsung.com)
20 * @brief This file contains implementation ACE settings API
24 #include <dpl/log/log.h>
25 #include <ace-dao-rw/AceDAO.h>
27 #include "ace_api_settings.h"
30 static ace_preference_t to_ace_preference(const AceDB::PreferenceTypes& db_preference)
32 switch (db_preference) {
33 case AceDB::PreferenceTypes::PREFERENCE_BLANKET_PROMPT: {
34 return ACE_PREFERENCE_BLANKET_PROMPT; }
35 case AceDB::PreferenceTypes::PREFERENCE_DEFAULT: {
36 return ACE_PREFERENCE_DEFAULT;}
37 case AceDB::PreferenceTypes::PREFERENCE_DENY: {
38 return ACE_PREFERENCE_DENY;}
39 case AceDB::PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT: {
40 return ACE_PREFERENCE_ONE_SHOT_PROMPT;}
41 case AceDB::PreferenceTypes::PREFERENCE_PERMIT: {
42 return ACE_PREFERENCE_PERMIT;}
43 case AceDB::PreferenceTypes::PREFERENCE_SESSION_PROMPT: {
44 return ACE_PREFERENCE_SESSION_PROMPT;}
46 return ACE_PREFERENCE_DEFAULT;}
51 static AceDB::PreferenceTypes to_ace_db_preference(const ace_preference_t& preference)
54 case ACE_PREFERENCE_BLANKET_PROMPT: {
55 return AceDB::PreferenceTypes::PREFERENCE_BLANKET_PROMPT; }
56 case ACE_PREFERENCE_DEFAULT: {
57 return AceDB::PreferenceTypes::PREFERENCE_DEFAULT;}
58 case ACE_PREFERENCE_DENY: {
59 return AceDB::PreferenceTypes::PREFERENCE_DENY;}
60 case ACE_PREFERENCE_ONE_SHOT_PROMPT: {
61 return AceDB::PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT;}
62 case ACE_PREFERENCE_PERMIT: {
63 return AceDB::PreferenceTypes::PREFERENCE_PERMIT;}
64 case ACE_PREFERENCE_SESSION_PROMPT: {
65 return AceDB::PreferenceTypes::PREFERENCE_SESSION_PROMPT;}
67 return AceDB::PreferenceTypes::PREFERENCE_DEFAULT;}
71 ace_return_t ace_settings_initialize(void)
73 AceDB::AceDAO::attachToThreadRW();
77 ace_return_t ace_settings_shutdown(void)
79 AceDB::AceDAO::detachFromThread();
83 ace_return_t ace_get_widget_resource_preference(ace_widget_handle_t handle,
84 const ace_resource_t resource,
85 ace_preference_t* preference)
87 if (NULL == resource || NULL == preference) {
88 LogError("NULL argument(s) passed");
89 return ACE_INVALID_ARGUMENTS;
92 std::string resource_str(resource);
93 AceDB::PreferenceTypes db_preference =
94 AceDB::AceDAO::getWidgetDevCapSetting(resource_str, handle);
95 *preference = to_ace_preference(db_preference);
96 } Catch(AceDB::AceDAOReadOnly::Exception::DatabaseError) {
97 return ACE_INTERNAL_ERROR;
102 ace_return_t ace_get_global_resource_preference(const ace_resource_t resource,
103 ace_preference_t* preference)
105 if (NULL == resource || NULL == preference) {
106 LogError("NULL argument(s) passed");
107 return ACE_INVALID_ARGUMENTS;
110 AceDB::PreferenceTypes db_preference =
111 AceDB::AceDAO::getDevCapSetting(resource);
112 *preference = to_ace_preference(db_preference);
113 } Catch(AceDB::AceDAOReadOnly::Exception::DatabaseError) {
114 return ACE_INTERNAL_ERROR;
119 ace_return_t ace_set_widget_resource_preference(ace_widget_handle_t handle,
120 const ace_resource_t resource,
121 ace_preference_t preference)
123 if (NULL == resource) {
124 LogError("NULL argument passed");
125 return ACE_INVALID_ARGUMENTS;
128 AceDB::AceDAO::addResource(resource);
129 AceDB::PreferenceTypes db_preference = to_ace_db_preference(preference);
130 AceDB::AceDAO::removeWidgetDevCapSetting(resource, handle);
131 AceDB::AceDAO::setWidgetDevCapSetting(resource, handle, db_preference);
132 } Catch(AceDB::AceDAO::Exception::DatabaseError) {
133 return ACE_INTERNAL_ERROR;
138 ace_return_t ace_set_global_resource_preference(const ace_resource_t resource,
139 ace_preference_t preference)
141 if (NULL == resource) {
142 LogError("NULL argument passed");
143 return ACE_INVALID_ARGUMENTS;
146 AceDB::AceDAO::addResource(resource);
147 AceDB::PreferenceTypes db_preference = to_ace_db_preference(preference);
148 AceDB::AceDAO::setDevCapSetting(resource, db_preference);
149 } Catch(AceDB::AceDAO::Exception::DatabaseError) {
150 return ACE_INTERNAL_ERROR;
155 ace_return_t ace_reset_widget_resource_settings()
158 AceDB::AceDAO::clearWidgetDevCapSettings();
159 } Catch(AceDB::AceDAO::Exception::DatabaseError) {
160 return ACE_INTERNAL_ERROR;
165 ace_return_t ace_reset_global_resource_settings(void)
168 AceDB::AceDAO::clearDevCapSettings();
169 } Catch(AceDB::AceDAO::Exception::DatabaseError) {
170 return ACE_INTERNAL_ERROR;
175 ace_return_t ace_is_private_api(const ace_resource_t resource_name, ace_bool_t* is_private_api)
177 static const char * const private_api[] = {
195 *is_private_api = ACE_TRUE;
196 for (int i=0; private_api[i]; ++i)
197 if (!strcmp(resource_name, private_api[i]))
200 *is_private_api = ACE_FALSE;