Explorar o código

Minor fixes.
Cap search term in settings file to 10.
Fix returning from a song with a search that produces less than 6 items
causing the song list to disappear.
Save search term immediately so it can be reused after level finishes.

Stephen Damm %!s(int64=6) %!d(string=hai) anos
pai
achega
aaa21bd69b

+ 6 - 0
SongBrowserPlugin/DataAccess/SongBrowserSettings.cs

@@ -96,6 +96,12 @@ namespace SongBrowserPlugin.DataAccess
         {            
             String settingsFilePath = SongBrowserSettings.SettingsPath();
 
+            // TODO - not here
+            if (searchTerms.Count > 10)
+            {
+                searchTerms.RemoveRange(10, searchTerms.Count - 10);
+            }
+
             FileStream fs = new FileStream(settingsFilePath, FileMode.Create, FileAccess.Write);
             
             XmlSerializer serializer = new XmlSerializer(typeof(SongBrowserSettings));           

+ 1 - 0
SongBrowserPlugin/SongBrowserModel.cs

@@ -289,6 +289,7 @@ namespace SongBrowserPlugin
                 .AsQueryable()
                 .Where(x => $"{x.songName} {x.songSubName} {x.songAuthorName}".ToLower().Contains(searchTerm.ToLower()))
                 .ToList();
+            //_sortedSongs.ForEach(x => _log.Debug(x.levelID));
         }
 
         private void SortSongName()

+ 6 - 2
SongBrowserPlugin/UI/SongBrowserUI.cs

@@ -440,6 +440,7 @@ namespace SongBrowserPlugin.UI
             _log.Debug("Searching for \"{0}\"...", searchFor);
 
             _model.Settings.searchTerms.Insert(0, searchFor);
+            _model.Settings.Save();
             SongBrowserModel.LastSelectedLevelId = null;
             this.UpdateSongList();
             this.RefreshSongList();
@@ -567,11 +568,13 @@ namespace SongBrowserPlugin.UI
                 }
 
                 StandardLevelSO[] levels = _model.SortedSongList.ToArray();
+                foreach (StandardLevelSO level in levels)
+                    _log.Debug(level.levelID);
                 StandardLevelListViewController songListViewController = this._levelSelectionFlowCoordinator.GetPrivateField<StandardLevelListViewController>("_levelListViewController");
                 ReflectionUtil.SetPrivateField(_levelListTableView, "_levels", levels);
                 ReflectionUtil.SetPrivateField(songListViewController, "_levels", levels);            
                 TableView tableView = ReflectionUtil.GetPrivateField<TableView>(_levelListTableView, "_tableView");
-                tableView.ReloadData();
+                tableView.ReloadData();                
 
                 String selectedLevelID = null;
                 if (SongBrowserModel.LastSelectedLevelId != null)
@@ -587,7 +590,8 @@ namespace SongBrowserPlugin.UI
                     }
                 }
 
-                if (!String.IsNullOrEmpty(selectedLevelID) && levels.Any(x => x.levelID == selectedLevelID))
+                // HACK, seems like if 6 or less items scrolling to row causes the song list to disappear.
+                if (levels.Length > 6 && !String.IsNullOrEmpty(selectedLevelID) && levels.Any(x => x.levelID == selectedLevelID))
                 {
                     SelectAndScrollToLevel(_levelListTableView, selectedLevelID);
                 }