4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.tizenopensource.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include <tethering.h>
21 #include <efl_assist.h>
25 #include "i18nmanager.h"
26 #include "common_utils.h"
27 #include "winset_popup.h"
28 #include "wlan_manager.h"
29 #include "viewer_manager.h"
31 struct popup_manager_object {
32 /* General popup attributes */
34 Evas_Object *popup_user_prompt;
36 void *tethering_handle;
40 static void __wifi_tethering_deactivated_cb(tethering_error_e error,
41 tethering_type_e type, tethering_disabled_cause_e code, void *data)
43 __COMMON_FUNC_ENTER__;
46 popup_manager_object_t *manager_object = (popup_manager_object_t *)data;
47 tethering_h handle = (tethering_h)manager_object->tethering_handle;
48 tethering_destroy(handle);
49 manager_object->tethering_handle = NULL;
52 if (error != TETHERING_ERROR_NONE) {
53 INFO_LOG(COMMON_NAME_LIB, "Error occurred [%d]\n", error);
54 viewer_manager_header_mode_set(HEADER_MODE_OFF);
56 INFO_LOG(COMMON_NAME_LIB, "TYPE = %d", type);
57 if (type == TETHERING_TYPE_WIFI ||
58 type == TETHERING_TYPE_RESERVED) {
59 INFO_LOG(COMMON_NAME_LIB, "OK\n");
60 /* Tethering is now disabled. All OK to switch on Wi-Fi */
63 viewer_manager_header_mode_set(HEADER_MODE_OFF);
70 static gboolean __wifi_tethering_deativate(popup_manager_object_t *manager_object)
72 __COMMON_FUNC_ENTER__;
74 tethering_error_e ret = TETHERING_ERROR_NONE;
75 tethering_h handle = NULL;
77 if (manager_object == NULL) {
78 INFO_LOG(COMMON_NAME_LIB, "popup manager_object is NULL \n", ret);
82 if (manager_object->tethering_handle) {
83 tethering_destroy(manager_object->tethering_handle);
84 manager_object->tethering_handle = NULL;
87 ret = tethering_create(&handle);
88 if (ret != TETHERING_ERROR_NONE) {
89 INFO_LOG(COMMON_NAME_LIB, "Failed to tethering_create() [%d]\n", ret);
93 manager_object->tethering_handle = handle;
94 ret = tethering_set_disabled_cb(handle, manager_object->type, __wifi_tethering_deactivated_cb, manager_object);
95 if (ret != TETHERING_ERROR_NONE) {
96 INFO_LOG(COMMON_NAME_LIB, "Failed to tethering_set_disabled_cb() [%d]\n", ret);
100 ret = tethering_disable(handle, manager_object->type);
101 if (ret != TETHERING_ERROR_NONE) {
102 INFO_LOG(COMMON_NAME_LIB, "Failed to tethering_disable() [%d]\n", ret);
106 __COMMON_FUNC_EXIT__;
110 tethering_destroy(handle);
111 manager_object->tethering_handle = NULL;
113 __COMMON_FUNC_EXIT__;
117 static void __wifi_tethering_off_ok_cb(void* data, Evas_Object* obj,
120 __COMMON_FUNC_ENTER__;
122 popup_manager_object_t *manager_object = (popup_manager_object_t *)data;
123 if (manager_object == NULL) {
127 INFO_LOG(UG_NAME_NORMAL, "Response OK");
128 if (manager_object && NULL != manager_object->popup_user_prompt) {
129 evas_object_hide(manager_object->popup_user_prompt);
130 evas_object_del(manager_object->popup_user_prompt);
131 manager_object->popup_user_prompt = NULL;
134 if (manager_object->type == TETHERING_TYPE_WIFI ||
135 manager_object->type == TETHERING_TYPE_RESERVED) {
136 if (FALSE != __wifi_tethering_deativate(manager_object)) {
137 INFO_LOG(UG_NAME_NORMAL, "Successfully de-activate Wi-Fi tethering");
139 viewer_manager_header_mode_set(HEADER_MODE_ACTIVATING);
141 INFO_LOG(UG_NAME_NORMAL, "Fail to de-activate Wi-Fi tethering");
145 __COMMON_FUNC_EXIT__;
148 static void __wifi_tethering_off_no_cb(void* data, Evas_Object* obj,
151 __COMMON_FUNC_ENTER__;
153 popup_manager_object_t *manager_object = (popup_manager_object_t *)data;
155 INFO_LOG(UG_NAME_NORMAL, "Response CANCEL");
157 if (manager_object && NULL != manager_object->popup_user_prompt) {
158 evas_object_hide(manager_object->popup_user_prompt);
159 evas_object_del(manager_object->popup_user_prompt);
160 manager_object->popup_user_prompt = NULL;
161 viewer_manager_header_mode_set(HEADER_MODE_OFF);
164 __COMMON_FUNC_EXIT__;
167 popup_manager_object_t *winset_popup_manager_create(Evas_Object* win,
168 const char *str_pkg_name)
170 popup_manager_object_t *manager_object;
171 manager_object = g_new0(popup_manager_object_t, 1);
172 manager_object->win = win;
173 manager_object->str_pkg_name = (char *)str_pkg_name;
174 manager_object->tethering_handle = NULL;
175 manager_object->type = 0;
177 return manager_object;
180 void winset_popup_mode_set(popup_manager_object_t *manager_object,
181 POPUP_MODE_OPTIONS option, void *input_data)
183 __COMMON_FUNC_ENTER__;
185 popup_btn_info_t popup_btn_data;
187 if (manager_object == NULL) {
191 if (manager_object->tethering_handle) {
192 tethering_destroy(manager_object->tethering_handle);
193 manager_object->tethering_handle = NULL;
196 INFO_LOG(UG_NAME_NORMAL, "option = %d", option);
198 memset(&popup_btn_data, 0, sizeof(popup_btn_data));
201 case POPUP_OPTION_POWER_ON_FAILED_TETHERING_OCCUPIED:
202 case POPUP_OPTION_POWER_ON_FAILED_TETHERING_AP_OCCUPIED:
203 if (NULL != manager_object->popup_user_prompt) {
207 if(option == POPUP_OPTION_POWER_ON_FAILED_TETHERING_OCCUPIED)
208 manager_object->type = TETHERING_TYPE_WIFI;
210 manager_object->type = TETHERING_TYPE_RESERVED;
211 popup_btn_data.title_txt = "IDS_WIFI_BODY_WI_FI";
212 popup_btn_data.info_txt = "IDS_ST_POP_TURNING_ON_WI_FI_WILL_DISABLE_WI_FI_TETHERING";
213 popup_btn_data.btn1_txt = "IDS_WIFI_SK_CANCEL";
214 popup_btn_data.btn1_cb = __wifi_tethering_off_no_cb;
215 popup_btn_data.btn1_data = popup_btn_data.btn2_data = manager_object;
216 popup_btn_data.btn2_txt = "IDS_WIFI_SK2_OK";
217 popup_btn_data.btn2_cb = __wifi_tethering_off_ok_cb;
218 manager_object->popup_user_prompt =
219 common_utils_show_info_popup(manager_object->win, &popup_btn_data);
227 __COMMON_FUNC_EXIT__;
230 gboolean winset_popup_manager_destroy(popup_manager_object_t *manager_object)
232 if (manager_object == NULL) {
236 if (manager_object->tethering_handle) {
237 tethering_destroy(manager_object->tethering_handle);
238 manager_object->tethering_handle = NULL;
241 g_free(manager_object);
246 gboolean winset_popup_hide_popup(popup_manager_object_t *manager_object)
248 if (manager_object == NULL) {
252 if (manager_object->popup_user_prompt != NULL) {
253 evas_object_hide(manager_object->popup_user_prompt);
254 evas_object_del(manager_object->popup_user_prompt);
255 manager_object->popup_user_prompt = NULL;