4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
27 #include <appcore-efl.h>
30 #include "native_installer_util.h"
31 #include "nativeinstaller.h"
33 #define DESKTOP_W 720.0
35 extern struct appdata ad;
36 extern struct frontenddata frontdata;
39 static void __response_cb(void *data, Evas_Object * obj, void *event);
40 static void __win_del(void *data, Evas_Object * obj, void *event);
41 static Eina_Bool __perform_downgrade(void *data);
43 void _information_popup(Evas_Smart_Cb func, const char *output,
48 evas_object_show(ad.win_main);
49 Evas_Object *popup = NULL;
50 popup = elm_popup_add(ad.win_main);
53 elm_object_part_text_set(popup, dgettext("sys_string",
54 "IDS_COM_BODY_INFORMATION"), NULL);
55 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
57 elm_object_text_set(popup, output);
59 Evas_Object *button = NULL;
60 button = elm_button_add(popup);
61 elm_object_text_set(button, dgettext("sys_string", "IDS_COM_SK_OK"));
62 elm_object_part_content_set(popup, "button1", button);
64 evas_object_smart_callback_add(button, "clicked", func, user_param);
65 evas_object_show(popup);
68 void _package_downgrade_popup(Evas_Smart_Cb func1, Evas_Smart_Cb func2,
69 const char *output, void *user_param)
72 d_msg_frontend(DEBUG_ERR, "Main Window NULL\n");
75 evas_object_show(ad.win_main);
77 Evas_Object *popup = NULL;
78 popup = elm_popup_add(ad.win_main);
80 d_msg_frontend(DEBUG_ERR, "Add Popup Fail\n");
83 elm_object_part_text_set(popup,
84 dgettext("sys_string", "IDS_COM_BODY_INFORMATION"), NULL);
85 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
87 elm_object_text_set(popup, output);
89 Evas_Object *button1 = NULL;
90 Evas_Object *button2 = NULL;
92 button1 = elm_button_add(popup);
93 elm_object_text_set(button1, dgettext("sys_string", "IDS_COM_SK_YES"));
94 elm_object_part_content_set(popup, "button1", button1);
95 evas_object_smart_callback_add(button1, "clicked", func1, user_param);
97 button2 = elm_button_add(popup);
98 elm_object_text_set(button2, dgettext("sys_string", "IDS_COM_SK_NO"));
99 elm_object_part_content_set(popup, "button2", button2);
100 evas_object_smart_callback_add(button2, "clicked", func2, user_param);
102 evas_object_show(popup);
105 static void __win_del(void *data, Evas_Object * obj, void *event)
110 static Eina_Bool __perform_downgrade(void *data)
113 ret = _pkgmgr_package_install(frontdata.cmdlineargs->ppkgname,
117 _error_no_to_string(ret, &errstr);
118 _broadcast_status_notification(frontdata.cmdlineargs->ppkgname,
120 stat_cb(frontdata.cmdlineargs->ppkgname, "error", errstr);
121 _broadcast_status_notification(frontdata.cmdlineargs->ppkgname,
123 stat_cb(frontdata.cmdlineargs->ppkgname, "end", "fail");
124 d_msg_backend(DEBUG_ERR,
125 "install failed with err(%d) (%s)\n",
128 d_msg_backend(DEBUG_INFO, "install success\n");
129 _broadcast_status_notification(frontdata.cmdlineargs->ppkgname,
131 stat_cb(frontdata.cmdlineargs->ppkgname, "end", "ok");
133 _set_backend_state_info(REQUEST_COMPLETED);
134 _set_backend_state(1);
138 static void __response_cb1(void *data, Evas_Object * obj, void *event)
140 printf("\nresponse callback=%d\n", (int)event);
141 Ecore_Idler *handle = NULL;
142 int response = (int)event;
145 handle = ecore_idler_add(__perform_downgrade, NULL);
146 d_msg_frontend(DEBUG_INFO, "doUpgrade is %d\n", do_upgrade);
147 evas_object_del(obj);
151 static void __response_cb2(void *data, Evas_Object * obj, void *event)
153 printf("\nresponse callback=%d\n", (int)event);
154 Ecore_Idler *handle = NULL;
157 handle = ecore_idler_add(__perform_downgrade, NULL);
158 evas_object_del(obj);
159 d_msg_frontend(DEBUG_INFO, "doUpgrade is %d\n", do_upgrade);
163 Eina_Bool _init_appdata(struct appdata *user_data)
165 unsigned char *prop_data = NULL;
172 user_data->win_main = elm_win_add(NULL, PACKAGE, ELM_WIN_DIALOG_BASIC);
173 if (!user_data->win_main)
176 elm_win_title_set(user_data->win_main, PACKAGE);
177 elm_win_alpha_set(user_data->win_main, EINA_TRUE);
178 elm_win_borderless_set(user_data->win_main, EINA_TRUE);
179 elm_win_raise(user_data->win_main);
180 ecore_x_window_geometry_get(ecore_x_window_root_get
181 (ecore_x_window_focus_get()), &x, &y, &w,
184 ecore_x_window_prop_property_get(ecore_x_window_root_get
185 (ecore_x_window_focus_get()),
186 ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
187 ECORE_X_ATOM_CARDINAL, 32,
189 if (ret && prop_data)
190 memcpy(&rotation, prop_data, sizeof(int));
193 evas_object_resize(user_data->win_main, w, h);
194 evas_object_move(user_data->win_main, x, y);
195 /*evas_object_show(user_data->win_main); */
196 evas_object_smart_callback_add(user_data->win_main, "delete,request",
198 elm_win_indicator_mode_set(user_data->win_main, ELM_WIN_INDICATOR_SHOW);
202 elm_config_scale_set(s);
204 /*evas_object_geometry_get(user_data->win_main, NULL,
205 NULL, &user_data->root_w, &user_data->root_h); */
207 user_data->evas = evas_object_evas_get(user_data->win_main);
208 if (!user_data->evas)
214 Eina_Bool _init_home_view(struct appdata *user_data)
220 void _destroy_home_view(struct appdata *user_data)
226 evas_object_del(user_data->main_view);
229 int _frontend_launch_main_view(struct appdata *data)
232 if (!_init_appdata(data)) {
233 printf("ERROR: fail create window\n");
236 /*ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, keydown_event, NULL); */
238 if (!_init_home_view(data)) {
239 printf("ERROR: fail create home view\n");
246 void _frontend_update_progress_info(struct appdata *data, char *progressinfo)
248 elm_object_text_set(data->scrollbar_label, progressinfo);
249 _information_popup(__win_del, progressinfo, data);
252 void _package_downgrade_information(const char *message)
254 _package_downgrade_popup(__response_cb1, __response_cb2, message, &ad);