예제 #1
0
        private void RestoreDatabaseFromSyncPathMenuItem_Click(object sender, EventArgs e)
        {
            if (_applicationState.DatabaseExists &&
                MessageBox.Show("Are you sure that you want to replace the existing database?\nIt is recommended that you perform a backup before replacing the existing database!",
                                "Replace database from sync folder",
                                MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
            {
                return;
            }

            var formGetPassword = new FormGetPassword {
                UsePasswordValidation = false
            };

            if (formGetPassword.ShowDialog(this) != DialogResult.OK)
            {
                formGetPassword.Dispose();
                return;
            }


            string password = formGetPassword.PasswordString;

            _passwordStorage.Set("RestoreDatabaseFromSync", password);
            formGetPassword.Dispose();

            _applicationState.DatabaseLoaded = false;
            _appSettingsService.LoadSettings();
            InitFormSettings();

            RestoreSyncDataResult result = _logicManager.RestoreBackupFromSyncFolder();

            if (result.Successful)
            {
                MessageBox.Show("Database and app settings restored from sync folder.", "Restore complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
                _applicationState.DatabaseExists = true;
                UpdateApplicationState();
            }
            else
            {
                MessageBox.Show("Could not restore sync folder content: " + result.ErrorText, "Error restoring data", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }