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); static void _places_run_fm(void *data, E_Menu *m, E_Menu_Item *mi);
/* Edje callbacks */ /* Edje callbacks */
void _places_icon_activated_cb(void *data, Evas_Object *o, const char *emission, const char *source); 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); 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; return volumes;
} }
Volume * 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; Volume *v;
if (!id) return NULL; 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->drive_type = "";
v->model = ""; v->model = "";
v->bus = ""; v->bus = "";
v->to_mount = (places_conf->auto_mount && !first_time);
if (places_conf->auto_mount && !dont_auto_mount) v->force_open = (places_conf->auto_open && !first_time);
v->to_mount = EINA_TRUE;
if (places_conf->auto_open && !dont_auto_open)
v->force_open = EINA_TRUE;
volumes = eina_list_append(volumes, v); volumes = eina_list_append(volumes, v);
@ -189,6 +187,13 @@ places_volume_update(Volume *vol)
EINA_LIST_FOREACH(vol->objs, l, obj) EINA_LIST_FOREACH(vol->objs, l, obj)
_places_volume_object_update(vol, 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 // the volume has been mounted as requested, open the fm
if (vol->force_open && vol->mounted && vol->mount_point) if (vol->force_open && vol->mounted && vol->mount_point)
{ {
@ -387,7 +392,7 @@ places_empty_box(Evas_Object *box)
} }
void void
places_mount_volume(Volume *vol) places_volume_mount(Volume *vol)
{ {
Eina_List *opts = NULL; Eina_List *opts = NULL;
char buf[256]; char buf[256];
@ -676,7 +681,7 @@ _places_icon_activated_cb(void *data, Evas_Object *o, const char *emission, cons
else else
{ {
vol->force_open = EINA_TRUE; 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_init(void);
void places_shutdown(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_del(Volume *v);
void places_volume_update(Volume *vol); void places_volume_update(Volume *vol);
Volume *places_volume_by_id_get(const char *id); 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_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 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_mount_func(Volume *vol, Eina_List *opts);
static void _places_udisks_unmount_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); 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) 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, e_udisks_get_all_properties(_places_udisks_conn, udi,
_places_udisks_vol_prop_cb, v); _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); 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, e_udisks_get_all_properties(_places_udisks_conn, udi,
_places_udisks_vol_prop_cb, v); _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; v->valid = EINA_TRUE;
// trigger a full redraw, the only way to show a new device // trigger a full redraw, the only way to show a new device
places_update_all_gadgets(); 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 else
{ {
@ -436,11 +439,11 @@ _places_udisks_sto_prop_cb(void *data, void *reply_data, DBusError *error)
/* Internals */ /* Internals */
static Volume* static Volume*
_places_udisks_volume_add(const char *udi) _places_udisks_volume_add(const char *udi, Eina_Bool first_time)
{ {
Volume *v; Volume *v;
v = places_volume_add(udi, EINA_FALSE, EINA_FALSE); v = places_volume_add(udi, first_time);
if (!v) return NULL; if (!v) return NULL;
v->mount_func = _places_udisks_mount_func; v->mount_func = _places_udisks_mount_func;