Archived
1
0
This repository has been archived on 2026-04-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
FoxTube/FoxTube/Controls/SuggestionsQueries.xaml.cs
T
Michael Gordeev adfc893cf6 Development 3
2018-06-30 23:06:15 +03:00

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;
}
}
}