소스 검색

some implementation changes on qmonlib

Dalibor Votruba 2 년 전
부모
커밋
02054a79e6
24개의 변경된 파일230개의 추가작업 그리고 14개의 파일을 삭제
  1. 1 1
      Workbench/QMonitor/qmonlib.ui.Desktop/qmonlib.ui.Desktop.csproj
  2. 9 1
      Workbench/QMonitor/qmonlib.ui/App.axaml
  3. BIN
      Workbench/QMonitor/qmonlib.ui/Assets/Fonts/ArcadeClassic.ttf
  4. BIN
      Workbench/QMonitor/qmonlib.ui/Assets/Fonts/Basicdots.TTF
  5. BIN
      Workbench/QMonitor/qmonlib.ui/Assets/Fonts/S4QUFX.otf
  6. BIN
      Workbench/QMonitor/qmonlib.ui/Assets/Fonts/ka1.ttf
  7. BIN
      Workbench/QMonitor/qmonlib.ui/Assets/Fonts/scoreboard.ttf
  8. BIN
      Workbench/QMonitor/qmonlib.ui/Images/32/tag_cyan.png
  9. BIN
      Workbench/QMonitor/qmonlib.ui/Images/32/tag_green.png
  10. BIN
      Workbench/QMonitor/qmonlib.ui/Images/32/tag_orange.png
  11. BIN
      Workbench/QMonitor/qmonlib.ui/Images/32/tag_red.png
  12. 23 0
      Workbench/QMonitor/qmonlib.ui/ResourceLocator.cs
  13. 33 1
      Workbench/QMonitor/qmonlib.ui/ViewModels/MainViewModel.cs
  14. 7 0
      Workbench/QMonitor/qmonlib.ui/ViewModels/Settings/SettingsViewModel.cs
  15. 19 3
      Workbench/QMonitor/qmonlib.ui/Views/MainView.axaml
  16. 2 1
      Workbench/QMonitor/qmonlib.ui/Views/MainWindow.axaml
  17. 40 0
      Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitoCaptionView.axaml
  18. 12 0
      Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitoCaptionView.axaml.cs
  19. 31 0
      Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitorView.axaml
  20. 12 0
      Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitorView.axaml.cs
  21. 9 0
      Workbench/QMonitor/qmonlib.ui/Views/Settings/SettingsDialog.axaml
  22. 12 0
      Workbench/QMonitor/qmonlib.ui/Views/Settings/SettingsDialog.axaml.cs
  23. 19 6
      Workbench/QMonitor/qmonlib.ui/qmonlib.ui.csproj
  24. 1 1
      Workbench/QMonitor/qmonlib/qmonlib.csproj

+ 1 - 1
Workbench/QMonitor/qmonlib.ui.Desktop/qmonlib.ui.Desktop.csproj

@@ -10,7 +10,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaVersion)" />
+    <PackageReference Include="Avalonia.Desktop" Version="11.0.5" />
   </ItemGroup>
 
   <ItemGroup>

+ 9 - 1
Workbench/QMonitor/qmonlib.ui/App.axaml

@@ -6,5 +6,13 @@
 
     <Application.Styles>
         <FluentTheme />
+        <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
     </Application.Styles>
-</Application>
+  <Application.Resources>
+        <FontFamily x:Key="KarmaticArcadeFont">avares://qmonlib.ui/Assets/Fonts/ka1.ttf#Karmatic Arcade</FontFamily>
+        <FontFamily x:Key="ScoreBoardFont">avares://qmonlib.ui/Assets/Fonts/scoreboard.ttf#Score Board</FontFamily>
+      <FontFamily x:Key="ArcadeClassicFont">avares://qmonlib.ui/Assets/Fonts/ArcadeClassic.ttf#Arcade Classic</FontFamily>
+      <FontFamily x:Key="BasicDotsFont">avares://qmonlib.ui/Assets/Fonts/Basicdots.TTF#BasicDots</FontFamily>
+
+  </Application.Resources>
+</Application>

BIN
Workbench/QMonitor/qmonlib.ui/Assets/Fonts/ArcadeClassic.ttf


BIN
Workbench/QMonitor/qmonlib.ui/Assets/Fonts/Basicdots.TTF


BIN
Workbench/QMonitor/qmonlib.ui/Assets/Fonts/S4QUFX.otf


BIN
Workbench/QMonitor/qmonlib.ui/Assets/Fonts/ka1.ttf


BIN
Workbench/QMonitor/qmonlib.ui/Assets/Fonts/scoreboard.ttf


BIN
Workbench/QMonitor/qmonlib.ui/Images/32/tag_cyan.png


BIN
Workbench/QMonitor/qmonlib.ui/Images/32/tag_green.png


BIN
Workbench/QMonitor/qmonlib.ui/Images/32/tag_orange.png


BIN
Workbench/QMonitor/qmonlib.ui/Images/32/tag_red.png


+ 23 - 0
Workbench/QMonitor/qmonlib.ui/ResourceLocator.cs

@@ -0,0 +1,23 @@
+using System;
+using Avalonia.Controls;
+
+namespace qmonlib.ui
+{
+    public static class ResourceLocator
+    {
+        public static IServiceProvider? GetServiceProvider()
+        {
+            if (Avalonia.Application.Current != null)
+                return (IServiceProvider?)Avalonia.Application.Current.FindResource(typeof(IServiceProvider));
+            throw new InvalidOperationException("Avalonia.Application.Current is null");
+        }
+        public static void SetServiceProvider(IServiceProvider? provider)
+        {
+            if (Avalonia.Application.Current != null)
+                Avalonia.Application.Current.Resources[typeof(IServiceProvider)] = provider;
+            else
+                throw new InvalidOperationException("Avalonia.Application.Current is null");
+        }
+
+    }
+}

+ 33 - 1
Workbench/QMonitor/qmonlib.ui/ViewModels/MainViewModel.cs

@@ -1,9 +1,41 @@
-using qmonlib.ui.ViewModels.Navigator;
+using System.Reactive.Linq;
+using System.Windows.Input;
+using Avalonia;
+using qmonlib.ui.ViewModels.Logs;
+using qmonlib.ui.ViewModels.Navigator;
+using qmonlib.ui.ViewModels.Settings;
+using ReactiveUI;
 
 namespace qmonlib.ui.ViewModels;
 
 public class MainViewModel : ReceiverViewModelBase
 {
+    #region *** Sub-ViewModels ***
+
     public NavSearchViewModel NavSearch { get; private set; } = new();
+    public LogViewModel Log { get; private set; } = new();
+    #endregion;
+
+    #region *** Commands ***
+    public ICommand CommandShowSettings { get; }
+    public Interaction<SettingsViewModel, MainViewModel?> SettingsShowDialog { get; }
+    #endregion;
+
+
+    #region *** Constructor ***
+    public MainViewModel()
+    {
+        SettingsShowDialog = new Interaction<SettingsViewModel, MainViewModel?>();
+
+        CommandShowSettings = ReactiveCommand.CreateFromTask(async () =>
+        {
+            var settings = new SettingsViewModel();
+            var result = await SettingsShowDialog.Handle(settings);
+            Application.Current.Resources["Settings"] = settings;
+        });
+    }
+
+
+    #endregion
 
 }

+ 7 - 0
Workbench/QMonitor/qmonlib.ui/ViewModels/Settings/SettingsViewModel.cs

@@ -0,0 +1,7 @@
+namespace qmonlib.ui.ViewModels.Settings
+{
+    public class SettingsViewModel : ViewModelBase
+    {
+
+    }
+}

+ 19 - 3
Workbench/QMonitor/qmonlib.ui/Views/MainView.axaml

@@ -4,6 +4,7 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:vm="clr-namespace:qmonlib.ui.ViewModels"
              xmlns:vw-navigator="clr-namespace:qmonlib.ui.Views.Navigator"
+             xmlns:vw-log="clr-namespace:qmonlib.ui.Views.Logs"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="qmonlib.ui.Views.MainView"
              x:DataType="vm:MainViewModel">
@@ -69,12 +70,27 @@
                    CompactPaneLength="32"
                    OpenPaneLength="296" HorizontalAlignment="Right">
             <SplitView.Pane>
-                <Button VerticalAlignment="Top" Width="32" Height="32" HorizontalAlignment="Left">
+               <Grid VerticalAlignment="Top">
+                   <Grid.ColumnDefinitions>
+                       <ColumnDefinition Width="32" />
+                       <ColumnDefinition Width="Auto" />
+                   </Grid.ColumnDefinitions>
+                   <Grid.RowDefinitions>
+                        <RowDefinition Height="32"/>
+                        <RowDefinition Height="32"/>
+                        <RowDefinition Height="Auto"/>
+                   </Grid.RowDefinitions>
+                   <Button VerticalAlignment="Top" Width="32" Height="32" HorizontalAlignment="Left"
+                           Grid.Column="0" Grid.Row="0">
                     <Button.Content>
                         <Image Source="/Images/32/log.png" />
                     </Button.Content>
-                </Button>
-               <!-- Log section -->
+                    </Button>
+                   <!-- Log section -->
+                   <vw-log:LogCommandBar Grid.Column="1" Grid.Row="0" />
+                   <vw-log:LogFilter Grid.Column="1" Grid.Row="1" />
+                   <vw-log:LogView Grid.Column="1" Grid.Row="2" />
+               </Grid>
             </SplitView.Pane>
             <!--[-]Split LVL 1-->
 

+ 2 - 1
Workbench/QMonitor/qmonlib.ui/Views/MainWindow.axaml

@@ -7,7 +7,8 @@
         mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
         x:Class="qmonlib.ui.Views.MainWindow"
         Icon="/Assets/avalonia-logo.ico"
-        Title="qmonlib.ui">
+        Title="qmonlib.ui"
+        >
         <views:MainView />
 
 </Window>

+ 40 - 0
Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitoCaptionView.axaml

@@ -0,0 +1,40 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="45"
+             x:Class="qmonlib.ui.Views.Monitor.MonitoCaptionView">
+  <Border 
+      Margin="1"
+      Padding="1"
+      BorderThickness="2"
+      BorderBrush="Yellow"
+      Background="DarkBlue"
+      >
+          <Grid>
+              <Grid.ColumnDefinitions>
+                  <ColumnDefinition Width="*"/>
+                  <ColumnDefinition Width="16"/>
+              </Grid.ColumnDefinitions>
+              <Grid.RowDefinitions>
+                  <RowDefinition Height="*"/>
+              </Grid.RowDefinitions>     
+              
+              <TextBlock 
+                  FontFamily="{StaticResource BasicDotsFont}" 
+                  FontSize="12" 
+                  Foreground="White" 
+                  Text="MyCaption is dome" 
+                  Grid.Column="0"
+                  Grid.Row="0"
+                  />
+              <Button Grid.Column="1"
+                      Grid.Row="0"
+                      >
+                <Button.Content>
+                    <TextBlock Foreground="White" Text="ffeeeeeeeee"></TextBlock>
+                </Button.Content>
+              </Button>
+      </Grid>
+  </Border>
+</UserControl>

+ 12 - 0
Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitoCaptionView.axaml.cs

@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace qmonlib.ui.Views.Monitor
+{
+    public partial class MonitoCaptionView : UserControl
+    {
+        public MonitoCaptionView()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 31 - 0
Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitorView.axaml

@@ -0,0 +1,31 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+             x:Class="qmonlib.ui.Views.Monitor.MonitorView">
+  <Panel>
+      <Border BorderBrush="Black" 
+              BorderThickness="1" 
+              CornerRadius="4" 
+              Padding="4"
+              Background="Aquamarine">
+          <Grid ShowGridLines="True">
+              <Grid.ColumnDefinitions>
+                  <ColumnDefinition Width="*"/>
+              </Grid.ColumnDefinitions>
+              <Grid.RowDefinitions>
+                  <RowDefinition Height="16"/>
+                  <RowDefinition Height="32"/>
+                  <RowDefinition Height="*"/>
+                  <RowDefinition Height="16"/>
+              </Grid.RowDefinitions>
+              <TextBlock Text="Caption" Grid.Column="0" Grid.Row="0"/>
+              <TextBlock Text="Control panel" Grid.Column="0" Grid.Row="1"/>
+              <TextBlock Text="Content" Grid.Column="0" Grid.Row="2"/>
+              <TextBlock Text="Status" Grid.Column="0" Grid.Row="3"/>
+          </Grid>
+
+      </Border>
+  </Panel>
+</UserControl>

+ 12 - 0
Workbench/QMonitor/qmonlib.ui/Views/Monitor/MonitorView.axaml.cs

@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace qmonlib.ui.Views.Monitor
+{
+    public partial class MonitorView : UserControl
+    {
+        public MonitorView()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 9 - 0
Workbench/QMonitor/qmonlib.ui/Views/Settings/SettingsDialog.axaml

@@ -0,0 +1,9 @@
+<Window xmlns="https://github.com/avaloniaui"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+        x:Class="qmonlib.ui.Views.Settings.SettingsDialog"
+        Title="SettingsDialog">
+  Welcome to Avalonia!
+</Window>

+ 12 - 0
Workbench/QMonitor/qmonlib.ui/Views/Settings/SettingsDialog.axaml.cs

@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace qmonlib.ui.Views.Settings
+{
+    public partial class SettingsDialog : Window
+    {
+        public SettingsDialog()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 19 - 6
Workbench/QMonitor/qmonlib.ui/qmonlib.ui.csproj

@@ -19,22 +19,35 @@
     <None Remove="Images\32\adjust.png" />
     <None Remove="Images\32\gear.png" />
     <None Remove="Images\32\log.png" />
+    <None Remove="Images\32\tag.png" />
+    <None Remove="Images\32\tag_cyan.png" />
+    <None Remove="Images\32\tag_green.png" />
+    <None Remove="Images\32\tag_orange.png" />
+    <None Remove="Images\32\tag_red.png" />
+    <None Remove="Images\32\trash.png" />
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Avalonia" Version="11.0.4" />
-    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.4" />
-    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.4" />
-    <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.4" />
+    <PackageReference Include="Avalonia" Version="11.0.5" />
+    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.5" />
+    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.5" />
+    <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.5" />
     <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
-    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.4" />
-    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
+    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.5" />
+    <PackageReference Include="Avalonia.Themes.Simple" Version="11.0.5" />
+    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
   </ItemGroup>
 
   <ItemGroup>
     <AvaloniaResource Include="Images\32\adjust.png" />
     <AvaloniaResource Include="Images\32\gear.png" />
     <AvaloniaResource Include="Images\32\log.png" />
+    <AvaloniaResource Include="Images\32\tag.png" />
+    <AvaloniaResource Include="Images\32\tag_cyan.png" />
+    <AvaloniaResource Include="Images\32\tag_green.png" />
+    <AvaloniaResource Include="Images\32\tag_orange.png" />
+    <AvaloniaResource Include="Images\32\tag_red.png" />
+    <AvaloniaResource Include="Images\32\trash.png" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
Workbench/QMonitor/qmonlib/qmonlib.csproj

@@ -15,7 +15,7 @@
 
   <ItemGroup>
     <PackageReference Include="qdr.fnd.core" Version="0.0.2-alpha" />
-    <PackageReference Include="System.IO.Abstractions" Version="19.2.69" />
+    <PackageReference Include="System.IO.Abstractions" Version="19.2.87" />
   </ItemGroup>
 
 </Project>