123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- using InitializerModel;
- using Microsoft.Win32;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace ConfigEditor.SubPage.EvseConfig
- {
- public class FirmwareVersionPaneltemViewModel : FirmwareUpdateModel, INotifyPropertyChanged
- {
- public FirmwareVersionPaneltemViewModel(FirmwareUpdateModel from) {
- this.Module = from.Module;
- this.Version = from.Version;
- this.FirmwareFileName = from.FirmwareFileName;
- this.DisplayFileName = System.IO.Path.GetFileName(FirmwareFileName);
- }
- public string DisplayFileName { get; set; }
- public event PropertyChangedEventHandler PropertyChanged;
- internal FirmwareUpdateModel GetFirmwareUpdateModel()
- {
- return new FirmwareUpdateModel()
- {
- Module = this.Module,
- Version = this.Version,
- FirmwareFileName = this.FirmwareFileName,
- };
- }
- public void TriggerPropertyChanged()
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Module)));
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Version)));
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(FirmwareFileName)));
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(DisplayFileName)));
- }
- }
- /// <summary>
- /// FirmwareVersionPaneltem.xaml 的互動邏輯
- /// </summary>
- public partial class FirmwareVersionPaneltem : UserControl
- {
- //private FirmwareUpdateModel firmware;
- public FirmwareVersionPaneltem(string fileFolderPath, int evseIndex)
- {
- InitializeComponent();
- var firmware = new FirmwareUpdateModel();
- Init();
- //this.firmware = firmware;
- this.evseIndex = evseIndex;
- //this.DataContext = firmware;
- this.ViewModel = new FirmwareVersionPaneltemViewModel(firmware);
- this.DataContext = this.ViewModel;
- }
- public FirmwareVersionPaneltem(string fileFolderPath, FirmwareUpdateModel firmware, int evseIndex)
- {
- InitializeComponent();
- Init();
- this.fileFolderPath = fileFolderPath;
- //this.firmware = firmware;
- this.evseIndex = evseIndex;
- this.ViewModel = new FirmwareVersionPaneltemViewModel(firmware);
- this.DataContext = ViewModel;
- }
- public FirmwareUpdateModel GetModel()
- {
- var toReturn = new FirmwareUpdateModel();
- toReturn.Module = ViewModel?.Module;
- toReturn.Version = ViewModel?.Version;
- toReturn.FirmwareFileName = ViewModel?.FirmwareFileName;
- if (string.IsNullOrEmpty(toReturn.Module) ||
- string.IsNullOrEmpty(toReturn.Version))
- {
- return null;
- }
- return toReturn;
- }
- private void Init()
- {
- PredefinedVersions = PredefinedVersionPair.GetWebNames();
- var selectionList = PredefinedVersions.Append(customizedString);
- this.uxPredefinedFrimware.ItemsSource = selectionList;
- //fileSourcePath = firmware.FirmwareFileName;
- //firmware.DisplayFileName = System.IO.Path.GetFileName(firmware.FirmwareFileName);
- }
- public event EventHandler OnDeleteClicked;
- public FirmwareUpdateModel FrimwareModel => ViewModel.GetFirmwareUpdateModel();
- private string customizedString = "Customized";
- private IEnumerable<string> PredefinedVersions;
- private FirmwareVersionPaneltemViewModel ViewModel;
- private readonly string fileFolderPath;
- private readonly int evseIndex;
- private void uxPredefinedFrimware_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- var selectedItem = uxPredefinedFrimware.SelectedItem as string;
- if (selectedItem == customizedString)
- {
- return;
- }
- if (PredefinedVersions.Contains(selectedItem))
- {
- var indexedApiVersion = EvseVersion.GetDDApiNameFromWebName(selectedItem, evseIndex);
- ViewModel.Module = indexedApiVersion;
- //uxFrimwareKey.Text = indexedApiVersion;
- ViewModel.TriggerPropertyChanged();
- //ReloadViewModel();
- }
- //uxFrimwareKey.Text =
- }
- private void uxFrimwareKey_TextChanged(object sender, TextChangedEventArgs e)
- {
- var versionKey = uxFrimwareKey.Text;
- var apiName = EvseVersion.GetApiNameFromDDApiName(versionKey);
- var webName = PredefinedVersionPair.GetWebName(apiName);
- if (PredefinedVersions.Contains(webName))
- {
- uxPredefinedFrimware.SelectedItem = webName;
- }
- else
- {
- uxPredefinedFrimware.SelectedItem = customizedString;
- }
- }
- private void Delete_Click(object sender, RoutedEventArgs e)
- {
- OnDeleteClicked?.Invoke(this, null);
- }
- private void ReloadViewModel()
- {
- this.DataContext = null;
- this.DataContext = ViewModel;
- }
- private void File_MouseUp(object sender, MouseButtonEventArgs e)
- {
- if (!(sender is TextBox textBox))
- {
- return;
- }
- var dlg = new OpenFileDialog();
- try
- {
- dlg.InitialDirectory = fileFolderPath;
- dlg.FileName = ViewModel.DisplayFileName;
- }
- catch
- {
- }
- var dlgResult = dlg.ShowDialog();
- if (dlgResult == true)
- {
- //TryUpdateFile(dlg.FileName);
- ViewModel.FirmwareFileName = dlg.FileName;
- ViewModel.DisplayFileName = System.IO.Path.GetFileName(dlg.FileName);
- this.DataContext = null;
- this.DataContext = ViewModel;
- }
- }
- //private void TryUpdateFile(string fullFilePath)
- //{
- // string folderPath = System.IO.Path.GetDirectoryName(fullFilePath);
- // string fileName = System.IO.Path.GetFileName(fullFilePath);
- // if (folderPath == fileFolderPath)
- // {
- // firmware.FirmwareFileName = fileName;
- // this.DataContext = null;
- // this.DataContext = firmware;
- // return;
- // }
- // var targetFilePath = System.IO.Path.Combine(fileFolderPath, fileName);
- // if (System.IO.File.Exists(targetFilePath))
- // {
- // MessageBox.Show("file existed");
- // return;
- // }
- // System.IO.File.Copy(fullFilePath, targetFilePath) ;
- // firmware.FirmwareFileName = fileName;
- // this.DataContext = null;
- // this.DataContext = firmware;
- //}
- }
- }
|