Skip to content

Commit

Permalink
Ratings in context menu
Browse files Browse the repository at this point in the history
  • Loading branch information
Guerra24 committed Feb 2, 2025
1 parent c487a4a commit f48e299
Show file tree
Hide file tree
Showing 10 changed files with 71 additions and 17 deletions.
2 changes: 2 additions & 0 deletions LRReader.Shared/ViewModels/ArchivePageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ public async Task Reload(bool animate = true)
await LoadImages(animate);
await CreateImageSets();
OnPropertyChanged("Icon");
OnPropertyChanged(nameof(Rating));
ControlsEnabled = true;
_loading = false;
}
Expand Down Expand Up @@ -318,6 +319,7 @@ public void ReloadBookmarkedObject()
{
BookmarkedArchive = Settings.Profile.Bookmarks.FirstOrDefault(b => b.archiveID.Equals(Archive.arcid));
OnPropertyChanged("Icon");
OnPropertyChanged(nameof(Rating));
}

public async Task LoadImages(bool animate = true)
Expand Down
4 changes: 4 additions & 0 deletions LRReader.Shared/ViewModels/Base/ArchiveBaseViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public Archive Archive
BookmarkedArchive = Settings.Profile.Bookmarks.FirstOrDefault(b => b.archiveID.Equals(Archive.arcid));
OnPropertyChanged("IsNew");
OnPropertyChanged("Pages");
OnPropertyChanged("Rating");
}
}
}
Expand Down Expand Up @@ -150,6 +151,8 @@ public double Rating
get => Archive.Rating;
set
{
if (double.IsNaN(value))
return;
Archive.SetRating((int)value);
OnPropertyChanged(nameof(Rating));
Task.Run(async () => await ArchivesProvider.UpdateArchive(Archive.arcid, tags: Archive.tags).ConfigureAwait(false));
Expand Down Expand Up @@ -260,5 +263,6 @@ public async Task OpenTab(IList<Archive> group)
Archives.OpenTab(Archive, false, group);
}
}

}
}
5 changes: 1 addition & 4 deletions LRReader.Shared/ViewModels/Items/ArchiveItemViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Threading;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using LRReader.Shared.Models.Main;
Expand All @@ -20,8 +19,6 @@ public partial class ArchiveItemViewModel : ArchiveBaseViewModel
public event AsyncAction<bool>? Show;
public event AsyncAction<bool>? Hide;

private Guid _key = Guid.NewGuid();

private CancellationTokenSource Cts = new();

public ArchiveItemViewModel(SettingsService settings, ArchivesService archives, ApiService api, PlatformService platform, TabsService tabs, ImageProcessingService imageProcessing) : base(settings, archives, api, platform, tabs)
Expand Down
2 changes: 1 addition & 1 deletion LRReader.UWP.Installer/LRReader.UWP.Installer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
</PackageReference>
<PackageReference Include="Microsoft.Windows.SDK.Contracts" Version="10.0.26100.1742" />
<PackageReference Include="WPF-UI">
<Version>3.0.5</Version>
<Version>4.0.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions LRReader.UWP.Installer/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<TaskbarItemInfo x:Name="TaskbarProgress" />
</Window.TaskbarItemInfo>

<Grid Margin="1,1,1,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
Expand All @@ -32,7 +32,7 @@
</Grid.RowDefinitions>
<ui:TitleBar
x:Name="Titlebar" Title="LRReader" Grid.ColumnSpan="2"
Padding="12,8" Height="32" />
Padding="8,8" Height="32" />
<Border x:Name="LeftBorder" Grid.RowSpan="2">
<Grid>
<Grid.RowDefinitions>
Expand Down
14 changes: 11 additions & 3 deletions LRReader.UWP.Installer/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@
},
"WPF-UI": {
"type": "Direct",
"requested": "[3.0.5, )",
"resolved": "3.0.5",
"contentHash": "vha596eFVZ0j/zjpPrYxqaBNZzr17ROOihQ/xqgTVPMx5cmHAVKPulbaUmHKXo0QHGkqvwaPNxYH/HTS/UroTQ=="
"requested": "[4.0.0, )",
"resolved": "4.0.0",
"contentHash": "sbYXPpdZttHcmGPLfHDXDP6Q1/Dk0FubREyOj7QYTsFNwIXr2smt4o0WfUWPED586M63982DqUDhUvUSTLjpZA==",
"dependencies": {
"WPF-UI.Abstractions": "4.0.0"
}
},
"System.Runtime.InteropServices.WindowsRuntime": {
"type": "Transitive",
Expand All @@ -52,6 +55,11 @@
"System.Runtime.WindowsRuntime": "4.6.0"
}
},
"WPF-UI.Abstractions": {
"type": "Transitive",
"resolved": "4.0.0",
"contentHash": "VXeSxHhlWq8fwapzOdhKEPg924VyVTKrs4UtvBJsDT4Rh6jdauxTGrTCyfyj2EWgN+9oP7o/2LDkQ5VGX3DcmA=="
},
"lrreader.uwp.servicing": {
"type": "Project"
}
Expand Down
16 changes: 16 additions & 0 deletions LRReader.UWP/Converters/Converters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,20 @@ public object ConvertBack(object value, Type targetType, object parameter, strin
throw new NotImplementedException();
}
}

public class RatingConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return (double)value == (double)parameter;
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if ((bool)value)
return parameter;
else
return double.NaN;
}
}
}
24 changes: 24 additions & 0 deletions LRReader.UWP/Extensions/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -295,4 +295,28 @@ protected override object ProvideValue()
}
}

[MarkupExtensionReturnType(ReturnType = typeof(int))]
public class IntExtension : MarkupExtension
{

public int Value { get; set; }

protected override object ProvideValue()
{
return Value;
}
}

[MarkupExtensionReturnType(ReturnType = typeof(double))]
public class DoubleExtension : MarkupExtension
{

public double Value { get; set; }

protected override object ProvideValue()
{
return Value;
}
}

}
1 change: 1 addition & 0 deletions LRReader.UWP/Resources/Converters.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@
<converters2:EnumConverter x:Key="EnumConverter" />
<converters2:EnumToInt x:Key="EnumToInt" />
<converters2:TagNamespaceConverter x:Key="TagNamespaceConverter" />
<converters2:RatingConverter x:Key="RatingConverter" />

</ResourceDictionary>
16 changes: 9 additions & 7 deletions LRReader.UWP/Resources/Templates.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
xmlns:items="using:LRReader.UWP.Views.Items"
xmlns:media="using:CommunityToolkit.WinUI.Media"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:services="using:LRReader.Shared.Services">
xmlns:services="using:LRReader.Shared.Services"
xmlns:extensions="using:LRReader.UWP.Extensions">

<Style BasedOn="{StaticResource DefaultArchiveImage}" TargetType="items:ArchiveImage" />

Expand Down Expand Up @@ -414,13 +415,14 @@
<MenuFlyoutSubItem.Icon>
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE728;" />
</MenuFlyoutSubItem.Icon>
<muxc:RadioMenuFlyoutItem Text="&#xE735;" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="Rating" />
<muxc:RadioMenuFlyoutItem Text="&#xE735; &#xE735;" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="Rating" />
<muxc:RadioMenuFlyoutItem Text="&#xE735; &#xE735; &#xE735;" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="Rating" />
<muxc:RadioMenuFlyoutItem Text="&#xE735; &#xE735; &#xE735; &#xE735;" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="Rating" />
<muxc:RadioMenuFlyoutItem Text="&#xE735; &#xE735; &#xE735; &#xE735; &#xE735;" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="Rating" />
<!-- Wha... turns out GroupName is a global (app-wide) property so make sure we make it unique -->
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=1}}" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="&#xE735;" />
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=2}}" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="&#xE735; &#xE735;" />
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=3}}" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="&#xE735; &#xE735; &#xE735;" />
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=4}}" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="&#xE735; &#xE735; &#xE735; &#xE735;" />
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=5}}" FontFamily="{StaticResource SymbolThemeFontFamily}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="&#xE735; &#xE735; &#xE735; &#xE735; &#xE735;" />
<MenuFlyoutSeparator />
<MenuFlyoutItem Text="Clear" />
<muxc:RadioMenuFlyoutItem IsChecked="{Binding ViewModel.Rating, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource RatingConverter}, ConverterParameter={extensions:Double Value=-1}}" GroupName="{x:Bind ViewModel.Archive.arcid, Mode=OneWay}" Text="No rating" />
</MenuFlyoutSubItem>
<MenuFlyoutItem
x:Uid="/Items/Archive/Edit"
Expand Down

0 comments on commit f48e299

Please sign in to comment.