Add config category & items.
authorChristopher Michael <cpmichael1@comcast.net>
Fri, 27 Nov 2009 18:02:55 +0000 (18:02 +0000)
committerChristopher Michael <cpmichael1@comcast.net>
Fri, 27 Nov 2009 18:02:55 +0000 (18:02 +0000)
Add config dialogs for Animation settings & Window settings.
Free the E_Config_DD when exiting.

SVN revision: 44024

src/modules/illume2/Makefile.am
src/modules/illume2/e_mod_animation.c [new file with mode: 0644]
src/modules/illume2/e_mod_animation.h [new file with mode: 0644]
src/modules/illume2/e_mod_config.c
src/modules/illume2/e_mod_config.h
src/modules/illume2/e_mod_windows.c [new file with mode: 0644]
src/modules/illume2/e_mod_windows.h [new file with mode: 0644]

index 8aafce71a6061ca87a22c0de0e4870348459b13c..64cb7074fbdd72df36c90b564941846eb5037c02 100644 (file)
@@ -28,7 +28,11 @@ module_la_SOURCES      = e_mod_main.h \
                          e_kbd.h \
                          e_kbd.c \
                          e_mod_config.h \
-                         e_mod_config.c
+                         e_mod_config.c \
+                         e_mod_animation.h \
+                         e_mod_animation.c \
+                         e_mod_windows.h \
+                         e_mod_windows.c
 
 module_la_LIBADD       = @e_libs@ @dlopen_libs@
 module_la_LDFLAGS      = -module -avoid-version
diff --git a/src/modules/illume2/e_mod_animation.c b/src/modules/illume2/e_mod_animation.c
new file mode 100644 (file)
index 0000000..a927a98
--- /dev/null
@@ -0,0 +1,98 @@
+#include "e.h"
+#include "e_mod_animation.h"
+#include "e_mod_config.h"
+
+/* local function prototypes */
+static void *_il_config_animation_create(E_Config_Dialog *cfd);
+static void _il_config_animation_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static Evas_Object *_il_config_animation_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+static void _il_config_animation_change(void *data, Evas_Object *obj, void *event);
+static int _il_config_animation_change_timeout(void *data);
+
+/* local variables */
+Ecore_Timer *_anim_change_timer = NULL;
+
+/* public functions */
+EAPI void 
+il_config_animation_show(E_Container *con, const char *params) 
+{
+   E_Config_Dialog *cfd;
+   E_Config_Dialog_View *v;
+
+   if (e_config_dialog_find("E", "_config_illume_animation_settings")) return;
+   v = E_NEW(E_Config_Dialog_View, 1);
+   v->create_cfdata = _il_config_animation_create;
+   v->free_cfdata = _il_config_animation_free;
+   v->basic.create_widgets = _il_config_animation_ui;
+   v->basic_only = 1;
+   v->normal_win = 1;
+   v->scroll = 1;
+   cfd = e_config_dialog_new(con, _("Animation Settings"), "E", 
+                             "_config_illume_animation_settings", 
+                             "enlightenment/animation_settings", 0, v, NULL);
+   e_dialog_resizable_set(cfd->dia, 1);
+}
+
+/* local function prototypes */
+static void *
+_il_config_animation_create(E_Config_Dialog *cfd) 
+{
+   return NULL;
+}
+
+static void 
+_il_config_animation_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
+{
+
+}
+
+static Evas_Object *
+_il_config_animation_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) 
+{
+   Evas_Object *list, *of, *ow;
+   E_Radio_Group *rg;
+
+   list = e_widget_list_add(evas, 0, 0);
+
+   of = e_widget_framelist_add(evas, _("Keyboard"), 0);
+   rg = e_widget_radio_group_new(&(il_cfg->sliding.kbd.duration));
+   ow = e_widget_radio_add(evas, _("Slow"), 2000, rg);
+   e_widget_framelist_object_append(of, ow);
+   evas_object_smart_callback_add(ow, "changed", 
+                                  _il_config_animation_change, NULL);
+   ow = e_widget_radio_add(evas, _("Medium"), 1000, rg);
+   e_widget_framelist_object_append(of, ow);
+   evas_object_smart_callback_add(ow, "changed", 
+                                  _il_config_animation_change, NULL);
+   ow = e_widget_radio_add(evas, _("Fast"), 500, rg);
+   e_widget_framelist_object_append(of, ow);
+   evas_object_smart_callback_add(ow, "changed", 
+                                  _il_config_animation_change, NULL);
+   ow = e_widget_radio_add(evas, _("Very Fast"), 250, rg);
+   e_widget_framelist_object_append(of, ow);
+   evas_object_smart_callback_add(ow, "changed", 
+                                  _il_config_animation_change, NULL);
+   ow = e_widget_radio_add(evas, _("Off"), 0, rg);
+   e_widget_framelist_object_append(of, ow);
+   evas_object_smart_callback_add(ow, "changed", 
+                                  _il_config_animation_change, NULL);
+   e_widget_list_object_append(list, of, 1, 0, 0.0);
+
+   return list;
+}
+
+static void 
+_il_config_animation_change(void *data, Evas_Object *obj, void *event) 
+{
+   if (_anim_change_timer) ecore_timer_del(_anim_change_timer);
+   _anim_change_timer = 
+     ecore_timer_add(0.5, _il_config_animation_change_timeout, data);
+}
+
+static int 
+_il_config_animation_change_timeout(void *data) 
+{
+   e_config_save_queue();
+   _anim_change_timer = NULL;
+   return 0;
+}
diff --git a/src/modules/illume2/e_mod_animation.h b/src/modules/illume2/e_mod_animation.h
new file mode 100644 (file)
index 0000000..71abf21
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef E_MOD_ANIM_H
+#define E_MOD_ANIM_H
+
+EAPI void il_config_animation_show(E_Container *con, const char *params);
+
+#endif
index c81cff6471520507e0dec9f95dd1f5f599163851..1843e52d619cc28b6b4c2072917f0e24e4c06a88 100644 (file)
@@ -1,6 +1,8 @@
 #include "e.h"
 #include "e_mod_main.h"
 #include "e_mod_config.h"
+#include "e_mod_animation.h"
+#include "e_mod_windows.h"
 
 /* local variables */
 EAPI Il_Config *il_cfg = NULL;
@@ -18,6 +20,19 @@ il_config_init(E_Module *m)
    E_CONFIG_VAL(D, T, version, INT);
    E_CONFIG_VAL(D, T, sliding.kbd.duration, INT);
    E_CONFIG_VAL(D, T, sliding.softkey.duration, INT);
+   E_CONFIG_VAL(D, T, policy.name, STR);
+   E_CONFIG_VAL(D, T, policy.vkbd.class, STR);
+   E_CONFIG_VAL(D, T, policy.vkbd.name, STR);
+   E_CONFIG_VAL(D, T, policy.vkbd.title, STR);
+   E_CONFIG_VAL(D, T, policy.vkbd.win_type, STR);
+   E_CONFIG_VAL(D, T, policy.softkey.class, STR);
+   E_CONFIG_VAL(D, T, policy.softkey.name, STR);
+   E_CONFIG_VAL(D, T, policy.softkey.title, STR);
+   E_CONFIG_VAL(D, T, policy.softkey.win_type, STR);
+   E_CONFIG_VAL(D, T, policy.home.class, STR);
+   E_CONFIG_VAL(D, T, policy.home.name, STR);
+   E_CONFIG_VAL(D, T, policy.home.title, STR);
+   E_CONFIG_VAL(D, T, policy.home.win_type, STR);
 
    il_cfg = e_config_domain_load("module.illume2", conf_edd);
    if ((il_cfg) && 
@@ -36,18 +51,88 @@ il_config_init(E_Module *m)
    if (il_cfg) 
      {
         /* Add new config variables here */
-        /* if ((il_cfg->version & 0xffff) < 1) */
+        if ((il_cfg->version & 0xffff) < 1) 
+          {
+             il_cfg->policy.name = NULL;
+             il_cfg->policy.vkbd.class = 
+               eina_stringshare_add("Virtual-Keyboard");
+             il_cfg->policy.vkbd.name = 
+               eina_stringshare_add("E");
+             il_cfg->policy.vkbd.title = 
+               eina_stringshare_add("Virtual Keyboard");
+             il_cfg->policy.vkbd.win_type = NULL;
+             il_cfg->policy.softkey.class = 
+               eina_stringshare_add("Illume-Softkey");
+             il_cfg->policy.softkey.name = 
+               eina_stringshare_add("Illume-Softkey");
+             il_cfg->policy.softkey.title = 
+               eina_stringshare_add("Illume Softkey");
+             il_cfg->policy.softkey.win_type = NULL;
+             il_cfg->policy.home.class = 
+               eina_stringshare_add("Illume-Home");
+             il_cfg->policy.home.name = 
+               eina_stringshare_add("Illume-Home");
+             il_cfg->policy.home.title = 
+               eina_stringshare_add("Illume Home");
+             il_cfg->policy.home.win_type = NULL;
+          }
         il_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN;
      }
    il_cfg->mod_dir = eina_stringshare_add(m->dir);
+
+   e_configure_registry_category_add("illume", 0, _("Illume"), NULL, 
+                                     "enlightenment/display");
+   e_configure_registry_generic_item_add("illume/animation", 0, _("Animation"), 
+                                         NULL, "enlightenment/animation", 
+                                         il_config_animation_show);
+   e_configure_registry_generic_item_add("illume/windows", 0, _("Windows"), 
+                                         NULL, "enlightenment/windows", 
+                                         il_config_windows_show);
    return 1;
 }
 
 EAPI int 
 il_config_shutdown(void) 
 {
+   e_configure_registry_item_del("illume/windows");
+   e_configure_registry_item_del("illume/animation");
+   e_configure_registry_category_del("illume");
+
+   if (il_cfg->policy.name) eina_stringshare_del(il_cfg->policy.name);
+
+   if (il_cfg->policy.vkbd.class) 
+     eina_stringshare_del(il_cfg->policy.vkbd.class);
+   if (il_cfg->policy.vkbd.name) 
+     eina_stringshare_del(il_cfg->policy.vkbd.name);
+   if (il_cfg->policy.vkbd.title) 
+     eina_stringshare_del(il_cfg->policy.vkbd.title);
+   if (il_cfg->policy.vkbd.win_type) 
+     eina_stringshare_del(il_cfg->policy.vkbd.win_type);
+
+   if (il_cfg->policy.softkey.class) 
+     eina_stringshare_del(il_cfg->policy.softkey.class);
+   if (il_cfg->policy.softkey.name) 
+     eina_stringshare_del(il_cfg->policy.softkey.name);
+   if (il_cfg->policy.softkey.title) 
+     eina_stringshare_del(il_cfg->policy.softkey.title);
+   if (il_cfg->policy.softkey.win_type) 
+     eina_stringshare_del(il_cfg->policy.softkey.win_type);
+
+   if (il_cfg->policy.home.class) 
+     eina_stringshare_del(il_cfg->policy.home.class);
+   if (il_cfg->policy.home.name) 
+     eina_stringshare_del(il_cfg->policy.home.name);
+   if (il_cfg->policy.home.title) 
+     eina_stringshare_del(il_cfg->policy.home.title);
+   if (il_cfg->policy.home.win_type) 
+     eina_stringshare_del(il_cfg->policy.home.win_type);
+
    if (il_cfg->mod_dir) eina_stringshare_del(il_cfg->mod_dir);
+
    E_FREE(il_cfg);
+   il_cfg = NULL;
+
+   E_CONFIG_DD_FREE(conf_edd);
    return 1;
 }
 
index 8bfabce52af4ba891eef8c8d43bbc0fb7a2c5944..d7e7919598a6644f6efcd117bbe67ed38545ee4e 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef E_MOD_CONFIG_H
 # define E_MOD_CONFIG_H
 
-# define IL_CONFIG_MIN 0
+# define IL_CONFIG_MIN 1
 # define IL_CONFIG_MAJ 0
 
 typedef struct _Il_Config Il_Config;
@@ -18,6 +18,18 @@ struct _Il_Config
           } kbd, softkey;
      } sliding;
 
+   struct 
+     {
+        const char *name;
+        struct 
+          {
+             const char *class;
+             const char *name;
+             const char *title;
+             const char *win_type;
+          } vkbd, softkey, home;
+     } policy;
+
    // Not User Configurable. Placeholders
    const char *mod_dir;
    E_Config_Dialog *cfd;
diff --git a/src/modules/illume2/e_mod_windows.c b/src/modules/illume2/e_mod_windows.c
new file mode 100644 (file)
index 0000000..1d2c942
--- /dev/null
@@ -0,0 +1,71 @@
+#include "e.h"
+#include "e_mod_windows.h"
+
+/* local function prototypes */
+static void *_il_config_windows_create(E_Config_Dialog *cfd);
+static void _il_config_windows_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static Evas_Object *_il_config_windows_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+static void _il_config_windows_change(void *data, Evas_Object *obj, void *event);
+static int _il_config_windows_change_timeout(void *data);
+
+/* local variables */
+Ecore_Timer *_windows_change_timer = NULL;
+
+/* public functions */
+EAPI void 
+il_config_windows_show(E_Container *con, const char *params) 
+{
+   E_Config_Dialog *cfd;
+   E_Config_Dialog_View *v;
+
+   if (e_config_dialog_find("E", "_config_illume_windows_settings")) return;
+   v = E_NEW(E_Config_Dialog_View, 1);
+   v->create_cfdata = _il_config_windows_create;
+   v->free_cfdata = _il_config_windows_free;
+   v->basic.create_widgets = _il_config_windows_ui;
+   v->basic_only = 1;
+   v->normal_win = 1;
+   v->scroll = 1;
+   cfd = e_config_dialog_new(con, _("Window Settings"), "E", 
+                             "_config_illume_windows_settings", 
+                             "enlightenment/windows", 0, v, NULL);
+   e_dialog_resizable_set(cfd->dia, 1);
+}
+
+/* local function prototypes */
+static void *
+_il_config_windows_create(E_Config_Dialog *cfd) 
+{
+   return NULL;
+}
+
+static void 
+_il_config_windows_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
+{
+
+}
+
+static Evas_Object *
+_il_config_windows_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) 
+{
+   Evas_Object *list;
+
+   list = e_widget_list_add(evas, 0, 0);
+   return list;
+}
+
+static void 
+_il_config_windows_change(void *data, Evas_Object *obj, void *event) 
+{
+   if (_windows_change_timer) ecore_timer_del(_windows_change_timer);
+   _windows_change_timer = 
+     ecore_timer_add(0.5, _il_config_windows_change_timeout, data);
+}
+
+static int 
+_il_config_windows_change_timeout(void *data) 
+{
+   e_config_save_queue();
+   _windows_change_timer = NULL;
+   return 0;
+}
diff --git a/src/modules/illume2/e_mod_windows.h b/src/modules/illume2/e_mod_windows.h
new file mode 100644 (file)
index 0000000..34e8a21
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef E_MOD_WINDOWS_H
+#define E_MOD_WINDOWS_H
+
+EAPI void il_config_windows_show(E_Container *con, const char *params);
+
+#endif