2025-07-04 14:15:44 +08:00
|
|
|
|
using HandyControl.Tools.Extension;
|
|
|
|
|
|
using iNKORE.UI.WPF.Modern.Controls;
|
2025-07-03 12:55:00 +08:00
|
|
|
|
using NPOI.SS.Formula.Functions;
|
2025-07-15 22:18:37 +08:00
|
|
|
|
using PMSWPF.Data.Repositories;
|
2025-07-05 16:13:46 +08:00
|
|
|
|
using PMSWPF.Enums;
|
2025-06-12 18:56:25 +08:00
|
|
|
|
using PMSWPF.Models;
|
2025-06-12 13:15:55 +08:00
|
|
|
|
using PMSWPF.ViewModels.Dialogs;
|
|
|
|
|
|
using PMSWPF.Views.Dialogs;
|
|
|
|
|
|
|
|
|
|
|
|
namespace PMSWPF.Services;
|
|
|
|
|
|
|
2025-06-26 19:36:27 +08:00
|
|
|
|
public class DialogService :IDialogService
|
2025-06-12 13:15:55 +08:00
|
|
|
|
{
|
2025-07-15 22:18:37 +08:00
|
|
|
|
private readonly MqttRepository _mqttRepository;
|
2025-06-26 19:36:27 +08:00
|
|
|
|
|
2025-07-15 22:18:37 +08:00
|
|
|
|
public DialogService(MqttRepository mqttRepository)
|
|
|
|
|
|
{
|
|
|
|
|
|
_mqttRepository = mqttRepository;
|
2025-06-25 22:33:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-12 18:56:25 +08:00
|
|
|
|
public async Task<Device> ShowAddDeviceDialog()
|
2025-06-12 13:15:55 +08:00
|
|
|
|
{
|
2025-06-23 17:01:06 +08:00
|
|
|
|
var device = new Device();
|
2025-07-01 21:34:20 +08:00
|
|
|
|
DeviceDialogViewModel vm = new DeviceDialogViewModel(device);
|
|
|
|
|
|
vm.Title = "添加设备";
|
|
|
|
|
|
vm.PrimaryButContent = "添加设备";
|
|
|
|
|
|
return await ShowConentDialog(vm,device);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static async Task<Device> ShowConentDialog(DeviceDialogViewModel viewModel,Device device)
|
|
|
|
|
|
{
|
|
|
|
|
|
var dialog = new DeviceDialog(viewModel);
|
2025-06-23 17:01:06 +08:00
|
|
|
|
var res = await dialog.ShowAsync();
|
2025-06-26 19:36:27 +08:00
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return device;
|
|
|
|
|
|
}
|
2025-06-23 17:01:06 +08:00
|
|
|
|
return null;
|
2025-06-12 13:15:55 +08:00
|
|
|
|
}
|
2025-06-13 18:54:17 +08:00
|
|
|
|
|
2025-07-01 21:34:20 +08:00
|
|
|
|
public async Task<Device> ShowEditDeviceDialog(Device device)
|
|
|
|
|
|
{
|
|
|
|
|
|
DeviceDialogViewModel vm = new DeviceDialogViewModel(device);
|
|
|
|
|
|
vm.Title = "编辑设备";
|
|
|
|
|
|
vm.PrimaryButContent = "编辑设备";
|
|
|
|
|
|
return await ShowConentDialog(vm,device);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-04 22:39:44 +08:00
|
|
|
|
public async Task<Mqtt> ShowAddMqttDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
var mqtt = new Mqtt();
|
|
|
|
|
|
MqttDialogViewModel vm = new MqttDialogViewModel(mqtt);
|
|
|
|
|
|
vm.Title = "添加MQTT";
|
|
|
|
|
|
vm.PrimaryButContent = "添加MQTT";
|
|
|
|
|
|
return await ShowConentDialog(vm, mqtt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<Mqtt> ShowEditMqttDialog(Mqtt mqtt)
|
|
|
|
|
|
{
|
|
|
|
|
|
MqttDialogViewModel vm = new MqttDialogViewModel(mqtt);
|
|
|
|
|
|
vm.Title = "编辑MQTT";
|
|
|
|
|
|
vm.PrimaryButContent = "编辑MQTT";
|
|
|
|
|
|
return await ShowConentDialog(vm, mqtt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static async Task<Mqtt> ShowConentDialog(MqttDialogViewModel viewModel, Mqtt mqtt)
|
|
|
|
|
|
{
|
|
|
|
|
|
var dialog = new MqttDialog(viewModel);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return mqtt;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-01 21:34:20 +08:00
|
|
|
|
public async Task<bool> ShowConfrimeDialog(string title, string message,string buttonText="确认")
|
|
|
|
|
|
{
|
|
|
|
|
|
ConfrimDialogViewModel vm = new ConfrimDialogViewModel();
|
|
|
|
|
|
vm.Title = title;
|
|
|
|
|
|
vm.Message = message;
|
|
|
|
|
|
vm.PrimaryButtonText = buttonText;
|
|
|
|
|
|
var dialog = new ConfirmDialog(vm);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-03 12:55:00 +08:00
|
|
|
|
public async Task<VariableTable> ShowAddVarTableDialog()
|
2025-07-02 12:01:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
VarTableDialogViewModel vm = new();
|
|
|
|
|
|
vm.Title = "添加变量表";
|
|
|
|
|
|
vm.PrimaryButtonText = "添加变量表";
|
|
|
|
|
|
vm.VariableTable = new VariableTable();
|
|
|
|
|
|
var dialog = new VarTableDialog(vm);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.VariableTable;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-16 18:39:00 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<VariableTable> ShowEditVarTableDialog(VariableTable variableTable)
|
|
|
|
|
|
{
|
|
|
|
|
|
VarTableDialogViewModel vm = new();
|
|
|
|
|
|
vm.Title = "编辑变量表";
|
|
|
|
|
|
vm.PrimaryButtonText = "编辑变量表";
|
|
|
|
|
|
vm.VariableTable = variableTable;
|
|
|
|
|
|
var dialog = new VarTableDialog(vm);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.VariableTable;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-03 12:55:00 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<VariableData> ShowAddVarDataDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
VarDataDialogViewModel vm = new();
|
|
|
|
|
|
vm.Title = "添加变量";
|
|
|
|
|
|
vm.PrimaryButtonText = "添加变量";
|
|
|
|
|
|
vm.VariableData = new VariableData();
|
|
|
|
|
|
var dialog = new VarDataDialog(vm);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.VariableData;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-02 12:01:20 +08:00
|
|
|
|
|
2025-07-01 21:34:20 +08:00
|
|
|
|
|
2025-06-13 18:54:17 +08:00
|
|
|
|
public void ShowMessageDialog(string title, string message)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show(message);
|
|
|
|
|
|
}
|
2025-06-25 22:33:57 +08:00
|
|
|
|
|
2025-07-03 15:29:07 +08:00
|
|
|
|
public async Task<VariableData> ShowEditVarDataDialog(VariableData variableData)
|
|
|
|
|
|
{
|
|
|
|
|
|
VarDataDialogViewModel vm = new();
|
|
|
|
|
|
vm.Title = "编辑变量";
|
|
|
|
|
|
vm.PrimaryButtonText = "编辑变量";
|
|
|
|
|
|
vm.VariableData = variableData;
|
|
|
|
|
|
var dialog = new VarDataDialog(vm);
|
|
|
|
|
|
var res = await dialog.ShowAsync();
|
|
|
|
|
|
if (res == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.VariableData;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-04 13:40:14 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<string> ShowImportExcelDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new ImportExcelDialogViewModel();
|
|
|
|
|
|
var dialog = new ImportExcelDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.FilePath;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-04 14:15:44 +08:00
|
|
|
|
|
|
|
|
|
|
public ContentDialog ShowProcessingDialog(string title, string message)
|
|
|
|
|
|
{
|
|
|
|
|
|
ProcessingDialogViewModel vm = new ProcessingDialogViewModel();
|
|
|
|
|
|
vm.Title = title;
|
|
|
|
|
|
vm.Message = message;
|
|
|
|
|
|
var dialog = new ProcessingDialog(vm);
|
|
|
|
|
|
_ = dialog.ShowAsync(); // 不await,让它在后台显示
|
|
|
|
|
|
return dialog;
|
|
|
|
|
|
}
|
2025-07-05 16:13:46 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<PollLevelType?> ShowPollLevelDialog(PollLevelType pollLevelType)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new PollLevelDialogViewModel(pollLevelType);
|
|
|
|
|
|
var dialog = new PollLevelDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.SelectedPollLevelType;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-05 18:15:21 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<Mqtt?> ShowMqttSelectionDialog()
|
|
|
|
|
|
{
|
2025-07-15 22:18:37 +08:00
|
|
|
|
var vm = new MqttSelectionDialogViewModel(_mqttRepository);
|
2025-07-05 18:15:21 +08:00
|
|
|
|
var dialog = new MqttSelectionDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
2025-07-09 13:06:21 +08:00
|
|
|
|
return result == ContentDialogResult.Primary ? vm.SelectedMqtt : null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-09 21:35:51 +08:00
|
|
|
|
public async Task<List<VariableData>> ShowOpcUaImportDialog(string endpointUrl)
|
2025-07-09 13:06:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
var vm= new OpcUaImportDialogViewModel();
|
2025-07-09 21:35:51 +08:00
|
|
|
|
vm.EndpointUrl = endpointUrl;
|
2025-07-09 13:06:21 +08:00
|
|
|
|
var dialog = new OpcUaImportDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
return result == ContentDialogResult.Primary ? vm.GetSelectedVariables().ToList() : null;
|
2025-07-05 18:15:21 +08:00
|
|
|
|
}
|
2025-07-13 16:22:07 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<OpcUaUpdateType?> ShowOpcUaUpdateTypeDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new OpcUaUpdateTypeDialogViewModel();
|
|
|
|
|
|
var dialog = new OpcUaUpdateTypeDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.SelectedUpdateType;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-16 15:50:57 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<bool?> ShowIsActiveDialog(bool currentIsActive)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new IsActiveDialogViewModel(currentIsActive);
|
|
|
|
|
|
var dialog = new IsActiveDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.SelectedIsActive;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-07-17 09:45:58 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task ShowImportResultDialog(List<string> importedVariables, List<string> existingVariables)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new ImportResultDialogViewModel(importedVariables, existingVariables);
|
|
|
|
|
|
var dialog = new ImportResultDialog(vm);
|
|
|
|
|
|
await dialog.ShowAsync();
|
|
|
|
|
|
}
|
2025-07-17 17:28:12 +08:00
|
|
|
|
|
|
|
|
|
|
public async Task<string?> ShowMqttAliasDialog(string variableName, string mqttServerName)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new MqttAliasDialogViewModel(variableName, mqttServerName);
|
|
|
|
|
|
var dialog = new MqttAliasDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.MqttAlias;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<VariableMqtt>> ShowMqttAliasBatchEditDialog(List<VariableData> selectedVariables, Mqtt selectedMqtt)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = new MqttAliasBatchEditDialogViewModel(selectedVariables, selectedMqtt);
|
|
|
|
|
|
var dialog = new MqttAliasBatchEditDialog(vm);
|
|
|
|
|
|
var result = await dialog.ShowAsync();
|
|
|
|
|
|
if (result == ContentDialogResult.Primary)
|
|
|
|
|
|
{
|
|
|
|
|
|
return vm.VariablesToEdit.ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
2025-06-12 13:15:55 +08:00
|
|
|
|
}
|