You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

141 lines
2.7 KiB

#ifndef E_FM_SHARED_TYPES
#define E_FM_SHARED_TYPES
#include <Eina.h>
#include <Ecore.h>
#if @EEZE_MOUNT_CONFIG@
# include <Eeze.h>
# include <Eeze_Disk.h>
#endif
#if @DBUS_MOUNT_CONFIG@
# include <Eldbus.h>
#endif
# define E_DEVICE_TYPE_STORAGE 1
# define E_DEVICE_TYPE_VOLUME 2
typedef struct _E_Storage E_Storage;
typedef struct _E_Volume E_Volume;
typedef struct _E_Fm2_Mount E_Fm2_Mount;
typedef enum
{
EFM_MODE_USING_RASTER_MOUNT,
EFM_MODE_USING_HAL_MOUNT,
EFM_MODE_USING_UDISKS_MOUNT,
EFM_MODE_USING_UDISKS2_MOUNT,
EFM_MODE_USING_EEZE_MOUNT
} Efm_Mode;
typedef enum
{
E_VOLUME_OP_TYPE_NONE,
E_VOLUME_OP_TYPE_MOUNT,
E_VOLUME_OP_TYPE_UNMOUNT,
E_VOLUME_OP_TYPE_EJECT
} E_Volume_Op_Type;
typedef struct E_Fm2_Device_Mount_Op
{
EINA_INLIST;
unsigned int action;
char *args;
void *ic;
E_Fm2_Mount *mnt;
size_t size, length;
} E_Fm2_Device_Mount_Op;
struct _E_Storage
{
int type;
const char *udi; /* with eeze, this is actually the syspath */
const char *drive_type;
const char *model, *vendor, *serial;
Eina_Bool removable;
Eina_Bool media_available;
Eina_Bool system_internal;
unsigned long long media_size;
Eina_Bool requires_eject;
Eina_Bool hotpluggable;
Eina_Bool media_check_enabled;
struct
{
const char *drive, *volume;
} icon;
Eina_List *volumes;
Eina_Bool validated : 1;
Eina_Bool trackable : 1;
#if @DBUS_MOUNT_CONFIG@
Eldbus_Proxy *proxy;
const char *dbus_path;
#endif
#if @EEZE_MOUNT_CONFIG@
Eeze_Disk *disk;
#endif
const char *bus;
};
struct _E_Volume
{
int type;
const char *udi, *uuid;
const char *label, *icon, *fstype;
unsigned long long size;
Eina_Bool partition;
int partition_number;
const char *partition_label;
Eina_Bool mounted;
const char *mount_point;
const char *parent;
E_Storage *storage;
Eina_List *mounts;
Eina_Bool validated : 1;
Eina_Bool auto_unmount : 1; // unmount, when last associated fm window closed
Eina_Bool first_time; // volume discovery in init sequence
Ecore_Timer *guard; // operation guard timer
E_Volume_Op_Type optype;
Efm_Mode efm_mode;
Eina_Inlist *mount_ops; // E_Fm2_Device_Mount_Op
Eina_Bool encrypted;
Eina_Bool unlocked;
#if @DBUS_MOUNT_CONFIG@
Eldbus_Pending *op;
Eldbus_Proxy *proxy;
const char *dbus_path;
#endif
#if @EEZE_MOUNT_CONFIG@
Eeze_Disk *disk;
#endif
};
struct _E_Fm2_Mount
{
const char *udi;
const char *mount_point;
Ecore_Cb mount_ok;
Ecore_Cb mount_fail;
Ecore_Cb unmount_ok;
Ecore_Cb unmount_fail;
void *data;
E_Volume *volume;
Eina_Bool mounted : 1;
Eina_Bool deleted : 1;
};
#endif