2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.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.tizenopensource.org/license
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.
18 * This file implements Wi-Fi direct UI Gadget.
21 * @author Gibyoung Kim (lastkgb.kim@samsung.com)
27 #define UG_MODULE_API __attribute__ ((visibility("default")))
33 #include <sys/utsname.h>
35 #include <Elementary.h>
36 #include <ui-gadget-module.h>
37 #include <wifi-direct.h>
40 #include "wfd_ug_view.h"
41 #include "wfd_client.h"
44 static Evas_Object *_create_bg(Evas_Object *parent, char *style)
49 bg = elm_bg_add(parent);
50 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
51 elm_object_style_set(bg, style);
52 elm_win_resize_object_add(parent, bg);
59 static Evas_Object *_create_fullview(Evas_Object *parent, struct ug_data *ugd)
66 DBG(LOG_ERROR, "Incorrenct parameter");
70 base = elm_layout_add(parent);
73 DBG(LOG_ERROR, "Failed to add layout");
77 elm_layout_theme_set(base, "layout", "application", "default");
78 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
79 evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);
85 static Evas_Object *_create_frameview(Evas_Object * parent, struct ug_data *ugd)
92 DBG(LOG_ERROR, "Incorrenct parameter");
96 base = elm_layout_add(parent);
99 DBG(LOG_ERROR, "Failed to add layout");
103 elm_layout_theme_set(base, "layout", "application", "default");
104 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
105 evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);
111 static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle * data,
123 bindtextdomain(PACKAGE, LOCALEDIR);
125 ugd->win = ug_get_parent_layout(ug);
129 if (mode == UG_MODE_FULLVIEW)
130 ugd->base = _create_fullview(ugd->win, ugd);
132 ugd->base = _create_frameview(ugd->win, ugd);
136 ugd->bg = _create_bg(ugd->win, "group_list");
137 elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
141 DBG(LOG_ERROR, "Failed to create base layout\n");
145 wfd_get_vconf_status(ugd);
147 create_wfd_ug_view(ugd);
148 evas_object_show(ugd->base);
154 static void on_start(struct ui_gadget *ug, bundle * data, void *priv)
165 struct utsname kernel_info;
166 res = uname(&kernel_info);
169 DBG(LOG_ERROR, "Failed to detect target type\n");
173 DBG(LOG_VERBOSE, "Node name of this device [%s]\n", kernel_info.nodename);
174 DBG(LOG_VERBOSE, "HW ID of this device [%s]\n", kernel_info.machine);
175 if(strcmp(kernel_info.nodename, "SLP_PQ") == 0 ||
176 strncmp(kernel_info.machine, "arm", 3) != 0)
178 wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_NOT_SUPPORTED_DEVICE"), POPUP_TYPE_TERMINATE);
183 res = init_wfd_client(ugd);
186 DBG(LOG_ERROR, "Failed to initialize WFD client library\n");
187 wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_PROBLEM_WITH_WFD"), POPUP_TYPE_TERMINATE);
193 static void on_pause(struct ui_gadget *ug, bundle * data, void *priv)
199 static void on_resume(struct ui_gadget *ug, bundle * data, void *priv)
205 static void on_destroy(struct ui_gadget *ug, bundle * data, void *priv)
211 DBG(LOG_ERROR, "The param is NULL\n");
215 struct ug_data *ugd = priv;
216 if (ugd == NULL || ugd->base == NULL)
218 DBG(LOG_ERROR, "The param is NULL\n");
222 deinit_wfd_client(ugd);
223 DBG(LOG_VERBOSE, "WFD client deregistered");
225 destroy_wfd_ug_view(ugd);
229 evas_object_del(ugd->bg);
235 evas_object_del(ugd->base);
243 static void on_message(struct ui_gadget *ug, bundle * msg, bundle * data,
250 static void on_event(struct ui_gadget *ug, enum ug_event event, bundle * data,
257 DBG(LOG_ERROR, "The param is NULL\n");
263 case UG_EVENT_LOW_MEMORY:
264 DBG(LOG_VERBOSE, "UG_EVENT_LOW_MEMORY\n");
266 case UG_EVENT_LOW_BATTERY:
267 DBG(LOG_VERBOSE, "UG_EVENT_LOW_BATTERY\n");
269 case UG_EVENT_LANG_CHANGE:
270 DBG(LOG_VERBOSE, "UG_EVENT_LANG_CHANGE\n");
272 case UG_EVENT_ROTATE_PORTRAIT:
273 DBG(LOG_VERBOSE, "UG_EVENT_ROTATE_PORTRAIT\n");
275 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
276 DBG(LOG_VERBOSE, "UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN\n");
278 case UG_EVENT_ROTATE_LANDSCAPE:
279 DBG(LOG_VERBOSE, "UG_EVENT_ROTATE_LANDSCAPE\n");
281 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
282 DBG(LOG_VERBOSE, "UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN\n");
285 DBG(LOG_VERBOSE, "default\n");
292 static void on_key_event(struct ui_gadget *ug, enum ug_key_event event,
293 bundle * data, void *priv)
299 DBG(LOG_ERROR, "The param is NULL\n");
305 case UG_KEY_EVENT_END:
306 DBG(LOG_VERBOSE, "UG_KEY_EVENT_END\n");
315 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
322 DBG(LOG_ERROR, "The param is NULL\n");
326 ugd = calloc(1, sizeof(struct ug_data));
329 DBG(LOG_ERROR, "Failed to allocate memory for UG data\n");
333 ops->create = on_create;
334 ops->start = on_start;
335 ops->pause = on_pause;
336 ops->resume = on_resume;
337 ops->destroy = on_destroy;
338 ops->message = on_message;
339 ops->event = on_event;
340 ops->key_event = on_key_event;
342 ops->opt = UG_OPT_INDICATOR_ENABLE;
348 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
356 DBG(LOG_ERROR, "The param is NULL\n");