feat: placeholder for touch screen editors

This commit is contained in:
2026-04-20 15:17:21 +03:00
parent 392b20ccee
commit 437107ecb8
5 changed files with 61 additions and 17 deletions
+4 -4
View File
@@ -23,6 +23,8 @@ public partial class Application : Avalonia.Application
private bool _allShutdownSequencesRunning;
public NavigationService Navigation { get; }
public Application(IServiceProvider services, bool fullscreen = false)
{
_services = services;
@@ -35,6 +37,7 @@ public partial class Application : Avalonia.Application
// Создаём DependencyInjectionViewLocator
_logger = _services.GetRequiredService<ILogger<Application>>();
_viewLocator = _services.GetRequiredService<DependencyInjectionViewLocator>();
Navigation = _services.GetRequiredService<NavigationService>();
}
public override void Initialize()
@@ -95,9 +98,6 @@ public partial class Application : Avalonia.Application
Environment.Exit(1);
}
// Создаём сервис навигации между элементами управления
var navigationService = _services.GetRequiredService<NavigationService>();
// Создаём начальный элемент управления и переходим к нему
var mainView = new MainView()
{
@@ -131,7 +131,7 @@ public partial class Application : Avalonia.Application
desktop.MainWindow = mainWindow;
// Переключаемся на начальный элемент управления
navigationService.NavigateTo(mainView);
Navigation.NavigateTo(mainView);
break;
+22
View File
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
namespace GSS2;
public class TouchNumericUpDown : NumericUpDown
{
protected override Type StyleKeyOverride => typeof(NumericUpDown);
public TouchNumericUpDown()
: base()
{
AddHandler(PointerPressedEvent, OnPointerPressed, handledEventsToo: true);
}
private void OnPointerPressed(object? sender, PointerPressedEventArgs ea)
{
Console.WriteLine($"TODO: process TouchNumericUpDown.PointerPressed event");
}
}
+20
View File
@@ -0,0 +1,20 @@
using Avalonia.Controls;
using Avalonia.Input;
namespace GSS2;
public class TouchTextBox : TextBox
{
protected override Type StyleKeyOverride => typeof(TextBox);
public TouchTextBox()
: base()
{
AddHandler(PointerPressedEvent, OnPointerPressed, handledEventsToo: true);
}
private void OnPointerPressed(object? sender, PointerPressedEventArgs ea)
{
Console.WriteLine($"TODO: process TouchTextBox.PointerPressed event");
}
}
@@ -7,6 +7,7 @@
xmlns:avalonia_converters="using:Avalonia.Data.Converters"
xmlns:i="using:Avalonia.Xaml.Interactivity"
xmlns:ia="using:Avalonia.Xaml.Interactions.Custom"
xmlns:local="using:GSS2"
xmlns:core="using:GSS2.UI.Core"
xmlns:core_vm="using:GSS2.UI.Core.ViewModels"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -152,23 +153,23 @@
<!-- Название пробы (подпись) -->
<TextBlock Grid.Row="2" Grid.Column="0" Classes="mini" Text="Название пробы:" />
<!-- Название пробы (поле) -->
<TextBox Grid.Row="3" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.SampleName}" PlaceholderText="Название пробы" />
<local:TouchTextBox Grid.Row="3" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.SampleName}" PlaceholderText="Название пробы" />
<!-- Марка пробы (подпись) -->
<TextBlock Grid.Row="2" Grid.Column="1" Classes="mini" Text="Марка пробы:" />
<!-- Марка пробы (поле) -->
<TextBox Grid.Row="3" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.SampleBrand}" PlaceholderText="Марка пробы" />
<local:TouchTextBox Grid.Row="3" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.SampleBrand}" PlaceholderText="Марка пробы" />
<!-- Дата и время отбора пробы (подпись) -->
<TextBlock Grid.Row="4" Grid.Column="0" Classes="mini" Text="Дата и время отбора пробы:" />
<!-- Дата и время отбора пробы (поле) -->
<TextBox Grid.Row="5" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.SamplingDateTime, Converter={StaticResource DateTimeConverter}}" PlaceholderText="Дата и время отбора пробы" />
<local:TouchTextBox Grid.Row="5" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.SamplingDateTime, Converter={StaticResource DateTimeConverter}}" PlaceholderText="Дата и время отбора пробы" />
<!-- Место отбора пробы (подпись) -->
<TextBlock Grid.Row="4" Grid.Column="1" Classes="mini" Text="Место отбора пробы:" />
<!-- Место отбора пробы (поле) -->
<TextBox Grid.Row="5" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.SamplingPlace}" PlaceholderText="Место отбора пробы" />
<local:TouchTextBox Grid.Row="5" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.SamplingPlace}" PlaceholderText="Место отбора пробы" />
<!-- Масса пробы (кг) (подпись) -->
<TextBlock Grid.Row="6" Grid.ColumnSpan="2" Grid.Column="0" Classes="mini" Text="Масса пробы (кг):" />
<!-- Масса пробы (кг) (поле) -->
<NumericUpDown Grid.Row="7" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.SampleMass}" PlaceholderText="Масса пробы (кг)" />
<local:TouchNumericUpDown Grid.Row="7" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.SampleMass}" PlaceholderText="Масса пробы (кг)" />
</Grid>
@@ -196,23 +197,23 @@
<!-- Название используемой кондиционирующей смеси (подпись) -->
<TextBlock Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0" Classes="mini" Text="Название используемой кондиционирующей смеси:" />
<!-- Название используемой кондиционирующей смеси (поле) -->
<TextBox Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.MixtureName}" PlaceholderText="Название используемой кондиционирующей смеси" />
<local:TouchTextBox Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" Text="{Binding EditingRecord.MixtureName}" PlaceholderText="Название используемой кондиционирующей смеси" />
<!-- Содержание люминофоров в кондиционирующей смеси (%) (подпись) -->
<TextBlock Grid.Row="2" Grid.ColumnSpan="2" Grid.Column="0" Classes="mini" Text="Содержание люминофоров в кондиционирующей смеси (%):" />
<!-- Содержание люминофоров в кондиционирующей смеси (%) (поле) -->
<NumericUpDown Grid.Row="3" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0" Increment="0.1" Value="{Binding EditingRecord.MixtureAmineContent}" PlaceholderText="Содержание люминофоров в кондиционирующей смеси (%)" />
<local:TouchNumericUpDown Grid.Row="3" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0" Increment="0.1" Value="{Binding EditingRecord.MixtureAmineContent}" PlaceholderText="Содержание люминофоров в кондиционирующей смеси (%)" />
<!-- Норма расхода кондиционирующей смеси (кг/т | гр/кг) (подпись) -->
<TextBlock Grid.Row="4" Grid.Column="0" Classes="mini" Text="Норма расхода (кг/т | гр/кг):" />
<!-- Норма расхода кондиционирующей смеси (кг/т | гр/кг) (поле) -->
<NumericUpDown Grid.Row="5" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MixtureNormalRate}" PlaceholderText="Норма расхода кондиционирующей смеси (кг/т | гр/кг)" />
<local:TouchNumericUpDown Grid.Row="5" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MixtureNormalRate}" PlaceholderText="Норма расхода кондиционирующей смеси (кг/т | гр/кг)" />
<!-- Фактический расход кондиционирующей смеси (кг/т | гр/кг) (подпись) -->
<TextBlock Grid.Row="4" Grid.Column="1" Classes="mini" Text="Фактический расход (кг/т | гр/кг):" />
<!-- Фактический расход кондиционирующей смеси (кг/т | гр/кг) (поле) -->
<NumericUpDown Grid.Row="5" Grid.Column="1" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MixtureActualRate}" PlaceholderText="Фактический расход кондиционирующей смеси (кг/т | гр/кг)" />
<local:TouchNumericUpDown Grid.Row="5" Grid.Column="1" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MixtureActualRate}" PlaceholderText="Фактический расход кондиционирующей смеси (кг/т | гр/кг)" />
<!-- Измеренное количество кондиционирующей смеси (кг/т | гр/кг) (подпись) -->
<TextBlock Grid.Row="6" Grid.ColumnSpan="2" Grid.Column="0" Classes="mini" Text="Измеренное количество кондиционирующей смеси (кг/т | гр/кг):" />
<!-- Измеренное количество кондиционирующей смеси (кг/т | гр/кг) (поле) -->
<NumericUpDown Grid.Row="7" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MeasuredContent}" PlaceholderText="Измеренное количество кондиционирующей смеси (кг/т | гр/кг)" />
<local:TouchNumericUpDown Grid.Row="7" Grid.ColumnSpan="2" Grid.Column="0" Classes="singleline" FormatString="0.0000" Increment="0.0001" Value="{Binding EditingRecord.MeasuredContent}" PlaceholderText="Измеренное количество кондиционирующей смеси (кг/т | гр/кг)" />
</Grid>
@@ -228,7 +229,7 @@
<!-- Дополнительная информация о пробе (подпись) -->
<TextBlock Grid.Row="0" Classes="mini" Text="Дополнительная информация о пробе:" />
<!-- Дополнительная информация о пробе (поле) -->
<TextBox Grid.Row="1" Classes="multiline" Text="{Binding EditingRecord.SampleComment}" PlaceholderText="Дополнительная информация о пробе" />
<local:TouchTextBox Grid.Row="1" Classes="multiline" Text="{Binding EditingRecord.SampleComment}" PlaceholderText="Дополнительная информация о пробе" />
</Grid>
@@ -7,6 +7,7 @@
xmlns:avalonia_converters="using:Avalonia.Data.Converters"
xmlns:i="using:Avalonia.Xaml.Interactivity"
xmlns:ia="using:Avalonia.Xaml.Interactions.Custom"
xmlns:local="using:GSS2"
xmlns:core="using:GSS2.UI.Core"
xmlns:core_vm="using:GSS2.UI.Core.ViewModels"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -123,11 +124,11 @@
<!-- Тип (подпись) -->
<TextBlock Grid.Row="2" Grid.Column="1" Classes="mini" Text="Тип:" />
<!-- Тип (поле) -->
<TextBox Grid.Row="3" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.Type}" PlaceholderText="Тип" />
<local:TouchTextBox Grid.Row="3" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.Type}" PlaceholderText="Тип" />
<!-- Партия (подпись) -->
<TextBlock Grid.Row="4" Grid.Column="1" Classes="mini" Text="Партия:" />
<!-- Партия (поле) -->
<TextBox Grid.Row="5" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.Batch}" PlaceholderText="Партия" />
<local:TouchTextBox Grid.Row="5" Grid.Column="1" Classes="singleline" Text="{Binding EditingRecord.Batch}" PlaceholderText="Партия" />
</Grid>