private void populateSources()
        {
            try {
                // Clear the sources, if there are any.
                sourceListing1.Items.Clear();
                sourceListing2.Items.Clear();
                sources = iTunes.Sources;

                // Populate the source listings with libraries and iPods.
                foreach (IITSource source in sources)
                {
                    if (source.Kind == ITSourceKind.ITSourceKindLibrary || source.Kind == ITSourceKind.ITSourceKindIPod)
                    {
                        sourceListing1.Items.Add(source.Name);
                        sourceListing2.Items.Add(source.Name);
                    }
                }
                if (sourceListing1.Items.Count == 1)
                {
                    MessageBox.Show("Only one available source was detected. Please add another source (such as an iPod) and refresh the sources from the menu to continue.");
                    buttonPreview.Visible = false;
                }
                else
                {
                    buttonPreview.Visible = true;
                }
            } catch (Exception ex) {
                MessageBox.Show("There was a problem getting the listing of sources." + System.Environment.NewLine
                                + "Message: " + ex.Message);
            }
        }
        /// <summary>
        /// Returns all sources currently loaded into iTunes.
        /// </summary>
        /// <returns>DataTable with source information.</returns>
        public DataTable GetSources()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("Index");
            dt.Columns.Add("Name");
            dt.Columns.Add("Kind");
            dt.Columns.Add("SourceId");
            //dt.Columns.Add("PlaylistId");
            //dt.Columns.Add("TrackDatabaseId");
            //dt.Columns.Add("TrackId");
            dt.Columns.Add("Capacity");
            dt.Columns.Add("FreeSpace");

            IITSourceCollection sources = iTunes.Sources;
            DataRow             dr;

            foreach (IITSource source in sources)
            {
                dr             = dt.NewRow();
                dr["Index"]    = source.Index;
                dr["Name"]     = source.Name;
                dr["Kind"]     = source.Kind;
                dr["SourceId"] = source.sourceID;
                //dr["PlaylistId"] = source.playlistID;
                //dr["TrackDatabaseId"] = source.TrackDatabaseID;
                //dr["TrackId"] = source.trackID;
                dr["Capacity"]  = source.Capacity;
                dr["FreeSpace"] = source.FreeSpace;
                dt.Rows.Add(dr);
                //source.Playlists;//IITPlaylistCollection
            }
            return(dt);
        }
Beispiel #3
0
        // update all iPods
        public static void SyncAlliPods()
        {
            iTunesApp           iTunes  = new iTunesApp();
            IITSourceCollection sources = iTunes.Sources;

            foreach (IITSource source in sources)
            {
                if (source.Kind == ITSourceKind.ITSourceKindIPod)
                {
                    ((IITIPodSource)source).UpdateIPod();
                }
            }
        }
 private bool GetSourceListing()
 {
     try {
         if (iTunes.Sources.Count > 0)
         {
             sources = iTunes.Sources;
             return(true);
         }
         else
         {
             Console.WriteLine("There are no sources available.");
             return(false);
         }
     } catch (Exception ex) {
         Console.WriteLine("Unable to get a listing of sources from iTunes.");
         Console.WriteLine("Error message: " + ex.Message);
         return(false);
     }
 }
        private void ApplicationStartUp()
        {
            try {
                // Connect to iTunes.
                iTunes = new iTunesAppClass();
                toolStripStatusLabel.Text = "Connected to iTunes. Attempting to get available sources.";

                // Get the available sources.
                sources = iTunes.Sources;
                toolStripStatusLabel.Text = "Available sources retrieved.";
                // Clear whatever is in the list box.
                listBoxSources.Items.Clear();
                // Generate the listing of fields that can be output in the Xml document.
                foreach (IITSource source in sources) {
                    if (source.Kind == ITSourceKind.ITSourceKindLibrary || source.Kind == ITSourceKind.ITSourceKindIPod) {
                        toolStripStatusLabel.Text = "Source found. Adding to list.";
                        listBoxSources.Items.Add(source.Name);
                    }
                }
                toolStripStatusLabel.Text = "All available sources added.";
                toolStripStatusLabel.Text = "Attempting to retrieve configuration settings.";
                toolStripStatusLabel.Text = "Application started. Select a source and/or playlist.";
            } catch (Exception ex) {
                MessageBox.Show("Unable to connect to iTunes. Please exit application and verify that iTunes is installed on your machine." + System.Environment.NewLine + "Message: " + ex.Message);
                return;
            }
            // Setup the main background worker.
            bWorker.WorkerSupportsCancellation = true;
            bWorker.WorkerReportsProgress = true;
            bWorker.DoWork += new DoWorkEventHandler(PopulateXmlDataWorker);
            bWorker.ProgressChanged += new ProgressChangedEventHandler(OnGenericWorkerProgressChanged);

            if (listBoxSources.Items.Count > 0) {
                if (startingSource.Length > 0 && listBoxSources.Items.Contains(startingSource)) {
                    listBoxSources.SelectedIndex = listBoxSources.Items.IndexOf(startingSource);
                } else {
                    listBoxSources.SelectedIndex = 0;
                }
            }
        }
        /// <summary>
        /// Returns a DataTable with all tracks on a particular source.
        /// </summary>
        /// <param name="sourceId">Unique ID associated to sources by iTunes. Use GetSources method for listing.</param>
        /// <returns>DataTable with basic track information.</returns>
        public DataTable GetSourceTracks(int sourceId)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("Index");
            dt.Columns.Add("Name");
            dt.Columns.Add("Artist");
            dt.Columns.Add("Album");
            //dt.Columns.Add("");

            DataRow dr;

            IITSourceCollection sources = iTunes.Sources;

            foreach (IITSource source in sources)
            {
                if (source.sourceID == sourceId)
                {
                    foreach (IITPlaylist playlist in source.Playlists)
                    {
                        if (playlist.Kind == ITPlaylistKind.ITPlaylistKindLibrary)
                        {
                            foreach (IITTrack track in playlist.Tracks)
                            {
                                dr           = dt.NewRow();
                                dr["Index"]  = track.Index;
                                dr["Name"]   = track.Name;
                                dr["Artist"] = track.Artist;
                                dr["Album"]  = track.Album;
                                dt.Rows.Add(dr);
                            }
                            break;
                        }
                    }
                    break;
                }
            }
            return(dt);
        }
Beispiel #7
0
        private void AllProps(iTunesAppClass itunes)
        {
            bool                  acmpEnabled = itunes.AppCommandMessageProcessingEnabled;
            IITEncoder            encoder     = itunes.CurrentEncoder;
            IITEQPreset           eqPreset    = itunes.CurrentEQPreset;
            IITPlaylist           playlist    = itunes.CurrentPlaylist;
            string                streamTitle = itunes.CurrentStreamTitle;
            string                streamURL   = itunes.CurrentStreamURL;
            IITTrack              track       = itunes.CurrentTrack;
            IITVisual             visual      = itunes.CurrentVisual;
            IITEncoderCollection  encoders    = itunes.Encoders;
            bool                  eqEnabled   = itunes.EQEnabled;
            IITEQPresetCollection eqPresets   = itunes.EQPresets;

            // this always seems to raise a COM exception, whether playing or stopped...
            //IITWindow eqWindow = itunes.EQWindow;

            bool fgOnDialog = itunes.ForceToForegroundOnDialog;
            bool fsVisuals  = itunes.FullScreenVisuals;
            IITLibraryPlaylist libPlaylist = itunes.LibraryPlaylist;
            IITSource          libSource   = itunes.LibrarySource;
            string             libXmlPath  = itunes.LibraryXMLPath;
            bool mute = itunes.Mute;

            // this will raise a COM exception when iTunes first started
            //int position = itunes.PlayerPosition;

            ITPlayerState      state          = itunes.PlayerState;
            IITTrackCollection selectedTracks = itunes.SelectedTracks;
            int  volume                        = itunes.SoundVolume;
            bool volEnabled                    = itunes.SoundVolumeControlEnabled;
            IITSourceCollection sources        = itunes.Sources;
            string version                     = itunes.Version;
            IITVisualCollection visuals        = itunes.Visuals;
            bool                visualsEnabled = itunes.VisualsEnabled;
            ITVisualSize        visualSize     = itunes.VisualSize;
            IITWindowCollection windows        = itunes.Windows;
        }
Beispiel #8
0
        public static CPlaylist LoadPlaylists(iTunesApp itunes)
        {
            CPlaylist             retPlaylist = new CPlaylist(null);
            IITSourceCollection   sources     = itunes.Sources;
            IITPlaylistCollection playlists   = null;
            IITSource             plSource    = null;

            foreach (IITSource source in sources)
            {
                if (source.Kind == ITSourceKind.ITSourceKindLibrary)
                {
                    plSource  = source;
                    playlists = source.Playlists;
                    break;
                }
            }
            foreach (IITPlaylist pl in playlists)
            {
                if (pl.Kind != ITPlaylistKind.ITPlaylistKindUser)
                {
                    continue;
                }
                try
                {
                    IITUserPlaylist upl = (IITUserPlaylist)pl;
                    if (upl.Smart)
                    {
                        continue;
                    }
                    if (upl.SpecialKind == ITUserPlaylistSpecialKind.ITUserPlaylistSpecialKindPodcasts)
                    {
                        continue;
                    }
                    string strDir = string.Empty;
                    Stack <IITUserPlaylist> parentStack = new Stack <IITUserPlaylist>();
                    IITUserPlaylist         uplp        = upl.get_Parent();
                    if (uplp != null)
                    {
                        parentStack.Push(uplp);
                        IITUserPlaylist uplc = uplp;
                        do
                        {
                            uplp = uplc.get_Parent();
                            if (uplp != null)
                            {
                                parentStack.Push(uplp);
                                uplc = uplp;
                            }
                        } while (uplp != null);
                    }
                    CPlaylist parentPL   = retPlaylist;
                    bool      bFoundLeaf = false;
                    do
                    {
                        uplp = (parentStack.Count > 0) ? parentStack.Pop() : null;
                        if (uplp == null)
                        {
                            bFoundLeaf = true;
                        }
                        else
                        {
                            CPlaylist childPL = null;
                            foreach (var item in parentPL.Children)
                            {
                                if (item.Name == uplp.Name)
                                {
                                    childPL = item;
                                    break;
                                }
                            }
                            if (childPL != null)
                            {
                                parentPL = childPL;
                            }
                            else
                            {
                                bFoundLeaf = true;
                            }
                        }
                    } while (!bFoundLeaf);
                    while (uplp != null)
                    {
                        CPlaylist plChild = new CPlaylist(uplp, true);
                        parentPL.Children.Add(plChild);
                        parentPL = plChild;
                        uplp     = (parentStack.Count > 0) ? parentStack.Pop() : null;
                    }
                    parentPL.Children.Add(new CPlaylist(upl));
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            }
            return(retPlaylist);
        }