Merge branch 'develop' into patch-5
This commit is contained in:
12 files changed
+269
-37
No files matched your search
@@ -152,6 +152,9 @@
|
|||||||
<string name="TR_SCREENSONG_NUMSONGS">(%v songs)</string>
|
<string name="TR_SCREENSONG_NUMSONGS">(%v songs)</string>
|
||||||
<string name="TR_SCREENSONG_NUMSONG">(%v song)</string>
|
<string name="TR_SCREENSONG_NUMSONG">(%v song)</string>
|
||||||
<string name="TR_SCREENSONG_ARTIST_TITLE">%a - %t</string>
|
<string name="TR_SCREENSONG_ARTIST_TITLE">%a - %t</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Jump to the letter • F3 = Search • CTRL+R = Random selection • CTRL+S = Start medley • CTRL+A = Start all random • CTRL+V = Start visible random • Space = Open song options • ESC = Back to main menu</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Search artist and title, prefixes for the search → a: = artist • t: = title • c: = creator • e: = edition • g: = genre • y: = year (e.g. 1999 or 1980-1989) • l: = language • al: = album • fi: = file name • fo: = folder name</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Press your team number to use a random song joker</string>
|
||||||
<string name="TR_SCREENSING_PAUSE">Pause</string>
|
<string name="TR_SCREENSING_PAUSE">Pause</string>
|
||||||
<string name="TR_SCREENSING_BUTTON_CANCEL">Stop singing</string>
|
<string name="TR_SCREENSING_BUTTON_CANCEL">Stop singing</string>
|
||||||
<string name="TR_SCREENSING_BUTTON_CONTINUE">Continue</string>
|
<string name="TR_SCREENSING_BUTTON_CONTINUE">Continue</string>
|
||||||
|
|||||||
@@ -147,6 +147,9 @@
|
|||||||
<string name="TR_SCREENSONG_NUMSONGS">(%v Lieder)</string>
|
<string name="TR_SCREENSONG_NUMSONGS">(%v Lieder)</string>
|
||||||
<string name="TR_SCREENSONG_NUMSONG">(%v Lied)</string>
|
<string name="TR_SCREENSONG_NUMSONG">(%v Lied)</string>
|
||||||
<string name="TR_SCREENSONG_ARTIST_TITLE">%a -%t</string>
|
<string name="TR_SCREENSONG_ARTIST_TITLE">%a -%t</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Zum Buchstaben springen • F3 = Suchen • STRG+R = Zufällige Auswahl • STRG+S = Starte Medley • STRG+A = Alle zufällig starten • STRG+V = Sichtbare zufällig starten • Leertaste = Lied-Optionen öffnen • ESC = Zurück zum Hauptmenü</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Interpreten und Titel durchsuchen, Präfixe für die Suche → a: = Interpret • t: = Titel • c: = Ersteller • e: = Edition • g: = Genre • y: = Jahr (z.B. 1999 oder 1980-1989) • l: = Sprache • al: = Album • fi: = Dateiname • fo: = Ordnername</string>
|
||||||
|
<string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Drücke die Teamnummer um einen Zufallssong Joker zu verwenden</string>
|
||||||
<string name="TR_SCREENSING_PAUSE">Pause</string>
|
<string name="TR_SCREENSING_PAUSE">Pause</string>
|
||||||
<string name="TR_SCREENSING_BUTTON_CANCEL">Lied beenden</string>
|
<string name="TR_SCREENSING_BUTTON_CANCEL">Lied beenden</string>
|
||||||
<string name="TR_SCREENSING_BUTTON_CONTINUE">Fortfahren</string>
|
<string name="TR_SCREENSING_BUTTON_CONTINUE">Fortfahren</string>
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
ScreenSong
|
ScreenSong
|
||||||
|
|
||||||
|
++++++++++
|
||||||
|
Version 7:
|
||||||
|
|
||||||
|
Add:
|
||||||
|
<TextHelpBar>
|
||||||
|
<TextHelpBarSearch>
|
||||||
|
<TextHelpBarParty>
|
||||||
|
Shows key shortcut and search usage as small text line at the bottom of the screen.
|
||||||
|
|
||||||
++++++++++
|
++++++++++
|
||||||
Version 6:
|
Version 6:
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
<Informations>
|
<Informations>
|
||||||
<ScreenName>ScreenSong</ScreenName>
|
<ScreenName>ScreenSong</ScreenName>
|
||||||
<ScreenVersion>6</ScreenVersion>
|
<ScreenVersion>7</ScreenVersion>
|
||||||
</Informations>
|
</Informations>
|
||||||
<Backgrounds>
|
<Backgrounds>
|
||||||
<Background Name="Background1">
|
<Background Name="Background1">
|
||||||
@@ -238,6 +238,48 @@
|
|||||||
<Font>Outline</Font>
|
<Font>Outline</Font>
|
||||||
<Text>TR_SCREENSONG_SONGOPTIONS</Text>
|
<Text>TR_SCREENSONG_SONGOPTIONS</Text>
|
||||||
</Text>
|
</Text>
|
||||||
|
<Text Name="TextHelpBar">
|
||||||
|
<X>40</X>
|
||||||
|
<Y>700</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
<H>16</H>
|
||||||
|
<MaxW>1200</MaxW>
|
||||||
|
<Color Name="TextColor" />
|
||||||
|
<SelColor Name="TextSelColor" />
|
||||||
|
<Align>Left</Align>
|
||||||
|
<ResizeAlign>Bottom</ResizeAlign>
|
||||||
|
<Style>Normal</Style>
|
||||||
|
<Font>Outline</Font>
|
||||||
|
<Text>TR_SCREENSONG_HELPMESSAGE</Text>
|
||||||
|
</Text>
|
||||||
|
<Text Name="TextHelpBarSearch">
|
||||||
|
<X>40</X>
|
||||||
|
<Y>700</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
<H>16</H>
|
||||||
|
<MaxW>1200</MaxW>
|
||||||
|
<Color Name="TextColor" />
|
||||||
|
<SelColor Name="TextSelColor" />
|
||||||
|
<Align>Left</Align>
|
||||||
|
<ResizeAlign>Bottom</ResizeAlign>
|
||||||
|
<Style>Normal</Style>
|
||||||
|
<Font>Outline</Font>
|
||||||
|
<Text>TR_SCREENSONG_HELPMESSAGESEARCH</Text>
|
||||||
|
</Text>
|
||||||
|
<Text Name="TextHelpBarParty">
|
||||||
|
<X>40</X>
|
||||||
|
<Y>700</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
<H>16</H>
|
||||||
|
<MaxW>1200</MaxW>
|
||||||
|
<Color Name="TextColor" />
|
||||||
|
<SelColor Name="TextSelColor" />
|
||||||
|
<Align>Left</Align>
|
||||||
|
<ResizeAlign>Bottom</ResizeAlign>
|
||||||
|
<Style>Normal</Style>
|
||||||
|
<Font>Outline</Font>
|
||||||
|
<Text>TR_SCREENSONG_HELPMESSAGEPARTY</Text>
|
||||||
|
</Text>
|
||||||
</Texts>
|
</Texts>
|
||||||
<Buttons>
|
<Buttons>
|
||||||
<Button Name="ButtonJoker1">
|
<Button Name="ButtonJoker1">
|
||||||
|
|||||||
@@ -427,6 +427,7 @@ namespace VocaluxeLib.PartyModes.Challenge
|
|||||||
_ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
|
_ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
|
||||||
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
|
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
|
||||||
|
|
||||||
|
_ScreenSongOptions.Selection.SongIndex = -1;
|
||||||
_ScreenSongOptions.Selection.CategoryIndex = -1;
|
_ScreenSongOptions.Selection.CategoryIndex = -1;
|
||||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
|
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Verbose] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Verbose] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Verbose] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Verbose] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -287,7 +287,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Debug] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Debug] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -340,7 +340,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Debug] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Debug] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -498,7 +498,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Information] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Information] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -551,7 +551,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Information] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Information] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -709,7 +709,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Warning] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Warning] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -762,7 +762,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Warning] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Warning] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -920,7 +920,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Error] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Error] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
@@ -973,7 +973,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[Error] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
StringAssert.Contains("[Error] " + _TestMessageWithResolvedData, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(_TestMessageWithData, error, "Error message wrong");
|
StringAssert.Contains(_TestMessageWithResolvedData, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ namespace Tests.VocaluxeLib.Log
|
|||||||
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
StringAssert.Contains("Version = " + versionTag, log, "Main log version tag entry wrong");
|
||||||
StringAssert.Contains("[<#= LogLevel #>] " + <#= WithData?"_TestMessageWithResolvedData":"_TestMessage" #>, log, "Main log entry wrong");
|
StringAssert.Contains("[<#= LogLevel #>] " + <#= WithData?"_TestMessageWithResolvedData":"_TestMessage" #>, log, "Main log entry wrong");
|
||||||
|
|
||||||
StringAssert.Contains(<#= WithData?"_TestMessageWithData":"_TestMessage" #>, error, "Error message wrong");
|
StringAssert.Contains(<#= WithData?"_TestMessageWithResolvedData":"_TestMessage" #>, error, "Error message wrong");
|
||||||
},
|
},
|
||||||
ELogLevel.Verbose);
|
ELogLevel.Verbose);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#region license
|
#region license
|
||||||
// This file is part of Vocaluxe.
|
// This file is part of Vocaluxe.
|
||||||
//
|
//
|
||||||
// Vocaluxe is free software: you can redistribute it and/or modify
|
// Vocaluxe is free software: you can redistribute it and/or modify
|
||||||
@@ -93,6 +93,89 @@ namespace Vocaluxe.Base
|
|||||||
if (_SearchString != "")
|
if (_SearchString != "")
|
||||||
searchStrings = _SearchString.ToUpper().Split(new char[] {' '});
|
searchStrings = _SearchString.ToUpper().Split(new char[] {' '});
|
||||||
|
|
||||||
|
String searchForArtist = null; // a:
|
||||||
|
String searchForTitle = null; // t:
|
||||||
|
String searchForGenre = null; // g:
|
||||||
|
String searchForYear = null; // y:
|
||||||
|
String searchForLanguage = null; // l:
|
||||||
|
String searchForCreator = null; // c:
|
||||||
|
String searchForEdition = null; // e:
|
||||||
|
String searchForAlbum = null; // al:
|
||||||
|
String searchForFileName = null; // fi:
|
||||||
|
String searchForFolderName = null; // fo:
|
||||||
|
bool expertSearch = false;
|
||||||
|
|
||||||
|
if (searchStrings != null)
|
||||||
|
{
|
||||||
|
foreach (String searchToken in searchStrings)
|
||||||
|
{
|
||||||
|
if (searchToken.Length < 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
String temp = searchToken.Substring(0, 2);
|
||||||
|
bool foundIt = true;
|
||||||
|
|
||||||
|
switch (temp)
|
||||||
|
{
|
||||||
|
case "A:":
|
||||||
|
searchForArtist = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "T:":
|
||||||
|
searchForTitle = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "G:":
|
||||||
|
searchForGenre = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "Y:":
|
||||||
|
searchForYear = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "L:":
|
||||||
|
searchForLanguage = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "C:":
|
||||||
|
searchForCreator = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
case "E:":
|
||||||
|
searchForEdition = searchToken.Substring(2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
foundIt = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundIt)
|
||||||
|
{
|
||||||
|
if (!expertSearch) expertSearch = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchToken.Length < 4)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
foundIt = true;
|
||||||
|
temp = searchToken.Substring(0, 3);
|
||||||
|
|
||||||
|
switch (temp)
|
||||||
|
{
|
||||||
|
case "AL:":
|
||||||
|
searchForAlbum = searchToken.Substring(3);
|
||||||
|
break;
|
||||||
|
case "FI:":
|
||||||
|
searchForFileName = searchToken.Substring(3);
|
||||||
|
break;
|
||||||
|
case "FO:":
|
||||||
|
searchForFolderName = searchToken.Substring(3);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
foundIt = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundIt && !expertSearch)
|
||||||
|
expertSearch = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (CSong song in CSongs.Songs)
|
foreach (CSong song in CSongs.Songs)
|
||||||
{
|
{
|
||||||
if (_PlaylistID != -1 && !CBase.Playlist.ContainsSong(_PlaylistID, song.ID))
|
if (_PlaylistID != -1 && !CBase.Playlist.ContainsSong(_PlaylistID, song.ID))
|
||||||
@@ -102,9 +185,85 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
if (searchStrings == null)
|
if (searchStrings == null)
|
||||||
_FilteredSongs.Add(song);
|
_FilteredSongs.Add(song);
|
||||||
|
else if (expertSearch)
|
||||||
|
{
|
||||||
|
// Stefan1200: Stop at a maximum of 500 search result to prevent performance issues
|
||||||
|
if (_FilteredSongs.Count >= 500)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (searchForAlbum != null && song.Album.ToUpper().Contains(searchForAlbum))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
if (searchForArtist != null && song.Artist.ToUpper().Contains(searchForArtist))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
if (searchForTitle != null && song.Title.ToUpper().Contains(searchForTitle))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
if (searchForCreator != null && song.Creator.ToUpper().Contains(searchForCreator))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
if (searchForFileName != null && song.FileName.ToUpper().Contains(searchForFileName))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
if (searchForFolderName != null && song.FolderName.ToUpper().Contains(searchForFolderName))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
|
||||||
|
if (searchForGenre != null)
|
||||||
|
{
|
||||||
|
foreach (String genre in song.Genres)
|
||||||
|
{
|
||||||
|
if (genre.ToUpper().Contains(searchForGenre))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchForLanguage != null)
|
||||||
|
{
|
||||||
|
foreach (String language in song.Languages)
|
||||||
|
{
|
||||||
|
if (language.ToUpper().Contains(searchForLanguage))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchForEdition != null)
|
||||||
|
{
|
||||||
|
foreach (String edition in song.Editions)
|
||||||
|
{
|
||||||
|
if (edition.ToUpper().Contains(searchForEdition))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchForYear != null)
|
||||||
|
{
|
||||||
|
int pos = searchForYear.IndexOf("-");
|
||||||
|
if (pos == -1)
|
||||||
|
{
|
||||||
|
if (song.Year.Contains(searchForYear))
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
}
|
||||||
|
else if (searchForYear.Length == 9)
|
||||||
|
{
|
||||||
|
int yearStart = -1;
|
||||||
|
int yearEnd = -1;
|
||||||
|
if (!Int32.TryParse(searchForYear.Substring(0, pos), out yearStart))
|
||||||
|
continue;
|
||||||
|
if (!Int32.TryParse(searchForYear.Substring(pos + 1), out yearEnd))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Stefan1200: Prevent searches like 0000-9999, limit for a max distance of 100 years
|
||||||
|
if (yearEnd - yearStart > 100)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int yearSearch = -1;
|
||||||
|
if (!Int32.TryParse(song.Year, out yearSearch))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (yearSearch >= yearStart && yearSearch <= yearEnd)
|
||||||
|
_FilteredSongs.Add(song);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string search = song.Title.ToUpper() + " " + song.Artist.ToUpper() + " " + song.FolderName.ToUpper() + " " + song.FileName.ToUpper();
|
string search = song.Title.ToUpper() + " " + song.Artist.ToUpper();
|
||||||
|
|
||||||
if (searchStrings.All(search.Contains))
|
if (searchStrings.All(search.Contains))
|
||||||
_FilteredSongs.Add(song);
|
_FilteredSongs.Add(song);
|
||||||
|
|||||||
@@ -42,13 +42,16 @@ namespace Vocaluxe.Screens
|
|||||||
// Version number for theme files. Increment it, if you've changed something on the theme files!
|
// Version number for theme files. Increment it, if you've changed something on the theme files!
|
||||||
protected override int _ScreenVersion
|
protected override int _ScreenVersion
|
||||||
{
|
{
|
||||||
get { return 6; }
|
get { return 7; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private const string _TextCategory = "TextCategory";
|
private const string _TextCategory = "TextCategory";
|
||||||
private const string _TextSelection = "TextSelection";
|
private const string _TextSelection = "TextSelection";
|
||||||
private const string _TextSearchBarTitle = "TextSearchBarTitle";
|
private const string _TextSearchBarTitle = "TextSearchBarTitle";
|
||||||
private const string _TextSearchBar = "TextSearchBar";
|
private const string _TextSearchBar = "TextSearchBar";
|
||||||
|
private const string _TextHelpBar = "TextHelpBar";
|
||||||
|
private const string _TextHelpBarSearch = "TextHelpBarSearch";
|
||||||
|
private const string _TextHelpBarParty = "TextHelpBarParty";
|
||||||
private const string _TextOptionsTitle = "TextOptionsTitle";
|
private const string _TextOptionsTitle = "TextOptionsTitle";
|
||||||
|
|
||||||
private const string _ButtonOpenOptions = "ButtonOpenOptions";
|
private const string _ButtonOpenOptions = "ButtonOpenOptions";
|
||||||
@@ -137,6 +140,9 @@ namespace Vocaluxe.Screens
|
|||||||
tlist.Add(_TextSelection);
|
tlist.Add(_TextSelection);
|
||||||
tlist.Add(_TextSearchBarTitle);
|
tlist.Add(_TextSearchBarTitle);
|
||||||
tlist.Add(_TextSearchBar);
|
tlist.Add(_TextSearchBar);
|
||||||
|
tlist.Add(_TextHelpBar);
|
||||||
|
tlist.Add(_TextHelpBarSearch);
|
||||||
|
tlist.Add(_TextHelpBarParty);
|
||||||
tlist.Add(_TextOptionsTitle);
|
tlist.Add(_TextOptionsTitle);
|
||||||
|
|
||||||
_ThemeStatics = new string[] {_StaticSearchBar, _StaticOptionsBG};
|
_ThemeStatics = new string[] {_StaticSearchBar, _StaticOptionsBG};
|
||||||
@@ -282,6 +288,21 @@ namespace Vocaluxe.Screens
|
|||||||
else if (!_Sso.Selection.PartyMode)
|
else if (!_Sso.Selection.PartyMode)
|
||||||
_SearchActive = true;
|
_SearchActive = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Keys.V:
|
||||||
|
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
|
||||||
|
_StartRandomVisibleSongs();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Keys.R:
|
||||||
|
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.RandomOnly)
|
||||||
|
_SelectNextRandom(-1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Keys.S:
|
||||||
|
if (keyEvent.Mod == EModifier.Ctrl && CSongs.NumSongsVisible > 0 && !_Sso.Selection.PartyMode)
|
||||||
|
_StartMedleySong(_SongMenu.GetPreviewSongNr());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!_SearchActive)
|
if (!_SearchActive)
|
||||||
{
|
{
|
||||||
@@ -296,23 +317,9 @@ namespace Vocaluxe.Screens
|
|||||||
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
|
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
|
||||||
_StartRandomAllSongs();
|
_StartRandomAllSongs();
|
||||||
break;
|
break;
|
||||||
case Keys.V:
|
|
||||||
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
|
|
||||||
_StartRandomVisibleSongs();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Keys.R:
|
|
||||||
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.RandomOnly)
|
|
||||||
_SelectNextRandom(-1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Keys.S:
|
|
||||||
if (keyEvent.Mod == EModifier.Ctrl && CSongs.NumSongsVisible > 0 && !_Sso.Selection.PartyMode)
|
|
||||||
_StartMedleySong(_SongMenu.GetPreviewSongNr());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Keys.F:
|
case Keys.F:
|
||||||
if (keyEvent.Mod == EModifier.Ctrl)
|
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
|
||||||
_SearchActive = true;
|
_SearchActive = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -730,12 +737,18 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
_Texts[_TextSearchBar].Visible = true;
|
_Texts[_TextSearchBar].Visible = true;
|
||||||
_Texts[_TextSearchBarTitle].Visible = true;
|
_Texts[_TextSearchBarTitle].Visible = true;
|
||||||
|
_Texts[_TextHelpBar].Visible = false;
|
||||||
|
_Texts[_TextHelpBarSearch].Visible = true;
|
||||||
|
_Texts[_TextHelpBarParty].Visible = false;
|
||||||
_Statics[_StaticSearchBar].Visible = true;
|
_Statics[_StaticSearchBar].Visible = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_Texts[_TextSearchBar].Visible = false;
|
_Texts[_TextSearchBar].Visible = false;
|
||||||
_Texts[_TextSearchBarTitle].Visible = false;
|
_Texts[_TextSearchBarTitle].Visible = false;
|
||||||
|
_Texts[_TextHelpBar].Visible = !_Sso.Selection.PartyMode;
|
||||||
|
_Texts[_TextHelpBarSearch].Visible = false;
|
||||||
|
_Texts[_TextHelpBarParty].Visible = _Sso.Selection.PartyMode;
|
||||||
_Statics[_StaticSearchBar].Visible = false;
|
_Statics[_StaticSearchBar].Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ namespace VocaluxeLib.Log
|
|||||||
{
|
{
|
||||||
if (i >= propertyValues.Length)
|
if (i >= propertyValues.Length)
|
||||||
return match.Value;
|
return match.Value;
|
||||||
return propertyValues[i++].ToString();
|
return "\"" + propertyValues[i++] + "\"";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -288,7 +288,9 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
|
|
||||||
public void LeaveSelectedCategory()
|
public void LeaveSelectedCategory()
|
||||||
{
|
{
|
||||||
_LeaveCategory();
|
// Stefan1200: This was implemented with the pull request #359 and is the reason for the bug described in issue #390.
|
||||||
|
// Currently disabled until we know if this is still needed or we find a better solution!
|
||||||
|
// _LeaveCategory();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void UnloadSkin() {}
|
public virtual void UnloadSkin() {}
|
||||||
|
|||||||
+5
-5
@@ -9,7 +9,7 @@ platform:
|
|||||||
clone_depth: 15
|
clone_depth: 15
|
||||||
environment:
|
environment:
|
||||||
GitHubKey:
|
GitHubKey:
|
||||||
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
secure: sGetWh2XUYs95VBT+QYNPtDW9Rh2/JBuxNNYXytpn7mMudUMcjSKDGErkCTum+ZE
|
||||||
init:
|
init:
|
||||||
- git config --global core.autocrlf true
|
- git config --global core.autocrlf true
|
||||||
install:
|
install:
|
||||||
@@ -63,7 +63,7 @@ before_build:
|
|||||||
choco install "msbuild-sonarqube-runner" -y
|
choco install "msbuild-sonarqube-runner" -y
|
||||||
SonarScanner.MSBuild.exe begin `
|
SonarScanner.MSBuild.exe begin `
|
||||||
/k:"Vocaluxe" `
|
/k:"Vocaluxe" `
|
||||||
/d:sonar.organization="vocaluxe" `
|
/o:"vocaluxe" `
|
||||||
/d:sonar.host.url="https://sonarcloud.io" `
|
/d:sonar.host.url="https://sonarcloud.io" `
|
||||||
/d:sonar.login="$Env:SonarQubeToken" `
|
/d:sonar.login="$Env:SonarQubeToken" `
|
||||||
/d:"sonar.pullrequest.key=$env:APPVEYOR_PULL_REQUEST_NUMBER" `
|
/d:"sonar.pullrequest.key=$env:APPVEYOR_PULL_REQUEST_NUMBER" `
|
||||||
@@ -74,7 +74,7 @@ before_build:
|
|||||||
choco install "msbuild-sonarqube-runner" -y
|
choco install "msbuild-sonarqube-runner" -y
|
||||||
SonarScanner.MSBuild.exe begin `
|
SonarScanner.MSBuild.exe begin `
|
||||||
/k:"Vocaluxe" `
|
/k:"Vocaluxe" `
|
||||||
/d:sonar.organization="vocaluxe" `
|
/o:"vocaluxe" `
|
||||||
/d:sonar.host.url="https://sonarcloud.io" `
|
/d:sonar.host.url="https://sonarcloud.io" `
|
||||||
/v:"$Env:GIT_VERSION_TAG" `
|
/v:"$Env:GIT_VERSION_TAG" `
|
||||||
/d:sonar.login="$Env:SonarQubeToken" `
|
/d:sonar.login="$Env:SonarQubeToken" `
|
||||||
@@ -135,7 +135,7 @@ deploy:
|
|||||||
release: $(APPVEYOR_REPO_TAG_NAME)
|
release: $(APPVEYOR_REPO_TAG_NAME)
|
||||||
description: $(APPVEYOR_REPO_COMMIT)
|
description: $(APPVEYOR_REPO_COMMIT)
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
secure: sGetWh2XUYs95VBT+QYNPtDW9Rh2/JBuxNNYXytpn7mMudUMcjSKDGErkCTum+ZE
|
||||||
artifact: ReleaseZip
|
artifact: ReleaseZip
|
||||||
prerelease: $(IS_BETA_RELEASE)
|
prerelease: $(IS_BETA_RELEASE)
|
||||||
on:
|
on:
|
||||||
@@ -147,7 +147,7 @@ deploy:
|
|||||||
release: Latest Nightly build
|
release: Latest Nightly build
|
||||||
description: $(APPVEYOR_REPO_COMMIT)
|
description: $(APPVEYOR_REPO_COMMIT)
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
secure: sGetWh2XUYs95VBT+QYNPtDW9Rh2/JBuxNNYXytpn7mMudUMcjSKDGErkCTum+ZE
|
||||||
artifact: ReleaseZip
|
artifact: ReleaseZip
|
||||||
prerelease: true
|
prerelease: true
|
||||||
on:
|
on:
|
||||||
|
|||||||
Reference in new issue
Block a user