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 view_logic_certificate_origin_support.cpp
18 * @author Leerang Song (leerang.song@samsung.com)
20 * @brief Support certificate dao
23 #include "view_logic_certificate_support.h"
27 #include <Elementary.h>
28 #include <dpl/log/log.h>
29 #include <dpl/log/secure_log.h>
30 #include <dpl/unused.h>
31 #include <dpl/assert.h>
32 #include <dpl/wrt-dao-ro/common_dao_types.h>
33 #include <wrt-commons/certificate-dao/certificate_dao.h>
34 #include <widget_model.h>
35 #include <widget_string.h>
36 #include <common/view_logic_get_parent_window_util.h>
38 namespace ViewModule {
40 const double MAX_POPUP_HEIGHT = 0.80;
41 const double MAX_SCROLLER_HEIGHT = 0.5;
44 Evas_Smart_Cb eaKeyCallback;
47 static void deleteCallback(void* data, Evas* e, Evas_Object* obj, void* eventInfo);
48 static void resizeCallback(void* data, Evas* e, Evas_Object* obj, void* eventInfo);
50 static void deleteCallback(void* data, Evas* e, Evas_Object* obj, void* eventInfo)
54 DPL_UNUSED_PARAM(data);
56 DPL_UNUSED_PARAM(eventInfo);
59 evas_object_event_callback_del(obj, EVAS_CALLBACK_RESIZE, resizeCallback);
61 static void resizeCallback(void* data, Evas* e, Evas_Object* obj, void* eventInfo)
65 DPL_UNUSED_PARAM(data);
67 DPL_UNUSED_PARAM(eventInfo);
70 Evas_Object* popup = obj;
72 evas_object_geometry_get(popup, 0, 0, 0, &popupH);
74 Evas_Object* parent = PopupUtil::getParentWindow(popup);
76 evas_object_geometry_get(parent, 0, 0, &parentW, &parentH);
78 // compare current popup height with screen height.
79 // To avoid popup is filled full screen, used magic number to be filled 80% of screen height.
80 // TODO: Automatically add scroller feature should implement in the elementary
81 double threshold = parentH * MAX_POPUP_HEIGHT;
82 double currentH = popupH;
83 if (threshold < currentH) {
84 _D("text is overflow popup height. add scroller");
85 Evas_Object* layout = elm_object_content_get(obj);
86 Evas_Object* label = elm_object_part_content_get(layout, "elm.swallow.label");
88 Evas_Object* scroller = elm_scroller_add(layout);
89 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_AUTO);
90 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
92 elm_scroller_content_min_limit(scroller, EINA_TRUE, EINA_TRUE);
93 int scrollerHeight = parentW > parentH ? parentH : parentW;
94 evas_object_size_hint_max_set(scroller, -1, scrollerHeight * MAX_SCROLLER_HEIGHT);
96 elm_object_part_content_unset(layout, "elm.swallow.label");
97 elm_object_content_set(scroller, label);
98 elm_object_part_content_set(layout, "elm.swallow.label", scroller);
99 evas_object_show(layout);
104 class CertificateSupportImplementation
107 WidgetModel* m_model;
108 CertificateDB::CertificateDAOPtr m_certificateDAO;
111 CertificateSupportImplementation(WidgetModel* widgetModel) :
115 m_model = widgetModel;
118 ~CertificateSupportImplementation()
121 CertificateDB::CertificateDAO* getCertificateDAO(void)
124 if (!m_certificateDAO) {
125 LogDebug("initialize CertificateDAO");
127 CertificateDB::CertificateDAOPtr(
128 new CertificateDB::CertificateDAO(m_model->TzPkgId.
130 // initialize certificate result data. Remove allow, deny for
131 m_certificateDAO->removeCertificateData(
132 CertificateDB::RESULT_ALLOW_ONCE);
133 m_certificateDAO->removeCertificateData(
134 CertificateDB::RESULT_DENY_ONCE);
136 return m_certificateDAO.get();
140 CertificateSupport::CertificateSupport(WidgetModel* widgetModel) :
141 m_impl(new CertificateSupportImplementation(widgetModel))
144 CertificateSupport::~CertificateSupport()
147 CertificateDB::CertificateDAO* CertificateSupport::
148 getCertificateDAO(void)
150 return m_impl->getCertificateDAO();
153 Evas_Object* CertificateSupportUtil::createPopup(
155 const char* bodyText,
156 const char* checkText,
161 LogDebug("createPopup");
163 Evas_Object* parentWindow = PopupUtil::getParentWindow(window);
164 Evas_Object* popup = elm_popup_add(parentWindow);
166 evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, deleteCallback, NULL);
167 evas_object_event_callback_add(popup, EVAS_CALLBACK_RESIZE, resizeCallback, NULL);
169 elm_object_style_set(popup, "popup/default");
170 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
171 evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
173 Evas_Object* layout = elm_layout_add(popup);
174 elm_layout_file_set(layout, WRT_EDJ_PATH, "popupWithCheck");
175 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
176 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
178 Evas_Object* label = elm_label_add(popup);
179 elm_label_line_wrap_set(label, ELM_WRAP_WORD);
180 elm_object_text_set(label, bodyText);
181 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
182 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
184 Evas_Object* check = elm_check_add(layout);
185 elm_object_text_set(check, checkText);
187 elm_object_part_content_set(layout, "elm.swallow.label", label);
188 elm_object_part_content_set(layout, "elm.swallow.checkbox", check);
189 elm_object_content_set(popup, layout);
191 Evas_Object* btn1 = elm_button_add(popup);
192 elm_object_text_set(btn1, WRT_OPT_ALLOW);
193 elm_object_part_content_set(popup, "button1", btn1);
194 evas_object_smart_callback_add(btn1, "clicked", buttonCallback, data);
195 Evas_Object* btn2 = elm_button_add(popup);
196 elm_object_text_set(btn2, WRT_SK_CANCEL);
197 elm_object_part_content_set(popup, "button2", btn2);
198 evas_object_smart_callback_add(btn2, "clicked", buttonCallback, data);
203 Evas_Object* CertificateSupportUtil::getPopup(Evas_Object* button)
207 Evas_Object* popup = button;
208 while (strcmp(elm_object_widget_type_get(popup), "elm_popup")) {
209 popup = elm_object_parent_widget_get(popup);
217 Evas_Object* CertificateSupportUtil::getCheck(Evas_Object* popup)
220 if (strcmp(elm_object_widget_type_get(popup), "elm_popup")) {
223 Evas_Object* check = elm_object_part_content_get(
224 elm_object_content_get(popup),
225 "elm.swallow.checkbox");
229 CertificateDB::Result CertificateSupportUtil::getResult(
232 using namespace CertificateDB;
235 // get popup evas_object
236 Evas_Object* popup = getPopup(button);
238 return RESULT_UNKNOWN;
240 bool allow = !strcmp(WRT_OPT_ALLOW, elm_object_text_get(button));
242 // get check evas_object
243 Evas_Object* check = getCheck(popup);
245 return RESULT_UNKNOWN;
248 return elm_check_state_get(check) ? RESULT_ALLOW_ALWAYS :
251 return elm_check_state_get(check) ? RESULT_DENY_ALWAYS :
255 } // namespace ViewModule