Revision: 1695
http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1695&view=rev
Author: jcsjcs
Date: 2007-09-15 08:33:37 -0700 (Sat, 15 Sep 2007)
Log Message:
-----------
* src/itdb_device.c:
Re-organized the representation of iPod models -- instead of 1st
to 7th generation more well-known names like "iPod Nano 1G",
"iPod Nano 2G"... are used.
Added untested support for iPod Classic Artwork. Not clear which
thumbnail type is used for what.
src/itdb_track.c (itdb_track_set_thumbnails_internal):
Please note: itdb_track_set_thumbnails() needs to be thought
over to make sure all thumbnail types are added properly. Please
see note in itdb_track.c for details.
src/itdb.h: Added symbols for the new representation indicated
above: ITDB_IPOD_GENERATION_*, ITDB_IPOD_MODEL_*
Modified Paths:
--------------
libgpod/trunk/ChangeLog
libgpod/trunk/docs/reference/tmpl/artwork.sgml
libgpod/trunk/docs/reference/tmpl/device.sgml
libgpod/trunk/src/itdb.h
libgpod/trunk/src/itdb_device.c
libgpod/trunk/src/itdb_track.c
Modified: libgpod/trunk/ChangeLog
===================================================================
--- libgpod/trunk/ChangeLog 2007-09-15 14:18:11 UTC (rev 1694)
+++ libgpod/trunk/ChangeLog 2007-09-15 15:33:37 UTC (rev 1695)
@@ -1,3 +1,21 @@
+2007-09-15 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+ * src/itdb_device.c:
+ Re-organized the representation of iPod models -- instead of 1st
+ to 7th generation more well-known names like "iPod Nano 1G",
+ "iPod Nano 2G"... are used.
+
+ Added untested support for iPod Classic Artwork. Not clear which
+ thumbnail type is used for what.
+
+ src/itdb_track.c (itdb_track_set_thumbnails_internal):
+ Please note: itdb_track_set_thumbnails() needs to be thought
+ over to make sure all thumbnail types are added properly. Please
+ see note in itdb_track.c for details.
+
+ src/itdb.h: Added symbols for the new representation indicated
+ above: ITDB_IPOD_GENERATION_*, ITDB_IPOD_MODEL_*
+
2007-09-08 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/db-image-parser.c
Modified: libgpod/trunk/docs/reference/tmpl/artwork.sgml
===================================================================
--- libgpod/trunk/docs/reference/tmpl/artwork.sgml 2007-09-15 14:18:11 UTC
(rev 1694)
+++ libgpod/trunk/docs/reference/tmpl/artwork.sgml 2007-09-15 15:33:37 UTC
(rev 1695)
@@ -76,8 +76,8 @@
@ITDB_THUMB_PHOTO_TV_SCREEN:
@ITDB_THUMB_COVER_XLARGE:
@ITDB_THUMB_COVER_MEDIUM:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
<!-- ##### FUNCTION itdb_artwork_new ##### -->
<para>
Modified: libgpod/trunk/docs/reference/tmpl/device.sgml
===================================================================
--- libgpod/trunk/docs/reference/tmpl/device.sgml 2007-09-15 14:18:11 UTC
(rev 1694)
+++ libgpod/trunk/docs/reference/tmpl/device.sgml 2007-09-15 15:33:37 UTC
(rev 1695)
@@ -168,9 +168,22 @@
@ITDB_IPOD_GENERATION_SECOND:
@ITDB_IPOD_GENERATION_THIRD:
@ITDB_IPOD_GENERATION_FOURTH:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
@ITDB_IPOD_GENERATION_FIFTH:
@ITDB_IPOD_GENERATION_SIXTH:
[EMAIL PROTECTED]:
<!-- ##### STRUCT Itdb_IpodInfo ##### -->
<para>
@@ -215,6 +228,15 @@
@ITDB_IPOD_MODEL_NANO_GREEN:
@ITDB_IPOD_MODEL_NANO_PINK:
@ITDB_IPOD_MODEL_IPHONE_1:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
<!-- ##### STRUCT Itdb_ArtworkFormat ##### -->
<para>
@@ -226,4 +248,5 @@
@height:
@correlation_id:
@format:
[EMAIL PROTECTED]:
Modified: libgpod/trunk/src/itdb.h
===================================================================
--- libgpod/trunk/src/itdb.h 2007-09-15 14:18:11 UTC (rev 1694)
+++ libgpod/trunk/src/itdb.h 2007-09-15 15:33:37 UTC (rev 1695)
@@ -80,9 +80,23 @@
ITDB_IPOD_GENERATION_SECOND,
ITDB_IPOD_GENERATION_THIRD,
ITDB_IPOD_GENERATION_FOURTH,
+ ITDB_IPOD_GENERATION_PHOTO,
+ ITDB_IPOD_GENERATION_MOBILE,
+ ITDB_IPOD_GENERATION_MINI_1,
+ ITDB_IPOD_GENERATION_MINI_2,
+ ITDB_IPOD_GENERATION_SHUFFLE_1,
+ ITDB_IPOD_GENERATION_SHUFFLE_2,
+ ITDB_IPOD_GENERATION_SHUFFLE_3,
+ ITDB_IPOD_GENERATION_NANO_1,
+ ITDB_IPOD_GENERATION_NANO_2,
+ ITDB_IPOD_GENERATION_NANO_3,
+ ITDB_IPOD_GENERATION_VIDEO_1,
+ ITDB_IPOD_GENERATION_VIDEO_2,
+ ITDB_IPOD_GENERATION_CLASSIC_1,
+ ITDB_IPOD_GENERATION_TOUCH_1,
+ /* The following 2 are no longer in use and should be removed */
ITDB_IPOD_GENERATION_FIFTH,
ITDB_IPOD_GENERATION_SIXTH,
- ITDB_IPOD_GENERATION_MOBILE
} Itdb_IpodGeneration;
typedef enum {
@@ -108,7 +122,17 @@
ITDB_IPOD_MODEL_NANO_BLUE,
ITDB_IPOD_MODEL_NANO_GREEN,
ITDB_IPOD_MODEL_NANO_PINK,
- ITDB_IPOD_MODEL_IPHONE_1
+ ITDB_IPOD_MODEL_NANO_RED,
+ ITDB_IPOD_MODEL_IPHONE_1,
+ ITDB_IPOD_MODEL_SHUFFLE_SILVER,
+ ITDB_IPOD_MODEL_SHUFFLE_PINK,
+ ITDB_IPOD_MODEL_SHUFFLE_BLUE,
+ ITDB_IPOD_MODEL_SHUFFLE_GREEN,
+ ITDB_IPOD_MODEL_SHUFFLE_ORANGE,
+ ITDB_IPOD_MODEL_SHUFFLE_PURPLE,
+ ITDB_IPOD_MODEL_CLASSIC_SILVER,
+ ITDB_IPOD_MODEL_CLASSIC_BLACK,
+ ITDB_IPOD_MODEL_TOUCH_BLACK,
} Itdb_IpodModel;
struct _Itdb_IpodInfo {
Modified: libgpod/trunk/src/itdb_device.c
===================================================================
--- libgpod/trunk/src/itdb_device.c 2007-09-15 14:18:11 UTC (rev 1694)
+++ libgpod/trunk/src/itdb_device.c 2007-09-15 15:33:37 UTC (rev 1695)
@@ -80,81 +80,114 @@
{"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, 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},
+ {"9160", 4, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_MINI_1, 6},
+ {"9436", 4, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_MINI_1, 6},
+ {"9435", 4, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_MINI_1, 6},
+ {"9434", 4, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_MINI_1, 6},
+ {"9437", 4, ITDB_IPOD_MODEL_MINI_GOLD, ITDB_IPOD_GENERATION_MINI_1,
6},
/* Second Generation Mini */
- {"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},
+ {"9800", 4, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_MINI_2, 6},
+ {"9802", 4, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_MINI_2, 6},
+ {"9804", 4, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_MINI_2, 6},
+ {"9806", 4, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_MINI_2, 6},
+ {"9801", 6, ITDB_IPOD_MODEL_MINI, ITDB_IPOD_GENERATION_MINI_2, 20},
+ {"9803", 6, ITDB_IPOD_MODEL_MINI_BLUE, ITDB_IPOD_GENERATION_MINI_2, 20},
+ {"9805", 6, ITDB_IPOD_MODEL_MINI_PINK, ITDB_IPOD_GENERATION_MINI_2, 20},
+ {"9807", 6, ITDB_IPOD_MODEL_MINI_GREEN, ITDB_IPOD_GENERATION_MINI_2,
20},
/* Photo / Fourth Generation */
/* Buttons are integrated into the "touch wheel". */
- {"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},
+ {"A079", 20, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"A127", 20, ITDB_IPOD_MODEL_COLOR_U2, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"9829", 30, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"9585", 40, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"9830", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"9586", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ {"9830", 60, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
/* Shuffle / Fourth Generation */
- {"9724", 0.5,ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_FOURTH, 3},
- {"9725", 1, ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_FOURTH, 3},
+ {"9724", 0.5,ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_SHUFFLE_1,
3},
+ {"9725", 1, ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_SHUFFLE_1,
3},
/* Shuffle / Sixth Generation */
/* Square, connected to computer via cable */
- {"A564", 1, ITDB_IPOD_MODEL_SHUFFLE, ITDB_IPOD_GENERATION_SIXTH, 3},
+ {"A564", 1, ITDB_IPOD_MODEL_SHUFFLE_SILVER,
ITDB_IPOD_GENERATION_SHUFFLE_2, 3},
+ {"A947", 1, ITDB_IPOD_MODEL_SHUFFLE_PINK,
ITDB_IPOD_GENERATION_SHUFFLE_2, 3},
+ {"A949", 1, ITDB_IPOD_MODEL_SHUFFLE_BLUE,
ITDB_IPOD_GENERATION_SHUFFLE_2, 3},
+ {"A951", 1, ITDB_IPOD_MODEL_SHUFFLE_GREEN,
ITDB_IPOD_GENERATION_SHUFFLE_2, 3},
+ {"A953", 1, ITDB_IPOD_MODEL_SHUFFLE_ORANGE,
ITDB_IPOD_GENERATION_SHUFFLE_2, 3},
+ /* Shuffle / Seventh Generation */
+ /* Square, connected to computer via cable -- look identicaly to
+ * Sixth Generation*/
+ {"B225", 1, ITDB_IPOD_MODEL_SHUFFLE_SILVER,
ITDB_IPOD_GENERATION_SHUFFLE_3, 3},
+ {"B233", 1, ITDB_IPOD_MODEL_SHUFFLE_PURPLE,
ITDB_IPOD_GENERATION_SHUFFLE_3, 3},
+ {"B227", 1, ITDB_IPOD_MODEL_SHUFFLE_BLUE,
ITDB_IPOD_GENERATION_SHUFFLE_3, 3},
+ {"B229", 1, ITDB_IPOD_MODEL_SHUFFLE_GREEN,
ITDB_IPOD_GENERATION_SHUFFLE_3, 3},
- /* Nano / Fifth Generation */
+ /* Nano / Fifth Generation (first nano generation) */
/* Buttons are integrated into the "touch wheel". */
- {"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},
+ {"A350", 1, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_NANO_1,
3},
+ {"A352", 1, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_NANO_1,
3},
+ {"A004", 2, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_NANO_1,
3},
+ {"A099", 2, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_NANO_1,
3},
+ {"A005", 4, ITDB_IPOD_MODEL_NANO_WHITE, ITDB_IPOD_GENERATION_NANO_1,
6},
+ {"A107", 4, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_NANO_1,
6},
/* Video / Fifth Generation */
/* Buttons are integrated into the "touch wheel". */
- {"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},
+ {"A002", 30, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_VIDEO_1,
50},
+ {"A146", 30, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_VIDEO_1,
50},
+ {"A003", 60, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_VIDEO_1,
50},
+ {"A147", 60, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_VIDEO_1,
50},
/* Video / Sixth Generation */
/* Pretty much identical to fifth generation with better display,
* extended battery operation time and gap-free playback */
- {"A444", 30, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_SIXTH, 50},
- {"A446", 30, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_SIXTH, 50},
- {"A664", 30, ITDB_IPOD_MODEL_VIDEO_U2, ITDB_IPOD_GENERATION_SIXTH, 50},
- {"A448", 80, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_SIXTH, 50},
- {"A450", 80, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_SIXTH, 50},
+ {"A444", 30, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_VIDEO_2,
50},
+ {"A446", 30, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_VIDEO_2,
50},
+ {"A664", 30, ITDB_IPOD_MODEL_VIDEO_U2, ITDB_IPOD_GENERATION_VIDEO_2,
50},
+ {"A448", 80, ITDB_IPOD_MODEL_VIDEO_WHITE, ITDB_IPOD_GENERATION_VIDEO_2,
50},
+ {"A450", 80, ITDB_IPOD_MODEL_VIDEO_BLACK, ITDB_IPOD_GENERATION_VIDEO_2,
50},
- /* Nano / Sixth Generation */
+ /* Nano / Sixth Generation (second nano generation) */
/* Pretty much identical to fifth generation with better display,
* extended battery operation time and gap-free playback */
- {"A477", 2, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_SIXTH, 3},
- {"A426", 4, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_SIXTH, 6},
- {"A428", 4, ITDB_IPOD_MODEL_NANO_BLUE, ITDB_IPOD_GENERATION_SIXTH, 6},
- {"A487", 4, ITDB_IPOD_MODEL_NANO_GREEN, ITDB_IPOD_GENERATION_SIXTH, 6},
- {"A489", 4, ITDB_IPOD_MODEL_NANO_PINK, ITDB_IPOD_GENERATION_SIXTH, 6},
- {"A497", 8, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_SIXTH, 14},
+ {"A477", 2, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_NANO_2,
3},
+ {"A426", 4, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_NANO_2,
6},
+ {"A428", 4, ITDB_IPOD_MODEL_NANO_BLUE, ITDB_IPOD_GENERATION_NANO_2,
6},
+ {"A487", 4, ITDB_IPOD_MODEL_NANO_GREEN, ITDB_IPOD_GENERATION_NANO_2,
6},
+ {"A489", 4, ITDB_IPOD_MODEL_NANO_PINK, ITDB_IPOD_GENERATION_NANO_2,
6},
+ {"A497", 8, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_NANO_2,
14},
/* HP iPods, need contributions for this table */
/* Buttons are integrated into the "touch wheel". */
{"E436", 40, ITDB_IPOD_MODEL_REGULAR, ITDB_IPOD_GENERATION_FOURTH, 50},
- {"S492", 30, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_FOURTH, 50},
+ {"S492", 30, ITDB_IPOD_MODEL_COLOR, ITDB_IPOD_GENERATION_PHOTO, 50},
+ /* iPod Classic G1 */
+ /* First generation with "cover flow" */
+ {"B029", 80, ITDB_IPOD_MODEL_CLASSIC_SILVER,
ITDB_IPOD_GENERATION_CLASSIC_1, 50},
+ {"B147", 80, ITDB_IPOD_MODEL_CLASSIC_BLACK,
ITDB_IPOD_GENERATION_CLASSIC_1, 50},
+ {"B145", 160, ITDB_IPOD_MODEL_CLASSIC_SILVER,
ITDB_IPOD_GENERATION_CLASSIC_1, 50},
+ {"B150", 160, ITDB_IPOD_MODEL_CLASSIC_BLACK,
ITDB_IPOD_GENERATION_CLASSIC_1, 50},
+
+ /* iPod nano video G1 (Third Nano Generation) */
+ /* First generation of video support for nano */
+ {"A978", 4, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_NANO_3,
6},
+ {"A980", 8, ITDB_IPOD_MODEL_NANO_SILVER, ITDB_IPOD_GENERATION_NANO_3,
14},
+ {"B261", 8, ITDB_IPOD_MODEL_NANO_BLACK, ITDB_IPOD_GENERATION_NANO_3,
14},
+ {"B249", 8, ITDB_IPOD_MODEL_NANO_BLUE, ITDB_IPOD_GENERATION_NANO_3,
14},
+ {"B253", 8, ITDB_IPOD_MODEL_NANO_GREEN, ITDB_IPOD_GENERATION_NANO_3,
14},
+ {"B257", 8, ITDB_IPOD_MODEL_NANO_RED, ITDB_IPOD_GENERATION_NANO_3,
14},
+
+ /* iPod touch G1 */
+ /* With touch screen */
+ {"A623", 8, ITDB_IPOD_MODEL_TOUCH_BLACK,
ITDB_IPOD_GENERATION_TOUCH_1, 14},
+ {"A627", 16, ITDB_IPOD_MODEL_NANO_SILVER,
ITDB_IPOD_GENERATION_TOUCH_1, 28},
+
+
/* No known model number -- create a Device/SysInfo file with
* one entry, e.g.:
ModelNumStr: Mmobile1
@@ -191,19 +224,41 @@
N_("Nano (Green)"),
N_("Nano (Pink)"),
N_("iPhone (1)"),
+ N_("Shuffle (Silver)"),
+ N_("Shuffle (Pink)"),
+ N_("Shuffle (Blue)"),
+ N_("Shuffle (Green)"),
+ N_("Shuffle (Orange)"),
+ N_("Shuffle (Purple)"),
+ N_("Classic (Silver)"),
+ N_("Classic (Black)"),
+ N_("Touch (Black)"),
NULL
};
/* One entry for each of Itdb_IpodGeneration (itdb.h) */
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_("Sixth Generation"),
- N_("Mobile Phone"),
+ N_("Regular (1st Gen.)"),
+ N_("Regular (2nd Gen.)"),
+ N_("Regular (3rd Gen.)"),
+ N_("Regular (4th Gen.)"),
+ N_("Photo"),
+ N_("Mobile Phones"),
+ N_("Mini (1st Gen.)"),
+ N_("Mini (2nd Gen.)"),
+ N_("Shuffle (1st Gen.)"),
+ N_("Shuffle (2nd Gen.)"),
+ N_("Shuffle (3rd Gen.)"),
+ N_("Nano (1st Gen.)"),
+ N_("Nano (2nd Gen.)"),
+ N_("Nano Video (Read-Only)"),
+ N_("Video (1st Gen.)"),
+ N_("Video (2nd Gen.)"),
+ N_("Classic (Read-Only)"),
+ N_("Touch (Reead-Only)"),
+ N_("Unused"),
+ N_("Unused"),
NULL
};
@@ -251,33 +306,23 @@
{-1, -1, -1, -1, -1}
};
+static const Itdb_ArtworkFormat ipod_classic_1_artwork_info[] = {
+ /* officially 55x55 -- verify! */
+ {ITDB_THUMB_COVER_XSMALL, 56, 56, 1061, THUMB_FORMAT_RGB565_LE},
+ {ITDB_THUMB_COVER_MEDIUM, 128, 128, 1055, THUMB_FORMAT_RGB565_LE},
+ {ITDB_THUMB_COVER_XLARGE, 320, 320, 1060, THUMB_FORMAT_RGB565_LE},
-/* 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 */
- ipod_photo_artwork_info, /* Color */
- ipod_photo_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) */
- ipod_mobile_1_artwork_info,/* Mobile (1) */
- ipod_video_artwork_info, /* Video U2 */
- ipod_nano_artwork_info, /* Nano (Silver) */
- ipod_nano_artwork_info, /* Nano (Blue) */
- ipod_nano_artwork_info, /* Nano (Green) */
- ipod_nano_artwork_info, /* Nano (Pink) */
- ipod_iphone_1_artwork_info,/* iPhone (1) */
- NULL
+ /* not sure if the THUMB_FORMAT is correct */
+ {ITDB_THUMB_PHOTO_TV_SCREEN, 720, 480, 1067, THUMB_FORMAT_UYVY_BE},
+ /* not sure if the THUMB_FORMAT is correct */
+ {ITDB_THUMB_PHOTO_FULL_SCREEN,320, 240, 1064, THUMB_FORMAT_RGB565_LE},
+ {ITDB_THUMB_PHOTO_SMALL, 64, 64, 1066, THUMB_FORMAT_RGB565_LE},
+ {ITDB_THUMB_PHOTO_LARGE, 320, 320, 1060, THUMB_FORMAT_RGB565_LE},
+/* These are the same as for the iPod video... -- labeled by the iPod as
+ "chapter images" */
+ {ITDB_THUMB_COVER_SMALL, 100, 100, 1028, THUMB_FORMAT_RGB565_LE},
+ {ITDB_THUMB_COVER_LARGE, 200, 200, 1029, THUMB_FORMAT_RGB565_LE},
+ {-1, -1, -1, -1, -1}
};
@@ -599,7 +644,49 @@
g_return_val_if_fail (info, NULL);
- return ipod_artwork_info_table[info->ipod_model];
+ switch (info->ipod_generation)
+ {
+ case ITDB_IPOD_GENERATION_UNKNOWN:
+ case ITDB_IPOD_GENERATION_FIRST:
+ case ITDB_IPOD_GENERATION_SECOND:
+ case ITDB_IPOD_GENERATION_THIRD:
+ case ITDB_IPOD_GENERATION_FOURTH:
+ return NULL;
+ case ITDB_IPOD_GENERATION_PHOTO:
+ return ipod_photo_artwork_info;
+ case ITDB_IPOD_GENERATION_MOBILE:
+ switch (info->ipod_model)
+ {
+ case ITDB_IPOD_MODEL_MOBILE_1:
+ return ipod_mobile_1_artwork_info;
+ case ITDB_IPOD_MODEL_IPHONE_1:
+ return ipod_iphone_1_artwork_info;
+ default:
+ g_return_val_if_reached (NULL);
+ }
+ case ITDB_IPOD_GENERATION_MINI_1:
+ case ITDB_IPOD_GENERATION_MINI_2:
+ case ITDB_IPOD_GENERATION_SHUFFLE_1:
+ case ITDB_IPOD_GENERATION_SHUFFLE_2:
+ case ITDB_IPOD_GENERATION_SHUFFLE_3:
+ return NULL;
+ case ITDB_IPOD_GENERATION_NANO_1:
+ case ITDB_IPOD_GENERATION_NANO_2:
+ return ipod_nano_artwork_info;
+ case ITDB_IPOD_GENERATION_NANO_3:
+ return NULL; /* FIXME: */
+ case ITDB_IPOD_GENERATION_VIDEO_1:
+ case ITDB_IPOD_GENERATION_VIDEO_2:
+ return ipod_video_artwork_info;
+ case ITDB_IPOD_GENERATION_CLASSIC_1:
+ return ipod_classic_1_artwork_info;
+ case ITDB_IPOD_GENERATION_TOUCH_1:
+ return NULL; /* FIXME: */
+ case ITDB_IPOD_GENERATION_FIFTH:
+ case ITDB_IPOD_GENERATION_SIXTH:
+ return NULL;
+ }
+ g_return_val_if_reached (NULL);
}
Modified: libgpod/trunk/src/itdb_track.c
===================================================================
--- libgpod/trunk/src/itdb_track.c 2007-09-15 14:18:11 UTC (rev 1694)
+++ libgpod/trunk/src/itdb_track.c 2007-09-15 15:33:37 UTC (rev 1695)
@@ -400,48 +400,85 @@
gint rotation,
GError **error)
{
+ /* FIXME: this looks like it would work, but the problem is that
+ * gtkpod calls this function mostly with tracks that are not yet
+ * part of an iTunesDB. This means only the SMALL and LARGE thumbs
+ * are being added.
+ *
+ * One solution would be to add all kinds of cover thumbs and weed
+ * out the ones not supported when the ArtworkDB is written.
+ *
+ * Suggestions welcome!
+ */
+
gboolean result = FALSE;
+ ItdbThumbType thumbtypes[] =
+ { ITDB_THUMB_COVER_SMALL,
+ ITDB_THUMB_COVER_LARGE,
+ ITDB_THUMB_COVER_XLARGE,
+ ITDB_THUMB_COVER_MEDIUM,
+ ITDB_THUMB_COVER_SMEDIUM,
+ ITDB_THUMB_COVER_XSMALL,
+ -1 };
+ ItdbThumbType *thumbtype;
+ const Itdb_ArtworkFormat *formats=NULL;
g_return_val_if_fail (track, FALSE);
+ g_return_val_if_fail (filename || image_data || pixbuf, FALSE);
+ if (track->itdb && track->itdb->device)
+ {
+ formats = itdb_device_get_artwork_formats (track->itdb->device);
+ }
+
itdb_artwork_remove_thumbnails (track->artwork);
- if (filename)
+ for (thumbtype=thumbtypes; *thumbtype!=-1; ++thumbtype)
{
- result = itdb_artwork_add_thumbnail (track->artwork,
- ITDB_THUMB_COVER_SMALL,
- filename, rotation, error);
- if (result == TRUE)
+ if (formats)
+ { /* check if thumbnail type is supported */
+ const Itdb_ArtworkFormat *imgp=formats;
+ for (imgp=formats; imgp->type!=-1; ++imgp)
+ {
+ if (imgp->type == *thumbtype) break;
+ }
+ if (imgp->type == -1)
+ {
+ continue; /* for (thumbtype=...) */
+ }
+ }
+ else
+ { /* only add COVER_SMALL and COVER_LARGE */
+ if ((*thumbtype != ITDB_THUMB_COVER_SMALL) &&
+ (*thumbtype != ITDB_THUMB_COVER_LARGE))
+ {
+ continue; /* for (thumbtype=...) */
+ }
+ }
+
+ if (filename)
+ {
result = itdb_artwork_add_thumbnail (track->artwork,
- ITDB_THUMB_COVER_LARGE,
+ *thumbtype,
filename, rotation, error);
- }
- if (image_data)
- {
- result = itdb_artwork_add_thumbnail_from_data (track->artwork,
- ITDB_THUMB_COVER_SMALL,
- image_data,
- image_data_len,
- rotation, error);
- if (result == TRUE)
+ }
+ if (image_data)
+ {
result = itdb_artwork_add_thumbnail_from_data (track->artwork,
-
ITDB_THUMB_COVER_LARGE,
+ *thumbtype,
image_data,
image_data_len,
rotation, error);
- }
- if (pixbuf)
- {
- result = itdb_artwork_add_thumbnail_from_pixbuf (track->artwork,
-
ITDB_THUMB_COVER_SMALL,
- pixbuf, rotation,
- error);
- if (result == TRUE) {
- result = itdb_artwork_add_thumbnail_from_pixbuf (track->artwork,
-
ITDB_THUMB_COVER_LARGE,
- pixbuf, rotation,
- error);
+ }
+ if (pixbuf)
+ {
+ result = itdb_artwork_add_thumbnail_from_pixbuf (track->artwork,
+ *thumbtype,
+ pixbuf, rotation,
+ error);
}
+ if (result == FALSE)
+ break; /* for (thumbtype=...) */
}
if (result == TRUE)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2