credential list now persists between opening/closing the manager

This commit is contained in:
David Sparer
2017-01-19 15:09:17 -07:00
parent 3f779b7ceb
commit 9c23f3d1d9
3 changed files with 38 additions and 6 deletions

View File

@@ -99,6 +99,7 @@
this.buttonRemove.TabIndex = 2;
this.buttonRemove.Text = "Remove";
this.buttonRemove.UseVisualStyleBackColor = true;
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
//
// CredentialManagerForm
//

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Windows.Forms;
using BrightIdeasSoftware;
@@ -8,7 +10,7 @@ using mRemoteNG.Credential;
namespace mRemoteNG.UI.Forms
{
public partial class CredentialManagerForm : Form
public partial class CredentialManagerForm : Form, INotifyCollectionChanged
{
public CredentialManagerForm(IEnumerable<ICredentialRecord> credentialRecords)
{
@@ -19,6 +21,7 @@ namespace mRemoteNG.UI.Forms
objectListView1.CellClick += HandleCellDoubleClick;
}
#region Form stuff
private void ApplyLanguage()
{
Text = "Credential Manager";
@@ -31,6 +34,7 @@ namespace mRemoteNG.UI.Forms
{
}
#endregion
private void HandleCellDoubleClick(object sender, CellClickEventArgs cellClickEventArgs)
{
@@ -45,8 +49,22 @@ namespace mRemoteNG.UI.Forms
{
var newCredential = new CredentialRecord();
objectListView1.AddObject(newCredential);
var credentialEditorForm = new CredentialEditorForm(newCredential);
credentialEditorForm.Show(this);
RaiseCollectionChangedEvent(NotifyCollectionChangedAction.Add, newCredential);
}
private void buttonRemove_Click(object sender, EventArgs e)
{
var selectedCredential = objectListView1.SelectedObject as ICredentialRecord;
if (selectedCredential == null) return;
objectListView1.RemoveObject(selectedCredential);
RaiseCollectionChangedEvent(NotifyCollectionChangedAction.Remove, selectedCredential);
}
public event NotifyCollectionChangedEventHandler CollectionChanged;
private void RaiseCollectionChangedEvent(NotifyCollectionChangedAction action, ICredentialRecord changedItem)
{
CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(action, new[] {changedItem}));
}
}
}

View File

@@ -8,6 +8,7 @@ using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using mRemoteNG.App;
using mRemoteNG.App.Info;
@@ -46,6 +47,7 @@ namespace mRemoteNG.UI.Forms
private SystemMenu _systemMenu;
private ConnectionTreeWindow ConnectionTreeWindow { get; set; }
private readonly IConnectionInitiator _connectionInitiator = new ConnectionInitiator();
private List<ICredentialRecord> _credentialRecords = new List<ICredentialRecord>();
@@ -1246,10 +1248,21 @@ namespace mRemoteNG.UI.Forms
private void credentialManagerToolStripMenuItem_Click(object sender, EventArgs e)
{
var cred1 = new CredentialRecord {Username = "davids", Domain = "mydomain"};
var cred2 = new CredentialRecord {Username = "admin", Domain = "db"};
var credentialManager = new CredentialManagerForm(new[] {cred1, cred2});
var credentialManager = new CredentialManagerForm(_credentialRecords);
credentialManager.CollectionChanged += CredentialManagerOnCollectionChanged;
credentialManager.Show();
}
private void CredentialManagerOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
// ReSharper disable once ConvertIfStatementToSwitchStatement
if (args.Action == NotifyCollectionChangedAction.Add)
_credentialRecords.AddRange(args.NewItems.OfType<ICredentialRecord>());
else if (args.Action == NotifyCollectionChangedAction.Remove)
{
foreach (var record in args.OldItems.OfType<ICredentialRecord>())
_credentialRecords.Remove(record);
}
}
}
}