diff --git a/mRemoteV1/Credential/ICredentialRepository.cs b/mRemoteV1/Credential/ICredentialRepository.cs index a02d4e332..00e97f7a4 100644 --- a/mRemoteV1/Credential/ICredentialRepository.cs +++ b/mRemoteV1/Credential/ICredentialRepository.cs @@ -12,6 +12,7 @@ namespace mRemoteNG.Credential IList CredentialRecords { get; } void LoadCredentials(); void SaveCredentials(); + void UnloadCredentials(); event EventHandler RepositoryConfigUpdated; event EventHandler> CredentialsUpdated; } diff --git a/mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs b/mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs index edb97a550..b19fc1ce2 100644 --- a/mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs +++ b/mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs @@ -71,6 +71,12 @@ namespace mRemoteNG.Credential.Repositories return new ICredentialRecord[0]; } + public void UnloadCredentials() + { + Config.Loaded = false; + CredentialRecords.Clear(); + } + public void SaveCredentials() { if (!Config.Loaded) return; diff --git a/mRemoteV1/UI/Controls/CredentialRepositoryListView.Designer.cs b/mRemoteV1/UI/Controls/CredentialRepositoryListView.Designer.cs index 4576efb4a..674c04eb0 100644 --- a/mRemoteV1/UI/Controls/CredentialRepositoryListView.Designer.cs +++ b/mRemoteV1/UI/Controls/CredentialRepositoryListView.Designer.cs @@ -41,16 +41,16 @@ // this.objectListView1.AllColumns.Add(this.olvColumnTitle); this.objectListView1.AllColumns.Add(this.olvColumnProvider); - this.objectListView1.AllColumns.Add(this.olvColumnSource); - this.objectListView1.AllColumns.Add(this.olvColumnId); this.objectListView1.AllColumns.Add(this.olvColumnIsLoaded); + this.objectListView1.AllColumns.Add(this.olvColumnId); + this.objectListView1.AllColumns.Add(this.olvColumnSource); this.objectListView1.CellEditUseWholeCell = false; this.objectListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.olvColumnTitle, this.olvColumnProvider, - this.olvColumnSource, + this.olvColumnIsLoaded, this.olvColumnId, - this.olvColumnIsLoaded}); + this.olvColumnSource}); this.objectListView1.CopySelectionOnControlC = false; this.objectListView1.CopySelectionOnControlCUsesDragSource = false; this.objectListView1.Cursor = System.Windows.Forms.Cursors.Default; @@ -84,6 +84,7 @@ // olvColumnSource // this.olvColumnSource.AspectName = ""; + this.olvColumnSource.DisplayIndex = 2; this.olvColumnSource.Groupable = false; this.olvColumnSource.Text = "Source"; // @@ -93,6 +94,7 @@ // // olvColumnIsLoaded // + this.olvColumnIsLoaded.DisplayIndex = 4; this.olvColumnIsLoaded.IsEditable = false; this.olvColumnIsLoaded.Text = "Loaded"; // diff --git a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.Designer.cs b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.Designer.cs index 2845440dd..91c86bc19 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.Designer.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.Designer.cs @@ -33,6 +33,7 @@ this.buttonRemove = new System.Windows.Forms.Button(); this.buttonEdit = new System.Windows.Forms.Button(); this.credentialRepositoryListView = new mRemoteNG.UI.Controls.CredentialRepositoryListView(); + this.buttonToggleLoad = new System.Windows.Forms.Button(); this.SuspendLayout(); // // buttonAdd @@ -40,7 +41,7 @@ this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonAdd.Image = global::mRemoteNG.Resources.key_add; this.buttonAdd.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.buttonAdd.Location = new System.Drawing.Point(105, 269); + this.buttonAdd.Location = new System.Drawing.Point(105, 237); this.buttonAdd.Name = "buttonAdd"; this.buttonAdd.Size = new System.Drawing.Size(99, 32); this.buttonAdd.TabIndex = 5; @@ -54,7 +55,7 @@ this.buttonRemove.Enabled = false; this.buttonRemove.Image = global::mRemoteNG.Resources.key_delete; this.buttonRemove.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.buttonRemove.Location = new System.Drawing.Point(315, 269); + this.buttonRemove.Location = new System.Drawing.Point(315, 237); this.buttonRemove.Name = "buttonRemove"; this.buttonRemove.Size = new System.Drawing.Size(99, 32); this.buttonRemove.TabIndex = 6; @@ -67,7 +68,7 @@ this.buttonEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonEdit.Enabled = false; this.buttonEdit.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.buttonEdit.Location = new System.Drawing.Point(210, 269); + this.buttonEdit.Location = new System.Drawing.Point(210, 237); this.buttonEdit.Name = "buttonEdit"; this.buttonEdit.Size = new System.Drawing.Size(99, 32); this.buttonEdit.TabIndex = 8; @@ -84,19 +85,34 @@ this.credentialRepositoryListView.DoubleClickHandler = null; this.credentialRepositoryListView.Location = new System.Drawing.Point(0, 0); this.credentialRepositoryListView.Name = "credentialRepositoryListView"; - this.credentialRepositoryListView.Size = new System.Drawing.Size(417, 263); + this.credentialRepositoryListView.RepositoryFilter = null; + this.credentialRepositoryListView.Size = new System.Drawing.Size(417, 231); this.credentialRepositoryListView.TabIndex = 9; // + // buttonToggleLoad + // + this.buttonToggleLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonToggleLoad.Enabled = false; + this.buttonToggleLoad.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.buttonToggleLoad.Location = new System.Drawing.Point(3, 237); + this.buttonToggleLoad.Name = "buttonToggleLoad"; + this.buttonToggleLoad.Size = new System.Drawing.Size(99, 32); + this.buttonToggleLoad.TabIndex = 10; + this.buttonToggleLoad.Text = "Load"; + this.buttonToggleLoad.UseVisualStyleBackColor = true; + this.buttonToggleLoad.Click += new System.EventHandler(this.buttonToggleLoad_Click); + // // CredentialRepositoriesPage // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonToggleLoad); this.Controls.Add(this.credentialRepositoryListView); this.Controls.Add(this.buttonEdit); this.Controls.Add(this.buttonAdd); this.Controls.Add(this.buttonRemove); this.Name = "CredentialRepositoriesPage"; - this.Size = new System.Drawing.Size(417, 304); + this.Size = new System.Drawing.Size(417, 272); this.ResumeLayout(false); } @@ -107,5 +123,6 @@ private System.Windows.Forms.Button buttonRemove; private System.Windows.Forms.Button buttonEdit; private Controls.CredentialRepositoryListView credentialRepositoryListView; + private System.Windows.Forms.Button buttonToggleLoad; } } diff --git a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.cs b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.cs index 38df6663f..396537d22 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositoriesPage.cs @@ -34,6 +34,8 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages var selectedRepository = credentialRepositoryListView.SelectedRepository; buttonRemove.Enabled = selectedRepository != null; buttonEdit.Enabled = selectedRepository != null; + buttonToggleLoad.Enabled = selectedRepository != null; + UpdateLoadToggleButton(selectedRepository); } private void buttonAdd_Click(object sender, EventArgs e) @@ -81,5 +83,20 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages if (_providerCatalog.Contains(selectedRepository.Config.Id)) _providerCatalog.RemoveProvider(selectedRepository); } + + private void UpdateLoadToggleButton(ICredentialRepository selectedRepository) + { + if (selectedRepository == null) return; + buttonToggleLoad.Text = selectedRepository.Config.Loaded ? "Unload" : "Load"; + } + + private void buttonToggleLoad_Click(object sender, EventArgs e) + { + var selectedRepository = credentialRepositoryListView.SelectedRepository; + if (selectedRepository.Config.Loaded) + selectedRepository.UnloadCredentials(); + else + selectedRepository.LoadCredentials(); + } } } \ No newline at end of file