Places: honor 'mount on insert' and 'open on mount' config values.

SVN revision: 74455
This commit is contained in:
Davide Andreoli 2012-07-26 21:08:02 +00:00
parent cac7834a71
commit 3566436355
3 changed files with 24 additions and 16 deletions

View File

@ -19,6 +19,7 @@ static void _places_volume_object_update(Volume *vol, Evas_Object *obj);
static void _places_run_fm(void *data, E_Menu *m, E_Menu_Item *mi);
/* Edje callbacks */
void _places_icon_activated_cb(void *data, Evas_Object *o, const char *emission, const char *source);
void _places_custom_icon_activated_cb(void *data, Evas_Object *o, const char *emission, const char *source);
@ -72,8 +73,9 @@ places_volume_list_get(void)
{
return volumes;
}
Volume *
places_volume_add(const char *id, int dont_auto_mount, int dont_auto_open)
places_volume_add(const char *id, Eina_Bool first_time)
{
Volume *v;
if (!id) return NULL;
@ -92,12 +94,8 @@ places_volume_add(const char *id, int dont_auto_mount, int dont_auto_open)
v->drive_type = "";
v->model = "";
v->bus = "";
if (places_conf->auto_mount && !dont_auto_mount)
v->to_mount = EINA_TRUE;
if (places_conf->auto_open && !dont_auto_open)
v->force_open = EINA_TRUE;
v->to_mount = (places_conf->auto_mount && !first_time);
v->force_open = (places_conf->auto_open && !first_time);
volumes = eina_list_append(volumes, v);
@ -189,6 +187,13 @@ places_volume_update(Volume *vol)
EINA_LIST_FOREACH(vol->objs, l, obj)
_places_volume_object_update(vol, obj);
// mount the volume if needed
if (vol->to_mount && !vol->mounted)
{
places_volume_mount(vol);
vol->to_mount = EINA_FALSE;
}
// the volume has been mounted as requested, open the fm
if (vol->force_open && vol->mounted && vol->mount_point)
{
@ -387,7 +392,7 @@ places_empty_box(Evas_Object *box)
}
void
places_mount_volume(Volume *vol)
places_volume_mount(Volume *vol)
{
Eina_List *opts = NULL;
char buf[256];
@ -676,7 +681,7 @@ _places_icon_activated_cb(void *data, Evas_Object *o, const char *emission, cons
else
{
vol->force_open = EINA_TRUE;
places_mount_volume(vol);
places_volume_mount(vol);
}
}

View File

@ -46,7 +46,7 @@ struct _Volume
void places_init(void);
void places_shutdown(void);
Volume *places_volume_add(const char *id, int dont_auto_mount, int dont_auto_open);
Volume *places_volume_add(const char *id, Eina_Bool first_time);
void places_volume_del(Volume *v);
void places_volume_update(Volume *vol);
Volume *places_volume_by_id_get(const char *id);

View File

@ -24,7 +24,7 @@ static void _places_udisks_all_devices_cb(void *user_data, void *reply_data, DBu
static void _places_udisks_vol_prop_cb(void *data, void *reply_data, DBusError *error);
static void _places_udisks_sto_prop_cb(void *data, void *reply_data, DBusError *error);
static Volume* _places_udisks_volume_add(const char *udi);
static Volume* _places_udisks_volume_add(const char *udi, Eina_Bool first_time);
static void _places_udisks_mount_func(Volume *vol, Eina_List *opts);
static void _places_udisks_unmount_func(Volume *vol, Eina_List *opts);
static void _places_udisks_eject_func(Volume *vol, Eina_List *opts);
@ -173,7 +173,7 @@ _places_udisks_all_devices_cb(void *user_data, void *reply_data, DBusError *err)
EINA_LIST_FOREACH(udisks_ret->strings, l, udi)
{
v = _places_udisks_volume_add(udi);
v = _places_udisks_volume_add(udi, EINA_TRUE);
e_udisks_get_all_properties(_places_udisks_conn, udi,
_places_udisks_vol_prop_cb, v);
}
@ -198,7 +198,7 @@ _places_udisks_device_add_cb(void *data, DBusMessage *msg)
}
printf("PLACES udisks: DeviceAdded [%s]\n", udi);
v = _places_udisks_volume_add(udi);
v = _places_udisks_volume_add(udi, EINA_FALSE);
e_udisks_get_all_properties(_places_udisks_conn, udi,
_places_udisks_vol_prop_cb, v);
}
@ -425,7 +425,10 @@ _places_udisks_sto_prop_cb(void *data, void *reply_data, DBusError *error)
v->valid = EINA_TRUE;
// trigger a full redraw, the only way to show a new device
places_update_all_gadgets();
places_print_volume(v); // JUST FOR DEBUG will remove sooner or later
// the update is needed to trigger auto_mount/auto_open
places_volume_update(v);
// TODO JUST FOR DEBUG will remove sooner or later
places_print_volume(v);
}
else
{
@ -436,11 +439,11 @@ _places_udisks_sto_prop_cb(void *data, void *reply_data, DBusError *error)
/* Internals */
static Volume*
_places_udisks_volume_add(const char *udi)
_places_udisks_volume_add(const char *udi, Eina_Bool first_time)
{
Volume *v;
v = places_volume_add(udi, EINA_FALSE, EINA_FALSE);
v = places_volume_add(udi, first_time);
if (!v) return NULL;
v->mount_func = _places_udisks_mount_func;