Skip to content

Commit

Permalink
misc: Move StatusBarSeparator into Controls namespace, rename to Mini…
Browse files Browse the repository at this point in the history
…VerticalSeparator

add bulk property change event method
give each markup extension its own property name
  • Loading branch information
GreemDev committed Dec 25, 2024
1 parent f0aa7ee commit 0ca4d6e
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 61 deletions.
4 changes: 2 additions & 2 deletions src/Ryujinx/Common/LocaleManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values)
{
_dynamicValues[key] = values;

OnPropertyChanged("Item");
OnPropertyChanged("Translation");

return this[key];
}
Expand Down Expand Up @@ -138,7 +138,7 @@ public void LoadLanguage(string languageCode)
_localeStrings[key] = val;
}

OnPropertyChanged("Item");
OnPropertyChanged("Translation");

LocaleChanged?.Invoke();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Ryujinx/Common/Markup/BasicMarkupExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace Ryujinx.Ava.Common.Markup
{
internal abstract class BasicMarkupExtension<T> : MarkupExtension
{
public virtual string Name => "Item";
public abstract string Name { get; }
public virtual Action<object, T?>? Setter => null;

protected abstract T? Value { get; }
Expand Down
3 changes: 3 additions & 0 deletions src/Ryujinx/Common/Markup/MarkupExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@ namespace Ryujinx.Ava.Common.Markup
{
internal class IconExtension(string iconString) : BasicMarkupExtension<Icon>
{
public override string Name => "Icon";
protected override Icon Value => new() { Value = iconString };
}

internal class SpinningIconExtension(string iconString) : BasicMarkupExtension<Icon>
{
public override string Name => "SIcon";
protected override Icon Value => new() { Value = iconString, Animation = IconAnimation.Spin };
}

internal class LocaleExtension(LocaleKeys key) : BasicMarkupExtension<string>
{
public override string Name => "Translation";
protected override string Value => LocaleManager.Instance[key];

protected override void ConfigureBindingExtension(CompiledBindingExtension bindingExtension)
Expand Down
File renamed without changes.
19 changes: 19 additions & 0 deletions src/Ryujinx/UI/Controls/StatusBarSeparator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Media;

namespace Ryujinx.Ava.UI.Controls
{
public class MiniVerticalSeparator : Border
{
public MiniVerticalSeparator()
{
Width = 2;
Height = 12;
Margin = new Thickness();
BorderBrush = Brushes.Gray;
Background = Brushes.Gray;
BorderThickness = new Thickness(1);
}
}
}
9 changes: 9 additions & 0 deletions src/Ryujinx/UI/ViewModels/BaseModel.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;

Expand All @@ -11,5 +12,13 @@ protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

protected void OnPropertiesChanged(params ReadOnlySpan<string> propertyNames)
{
foreach (var propertyName in propertyNames)
{
OnPropertyChanged(propertyName);
}
}
}
}
15 changes: 8 additions & 7 deletions src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ public int ResolutionScale
{
_resolutionScale = value;

OnPropertyChanged(nameof(CustomResolutionScale));
OnPropertyChanged(nameof(IsCustomResolutionScaleActive));
OnPropertiesChanged(nameof(CustomResolutionScale), nameof(IsCustomResolutionScaleActive));
}
}

Expand Down Expand Up @@ -181,16 +180,17 @@ public int CustomVSyncIntervalPercentageProxy
int newInterval = (int)((value / 100f) * 60);
_customVSyncInterval = newInterval;
_customVSyncIntervalPercentageProxy = value;
OnPropertyChanged((nameof(CustomVSyncInterval)));
OnPropertyChanged((nameof(CustomVSyncIntervalPercentageText)));
OnPropertiesChanged(
nameof(CustomVSyncInterval),
nameof(CustomVSyncIntervalPercentageText));
}
}

public string CustomVSyncIntervalPercentageText
{
get
{
string text = CustomVSyncIntervalPercentageProxy.ToString() + "%";
string text = CustomVSyncIntervalPercentageProxy + "%";
return text;
}
}
Expand Down Expand Up @@ -221,8 +221,9 @@ public int CustomVSyncInterval
_customVSyncInterval = value;
int newPercent = (int)((value / 60f) * 100);
_customVSyncIntervalPercentageProxy = newPercent;
OnPropertyChanged(nameof(CustomVSyncIntervalPercentageProxy));
OnPropertyChanged(nameof(CustomVSyncIntervalPercentageText));
OnPropertiesChanged(
nameof(CustomVSyncIntervalPercentageProxy),
nameof(CustomVSyncIntervalPercentageText));
OnPropertyChanged();
}
}
Expand Down
50 changes: 27 additions & 23 deletions src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,51 +91,55 @@ private void FilteringChanged()

private void SortingChanged()
{
OnPropertyChanged(nameof(IsSortedByName));
OnPropertyChanged(nameof(IsSortedBySaved));
OnPropertyChanged(nameof(SortingAscending));
OnPropertyChanged(nameof(SortingField));
OnPropertyChanged(nameof(SortingFieldName));
OnPropertiesChanged(
nameof(IsSortedByName),
nameof(IsSortedBySaved),
nameof(SortingAscending),
nameof(SortingField),
nameof(SortingFieldName));

SortAndFilter();
}

private void DisplayedChanged()
{
OnPropertyChanged(nameof(Status));
OnPropertyChanged(nameof(DisplayedXCIFiles));
OnPropertyChanged(nameof(SelectedDisplayedXCIFiles));
OnPropertiesChanged(nameof(Status), nameof(DisplayedXCIFiles), nameof(SelectedDisplayedXCIFiles));
}

private void ApplicationsChanged()
{
OnPropertyChanged(nameof(AllXCIFiles));
OnPropertyChanged(nameof(Status));
OnPropertyChanged(nameof(PotentialSavings));
OnPropertyChanged(nameof(ActualSavings));
OnPropertyChanged(nameof(CanTrim));
OnPropertyChanged(nameof(CanUntrim));
OnPropertiesChanged(
nameof(AllXCIFiles),
nameof(Status),
nameof(PotentialSavings),
nameof(ActualSavings),
nameof(CanTrim),
nameof(CanUntrim));

DisplayedChanged();
SortAndFilter();
}

private void SelectionChanged(bool displayedChanged = true)
{
OnPropertyChanged(nameof(Status));
OnPropertyChanged(nameof(CanTrim));
OnPropertyChanged(nameof(CanUntrim));
OnPropertyChanged(nameof(SelectedXCIFiles));
OnPropertiesChanged(
nameof(Status),
nameof(CanTrim),
nameof(CanUntrim),
nameof(SelectedXCIFiles));

if (displayedChanged)
OnPropertyChanged(nameof(SelectedDisplayedXCIFiles));
}

private void ProcessingChanged()
{
OnPropertyChanged(nameof(Processing));
OnPropertyChanged(nameof(Cancel));
OnPropertyChanged(nameof(Status));
OnPropertyChanged(nameof(CanTrim));
OnPropertyChanged(nameof(CanUntrim));
OnPropertiesChanged(
nameof(Processing),
nameof(Cancel),
nameof(Status),
nameof(CanTrim),
nameof(CanUntrim));
}

private IEnumerable<XCITrimmerFileModel> GetSelectedDisplayedXCIFiles()
Expand Down
16 changes: 8 additions & 8 deletions src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
</Flyout>
</Button.Flyout>
</Button>
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<TextBlock
Name="DockedStatus"
Margin="5,0,5,0"
Expand All @@ -143,7 +143,7 @@
PointerReleased="DockedStatus_PointerReleased"
Text="{Binding DockedStatusText}"
TextAlignment="Start" />
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<SplitButton
Name="AspectRatioStatus"
Padding="5,0,5,0"
Expand Down Expand Up @@ -190,7 +190,7 @@
</MenuFlyout>
</SplitButton.Flyout>
</SplitButton>
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<ToggleSplitButton
Name="VolumeStatus"
Padding="5,0,5,0"
Expand Down Expand Up @@ -234,15 +234,15 @@
</Flyout>
</ToggleSplitButton.Flyout>
</ToggleSplitButton>
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<TextBlock
Margin="5,0,5,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding GameStatusText}"
TextAlignment="Start" />
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<TextBlock
Margin="5,0,5,0"
HorizontalAlignment="Left"
Expand All @@ -264,15 +264,15 @@
VerticalAlignment="Center"
IsVisible="{Binding ShowShaderCompilationHint}"
Text="{Binding ShaderCountText}" />
<local:StatusBarSeparator IsVisible="{Binding ShowShaderCompilationHint}" />
<controls:MiniVerticalSeparator IsVisible="{Binding ShowShaderCompilationHint}" />
<TextBlock
Margin="5,0,5,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding BackendText}"
TextAlignment="Start" />
<local:StatusBarSeparator IsVisible="{Binding !ShowLoadProgress}" />
<controls:MiniVerticalSeparator IsVisible="{Binding !ShowLoadProgress}" />
<TextBlock
Margin="5,0,0,0"
HorizontalAlignment="Left"
Expand All @@ -287,7 +287,7 @@
VerticalAlignment="Center"
IsVisible="{Binding ShowFirmwareStatus}"
Orientation="Horizontal">
<local:StatusBarSeparator IsVisible="{Binding IsGameRunning}" />
<controls:MiniVerticalSeparator IsVisible="{Binding IsGameRunning}" />
<TextBlock
Name="FirmwareStatus"
Margin="5, 0, 0, 0"
Expand Down
21 changes: 1 addition & 20 deletions src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Windows;
Expand Down Expand Up @@ -63,27 +62,9 @@ private void VolumeStatus_OnPointerWheelChanged(object sender, PointerWheelEvent
// Change the volume by 5% at a time
float newValue = Window.ViewModel.Volume + (float)e.Delta.Y * 0.05f;

Window.ViewModel.Volume = newValue switch
{
< 0 => 0,
> 1 => 1,
_ => newValue,
};
Window.ViewModel.Volume = Math.Clamp(newValue, 0, 1);

e.Handled = true;
}
}

public class StatusBarSeparator : Border
{
public StatusBarSeparator()
{
Width = 2;
Height = 12;
Margin = new Thickness();
BorderBrush = Brushes.Gray;
Background = Brushes.Gray;
BorderThickness = new Thickness(1);
}
}
}

0 comments on commit 0ca4d6e

Please sign in to comment.