summaryrefslogtreecommitdiff
path: root/src/examples
diff options
context:
space:
mode:
authorShobhit <s.parashari@samsung.com>2015-04-17 17:11:28 +0900
committerChunEon Park <hermet@hermet.pe.kr>2015-04-17 17:11:28 +0900
commitd0507e117acd5bbfdecf4c43f1d338c00802af44 (patch)
tree1d16da73fa1673c6ddf41ea5845151f0120c4dc6 /src/examples
parentf80ed2f5ecadc6293150922d086aab0fcaa7da64 (diff)
downloadelementary-d0507e117acd5bbfdecf4c43f1d338c00802af44.tar.gz
checkbox: Adding third state (Indeterminate) support in checkbox
Summary: Checkbox should support a third state "indeterminate" along with "Checked" and "Unchecked" This third state is a state of checkbox which is shown when checkbox is neither Checked nor Unchecked. - Added this new feature on the basis of a boolean variable's value. - By default this boolean variable is disabled and checkbox will treat like old way. - While adding this, I kept in mind, that applications which are already using checkbox, should not be affected, so I used 0=False=Unchecked, 1=True=Checked, and 2=Indeterminate - Also added an example check_example_o2.c, which is using checkbox with both ways, using boolean, and using enum. - Now also values can be set using boolean values, but it will give a type casting warning. As a boolean doen't support third state, so I used an enum int like. - Added APIs to enable disable third state mode. elm_check_three_state_mode_set(check_obj, bool_val), and elm_check_three_state_mode_get(check_obj) - Modified old APIs which were setting or getting states of checkbox. - Added a state in theme of checkbox, with third state image. Reviewers: seoz, raster, Sergeant_Whitespace, Hermet Subscribers: Hermet, Sergeant_Whitespace, sachin.dev Differential Revision: https://phab.enlightenment.org/D2249
Diffstat (limited to 'src/examples')
-rw-r--r--src/examples/check_example_02.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/examples/check_example_02.c b/src/examples/check_example_02.c
new file mode 100644
index 000000000..6aa0a1cfd
--- /dev/null
+++ b/src/examples/check_example_02.c
@@ -0,0 +1,111 @@
+//Compile with:
+//gcc -o check_example_02 check_example_02.c -g `pkg-config --cflags --libs elementary` && ./check_example_02
+
+#include <Elementary.h>
+
+Evas_Object *cb, *cb1, *cb2, *cb3;
+
+static void
+_print(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!elm_check_three_state_mode_get(cb))
+ {
+ printf("check0 %smarked\n", *((Eina_Bool*)data) ? "" : "un");
+ }
+ else
+ {
+ printf("check0 elm_check_state_get() value is %d (%s)\n", elm_check_state_get(cb), *((Eina_Bool*)data) ? "EINA_TRUE" : "EINA_FALSE");
+ }
+}
+
+static void
+_print1(void *data, Evas_Object *obj, void *event_info)
+{
+ Check_State st = elm_check_state_get(cb1);
+ if (st == _CHECK_STATE_CHECKED)
+ printf("check1 elm_check_state_get() value is %d (%s)\n", st, "_CHECK_STATE_CHECKED");
+ else if (st == _CHECK_STATE_INDETERMINATE)
+ printf("check1 elm_check_state_get() value is %d (%s)\n", st, "_CHECK_STATE_INDETERMINATE");
+ else
+ printf("check1 elm_check_state_get() value is %d (%s)\n", st, "_CHECK_STATE_UNCHECKED");
+}
+
+static void
+_print2(void *data, Evas_Object *obj, void *event_info)
+{
+ printf("Currently three state mode is: %s\n", elm_check_three_state_mode_get(cb) ? "On" : "Off");
+ elm_check_three_state_mode_set(cb, elm_check_state_get(cb2));
+ elm_check_three_state_mode_set(cb1, elm_check_state_get(cb2));
+ printf("Three state mode is changed to: %s\n", elm_check_three_state_mode_get(cb) ? "On" : "Off");
+}
+
+static void
+_print3(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_object_disabled_set(cb, elm_check_state_get(cb3));
+ elm_object_disabled_set(cb1, elm_check_state_get(cb3));
+ printf("Checkbox disable mode is : %s\n", elm_check_state_get(cb3) ? "Enabled" : "Disabled");
+}
+
+EAPI_MAIN int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *win, *icon;
+ Eina_Bool value, *value2, *value3;
+ Check_State *value1;
+
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+
+ win = elm_win_util_standard_add("check", "Check");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ cb = elm_check_add(win);
+ elm_object_text_set(cb, "check0 using bool");
+ elm_check_state_pointer_set(cb, &value);
+ elm_check_state_set(cb, EINA_FALSE);
+ evas_object_smart_callback_add(cb, "changed", _print, &value);
+ evas_object_move(cb, 10, 10);
+ evas_object_resize(cb, 250, 30);
+ evas_object_show(cb);
+
+ cb1 = elm_check_add(win);
+ elm_object_text_set(cb1, "check1 using enum");
+ elm_check_state_pointer_set(cb1, (Check_State *)&value1);
+ elm_check_state_set(cb1, (Check_State)_CHECK_STATE_CHECKED);
+ evas_object_smart_callback_add(cb1, "changed", _print1, &value1);
+ evas_object_move(cb1, 10, 50);
+ evas_object_resize(cb1, 250, 30);
+ evas_object_show(cb1);
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(icon, 0, 255, 0, 255);
+ evas_object_resize(icon, 20, 20);
+ evas_object_show(icon);
+
+ cb2 = elm_check_add(win);
+ elm_object_text_set(cb2, "Enable three state mode in above checkboxes");
+ elm_check_state_pointer_set(cb2, (Check_State *)&value2);
+ elm_check_state_set(cb2, (Check_State)_CHECK_STATE_UNCHECKED);
+ evas_object_smart_callback_add(cb2, "changed", _print2, &value2);
+ elm_object_part_content_set(cb2, "icon", icon);
+ evas_object_move(cb2, 10, 90);
+ evas_object_resize(cb2, 250, 30);
+ evas_object_show(cb2);
+
+ cb3 = elm_check_add(win);
+ elm_object_text_set(cb3, "Enable/Disable checkboxes");
+ elm_check_state_pointer_set(cb3, (Check_State *)&value3);
+ elm_check_state_set(cb3, (Check_State)_CHECK_STATE_UNCHECKED);
+ evas_object_smart_callback_add(cb3, "changed", _print3, &value3);
+ evas_object_move(cb3, 10, 130);
+ evas_object_resize(cb3, 250, 30);
+ evas_object_show(cb3);
+
+ evas_object_resize(win, 200, 190);
+ evas_object_show(win);
+
+ elm_run();
+
+ return 0;
+}
+ELM_MAIN()