Author: jwilcox
Date: 2006-06-16 10:07:34 -0400 (Fri, 16 Jun 2006)
New Revision: 61801
Modified:
trunk/ipod-sharp/ChangeLog
trunk/ipod-sharp/src/Playlist.cs
trunk/ipod-sharp/src/ShuffleTrackDatabase.cs
trunk/ipod-sharp/src/TrackDatabase.cs
trunk/ipod-sharp/tests/IPodTests.cs
Log:
2006-06-16 James Willcox <[EMAIL PROTECTED]>
* Convert more stuff to use generic collections
Modified: trunk/ipod-sharp/ChangeLog
===================================================================
--- trunk/ipod-sharp/ChangeLog 2006-06-16 13:41:22 UTC (rev 61800)
+++ trunk/ipod-sharp/ChangeLog 2006-06-16 14:07:34 UTC (rev 61801)
@@ -1,3 +1,7 @@
+2006-06-16 James Willcox <[EMAIL PROTECTED]>
+
+ * Convert more stuff to use generic collections
+
2006-06-15 James Willcox <[EMAIL PROTECTED]>
* Add beginnings of write support for the photo database. Can read
Modified: trunk/ipod-sharp/src/Playlist.cs
===================================================================
--- trunk/ipod-sharp/src/Playlist.cs 2006-06-16 13:41:22 UTC (rev 61800)
+++ trunk/ipod-sharp/src/Playlist.cs 2006-06-16 14:07:34 UTC (rev 61801)
@@ -1,6 +1,8 @@
using System;
using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
namespace IPod {
@@ -10,7 +12,7 @@
private TrackDatabase db;
private PlaylistRecord record;
- private ArrayList otgtracks;
+ private List<Track> otgtracks;
private string otgtitle;
public event PlaylistTrackHandler TrackAdded;
@@ -20,9 +22,9 @@
get { return record; }
}
- internal Playlist (TrackDatabase db, string title, Track[] otgtracks) {
+ internal Playlist (TrackDatabase db, string title, List<Track>
otgtracks) {
this.otgtitle = title;
- this.otgtracks = new ArrayList (otgtracks);
+ this.otgtracks = otgtracks;
}
internal Playlist (TrackDatabase db, PlaylistRecord record) {
@@ -30,13 +32,13 @@
this.record = record;
}
- public Track[] Tracks {
+ public ReadOnlyCollection<Track> Tracks {
get {
if (IsOnTheGo)
- return (Track[]) otgtracks.ToArray (typeof (Track));
-
- ArrayList tracks = new ArrayList ();
+ return new ReadOnlyCollection<Track> (otgtracks);
+ List<Track> tracks = new List<Track> ();
+
foreach (PlaylistItemRecord item in record.Items) {
Track track = db.GetTrackById (item.TrackId);
@@ -48,8 +50,8 @@
tracks.Add (track);
}
-
- return (Track[]) tracks.ToArray (typeof (Track));
+
+ return new ReadOnlyCollection<Track> (tracks);
}
}
Modified: trunk/ipod-sharp/src/ShuffleTrackDatabase.cs
===================================================================
--- trunk/ipod-sharp/src/ShuffleTrackDatabase.cs 2006-06-16 13:41:22 UTC
(rev 61800)
+++ trunk/ipod-sharp/src/ShuffleTrackDatabase.cs 2006-06-16 14:07:34 UTC
(rev 61801)
@@ -16,7 +16,7 @@
using(BinaryWriter writer = new BinaryWriter(new FileStream(
sdbFile, FileMode.Create))) {
- WriteHeader(writer, device.TrackDatabase.Tracks.Length);
+ WriteHeader(writer, device.TrackDatabase.Tracks.Count);
foreach(Track track in device.TrackDatabase.Tracks) {
WriteTrackEntry(writer, device, track);
Modified: trunk/ipod-sharp/src/TrackDatabase.cs
===================================================================
--- trunk/ipod-sharp/src/TrackDatabase.cs 2006-06-16 13:41:22 UTC (rev
61800)
+++ trunk/ipod-sharp/src/TrackDatabase.cs 2006-06-16 14:07:34 UTC (rev
61801)
@@ -2,6 +2,8 @@
using System.IO;
using System.Text;
using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
using Mono.Unix;
namespace IPod {
@@ -137,7 +139,7 @@
private int unknownOne = 0;
private int unknownTwo = 0;
- private ArrayList details = new ArrayList ();
+ private List<DetailRecord> details = new List<DetailRecord> ();
private DetailRecord posrec;
public int TrackId;
@@ -257,9 +259,9 @@
//private int unknownThree;
private bool isLibrary;
- private ArrayList stringDetails = new ArrayList ();
- private ArrayList otherDetails = new ArrayList ();
- private ArrayList playlistItems = new ArrayList ();
+ private List<DetailRecord> stringDetails = new List<DetailRecord> ();
+ private List<Record> otherDetails = new List<Record> ();
+ private List<PlaylistItemRecord> playlistItems = new
List<PlaylistItemRecord> ();
private DetailRecord nameRecord;
@@ -282,9 +284,9 @@
}
}
- public PlaylistItemRecord[] Items {
+ public ReadOnlyCollection<PlaylistItemRecord> Items {
get {
- return (PlaylistItemRecord[]) playlistItems.ToArray (typeof
(PlaylistItemRecord));
+ return new ReadOnlyCollection<PlaylistItemRecord>
(playlistItems);
}
}
@@ -400,26 +402,26 @@
// blah, this is soooo sleaux
- ArrayList items = (ArrayList) playlistItems.Clone ();
+ List<PlaylistItemRecord> items = new List<PlaylistItemRecord>
(playlistItems);
TrackSorter sorter = new TrackSorter (tracks, type);
items.Sort (sorter);
- ArrayList indices = new ArrayList ();
+ List<int> indices = new List<int> ();
foreach (PlaylistItemRecord item in items) {
indices.Add (tracks.IndexOf (item.TrackId));
}
- record.LibraryIndices = (int[]) indices.ToArray (typeof (int));
+ record.LibraryIndices = indices.ToArray ();
return record;
}
#pragma warning restore 0169
private void CreateLibraryIndices (TrackListRecord tracks) {
- ArrayList details = new ArrayList ();
+ List<Record> details = new List<Record> ();
// remove any existing library index records
- foreach (Record rec in (ArrayList) otherDetails) {
+ foreach (Record rec in otherDetails) {
DetailRecord detail = rec as DetailRecord;
if (detail != null && detail.Type != DetailType.LibraryIndex) {
details.Add (rec);
@@ -495,7 +497,7 @@
writer.Write (childData, 0, childDataLength);
}
- private class TrackSorter : IComparer {
+ private class TrackSorter : IComparer<PlaylistItemRecord> {
private TrackListRecord tracks;
private IndexType type;
@@ -505,9 +507,9 @@
this.type = type;
}
- public int Compare (object a, object b) {
- TrackRecord trackA = tracks.LookupTrack ((a as
PlaylistItemRecord).TrackId);
- TrackRecord trackB = tracks.LookupTrack ((b as
PlaylistItemRecord).TrackId);
+ public int Compare (PlaylistItemRecord a, PlaylistItemRecord b) {
+ TrackRecord trackA = tracks.LookupTrack (a.TrackId);
+ TrackRecord trackB = tracks.LookupTrack (b.TrackId);
if (trackA == null || trackB == null)
return 0;
@@ -538,7 +540,7 @@
internal class PlaylistListRecord : TrackDbRecord, IEnumerable {
- private ArrayList playlists = new ArrayList ();
+ private List<PlaylistRecord> playlists = new List<PlaylistRecord> ();
public PlaylistRecord this[int index] {
get {
@@ -546,9 +548,9 @@
}
}
- public PlaylistRecord[] Playlists {
+ public ReadOnlyCollection<PlaylistRecord> Playlists {
get {
- return (PlaylistRecord[]) playlists.ToArray (typeof
(PlaylistRecord));
+ return new ReadOnlyCollection<PlaylistRecord> (playlists);
}
}
@@ -831,7 +833,7 @@
private int unknownNineteen;
private int playCountDup;
- private ArrayList details = new ArrayList ();
+ private List<DetailRecord> details = new List<DetailRecord> ();
public int Id;
public bool Hidden = false;
@@ -875,8 +877,8 @@
public int SeasonNumber;
public int EpisodeNumber;
- public DetailRecord[] Details {
- get { return (DetailRecord[]) details.ToArray (typeof
(DetailRecord)); }
+ public ReadOnlyCollection<DetailRecord> Details {
+ get { return new ReadOnlyCollection<DetailRecord> (details); }
}
public TrackRecord (bool isbe) : base (isbe) {
@@ -1159,10 +1161,10 @@
internal class TrackListRecord : TrackDbRecord, IEnumerable {
- private ArrayList tracks = new ArrayList ();
+ private List<TrackRecord> tracks = new List<TrackRecord> ();
- public TrackRecord[] Tracks {
- get { return (TrackRecord[]) tracks.ToArray (typeof
(TrackRecord)); }
+ public ReadOnlyCollection<TrackRecord> Tracks {
+ get { return new ReadOnlyCollection<TrackRecord> (tracks); }
}
public TrackListRecord (bool isbe) : base (isbe) {
@@ -1343,9 +1345,9 @@
private int unknownOne = 1;
private int unknownTwo = 2;
-
- private ArrayList datasets = new ArrayList ();
+ private List<DataSetRecord> datasets = new List<DataSetRecord> ();
+
public int Version = MaxSupportedVersion;
public long Id;
@@ -1361,7 +1363,6 @@
}
public DatabaseRecord (bool isbe) : base (isbe) {
- datasets = new ArrayList ();
datasets.Add (new DataSetRecord (DataSetIndex.Library, isbe));
DataSetRecord plrec = new DataSetRecord (DataSetIndex.Playlist,
isbe);
@@ -1510,12 +1511,12 @@
private DatabaseRecord dbrec;
- private ArrayList tracks = new ArrayList ();
- private ArrayList tracksToAdd = new ArrayList ();
- private ArrayList tracksToRemove = new ArrayList ();
+ private List<Track> tracks = new List<Track> ();
+ private List<Track> tracksToAdd = new List<Track> ();
+ private List<Track> tracksToRemove = new List<Track> ();
- private ArrayList playlists = new ArrayList ();
- private ArrayList otgPlaylists = new ArrayList ();
+ private List<Playlist> playlists = new List<Playlist> ();
+ private List<Playlist> otgPlaylists = new List<Playlist> ();
private Random random = new Random();
private Device device;
@@ -1561,20 +1562,22 @@
get { return ControlPath + "iTunes/Play Counts"; }
}
- public Track[] Tracks {
+ public ReadOnlyCollection<Track> Tracks {
get {
- return (Track[]) tracks.ToArray (typeof (Track));
+ return new ReadOnlyCollection<Track> (tracks);
}
}
- public Playlist[] Playlists {
+ public ReadOnlyCollection<Playlist> Playlists {
get {
- return (Playlist[]) playlists.ToArray (typeof (Playlist));
+ return new ReadOnlyCollection<Playlist> (playlists);
}
}
- public Playlist[] OnTheGoPlaylists {
- get { return (Playlist[]) otgPlaylists.ToArray (typeof
(Playlist)); }
+ public ReadOnlyCollection<Playlist> OnTheGoPlaylists {
+ get {
+ return new ReadOnlyCollection<Playlist> (otgPlaylists);
+ }
}
public int Version {
@@ -1652,9 +1655,9 @@
if (!finfo.Exists || finfo.Length == 0) {
return false;
}
+
+ List<Track> otgtracks = new List<Track> ();
- ArrayList otgtracks = new ArrayList ();
-
using (BinaryReader reader = new BinaryReader (File.Open (path,
FileMode.Open, FileAccess.Read))) {
byte[] header = reader.ReadBytes (20);
@@ -1677,7 +1680,7 @@
title += " " + num;
}
- otgPlaylists.Add (new Playlist (this, title, (Track[])
otgtracks.ToArray (typeof (Track))));
+ otgPlaylists.Add (new Playlist (this, title, otgtracks));
return true;
}
Modified: trunk/ipod-sharp/tests/IPodTests.cs
===================================================================
--- trunk/ipod-sharp/tests/IPodTests.cs 2006-06-16 13:41:22 UTC (rev 61800)
+++ trunk/ipod-sharp/tests/IPodTests.cs 2006-06-16 14:07:34 UTC (rev 61801)
@@ -1,5 +1,7 @@
using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using NUnit.Framework;
@@ -89,7 +91,7 @@
public void AddTrackTest () {
TrackDatabase db = OpenDevice ().TrackDatabase;
- int len = db.Tracks.Length;
+ int len = db.Tracks.Count;
for (int i = 0; i < 100; i++)
AddTrack (db);
@@ -97,14 +99,14 @@
db.Save ();
db.Reload ();
- Assert.AreEqual (len + 100, db.Tracks.Length);
+ Assert.AreEqual (len + 100, db.Tracks.Count);
}
[Test]
public void RemoveTrackTest () {
TrackDatabase db = OpenDevice ().TrackDatabase;
- int origlen = db.Tracks.Length;
+ int origlen = db.Tracks.Count;
Track track = AddTrack (db);
int index = origlen;
@@ -137,7 +139,7 @@
}
}
- Assert.AreEqual (db.Tracks.Length, origlen);
+ Assert.AreEqual (db.Tracks.Count, origlen);
}
[Test]
@@ -145,7 +147,7 @@
TrackDatabase db = OpenDevice ().TrackDatabase;
AddTrack (db);
- int index = db.Tracks.Length - 1;
+ int index = db.Tracks.Count - 1;
db.Save ();
db.Reload ();
@@ -222,7 +224,7 @@
list = db.LookupPlaylist (playlistName);
Assert.IsNotNull (list);
- Assert.AreEqual (10, list.Tracks.Length);
+ Assert.AreEqual (10, list.Tracks.Count);
}
[Test]
@@ -257,19 +259,19 @@
list = db.LookupPlaylist (playlistName);
Assert.IsNotNull (list);
- Assert.AreEqual (10, list.Tracks.Length);
+ Assert.AreEqual (10, list.Tracks.Count);
for (int i = 0; i < 10; i++)
list.AddTrack (AddTrack (db));
- Assert.AreEqual (20, list.Tracks.Length);
+ Assert.AreEqual (20, list.Tracks.Count);
db.Save ();
db.Reload ();
list = db.LookupPlaylist (playlistName);
Assert.IsNotNull (list);
- Assert.AreEqual (20, list.Tracks.Length);
+ Assert.AreEqual (20, list.Tracks.Count);
}
[Test]
@@ -284,7 +286,7 @@
list = db.LookupPlaylist (playlistName);
Assert.IsNotNull (list);
- Assert.AreEqual (10, list.Tracks.Length);
+ Assert.AreEqual (10, list.Tracks.Count);
Track mytrack = list.Tracks[4];
mytrack.Artist = "reordered";
@@ -440,9 +442,9 @@
public void ModifyOTGNameTest () {
TrackDatabase db = OpenDevice ().TrackDatabase;
- Playlist[] lists = db.OnTheGoPlaylists;
+ ReadOnlyCollection<Playlist> lists = db.OnTheGoPlaylists;
- if (lists.Length == 0)
+ if (lists.Count == 0)
throw new InvalidOperationException ("no lists");
lists[0].Name = "foobar";
@@ -455,9 +457,9 @@
Track track = AddTrack (db);
- Playlist[] lists = db.OnTheGoPlaylists;
+ ReadOnlyCollection<Playlist> lists = db.OnTheGoPlaylists;
- if (lists.Length == 0)
+ if (lists.Count == 0)
throw new InvalidOperationException ("no lists");
lists[0].AddTrack (track);
@@ -468,10 +470,10 @@
public void RemoveOTGTrackTest () {
TrackDatabase db = OpenDevice ().TrackDatabase;
- Playlist[] lists = db.OnTheGoPlaylists;
+ ReadOnlyCollection<Playlist> lists = db.OnTheGoPlaylists;
// make nunit happy if there were no tracks or playlists
- if (lists.Length == 0 || lists[0].Tracks.Length == 0)
+ if (lists.Count == 0 || lists[0].Tracks.Count == 0)
throw new InvalidOperationException ("no tracks");
Playlist otg = lists[0];
@@ -486,10 +488,10 @@
public void RemoveOTGPlaylistTest () {
TrackDatabase db = OpenDevice ().TrackDatabase;
- Playlist[] lists = db.OnTheGoPlaylists;
+ ReadOnlyCollection<Playlist> lists = db.OnTheGoPlaylists;
// make nunit stfu
- if (lists.Length == 0)
+ if (lists.Count == 0)
throw new InvalidOperationException ("no playlists");
foreach (Playlist pl in lists) {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches