From: <Sil...@us...> - 2010-03-01 20:07:24
|
Revision: 3475 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3475&view=rev Author: SilentException Date: 2010-03-01 20:06:50 +0000 (Mon, 01 Mar 2010) Log Message: ----------- * added new setting: alwaysAskUploadToLrcFinder - it'll always ask for uploading newly created LRC to LrcFinder * improved thread killing * some events on LRC pick status are automatically cleared on timer after 3 seconds * hiding/showing controls order so that for example done text doesn't show over not done * hiding image on stop playback * improved browsing through all the screens * long operations called from threads are now in background workers for nice cancellation * improved reading lyrics from tag * proper message when there is no enough data for search * proper messages in lrc editor when no music file is playing and when there is no valid lyrics * scrolling or static lyrics type will be remembered until mp restart (it'll not be reset on each page load) * implemented left - right actions on lyric picker * action key 13 now implemented on ACTION_SELECT_ITEM as selecting item on context menu also triggered action_key_pressed * implemented action key '0' to show lrc editor * implemented action key '*' to tag line in lrc editor * implemented action key '#' to untag last line in lrc editor * fixed vertical scroll speed 6 (mp error, check comments) * restricted access to some screens in certain conditions * in lrc picker, current showing LRC is compared to those returned and automatically selected to check * action key 42, used so far for lyric editor, by ascii tables translates to '(' ? maybe remove that.. Modified Paths: -------------- trunk/plugins/MyLyrics/LyricsEngine/LyricsController.cs trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.Designer.cs trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.cs trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs trunk/plugins/MyLyrics/My Lyrics/MyLyricsExternCode.cs Modified: trunk/plugins/MyLyrics/LyricsEngine/LyricsController.cs =================================================================== --- trunk/plugins/MyLyrics/LyricsEngine/LyricsController.cs 2010-03-01 16:20:24 UTC (rev 3474) +++ trunk/plugins/MyLyrics/LyricsEngine/LyricsController.cs 2010-03-01 20:06:50 UTC (rev 3475) @@ -55,7 +55,7 @@ sitesArrayList.Add(site); } } - lyricsSites = (string[]) sitesArrayList.ToArray(typeof (string)); + lyricsSites = (string[])sitesArrayList.ToArray(typeof(string)); LyricSearch.LyricsSites = lyricsSites; @@ -107,24 +107,22 @@ // clean-up operations may be placed here for (int i = 0; i < threadList.Count; i++) { - ((Thread) threadList[i]).Abort(); + ((Thread)threadList[i]).Abort(); } - bool stillThreadsAlive = true; + m_StopSearches = true; + + bool stillThreadsAlive = threadList.Count > 0; while (stillThreadsAlive) { + stillThreadsAlive = false; for (int i = 0; i < threadList.Count; i++) { - stillThreadsAlive = false; - if (((Thread) threadList[i]).IsAlive) + if (((Thread)threadList[i]).IsAlive) stillThreadsAlive = true; } + } - if (threadList.Count == 0) - { - stillThreadsAlive = false; - } - } FinishThread("", "", "The search has ended.", ""); } @@ -143,19 +141,21 @@ // clean-up operations may be placed here for (int i = 0; i < threadList.Count; i++) { - ((Thread) threadList[i]).Abort(); + ((Thread)threadList[i]).Abort(); } - bool stillThreadsAlive = (threadList.Count > 0 ? true : false); + m_StopSearches = true; + + bool stillThreadsAlive = threadList.Count > 0; while (stillThreadsAlive) { + stillThreadsAlive = false; for (int i = 0; i < threadList.Count; i++) { - stillThreadsAlive = false; - ; - if (((Thread) threadList[i]).IsAlive) + if (((Thread)threadList[i]).IsAlive) stillThreadsAlive = true; } + } m_EventStopped_LyricController.Set(); @@ -172,13 +172,13 @@ // create worker thread instance ThreadStart threadInstance = delegate - { - LyricSearch lyricSearch = new LyricSearch(this, artist, title, - strippedArtistName, - m_allowAllToComplete, - m_automaticUpdate); - lyricSearch.Run(); - }; + { + LyricSearch lyricSearch = new LyricSearch(this, artist, title, + strippedArtistName, + m_allowAllToComplete, + m_automaticUpdate); + lyricSearch.Run(); + }; Thread lyricSearchThread = new Thread(threadInstance); lyricSearchThread.Name = "BasicSearch for " + artist + " - " + title; // looks nice in Output window @@ -195,7 +195,7 @@ internal void UpdateString(String message, String site) { - m_Form.UpdateString = new Object[] {message, site}; + m_Form.UpdateString = new Object[] { message, site }; } internal void StatusUpdate(string artist, string title, string site, bool lyricFound) @@ -228,7 +228,7 @@ if (m_allowAllToComplete || m_StopSearches == false) { - m_Form.LyricFound = new Object[] {cleanLyric, artist, title, site}; + m_Form.LyricFound = new Object[] { cleanLyric, artist, title, site }; StatusUpdate(artist, title, site, true); } } @@ -239,7 +239,7 @@ if (m_allowAllToComplete || m_StopSearches == false) { - m_Form.LyricNotFound = new Object[] {artist, title, message, site}; + m_Form.LyricNotFound = new Object[] { artist, title, message, site }; StatusUpdate(artist, title, site, false); } } @@ -253,7 +253,7 @@ { Thread.Sleep(50); } - m_Form.ThreadFinished = new Object[] {artist, title, message, site}; + m_Form.ThreadFinished = new Object[] { artist, title, message, site }; } internal void ThreadException(String s) Modified: trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.Designer.cs =================================================================== --- trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.Designer.cs 2010-03-01 16:20:24 UTC (rev 3474) +++ trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.Designer.cs 2010-03-01 20:06:50 UTC (rev 3475) @@ -78,6 +78,7 @@ this.comboBoxLanguages = new System.Windows.Forms.ComboBox(); this.mpLabel1 = new MediaPortal.UserInterface.Controls.MPLabel(); this.gbLrc = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.cbAlwaysAskForUploadToLrcFinder = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.tbLrcTaggingName = new MediaPortal.UserInterface.Controls.MPTextBox(); this.lbLrcTaggingName = new MediaPortal.UserInterface.Controls.MPLabel(); this.tbLrcTaggingOffset = new MediaPortal.UserInterface.Controls.MPTextBox(); @@ -157,7 +158,7 @@ this.tabControl.Location = new System.Drawing.Point(0, 0); this.tabControl.Name = "tabControl"; this.tabControl.SelectedIndex = 0; - this.tabControl.Size = new System.Drawing.Size(558, 536); + this.tabControl.Size = new System.Drawing.Size(558, 539); this.tabControl.TabIndex = 1; this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged); // @@ -166,7 +167,7 @@ this.tabPageLyricsDatabase.Location = new System.Drawing.Point(4, 22); this.tabPageLyricsDatabase.Name = "tabPageLyricsDatabase"; this.tabPageLyricsDatabase.Padding = new System.Windows.Forms.Padding(3); - this.tabPageLyricsDatabase.Size = new System.Drawing.Size(550, 510); + this.tabPageLyricsDatabase.Size = new System.Drawing.Size(550, 513); this.tabPageLyricsDatabase.TabIndex = 1; this.tabPageLyricsDatabase.Text = "Lyrics database"; this.tabPageLyricsDatabase.UseVisualStyleBackColor = true; @@ -176,7 +177,7 @@ this.tabPageMusicDatabaseBrowse.Location = new System.Drawing.Point(4, 22); this.tabPageMusicDatabaseBrowse.Name = "tabPageMusicDatabaseBrowse"; this.tabPageMusicDatabaseBrowse.Padding = new System.Windows.Forms.Padding(3); - this.tabPageMusicDatabaseBrowse.Size = new System.Drawing.Size(550, 510); + this.tabPageMusicDatabaseBrowse.Size = new System.Drawing.Size(550, 513); this.tabPageMusicDatabaseBrowse.TabIndex = 3; this.tabPageMusicDatabaseBrowse.Text = "Music database browse"; this.tabPageMusicDatabaseBrowse.UseVisualStyleBackColor = true; @@ -191,7 +192,7 @@ this.tabPageDatabase.Location = new System.Drawing.Point(4, 22); this.tabPageDatabase.Name = "tabPageDatabase"; this.tabPageDatabase.Padding = new System.Windows.Forms.Padding(3); - this.tabPageDatabase.Size = new System.Drawing.Size(550, 510); + this.tabPageDatabase.Size = new System.Drawing.Size(550, 513); this.tabPageDatabase.TabIndex = 2; this.tabPageDatabase.Text = "Music database batch search"; this.tabPageDatabase.UseVisualStyleBackColor = true; @@ -624,7 +625,7 @@ this.tabPageSetup.Location = new System.Drawing.Point(4, 22); this.tabPageSetup.Name = "tabPageSetup"; this.tabPageSetup.Padding = new System.Windows.Forms.Padding(3); - this.tabPageSetup.Size = new System.Drawing.Size(550, 510); + this.tabPageSetup.Size = new System.Drawing.Size(550, 513); this.tabPageSetup.TabIndex = 2; this.tabPageSetup.Text = "Settings"; this.tabPageSetup.UseVisualStyleBackColor = true; @@ -662,6 +663,7 @@ // // gbLrc // + this.gbLrc.Controls.Add(this.cbAlwaysAskForUploadToLrcFinder); this.gbLrc.Controls.Add(this.tbLrcTaggingName); this.gbLrc.Controls.Add(this.lbLrcTaggingName); this.gbLrc.Controls.Add(this.tbLrcTaggingOffset); @@ -675,6 +677,17 @@ this.gbLrc.TabStop = false; this.gbLrc.Text = "LRC settings"; // + // cbAlwaysAskForUploadToLrcFinder + // + this.cbAlwaysAskForUploadToLrcFinder.AutoSize = true; + this.cbAlwaysAskForUploadToLrcFinder.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.cbAlwaysAskForUploadToLrcFinder.Location = new System.Drawing.Point(327, 20); + this.cbAlwaysAskForUploadToLrcFinder.Name = "cbAlwaysAskForUploadToLrcFinder"; + this.cbAlwaysAskForUploadToLrcFinder.Size = new System.Drawing.Size(186, 17); + this.cbAlwaysAskForUploadToLrcFinder.TabIndex = 19; + this.cbAlwaysAskForUploadToLrcFinder.Text = "Always ask for upload to LrcFinder"; + this.cbAlwaysAskForUploadToLrcFinder.UseVisualStyleBackColor = true; + // // tbLrcTaggingName // this.tbLrcTaggingName.BorderColor = System.Drawing.Color.Empty; @@ -1072,7 +1085,7 @@ this.trackBar.Location = new System.Drawing.Point(35, 37); this.trackBar.Maximum = 3; this.trackBar.Name = "trackBar"; - this.trackBar.Size = new System.Drawing.Size(158, 45); + this.trackBar.Size = new System.Drawing.Size(158, 42); this.trackBar.TabIndex = 25; this.trackBar.TickStyle = System.Windows.Forms.TickStyle.Both; this.trackBar.Value = 2; @@ -1121,7 +1134,7 @@ this.tabPageReplace.Location = new System.Drawing.Point(4, 22); this.tabPageReplace.Name = "tabPageReplace"; this.tabPageReplace.Padding = new System.Windows.Forms.Padding(3); - this.tabPageReplace.Size = new System.Drawing.Size(550, 510); + this.tabPageReplace.Size = new System.Drawing.Size(550, 513); this.tabPageReplace.TabIndex = 5; this.tabPageReplace.Text = "Find & Replace"; this.tabPageReplace.UseVisualStyleBackColor = true; @@ -1174,7 +1187,7 @@ this.tabPageAbout.Location = new System.Drawing.Point(4, 22); this.tabPageAbout.Name = "tabPageAbout"; this.tabPageAbout.Padding = new System.Windows.Forms.Padding(3); - this.tabPageAbout.Size = new System.Drawing.Size(550, 510); + this.tabPageAbout.Size = new System.Drawing.Size(550, 513); this.tabPageAbout.TabIndex = 4; this.tabPageAbout.Text = "About"; this.tabPageAbout.UseVisualStyleBackColor = true; @@ -1201,7 +1214,7 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(558, 536); + this.ClientSize = new System.Drawing.Size(558, 539); this.ControlBox = false; this.Controls.Add(this.btClose); this.Controls.Add(this.tabControl); @@ -1347,5 +1360,6 @@ private MediaPortal.UserInterface.Controls.MPGroupBox mpGroupBox5; private MediaPortal.UserInterface.Controls.MPLabel mpLabel1; private System.Windows.Forms.ComboBox comboBoxLanguages; + internal MediaPortal.UserInterface.Controls.MPCheckBox cbAlwaysAskForUploadToLrcFinder; } } \ No newline at end of file Modified: trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.cs =================================================================== --- trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.cs 2010-03-01 16:20:24 UTC (rev 3474) +++ trunk/plugins/MyLyrics/My Lyrics/MyLyrics Configuration/MyLyricsSetup.cs 2010-03-01 20:06:50 UTC (rev 3475) @@ -260,6 +260,9 @@ cbUploadLrcAutomatically.Checked = xmlreader.GetValue("myLyrics", "uploadLrcToLrcFinder").Equals("yes"); + cbAlwaysAskForUploadToLrcFinder.Checked = + xmlreader.GetValue("myLyrics", "alwaysAskUploadLrcToLrcFinder").Equals("yes"); + lbSongsLimitNote.Text = ("(You have currently " + m_TotalTitles.ToString() + " titles in your music database)"); Modified: trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs =================================================================== --- trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs 2010-03-01 16:20:24 UTC (rev 3474) +++ trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs 2010-03-01 20:06:50 UTC (rev 3475) @@ -18,6 +18,7 @@ using MediaPortal.Playlists; using MediaPortal.Profile; using MediaPortal.TagReader; +using System.ComponentModel; using Timer = System.Timers.Timer; namespace MyLyrics @@ -102,10 +103,17 @@ private bool _useLyricWiki; private bool _ValidLrcLyric; - // A valid LRC-lyric always overwrites a normal lyric in both Lyrics db and music tag (if allowed) + // A valid LRC-lyric always overwrites a normal lyric in both Lyrics db and music tag (if allowed) private Timer _WriteTagTimer; + private int _selectedinLRCPicker = 0; + private Timer _LRCPickTimer; + private string _lastLRCPickLabel = ""; + private bool _isInTranslation = false; + private BackgroundWorker worker = new BackgroundWorker(); + private bool _settingsRead = false; + #endregion [SkinControl((int)GUI_LRC_Controls.CONTROL_ART_ALBUMART)] @@ -127,6 +135,7 @@ internal bool _uploadLrcToLrcFinder; internal bool _useAutoOnLyricLength; internal bool _useAutoScrollAsDefault; + internal bool _alwaysAskUploadLrcToLrcFinder; #endregion @@ -156,19 +165,22 @@ public override bool Init() { - _selectedScreen = (int)MyLyricsSettings.Screen.LYRICS; + _selectedScreen = (int) MyLyricsSettings.Screen.LYRICS; _startingScrollSpeedVertical = GUIGraphicsContext.ScrollSpeedVertical; GUIGraphicsContext.ScrollSpeedVertical = 0; + worker.DoWork += SaveLyricToTagLists; + return Load(GUIGraphicsContext.Skin + @"\" + _lyricsScreenXML); } public override void Process() { - if ((_newTrack || _SearchingState != (int)SEARCH_STATE.NOT_SEARCHING) + if ((_newTrack || _SearchingState != (int) SEARCH_STATE.NOT_SEARCHING) && (!g_Player.IsRadio || !string.IsNullOrEmpty(_artist))) + //&& (!g_Player.IsRadio || _CurrentTrackTag!=null)) { if (_newTrack) { @@ -182,10 +194,17 @@ MusicDatabase mDB = MusicDatabase.Instance; - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, ""); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, ""); if (g_Player.IsRadio == false) { + string currentFile = null; + string currentLyrics = null; + if (_CurrentTrackTag != null) + { + currentFile = _CurrentTrackTag.FileName; + currentLyrics = _CurrentTrackTag.Lyrics; + } _CurrentTrackTag = mDB.GetTag(g_Player.CurrentFile); if (_CurrentTrackTag != null) @@ -198,17 +217,33 @@ _title = _CurrentTrackTag.Title.Trim(); _title = _title.Replace("''", "'"); _title = LyricUtil.CapatalizeString(_title); - _title = LyricUtil.TrimForParenthesis(_title); + _title = LyricUtil.TrimForParenthesis(_title); GetAlbumArt(); GetAlbumArt(_artist); + + if (currentLyrics != null && currentFile != null && _CurrentTrackTag.FileName == currentFile) + { + if (_CurrentTrackTag.Lyrics != currentLyrics) + { + _CurrentTrackTag.Lyrics = currentLyrics; + } + } } else { - _StatusText = "No music file is playing"; + _artist = ""; + _title = ""; + _TrackText = ""; + _LyricText = ""; + _ImagePathContainer.Clear(); + GUIelement_ImgCoverArt.FreeResources(); + resetLrcFields(); resetGUI(_selectedScreen); - GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); + + _StatusText = "No music file is playing"; + GUIControl.SetControlLabel(GetID, (int) GUI_General_Controls.CONTROL_LBStatus, _StatusText); } } else @@ -228,22 +263,22 @@ _CurrentTrackTag.Lyrics = LyricUtil.FixLyrics(_CurrentTrackTag.Lyrics); } - if (_selectedScreen == (int)MyLyricsSettings.Screen.LYRICS - || _selectedScreen == (int)MyLyricsSettings.Screen.LRC - || _selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK) + if (_selectedScreen == (int) MyLyricsSettings.Screen.LYRICS + || _selectedScreen == (int) MyLyricsSettings.Screen.LRC + || _selectedScreen == (int) MyLyricsSettings.Screen.LRC_PICK) { // Get lyric - if (_artist.Length != 0) + if (_artist.Length != 0 && _title.Length != 0) { - if (_SearchingState == (int)SEARCH_STATE.NOT_SEARCHING) + if (_SearchingState == (int) SEARCH_STATE.NOT_SEARCHING) { - if (_SearchType == (int)SEARCH_TYPES.BOTH_LRCS_AND_LYRICS - || _SearchType == (int)SEARCH_TYPES.ONLY_LRCS) + if (_SearchType == (int) SEARCH_TYPES.BOTH_LRCS_AND_LYRICS + || _SearchType == (int) SEARCH_TYPES.ONLY_LRCS) { bool lrcFoundInTagOrLyricDb = FindLrc(); if (lrcFoundInTagOrLyricDb) { - _SearchingState = (int)SEARCH_STATE.NOT_SEARCHING; + _SearchingState = (int) SEARCH_STATE.NOT_SEARCHING; } else { @@ -263,41 +298,55 @@ } } } - else if (_SearchingState == (int)SEARCH_STATE.SEARCHING_FOR_LRC && + else if (_SearchingState == (int) SEARCH_STATE.SEARCHING_FOR_LRC && !_LyriccontrollerIsWorking) { - if (_SearchType == (int)SEARCH_TYPES.BOTH_LRCS_AND_LYRICS - || _SearchType == (int)SEARCH_TYPES.ONLY_LYRICS) + if (_SearchType == (int) SEARCH_TYPES.BOTH_LRCS_AND_LYRICS + || _SearchType == (int) SEARCH_TYPES.ONLY_LYRICS) { FindLyric(); - _SearchingState = (int)SEARCH_STATE.SEARCHING_FOR_LYRIC; + _SearchingState = (int) SEARCH_STATE.SEARCHING_FOR_LYRIC; } else { - _SearchingState = (int)SEARCH_STATE.NOT_SEARCHING; + _SearchingState = (int) SEARCH_STATE.NOT_SEARCHING; } } - else if (_SearchingState == (int)SEARCH_STATE.SEARCHING_FOR_LYRIC && + else if (_SearchingState == (int) SEARCH_STATE.SEARCHING_FOR_LYRIC && !_LyriccontrollerIsWorking) { - _SearchingState = (int)SEARCH_STATE.NOT_SEARCHING; + _SearchingState = (int) SEARCH_STATE.NOT_SEARCHING; } } + else if ((_artist.Length==0 && _title.Length>0) || (_title.Length==0 && _artist.Length>0)) + { + _ImagePathContainer.Clear(); + GUIelement_ImgCoverArt.FreeResources(); + + resetLrcFields(); + resetGUI(_selectedScreen); + + _StatusText = "Not enough data for lyric search"; + GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); + } else { _artist = ""; _title = ""; _TrackText = ""; _LyricText = ""; - _StatusText = "No music file playing"; + _ImagePathContainer.Clear(); + GUIelement_ImgCoverArt.FreeResources(); resetLrcFields(); resetGUI(_selectedScreen); + + _StatusText = "No music file is playing"; GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); } } - else if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_EDITOR) + else if (_selectedScreen == (int) MyLyricsSettings.Screen.LRC_EDITOR) { _newTrack = false; nextLRCLineIndex = 0; @@ -333,14 +382,14 @@ _artist = ""; _title = ""; _TrackText = ""; + _LyricText = ""; + _ImagePathContainer.Clear(); + GUIelement_ImgCoverArt.FreeResources(); resetGUI(_selectedScreen); - _LyricText = ""; - _StatusText = "No music file playing"; - - GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, - _StatusText); + _StatusText = "No music file is playing"; + GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); } } } @@ -349,8 +398,8 @@ if (_lyricsFound) { - if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC - || _selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK) + if (_selectedScreen == (int) MyLyricsSettings.Screen.LRC + || _selectedScreen == (int) MyLyricsSettings.Screen.LRC_PICK) { CalculateNextInterval(); } @@ -364,6 +413,15 @@ private void ShowLRCtoEdit() { + if (_CurrentTrackTag == null) + { + resetGUI(_selectedScreen); + + _StatusText = "No music file is playing"; + GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); + return; + } + if (!string.IsNullOrEmpty(_LyricText)) { _LyricText = _LyricText.Trim(); @@ -373,28 +431,30 @@ if (lrc.IsValid) { _alreadyValidLRC = true; - _lines = new string[1] { "This song already has a valid LRC lyric." }; + _lines = new string[1] {"This song already has a valid LRC lyric"}; - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE + 0, _lines[0]); - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + 0, _lines[0]); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_EDIT_LINE + 0, _lines[0]); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + 0, _lines[0]); } else { - _lines = _LyricText.Split(new string[2] { "\r\n", "\n" }, StringSplitOptions.None); + resetLrcFields(); + _lines = _LyricText.Split(new string[2] {"\r\n", "\n"}, StringSplitOptions.None); + try { - for (int i = _tagRoundFinished * _TAG_IN_ROUND; - i < (_tagRoundFinished + 1) * _TAG_IN_ROUND; + for (int i = _tagRoundFinished*_TAG_IN_ROUND; + i < (_tagRoundFinished + 1)*_TAG_IN_ROUND; i++) { + GUIControl.ShowControl(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_TIME + i); + //GUIControl.ShowControl(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + i); GUIControl.ShowControl(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE + i); - GUIControl.ShowControl(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + i); - GUIControl.ShowControl(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_TIME + i); - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE + i, _lines[i]); - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + i, + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_EDIT_LINE + i, _lines[i]); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_EDIT_LINE_DONE + i, _lines[i]); - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_EDIT_TIME + i, "[xx:xx.xx]"); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_EDIT_TIME + i, "[xx:xx.xx]"); } } catch @@ -404,23 +464,20 @@ } else { - resetGUI(_selectedScreen); - _StatusText = "No music file is playing"; - GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); + _StatusText = "No valid lyrics found"; + GUIControl.SetControlLabel(GetID, (int) GUI_General_Controls.CONTROL_LBStatus, _StatusText); } } private void LoadSettings() { _newTrack = true; - _SearchingState = (int)SEARCH_STATE.NOT_SEARCHING; + _SearchingState = (int) SEARCH_STATE.NOT_SEARCHING; _LyricsToWriteToTag = new List<string[]>(); resetGUI(_selectedScreen); - - using (Settings xmlreader = new Settings("MediaPortal.xml")) { _UseID3 = xmlreader.GetValueAsBool("musicfiles", "showid3", true); @@ -469,11 +526,15 @@ (xmlreader.GetValueAsString("myLyrics", "confirmedNoUploadLrcToLrcFinder", "False")).Equals("yes") ? true : false; + _alwaysAskUploadLrcToLrcFinder = + (xmlreader.GetValueAsString("myLyrics", "alwaysAskUploadLrcToLrcFinder", "False")).Equals("yes") + ? true + : false; string translationString = (xmlreader.GetValueAsString("myLyrics", "translationLanguage", "English (en)")); - string[] strings = translationString.Split(new string[1] { "(" }, StringSplitOptions.None); + string[] strings = translationString.Split(new string[1] {"("}, StringSplitOptions.None); _translationLanguage = strings[0].Trim(); _translationLanguageCode = strings[1].Replace(")", string.Empty); @@ -487,17 +548,20 @@ _Replace = xmlreader.GetValueAsString("myLyrics", "replace", ""); } - if (_useAutoScrollAsDefault) + if (!_settingsRead) // only first time { - CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll; + if (_useAutoScrollAsDefault) + { + CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll; - GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric); - } - else - { - CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric; + GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric); + } + else + { + CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric; - GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); + GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); + } } if (string.IsNullOrEmpty(_guidString)) @@ -552,25 +616,27 @@ sitesToSearch.Add("LyricsPluginSite"); } - _LyricSitesTosearch = (string[])sitesToSearch.ToArray(typeof(string)); + _LyricSitesTosearch = (string[]) sitesToSearch.ToArray(typeof (string)); + _settingsRead = true; + // Deserialize lyrics and marked database, and save references in LyricsDB try { string path = Config.GetFile(Config.Dir.Database, MLyricsDbName); FileStream fs = new FileStream(path, FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); - LyricsDb = (LyricsDatabase)bf.Deserialize(fs); + LyricsDb = (LyricsDatabase) bf.Deserialize(fs); fs.Close(); path = Config.GetFile(Config.Dir.Database, MLyricsMarkedDbName); fs = new FileStream(path, FileMode.Open); - LyricsMarkedDb = (LyricsDatabase)bf.Deserialize(fs); + LyricsMarkedDb = (LyricsDatabase) bf.Deserialize(fs); fs.Close(); } catch { - GUIDialogOK dlg = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); + GUIDialogOK dlg = (GUIDialogOK) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_OK); dlg.SetHeading("No lyric database found"); dlg.SetLine(1, "Please run the MyLyrics configuration"); dlg.SetLine(2, "before running the plugin."); @@ -593,11 +659,19 @@ if (_ImageChangeTimer == null) { _ImageChangeTimer = new Timer(); - _ImageChangeTimer.Interval = 15 * 1000; + _ImageChangeTimer.Interval = 15*1000; _ImageChangeTimer.Elapsed += OnImageTimerTickEvent; _ImageChangeTimer.Start(); } + if (_LRCPickTimer == null) + { + _LRCPickTimer = new Timer(); + _LRCPickTimer.Interval = 3*1000; + _LRCPickTimer.Elapsed += OnLRCPickTimerTickEvent; + _LRCPickTimer.Stop(); + } + if (_enableLogging) { logFullFileName = Config.GetFile(Config.Dir.Log, logFileName); @@ -610,8 +684,10 @@ protected override void OnPageDestroy(int new_windowId) { StopThread(); + if (worker.IsBusy) + worker.CancelAsync(); resetAll(); - resetGUI((int)MyLyricsSettings.Screen.LYRICS); + resetGUI((int) MyLyricsSettings.Screen.LYRICS); GUIGraphicsContext.ScrollSpeedVertical = _startingScrollSpeedVertical; @@ -642,6 +718,20 @@ GUIPropertyManager.OnPropertyChanged -= trackChangeHandler; } + public override bool OnMessage(GUIMessage message) + { + // Check if the message was ment for this control. + if (( + message.Message == GUIMessage.MessageType.GUI_MSG_LABEL_SET || + message.Message == GUIMessage.MessageType.GUI_MSG_LABEL_RESET + ) && + message.TargetWindowId == GetID && + message.TargetControlId == (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS) + { + _LRCPickTimer.Stop(); + } + return base.OnMessage(message); + } public override void OnAction(Action action) { @@ -659,13 +749,49 @@ //return; break; } + case Action.ActionType.ACTION_MOVE_LEFT: + case Action.ActionType.ACTION_MOVE_RIGHT: + { + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK) + { + if (action.wID == Action.ActionType.ACTION_MOVE_LEFT) + _selectedinLRCPicker--; + if (action.wID == Action.ActionType.ACTION_MOVE_RIGHT) + _selectedinLRCPicker++; + + if (_selectedinLRCPicker < 0) + _selectedinLRCPicker = _LrcTable.Rows.Count - 1; + if (_selectedinLRCPicker > _LrcTable.Rows.Count - 1) + _selectedinLRCPicker = 0; + + + string status = string.Format("LRC {0} of {1} shown", _selectedinLRCPicker + 1, _LrcTable.Rows.Count); + GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); + + _LyricText = _LrcTable.Rows[_selectedinLRCPicker]["Lyrics"] as string; + _SimpleLrc = new SimpleLRC(null, null, _LyricText); + StartShowingLrc(_LyricText, true); + } + break; + } + case Action.ActionType.ACTION_SELECT_ITEM: + { + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK && !action.m_key.KeyChar.Equals(42)) + ShowLrcPick(); + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_EDITOR) + TagLine(); + break; + } case Action.ActionType.ACTION_KEY_PRESSED: { - if (action.m_key.KeyChar.Equals(13)) + if (/*action.m_key.KeyChar.Equals(13) || */action.m_key.KeyChar.Equals(42)) // 'Enter' or '*' { - TagLine(); + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK && !action.m_key.KeyChar.Equals(42)) + ShowLrcPick(); + if (_selectedScreen == (int) MyLyricsSettings.Screen.LRC_EDITOR) + TagLine(); } - else if (action.m_key.KeyChar.Equals(40) || action.m_key.KeyChar.Equals(101)) // 'E' + else if (action.m_key.KeyChar.Equals(40) || action.m_key.KeyChar.Equals(48) ||action.m_key.KeyChar.Equals(101)) // '(' or '0' or 'E' - 42 is actually '(' ??? { // Don't use a stream to create a LRC if (g_Player.IsRadio) @@ -674,21 +800,45 @@ } _lyricsFound = false; - if (_selectedScreen != (int)MyLyricsSettings.Screen.LRC_EDITOR) + if (_selectedScreen != (int) MyLyricsSettings.Screen.LRC_EDITOR) { resetGUI((int)MyLyricsSettings.Screen.LRC_EDITOR); + ShowLRCtoEdit(); + Process(); } else { // parameter could be anything but LRC_EDITOR. Will find correct type when running findLyric(). - resetGUI((int)MyLyricsSettings.Screen.LYRICS); + if (_SearchType == (int)SEARCH_TYPES.BOTH_LRCS_AND_LYRICS || + _SearchType == (int)SEARCH_TYPES.ONLY_LRCS) + { + resetGUI((int)MyLyricsSettings.Screen.LRC); + } + else + { + resetGUI((int)MyLyricsSettings.Screen.LYRICS); + } + //resetGUI((int) MyLyricsSettings.Screen.LYRICS); + _newTrack = true; + Process(); } - - _newTrack = true; - Process(); } - else if (action.m_key.KeyChar.Equals(115)) + else if (action.m_key.KeyChar.Equals(115)) // 'S' { + if (GUIGraphicsContext.ScrollSpeedVertical >= 10) + GUIGraphicsContext.ScrollSpeedVertical = 0; + else if (GUIGraphicsContext.ScrollSpeedVertical >= 8) + GUIGraphicsContext.ScrollSpeedVertical = 10; + else if (GUIGraphicsContext.ScrollSpeedVertical >= 6) + GUIGraphicsContext.ScrollSpeedVertical = 8; + else if (GUIGraphicsContext.ScrollSpeedVertical >= 4) + GUIGraphicsContext.ScrollSpeedVertical = 7; // MediaPortal BUG here, scroll 6 gets many errors in log: + //GUITextScrollUpControl.cs: if (_frameLimiter % (6 - GUIGraphicsContext.ScrollSpeedVertical) == 0) + else if (GUIGraphicsContext.ScrollSpeedVertical >= 2) + GUIGraphicsContext.ScrollSpeedVertical = 4; + else if (GUIGraphicsContext.ScrollSpeedVertical >= 0) + GUIGraphicsContext.ScrollSpeedVertical = 2; + /* if (GUIGraphicsContext.ScrollSpeedVertical >= 10 || GUIGraphicsContext.ScrollSpeedVertical == 1 || GUIGraphicsContext.ScrollSpeedVertical == 3 @@ -701,12 +851,30 @@ ++GUIGraphicsContext.ScrollSpeedVertical; ++GUIGraphicsContext.ScrollSpeedVertical; } + */ } else if (action.m_key.KeyChar.Equals(102)) // 'F' { - if (_selectedScreen != (int)MyLyricsSettings.Screen.LRC_PICK - && _selectedScreen != (int)MyLyricsSettings.Screen.LRC_EDITOR) + //if (_selectedScreen != (int) MyLyricsSettings.Screen.LRC_PICK + // && _selectedScreen != (int) MyLyricsSettings.Screen.LRC_EDITOR) + //{ + + string lyricText = String.Empty; + bool hasValidLRC = false; + if (LyricsDb.ContainsKey(DatabaseUtil.CorrectKeyFormat(_artist, _title))) { + lyricText = LyricsDb[DatabaseUtil.CorrectKeyFormat(_artist, _title)].Lyrics; + } + if (lyricText != null && (new SimpleLRC(_artist, _title, lyricText)).IsValid) + hasValidLRC = true; + + bool shouldNewTrack = true; + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_EDITOR || _selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK || _isInTranslation) + { + //shouldNewTrack = true; + } + else + { if (_SearchType == (int)SEARCH_TYPES.BOTH_LRCS_AND_LYRICS) { if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC) @@ -727,8 +895,26 @@ _SearchType = (int)SEARCH_TYPES.ONLY_LRCS; } - _newTrack = true; + if (hasValidLRC && _SearchType == (int)SEARCH_TYPES.ONLY_LYRICS) + _SearchType = (int)SEARCH_TYPES.ONLY_LRCS; + + //resetGUI((int)MyLyricsSettings.Screen.LRC); + + shouldNewTrack = true; } + + if (_SearchType == (int)SEARCH_TYPES.BOTH_LRCS_AND_LYRICS || + _SearchType == (int)SEARCH_TYPES.ONLY_LRCS) + { + resetGUI((int)MyLyricsSettings.Screen.LRC); + } + else + { + resetGUI((int)MyLyricsSettings.Screen.LYRICS); + } + + _newTrack = shouldNewTrack; + } else if (action.m_key.KeyChar.Equals(112)) // 'P' { @@ -736,22 +922,27 @@ } else if (49 <= action.m_key.KeyChar && action.m_key.KeyChar <= 57) // '1'-'9' { - int index = action.m_key.KeyChar - 49; - int noOfRows = index + 1; - - if (noOfRows <= _LrcTable.Rows.Count) + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK) { - string status = string.Format("LRC {0} of {1} shown", noOfRows, _LrcTable.Rows.Count); - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); - _LyricText = _LrcTable.Rows[index]["Lyrics"] as string; - _SimpleLrc = new SimpleLRC(null, null, _LyricText); - StartShowingLrc(_LyricText, true); + int index = action.m_key.KeyChar - 49; + int noOfRows = index + 1; + + if (noOfRows <= _LrcTable.Rows.Count) + { + string status = string.Format("LRC {0} of {1} shown", noOfRows, _LrcTable.Rows.Count); + GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); + + _LyricText = _LrcTable.Rows[index]["Lyrics"] as string; + _SimpleLrc = new SimpleLRC(null, null, _LyricText); + StartShowingLrc(_LyricText, true); + } } } - else if (action.m_key.KeyChar.Equals(8)) // 'Backslash' + else if (action.m_key.KeyChar.Equals(8) || action.m_key.KeyChar.Equals(35)) // 'Backslash' or '#' { - RemoveLatestTagLine(); + if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_EDITOR) + RemoveLatestTagLine(); } else if (action.m_key.KeyChar.Equals(98)) // 'B' (stop playing media) { @@ -782,7 +973,9 @@ private void ShowLrcPick() { - if (_selectedScreen != (int)MyLyricsSettings.Screen.LRC_PICK) + if (String.IsNullOrEmpty(_artist)) return; + + if (_selectedScreen != (int) MyLyricsSettings.Screen.LRC_PICK) { LrcFinder lrcFinder = new LrcFinder(); _LrcTable = lrcFinder.FindLRCs(_artist, _title); @@ -790,7 +983,20 @@ if (_LrcTable != null && _LrcTable.Rows.Count > 0) { - _LyricText = _LrcTable.Rows[0]["Lyrics"] as string; + _selectedinLRCPicker = 0; + if (_SimpleLrc != null) + { + for (int i=0; i<_LrcTable.Rows.Count; i++) + { + SimpleLRC _SimpleLrcTemp = new SimpleLRC(null, null, _LrcTable.Rows[i]["Lyrics"] as string); + if (_SimpleLrc.LyricAsLRC == _SimpleLrcTemp.LyricAsLRC) + { + _selectedinLRCPicker = i; + break; + } + } + } + _LyricText = _LrcTable.Rows[_selectedinLRCPicker]["Lyrics"] as string; _SimpleLrc = new SimpleLRC(null, null, _LyricText); StartShowingLrc(_LyricText, true); @@ -802,24 +1008,28 @@ } else { - status = string.Format("LRC {0} of {1} shown", "1", _LrcTable.Rows.Count); + status = string.Format("LRC {0} of {1} shown", _selectedinLRCPicker + 1, _LrcTable.Rows.Count); } - GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); + GUIControl.SetControlLabel(GetID, (int) GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); } else if (_LrcTable == null) { - resetGUI((int)MyLyricsSettings.Screen.LRC_PICK); + //resetGUI((int) MyLyricsSettings.Screen.LRC_PICK); - string status = "LrcFinder could not be reached..."; + string status = "LrcFinder could not be reached"; GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); + _lastLRCPickLabel = status; + _LRCPickTimer.Stop(); _LRCPickTimer.Start(); } else { //resetGUI((int)MyLyricsSettings.Screen.LRC_PICK); - string status = "No LRC found..."; + string status = "No LRC found"; GUIControl.SetControlLabel(GetID, (int)GUI_LRC_Controls.CONTROL_LRCPICK_STATUS, status); + _lastLRCPickLabel = status; + _LRCPickTimer.Stop(); _LRCPickTimer.Start(); //string lyricInfo = "Press the 'P' key to return"; //GUIControl.SetControlLabel(GetID, CONTROL_LYRIC_SELECTED, lyricInfo); @@ -831,12 +1041,14 @@ if (_CurrentTrackTag != null) { - SaveLyricToTagLists(_CurrentTrackTag.FileName, _LyricText); + SaveLyricToTagListsData data = new SaveLyricToTagListsData(_LyricText, _artist, _title, _CurrentTrackTag.FileName); + worker.RunWorkerAsync(data); + //SaveLyricToTagLists(_CurrentTrackTag.FileName, _LyricText); } _LrcTable = null; _newTrack = true; - _SearchingState = (int)SEARCH_STATE.NOT_SEARCHING; + _SearchingState = (int) SEARCH_STATE.NOT_SEARCHING; Process(); } @@ -845,7 +1057,7 @@ protected override void OnShowContextMenu() { - GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); + GUIDialogMenu dlg = (GUIDialogMenu) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_MENU); if (dlg == null) { return; @@ -860,7 +1072,7 @@ string translateLabelString = "Translate to " + _translationLanguage.ToLower(); dlg.Add(translateLabelString); - if (_selectedScreen == (int)MyLyricsSettings.Screen.LRC_PICK) + if (_selectedScreen == (int) MyLyricsSettings.Screen.LRC_PICK) { dlg.Add("Use picked LRC"); } @@ -869,7 +1081,7 @@ dlg.Add("Pick LRC"); } - if (CONTROL_LYRIC_SELECTED == (int)GUI_Lyrics_Controls.CONTROL_Lyric) + if (CONTROL_LYRIC_SELECTED == (int) GUI_Lyrics_Controls.CONTROL_Lyric) { dlg.Add("Show scrolling lyric"); } @@ -887,19 +1099,19 @@ switch (dlg.SelectedLabelText) { case "Find LRC": - _SearchType = (int)SEARCH_TYPES.ONLY_LRCS; + _SearchType = (int) SEARCH_TYPES.ONLY_LRCS; - _selectedScreen = (int)MyLyricsSettings.Screen.LRC; - resetGUI(_selectedScreen); + //_selectedScreen = (int) MyLyricsSettings.Screen.LRC; + resetGUI((int)MyLyricsSettings.Screen.LRC); _newTrack = true; break; case "Find lyric": - _SearchType = (int)SEARCH_TYPES.ONLY_LYRICS; + _SearchType = (int) SEARCH_TYPES.ONLY_LYRICS; - _selectedScreen = (int)MyLyricsSettings.Screen.LYRICS; - resetGUI(_selectedScreen); + //_selectedScreen = (int) MyLyricsSettings.Screen.LYRICS; + resetGUI((int)MyLyricsSettings.Screen.LYRICS); _newTrack = true; break; @@ -908,7 +1120,7 @@ // Don't use a stream to create a LRC if (g_Player.IsRadio) { - GUIDialogOK dlg2 = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); + GUIDialogOK dlg2 = (GUIDialogOK) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_OK); dlg2.SetHeading("LRC editor error"); dlg2.SetLine(1, "You cannot tag a streaming"); dlg2.SetLine(2, "media due to inproper timestamps."); @@ -917,13 +1129,13 @@ return; } - GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); - CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric; + GUIControl.HideControl(GetID, (int) GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); + //CONTROL_LYRIC_SELECTED = (int) GUI_Lyrics_Controls.CONTROL_Lyric; //_lyricsFound = false; - if (_selectedScreen != (int)MyLyricsSettings.Screen.LRC_EDITOR) + if (_selectedScreen != (int) MyLyricsSettings.Screen.LRC_EDITOR) { - resetGUI((int)MyLyricsSettings.Screen.LRC_EDITOR); + resetGUI((int) MyLyricsSettings.Screen.LRC_EDITOR); } //_newTrack = true; @@ -942,24 +1154,24 @@ case "Show scrolling lyric": case "Show static lyric": - _SearchType = (int)SEARCH_TYPES.ONLY_LYRICS; + _SearchType = (int) SEARCH_TYPES.ONLY_LYRICS; - _selectedScreen = (int)MyLyricsSettings.Screen.LYRICS; - resetGUI(_selectedScreen); + //_selectedScreen = (int)MyLyricsSettings.Screen.LYRICS; + resetGUI((int) MyLyricsSettings.Screen.LYRICS); _newTrack = true; - if (CONTROL_LYRIC_SELECTED == (int)GUI_Lyrics_Controls.CONTROL_Lyric) + if (CONTROL_LYRIC_SELECTED == (int) GUI_Lyrics_Controls.CONTROL_Lyric) { - CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll; - GUIControl.ShowControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); - GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric); + CONTROL_LYRIC_SELECTED = (int) GUI_Lyrics_Controls.CONTROL_Lyric_Scroll; + GUIControl.ShowControl(GetID, (int) GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); + GUIControl.HideControl(GetID, (int) GUI_Lyrics_Controls.CONTROL_Lyric); } else { - CONTROL_LYRIC_SELECTED = (int)GUI_Lyrics_Controls.CONTROL_Lyric; - GUIControl.HideControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); - GUIControl.ShowControl(GetID, (int)GUI_Lyrics_Controls.CONTROL_Lyric); + CONTROL_LYRIC_SELECTED = (int) GUI_Lyrics_Controls.CONTROL_Lyric; + GUIControl.HideControl(GetID, (int) GUI_Lyrics_Controls.CONTROL_Lyric_Scroll); + GUIControl.ShowControl(GetID, (int) GUI_Lyrics_Controls.CONTROL_Lyric); } break; @@ -969,9 +1181,6 @@ { TranslateProvider.TranslateProvider translate = null; - _StatusText = string.Empty; - GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); - string lyricToTranslate = string.Empty; SimpleLRC lrc = new SimpleLRC(_artist, _title, _LyricText); @@ -984,13 +1193,18 @@ lyricToTranslate = _LyricText; } + if (String.IsNullOrEmpty(lyricToTranslate)) return; + + _StatusText = string.Empty; + GUIControl.SetControlLabel(GetID, (int)GUI_General_Controls.CONTROL_LBStatus, _StatusText); + try { ... [truncated message content] |