Browse Source

Added supporter pack chip

flabbet 1 year ago
parent
commit
9ed550f8b2

+ 7 - 0
src/PixiEditor.AvaloniaUI/ViewModels/Menu/MenuBarViewModel.cs

@@ -8,6 +8,7 @@ using Avalonia.Data;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.AvaloniaUI.Models.Commands;
 using PixiEditor.AvaloniaUI.Models.Commands.XAML;
+using PixiEditor.AvaloniaUI.ViewModels.SubViewModels.AdditionalContent;
 using PixiEditor.Extensions.Common.Localization;
 using Command = PixiEditor.AvaloniaUI.Models.Commands.Commands.Command;
 
@@ -15,6 +16,7 @@ namespace PixiEditor.AvaloniaUI.ViewModels.Menu;
 
 internal class MenuBarViewModel : PixiObservableObject
 {
+    public AdditionalContentViewModel AdditionalContentSubViewModel { get; set; }
     public ObservableCollection<MenuItem> MenuEntries { get; set; } = new();
 
     private Dictionary<string, MenuTreeItem> menuItems = new();
@@ -30,6 +32,11 @@ internal class MenuBarViewModel : PixiObservableObject
         { "DEBUG", 1000 },
     };
 
+    public MenuBarViewModel(AdditionalContentViewModel? additionalContentSubViewModel)
+    {
+        AdditionalContentSubViewModel = additionalContentSubViewModel;
+    }
+
     public void Init(IServiceProvider serviceProvider, CommandController controller)
     {
         MenuItemBuilder[] builders = serviceProvider.GetServices<MenuItemBuilder>().ToArray();

+ 2 - 1
src/PixiEditor.AvaloniaUI/ViewModels/ViewModelMain.cs

@@ -74,7 +74,7 @@ internal partial class ViewModelMain : ViewModelBase, ICommandsHandler
 
     public LayoutViewModel LayoutSubViewModel { get; set; }
 
-    public MenuBarViewModel MenuBarViewModel { get; set; } = new();
+    public MenuBarViewModel MenuBarViewModel { get; set; }
 
     public IPreferences Preferences { get; set; }
     public ILocalizationProvider LocalizationProvider { get; set; }
@@ -147,6 +147,7 @@ internal partial class ViewModelMain : ViewModelBase, ICommandsHandler
         RegistrySubViewModel = services.GetService<RegistryViewModel>();
 
         AdditionalContentSubViewModel = services.GetService<AdditionalContentViewModel>();
+        MenuBarViewModel = new MenuBarViewModel(AdditionalContentSubViewModel);
 
         CommandController.Init(services);
         LayoutSubViewModel.LayoutManager.InitLayout(this);

+ 3 - 2
src/PixiEditor.AvaloniaUI/Views/Dialogs/DialogTitleBar.axaml

@@ -11,17 +11,18 @@
     x:Name="uc"
     Height="36"
     d:DesignWidth="300">
-    <Grid>
+    <Grid DataContext="{Binding ElementName=uc}">
         <Grid Background="{DynamicResource ThemeBackgroundBrush1}" IsHitTestVisible="False"/>
         <TextBlock
             IsHitTestVisible="False"
             TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"
-            ui:Translator.Key="{Binding ElementName=uc, Path=TitleKey}"
+            ui:Translator.Key="{Binding Path=TitleKey}"
             Foreground="{DynamicResource ThemeForegroundBrush}"
             FontSize="13"
             Margin="5,0,0,0"/>
         <DockPanel IsHitTestVisible="True">
             <CaptionButtons Name="captionButtons" DockPanel.Dock="Right" />
+            <ContentPresenter DockPanel.Dock="Right" IsVisible="{Binding !!AdditionalElement}" Content="{Binding Path=AdditionalElement}"/>
             <Control /><!-- dummy control to occupy dockpanel center -->
         </DockPanel>
     </Grid>

+ 9 - 1
src/PixiEditor.AvaloniaUI/Views/Dialogs/DialogTitleBar.axaml.cs

@@ -22,6 +22,8 @@ internal partial class DialogTitleBar : UserControl, ICustomTranslatorElement
     public static readonly StyledProperty<ICommand?> CloseCommandProperty =
         AvaloniaProperty.Register<DialogTitleBar, ICommand?>(nameof(CloseCommand));
 
+    public static readonly StyledProperty<Control> AdditionalElementProperty = AvaloniaProperty.Register<DialogTitleBar, Control>("AdditionalElement");
+
     public ICommand? CloseCommand
     {
         get => GetValue(CloseCommandProperty);
@@ -48,7 +50,13 @@ internal partial class DialogTitleBar : UserControl, ICustomTranslatorElement
         get => GetValue(CanFullscreenProperty);
         set => SetValue(CanFullscreenProperty, value);
     }
-    
+
+    public Control AdditionalElement
+    {
+        get { return (Control)GetValue(AdditionalElementProperty); }
+        set { SetValue(AdditionalElementProperty, value); }
+    }
+
     public DialogTitleBar()
     {
         InitializeComponent();

+ 24 - 15
src/PixiEditor.AvaloniaUI/Views/Main/MainTitleBar.axaml

@@ -13,19 +13,28 @@
              x:DataType="menu:MenuBarViewModel"
              x:Class="PixiEditor.AvaloniaUI.Views.Main.MainTitleBar">
     <Design.DataContext>
-        <menu:MenuBarViewModel/>
+        <menu:MenuBarViewModel />
     </Design.DataContext>
     <Grid>
-        <dialogs:DialogTitleBar 
-            DockPanel.Dock="Top"/>
-        <Svg DockPanel.Dock="Left" Margin="10, 0, 0, 0" HorizontalAlignment="Left" Path="/Images/PixiEditorLogo.svg" Width="20" Height="20"/>
+        <dialogs:DialogTitleBar
+            DockPanel.Dock="Top">
+            <dialogs:DialogTitleBar.AdditionalElement>
+                <Border BorderThickness="1" BorderBrush="{DynamicResource AccentColor}"
+                        Padding="5 0" CornerRadius="5" Height="25"
+                        IsVisible="{Binding Path=AdditionalContentSubViewModel.IsSupporterPackAvailable}">
+                    <TextBlock VerticalAlignment="Center" ui:Translator.Key="PixiEditor.SupporterPack:AWESOME_SUPPORTER" />
+                </Border>
+            </dialogs:DialogTitleBar.AdditionalElement>
+        </dialogs:DialogTitleBar>
+        <Svg DockPanel.Dock="Left" Margin="10, 0, 0, 0" HorizontalAlignment="Left" Path="/Images/PixiEditorLogo.svg"
+             Width="20" Height="20" />
         <xaml:Menu
             Margin="40, 0, 0, 0"
-                DockPanel.Dock="Left"
-                HorizontalAlignment="Left"
-                VerticalAlignment="Center"
-                ItemsSource="{Binding MenuEntries}"
-                Background="Transparent"/>
+            DockPanel.Dock="Left"
+            HorizontalAlignment="Left"
+            VerticalAlignment="Center"
+            ItemsSource="{Binding MenuEntries}"
+            Background="Transparent" />
         <Border Width="300" Height="25"
                 Background="{DynamicResource ThemeBackgroundBrush}"
                 CornerRadius="5" BorderThickness="1"
@@ -33,24 +42,24 @@
                 Cursor="IBeam">
             <Border.Styles>
                 <Style Selector="Border">
-                    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
+                    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}" />
                 </Style>
                 <Style Selector="Border:pointerover">
-                    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
+                    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}" />
                 </Style>
             </Border.Styles>
             <Interaction.Behaviors>
                 <EventTriggerBehavior
                     EventName="PointerPressed">
                     <InvokeCommandAction
-                        Command="{xaml:Command PixiEditor.Search.Toggle}"/>
+                        Command="{xaml:Command PixiEditor.Search.Toggle}" />
                 </EventTriggerBehavior>
             </Interaction.Behaviors>
             <Grid Margin="5,0" VerticalAlignment="Center">
-                <TextBlock ui:Translator.Key="SEARCH"/>
+                <TextBlock ui:Translator.Key="SEARCH" />
                 <TextBlock Text="{xaml:ShortcutBinding PixiEditor.Search.Toggle}"
-                           HorizontalAlignment="Right"/>
+                           HorizontalAlignment="Right" />
             </Grid>
         </Border>
     </Grid>
-</UserControl>
+</UserControl>