Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_gadcon_config.c 


Log Message:
Lots of fixes for shelf contents config dialog:
     - No more "ghosted" list items when removing from the Selected List.
     - Localized the loading of available/selected gadgets to cut down code 
duplication.
     - General code cleanup (remove extra comments)
     
    

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_gadcon_config.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_int_gadcon_config.c       18 Jun 2006 02:07:14 -0000      1.17
+++ e_int_gadcon_config.c       22 Jun 2006 18:47:19 -0000      1.18
@@ -7,6 +7,8 @@
 static void *_create_data(E_Config_Dialog *cfd);
 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, 
E_Config_Dialog_Data *cfdata);
+static void _load_available_gadgets(void *data);
+static void _load_selected_gadgets(void *data);
 
 /* Actual config data we will be playing with whil the dialog is active */
 struct _E_Config_Dialog_Data
@@ -14,7 +16,7 @@
    E_Gadcon *gc;
    char *cname;
    char *ciname;
-   Evas_Object *o_add, *o_remove, *o_instances;
+   Evas_Object *o_add, *o_remove, *o_instances, *o_avail;
 
    E_Config_Gadcon *cf_gc;
 };
@@ -29,21 +31,17 @@
    v = E_NEW(E_Config_Dialog_View, 1);
    if (v)
      {
-       /* methods */
        v->create_cfdata           = _create_data;
        v->free_cfdata             = _free_data;
-       v->basic.apply_cfdata      = NULL; //_basic_apply_data;
        v->basic.create_widgets    = _basic_create_widgets;
        v->override_auto_apply = 1;
        
-       /* create config dialog for bd object/data */
        cfd = 
e_config_dialog_new(e_container_current_get(e_manager_current_get()),
-                                 _("Contents Settings"), NULL, 0, v, gc);
+                                 _("Shelf Contents"), NULL, 0, v, gc);
        gc->config_dialog = cfd;
      }
 }
 
-/**--CREATE--**/
 static void
 _fill_data(E_Config_Dialog_Data *cfdata)
 {
@@ -70,10 +68,6 @@
 static void *
 _create_data(E_Config_Dialog *cfd)
 {
-   /* Create cfdata - cfdata is a temporary block of config data that this
-    * dialog will be dealing with while configuring. it will be applied to
-    * the running systems/config in the apply methods
-    */
    E_Config_Dialog_Data *cfdata;
    
    cfdata = E_NEW(E_Config_Dialog_Data, 1);
@@ -85,9 +79,7 @@
 static void
 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   /* Free the cfdata */
    cfdata->gc->config_dialog = NULL;
-
    if (cfdata->cname) free(cfdata->cname);
    if (cfdata->ciname) free(cfdata->ciname);
    free(cfdata);
@@ -120,24 +112,23 @@
    E_Config_Gadcon *cf_gc;
    E_Config_Gadcon_Client *cf_gcc;
    Evas_List *l, *l2;
-   char *label;
-   Evas_Object *icon;
-   E_Gadcon_Client_Class *cc;
 
    cfdata = data;
-
+   if (!cfdata) return;
+   
    snprintf(buf, sizeof(buf), "default");
-   for (i = 0; ; i++)
+   for (i = 0; ; i++) 
      {
        ok = 1;
-       for (l = e_config->gadcons; l; l = l->next)
+       for (l = e_config->gadcons; l; l = l->next) 
          {
             cf_gc = l->data;
             for (l2 = cf_gc->clients; l2; l2 = l2->next)
               {
-                 cf_gcc = l2->data;
+                 cf_gcc = l->data;
                  if ((!cf_gcc->name) || (!cf_gcc->id)) continue;
-                 if ((!strcmp(cf_gcc->name, cfdata->cname)) && 
(!strcmp(cf_gcc->id, buf)))
+                 if ((!strcmp(cf_gcc->name, cfdata->cname)) && 
+                     (!strcmp(cf_gcc->id, buf)))
                    {
                       ok = 0;
                       goto done;
@@ -158,36 +149,18 @@
    cf_gcc->style = NULL;
    cf_gcc->autoscroll = 0;
    cf_gcc->resizable = 0;
-
+   
    cfdata->cf_gc->clients = evas_list_append(cfdata->cf_gc->clients, cf_gcc);
-
-   cc = NULL;
-   for (l = e_gadcon_provider_list(); l; l = l->next)
-     {
-       cc = l->data;
-       if ((cc->name) && (!strcmp(cc->name, cf_gcc->name))) break;
-       cc = NULL;
-     }
-   icon = NULL;
-   label = NULL;
-   if (cc)
-     {
-       if (cc->func.label) label = cc->func.label();
-       if (!label) label = cc->name;
-       if (cc->func.icon) 
-         icon = cc->func.icon(evas_object_evas_get(cfdata->o_instances));
-     }
-   if (!label) label = "";
-   e_widget_ilist_append(cfdata->o_instances, icon, label, 
-                        _cb_select_client_instance, cfdata,
-                        (char *)cf_gcc->name);
-   e_widget_ilist_go(cfdata->o_instances);
-   e_widget_ilist_selected_set(cfdata->o_instances,
-                              e_widget_ilist_count(cfdata->o_instances) - 1);
-
+   
    e_gadcon_unpopulate(cfdata->gc);
    e_gadcon_populate(cfdata->gc);
    e_config_save_queue();
+   
+   _load_selected_gadgets(cfdata);
+   e_widget_ilist_selected_set(cfdata->o_instances,
+                              e_widget_ilist_count(cfdata->o_instances) - 1);
+   
+   e_widget_disabled_set(cfdata->o_add, 1);
 }
 
 static void
@@ -196,12 +169,10 @@
    int i;
    E_Config_Dialog_Data *cfdata;
    E_Config_Gadcon_Client *cf_gcc;
-   Evas_List *l, *l2;
-
+   Evas_List *l;
 
    cfdata = data;
    i = e_widget_ilist_selected_get(cfdata->o_instances);
-
    l = evas_list_nth_list(cfdata->cf_gc->clients, i);
    cf_gcc = l->data;
 
@@ -211,65 +182,77 @@
    free(cf_gcc);
 
    cfdata->cf_gc->clients = evas_list_remove_list(cfdata->cf_gc->clients, l);
-   
-   e_widget_ilist_clear(cfdata->o_instances);
-   for (l = cfdata->cf_gc->clients; l; l = l->next)
-     {
-       E_Gadcon_Client_Class *cc;
-       char *label = NULL;
-       Evas_Object *icon;
-       
-       cf_gcc = l->data;
-       cc = NULL;
-       for (l2 = e_gadcon_provider_list(); l2; l2 = l2->next)
-         {
-            cc = l2->data;
-            if ((cc->name) && (!strcmp(cc->name, cf_gcc->name))) break;
-            cc = NULL;
-         }
-       if (cc)
-         {
-            if (cc->func.label) label = cc->func.label();
-            if (!label) label = cc->name;
-            if (cc->func.icon) 
-              icon = cc->func.icon(evas_object_evas_get(cfdata->o_instances));
-         }
-       if (!label) label = "";
-       e_widget_ilist_append(cfdata->o_instances, icon, label,
-                             _cb_select_client_instance,
-                             cfdata, (char *)cf_gcc->name);
-     }
-   e_widget_ilist_go(cfdata->o_instances);
 
-   if (i >= e_widget_ilist_count(cfdata->o_instances))
-     i = e_widget_ilist_count(cfdata->o_instances) - 1;
+   _load_selected_gadgets(cfdata);
 
-   if (!e_widget_ilist_count(cfdata->o_instances)) 
-     e_widget_disabled_set(cfdata->o_remove, 1);
-   else
-     e_widget_ilist_selected_set(cfdata->o_instances, i);
+   e_widget_disabled_set(cfdata->o_remove, 1);
+   
    e_gadcon_unpopulate(cfdata->gc);
    e_gadcon_populate(cfdata->gc);
    e_config_save_queue();
 }
 
-/**--GUI--**/
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
 {
-   /* generate the core widget layout for a basic dialog */
    Evas_Object *o, *of, *ob, *oi;
    Evas_Coord wmw, wmh;
    Evas_List *l, *l2;
-   E_Config_Gadcon_Client *cf_gcc;
 
-   /* FIXME: this is just raw config now - it needs UI improvments */
    o = e_widget_list_add(evas, 0, 1);
 
    of = e_widget_framelist_add(evas, _("Available Gadgets"), 0);
 
    oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname));
+   cfdata->o_avail = oi;
+   _load_available_gadgets(cfdata);
+   e_widget_min_size_get(oi, &wmw, &wmh);
+   if (wmw < 200) wmw = 200;
+   e_widget_min_size_set(oi, wmw, 250);
+   e_widget_framelist_object_append(of, oi);
 
+   ob = e_widget_button_add(evas, _("Add Gadget"), NULL, _cb_add_instance, 
cfdata, NULL);
+   e_widget_disabled_set(ob, 1);
+   cfdata->o_add = ob;
+   e_widget_framelist_object_append(of, ob);
+
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   of = e_widget_framelist_add(evas, _("Selected Gadgets"), 0);
+   oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->ciname));
+   cfdata->o_instances = oi;
+   _load_selected_gadgets(cfdata);
+   e_widget_min_size_get(oi, &wmw, &wmh);
+   if (wmw < 200) wmw = 200;
+   e_widget_min_size_set(oi, wmw, 250);
+   e_widget_framelist_object_append(of, oi);
+
+   ob = e_widget_button_add(evas, _("Remove Gadget"), NULL, 
_cb_remove_instance, cfdata, NULL);
+   e_widget_disabled_set(ob, 1);
+   cfdata->o_remove = ob;
+   e_widget_framelist_object_append(of, ob);
+   
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   return o;
+}
+
+static void 
+_load_available_gadgets(void *data) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_Object *oi;
+   Evas_List *l;
+   Evas *evas;
+   
+   cfdata = data;
+   if (!cfdata) return;
+   
+   oi = cfdata->o_avail;
+   evas = evas_object_evas_get(oi);
+   
+   e_widget_ilist_clear(oi);
+   
    for (l = e_gadcon_provider_list(); l; l = l->next)
      {
        E_Gadcon_Client_Class *cc;
@@ -284,68 +267,49 @@
        if (cc->func.icon) icon = cc->func.icon(evas);
        e_widget_ilist_append(oi, icon, label, _cb_select_client, cfdata, 
cc->name);
      }
-   e_widget_ilist_go(oi);
-
-   e_widget_min_size_get(oi, &wmw, &wmh);
-   if (wmw < 200) wmw = 200;
-   e_widget_min_size_set(oi, wmw, 250);
-
-   e_widget_framelist_object_append(of, oi);
-
-   ob = e_widget_button_add(evas, _("Add Gadget"), NULL, _cb_add_instance, 
cfdata, NULL);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_disabled_set(ob, 1);
-   cfdata->o_add = ob;
-
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
-
-   of = e_widget_framelist_add(evas, _("Selected"), 0);
+   e_widget_ilist_go(oi);   
+}
 
-   oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->ciname));
+static void 
+_load_selected_gadgets(void *data) 
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l, *l2;
+   Evas_Object *oi;
+   Evas *evas;
+   
+   cfdata = data;
+   if (!cfdata) return;
 
+   oi = cfdata->o_instances;
+   evas = evas_object_evas_get(oi);
+   e_widget_ilist_clear(oi);
+   
    for (l = cfdata->cf_gc->clients; l; l = l->next)
      {
-       E_Gadcon_Client_Class *cc;
+       E_Config_Gadcon_Client *cf_gcc;
        char *label;
        Evas_Object *icon;
 
        cf_gcc = l->data;
-       cc = NULL;
-       label = NULL;
        for (l2 = e_gadcon_provider_list(); l2; l2 = l2->next)
          {
+            E_Gadcon_Client_Class *cc;
+
             cc = l2->data;
+            label = NULL;
+            icon = NULL;
             if ((cc->name) && (cf_gcc->name) &&
-                (!strcmp(cc->name, cf_gcc->name))) break;
-            cc = NULL;
-         }
-       if (cc)
-         {
-            if (cc->func.label) label = cc->func.label();
-            if (!label) label = cc->name;
-            if (cc->func.icon)
-              icon = cc->func.icon(evas);
+                (!strcmp(cc->name, cf_gcc->name))) 
+              {
+                 if (cc->func.label) label = cc->func.label();
+                 if (!label) label = cc->name;
+                 if (cc->func.icon) icon = cc->func.icon(evas);
+                 e_widget_ilist_append(oi, icon, label, 
_cb_select_client_instance,
+                                       cfdata, (char *)cf_gcc->name);
+              }
          }
-       if (label)
-         e_widget_ilist_append(oi, icon, label, _cb_select_client_instance,
-                               cfdata, (char *)cf_gcc->name);
      }
 
-   e_widget_ilist_go(oi);
-
-   e_widget_min_size_get(oi, &wmw, &wmh);
-   if (wmw < 200) wmw = 200;
-   e_widget_min_size_set(oi, wmw, 250);
-
-   e_widget_framelist_object_append(of, oi);
-   cfdata->o_instances = oi;
-
-   ob = e_widget_button_add(evas, _("Remove Gadget"), NULL, 
_cb_remove_instance, cfdata, NULL);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_disabled_set(ob, 1);
-   cfdata->o_remove = ob;
-   
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
-
-   return o;
+   e_widget_ilist_go(oi);   
 }



Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to