cxx: Added examples and tutorial for C++ binding
[platform/upstream/elementary.git] / src / examples / slider_cxx_example.cc
1 #include <Elementary.hh>
2
3 EAPI_MAIN int
4 elm_main (int argc, char *argv[])
5 {
6    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN);
7
8    ::elm::win win(elm_win_util_standard_add("slider", "Slider Example"));
9    win.autohide_set(true);
10
11    ::elm::box bx(efl::eo::parent = win);
12    bx.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
13    win.resize_object_add(bx);
14    bx.visible_set(true);
15
16    ::elm::slider sl(efl::eo::parent = win);
17    sl.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
18    sl.size_hint_align_set(EVAS_HINT_FILL, 0.5);
19    bx.pack_end(sl);
20    sl.visible_set(true);
21
22    ::elm::slider sl2(efl::eo::parent = win);
23    sl2.text_set("elm.text", "Counter");
24    ::elm::icon ic(efl::eo::parent = win);
25    ic.standard_set("home");
26    ic.resizable_set(false, false);
27    sl2.content_set("icon", ic);
28
29    ::elm::icon ic2(efl::eo::parent = win);
30    ic2.standard_set("folder");
31    ic2.resizable_set(false, false);
32    sl2.content_set("end", ic2);
33
34    sl2.size_hint_align_set(EVAS_HINT_FILL, 0.5);
35    sl2.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
36    bx.pack_end(sl2);
37    sl2.visible_set(true);
38
39    ::elm::slider sl3(efl::eo::parent = win);
40    sl3.value_set(1);
41    sl3.span_size_set(200);
42    sl3.size_hint_align_set(EVAS_HINT_FILL, 0.5);
43    sl3.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
44    bx.pack_end(sl3);
45    sl3.visible_set(true);
46
47    ::elm::slider sl4(efl::eo::parent = win);
48    sl4.unit_format_set("%1.0f units");
49    sl4.min_max_set(0, 100);
50    sl4.size_hint_align_set(EVAS_HINT_FILL, 0.5);
51    sl4.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
52    bx.pack_end(sl4);
53    sl4.visible_set(true);
54
55    ::elm::slider sl5(efl::eo::parent = win);
56    sl5.indicator_format_set("%1.2f");
57    sl5.inverted_set(true);
58    sl5.size_hint_align_set(EVAS_HINT_FILL, 0.5);
59    sl5.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
60    bx.pack_end(sl5);
61    sl5.visible_set(true);
62
63    ::elm::slider sl6(efl::eo::parent = win);
64    sl6.horizontal_set(false);
65
66    auto indicator_format = [] (double val) {
67                                             char *indicator = new char[32];
68                                             snprintf(indicator, 32, "%1.2f u", val);
69                                             return indicator;
70                                            };
71
72    auto indicator_free = [] (char *obj) {delete obj;} ;
73
74    sl6.indicator_format_function_set(indicator_format, indicator_free);
75
76    sl6.size_hint_align_set(0.5, EVAS_HINT_FILL);
77    sl6.size_hint_weight_set(0, EVAS_HINT_EXPAND);
78    bx.pack_end(sl6);
79    sl6.visible_set(true);
80
81    ::elm::slider sl7(efl::eo::parent = win);
82    sl7.unit_format_set("%1.3f units");
83    sl7.indicator_format_function_set(indicator_format, indicator_free);
84    sl7.size_hint_align_set(EVAS_HINT_FILL, 0.5);
85    sl7.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
86    bx.pack_end(sl7);
87    sl7.visible_set(true);
88
89    auto changed = std::bind ( [] (::elm::slider obj)
90                   {
91                      double val = obj.value_get();
92                      std::cout << "Changed to " << val << std::endl;
93                   } , std::placeholders::_1  );
94
95    auto delay =  std::bind ( [] (::elm::slider obj)
96                  {
97                     double val = obj.value_get();
98                     std::cout << "Delay changed to " << val << std::endl;
99                  } , std::placeholders::_1  );
100
101    sl7.callback_changed_add(changed);
102    sl7.callback_delay_changed_add(delay);
103
104    win.visible_set(true);
105
106    elm_run();
107    return 0;
108 }
109 ELM_MAIN()