diff options
| author | jcsjcs <jcsjcs@f01d2545-417e-4e96-918e-98f8d0dbbcb6> | 2006-06-04 16:24:45 +0000 |
|---|---|---|
| committer | jcsjcs <jcsjcs@f01d2545-417e-4e96-918e-98f8d0dbbcb6> | 2006-06-04 16:24:45 +0000 |
| commit | 567f2a788c6aa050294e31f58f06e3d94f22fea5 (patch) | |
| tree | 659eb107c8bbdacf0f74f3c9db68e0aa122eec6a /src/itdb_device.c | |
| parent | 86faaa2088244b44f54b463e4eccd84154afb219 (diff) | |
2006-06-05 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/db-artwork-parser.h
src/db-artwork-parserc (ipod_supports_cover_art): made
available G_GNUC_INTERNAL.
Added ipod_supports_photos().
* src/itdb_itunesdb.c (itdb_create_directories):
Create Photos directory.
2006-06-04 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/db-image-parser.c
src/itdb_artwork.c
src/itdb_device.c
src/itdb_photoalbum.c
src/itdb_track.c
src/ithumb-writer.c: Phased out private
IPOD_COVER_SMALL... enum in favor of identical public enum
"ItdbThumbType" ITDB_THUMB_COVER_SMALL...
* src/db-image-parser.c (ipod_image_new_from_mhni):
Accept all thumbnail types we know about (i.e. type != -1).
* src/db-artwork-debug.h
src/db-artwork-parser.h
src/db-image-parser.h
src/db-parse-context.h
src/glib-compat.h
src/itdb_endianness.h: Added CVS "$Id:" line, added copyright
notices where missing, added explanations to itdb_endianess.h
;-)
* src/itdb_itunesdb.c
src/itdb_track.c
src/itdb_device.c
src/itdb_device.h
Made naming consistent and suitable for export:
Itdb_IpodModel -> Itdb_IpodInfo
ipod_model_table -> ipod_info_table
itdb_device_get_model_info() -> itdb_device_get_ipod_info()
MODEL_TYPE_... -> ITDB_IPOD_MODEL_...
nth_GENERATION -> ITDB_IPOD_GENERATION_nth
Exported Itdb_IpodModel, Itdb_IpodGeneration, Itdb_IpodInfo,
itdb_device_get_ipod_info().
* src/itdb_device.c: new API:
itdb_info_get_ipod_info_table(),
itdb_info_get_ipod_model_name()
* src/itdb.h
src/itdb_artwork.c:
Removed unused field ->type in Itdb_Artwork and corresponding
enum ItdbArtworkType.
2006-06-03 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/itdb_artwork.c (itdb_thumb_get_gdk_pixbuf): handle thumbnail
padding correctly -- who would have thought that iTunes
indicates _negative_ padding at times... Please use the
test-photos program to check out whether or not your photos show
up correctly without black bars or funny colors.
* src/db-artwork-writer.c
src/db-image-parser.c
src/itdb.h
src/ithumb-writer.c: Hopefully do padding right:
- read padding fields from mhni header and store them with
each thumbnail
- calculate padding for PhotoDB only (padding for iTunesDB
Artwork does not seem to be necessary)
- include the padding into the total width/height
It seems to work well on my iPod Nano -- feedback appreciated.
* tests/test-photos.c: added possibility to dump all photos into
a directory:
tests/test-photos dump <mountpoint> <output_dir>
* src/itdb_artwork.c: changed byte order for full screen iPod
Nanos.
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1299 f01d2545-417e-4e96-918e-98f8d0dbbcb6
Diffstat (limited to 'src/itdb_device.c')
| -rw-r--r-- | src/itdb_device.c | 308 |
1 files changed, 196 insertions, 112 deletions
diff --git a/src/itdb_device.c b/src/itdb_device.c index dd2e2ad..17d6a98 100644 --- a/src/itdb_device.c +++ b/src/itdb_device.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2006-05-29 23:55:05 jcs> +/* Time-stamp: <2006-06-04 19:22:40 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -39,168 +39,176 @@ #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> +#include <glib/gi18n-lib.h> -#define GB 1024 - -static const Itdb_IpodModel ipod_model_table [] = { +static const Itdb_IpodInfo ipod_info_table [] = { /* Handle idiots who hose their iPod file system, or lucky people with iPods we don't yet know about*/ - {"Invalid", 0, MODEL_TYPE_INVALID, UNKNOWN_GENERATION, 0}, - {"Unknown", 0, MODEL_TYPE_UNKNOWN, UNKNOWN_GENERATION, 0}, + {"Invalid", 0, ITDB_IPOD_MODEL_INVALID, ITDB_IPOD_GENERATION_UNKNOWN, 0}, + {"Unknown", 0, ITDB_IPOD_MODEL_UNKNOWN, ITDB_IPOD_GENERATION_UNKNOWN, 0}, /* First Generation */ /* Mechanical buttons arranged around rotating "scroll wheel". 8513, 8541 and 8709 are Mac types, 8697 is PC */ - {"8513", 5*GB, MODEL_TYPE_REGULAR, FIRST_GENERATION, 20}, - {"8541", 5*GB, MODEL_TYPE_REGULAR, FIRST_GENERATION, 20}, - {"8697", 5*GB, MODEL_TYPE_REGULAR, FIRST_GENERATION, 20}, - {"8709", 10*GB, MODEL_TYPE_REGULAR, FIRST_GENERATION, 20}, + {"8513", 5, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FIRST, 20}, + {"8541", 5, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FIRST, 20}, + {"8697", 5, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FIRST, 20}, + {"8709", 10, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FIRST, 20}, /* Second Generation */ /* Same buttons as First Generation but around touch-sensitive "touch wheel". 8737 and 8738 are Mac types, 8740 and 8741 * are PC */ - {"8737", 10*GB, MODEL_TYPE_REGULAR, SECOND_GENERATION, 20}, - {"8740", 10*GB, MODEL_TYPE_REGULAR, SECOND_GENERATION, 20}, - {"8738", 20*GB, MODEL_TYPE_REGULAR, SECOND_GENERATION, 50}, - {"8741", 20*GB, MODEL_TYPE_REGULAR, SECOND_GENERATION, 50}, + {"8737", 10, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_SECOND, 20}, + {"8740", 10, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_SECOND, 20}, + {"8738", 20, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_SECOND, 50}, + {"8741", 20, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_SECOND, 50}, /* Third Generation */ /* Touch sensitive buttons and arranged in a line above "touch wheel". Docking connector was introduced here, same models for Mac and PC from now on. */ - {"8976", 10*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 20}, - {"8946", 15*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 50}, - {"9460", 15*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 50}, - {"9244", 20*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 50}, - {"8948", 30*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 50}, - {"9245", 40*GB, MODEL_TYPE_REGULAR, THIRD_GENERATION, 50}, + {"8976", 10, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 20}, + {"8946", 15, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 50}, + {"9460", 15, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 50}, + {"9244", 20, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 50}, + {"8948", 30, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 50}, + {"9245", 40, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_THIRD, 50}, /* Fourth Generation */ /* Buttons are now integrated into the "touch wheel". */ - {"9282", 20*GB, MODEL_TYPE_REGULAR, FOURTH_GENERATION, 50}, - {"9787", 25*GB, MODEL_TYPE_REGULAR_U2, FOURTH_GENERATION, 50}, - {"9268", 40*GB, MODEL_TYPE_REGULAR, FOURTH_GENERATION, 50}, - {"A079", 20*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, - {"A127", 20*GB, MODEL_TYPE_COLOR_U2, FOURTH_GENERATION, 50}, - {"9830", 60*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, + {"9282", 20, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9787", 25, ITDB_IPOD_MODEL_REGULAR_U2, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9268", 40, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"A079", 20, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"A127", 20, ITDB_IPOD_MODEL_COLOR_U2, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9830", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, /* First Generation Mini */ - {"9160", 4*GB, MODEL_TYPE_MINI, FIRST_GENERATION, 6}, - {"9436", 4*GB, MODEL_TYPE_MINI_BLUE, FIRST_GENERATION, 6}, - {"9435", 4*GB, MODEL_TYPE_MINI_PINK, FIRST_GENERATION, 6}, - {"9434", 4*GB, MODEL_TYPE_MINI_GREEN, FIRST_GENERATION, 6}, - {"9437", 4*GB, MODEL_TYPE_MINI_GOLD, FIRST_GENERATION, 6}, + {"9160", 4, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_FIRST, 6}, + {"9436", 4, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_FIRST, 6}, + {"9435", 4, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_FIRST, 6}, + {"9434", 4, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_FIRST, 6}, + {"9437", 4, ITDB_IPOD_MODEL_MINI_GOLD, ITDB_IPOD_GENERATION_FIRST, 6}, /* Second Generation Mini */ - {"9800", 4*GB, MODEL_TYPE_MINI, SECOND_GENERATION, 6}, - {"9802", 4*GB, MODEL_TYPE_MINI_BLUE, SECOND_GENERATION, 6}, - {"9804", 4*GB, MODEL_TYPE_MINI_PINK, SECOND_GENERATION, 6}, - {"9806", 4*GB, MODEL_TYPE_MINI_GREEN, SECOND_GENERATION, 6}, - {"9801", 6*GB, MODEL_TYPE_MINI, SECOND_GENERATION, 20}, - {"9803", 6*GB, MODEL_TYPE_MINI_BLUE, SECOND_GENERATION, 20}, - {"9805", 6*GB, MODEL_TYPE_MINI_PINK, SECOND_GENERATION, 20}, - {"9807", 6*GB, MODEL_TYPE_MINI_GREEN, SECOND_GENERATION, 20}, + {"9800", 4, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_SECOND, 6}, + {"9802", 4, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_SECOND, 6}, + {"9804", 4, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_SECOND, 6}, + {"9806", 4, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_SECOND, 6}, + {"9801", 6, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_SECOND, 20}, + {"9803", 6, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_SECOND, 20}, + {"9805", 6, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_SECOND, 20}, + {"9807", 6, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_SECOND, 20}, /* Photo / Fourth Generation */ /* Buttons are integrated into the "touch wheel". */ - {"9829", 30*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, - {"9585", 40*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, - {"9586", 60*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, - {"9830", 60*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, + {"9829", 30, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9585", 40, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9586", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"9830", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, /* Shuffle / Fourth Generation */ - {"9724", GB/2, MODEL_TYPE_SHUFFLE, FOURTH_GENERATION, 3}, - {"9725", GB, MODEL_TYPE_SHUFFLE, FOURTH_GENERATION, 3}, + {"9724", 0.5,ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_FOURTH, 3}, + {"9725", 1, ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_FOURTH, 3}, /* Nano / Fifth Generation */ /* Buttons are integrated into the "touch wheel". */ - {"A350", 1*GB, MODEL_TYPE_NANO_WHITE, FIFTH_GENERATION, 3}, - {"A352", 1*GB, MODEL_TYPE_NANO_BLACK, FIFTH_GENERATION, 3}, - {"A004", 2*GB, MODEL_TYPE_NANO_WHITE, FIFTH_GENERATION, 3}, - {"A099", 2*GB, MODEL_TYPE_NANO_BLACK, FIFTH_GENERATION, 3}, - {"A005", 4*GB, MODEL_TYPE_NANO_WHITE, FIFTH_GENERATION, 6}, - {"A107", 4*GB, MODEL_TYPE_NANO_BLACK, FIFTH_GENERATION, 6}, + {"A350", 1, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_FIFTH, 3}, + {"A352", 1, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_FIFTH, 3}, + {"A004", 2, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_FIFTH, 3}, + {"A099", 2, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_FIFTH, 3}, + {"A005", 4, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_FIFTH, 6}, + {"A107", 4, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_FIFTH, 6}, /* Video / Fifth Generation */ /* Buttons are integrated into the "touch wheel". */ - {"A002", 30*GB, MODEL_TYPE_VIDEO_WHITE, FIFTH_GENERATION, 50}, - {"A146", 30*GB, MODEL_TYPE_VIDEO_BLACK, FIFTH_GENERATION, 50}, - {"A003", 60*GB, MODEL_TYPE_VIDEO_WHITE, FIFTH_GENERATION, 50}, - {"A147", 60*GB, MODEL_TYPE_VIDEO_BLACK, FIFTH_GENERATION, 50}, + {"A002", 30, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_FIFTH, 50}, + {"A146", 30, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_FIFTH, 50}, + {"A003", 60, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_FIFTH, 50}, + {"A147", 60, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_FIFTH, 50}, /* HP iPods, need contributions for this table */ /* Buttons are integrated into the "touch wheel". */ - {"E436", 40*GB, MODEL_TYPE_REGULAR, FOURTH_GENERATION, 50}, - {"S492", 30*GB, MODEL_TYPE_COLOR, FOURTH_GENERATION, 50}, + {"E436", 40, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FOURTH, 50}, + {"S492", 30, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50}, /* No known model number -- create a Device/SysInfo file with * one entry, e.g.: ModelNumStr: Mmobile1 */ - {"mobile1", -1, MODEL_TYPE_MOBILE_1, MOBILE_GENERATION}, + {"mobile1", -1, ITDB_IPOD_MODEL_MOBILE_1, ITDB_IPOD_GENERATION_MOBILE}, {NULL, 0, 0, 0, 0} }; -#if 0 static const gchar *ipod_model_name_table [] = { - "Invalid", - "Unknown", - "Color", - "Color U2", - "Grayscale", - "Grayscale U2", - "Mini (Silver)", - "Mini (Blue)", - "Mini (Pink)", - "Mini (Green)", - "Mini (Gold)", - "Shuffle", - "Nano (White)", - "Nano (Black)", - "Video (White)", - "Video (Black)", - "Mobile (1)", + N_("Invalid"), + N_("Unknown"), + N_("Color"), + N_("Color U2"), + N_("Grayscale"), + N_("Grayscale U2"), + N_("Mini (Silver)"), + N_("Mini (Blue)"), + N_("Mini (Pink)"), + N_("Mini (Green)"), + N_("Mini (Gold)"), + N_("Shuffle"), + N_("Nano (White)"), + N_("Nano (Black)"), + N_("Video (White)"), + N_("Video (Black)"), + N_("Mobile (1)"), + NULL +}; + +static const gchar *ipod_generation_name_table [] = { + N_("Unknown"), + N_("First Generation"), + N_("Second Generation"), + N_("Third Generation"), + N_("Fourth Generation"), + N_("Fifth Generation"), + N_("Mobile Phone"), NULL }; -#endif static const Itdb_ArtworkFormat 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} + {ITDB_THUMB_COVER_SMALL, 56, 56, 1017}, + {ITDB_THUMB_COVER_LARGE, 140, 140, 1016}, + {ITDB_THUMB_PHOTO_SMALL, 42, 30, 1009}, + {ITDB_THUMB_PHOTO_LARGE, 130, 88, 1015}, + {ITDB_THUMB_PHOTO_FULL_SCREEN, 220, 176, 1013}, + {ITDB_THUMB_PHOTO_TV_SCREEN, 720, 480, 1019}, + {-1, -1, -1, -1} }; static const Itdb_ArtworkFormat 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} + {ITDB_THUMB_COVER_SMALL, 42, 42, 1031}, + {ITDB_THUMB_COVER_LARGE, 100, 100, 1027}, + {ITDB_THUMB_PHOTO_LARGE, 42, 37, 1032}, + {ITDB_THUMB_PHOTO_FULL_SCREEN, 176, 132, 1023}, + {-1, -1, -1, -1} }; static const Itdb_ArtworkFormat 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} + {ITDB_THUMB_COVER_SMALL, 100, 100, 1028}, + {ITDB_THUMB_COVER_LARGE, 200, 200, 1029}, + {ITDB_THUMB_PHOTO_SMALL, 50, 41, 1036}, + {ITDB_THUMB_PHOTO_LARGE, 130, 88, 1015}, + {ITDB_THUMB_PHOTO_FULL_SCREEN, 320, 240, 1024}, + {ITDB_THUMB_PHOTO_TV_SCREEN, 720, 480, 1019}, + {-1, -1, -1, -1} }; static const Itdb_ArtworkFormat ipod_mobile_1_artwork_info[] = { - {IPOD_COVER_SMALL, 50, 50, 2002}, - {IPOD_COVER_LARGE, 150, 150, 2003}, - {-1, -1, -1, -1} + {ITDB_THUMB_COVER_SMALL, 50, 50, 2002}, + {ITDB_THUMB_COVER_LARGE, 150, 150, 2003}, + {-1, -1, -1, -1} }; -/* This will be indexed using a value from the MODEL_TYPE enum */ +/* This will be indexed using a value from the ITDB_IPOD_MODEL enum */ static const Itdb_ArtworkFormat *ipod_artwork_info_table[] = { NULL, /* Invalid */ NULL, /* Unknown */ @@ -373,9 +381,16 @@ gchar *itdb_device_get_sysinfo (Itdb_Device *device, const gchar *field) } -/* Return Itdb_IpodModel entry for this iPod */ -G_GNUC_INTERNAL const Itdb_IpodModel * -itdb_device_get_ipod_model (Itdb_Device *device) +/** + * itdb_device_get_ipod_info: + * @device: an #Itdb_Device + * + * Retrieve the #Itdb_IpodInfo entry for this iPod + * + * Return value: the #Itdb_IpodInfo entry for this iPod + **/ +const Itdb_IpodInfo * +itdb_device_get_ipod_info (Itdb_Device *device) { gint i; gchar *model_num, *p; @@ -383,39 +398,40 @@ itdb_device_get_ipod_model (Itdb_Device *device) model_num = itdb_device_get_sysinfo (device, "ModelNumStr"); if (!model_num) - return &ipod_model_table[0]; + return &ipod_info_table[0]; p = model_num; if(isalpha(model_num[0])) p++; - for(i=2; ipod_model_table[i].model_number != NULL; i++) + for(i=2; ipod_info_table[i].model_number != NULL; i++) { - if(g_strncasecmp(p, ipod_model_table[i].model_number, 4) == 0) + if(g_strncasecmp(p, ipod_info_table[i].model_number, 4) == 0) { g_free(model_num); - return &ipod_model_table[i]; + return &ipod_info_table[i]; } } g_free(model_num); - return &ipod_model_table[1]; + return &ipod_info_table[1]; } + /* Return supported artwork formats supported by this iPod */ G_GNUC_INTERNAL const Itdb_ArtworkFormat * itdb_device_get_artwork_formats (Itdb_Device *device) { - const Itdb_IpodModel *model; + const Itdb_IpodInfo *info; g_return_val_if_fail (device, NULL); - model = itdb_device_get_ipod_model (device); + info = itdb_device_get_ipod_info (device); - g_return_val_if_fail (model, NULL); + g_return_val_if_fail (info, NULL); - return ipod_artwork_info_table[model->model_type]; + return ipod_artwork_info_table[info->ipod_model]; } @@ -559,3 +575,71 @@ itdb_device_autodetect_endianess (Itdb_Device *device) device->byte_order = byte_order; } + +/*------------------------------------------------------------------*\ + * * + * Functions for applications to obtain general infos about various * + * iPods. * + * * +\*------------------------------------------------------------------*/ + +/** + * itdb_info_get_ipod_info_table: + * + * Return a pointer to the start of valid iPod model descriptions, + * which is an array of #Itdb_IpodInfo entries. + * + * Return value: a pointer to the array of #Itdb_IpodInfo entries. + **/ +const Itdb_IpodInfo *itdb_info_get_ipod_info_table (void) +{ + return &ipod_info_table[2]; +} + + +/** + * itdb_info_get_ipod_model_name: + * + * Return the iPod's generic model name, like "Color", "Nano"... + * + * Return value: a pointer to the model name. This is a static string + * and must not be g_free()d. + **/ +const gchar *itdb_info_get_ipod_model_name (Itdb_IpodModel model) +{ + gint i=0; + + /* Instead of returning ipod_model_name_table[model] directly, + verify if @model is valid */ + while (ipod_model_name_table[i]) + { + if (i==model) return gettext (ipod_model_name_table[i]); + ++i; + } + return NULL; +} + + +/** + * itdb_info_get_ipod_generation_name: + * + * Return the iPod's generic generation name, like "First Generation", + * "Mobile Phone"... + * + * Return value: a pointer to the generation name. This is a static + * string and must not be g_free()d. + **/ +const gchar *itdb_info_get_ipod_generation_name (Itdb_IpodGeneration generation) +{ + gint i=0; + + /* Instead of returning ipod_generation_name_table[generation] + directly, verify if @generation is valid */ + while (ipod_generation_name_table[i]) + { + if (i==generation) + return gettext (ipod_generation_name_table[i]); + ++i; + } + return NULL; +} |
