Add settings func

This commit is contained in:
2026-03-18 23:16:07 +02:00
parent 2ee4515dfd
commit 9ce8e190a2
4 changed files with 72 additions and 6 deletions

View File

@@ -1,17 +1,29 @@
using System;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Input;
using VisionAsist.Models;
using VisionAsist.Views;
namespace VisionAsist.ViewModels;
public partial class MainWindowViewModel : ViewModelBase
{
[RelayCommand]
private void Settingse()
{
new Settings
{
DataContext = new SettingsViewModel()
}.Show();
}
[ObservableProperty]
private bool isListening;
[ObservableProperty]
private string recognizedtext;
private Action<string>? _coreHandler;
partial void OnIsListeningChanged(bool value)
{
if (value)

View File

@@ -1,6 +1,44 @@
namespace VisionAsist.ViewModels;
using System;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.Collections.ObjectModel;
namespace VisionAsist.ViewModels;
using System.IO;
using System.Linq;
public class ModuleItem
{
public string Name { get; set; }
public IRelayCommand SettingsCommand { get; set; }
}
public class SettingsViewModel : ViewModelBase
{
string Plugin = Path.Combine(AppContext.BaseDirectory, "Modules");
public ObservableCollection<ModuleItem> Modules { get; } = new();
public SettingsViewModel()
{
string[] folderNames = new DirectoryInfo(Plugin)
.GetDirectories()
.Select(d => d.Name)
.ToArray();
foreach (string folderName in folderNames)
{
AddModule(folderName);
}
}
public void AddModule(string name)
{
Modules.Add(new ModuleItem
{
Name = name,
SettingsCommand = new RelayCommand(() => OpenSettings(name))
});
}
private void OpenSettings(string moduleName)
{
Console.WriteLine($"Нажата кнопка модуля: {moduleName}");
}
}

View File

@@ -16,7 +16,7 @@
</Design.DataContext>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="10">
<Button Content="Настройки"/>
<Button Content="Настройки" Command="{Binding SettingseCommand}"/>
<ToggleButton IsChecked="{Binding IsListening, Mode=TwoWay}"
Content="Запуск асистента"
HorizontalAlignment="Center"

View File

@@ -11,7 +11,23 @@
<Design.DataContext>
<!-- This only sets the DataContext for the previewer in an IDE,
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
<vm:MainWindowViewModel/>
<vm:SettingsViewModel/>
</Design.DataContext>
<ListBox ItemsSource="{Binding Modules}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate x:DataType="vm:ModuleItem">
<Border Background="DarkBlue" CornerRadius="5" Padding="10" Margin="5">
<Grid ColumnDefinitions="*,Auto">
<TextBlock Text="{Binding Name}" />
<Button Content="Settings"
Grid.Column="1"
Command="{Binding SettingsCommand}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Window>