Fetching contributors…
Cannot retrieve contributors at this time
1388 lines (875 sloc) 42.2 KB
2010-01-26 Gabriel Burt <>
* NEWS: Bump to 0.8.6 in prep for next release
2009-11-20 Gabriel Burt <>
* NEWS: Update for 0.8.5 release
2009-11-16 Gabriel Burt <>
* src/TrackDatabase.cs: Patch from Carl Reinke fixing encoding issue that
prevented some databases from being read correctly (BGO #596526)
2009-11-03 Gabriel Burt <>
Released 0.8.4
* NEWS: Updated
2009-11-02 Gabriel Burt <>
* Bumped Version
2009-10-27 Gabriel Burt <>
* src/Track.cs: Add podcast-related properties, including DateReleased,
Description, and more.
* src/TrackDatabase.cs: Support reading and writing the podcast playlist.
Most of the fix needed for BGO #434237
2009-10-01 Aaron Bockover <>
Released 0.8.3
* Bumped Version
* NEWS: Updated
* Added new release targets, sha256sum the files
2009-09-09 Andrés G. Aragoneses <>
* src/Device.cs: In Device::Save(), check for null against the
fields instead of the properties for the databases, otherwise
it would always be true. Helps BGO#588101 as a workaround for
the cases in which the PhotoDatabase was not used at all.
2009-06-30 Andrés G. Aragoneses <>
* src/TrackDatabase: Bail out if we have more numEntries than
tracks. Fixes BGO#585397.
2009-05-27 Andrés G. Aragoneses <>
* src/TrackDatabase.cs: Fix PlayCountsPath (BGO #583760).
Consequently, as pointed out by Gabriel Burt, fix the load of
2009-03-30 Andrés G. Aragoneses <>
* src/TrackDatabase.cs: throw error if no duration was specified
(BGO #577096).
2009-03-28 Andrés G. Aragoneses <>
* src/Track.cs: In all string properties, remove the detail if the
value is null or empty (BGO #577124).
2009-01-20 Aaron Bockover <>
Released 0.8.2
* Bumped Version
* NEWS: Updated
2009-01-13 Gabriel Burt <>
* src/ArtworkFormat.cs:
* src/Photo.cs: Patch from Nicholas Doyle overriding ArtworkFormat's Equal
method, helps avoid a lot of duplicate cover art/wasted space (BGO #555329)
2008-09-11 Aaron Bockover <>
Released 0.8.1
* Bumped Version
* NEWS: Updated
2008-09-03 Gabriel Burt <>
* src/TrackDatabase.cs: Split out GetHash method that returns a byte []
for testability.
* src/Hal/HalDevice.cs: Fix issue with mono 2.0 compiler.
* src/Hash58.cs: Fix bug where the newest iPods (Classic and Nano) that
require the crazy new hash weren't showing any songs on the device once
the track database file grew bigger than a certain size. Take the new
data tables from libgpod that precalculate the constants (BGO #536741).
* tests/IPodTests.cs: Add internal subclasses of Device and VolumeInfo so
we can get the tests working again, but for now comment all the tests out.
* tests/
* tests/HashTests.cs: New file for testing the hashing fix mentioned
2007-12-18 Aaron Bockover <>
Released 0.8.0
* NEWS: Updated
2007-10-11 Aaron Bockover <>
* src/Firmware/
* ui/
* src/ Install the .mdb files
* src/TrackDatabase.cs: Return DetailType=32 as generic data since we
don't know how to handle it right now
2007-10-10 Aaron Bockover <>
* src/Hal/HalDeviceManager.cs:
* src/Hal/HalDevice.cs: Reflect the new prefix for PodSleuth properties
2007-10-10 Aaron Bockover <>
* src/TrackDatabase.cs: Fixed bug with IsTrackOnDevice
2007-10-09 Aaron Bockover <>
* shamrock.m4:
* Modernized to use shamrock
* docs/: New generation of docs
* src/PhotoDatabase.cs: Fixed path issues
* src/Hal/HalDeviceManager.cs:
* src/DeviceManager.cs: Namespace fixes
* src/Device.cs: Tons of fixups, API changes, and cleaning
* src/ArtworkFormat.cs:
* src/ProductionInfo.cs:
* src/ModelInfo.cs:
* src/VolumeInfo.cs: Grouped and organized properties into small
sub classes to make the Device API more usable
* src/Hal/HalDevice.cs: Lots of fixes, implement the changes in Device
* src/ShuffleTrackDatabase.cs:
* src/TrackDatabase.cs: Fixes to reflect API changes
2007-10-08 Aaron Bockover <>
* src/Device.cs: Added TrackDatabasePath and HasTrackDatabase
* src/TrackDatabase.cs: Use Device.TrackDatabasePath
2007-10-04 James Willcox <>
* src/Thumbnail.cs: use the data length instead of the format length
when writing the thumbnail since the latter is not required
to be valid.
* src/Hal/HalDevice.cs: ignore artwork formats with unknown
pixel formats.
2007-09-22 James Willcox <>
* src/TrackDatabase.cs: some cleanups, and do the rest of the things
necessary to make the hashed databases work.
2007-09-17 Aaron Bockover <>
* src/TrackDatabase.cs: First pass at hashing the database
* src/Hash58.cs: Implementation of the crappy hash algorithm that
Apple decided to use to lock out third party clients
2007-09-17 James Willcox <>
* Massive reorganization. There is now a DeviceManager class which
does enumeration of devices. Additionally, Device is now abstract
and platform-dependent subclasses are used instead.
2007-09-10 James Willcox <>
* src/Device.cs: change the #ifdef to WINDOWS instead of DOTNET
and remove all of the runtime OS checking.
* ui/DeviceCombo.cs: make it build again
* src/TrackDatabase.cs: up MaxSupportedVersion to 25 (!)
2007-08-10 Justin Cherniak <>
* src/TrackDatabase.cs: Fixed bug where calling
DatabaseRecord.ReassignTrackIds() would invalidate the track ids
within the TrackListRecord.
2007-08-04 Justin Cherniak <>
* src/Device.cs: changed ListDevices() so that it relies on the
platform device to generate IPod.Devices instead of doing the
conversion b/w IDevices and Devices itself
* src/PhotoDatabase.cs: Added checks to LookupPhoto functions (faster
than catching exceptions)
* src/SysInfoExtended.cs: Compatibility fix for Windows Vista.
* src/Track.cs: Added the following fields: DiscNumber, TotalDiscs,
BPM, AlbumArtist, Composer, LatestRating, LastLastModifiedTime. Added
write accessors for DateAdded, Size. Compatibility fix for URI
generation under Win32
* src/TrackDatabase.cs: Added TrackAdded/TrackRemoved events, support
for Track.LatestRating. Compatibility fixes for Win32. Added
CreateTrack overload which copies the track to the iPod immediately
versus waiting for TrackDatabase.Save()
* src/Win32/DeviceEventListener.cs: Rewrote Win32.DeviceEventListener
so that it mainly operates statically. This allows it to keep one
list of Devices instead of creating different devices for different
listeners (when in truth, they would be the same physical device).
* src/Win32/Device.cs: Now gets its device list from
2007-08-03 Justin Cherniak <>
Recursively applied svn:eol-style=native to all text files
* src/Win32/WinAPI.cs: Fixed inconsistent eol's
* src/Device.cs: Fixed inconsistent eol's
2007-07-02 Justin Cherniak <>
Added Win32 support to the library.
* All Mono specific bits are cased in "#if !DOTNET" blocks to allow
the code to compile for windows using Microsoft .NET (All Win32 specific
code compiles under Mono, so to build a cross platform build, use mono.
This allows the code to be compiled under Micrsoft .NET for Windows use)
* src/Unix: Moved Unix specific implementations (Device.cs,
DeviceAddedHandler.cs, DeviceEventListener.cs,
DeviceRemovedHandler.cs, Initializer.cs) to this directory and to
IPod.Unix namespace
* src/Win32: Added Windows specific implementation of Device.cs in
IPod.Win32 namespace
* src/Device.cs: Completely redone. Moved all platform specific stuff
to src/Unix/Device.cs and src/Win32/Device.cs. This file now creates
and uses one of the platform specific devices depending on the OS on
which it is run.
* src/IDevice.cs: Interface that both Unix and Win32 Devices implement
so that Ipod.Device can utilize either one depending on the runtime OS.
* src/PhotoDatabase.cs: Changed Mono specific call to .NET call.
* src/TrackDatabase.cs: Added Win32 FlushFileBuffers call for .NET
* src/SysInfo.cs: Rudementary parser for the SysInfo file stored on the
iPod. Currently only used in the Win32 implementation.
* src/SysInfoExtended.cs: XML Parser for SysInfoExtended stored in the
iPod firmware. Some code taken from libipoddevice. Currently only used
in the Win32 implementation.
* src/Win32/WinAPI.cs: Included Win32 API Wrappers used throughout the
* src/Win32/DeviceEventListener.cs:
* src/Win32/DeviceWatcherWindow.cs: Implements a DeviceEventListener
for Win32 by monitoring WM_DEVICECHANGE
* src/Unix/DeviceEventLister.cs: Moved to IPod.Unix namespace.
* src/Unix/Device.cs: Removed common (between platforms) functionality
to IPod.Device. Added explict conversion between IPod.Device
* src/ipod-sharp.csproj: Added Visual Studio 2005 project with DOTNET
compilation symbol on by default (allowing library to build in Visual
Studio for Win32 with Microsoft .NET)
* src/ipod-sharp.mdp: Updated project to reflect new paths
2007-06-19 James Willcox <>
* bump to 0.6.4
2007-06-19 James Willcox <>
* src/Device.cs: s/public/private/ for some methods which were
accidentally marked public (LoadTrackDatabase, etc)
2007-06-16 Brad Taylor <>
* src/Device.cs:
* src/SportKitManager.cs: Implement support for iPod Sport devices.
* tools/PodTool.cs: Add a flag (--dump-sportkits) to print out the
workouts of each sport kit stored on the selected iPod for debugging
2007-06-15 James Willcox <>
* src/TrackDatabase.cs: make track add/remove/lookup operations much
faster. Patch from Justin Cherniak <>
2007-04-20 James Willcox <>
* src/TrackDatabase.cs: add yet another detail type found in
album list.
2007-04-04 Aaron Bockover <>
0.6.3 Released
* Bump to 0.6.3, require libipoddevice 0.5.3
2007-03-31 James Willcox <>
* src/TrackDatabase.cs: add support for another detail type found in
the album list.
2007-03-30 Aaron Bockover <>
* src/DeviceModel.cs: Added new model types from libipoddevice (shuffle 2)
* src/Device.cs: Added an IsShuffle property
2007-03-30 Aaron Bockover <>
* src/TrackDatabase.cs: do not copy iTunesDB if read only (HFS+)
2007-03-29 James Willcox <>
* src/TrackDatabase.cs: add write support for this new album list
2007-03-29 James Willcox <>
* src/TrackDatabase.cs: oops, there are some new mhod types in the
album list data. This adds them.
2007-03-29 James Willcox <>
* src/TrackDatabase.cs: parse the new "album list" data set found on
2nd gen nano and shuffle after being synced with iTunes 7.1.
2007-03-29 Aaron Bockover <>
* src/TrackDatabase.cs:
* src/Track.cs: Add null checks for the artwork DB as on some devices we
may not be able to read the format info, and we shouldn't crash if that's
the case
2007-03-23 Aaron Bockover <>
* src/Firmware/DmgFirmwareExtract.cs: Updated so my old work isn't lost,
but with iTunes 7, they shattered my dreams of firmware updating... for now
2007-03-19 James Willcox <>
* src/TrackDatabase.cs: bump the supported database version to 20
(which is what iTunes 7.1 uses)
2006-12-19 Aaron Bockover <>
* src/DeviceModel.cs: Added NanoProductRed
2006-09-19 Aaron Bockover <>
* src/Device.cs: Added ShouldAskIfUnknown and DoNotAskIfUnknown
2006-09-18 Aaron Bockover <>
* src/Device.cs: Added UnknownIpodUrl property, replaces the entire
tool from yesterday, going for a web-based solution
* tools/
* Reverted
* tools/IpodDataSubmit.cs: Removed
2006-09-18 Aaron Bockover <>
* Add ipod-data-submit.exe
* tools/ Build/install the data submission tool
* tools/IpodDataSubmit.cs: A standalone tool to submit data about
unknown iPods to
2006-09-18 James Willcox <>
* bump to 0.6.2
* Device.cs: use new libipoddevice artwork format API, and change
ours to be similar. Also add new properties ManufacturerId,
ProductionYear, ProductionWeek, and ProductionIndex.
2006-09-12 James Willcox <>
* bump version to 0.6.1
* src/TrackDatabase.cs: bump supported db version to 19
2006-09-11 James Willcox <>
* src/Device.cs: use the 'library' playlist name as the device name
and remove a bunch of dead code
2006-07-19 James Willcox <>
* src/TrackDatabase.cs: bump the max supported database version to 18
2006-07-18 James Willcox <>
* src/Photo.cs: add an internal CurrentFullSizeFileName property
* src/PhotoDatabase.cs: make sure old photos are removed
2006-07-06 Aaron Bockover <>
* Require libipoddevice 0.4.6+
2006-06-29 James Willcox <>
* ui/ArtworkHelpers.cs: preserve aspect ratio when scaling
2006-06-29 James Willcox <>
* ui/ArtworkHelpers.cs: remove the SetCoverArt/SetThumbnail methods,
and just have ToBytes/ToPixbuf. Also, do a better job of figuring
out the endianess needed for the RGB565 images and handle rotation.
* src/TrackDatabase.cs: when opening files for read-only access,
just use File.OpenRead.
* src/Device.cs: add the new Size and ImageType properties
to ArtworkFormat
* src/Thumbnail.cs: use the new Size property to ensure that the
correct amount of data is received in SetData.
2006-06-27 James Willcox <>
* src/TrackDatabase.cs: remove the length check in TrackRecord when
saving, as it was really just for debugging.
2006-06-27 James Willcox <>
* src/Track.cs: make the Id property useful (it is persisted across
database saves) and remove the duplicate TrackRecord property
* src/TrackDatabase.cs: assign TrackRecord.DatabaseId incrementally,
not randomly.
2006-06-27 James Willcox <>
* ui/ArtworkHelpers.cs: make a lame attempt at figuring out whether or
not a thumbnail should be big endian
2006-06-23 James Willcox <>
* src/PhotoDatabase.cs: don't be so clumsy when calculating child
padding for detail records.
2006-06-23 James Willcox <>
* src/PhotoDatabase.cs: ensure that the database directory exists
before trying to write a file there.
2006-06-23 James Willcox <>
* ui/ArtworkHelpers.cs: correctly pack/unpack IYUV data as contained
in the TV thumbnails.
2006-06-22 James Willcox <>
* src/Track.cs: added HasCoverArt
* src/PhotoDatabase.cs: don't save thumbnails to the db if they
are empty.
2006-06-22 James Willcox <>
* ui/ArtworkHelpers.cs:
* tools/PhotoAdder.cs:
Moved the Pixbuf helpers to their own class (ArtworkHelpers) in the
UI library. Also added a little tool for adding a directory of
images to a device.
2006-06-22 James Willcox <>
* src/Thumbnail.cs: Dispose the pixbuf if a scaled version was created
2006-06-22 James Willcox <>
* src/Track.cs: add stuff for removing cover art
* src/Device.cs: add a LookupFormat method for getting the
ArtworkFormat for the given ArtworkType
2006-06-22 James Willcox <>
* src/Track.cs: add pixbuf helper methods for cover art
2006-06-22 James Willcox <>
* src/Thumbnail.cs: add GetPixbuf()
2006-06-22 James Willcox <>
* src/Thumbnail.cs: add SetDataFromPixbuf, which will do all the
rgb565 packing, etc.
2006-06-21 James Willcox <>
* Fix a ton of photo/artwork bugs, flesh out the public API some more
2006-06-16 James Willcox <>
* src/PhotoDatabase.cs: more write fixes. It can now read/write the
art and photo database without corruption.
2006-06-16 James Willcox <>
* fix the test cases
2006-06-16 James Willcox <>
* Use IList<T> instead of ReadOnlyCollection<T> in the public API
2006-06-16 James Willcox <>
* src/PhotoDatabase.cs: read/write the full size image records
2006-06-16 James Willcox <>
* Convert more stuff to use generic collections
2006-06-15 James Willcox <>
* Add beginnings of write support for the photo database. Can read
back its own database, but the iPod doesn't like it yet.
2006-06-14 James Willcox <>
* Add initial photo support. Currently read-only, and still a bit raw.
* switch to gmcs (C# 2.0), and start using generic collections
* bump to 0.6.0
2006-06-10 Aaron Bockover <>
* ipod-sharp.mdp: Updated MonoDevelop project
* src/Firmware/DmgImage.cs:
* src/Firmware/CpioArchive.cs: Added path-based API wrappers
* src/Firmware/DmgFirmwareExtract.cs: Extracts all firmware images
based on the iPodUpdater DMG image (currently uses mount -t hfsplus)
* src/Firmware/ Added DmgFirmwareExtract.cs
* tools/ Added build rules for ipod-firmware-extract
* tools/ExtractFirmware.cs: New command line tool to extract ipod images
2006-06-10 Aaron Bockover <>
* src/Dmg*.cs: Moved to src/Firmware
* src/Firmware/ Added new ipod-sharp-firmware.dll assembly
* src/Firmware/CpioArchive.cs: New class to read and extract files from
CPIO archives in the ASCII header format
* Generate src/Firmware/Makefile
* src/ Added Firmware to SUBDIRS
* tools/ Updated build to reflect renamed files
* ipod-sharp.mdp: Updated MonoDevelop project
2006-06-09 Aaron Bockover <>
* {,*/}: Added MAINTAINERCLEANFILES to keep
clean up so fresh, Mr. Clean himself would wink at you (but Oxyclean's
Billy Mays would just yell at you)
* Fixed it
2006-06-09 Aaron Bockover <>
* src/DmgImage.cs: Parse DMG partitions from a DMG image file; writes
HFS+ ISO from DMG image
* src/DmgPartition.cs: Read DMG partition information from plist XML
node and extract HFS+ ISO image partition
* tools/DmgIsoExtract.cs: Command line tool to convert DMG images to
HFS+ ISO images
* src/ Added DmgImage.cs and DmgPartition.cs to build
* tools/ Build dmg-iso-extract.exe tool
* ipod-sharp.mds:
* ipod-sharp.mdp: Added MonoDevelop project
2006-06-02 James Willcox <>
* Track.cs: add Type property
* TrackDatabase.cs: handle more stuff in TrackRecord, such as
media type.
Add stuff for video support
2006-06-01 James Willcox <>
* Song.cs -> Track.cs
2006-06-01 James Willcox <>
* SongDatabase.cs -> TrackDatabase.cs
* ShuffleSongDatabase.cs -> ShuffleTrackDatabase.cs
2006-05-03 Aaron Bockover <>
* src/SongDatabase.cs (LoadPlayCounts): handle an invalid header (less
than 16 bytes) and catch conversion exceptions
2006-04-23 James Willcox <>
* src/ShuffleSongDatabase.cs: make internal instead of public
* src/en/*: updated
2006-04-20 James Willcox <>
* bump to 0.5.16
2006-04-19 James Willcox <>
* src/EndianBinaryWriter.cs: write out the correct endianness
2006-04-13 James Willcox <>
* src/Song.cs: add LatestPlayCount property, which indicates the play
count since the last sync.
* src/SongDatabase.cs: read the play count correctly
2006-04-13 James Willcox <>
* src/EndianBinaryWriter.cs: added, allows one to control what
byte order stuff is written as
* src/SongDatabase.cs: be a lot more careful about byte order,
and pave the way for the annoying reverse byte order databases
found on Motorola SLVR.
2006-04-10 James Willcox <>
* src/Device.cs: remove Reboot(), as libipoddevice no longer as it
2006-02-13 James Willcox <>
* src/Song.cs: only create a new unique path in the Uri setter
if the song isn't already on the device.
* src/SongDatabase.cs: s/GetPodPath/GetUniquePodPath/ and
add a GetPodPath, which just returns the ipodized path
for a file.
2006-02-13 Aaron Bockover <>
0.5.15 Released
* src/SongDatabase.cs: Set MaxSupportedVersion back to 17 (whoops);
(CheckFreeSpace): do not include file size in 'required' if the
file is already in the device's Music/F*/* structure, and will not
be copied; moved that check to 'IsSongOnDevice'
2006-02-12 Aaron Bockover <>
* Bump to 0.5.15 (snorp is release happy)
* src/Song.cs: Added % to array of chars that need escaping
* src/SongDatabase.cs: Do not try to copy a song that is already on
the iPod
2006-02-12 Aaron Bockover <>
* src/Device.cs:
* src/SongDatabase.cs: Allow "loading" an empty song database; useful
if the real database cannot be loaded (unsupported version), and the
consuming application wants to scan the iPod to recreate a database
2006-02-12 James Willcox <>
* bump to 0.5.14 (sigh)
2006-02-12 James Willcox <>
* src/Song.cs: oops, do a value comparison when comparing
the Uri.
2006-02-12 James Willcox <>
* src/Song.cs: when setting the Uri for a song, don't do
anything if the new value is the same as the old.
2006-02-12 James Willcox <>
* src/SongDatabase.cs: don't try to emit SaveProgressChanged
if nobody is listening.
2006-02-12 James Willcox <>
* bump to 0.5.13
2006-02-12 James Willcox <>
* src/SongDatabase.cs: fix the SaveProgressArgs.TotalProgress property
* ui/ProgressDialog.cs: show a 'Finishing' message when
the sync() is occurring.
2005-12-06 Aaron Bockover <>
* Version 0.5.12
* src/SongDatabase.cs: Send a null song in a progress event so
consumer app will know the sync is passed copy/write and in
the 'sync()' phase
2005-11-18 Aaron Bockover <>
* tests/IPodTests.cs: Device device = new Device() changed to just
new Device() since the local var is never used
* src/SongDatabase.cs: Use Mono.Unix.Native.Syscall, Mono.Unix.Syscall is
* src/DeviceEventListener.cs
* src/SongDatabase.cs: Use #pragma warning disable/restore to hide
warnings we know about
2005-11-17 James Willcox <>
* bump to (0.5.11 had build issues)
* tests/ link over ipod-sharp.dll if needed
2005-11-16 James Willcox <>
* bump to 0.5.11
2005-11-12 James Willcox <>
* src/SongDatabase.cs: support multiple On-The-Go playlists
* tests/IPodTests.cs: updated for the above
2005-11-12 James Willcox <>
* src/SongDatabase.cs: rework progress reporting a bit and make
Save do a sync(2) so Device.Eject doesn't take forever.
2005-11-11 James Willcox <>
* src/SongDatabase.cs: don't write library indices, as they are
screwing things up for some reason. Also add some things that
are in new db versions (podcast playlist flag, etc).
2005-11-08 James Willcox <>
* src/Song.cs: add a Uri property.
2005-11-08 Aaron Bockover <>
* tools/PodTool.cs: Updated to reflect Duration/FileName Song API changes
* Updated to reference
* Moved from; we keep with the times
* Removed, renamed to; convention
is depcrecated
* bump to 0.5.10, require libipoddevice 0.3.5
* src/Device.cs (ArtworkFormats): fixed offset problem; there is
two bytes of padding (0xffff) after each struct entry
2005-11-08 James Willcox <>
* src/Device.cs: add ArtworkFormats field
* src/Initializer.cs: cleanup unused methods
2005-11-08 James Willcox <>
* src/Song.cs: s/Filename/FileName/ and s/Length/Duration/
2005-10-31 Aaron Bockover <>
* bump to 0.5.9
2005-10-28 James Willcox <>
* src/SongDatabase.cs: bump the supported db version to 16
2005-10-12 Aaron Bockover <>
* src/DeviceModel.cs: Add enums for VideoWhite, VideoBlack iPods
* src/DeviceGenerations.cs: Add Fifth Generation Enum
* Require libipoddevice 0.3.4, bump to 0.5.8
2005-10-12 James Willcox <>
* src/SongDatabase.cs: up the newest known db version to 15, which
is what iTunes 6 uses. Adding/removing songs still works without
further modification.
* bump to 0.5.7
2005-09-24 James Willcox <>
* src/SongDatabase.cs: nuke all of the locks. The consumer
is responsible for all locking now.
* src/Device.cs: ditto
2005-09-22 James Willcox <>
* tests/IPodTests.cs: fix two of the tests, as they wrongly assumed
that song ids were persistent.
2005-09-22 James Willcox <>
* bump version to 0.5.6
2005-09-22 James Willcox <>
* src/SongDatabase.cs: if the OTG playlist file is empty, do not
try to read it.
2005-09-22 James Willcox <>
* src/Initializer.cs: remove the UseDefaultContext property
(it will always use the default context), and make this class
internal again.
2005-09-22 Aaron Bockover <>
* src/Utility.cs: Use new DateTime(1904, 1, 1) instead of
DateTime.Parse("1/1/1904")... reduce parsing overhead and eliminate
locale conflicts
2005-09-15 James Willcox <>
* bump to 0.5.5
* src/SongDatabase.cs: reassign the track ids on every save.
Apparently if the ids are not sequential without gaps, the iPod
will not show the songs after the gap. Also, write out
library index records.
* src/Device.cs: enable write support on v14 databases.
2005-09-08 Aaron Bockover <>
* Require libipoddevice 0.3.3
* src/SongDatabase.cs: Throw an unsupported exception if DB version is
greater than 14
* src/Device.cs: support libipoddevice "device-model-string" property,
bound as Device.ModelString, return false for Device.CanWrite if
SongDatabase.Version is 14 or greater (we can't write that out yet)
2005-09-07 Aaron Bockover <>
* bump to 0.5.4, require libipoddevice 0.3.2
* src/DeviceEventListener.cs: got rid of compiler warnings about unused
* src/SongDatabase.cs: Added ShuffleSongDatabase.Save call to
SongDatabase.Save, got rid of compiler warnings about unused vars,
update Song.Filename after CopySong
* src/Device.cs: Added ControlPath property
* src/Utility.cs: Moved Utility class from SongDatabase.cs to here, added
new static method: Utility.ReverseByteOrder(short)
* src/ShuffleSongDatabase.cs: writer for the iTunesSD database unique
to the iPod Shuffle
2005-08-31 James Willcox <>
* bump to 0.5.3
2005-08-31 James Willcox <>
* src/Song.cs: use the UserId property to determine whether or not
a song is protected.
2005-08-30 James Willcox <>
* bump version to 0.5.2
2005-08-25 James Willcox <>
* require mdassembler
* src/ use mdassembler (oops)
* src/en/*: updated
2005-08-25 James Willcox <>
* src/en/*: update docs
* src/ don't rely on monodoc for the sources dir, use
* don't require monodoc
2005-08-25 James Willcox <>
* src/Playlist.cs: add some events
* src/SongDatabase.cs: ditto
2005-08-24 James Willcox <>
* src/Playlist.cs: fix the API so it takes indices instead of Songs
* src/SongDatabase.cs: do stuff for the above
* src/en/*: updated docs
* tests/IPodTests.cs: fix a test and remove an invalid one
* tests/ remove a couple of the tarballs from the test set
for now, since they are missing some files.
2005-08-24 James Willcox <>
* src/DeviceModel.cs: updated again, added 'Invalid'
* src/Device.cs: add the Reboot method
2005-08-24 James Willcox <>
* src/DeviceModel.cs: adjusted to match the new libipoddevice enum
* src/DeviceGeneration.cs: added
* src/Capacities.cs: moved into libipoddevice, so remove it here
* src/capacities.txt: ditto
2005-08-23 James Willcox <>
* src/Device.cs: add a VolumeLabel property
2005-08-23 James Willcox <>
* src/Capacities.cs: if the model is null, don't blow chunks
2005-08-22 James Willcox <>
* src/SongDatabase.cs: if the iTunesDB file does not exist, allow
one to be created.
* tests/ipod-test-db-blank.tar.gz: add a test for the above
2005-08-22 James Willcox <>
* src/en/*: update docs
2005-08-22 Aaron Bockover <>
* ipod-sharp: Version 0.5.1
* Requires libipoddevice >= 0.2.6, Bumped version to 0.5.1
* src/Device.cs: Device.CanWrite binding for new can-write property
in libipoddeivce
2005-08-21 James Willcox <>
* src/Capacities.cs: we're not including the first letter in the model
so use the appropriate substring.
2005-08-21 James Willcox <>
* src/SongDatabase.cs: only open stuff in FileAccess.Read where we can
2005-08-21 James Willcox <>
* up version to 0.5.0
2005-08-21 James Willcox <>
* src/SongDatabase.cs: oops, avoid a NRE with database versions < 13
2005-08-21 James Willcox <>
* src/SongDatabase.cs: as the podcast playlist doesn't appear
to be special at all, remove the special API for it.
* tests/IPodTests.cs: remove tests for the above
2005-08-21 James Willcox <>
* ui/DeviceCombo.cs: make removing devices work again (oops)
* src/SongDatabase.cs: fix support for 4th gen devices with v13
databases. The current 'spec' appears to be wrong about what
the extra 'mhlp' record is. It does not appear to be the
podcast playlist, but rather a duplicate of the 'real' mhlp.
* en/*: update docs
2005-08-19 James Willcox <>
* src/Initializer.cs: fix indentation
* ui/DeviceCombo.cs: check the IPOD_DEVICE_IMAGES env var for
fake devices and add those as well.
* src/SongDatabase.cs: remove the annoying WriteLine
2005-08-18 Aaron Bockover <>
* src/capacities.txt: Removed letter prefix from list
* bump to 0.4.11
* src/Initializer.cs: Use either the default GMainContext or a new one,
managed by ipod-sharp (default)
2005-08-16 James Willcox <>
* bump to 0.4.10
2005-08-16 James Willcox <>
* src/Song.cs: add an IsProtected property, which indicates whether
or not the song uses DRM.
* src/SongDatabase.cs: reworked some stuff in TrackRecord for the above
* src/Device.cs: don't assume that the error gets set if eject
returns false.
2005-08-04 James Willcox <>
* src/en/*: update docs
2005-08-04 James Willcox <>
* src/SongDatabase.cs: add a 'Version' property.
* src/Device.cs: add a 'Changed' event, which is fired whenever
a property is changed.
* ui/DeviceCombo.cs: remove the 'EjectActive' method, as it's not
needed anymore. Also, update the device name in response to
the new Device.Changed event.
2005-08-03 James Willcox <>
* src/SongDatabase.cs: add stuff for reading/writing library index
type mhod records. Currently, though, only the old indices are
removed when the db is saved.
2005-08-03 James Willcox <>
* src/SongDatabase.cs: correctly write out the number of child
details in playlist records.
2005-08-03 James Willcox <>
* src/SongDatabase.cs: don't pad 'mhit' records
2005-08-03 James Willcox <>
* src/SongDatabase.cs: more work on PlaylistItemRecord, updated
to match the most recent spec.
2005-08-03 James Willcox <>
* src/SongDatabase.cs: change unknownOne in PlaylistItemRecord to be 0
instead of 1, as that's what iTunes does. Make PadLength 8 to see if
that "fixes" problems with 4th devices.
* src/Device.cs: add AdvertisedCapacity property
* src/Capacities.cs: new file, gets advertised capacity info, given
a model number.
* src/capacities.txt: a little text db that maps model -> capacity
2005-07-26 James Willcox <>
* src/Device.cs: wrap the new device properties in libipoddevice
2005-07-26 James Willcox <>
* src/SongDatabase.cs: the type 100 mhod following a mhit is now
considered a child in database version 13, and the size must
be calculated appropriately.
2005-07-26 James Willcox <>
* src/SongDatabase.cs: write all the extra unknown fields out in
TrackRecord, if the database version is >= 12.
2005-07-26 James Willcox <>
* src/SongDatabase.cs: TrackRecord was reading/writing some things in
(apparently) the wrong order, so fix that.
2005-07-26 James Willcox <>
* src/SongDatabase.cs: when dealing with tracks, don't read/write
the 'remainder'.
2005-07-20 James Willcox <>
* src/Initializer.cs: use g_type_init instead of Gtk.Application.Init.
We do not require an X connection, etc.
2005-07-20 James Willcox <>
* src/Initializer.cs: use a separate thread for hal
* ui/DeviceCombo.cs: since events come in on a thread, do stuff
in an idle handler.
2005-07-19 James Willcox <>
* src/SongDatabase.cs: s/StatusHandler/SaveProgressHandler/ and add a
'currentPercent' argument to it, which represents how much of the
current song has been copied. Also, made the Save method provide
that information.
* ui/ProgressDialog.cs: use the new 'currentPercent' info to provide
a smoother progress bar.
2005-07-19 James Willcox <>
* ui/ProgressDialog.cs: display 'current + 1' instead of 'current' in
the progress handler, to be accurate.
2005-07-19 James Willcox <>
* src/SongDatabase.cs: clean some of the internal bits up a bit,
and remove RevertSong.
* src/DatabaseReadException.cs: added
* src/DatabaseWriteException.cs: ditto
* src/en/*: update docs
2005-07-19 James Willcox <>
* src/SongDatabase.cs: put files in the F00 style directories and
rename them similar to how iTunes does it. Patch from
Aaron Bockover <>
2005-07-18 James Willcox <>
* src/SongDatabase.cs: remove from the 'library' playlist when removing a song.
Also, don't force the PodcastUrl2 detail type to PodcastUrl.
2005-07-12 Aaron Bockover <>
* Check for ipoddevice >= 0.2.2
* src/, tests/, ui/, tools/
Update compiler flags -o -> -out: and -r -> -debug
2005-07-12 James Willcox <>
* src/, ui/ since ipod-sharp[-ui] is still
in development, don't install the assemblies to the GAC.
*, add a 'Libraries' variable
that contains the path to the assembly for apps to copy.
2005-07-12 James Willcox <>
* src/DeviceEventListener.cs: new, wraps the respective class in
* src/Initializer.cs: put all initialization stuff here, and have
the static constructors call it.
* ui/DeviceCombo.cs: use the new event listener to add/remove devices
* src/en/*: update docs for the above
2005-07-09 James Willcox <>
* src/en/*: update docs some more
2005-07-08 James Willcox <>
* src/SongDatabase.cs: add PodcastPlaylist property. This playlist and
the OnTheGo playlist are not listed in the Playlists property now, they
are only acccesible through their respective properties.
* src/Song.cs: add 'Category' and 'Grouping' properties.
* src/en/*: update docs
* test/IPodTests.cs: add/update tests for podcast stuff.
2005-07-05 James Willcox <>
* src/en/*: updated
2005-07-05 James Willcox <>
* src/Song.cs: add a 'PodcastUrl' property.
* test/IPodTests.cs: add a test for the above
2005-07-05 James Willcox <>
* src/SongDatabase.cs: support the newest database version with all the
podcast stuff. The special podcast playlist is not exposed yet in the
public API.
2005-07-05 Ross Burton <>
* src/
Allow the building of API docs to be disabled.
2005-06-28 James Willcox <>
* ui/DeviceCombo.cs: oops, make Refresh public again
2005-06-27 James Willcox <>
* ui/DeviceCombo.cs: change EjectActive() to be slightly less hacky
2005-06-24 James Willcox <>
* ui/ProgressDialog.cs:
* ui/ipod.gif:
Add extra-slick iPod animation to the progress dialog.
2005-06-23 James Willcox <>
* ui/DeviceCombo.cs: be a little more stetic when no
devices are available.
2005-06-23 James Willcox <>
* ui/ProgressDialog.cs: add evil hack for ellipsizing, and make
the message when copying songs a bit nicer.
2005-06-22 James Willcox <>
* ui/DeviceCombo.cs: added
2005-06-22 James Willcox <>
* src/Song.cs: add the DateAdded property.
2005-06-22 James Willcox <>
* jack up the version arbitrarily
* src/SongDatabase.cs: expose the compilation flag in songs,
and also preserve extra data found in track records.
* src/Song.cs:
2005-06-21 James Willcox <>
* src/Device.cs: propagate exceptions when saving the equalizers
and don't try to save equalizers if they weren't loaded
2005-06-21 James Willcox <>
* src/Device.cs: load equalizers on demand
2005-06-21 James Willcox <>
* ui/ProgressDialog.cs: don't use Label.Ellipsize, as it's not in
gtk-sharp 1.9.x
2005-06-21 James Willcox <>
* src/SongDatabase.cs: Remove the 'Load' method, as it doesn't really
fit well now that we have Device, etc. Add 'Reload'. Also, remove
the default constructor.
2005-06-21 James Willcox <>
* src/SongDatabase.cs: add events for save progress, instead of using
a callback passed into the Save method.
* ui/*: added a new assembly which contains gtk# widgets that are
handy for using with ipod-sharp. Currently it contains a progress
dialog that shows save progress.
* ipod-sharp.snk: moved from src/
2005-06-18 James Willcox <>
* src/ipod-sharp.dll.config: added
2005-06-18 James Willcox <>
* src/en/*: updated
2005-06-18 James Willcox <>
* tests/
* tests/
Fix things so they work when builddir != srcdir.
2005-06-18 James Willcox <>
* src/Equalizer.cs: added
* src/Device.cs: add equalizer bits
* src/SongDatabase.cs: clean up some
* tests/IPodTests.cs: add equalizer tests
* tests/tests/ipod-test-db-v12-a.tar.gz: add a EQ file, since it was missing one
2005-06-17 James Willcox <>
* src/Device.cs: update bindings to handle the recently added
GError arguments.
* tests/IPodTests.cs: put funky UTF-8 strings in some of the tests
2005-06-17 James Willcox <>
* tests/ Fixup a bit, and include more stuff in the tarball
* tests/ Accept a device to test, which makes a test
tarball out of it and runs the tests.
2005-06-17 James Willcox <>
* src/Song.cs: add TotalTracks
* tests/IPodTests.cs: add above to tests
* tests/ added, convenience script
* tests/ use
2005-06-17 James Willcox <>
* src/SongDatabase.cs:
* src/Song.cs: support setting PlayCount, LastPlayed, and Rating
* src/IPodTests.cs: update tests for the above and other
Song properties
2005-06-17 James Willcox <>
* src/SongDatabase.cs: Add On-The-Go playlist support
* src/Playlist.cs: ditto
* tests/IPodTests.cs: add tests for the above
2005-06-17 James Willcox <>
* tests/IPodTests.cs: moved from DatabaseTests.cs
* tests/ s/db-tests.dll/ipod-sharp-tests.dll/
2005-06-17 James Willcox <>
* src/SongDatabase.cs: don't write crap to stderr if the play counts
can't be loaded.
* tests/DatabaseTests.cs: s/ApplicationException/DeviceException/
Start keeping a ChangeLog again, now that things are in svn.
2005-05-12 James Willcox <>
* src/SongDatabase.cs: check the free space before copying songs
2005-05-12 James Willcox <>
* src/SongDatabase.cs: fixup playlist creation a little, and add
2005-05-10 James Willcox <>
* src/SongDatabase.cs: Add API and fix things to enable creation
of new playlists.
2005-05-10 James Willcox <>
* import into baz
2005-05-10 James Willcox <>
* src/SongDatabase.cs: get the filename from the record, when copying
* src/Song.cs: sanitize the filename, since apparently '?' causes
problems for bizarre reasons.
* bump to 0.0.3
2005-05-10 James Willcox <>
* bump to 0.0.2
2005-05-10 James Willcox <>
* src/SongDatabase.cs: rollback the db if something goes wrong while
copying files.
* src/Song.cs: support AAC files correctly, hopefully.
* tools/PodTool.cs: add --dump-files option
2005-02-04 James Willcox <>
* tests/DatabaseTests.cs: add an assertion
2005-02-04 James Willcox <>
* add tests subdir
* add --disable-tests
* src/Song.cs: fix filename handling
* src/SongDatabase.cs: fix miscellenous crap
* tests/DatabaseTests.cs: added
* tests/ ditto
* tests/ipod-test-db.tar.gz: ditto
* tools/PodTool.cs: add --clear
2005-01-24 James Willcox <>
* src/
* tools/
Fix the dist (sort of)