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 widget_install_popup.cpp
18 * @author lke01.lee (lke01.lee@samsung.com)
20 * @brief Implementation file for installer popup
22 #include <dpl/log/log.h>
23 #include <widget_install/job_widget_install.h>
24 #include <widget_install/widget_install_errors.h>
25 #include <widget_install/widget_install_context.h>
26 #include <widget_install_popup.h>
29 const char * const EDJFILE ="/usr/share/edje/wrt/widget_install_popup.edj";
30 const char * const EDJGROUP = "widget_install_popup";
31 const char * const TITLE_TEXT ="title,text";
32 const char * const name ="WidgetInstallPopup";
33 const char * const FEATURE_TITLE = "Widget Feature Info";
34 const char * const INFO_TITLE = "Widget Info";
35 const char * const INSTALLATION_FAILURE = "Installation failure";
36 const char * const INFO_LEFT_BUTTON ="OK";
37 const char * const INFO_RIGHT_BUTTON = "CANCEL ";
38 const char * const WARNING_TITLE = "Widget Warning";
39 const char * const WARNING_LEFT_BUTTON = "YES";
40 const char * const WARNING_RIGHT_BUTTON = "NO";
41 const char * const QUESTION ="Widget use Device API below. <br>Do you want to install?";
45 namespace WidgetInstall {
46 WidgetInstallPopup::WidgetInstallPopup(InstallerContext &installContext) :
49 m_installContext(installContext),
50 m_installCancel(WRT_POPUP_BUTTON)
52 LogDebug("InstallPopup");
55 WidgetInstallPopup::~WidgetInstallPopup()
57 LogDebug("~InstallPopup");
60 bool WidgetInstallPopup::addWin(const char *name)
63 m_win = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
66 LogError("addWin failed");
70 elm_win_alpha_set(m_win, EINA_TRUE);
71 elm_win_title_set(m_win, name);
72 elm_win_borderless_set(m_win, EINA_TRUE);
75 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
76 evas_object_resize(m_win, w, h);
80 bool WidgetInstallPopup::addPopup()
82 m_popup = elm_popup_add(m_win);
86 evas_object_size_hint_align_set(m_popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
87 evas_object_size_hint_weight_set(m_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91 void WidgetInstallPopup::addTitle(PopupType type)
94 case PopupType::WIDGET_FEATURE_INFO :
95 elm_object_part_text_set(m_popup, TITLE_TEXT, FEATURE_TITLE);
97 case PopupType::WIDGET_AUTHOR_INFO :
98 elm_object_part_text_set(m_popup, TITLE_TEXT, INFO_TITLE);
100 case PopupType::WIDGET_MIN_VERSION :
101 case PopupType::WIDGET_UNRECOGNIZED :
102 elm_object_part_text_set(m_popup, TITLE_TEXT, WARNING_TITLE);
104 case PopupType::WIDGET_WRONG_FEATURE_INFO :
105 elm_object_part_text_set(m_popup, TITLE_TEXT, INSTALLATION_FAILURE);
112 void WidgetInstallPopup::addScrollLabel(const std::string &str)
114 Evas_Object *ly = elm_layout_add(m_popup);
117 LogError(" install popup layout add failed");
120 elm_layout_file_set(ly, EDJFILE, "popup");
121 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
122 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
123 evas_object_show(ly);
124 elm_object_content_set(m_popup, ly);
126 Evas_Object *question_label = elm_label_add(m_popup);
129 evas_object_size_hint_align_set(question_label, EVAS_HINT_FILL, EVAS_HINT_FILL);
130 evas_object_size_hint_weight_set(question_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
131 evas_object_show(question_label);
132 elm_object_text_set(question_label, QUESTION);
133 elm_object_part_content_set(ly, "elm.swallow.label", question_label);
135 Evas_Object *scroller = elm_scroller_add(m_popup);
138 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
139 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
140 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
141 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
143 elm_object_part_content_set(ly, "elm.swallow.scroller", scroller);
144 evas_object_show(scroller);
146 Evas_Object *feature_label = elm_label_add(m_popup);
149 evas_object_size_hint_align_set(feature_label, EVAS_HINT_FILL, EVAS_HINT_FILL);
150 evas_object_size_hint_weight_set(feature_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
151 evas_object_show(feature_label);
152 elm_object_text_set(feature_label, str.c_str());
153 elm_object_content_set(scroller, feature_label);
156 void WidgetInstallPopup::addContent(PopupType type, const std::string &str)
159 case PopupType::WIDGET_FEATURE_INFO :
163 elm_object_part_text_set(m_popup, "default", str.c_str());
168 void WidgetInstallPopup::addButton(PopupType type)
170 Evas_Object *lbutton = elm_button_add(m_popup);
171 Evas_Object *rbutton = elm_button_add(m_popup);
172 if(!lbutton || !rbutton)
176 case PopupType::WIDGET_WRONG_FEATURE_INFO :
177 elm_object_text_set(lbutton, INFO_LEFT_BUTTON);
178 elm_object_part_content_set(m_popup, "button1", lbutton);
179 evas_object_smart_callback_add(lbutton,
184 case PopupType::WIDGET_FEATURE_INFO :
185 elm_object_text_set(lbutton, INFO_LEFT_BUTTON);
186 elm_object_text_set(rbutton, INFO_RIGHT_BUTTON);
189 elm_object_text_set(lbutton, WARNING_LEFT_BUTTON);
190 elm_object_text_set(rbutton, WARNING_RIGHT_BUTTON);
194 elm_object_part_content_set(m_popup, "button1", lbutton);
195 evas_object_smart_callback_add(lbutton,
199 elm_object_part_content_set(m_popup, "button2", rbutton);
200 evas_object_smart_callback_add(rbutton,
206 bool WidgetInstallPopup::createPopup()
208 bool ret = addWin(name);
211 evas_object_show(m_win);
216 evas_object_del(m_win);
224 void WidgetInstallPopup::destroyPopup()
227 evas_object_del(m_win);
233 void WidgetInstallPopup::loadPopup(PopupType type, const std::string &label)
236 addContent(type, label);
240 void WidgetInstallPopup::showPopup()
242 evas_object_show(m_popup);
245 void WidgetInstallPopup::userPermitCallback(void * data,
246 Evas_Object */*obj*/,
247 void */*event_info*/)
249 WidgetInstallPopup *This = static_cast<WidgetInstallPopup *>(data);
250 This->m_installCancel = WRT_POPUP_BUTTON_OK;
251 This->m_installContext.job->Resume();
254 void WidgetInstallPopup::userCancelCallback(void *data,
255 Evas_Object */*obj*/,
256 void */*event_info*/)
258 WidgetInstallPopup *This = static_cast<WidgetInstallPopup *>(data);
259 This->m_installCancel = WRT_POPUP_BUTTON_CANCEL;
260 This->m_installContext.job->Resume();