Skip to content

Commit

Permalink
Added a contributors page
Browse files Browse the repository at this point in the history
  • Loading branch information
CarbonNeuron committed Jan 22, 2021
1 parent 5388248 commit 5549165
Show file tree
Hide file tree
Showing 6 changed files with 221 additions and 5 deletions.
2 changes: 2 additions & 0 deletions AUCapture-WPF/AUCapture-WPF.csproj
Expand Up @@ -43,6 +43,7 @@
</PropertyGroup>

<ItemGroup>
<None Remove="Icon.ico" />
<None Remove="Resources\Hats\103-1.png" />
<None Remove="Resources\Hats\94-1.png" />
<None Remove="Resources\Misc\status-connected.png" />
Expand Down Expand Up @@ -100,6 +101,7 @@
</ItemGroup>

<ItemGroup>
<Resource Include="Icon.ico" />
<Resource Include="logo\Logo.png" />
<Resource Include="Resources\AUFont.ttf" />
<Resource Include="Resources\Hats\1-1.png" />
Expand Down
57 changes: 57 additions & 0 deletions AUCapture-WPF/Contributors.xaml
@@ -0,0 +1,57 @@
<mah:MetroWindow x:Class="AUCapture_WPF.Contributors"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:dialogs="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:li="http://github.com/zeluisping/loadingIndicators/xaml/controls"
xmlns:converters="clr-namespace:AUCapture_WPF.Converters"
xmlns:controls="clr-namespace:AUCapture_WPF.Controls"
xmlns:wpf="clr-namespace:LoadingIndicators.WPF;assembly=LoadingIndicators.WPF"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:AUCapture_WPF"
Style="{DynamicResource MahApps.Styles.MetroWindow.Clean}"
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"
Title="Contributors" Height="450" Width="450">
<mah:MetroWindow.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/clean/Controls.xaml" />
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<!-- Theme setting -->
<hc:Theme Name="HandyTheme"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</mah:MetroWindow.Resources>
<Grid>
<GroupBox Header="The special people that make capture possible">
<Border Background="{DynamicResource RegionBrush}" CornerRadius="4,4,0,0" Width="{Binding Width, RelativeSource={RelativeSource AncestorType=GroupBox}}" Height="{Binding Height, RelativeSource={RelativeSource AncestorType=GroupBox}}">
<Viewbox Stretch="Uniform">
<ListBox BorderThickness="0" Style="{StaticResource ListBoxCustom}" ItemsSource="{Binding }">


<ListBox.ItemTemplate>
<DataTemplate>
<hc:Gravatar Source="{Binding AvatarUrl}" Style="{StaticResource GravatarCircleImg}" ToolTip="{Binding Login}" MouseDown="Gravatar_MouseDown" Cursor="Hand"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<hc:HoneycombPanel IsItemsHost="True" Margin="10" hc:PanelElement.FluidMoveBehavior="{StaticResource BehaviorXY400}"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>


</Viewbox>
</Border>

</GroupBox>

</Grid>
</mah:MetroWindow>
108 changes: 108 additions & 0 deletions AUCapture-WPF/Contributors.xaml.cs
@@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
using HandyControl.Controls;
using HandyControl.Data;
using HandyControl.Themes;
using HandyControl.Tools;
using MahApps.Metro.Controls;
using Octokit;

namespace AUCapture_WPF
{
/// <summary>
/// Interaction logic for Contributors.xaml
/// </summary>
public partial class Contributors
{
public Queue<RepositoryContributor> RepoContributorsToBeAdded = new();
public ObservableCollection<RepositoryContributor> CurrentContributors = new();
public Contributors(bool dark)
{
InitializeComponent();
if (dark)
{
SharedResourceDictionary.SharedDictionaries.Clear();
ResourceHelper.GetTheme("HandyTheme", Resources).Skin = SkinType.Dark;

}

DataContext = CurrentContributors;
AddContributors();

}

public async void AddContributors()
{
GitHubClient client = new GitHubClient(new ProductHeaderValue("AmongUsCapture"));
IReadOnlyList<RepositoryContributor> repoContribs = await client.Repository.GetAllContributors("automuteus", "amonguscapture");
var tempList = repoContribs.Where(x => x.Id != 49699333).ToList();
tempList.Shuffle();
RepoContributorsToBeAdded = new Queue<RepositoryContributor>(tempList);
CurrentContributors.Add(RepoContributorsToBeAdded.Dequeue());

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(100);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{

if (RepoContributorsToBeAdded.Count != 0)
{
var c = RepoContributorsToBeAdded.Dequeue();
CurrentContributors.Add(c);
Console.WriteLine(c.Login);


}
else
{
var timer = sender as DispatcherTimer;
timer.Stop();
}


}
public static void OpenBrowser(string url)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Process.Start(new ProcessStartInfo(url) { UseShellExecute = true });
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Process.Start("xdg-open", url);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Process.Start("open", url);
}
else
{
// throw
}
}
private void Gravatar_MouseDown(object sender, MouseButtonEventArgs e)
{
var tar = sender as Gravatar;
var tarContext = tar.DataContext as RepositoryContributor;
OpenBrowser(tarContext.HtmlUrl);
}
}
}
35 changes: 35 additions & 0 deletions AUCapture-WPF/Extensions.cs
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace AUCapture_WPF
{
public static class ThreadSafeRandom
{
[ThreadStatic] private static Random Local;

public static Random ThisThreadsRandom
{
get { return Local ?? (Local = new Random(unchecked(Environment.TickCount * 31 + Thread.CurrentThread.ManagedThreadId))); }
}
}

static class MyExtensions
{
public static void Shuffle<T>(this IList<T> list)
{
int n = list.Count;
while (n > 1)
{
n--;
int k = ThreadSafeRandom.ThisThreadsRandom.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
}
18 changes: 13 additions & 5 deletions AUCapture-WPF/MainWindow.xaml
Expand Up @@ -49,6 +49,15 @@
</mah:MetroWindow.Resources>
<mah:MetroWindow.LeftWindowCommands>
<mah:WindowCommands>
<Button x:Name="ContributorsButton" Click="ContributorsButton_OnClick" ToolTip="Show contributors">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="22" Height="22" VerticalAlignment="Center" Kind="Heart" Foreground="Red"/>
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
</Button>
<Button Click="Settings" ToolTip="Open the settings window">
<Button.ContentTemplate>
<DataTemplate>
Expand All @@ -69,7 +78,9 @@
</DataTemplate>
</Button.ContentTemplate>
</Button>

</mah:WindowCommands>

</mah:MetroWindow.LeftWindowCommands>
<mah:MetroWindow.Flyouts>
<mah:FlyoutsControl>
Expand Down Expand Up @@ -183,7 +194,7 @@

</mah:Flyout>
<mah:Flyout x:Name="ManualConnectionFlyout" Header="Manual Connection" Position="Left"
Width="{Binding ActualWidth,ElementName=window, Converter={dialogs:MathDivideConverter}, ConverterParameter=2}"
Width="{Binding ActualWidth,ElementName=window, Converter={dialogs:MathDivideConverter}, ConverterParameter=1.5}"
Theme="Adapt"
IsAutoCloseEnabled="False" AnimateOpacity="True" ExternalCloseButton="Left">
<Grid Margin="10">
Expand Down Expand Up @@ -224,16 +235,13 @@
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<StackPanel VerticalAlignment="Center" Grid.RowSpan="4" Grid.ColumnSpan="3" Orientation="Vertical"
IsEnabled="{Binding Connected, Converter={StaticResource BoolInverter}}">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
Visibility="{Binding Connected, Converter={StaticResource BoolToVisibilityConverterInverted}}">
<Run FontSize="32" FontFamily="{StaticResource AUFont}">Waiting for among us</Run><LineBreak />
</TextBlock>
<mah:ProgressRing IsActive="{Binding Connected, Converter={StaticResource BoolInverter}}"
IsEnabled="{Binding Connected, Converter={StaticResource BoolInverter}}"
Visibility="{Binding Connected, Converter={StaticResource BoolToVisibilityConverterInverted}}" />
<hc:LoadingCircle IsEnabled="{Binding Connected, Converter={StaticResource BoolInverter}}" Foreground="{DynamicResource MahApps.Brushes.Accent}" Style="{StaticResource LoadingCircleLarge}" Visibility="{Binding Connected, Converter={StaticResource BoolToVisibilityConverterInverted}}" IsRunning="{Binding Connected, Converter={StaticResource BoolInverter}}"/>

<Button Padding="10" Margin="0 10 0 0" HorizontalAlignment="Center"
Visibility="{Binding Connected, Converter={StaticResource BoolToVisibilityConverterInverted}}"
Expand Down
6 changes: 6 additions & 0 deletions AUCapture-WPF/MainWindow.xaml.cs
Expand Up @@ -880,5 +880,11 @@ private void AlwaysOnTopSwitch_OnToggled(object sender, RoutedEventArgs e)
{
window.Topmost = context.Settings.alwaysOnTop;
}

private void ContributorsButton_OnClick(object sender, RoutedEventArgs e)
{
Contributors c = new Contributors(context.Settings.DarkMode);
c.Show();
}
}
}

0 comments on commit 5549165

Please sign in to comment.