+ Evas_Object* parent = elm_object_parent_widget_get(m_ewkView);
+ Evas_Object* win = parent;
+
+ m_dataList = optionList;
+
+ if (m_pickerLayout)
+ delete m_pickerLayout;
+
+ m_pickerLayout = static_cast<Input_Picker_Layout*>(new Input_Picker_Layout);
+ memset(m_pickerLayout, 0, sizeof(m_pickerLayout));
+
+ while (parent) {
+ const char* type = elm_object_widget_type_get(parent);
+ if (type) {
+ if (!strcmp(type, "win")) {
+ win = parent;
+ break;
+ }
+ }
+ parent = elm_object_parent_widget_get(parent);
+ }
+
+ if (!win)
+ win = m_ewkView;
+
+ Evas_Object* conformant = elm_conformant_add(win);
+ elm_win_resize_object_add(win, conformant);
+ evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(conformant);
+
+ Evas_Object* dummyLaout = elm_layout_add(conformant);
+ elm_object_content_set(conformant, dummyLaout);
+
+ m_pickerLayout->popup = elm_popup_add(dummyLaout);
+ elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select data list");
+
+ m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
+ elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","data_list_picker");
+ evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(m_pickerLayout->layout);
+ elm_object_content_set(m_pickerLayout->popup, m_pickerLayout->layout);
+
+ Evas_Object* elmList = elm_list_add(m_pickerLayout->layout);
+ Eina_List* list = 0;
+ void* listItem = 0;
+ EINA_LIST_FOREACH(optionList, list, listItem) {
+ if (listItem)
+ elm_list_item_append(elmList, static_cast<char*>(listItem), 0, 0, _data_list_selected_cb, this);
+ }
+ evas_object_size_hint_weight_set(elmList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(elmList);
+ elm_object_part_content_set(m_pickerLayout->layout, "data_list", elmList);
+
+ Evas_Object* editFieldLayout = elm_layout_add(m_pickerLayout->layout);
+ elm_layout_theme_set(editFieldLayout, "layout", "editfield", "default");
+
+ m_pickerLayout->dataListEditField = elm_entry_add(editFieldLayout);
+ elm_object_part_content_set(editFieldLayout, "elm.swallow.content", m_pickerLayout->dataListEditField);
+
+ elm_object_signal_emit(editFieldLayout, "elm,state,guidetext,hide", "elm");
+ elm_object_signal_callback_add(editFieldLayout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, m_pickerLayout->dataListEditField);
+ evas_object_smart_callback_add(m_pickerLayout->dataListEditField, "changed", _changed_cb, editFieldLayout);
+ evas_object_smart_callback_add(m_pickerLayout->dataListEditField, "focused", _focused_cb, editFieldLayout);
+ evas_object_smart_callback_add(m_pickerLayout->dataListEditField, "unfocused", _unfocused_cb, editFieldLayout);
+
+ elm_object_part_content_set(m_pickerLayout->layout, "selected_item", editFieldLayout);
+ evas_object_show(editFieldLayout);
+
+ m_pickerLayout->okButton = elm_button_add(m_pickerLayout->popup);
+ elm_object_style_set(m_pickerLayout->okButton, "popup_button/default");
+ elm_object_text_set(m_pickerLayout->okButton, "OK");
+ elm_object_part_content_set(m_pickerLayout->popup, "button1", m_pickerLayout->okButton);
+ evas_object_smart_callback_add(m_pickerLayout->okButton, "clicked", _data_list_popup_response_cb, this);
+ evas_object_show(m_pickerLayout->popup);
+
+ Evas_Object* cancelButton = elm_button_add(m_pickerLayout->popup);
+ elm_object_style_set(cancelButton, "popup_button/default");
+ elm_object_text_set(cancelButton, "Cancel");
+ elm_object_part_content_set(m_pickerLayout->popup, "button2", cancelButton);
+ evas_object_smart_callback_add(cancelButton, "clicked", _data_list_popup_response_cancel_cb, this);
+ evas_object_show(cancelButton);