public void BackupArrangement() { try { if (_isBusy) { return; } _isBusy = true; try { var dateTime = DateTime.Now; var backupFile = GetBackupFilePath(dateTime); VidefixCore.Save(backupFile); _backupFiles.Add(dateTime, backupFile); } catch (Exception exception) { new BackupErrorDialog(exception).Show(); } } catch (Exception exception) { // TODO: Activate gui here? new GeneralErrorDialog(exception).Show(); } finally { _isBusy = false; } }
public void SaveArrangement() { try { if (!TryActivateGui()) { return; } try { var dateTime = DateTime.Now; var backupFile = GetArrangementFilePath(dateTime); VidefixCore.Save(backupFile); _arrangementFiles.Add(dateTime, backupFile); _isGuiActive = true; _savedDialog.Value.Show(); } catch (Exception exception) { new SaveErrorDialog(exception).Show(); } } catch (Exception exception) { new GeneralErrorDialog(exception).Show(); } finally { DeactivateGui(); } }
/// <summary> /// Displays the icon in the system tray. /// </summary> public bool Display() { _backupTimer.Enabled = true; _notifyIcon.Visible = true; if (Program.TryGetLatestArrangement(out var latestArrangement) && VidefixCore.CheckNeedsRestore()) { switch (new OfferRestoreDialog(latestArrangement.Key).Show()) { case Microsoft.WindowsAPICodePack.Dialogs.TaskDialogResult.Yes: Program.RestoreArrangement(latestArrangement.Value); return(true); case Microsoft.WindowsAPICodePack.Dialogs.TaskDialogResult.No: break; case Microsoft.WindowsAPICodePack.Dialogs.TaskDialogResult.Cancel: Application.Exit(); return(false); default: throw new ArgumentOutOfRangeException("NotElevatedWarningDialog.Show"); } } Program.BackupArrangement(); return(true); }
public void RestoreArrangement(string backupFilePath) { try { VidefixCore.Apply(backupFilePath); _restoredDialog.Value.Show(); } catch (Exception exception) { new RestoreErrorDialog(exception).Show(); } }
public void VidefixTest() { if (MessageBox.Show("Ready to dare the test?", nameof(VidefixTests), MessageBoxButton.OKCancel) != MessageBoxResult.OK) { Assert.Inconclusive("User denied to test"); } var oldArrangement = VidefixCore.Save(); MessageBox.Show("Now you can move something before you click here."); VidefixCore.Apply(oldArrangement); var newArrangement = VidefixCore.Save(); Assert.IsTrue(oldArrangement.WindowInfos.Length == newArrangement.WindowInfos.Length); Assert.IsTrue(EnumerableHelper.SequenceIsCongruent(oldArrangement.WindowInfos, newArrangement.WindowInfos)); MessageBox.Show("Test done."); }
public void SerializationTest() { if (MessageBox.Show("Ready to dare the test?", nameof(VidefixTests), MessageBoxButton.OKCancel) != MessageBoxResult.OK) { Assert.Inconclusive("User denied to test"); } string filePath = Path.GetTempFileName(); var savedArrangement = VidefixCore.Save(); using (var fileStream = new FileStream(filePath, FileMode.Create)) { var serializer = new DataContractSerializer(savedArrangement.GetType()); serializer.WriteObject(fileStream, savedArrangement); } MessageBox.Show("Now you can move something before you click here."); Arrangement readArrangement; using (var fileStream = new FileStream(filePath, FileMode.Open)) { var reader = XmlDictionaryReader.CreateTextReader(fileStream, new XmlDictionaryReaderQuotas()); var serializer = new DataContractSerializer(savedArrangement.GetType()); readArrangement = (Arrangement)serializer.ReadObject(reader, true); } VidefixCore.Apply(readArrangement); var newArrangement = VidefixCore.Save(); Assert.IsTrue(newArrangement.WindowInfos.Length == readArrangement.WindowInfos.Length); Assert.IsTrue(EnumerableHelper.SequenceIsCongruent(newArrangement.WindowInfos, readArrangement.WindowInfos)); MessageBox.Show("Test done."); }