diff options
author | Christophe Fergeau <teuf@gnome.org> | 2005-11-05 19:38:36 +0000 |
---|---|---|
committer | Christophe Fergeau <teuf@gnome.org> | 2005-11-05 19:38:36 +0000 |
commit | f17f3b23735023fa68e5994964ddb80db6528a75 (patch) | |
tree | 91a99a26a62df19d75227b1fea7f4fe704d91d44 | |
parent | be7488f5b7b58f2c17db98650ec85561be83abd1 (diff) | |
download | libgpod-tmz-f17f3b23735023fa68e5994964ddb80db6528a75.tar.gz libgpod-tmz-f17f3b23735023fa68e5994964ddb80db6528a75.tar.xz libgpod-tmz-f17f3b23735023fa68e5994964ddb80db6528a75.zip |
2005-11-05 Christophe Fergeau <teuf@gnome.org>
* src/ipod-device.c: (ipod_device_get_property),
(ipod_device_class_init):
* src/ipod-device.h: sync with libipoddevice CVS to get information
about artwork formats supported by the various iPod models
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1140 f01d2545-417e-4e96-918e-98f8d0dbbcb6
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/ipod-device.c | 83 | ||||
-rw-r--r-- | src/ipod-device.h | 28 |
3 files changed, 110 insertions, 9 deletions
@@ -1,3 +1,11 @@ +2005-11-05 Christophe Fergeau <teuf@gnome.org> + + * src/ipod-device.c: (ipod_device_get_property), + (ipod_device_class_init): + * src/ipod-device.h: sync with libipoddevice CVS to get information + about artwork formats supported by the various iPod models + + 2005-11-04 Christophe Fergeau <teuf@gnome.org> * src/ipod-device.c: (ipod_device_new): diff --git a/src/ipod-device.c b/src/ipod-device.c index 8971693..124a585 100644 --- a/src/ipod-device.c +++ b/src/ipod-device.c @@ -94,6 +94,7 @@ typedef struct _IpodModel { guint generation; } IpodModel; + static const IpodModel ipod_model_table [] = { /* Handle idiots who hose their iPod file system, or lucky people with iPods we don't yet know about*/ @@ -156,11 +157,17 @@ static const IpodModel ipod_model_table [] = { {"9724", GB / 2, MODEL_TYPE_SHUFFLE, FOURTH_GENERATION}, {"9725", GB, MODEL_TYPE_SHUFFLE, FOURTH_GENERATION}, - /* Nano / Fourth Generation */ - {"A004", GB * 2, MODEL_TYPE_NANO_WHITE, FOURTH_GENERATION}, - {"A099", GB * 2, MODEL_TYPE_NANO_BLACK, FOURTH_GENERATION}, - {"A005", GB * 4, MODEL_TYPE_NANO_WHITE, FOURTH_GENERATION}, - {"A107", GB * 4, MODEL_TYPE_NANO_BLACK, FOURTH_GENERATION}, + /* Nano / Fifth Generation */ + {"A004", GB * 2, MODEL_TYPE_NANO_WHITE, FIFTH_GENERATION}, + {"A099", GB * 2, MODEL_TYPE_NANO_BLACK, FIFTH_GENERATION}, + {"A005", GB * 4, MODEL_TYPE_NANO_WHITE, FIFTH_GENERATION}, + {"A107", GB * 4, MODEL_TYPE_NANO_BLACK, FIFTH_GENERATION}, + + /* Video / Fifth Generation */ + {"A002", GB * 30, MODEL_TYPE_VIDEO_WHITE, FIFTH_GENERATION}, + {"A146", GB * 30, MODEL_TYPE_VIDEO_BLACK, FIFTH_GENERATION}, + {"A003", GB * 60, MODEL_TYPE_VIDEO_WHITE, FIFTH_GENERATION}, + {"A147", GB * 60, MODEL_TYPE_VIDEO_BLACK, FIFTH_GENERATION}, /* HP iPods, need contributions for this table */ {"E436", 40 * GB, MODEL_TYPE_REGULAR, FOURTH_GENERATION}, @@ -183,9 +190,60 @@ static const gchar *ipod_model_name_table [] = { "Shuffle", "Nano (White)", "Nano (Black)", + "Video (White)", + "Video (Black)", NULL }; +static const IpodArtworkFormat ipod_color_artwork_info[] = { + {IPOD_COVER_SMALL, 56, 56, 1017}, + {IPOD_COVER_LARGE, 140, 140, 1016}, + {IPOD_PHOTO_SMALL, 42, 30, 1009}, + {IPOD_PHOTO_LARGE, 130, 88, 1015}, + {IPOD_PHOTO_FULL_SCREEN, 220, 176, 1013}, + {IPOD_PHOTO_TV_SCREEN, 720, 480, 1019}, + {-1, -1, -1, -1} +}; + +static const IpodArtworkFormat ipod_nano_artwork_info[] = { + {IPOD_COVER_SMALL, 42, 42, 1031}, + {IPOD_COVER_LARGE, 100, 100, 1027}, + {IPOD_PHOTO_LARGE, 42, 37, 1032}, + {IPOD_PHOTO_FULL_SCREEN, 176, 132, 1023}, + {-1, -1, -1, -1} +}; + +static const IpodArtworkFormat ipod_video_artwork_info[] = { + {IPOD_COVER_SMALL, 100, 100, 1028}, + {IPOD_COVER_LARGE, 200, 200, 1029}, + {IPOD_PHOTO_SMALL, 50, 41, 1036}, + {IPOD_PHOTO_LARGE, 130, 88, 1015}, + {IPOD_PHOTO_FULL_SCREEN, 320, 240, 1024}, + {IPOD_PHOTO_TV_SCREEN, 720, 480, 1019}, + {-1, -1, -1, -1} +}; + +/* This will be indexed using a value from the MODEL_TYPE enum */ +static const IpodArtworkFormat *ipod_artwork_info_table[] = { + NULL, /* Invalid */ + NULL, /* Unknown */ + ipod_color_artwork_info, /* Color */ + ipod_color_artwork_info, /* Color U2 */ + NULL, /* Grayscale */ + NULL, /* Grayscale U2 */ + NULL, /* Mini (Silver) */ + NULL, /* Mini (Blue) */ + NULL, /* Mini (Pink) */ + NULL, /* Mini (Green) */ + NULL, /* Mini (Gold) */ + NULL, /* Shuffle */ + ipod_nano_artwork_info, /* Nano (White) */ + ipod_nano_artwork_info, /* Nano (Black) */ + ipod_video_artwork_info, /* Video (White) */ + ipod_video_artwork_info /* Video (Black) */ +}; + + #define g_free_if_not_null(o) \ if(o != NULL) { \ g_free(o); \ @@ -457,6 +515,11 @@ ipod_device_get_property(GObject *object, guint prop_id, case PROP_CAN_WRITE: g_value_set_boolean(value, device->priv->can_write); break; + case PROP_ARTWORK_FORMAT: + g_value_set_pointer(value, + (gpointer)ipod_artwork_info_table[ipod_model_table[ + device->priv->model_index].model_type]); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -551,7 +614,8 @@ ipod_device_class_init(IpodDeviceClass *klass) GParamSpec *can_write_param; GParamSpec *device_generation_param; GParamSpec *advertised_capacity_param; - + GParamSpec *artwork_format_param; + GObjectClass *class = G_OBJECT_CLASS(klass); parent_class = g_type_class_peek_parent(klass); @@ -645,6 +709,9 @@ ipod_device_class_init(IpodDeviceClass *klass) "Generation", "Generation of the iPod", 0, G_MAXUINT, 0, G_PARAM_READABLE); + artwork_format_param = g_param_spec_pointer("artwork-formats", + "Artwork Format", "Support Artwork Formats", G_PARAM_READABLE); + class->set_property = ipod_device_set_property; class->get_property = ipod_device_get_property; g_object_class_install_property(class, PROP_HAL_CONTEXT, @@ -713,6 +780,10 @@ ipod_device_class_init(IpodDeviceClass *klass) g_object_class_install_property(class, PROP_ADVERTISED_CAPACITY, advertised_capacity_param); + + g_object_class_install_property(class, PROP_ARTWORK_FORMAT, + artwork_format_param); + } static void diff --git a/src/ipod-device.h b/src/ipod-device.h index 726ca36..5576c09 100644 --- a/src/ipod-device.h +++ b/src/ipod-device.h @@ -112,7 +112,8 @@ enum { FIRST_GENERATION, SECOND_GENERATION, THIRD_GENERATION, - FOURTH_GENERATION + FOURTH_GENERATION, + FIFTH_GENERATION }; enum { @@ -129,7 +130,9 @@ enum { MODEL_TYPE_MINI_GOLD, MODEL_TYPE_SHUFFLE, MODEL_TYPE_NANO_WHITE, - MODEL_TYPE_NANO_BLACK + MODEL_TYPE_NANO_BLACK, + MODEL_TYPE_VIDEO_WHITE, + MODEL_TYPE_VIDEO_BLACK }; enum { @@ -162,13 +165,32 @@ enum { PROP_FIRMWARE_VERSION, PROP_VOLUME_UUID, PROP_VOLUME_LABEL, - PROP_CAN_WRITE + PROP_CAN_WRITE, + PROP_ARTWORK_FORMAT }; enum { ERROR_SAVE }; +enum { + IPOD_COVER_SMALL, + IPOD_COVER_LARGE, + IPOD_PHOTO_SMALL, + IPOD_PHOTO_LARGE, + IPOD_PHOTO_FULL_SCREEN, + IPOD_PHOTO_TV_SCREEN +}; + + +typedef struct { + gint type; + gint16 width; + gint16 height; + gint16 correlation_id; +} IpodArtworkFormat; + + GType itdb_device_get_type(void); IpodDevice *itdb_device_new(const gchar *mount_point); gboolean itdb_device_rescan_disk(IpodDevice *device); |