2019-05-29 04:03:37 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <Efl_Ui.h>
|
|
|
|
|
|
|
|
const char *countries[] =
|
|
|
|
{
|
|
|
|
"Germany",
|
|
|
|
"USA",
|
|
|
|
"France",
|
|
|
|
"Korea",
|
|
|
|
"UK",
|
|
|
|
"Romania",
|
|
|
|
"Italy",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
#define MAX_INDEX 8
|
|
|
|
|
|
|
|
static void
|
|
|
|
_check_button_selection_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
|
|
|
{
|
2019-08-05 10:42:02 -07:00
|
|
|
if (efl_ui_selectable_selected_get(ev->object))
|
2019-05-29 04:03:37 -07:00
|
|
|
printf("Object %p is now selected\n", ev->object);
|
|
|
|
else
|
|
|
|
printf("Object %p is now unselected\n", ev->object);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Array*
|
|
|
|
create_radios(Efl_Ui_Win *win)
|
|
|
|
{
|
|
|
|
Eina_Array *arr = eina_array_new(5);
|
|
|
|
|
|
|
|
for (unsigned int i = 0; countries[i]; ++i)
|
|
|
|
{
|
|
|
|
Efl_Ui_Radio *rbtn = efl_add(EFL_UI_RADIO_CLASS, win);
|
|
|
|
efl_ui_radio_state_value_set(rbtn, i);
|
|
|
|
efl_text_set(rbtn, countries[i]);
|
2019-08-05 10:42:02 -07:00
|
|
|
efl_event_callback_add(rbtn, EFL_UI_EVENT_SELECTED_CHANGED, _check_button_selection_changed_cb, NULL);
|
2019-05-29 04:03:37 -07:00
|
|
|
eina_array_push(arr, rbtn);
|
|
|
|
}
|
|
|
|
|
|
|
|
return arr;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_value_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Efl_Ui_Radio_Group *g = ev->object;
|
|
|
|
int index = efl_ui_radio_group_selected_value_get(g);
|
|
|
|
if (index == -1)
|
|
|
|
{
|
|
|
|
printf("Nothing is selected anymore\n");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_FALSE_RETURN((index >= 0) && index < MAX_INDEX);
|
|
|
|
printf("Now selected value %s\n", countries[index]);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_select_btn_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Efl_Ui_Check *c = data;
|
|
|
|
|
2019-08-05 10:42:02 -07:00
|
|
|
efl_ui_selectable_selected_set(c, EINA_TRUE);
|
2019-05-29 04:03:37 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_set_selected_btn_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Efl_Ui_Radio_Group *group = data;
|
|
|
|
|
|
|
|
efl_ui_radio_group_selected_value_set(group, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2019-08-22 06:06:22 -07:00
|
|
|
_set_fallback_radio_btn_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
|
2019-05-29 04:03:37 -07:00
|
|
|
{
|
2019-09-26 02:16:24 -07:00
|
|
|
if (!efl_ui_selectable_fallback_selection_get(data))
|
|
|
|
efl_ui_selectable_fallback_selection_set(data, efl_pack_content_get(data, 4));
|
2019-08-22 06:06:22 -07:00
|
|
|
else
|
2019-09-26 02:16:24 -07:00
|
|
|
efl_ui_selectable_fallback_selection_set(data, NULL);
|
2019-05-29 04:03:37 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_efl_ui_radio(void *data EINA_UNUSED,
|
2019-09-27 08:04:38 -07:00
|
|
|
Eo *obj EINA_UNUSED,
|
2019-05-29 04:03:37 -07:00
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Efl_Ui_Win *win;
|
|
|
|
Efl_Ui_Table *table;
|
|
|
|
Efl_Ui_Box *bx;
|
|
|
|
Eina_Array *arr;
|
|
|
|
Efl_Ui_Button *o;
|
|
|
|
|
|
|
|
win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
|
2019-09-20 05:57:09 -07:00
|
|
|
efl_text_set(efl_added, "Efl.Ui.Radio_Box"),
|
2019-05-29 04:03:37 -07:00
|
|
|
efl_ui_win_autodel_set(efl_added, EINA_TRUE));
|
|
|
|
table = efl_add(EFL_UI_TABLE_CLASS, win);
|
|
|
|
efl_content_set(win, table);
|
|
|
|
|
|
|
|
bx = efl_add(EFL_UI_RADIO_BOX_CLASS, table);
|
|
|
|
efl_pack_table(table, bx, 0, 0, 1, 3);
|
|
|
|
efl_event_callback_add(bx, EFL_UI_RADIO_GROUP_EVENT_VALUE_CHANGED, _value_changed_cb, NULL);
|
|
|
|
|
|
|
|
arr = create_radios(win);
|
|
|
|
for (unsigned int i = 0; i < eina_array_count(arr); ++i)
|
|
|
|
{
|
|
|
|
Efl_Ui_Radio *r = eina_array_data_get(arr, i);
|
|
|
|
efl_pack_end(bx, r);
|
|
|
|
}
|
|
|
|
|
|
|
|
o = efl_add(EFL_UI_BUTTON_CLASS, table);
|
|
|
|
efl_pack_table(table, o, 1, 0, 1, 1);
|
|
|
|
efl_text_set(o, "Selected France check");
|
2019-07-29 02:42:34 -07:00
|
|
|
efl_event_callback_add(o, EFL_INPUT_EVENT_CLICKED, _select_btn_clicked, eina_array_data_get(arr, 2));
|
2019-05-29 04:03:37 -07:00
|
|
|
|
|
|
|
o = efl_add(EFL_UI_BUTTON_CLASS, table);
|
|
|
|
efl_pack_table(table, o, 1, 1, 1, 1);
|
|
|
|
efl_text_set(o, "Set value for Germany");
|
2019-07-29 02:42:34 -07:00
|
|
|
efl_event_callback_add(o, EFL_INPUT_EVENT_CLICKED, _set_selected_btn_clicked, bx);
|
2019-05-29 04:03:37 -07:00
|
|
|
|
|
|
|
o = efl_add(EFL_UI_BUTTON_CLASS, table);
|
|
|
|
efl_pack_table(table, o, 1, 2, 1, 1);
|
2019-08-22 06:06:22 -07:00
|
|
|
efl_text_set(o, "Fallback set to UK");
|
|
|
|
efl_event_callback_add(o, EFL_INPUT_EVENT_CLICKED, _set_fallback_radio_btn_clicked, bx);
|
2019-05-29 04:03:37 -07:00
|
|
|
|
|
|
|
eina_array_free(arr);
|
|
|
|
}
|