114 lines
4.1 KiB
C#
114 lines
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices.WindowsRuntime;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using Windows.Foundation;
|
|
using Windows.Foundation.Collections;
|
|
using Windows.Storage;
|
|
using Windows.UI;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
using Windows.UI.Xaml.Controls.Primitives;
|
|
using Windows.UI.Xaml.Data;
|
|
using Windows.UI.Xaml.Input;
|
|
using Windows.UI.Xaml.Media;
|
|
using Windows.UI.Xaml.Navigation;
|
|
|
|
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
|
|
|
|
namespace FoxTube.Controls
|
|
{
|
|
public sealed partial class SuggestionsQueries : UserControl
|
|
{
|
|
ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
|
|
List<string> lastRequests = new List<string>();
|
|
public SuggestionsQueries()
|
|
{
|
|
this.InitializeComponent();
|
|
for (int k = 0; k < 5; k++)
|
|
if (settings.Values["history" + k] != null)
|
|
lastRequests.Add((string)settings.Values["history" + k]);
|
|
}
|
|
|
|
private void Item_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
string term = (sender as Button).Content as string;
|
|
if (!lastRequests.Contains(term))
|
|
AddToHistory(term);
|
|
Methods.MainPage.GoToSearch(term);
|
|
}
|
|
|
|
public async void BuildList(string keyword)
|
|
{
|
|
(grid.Children[0] as StackPanel).Visibility = Visibility.Visible;
|
|
searchStandby.Visibility = Visibility.Visible;
|
|
suggestions.Children.Clear();
|
|
|
|
foreach(string s in lastRequests)
|
|
{
|
|
Button item = new Button()
|
|
{
|
|
HorizontalAlignment = HorizontalAlignment.Stretch,
|
|
HorizontalContentAlignment = HorizontalAlignment.Left,
|
|
Background = new SolidColorBrush(Colors.Transparent),
|
|
Content = s
|
|
};
|
|
item.Click += Item_Click;
|
|
history.Children.Add(item);
|
|
}
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
await Task.Run(() =>
|
|
{
|
|
doc.Load(string.Format("http://suggestqueries.google.com/complete/search?output=toolbar&hl={0}&q={1}",
|
|
(settings.Values["region"] as string)[0] + (settings.Values["region"] as string)[1],
|
|
keyword));
|
|
});
|
|
|
|
if(doc["toplevel"].HasChildNodes)
|
|
for (int k = 0; k < 5; k++)
|
|
try
|
|
{
|
|
Button item = new Button()
|
|
{
|
|
HorizontalAlignment = HorizontalAlignment.Stretch,
|
|
HorizontalContentAlignment = HorizontalAlignment.Left,
|
|
Background = new SolidColorBrush(Colors.Transparent),
|
|
Content = doc["toplevel"].ChildNodes[k]["suggestion"].GetAttribute("data")
|
|
};
|
|
item.Click += Item_Click;
|
|
suggestions.Children.Add(item);
|
|
} catch { break; }
|
|
else
|
|
suggestions.Children.Add(new Button()
|
|
{
|
|
Content = "No suggestions found.",
|
|
IsEnabled = false,
|
|
Foreground = new SolidColorBrush(Colors.Gray),
|
|
Background = new SolidColorBrush(Colors.Transparent)
|
|
});
|
|
|
|
searchStandby.Visibility = Visibility.Collapsed;
|
|
}
|
|
|
|
public void AddToHistory(string keyword)
|
|
{
|
|
lastRequests.Insert(0, keyword);
|
|
if (lastRequests.Count > 5)
|
|
lastRequests.RemoveAt(5);
|
|
|
|
for(int k = 0; k < 5; k++)
|
|
try { settings.Values["history" + k] = lastRequests[k]; }
|
|
catch { settings.Values.Add("history" + k, lastRequests[k]); }
|
|
}
|
|
|
|
public void Hide()
|
|
{
|
|
(grid.Children[0] as StackPanel).Visibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
}
|