Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/clock


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Save config for clock and faces.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/clock/e_mod_main.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_mod_main.c        9 Feb 2005 14:52:06 -0000       1.17
+++ e_mod_main.c        10 Feb 2005 11:54:18 -0000      1.18
@@ -6,28 +6,27 @@
 
 /* TODO List:
  *
- * save the visible flag for each face
- * 
  */
 
 /* module private routines */
-static Clock  *_clock_init(E_Module *module);
+static Clock  *_clock_new();
 static void    _clock_shutdown(Clock *clock);
-
 static void    _clock_config_menu_new(Clock *clock);
 
-static void    _clock_face_init(Clock_Face *face);
+static Clock_Face *_clock_face_new(E_Container *con);
 static void    _clock_face_free(Clock_Face *face);
 static void    _clock_face_enable(Clock_Face *face);
 static void    _clock_face_disable(Clock_Face *face);
 static void    _clock_face_menu_new(Clock_Face *face);
-static void    _clock_face_menu_del(E_Menu *menu);
 static void    _clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
 static void    _clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 static void    _clock_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item 
*mi);
 
 static int _clock_count;
 
+static E_Config_DD *conf_edd;
+static E_Config_DD *conf_face_edd;
+
 /* public module routines. all modules must have these */
 void *
 init(E_Module *module)
@@ -46,8 +45,10 @@
                            module->api->version);
        return NULL;
      }
+
    /* actually init clock */
-   clock = _clock_init(module);
+   clock = _clock_new();
+   module->config_menu = clock->config_menu;
    return clock;
 }
 
@@ -72,7 +73,7 @@
    Clock *clock;
 
    clock = module->data;
-/*   e_config_domain_save("module.clock", e->conf_edd, e->conf);*/
+   e_config_domain_save("module.clock", conf_edd, clock->conf);
    return 1;
 }
 
@@ -97,30 +98,40 @@
 
 /* module private routines */
 static Clock *
-_clock_init(E_Module *module)
+_clock_new()
 {
    Clock *clock;
-   Evas_List *managers, *l, *l2;
+   Evas_List *managers, *l, *l2, *cl;
    E_Menu_Item *mi;
   
    _clock_count = 0;
    clock = E_NEW(Clock, 1);
    if (!clock) return NULL;
 
-   /*
-    e->conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config);
-    * 
-    e->conf = e_config_domain_load("module.clock", e->conf_edd);
-    if (!e->conf)
-    {
-    e->conf = E_NEW(Config, 1);
-    }
-    */
+   conf_face_edd = E_CONFIG_DD_NEW("Clock_Config_Face", Config_Face);
+#undef T
+#undef D
+#define T Config_Face
+#define D conf_face_edd
+   E_CONFIG_VAL(D, T, enabled, INT);
+
+   conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config);
+#undef T
+#undef D
+#define T Config
+#define D conf_edd
+   E_CONFIG_LIST(D, T, faces, conf_face_edd);
+
+   clock->conf = e_config_domain_load("module.clock", conf_edd);
+   if (!clock->conf)
+     {
+       clock->conf = E_NEW(Config, 1);
+     }
 
    _clock_config_menu_new(clock);
-   module->config_menu = clock->config_menu;
 
    managers = e_manager_list();
+   cl = clock->conf->faces;
    for (l = managers; l; l = l->next)
      {
        E_Manager *man;
@@ -132,22 +143,35 @@
             Clock_Face *face;
             
             con = l2->data;
-            face = E_NEW(Clock_Face, 1);
+            face = _clock_face_new(con);
             if (face)
               {
-                 /* FIXME : config */
-                 face->enabled = 1;
-                 face->clock = clock;
-                 face->con = con;
-                 e_object_ref(E_OBJECT(con));
-                 face->evas = con->bg_evas;
-                 _clock_face_init(face);
                  clock->faces = evas_list_append(clock->faces, face);
+                 /* Config */
+                 if (!cl)
+                   {
+                      face->conf = E_NEW(Config_Face, 1);
+                      face->conf->enabled = 1;
+                      clock->conf->faces = 
evas_list_append(clock->conf->faces, face->conf);
+                   }
+                 else
+                   {
+                      face->conf = cl->data;
+                      cl = cl->next;
+                   }
+
+                 /* Menu */
+                 /* This menu must be initialized after conf */
+                 _clock_face_menu_new(face);
 
-                 mi = e_menu_item_new(module->config_menu);
+                 mi = e_menu_item_new(clock->config_menu);
                  e_menu_item_label_set(mi, con->name);
 
                  e_menu_item_submenu_set(mi, face->menu);
+
+                 /* Setup */
+                 if (!face->conf->enabled)
+                   _clock_face_disable(face);
               }
          }
      }
@@ -159,15 +183,16 @@
 {
    Evas_List *list;
 
-   free(clock->conf);
-/*   E_CONFIG_DD_FREE(e->conf_edd);*/
+   E_CONFIG_DD_FREE(conf_edd);
+   E_CONFIG_DD_FREE(conf_face_edd);
 
    for (list = clock->faces; list; list = list->next)
      _clock_face_free(list->data);
-
    evas_list_free(clock->faces);
+
    e_object_del(E_OBJECT(clock->config_menu));
 
+   free(clock->conf);
    free(clock);
 }
 
@@ -177,13 +202,20 @@
    clock->config_menu = e_menu_new();
 }
 
-static void
-_clock_face_init(Clock_Face *face)
+static Clock_Face *
+_clock_face_new(E_Container *con)
 {
+   Clock_Face *face;
    Evas_Object *o;
+
+   face = E_NEW(Clock_Face, 1);
+   if (!face) return NULL;
+   
+   face->con = con;
+   e_object_ref(E_OBJECT(con));
    
-   evas_event_freeze(face->evas);
-   o = edje_object_add(face->evas);
+   evas_event_freeze(con->bg_evas);
+   o = edje_object_add(con->bg_evas);
    face->clock_object = o;
 
    edje_object_file_set(o,
@@ -192,7 +224,7 @@
                        "modules/clock/main");
    evas_object_show(o);
    
-   o = evas_object_rectangle_add(face->evas);
+   o = evas_object_rectangle_add(con->bg_evas);
    face->event_object = o;
    evas_object_layer_set(o, 2);
    evas_object_repeat_events_set(o, 1);
@@ -200,7 +232,7 @@
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_clock_face_cb_mouse_down, face);
    evas_object_show(o);
 
-   face->gmc = e_gadman_client_new(face->con->gadman);
+   face->gmc = e_gadman_client_new(con->gadman);
    e_gadman_client_domain_set(face->gmc, "module.clock", _clock_count++);
    e_gadman_client_policy_set(face->gmc,
                              E_GADMAN_POLICY_ANYWHERE |
@@ -217,19 +249,21 @@
    e_gadman_client_change_func_set(face->gmc, _clock_face_cb_gmc_change, face);
    e_gadman_client_load(face->gmc);
 
-   _clock_face_menu_new(face);
-   
-   evas_event_thaw(face->evas);
+   evas_event_thaw(con->bg_evas);
+
+   return face;
 }
 
 static void
 _clock_face_free(Clock_Face *face)
 {
+   e_object_unref(E_OBJECT(face->con));
    e_object_del(E_OBJECT(face->gmc));
    evas_object_del(face->clock_object);
    evas_object_del(face->event_object);
-   _clock_face_menu_del(face->menu);
-   e_object_unref(E_OBJECT(face->con));
+   e_object_del(E_OBJECT(face->menu));
+
+   free(face->conf);
    free(face);
    _clock_count--;
 }
@@ -237,17 +271,19 @@
 static void
 _clock_face_enable(Clock_Face *face)
 {
-   face->enabled = 1;
+   face->conf->enabled = 1;
    evas_object_show(face->clock_object);
    evas_object_show(face->event_object);
+   e_config_save_queue();
 }
 
 static void
 _clock_face_disable(Clock_Face *face)
 {
-   face->enabled = 0;
+   face->conf->enabled = 0;
    evas_object_hide(face->clock_object);
    evas_object_hide(face->event_object);
+   e_config_save_queue();
 }
 
 static void
@@ -256,25 +292,18 @@
    E_Menu *mn;
    E_Menu_Item *mi;
 
-   /* FIXME: hook callbacks to each menu item */
    mn = e_menu_new();
 
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, "Enabled");
    e_menu_item_check_set(mi, 1);
-   if (face->enabled) e_menu_item_toggle_set(mi, 1);
+   if (face->conf->enabled) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _clock_face_cb_menu_enabled, face);
 
    face->menu = mn;
 }
 
 static void
-_clock_face_menu_del(E_Menu *menu)
-{
-   e_object_del(E_OBJECT(menu));
-}
-
-static void
 _clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change 
change)
 {
    Clock_Face *face;
@@ -321,13 +350,13 @@
 
    face = data;
    enabled = e_menu_item_toggle_get(mi);
-   if ((face->enabled) && (!enabled))
+   if ((face->conf->enabled) && (!enabled))
      {  
        _clock_face_disable(face);
      }
-   else if ((!face->enabled) && (enabled))
+   else if ((!face->conf->enabled) && (enabled))
      { 
        _clock_face_enable(face);
      }
-   e_menu_item_toggle_set(mi, face->enabled);
+   e_menu_item_toggle_set(mi, face->conf->enabled);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/clock/e_mod_main.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_mod_main.h        9 Feb 2005 11:48:55 -0000       1.6
+++ e_mod_main.h        10 Feb 2005 11:54:18 -0000      1.7
@@ -4,13 +4,19 @@
 #ifndef E_MOD_MAIN_H
 #define E_MOD_MAIN_H
 
-typedef struct _Config     Config;
-typedef struct _Clock      Clock;
-typedef struct _Clock_Face Clock_Face;
+typedef struct _Config      Config;
+typedef struct _Config_Face Config_Face;
+typedef struct _Clock       Clock;
+typedef struct _Clock_Face  Clock_Face;
 
 struct _Config
 {
-   int dummy; /* just here to hold space */
+   Evas_List *faces;
+};
+
+struct _Config_Face
+{
+   unsigned char enabled;
 };
 
 struct _Clock
@@ -18,22 +24,19 @@
    Evas_List   *faces;
    E_Menu      *config_menu;
    
-/*   E_Config_DD *conf_edd;*/
    Config      *conf;
 };
 
 struct _Clock_Face
 {
-   Clock       *clock;
    E_Container *con;
-   Evas        *evas;
    E_Menu      *menu;
+   Config_Face *conf;
    
    Evas_Object *clock_object;
    Evas_Object *event_object;
    
    E_Gadman_Client *gmc;
-   unsigned char    enabled : 1;
 };
 
 EAPI void *init     (E_Module *module);




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to