Update of /cvsroot/gtkpod/gtkpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv4269/src
Modified Files:
details.c display.h display_itdb.c file.c misc.c misc.h
misc_conversion.c misc_track.c
Log Message:
* gtkpod.glade
src/details.c
src/display.h
src/display_itdb.c
src/file.c
src/misc.c
src/misc.h
src/misc_conversion.c
src/misc_track.c: Mario Rossi's patch to display and select
TV-related data fields and the media type of a given track.
Index: details.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/details.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- details.c 26 Nov 2006 14:54:27 -0000 1.17
+++ details.c 16 Jan 2007 14:08:54 -0000 1.18
@@ -172,6 +172,22 @@
}
+static void details_combobox_changed (GtkComboBox *combobox,
+ Detail *detail)
+{
+ T_item item;
+
+ g_return_if_fail (combobox);
+
+ item = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (combobox),
+ "details_item"));
+
+ g_return_if_fail ((item > 0) && (item < T_ITEM_NUM));
+
+ details_get_item (detail, item, FALSE);
+}
+
+
static void details_writethrough_toggled (GtkCheckButton *button,
Detail *detail)
{
@@ -617,6 +633,11 @@
case T_TIME_PLAYED:
case T_TIME_MODIFIED:
case T_TIME_RELEASED:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
+ case T_SEASON_NR:
+ case T_EPISODE_NR:
buf = g_strdup_printf ("details_entry_%d", item);
w = gtkpod_xml_get_widget (detail->xml, buf);
g_signal_connect (w, "activate",
@@ -647,6 +668,13 @@
G_CALLBACK (details_text_changed),
detail);
break;
+ case T_MEDIA_TYPE:
+ buf = g_strdup_printf ("details_combobox_%d", item);
+ w = gtkpod_xml_get_widget (detail->xml, buf);
+ g_signal_connect (w, "changed",
+ G_CALLBACK (details_combobox_changed),
+ detail);
+ break;
case T_ALL:
case T_ITEM_NUM:
/* cannot happen because of assertion above */
@@ -668,7 +696,7 @@
GtkTextBuffer *tb;
GtkWidget *w = NULL;
gchar *text;
- gchar *entry, *checkbutton, *textview;
+ gchar *entry, *checkbutton, *textview, *combobox;
g_return_if_fail (detail);
g_return_if_fail ((item > 0) && (item < T_ITEM_NUM));
@@ -676,6 +704,7 @@
entry = g_strdup_printf ("details_entry_%d", item);
checkbutton = g_strdup_printf ("details_checkbutton_%d", item);
textview = g_strdup_printf ("details_textview_%d", item);
+ combobox = g_strdup_printf ("details_combobox_%d", item);
if (track != NULL)
{
@@ -728,6 +757,11 @@
case T_TIME_PLAYED:
case T_TIME_MODIFIED:
case T_TIME_RELEASED:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
+ case T_SEASON_NR:
+ case T_EPISODE_NR:
w = gtkpod_xml_get_widget (detail->xml, entry);
g_signal_handlers_block_by_func (w, details_text_changed, detail);
gtk_entry_set_text (GTK_ENTRY (w), text);
@@ -799,6 +833,18 @@
FALSE);
}
break;
+ case T_MEDIA_TYPE:
+ if ((w = gtkpod_xml_get_widget (detail->xml, combobox)))
+ {
+ if (track)
+ {
+ gint gui = dbToGUI(track->mediatype);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (w), gui);
+ }
+ else
+ gtk_combo_box_set_active (GTK_COMBO_BOX (w), 0);
+ }
+ break;
case T_ALL:
case T_ITEM_NUM:
/* cannot happen because of assertion above */
@@ -821,7 +867,7 @@
gboolean assumechanged)
{
GtkWidget *w = NULL;
- gchar *entry, *checkbutton, *textview;
+ gchar *entry, *checkbutton, *textview, *combobox;
gboolean changed = FALSE;
ExtraTrackData *etr;
Track *track;
@@ -837,6 +883,7 @@
entry = g_strdup_printf ("details_entry_%d", item);
checkbutton = g_strdup_printf ("details_checkbutton_%d", item);
textview = g_strdup_printf ("details_textview_%d", item);
+ combobox = g_strdup_printf ("details_combobox_%d", item);
switch (item)
{
@@ -868,6 +915,11 @@
case T_STARTTIME:
case T_STOPTIME:
case T_SOUNDCHECK:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
+ case T_SEASON_NR:
+ case T_EPISODE_NR:
if ((w = gtkpod_xml_get_widget (detail->xml, entry)))
{
const gchar *text;
@@ -983,6 +1035,20 @@
}
}
break;
+ case T_MEDIA_TYPE:
+ if ((w = gtkpod_xml_get_widget (detail->xml, combobox)))
+ {
+ gint active;
+ active = gtk_combo_box_get_active (GTK_COMBO_BOX (w));
+ guint32 mediatype_db = guiToDB(active);
+
+ if (track->mediatype != mediatype_db)
+ {
+ track->mediatype = mediatype_db;
+ changed = TRUE;
+ }
+ }
+ break;
case T_TRANSFERRED:
case T_PC_PATH:
case T_IPOD_PATH:
Index: display.h
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/display.h,v
retrieving revision 1.117
retrieving revision 1.118
diff -u -d -r1.117 -r1.118
--- display.h 21 Oct 2006 10:21:53 -0000 1.117
+++ display.h 16 Jan 2007 14:08:55 -0000 1.118
@@ -242,6 +242,12 @@
T_REMEMBER_PLAYBACK_POSITION,
T_SKIP_WHEN_SHUFFLING,
T_THUMB_PATH, /* 40 */
+ T_MEDIA_TYPE,
+ T_TV_SHOW,
+ T_TV_EPISODE,
+ T_TV_NETWORK,
+ T_SEASON_NR, /* 45 */
+ T_EPISODE_NR,
T_ITEM_NUM,
} T_item;
Index: display_itdb.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/display_itdb.c,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- display_itdb.c 22 Nov 2006 15:48:19 -0000 1.60
+++ display_itdb.c 16 Jan 2007 14:08:55 -0000 1.61
@@ -789,6 +789,9 @@
if (!track->podcastrss) track->podcastrss = g_strdup ("");
if (!track->subtitle) track->subtitle = g_strdup ("");
if (!track->ipod_path) track->ipod_path = g_strdup ("");
+ if (!track->tvshow) track->tvshow = g_strdup("");
+ if (!track->tvepisode) track->tvepisode = g_strdup("");
+ if (!track->tvnetwork) track->tvnetwork = g_strdup("");
if (!etr->pc_path_utf8) etr->pc_path_utf8 = g_strdup ("");
if (!etr->pc_path_locale) etr->pc_path_locale = g_strdup ("");
if (!etr->thumb_path_utf8) etr->thumb_path_utf8 = g_strdup ("");
Index: file.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/file.c,v
retrieving revision 1.194
retrieving revision 1.195
diff -u -d -r1.194 -r1.195
--- file.c 16 Jan 2007 13:05:38 -0000 1.194
+++ file.c 16 Jan 2007 14:08:55 -0000 1.195
@@ -823,6 +823,15 @@
g_free (to->subtitle);
to->subtitle = g_strdup (from->subtitle);
+ g_free (to->tvshow);
+ to->tvshow = g_strdup (from->tvshow);
+
+ g_free (to->tvepisode);
+ to->tvepisode = g_strdup (from->tvepisode);
+
+ g_free (to->tvnetwork);
+ to->tvnetwork = g_strdup (from->tvnetwork);
+
g_free (eto->thumb_path_utf8);
eto->thumb_path_utf8 = g_strdup (efrom->thumb_path_utf8);
Index: misc.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/misc.c,v
retrieving revision 1.214
retrieving revision 1.215
diff -u -d -r1.214 -r1.215
--- misc.c 16 Jan 2007 09:44:59 -0000 1.214
+++ misc.c 16 Jan 2007 14:08:55 -0000 1.215
@@ -1,5 +1,5 @@
/* -*- coding: utf-8; -*-
-| Time-stamp: <2007-01-16 17:50:45 jcs>
+| Time-stamp: <2007-01-16 22:58:57 jcs>
|
| Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
| Part of the gtkpod project.
@@ -1579,3 +1579,48 @@
return eitdb->offline;
}
+
+guint32 guiToDB(gint gui)
+{
+ guint32 db = 0;
+ switch (gui)
+ {
+ case 0: db = 0x00000000; break;
+ case 1: db = 0x00000001; break;
+ case 2: db = 0x00000002; break;
+ case 3: db = 0x00000004; break;
+ case 4: db = 0x00000006; break;
+ case 5: db = 0x00000008; break;
+ case 6: db = 0x00000020; break;
+ case 7: db = 0x00000040; break;
+ case 8: db = 0x00000060; break;
+ default:
+ /* This is an error */
+ g_warning ("Programming error: GUI is not in sync with Media Types.\n");
+ db = 0;
+ };
+
+ return db;
+}
+
+gint dbToGUI(guint32 db)
+{
+ gint gui = 0;
+ switch (db)
+ {
+ case 0x00000000: gui = 0; break;
+ case 0x00000001: gui = 1; break;
+ case 0x00000002: gui = 2; break;
+ case 0x00000004: gui = 3; break;
+ case 0x00000006: gui = 4; break;
+ case 0x00000008: gui = 5; break;
+ case 0x00000020: gui = 6; break;
+ case 0x00000040: gui = 7; break;
+ case 0x00000060: gui = 8; break;
+ default:
+ /* Warning */
+ g_warning ("Unknown media type found: %#.8x\n", db);
+ gui = 0;
+ };
+ return gui;
+}
Index: misc.h
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/misc.h,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -d -r1.120 -r1.121
--- misc.h 16 Jan 2007 09:44:59 -0000 1.120
+++ misc.h 16 Jan 2007 14:08:55 -0000 1.121
@@ -254,4 +254,8 @@
const gchar *subkey, gint value);
gboolean get_offline (iTunesDB *itdb);
gboolean sorting_disabled();
+
+guint32 guiToDB(gint gui);
+gint dbToGUI(guint32 db);
+
#endif
Index: misc_conversion.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/misc_conversion.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- misc_conversion.c 16 Jan 2007 09:44:59 -0000 1.29
+++ misc_conversion.c 16 Jan 2007 14:08:56 -0000 1.30
@@ -98,6 +98,12 @@
N_("Remember Playback Position"),
N_("Skip when Shuffling"),
N_("Artwork Path"), /* 40 */
+ N_("Media Type"),
+ N_("TV Show"),
+ N_("TV Episode"),
+ N_("TV Network"),
+ N_("Season Nr"), /* 45 */
+ N_("Episode Nr"),
NULL };
/* Tooltips for prefs window */
@@ -145,6 +151,12 @@
NULL,
NULL,
NULL,
+ NULL, /* 40 */
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL, /* 45 */
NULL
};
Index: misc_track.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/misc_track.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -d -r1.55 -r1.56
--- misc_track.c 16 Jan 2007 09:44:59 -0000 1.55
+++ misc_track.c 16 Jan 2007 14:08:56 -0000 1.56
@@ -527,6 +527,15 @@
case T_THUMB_PATH:
result = &etr->thumb_path_utf8;
break;
+ case T_TV_SHOW:
+ result = &track->tvshow;
+ break;
+ case T_TV_EPISODE:
+ result = &track->tvepisode;
+ break;
+ case T_TV_NETWORK:
+ result = &track->tvnetwork;
+ break;
case T_ALL:
case T_IPOD_ID:
case T_TRACK_NR:
@@ -551,6 +560,9 @@
case T_REMEMBER_PLAYBACK_POSITION:
case T_SKIP_WHEN_SHUFFLING:
case T_CHECKED:
+ case T_MEDIA_TYPE:
+ case T_SEASON_NR:
+ case T_EPISODE_NR:
case T_ITEM_NUM:
g_return_val_if_reached (NULL);
}
@@ -614,6 +626,9 @@
case T_PODCASTRSS:
case T_SUBTITLE:
case T_THUMB_PATH:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
fritem = track_get_item (frtrack, item);
toitem_ptr = track_get_item_pointer (totrack, item);
g_return_val_if_fail (fritem, FALSE);
@@ -787,6 +802,27 @@
changed = TRUE;
}
break;
+ case T_MEDIA_TYPE:
+ if (frtrack->mediatype != totrack->mediatype)
+ {
+ totrack->mediatype = frtrack->mediatype;
+ changed = TRUE;
+ }
+ break;
+ case T_SEASON_NR:
+ if (frtrack->season_nr != totrack->season_nr)
+ {
+ totrack->season_nr = frtrack->season_nr;
+ changed = TRUE;
+ }
+ break;
+ case T_EPISODE_NR:
+ if (frtrack->episode_nr != totrack->episode_nr)
+ {
+ totrack->episode_nr = frtrack->episode_nr;
+ changed = TRUE;
+ }
+ break;
case T_ITEM_NUM:
case T_ALL:
g_return_val_if_reached (FALSE);
@@ -871,6 +907,9 @@
case T_PODCASTURL:
case T_PODCASTRSS:
case T_SUBTITLE:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
text = g_strdup (track_get_item (track, item));
break;
case T_TRACK_NR:
@@ -966,6 +1005,15 @@
case T_SOUNDCHECK:
text = g_strdup_printf ("%0.2f", soundcheck_to_replaygain
(track->soundcheck));
break;
+ case T_SEASON_NR:
+ text = g_strdup_printf ("%d", track->season_nr);
+ break;
+ case T_EPISODE_NR:
+ text = g_strdup_printf ("%d", track->episode_nr);
+ break;
+ case T_MEDIA_TYPE:
+ text = g_strdup_printf ("%#.8x", track->mediatype);
+ break;
case T_TRANSFERRED:
case T_COMPILATION:
case T_REMEMBER_PLAYBACK_POSITION:
@@ -1039,6 +1087,9 @@
case T_PODCASTURL:
case T_PODCASTRSS:
case T_SUBTITLE:
+ case T_TV_SHOW:
+ case T_TV_EPISODE:
+ case T_TV_NETWORK:
itemp_utf8 = track_get_item_pointer (track, item);
if (g_utf8_collate (*itemp_utf8, new_text) != 0)
{
@@ -1203,6 +1254,30 @@
changed = TRUE;
}
break;
+ case T_SEASON_NR:
+ nr = atoi (new_text);
+ if ((nr >= 0) && (nr != track->season_nr))
+ {
+ track->season_nr = nr;
+ changed = TRUE;
+ }
+ break;
+ case T_EPISODE_NR:
+ nr = atoi (new_text);
+ if ((nr >= 0) && (nr != track->episode_nr))
+ {
+ track->episode_nr = nr;
+ changed = TRUE;
+ }
+ break;
+ case T_MEDIA_TYPE:
+ nr = atoi (new_text);
+ if ((nr >= 0) && (nr != track->mediatype))
+ {
+ track->mediatype = nr;
+ changed = TRUE;
+ }
+ break;
case T_PC_PATH:
case T_IPOD_PATH:
case T_IPOD_ID:
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2