Skip to content

Commit

Permalink
Merge pull request #4 from MemeLabs/v1.5
Browse files Browse the repository at this point in the history
  • Loading branch information
tensei committed Oct 24, 2021
2 parents 4c403ad + d7012f4 commit d50f12e
Show file tree
Hide file tree
Showing 177 changed files with 10,553 additions and 7,863 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: .NET 5 Build
name: .NET 6 Build

on:
workflow_dispatch:
push:
branches: [main]
pull_request:
Expand All @@ -12,10 +13,11 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Setup .NET
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
dotnet-version: '6.0.x'
include-prerelease: true
- name: Restore dependencies
run: dotnet restore
- name: Build
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/build_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Setup .NET Core
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: "5.0.x"
dotnet-version: '6.0.x'
include-prerelease: true
- name: Restore
run: dotnet restore

Expand Down
41 changes: 24 additions & 17 deletions anidow/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
xmlns:anidow="clr-namespace:Anidow"
xmlns:controls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI"
xmlns:extensions="clr-namespace:AdonisUI.Extensions;assembly=AdonisUI"
xmlns:extensions1="clr-namespace:Anidow.Extensions"
xmlns:s="https://github.com/canton7/Stylet"
xmlns:controls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI">
xmlns:s="https://github.com/canton7/Stylet">
<Application.Resources>
<s:ApplicationLoader LoadStyletResources="False">
<s:ApplicationLoader.Bootstrapper>
Expand All @@ -17,6 +16,7 @@
<s:ApplicationLoader.MergedDictionaries>
<ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.DarkColorScheme}" />
<ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.ClassicTheme}" />
<ResourceDictionary Source="pack://application:,,,/Styles/CustomDark.xaml" />
<ResourceDictionary Source="pack://application:,,,/Styles/Expander.xaml" />
<ResourceDictionary Source="pack://application:,,,/Styles/TabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/Styles/ListViewItem.xaml" />
Expand All @@ -25,31 +25,22 @@
<ResourceDictionary Source="pack://application:,,,/Styles/Notification.xaml" />
</s:ApplicationLoader.MergedDictionaries>

<!-- Override colors -->
<Color x:Key="{x:Static adonisUi:Colors.ErrorColor}">#d32f2f</Color>
<Color x:Key="{x:Static adonisUi:Colors.SuccessColor}">#388e3c</Color>
<!--<Color x:Key="{x:Static adonisUi:Colors.AlertColor}">#f57c00</Color>-->

<!-- Dark -->
<!--<Color x:Key="{x:Static adonisUi:Colors.Layer0BackgroundColor}">#151515</Color>
<Color x:Key="{x:Static adonisUi:Colors.Layer1BackgroundColor}">#242424</Color>
<Color x:Key="{x:Static adonisUi:Colors.Layer2BackgroundColor}">#0F0F0F</Color>
<Color x:Key="{x:Static adonisUi:Colors.Layer3BackgroundColor}">#2F2E2F</Color>
<Color x:Key="{x:Static adonisUi:Colors.Layer4BackgroundColor}">#000000</Color>-->

<Style BasedOn="{StaticResource {x:Type Window}}" TargetType="{x:Type controls:AdonisWindow}" >
<Style BasedOn="{StaticResource {x:Type Window}}" TargetType="{x:Type controls:AdonisWindow}">
<!--<Setter Property="TitleBarBackground" Value="{DynamicResource {x:Static adonisUi:Brushes.Layer0BackgroundBrush}}"></Setter>-->
</Style>

<!-- <Style BasedOn="{StaticResource {x:Type ScrollViewer}}" TargetType="ScrollViewer"> -->
<!-- <Setter Property="extensions:ScrollViewerExtension.VerticalScrollBarPlacement" Value="Overlay" /> -->
<!-- <Setter Property="extensions:ScrollViewerExtension.HorizontalScrollBarPlacement" Value="Overlay" /> -->
<!-- <Setter Property="extensions:ScrollViewerExtension.HideScrollBarsUntilMouseOver" Value="True" /> -->
<!-- </Style> -->

<Style BasedOn="{StaticResource {x:Type ToolTip}}" TargetType="{x:Type ToolTip}">
<Setter Property="extensions:CornerRadiusExtension.CornerRadius" Value="4" />
<!-- <Setter Property="Padding" Value="4" /> -->
<Setter Property="Background" Value="{DynamicResource {x:Static adonisUi:Brushes.Layer1BackgroundBrush}}" />
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static adonisUi:Brushes.Layer1BorderBrush}}" />
<Setter Property="BorderBrush" Value="#2F5CC1" />
<Setter Property="Foreground" Value="{DynamicResource {x:Static adonisUi:Brushes.ForegroundBrush}}" />
</Style>

Expand Down Expand Up @@ -131,6 +122,22 @@
</Setter.Value>
</Setter>
</Style>

<Style TargetType="{x:Type Image}">
<Setter Property="Opacity" Value="0" />
<Style.Triggers>
<EventTrigger RoutedEvent="SizeChanged">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To="1"
Duration="0:0:.3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</s:ApplicationLoader>
</Application.Resources>
</Application>
13 changes: 6 additions & 7 deletions anidow/App.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
namespace Anidow
namespace Anidow;

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
}
}
204 changes: 102 additions & 102 deletions anidow/Behaviors/AutoScrollBehavior.cs
Original file line number Diff line number Diff line change
@@ -1,146 +1,146 @@
// // Created: 20-06-2021 20:32

#nullable enable
using Microsoft.Xaml.Behaviors;
using System.Collections.Specialized;
using System.Linq;
using System.Runtime.Versioning;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using Anidow.Extensions;
using Microsoft.Xaml.Behaviors;

namespace Anidow.Behaviors
{
/// <summary>
/// Behavior that enables scrolling to the end of for example a <see cref="ItemsControl"/>. Includes support for pausing of scrolling, when user scrolls manually
/// </summary>
/// <remarks>
/// required namespaces:
/// <list type="bullet">
/// <item>
/// <description>xmlns:i="http://schemas.microsoft.com/xaml/behaviors"</description>
/// </item>
/// </list>
/// </remarks>
// source: https://stackoverflow.com/a/25855886
// source: https://github.com/Insire/MvvmScarletToolkit/blob/master/src/MvvmScarletToolkit.Wpf/Behaviors/AutoScrollBehavior.cs
// usage:
// <i:Interaction.Behaviors>
// <mvvm:AutoScrollBehavior />
// </ i:Interaction.Behaviors>
namespace Anidow.Behaviors;

/// <summary>
/// Behavior that enables scrolling to the end of for example a <see cref="ItemsControl" />. Includes support for
/// pausing of scrolling, when user scrolls manually
/// </summary>
/// <remarks>
/// required namespaces:
/// <list type="bullet">
/// <item>
/// <description>xmlns:i="http://schemas.microsoft.com/xaml/behaviors"</description>
/// </item>
/// </list>
/// </remarks>
// source: https://stackoverflow.com/a/25855886
// source: https://github.com/Insire/MvvmScarletToolkit/blob/master/src/MvvmScarletToolkit.Wpf/Behaviors/AutoScrollBehavior.cs
// usage:
// <i:Interaction.Behaviors>
// <mvvm:AutoScrollBehavior />
// </ i:Interaction.Behaviors>
#if NET5_0_OR_GREATER
[System.Runtime.Versioning.SupportedOSPlatform("windows7.0")]
[SupportedOSPlatform("windows7.0")]
#endif

public sealed class AutoScrollBehavior : Behavior<ItemsControl>
{
private ScrollViewer? _scrollViewer;
public sealed class AutoScrollBehavior : Behavior<ItemsControl>
{
private bool _autoScroll = true;
private bool _justWheeled;
private ScrollViewer? _scrollViewer;
private bool _userInteracting;

private bool _autoScroll = true;
private bool _justWheeled;
private bool _userInteracting;
protected override void OnAttached()
{
AssociatedObject.Loaded += AssociatedObjectOnLoaded;
AssociatedObject.Unloaded += AssociatedObjectOnUnloaded;
}

protected override void OnAttached()
private void AssociatedObjectOnUnloaded(object sender, RoutedEventArgs e)
{
if (_scrollViewer != null)
{
AssociatedObject.Loaded += AssociatedObjectOnLoaded;
AssociatedObject.Unloaded += AssociatedObjectOnUnloaded;
_scrollViewer.ScrollChanged -= ScrollViewerOnScrollChanged;
}

private void AssociatedObjectOnUnloaded(object sender, RoutedEventArgs e)
{
if (_scrollViewer != null)
{
_scrollViewer.ScrollChanged -= ScrollViewerOnScrollChanged;
}
AssociatedObject.ItemContainerGenerator.ItemsChanged -= ItemContainerGeneratorItemsChanged;
AssociatedObject.GotMouseCapture -= AssociatedObject_GotMouseCapture;
AssociatedObject.LostMouseCapture -= AssociatedObject_LostMouseCapture;
AssociatedObject.PreviewMouseWheel -= AssociatedObject_PreviewMouseWheel;

AssociatedObject.ItemContainerGenerator.ItemsChanged -= ItemContainerGeneratorItemsChanged;
AssociatedObject.GotMouseCapture -= AssociatedObject_GotMouseCapture;
AssociatedObject.LostMouseCapture -= AssociatedObject_LostMouseCapture;
AssociatedObject.PreviewMouseWheel -= AssociatedObject_PreviewMouseWheel;
_scrollViewer = null;
}

_scrollViewer = null;
}
private void AssociatedObjectOnLoaded(object sender, RoutedEventArgs e)
{
var scrollViewers = AssociatedObject.FindVisualChildren<ScrollViewer>();

private void AssociatedObjectOnLoaded(object sender, RoutedEventArgs e)
_scrollViewer = scrollViewers.FirstOrDefault();
if (_scrollViewer is null)
{
var scrollViewers = AssociatedObject.FindVisualChildren<ScrollViewer>();
return;
}

_scrollViewer = scrollViewers.FirstOrDefault();
if (_scrollViewer is null)
{
return;
}
_scrollViewer.ScrollToBottom();

_scrollViewer.ScrollToBottom();
_scrollViewer.ScrollChanged += ScrollViewerOnScrollChanged;

_scrollViewer.ScrollChanged += ScrollViewerOnScrollChanged;
AssociatedObject.ItemContainerGenerator.ItemsChanged += ItemContainerGeneratorItemsChanged;
AssociatedObject.GotMouseCapture += AssociatedObject_GotMouseCapture;
AssociatedObject.LostMouseCapture += AssociatedObject_LostMouseCapture;
AssociatedObject.PreviewMouseWheel += AssociatedObject_PreviewMouseWheel;
}

AssociatedObject.ItemContainerGenerator.ItemsChanged += ItemContainerGeneratorItemsChanged;
AssociatedObject.GotMouseCapture += AssociatedObject_GotMouseCapture;
AssociatedObject.LostMouseCapture += AssociatedObject_LostMouseCapture;
AssociatedObject.PreviewMouseWheel += AssociatedObject_PreviewMouseWheel;
}
private void AssociatedObject_GotMouseCapture(object sender, MouseEventArgs e)
{
// User is actively interacting with listbox. Do not allow automatic scrolling to interfere with user experience.
_userInteracting = true;
_autoScroll = false;
}

private void AssociatedObject_GotMouseCapture(object sender, MouseEventArgs e)
private void AssociatedObject_LostMouseCapture(object sender, MouseEventArgs e)
{
// User is done interacting with control.
_userInteracting = false;
}

private void ScrollViewerOnScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (_scrollViewer is null)
{
// User is actively interacting with listbox. Do not allow automatic scrolling to interfere with user experience.
_userInteracting = true;
_autoScroll = false;
return;
}

private void AssociatedObject_LostMouseCapture(object sender, MouseEventArgs e)
// diff is exactly zero if the last item in the list is visible. This can occur because of scroll-bar drag, mouse-wheel, or keyboard event.
var diff = _scrollViewer.VerticalOffset - (_scrollViewer.ExtentHeight - _scrollViewer.ViewportHeight);

// User just wheeled; this event is called immediately afterwards.
if (_justWheeled && diff != 0d)
{
// User is done interacting with control.
_userInteracting = false;
_justWheeled = false;
_autoScroll = false;
return;
}

private void ScrollViewerOnScrollChanged(object sender, ScrollChangedEventArgs e)
if (diff == 0d)
{
if (_scrollViewer is null)
{
return;
}

// diff is exactly zero if the last item in the list is visible. This can occur because of scroll-bar drag, mouse-wheel, or keyboard event.
var diff = _scrollViewer.VerticalOffset - (_scrollViewer.ExtentHeight - _scrollViewer.ViewportHeight);

// User just wheeled; this event is called immediately afterwards.
if (_justWheeled && diff != 0d)
{
_justWheeled = false;
_autoScroll = false;
return;
}

if (diff == 0d)
{
// then assume user has finished with interaction and has indicated through this action that scrolling should continue automatically.
_autoScroll = true;
}
// then assume user has finished with interaction and has indicated through this action that scrolling should continue automatically.
_autoScroll = true;
}
}

private void ItemContainerGeneratorItemsChanged(object sender, ItemsChangedEventArgs e)
private void ItemContainerGeneratorItemsChanged(object sender, ItemsChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Reset)
{
if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Reset)
// An item was added to the listbox, or listbox was cleared.
if (_autoScroll && !_userInteracting)
{
// An item was added to the listbox, or listbox was cleared.
if (_autoScroll && !_userInteracting)
{
// If automatic scrolling is turned on, scroll to the bottom to bring new item into view.
// Do not do this if the user is actively interacting with the listbox.
_scrollViewer?.ScrollToBottom();
}
// If automatic scrolling is turned on, scroll to the bottom to bring new item into view.
// Do not do this if the user is actively interacting with the listbox.
_scrollViewer?.ScrollToBottom();
}
}
}

private void AssociatedObject_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
// User wheeled the mouse.
// Cannot detect whether scroll viewer right at the bottom, because the scroll event has not occurred at this point.
// Same for bubbling event.
// Just indicated that the user mouse-wheeled, and that the scroll viewer should decide whether or not to stop autoscrolling.
_justWheeled = true;
}
private void AssociatedObject_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
// User wheeled the mouse.
// Cannot detect whether scroll viewer right at the bottom, because the scroll event has not occurred at this point.
// Same for bubbling event.
// Just indicated that the user mouse-wheeled, and that the scroll viewer should decide whether or not to stop autoscrolling.
_justWheeled = true;
}
}

0 comments on commit d50f12e

Please sign in to comment.