private async void ImportWorkersCommand(object parameter) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "JSON file|*.json"; var openFileDialogResult = openFileDialog.ShowDialog(); if (openFileDialogResult == false || string.IsNullOrEmpty(openFileDialog.FileName)) { return; } string workersContent = null; ObservableCollection <Worker> convertedWorkers = null; try { workersContent = System.IO.File.ReadAllText(openFileDialog.FileName); } catch { await Task.Delay(100); MessageBox.Show($"There was an error while reading from \"{openFileDialog.FileName}\"", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } convertedWorkers = JsonConverter.ConvertFromJson <ObservableCollection <Worker> >(workersContent, false); if (convertedWorkers == null || convertedWorkers.Count == 0) { await Task.Delay(100); Helpers.ShowErrorMessage($"Failed to intepret JSON information from \"{openFileDialog.FileName}\"", "Error"); return; } var window = new SelectWorkers(); window.SizeToContent = SizeToContent.WidthAndHeight; var vm = new SelectWorkersVM(); vm.Workers = convertedWorkers; foreach (var worker in vm.Workers) { worker.Query = true; } window.DataContext = vm; vm.Title = "Import Workers"; vm.ButtonTitle = "Import"; var dialogResult = window.ShowDialog(); if (dialogResult == false) { return; } var selectedWorkers = vm.Workers.Where(x => x.Query).ToList(); if (selectedWorkers == null || selectedWorkers.Count == 0) { return; } var workerIndex = Workers.WorkerList.IndexOf((Worker)parameter); Workers.WorkerListAddRangeAt(selectedWorkers, workerIndex); }
private void RestoreState(UndoObject undoObject) { switch (undoObject.OperationType) { case UndoOperationType.WorkerEdit: Workers.WorkerListReplaceItem(undoObject.Index, ((Worker)undoObject.Data).Clone()); break; case UndoOperationType.WorkersPowerCost: Workers.PowerCost = (double)undoObject.Data; break; case UndoOperationType.WorkersCoinType: Workers.CoinType = (string)undoObject.Data; break; case UndoOperationType.WorkersDisplayCoinAs: Workers.DisplayCoinAs = (string)undoObject.Data; break; case UndoOperationType.WorkerAdd: Workers.WorkerListRemoveAt(Workers.WorkerList.Count - 1); break; case UndoOperationType.WorkerAddRange: Workers.WorkerListRemoveRangeAt(undoObject.Index, (int)undoObject.Data); break; case UndoOperationType.WorkerInsert: Workers.WorkerListRemoveAt(undoObject.Index); break; case UndoOperationType.WorkerRemove: Workers.WorkerListInsert(undoObject.Index, ((Worker)undoObject.Data).Clone()); break; case UndoOperationType.WorkerRemoveRange: Workers.WorkerListAddRangeAt((ObservableCollection <Worker>)undoObject.Data, undoObject.Index); break; case UndoOperationType.WorkerMove: Workers.WorkerListMove((int)undoObject.Data, undoObject.Index); break; case UndoOperationType.SettingsEdit: UnHookUpWmtSettingsPropertyChangeEvents(); SaveUndoRedo("WtmSettings"); var wtms = ((WtmSettingsObject)undoObject.Data).Clone(); bool switchTimeFromEqual = WtmSwitchTimeFromStored.Equals(wtms.SwitchTimeFrom); bool switchTimeToEqual = WtmSwitchTimeToStored.Equals(wtms.SwitchTimeTo); bool historicalAverageEqual = WtmHistoricalAveragePeriodStored == wtms.HistoricalAveragePeriod; bool historyTimeFromEqual = WtmHistoryTimeFromStored.Equals(wtms.HistoryTimeFrom); bool historyTimeToEqual = WtmHistoryTimeToStored.Equals(wtms.HistoryTimeTo); WtmSettings = wtms; HookUpWmtSettingsPropertyChangeEvents(); if (WtmSettings.AutoSwitch) { SwitchTimeIsUpdated = false; } if (WtmSettings.BackupHistoricalPrices) { HistoryTimeIsUpdated = false; } WtmSettings.ServerSettingsAreUpdated = true; break; case UndoOperationType.WorkersAll: SaveUndoRedo("WorkersAll"); var allWorkers = undoObject.Data as ObservableCollection <Worker>; Workers.WorkerList.Clear(); foreach (var worker in allWorkers) { Workers.WorkerList.Add(worker.Clone()); } break; } }