tizen 2.4 release
[framework/uifw/elementary.git] / src / examples / fileselector_entry_example.c
1 /**
2  * Simple Elementary's <b>file selector entry widget</b> example,
3  * illustrating its usage and API.
4  *
5  * See stdout/stderr for output. Compile with:
6  *
7  * @verbatim
8  * gcc -g fileselector_entry_example.c -o fileselector_entry_example `pkg-config --cflags --libs elementary`
9  * @endverbatim
10  */
11
12 #include <Elementary.h>
13
14 /* hook on the file,chosen smart callback */
15 static void
16 _file_chosen(void        *data,
17              Evas_Object *obj,
18              void        *event_info)
19 {
20    const char *file = event_info;
21
22    if (file)
23      printf("File chosen: %s\n", file);
24    else
25      printf("File selection canceled.\n");
26 }
27
28 /* toggle inwin mode */
29 static void
30 _inwin_mode_toggle(void        *data,
31                    Evas_Object *obj,
32                    void        *event_info)
33 {
34    Evas_Object *fs_entry = data;
35    Eina_Bool old_val = elm_fileselector_entry_inwin_mode_get(fs_entry);
36
37    elm_fileselector_entry_inwin_mode_set(fs_entry, !old_val);
38    printf("Inwin mode set to: %s\n", old_val ? "false" : "true");
39 }
40
41 static void
42 _current_sel_toggle(void        *data,
43                     Evas_Object *obj,
44                     void        *event_info)
45 {
46    Evas_Object *fs_entry = data;
47    Eina_Bool old_val = elm_fileselector_is_save_get(fs_entry);
48    elm_fileselector_is_save_set(fs_entry, !old_val);
49
50    printf("%s text entry with selected item's name\n",
51           old_val ? "Disabling" : "Enabling");
52 }
53
54 static void
55 _folder_only_toggle(void        *data,
56                     Evas_Object *obj,
57                     void        *event_info)
58 {
59    Evas_Object *fs_entry = data;
60    Eina_Bool old_val = elm_fileselector_folder_only_get(fs_entry);
61    elm_fileselector_folder_only_set(fs_entry, !old_val);
62
63    printf("Folder only mode set to: %s\n", old_val ? "false" : "true");
64 }
65
66 static void
67 _expandable_toggle(void        *data,
68                    Evas_Object *obj,
69                    void        *event_info)
70 {
71    Evas_Object *fs_entry = data;
72    Eina_Bool old_val = elm_fileselector_expandable_get(fs_entry);
73    elm_fileselector_expandable_set(fs_entry, !old_val);
74
75    printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
76 }
77
78 EAPI_MAIN int
79 elm_main(int    argc,
80          char **argv)
81 {
82    Evas_Object *win, *vbox, *hbox, *ic, *ck, *fs_entry, *sep;
83
84    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
85
86    win = elm_win_util_standard_add("fileselector-entry", "File Selector Entry Example");
87    elm_win_autodel_set(win, EINA_TRUE);
88
89    vbox = elm_box_add(win);
90    evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91    elm_win_resize_object_add(win, vbox);
92    evas_object_show(vbox);
93
94    ic = elm_icon_add(win);
95    elm_icon_standard_set(ic, "file");
96    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
97
98    /* file selector entry */
99    fs_entry = elm_fileselector_entry_add(win);
100    evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
101    elm_fileselector_path_set(fs_entry, "/tmp");
102    elm_object_text_set(fs_entry, "Select a file");
103    elm_object_part_content_set(fs_entry, "button icon", ic);
104
105    elm_box_pack_end(vbox, fs_entry);
106    evas_object_show(fs_entry);
107    evas_object_show(ic);
108
109    /* attribute setting knobs */
110    sep = elm_separator_add(win);
111    elm_separator_horizontal_set(sep, EINA_TRUE);
112    elm_box_pack_end(vbox, sep);
113    evas_object_show(sep);
114
115    hbox = elm_box_add(win);
116    elm_box_horizontal_set(hbox, EINA_TRUE);
117    elm_box_pack_end(vbox, hbox);
118    evas_object_show(hbox);
119
120    ck = elm_check_add(win);
121    elm_object_text_set(ck, "editable selection");
122    elm_check_state_set(ck, elm_fileselector_is_save_get(fs_entry));
123    evas_object_smart_callback_add(ck, "changed", _current_sel_toggle, fs_entry);
124    elm_box_pack_end(hbox, ck);
125    evas_object_show(ck);
126
127    ck = elm_check_add(win);
128    elm_object_text_set(ck, "\"inwin\" mode");
129    elm_check_state_set(ck, elm_fileselector_entry_inwin_mode_get(fs_entry));
130    evas_object_smart_callback_add(ck, "changed", _inwin_mode_toggle, fs_entry);
131    elm_box_pack_end(hbox, ck);
132    evas_object_show(ck);
133
134    ck = elm_check_add(win);
135    elm_object_text_set(ck, "folders only");
136    elm_check_state_set(ck, elm_fileselector_folder_only_get(fs_entry));
137    evas_object_smart_callback_add(ck, "changed", _folder_only_toggle, fs_entry);
138    elm_box_pack_end(hbox, ck);
139    evas_object_show(ck);
140
141    ck = elm_check_add(win);
142    elm_object_text_set(ck, "expandable");
143    elm_check_state_set(ck, elm_fileselector_expandable_get(fs_entry));
144    evas_object_smart_callback_add(ck, "changed", _expandable_toggle, fs_entry);
145    elm_box_pack_end(hbox, ck);
146    evas_object_show(ck);
147
148    evas_object_smart_callback_add(fs_entry, "file,chosen", _file_chosen, NULL);
149
150    evas_object_resize(win, 400, 400);
151    evas_object_show(win);
152
153    elm_run();
154
155    return 0;
156 }
157 ELM_MAIN()