summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavide Andreoli <dave@gurumeditation.it>2009-03-03 01:04:09 +0000
committerDavide Andreoli <dave@gurumeditation.it>2009-03-03 01:04:09 +0000
commit3200fe1b84990ac23c15db11df1366a1d56b7b88 (patch)
tree9dd7a0cb2a80b791baee9bd66083a04f416e2c71
parentb19ee965ee1e59f8245c5e2aab9fb1a2ef2db4c2 (diff)
downloadenlightenment-3200fe1b84990ac23c15db11df1366a1d56b7b88.tar.gz
Better use of label and icon for volumes, now everyone (inside e)
can use the same label and the same icon. Atm the icons in the menu are taken from efreet and thus from your icon theme...maybe icons found in the E17 theme should override the system one? SVN revision: 39337
-rw-r--r--src/bin/e_fm_hal.c121
-rw-r--r--src/bin/e_fm_main.c1
-rw-r--r--src/bin/e_fm_shared.h2
-rw-r--r--src/modules/fileman/e_mod_main.c16
4 files changed, 84 insertions, 56 deletions
diff --git a/src/bin/e_fm_hal.c b/src/bin/e_fm_hal.c
index 786af485a1..b313ac7aa0 100644
--- a/src/bin/e_fm_hal.c
+++ b/src/bin/e_fm_hal.c
@@ -94,6 +94,11 @@ e_fm2_hal_storage_find(const char *udi)
return NULL;
}
+#define TEBIBYTE_SIZE 1099511627776LL
+#define GIBIBYTE_SIZE 1073741824
+#define MEBIBYTE_SIZE 1048576
+#define KIBIBYTE_SIZE 1024
+
EAPI void
e_fm2_hal_volume_add(E_Volume *v)
{
@@ -129,6 +134,7 @@ e_fm2_hal_volume_add(E_Volume *v)
v->mount_point,
v->parent);
*/
+ /* Check mount point */
if ((!v->mount_point) || (v->mount_point[0] == 0))
{
if (v->mount_point) free(v->mount_point);
@@ -155,6 +161,7 @@ e_fm2_hal_volume_add(E_Volume *v)
}
}
+ /* Search parent storage */
if ((s = e_fm2_hal_storage_find(v->parent)))
{
v->storage = s;
@@ -167,64 +174,29 @@ e_fm2_hal_volume_add(E_Volume *v)
strcmp(v->mount_point, "/home") &&
strcmp(v->mount_point, "/tmp"))))
{
- _e_fm2_volume_write(v);
- }
-}
-
-EAPI void
-e_fm2_hal_volume_del(E_Volume *v)
-{
-// printf("VOL- %s\n", v->udi);
- if (v->storage)
- v->storage->volumes = eina_list_remove(v->storage->volumes, v);
- _e_vols = eina_list_remove(_e_vols, v);
- _e_fm2_volume_erase(v);
- _e_volume_free(v);
-}
-
-
-#define TEBIBYTE_SIZE 1099511627776LL
-#define GIBIBYTE_SIZE 1073741824
-#define MEBIBYTE_SIZE 1048576
-#define KIBIBYTE_SIZE 1024
-
-static void
-_e_fm2_volume_write(E_Volume *v)
-{
- char buf[PATH_MAX], buf2[PATH_MAX];
- FILE *f;
- const char *id;
-
- if (!v->storage) return;
- id = ecore_file_file_get(v->storage->udi);
-// printf("vol write %s\n", id);
- snprintf(buf, sizeof(buf) - 1, "%s/.e/e/fileman/favorites/|%s_%d.desktop",
- e_user_homedir_get(), id, v->partition_number);
-
- f = fopen(buf, "w");
- if (f)
- {
- char *icon, label[1024] = {0}, size[256] = {0};
- unsigned long long s;
+ char label[1024] = {0};
+ char size[256] = {0};
+ char *icon = NULL;
+ unsigned long long sz;
/* Compute the size in a readable form */
if (v->size)
{
- if ((s = (v->size / TEBIBYTE_SIZE)) > 0)
- snprintf(size, sizeof(size) - 1, _("%llu TiB"), s);
- else if ((s = (v->size / GIBIBYTE_SIZE)) > 0)
- snprintf(size, sizeof(size) - 1, _("%llu GiB"), s);
- else if ((s = (v->size / MEBIBYTE_SIZE)) > 0)
- snprintf(size, sizeof(size) - 1, _("%llu MiB"), s);
- else if ((s = (v->size / KIBIBYTE_SIZE)) > 0)
- snprintf(size, sizeof(size) - 1, _("%llu KiB"), s);
+ if ((sz = (v->size / TEBIBYTE_SIZE)) > 0)
+ snprintf(size, sizeof(size) - 1, _("%llu TiB"), sz);
+ else if ((sz = (v->size / GIBIBYTE_SIZE)) > 0)
+ snprintf(size, sizeof(size) - 1, _("%llu GiB"), sz);
+ else if ((sz = (v->size / MEBIBYTE_SIZE)) > 0)
+ snprintf(size, sizeof(size) - 1, _("%llu MiB"), sz);
+ else if ((sz = (v->size / KIBIBYTE_SIZE)) > 0)
+ snprintf(size, sizeof(size) - 1, _("%llu KiB"), sz);
else
snprintf(size, sizeof(size) - 1, _("%llu B"), v->size);
}
/* Choose the label */
if ((v->label) && (v->label[0]))
- snprintf(label, sizeof(label), "%s", v->label);
+ {}
else if ((v->partition_label) && (v->partition_label[0]))
snprintf(label, sizeof(label) - 1, "%s", v->partition_label);
else if (((v->storage->vendor) && (v->storage->vendor[0])) &&
@@ -252,10 +224,17 @@ _e_fm2_volume_write(E_Volume *v)
else
snprintf(label, sizeof(label), _("Unknown Volume"));
+ if ((label) && (label[0]))
+ {
+ if (v->label) free(v->label);
+ v->label = strdup(label);
+ }
+
/* Choose the icon */
- if (v->storage && v->storage->icon.volume)
+ /* http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html */
+ if (v->storage->icon.volume)
icon = v->storage->icon.volume;
- else if (v->storage)
+ else
{
if (!strcmp(v->storage->drive_type, "disk"))
{
@@ -276,6 +255,44 @@ _e_fm2_volume_write(E_Volume *v)
|| !strcmp(v->storage->drive_type, "sd_mmc"))
icon = "media-flash";
}
+ if (icon)
+ {
+ if (v->icon) free(v->icon);
+ v->icon = strdup(icon);
+ }
+
+ _e_fm2_volume_write(v);
+ }
+}
+
+EAPI void
+e_fm2_hal_volume_del(E_Volume *v)
+{
+// printf("VOL- %s\n", v->udi);
+ if (v->storage)
+ v->storage->volumes = eina_list_remove(v->storage->volumes, v);
+ _e_vols = eina_list_remove(_e_vols, v);
+ _e_fm2_volume_erase(v);
+ _e_volume_free(v);
+}
+
+static void
+_e_fm2_volume_write(E_Volume *v)
+{
+ char buf[PATH_MAX], buf2[PATH_MAX];
+ FILE *f;
+ const char *id;
+
+ if (!v->storage) return;
+ id = ecore_file_file_get(v->storage->udi);
+// printf("vol write %s\n", id);
+ snprintf(buf, sizeof(buf) - 1, "%s/.e/e/fileman/favorites/|%s_%d.desktop",
+ e_user_homedir_get(), id, v->partition_number);
+
+ f = fopen(buf, "w");
+ if (f)
+ {
+
fprintf(f,
"[Desktop Entry]\n"
@@ -288,8 +305,8 @@ _e_fm2_volume_write(E_Volume *v)
"Comment=%s\n"
"URL=file:/%s\n"
,
- label,
- icon,
+ v->label,
+ v->icon,
_("Removable Device"),
v->udi);
fclose(f);
diff --git a/src/bin/e_fm_main.c b/src/bin/e_fm_main.c
index 8faa0d7e38..18c8072be5 100644
--- a/src/bin/e_fm_main.c
+++ b/src/bin/e_fm_main.c
@@ -777,6 +777,7 @@ e_volume_add(const char *udi)
if (!v) return NULL;
// printf("VOL+ %s\n", udi);
v->udi = strdup(udi);
+ v->icon = NULL;
_e_vols = eina_list_append(_e_vols, v);
e_hal_device_get_all_properties(_e_dbus_conn, v->udi,
_e_dbus_cb_vol_prop, v);
diff --git a/src/bin/e_fm_shared.h b/src/bin/e_fm_shared.h
index bb86679261..849cb50934 100644
--- a/src/bin/e_fm_shared.h
+++ b/src/bin/e_fm_shared.h
@@ -42,6 +42,7 @@ struct _E_Volume
char *udi;
char *uuid;
char *label;
+ char *icon;
char *fstype;
unsigned long long size;
@@ -93,6 +94,7 @@ _e_volume_free(E_Volume *v)
if (v->udi) free(v->udi);
if (v->uuid) free(v->uuid);
if (v->label) free(v->label);
+ if (v->icon) free(v->icon);
if (v->fstype) free(v->fstype);
if (v->partition_label) free(v->partition_label);
if (v->mount_point) free(v->mount_point);
diff --git a/src/modules/fileman/e_mod_main.c b/src/modules/fileman/e_mod_main.c
index fca850e31a..8cbcca71c0 100644
--- a/src/modules/fileman/e_mod_main.c
+++ b/src/modules/fileman/e_mod_main.c
@@ -227,7 +227,8 @@ _mount_ok(void *data)
static void
_mount_fail(void *data)
{
- //TODO alert the user
+ //TODO make a better dialog
+ e_util_dialog_internal(_("Mount error"), _("Mount of device failed"));
}
static void
@@ -265,12 +266,14 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m)
E_Menu_Item *mi;
Efreet_Uri *uri;
char *alias;
+ char *icon;
FILE* fp;
snprintf(buf, sizeof(buf), "%s/.gtk-bookmarks", e_user_homedir_get());
fp = fopen(buf, "r");
if (fp)
{
+ icon = efreet_icon_path_find(e_config->icon_theme, "folder", 16);
while(fgets(line, sizeof(line), fp))
{
alias = NULL;
@@ -289,13 +292,14 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, alias ? alias :
ecore_file_file_get(uri->path));
- e_util_menu_item_edje_icon_set(mi, "fileman/folder");
+ e_menu_item_icon_file_set(mi, icon);
e_menu_item_callback_set(mi, _e_mod_menu_gtk_cb,
strdup(uri->path));
}
}
if (uri) efreet_uri_free(uri);
}
+ if (icon) free(icon);
fclose(fp);
}
}
@@ -305,6 +309,8 @@ void
_e_mod_menu_generate(void *data, E_Menu *m)
{
E_Menu_Item *mi;
+ E_Volume *vol;
+ const Eina_List *l;
char buf[PATH_MAX];
/* Home */
@@ -349,15 +355,17 @@ _e_mod_menu_generate(void *data, E_Menu *m)
/* Volumes */
Eina_Bool volumes_visible = 0;
- const Eina_List *l;
- E_Volume *vol;
EINA_LIST_FOREACH(e_fm2_hal_volume_list_get(), l, vol)
{
+ char *icon;
if (vol->mount_point && !strcmp(vol->mount_point, "/")) continue;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, vol->label);
+ icon = efreet_icon_path_find(e_config->icon_theme, vol->icon, 16);
+ e_menu_item_icon_file_set(mi, icon);
e_menu_item_callback_set(mi, _e_mod_menu_volume_cb, vol);
volumes_visible = 1;
+ if (icon) free(icon);
}
/* Favorites */