diff --git a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview.csproj b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview.csproj
index 23542f7..223d674 100644
--- a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview.csproj
+++ b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview.csproj
@@ -42,7 +42,7 @@
-
+
diff --git a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ViewModels/SettingsViewModel.cs b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ViewModels/SettingsViewModel.cs
index ed11404..a7b1f25 100644
--- a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ViewModels/SettingsViewModel.cs
+++ b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/ViewModels/SettingsViewModel.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Threading.Tasks;
+using System.Collections.ObjectModel;
using System.Windows.Input;
using CommunityToolkit.Mvvm.ComponentModel;
@@ -7,6 +6,7 @@ using CommunityToolkit.Mvvm.Input;
using ElectronBot.BraincasePreview.Contracts.Services;
using ElectronBot.BraincasePreview.Contracts.ViewModels;
+using ElectronBot.BraincasePreview.Core.Models;
using ElectronBot.BraincasePreview.Helpers;
using ElectronBot.BraincasePreview.Models;
using Microsoft.UI.Xaml;
@@ -21,7 +21,34 @@ public class SettingsViewModel : ObservableRecipient, INavigationAware
private readonly ILocalSettingsService _localSettingsService;
private ElementTheme _elementTheme;
+ private ObservableCollection _cameras;
+
+ private ObservableCollection _audioDevs;
+
+
+ private ComboxItemModel _cameraSelect;
+
+ private ComboxItemModel _audioSelect;
+
+
private string _customClockTitle;
+
+ public SettingsViewModel(
+ IThemeSelectorService themeSelectorService,
+ ILocalSettingsService localSettingsService)
+ {
+ _themeSelectorService = themeSelectorService;
+ _elementTheme = _themeSelectorService.Theme;
+ _localSettingsService = localSettingsService;
+ VersionDescription = GetVersionDescription();
+ }
+
+
+ private ICommand _cameraCommand;
+ public ICommand CameraCommand => _cameraCommand ??= new RelayCommand(CameraChanged);
+
+ private ICommand _audioCommand;
+ public ICommand AudioCommand => _audioCommand ??= new RelayCommand(AudioChanged);
public ElementTheme ElementTheme
{
get => _elementTheme;
@@ -44,6 +71,46 @@ public class SettingsViewModel : ObservableRecipient, INavigationAware
}
+
+ ///
+ /// 选中的相机
+ ///
+ public ComboxItemModel CameraSelect
+ {
+ get => _cameraSelect;
+ set => SetProperty(ref _cameraSelect, value);
+ }
+
+ ///
+ /// 选中的音频设备
+ ///
+ public ComboxItemModel AudioSelect
+ {
+ get => _audioSelect;
+ set => SetProperty(ref _audioSelect, value);
+ }
+
+
+
+ ///
+ /// 相机列表
+ ///
+ public ObservableCollection Cameras
+ {
+ get => _cameras;
+ set => SetProperty(ref _cameras, value);
+ }
+
+ ///
+ /// 音频设备列表
+ ///
+ public ObservableCollection AudioDevs
+ {
+ get => _audioDevs;
+ set => SetProperty(ref _audioDevs, value);
+ }
+
+
private string _versionDescription;
public string VersionDescription
@@ -97,28 +164,64 @@ public class SettingsViewModel : ObservableRecipient, INavigationAware
}
}
- public SettingsViewModel(
- IThemeSelectorService themeSelectorService,
- ILocalSettingsService localSettingsService)
+ ///
+ /// 音频切换方法
+ ///
+ private async void AudioChanged()
{
- _themeSelectorService = themeSelectorService;
- _elementTheme = _themeSelectorService.Theme;
- _localSettingsService = localSettingsService;
- VersionDescription = GetVersionDescription();
+ var audioName = _audioSelect?.DataKey;
+
+ if (!string.IsNullOrWhiteSpace(audioName))
+ {
+ await _localSettingsService.SaveSettingAsync(Constants.DefaultAudioNameKey, _audioSelect);
+ }
+ }
+ ///
+ /// 相机选择方法
+ ///
+ private async void CameraChanged()
+ {
+ var cameraName = _cameraSelect?.DataKey;
+
+ if (!string.IsNullOrWhiteSpace(cameraName))
+ {
+ await _localSettingsService.SaveSettingAsync(Constants.DefaultCameraNameKey, _cameraSelect);
+ }
}
private async Task InitAsync()
{
- //var ret = await _localSettingsService
- // .ReadSettingAsync(Constants.CustomClockTitleKey);
-
- //CustomClockTitle = ret ?? "";
try
{
var ret2 = await _localSettingsService
.ReadSettingAsync(Constants.CustomClockTitleConfigKey);
-
ClockTitleConfig = ret2 ?? new CustomClockTitleConfig();
+
+ var camera = await EbHelper.FindCameraDeviceListAsync();
+
+ Cameras = new ObservableCollection(camera);
+
+
+ var audioDevs = await EbHelper.FindAudioDeviceListAsync();
+
+ AudioDevs = new ObservableCollection(audioDevs);
+
+ var cameraModel = await _localSettingsService
+ .ReadSettingAsync(Constants.DefaultCameraNameKey);
+
+ if (cameraModel != null)
+ {
+ CameraSelect = Cameras.FirstOrDefault(c => c.DataValue == cameraModel.DataValue);
+
+ }
+
+ var audioModel = await _localSettingsService
+ .ReadSettingAsync(Constants.DefaultAudioNameKey);
+
+ if (audioModel != null)
+ {
+ AudioSelect = AudioDevs.FirstOrDefault(c => c.DataValue == audioModel.DataValue);
+ }
}
catch (Exception ex)
{
diff --git a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/Views/SettingsPage.xaml b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/Views/SettingsPage.xaml
index 05a426b..c22493b 100644
--- a/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/Views/SettingsPage.xaml
+++ b/src/ElectronBot.UI/src/ElectronBot.BraincasePreview/ElectronBot.BraincasePreview/Views/SettingsPage.xaml
@@ -13,8 +13,9 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 默认设备设置
+
+ 设置相关默认设备
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
+
+
+
+
+
+
-
+