From 20216bc1d61cc37fbdda90e005f75aa962f2437b Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 16 Nov 2025 19:45:17 +0000 Subject: [PATCH] Handle special software case in sound synthesizers. --- .../ViewModels/SoundSynthsListViewModel.cs | 56 +++++++++++++++---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/Marechai.App/Presentation/ViewModels/SoundSynthsListViewModel.cs b/Marechai.App/Presentation/ViewModels/SoundSynthsListViewModel.cs index 91802bb2..670dd23c 100644 --- a/Marechai.App/Presentation/ViewModels/SoundSynthsListViewModel.cs +++ b/Marechai.App/Presentation/ViewModels/SoundSynthsListViewModel.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; using System.Threading.Tasks; using Marechai.App.Presentation.Models; using Marechai.App.Services; @@ -56,14 +55,46 @@ public partial class SoundSynthsListViewModel : ObservableObject List soundSynths = await _soundSynthsService.GetAllSoundSynthsAsync(); - SoundSynths = new ObservableCollection(soundSynths.Select(ss => new SoundSynthListItem - { - Id = ss.Id ?? 0, - Name = ss.Name ?? "Unknown", - Company = ss.Company ?? "Unknown" - }) - .OrderBy(ss => ss.Company) - .ThenBy(ss => ss.Name)); + // Separate special sound synths from regular ones + var specialSoundSynths = new List(); + var regularSoundSynths = new List(); + + foreach(SoundSynthDto ss in soundSynths) + { + string displayName = ss.Name ?? "Unknown"; + + // Replace special database name + if(displayName == "DB_SOFTWARE") displayName = "Software"; + + var soundSynthItem = new SoundSynthListItem + { + Id = ss.Id ?? 0, + Name = displayName, + Company = ss.Company ?? "Unknown", + IsSpecial = ss.Name == "DB_SOFTWARE" + }; + + if(soundSynthItem.IsSpecial) + specialSoundSynths.Add(soundSynthItem); + else + regularSoundSynths.Add(soundSynthItem); + + _logger.LogInformation("Sound Synth: {Name}, Company: {Company}, ID: {Id}, IsSpecial: {IsSpecial}", + displayName, + ss.Company, + ss.Id, + soundSynthItem.IsSpecial); + } + + // Sort regular sound synths alphabetically by name + regularSoundSynths.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.OrdinalIgnoreCase)); + + // Add special sound synths first (Software), then regular sound synths + SoundSynths.Clear(); + + foreach(SoundSynthListItem ss in specialSoundSynths) SoundSynths.Add(ss); + + foreach(SoundSynthListItem ss in regularSoundSynths) SoundSynths.Add(ss); _logger.LogInformation("Successfully loaded {Count} Sound Synthesizers", SoundSynths.Count); IsDataLoaded = true; @@ -96,8 +127,9 @@ public partial class SoundSynthsListViewModel : ObservableObject public class SoundSynthListItem { - public int Id { get; set; } - public string Name { get; set; } = string.Empty; - public string? Company { get; set; } + public int Id { get; set; } + public string Name { get; set; } = string.Empty; + public string? Company { get; set; } + public bool IsSpecial { get; set; } } } \ No newline at end of file