Changeset 19312
- Timestamp:
- 09/15/08 05:27:02 (4 months ago)
- Location:
- lang/csharp/iTunesCOMWrap/trunk/iTunesCOMWrap
- Files:
-
- 2 modified
-
Interfaces/IPlaylists.cs (modified) (1 diff)
-
Playlists.cs (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/csharp/iTunesCOMWrap/trunk/iTunesCOMWrap/Interfaces/IPlaylists.cs
r19308 r19312 15 15 iTunes.IITPlaylist __asIITPlaylist { get; } 16 16 ITrackCollection Tracks { get; } 17 ITrack SameTrack(ITrack track); 18 ITrack SameTrack(IItemTrack track); 19 ITrack SameTrack(int trackDatabaseID, string name); 20 ITrack SameTrack(int trackDatabaseID); 17 21 List<ITrack> SameTracks(ITrack track); 18 22 List<ITrack> SameTracks(IItemTrack track); -
lang/csharp/iTunesCOMWrap/trunk/iTunesCOMWrap/Playlists.cs
r19308 r19312 45 45 } 46 46 47 public ITrack SameTrack(ITrack track) 48 { 49 return this.SameTrack(track.TrackDatabaseID, track.Name); 50 } 51 52 public ITrack SameTrack(IItemTrack track) 53 { 54 return this.Tracks.ItemByPersistentID[track.PersistentID]; 55 } 56 57 public ITrack SameTrack(int trackDatabaseID, string name) 58 { 59 var trackCollection = name == null 60 ? this.Tracks 61 : this.Search(name, PlaylistSearchField.SongNames); 62 63 if (trackCollection == null) return null; 64 foreach (var track in trackCollection) 65 if (track.TrackDatabaseID == trackDatabaseID) 66 return track; 67 return null; 68 } 69 70 public ITrack SameTrack(int trackDatabaseID) 71 { 72 return this.SameTrack(trackDatabaseID, null); 73 } 74 47 75 public List<ITrack> SameTracks(ITrack track) 48 76 { 77 if (this.TracksNeverDuplicates) 78 return new[] {this.SameTrack(track)}.ToList(); 79 49 80 return this.SameTracks(track.TrackDatabaseID, track.Name); 50 81 } … … 52 83 public List<ITrack> SameTracks(IItemTrack track) 53 84 { 54 // fall quickly 85 if (this.TracksNeverDuplicates) 86 return new[] {this.SameTrack(track)}.ToList(); 87 88 // fall quickly, but didn't work with LibraryPlaylist. 89 // LibraryPlaylist.TracksNeverDuplicates should be true, but do double-checking. 90 if (this as LibraryPlaylist != null) 91 throw new InvalidOperationException("LibraryPlaylist can't use this implementation."); 92 55 93 var playlistCollection = track.Playlists; 56 94 if (playlistCollection == null || !playlistCollection.Contains(this)) … … 61 99 public List<ITrack> SameTracks(int trackDatabaseId, string name) 62 100 { 101 if (this.TracksNeverDuplicates) 102 return new[] {this.SameTrack(trackDatabaseId, name)}.ToList(); 103 63 104 var trackCollection = name == null 64 105 ? this.Tracks … … 71 112 public List<ITrack> SameTracks(int trackDatabaseID) 72 113 { 114 if (this.TracksNeverDuplicates) 115 return new[] {this.SameTrack(trackDatabaseID)}.ToList(); 116 73 117 return this.SameTracks(trackDatabaseID, null); 74 118 } … … 137 181 return this._app._asIiTunes.get_CanSetSongRepeat(ref _temporary); 138 182 } 183 } 184 185 internal protected virtual bool TracksNeverDuplicates 186 { 187 get { return false; } 139 188 } 140 189 } … … 191 240 get { return this._asIITAudioCDPlaylist.Year; } 192 241 } 242 243 internal protected override bool TracksNeverDuplicates 244 { 245 get { return true; } 246 } 193 247 } 194 248 … … 226 280 return this.factory.CreateTrack(this._asIITLibraryPlaylist.AddTrack(ref _real)); 227 281 } 282 283 internal protected override bool TracksNeverDuplicates 284 { 285 get { return true; } 286 } 228 287 } 229 288 230 289 internal class UserPlaylist : Playlist, IUserPlaylist 231 290 { 291 protected internal bool _smart; 292 232 293 protected internal UserPlaylist(iTunes.IITUserPlaylist _internal, ITunesApp _app) 233 294 : base(_internal, _app) 234 295 { 296 this._smart = this._asIITUserPlaylist.Smart; 235 297 } 236 298 … … 305 367 public bool Smart 306 368 { 307 get { return this._asIITUserPlaylist.Smart; } 369 get { return this._smart; } 370 } 371 372 internal protected override bool TracksNeverDuplicates 373 { 374 get { return this.Smart; } 308 375 } 309 376
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)