[Mediaportal-svn] SF.net SVN: mediaportal: [10099] trunk/mediaportal
Turn your PC into a very advanced MediaCenter/HTPC
Brought to you by:
gereonheitmann,
morpheus_xx
From: <hwa...@us...> - 2006-08-31 13:02:59
|
Revision: 10099 http://svn.sourceforge.net/mediaportal/?rev=10099&view=rev Author: hwahrmann Date: 2006-08-31 06:02:11 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Added MusicShareWatcher to Monitor changes on Music shares and update the Music Database accordingly. Modified Paths: -------------- trunk/mediaportal/Configuration/Sections/MusicDatabase.cs trunk/mediaportal/Core/guilib/Log.cs trunk/mediaportal/Databases/Music/Database.cs trunk/mediaportal/MediaPortal.VC#Express.sln trunk/mediaportal/MediaPortal.sln trunk/mediaportal/ProcessPlugins/ProcessPlugins.csproj trunk/mediaportal/xbmc/MediaPortal.csproj trunk/mediaportal/xbmc/bin/Debug/PostBuild.bat trunk/mediaportal/xbmc/bin/Release/PostBuild.bat Added Paths: ----------- trunk/mediaportal/ProcessPlugins/MusicShareWatcher/ trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/ trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/MusicShareWatcher.Designer.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/MusicShareWatcher.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/MusicShareWatcher.csproj trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/MusicShareWatcher.ico trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/MusicShareWatcher.resx trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Program.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/ trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/AssemblyInfo.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/Resources.Designer.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/Resources.resx trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/Settings.Designer.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcher/Properties/Settings.settings trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/ trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/DelayedFileSystemWatcher.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/MusicShareWatcherHelper.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/MusicShareWatcherHelper.csproj trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/ trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/AssemblyInfo.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/Resources.Designer.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/Resources.resx trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/Settings.Designer.cs trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherHelper/Properties/Settings.settings trunk/mediaportal/ProcessPlugins/MusicShareWatcher/MusicShareWatcherPlugin.cs Modified: trunk/mediaportal/Configuration/Sections/MusicDatabase.cs =================================================================== --- trunk/mediaportal/Configuration/Sections/MusicDatabase.cs 2006-08-31 12:45:20 UTC (rev 10098) +++ trunk/mediaportal/Configuration/Sections/MusicDatabase.cs 2006-08-31 13:02:11 UTC (rev 10099) @@ -57,6 +57,7 @@ private MediaPortal.UserInterface.Controls.MPCheckBox scanForVariousArtistsCheckBox; private MediaPortal.UserInterface.Controls.MPCheckBox folderAsAlbumCheckBox; + private MediaPortal.UserInterface.Controls.MPCheckBox monitorSharesCheckBox; public class MusicData { @@ -142,6 +143,7 @@ buildThumbsCheckBox.Checked = xmlreader.GetValueAsBool("musicfiles", "buildThumbs", false); folderAsAlbumCheckBox.Checked = xmlreader.GetValueAsBool("musicfiles", "treatFolderAsAlbum", false); scanForVariousArtistsCheckBox.Checked = xmlreader.GetValueAsBool("musicfiles", "scanForVariousArtists", true); + monitorSharesCheckBox.Checked = xmlreader.GetValueAsBool("musicfiles", "monitorShares", false); } } @@ -156,6 +158,7 @@ xmlwriter.SetValueAsBool("musicfiles", "treatFolderAsAlbum", folderAsAlbumCheckBox.Checked); xmlwriter.SetValueAsBool("musicfiles", "scanForVariousArtists", scanForVariousArtistsCheckBox.Checked); + xmlwriter.SetValueAsBool("musicfiles", "monitorShares", monitorSharesCheckBox.Checked); } } @@ -182,152 +185,165 @@ /// </summary> private void InitializeComponent() { - this.groupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); - this.scanForVariousArtistsCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); - this.folderAsAlbumCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); - this.buildThumbsCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); - this.startButton = new MediaPortal.UserInterface.Controls.MPButton(); - this.sharesListBox = new System.Windows.Forms.CheckedListBox(); - this.cancelButton = new MediaPortal.UserInterface.Controls.MPButton(); - this.groupBox2 = new MediaPortal.UserInterface.Controls.MPGroupBox(); - this.fileLabel = new MediaPortal.UserInterface.Controls.MPLabel(); - this.progressBar = new System.Windows.Forms.ProgressBar(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.SuspendLayout(); - // - // groupBox1 - // - this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox1.Controls.Add(this.scanForVariousArtistsCheckBox); - this.groupBox1.Controls.Add(this.folderAsAlbumCheckBox); - this.groupBox1.Controls.Add(this.buildThumbsCheckBox); - this.groupBox1.Controls.Add(this.startButton); - this.groupBox1.Controls.Add(this.sharesListBox); - this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.groupBox1.Location = new System.Drawing.Point(0, 0); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(472, 234); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Scan Music Folders"; - // - // scanForVariousArtistsCheckBox - // - this.scanForVariousArtistsCheckBox.AutoSize = true; - this.scanForVariousArtistsCheckBox.Checked = true; - this.scanForVariousArtistsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.scanForVariousArtistsCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.scanForVariousArtistsCheckBox.Location = new System.Drawing.Point(16, 169); - this.scanForVariousArtistsCheckBox.Name = "scanForVariousArtistsCheckBox"; - this.scanForVariousArtistsCheckBox.Size = new System.Drawing.Size(169, 17); - this.scanForVariousArtistsCheckBox.TabIndex = 3; - this.scanForVariousArtistsCheckBox.Text = "Scan albums for Various Artists"; - this.scanForVariousArtistsCheckBox.UseVisualStyleBackColor = true; - // - // folderAsAlbumCheckBox - // - this.folderAsAlbumCheckBox.AutoSize = true; - this.folderAsAlbumCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.folderAsAlbumCheckBox.Location = new System.Drawing.Point(16, 148); - this.folderAsAlbumCheckBox.Name = "folderAsAlbumCheckBox"; - this.folderAsAlbumCheckBox.Size = new System.Drawing.Size(243, 17); - this.folderAsAlbumCheckBox.TabIndex = 2; - this.folderAsAlbumCheckBox.Text = "Treat tracks in an individual folder as an album"; - this.folderAsAlbumCheckBox.UseVisualStyleBackColor = true; - // - // buildThumbsCheckBox - // - this.buildThumbsCheckBox.AutoSize = true; - this.buildThumbsCheckBox.Checked = true; - this.buildThumbsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.buildThumbsCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.buildThumbsCheckBox.Location = new System.Drawing.Point(16, 127); - this.buildThumbsCheckBox.Name = "buildThumbsCheckBox"; - this.buildThumbsCheckBox.Size = new System.Drawing.Size(247, 17); - this.buildThumbsCheckBox.TabIndex = 1; - this.buildThumbsCheckBox.Text = "Use coverart embedded in MP3s for thumbnails"; - this.buildThumbsCheckBox.UseVisualStyleBackColor = true; - // - // startButton - // - this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.startButton.Location = new System.Drawing.Point(240, 202); - this.startButton.Name = "startButton"; - this.startButton.Size = new System.Drawing.Size(216, 22); - this.startButton.TabIndex = 4; - this.startButton.Text = "Update database from selected shares"; - this.startButton.UseVisualStyleBackColor = true; - this.startButton.Click += new System.EventHandler(this.startButton_Click); - // - // sharesListBox - // - this.sharesListBox.CheckOnClick = true; - this.sharesListBox.Location = new System.Drawing.Point(16, 24); - this.sharesListBox.Name = "sharesListBox"; - this.sharesListBox.Size = new System.Drawing.Size(440, 94); - this.sharesListBox.TabIndex = 0; - this.sharesListBox.DoubleClick += new System.EventHandler(this.sharesListBox_DoubleClick); - this.sharesListBox.SelectedIndexChanged += new System.EventHandler(this.sharesListBox_SelectedIndexChanged); - this.sharesListBox.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.sharesListBox_ItemCheck); - // - // cancelButton - // - this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.cancelButton.Location = new System.Drawing.Point(384, 328); - this.cancelButton.Name = "cancelButton"; - this.cancelButton.Size = new System.Drawing.Size(72, 22); - this.cancelButton.TabIndex = 2; - this.cancelButton.Text = "Cancel"; - this.cancelButton.UseVisualStyleBackColor = true; - this.cancelButton.Visible = false; - this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); - // - // groupBox2 - // - this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox2.Controls.Add(this.fileLabel); - this.groupBox2.Controls.Add(this.progressBar); - this.groupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.groupBox2.Location = new System.Drawing.Point(0, 240); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(472, 80); - this.groupBox2.TabIndex = 1; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Progress"; - // - // fileLabel - // - this.fileLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.fileLabel.Location = new System.Drawing.Point(16, 24); - this.fileLabel.Name = "fileLabel"; - this.fileLabel.Size = new System.Drawing.Size(440, 16); - this.fileLabel.TabIndex = 0; - // - // progressBar - // - this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar.Location = new System.Drawing.Point(16, 48); - this.progressBar.Name = "progressBar"; - this.progressBar.Size = new System.Drawing.Size(440, 16); - this.progressBar.TabIndex = 1; - // - // MusicDatabase - // - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.cancelButton); - this.Name = "MusicDatabase"; - this.Size = new System.Drawing.Size(472, 408); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.ResumeLayout(false); + this.groupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.scanForVariousArtistsCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.folderAsAlbumCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.buildThumbsCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.startButton = new MediaPortal.UserInterface.Controls.MPButton(); + this.sharesListBox = new System.Windows.Forms.CheckedListBox(); + this.cancelButton = new MediaPortal.UserInterface.Controls.MPButton(); + this.groupBox2 = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.fileLabel = new MediaPortal.UserInterface.Controls.MPLabel(); + this.progressBar = new System.Windows.Forms.ProgressBar(); + this.monitorSharesCheckBox = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.monitorSharesCheckBox); + this.groupBox1.Controls.Add(this.scanForVariousArtistsCheckBox); + this.groupBox1.Controls.Add(this.folderAsAlbumCheckBox); + this.groupBox1.Controls.Add(this.buildThumbsCheckBox); + this.groupBox1.Controls.Add(this.startButton); + this.groupBox1.Controls.Add(this.sharesListBox); + this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(472, 265); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Scan Music Folders"; + // + // scanForVariousArtistsCheckBox + // + this.scanForVariousArtistsCheckBox.AutoSize = true; + this.scanForVariousArtistsCheckBox.Checked = true; + this.scanForVariousArtistsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.scanForVariousArtistsCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.scanForVariousArtistsCheckBox.Location = new System.Drawing.Point(16, 169); + this.scanForVariousArtistsCheckBox.Name = "scanForVariousArtistsCheckBox"; + this.scanForVariousArtistsCheckBox.Size = new System.Drawing.Size(169, 17); + this.scanForVariousArtistsCheckBox.TabIndex = 3; + this.scanForVariousArtistsCheckBox.Text = "Scan albums for Various Artists"; + this.scanForVariousArtistsCheckBox.UseVisualStyleBackColor = true; + // + // folderAsAlbumCheckBox + // + this.folderAsAlbumCheckBox.AutoSize = true; + this.folderAsAlbumCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.folderAsAlbumCheckBox.Location = new System.Drawing.Point(16, 148); + this.folderAsAlbumCheckBox.Name = "folderAsAlbumCheckBox"; + this.folderAsAlbumCheckBox.Size = new System.Drawing.Size(243, 17); + this.folderAsAlbumCheckBox.TabIndex = 2; + this.folderAsAlbumCheckBox.Text = "Treat tracks in an individual folder as an album"; + this.folderAsAlbumCheckBox.UseVisualStyleBackColor = true; + // + // buildThumbsCheckBox + // + this.buildThumbsCheckBox.AutoSize = true; + this.buildThumbsCheckBox.Checked = true; + this.buildThumbsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.buildThumbsCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.buildThumbsCheckBox.Location = new System.Drawing.Point(16, 127); + this.buildThumbsCheckBox.Name = "buildThumbsCheckBox"; + this.buildThumbsCheckBox.Size = new System.Drawing.Size(247, 17); + this.buildThumbsCheckBox.TabIndex = 1; + this.buildThumbsCheckBox.Text = "Use coverart embedded in MP3s for thumbnails"; + this.buildThumbsCheckBox.UseVisualStyleBackColor = true; + // + // startButton + // + this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.startButton.Location = new System.Drawing.Point(240, 233); + this.startButton.Name = "startButton"; + this.startButton.Size = new System.Drawing.Size(216, 22); + this.startButton.TabIndex = 4; + this.startButton.Text = "Update database from selected shares"; + this.startButton.UseVisualStyleBackColor = true; + this.startButton.Click += new System.EventHandler(this.startButton_Click); + // + // sharesListBox + // + this.sharesListBox.CheckOnClick = true; + this.sharesListBox.Location = new System.Drawing.Point(16, 24); + this.sharesListBox.Name = "sharesListBox"; + this.sharesListBox.Size = new System.Drawing.Size(440, 94); + this.sharesListBox.TabIndex = 0; + this.sharesListBox.DoubleClick += new System.EventHandler(this.sharesListBox_DoubleClick); + this.sharesListBox.SelectedIndexChanged += new System.EventHandler(this.sharesListBox_SelectedIndexChanged); + this.sharesListBox.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.sharesListBox_ItemCheck); + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.Location = new System.Drawing.Point(384, 359); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(72, 22); + this.cancelButton.TabIndex = 2; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Visible = false; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.fileLabel); + this.groupBox2.Controls.Add(this.progressBar); + this.groupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBox2.Location = new System.Drawing.Point(0, 271); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(472, 82); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Progress"; + // + // fileLabel + // + this.fileLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.fileLabel.Location = new System.Drawing.Point(16, 24); + this.fileLabel.Name = "fileLabel"; + this.fileLabel.Size = new System.Drawing.Size(440, 16); + this.fileLabel.TabIndex = 0; + // + // progressBar + // + this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar.Location = new System.Drawing.Point(16, 48); + this.progressBar.Name = "progressBar"; + this.progressBar.Size = new System.Drawing.Size(440, 16); + this.progressBar.TabIndex = 1; + // + // monitorSharesCheckBox + // + this.monitorSharesCheckBox.AutoSize = true; + this.monitorSharesCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.monitorSharesCheckBox.Location = new System.Drawing.Point(16, 191); + this.monitorSharesCheckBox.Name = "monitorSharesCheckBox"; + this.monitorSharesCheckBox.Size = new System.Drawing.Size(256, 17); + this.monitorSharesCheckBox.TabIndex = 5; + this.monitorSharesCheckBox.Text = "Monitor shares for changes and update database"; + this.monitorSharesCheckBox.UseVisualStyleBackColor = true; + // + // MusicDatabase + // + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.cancelButton); + this.Name = "MusicDatabase"; + this.Size = new System.Drawing.Size(472, 408); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.ResumeLayout(false); } #endregion Modified: trunk/mediaportal/Core/guilib/Log.cs =================================================================== --- trunk/mediaportal/Core/guilib/Log.cs 2006-08-31 12:45:20 UTC (rev 10098) +++ trunk/mediaportal/Core/guilib/Log.cs 2006-08-31 13:02:11 UTC (rev 10099) @@ -43,7 +43,8 @@ Error, EPG, VMR9, - Config + Config, + MusicShareWatcher } public enum Level @@ -139,21 +140,41 @@ WriteFile(LogType.Log, Level.Information, format, arg); } + static public void Info(LogType type, string format, params object[] arg) + { + WriteFile(type, Level.Information, format, arg); + } + static public void Warn(string format, params object[] arg) { WriteFile(LogType.Log, Level.Warning, format, arg); } + static public void Warn(LogType type, string format, params object[] arg) + { + WriteFile(type, Level.Warning, format, arg); + } + static public void Debug(string format, params object[] arg) { WriteFile(LogType.Log, Level.Debug, format, arg); } + static public void Debug(LogType type, string format, params object[] arg) + { + WriteFile(type, Level.Debug, format, arg); + } + static public void Error(string format, params object[] arg) { WriteFile(LogType.Log, true, format, arg); } + static public void Error(LogType type, string format, params object[] arg) + { + WriteFile(type, true, format, arg); + } + static public void Error(Exception ex) { Write(ex); @@ -228,6 +249,9 @@ case LogType.VMR9: fname = logDir + "vmr9.log"; break; + case LogType.MusicShareWatcher: + fname = logDir + "MusicshareWatcher.log"; + break; } return fname; } @@ -301,7 +325,7 @@ } // - if (type != LogType.Log && type != LogType.Error && type != LogType.EPG) + if (type != LogType.Log && type != LogType.Error && type != LogType.EPG && type != LogType.MusicShareWatcher) WriteFile(LogType.Log, format, arg); }//static public void WriteFile(LogType type, string format, params object[] arg) } Modified: trunk/mediaportal/Databases/Music/Database.cs =================================================================== --- trunk/mediaportal/Databases/Music/Database.cs 2006-08-31 12:45:20 UTC (rev 10098) +++ trunk/mediaportal/Databases/Music/Database.cs 2006-08-31 13:02:11 UTC (rev 10099) @@ -2732,65 +2732,10 @@ if (System.IO.File.Exists(strFileName)) { - /// PDW 24-MAY-2005 - /// Added description - /// The file for this song still exists so we can update the Tags - int idAlbumNew = 0; - int idArtistNew = 0; - int idPathNew = 0; - int idGenreNew = 0; - - //Log.Info("Musicdatabasereorg: starting Tag update 2 for existing file {0} ", strFileName); + // The song will be updated, tags from the file will be checked against the tags in the database int idSong = Int32.Parse(DatabaseUtility.Get(FileList, i, "song.idSong")); - - //Log.Info("Musicdatabasereorg: starting Tag update 3 for existing file {0} ", strFileName); - try + if (!UpdateSong(strFileName, idSong)) { - int idAlbum = idAlbumNew = Int32.Parse(DatabaseUtility.Get(FileList, i, "song.idAlbum")); - } - catch (Exception) - { - Log.Error("Musicdatabasereorg: failed Tag update 3 for existing file {0} ", strFileName); - } - - //Log.Info("Musicdatabasereorg: starting Tag update 4 for existing file {0} ", strFileName); - try - { - int idArtist = idArtistNew = Int32.Parse(DatabaseUtility.Get(FileList, i, "song.idArtist")); - } - catch (Exception) - { - Log.Error("Musicdatabasereorg: failed Tag update 4 for existing file {0} ", strFileName); - } - - //Log.Info("Musicdatabasereorg: starting Tag update 5 for existing file {0} ", strFileName); - try - { - int idPath = idPathNew = Int32.Parse(DatabaseUtility.Get(FileList, i, "song.idPath")); - } - catch (Exception) - { - Log.Error("Musicdatabasereorg: failed Tag update 5 for existing file {0} ", strFileName); - } - - - //Log.Info("Musicdatabasereorg: starting Tag update 6 for existing file {0} ", strFileName); - try - { - int idGenre = idGenreNew = Int32.Parse(DatabaseUtility.Get(FileList, i, "song.idGenre")); - } - catch (Exception) - { - Log.Error("Musicdatabasereorg: failed Tag update 7 for existing file {0} ", strFileName); - } - - - /// PDW 24-MAY-2005 - /// The song will be updated, tags from the file will be checked against the tags in the database - /// But why do we send all the id's - //Log.Info("Musicdatabasereorg: starting Tag update 7 for {0} ", strFileName); - if (!UpdateSong(strFileName, idSong, ref idAlbumNew, ref idArtistNew, ref idGenreNew, ref idPathNew)) - { Log.Info("Musicdatabasereorg: Song update after tag update failed for", strFileName); //m_db.Execute("rollback"); return (int)Errors.ERROR_REORG_SONGS; @@ -2813,10 +2758,15 @@ return (int)Errors.ERROR_OK; } - public bool UpdateSong(string strPathSong, int idSong, ref int idAlbum, ref int idArtist, ref int idGenre, ref int idPath) + public bool UpdateSong(string strPathSong, int idSong) { try { + int idAlbum = 0; + int idArtist = 0; + int idPath = 0; + int idGenre = 0; + MusicTag tag; byte[] imageBytes = null; tag = TagReader.TagReader.ReadTag(strPathSong, ref imageBytes); @@ -3484,7 +3434,7 @@ } } - private void UpdateAlbumArtistsCounts(int startProgress, int endProgress) + public void UpdateAlbumArtistsCounts(int startProgress, int endProgress) { if (m_albumCache.Count == 0) return; @@ -3502,8 +3452,10 @@ try { - foreach (AlbumInfoCache album in m_albumCache) + // Process the array from the end, to have no troubles when removing processed items + for (int j = m_albumCache.Count - 1; j > -1; j--) { + AlbumInfoCache album = (AlbumInfoCache)m_albumCache[j]; artistCountTable.Clear(); if (album.Album == Strings.Unknown) @@ -3548,6 +3500,12 @@ strSQL = string.Format("update album set iNumArtists={0} where idAlbum={1}", artistCount, album.idAlbum); m_db.Execute(strSQL); + + // Remove the processed Album from the cache + lock (m_albumCache) + { + m_albumCache.RemoveAt(j); + } if ((albumCounter % 10) == 0) { @@ -3640,8 +3598,209 @@ } } + // by hwahrmann to support the MusicShareWatcher + public bool SongExists(string strFileName) + { + ulong dwCRC = 0; + CRCTool crc = new CRCTool(); + crc.Init(CRCTool.CRCCode.CRC32); + dwCRC = crc.calc(strFileName); + string strSQL; + strSQL = String.Format("select idSong from song where dwFileNameCRC like '{0}'", + dwCRC); + + SQLiteResultSet results; + results = m_db.Execute(strSQL); + if (results.Rows.Count > 0) + // Found + return true; + else + // Not Found + return false; + } + + public bool RenameSong(string strOldFileName, string strNewFileName) + { + try + { + string strPath, strFName; + DatabaseUtility.Split(strNewFileName, out strPath, out strFName); + + CRCTool crc = new CRCTool(); + crc.Init(CRCTool.CRCCode.CRC32); + + // The rename may have been on a directory or a file + // In case of a directory rename, the Path needs to be corrected + FileInfo fi = new FileInfo(strNewFileName); + if (fi.Exists) + { + // Must be a file that has been changed + // Now get the CRC of the original file name and the new file name + ulong dwOldCRC = crc.calc(strOldFileName); + ulong dwNewCRC = crc.calc(strNewFileName); + + DatabaseUtility.RemoveInvalidChars(ref strFName); + + string strSQL; + strSQL = String.Format("update song set dwFileNameCRC = '{0}', strFileName = '{1}' where dwFileNameCRC like '{2}'", + dwNewCRC, + strFName, + dwOldCRC); + SQLiteResultSet results; + results = m_db.Execute(strSQL); + return true; + } + else + { + // See if it is a directory + DirectoryInfo di = new DirectoryInfo(strNewFileName); + if (di.Exists) + { + // Must be a directory, so let's change the path entries, containing the old + // name with the new name + DatabaseUtility.RemoveInvalidChars(ref strOldFileName); + + string strSQL; + strSQL = String.Format("select * from path where strPath like '{0}%'", + strOldFileName); + + SQLiteResultSet results; + SQLiteResultSet resultSongs; + ulong dwCRC = 0; + results = m_db.Execute(strSQL); + if (results.Rows.Count > 0) + { + try + { + BeginTransaction(); + // We might have changed a Top directory, so we get a lot of path entries returned + for (int rownum = 0; rownum < results.Rows.Count; rownum++) + { + int lPathId = DatabaseUtility.GetAsInt(results, rownum, "path.idPath"); + string strTmpPath = DatabaseUtility.Get(results, rownum, "path.strPath"); + strPath = strTmpPath.Replace(strOldFileName, strNewFileName); + // Need to keep an unmodified path for the later CRC calculation + strTmpPath = strPath; + DatabaseUtility.RemoveInvalidChars(ref strTmpPath); + strSQL = String.Format("update path set strPath='{0}' where idPath={1}", + strTmpPath, + lPathId); + + m_db.Execute(strSQL); + // And now we need to update the songs with the new CRC + strSQL = String.Format("select * from song where idPath = {0}", + lPathId); + resultSongs = m_db.Execute(strSQL); + if (resultSongs.Rows.Count > 0) + { + for (int i = 0; i < resultSongs.Rows.Count; i++) + { + strFName = DatabaseUtility.Get(resultSongs, i, "song.strFileName"); + int lSongId = DatabaseUtility.GetAsInt(resultSongs, i, "song.idSong"); + dwCRC = crc.calc(strPath + strFName); + strSQL = String.Format("update song set dwFileNameCRC='{0}' where idSong={1}", + dwCRC, + lSongId); + m_db.Execute(strSQL); + } + } + EmptyCache(); + } + CommitTransaction(); + return true; + } + catch (Exception) + { + RollbackTransaction(); + Log.Info(Log.LogType.MusicShareWatcher, "RenameSong: Rename for {0} failed because of DB exception", strPath); + return false; + } + } + return true; + } + else + { + return false; + } + } + } + catch (Exception ex) + { + Log.Error(Log.LogType.MusicShareWatcher, "musicdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + return false; + } + } + + /// <summary> + /// A complete Path has been deleted. Now we need to remove all Songs for that path from the dB. + /// </summary> + /// <param name="strPath"></param> + /// <returns></returns> + public bool DeleteSongDirectory(string strPath) + { + try + { + DatabaseUtility.RemoveInvalidChars(ref strPath); + + string strSQL; + strSQL = String.Format("select * from path where strPath like '{0}%'", + strPath); + + // Get all songs and Path matching the deleted directory and remove them. + SQLiteResultSet results; + SQLiteResultSet resultSongs; + results = m_db.Execute(strSQL); + if (results.Rows.Count > 0) + { + try + { + BeginTransaction(); + // We might have deleted a Top directory, so we get a lot of path entries returned + for (int rownum = 0; rownum < results.Rows.Count; rownum++) + { + int lPathId = DatabaseUtility.GetAsInt(results, rownum, "path.idPath"); + string strSongPath = DatabaseUtility.Get(results, rownum, "path.strPath"); + // And now we need to remove the songs + strSQL = String.Format("select * from song where idPath = {0}", + lPathId); + resultSongs = m_db.Execute(strSQL); + if (resultSongs.Rows.Count > 0) + { + for (int i = 0; i < resultSongs.Rows.Count; i++) + { + string strFName = DatabaseUtility.Get(resultSongs, i, "song.strFileName"); + DeleteSong(strSongPath + strFName, true); + } + } + EmptyCache(); + } + // And finally let's remove all the path information + strSQL = String.Format("delete from path where strPath like '{0}%'", + strPath); + results = m_db.Execute(strSQL); + CommitTransaction(); + return true; + } + catch (Exception) + { + RollbackTransaction(); + Log.Error(Log.LogType.MusicShareWatcher, "Delete Directory for {0} failed because of DB exception", strPath); + return false; + } + } + } + catch (Exception ex) + { + Log.Error(Log.LogType.MusicShareWatcher, "musicdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + return false; + } + return true; + } + + + // by rtv public int AddScrobbleUser(string userName_) Modified: trunk/mediaportal/MediaPortal.VC#Express.sln =================================================================== --- trunk/mediaportal/MediaPortal.VC#Express.sln 2006-08-31 12:45:20 UTC (rev 10098) +++ trunk/mediaportal/MediaPortal.VC#Express.sln 2006-08-31 13:02:11 UTC (rev 10099) @@ -67,107 +67,223 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPTestTool", "MPTestTool\MPTestTool.csproj", "{D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicShareWatcher", "ProcessPlugins\MusicShareWatcher\MusicShareWatcher\MusicShareWatcher.csproj", "{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicShareWatcherHelper", "ProcessPlugins\MusicShareWatcher\MusicShareWatcherHelper\MusicShareWatcherHelper.csproj", "{C6564AA7-976B-43EF-9E35-7E607EE1DD12}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.Build.0 = Debug|Any CPU {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.ActiveCfg = Debug|x86 {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.Build.0 = Debug|x86 + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.Build.0 = Release|Any CPU {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.ActiveCfg = Release|x86 {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.Build.0 = Release|x86 + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.Build.0 = Debug|Any CPU {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.ActiveCfg = Debug|x86 {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.Build.0 = Debug|x86 + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.Build.0 = Release|Any CPU {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.ActiveCfg = Release|x86 {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.Build.0 = Release|x86 + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.ActiveCfg = Debug|x86 {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.Build.0 = Debug|x86 + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.Build.0 = Release|Any CPU {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.ActiveCfg = Release|x86 {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.Build.0 = Release|x86 + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|Any CPU.Build.0 = Debug|Any CPU {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|x86.ActiveCfg = Debug|x86 {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|x86.Build.0 = Debug|x86 + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|Any CPU.Build.0 = Release|Any CPU {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|x86.ActiveCfg = Release|x86 {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|x86.Build.0 = Release|x86 + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.Build.0 = Debug|Any CPU {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.ActiveCfg = Debug|x86 {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.Build.0 = Debug|x86 + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.Build.0 = Release|Any CPU {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.ActiveCfg = Release|x86 {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.Build.0 = Release|x86 + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.ActiveCfg = Debug|x86 {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.Build.0 = Debug|x86 + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.Build.0 = Release|Any CPU {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|x86.ActiveCfg = Release|x86 {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|x86.Build.0 = Release|x86 + {809F8C77-0EC1-44F9-9536-707A646F43EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {809F8C77-0EC1-44F9-9536-707A646F43EB}.Debug|Any CPU.Build.0 = Debug|Any CPU {809F8C77-0EC1-44F9-9536-707A646F43EB}.Debug|x86.ActiveCfg = Debug|x86 {809F8C77-0EC1-44F9-9536-707A646F43EB}.Debug|x86.Build.0 = Debug|x86 + {809F8C77-0EC1-44F9-9536-707A646F43EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {809F8C77-0EC1-44F9-9536-707A646F43EB}.Release|Any CPU.Build.0 = Release|Any CPU {809F8C77-0EC1-44F9-9536-707A646F43EB}.Release|x86.ActiveCfg = Release|x86 {809F8C77-0EC1-44F9-9536-707A646F43EB}.Release|x86.Build.0 = Release|x86 + {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Any CPU.Build.0 = Debug|Any CPU {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|x86.ActiveCfg = Debug|x86 {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|x86.Build.0 = Debug|x86 + {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Any CPU.Build.0 = Release|Any CPU {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|x86.ActiveCfg = Release|x86 {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|x86.Build.0 = Release|x86 + {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Any CPU.Build.0 = Debug|Any CPU {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|x86.ActiveCfg = Debug|x86 {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|x86.Build.0 = Debug|x86 + {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Any CPU.Build.0 = Release|Any CPU {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|x86.ActiveCfg = Release|x86 {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|x86.Build.0 = Release|x86 + {68168FAA-A363-4F64-981C-32629A537900}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68168FAA-A363-4F64-981C-32629A537900}.Debug|Any CPU.Build.0 = Debug|Any CPU {68168FAA-A363-4F64-981C-32629A537900}.Debug|x86.ActiveCfg = Debug|x86 {68168FAA-A363-4F64-981C-32629A537900}.Debug|x86.Build.0 = Debug|x86 + {68168FAA-A363-4F64-981C-32629A537900}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68168FAA-A363-4F64-981C-32629A537900}.Release|Any CPU.Build.0 = Release|Any CPU {68168FAA-A363-4F64-981C-32629A537900}.Release|x86.ActiveCfg = Release|x86 {68168FAA-A363-4F64-981C-32629A537900}.Release|x86.Build.0 = Release|x86 + {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Debug|Any CPU.Build.0 = Debug|Any CPU {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Debug|x86.ActiveCfg = Debug|x86 {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Debug|x86.Build.0 = Debug|x86 + {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Release|Any CPU.Build.0 = Release|Any CPU {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Release|x86.ActiveCfg = Release|x86 {B5886774-5D2B-4F6C-A6B6-3998F4F5E60C}.Release|x86.Build.0 = Release|x86 + {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Any CPU.Build.0 = Debug|Any CPU {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|x86.ActiveCfg = Debug|x86 {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|x86.Build.0 = Debug|x86 + {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Any CPU.Build.0 = Release|Any CPU {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|x86.ActiveCfg = Release|x86 {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|x86.Build.0 = Release|x86 + {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Any CPU.Build.0 = Debug|Any CPU {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|x86.ActiveCfg = Debug|x86 {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|x86.Build.0 = Debug|x86 + {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Any CPU.Build.0 = Release|Any CPU {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|x86.ActiveCfg = Release|x86 {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|x86.Build.0 = Release|x86 + {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Any CPU.Build.0 = Debug|Any CPU {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|x86.ActiveCfg = Debug|x86 {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|x86.Build.0 = Debug|x86 + {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Any CPU.Build.0 = Release|Any CPU {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|x86.ActiveCfg = Release|x86 {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|x86.Build.0 = Release|x86 + {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Debug|x86.ActiveCfg = Debug|x86 {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Debug|x86.Build.0 = Debug|x86 + {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Release|Any CPU.Build.0 = Release|Any CPU {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Release|x86.ActiveCfg = Release|x86 {F7CB2A9F-004E-4667-BEAF-782F1C28E2D3}.Release|x86.Build.0 = Release|x86 + {21F2FA6E-4B52-442E-A5A8-64573061D571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21F2FA6E-4B52-442E-A5A8-64573061D571}.Debug|Any CPU.Build.0 = Debug|Any CPU {21F2FA6E-4B52-442E-A5A8-64573061D571}.Debug|x86.ActiveCfg = Debug|x86 {21F2FA6E-4B52-442E-A5A8-64573061D571}.Debug|x86.Build.0 = Debug|x86 + {21F2FA6E-4B52-442E-A5A8-64573061D571}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21F2FA6E-4B52-442E-A5A8-64573061D571}.Release|Any CPU.Build.0 = Release|Any CPU {21F2FA6E-4B52-442E-A5A8-64573061D571}.Release|x86.ActiveCfg = Release|x86 {21F2FA6E-4B52-442E-A5A8-64573061D571}.Release|x86.Build.0 = Release|x86 + {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Debug|Any CPU.Build.0 = Debug|Any CPU {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Debug|x86.ActiveCfg = Debug|x86 {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Debug|x86.Build.0 = Debug|x86 + {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Release|Any CPU.Build.0 = Release|Any CPU {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Release|x86.ActiveCfg = Release|x86 {47B8906A-5EC9-4641-811E-8BC0EAF97DDD}.Release|x86.Build.0 = Release|x86 + {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Debug|Any CPU.Build.0 = Debug|Any CPU {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Debug|x86.ActiveCfg = Debug|x86 {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Debug|x86.Build.0 = Debug|x86 + {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Release|Any CPU.Build.0 = Release|Any CPU {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Release|x86.ActiveCfg = Release|x86 {67D44FEB-AC41-4B93-AC1D-876318CDD16B}.Release|x86.Build.0 = Release|x86 + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.Build.0 = Debug|Any CPU {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.ActiveCfg = Debug|x86 {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.Build.0 = Debug|x86 + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.Build.0 = Release|Any CPU {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.ActiveCfg = Release|x86 {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.Build.0 = Release|x86 + {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Any CPU.Build.0 = Debug|Any CPU {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|x86.ActiveCfg = Debug|x86 {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|x86.Build.0 = Debug|x86 + {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Any CPU.ActiveCfg = Release|Any CPU + {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Any CPU.Build.0 = Release|Any CPU {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|x86.ActiveCfg = Release|x86 {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|x86.Build.0 = Release|x86 + {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Any CPU.Build.0 = Debug|Any CPU {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|x86.ActiveCfg = Debug|x86 {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|x86.Build.0 = Debug|x86 + {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Any CPU.Build.0 = Release|Any CPU {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|x86.ActiveCfg = Release|x86 + {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Any CPU.Build.0 = Debug|Any CPU {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|x86.ActiveCfg = Debug|x86 {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|x86.Build.0 = Debug|x86 + {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Any CPU.Build.0 = Release|Any CPU {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|x86.ActiveCfg = Release|x86 {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|x86.Build.0 = Release|x86 + {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|x86.ActiveCfg = Debug|x86 {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|x86.Build.0 = Debug|x86 + {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Any CPU.Build.0 = Release|Any CPU {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|x86.ActiveCfg = Release|x86 {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|x86.Build.0 = Release|x86 + {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Debug|Any CPU.Build.0 = Debug|Any CPU {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Debug|x86.ActiveCfg = Debug|x86 {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Debug|x86.Build.0 = Debug|x86 + {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Release|Any CPU.Build.0 = Release|Any CPU {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Release|x86.ActiveCfg = Release|x86 {D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}.Release|x86.Build.0 = Release|x86 + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|x86.Build.0 = Debug|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Any CPU.Build.0 = Release|Any CPU + {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|x86.ActiveCfg = Release|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|x86.ActiveCfg = Debug|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|x86.Build.0 = Debug|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Any CPU.Build.0 = Release|Any CPU + {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/mediaportal/MediaPortal.sln =================================================================== --- trunk/mediaportal/MediaPortal.sln 2006-08-31 12:45:20 UTC (rev 10098) +++ trunk/mediaportal/MediaPortal.sln 2006-08-31 13:02:11 UTC (rev 10099) @@ -73,107 +73,225 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPTestTool", "MPTestTool\MPTestTool.csproj", "{D8CE9E74-73E0-4A54-9093-F5CE7FD630A1}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MusicShareWatcher", "MusicShareWatcher", "{05789B6D-8173-4709-991B-34234041D393}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicShareWatcherHelper", "ProcessPlugins\MusicShareWatcher\MusicShareWatcherHelper\MusicShareWatcherHelper.csproj", "{C6564AA7-976B-43EF-9E35-7E607EE1DD12}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicShareWatcher", "ProcessPlugins\MusicShareWatcher\MusicShareWatcher\MusicShareWatcher.csproj", "{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.Build.0 = Debug|Any CPU {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.ActiveCfg = Debug|x86 {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.Build.0 = Debug|x86 + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.Build.0 = Release|Any CPU {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.ActiveCfg = Release|x86 {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.Build.0 = Release|x86 + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.Build.0 = Debug|Any CPU {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.ActiveCfg = Debug|x86 {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.Build.0 = Debug|x86 + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.Build.0 = Release|Any CPU {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.ActiveCfg = Release|x86 {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.Build.0 = Release|x86 + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.ActiveCfg = Debug|x86 {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.Build.0 = Debug|x86 + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.Build.0 = Release|Any CPU {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.ActiveCfg = Release|x86 {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.Build.0 = Release|x86 + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|Any CPU.Build.0 = Debug|Any CPU {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|x86.ActiveCfg = Debug|x86 {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Debug|x86.Build.0 = Debug|x86 + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|Any CPU.Build.0 = Release|Any CPU {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|x86.ActiveCfg = Release|x86 {96B7452E-8D2B-4EAE-8300-153CCB6C5109}.Release|x86.Build.0 = Release|x86 + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.Build.0 = Debug|Any CPU {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.ActiveCfg = Debug|x86 {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.Build.0 = Debug|x86 + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.Build.0 = Release|Any CPU {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.ActiveCfg = Release|x86 {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.Build.0 = Release|x86 + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.ActiveCfg = Debug|x86 {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.Build.0 = Debug|x86 + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.Build.0 = Release|Any CPU {C1BCEC3E-6074-4328-B... [truncated message content] |