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();
70 SSMInterface *g_SSMClient = new SSMInterface();
72 static Elm_Object_Item *oicapp_append_separator(Evas_Object *genlist,
75 Elm_Object_Item *item = NULL;
77 item = elm_genlist_item_append(genlist, &ad->itc_seperator, NULL, NULL,
78 ELM_GENLIST_ITEM_NONE, NULL, NULL);
79 //elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
84 static void _win_del(void *data, Evas_Object *obj, void *event)
86 DBG("test _win_del()");
91 static Evas_Object *oicapp_create_win(const char *name)
96 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
99 elm_win_title_set(eo, name);
100 elm_win_borderless_set(eo, EINA_TRUE);
101 evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL);
102 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
103 evas_object_resize(eo, w, h);
104 elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
105 elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_OPAQUE);
108 evas_object_show(eo);
113 static Evas_Object *oicapp_create_bg(Evas_Object *parent)
117 bg = elm_bg_add(parent);
118 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
119 elm_win_resize_object_add(parent, bg);
120 //elm_object_part_content_set(parent, "elm.swallow.bg", bg);
121 evas_object_show(bg);
126 static Evas_Object *oicapp_create_base_layout(Evas_Object *parent)
130 base = elm_layout_add(parent);
131 elm_layout_theme_set(base, "layout", "application", "default");
132 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
133 evas_object_show(base);
138 void __gl_realized_cb(void *data, Evas_Object *obj, void *event_info)
140 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
142 list_item = elm_object_item_data_get(item);
143 if (NULL == list_item)
145 elm_object_item_signal_emit(item, "elm,state,center", "");
148 if (list_item->group_style == OICAPP_GENLIST_GRP_TOP)
149 elm_object_item_signal_emit(item, "elm,state,top", "");
150 else if (list_item->group_style == OICAPP_GENLIST_GRP_CENTER)
151 elm_object_item_signal_emit(item, "elm,state,center", "");
152 else if (list_item->group_style == OICAPP_GENLIST_GRP_BOTTOM)
153 elm_object_item_signal_emit(item, "elm,state,bottom", "");
156 elm_object_item_signal_emit(item, "elm,state,normal", "");
160 static Evas_Object *oicapp_create_genlist(Evas_Object *parent)
162 Evas_Object *genlist;
164 genlist = elm_genlist_add(parent);
167 ERR("elm_genlist_add() Fail");
171 elm_object_style_set(genlist, "dialogue");
172 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
173 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
174 evas_object_show(genlist);
176 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
181 static Elm_Object_Item *_gl_append_item(oicapp_data *ad, Elm_Genlist_Item_Class *itc)
183 Elm_Object_Item *item;
185 item = elm_genlist_item_append(ad->genlist, itc, ad, NULL,
186 ELM_GENLIST_ITEM_NONE, NULL, NULL);
188 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
193 static void oicapp_append_contents(oicapp_data *ad)
195 Elm_Object_Item *item;
197 oicapp_append_separator(ad->genlist, ad);
199 _gl_append_item(ad, &ad->itc_edit);
201 oicapp_append_separator(ad->genlist, ad);
203 _gl_append_item(ad, &ad->itc_btn);
205 oicapp_append_separator(ad->genlist, ad);
207 item = _gl_append_item(ad, &ad->itc_multiline);
208 ad->item_multiline = item;
210 oicapp_append_separator(ad->genlist, ad);
212 oicapp_append_separator(ad->genlist, ad);
214 elm_genlist_item_append(ad->genlist, &ad->itc_edit, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
216 oicapp_append_separator(ad->genlist, ad);
218 elm_genlist_item_append(ad->genlist, &ad->itc_btn, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
220 oicapp_append_separator(ad->genlist, ad);
222 oicapp_append_separator(ad->genlist, ad);
224 oicapp_append_separator(ad->genlist, ad);
226 item = _gl_append_item(ad, &ad->itc_multiline);
228 ad->item_multiline = item;
230 oicapp_append_separator(ad->genlist, ad);
233 static Evas_Object *oicapp_create_conform(Evas_Object *win)
235 Evas_Object *conform = NULL;
236 conform = elm_conformant_add(win);
238 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
239 elm_win_resize_object_add(win, conform);
240 evas_object_show(conform);
242 Evas_Object *bg_indicator = elm_bg_add(conform);
243 elm_object_style_set(bg_indicator, "indicator/headerbg");
244 elm_object_part_content_set(conform, "elm.swallow.indicator_bg", bg_indicator);
245 evas_object_show(bg_indicator);
250 static Eina_Bool _back_cb(void *data, Elm_Object_Item *item)
257 static char *_gl_multiline_text_get(void *data, Evas_Object *obj, const char *part)
259 oicapp_data *ad = (oicapp_data *)data;
262 return strdup(ad->output_msg);
267 static void _btn_clicked(void *data, Evas_Object *obj, void *event_info)
269 oicapp_data *ad = (oicapp_data *)data;
271 std::string str = std::string(ad->input_msg);
273 std::string strGT = ">";
275 std::string strLT = "<";
277 std::size_t foundGT = str.find(strGT);
279 std::size_t foundLT = str.find(strLT);
281 std::stringstream sstream;
283 if (foundGT != std::string::npos)
285 str.replace(foundGT, strGT.length(), ">");
288 if (foundLT != std::string::npos)
290 str.replace(foundLT, strLT.length(), "<");
293 g_SSMClient->registerQuery(str, g_SSMClientListener, g_CQID);
295 sstream << "Query executed! cqid = " << g_CQID << std::ends;
297 oicapp_util_put_msg(ad, sstream.str().c_str());
299 ERR("button clicked(%s)", ad->input_msg);
302 static Evas_Object *_gl_btn_content_get(void *data, Evas_Object *obj,
306 oicapp_data *ad = (oicapp_data *)data;
308 button = elm_button_add(obj);
309 //elm_object_style_set(button, "");
310 elm_object_part_text_set(button, NULL, "Send Query");
311 evas_object_propagate_events_set(button, EINA_FALSE);
312 evas_object_smart_callback_add(button, "clicked", _btn_clicked, ad);
317 static void _edit_unfocused(void *data, Evas_Object *obj, void *event_info)
319 oicapp_data *ad = (oicapp_data *)data;
321 ad->input_msg = strdup(elm_entry_entry_get(obj));
323 DBG("Clicked : %s", ad->input_msg);
326 static Evas_Object *_gl_edit_content_get(void *data, Evas_Object *obj,
329 oicapp_data *ad = (oicapp_data *)data;
331 Evas_Object *entry = ea_editfield_add(obj, EA_EDITFIELD_MULTILINE);
332 ea_editfield_clear_button_disabled_set(entry, EINA_TRUE);
333 elm_entry_entry_set(entry, ad->input_msg);
334 evas_object_smart_callback_add(entry, "unfocused", _edit_unfocused, ad);
339 static char *_item_Text_get(void *data, Evas_Object *obj, const char *part)
342 "subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0";
347 static inline void oicapp_init_itcs(oicapp_data *ad)
349 ad->itc_seperator.item_style = "dialogue/separator";
350 ad->itc_seperator.func.text_get = NULL;
351 ad->itc_seperator.func.content_get = NULL;
352 ad->itc_seperator.func.state_get = NULL;
353 ad->itc_seperator.func.del = NULL;
355 ad->itc_edit.item_style = "dialogue/editfield";
356 ad->itc_edit.func.text_get = _item_Text_get;
357 ad->itc_edit.func.content_get = _gl_edit_content_get;
358 ad->itc_edit.func.state_get = NULL;
359 ad->itc_edit.func.del = NULL;
361 ad->itc_btn.item_style = "dialogue/1icon";
362 ad->itc_btn.func.text_get = NULL;
363 ad->itc_btn.func.content_get = _gl_btn_content_get;
364 ad->itc_btn.func.state_get = NULL;
365 ad->itc_btn.func.del = NULL;
367 ad->itc_multiline.item_style = "multiline/1text";
368 ad->itc_multiline.func.text_get = _gl_multiline_text_get;
369 ad->itc_multiline.func.content_get = NULL;
370 ad->itc_multiline.func.state_get = NULL;
371 ad->itc_multiline.func.del = NULL;
374 static int oicapp_create(void *data)
376 oicapp_data *ad = (oicapp_data *)data;
379 g_ad = (oicapp_data *)data;
381 oicapp_init_itcs(ad);
384 ad->win = oicapp_create_win(PACKAGE);
388 ad->bg = oicapp_create_bg(ad->win);
392 ad->conform = oicapp_create_conform(ad->win);
393 if (NULL == ad->conform)
397 ad->base = oicapp_create_base_layout(ad->conform);
398 if (NULL == ad->base)
400 elm_object_content_set(ad->conform, ad->base);
402 ad->navi = elm_naviframe_add(ad->base);
403 elm_object_part_content_set(ad->base, "elm.swallow.content", ad->navi);
404 ea_object_event_callback_add(ad->navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL);
406 ad->genlist = oicapp_create_genlist(ad->navi);
408 it = elm_naviframe_item_push(ad->navi, "SSM Tester", NULL, NULL, ad->genlist, NULL);
409 elm_naviframe_item_pop_cb_set(it, _back_cb, ad);
411 ad->ip_addr = oicapp_util_wifi();
412 if (NULL == ad->ip_addr)
414 ERR("wifi is not connected");
415 oicapp_fail_popup(ad, (char *)"Error", (char *)"No WIFI connection", 3);
419 INFO("IP Address = %s", ad->ip_addr);
422 oicapp_append_contents(ad);
427 static int oicapp_terminate(void *data)
429 oicapp_data *ad = (oicapp_data *)data;
432 g_SSMClient->unregisterQuery(g_CQID);
435 evas_object_del(ad->win);
438 free(ad->output_msg);
442 static int oicapp_pause(void *data)
447 static int oicapp_resume(void *data)
450 static int tmpCnt = 0;
451 oicapp_data *ad = (oicapp_data *)data;
454 snprintf(buf, sizeof(buf), "Test %d", tmpCnt++);
456 oicapp_util_put_msg(ad, buf);
461 static int oicapp_reset(bundle *b, void *data)
463 oicapp_data *ad = (oicapp_data *)data;
466 elm_win_activate(ad->win);
471 int main(int argc, char *argv[])
476 struct appcore_ops ops = {
477 .create = oicapp_create,
478 .terminate = oicapp_terminate,
479 .pause = oicapp_pause,
480 .resume = oicapp_resume,
481 .reset = oicapp_reset,
486 ops.create = oicapp_create;
487 ops.terminate = oicapp_terminate;
488 ops.pause = oicapp_pause;
489 ops.resume = oicapp_resume;
490 ops.reset = oicapp_reset;
492 memset(&ad, 0x0, sizeof(oicapp_data));
495 return appcore_efl_main(PACKAGE, &argc, &argv, &ops);