2 * Copyright (c) 2014 Samsung Electronics, Inc.
5 * This software is a confidential and proprietary information
6 * of Samsung Electronics, Inc. ("Confidential Information"). You
7 * shall not disclose such Confidential Information and shall use
8 * it only in accordance with the terms of the license agreement
9 * you entered into with Samsung Electronics.
12 #include <appcore-efl.h>
14 #include <efl_assist.h>
16 #include "oicapp-sampleConsumer.h"
17 #include "oicapp-utils.h"
19 char* OICAPP_STR_URI = "Uri : ";
20 char* OICAPP_STR_HOST = "Host : ";
22 const char* const OICAPP_STR_CONSUMER = "Consumer";
24 void __gl_realized_cb(void *data , Evas_Object *obj , void *event_info)
26 Elm_Object_Item *item = event_info;
27 elm_object_item_signal_emit(item , "elm,state,normal" , "");
30 static Elm_Object_Item* oicapp_append_separator(Evas_Object *genlist , oicappData *ad)
32 Elm_Object_Item *item = NULL;
34 item = elm_genlist_item_append(genlist , &ad->itcSeperator , NULL , NULL ,
35 ELM_GENLIST_ITEM_NONE , NULL , NULL);
36 elm_genlist_item_select_mode_set(item , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
41 static Elm_Object_Item* _gl_append_item(oicappData *ad , Elm_Genlist_Item_Class *itc ,
42 const char *title , Evas_Smart_Cb sel_func)
44 Elm_Object_Item *item;
45 oicappItemData *it_data;
47 it_data = calloc(1 , sizeof(oicappItemData));
48 it_data->title = title;
50 item = elm_genlist_item_append(ad->genlist , itc , it_data , NULL , ELM_GENLIST_ITEM_NONE ,
56 void _gl_update_item(oicappData *ad , const char *title , Elm_Object_Item *item)
58 oicappItemData *it_data;
60 it_data = calloc(1 , sizeof(oicappItemData));
61 it_data->title = title;
64 elm_object_item_data_set(item , it_data);
65 elm_genlist_item_update(item);
68 static Elm_Object_Item* _gl_append_btn(oicappData *ad , Elm_Genlist_Item_Class *itc)
72 Elm_Object_Item *item;
74 item = elm_genlist_item_append(ad->genlist , itc , ad , NULL , ELM_GENLIST_ITEM_NONE , NULL ,
77 elm_genlist_item_select_mode_set(item , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
82 static void consumerapp_append_contents(oicappData *ad)
85 Elm_Object_Item *item , *parent;
87 parent = _gl_append_item(ad , &ad->itcTitle , OICAPP_STR_CONSUMER , NULL);
88 elm_genlist_item_select_mode_set(parent , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
90 item = _gl_append_item(ad , &ad->itcText , OICAPP_STR_URI , NULL);
91 ad->itemConsumerUri = item;
93 item = _gl_append_item(ad , &ad->itcText , OICAPP_STR_HOST , NULL);
94 ad->itemConsumerHost = item;
96 _gl_append_btn(ad , &ad->itcBtnFindResoruce);
98 item = _gl_append_item(ad , &ad->itcText , "" , NULL);
99 ad->itemConsumerTemp = item;
101 item = _gl_append_item(ad , &ad->itcText , "" , NULL);
102 ad->itemConsumerHumid = item;
104 _gl_append_btn(ad , &ad->itcBtnObserve);
106 oicapp_append_separator(ad->genlist , ad);
110 static Evas_Object* consumerapp_create_genlist(Evas_Object *parent)
112 Evas_Object *genlist;
114 genlist = elm_genlist_add(parent);
117 ERR("elm_genlist_add() Fail");
121 elm_object_style_set(genlist , "dialogue");
122 evas_object_size_hint_weight_set(genlist , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND);
123 evas_object_show(genlist);
125 evas_object_smart_callback_add(genlist , "realized" , __gl_realized_cb , NULL);
130 static Eina_Bool _back_cb(void *data , Elm_Object_Item *item)
132 DBG("test _back_cb()");
133 oicappData *ad = data;
135 elm_genlist_item_update(ad->itemConsumer);
136 elm_genlist_item_update(ad->itemConsumerHost);
137 elm_genlist_item_update(ad->itemConsumerTemp);
138 elm_genlist_item_update(ad->itemConsumerHumid);
139 elm_genlist_item_update(ad->itemConsumerUri);
141 elm_object_item_disabled_set(ad->itemConsumer , EINA_FALSE);
142 elm_object_item_disabled_set(ad->itemConsumerHost , EINA_TRUE);
143 elm_object_item_disabled_set(ad->itemConsumerTemp , EINA_TRUE);
144 elm_object_item_disabled_set(ad->itemConsumerHumid , EINA_TRUE);
145 elm_object_item_disabled_set(ad->itemConsumerUri , EINA_TRUE);
152 static void _win_del(void *data , Evas_Object *obj , void *event)
154 DBG("test _win_del()");
159 static Evas_Object* consumerapp_create_conform(Evas_Object *win)
161 Evas_Object *conform = NULL;
162 conform = elm_conformant_add(win);
164 evas_object_size_hint_weight_set(conform , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND);
165 elm_win_resize_object_add(win , conform);
166 evas_object_show(conform);
168 Evas_Object *bg_indicator = elm_bg_add(conform);
169 elm_object_style_set(bg_indicator , "indicator/headerbg");
170 elm_object_part_content_set(conform , "elm.swallow.indicator_bg" , bg_indicator);
171 evas_object_show(bg_indicator);
176 static Evas_Object* consumerapp_create_win(const char *name)
181 eo = elm_win_add(NULL , name , ELM_WIN_BASIC);
184 elm_win_title_set(eo , name);
185 elm_win_borderless_set(eo , EINA_TRUE);
186 evas_object_smart_callback_add(eo , "delete,request" , _win_del , NULL);
187 ecore_x_window_size_get(ecore_x_window_root_first_get() , &w , &h);
188 evas_object_resize(eo , w , h);
189 elm_win_indicator_mode_set(eo , ELM_WIN_INDICATOR_SHOW);
190 elm_win_indicator_opacity_set(eo , ELM_WIN_INDICATOR_OPAQUE);
193 evas_object_show(eo);
198 static Evas_Object* consumerapp_create_bg(Evas_Object *parent)
202 bg = elm_bg_add(parent);
203 evas_object_size_hint_weight_set(bg , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND);
204 elm_win_resize_object_add(parent , bg);
205 evas_object_show(bg);
210 static Evas_Object* consumerapp_create_base_layout(Evas_Object *parent)
214 base = elm_layout_add(parent);
215 elm_layout_theme_set(base , "layout" , "application" , "default");
216 evas_object_size_hint_weight_set(base , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND);
217 evas_object_show(base);
222 static void _btn_observe_clicked(void *data , Evas_Object *obj , void *event_info)
224 oicappData *ad = data;
229 static void _btn_findResource_clicked(void *data , Evas_Object *obj , void *event_info)
231 oicappData *ad = data;
233 findResourceCandidate(ad);
236 static Evas_Object* _gl_btn_observe_content_get(void *data , Evas_Object *obj , const char *part)
239 oicappData *ad = data;
241 button = elm_button_add(obj);
242 elm_object_part_text_set(button , NULL , "Observe");
243 evas_object_propagate_events_set(button , EINA_FALSE);
244 evas_object_smart_callback_add(button , "clicked" , _btn_observe_clicked , ad);
249 static Evas_Object* _gl_btn_findResource_content_get(void *data , Evas_Object *obj ,
253 oicappData *ad = data;
255 button = elm_button_add(obj);
256 elm_object_part_text_set(button , NULL , "Find Resource");
257 evas_object_propagate_events_set(button , EINA_FALSE);
258 evas_object_smart_callback_add(button , "clicked" , _btn_findResource_clicked , ad);
263 static void _gl_item_del(void *data , Evas_Object *obj)
269 static char* _gl_text_get(void *data , Evas_Object *obj , const char *part)
271 oicappItemData *it_data = data;
272 return strdup(it_data->title);
275 static inline void oicapp_init_itcs(oicappData *ad)
277 ad->itcSeperator.item_style = "dialogue/separator";
278 ad->itcSeperator.func.text_get = NULL;
279 ad->itcSeperator.func.content_get = NULL;
280 ad->itcSeperator.func.state_get = NULL;
281 ad->itcSeperator.func.del = NULL;
283 ad->itcTitle.item_style = "dialogue/title";
284 ad->itcTitle.func.text_get = _gl_text_get;
285 ad->itcTitle.func.content_get = NULL;
286 ad->itcTitle.func.state_get = NULL;
287 ad->itcTitle.func.del = _gl_item_del;
289 ad->itcText.item_style = "dialogue/1text";
290 ad->itcText.func.text_get = _gl_text_get;
291 ad->itcText.func.content_get = NULL;
292 ad->itcText.func.state_get = NULL;
293 ad->itcText.func.del = _gl_item_del;
295 ad->itcBtnFindResoruce.item_style = "dialogue/1icon";
296 ad->itcBtnFindResoruce.func.text_get = NULL;
297 ad->itcBtnFindResoruce.func.content_get = _gl_btn_findResource_content_get;
298 ad->itcBtnFindResoruce.func.state_get = NULL;
299 ad->itcBtnFindResoruce.func.del = NULL;
301 ad->itcBtnObserve.item_style = "dialogue/1icon";
302 ad->itcBtnObserve.func.text_get = NULL;
303 ad->itcBtnObserve.func.content_get = _gl_btn_observe_content_get;
304 ad->itcBtnObserve.func.state_get = NULL;
305 ad->itcBtnObserve.func.del = NULL;
309 static int oicapp_create(void *data)
311 oicappData *ad = data;
314 oicapp_init_itcs(ad);
317 ad->win = consumerapp_create_win(PACKAGE);
321 ad->bg = consumerapp_create_bg(ad->win);
325 ad->conform = consumerapp_create_conform(ad->win);
326 if(NULL == ad->conform)
330 ad->base = consumerapp_create_base_layout(ad->conform);
333 elm_object_content_set(ad->conform , ad->base);
335 ad->navi = elm_naviframe_add(ad->base);
336 elm_object_part_content_set(ad->base , "elm.swallow.content" , ad->navi);
337 ea_object_event_callback_add(ad->navi , EA_CALLBACK_BACK , ea_naviframe_back_cb , NULL);
339 ad->genlist = consumerapp_create_genlist(ad->navi);
341 it = elm_naviframe_item_push(ad->navi , "IoT Notification Sample App" , NULL , NULL ,
343 elm_naviframe_item_pop_cb_set(it , _back_cb , ad);
345 ad->ipAddr = oicapp_util_wifi();
346 if(NULL == ad->ipAddr)
348 ERR("wifi is not connected");
349 oicapp_fail_popup(ad , "Error" , "No WIFI connection" , 3);
353 INFO("IP Address = %s" , ad->ipAddr);
356 oicapp_client_start(ad);
358 consumerapp_append_contents(ad);
363 static int oicapp_terminate(void *data)
365 DBG("test _terminate()!!");
366 oicappData *ad = data;
370 DBG("test_del evas object1");
371 evas_object_del(ad->win);
372 DBG("test_del evas object2");
380 static int oicapp_pause(void *data)
382 DBG("test _pause()!!!!");
386 static int oicapp_resume(void *data)
388 DBG("test_resume()");
392 static int oicapp_reset(bundle *b , void *data)
397 int main(int argc , char *argv[])
401 struct appcore_ops ops =
402 { .create = oicapp_create , .terminate = oicapp_terminate , .pause = oicapp_pause , .resume =
403 oicapp_resume , .reset = oicapp_reset , };
405 memset(&ad , 0x0 , sizeof(oicappData));
408 return appcore_efl_main(PACKAGE , &argc , &argv , &ops);