private void PwEntryForm_EntrySaving(object aSender,
CancellableOperationEventArgs aEventArgs)
{
/* Get reference to new settings */
var entryForm = aSender as PwEntryForm;
if (entryForm != null && (entryForm.DialogResult == DialogResult.OK ||
saveBeforeCloseQuestionMessageShown)) {
var foundControls = entryForm.Controls.Find("EntryPanel", true);
if (foundControls.Length != 1) {
return;
}
var entryPanel = foundControls[0] as EntryPanel;
if (entryPanel == null) {
return;
}
var settings = entryPanel.CurrentSettings;
if (settings == null) {
return;
}
/* validate KeeAgent Entry Settings */
if (settings.AllowUseOfSshKey) {
string errorMessage = null;
switch (settings.Location.SelectedType) {
case EntrySettings.LocationType.Attachment:
if (string.IsNullOrWhiteSpace(settings.Location.AttachmentName)) {
errorMessage = "Must specify attachment";
} else if (entryForm.EntryBinaries
.Get(settings.Location.AttachmentName) == null) {
errorMessage = "Attachment does not exist";
}
break;
case EntrySettings.LocationType.File:
if (string.IsNullOrWhiteSpace(settings.Location.FileName)) {
errorMessage = "Must specify file name";
} else if (!File.Exists(settings.Location.FileName.ExpandEnvironmentVariables())) {
errorMessage = "File does not exist";
}
break;
default:
errorMessage = "Must select attachment or file";
break;
}
/* if there was a problem with a KeeAgent settings, activate the
* KeeAgent tab, show error message and cancel the save */
if (errorMessage != null) {
// Activate KeeAgent tab
var keeAgentTab = entryPanel.Parent as TabPage;
if (keeAgentTab != null) {
foundControls = entryForm.Controls.Find("m_tabMain", true);
if (foundControls.Length == 1) {
var tabControl = foundControls[0] as TabControl;
if (tabControl != null) {
tabControl.SelectTab(keeAgentTab);
}
}
}
MessageService.ShowWarning(errorMessage);
aEventArgs.Cancel = true;
}
}
}
saveBeforeCloseQuestionMessageShown = false;
}