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>
19 #include "oicapp-test.h"
20 #include "oicapp-utils.h"
22 #include "SSMInterface.h"
26 static oicapp_data *g_ad = NULL;
30 class CQueryEngineEvent : public IQueryEngineEvent
34 SSMRESULT onQueryEngineEvent(int cqid, IDataReader *pResult)
36 std::stringstream sstream;
39 IModelData *pModelData = NULL;
40 std::vector<std::string> affectedModels;
42 pResult->getAffectedModels(&affectedModels);
44 for (std::vector<std::string>::iterator itor = affectedModels.begin();
45 itor != affectedModels.end(); ++itor)
47 printf("Printing %s\n", itor->c_str());
48 pResult->getModelDataCount(*itor, &dataCount);
49 for (int i = 0; i < dataCount; i++)
51 pResult->getModelData(*itor, i, &pModelData);
52 printf("dataId: %d\n", pModelData->getDataId());
53 for (int j = 0; j < pModelData->getPropertyCount(); j++)
55 sstream << "Type: " << pModelData->getPropertyName(j).c_str() <<
56 " Value: " << pModelData->getPropertyValue(j).c_str() << "<br>";
63 oicapp_util_put_msg(g_ad, sstream.str().c_str());
69 CQueryEngineEvent *g_SSMClientListener = new CQueryEngineEvent();
71 static Elm_Object_Item *oicapp_append_separator(Evas_Object *genlist,
74 Elm_Object_Item *item = NULL;
76 item = elm_genlist_item_append(genlist, &ad->itc_seperator, NULL, NULL,
77 ELM_GENLIST_ITEM_NONE, NULL, NULL);
78 //elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
83 static void _win_del(void *data, Evas_Object *obj, void *event)
85 DBG("test _win_del()");
90 static Evas_Object *oicapp_create_win(const char *name)
95 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
98 elm_win_title_set(eo, name);
99 elm_win_borderless_set(eo, EINA_TRUE);
100 evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL);
101 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
102 evas_object_resize(eo, w, h);
103 elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
104 elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_OPAQUE);
107 evas_object_show(eo);
112 static Evas_Object *oicapp_create_bg(Evas_Object *parent)
116 bg = elm_bg_add(parent);
117 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
118 elm_win_resize_object_add(parent, bg);
119 //elm_object_part_content_set(parent, "elm.swallow.bg", bg);
120 evas_object_show(bg);
125 static Evas_Object *oicapp_create_base_layout(Evas_Object *parent)
129 base = elm_layout_add(parent);
130 elm_layout_theme_set(base, "layout", "application", "default");
131 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
132 evas_object_show(base);
137 void __gl_realized_cb(void *data, Evas_Object *obj, void *event_info)
139 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
141 list_item = elm_object_item_data_get(item);
142 if (NULL == list_item)
144 elm_object_item_signal_emit(item, "elm,state,center", "");
147 if (list_item->group_style == OICAPP_GENLIST_GRP_TOP)
148 elm_object_item_signal_emit(item, "elm,state,top", "");
149 else if (list_item->group_style == OICAPP_GENLIST_GRP_CENTER)
150 elm_object_item_signal_emit(item, "elm,state,center", "");
151 else if (list_item->group_style == OICAPP_GENLIST_GRP_BOTTOM)
152 elm_object_item_signal_emit(item, "elm,state,bottom", "");
155 elm_object_item_signal_emit(item, "elm,state,normal", "");
159 static Evas_Object *oicapp_create_genlist(Evas_Object *parent)
161 Evas_Object *genlist;
163 genlist = elm_genlist_add(parent);
166 ERR("elm_genlist_add() Fail");
170 elm_object_style_set(genlist, "dialogue");
171 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
172 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
173 evas_object_show(genlist);
175 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
180 static Elm_Object_Item *_gl_append_item(oicapp_data *ad, Elm_Genlist_Item_Class *itc)
182 Elm_Object_Item *item;
184 item = elm_genlist_item_append(ad->genlist, itc, ad, NULL,
185 ELM_GENLIST_ITEM_NONE, NULL, NULL);
187 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
192 static void oicapp_append_contents(oicapp_data *ad)
194 Elm_Object_Item *item;
196 oicapp_append_separator(ad->genlist, ad);
198 _gl_append_item(ad, &ad->itc_edit);
200 oicapp_append_separator(ad->genlist, ad);
202 _gl_append_item(ad, &ad->itc_btn);
204 oicapp_append_separator(ad->genlist, ad);
206 item = _gl_append_item(ad, &ad->itc_multiline);
207 ad->item_multiline = item;
209 oicapp_append_separator(ad->genlist, ad);
211 oicapp_append_separator(ad->genlist, ad);
213 elm_genlist_item_append(ad->genlist, &ad->itc_edit, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
215 oicapp_append_separator(ad->genlist, ad);
217 elm_genlist_item_append(ad->genlist, &ad->itc_btn, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
219 oicapp_append_separator(ad->genlist, ad);
221 oicapp_append_separator(ad->genlist, ad);
223 oicapp_append_separator(ad->genlist, ad);
225 item = _gl_append_item(ad, &ad->itc_multiline);
227 ad->item_multiline = item;
229 oicapp_append_separator(ad->genlist, ad);
232 static Evas_Object *oicapp_create_conform(Evas_Object *win)
234 Evas_Object *conform = NULL;
235 conform = elm_conformant_add(win);
237 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
238 elm_win_resize_object_add(win, conform);
239 evas_object_show(conform);
241 Evas_Object *bg_indicator = elm_bg_add(conform);
242 elm_object_style_set(bg_indicator, "indicator/headerbg");
243 elm_object_part_content_set(conform, "elm.swallow.indicator_bg", bg_indicator);
244 evas_object_show(bg_indicator);
249 static Eina_Bool _back_cb(void *data, Elm_Object_Item *item)
256 static char *_gl_multiline_text_get(void *data, Evas_Object *obj, const char *part)
258 oicapp_data *ad = (oicapp_data *)data;
261 return strdup(ad->output_msg);
266 static void _btn_clicked(void *data, Evas_Object *obj, void *event_info)
268 oicapp_data *ad = (oicapp_data *)data;
270 std::string str = std::string(ad->input_msg);
272 std::string strGT = ">";
274 std::string strLT = "<";
276 std::size_t foundGT = str.find(strGT);
278 std::size_t foundLT = str.find(strLT);
280 std::stringstream sstream;
282 if (foundGT != std::string::npos)
284 str.replace(foundGT, strGT.length(), ">");
287 if (foundLT != std::string::npos)
289 str.replace(foundLT, strLT.length(), "<");
292 RegisterQuery(str, g_SSMClientListener, g_CQID);
294 sstream << "Query executed! cqid = " << g_CQID << std::ends;
296 oicapp_util_put_msg(ad, sstream.str().c_str());
298 ERR("button clicked(%s)", ad->input_msg);
301 static Evas_Object *_gl_btn_content_get(void *data, Evas_Object *obj,
305 oicapp_data *ad = (oicapp_data *)data;
307 button = elm_button_add(obj);
308 //elm_object_style_set(button, "");
309 elm_object_part_text_set(button, NULL, "Send Query");
310 evas_object_propagate_events_set(button, EINA_FALSE);
311 evas_object_smart_callback_add(button, "clicked", _btn_clicked, ad);
316 static void _edit_unfocused(void *data, Evas_Object *obj, void *event_info)
318 oicapp_data *ad = (oicapp_data *)data;
320 ad->input_msg = strdup(elm_entry_entry_get(obj));
322 DBG("Clicked : %s", ad->input_msg);
325 static Evas_Object *_gl_edit_content_get(void *data, Evas_Object *obj,
328 oicapp_data *ad = (oicapp_data *)data;
330 Evas_Object *entry = ea_editfield_add(obj, EA_EDITFIELD_MULTILINE);
331 ea_editfield_clear_button_disabled_set(entry, EINA_TRUE);
332 elm_entry_entry_set(entry, ad->input_msg);
333 evas_object_smart_callback_add(entry, "unfocused", _edit_unfocused, ad);
338 static char *_item_Text_get(void *data, Evas_Object *obj, const char *part)
341 "subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0";
346 static inline void oicapp_init_itcs(oicapp_data *ad)
348 ad->itc_seperator.item_style = "dialogue/separator";
349 ad->itc_seperator.func.text_get = NULL;
350 ad->itc_seperator.func.content_get = NULL;
351 ad->itc_seperator.func.state_get = NULL;
352 ad->itc_seperator.func.del = NULL;
354 ad->itc_edit.item_style = "dialogue/editfield";
355 ad->itc_edit.func.text_get = _item_Text_get;
356 ad->itc_edit.func.content_get = _gl_edit_content_get;
357 ad->itc_edit.func.state_get = NULL;
358 ad->itc_edit.func.del = NULL;
360 ad->itc_btn.item_style = "dialogue/1icon";
361 ad->itc_btn.func.text_get = NULL;
362 ad->itc_btn.func.content_get = _gl_btn_content_get;
363 ad->itc_btn.func.state_get = NULL;
364 ad->itc_btn.func.del = NULL;
366 ad->itc_multiline.item_style = "multiline/1text";
367 ad->itc_multiline.func.text_get = _gl_multiline_text_get;
368 ad->itc_multiline.func.content_get = NULL;
369 ad->itc_multiline.func.state_get = NULL;
370 ad->itc_multiline.func.del = NULL;
373 static int oicapp_create(void *data)
375 oicapp_data *ad = (oicapp_data *)data;
378 g_ad = (oicapp_data *)data;
380 oicapp_init_itcs(ad);
383 ad->win = oicapp_create_win(PACKAGE);
387 ad->bg = oicapp_create_bg(ad->win);
391 ad->conform = oicapp_create_conform(ad->win);
392 if (NULL == ad->conform)
396 ad->base = oicapp_create_base_layout(ad->conform);
397 if (NULL == ad->base)
399 elm_object_content_set(ad->conform, ad->base);
401 ad->navi = elm_naviframe_add(ad->base);
402 elm_object_part_content_set(ad->base, "elm.swallow.content", ad->navi);
403 ea_object_event_callback_add(ad->navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL);
405 ad->genlist = oicapp_create_genlist(ad->navi);
407 it = elm_naviframe_item_push(ad->navi, "SSM Tester", NULL, NULL, ad->genlist, NULL);
408 elm_naviframe_item_pop_cb_set(it, _back_cb, ad);
410 ad->ip_addr = oicapp_util_wifi();
411 if (NULL == ad->ip_addr)
413 ERR("wifi is not connected");
414 oicapp_fail_popup(ad, (char *)"Error", (char *)"No WIFI connection", 3);
418 INFO("IP Address = %s", ad->ip_addr);
421 oicapp_append_contents(ad);
426 static int oicapp_terminate(void *data)
428 oicapp_data *ad = (oicapp_data *)data;
431 UnregisterQuery(g_CQID);
434 evas_object_del(ad->win);
437 free(ad->output_msg);
441 static int oicapp_pause(void *data)
446 static int oicapp_resume(void *data)
449 static int tmpCnt = 0;
450 oicapp_data *ad = (oicapp_data *)data;
453 snprintf(buf, sizeof(buf), "Test %d", tmpCnt++);
455 oicapp_util_put_msg(ad, buf);
460 static int oicapp_reset(bundle *b, void *data)
462 oicapp_data *ad = (oicapp_data *)data;
465 elm_win_activate(ad->win);
470 int main(int argc, char *argv[])
475 struct appcore_ops ops = {
476 .create = oicapp_create,
477 .terminate = oicapp_terminate,
478 .pause = oicapp_pause,
479 .resume = oicapp_resume,
480 .reset = oicapp_reset,
485 ops.create = oicapp_create;
486 ops.terminate = oicapp_terminate;
487 ops.pause = oicapp_pause;
488 ops.resume = oicapp_resume;
489 ops.reset = oicapp_reset;
491 memset(&ad, 0x0, sizeof(oicapp_data));
494 return appcore_efl_main(PACKAGE, &argc, &argv, &ops);