FieldWorkClient/ViewModel/Sync/SyncViewModel.cs

128 lines
3.4 KiB
C#
Raw Normal View History

using System.IO;
2025-03-24 10:24:36 +08:00
using System.Windows.Input;
using HeBianGu.Base.WpfBase;
2025-03-22 15:29:32 +08:00
using HeBianGu.Service.Mvc;
using Hopetry.Services;
2025-03-24 10:24:36 +08:00
using Microsoft.WindowsAPICodePack.Dialogs;
using SystemSetting = FileUploader.Models.SystemSetting;
2025-03-22 15:29:32 +08:00
namespace HeBianGu.App.Disk.ViewModel.Sync;
[ViewModel("Sync")]
public class SyncViewModel : MvcViewModelBase
{
2025-03-24 10:24:36 +08:00
public ICommand OpenDirCommand { get; set; }
private readonly ISerializerService _serializerService;
private readonly MinioService _minioService;
private readonly SystemSetting _setting = new SystemSetting();
2025-03-24 10:24:36 +08:00
2025-03-22 15:29:32 +08:00
protected override void Init()
{
//RaisePropertyChanged();
2025-03-22 15:29:32 +08:00
/*LinkActions.Add(new LinkAction() { Action = "Space", Controller = "Loyout", DisplayName = "会话", Logo = "\xe613" });
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
{
SelectLink = LinkActions[0];
}));*/
}
public SyncViewModel(ISerializerService serializerService, MinioService minioService)
2025-03-24 10:24:36 +08:00
{
_minioService = minioService;
_serializerService = serializerService;
if (File.Exists("./settings.xml"))
{
_setting = _serializerService.Load<SystemSetting>("./settings.xml");
// 同步字段
SyncDir = _setting.SyncDir;
TaskCount = _setting.TaskCount;
}
else
{
_setting = new SystemSetting();
}
2025-03-24 10:24:36 +08:00
OpenDirCommand = new RelayCommand(async () => await ButtonBase_OnClick());
SyncData = new RelayCommand(async () => await SyncDataQuck());
}
private async Task<object> SyncDataQuck()
{
return _minioService.MirrorAsync1(_minioService._bucketName, SyncDir, _taskCount);
2025-03-24 10:24:36 +08:00
}
2025-03-22 15:29:32 +08:00
protected override void Loaded(string args)
{
}
2025-03-24 10:24:36 +08:00
public int _taskCount = 3;
public int TaskCount
{
get => _taskCount;
set
{
_taskCount = value;
_setting.TaskCount = value;
_serializerService.Save("./settings.xml", _setting);
//_serializerService.Save("./settings.xml", this);
RaisePropertyChanged();
}
}
2025-03-22 15:29:32 +08:00
public string _syncDir;
public string SyncDir
{
get => _syncDir;
set
{
_syncDir = value;
RaisePropertyChanged();
}
}
public RelayCommand SyncData { get; set; }
2025-03-24 10:24:36 +08:00
public class RelayCommand : ICommand
{
private readonly Action _execute;
public RelayCommand(Action execute)
{
_execute = execute;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_execute();
}
}
private async Task ButtonBase_OnClick()
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog
{
IsFolderPicker = true
};
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
var folderPath = dialog.FileName; // 获取选中的文件夹路径
//MessageBox.Show("folderPath " + folderPath);
SyncDir = folderPath;
_setting.SyncDir = folderPath;
_serializerService.Save("./settings.xml", _setting);
2025-03-24 10:24:36 +08:00
// 处理选中的文件夹路径
}
}
2025-03-22 15:29:32 +08:00
}