On Sun, Aug 10, 2008 at 07:08:20PM -0500, Nick Hughart wrote:
> This change:
>
> -   snprintf(buf, sizeof(buf), "%s/.e/e/fileman/favorites/|%s_%d.desktop",
> +   snprintf(buf, sizeof(buf) - 1, "%s/.e/e/fileman/favorites/|%s_%d.desktop",
>           e_user_homedir_get(), id, v->partition_number);
>
> isn't necessary.  snprintf is smart enough to know that it needs space for 
> the null character :)

Ah... Use this one instead then.

-- 
King regards,
Fedor Gusev.
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 4489b8f..e06515f 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -587,6 +587,8 @@ e_config_init(void)
    E_CONFIG_VAL(D, T, thumbscroll_momentum_threshhold, DOUBLE);
    E_CONFIG_VAL(D, T, thumbscroll_friction, DOUBLE);
    
+   E_CONFIG_VAL(D, T, hal_desktop, INT);
+
    e_config = e_config_domain_load("e", _e_config_edd);
    if (e_config)
      {
@@ -763,6 +765,7 @@ e_config_init(void)
    e_config->display_res_hz = 0;
    e_config->display_res_rotation = 0;
 
+   e_config->hal_desktop = 1;
      {
 	E_Config_Module *em;
 
diff --git a/src/bin/e_config.h b/src/bin/e_config.h
index c8edfcd..683b650 100644
--- a/src/bin/e_config.h
+++ b/src/bin/e_config.h
@@ -286,6 +286,8 @@ struct _E_Config
    int thumbscroll_threshhold;
    double thumbscroll_momentum_threshhold;
    double thumbscroll_friction;
+
+   int hal_desktop;
 };
 
 struct _E_Config_Module
diff --git a/src/bin/e_fm_hal.c b/src/bin/e_fm_hal.c
index 031de46..daa3d3e 100644
--- a/src/bin/e_fm_hal.c
+++ b/src/bin/e_fm_hal.c
@@ -292,13 +292,16 @@ _e_fm2_volume_write(E_Volume *v)
 		v->udi);
 	fclose(f);
 
-	snprintf(buf2, sizeof(buf2), "%s/Desktop/|%s_%d.desktop",
-		 e_user_homedir_get(), id, v->partition_number);
-	ecore_file_symlink(buf, buf2);
+	if(e_config->hal_desktop)
+	  {
+	     snprintf(buf2, sizeof(buf2), "%s/Desktop/|%s_%d.desktop",
+		   e_user_homedir_get(), id, v->partition_number);
+	     ecore_file_symlink(buf, buf2);
+	     _e_fm2_file_force_update(buf2);
+	  }
 
 	/* FIXME: manipulate icon directly */
 	_e_fm2_file_force_update(buf);
-	_e_fm2_file_force_update(buf2);
      }
 }
 
@@ -315,14 +318,18 @@ _e_fm2_volume_erase(E_Volume *v)
   
    if (!v->storage) return;
    id = ecore_file_file_get(v->storage->udi);
-   snprintf(buf, sizeof(buf) - 1, "%s/Desktop/|%s_%d.desktop",
-	    e_user_homedir_get(), id, v->partition_number);
-   ecore_file_unlink(buf);
-   _e_fm2_file_force_update(buf);
-   snprintf(buf, sizeof(buf) - 1, "%s/.e/e/fileman/favorites/|%s_%d.desktop",
+   snprintf(buf, sizeof(buf), "%s/Desktop/|%s_%d.desktop",
 	    e_user_homedir_get(), id, v->partition_number);
    ecore_file_unlink(buf);
    _e_fm2_file_force_update(buf);
+
+   if(e_config->hal_desktop)
+     {
+	snprintf(buf, sizeof(buf), "%s/.e/e/fileman/favorites/|%s_%d.desktop",
+	      e_user_homedir_get(), id, v->partition_number);
+	ecore_file_unlink(buf);
+	_e_fm2_file_force_update(buf);
+     }
 }
 
 EAPI E_Volume *
@@ -488,3 +495,62 @@ _e_fm2_hal_mount_timeout(E_Fm2_Mount *m)
    return 0;
 }
 
+EAPI void
+e_fm2_hal_show_desktop_icons(void)
+{
+   Evas_List *l;
+   E_Volume *v;
+   char buf[PATH_MAX] = {0};
+   char buf2[PATH_MAX] = {0};
+   const char *id;
+
+   for(l = _e_vols; l; l = evas_list_next(l))
+     {
+	v = evas_list_data(l);
+
+	if(!v) continue;	
+	if (!v->storage) continue;
+
+	id = ecore_file_file_get(v->storage->udi);
+
+	snprintf(buf, sizeof(buf), "%s/.e/e/fileman/favorites/|%s_%d.desktop",
+	      e_user_homedir_get(), id, v->partition_number);
+
+	snprintf(buf2, sizeof(buf2), "%s/Desktop/|%s_%d.desktop",
+	      e_user_homedir_get(), id, v->partition_number);
+
+	if(ecore_file_exists(buf) && !ecore_file_exists(buf2))
+	  {
+	     ecore_file_symlink(buf, buf2);
+	     _e_fm2_file_force_update(buf2);
+	  }
+     }
+}
+
+EAPI void
+e_fm2_hal_hide_desktop_icons(void)
+{
+   Evas_List *l;
+   E_Volume *v;
+   char buf[PATH_MAX] = {0};
+   const char *id;
+
+   for(l = _e_vols; l; l = evas_list_next(l))
+     {
+	v = evas_list_data(l);
+
+	if(!v) continue;	
+	if (!v->storage) continue;
+
+	id = ecore_file_file_get(v->storage->udi);
+
+	snprintf(buf, sizeof(buf), "%s/Desktop/|%s_%d.desktop",
+	      e_user_homedir_get(), id, v->partition_number);
+
+	if(ecore_file_exists(buf))
+	  {
+	     ecore_file_unlink(buf);
+	     _e_fm2_file_force_update(buf);
+	  }
+     }
+}
diff --git a/src/bin/e_fm_hal.h b/src/bin/e_fm_hal.h
index fc352f7..4691e7b 100644
--- a/src/bin/e_fm_hal.h
+++ b/src/bin/e_fm_hal.h
@@ -25,4 +25,7 @@ EAPI E_Fm2_Mount *e_fm2_hal_mount(E_Volume *v,
 				  void *data);
 EAPI void         e_fm2_hal_unmount(E_Fm2_Mount *m);
 
+EAPI void         e_fm2_hal_show_desktop_icons(void);
+EAPI void         e_fm2_hal_hide_desktop_icons(void);
+
 #endif
diff --git a/src/modules/fileman/e_mod_config.c b/src/modules/fileman/e_mod_config.c
index 901b98b..fe67e95 100644
--- a/src/modules/fileman/e_mod_config.c
+++ b/src/modules/fileman/e_mod_config.c
@@ -58,6 +58,11 @@ struct _E_Config_Dialog_Data
 	int fixed;
      } theme;
 
+   struct
+     {
+        int desktop;
+     } hal;
+
    E_Config_Dialog *cfd;
 };
 
@@ -110,6 +115,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
    cfdata->icon.icon.h = fileman_config->icon.icon.h;
    cfdata->icon.extension.show = fileman_config->icon.extension.show;
    cfdata->list.sort.dirs.first = fileman_config->list.sort.dirs.first;
+   cfdata->hal.desktop = e_config->hal_desktop;
 }
 
 static void 
@@ -136,6 +142,16 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
    
    fileman_config->list.sort.dirs.first = cfdata->list.sort.dirs.first;
    fileman_config->list.sort.dirs.last = !(cfdata->list.sort.dirs.first);
+
+   e_config->hal_desktop = cfdata->hal.desktop;
+   if(e_config->hal_desktop) 
+     {
+        e_fm2_hal_show_desktop_icons();
+     }
+   else
+     {
+        e_fm2_hal_hide_desktop_icons();
+     }
      
    e_config_save_queue();
    
@@ -197,6 +213,8 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
    ob = e_widget_check_add(evas, _("Show Toolbar"), 
 			   &(cfdata->view.show_toolbar));
    e_widget_list_object_append(o, ob, 1, 1, 0.5);
-   
+   ob = e_widget_check_add(evas, _("Show HAL icons on desktop"), 
+			   &(cfdata->hal.desktop));
+   e_widget_list_object_append(o, ob, 1, 1, 0.5);
    return o;
 }
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to