Search capbility for puzzles

This commit is contained in:
2017-03-10 14:18:17 +03:00
parent 708ff2372f
commit bd1ca9fdf2
2 changed files with 73 additions and 9 deletions

View File

@ -22,6 +22,7 @@ namespace EduNetworkBuilder
PacketMessage myPacketMessage;
int EditableCount = -1;
bool processing = false;
string FilterString = "";
/// <summary>
/// Instantiate a ListBoxWindow for use in choosing a network to load
@ -39,6 +40,7 @@ namespace EduNetworkBuilder
lblInstructions.Text = NB.Translate("LBW_LBWFilter");
panelCheckboxes.SuspendLayout();
string SelectedTag = GetSelectedTag();
tbSearchBox.Visible = true;
if (SelectedTag == NB.Translate("_All"))
Text = Text + NB.Translate("_AllS");
foreach (string str in NB.GetPuzzleTags())
@ -70,6 +72,7 @@ namespace EduNetworkBuilder
{
InitializeComponent();
LanguagifyComponents();
tbSearchBox.Visible = false;
if (mode == LBContents.routes)
{
MyMode = LBContents.routes;
@ -226,19 +229,54 @@ namespace EduNetworkBuilder
if (Puzzles == null) return;
foreach (string str in Puzzles)
{
pi = NB.GetPuzzleInfoFromName(str);
shown_name = pi.PuzzleName;
if (Properties.Settings.Default.ScoreList.Contains(str))
shown_name = "* " + shown_name;
foreach(string tag in pi.PuzzleTags)
if (FilterString == "")
{
if(isChecked(tag))
pi = NB.GetPuzzleInfoFromName(str);
shown_name = pi.PuzzleName;
if (Properties.Settings.Default.ScoreList.Contains(str))
shown_name = "* " + shown_name;
foreach (string tag in pi.PuzzleTags)
{
if (isChecked(tag))
{
lbWindowData.Items.Add(shown_name);
break;
}
}
}else
{
//We are filtering stuff
pi = NB.GetPuzzleInfoFromName(str);
shown_name = pi.PuzzleName;
bool added = false;
string localFilter = ".*" + FilterString + ".*";
if (Properties.Settings.Default.ScoreList.Contains(str))
shown_name = "* " + shown_name;
if (!added && pi.PuzzleName != null && Regex.IsMatch(pi.PuzzleName, localFilter, RegexOptions.IgnoreCase))
{
added = true;
lbWindowData.Items.Add(shown_name);
break;
}
if (!added && pi.PuzzleDescription!= null && Regex.IsMatch(pi.PuzzleDescription, localFilter, RegexOptions.IgnoreCase))
{
added = true;
lbWindowData.Items.Add(shown_name);
}
if (!added && pi.PuzzleTitle != null && Regex.IsMatch(pi.PuzzleTitle, localFilter,RegexOptions.IgnoreCase))
{
added = true;
lbWindowData.Items.Add(shown_name);
}
foreach (string tag in pi.PuzzleTags)
{
if (!added && pi.PuzzleTitle != null && Regex.IsMatch(tag, localFilter, RegexOptions.IgnoreCase))
{
lbWindowData.Items.Add(shown_name);
break;
}
}
}
}
}
if(selected != null && selected != "")
{
if (lbWindowData.Items.Contains(selected))
@ -472,5 +510,20 @@ namespace EduNetworkBuilder
}
}
private void tbSearchBox_TextChanged(object sender, EventArgs e)
{
//If there are more than 2 characters, then we start to see if we can filter it
if (tbSearchBox.Text.Length > 2)
{
//Now we filter the results
FilterString = tbSearchBox.Text;
UpdateForm();
}
else
{
FilterString = "";
UpdateForm();
}
}
}
}