Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
 public void RestoreArrangement(string backupFilePath)
 {
     try
     {
         VidefixCore.Apply(backupFilePath);
         _restoredDialog.Value.Show();
     }
     catch (Exception exception)
     {
         new RestoreErrorDialog(exception).Show();
     }
 }
Exemple #5
0
        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.");
        }
Exemple #6
0
        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.");
        }