mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
credential list now persists between opening/closing the manager
This commit is contained in:
@@ -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
|
||||
//
|
||||
|
||||
@@ -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}));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user