2
KeePass Password Safe - The Open-Source Password Manager
3
Copyright (C) 2003-2014 Dominik Reichl <dominik.reichl@t-online.de>
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
using System.Collections.Generic;
22
using System.ComponentModel;
25
using System.Windows.Forms;
26
using System.Diagnostics;
28
using KeePass.App.Configuration;
29
using KeePass.Resources;
32
namespace KeePass.Forms
34
public partial class UrlOverridesForm : Form
36
private AceUrlSchemeOverrides m_aceOvr = null;
37
private AceUrlSchemeOverrides m_aceTmp = null;
39
private bool m_bEnfSch = false;
40
private bool m_bEnfAll = false;
42
private string m_strUrlOverrideAll = string.Empty;
43
public string UrlOverrideAll
45
get { return m_strUrlOverrideAll; }
48
public void InitEx(AceUrlSchemeOverrides aceOvr, string strOverrideAll)
52
Debug.Assert(strOverrideAll != null);
53
m_strUrlOverrideAll = (strOverrideAll ?? string.Empty);
56
public UrlOverridesForm()
58
InitializeComponent();
59
Program.Translation.ApplyTo(this);
62
private void OnFormLoad(object sender, EventArgs e)
64
if(m_aceOvr == null) throw new InvalidOperationException();
65
m_aceTmp = m_aceOvr.CloneDeep();
67
GlobalWindowManager.AddWindow(this);
69
this.Icon = Properties.Resources.KeePass;
70
this.Text = KPRes.UrlOverrides;
72
UIUtil.SetExplorerTheme(m_lvOverrides, false);
74
int nWidth = (m_lvOverrides.ClientSize.Width - UIUtil.GetVScrollBarWidth()) / 4;
75
m_lvOverrides.Columns.Add(KPRes.Scheme, nWidth);
76
m_lvOverrides.Columns.Add(KPRes.UrlOverride, nWidth * 3);
78
m_bEnfSch = AppConfigEx.IsOptionEnforced(Program.Config.Integration, "UrlSchemeOverrides");
79
m_bEnfAll = AppConfigEx.IsOptionEnforced(Program.Config.Integration, "UrlOverride");
81
UpdateOverridesList();
83
m_cbOverrideAll.Checked = (m_strUrlOverrideAll.Length > 0);
84
m_tbOverrideAll.Text = m_strUrlOverrideAll;
88
private void OnFormClosed(object sender, FormClosedEventArgs e)
90
GlobalWindowManager.RemoveWindow(this);
93
private void UpdateOverridesList()
95
m_lvOverrides.BeginUpdate();
96
m_lvOverrides.Items.Clear();
97
m_lvOverrides.Groups.Clear();
99
for(int i = 0; i < 2; ++i)
101
List<AceUrlSchemeOverride> l = ((i == 0) ?
102
m_aceTmp.BuiltInOverrides : m_aceTmp.CustomOverrides);
104
ListViewGroup lvg = new ListViewGroup((i == 0) ?
105
KPRes.OverridesBuiltIn : KPRes.OverridesCustom);
106
m_lvOverrides.Groups.Add(lvg);
108
foreach(AceUrlSchemeOverride ovr in l)
110
ListViewItem lvi = new ListViewItem(ovr.Scheme);
111
lvi.SubItems.Add(ovr.UrlOverride);
112
lvi.Tag = ovr; // Set before setting the Checked property
114
lvi.Checked = ovr.Enabled;
116
m_lvOverrides.Items.Add(lvi);
121
m_lvOverrides.EndUpdate();
125
private void OnOverridesItemChecked(object sender, ItemCheckedEventArgs e)
127
AceUrlSchemeOverride ovr = (e.Item.Tag as AceUrlSchemeOverride);
128
if(ovr == null) { Debug.Assert(false); return; }
130
ovr.Enabled = e.Item.Checked;
133
private void EnableControlsEx()
135
bool bAll = m_cbOverrideAll.Checked;
136
m_cbOverrideAll.Enabled = !m_bEnfAll;
137
m_tbOverrideAll.Enabled = (!m_bEnfAll && bAll);
139
ListView.SelectedListViewItemCollection lvsc = m_lvOverrides.SelectedItems;
140
bool bOne = (lvsc.Count == 1);
141
bool bAtLeastOne = (lvsc.Count >= 1);
143
bool bBuiltIn = false;
144
foreach(ListViewItem lvi in lvsc)
146
AceUrlSchemeOverride ovr = (lvi.Tag as AceUrlSchemeOverride);
147
if(ovr == null) { Debug.Assert(false); continue; }
149
if(ovr.IsBuiltIn) { bBuiltIn = true; break; }
152
bool bSch = !m_bEnfSch;
153
m_lvOverrides.Enabled = bSch;
154
m_btnAdd.Enabled = bSch;
155
m_btnEdit.Enabled = (bSch && bOne && !bBuiltIn);
156
m_btnDelete.Enabled = (bSch && bAtLeastOne && !bBuiltIn);
159
private void OnOverridesSelectedIndexChanged(object sender, EventArgs e)
164
private void OnBtnAdd(object sender, EventArgs e)
166
AceUrlSchemeOverride ovr = new AceUrlSchemeOverride(true, string.Empty,
169
UrlOverrideForm dlg = new UrlOverrideForm();
171
if(UIUtil.ShowDialogAndDestroy(dlg) == DialogResult.OK)
173
m_aceTmp.CustomOverrides.Add(ovr);
174
UpdateOverridesList();
175
m_lvOverrides.EnsureVisible(m_lvOverrides.Items.Count - 1);
179
private void OnBtnEdit(object sender, EventArgs e)
181
ListView.SelectedListViewItemCollection lvsic = m_lvOverrides.SelectedItems;
182
if((lvsic == null) || (lvsic.Count != 1)) return;
184
AceUrlSchemeOverride ovr = (lvsic[0].Tag as AceUrlSchemeOverride);
185
if(ovr == null) { Debug.Assert(false); return; }
186
if(ovr.IsBuiltIn) { Debug.Assert(false); return; }
188
UrlOverrideForm dlg = new UrlOverrideForm();
190
if(UIUtil.ShowDialogAndDestroy(dlg) == DialogResult.OK)
192
UpdateOverridesList();
193
m_lvOverrides.EnsureVisible(m_lvOverrides.Items.Count - 1);
197
private void OnBtnDelete(object sender, EventArgs e)
199
ListView.SelectedListViewItemCollection lvsic = m_lvOverrides.SelectedItems;
200
if((lvsic == null) || (lvsic.Count == 0)) return;
202
foreach(ListViewItem lvi in lvsic)
204
AceUrlSchemeOverride ovr = (lvi.Tag as AceUrlSchemeOverride);
205
if(ovr == null) { Debug.Assert(false); continue; }
206
if(ovr.IsBuiltIn) { Debug.Assert(false); continue; }
208
try { m_aceTmp.CustomOverrides.Remove(ovr); }
209
catch(Exception) { Debug.Assert(false); }
212
UpdateOverridesList();
213
m_lvOverrides.EnsureVisible(m_lvOverrides.Items.Count - 1);
216
private void OnBtnOK(object sender, EventArgs e)
218
m_aceTmp.CopyTo(m_aceOvr);
220
if(m_cbOverrideAll.Checked)
221
m_strUrlOverrideAll = m_tbOverrideAll.Text;
222
else m_strUrlOverrideAll = string.Empty;
225
private void OnOverrideAllCheckedChanged(object sender, EventArgs e)