private bool SaveRepository(string filename)
        {
            bool ret = false;

            try
            {
                if (passwordRepository == null)
                {
                    return(false);
                }
                if (!ReenterPassword())
                {
                    return(false);
                }
                if (string.IsNullOrEmpty(filename))
                {
                    var dlg = new Microsoft.Win32.SaveFileDialog()
                    {
                        InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                        Filter           = Properties.Resources.FILE_DIALOG_FILTER
                    };
                    var initDir = Properties.Settings.Default.InitialDirectory.ReplaceSpecialFolder();
                    if (Directory.Exists(initDir))
                    {
                        dlg.InitialDirectory = initDir;
                    }
                    if (dlg.ShowDialog() != true)
                    {
                        return(false);
                    }
                    if (!ReenterPassword())
                    {
                        return(false);
                    }
                    filename = dlg.FileName;
                    Properties.Settings.Default.InitialDirectory = new FileInfo(filename).Directory.FullName;
                }
                var keyDirectory = keyDirectoryCache.Get(passwordRepository.Id);
                passwordRepository.Save(filename, keyDirectory, passwordSecureString);
                passwordFilename = filename;
                Properties.Settings.Default.LastUsedRepositoryFile = filename;
                SortListView();
                ret = true;
            }
            catch (Exception ex)
            {
                HandleError(ex);
            }
            UpdateControls();
            return(ret);
        }
 public PropertiesWindow(Window owner, string title, KeyDirectoryCache keyDirCache, PasswordRepository repository, string filename)
 {
     Owner = owner;
     Title = title;
     WindowStartupLocation = WindowStartupLocation.CenterOwner;
     Topmost          = Properties.Settings.Default.Topmost;
     this.keyDirCache = keyDirCache;
     this.repository  = repository;
     InitializeComponent();
     textBoxName.Text         = repository.Name;
     textBoxDescription.Text  = repository.Description;
     textBoxPasswordFile.Text = filename;
     textBoxKeyDirectory.Text = keyDirCache.Get(repository.Id);
     textBoxKey.Text          = repository.Id;
     textBoxName.Focus();
 }
        public LoginWindow(Window owner, string title, KeyDirectoryCache keyDirCache, string repositoryFile)
        {
            Owner = owner;
            Title = title;
            WindowStartupLocation = WindowStartupLocation.CenterOwner;
            Topmost             = Properties.Settings.Default.Topmost;
            this.keyDirCache    = keyDirCache;
            this.repositoryFile = repositoryFile;
            InitializeComponent();
            labelDescription.Content = string.Format(
                Properties.Resources.LABEL_ENTER_MASTER_PASSWORD_FOR_0,
                new FileInfo(repositoryFile).Name);
            var id = PasswordRepository.GetIdFromFile(repositoryFile);

            textBoxKey.Text          = id;
            textBoxKeyDirectory.Text = keyDirCache.Get(id);
            passwordBox.Focus();
            UpdateControls();
        }