efl
4564 строки · 148.9 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4#include <Elementary.h>5
6typedef struct _Theme Theme;7typedef struct _Fonts_Data Fonts_Data;8typedef struct _Elm_Text_Class_Data Elm_Text_Class_Data;9typedef struct _Elm_Font_Size_Data Elm_Font_Size_Data;10
11struct _Theme12{
13const char *label;14const char *name;15const char *path;16Eina_Bool in_search_path;17};18
19static const Eina_List *tsel = NULL;20static Eina_List *themes = NULL;21
22struct _Elm_Text_Class_Data23{
24const char *name;25const char *desc;26const char *font;27const char *style;28Evas_Font_Size size;29};30
31struct _Elm_Font_Size_Data32{
33const char *size_str;34Evas_Font_Size size;35};36
37struct _Fonts_Data38{
39Eina_List *text_classes;40
41Eina_Hash *font_hash;42Eina_List *font_px_list;43Eina_List *font_scale_list;44
45const char *cur_font;46const char *cur_style;47double cur_size;48};49
50#define ELM_LIST_DISABLE(list) \51do \52{ \53const Eina_List *_l = elm_list_items_get(list); \54if (_l) \55{ \56elm_list_item_show(eina_list_data_get(_l));\57elm_object_disabled_set(list, EINA_TRUE); \58} \59} \60while (0)61
62#define ELM_LIST_ENABLE(list) \63do \64{ \65elm_object_disabled_set(list, EINA_FALSE); \66} \67while (0)68
69#define LABEL_FRAME_ADD(label) \70do \71{ \72pd = elm_frame_add(win); \73evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0); \74evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5); \75elm_object_style_set(pd, "pad_medium"); \76elm_box_pack_end(bx, pd); \77evas_object_show(pd); \78\79lb = elm_label_add(win); \80evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); \81evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5); \82elm_object_text_set(lb, label); \83elm_object_content_set(pd, lb); \84evas_object_show(lb); \85} \86while (0)87
88#define CHECK_ADD(_label, _desc, _cb, _cb_param) \89ck = elm_check_add(win); \90elm_object_text_set(ck, _label); \91elm_object_tooltip_text_set(ck, _desc); \92evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0); \93evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5); \94elm_box_pack_end(bx, ck); \95evas_object_show(ck); \96evas_object_smart_callback_add(ck, "changed", _cb, _cb_param);97
98static int quiet = 0;99static int interactive = 1;100
101static const char *theme_set = NULL;102static const char *finger_size_set = NULL;103static const char *scale_set = NULL;104static const char *web_backend = NULL;105static Fonts_Data fndata = {NULL, NULL, NULL, NULL, NULL, NULL, 0.0};106static Evas_Object *web_backend_entry = NULL;107static Evas_Object *icon_theme_list = NULL,*icon_theme_elm = NULL;108static Evas_Object *icon_preview_frame;109
110static void111_font_styles_list_sel(void *data EINA_UNUSED,112Evas_Object *obj,113void *event_info);114
115static void116config_exit(void *data EINA_UNUSED,117Evas_Object *obj EINA_UNUSED,118void *event_info EINA_UNUSED)119{
120Elm_Text_Class_Data *tc_data;121Elm_Font_Size_Data *sd;122
123EINA_LIST_FREE(fndata.text_classes, tc_data)124{125eina_stringshare_del(tc_data->name);126eina_stringshare_del(tc_data->desc);127eina_stringshare_del(tc_data->font);128eina_stringshare_del(tc_data->style);129free(tc_data);130}131
132elm_font_available_hash_del(fndata.font_hash);133fndata.font_hash = NULL;134
135EINA_LIST_FREE(fndata.font_px_list, sd)136{137eina_stringshare_del(sd->size_str);138free(sd);139}140
141EINA_LIST_FREE(fndata.font_scale_list, sd)142{143eina_stringshare_del(sd->size_str);144free(sd);145}146
147if (fndata.cur_font) eina_stringshare_del(fndata.cur_font);148fndata.cur_font = NULL;149
150if (fndata.cur_style) eina_stringshare_del(fndata.cur_style);151fndata.cur_style = NULL;152
153elm_config_save();154efl_exit(0); /* exit the program's main loop that runs in elm_run() */155}
156
157static void158scroll_animation_disable_change(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)159{
160Eina_Bool val = elm_check_state_get(obj);161Eina_Bool sb = elm_config_scroll_animation_disabled_get();162
163if (val == sb) return;164elm_config_scroll_animation_disabled_set(val);165elm_config_all_flush();166}
167
168static void169scroll_accel_factor_change(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)170{
171double bf = elm_config_scroll_accel_factor_get();172double val = elm_slider_value_get(obj);173
174if (fabs(bf - val) < DBL_EPSILON) return;175elm_config_scroll_accel_factor_set(val);176elm_config_all_flush();177}
178
179static void180sb_change(void *data EINA_UNUSED,181Evas_Object *obj,182void *event_info EINA_UNUSED)183{
184Eina_Bool val = elm_check_state_get(obj);185Eina_Bool sb = elm_config_scroll_bounce_enabled_get();186
187if (val == sb) return;188elm_config_scroll_bounce_enabled_set(val);189elm_config_all_flush();190
191/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/192}
193
194static void195ss_change(void *data EINA_UNUSED,196Evas_Object *obj,197void *event_info EINA_UNUSED)198{
199Eina_Bool val = elm_check_state_get(obj);200Eina_Bool ss = elm_config_scroll_thumbscroll_smooth_start_get();201
202if (val == ss) return;203elm_config_scroll_thumbscroll_smooth_start_set(val);204elm_config_all_flush();205}
206
207static void208bf_round(void *data EINA_UNUSED,209Evas_Object *obj,210void *event_info EINA_UNUSED)211{
212double val = elm_slider_value_get(obj);213double v;214
215v = ((double)((int)(val * 10.0))) / 10.0;216if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);217}
218
219static void220bf_change(void *data EINA_UNUSED,221Evas_Object *obj,222void *event_info EINA_UNUSED)223{
224double bf = elm_config_scroll_bounce_friction_get();225double val = elm_slider_value_get(obj);226
227if (EINA_DBL_EQ(bf, val)) return;228elm_config_scroll_bounce_friction_set(val);229elm_config_all_flush();230}
231
232static void233ps_round(void *data EINA_UNUSED,234Evas_Object *obj,235void *event_info EINA_UNUSED)236{
237double val = elm_slider_value_get(obj);238double v;239
240v = ((double)((int)(val * 10.0))) / 10.0;241if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);242}
243
244static void245ps_change(void *data EINA_UNUSED,246Evas_Object *obj,247void *event_info EINA_UNUSED)248{
249double ps = elm_config_scroll_page_scroll_friction_get();250double val = elm_slider_value_get(obj);251
252if (EINA_DBL_EQ(ps, val)) return;253elm_config_scroll_page_scroll_friction_set(val);254elm_config_all_flush();255}
256
257static void258bis_round(void *data EINA_UNUSED,259Evas_Object *obj,260void *event_info EINA_UNUSED)261{
262double val = elm_slider_value_get(obj);263double v;264
265v = ((double)((int)(val * 10.0))) / 10.0;266if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);267}
268
269static void270bis_change(void *data EINA_UNUSED,271Evas_Object *obj,272void *event_info EINA_UNUSED)273{
274double bis = elm_config_scroll_bring_in_scroll_friction_get();275double val = elm_slider_value_get(obj);276
277if (EINA_DBL_EQ(bis, val)) return;278elm_config_scroll_bring_in_scroll_friction_set(val);279elm_config_all_flush();280}
281
282static void283zf_round(void *data EINA_UNUSED,284Evas_Object *obj,285void *event_info EINA_UNUSED)286{
287double val = elm_slider_value_get(obj);288double v;289
290v = ((double)((int)(val * 10.0))) / 10.0;291if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);292}
293
294static void295zf_change(void *data EINA_UNUSED,296Evas_Object *obj,297void *event_info EINA_UNUSED)298{
299double zf = elm_config_scroll_zoom_friction_get();300double val = elm_slider_value_get(obj);301
302if (EINA_DBL_EQ(zf, val)) return;303elm_config_scroll_zoom_friction_set(val);304elm_config_all_flush();305}
306
307static void308smooth_round(void *data EINA_UNUSED,309Evas_Object *obj,310void *event_info EINA_UNUSED)311{
312double val = elm_slider_value_get(obj);313double v;314
315v = ((double)((int)(val * 100.0))) / 100.0;316if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);317}
318
319static void320smooth_change(void *data EINA_UNUSED,321Evas_Object *obj,322void *event_info EINA_UNUSED)323{
324double zf = elm_config_scroll_thumbscroll_smooth_amount_get();325double val = elm_slider_value_get(obj);326
327if (EINA_DBL_EQ(zf, val)) return;328elm_config_scroll_thumbscroll_smooth_amount_set(val);329elm_config_all_flush();330}
331
332static void333smooth_win_round(void *data EINA_UNUSED,334Evas_Object *obj,335void *event_info EINA_UNUSED)336{
337double val = elm_slider_value_get(obj);338double v;339
340v = ((double)((int)(val * 100.0))) / 100.0;341if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);342}
343
344static void345smooth_win_change(void *data EINA_UNUSED,346Evas_Object *obj,347void *event_info EINA_UNUSED)348{
349double zf = elm_config_scroll_thumbscroll_smooth_time_window_get();350double val = elm_slider_value_get(obj);351
352if (EINA_DBL_EQ(zf, val)) return;353elm_config_scroll_thumbscroll_smooth_time_window_set(val);354elm_config_all_flush();355}
356
357static void358ts_change(void *data EINA_UNUSED,359Evas_Object *obj,360void *event_info EINA_UNUSED)361{
362Eina_Bool val = elm_check_state_get(obj);363Eina_Bool sb = elm_config_scroll_thumbscroll_enabled_get();364
365if (val == sb) return;366elm_config_scroll_thumbscroll_enabled_set(val);367elm_config_all_flush();368
369/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/370}
371
372static void373tst_round(void *data EINA_UNUSED,374Evas_Object *obj,375void *event_info EINA_UNUSED)376{
377double val = elm_slider_value_get(obj);378double v;379
380v = ((double)((int)(val * 10.0))) / 10.0;381if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);382}
383
384static void385tst_change(void *data EINA_UNUSED,386Evas_Object *obj,387void *event_info EINA_UNUSED)388{
389double tst = elm_config_scroll_thumbscroll_threshold_get();390double val = elm_slider_value_get(obj);391
392if (EINA_DBL_EQ(tst, val)) return;393elm_config_scroll_thumbscroll_threshold_set(val);394elm_config_all_flush();395}
396
397static void398tsht_round(void *data EINA_UNUSED,399Evas_Object *obj,400void *event_info EINA_UNUSED)401{
402double val = elm_slider_value_get(obj);403double v;404
405v = ((double)((int)(val * 10.0))) / 10.0;406if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);407}
408
409static void410tsht_change(void *data EINA_UNUSED,411Evas_Object *obj,412void *event_info EINA_UNUSED)413{
414double tst = elm_config_scroll_thumbscroll_hold_threshold_get();415double val = elm_slider_value_get(obj);416
417if (EINA_DBL_EQ(tst, val)) return;418elm_config_scroll_thumbscroll_hold_threshold_set(val);419elm_config_all_flush();420}
421
422static void423tsmt_round(void *data EINA_UNUSED,424Evas_Object *obj,425void *event_info EINA_UNUSED)426{
427double val = elm_slider_value_get(obj);428double v;429
430v = ((double)((int)(val * 10.0))) / 10.0;431if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);432}
433
434static void435tsmt_change(void *data EINA_UNUSED,436Evas_Object *obj,437void *event_info EINA_UNUSED)438{
439double tsmt = elm_config_scroll_thumbscroll_momentum_threshold_get();440double val = elm_slider_value_get(obj);441
442if (EINA_DBL_EQ(tsmt, val)) return;443elm_config_scroll_thumbscroll_momentum_threshold_set(val);444elm_config_all_flush();445}
446
447static void448tsfdt_round(void *data EINA_UNUSED,449Evas_Object *obj,450void *event_info EINA_UNUSED)451{
452double val = elm_slider_value_get(obj);453double v;454
455v = ((double)((int)(val * 10.0))) / 10.0;456if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);457}
458
459static void460tsfdt_change(void *data EINA_UNUSED,461Evas_Object *obj,462void *event_info EINA_UNUSED)463{
464double tsfdt = elm_config_scroll_thumbscroll_flick_distance_tolerance_get();465double val = elm_slider_value_get(obj);466
467if (EINA_DBL_EQ(tsfdt, val)) return;468elm_config_scroll_thumbscroll_flick_distance_tolerance_set(val);469elm_config_all_flush();470}
471
472static void473tsf_round(void *data EINA_UNUSED,474Evas_Object *obj,475void *event_info EINA_UNUSED)476{
477double val = elm_slider_value_get(obj);478double v;479
480v = ((double)((int)(val * 10.0))) / 10.0;481if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);482}
483
484static void485tsf_change(void *data EINA_UNUSED,486Evas_Object *obj,487void *event_info EINA_UNUSED)488{
489double tsf = elm_config_scroll_thumbscroll_friction_get();490double val = elm_slider_value_get(obj);491
492if (EINA_DBL_EQ(tsf, val)) return;493elm_config_scroll_thumbscroll_friction_set(val);494elm_config_all_flush();495}
496
497static void498tsmf_round(void *data EINA_UNUSED,499Evas_Object *obj,500void *event_info EINA_UNUSED)501{
502double val = elm_slider_value_get(obj);503double v;504
505v = ((double)((int)(val * 10.0))) / 10.0;506if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);507}
508
509static void510tsmf_change(void *data EINA_UNUSED,511Evas_Object *obj,512void *event_info EINA_UNUSED)513{
514double tsmf = elm_config_scroll_thumbscroll_min_friction_get();515double val = elm_slider_value_get(obj);516
517if (EINA_DBL_EQ(tsmf, val)) return;518elm_config_scroll_thumbscroll_min_friction_set(val);519elm_config_all_flush();520}
521
522static void523tsfs_round(void *data EINA_UNUSED,524Evas_Object *obj,525void *event_info EINA_UNUSED)526{
527double val = elm_slider_value_get(obj);528double v;529
530v = ((double)((int)(val * 10.0))) / 10.0;531if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);532}
533
534static void535tsfs_change(void *data EINA_UNUSED,536Evas_Object *obj,537void *event_info EINA_UNUSED)538{
539double tsfs = elm_config_scroll_thumbscroll_friction_standard_get();540double val = elm_slider_value_get(obj);541
542if (EINA_DBL_EQ(tsfs, val)) return;543elm_config_scroll_thumbscroll_friction_standard_set(val);544elm_config_all_flush();545}
546
547static void548tsbf_round(void *data EINA_UNUSED,549Evas_Object *obj,550void *event_info EINA_UNUSED)551{
552double val = elm_slider_value_get(obj);553double v;554
555v = ((double)((int)(val * 10.0))) / 10.0;556if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);557}
558
559static void560tsbf_change(void *data EINA_UNUSED,561Evas_Object *obj,562void *event_info EINA_UNUSED)563{
564double tsbf = elm_config_scroll_thumbscroll_border_friction_get();565double val = elm_slider_value_get(obj);566
567if (EINA_DBL_EQ(tsbf, val)) return;568elm_config_scroll_thumbscroll_border_friction_set(val);569elm_config_all_flush();570}
571
572static void573tssf_round(void *data EINA_UNUSED,574Evas_Object *obj,575void *event_info EINA_UNUSED)576{
577double val = elm_slider_value_get(obj);578double v;579
580v = ((double)((int)(val * 20.0))) / 20.0;581if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);582}
583
584static void585tssf_change(void *data EINA_UNUSED,586Evas_Object *obj,587void *event_info EINA_UNUSED)588{
589double tssf = elm_config_scroll_thumbscroll_sensitivity_friction_get();590double val = elm_slider_value_get(obj);591
592if (EINA_DBL_EQ(tssf, val)) return;593elm_config_scroll_thumbscroll_sensitivity_friction_set(val);594elm_config_all_flush();595}
596
597static void598tsat_round(void *data EINA_UNUSED,599Evas_Object *obj,600void *event_info EINA_UNUSED)601{
602double val = elm_slider_value_get(obj);603double v;604
605v = ((double)((int)(val * 10.0))) / 10.0;606if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);607}
608
609static void610tsat_change(void *data EINA_UNUSED,611Evas_Object *obj,612void *event_info EINA_UNUSED)613{
614double tsat = elm_config_scroll_thumbscroll_acceleration_threshold_get();615double val = elm_slider_value_get(obj);616
617if (EINA_DBL_EQ(tsat, val)) return;618elm_config_scroll_thumbscroll_acceleration_threshold_set(val);619elm_config_all_flush();620}
621
622static void623tsatl_round(void *data EINA_UNUSED,624Evas_Object *obj,625void *event_info EINA_UNUSED)626{
627double val = elm_slider_value_get(obj);628double v;629
630v = ((double)((int)(val * 10.0))) / 10.0;631if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);632}
633
634static void635tsatl_change(void *data EINA_UNUSED,636Evas_Object *obj,637void *event_info EINA_UNUSED)638{
639double tsatl = elm_config_scroll_thumbscroll_acceleration_time_limit_get();640double val = elm_slider_value_get(obj);641
642if (EINA_DBL_EQ(tsatl, val)) return;643elm_config_scroll_thumbscroll_acceleration_time_limit_set(val);644elm_config_all_flush();645}
646
647static void648tsaw_round(void *data EINA_UNUSED,649Evas_Object *obj,650void *event_info EINA_UNUSED)651{
652double val = elm_slider_value_get(obj);653double v;654
655v = ((double)((int)(val * 10.0))) / 10.0;656if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);657}
658
659static void660tsaw_change(void *data EINA_UNUSED,661Evas_Object *obj,662void *event_info EINA_UNUSED)663{
664double tsaw = elm_config_scroll_thumbscroll_acceleration_weight_get();665double val = elm_slider_value_get(obj);666
667if (EINA_DBL_EQ(tsaw, val)) return;668elm_config_scroll_thumbscroll_acceleration_weight_set(val);669elm_config_all_flush();670}
671
672static void673cf_enable(void *data,674Evas_Object *obj,675void *event_info EINA_UNUSED)676{
677Eina_Bool cf = elm_config_cache_flush_enabled_get();678Eina_Bool val = elm_check_state_get(obj);679
680if (cf == val) return;681elm_object_disabled_set((Evas_Object *)data, !val);682elm_config_cache_flush_enabled_set(val);683elm_config_all_flush();684}
685
686static void687cf_round(void *data EINA_UNUSED,688Evas_Object *obj,689void *event_info EINA_UNUSED)690{
691double val = elm_slider_value_get(obj);692double v;693
694v = ((double)((int)(val * 5.0))) / 5.0;695if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);696}
697
698static void699cf_change(void *data EINA_UNUSED,700Evas_Object *obj,701void *event_info EINA_UNUSED)702{
703double cf = elm_config_cache_flush_interval_get();704double val = elm_slider_value_get(obj);705
706if (EINA_DBL_EQ(cf, val)) return;707elm_config_cache_flush_interval_set(val);708elm_config_all_flush();709}
710
711static void712fc_round(void *data EINA_UNUSED,713Evas_Object *obj,714void *event_info EINA_UNUSED)715{
716double val = elm_slider_value_get(obj);717double v;718
719v = ((double)((int)(val * 10.0))) / 10.0;720if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);721}
722
723static void724fc_change(void *data EINA_UNUSED,725Evas_Object *obj,726void *event_info EINA_UNUSED)727{
728double font_cache = elm_config_cache_font_cache_size_get();729double val = elm_slider_value_get(obj);730
731if (EINA_DBL_EQ(font_cache, val)) return;732elm_config_cache_font_cache_size_set(val * 1024);733elm_config_all_flush();734}
735
736static void737ic_round(void *data EINA_UNUSED,738Evas_Object *obj,739void *event_info EINA_UNUSED)740{
741double val = elm_slider_value_get(obj);742double v;743
744v = ((double)((int)(val * 10.0))) / 10.0;745if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);746}
747
748static void749ic_change(void *data EINA_UNUSED,750Evas_Object *obj,751void *event_info EINA_UNUSED)752{
753double image_cache = elm_config_cache_image_cache_size_get();754double val = elm_slider_value_get(obj);755
756if (EINA_DBL_EQ(image_cache, val)) return;757elm_config_cache_image_cache_size_set(val * 1024);758elm_config_all_flush();759}
760
761static void762sc_round(void *data EINA_UNUSED,763Evas_Object *obj,764void *event_info EINA_UNUSED)765{
766double val = elm_slider_value_get(obj);767double v;768
769v = ((double)((int)(val * 10.0))) / 10.0;770if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);771}
772
773static void774sc_change(void *data EINA_UNUSED,775Evas_Object *obj,776void *event_info EINA_UNUSED)777{
778double scale = elm_config_scale_get();779double val = elm_slider_value_get(obj);780
781if (EINA_DBL_EQ(scale, val)) return;782elm_config_scale_set(val);783elm_config_all_flush();784}
785
786static void787fs_round(void *data EINA_UNUSED,788Evas_Object *obj,789void *event_info EINA_UNUSED)790{
791double val = elm_slider_value_get(obj);792double v;793
794v = ((double)((int)(val * 5.0))) / 5.0;795if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);796}
797
798static void799fs_change(void *data EINA_UNUSED,800Evas_Object *obj,801void *event_info EINA_UNUSED)802{
803double fs = elm_config_finger_size_get();804double val = elm_slider_value_get(obj);805
806if (EINA_DBL_EQ(fs, val)) return;807elm_config_finger_size_set(val);808elm_config_all_flush();809}
810
811static void812efc_round(void *data EINA_UNUSED,813Evas_Object *obj,814void *event_info EINA_UNUSED)815{
816double val = elm_slider_value_get(obj);817double v;818
819v = ((double)((int)(val * 5.0))) / 5.0;820if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);821}
822
823static void824efc_change(void *data EINA_UNUSED,825Evas_Object *obj,826void *event_info EINA_UNUSED)827{
828double efc = elm_config_cache_edje_file_cache_size_get();829double val = elm_slider_value_get(obj);830
831if (EINA_DBL_EQ(efc, val)) return;832elm_config_cache_edje_file_cache_size_set(val);833elm_config_all_flush();834}
835
836static void837ecc_round(void *data EINA_UNUSED,838Evas_Object *obj,839void *event_info EINA_UNUSED)840{
841double val = elm_slider_value_get(obj);842double v;843
844v = ((double)((int)(val * 5.0))) / 5.0;845if (!EINA_DBL_EQ(v, val)) elm_slider_value_set(obj, v);846}
847
848static void849ecc_change(void *data EINA_UNUSED,850Evas_Object *obj,851void *event_info EINA_UNUSED)852{
853double ecc = elm_config_cache_edje_collection_cache_size_get();854double val = elm_slider_value_get(obj);855
856if (EINA_DBL_EQ(ecc, val)) return;857elm_config_cache_edje_collection_cache_size_set(val);858elm_config_all_flush();859}
860
861static void862desk_entry_change(void *data EINA_UNUSED,863Evas_Object *obj,864void *event_info EINA_UNUSED)865{
866Eina_Bool val = elm_check_state_get(obj);867Eina_Bool de = elm_config_desktop_entry_get();868
869if (val == de) return;870elm_config_desktop_entry_set(val);871elm_config_all_flush();872}
873
874static void875mag_change(void *data EINA_UNUSED,876Evas_Object *obj,877void *event_info EINA_UNUSED)878{
879Eina_Bool val = elm_check_state_get(obj);880Eina_Bool mag = elm_config_magnifier_enable_get();881
882if (val == mag) return;883elm_config_magnifier_enable_set(val);884elm_config_all_flush();885}
886
887static void888ac_change(void *data EINA_UNUSED,889Evas_Object *obj,890void *event_info EINA_UNUSED)891{
892Eina_Bool val = elm_check_state_get(obj);893Eina_Bool ac = elm_config_access_get();894
895if (val == ac) return;896elm_config_access_set(val);897elm_config_all_flush();898}
899
900static void901sel_change(void *data EINA_UNUSED,902Evas_Object *obj,903void *event_info EINA_UNUSED)904{
905Eina_Bool val = elm_check_state_get(obj);906Eina_Bool sel = elm_config_selection_unfocused_clear_get();907
908if (val == sel) return;909elm_config_selection_unfocused_clear_set(val);910elm_config_all_flush();911}
912
913static void914dbg_change(void *data EINA_UNUSED,915Evas_Object *obj,916void *event_info EINA_UNUSED)917{
918Eina_Bool val = elm_check_state_get(obj);919Eina_Bool sel = elm_config_clouseau_enabled_get();920
921if (val == sel) return;922elm_config_clouseau_enabled_set(val);923elm_config_all_flush();924}
925
926static void927atspi_change(void *data EINA_UNUSED,928Evas_Object *obj,929void *event_info EINA_UNUSED)930{
931Eina_Bool val = elm_check_state_get(obj);932Eina_Bool sel = elm_config_atspi_mode_get();933
934if (val == sel) return;935elm_config_atspi_mode_set(val);936elm_config_all_flush();937}
938
939static void940transition_duration_change(void *data EINA_UNUSED,941Evas_Object *obj,942void *event_info EINA_UNUSED)943{
944double val = elm_slider_value_get(obj);945double scale = elm_config_transition_duration_factor_get();946
947if (EINA_DBL_EQ(scale, val)) return;948elm_config_transition_duration_factor_set(val);949elm_config_all_flush();950}
951
952static void953tooltip_delay_change(void *data EINA_UNUSED,954Evas_Object *obj,955void *event_info EINA_UNUSED)956{
957double val = elm_slider_value_get(obj);958double delay = elm_config_tooltip_delay_get();959
960if (EINA_DBL_EQ(delay, val)) return;961elm_config_tooltip_delay_set(val);962elm_config_all_flush();963}
964
965
966static void967_status_basic(Evas_Object *win,968Evas_Object *bx0)969{
970Evas_Object *lb, *fr;971
972fr = elm_frame_add(win);973evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);974elm_object_text_set(fr, "Information");975elm_box_pack_end(bx0, fr);976evas_object_show(fr);977
978lb = elm_label_add(win);979elm_object_text_set(lb,980"Applying configuration change"981);982elm_object_content_set(fr, lb);983evas_object_show(lb);984}
985
986static void987_status_config(Evas_Object *win,988Evas_Object *bx0)989{
990Evas_Object *lb, *pd, *bx, *fr, *sl, *sp;991
992fr = elm_frame_add(win);993evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);994evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);995elm_object_text_set(fr, "Sizing");996elm_box_pack_end(bx0, fr);997evas_object_show(fr);998
999bx = elm_box_add(win);1000evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);1001evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);1002
1003LABEL_FRAME_ADD("<hilight>Scale</>");1004
1005sl = elm_slider_add(win);1006evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);1007evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);1008elm_slider_span_size_set(sl, 120);1009elm_slider_unit_format_set(sl, "%1.2f");1010elm_slider_indicator_format_set(sl, "%1.2f");1011elm_slider_min_max_set(sl, 0.25, 5.0);1012elm_slider_value_set(sl, elm_config_scale_get());1013elm_box_pack_end(bx, sl);1014evas_object_show(sl);1015
1016evas_object_smart_callback_add(sl, "changed", sc_round, NULL);1017evas_object_smart_callback_add(sl, "delay,changed", sc_change, NULL);1018
1019sp = elm_separator_add(win);1020elm_separator_horizontal_set(sp, EINA_TRUE);1021evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);1022evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);1023elm_box_pack_end(bx, sp);1024evas_object_show(sp);1025
1026LABEL_FRAME_ADD("<hilight>Finger Size</><br/>");1027
1028sl = elm_slider_add(win);1029evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);1030evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);1031elm_slider_span_size_set(sl, 120);1032elm_slider_unit_format_set(sl, "%1.0f");1033elm_slider_indicator_format_set(sl, "%1.0f");1034elm_slider_min_max_set(sl, 5, 200);1035elm_slider_value_set(sl, elm_config_finger_size_get());1036elm_box_pack_end(bx, sl);1037evas_object_show(sl);1038
1039evas_object_smart_callback_add(sl, "changed", fs_round, NULL);1040evas_object_smart_callback_add(sl, "delay,changed", fs_change, NULL);1041
1042// FIXME: add theme selector (basic mode and advanced for fallbacks)1043// FIXME: save config1044// FIXME: profile selector / creator etc.1045elm_object_content_set(fr, bx);1046evas_object_show(bx);1047}
1048
1049static void1050_flip_to(Evas_Object *win,1051const char *name)1052{
1053Evas_Object *wid, *naviframe;1054wid = evas_object_data_get(win, name);1055naviframe = evas_object_data_get(win, "naviframe");1056if (!naviframe) return;1057elm_naviframe_item_simple_promote(naviframe, wid);1058}
1059
1060static void1061_cf_sizing(void *data,1062Evas_Object *obj EINA_UNUSED,1063void *event_info EINA_UNUSED)1064{
1065_flip_to(data, "sizing");1066}
1067
1068static void1069_cf_themes(void *data,1070Evas_Object *obj EINA_UNUSED,1071void *event_info EINA_UNUSED)1072{
1073_flip_to(data, "themes");1074}
1075
1076static void1077_cf_icons(void *data,1078Evas_Object *obj EINA_UNUSED,1079void *event_info EINA_UNUSED)1080{
1081_flip_to(data, "icons");1082}
1083
1084static void1085_cf_fonts(void *data,1086Evas_Object *obj EINA_UNUSED,1087void *event_info EINA_UNUSED)1088{
1089_flip_to(data, "fonts");1090}
1091
1092static void1093_cf_colors(void *data,1094Evas_Object *obj EINA_UNUSED,1095void *event_info EINA_UNUSED)1096{
1097_flip_to(data, "colors");1098}
1099
1100static void1101_cf_profiles(void *data,1102Evas_Object *obj EINA_UNUSED,1103void *event_info EINA_UNUSED)1104{
1105_flip_to(data, "profiles");1106}
1107
1108static void1109_cf_scrolling(void *data,1110Evas_Object *obj EINA_UNUSED,1111void *event_info EINA_UNUSED)1112{
1113_flip_to(data, "scrolling");1114}
1115
1116static void1117_cf_rendering(void *data,1118Evas_Object *obj EINA_UNUSED,1119void *event_info EINA_UNUSED)1120{
1121_flip_to(data, "rendering");1122}
1123
1124static void1125_cf_caches(void *data,1126Evas_Object *obj EINA_UNUSED,1127void *event_info EINA_UNUSED)1128{
1129_flip_to(data, "caches");1130}
1131
1132static void1133_cf_audio(void *data,1134Evas_Object *obj EINA_UNUSED,1135void *event_info EINA_UNUSED)1136{
1137_flip_to(data,"audio");1138}
1139
1140static void1141_cf_focus(void *data,1142Evas_Object *obj EINA_UNUSED,1143void *event_info EINA_UNUSED)1144{
1145_flip_to(data, "focus");1146}
1147
1148static void1149_cf_etc(void *data,1150Evas_Object *obj EINA_UNUSED,1151void *event_info EINA_UNUSED)1152{
1153_flip_to(data,"etc");1154}
1155
1156const char *1157_elm_theme_current_get(const char *theme_search_order)1158{
1159const char *ret;1160const char *p;1161
1162if (!theme_search_order)1163return NULL;1164
1165for (p = theme_search_order;; p++)1166{1167if ((*p == ':') || (!*p))1168{1169if (p > theme_search_order)1170{1171char *n = malloc(p - theme_search_order + 1);1172if (!n)1173return NULL;1174
1175strncpy(n, theme_search_order, p - theme_search_order);1176n[p - theme_search_order] = 0;1177ret = eina_stringshare_add(n);1178free(n);1179break;1180}1181}1182}1183
1184return ret;1185}
1186
1187static void1188_font_overlay_set_all(void *data,1189Evas_Object *obj EINA_UNUSED,1190void *event_info EINA_UNUSED)1191{
1192Evas_Object *win, *fclasses;1193Elm_Text_Class_Data *tc_data, *tc;1194Elm_Object_Item *list_it;1195Eina_List *l;1196
1197win = data;1198
1199fclasses = evas_object_data_get(win, "font_classes_list");1200list_it = elm_list_selected_item_get(fclasses);1201if (!list_it) return;1202tc_data = elm_object_item_data_get(list_it);1203if (!tc_data) return;1204
1205EINA_LIST_FOREACH(fndata.text_classes, l, tc)1206{1207eina_stringshare_replace(&tc->font, tc_data->font);1208eina_stringshare_replace(&tc->style, tc_data->style);1209tc->size = tc_data->size;1210}1211
1212elm_config_all_flush();1213}
1214
1215static void1216_font_overlay_reset(void *data,1217Evas_Object *obj EINA_UNUSED,1218void *event_info EINA_UNUSED)1219{
1220Evas_Object *win, *fclasses, *fnames, *fstyles, *fsizes;1221Elm_Text_Class_Data *tc_data;1222Elm_Object_Item *list_it;1223
1224win = data;1225
1226fclasses = evas_object_data_get(win, "font_classes_list");1227list_it = elm_list_selected_item_get(fclasses);1228if (!list_it) return;1229tc_data = elm_object_item_data_get(list_it);1230if (!tc_data) return;1231
1232fnames = evas_object_data_get(win, "font_names_list");1233fstyles = evas_object_data_get(win, "font_styles_list");1234fsizes = evas_object_data_get(win, "font_sizes_list");1235
1236elm_config_font_overlay_unset(tc_data->name);1237
1238eina_stringshare_replace(&fndata.cur_font, NULL);1239eina_stringshare_replace(&tc_data->font, NULL);1240eina_stringshare_replace(&fndata.cur_style, NULL);1241eina_stringshare_replace(&tc_data->style, NULL);1242fndata.cur_size = 0.0;1243tc_data->size = 0.0;1244
1245ELM_LIST_DISABLE(fnames);1246ELM_LIST_DISABLE(fstyles);1247ELM_LIST_DISABLE(fsizes);1248
1249elm_config_all_flush();1250}
1251
1252static void1253_font_overlay_reset_all(void *data,1254Evas_Object *obj EINA_UNUSED,1255void *event_info EINA_UNUSED)1256{
1257Evas_Object *win, *fclasses, *fnames, *fstyles, *fsizes;1258Elm_Text_Class_Data *tc_data;1259Elm_Object_Item *list_it;1260Eina_List *l;1261
1262win = data;1263eina_stringshare_replace(&fndata.cur_font, NULL);1264eina_stringshare_replace(&fndata.cur_style, NULL);1265fndata.cur_size = 0.0;1266
1267EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)1268{1269elm_config_font_overlay_unset(tc_data->name);1270
1271eina_stringshare_replace(&tc_data->font, NULL);1272eina_stringshare_replace(&tc_data->style, NULL);1273tc_data->size = 0.0;1274}1275
1276fclasses = evas_object_data_get(win, "font_classes_list");1277fnames = evas_object_data_get(win, "font_names_list");1278fstyles = evas_object_data_get(win, "font_styles_list");1279fsizes = evas_object_data_get(win, "font_sizes_list");1280
1281list_it = elm_list_selected_item_get(fclasses);1282if (list_it) elm_list_item_selected_set(list_it, EINA_FALSE);1283
1284ELM_LIST_DISABLE(fnames);1285ELM_LIST_DISABLE(fstyles);1286ELM_LIST_DISABLE(fsizes);1287
1288elm_config_all_flush();1289}
1290
1291static void1292_font_overlay_change(void *data EINA_UNUSED,1293Evas_Object *obj EINA_UNUSED,1294void *event_info EINA_UNUSED)1295{
1296Elm_Text_Class_Data *tc_data;1297Eina_List *l;1298
1299EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)1300{1301if (tc_data->font)1302{1303char *name;1304
1305name = elm_font_fontconfig_name_get(tc_data->font,1306tc_data->style);1307elm_config_font_overlay_set(tc_data->name, name,1308tc_data->size ? tc_data->size : -100);1309elm_font_fontconfig_name_free(name);1310}1311else1312elm_config_font_overlay_unset(tc_data->name);1313}1314
1315elm_config_font_overlay_apply();1316elm_config_all_flush();1317
1318/* TODO: apply hinting */1319}
1320
1321static void1322_config_display_update(Evas_Object *win)1323{
1324int flush_interval, font_c, image_c, edje_file_c, edje_col_c, ts_threshould,1325ts_hold_threshold;1326double scale, s_bounce_friction, ts_momentum_threshold,1327ts_flick_distance_tolerance, ts_friction,1328ts_min_friction, ts_friction_standard, ts_border_friction,1329ts_sensitivity_friction, ts_acceleration_threshold,1330ts_acceleration_time_limit, ts_acceleration_weight, page_friction,1331bring_in_friction, zoom_friction, transition_duration,1332smooth_amount, smooth_time_window, tooltip_delay;1333const char *curr_theme;1334Eina_Bool s_bounce, ts, smooth_start;1335Elm_Theme *th;1336int fs;1337
1338scale = elm_config_scale_get();1339fs = elm_config_finger_size_get();1340flush_interval = elm_config_cache_flush_interval_get();1341font_c = elm_config_cache_font_cache_size_get();1342image_c = elm_config_cache_image_cache_size_get();1343transition_duration = elm_config_transition_duration_factor_get();1344tooltip_delay = elm_config_tooltip_delay_get();1345edje_file_c = elm_config_cache_edje_file_cache_size_get();1346edje_col_c = elm_config_cache_edje_collection_cache_size_get();1347
1348s_bounce = elm_config_scroll_bounce_enabled_get();1349s_bounce_friction = elm_config_scroll_bounce_friction_get();1350ts = elm_config_scroll_thumbscroll_enabled_get();1351ts_threshould = elm_config_scroll_thumbscroll_threshold_get();1352ts_hold_threshold = elm_config_scroll_thumbscroll_hold_threshold_get();1353ts_momentum_threshold = elm_config_scroll_thumbscroll_momentum_threshold_get();1354ts_flick_distance_tolerance = elm_config_scroll_thumbscroll_flick_distance_tolerance_get();1355ts_friction = elm_config_scroll_thumbscroll_friction_get();1356ts_min_friction = elm_config_scroll_thumbscroll_min_friction_get();1357ts_friction_standard = elm_config_scroll_thumbscroll_friction_standard_get();1358ts_border_friction = elm_config_scroll_thumbscroll_border_friction_get();1359ts_sensitivity_friction = elm_config_scroll_thumbscroll_sensitivity_friction_get();1360ts_acceleration_threshold = elm_config_scroll_thumbscroll_acceleration_threshold_get();1361ts_acceleration_time_limit = elm_config_scroll_thumbscroll_acceleration_time_limit_get();1362ts_acceleration_weight = elm_config_scroll_thumbscroll_acceleration_weight_get();1363page_friction = elm_config_scroll_page_scroll_friction_get();1364bring_in_friction = elm_config_scroll_bring_in_scroll_friction_get();1365zoom_friction = elm_config_scroll_zoom_friction_get();1366smooth_start = elm_config_scroll_thumbscroll_smooth_start_get();1367smooth_amount = elm_config_scroll_thumbscroll_smooth_amount_get();1368smooth_time_window = elm_config_scroll_thumbscroll_smooth_time_window_get();1369
1370/* gotta update root windows' atoms */1371elm_slider_value_set(evas_object_data_get(win, "scale_slider"), scale);1372elm_slider_value_set(evas_object_data_get(win, "fs_slider"), fs);1373
1374elm_slider_value_set(evas_object_data_get(win,1375"cache_flush_interval_slider"),1376flush_interval);1377elm_slider_value_set(evas_object_data_get(win, "font_cache_slider"),1378font_c / 1024.0);1379elm_slider_value_set(evas_object_data_get(win, "image_cache_slider"),1380image_c / 1024.0);1381elm_slider_value_set(evas_object_data_get(win, "edje_file_cache_slider"),1382edje_file_c);1383elm_slider_value_set(evas_object_data_get(win,1384"edje_collection_cache_slider"),1385edje_col_c);1386
1387elm_check_state_set(evas_object_data_get(win, "scroll_bounce_check"),1388s_bounce);1389elm_slider_value_set(evas_object_data_get(win, "bounce_friction_slider"),1390s_bounce_friction);1391elm_check_state_set(evas_object_data_get(win, "thumbscroll_check"), ts);1392elm_slider_value_set(evas_object_data_get(win,1393"ts_threshold_slider"),1394ts_threshould);1395elm_slider_value_set(evas_object_data_get(win,1396"ts_hold_threshold_slider"),1397ts_hold_threshold);1398elm_slider_value_set(evas_object_data_get(win,1399"ts_momentum_threshold_slider"),1400ts_momentum_threshold);1401elm_slider_value_set(evas_object_data_get(win,1402"ts_flick_distance_tolerance_slider"),1403ts_flick_distance_tolerance);1404elm_slider_value_set(evas_object_data_get(win,1405"ts_friction_slider"),1406ts_friction);1407elm_slider_value_set(evas_object_data_get(win,1408"ts_min_friction_slider"),1409ts_min_friction);1410elm_slider_value_set(evas_object_data_get(win,1411"ts_friction_standard_slider"),1412ts_friction_standard);1413elm_slider_value_set(evas_object_data_get(win, "ts_border_friction_slider"),1414ts_border_friction);1415elm_slider_value_set(evas_object_data_get(win, "ts_sensitivity_friction_slider"),1416ts_sensitivity_friction);1417elm_slider_value_set(evas_object_data_get(win, "ts_acceleration_threshold_slider"),1418ts_acceleration_threshold);1419elm_slider_value_set(evas_object_data_get(win, "ts_acceleration_time_limit_slider"),1420ts_acceleration_time_limit);1421elm_slider_value_set(evas_object_data_get(win, "ts_acceleration_weight_slider"),1422ts_acceleration_weight);1423elm_slider_value_set(evas_object_data_get(win,1424"page_scroll_friction_slider"),1425page_friction);1426elm_slider_value_set(evas_object_data_get(win,1427"bring_in_scroll_friction_slider"),1428bring_in_friction);1429elm_slider_value_set(evas_object_data_get(win,1430"zoom_scroll_friction_slider"),1431zoom_friction);1432
1433elm_check_state_set(evas_object_data_get(win, "scroll_smooth_start"),1434smooth_start);1435elm_slider_value_set(evas_object_data_get(win,1436"scroll_smooth_amount"),1437smooth_amount);1438elm_slider_value_set(evas_object_data_get(win,1439"scroll_smooth_time_window"),1440smooth_time_window);1441
1442curr_theme = _elm_theme_current_get(elm_theme_get(NULL));1443
1444th = elm_theme_new();1445elm_theme_set(th, curr_theme);1446elm_object_theme_set(evas_object_data_get(win, "theme_preview"), th);1447elm_theme_free(th);1448elm_config_transition_duration_factor_set(transition_duration);1449elm_config_tooltip_delay_set(tooltip_delay);1450eina_stringshare_del(curr_theme);1451}
1452
1453static Eina_Bool1454_config_all_changed(void *data,1455int ev_type EINA_UNUSED,1456void *ev EINA_UNUSED)1457{
1458Evas_Object *win = data;1459_config_display_update(win);1460return ECORE_CALLBACK_PASS_ON;1461}
1462
1463static void1464_profile_use(void *data,1465Evas_Object *obj EINA_UNUSED,1466void *event_info EINA_UNUSED)1467{
1468Evas_Object *li;1469const char *selection;1470const char *profile;1471
1472li = data;1473selection = elm_object_item_data_get(elm_list_selected_item_get(li));1474if (!selection) return;1475profile = elm_config_profile_get();1476
1477if (!profile)1478{1479fprintf(stderr, "No profile currently set!\n"); /* FIXME: log domain */1480return;1481}1482
1483if (!strcmp(profile, selection))1484return;1485
1486elm_config_profile_set(selection); /* just here to update info for getters below */1487
1488_config_display_update(elm_object_top_widget_get(li));1489elm_config_all_flush();1490}
1491
1492static void1493_btn_todo(void *data EINA_UNUSED,1494Evas_Object *obj EINA_UNUSED,1495void *event_info EINA_UNUSED)1496{
1497printf("To be done!\n");1498}
1499
1500static void1501_profile_reset(void *data,1502Evas_Object *obj EINA_UNUSED,1503void *event_info EINA_UNUSED)1504{
1505const char *selection;1506const char *pdir;1507Evas_Object *li;1508
1509li = data;1510selection = elm_object_item_data_get(elm_list_selected_item_get(li));1511if (!selection) return;1512
1513elm_config_all_flush();1514
1515pdir = elm_config_profile_dir_get(selection, EINA_TRUE);1516if (!pdir)1517return;1518
1519ecore_file_recursive_rm(pdir);1520elm_config_profile_dir_free(pdir);1521
1522elm_config_reload();1523
1524elm_config_all_flush();1525_config_display_update(elm_object_top_widget_get(li));1526}
1527
1528static void1529_theme_use(void *data EINA_UNUSED,1530Evas_Object *obj EINA_UNUSED,1531void *event_info EINA_UNUSED)1532{
1533const char *defth;1534Elm_Theme *th;1535Evas_Object *win = elm_object_top_widget_get(obj);1536Evas_Object *sample = evas_object_data_get(win, "theme_preview");1537
1538th = elm_object_theme_get(sample);1539defth = elm_theme_get(th);1540elm_theme_set(NULL, defth);1541elm_config_all_flush();1542}
1543
1544static void1545_theme_sel(void *data EINA_UNUSED,1546Evas_Object *obj,1547void *event_info EINA_UNUSED)1548{
1549Evas_Object *win = elm_object_top_widget_get(obj);1550Evas_Object *sample = evas_object_data_get(win, "theme_preview");1551Elm_Theme *th;1552Elm_Object_Item *list_it;1553Eina_Strbuf *newth;1554Eina_List *l;1555
1556if (!sample) return;1557tsel = elm_list_selected_items_get(obj);1558newth = eina_strbuf_new();1559EINA_SAFETY_ON_NULL_RETURN(newth);1560th = elm_theme_new();1561if (!th)1562{1563eina_strbuf_free(newth);1564return;1565}1566EINA_LIST_REVERSE_FOREACH((Eina_List*)tsel, l, list_it)1567{1568Theme *t = elm_object_item_data_get(list_it);1569if (!t) continue;1570
1571eina_strbuf_append_printf(newth, "%s:", t->name);1572if ((!l->prev) && strcmp(t->name, "default"))1573/* ensure default theme is always there for fallback */1574eina_strbuf_append(newth, "default");1575}1576elm_theme_set(th, eina_strbuf_string_get(newth));1577eina_strbuf_free(newth);1578elm_object_theme_set(sample, th);1579elm_theme_free(th);1580}
1581
1582/*static void
1583_theme_browse(void *data, Evas_Object *obj, void *event_info)
1584{
1585printf("not implemented\n");
1586}*/
1587
1588static void1589_icon_preview_icon_add(const char *icon, const char *theme)1590{
1591Evas_Object *ic;1592
1593if (!icon_preview_frame)1594return;1595
1596ic = elm_icon_add(icon_preview_frame);1597elm_image_aspect_fixed_set(ic, EINA_TRUE);1598evas_object_size_hint_min_set(ic, 48, 48);1599elm_box_pack_end(icon_preview_frame, ic);1600evas_object_show(ic);1601
1602if (!strcmp(theme, ELM_CONFIG_ICON_THEME_ELEMENTARY))1603elm_icon_standard_set(ic, icon);1604else1605elm_image_file_set(ic, efreet_icon_path_find(theme, icon, 48), NULL);1606}
1607
1608
1609static void1610_icon_preview_update(Evas_Object *win)1611{
1612const char **example_icon, *example_icons[] =1613{1614"folder",1615"video-display",1616"mail-unread",1617"start-here",1618"preferences-system",1619NULL,1620};1621const char *theme = evas_object_data_get(win, "icon_theme");1622
1623elm_box_clear(icon_preview_frame);1624for (example_icon = example_icons; !!*example_icon; example_icon++)1625_icon_preview_icon_add(*example_icon, theme);1626}
1627
1628static void1629_icon_elm_change(void *data EINA_UNUSED,1630Evas_Object *obj,1631void *event_info EINA_UNUSED)1632{
1633Evas_Object *win = elm_object_top_widget_get(obj);1634Eina_Bool val = elm_check_state_get(obj);1635Elm_Object_Item *item;1636
1637if (val)1638{1639evas_object_data_set(win, "icon_theme", ELM_CONFIG_ICON_THEME_ELEMENTARY);1640
1641item = elm_list_selected_item_get(icon_theme_list);1642if (item)1643elm_list_item_selected_set(item, EINA_FALSE);1644}1645else1646{1647evas_object_data_set(win, "icon_theme", "hicolor");1648
1649item = elm_list_first_item_get(icon_theme_list);1650if (item)1651elm_list_item_selected_set(item, EINA_TRUE);1652}1653
1654_icon_preview_update(win);1655}
1656
1657static void1658_icon_theme_use(void *data EINA_UNUSED,1659Evas_Object *obj EINA_UNUSED,1660void *event_info EINA_UNUSED)1661{
1662Evas_Object *win = elm_object_top_widget_get(obj);1663const char *theme = evas_object_data_get(win, "icon_theme");1664
1665elm_config_icon_theme_set(theme);1666elm_config_all_flush();1667}
1668
1669static void1670_icon_theme_sel(void *data, Evas_Object *obj,1671void *event_info EINA_UNUSED)1672{
1673const char *theme = (const char *)data;1674Evas_Object *win = elm_object_top_widget_get(obj);1675
1676elm_check_state_set(icon_theme_elm, EINA_FALSE);1677evas_object_data_set(win, "icon_theme", theme);1678
1679_icon_preview_update(win);1680}
1681
1682static Eina_Bool1683_icon_theme_valid(const char *theme)1684{
1685const char *icon_path;1686
1687icon_path = efreet_icon_path_find(theme, "folder", 48);1688return !!icon_path;1689}
1690
1691static int1692_icon_theme_list_sort(const void *data1, const void *data2)1693{
1694const Efreet_Icon_Theme *t1, *t2;1695
1696t1 = data1;1697t2 = data2;1698
1699if (!t1->name.name) return 1;1700if (!t2->name.name) return -1;1701
1702return strcmp(t1->name.name, t2->name.name);1703}
1704
1705static void1706_status_config_sizing(Evas_Object *win,1707Evas_Object *naviframe)1708{
1709Evas_Object *lb, *pd, *bx, *sl, *sp;1710
1711bx = elm_box_add(win);1712evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);1713evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);1714
1715LABEL_FRAME_ADD("<hilight>Scale</>");1716
1717sl = elm_slider_add(win);1718evas_object_data_set(win, "scale_slider", sl);1719evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);1720evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);1721elm_slider_span_size_set(sl, 120);1722elm_slider_unit_format_set(sl, "%1.2f");1723elm_slider_indicator_format_set(sl, "%1.2f");1724elm_slider_min_max_set(sl, 0.25, 5.0);1725elm_slider_value_set(sl, elm_config_scale_get());1726elm_box_pack_end(bx, sl);1727evas_object_show(sl);1728
1729evas_object_smart_callback_add(sl, "changed", sc_round, NULL);1730evas_object_smart_callback_add(sl, "delay,changed", sc_change, NULL);1731
1732sp = elm_separator_add(win);1733elm_separator_horizontal_set(sp, EINA_TRUE);1734evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);1735evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);1736elm_box_pack_end(bx, sp);1737evas_object_show(sp);1738
1739LABEL_FRAME_ADD("<hilight>Finger Size</><br/>");1740
1741sl = elm_slider_add(win);1742evas_object_data_set(win, "fs_slider", sl);1743evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);1744evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);1745elm_slider_span_size_set(sl, 120);1746elm_slider_unit_format_set(sl, "%1.0f");1747elm_slider_indicator_format_set(sl, "%1.0f");1748elm_slider_min_max_set(sl, 5, 200);1749elm_slider_value_set(sl, elm_config_finger_size_get());1750elm_box_pack_end(bx, sl);1751evas_object_show(sl);1752
1753evas_object_smart_callback_add(sl, "changed", fs_round, NULL);1754evas_object_smart_callback_add(sl, "delay,changed", fs_change, NULL);1755
1756evas_object_data_set(win, "sizing", bx);1757
1758elm_naviframe_item_simple_push(naviframe, bx);1759}
1760
1761#define MUTE_CB(_cb, _chan) \1762static void \1763_cb(void *data EINA_UNUSED, \1764Evas_Object *obj, \1765void *event_info EINA_UNUSED) \1766{ \1767Eina_Bool val = elm_check_state_get(obj); \1768Eina_Bool v = elm_config_audio_mute_get(_chan); \1769if (val == v) return; \1770elm_config_audio_mute_set(_chan, val); \1771elm_config_all_flush(); \1772}
1773
1774MUTE_CB(mute_effect_change, EDJE_CHANNEL_EFFECT)1775MUTE_CB(mute_background_change, EDJE_CHANNEL_BACKGROUND)1776MUTE_CB(mute_music_change, EDJE_CHANNEL_MUSIC)1777MUTE_CB(mute_foreground_change, EDJE_CHANNEL_FOREGROUND)1778MUTE_CB(mute_interface_change, EDJE_CHANNEL_INTERFACE)1779MUTE_CB(mute_input_change, EDJE_CHANNEL_INPUT)1780MUTE_CB(mute_alert_change, EDJE_CHANNEL_ALERT)1781MUTE_CB(mute_all_change, EDJE_CHANNEL_ALL)1782
1783static void1784_status_config_audio(Evas_Object *win,1785Evas_Object *naviframe)1786{
1787Evas_Object *bx, *ck;1788
1789bx = elm_box_add(win);1790evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);1791evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);1792
1793#define MUTE_CHECK(_label, _chan, _cb) \1794CHECK_ADD(_label, _label, _cb, NULL) \1795elm_check_state_set(ck, elm_config_audio_mute_get(_chan));1796
1797MUTE_CHECK("Mute Effects", EDJE_CHANNEL_EFFECT, mute_effect_change);1798MUTE_CHECK("Mute Background", EDJE_CHANNEL_BACKGROUND, mute_background_change);1799MUTE_CHECK("Mute Music", EDJE_CHANNEL_MUSIC, mute_music_change);1800MUTE_CHECK("Mute Foreground", EDJE_CHANNEL_FOREGROUND, mute_foreground_change);1801MUTE_CHECK("Mute Interface", EDJE_CHANNEL_INTERFACE, mute_interface_change);1802MUTE_CHECK("Mute Input", EDJE_CHANNEL_INPUT, mute_input_change);1803MUTE_CHECK("Mute Alert", EDJE_CHANNEL_ALERT, mute_alert_change);1804MUTE_CHECK("Mute Everything", EDJE_CHANNEL_ALL, mute_all_change);1805
1806evas_object_data_set(win, "audio", bx);1807
1808elm_naviframe_item_simple_push(naviframe, bx);1809}
1810
1811static void1812_config_focus_highlight_enabled_cb(void *data EINA_UNUSED, Evas_Object *obj,1813void *event_info EINA_UNUSED)1814{
1815Eina_Bool cf = elm_config_focus_highlight_enabled_get();1816Eina_Bool val = elm_check_state_get(obj);1817
1818printf("%d %d\n", cf, val);1819if (cf == val) return;1820elm_config_focus_highlight_enabled_set(val);1821elm_config_all_flush();1822}
1823
1824static void1825_config_focus_highlight_anim_cb(void *data EINA_UNUSED, Evas_Object *obj,1826void *event_info EINA_UNUSED)1827{
1828Eina_Bool cf = elm_config_focus_highlight_animate_get();1829Eina_Bool val = elm_check_state_get(obj);1830
1831if (cf == val) return;1832elm_config_focus_highlight_animate_set(val);1833elm_config_all_flush();1834}
1835
1836static void1837_config_focus_highlight_clip_cb(void *data EINA_UNUSED, Evas_Object *obj,1838void *event_info EINA_UNUSED)1839{
1840Eina_Bool cf = elm_config_focus_highlight_clip_disabled_get();1841Eina_Bool val = elm_check_state_get(obj);1842
1843if (cf == val) return;1844elm_config_focus_highlight_clip_disabled_set(val);1845elm_config_all_flush();1846}
1847
1848static void1849_config_focus_item_select_on_focus_cb(void *data EINA_UNUSED, Evas_Object *obj,1850void *event_info EINA_UNUSED)1851{
1852Eina_Bool cf = elm_config_item_select_on_focus_disabled_get();1853Eina_Bool val = elm_check_state_get(obj);1854
1855if (cf == val) return;1856elm_config_item_select_on_focus_disabled_set(val);1857elm_config_all_flush();1858}
1859
1860static void1861_status_config_focus_autoscroll_changed_cb(void *data EINA_UNUSED,1862Evas_Object *obj,1863void *event_info EINA_UNUSED)1864{
1865elm_config_focus_autoscroll_mode_set(elm_radio_value_get(obj));1866}
1867
1868static void1869_config_focus_auto_show_cb(void *data EINA_UNUSED, Evas_Object *obj,1870void *event_info EINA_UNUSED)1871{
1872Eina_Bool cf = elm_config_window_auto_focus_enable_get();1873Eina_Bool val = elm_check_state_get(obj);1874
1875if (cf == val) return;1876elm_config_window_auto_focus_enable_set(val);1877elm_config_all_flush();1878}
1879
1880static void1881_config_focus_auto_animate_cb(void *data EINA_UNUSED, Evas_Object *obj,1882void *event_info EINA_UNUSED)1883{
1884Eina_Bool cf = elm_config_window_auto_focus_animate_get();1885Eina_Bool val = elm_check_state_get(obj);1886
1887if (cf == val) return;1888elm_config_window_auto_focus_animate_set(val);1889elm_config_all_flush();1890}
1891
1892static void1893_status_config_focus(Evas_Object *win,1894Evas_Object *naviframe)1895{
1896Evas_Object *bx, *ck, *fr;1897
1898bx = elm_box_add(win);1899
1900CHECK_ADD("Enable Focus Highlight (only new window)",1901"Set whether enable/disable focus highlight.<br/>"1902"This feature is disabled by default.",1903_config_focus_highlight_enabled_cb, NULL);1904elm_check_state_set(ck, elm_config_focus_highlight_enabled_get());1905
1906CHECK_ADD("Enable Focus Highlight Animation (only new window)",1907"Set whether enable/disable focus highlight animation.<br/>"1908"This feature is disabled by default",1909_config_focus_highlight_anim_cb, NULL);1910elm_check_state_set(ck, elm_config_focus_highlight_animate_get());1911
1912CHECK_ADD("Disable Focus Highlight clip",1913"Set whether enable/disable focus highlight clip feature.<br/>"1914"If the focus highlight clip is disabled,<br/>"1915"focus highlight object would not be clipped"1916"by the target object's parent",1917_config_focus_highlight_clip_cb, NULL);1918elm_check_state_set(ck, elm_config_focus_highlight_clip_disabled_get());1919
1920CHECK_ADD("Disable Item Select on Focus",1921"Set whether item would be selected on item focus.<br/>"1922"This is enabled by default.",1923_config_focus_item_select_on_focus_cb, NULL);1924elm_check_state_set(ck, elm_config_item_select_on_focus_disabled_get());1925
1926CHECK_ADD("Enable Automatic focus display",1927"Set whether enable/disable focus highlight automatically.",1928_config_focus_auto_show_cb, NULL);1929elm_check_state_set(ck, elm_config_window_auto_focus_enable_get());1930CHECK_ADD("Enable Automatic focus animation",1931"Set whether enable/disable focus highlight animation<br/>"1932"automatically when automatic focus shows.",1933_config_focus_auto_animate_cb, NULL);1934elm_check_state_set(ck, elm_config_window_auto_focus_enable_get());1935
1936fr = elm_frame_add(bx);1937elm_object_text_set(fr, "Focus Autoscroll Mode");1938evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);1939evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);1940elm_box_pack_end(bx, fr);1941evas_object_show(fr);1942{1943Evas_Object *bx2, *rdg, *rd;1944bx2 = elm_box_add(fr);1945elm_object_content_set(fr, bx2);1946evas_object_show(bx2);1947
1948rdg = rd = elm_radio_add(bx2);1949elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_SHOW);1950elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_SHOW");1951elm_object_tooltip_text_set(rd, "Directly show the focused region<br/>"1952"or item automatically inside a scroller.");1953evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);1954evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);1955elm_box_pack_end(bx2, rd);1956evas_object_show(rd);1957evas_object_smart_callback_add(rd, "changed",1958_status_config_focus_autoscroll_changed_cb,1959NULL);1960
1961rd = elm_radio_add(bx2);1962elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_NONE);1963elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_NONE");1964elm_object_tooltip_text_set(rd, "Do not show the focused region or<br/>"1965"item automatically inside a scroller.");1966evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);1967evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);1968elm_box_pack_end(bx2, rd);1969elm_radio_group_add(rd, rdg);1970evas_object_show(rd);1971evas_object_smart_callback_add(rd, "changed",1972_status_config_focus_autoscroll_changed_cb,1973NULL);1974
1975
1976rd = elm_radio_add(bx2);1977elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN);1978elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN");1979elm_object_tooltip_text_set(rd, "Bring in the focused region or item<br/>"1980"automatically which might invole the scrolling.");1981evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);1982evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);1983elm_box_pack_end(bx2, rd);1984elm_radio_group_add(rd, rdg);1985evas_object_show(rd);1986evas_object_smart_callback_add(rd, "changed",1987_status_config_focus_autoscroll_changed_cb,1988NULL);1989
1990elm_radio_value_set(rdg, elm_config_focus_autoscroll_mode_get());1991}1992
1993evas_object_data_set(win, "focus", bx);1994
1995elm_naviframe_item_simple_push(naviframe, bx);1996}
1997
1998static void1999_web_entry_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)2000{
2001if (interactive)2002{2003const char *web_backend_set = elm_config_web_backend_get();2004
2005web_backend = elm_object_text_get(obj);2006if ((web_backend_set != web_backend) ||2007(web_backend && web_backend_set &&2008(!!strcmp(web_backend, web_backend_set))))2009{2010elm_config_web_backend_set(web_backend);2011fprintf(stderr, "web backend set to : [%s]\n", elm_config_web_backend_get());2012elm_config_all_flush();2013}2014}2015}
2016
2017static void2018_status_config_etc(Evas_Object *win,2019Evas_Object *naviframe)2020{
2021Evas_Object *bx, *ck, *sl, *fr, *bx2, *fr2, *bx3, *en;2022
2023bx = elm_box_add(win);2024evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);2025evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);2026
2027// desktop_entry2028CHECK_ADD("Desktop style entries", "Set entries to do things like on a normal desktop (non-touch) system", desk_entry_change, NULL);2029elm_check_state_set(ck, elm_config_desktop_entry_get());2030
2031// desktop_entry2032CHECK_ADD("Entry Magnifiers", "Set popup magnifiers on start/end selection handles in entries", mag_change, NULL);2033elm_check_state_set(ck, elm_config_magnifier_enable_get());2034
2035// access2036CHECK_ADD("Enable Access Mode", "Set access mode", ac_change, NULL);2037elm_check_state_set(ck, elm_config_access_get());2038
2039// selection2040CHECK_ADD("Enable clear selection when unfocus", "Set selection mode",2041sel_change, NULL);2042elm_check_state_set(ck, elm_config_selection_unfocused_clear_get());2043
2044// clouseau2045CHECK_ADD("Enable clouseau", "Set clouseau mode", dbg_change, NULL);2046elm_check_state_set(ck, elm_config_clouseau_enabled_get());2047
2048// atspi2049CHECK_ADD("Enable ATSPI support", "Set atspi mode", atspi_change, NULL);2050elm_check_state_set(ck, elm_config_atspi_mode_get());2051
2052// tooltip delay2053fr = elm_frame_add(bx);2054elm_object_text_set(fr, "Tooltip delay");2055evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);2056evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);2057elm_box_pack_end(bx, fr);2058evas_object_show(fr);2059
2060bx2 = elm_box_add(fr);2061elm_object_content_set(fr, bx2);2062evas_object_show(bx2);2063
2064sl = elm_slider_add(bx2);2065evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);2066evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);2067elm_slider_span_size_set(sl, 120);2068elm_slider_unit_format_set(sl, "%1.1f");2069elm_slider_indicator_format_set(sl, "%1.1f");2070elm_slider_min_max_set(sl, 0, 20.0);2071elm_slider_value_set(sl, elm_config_tooltip_delay_get());2072elm_box_pack_end(bx2, sl);2073evas_object_show(sl);2074evas_object_smart_callback_add(sl, "changed", sc_round, NULL);2075evas_object_smart_callback_add(sl, "delay,changed", tooltip_delay_change, NULL);2076
2077
2078// transition duration in edje2079fr = elm_frame_add(bx);2080elm_object_text_set(fr, "Edje Transition Duration Factor");2081evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);2082evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);2083elm_box_pack_end(bx, fr);2084evas_object_show(fr);2085
2086bx2 = elm_box_add(fr);2087elm_object_content_set(fr, bx2);2088evas_object_show(bx2);2089
2090sl = elm_slider_add(bx2);2091evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);2092evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);2093elm_slider_span_size_set(sl, 120);2094elm_slider_unit_format_set(sl, "%1.1f");2095elm_slider_indicator_format_set(sl, "%1.1f");2096elm_slider_min_max_set(sl, 0, 20.0);2097elm_slider_value_set(sl, elm_config_transition_duration_factor_get());2098elm_box_pack_end(bx2, sl);2099evas_object_show(sl);2100evas_object_smart_callback_add(sl, "changed", sc_round, NULL);2101evas_object_smart_callback_add(sl, "delay,changed", transition_duration_change, NULL);2102
2103// Web backend2104fr2 = elm_frame_add(bx);2105elm_object_text_set(fr2, "Elm_Web backend");2106evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0.0);2107evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, 0.5);2108elm_box_pack_end(bx, fr2);2109evas_object_show(fr2);2110
2111bx3 = elm_box_add(fr2);2112elm_object_content_set(fr2, bx3);2113evas_object_show(bx3);2114
2115en = elm_entry_add(win);2116elm_entry_editable_set(en, EINA_TRUE);2117elm_entry_scrollable_set(en, EINA_FALSE);2118elm_object_text_set(en, elm_config_web_backend_get());2119evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2120evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);2121evas_object_show(en);2122elm_box_pack_end(bx3, en);2123evas_object_event_callback_add(en, EVAS_CALLBACK_DEL, _web_entry_del, NULL);2124
2125web_backend_entry = en;2126
2127evas_object_data_set(win, "etc", bx);2128
2129elm_naviframe_item_simple_push(naviframe, bx);2130}
2131
2132static Evas_Object *2133_sample_theme_new(Evas_Object *win)2134{
2135Evas_Object *base, *bg, *bt, *ck, *rd, *rdg, *sl, *fr, *li, *rc, *sp;2136
2137base = elm_table_add(win);2138evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2139evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);2140
2141bg = elm_bg_add(win);2142evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2143evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);2144elm_table_pack(base, bg, 0, 0, 2, 5);2145evas_object_show(bg);2146
2147bt = elm_button_add(win);2148evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);2149elm_object_text_set(bt, "Button");2150elm_table_pack(base, bt, 0, 0, 1, 1);2151evas_object_show(bt);2152
2153ck = elm_check_add(win);2154evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);2155elm_object_text_set(ck, "Check");2156elm_table_pack(base, ck, 0, 1, 1, 1);2157evas_object_show(ck);2158
2159rd = elm_radio_add(win);2160evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);2161elm_radio_state_value_set(rd, 0);2162elm_object_text_set(rd, "Radio 1");2163elm_table_pack(base, rd, 1, 0, 1, 1);2164evas_object_show(rd);2165rdg = rd;2166
2167rd = elm_radio_add(win);2168evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);2169elm_radio_state_value_set(rd, 1);2170elm_object_text_set(rd, "Radio 2");2171elm_radio_group_add(rd, rdg);2172elm_table_pack(base, rd, 1, 1, 1, 1);2173evas_object_show(rd);2174
2175sp = elm_separator_add(win);2176elm_separator_horizontal_set(sp, EINA_TRUE);2177evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);2178evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);2179elm_table_pack(base, sp, 0, 2, 2, 1);2180evas_object_show(sp);2181
2182sl = elm_slider_add(win);2183elm_object_text_set(sl, "Slider");2184elm_slider_span_size_set(sl, 120);2185elm_slider_min_max_set(sl, 1, 10);2186elm_slider_value_set(sl, 4);2187evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);2188evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, EVAS_HINT_FILL);2189elm_table_pack(base, sl, 0, 3, 2, 1);2190evas_object_show(sl);2191
2192fr = elm_frame_add(win);2193elm_object_text_set(fr, "Frame");2194elm_table_pack(base, fr, 0, 4, 2, 1);2195evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2196evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);2197evas_object_show(fr);2198
2199li = elm_list_add(win);2200evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2201evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);2202elm_object_content_set(fr, li);2203evas_object_show(li);2204
2205elm_list_item_append(li, "List Item 1", NULL, NULL, NULL, NULL);2206elm_list_item_append(li, "Second Item", NULL, NULL, NULL, NULL);2207elm_list_item_append(li, "Third Item", NULL, NULL, NULL, NULL);2208elm_list_go(li);2209
2210rc = evas_object_rectangle_add(evas_object_evas_get(win));2211evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2212evas_object_size_hint_min_set(rc, 160, 120);2213elm_table_pack(base, rc, 0, 4, 2, 1);2214
2215return base;2216}
2217
2218static void2219_status_config_themes(Evas_Object *win,2220Evas_Object *naviframe)2221{
2222Evas_Object *tb, *rc, *sc, *sp, *li, *pd, *fr, *bt, *sample;2223Eina_List *list, *l;2224char *th, *s, *ext;2225Elm_Theme *d;2226Elm_Object_Item *list_it, *def_it = NULL;2227const char *theme_name, *sep[20];2228unsigned int x;2229
2230tb = elm_table_add(win);2231evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2232evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);2233
2234rc = evas_object_rectangle_add(evas_object_evas_get(win));2235evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2236evas_object_size_hint_min_set(rc, 0, 130);2237elm_table_pack(tb, rc, 0, 0, 1, 1);2238
2239rc = evas_object_rectangle_add(evas_object_evas_get(win));2240evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2241evas_object_size_hint_min_set(rc, 0, 200);2242elm_table_pack(tb, rc, 0, 1, 1, 1);2243
2244/////////////////////////////////////////////2245
2246pd = elm_frame_add(win);2247elm_object_style_set(pd, "pad_medium");2248evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2249evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);2250elm_table_pack(tb, pd, 0, 0, 1, 1);2251evas_object_show(pd);2252
2253li = elm_list_add(win);2254elm_list_multi_select_set(li, EINA_TRUE);2255evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2256evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);2257elm_object_content_set(pd, li);2258evas_object_show(li);2259
2260list = elm_theme_name_available_list_new();2261d = elm_theme_default_get();2262theme_name = elm_theme_get(d);2263for (x = 1, sep[0] = theme_name; x < sizeof(sep) / sizeof(sep[0]); x++)2264{2265sep[x] = strchr(sep[x - 1] + 1, ':');2266if (!sep[x]) break;2267}2268EINA_LIST_FOREACH(list, l, th)2269{2270Theme *t;2271int y;2272
2273t = calloc(1, sizeof(Theme));2274t->name = eina_stringshare_add(th);2275s = elm_theme_list_item_path_get(th, &(t->in_search_path));2276if (s)2277{2278t->path = eina_stringshare_add(s);2279free(s);2280}2281if (t->in_search_path)2282{2283s = strdup(th);2284if (s)2285{2286s[0] = toupper(s[0]);2287t->label = eina_stringshare_add(s);2288free(s);2289}2290else2291t->label = eina_stringshare_add(s);2292}2293else2294{2295s = strdup(ecore_file_file_get(th));2296if (s)2297{2298s[0] = toupper(s[0]);2299ext = strrchr(s, '.');2300if (ext) *ext = 0;2301t->label = eina_stringshare_add(s);2302free(s);2303}2304else2305t->label = eina_stringshare_add(s);2306}2307themes = eina_list_append(themes, t);2308list_it = elm_list_item_append(li, t->label, NULL, NULL, NULL, t);2309if (!strcmp(t->name, "default")) def_it = list_it;2310for (y = x - 1 /* ignore default e theme */; y > 0; y--)2311{2312const char *start = (sep[y - 1][0] == ':') ? sep[y - 1] + 1 : sep[y - 1];2313unsigned int len = (unsigned int)(sep[y] - start);2314if (strncmp(start , t->name, len) || (strlen(t->name) != len)) continue;2315
2316if (!elm_list_item_selected_get(list_it))2317elm_list_item_selected_set(list_it, EINA_TRUE);2318break;2319}2320}2321if (!elm_list_selected_items_get(li))2322elm_list_item_selected_set(def_it, EINA_TRUE);2323evas_object_smart_callback_add(li, "selected", _theme_sel, NULL);2324evas_object_smart_callback_add(li, "unselected", _theme_sel, NULL);2325elm_theme_name_available_list_free(list);2326
2327elm_list_go(li);2328
2329pd = elm_frame_add(win);2330elm_object_style_set(pd, "pad_medium");2331evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2332evas_object_size_hint_align_set(pd, 0.9, 0.9);2333elm_table_pack(tb, pd, 0, 0, 1, 1);2334evas_object_show(pd);2335
2336/* FIXME: not implemented yet2337bt = elm_button_add(win);
2338evas_object_smart_callback_add(bt, "clicked", _theme_browse, win);
2339elm_object_text_set(bt, "Browse...");
2340evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2341evas_object_size_hint_align_set(bt, 0.9, 0.9);
2342elm_object_content_set(pd, bt);
2343evas_object_show(bt);
2344*/
2345pd = elm_frame_add(win);2346elm_object_style_set(pd, "pad_medium");2347evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);2348evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);2349elm_table_pack(tb, pd, 0, 1, 1, 1);2350evas_object_show(pd);2351
2352fr = elm_frame_add(win);2353elm_object_text_set(fr, "Preview");2354evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2355evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);2356elm_object_content_set(pd, fr);2357evas_object_show(fr);2358
2359sc = elm_scroller_add(win);2360elm_scroller_bounce_set(sc, EINA_FALSE, EINA_FALSE);2361evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2362evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);2363elm_object_content_set(fr, sc);2364evas_object_show(sc);2365
2366sample = _sample_theme_new(win);2367elm_object_content_set(sc, sample);2368evas_object_show(sample);2369evas_object_data_set(win, "theme_preview", sample);2370
2371/////////////////////////////////////////////2372sp = elm_separator_add(win);2373elm_separator_horizontal_set(sp, EINA_TRUE);2374evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);2375evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);2376elm_table_pack(tb, sp, 0, 2, 1, 1);2377evas_object_show(sp);2378
2379pd = elm_frame_add(win);2380elm_object_style_set(pd, "pad_medium");2381evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);2382evas_object_size_hint_align_set(pd, 0.5, 0.5);2383elm_table_pack(tb, pd, 0, 3, 1, 1);2384evas_object_show(pd);2385
2386bt = elm_button_add(win);2387evas_object_smart_callback_add(bt, "clicked", _theme_use, win);2388elm_object_text_set(bt, "Use Theme");2389evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);2390evas_object_size_hint_align_set(bt, 0.5, 0.5);2391elm_object_content_set(pd, bt);2392evas_object_show(bt);2393
2394evas_object_data_set(win, "themes", tb);2395elm_naviframe_item_simple_push(naviframe, tb);2396}
2397
2398static void2399_status_config_icons(Evas_Object *win,2400Evas_Object *naviframe)2401{
2402Evas_Object *tb, *rc, *sp, *ck, *li, *bx, *ic, *pd, *fr, *bt;2403Eina_List *list, *l;2404const Efreet_Icon_Theme *th;2405Elm_Object_Item *list_it, *def_it = NULL;2406
2407tb = elm_table_add(win);2408evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2409evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);2410
2411rc = evas_object_rectangle_add(evas_object_evas_get(win));2412evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2413evas_object_size_hint_min_set(rc, 0, 130);2414elm_table_pack(tb, rc, 0, 0, 1, 1);2415
2416rc = evas_object_rectangle_add(evas_object_evas_get(win));2417evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2418evas_object_size_hint_min_set(rc, 0, 130);2419elm_table_pack(tb, rc, 0, 1, 1, 1);2420
2421/////////////////////////////////////////////2422
2423pd = elm_frame_add(win);2424elm_object_style_set(pd, "pad_medium");2425evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2426evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);2427elm_table_pack(tb, pd, 0, 0, 1, 1);2428evas_object_show(pd);2429
2430bx = elm_box_add(pd);2431elm_object_content_set(pd, bx);2432evas_object_show(bx);2433CHECK_ADD("Use Elementary icons", "Use icons from current elementary theme",2434_icon_elm_change, NULL);2435if (!strcmp(elm_config_icon_theme_get(), ELM_CONFIG_ICON_THEME_ELEMENTARY))2436elm_check_state_set(ck, EINA_TRUE);2437icon_theme_elm = ck;2438
2439li = icon_theme_list = elm_list_add(win);2440elm_list_multi_select_set(li, EINA_FALSE);2441evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2442evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);2443elm_box_pack_end(bx, li);2444evas_object_show(li);2445
2446evas_object_data_set(win, "icon_theme", elm_config_icon_theme_get());2447
2448list = efreet_icon_theme_list_get();2449list = eina_list_sort(list, eina_list_count(list), _icon_theme_list_sort);2450EINA_LIST_FOREACH(list, l, th)2451{2452if (!_icon_theme_valid(th->name.internal))2453continue;2454
2455ic = elm_icon_add(li);2456elm_image_file_set(ic, efreet_icon_path_find(th->name.internal, "folder", 48), NULL);2457list_it = elm_list_item_append(li, th->name.name, ic, NULL,2458_icon_theme_sel,2459eina_stringshare_add(th->name.internal));2460
2461if (!strcmp(th->name.internal, "hicolor"))2462def_it = list_it;2463if (!strcmp(elm_config_icon_theme_get(), th->name.internal))2464elm_list_item_selected_set(list_it, EINA_TRUE);2465}2466if (!elm_list_selected_items_get(li))2467elm_list_item_selected_set(def_it, EINA_TRUE);2468
2469elm_list_go(li);2470
2471pd = elm_frame_add(win);2472elm_object_style_set(pd, "pad_medium");2473evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);2474evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, EVAS_HINT_FILL);2475elm_table_pack(tb, pd, 0, 1, 1, 1);2476evas_object_show(pd);2477
2478fr = elm_frame_add(win);2479elm_object_text_set(fr, "Preview");2480evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2481evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);2482elm_object_content_set(pd, fr);2483evas_object_show(fr);2484
2485bx = icon_preview_frame = elm_box_add(fr);2486elm_box_homogeneous_set(bx, EINA_TRUE);2487elm_box_horizontal_set(bx, EINA_TRUE);2488elm_object_content_set(fr, bx);2489evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2490evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);2491evas_object_show(bx);2492
2493/////////////////////////////////////////////2494sp = elm_separator_add(win);2495elm_separator_horizontal_set(sp, EINA_TRUE);2496evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);2497evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);2498elm_table_pack(tb, sp, 0, 2, 1, 1);2499evas_object_show(sp);2500
2501pd = elm_frame_add(win);2502elm_object_style_set(pd, "pad_medium");2503evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);2504evas_object_size_hint_align_set(pd, 0.5, 0.5);2505elm_table_pack(tb, pd, 0, 3, 1, 1);2506evas_object_show(pd);2507
2508bt = elm_button_add(win);2509evas_object_smart_callback_add(bt, "clicked", _icon_theme_use, win);2510elm_object_text_set(bt, "Use Icon Theme");2511evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);2512evas_object_size_hint_align_set(bt, 0.5, 0.5);2513elm_object_content_set(pd, bt);2514evas_object_show(bt);2515
2516_icon_preview_update(win);2517evas_object_data_set(win, "icons", tb);2518elm_naviframe_item_simple_push(naviframe, tb);2519}
2520
2521
2522static void2523_font_preview_update(Evas_Object *win)2524{
2525Evas_Font_Size sz;2526char *name;2527
2528if (!fndata.cur_font)2529return;2530
2531name = elm_font_fontconfig_name_get(fndata.cur_font, fndata.cur_style);2532sz = fndata.cur_size;2533
2534if (sz < 0)2535sz = (-sz * 10) / 100;2536if (sz == 0)2537sz = 10;2538
2539edje_object_text_class_set(evas_object_data_get(win, "font_preview"),2540"font_preview", name, sz);2541
2542elm_font_fontconfig_name_free(name);2543}
2544
2545static void2546_font_classes_list_sel(void *data EINA_UNUSED,2547Evas_Object *obj,2548void *event_info)2549{
2550const Eina_List *f_names_items, *l;2551Elm_Text_Class_Data *tc_data;2552Evas_Object *f_names_list;2553Elm_Object_Item *list_it;2554
2555tc_data = elm_object_item_data_get(event_info);2556if (!tc_data) return;2557
2558f_names_list = evas_object_data_get(elm_object_top_widget_get(obj),2559"font_names_list");2560ELM_LIST_ENABLE(f_names_list);2561
2562f_names_items = elm_list_items_get(f_names_list);2563
2564EINA_LIST_FOREACH(f_names_items, l, list_it)2565{2566const char *s;2567
2568s = elm_object_item_text_get(list_it);2569if (!s) continue;2570
2571if (tc_data->font && !strcmp(s, tc_data->font))2572{2573elm_list_item_selected_set(list_it, EINA_TRUE);2574elm_list_item_show(list_it);2575break;2576}2577}2578}
2579
2580static void2581_font_names_list_sel(void *data EINA_UNUSED,2582Evas_Object *obj,2583void *event_info)2584{
2585Evas_Object *style_list, *cls_list, *win;2586const char *style, *sel_font;2587Elm_Text_Class_Data *tc_data;2588Elm_Object_Item *list_it, *fc_list_it;2589Elm_Font_Properties *efp;2590const Eina_List *l;2591
2592list_it = event_info;2593sel_font = elm_object_item_text_get(list_it);2594
2595win = elm_object_top_widget_get(obj);2596style_list = evas_object_data_get(win, "font_styles_list");2597cls_list = evas_object_data_get(win, "font_classes_list");2598
2599fc_list_it = elm_list_selected_item_get(cls_list);2600if (!fc_list_it) return; /* should not happen, fonts list disabled in2601* this case */
2602
2603eina_stringshare_replace(&fndata.cur_font, sel_font);2604
2605tc_data = elm_object_item_data_get(fc_list_it);2606if (!tc_data) return;2607if (tc_data->font) eina_stringshare_del(tc_data->font);2608if (fndata.cur_font) tc_data->font = eina_stringshare_ref(fndata.cur_font);2609
2610/* load styles list */2611efp = eina_hash_find(fndata.font_hash, sel_font);2612if (!efp) return;2613
2614ELM_LIST_ENABLE(style_list);2615elm_list_clear(style_list);2616
2617evas_event_freeze(evas_object_evas_get(style_list));2618edje_freeze();2619
2620list_it = NULL;2621
2622EINA_LIST_FOREACH(efp->styles, l, style)2623{2624Elm_Object_Item *i;2625
2626i = elm_list_item_append(style_list, style, NULL, NULL,2627_font_styles_list_sel, NULL);2628
2629if (tc_data->style && (!strcmp(style, tc_data->style)))2630list_it = i;2631}2632
2633elm_list_go(style_list);2634
2635edje_thaw();2636evas_event_thaw(evas_object_evas_get(style_list));2637
2638if (list_it)2639elm_list_item_selected_set(list_it, EINA_TRUE);2640
2641_font_preview_update(win);2642}
2643
2644static void2645_font_styles_list_sel(void *data EINA_UNUSED,2646Evas_Object *obj,2647void *event_info)2648{
2649Evas_Object *fc_list, *fs_list, *win;2650Elm_Text_Class_Data *tc_data;2651const Eina_List *l;2652Elm_Object_Item *list_it;2653
2654win = elm_object_top_widget_get(obj);2655fc_list = evas_object_data_get(win, "font_classes_list");2656fs_list = evas_object_data_get(win, "font_sizes_list");2657
2658list_it = elm_list_selected_item_get(fc_list);2659if (!list_it) return; /* should not happen */2660
2661eina_stringshare_replace(&fndata.cur_style,2662elm_object_item_text_get(event_info));2663ELM_LIST_ENABLE(fs_list);2664
2665tc_data = elm_object_item_data_get(list_it);2666if (!tc_data) return;2667eina_stringshare_del(tc_data->style);2668tc_data->style = eina_stringshare_ref(fndata.cur_style);2669
2670evas_event_freeze(evas_object_evas_get(fs_list));2671edje_freeze();2672
2673EINA_LIST_FOREACH(elm_list_items_get(fs_list), l, list_it)2674{2675Elm_Font_Size_Data *sdata;2676
2677sdata = elm_object_item_data_get(list_it);2678if (!sdata) continue;2679elm_list_item_selected_set(l->data, EINA_FALSE);2680
2681if (tc_data->size == sdata->size)2682{2683elm_list_item_selected_set(list_it, EINA_TRUE);2684elm_list_item_show(list_it);2685break;2686}2687}2688
2689edje_thaw();2690evas_event_thaw(evas_object_evas_get(fs_list));2691
2692_font_preview_update(win);2693}
2694
2695static void2696_font_sizes_list_sel(void *data EINA_UNUSED,2697Evas_Object *obj EINA_UNUSED,2698void *event_info EINA_UNUSED)2699{
2700Elm_Text_Class_Data *tc_data;2701Evas_Object *fc_list, *win;2702Elm_Font_Size_Data *sd;2703Elm_Object_Item *list_it;2704
2705win = elm_object_top_widget_get(obj);2706fc_list = evas_object_data_get(win, "font_classes_list");2707
2708list_it = elm_list_selected_item_get(fc_list);2709if (!list_it) return; /* should not happen */2710sd = elm_object_item_data_get(event_info);2711if (!sd) return;2712
2713fndata.cur_size = sd->size;2714
2715tc_data = elm_object_item_data_get(list_it);2716if (!tc_data) return;2717tc_data->size = fndata.cur_size;2718
2719_font_preview_update(win);2720}
2721
2722static void2723_fstyle_list_unselect_cb(void *data EINA_UNUSED,2724Evas_Object *obj,2725void *event_info EINA_UNUSED)2726{
2727Evas_Object *sizes_list, *win;2728
2729if (elm_list_selected_item_get(obj)) return;2730
2731win = elm_object_top_widget_get(obj);2732
2733sizes_list = evas_object_data_get(win, "font_sizes_list");2734ELM_LIST_DISABLE(sizes_list);2735}
2736
2737static void2738_fc_list_unselect_cb(void *data EINA_UNUSED,2739Evas_Object *obj,2740void *event_info EINA_UNUSED)2741{
2742Evas_Object *font_names_list, *styles_list, *sizes_list, *win;2743
2744if (elm_list_selected_item_get(obj)) return;2745
2746win = elm_object_top_widget_get(obj);2747
2748font_names_list = evas_object_data_get(win, "font_names_list");2749ELM_LIST_DISABLE(font_names_list);2750
2751styles_list = evas_object_data_get(win, "font_styles_list");2752ELM_LIST_DISABLE(styles_list);2753
2754sizes_list = evas_object_data_get(win, "font_sizes_list");2755ELM_LIST_DISABLE(sizes_list);2756}
2757
2758static void2759_font_classes_list_load(Evas_Object *li)2760{
2761Elm_Text_Class_Data *tc_data;2762Eina_List *l;2763Evas *evas;2764
2765evas = evas_object_evas_get(li);2766evas_event_freeze(evas);2767edje_freeze();2768
2769EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)2770elm_list_item_append(li, tc_data->desc, NULL, NULL,2771_font_classes_list_sel, tc_data);2772
2773evas_object_smart_callback_add(li, "unselected", _fc_list_unselect_cb,2774NULL);2775
2776elm_list_go(li);2777edje_thaw();2778evas_event_thaw(evas);2779}
2780
2781static void2782_fonts_data_fill(Evas *evas)2783{
2784const Eina_List *fo_list, *l;2785Eina_List *text_classes;2786Elm_Text_Class_Data *tc_data;2787Elm_Font_Size_Data *sd;2788Elm_Font_Overlay *efo;2789Eina_List *evas_fonts;2790Elm_Text_Class *etc;2791int i;2792
2793evas_fonts = evas_font_available_list(evas);2794fndata.font_hash = elm_font_available_hash_add(evas_fonts);2795evas_font_available_list_free(evas, evas_fonts);2796
2797text_classes = elm_config_text_classes_list_get();2798fo_list = elm_config_font_overlay_list_get();2799
2800EINA_LIST_FOREACH(text_classes, l, etc)2801{2802const Eina_List *ll;2803
2804tc_data = calloc(1, sizeof(*tc_data));2805if (!tc_data) continue;2806
2807tc_data->name = eina_stringshare_add(etc->name);2808tc_data->desc = eina_stringshare_add(etc->desc);2809
2810EINA_LIST_FOREACH(fo_list, ll, efo)2811{2812if (strcmp(tc_data->name, efo->text_class))2813continue;2814
2815if (efo->font)2816{2817Elm_Font_Properties *efp;2818
2819efp = elm_font_properties_get(efo->font);2820if (efp)2821{2822tc_data->font = eina_stringshare_add(efp->name);2823/* we're sure we recorded with only 1 style selected */2824tc_data->style = eina_stringshare_add(efp->styles->data);2825elm_font_properties_free(efp);2826}2827}2828tc_data->size = efo->size;2829}2830
2831fndata.text_classes = eina_list_append(fndata.text_classes, tc_data);2832}2833
2834elm_config_text_classes_list_free(text_classes);2835
2836/* FIXME: hinting later */2837/* fndata.hinting = e_config->font_hinting; */2838
2839sd = calloc(1, sizeof(Elm_Font_Size_Data));2840sd->size_str = eina_stringshare_add("Tiny");2841sd->size = -50;2842fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2843
2844sd = calloc(1, sizeof(Elm_Font_Size_Data));2845sd->size_str = eina_stringshare_add("Small");2846sd->size = -80;2847fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2848
2849sd = calloc(1, sizeof(Elm_Font_Size_Data));2850sd->size_str = eina_stringshare_add("Normal");2851sd->size = -100;2852fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2853
2854sd = calloc(1, sizeof(Elm_Font_Size_Data));2855sd->size_str = eina_stringshare_add("Big");2856sd->size = -150;2857fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2858
2859sd = calloc(1, sizeof(Elm_Font_Size_Data));2860sd->size_str = eina_stringshare_add("Really Big");2861sd->size = -190;2862fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2863
2864sd = calloc(1, sizeof(Elm_Font_Size_Data));2865sd->size_str = eina_stringshare_add("Huge");2866sd->size = -250;2867fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);2868
2869for (i = 5; i < 51; i++)2870{2871char str[16];2872
2873str[0] = 0;2874snprintf(str, sizeof(str), "%d pixels", i);2875
2876sd = calloc(1, sizeof(Elm_Font_Size_Data));2877sd->size_str = eina_stringshare_add(str);2878sd->size = i;2879fndata.font_px_list = eina_list_append(fndata.font_px_list, sd);2880}2881}
2882
2883static int2884_font_sort_cb(const void *data1,2885const void *data2)2886{
2887if (!data1) return 1;2888if (!data2) return -1;2889return strcmp(data1, data2);2890}
2891
2892static void2893_font_sizes_list_load(Evas_Object *size_list)2894{
2895Elm_Font_Size_Data *size_data;2896Eina_List *l;2897Evas *evas;2898
2899evas = evas_object_evas_get(size_list);2900evas_event_freeze(evas);2901edje_freeze();2902
2903EINA_LIST_FOREACH(fndata.font_scale_list, l, size_data)2904elm_list_item_append(size_list, size_data->size_str, NULL, NULL,2905_font_sizes_list_sel, size_data);2906
2907EINA_LIST_FOREACH(fndata.font_px_list, l, size_data)2908elm_list_item_append(size_list, size_data->size_str, NULL, NULL,2909_font_sizes_list_sel, size_data);2910
2911elm_list_go(size_list);2912edje_thaw();2913evas_event_thaw(evas);2914}
2915
2916static void2917_fnames_list_unselect_cb(void *data EINA_UNUSED,2918Evas_Object *obj,2919void *event_info EINA_UNUSED)2920{
2921Evas_Object *styles_list, *sizes_list, *win;2922
2923if (elm_list_selected_item_get(obj)) return;2924
2925win = elm_object_top_widget_get(obj);2926
2927styles_list = evas_object_data_get(win, "font_styles_list");2928ELM_LIST_DISABLE(styles_list);2929
2930sizes_list = evas_object_data_get(win, "font_sizes_list");2931ELM_LIST_DISABLE(sizes_list);2932}
2933
2934static Eina_Bool2935_font_list_fill(const Eina_Hash *hash EINA_UNUSED,2936const void *key EINA_UNUSED,2937void *data,2938void *fdata)2939{
2940Elm_Font_Properties *efp;2941Eina_List **flist;2942
2943flist = fdata;2944efp = data;2945
2946*flist = eina_list_append(*flist, efp->name);2947
2948return EINA_TRUE;2949}
2950
2951static void2952_font_names_list_load(Evas_Object *flist)2953{
2954Eina_List *l, *names_list = NULL;2955const char *font;2956Evas *evas;2957
2958evas = evas_object_evas_get(flist);2959evas_event_freeze(evas);2960edje_freeze();2961
2962eina_hash_foreach(fndata.font_hash, _font_list_fill, &names_list);2963names_list = eina_list_sort(names_list, eina_list_count(names_list),2964_font_sort_cb);2965
2966EINA_LIST_FOREACH(names_list, l, font)2967elm_list_item_append(flist, font, NULL, NULL, _font_names_list_sel, NULL);2968
2969eina_list_free(names_list);2970
2971evas_object_smart_callback_add(flist, "unselected",2972_fnames_list_unselect_cb, NULL);2973
2974elm_list_go(flist);2975
2976edje_thaw();2977evas_event_thaw(evas);2978}
2979
2980static void2981_status_config_fonts(Evas_Object *win,2982Evas_Object *naviframe)2983{
2984Evas_Object *base, *fr, *li, *rc, *preview, *sp, *pd, *bt, *bx;2985char buf[PATH_MAX];2986
2987_fonts_data_fill(evas_object_evas_get(win));2988
2989base = elm_table_add(win);2990evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2991evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);2992
2993/* yeah, dummy rectangles are ugly as hell, but no good way yet of2994fixing sizes */
2995rc = evas_object_rectangle_add(evas_object_evas_get(win));2996evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);2997evas_object_size_hint_align_set(rc, EVAS_HINT_FILL, EVAS_HINT_FILL);2998evas_object_size_hint_min_set(rc, 70, 170);2999elm_table_pack(base, rc, 1, 0, 1, 1);3000
3001fr = elm_frame_add(win);3002elm_object_text_set(fr, "Font Class");3003elm_table_pack(base, fr, 0, 0, 1, 2);3004evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3005evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3006evas_object_show(fr);3007
3008/* FIXME: no multiselection for this list, for now */3009li = elm_list_add(win);3010evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3011evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3012elm_object_content_set(fr, li);3013evas_object_show(li);3014
3015evas_object_data_set(win, "font_classes_list", li);3016_font_classes_list_load(li);3017
3018fr = elm_frame_add(win);3019elm_object_text_set(fr, "Font");3020elm_table_pack(base, fr, 1, 0, 1, 2);3021evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3022evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3023evas_object_show(fr);3024
3025li = elm_list_add(win);3026evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3027evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3028elm_object_content_set(fr, li);3029evas_object_show(li);3030
3031evas_object_data_set(win, "font_names_list", li);3032_font_names_list_load(li);3033ELM_LIST_DISABLE(li);3034
3035rc = evas_object_rectangle_add(evas_object_evas_get(win));3036evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3037evas_object_size_hint_align_set(rc, EVAS_HINT_FILL, EVAS_HINT_FILL);3038evas_object_size_hint_min_set(rc, 70, 130);3039elm_table_pack(base, rc, 1, 2, 1, 1);3040
3041fr = elm_frame_add(win);3042elm_object_text_set(fr, "Style");3043elm_table_pack(base, fr, 0, 2, 1, 1);3044evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3045evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3046evas_object_show(fr);3047ELM_LIST_DISABLE(li);3048
3049li = elm_list_add(win);3050evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3051evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3052elm_object_content_set(fr, li);3053evas_object_show(li);3054
3055evas_object_data_set(win, "font_styles_list", li);3056evas_object_smart_callback_add(li, "unselected", _fstyle_list_unselect_cb,3057NULL);3058
3059fr = elm_frame_add(win);3060elm_object_text_set(fr, "Size");3061elm_table_pack(base, fr, 1, 2, 1, 1);3062evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3063evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3064evas_object_show(fr);3065
3066li = elm_list_add(win);3067evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3068evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3069elm_object_content_set(fr, li);3070evas_object_show(li);3071
3072evas_object_data_set(win, "font_sizes_list", li);3073_font_sizes_list_load(li);3074ELM_LIST_DISABLE(li);3075
3076bx = elm_box_add(win);3077evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3078evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);3079elm_table_pack(base, bx, 0, 3, 2, 1);3080evas_object_show(bx);3081
3082/* FIXME: what to do here? dedicated widget? some new entry API set? */3083snprintf(buf, sizeof(buf), "%s/objects/font_preview.edj", elm_app_data_dir_get());3084preview = elm_layout_add(win);3085elm_layout_file_set(preview, buf, "font_preview");3086elm_object_part_text_set(preview, "elm.text", "Preview Text — 我真的会写中文");3087evas_object_size_hint_weight_set(preview, EVAS_HINT_EXPAND, 0.0);3088evas_object_size_hint_align_set(preview, EVAS_HINT_FILL, EVAS_HINT_FILL);3089evas_object_show(preview);3090
3091elm_box_pack_end(bx, preview);3092evas_object_data_set(win, "font_preview", elm_layout_edje_get(preview));3093
3094/////////////////////////////////////////////3095sp = elm_separator_add(win);3096elm_separator_horizontal_set(sp, EINA_TRUE);3097evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);3098evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);3099elm_table_pack(base, sp, 0, 4, 2, 1);3100evas_object_show(sp);3101
3102pd = elm_frame_add(win);3103elm_object_style_set(pd, "pad_medium");3104evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);3105evas_object_size_hint_align_set(pd, 0.5, 0.5);3106elm_table_pack(base, pd, 0, 5, 2, 1);3107evas_object_show(pd);3108
3109bx = elm_box_add(win);3110elm_box_horizontal_set(bx, EINA_TRUE);3111evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3112evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);3113evas_object_show(bx);3114
3115bt = elm_button_add(win);3116evas_object_smart_callback_add(bt, "clicked", _font_overlay_set_all, win);3117elm_object_text_set(bt, "Set to All");3118evas_object_size_hint_weight_set(bt, 0.0, 0.0);3119evas_object_size_hint_align_set(bt, 0.5, 0.5);3120elm_box_pack_end(bx, bt);3121evas_object_show(bt);3122
3123bt = elm_button_add(win);3124evas_object_smart_callback_add(bt, "clicked", _font_overlay_reset, win);3125elm_object_text_set(bt, "Reset");3126evas_object_size_hint_weight_set(bt, 0.0, 0.0);3127evas_object_size_hint_align_set(bt, 0.5, 0.5);3128elm_box_pack_end(bx, bt);3129evas_object_show(bt);3130
3131bt = elm_button_add(win);3132evas_object_smart_callback_add(bt, "clicked", _font_overlay_reset_all, win);3133elm_object_text_set(bt, "Reset All");3134evas_object_size_hint_weight_set(bt, 0.0, 0.0);3135evas_object_size_hint_align_set(bt, 0.5, 0.5);3136elm_box_pack_end(bx, bt);3137evas_object_show(bt);3138
3139bt = elm_button_add(win);3140evas_object_smart_callback_add(bt, "clicked", _font_overlay_change, win);3141elm_object_text_set(bt, "Apply");3142evas_object_size_hint_weight_set(bt, 0.0, 0.0);3143evas_object_size_hint_align_set(bt, 0.5, 0.5);3144elm_box_pack_end(bx, bt);3145evas_object_show(bt);3146
3147elm_object_content_set(pd, bx);3148
3149evas_object_data_set(win, "fonts", base);3150
3151elm_naviframe_item_simple_push(naviframe, base);3152}
3153
3154// singleton only initted once so .. don't care
3155static Eina_List *colors = NULL;3156
3157static void3158_color_sel(void *data EINA_UNUSED,3159Evas_Object *obj,3160void *event_info EINA_UNUSED)3161{
3162Elm_Widget_Item *it = elm_list_selected_item_get(obj);3163if (it)3164{3165char *s2 = elm_object_item_data_get(it);3166if (s2) elm_config_palette_set(s2);3167}3168}
3169
3170static void3171_status_config_colors(Evas_Object *win,3172Evas_Object *naviframe)3173{
3174Evas_Object *base, *li;3175Eina_List *list, *l;3176const char *s, *pal;3177char *s2;3178Elm_Widget_Item *it;3179
3180base = elm_table_add(win);3181evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3182evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);3183
3184li = elm_list_add(win);3185evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3186evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3187elm_table_pack(base, li, 0, 0, 1, 1);3188evas_object_show(li);3189
3190list = elm_config_palette_list();3191pal = elm_config_palette_get();3192EINA_LIST_FOREACH(list, l, s)3193{3194if (s)3195{3196s2 = strdup(s);3197if (s2)3198{3199colors = eina_list_append(colors, s2);3200it = elm_list_item_append(li, s2, NULL, NULL, NULL, s2);3201if ((pal) && (!strcmp(s2, pal)))3202elm_list_item_selected_set(it, EINA_TRUE);3203}3204}3205}3206evas_object_smart_callback_add(li, "selected", _color_sel, NULL);3207elm_list_go(li);3208elm_config_palette_list_free(list);3209
3210evas_object_data_set(win, "colors", base);3211
3212elm_naviframe_item_simple_push(naviframe, base);3213}
3214
3215static void3216_profiles_list_item_del_cb(void *data,3217Evas_Object *obj EINA_UNUSED,3218void *event_info EINA_UNUSED)3219{
3220free(data);3221}
3222
3223static void3224_profiles_list_selected_cb(void *data,3225Evas_Object *obj,3226void *event_info EINA_UNUSED)3227{
3228const char *cur_profile = NULL;3229const char *sel_profile, *pdir;3230const char *prof_name;3231char buf[PATH_MAX];3232Evas_Object *en;3233#ifdef ELM_EFREET3234Efreet_Desktop *desk = NULL;3235#endif3236
3237sel_profile = data;3238if (!sel_profile)3239return;3240
3241cur_profile = elm_config_profile_get();3242
3243pdir = elm_config_profile_dir_get(sel_profile, EINA_TRUE);3244if (!pdir) pdir = elm_config_profile_dir_get(sel_profile, EINA_FALSE);3245#ifdef ELM_EFREET3246snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);3247desk = efreet_desktop_new(buf);3248if ((desk) && (desk->name)) prof_name = desk->name;3249else3250{3251if (desk) efreet_desktop_free(desk);3252if (pdir) elm_config_profile_dir_free(pdir);3253
3254pdir = elm_config_profile_dir_get(sel_profile, EINA_FALSE);3255snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);3256desk = efreet_desktop_new(buf);3257if ((desk) && (desk->name)) prof_name = desk->name;3258else prof_name = cur_profile;3259}3260#endif3261
3262if (!pdir)3263elm_object_disabled_set(evas_object_data_get(obj, "prof_reset_btn"),3264EINA_TRUE);3265else3266{3267elm_object_disabled_set(evas_object_data_get(obj, "prof_del_btn"),3268EINA_TRUE);3269elm_object_disabled_set(evas_object_data_get(obj, "prof_reset_btn"),3270EINA_FALSE);3271elm_object_disabled_set(evas_object_data_get(obj, "prof_use_btn"),3272EINA_FALSE);3273elm_config_profile_dir_free(pdir);3274}3275
3276snprintf(buf, sizeof(buf), "<hilight>Selected profile: %s</><br/>",3277prof_name);3278elm_object_text_set(evas_object_data_get(obj, "prof_name_lbl"), buf);3279
3280en = evas_object_data_get(obj, "prof_desc_entry");3281#ifdef ELM_EFREET3282if (desk) elm_object_text_set(en, desk->comment);3283else3284#endif3285elm_object_text_set(en, "Unknown");3286
3287#ifdef ELM_EFREET3288if (desk) efreet_desktop_free(desk);3289#endif3290}
3291
3292static void3293_profiles_list_fill(Evas_Object *l_widget,3294Eina_List *p_names)3295{
3296const char *cur_profile = NULL;3297const char *profile;3298void *sel_it = NULL;3299Eina_List *l;3300
3301if (!p_names)3302return;3303
3304elm_list_clear(l_widget);3305
3306cur_profile = elm_config_profile_get();3307
3308EINA_LIST_FOREACH(p_names, l, profile)3309{3310#ifdef ELM_EFREET3311Efreet_Desktop *desk = NULL;3312#endif3313const char *label, *ext, *pdir;3314char buf[PATH_MAX];3315Elm_Object_Item *list_it;3316Evas_Object *ic;3317
3318pdir = elm_config_profile_dir_get(profile, EINA_TRUE);3319if (!pdir) pdir = elm_config_profile_dir_get(profile, EINA_FALSE);3320
3321#ifdef ELM_EFREET3322snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);3323desk = efreet_desktop_new(buf);3324if ((desk) && (desk->name)) label = desk->name;3325else3326{3327if (desk) efreet_desktop_free(desk);3328if (pdir) elm_config_profile_dir_free(pdir);3329
3330pdir = elm_config_profile_dir_get(profile, EINA_FALSE);3331snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);3332desk = efreet_desktop_new(buf);3333if ((desk) && (desk->name)) label = desk->name;3334else label = profile;3335}3336#endif3337
3338buf[0] = 0;3339if (pdir) snprintf(buf, sizeof(buf), "%s/icon.edj", pdir);3340#ifdef ELM_EFREET3341if ((desk) && (desk->icon) && (pdir))3342snprintf(buf, sizeof(buf), "%s/%s", pdir, desk->icon);3343#endif3344ic = elm_icon_add(l_widget);3345ext = strrchr(buf, '.');3346if (ext)3347{3348if (!strcmp(ext, ".edj")) elm_image_file_set(ic, buf, "icon");3349else elm_image_file_set(ic, buf, NULL);3350}3351
3352evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL,33531, 1);3354evas_object_show(ic);3355
3356list_it = elm_list_item_append(l_widget, label, ic, NULL,3357_profiles_list_selected_cb,3358strdup(profile));3359elm_object_item_del_cb_set(list_it, _profiles_list_item_del_cb);3360if (cur_profile && !strcmp(profile, cur_profile))3361sel_it = list_it;3362
3363elm_config_profile_dir_free(pdir);3364
3365#ifdef ELM_EFREET3366if (desk) efreet_desktop_free(desk);3367#endif3368}3369
3370if (sel_it) elm_list_item_selected_set(sel_it, EINA_TRUE);3371elm_list_go(l_widget);3372}
3373
3374static void3375_profiles_list_unselect_cb(void *data EINA_UNUSED,3376Evas_Object *obj,3377void *event_info EINA_UNUSED)3378{
3379if (!elm_list_selected_item_get(obj)) return;3380elm_object_disabled_set(evas_object_data_get(obj, "prof_del_btn"),3381EINA_TRUE);3382elm_object_disabled_set(evas_object_data_get(obj, "prof_reset_btn"),3383EINA_TRUE);3384elm_object_disabled_set(evas_object_data_get(obj, "prof_use_btn"),3385EINA_TRUE);3386}
3387
3388static void3389_status_config_profiles(Evas_Object *win,3390Evas_Object *naviframe)3391{
3392Evas_Object *li, *bx, *fr_bx1, *fr_bx2, *btn_bx, *fr, *lb, *en, *sp, *pd,3393*bt;3394Eina_List *profs;3395Evas *evas;3396
3397bx = elm_box_add(win);3398evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3399evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);3400
3401fr_bx1 = elm_box_add(win);3402evas_object_size_hint_weight_set(fr_bx1, EVAS_HINT_EXPAND,3403EVAS_HINT_EXPAND);3404evas_object_size_hint_align_set(fr_bx1, EVAS_HINT_FILL, EVAS_HINT_FILL);3405elm_box_homogeneous_set(fr_bx1, EINA_TRUE);3406evas_object_show(fr_bx1);3407
3408fr_bx2 = elm_box_add(win);3409evas_object_size_hint_weight_set(fr_bx2, EVAS_HINT_EXPAND,3410EVAS_HINT_EXPAND);3411evas_object_size_hint_align_set(fr_bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);3412evas_object_show(fr_bx2);3413
3414fr = elm_frame_add(win);3415elm_object_text_set(fr, "Available Profiles");3416evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3417evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3418elm_object_content_set(fr, fr_bx1);3419elm_box_pack_end(bx, fr);3420evas_object_show(fr);3421
3422li = elm_list_add(win);3423evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3424evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);3425evas_object_smart_callback_add(li, "unselected", _profiles_list_unselect_cb,3426NULL);3427
3428profs = elm_config_profile_list_get();3429
3430evas_object_show(li);3431elm_box_pack_end(fr_bx2, li);3432
3433lb = elm_label_add(win);3434evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);3435evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);3436
3437evas_object_show(lb);3438
3439en = elm_entry_add(win);3440elm_entry_scrollable_set(en, EINA_TRUE);3441elm_entry_editable_set(en, EINA_FALSE);3442evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3443evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);3444evas_object_show(en);3445
3446evas_object_data_set(li, "prof_name_lbl", lb);3447evas_object_data_set(li, "prof_desc_entry", en);3448
3449elm_box_pack_end(fr_bx2, lb);3450elm_box_pack_end(fr_bx1, fr_bx2);3451elm_box_pack_end(fr_bx1, en);3452
3453/////////////////////////////////////////////3454sp = elm_separator_add(win);3455elm_separator_horizontal_set(sp, EINA_TRUE);3456evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);3457evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);3458elm_box_pack_end(bx, sp);3459evas_object_show(sp);3460
3461pd = elm_frame_add(win);3462elm_object_style_set(pd, "pad_medium");3463evas_object_size_hint_weight_set(pd, 0.0, 0.0);3464evas_object_size_hint_align_set(pd, 0.5, 0.5);3465elm_box_pack_end(bx, pd);3466evas_object_show(pd);3467
3468btn_bx = elm_box_add(win);3469elm_box_horizontal_set(btn_bx, EINA_TRUE);3470evas_object_size_hint_weight_set(btn_bx, EVAS_HINT_EXPAND,3471EVAS_HINT_EXPAND);3472evas_object_size_hint_align_set(btn_bx, EVAS_HINT_FILL, EVAS_HINT_FILL);3473evas_object_show(btn_bx);3474
3475bt = elm_button_add(win);3476evas_object_smart_callback_add(bt, "clicked", _profile_use, li);3477elm_object_text_set(bt, "Use");3478evas_object_size_hint_weight_set(bt, 0.0, 0.0);3479evas_object_size_hint_align_set(bt, 0.5, 0.5);3480elm_box_pack_end(btn_bx, bt);3481evas_object_show(bt);3482
3483evas_object_data_set(li, "prof_use_btn", bt);3484
3485bt = elm_button_add(win);3486evas_object_smart_callback_add(bt, "clicked", _btn_todo, NULL); /* TODO */3487elm_object_text_set(bt, "Delete");3488evas_object_size_hint_weight_set(bt, 0.0, 0.0);3489evas_object_size_hint_align_set(bt, 0.5, 0.5);3490elm_box_pack_end(btn_bx, bt);3491evas_object_show(bt);3492
3493evas_object_data_set(li, "prof_del_btn", bt);3494
3495bt = elm_button_add(win);3496evas_object_smart_callback_add(bt, "clicked", _profile_reset, li);3497elm_object_text_set(bt, "Reset");3498evas_object_size_hint_weight_set(bt, 0.0, 0.0);3499evas_object_size_hint_align_set(bt, 0.5, 0.5);3500elm_box_pack_end(btn_bx, bt);3501evas_object_show(bt);3502
3503evas_object_data_set(li, "prof_reset_btn", bt);3504
3505bt = elm_button_add(win);3506evas_object_smart_callback_add(bt, "clicked", _btn_todo, NULL); /* TODO */3507elm_object_text_set(bt, "Add new");3508evas_object_size_hint_weight_set(bt, 0.0, 0.0);3509evas_object_size_hint_align_set(bt, 0.5, 0.5);3510elm_box_pack_end(btn_bx, bt);3511evas_object_show(bt);3512
3513elm_object_content_set(pd, btn_bx);3514
3515evas = evas_object_evas_get(li);3516evas_event_freeze(evas);3517edje_freeze();3518
3519_profiles_list_fill(li, profs);3520
3521elm_config_profile_list_free(profs);3522
3523edje_thaw();3524evas_event_thaw(evas);3525
3526evas_object_data_set(win, "profiles", bx);3527elm_naviframe_item_simple_push(naviframe, bx);3528}
3529
3530static void3531_status_config_scrolling_bounce(Evas_Object *win, Evas_Object *box)3532{
3533Evas_Object *fr, *bx, *ck, *pd, *lb, *sl;3534
3535fr = elm_frame_add(box);3536evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3537evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3538elm_object_text_set(fr, "Bounce");3539elm_box_pack_end(box, fr);3540evas_object_show(fr);3541
3542bx = elm_box_add(fr);3543elm_object_content_set(fr, bx);3544evas_object_show(bx);3545
3546/* Enable Scroll Bounce */3547CHECK_ADD("Enable scroll bounce",3548"Set whether scrollers should bounce<br/>"3549"when they reach their viewport's edge<br/>"3550"during a scroll",3551sb_change, NULL);3552evas_object_data_set(win, "scroll_bounce_check", ck);3553elm_check_state_set(ck, elm_config_scroll_bounce_enabled_get());3554
3555/* Scroll bounce friction */3556LABEL_FRAME_ADD("<hilight>Scroll bounce friction</>");3557
3558sl = elm_slider_add(bx);3559elm_object_tooltip_text_set(sl, "This is the amount of inertia a <br/>"3560"scroller will impose at bounce animations");3561evas_object_data_set(win, "bounce_friction_slider", sl);3562evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3563evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3564elm_slider_span_size_set(sl, 120);3565elm_slider_unit_format_set(sl, "%1.2f");3566elm_slider_indicator_format_set(sl, "%1.2f");3567elm_slider_min_max_set(sl, 0.0, 4.0);3568elm_slider_value_set(sl, elm_config_scroll_bounce_friction_get());3569elm_box_pack_end(bx, sl);3570evas_object_show(sl);3571
3572evas_object_smart_callback_add(sl, "changed", bf_round, NULL);3573evas_object_smart_callback_add(sl, "delay,changed", bf_change, NULL);3574}
3575
3576static void3577_status_config_scrolling_thumb(Evas_Object *win, Evas_Object *box)3578{
3579Evas_Object *fr, *bx, *ck, *sl, *sp, *pd, *lb;3580
3581fr = elm_frame_add(box);3582evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3583evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3584elm_object_text_set(fr, "Thumb Scroll");3585elm_box_pack_end(box, fr);3586evas_object_show(fr);3587
3588bx = elm_box_add(fr);3589elm_object_content_set(fr, bx);3590evas_object_show(bx);3591
3592/* Enable thumb scroll */3593CHECK_ADD("Enable thumb scroll",3594"Set whether scrollers should be<br/>"3595"draggable from any point in their views",3596ts_change, NULL);3597evas_object_data_set(win, "thumbscroll_check", ck);3598elm_check_state_set(ck, elm_config_scroll_thumbscroll_enabled_get());3599
3600/* Thumb scroll threadhold */3601LABEL_FRAME_ADD("<hilight>Thumb scroll threshold</>");3602
3603sl = elm_slider_add(win);3604elm_object_tooltip_text_set(sl, "This is the number of pixels one should<br/>"3605"travel while dragging a scroller's view<br/>"3606"to actually trigger scrolling");3607evas_object_data_set(win, "ts_threshold_slider", sl);3608evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3609evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3610elm_slider_span_size_set(sl, 120);3611elm_slider_unit_format_set(sl, "%1.0f pixels");3612elm_slider_indicator_format_set(sl, "%1.0f");3613elm_slider_min_max_set(sl, 8.0, 50.0);3614elm_slider_value_set(sl, elm_config_scroll_thumbscroll_threshold_get());3615elm_box_pack_end(bx, sl);3616evas_object_show(sl);3617
3618evas_object_smart_callback_add(sl, "changed", tst_round, NULL);3619evas_object_smart_callback_add(sl, "delay,changed", tst_change, NULL);3620
3621/* Thumb scroll hold threashold */3622LABEL_FRAME_ADD("<hilight>Thumb scroll hold threshold</>");3623
3624sl = elm_slider_add(win);3625elm_object_tooltip_text_set(sl, "This is the number of pixels the range<br/>"3626"which can be scrolled, while the scroller<br/>"3627"is holed");3628evas_object_data_set(win, "ts_hold_threshold_slider", sl);3629evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3630evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3631elm_slider_span_size_set(sl, 120);3632elm_slider_unit_format_set(sl, "%1.0f pixels");3633elm_slider_indicator_format_set(sl, "%1.0f");3634elm_slider_min_max_set(sl, 4.0, 500.0);3635elm_slider_value_set(sl, elm_config_scroll_thumbscroll_hold_threshold_get());3636elm_box_pack_end(bx, sl);3637evas_object_show(sl);3638
3639evas_object_smart_callback_add(sl, "changed", tsht_round, NULL);3640evas_object_smart_callback_add(sl, "delay,changed", tsht_change, NULL);3641
3642/* Thumb scroll momentum threshold */3643LABEL_FRAME_ADD("<hilight>Thumb scroll momentum threshold</>");3644
3645sl = elm_slider_add(win);3646elm_object_tooltip_text_set(sl, "This is the minimum speed of mouse <br/>"3647"cursor movement which will trigger<br/>"3648"list self scrolling animation after a<br/>"3649"mouse up event (pixels/second)");3650evas_object_data_set(win, "ts_momentum_threshold_slider", sl);3651evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3652evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3653elm_slider_span_size_set(sl, 120);3654elm_slider_unit_format_set(sl, "%1.0f pixels/s");3655elm_slider_indicator_format_set(sl, "%1.0f");3656elm_slider_min_max_set(sl, 10.0, 200.0);3657elm_slider_value_set(sl, elm_config_scroll_thumbscroll_momentum_threshold_get());3658elm_box_pack_end(bx, sl);3659evas_object_show(sl);3660
3661evas_object_smart_callback_add(sl, "changed", tsmt_round, NULL);3662evas_object_smart_callback_add(sl, "delay,changed", tsmt_change,3663NULL);3664
3665/* Thumb scroll flick distance tolerance */3666LABEL_FRAME_ADD("<hilight>Thumb scroll flick distance tolerance</>");3667
3668sl = elm_slider_add(win);3669elm_object_tooltip_text_set(sl, "This is the number of pixels the maximum<br/>"3670"distance which can be flicked. If it is<br/>"3671"flicked more than this, the flick distance<br/>"3672"is same with maximum distance");3673evas_object_data_set(win, "ts_flick_distance_tolerance_slider", sl);3674evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3675evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3676elm_slider_span_size_set(sl, 120);3677elm_slider_unit_format_set(sl, "%1.0f pixels");3678elm_slider_indicator_format_set(sl, "%1.0f");3679elm_slider_min_max_set(sl, 100.0, 3000.0);3680elm_slider_value_set(sl, elm_config_scroll_thumbscroll_flick_distance_tolerance_get());3681elm_box_pack_end(bx, sl);3682evas_object_show(sl);3683
3684evas_object_smart_callback_add(sl, "changed", tsfdt_round, NULL);3685evas_object_smart_callback_add(sl, "delay,changed", tsfdt_change, NULL);3686
3687/* Thumb scroll friction */3688LABEL_FRAME_ADD("<hilight>Thumb scroll friction</>");3689
3690sl = elm_slider_add(win);3691elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br/>"3692"scroller will impose at self scrolling<br/>"3693"animations");3694evas_object_data_set(win, "ts_friction_slider", sl);3695evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3696evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3697elm_slider_span_size_set(sl, 120);3698elm_slider_unit_format_set(sl, "%1.1f");3699elm_slider_indicator_format_set(sl, "%1.1f");3700elm_slider_min_max_set(sl, 0.1, 10.0);3701elm_slider_value_set(sl, elm_config_scroll_thumbscroll_friction_get());3702elm_box_pack_end(bx, sl);3703evas_object_show(sl);3704
3705evas_object_smart_callback_add(sl, "changed", tsf_round, NULL);3706evas_object_smart_callback_add(sl, "delay,changed", tsf_change, NULL);3707
3708/* Thumb scroll min friction */3709LABEL_FRAME_ADD("<hilight>Thumb scroll min friction</>");3710
3711sl = elm_slider_add(win);3712elm_object_tooltip_text_set(sl, "This is the min amount of inertia a<br/>"3713"scroller will impose at self scrolling<br/>"3714"animations");3715evas_object_data_set(win, "ts_min_friction_slider", sl);3716evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3717evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3718elm_slider_span_size_set(sl, 120);3719elm_slider_unit_format_set(sl, "%1.1f");3720elm_slider_indicator_format_set(sl, "%1.1f");3721elm_slider_min_max_set(sl, 0.1, 10.0);3722elm_slider_value_set(sl, elm_config_scroll_thumbscroll_min_friction_get());3723elm_box_pack_end(bx, sl);3724evas_object_show(sl);3725
3726evas_object_smart_callback_add(sl, "changed", tsmf_round, NULL);3727evas_object_smart_callback_add(sl, "delay,changed", tsmf_change, NULL);3728
3729/* Thumb scroll friction standard */3730LABEL_FRAME_ADD("<hilight>Thumb scroll friction standard</>");3731
3732sl = elm_slider_add(win);3733elm_object_tooltip_text_set(sl, "This is the standard velocity of the scroller."3734"<br/>The scroll animation time is same<br/>"3735"with thumbscroll friction, if the velocity"3736"<br/>is same with standard velocity.");3737evas_object_data_set(win, "ts_friction_standard_slider", sl);3738evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3739evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3740elm_slider_span_size_set(sl, 120);3741elm_slider_unit_format_set(sl, "%1.0f pixel/s");3742elm_slider_indicator_format_set(sl, "%1.0f");3743elm_slider_min_max_set(sl, 10.0, 5000.0);3744elm_slider_value_set(sl, elm_config_scroll_thumbscroll_friction_standard_get());3745elm_box_pack_end(bx, sl);3746evas_object_show(sl);3747
3748evas_object_smart_callback_add(sl, "changed", tsfs_round, NULL);3749evas_object_smart_callback_add(sl, "delay,changed", tsfs_change, NULL);3750
3751/* Thumb scroll border friction */3752LABEL_FRAME_ADD("<hilight>Thumb scroll border friction</>");3753
3754sl = elm_slider_add(win);3755elm_object_tooltip_text_set(sl, "This is the amount of lag between your<br/>"3756"actual mouse cursor dragging movement<br/>"3757"and a scroller's view movement itself,<br/>"3758"while pushing it into bounce state<br/>"3759"manually");3760evas_object_data_set(win, "ts_border_friction_slider", sl);3761evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3762evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3763elm_slider_span_size_set(sl, 120);3764elm_slider_unit_format_set(sl, "%1.2f");3765elm_slider_indicator_format_set(sl, "%1.2f");3766elm_slider_min_max_set(sl, 0.0, 1.0);3767elm_slider_value_set(sl, elm_config_scroll_thumbscroll_border_friction_get());3768elm_box_pack_end(bx, sl);3769evas_object_show(sl);3770
3771evas_object_smart_callback_add(sl, "changed", tsbf_round, NULL);3772evas_object_smart_callback_add(sl, "delay,changed", tsbf_change, NULL);3773
3774/* Thumb scroll sensitivity friction */3775LABEL_FRAME_ADD("<hilight>Thumb scroll sensitivity friction</>");3776
3777sl = elm_slider_add(win);3778elm_object_tooltip_text_set(sl, "This is the sensitivity amount which<br/>"3779"is be multiplied by the length of mouse<br/>"3780"dragging.");3781evas_object_data_set(win, "ts_sensitivity_friction_slider", sl);3782evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3783evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3784elm_slider_span_size_set(sl, 120);3785elm_slider_unit_format_set(sl, "%1.2f");3786elm_slider_indicator_format_set(sl, "%1.2f");3787elm_slider_min_max_set(sl, 0.1, 1.0);3788elm_slider_value_set(sl, elm_config_scroll_thumbscroll_sensitivity_friction_get());3789elm_box_pack_end(bx, sl);3790evas_object_show(sl);3791
3792evas_object_smart_callback_add(sl, "changed", tssf_round, NULL);3793evas_object_smart_callback_add(sl, "delay,changed", tssf_change, NULL);3794
3795sp = elm_separator_add(win);3796elm_separator_horizontal_set(sp, EINA_TRUE);3797evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);3798evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);3799elm_box_pack_end(bx, sp);3800evas_object_show(sp);3801}
3802
3803static void3804_status_config_scrolling_acceleration(Evas_Object *win, Evas_Object *box)3805{
3806Evas_Object *fr, *bx, *sl, *pd, *lb;3807
3808fr = elm_frame_add(box);3809evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3810evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3811elm_object_text_set(fr, "Thumb Scroll Acceleration");3812elm_box_pack_end(box, fr);3813evas_object_show(fr);3814
3815bx = elm_box_add(fr);3816elm_object_content_set(fr, bx);3817evas_object_show(bx);3818
3819/* Thumb scroll acceleration threshold */3820LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration threshold</>");3821
3822sl = elm_slider_add(bx);3823elm_object_tooltip_text_set(sl, "This is the minimum speed of mouse <br/>"3824"cursor movement which will accelerate<br/>"3825"scrolling velocity after a<br/>"3826"mouse up event (pixels/second)");3827evas_object_data_set(win, "ts_acceleration_threshold_slider", sl);3828evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3829evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3830elm_slider_span_size_set(sl, 120);3831elm_slider_unit_format_set(sl, "%1.0f pixels/s");3832elm_slider_indicator_format_set(sl, "%1.0f");3833elm_slider_min_max_set(sl, 10.0, 5000.0);3834elm_slider_value_set(sl, elm_config_scroll_thumbscroll_acceleration_threshold_get());3835elm_box_pack_end(bx, sl);3836evas_object_show(sl);3837
3838evas_object_smart_callback_add(sl, "changed", tsat_round, NULL);3839evas_object_smart_callback_add(sl, "delay,changed", tsat_change, NULL);3840
3841/* Thumb scroll acceleration time limit */3842LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration time limit</>");3843
3844sl = elm_slider_add(bx);3845elm_object_tooltip_text_set(sl, "This is the time limit for<br/>"3846"accelerating velocity<br/>");3847evas_object_data_set(win, "ts_acceleration_time_limit_slider", sl);3848evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3849evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3850elm_slider_span_size_set(sl, 120);3851elm_slider_unit_format_set(sl, "%1.1f");3852elm_slider_indicator_format_set(sl, "%1.1f");3853elm_slider_min_max_set(sl, 0.0, 15.0);3854elm_slider_value_set(sl, elm_config_scroll_thumbscroll_acceleration_time_limit_get());3855elm_box_pack_end(bx, sl);3856evas_object_show(sl);3857
3858evas_object_smart_callback_add(sl, "changed", tsatl_round, NULL);3859evas_object_smart_callback_add(sl, "delay,changed", tsatl_change, NULL);3860
3861/* Thumb scroll acceleration weight */3862LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration weight</>");3863
3864sl = elm_slider_add(bx);3865elm_object_tooltip_text_set(sl, "This is the weight for acceleration");3866evas_object_data_set(win, "ts_acceleration_weight_slider", sl);3867evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3868evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3869elm_slider_span_size_set(sl, 120);3870elm_slider_unit_format_set(sl, "%1.1f");3871elm_slider_indicator_format_set(sl, "%1.1f");3872elm_slider_min_max_set(sl, 1.0, 10.0);3873elm_slider_value_set(sl, elm_config_scroll_thumbscroll_acceleration_weight_get());3874elm_box_pack_end(bx, sl);3875evas_object_show(sl);3876
3877evas_object_smart_callback_add(sl, "changed", tsaw_round, NULL);3878evas_object_smart_callback_add(sl, "delay,changed", tsaw_change, NULL);3879}
3880
3881static void3882_status_config_scrolling(Evas_Object *win,3883Evas_Object *naviframe)3884{
3885Evas_Object *lb, *pd, *box, *bx, *sl, *sc, *ck, *fr;3886
3887box = elm_box_add(win);3888evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);3889evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.5);3890
3891sc = elm_scroller_add(win);3892elm_scroller_step_size_set(sc, 32, 64 * elm_config_scale_get());3893evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);3894evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);3895elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);3896evas_object_show(sc);3897elm_object_content_set(sc, box);3898
3899fr = elm_frame_add(box);3900evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3901evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3902elm_object_text_set(fr, "Acceleration");3903elm_box_pack_end(box, fr);3904evas_object_show(fr);3905
3906bx = elm_box_add(fr);3907elm_object_content_set(fr, bx);3908evas_object_show(bx);3909
3910LABEL_FRAME_ADD("<hilight>Wheel acceleration factor</>");3911
3912sl = elm_slider_add(win);3913elm_object_tooltip_text_set(sl, "This is the factor by which scrolling<br/>"3914"increments will be multiplied when scrolling<br/>"3915"quickly");3916evas_object_data_set(win, "scroll_accel_factor", sl);3917evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3918evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3919elm_slider_span_size_set(sl, 120);3920elm_slider_unit_format_set(sl, "%1.1f");3921elm_slider_indicator_format_set(sl, "%2.1f");3922elm_slider_min_max_set(sl, 0.0, 10.0);3923elm_slider_value_set(sl, elm_config_scroll_accel_factor_get());3924elm_box_pack_end(bx, sl);3925evas_object_show(sl);3926
3927evas_object_smart_callback_add(sl, "changed", bis_round, NULL);3928evas_object_smart_callback_add(sl, "delay,changed", scroll_accel_factor_change, NULL);3929
3930fr = elm_frame_add(box);3931evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3932evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3933elm_object_text_set(fr, "Animation");3934elm_box_pack_end(box, fr);3935evas_object_show(fr);3936
3937bx = elm_box_add(fr);3938elm_object_content_set(fr, bx);3939evas_object_show(bx);3940
3941/* Disable Scroll Animation */3942CHECK_ADD("Disable scroll animation",3943"Set whether scrollers should scroll<br/>"3944"immediately instead of animating",3945scroll_animation_disable_change, NULL);3946evas_object_data_set(win, "scroll_animation_disable", ck);3947elm_check_state_set(ck, elm_config_scroll_animation_disabled_get());3948
3949/* Bounce */3950_status_config_scrolling_bounce(win, box);3951
3952_status_config_scrolling_thumb(win, box);3953
3954/* Acceleration */3955_status_config_scrolling_acceleration(win, box);3956
3957fr = elm_frame_add(box);3958evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);3959evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);3960elm_object_text_set(fr, "Friction");3961elm_box_pack_end(box, fr);3962evas_object_show(fr);3963
3964bx = elm_box_add(fr);3965elm_object_content_set(fr, bx);3966evas_object_show(bx);3967/* Page scroll friction */3968LABEL_FRAME_ADD("<hilight>Page scroll friction</>");3969
3970sl = elm_slider_add(win);3971elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br/>"3972"paged scroller will impose at<br/>"3973"page fitting animations");3974evas_object_data_set(win, "page_scroll_friction_slider", sl);3975evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3976evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3977elm_slider_span_size_set(sl, 120);3978elm_slider_unit_format_set(sl, "%1.1f");3979elm_slider_indicator_format_set(sl, "%1.1f");3980elm_slider_min_max_set(sl, 0.0, 5.0);3981elm_slider_value_set(sl, elm_config_scroll_page_scroll_friction_get());3982elm_box_pack_end(bx, sl);3983evas_object_show(sl);3984
3985evas_object_smart_callback_add(sl, "changed", ps_round, NULL);3986evas_object_smart_callback_add(sl, "delay,changed", ps_change, NULL);3987
3988/* Bring in scroll friction */3989LABEL_FRAME_ADD("<hilight>Bring in scroll friction</>");3990
3991sl = elm_slider_add(win);3992elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br/>"3993"scroller will impose at region bring<br/>"3994"animations");3995evas_object_data_set(win, "bring_in_scroll_friction_slider", sl);3996evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);3997evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);3998elm_slider_span_size_set(sl, 120);3999elm_slider_unit_format_set(sl, "%1.1f");4000elm_slider_indicator_format_set(sl, "%1.1f");4001elm_slider_min_max_set(sl, 0.0, 5.0);4002elm_slider_value_set(sl, elm_config_scroll_bring_in_scroll_friction_get());4003elm_box_pack_end(bx, sl);4004evas_object_show(sl);4005
4006evas_object_smart_callback_add(sl, "changed", bis_round, NULL);4007evas_object_smart_callback_add(sl, "delay,changed", bis_change, NULL);4008
4009/* Zoom scroll friction */4010LABEL_FRAME_ADD("<hilight>Zoom scroll friction</>");4011
4012sl = elm_slider_add(win);4013elm_object_tooltip_text_set(sl, "This is the amount of inertia<br/>"4014"scrollers will impose at animations<br/>"4015"triggered by Elementary widgets'<br/>"4016"zooming API");4017evas_object_data_set(win, "zoom_scroll_friction_slider", sl);4018evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4019evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4020elm_slider_span_size_set(sl, 120);4021elm_slider_unit_format_set(sl, "%1.1f");4022elm_slider_indicator_format_set(sl, "%1.1f");4023elm_slider_min_max_set(sl, 0.0, 5.0);4024elm_slider_value_set(sl, elm_config_scroll_zoom_friction_get());4025elm_box_pack_end(bx, sl);4026evas_object_show(sl);4027
4028evas_object_smart_callback_add(sl, "changed", zf_round, NULL);4029evas_object_smart_callback_add(sl, "delay,changed", zf_change, NULL);4030
4031fr = elm_frame_add(box);4032evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);4033evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);4034elm_object_text_set(fr, "Smooth Start");4035elm_box_pack_end(box, fr);4036evas_object_show(fr);4037
4038bx = elm_box_add(fr);4039elm_object_content_set(fr, bx);4040evas_object_show(bx);4041CHECK_ADD("Enable smooth start",4042"Set whether scrollers start smoothly on thumb<br/>"4043"scroll",4044ss_change, NULL);4045evas_object_data_set(win, "scroll_smooth_start", ck);4046elm_check_state_set(ck, elm_config_scroll_thumbscroll_smooth_start_get());4047
4048/* Scroll Smooth Amount */4049LABEL_FRAME_ADD("<hilight>Scroll Smooth Amount</>");4050
4051sl = elm_slider_add(win);4052elm_object_tooltip_text_set(sl, "This is the amount smoothing to apply<br/>"4053"to thumbscroll to avoid jerky input");4054evas_object_data_set(win, "scroll_smooth_amount", sl);4055evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4056evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4057elm_slider_span_size_set(sl, 120);4058elm_slider_unit_format_set(sl, "%1.2f");4059elm_slider_indicator_format_set(sl, "%1.2f");4060elm_slider_min_max_set(sl, 0.0, 1.0);4061elm_slider_value_set(sl, elm_config_scroll_thumbscroll_smooth_amount_get());4062elm_box_pack_end(bx, sl);4063evas_object_show(sl);4064
4065evas_object_smart_callback_add(sl, "changed", smooth_round, NULL);4066evas_object_smart_callback_add(sl, "delay,changed", smooth_change, NULL);4067
4068/* Scroll Smooth Time Window */4069LABEL_FRAME_ADD("<hilight>Scroll Smooth Time Window</>");4070
4071sl = elm_slider_add(win);4072elm_object_tooltip_text_set(sl, "This is the window of time to look back<br/>"4073"into for smoothing of thumbscroll");4074evas_object_data_set(win, "scroll_smooth_time_window", sl);4075evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4076evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4077elm_slider_span_size_set(sl, 120);4078elm_slider_unit_format_set(sl, "%1.2f");4079elm_slider_indicator_format_set(sl, "%1.2f");4080elm_slider_min_max_set(sl, 0.0, 1.0);4081elm_slider_value_set(sl, elm_config_scroll_thumbscroll_smooth_time_window_get());4082elm_box_pack_end(bx, sl);4083evas_object_show(sl);4084
4085evas_object_smart_callback_add(sl, "changed", smooth_win_round, NULL);4086evas_object_smart_callback_add(sl, "delay,changed", smooth_win_change, NULL);4087
4088
4089evas_object_data_set(win, "scrolling", bx);4090
4091elm_naviframe_item_simple_push(naviframe, bx);4092}
4093
4094static void4095_cb_accel(void *data, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)4096{
4097const char *val = data;4098const char *ss = elm_config_accel_preference_get();4099
4100if ((!ss) || (strcasecmp(ss, val)))4101{4102elm_config_accel_preference_set(val);4103elm_config_all_flush();4104}4105}
4106
4107static void4108_cb_accel_override(void *data EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)4109{
4110Eina_Bool val = elm_check_state_get(obj);4111Eina_Bool sb = elm_config_accel_preference_override_get();4112
4113if (val != sb)4114{4115elm_config_accel_preference_override_set(val);4116elm_config_all_flush();4117}4118}
4119
4120static void4121_cb_vsync(void *data EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)4122{
4123Eina_Bool val = elm_check_state_get(obj);4124Eina_Bool sb = elm_config_vsync_get();4125
4126if (val != sb)4127{4128elm_config_vsync_set(val);4129elm_config_all_flush();4130}4131}
4132
4133static void4134_cb_withdrawn(void *data EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)4135{
4136Eina_Bool val = elm_check_state_get(obj);4137Eina_Bool sb = elm_config_agressive_withdrawn_get();4138
4139if (val != sb)4140{4141elm_config_agressive_withdrawn_set(val);4142elm_config_all_flush();4143}4144}
4145
4146static void4147_status_config_rendering(Evas_Object *win,4148Evas_Object *naviframe)4149{
4150Evas_Object *li, *bx, *ck, *sp;4151Elm_Object_Item *it;4152
4153bx = elm_box_add(win);4154evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);4155evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);4156
4157li = elm_list_add(win);4158evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);4159evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);4160elm_box_pack_end(bx, li);4161evas_object_show(li);4162
4163it = elm_list_item_append(li, "No Acceleration", NULL, NULL,4164_cb_accel, "none");4165if (!elm_config_accel_preference_get() ||4166(!strcasecmp(elm_config_accel_preference_get(), "none")))4167elm_list_item_selected_set(it, EINA_TRUE);4168
4169it = elm_list_item_append(li, "OpenGL / OpenGL-ES", NULL, NULL,4170_cb_accel, "gl");4171if (elm_config_accel_preference_get() &&4172((!strcasecmp(elm_config_accel_preference_get(), "gl")) ||4173(!strcasecmp(elm_config_accel_preference_get(), "opengl"))))4174elm_list_item_selected_set(it, EINA_TRUE);4175
4176it = elm_list_item_append(li, "3D (any 3D hardware)", NULL, NULL,4177_cb_accel, "3d");4178if (elm_config_accel_preference_get() &&4179(!strcasecmp(elm_config_accel_preference_get(), "3d")))4180elm_list_item_selected_set(it, EINA_TRUE);4181
4182it = elm_list_item_append(li, "Hardware (any hardware)", NULL, NULL,4183_cb_accel, "hw");4184if (elm_config_accel_preference_get() &&4185((!strcasecmp(elm_config_accel_preference_get(), "hw")) ||4186(!strcasecmp(elm_config_accel_preference_get(), "hardware")) ||4187(!strcasecmp(elm_config_accel_preference_get(), "accel"))))4188elm_list_item_selected_set(it, EINA_TRUE);4189
4190elm_list_go(li);4191
4192CHECK_ADD("Override Preferred Acceleration",4193"Force any application requesting<br>"4194"acceleration to use the system<br>"4195"configured acceleration as above",4196_cb_accel_override, NULL);4197elm_check_state_set(ck, elm_config_accel_preference_override_get());4198
4199/////////////////////////////////////////////4200sp = elm_separator_add(win);4201elm_separator_horizontal_set(sp, EINA_TRUE);4202evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);4203evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);4204elm_box_pack_end(bx, sp);4205evas_object_show(sp);4206
4207CHECK_ADD("Tear-free rendering (VSync)",4208"This enables Vsync hints for some<br>"4209"rendering engines to try keep display<br>"4210"VSynced and from Tearing",4211_cb_vsync, NULL);4212elm_check_state_set(ck, elm_config_vsync_get());4213
4214CHECK_ADD("Aggressive withdrawn",4215"When the application is iconified it will<br>"4216"drop its ressource and switch to a paused state<br>"4217"if the application handle that lifecycle state.",4218_cb_withdrawn, NULL);4219elm_check_state_set(ck, elm_config_agressive_withdrawn_get());4220
4221evas_object_data_set(win, "rendering", bx);4222elm_naviframe_item_simple_push(naviframe, bx);4223}
4224
4225static void4226_status_config_caches(Evas_Object *win,4227Evas_Object *naviframe)4228{
4229Evas_Object *lb, *pd, *bx, *sl, *sp, *ck;4230
4231bx = elm_box_add(win);4232evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);4233evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);4234
4235LABEL_FRAME_ADD("<hilight>Cache Flush Interval (8 ticks per second)</>");4236
4237sl = elm_slider_add(win);4238evas_object_data_set(win, "cache_flush_interval_slider", sl);4239evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4240evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4241elm_slider_span_size_set(sl, 120);4242elm_slider_unit_format_set(sl, "%1.0f ticks");4243elm_slider_indicator_format_set(sl, "%1.0f");4244elm_slider_min_max_set(sl, 8.0, 4096.0);4245elm_slider_value_set(sl, elm_config_cache_flush_interval_get());4246elm_object_disabled_set(sl, !elm_config_cache_flush_enabled_get());4247
4248CHECK_ADD("Enable Flushing", "Enable Flushing", cf_enable, sl);4249elm_check_state_set(ck, elm_config_cache_flush_enabled_get());4250
4251elm_box_pack_end(bx, sl);4252evas_object_show(sl);4253
4254evas_object_smart_callback_add(sl, "changed", cf_round, NULL);4255evas_object_smart_callback_add(sl, "delay,changed", cf_change, NULL);4256
4257sp = elm_separator_add(win);4258elm_separator_horizontal_set(sp, EINA_TRUE);4259evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);4260evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);4261elm_box_pack_end(bx, sp);4262evas_object_show(sp);4263
4264LABEL_FRAME_ADD("<hilight>Font Cache Size</>");4265
4266sl = elm_slider_add(win);4267evas_object_data_set(win, "font_cache_slider", sl);4268evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4269evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4270elm_slider_span_size_set(sl, 120);4271elm_slider_unit_format_set(sl, "%1.1f MiB");4272elm_slider_indicator_format_set(sl, "%1.1f");4273elm_slider_min_max_set(sl, 0.0, 4.0);4274elm_slider_value_set(sl, (double)elm_config_cache_font_cache_size_get() / 1024.0);4275elm_box_pack_end(bx, sl);4276evas_object_show(sl);4277
4278evas_object_smart_callback_add(sl, "changed", fc_round, NULL);4279evas_object_smart_callback_add(sl, "delay,changed", fc_change, NULL);4280
4281sp = elm_separator_add(win);4282elm_separator_horizontal_set(sp, EINA_TRUE);4283evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);4284evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);4285elm_box_pack_end(bx, sp);4286evas_object_show(sp);4287
4288LABEL_FRAME_ADD("<hilight>Image Cache Size</>");4289
4290sl = elm_slider_add(win);4291evas_object_data_set(win, "image_cache_slider", sl);4292evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4293evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4294elm_slider_span_size_set(sl, 120);4295elm_slider_unit_format_set(sl, "%1.0f MiB");4296elm_slider_indicator_format_set(sl, "%1.0f");4297elm_slider_min_max_set(sl, 0, 512);4298elm_slider_value_set(sl, (double)elm_config_cache_image_cache_size_get() / 1024.0);4299elm_box_pack_end(bx, sl);4300evas_object_show(sl);4301
4302evas_object_smart_callback_add(sl, "changed", ic_round, NULL);4303evas_object_smart_callback_add(sl, "delay,changed", ic_change, NULL);4304
4305sp = elm_separator_add(win);4306elm_separator_horizontal_set(sp, EINA_TRUE);4307evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);4308evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);4309elm_box_pack_end(bx, sp);4310evas_object_show(sp);4311
4312LABEL_FRAME_ADD("<hilight>Number of Edje Files to Cache</>");4313
4314sl = elm_slider_add(win);4315evas_object_data_set(win, "edje_file_cache_slider", sl);4316evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4317evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4318elm_slider_span_size_set(sl, 120);4319elm_slider_unit_format_set(sl, "%1.0f files");4320elm_slider_indicator_format_set(sl, "%1.0f");4321elm_slider_min_max_set(sl, 0, 32);4322elm_slider_value_set(sl, elm_config_cache_edje_file_cache_size_get());4323elm_box_pack_end(bx, sl);4324evas_object_show(sl);4325
4326evas_object_smart_callback_add(sl, "changed", efc_round, NULL);4327evas_object_smart_callback_add(sl, "delay,changed", efc_change, NULL);4328
4329sp = elm_separator_add(win);4330elm_separator_horizontal_set(sp, EINA_TRUE);4331evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);4332evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);4333elm_box_pack_end(bx, sp);4334evas_object_show(sp);4335
4336LABEL_FRAME_ADD("<hilight>Number of Edje Collections to Cache</>");4337
4338sl = elm_slider_add(win);4339evas_object_data_set(win, "edje_collection_cache_slider", sl);4340evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);4341evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);4342elm_slider_span_size_set(sl, 120);4343elm_slider_unit_format_set(sl, "%1.0f collections");4344elm_slider_indicator_format_set(sl, "%1.0f");4345elm_slider_min_max_set(sl, 0, 128);4346elm_slider_value_set(sl, elm_config_cache_edje_collection_cache_size_get());4347elm_box_pack_end(bx, sl);4348evas_object_show(sl);4349
4350evas_object_smart_callback_add(sl, "changed", ecc_round, NULL);4351evas_object_smart_callback_add(sl, "delay,changed", ecc_change, NULL);4352
4353evas_object_data_set(win, "caches", bx);4354
4355elm_naviframe_item_simple_push(naviframe, bx);4356}
4357
4358static void4359_status_config_full(Evas_Object *win,4360Evas_Object *bx0)4361{
4362Evas_Object *tb, *naviframe;4363Elm_Object_Item *tb_it;4364
4365tb = elm_toolbar_add(win);4366elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);4367elm_toolbar_menu_parent_set(tb, win);4368elm_toolbar_homogeneous_set(tb, EINA_FALSE);4369evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0.0);4370evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);4371
4372tb_it = elm_toolbar_item_append(tb, "preferences-scale",4373"Sizing", _cf_sizing, win);4374elm_toolbar_item_append(tb, "preferences-desktop-theme",4375"Theme", _cf_themes, win);4376elm_toolbar_item_append(tb, "preferences-icons",4377"Icons", _cf_icons, win);4378elm_toolbar_item_append(tb, "preferences-fonts",4379"Fonts", _cf_fonts, win);4380elm_toolbar_item_append(tb, "preferences-color",4381"Colors", _cf_colors, win);4382elm_toolbar_item_append(tb, "preferences-desktop-multimedia",4383"Audio", _cf_audio, win);4384elm_toolbar_item_append(tb, "preferences-profile",4385"Profiles", _cf_profiles, win);4386elm_toolbar_item_append(tb, "system-run",4387"Scrolling", _cf_scrolling, win);4388elm_toolbar_item_append(tb, "preferences-desktop",4389"Rendering", _cf_rendering, win);4390elm_toolbar_item_append(tb, "appointment-new",4391"Caches", _cf_caches, win);4392elm_toolbar_item_append(tb, "magnifying-glass",4393"Focus", _cf_focus, win);4394elm_toolbar_item_append(tb, "preferences-etc",4395"Etc", _cf_etc, win);4396
4397elm_box_pack_end(bx0, tb);4398evas_object_show(tb);4399
4400naviframe = elm_naviframe_add(win);4401evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);4402evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);4403evas_object_data_set(win, "naviframe", naviframe);4404
4405_status_config_themes(win, naviframe);4406_status_config_icons(win, naviframe);4407_status_config_fonts(win, naviframe);4408_status_config_colors(win, naviframe);4409_status_config_profiles(win, naviframe);4410_status_config_rendering(win, naviframe);4411_status_config_scrolling(win, naviframe);4412_status_config_caches(win, naviframe);4413_status_config_audio(win, naviframe);4414_status_config_focus(win, naviframe);4415_status_config_etc(win, naviframe);4416_status_config_sizing(win, naviframe); // Note: call this at the end.4417
4418// FIXME uncomment after flip style fix, please4419//elm_object_style_set(naviframe, "flip");4420elm_toolbar_item_selected_set(tb_it, EINA_TRUE);4421elm_box_pack_end(bx0, naviframe);4422evas_object_show(naviframe);4423}
4424
4425static void4426win_create(void)4427{
4428Evas_Object *win, *bx0;4429
4430win = elm_win_util_standard_add("main", "Elementary Config");4431if (!win) exit(1);4432ecore_event_handler_add(ELM_EVENT_CONFIG_ALL_CHANGED, _config_all_changed,4433win);4434evas_object_smart_callback_add(win, "delete,request", config_exit, NULL);4435
4436bx0 = elm_box_add(win);4437evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);4438elm_win_resize_object_add(win, bx0);4439evas_object_show(bx0);4440
4441if (!interactive) _status_basic(win, bx0);4442else if (0)4443_status_config(win, bx0);4444else _status_config_full(win, bx0);4445
4446evas_object_resize(win, 320 * elm_config_scale_get(),4447480 * elm_config_scale_get());4448evas_object_show(win);4449}
4450
4451static Eina_Bool4452_exit_timer(void *data EINA_UNUSED)4453{
4454efl_exit(0);4455return ECORE_CALLBACK_CANCEL;4456}
4457
4458EAPI_MAIN void4459efl_terminate(void *data EINA_UNUSED,4460const Efl_Event *ev EINA_UNUSED)4461{
4462fprintf(stderr, "Terminating.\n");4463}
4464
4465/* this is your elementary main function - it MUST be called IMMEDIATELY
4466* after elm_init() and MUST be passed argc and argv, and MUST be called
4467* elm_main and not be static - must be a visible symbol with EAPI infront */
4468EAPI_MAIN void4469efl_main(void *data EINA_UNUSED, const Efl_Event *ev)4470{
4471Efl_Loop_Arguments *arge = ev->info;4472char *arg;4473Eina_Array_Iterator iterator;4474unsigned int i;4475
4476EINA_ARRAY_ITER_NEXT(arge->argv, i, arg, iterator)4477{4478if (!strcmp(arg, "-h"))4479{4480printf("Usage:\n"4481" -h This help\n"4482" -q Quiet mode (don't show window)\n"4483" -t THEME Set theme to THEME (ELM_THEME spec)\n"4484" -f SIZE Set finger size to SIZE pixels\n"4485" -s SCALE Set scale factor to SCALE\n"4486" -w WEB_BACKEND Set the web backend to be used\n"4487);4488}4489else if (!strcmp(arg, "-q"))4490{4491quiet = 1;4492interactive = 0;4493}4494else if ((!strcmp(arg, "-t")) && (i < eina_array_count(arge->argv)))4495{4496i++;4497theme_set = eina_array_data_get(arge->argv, i);4498interactive = 0;4499}4500else if ((!strcmp(arg, "-f")) && (i < eina_array_count(arge->argv)))4501{4502i++;4503finger_size_set = eina_array_data_get(arge->argv, i);4504interactive = 0;4505}4506else if ((!strcmp(arg, "-s")) && (i < eina_array_count(arge->argv)))4507{4508i++;4509scale_set = eina_array_data_get(arge->argv, i);4510interactive = 0;4511}4512else if ((!strcmp(arg, "-w")) && (i < eina_array_count(arge->argv)))4513{4514i++;4515web_backend = eina_array_data_get(arge->argv, i);4516interactive = 0;4517}4518}4519
4520/* put here any init code specific to this app like parsing args, etc. */4521if (arge->initialization)4522{4523#ifdef ELM_EFREET4524elm_need_efreet();4525#endif4526elm_app_info_set(efl_main, "elementary", "images/logo.png");4527elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);4528elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);4529}4530
4531if (!quiet)4532{4533win_create(); /* create main window */4534if (!interactive)4535ecore_timer_add(2.0, _exit_timer, NULL);4536}4537if (!interactive)4538{4539if (theme_set) elm_theme_set(NULL, theme_set);4540if (finger_size_set) elm_config_finger_size_set(atoi(finger_size_set));4541if (scale_set) elm_config_scale_set(atof(scale_set));4542if (web_backend) elm_config_web_backend_set(web_backend);4543
4544elm_config_all_flush();4545
4546if (quiet) efl_exit(0);4547}4548}
4549
4550EAPI_MAIN void4551efl_resume(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)4552{
4553fprintf(stderr, "Resuming activity.\n");4554}
4555
4556EAPI_MAIN void4557efl_pause(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)4558{
4559fprintf(stderr, "Let's take a pause.\n");4560elm_config_all_flush();4561}
4562
4563/* All elementary apps should use this. Put it right after elm_main() */
4564EFL_MAIN_EX()4565