Files
deskhubsharprevised/DeskHubSharpRevised/MainWindow.axaml.cs

161 lines
5.5 KiB
C#
Raw Permalink Normal View History

2022-06-29 13:02:15 -04:00
using System;
using System.Collections.ObjectModel;
using System.Linq;
2022-06-29 12:59:53 -04:00
using Avalonia.Controls;
2022-06-29 13:02:15 -04:00
using Avalonia.Interactivity;
using DeskHubSharpRevised.BLL;
using DeskHubSharpRevised.Models;
2022-06-29 12:59:53 -04:00
namespace DeskHubSharpRevised
{
public partial class MainWindow : Window
{
2022-06-29 13:02:15 -04:00
private ObservableCollection<RepoDetail> _repoDetail;
private User _user;
private Request _request;
2022-06-29 12:59:53 -04:00
public MainWindow()
{
InitializeComponent();
}
2022-06-29 13:02:15 -04:00
private void btn_detail_Click(object sender, RoutedEventArgs e)
{
try
{
RepoDetail repo = _repoDetail[ListBox.SelectedIndex];
DetailWindow detail = new DetailWindow(repo);
detail.Show();
}
catch (IndexOutOfRangeException)
{
ShowErrorMessage("Please pick a repository!");
}
catch (NullReferenceException)
{
ShowErrorMessage("Please search for a user with the Search button!");
}
catch (ArgumentOutOfRangeException)
{
ShowErrorMessage("Please search for a user with the Search button!");
}
}
private void btn_exit_Click(object sender, RoutedEventArgs e)
{
this.Close();
Environment.Exit(0);
}
private void btn_about_Click(object sender, RoutedEventArgs e)
{
AboutWindow about = new AboutWindow();
about.Show();
}
private void btn_feedback_Click(object sender, RoutedEventArgs e)
{
FeedbackWindow feedback = new FeedbackWindow();
feedback.Show();
}
private void btn_help_Click(object sender, RoutedEventArgs e)
{
HelpWindow help = new HelpWindow();
help.Show();
}
private async void btn_search_Click(object sender, RoutedEventArgs e)
{
this.cmbbox_sort = this.Find<ComboBox>("cmbbox_sort");
2022-06-29 13:02:15 -04:00
SearchWindow search = new SearchWindow();
await search.ShowDialog(this);
_repoDetail = RequestList.repoDetail;
RepoInfo info = new RepoInfo();
var stuff = info.GetRepoInfoList();
if (stuff == null)
{
txtblk_username.Text = txtblk_username.Text;
txtblk_url.Text = txtblk_url.Text;
txtblk_bio.Text = txtblk_bio.Text;
txtblk_email.Text = txtblk_email.Text;
txtblk_realname.Text = txtblk_realname.Text;
}
else
{
_user = RequestList.userDetail;
ListBox.Items = stuff;
txtblk_username.Text = _user.login;
txtblk_url.Text = _user.html_url;
txtblk_bio.Text = _user.bio;
txtblk_email.Text = _user.blog;
txtblk_realname.Text = _user.name;
txtblk_repocount.Text = $"{_user.login} has {_user.public_repos} public repositories.";
_request = new Request();
cmbbox_sort.Items = _request.PerformGetSort();
2022-06-29 13:02:15 -04:00
}
}
public void ShowErrorMessage(string message)
{
ErrorWindow err = new ErrorWindow();
err.lbl_title = err.Find<Label>("lbl_title");
err.lbl_title.Content = "Did you search a user? Try that first.";
err.txtblk_error = err.Find<TextBlock>("txtblk_error");
err.txtblk_error.Text = message;
2022-06-29 13:02:15 -04:00
err.Show();
}
private void btn_sort_Click(object sender, RoutedEventArgs e)
{
try
{
string sortTerm = cmbbox_sort.SelectedItem.ToString();
if (sortTerm == "A - Z")
{
var sortedList = _repoDetail.OrderBy(x => x.full_name).ToList();
ListBox.Items = sortedList.Select(x => x.full_name);
}
if (sortTerm == "Least to most Stars")
{
var sortedList = _repoDetail.OrderBy(c => c.stargazers_count).ToList();
ListBox.Items = sortedList.Select(x => x.full_name);
}
if (sortTerm == "Least to most Forks")
{
var sortedList = _repoDetail.OrderBy(c => c.forks_count).ToList();
ListBox.Items = sortedList.Select(x => x.full_name);
}
if (sortTerm == "Least to most Watchers")
{
var sortedList = _repoDetail.OrderBy(c => c.watchers_count).ToList();
ListBox.Items = sortedList.Select(x => x.full_name);
}
}
catch (NullReferenceException)
{
ShowErrorMessage("A user has not been searched. Please try again.");
}
}
private void btn_searchrepo_Click(object sender, RoutedEventArgs e)
{
try
{
string searchTerm = txtbox_searchbox.Text;
var searchedList = _repoDetail.Where(c => c.full_name.ToUpper().Contains(searchTerm.ToUpper())).ToList();
ListBox.Items = searchedList.Select(x => x.full_name);
}
catch (ArgumentNullException)
{
ShowErrorMessage("A user has not been searched. Please try again.");
}
}
2022-06-29 12:59:53 -04:00
}
}