Hi all. I'm trying to create a Gear S3 application that will allow user input and write the user input to a text file. I am using Tizen Native Application, and I am modifying the UIComponents sample project for Tizen Wearable V2.3.2. The user is able to click on the Entry button, which takes them to a second screen that has a list of entries. Clicking on an entry takes you a third screen in which you can input text. I am using elm_object_part_text_get(entry, "elm.text") to get the user's input and write it to a file.
I am running into a problem where the application crashes on a few different occasions:
- when I enter a number or a special character in the entry text.
- when I enter more than 3 text characters.
- sometimes as soon as I enter the 3rd text character, the file gets written with the three characters and then crashes.
Ideally I would like the user to only enter numbers and not be restricted by only being able to enter 3 characters. Any help you have would be great.
static char* write_file(const char* filepath, const char* buf) { FILE *fp; fp = fopen(filepath,"w+"); fputs(buf,fp); fclose(fp); } static void _text_changed(void *data, Evas_Object *obj, void *event_info) { Evas_Object *entry = obj; const char* const x= elm_object_part_text_get(entry, "elm.text"); char *datapath = app_get_data_path(); char *filepath = strcat(datapath, "/testfile.txt"); write_file(filepath, x); } static void _text_entry_cb(void *data, Evas_Object *obj, void *event_info) { Evas_Object *entry; Evas_Object *layout; Evas_Object *scroller; Evas_Object *nf = (Evas_Object *)data; static Elm_Entry_Filter_Limit_Size limit_filter_data; scroller = elm_scroller_add(nf); evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); layout = elm_layout_add(scroller); elm_layout_file_set(layout, ELM_DEMO_EDJ, "entry_layout"); evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0); entry = elm_entry_add(layout); elm_entry_single_line_set(entry, EINA_FALSE); elm_entry_line_wrap_set(entry, ELM_WRAP_WORD); elm_entry_scrollable_set(entry, EINA_TRUE); //elm_entry_file_set(entry, filepath, ELM_TEXT_FORMAT_PLAIN_UTF8); elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); evas_object_smart_callback_add(entry, "maxlength,reached", maxlength_reached, nf); limit_filter_data.max_char_count = 0; limit_filter_data.max_byte_count = 100; elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data); elm_object_part_text_set(entry, "elm.guide", "input your text"); elm_entry_cursor_end_set(entry); evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_smart_callback_add(entry, "activated", _entry_enter_click, NULL); elm_object_part_content_set(layout, "entry_part", entry); elm_object_content_set(scroller, layout); evas_object_smart_callback_add(entry, "changed,user", _text_changed, data); elm_naviframe_item_push(nf, _("Single line entry"), NULL, NULL, scroller, "empty"); } void entry_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s *ad = (appdata_s *)data; Evas_Object *genlist; Evas_Object *circle_genlist; Evas_Object *nf = ad->nf; Elm_Object_Item *nf_it; Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); Elm_Genlist_Item_Class *ttc = elm_genlist_item_class_new(); Elm_Genlist_Item_Class *ptc = elm_genlist_item_class_new(); item_data *id; int index = 0; genlist = elm_genlist_add(nf); elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); evas_object_smart_callback_add(genlist, "selected", gl_selected_cb, NULL); circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface); eext_circle_object_genlist_scroller_policy_set(circle_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE); ttc->item_style = "title"; ttc->func.text_get = _gl_menu_title_text_get; ttc->func.del = _gl_menu_del; itc->item_style = "default"; itc->func.text_get = _gl_menu_text_get; itc->func.del = _gl_menu_del; ptc->item_style = "padding"; ptc->func.del = _gl_menu_del; elm_genlist_item_append(genlist, ttc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); id = calloc(sizeof(item_data), 1); id->index = index++; id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _text_entry_cb, nf); elm_genlist_item_append(genlist, ptc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_class_free(ttc); elm_genlist_item_class_free(itc); elm_genlist_item_class_free(ptc); nf_it = elm_naviframe_item_push(nf, "Entry", NULL, NULL, genlist, "empty"); }