public override void DeviceInitialize (IDevice device)
{
Volume = device as IVolume;
if (Volume == null) {
throw new InvalidDeviceException ();
}
if (!Volume.IsMounted && device.MediaCapabilities != null && device.MediaCapabilities.IsType ("ipod")) {
Hyena.Log.Information ("Found potential unmounted iDevice, trying to mount it now");
Volume.Mount ();
}
if (!Volume.IsMounted) {
Hyena.Log.Information ("AppleDeviceSource is ignoring unmounted volume " + Volume.Name);
throw new InvalidDeviceException ();
}
Device = new GPod.Device (Volume.MountPoint);
if (GPod.ITDB.GetControlPath (Device) == null) {
throw new InvalidDeviceException ();
}
base.DeviceInitialize (device);
Name = Volume.Name;
SupportsPlaylists = true;
SupportsPodcasts = Device.SupportsPodcast;
SupportsVideo = Device.SupportsVideo;
Initialize ();
GPod.ITDB.InitIpod (Volume.MountPoint, Device.IpodInfo == null ? null : Device.IpodInfo.ModelNumber, Name);
// HACK: ensure that m4a, and mp3 are set as accepted by the device; bgo#633552
AcceptableMimeTypes = (AcceptableMimeTypes ?? new string [0]).Union (new string [] { "taglib/m4a", "taglib/mp3" }).ToArray ();
// FIXME: Properly parse the device, color and generation and don't use the fallback strings
// IpodInfo is null on Macos formated ipods. I don't think we can really do anything with them
// but they get loaded as UMS devices if we throw an NRE here.
if (Device.IpodInfo != null) {
AddDapProperty (Catalog.GetString ("Device"), Device.IpodInfo.ModelString);
AddDapProperty (Catalog.GetString ("Generation"), Device.IpodInfo.GenerationString);
}
// FIXME
//AddDapProperty (Catalog.GetString ("Color"), "black");
AddDapProperty (Catalog.GetString ("Capacity"), string.Format ("{0:0.00}GB", BytesCapacity / 1024.0 / 1024.0 / 1024.0));
AddDapProperty (Catalog.GetString ("Available"), string.Format ("{0:0.00}GB", BytesAvailable / 1024.0 / 1024.0 / 1024.0));
AddDapProperty (Catalog.GetString ("Serial number"), Volume.Serial);
//AddDapProperty (Catalog.GetString ("Produced on"), ipod_device.ProductionInfo.DisplayDate);
//AddDapProperty (Catalog.GetString ("Firmware"), ipod_device.FirmwareVersion);
//string [] capabilities = new string [ipod_device.ModelInfo.Capabilities.Count];
//ipod_device.ModelInfo.Capabilities.CopyTo (capabilities, 0);
//AddDapProperty (Catalog.GetString ("Capabilities"), String.Join (", ", capabilities));
AddYesNoDapProperty (Catalog.GetString ("Supports cover art"), Device.SupportsArtwork);
AddYesNoDapProperty (Catalog.GetString ("Supports photos"), Device.SupportsPhoto);
}