diff --git a/config/default/Makefile.am b/config/default/Makefile.am
index a4a0c5261..15e743d90 100644
--- a/config/default/Makefile.am
+++ b/config/default/Makefile.am
@@ -15,6 +15,8 @@ EXTRA_DIST = \
filesdir = $(datadir)/enlightenment/data/config/default
files_DATA = \
+ profile.desktop \
+ icon.png \
e.cfg \
module.battery.cfg \
module.cpufreq.cfg \
diff --git a/config/default/icon.png b/config/default/icon.png
new file mode 100644
index 000000000..2c00baf27
Binary files /dev/null and b/config/default/icon.png differ
diff --git a/config/default/profile.desktop b/config/default/profile.desktop
new file mode 100644
index 000000000..c0160e0d0
--- /dev/null
+++ b/config/default/profile.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Link
+Name=Default
+Icon=icon.png
+Comment=This is the default
theme that is
universal for most
desktop and laptop
systems. Choose this
if you are not
sure what to choose.
diff --git a/data/images/Makefile.am b/data/images/Makefile.am
index ddb9886e0..2110f05a2 100644
--- a/data/images/Makefile.am
+++ b/data/images/Makefile.am
@@ -4,6 +4,30 @@ files_DATA = \
enlightenment.png \
test.png \
test.jpg \
-test.edj
+test.edj \
+lang-bg_BG.png \
+lang-ca_ES.png \
+lang-cs_CZ.png \
+lang-da_DK.png \
+lang-de_DE.png \
+lang-en_US.png \
+lang-es_AR.png \
+lang-es_ES.png \
+lang-fi_FI.png \
+lang-fr_FR.png \
+lang-hu_HU.png \
+lang-it_IT.png \
+lang-ja_JP.png \
+lang-ko_KR.png \
+lang-nb_NO.png \
+lang-nl_NL.png \
+lang-pl_PL.png \
+lang-pt_BR.png \
+lang-ru_RU.png \
+lang-sk_SK.png \
+lang-sl_SI.png \
+lang-sv_SE.png \
+lang-zh_CN.png \
+lang-zh_TW.png
EXTRA_DIST = $(files_DATA)
diff --git a/data/images/lang-bg_BG.png b/data/images/lang-bg_BG.png
new file mode 100644
index 000000000..24a82e8e6
Binary files /dev/null and b/data/images/lang-bg_BG.png differ
diff --git a/data/images/lang-ca_ES.png b/data/images/lang-ca_ES.png
new file mode 100644
index 000000000..7aa94dc1b
Binary files /dev/null and b/data/images/lang-ca_ES.png differ
diff --git a/data/images/lang-cs_CZ.png b/data/images/lang-cs_CZ.png
new file mode 100644
index 000000000..f6d3ac026
Binary files /dev/null and b/data/images/lang-cs_CZ.png differ
diff --git a/data/images/lang-da_DK.png b/data/images/lang-da_DK.png
new file mode 100644
index 000000000..4c3baa315
Binary files /dev/null and b/data/images/lang-da_DK.png differ
diff --git a/data/images/lang-de_DE.png b/data/images/lang-de_DE.png
new file mode 100644
index 000000000..e7af0e4ef
Binary files /dev/null and b/data/images/lang-de_DE.png differ
diff --git a/data/images/lang-en_US.png b/data/images/lang-en_US.png
new file mode 100644
index 000000000..dc642e4e1
Binary files /dev/null and b/data/images/lang-en_US.png differ
diff --git a/data/images/lang-es_AR.png b/data/images/lang-es_AR.png
new file mode 100644
index 000000000..332f7d16b
Binary files /dev/null and b/data/images/lang-es_AR.png differ
diff --git a/data/images/lang-es_ES.png b/data/images/lang-es_ES.png
new file mode 100644
index 000000000..6d99263a2
Binary files /dev/null and b/data/images/lang-es_ES.png differ
diff --git a/data/images/lang-fi_FI.png b/data/images/lang-fi_FI.png
new file mode 100644
index 000000000..daa18846b
Binary files /dev/null and b/data/images/lang-fi_FI.png differ
diff --git a/data/images/lang-fr_FR.png b/data/images/lang-fr_FR.png
new file mode 100644
index 000000000..816409a7e
Binary files /dev/null and b/data/images/lang-fr_FR.png differ
diff --git a/data/images/lang-hu_HU.png b/data/images/lang-hu_HU.png
new file mode 100644
index 000000000..5676584fb
Binary files /dev/null and b/data/images/lang-hu_HU.png differ
diff --git a/data/images/lang-it_IT.png b/data/images/lang-it_IT.png
new file mode 100644
index 000000000..ca1fd40e2
Binary files /dev/null and b/data/images/lang-it_IT.png differ
diff --git a/data/images/lang-ja_JP.png b/data/images/lang-ja_JP.png
new file mode 100644
index 000000000..0481b40f0
Binary files /dev/null and b/data/images/lang-ja_JP.png differ
diff --git a/data/images/lang-ko_KR.png b/data/images/lang-ko_KR.png
new file mode 100644
index 000000000..227b2f378
Binary files /dev/null and b/data/images/lang-ko_KR.png differ
diff --git a/data/images/lang-nb_NO.png b/data/images/lang-nb_NO.png
new file mode 100644
index 000000000..00cfd952d
Binary files /dev/null and b/data/images/lang-nb_NO.png differ
diff --git a/data/images/lang-nl_NL.png b/data/images/lang-nl_NL.png
new file mode 100644
index 000000000..eb3116ee5
Binary files /dev/null and b/data/images/lang-nl_NL.png differ
diff --git a/data/images/lang-pl_PL.png b/data/images/lang-pl_PL.png
new file mode 100644
index 000000000..1f031c2fe
Binary files /dev/null and b/data/images/lang-pl_PL.png differ
diff --git a/data/images/lang-pt_BR.png b/data/images/lang-pt_BR.png
new file mode 100644
index 000000000..75f9b47ce
Binary files /dev/null and b/data/images/lang-pt_BR.png differ
diff --git a/data/images/lang-ru_RU.png b/data/images/lang-ru_RU.png
new file mode 100644
index 000000000..ccc02a54a
Binary files /dev/null and b/data/images/lang-ru_RU.png differ
diff --git a/data/images/lang-sk_SK.png b/data/images/lang-sk_SK.png
new file mode 100644
index 000000000..940ec4235
Binary files /dev/null and b/data/images/lang-sk_SK.png differ
diff --git a/data/images/lang-sl_SI.png b/data/images/lang-sl_SI.png
new file mode 100644
index 000000000..ec34190b5
Binary files /dev/null and b/data/images/lang-sl_SI.png differ
diff --git a/data/images/lang-sv_SE.png b/data/images/lang-sv_SE.png
new file mode 100644
index 000000000..c33ca7e2e
Binary files /dev/null and b/data/images/lang-sv_SE.png differ
diff --git a/data/images/lang-zh_CN.png b/data/images/lang-zh_CN.png
new file mode 100644
index 000000000..c4334dd57
Binary files /dev/null and b/data/images/lang-zh_CN.png differ
diff --git a/data/images/lang-zh_TW.png b/data/images/lang-zh_TW.png
new file mode 100644
index 000000000..0de186737
Binary files /dev/null and b/data/images/lang-zh_TW.png differ
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 69de7722b..d7586d8df 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -1804,12 +1804,29 @@ e_config_profile_set(const char *prof)
e_util_env_set("E_CONF_PROFILE", _e_config_profile);
}
+EAPI char *
+e_config_profile_dir_get(const char *prof)
+{
+ char buf[PATH_MAX];
+ const char *homedir;
+ const char *dir;
+
+ homedir = e_user_homedir_get();
+ snprintf(buf, sizeof(buf), "%s/.e/e/config/%s", homedir, prof);
+ if (ecore_file_is_dir(buf)) return strdup(buf);
+ dir = e_prefix_data_get();
+ snprintf(buf, sizeof(buf), "%s/data/config/%s", dir, prof);
+ if (ecore_file_is_dir(buf)) return strdup(buf);
+ return NULL;
+}
+
EAPI Eina_List *
e_config_profile_list(void)
{
Ecore_List *files;
- char buf[4096];
+ char buf[PATH_MAX];
const char *homedir;
+ const char *dir;
Eina_List *flist = NULL;
homedir = e_user_homedir_get();
@@ -1829,6 +1846,31 @@ e_config_profile_list(void)
}
ecore_list_destroy(files);
}
+ dir = e_prefix_data_get();
+ snprintf(buf, sizeof(buf), "%s/data/config", dir);
+ files = ecore_file_ls(buf);
+ if (files)
+ {
+ char *file;
+
+ ecore_list_first_goto(files);
+ while ((file = ecore_list_current(files)))
+ {
+ snprintf(buf, sizeof(buf), "%s/data/config/%s", dir, file);
+ if (ecore_file_is_dir(buf))
+ {
+ Eina_List *l;
+
+ for (l = flist; l; l = l->next)
+ {
+ if (!strcmp(file, l->data)) break;
+ }
+ if (!l) flist = eina_list_append(flist, strdup(file));
+ }
+ ecore_list_next(files);
+ }
+ ecore_list_destroy(files);
+ }
return flist;
}
diff --git a/src/bin/e_config.h b/src/bin/e_config.h
index 349406346..e16e2909b 100644
--- a/src/bin/e_config.h
+++ b/src/bin/e_config.h
@@ -456,7 +456,8 @@ EAPI int e_config_save(void);
EAPI void e_config_save_flush(void);
EAPI void e_config_save_queue(void);
-EAPI const char *e_config_profile_get(void);
+EAPI const char*e_config_profile_get(void);
+EAPI char *e_config_profile_dir_get(const char *prof);
EAPI void e_config_profile_set(const char *prof);
EAPI Eina_List *e_config_profile_list(void);
EAPI void e_config_profile_add(const char *prof);
diff --git a/src/modules/wizard/page_010.c b/src/modules/wizard/page_010.c
index cdf2d9e77..7c03880aa 100644
--- a/src/modules/wizard/page_010.c
+++ b/src/modules/wizard/page_010.c
@@ -11,34 +11,35 @@ static int _basic_lang_list_sort(const void *data1, const void *data2);
struct _E_Intl_Pair
{
const char *locale_key;
+ const char *locale_icon;
const char *locale_translation;
};
const E_Intl_Pair basic_language_predefined_pairs[ ] = {
- {"bg_BG.UTF-8", "Български"},
- {"ca_ES.UTF-8", "Català"},
- {"zh_CN.UTF-8", "Chinese (Simplified)"},
- {"zh_TW.UTF-8", "Chinese (Traditional)"},
- {"cs_CZ.UTF-8", "Čeština"},
- {"da_DK.UTF-8", "Dansk"},
- {"nl_NL.UTF-8", "Nederlands"},
- {"en_US.UTF-8", "English"},
- {"fi_FI.UTF-8", "Suomi"},
- {"fr_FR.UTF-8", "Français"},
- {"de_DE.UTF-8", "Deutsch"},
- {"hu_HU.UTF-8", "Magyar"},
- {"it_IT.UTF-8", "Italiano"},
- {"ja_JP.UTF-8", "日本語"},
- {"ko_KR.UTF-8", "한국어"},
- {"nb_NO.UTF-8", "Norsk Bokmål"},
- {"pl_PL.UTF-8", "Polski"},
- {"pt_BR.UTF-8", "Português"},
- {"ru_RU.UTF-8", "Русский"},
- {"sk_SK.UTF-8", "Slovenčina"},
- {"sl_SI.UTF-8", "Slovenščina"},
- {"es_AR.UTF-8", "Español"},
- {"sv_SE.UTF-8", "Svenska"},
- { NULL, NULL }
+ {"bg_BG.UTF-8", "lang-bg_BG.png", "Български"},
+ {"ca_ES.UTF-8", "lang-ca_ES.png", "Català"},
+ {"zh_CN.UTF-8", "lang-zh_CN.png", "Chinese (Simplified)"},
+ {"zh_TW.UTF-8", "lang-zh_TW.png", "Chinese (Traditional)"},
+ {"cs_CZ.UTF-8", "lang-cs_CZ.png", "Čeština"},
+ {"da_DK.UTF-8", "lang-da_DK.png", "Dansk"},
+ {"nl_NL.UTF-8", "lang-nl_NL.png", "Nederlands"},
+ {"en_US.UTF-8", "lang-en_US.png", "English"},
+ {"fi_FI.UTF-8", "lang-fi_FI.png", "Suomi"},
+ {"fr_FR.UTF-8", "lang-fr_FR.png", "Français"},
+ {"de_DE.UTF-8", "lang-de_DE.png", "Deutsch"},
+ {"hu_HU.UTF-8", "lang-hu_HU.png", "Magyar"},
+ {"it_IT.UTF-8", "lang-it_IT.png", "Italiano"},
+ {"ja_JP.UTF-8", "lang-ja_JP.png", "日本語"},
+ {"ko_KR.UTF-8", "lang-ko_KR.png", "한국어"},
+ {"nb_NO.UTF-8", "lang-nb_NO.png", "Norsk Bokmål"},
+ {"pl_PL.UTF-8", "lang-pl_PL.png", "Polski"},
+ {"pt_BR.UTF-8", "lang-pt_BR.png", "Português"},
+ {"ru_RU.UTF-8", "lang-ru_RU.png", "Русский"},
+ {"sk_SK.UTF-8", "lang-sk_SK.png", "Slovenčina"},
+ {"sl_SI.UTF-8", "lang-sl_SI.png", "Slovenščina"},
+ {"es_AR.UTF-8", "lang-es_AR.png", "Español"},
+ {"sv_SE.UTF-8", "lang-sv_SE.png", "Svenska"},
+ { NULL, NULL, NULL }
};
static char *lang = NULL;
@@ -74,7 +75,6 @@ wizard_page_init(E_Wizard_Page *pg)
e_lang_list = e_intl_language_list();
- printf("init\n");
output = popen("locale -a", "r");
if (output)
{
@@ -146,7 +146,7 @@ wizard_page_show(E_Wizard_Page *pg)
o = e_widget_list_add(pg->evas, 1, 0);
e_wizard_title_set(_("Language"));
- of = e_widget_framelist_add(pg->evas, _("Available"), 0);
+ of = e_widget_framelist_add(pg->evas, _("Select one"), 0);
ob = e_widget_ilist_add(pg->evas, 32 * e_scale, 32 * e_scale, &lang);
e_widget_min_size_set(ob, 140 * e_scale, 140 * e_scale);
@@ -155,9 +155,14 @@ wizard_page_show(E_Wizard_Page *pg)
for (i = 0, l = blang_list; l; l = l->next, i++)
{
E_Intl_Pair *pair;
+ Evas_Object *ic;
+ char buf[PATH_MAX], *dir;
pair = l->data;
- e_widget_ilist_append(ob, NULL, _(pair->locale_translation),
+ dir = e_prefix_data_get();
+ snprintf(buf, sizeof(buf), "%s/data/images/%s", dir, pair->locale_icon);
+ ic = e_util_icon_add(buf, pg->evas);
+ e_widget_ilist_append(ob, ic, _(pair->locale_translation),
NULL, NULL, pair->locale_key);
if (e_intl_language_get())
{
diff --git a/src/modules/wizard/page_020.c b/src/modules/wizard/page_020.c
index ceb7d9629..e72331047 100644
--- a/src/modules/wizard/page_020.c
+++ b/src/modules/wizard/page_020.c
@@ -4,6 +4,35 @@
#include "e.h"
#include "e_mod_main.h"
+static char *profile = NULL;
+static Evas_Object *textblock = NULL;
+
+static void
+_profile_change(void *data, Evas_Object *obj)
+{
+ char buf[PATH_MAX], *dir;
+ Efreet_Desktop *desk = NULL;
+
+ dir = e_prefix_data_get();
+ snprintf(buf, sizeof(buf), "%s/data/config/%s", dir, profile);
+ dir = strdup(buf);
+ if (!dir)
+ {
+ e_widget_textblock_markup_set(textblock, _("Unknown"));
+ return;
+ }
+ snprintf(buf, sizeof(buf), "%s/profile.desktop", dir);
+ desk = efreet_desktop_get(buf);
+ if (desk)
+ {
+ e_widget_textblock_markup_set(textblock, desk->comment);
+ }
+ else
+ e_widget_textblock_markup_set(textblock, _("Unknown"));
+ if (desk) efreet_desktop_free(desk);
+ free(dir);
+}
+
EAPI int
wizard_page_init(E_Wizard_Page *pg)
{
@@ -17,17 +46,80 @@ wizard_page_shutdown(E_Wizard_Page *pg)
EAPI int
wizard_page_show(E_Wizard_Page *pg)
{
- Evas_Object *ob, *o;
-
- printf("t2\n");
- ob = e_widget_list_add(pg->evas, 1, 0);
- o = e_widget_button_add(pg->evas,
- "Hello Another World", NULL,
- NULL, NULL, NULL);
- e_widget_list_object_append(ob, o, 0, 0, 0.5);
- evas_object_show(o);
- e_wizard_page_show(ob);
- pg->data = ob;
+ Evas_Object *o, *of, *ob;
+ Eina_List *l, *profiles;
+ int i, sel = -1;
+ Evas_Object *ilist;
+
+ o = e_widget_list_add(pg->evas, 1, 0);
+ e_wizard_title_set(_("Profile"));
+ of = e_widget_framelist_add(pg->evas, _("Select one"), 0);
+
+ ob = e_widget_ilist_add(pg->evas, 32 * e_scale, 32 * e_scale, &profile);
+ e_widget_min_size_set(ob, 140 * e_scale, 70 * e_scale);
+ ilist = ob;
+ e_widget_on_change_hook_set(ob, _profile_change, NULL);
+
+ e_widget_ilist_freeze(ob);
+
+ profiles = e_config_profile_list();
+ for (i = 0, l = profiles; l; l = l->next, i++)
+ {
+ Efreet_Desktop *desk = NULL;
+ char buf[PATH_MAX], *prof, *dir;
+ const char *label;
+ Evas_Object *ic;
+
+ prof = l->data;
+ dir = e_prefix_data_get();
+ snprintf(buf, sizeof(buf), "%s/data/config/%s", dir, prof);
+ dir = strdup(buf);
+ if (!dir)
+ {
+ free(prof);
+ continue;
+ }
+
+ snprintf(buf, sizeof(buf), "%s/profile.desktop", dir);
+ desk = efreet_desktop_get(buf);
+ label = prof;
+ if ((desk) && (desk->name)) label = desk->name;
+ snprintf(buf, sizeof(buf), "%s/icon.edj", dir);
+ if ((desk) && (desk->icon))
+ snprintf(buf, sizeof(buf), "%s/%s", dir, desk->icon);
+ ic = e_util_icon_add(buf, pg->evas);
+
+ e_widget_ilist_append(ob, ic, label, NULL, NULL, prof);
+ if (e_config_profile_get())
+ {
+ if (!strcmp(prof, e_config_profile_get())) sel = i;
+ }
+ free(dir);
+ free(prof);
+ if (desk) efreet_desktop_free(desk);
+ }
+ if (profiles) evas_list_free(profiles);
+
+ e_widget_ilist_go(ob);
+ e_widget_ilist_thaw(ob);
+
+ e_widget_framelist_object_append(of, ob);
+
+ ob = e_widget_textblock_add(pg->evas);
+ e_widget_min_size_set(ob, 140 * e_scale, 70 * e_scale);
+ e_widget_textblock_markup_set(ob, _("Select a profile"));
+ textblock = ob;
+
+ e_widget_framelist_object_append(of, ob);
+
+ e_widget_list_object_append(o, of, 0, 0, 0.5);
+
+ if (sel >= 0) e_widget_ilist_selected_set(ilist, sel);
+
+ evas_object_show(ob);
+ evas_object_show(of);
+ e_wizard_page_show(o);
+ pg->data = of;
return 1; /* 1 == show ui, and wait for user, 0 == just continue */
}
EAPI int
@@ -39,6 +131,6 @@ wizard_page_hide(E_Wizard_Page *pg)
EAPI int
wizard_page_apply(E_Wizard_Page *pg)
{
- printf("a2\n");
+ // FIXME: actually apply profile
return 1;
}