Clean up various parts of the UI and rearrange settings

- Unify widget layouts and margins
- Fix tab order on a bunch of widgets
- Fix broken entry/group edit form layout and replace with grid layout
- Rearrange some settings for better logical grouping
- Fix some settings checkboxes not being enabled/disabled on load
- Fix "General" settings tab scrolling
- Rename "Root" group to "Passwords"
- Update demo.kdbx accordingly and redownload favicons
- Change entry path display to use slash separators
- Reduce Medium and Large icon sizes slightly
This commit is contained in:
Janek Bevendorff 2020-05-26 17:58:52 +02:00
parent 5c69875b59
commit 9d2e066aca
35 changed files with 1869 additions and 1351 deletions

Binary file not shown.

View File

@ -49,7 +49,7 @@ Database::Database()
{
setRootGroup(new Group());
rootGroup()->setUuid(QUuid::createUuid());
rootGroup()->setName(tr("Root", "Root group name"));
rootGroup()->setName(tr("Passwords", "Root group name"));
m_modifiedTimer.setSingleShot(true);
s_uuidMap.insert(m_uuid, this);

View File

@ -49,8 +49,8 @@ static const auto FALSE_STR = QStringLiteral("false");
enum IconSize
{
Default = 24,
Medium = 32,
Large = 40
Medium = 30,
Large = 36
};
template <typename T> struct AddConst

View File

@ -231,7 +231,7 @@
<x>0</x>
<y>0</y>
<width>466</width>
<height>246</height>
<height>242</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
@ -336,6 +336,12 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>tabWidget</tabstop>
<tabstop>scrollArea</tabstop>
<tabstop>debugInfo</tabstop>
<tabstop>copyToClipboard</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -190,6 +190,7 @@ void ApplicationSettingsWidget::loadSettings()
m_generalUi->minimizeAfterUnlockCheckBox->setChecked(config()->get(Config::MinimizeAfterUnlock).toBool());
m_generalUi->minimizeOnOpenUrlCheckBox->setChecked(config()->get(Config::MinimizeOnOpenUrl).toBool());
m_generalUi->hideWindowOnCopyCheckBox->setChecked(config()->get(Config::HideWindowOnCopy).toBool());
hideWindowOnCopyCheckBoxToggled(m_generalUi->hideWindowOnCopyCheckBox->isChecked());
m_generalUi->minimizeOnCopyRadioButton->setChecked(config()->get(Config::MinimizeOnCopy).toBool());
m_generalUi->dropToBackgroundOnCopyRadioButton->setChecked(config()->get(Config::DropToBackgroundOnCopy).toBool());
m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(
@ -199,10 +200,6 @@ void ApplicationSettingsWidget::loadSettings()
m_generalUi->trackNonDataChangesCheckBox->setChecked(config()->get(Config::TrackNonDataChanges).toBool());
m_generalUi->faviconTimeoutSpinBox->setValue(config()->get(Config::FaviconDownloadTimeout).toInt());
if (!m_generalUi->hideWindowOnCopyCheckBox->isChecked()) {
hideWindowOnCopyCheckBoxToggled(false);
}
m_generalUi->languageComboBox->clear();
QList<QPair<QString, QString>> languages = Translator::availableLanguages();
for (const auto& language : languages) {
@ -215,6 +212,7 @@ void ApplicationSettingsWidget::loadSettings()
m_generalUi->previewHideCheckBox->setChecked(config()->get(Config::GUI_HidePreviewPanel).toBool());
m_generalUi->toolbarHideCheckBox->setChecked(config()->get(Config::GUI_HideToolbar).toBool());
toolbarSettingsToggled(m_generalUi->toolbarHideCheckBox->isChecked());
m_generalUi->toolbarMovableCheckBox->setChecked(config()->get(Config::GUI_MovableToolbar).toBool());
m_generalUi->monospaceNotesCheckBox->setChecked(config()->get(Config::GUI_MonospaceNotes).toBool());
@ -239,13 +237,16 @@ void ApplicationSettingsWidget::loadSettings()
}
m_generalUi->systrayShowCheckBox->setChecked(config()->get(Config::GUI_ShowTrayIcon).toBool());
systrayToggled(m_generalUi->systrayShowCheckBox->isChecked());
m_generalUi->systrayDarkIconCheckBox->setChecked(config()->get(Config::GUI_DarkTrayIcon).toBool());
m_generalUi->systrayMinimizeToTrayCheckBox->setChecked(config()->get(Config::GUI_MinimizeToTray).toBool());
m_generalUi->minimizeOnCloseCheckBox->setChecked(config()->get(Config::GUI_MinimizeOnClose).toBool());
m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get(Config::GUI_MinimizeOnStartup).toBool());
m_generalUi->checkForUpdatesOnStartupCheckBox->setChecked(config()->get(Config::GUI_CheckForUpdates).toBool());
checkUpdatesToggled(m_generalUi->checkForUpdatesOnStartupCheckBox->isChecked());
m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked(
config()->get(Config::GUI_CheckForUpdatesIncludeBetas).toBool());
m_generalUi->autoTypeAskCheckBox->setChecked(config()->get(Config::Security_AutoTypeAsk).toBool());
if (autoType()->isAvailable()) {

File diff suppressed because it is too large Load Diff

View File

@ -297,6 +297,11 @@
<tabstops>
<tabstop>clearClipboardCheckBox</tabstop>
<tabstop>clearClipboardSpinBox</tabstop>
<tabstop>lockDatabaseIdleCheckBox</tabstop>
<tabstop>lockDatabaseIdleSpinBox</tabstop>
<tabstop>clearSearchCheckBox</tabstop>
<tabstop>clearSearchSpinBox</tabstop>
<tabstop>touchIDResetCheckBox</tabstop>
<tabstop>touchIDResetSpinBox</tabstop>
<tabstop>lockDatabaseOnScreenLockCheckBox</tabstop>
<tabstop>touchIDResetOnScreenLockCheckBox</tabstop>

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>182</width>
<width>256</width>
<height>418</height>
</rect>
</property>
@ -113,8 +113,8 @@
</layout>
</widget>
<tabstops>
<tabstop>categoryList</tabstop>
<tabstop>scrollUp</tabstop>
<tabstop>categoryList</tabstop>
<tabstop>scrollDown</tabstop>
</tabstops>
<resources/>

View File

@ -246,6 +246,9 @@
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="toolTip">
<string>&lt;p&gt;In addition to your master password, you can use a secret file to enhance the security of your database. Such a file can be generated in your database's security settings.&lt;/p&gt;&lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; your *.kdbx database file!&lt;br&gt;If you do not have a key file, leave the field empty.&lt;/p&gt;&lt;p&gt;Click for more information...&lt;/p&gt;</string>
</property>
@ -347,6 +350,9 @@
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="toolTip">
<string>&lt;p&gt;You can use a hardware security key such as a &lt;strong&gt;YubiKey&lt;/strong&gt; or &lt;strong&gt;OnlyKey&lt;/strong&gt; with slots configured for HMAC-SHA1.&lt;/p&gt;
&lt;p&gt;Click for more information...&lt;/p&gt;</string>
@ -585,11 +591,6 @@
</action>
</widget>
<customwidgets>
<customwidget>
<class>PasswordEdit</class>
<extends>QLineEdit</extends>
<header>gui/PasswordEdit.h</header>
</customwidget>
<customwidget>
<class>MessageWidget</class>
<extends>QWidget</extends>
@ -601,12 +602,18 @@
<extends>QLabel</extends>
<header>gui/widgets/ElidedLabel.h</header>
</customwidget>
<customwidget>
<class>PasswordEdit</class>
<extends>QLineEdit</extends>
<header>gui/PasswordEdit.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>editPassword</tabstop>
<tabstop>comboKeyFile</tabstop>
<tabstop>buttonBrowseFile</tabstop>
<tabstop>hardwareKeyLabelHelp</tabstop>
<tabstop>challengeResponseCombo</tabstop>
<tabstop>buttonRedetectYubikey</tabstop>
<tabstop>checkTouchID</tabstop>
</tabstops>
<resources/>

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>612</width>
<height>255</height>
<width>527</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@ -15,11 +15,27 @@
<widget class="MessageWidget" name="messageWidget" native="true"/>
</item>
<item>
<widget class="QLabel" name="headerLabel">
<property name="text">
<string/>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>2</number>
</property>
</widget>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
<widget class="QLabel" name="headerLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
@ -39,6 +55,9 @@
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0">
<property name="spacing">
<number>18</number>
</property>
<item>
<widget class="CategoryListWidget" name="categoryList" native="true">
<property name="sizePolicy">

View File

@ -163,7 +163,7 @@ void EditWidgetIcons::setShowApplyIconToButton(bool state)
QMenu* EditWidgetIcons::createApplyIconToMenu()
{
auto* applyIconToMenu = new QMenu(this);
QAction* defaultAction = applyIconToMenu->addAction(tr("Apply to this only"));
QAction* defaultAction = applyIconToMenu->addAction(tr("Apply to this group only"));
defaultAction->setData(QVariant::fromValue(ApplyIconToOptions::THIS_ONLY));
applyIconToMenu->setDefaultAction(defaultAction);
applyIconToMenu->addSeparator();

View File

@ -55,6 +55,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QRadioButton" name="customIconsRadio">
<property name="text">
@ -166,6 +182,7 @@
<tabstop>customIconsView</tabstop>
<tabstop>addButton</tabstop>
<tabstop>deleteButton</tabstop>
<tabstop>faviconButton</tabstop>
<tabstop>applyIconToPushButton</tabstop>
</tabstops>
<resources/>

View File

@ -6,11 +6,11 @@
<rect>
<x>0</x>
<y>0</y>
<width>614</width>
<height>328</height>
<width>364</width>
<height>408</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0">
<property name="spacing">
<number>5</number>
</property>
@ -27,18 +27,21 @@
<number>0</number>
</property>
<item>
<layout class="QFormLayout" name="formLayout_2">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
<layout class="QGridLayout" name="gridLayout">
<property name="verticalSpacing">
<number>8</number>
</property>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QLabel" name="labelCreated">
<property name="text">
<string>Created:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="0" column="1">
<widget class="QLineEdit" name="createdEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -54,14 +57,17 @@
</property>
</widget>
</item>
<item row="2" column="0">
<item row="1" column="0">
<widget class="QLabel" name="labelModfied">
<property name="text">
<string>Modified:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="1" column="1">
<widget class="QLineEdit" name="modifiedEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -77,14 +83,17 @@
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="0">
<widget class="QLabel" name="labelAccessed">
<property name="text">
<string>Accessed:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="2" column="1">
<widget class="QLineEdit" name="accessedEdit">
<property name="accessibleName">
<string>Datetime accessed</string>
@ -94,14 +103,17 @@
</property>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QLabel" name="labelUuid">
<property name="text">
<string>Uuid:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="3" column="1">
<widget class="QLineEdit" name="uuidEdit">
<property name="accessibleName">
<string>Unique ID</string>
@ -113,6 +125,22 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">

View File

@ -401,9 +401,6 @@ void EntryPreviewWidget::setTabEnabled(QTabWidget* tabWidget, QWidget* widget, b
QString EntryPreviewWidget::hierarchy(const Group* group, const QString& title)
{
const QString separator("] > [");
QStringList hierarchy = group->hierarchy();
QString groupList = QString("[%1]").arg(hierarchy.join(separator));
return title.isEmpty() ? groupList : QString("%1 > %2").arg(groupList, title);
QString groupList = QString("%1").arg(group->hierarchy().join(" / "));
return title.isEmpty() ? groupList : QStringLiteral("%1 / %2").arg(groupList, title);
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>566</width>
<height>206</height>
<height>247</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
@ -46,49 +46,62 @@
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,1,0,0,0">
<layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>9</number>
<number>5</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="entryIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>12</number>
</property>
<property name="minimumSize">
<size>
<width>16</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="ElidedLabel" name="entryTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<item>
<widget class="QLabel" name="entryIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>16</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="ElidedLabel" name="entryTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="entryTotpLabel">
@ -757,43 +770,56 @@
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="groupHorizontalLayout" stretch="0,0,0">
<layout class="QHBoxLayout" name="groupHorizontalLayout" stretch="0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>9</number>
<number>5</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="groupIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing">
<number>12</number>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="ElidedLabel" name="groupTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<item>
<widget class="QLabel" name="groupIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="ElidedLabel" name="groupTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QToolButton" name="groupCloseButton">
@ -1137,14 +1163,14 @@
</customwidget>
</customwidgets>
<tabstops>
<tabstop>entryTotpButton</tabstop>
<tabstop>entryCloseButton</tabstop>
<tabstop>entryTabWidget</tabstop>
<tabstop>togglePasswordButton</tabstop>
<tabstop>toggleEntryNotesButton</tabstop>
<tabstop>groupCloseButton</tabstop>
<tabstop>groupTabWidget</tabstop>
<tabstop>toggleGroupNotesButton</tabstop>
<tabstop>entryTotpButton</tabstop>
<tabstop>groupCloseButton</tabstop>
</tabstops>
<resources/>
<connections/>

View File

@ -149,6 +149,11 @@ You can enable the DuckDuckGo website icon service in the security section of th
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<tabstops>
<tabstop>cancelButton</tabstop>
<tabstop>tableView</tabstop>
<tabstop>closeButton</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -497,6 +497,16 @@
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>comboBoxCodec</tabstop>
<tabstop>comboBoxTextQualifier</tabstop>
<tabstop>comboBoxFieldSeparator</tabstop>
<tabstop>comboBoxComment</tabstop>
<tabstop>checkBoxFieldNames</tabstop>
<tabstop>spinBoxSkip</tabstop>
<tabstop>checkBoxBackslash</tabstop>
<tabstop>tableViewFields</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -180,6 +180,14 @@
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>removeSharedEncryptionKeys</tabstop>
<tabstop>removeStoredPermissions</tabstop>
<tabstop>convertToCustomData</tabstop>
<tabstop>refreshDatabaseID</tabstop>
<tabstop>customDataTable</tabstop>
<tabstop>removeCustomDataButton</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -420,6 +420,17 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>activateChangeDecryptionTimeButton</tabstop>
<tabstop>decryptionTimeSlider</tabstop>
<tabstop>compatibilitySelection</tabstop>
<tabstop>algorithmComboBox</tabstop>
<tabstop>kdfComboBox</tabstop>
<tabstop>transformRoundsSpinBox</tabstop>
<tabstop>transformBenchmarkButton</tabstop>
<tabstop>memorySpinBox</tabstop>
<tabstop>parallelismSpinBox</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -786,12 +786,12 @@ void EditEntryWidget::loadEntry(Entry* entry,
m_history = history;
if (history) {
setHeadline(QString("%1 > %2").arg(parentName, tr("Entry history")));
setHeadline(QString("%1 \u2B29 %2").arg(parentName, tr("Entry history")));
} else {
if (create) {
setHeadline(QString("%1 > %2").arg(parentName, tr("Add entry")));
setHeadline(QString("%1 \u2B29 %2").arg(parentName, tr("Add entry")));
} else {
setHeadline(QString("%1 > %2 > %3").arg(parentName, entry->title(), tr("Edit entry")));
setHeadline(QString("%1 \u2B29 %2 \u2B29 %3").arg(parentName, entry->title(), tr("Edit entry")));
}
}

View File

@ -11,6 +11,18 @@
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="attributesBox">
<property name="title">

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>567</width>
<height>348</height>
<width>577</width>
<height>434</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@ -106,6 +106,22 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="windowsBox">
<property name="title">

View File

@ -6,11 +6,14 @@
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>381</height>
<width>496</width>
<height>420</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
@ -20,18 +23,47 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="8" column="1">
<widget class="QLabel" name="notesHint">
<property name="visible">
<bool>true</bool>
</property>
<property name="text">
<string>Toggle the checkbox to reveal the notes section.</string>
</property>
<property name="alignment">
<set>Qt::AlignTop</set>
</property>
</widget>
<property name="horizontalSpacing">
<number>10</number>
</property>
<property name="verticalSpacing">
<number>8</number>
</property>
<item row="6" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPlainTextEdit" name="notesEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="accessibleName">
<string>Notes field</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="notesHint">
<property name="visible">
<bool>true</bool>
</property>
<property name="text">
<string>Toggle the checkbox to reveal the notes section.</string>
</property>
<property name="alignment">
<set>Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="usernameComboBox">
@ -40,108 +72,41 @@
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item row="6" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="URLEdit" name="urlEdit">
<property name="accessibleName">
<string>Url field</string>
<widget class="QCheckBox" name="notesEnabled">
<property name="toolTip">
<string>Toggle notes visible</string>
</property>
<property name="placeholderText">
<string>https://example.com</string>
<property name="accessibleName">
<string>Toggle notes visible</string>
</property>
<property name="text">
<string>Notes:</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="fetchFaviconButton">
<property name="toolTip">
<string>Download favicon for URL</string>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="accessibleName">
<string>Download favicon for URL</string>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</widget>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="urlLabel">
<property name="text">
<string>URL:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="PasswordEdit" name="passwordEdit">
<property name="accessibleName">
<string>Password field</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="6" column="0" alignment="Qt::AlignRight">
<widget class="QCheckBox" name="expireCheck">
<property name="toolTip">
<string>Toggle expiration</string>
</property>
<property name="accessibleName">
<string>Toggle expiration</string>
</property>
<property name="text">
<string>Expires</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QPlainTextEdit" name="notesEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="accessibleName">
<string>Notes field</string>
</property>
</widget>
</item>
<item row="8" column="0" alignment="Qt::AlignLeft|Qt::AlignTop">
<widget class="QCheckBox" name="notesEnabled">
<property name="toolTip">
<string>Toggle notes visible</string>
</property>
<property name="accessibleName">
<string>Toggle notes visible</string>
</property>
<property name="text">
<string>Notes</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="titleEdit">
<property name="accessibleName">
<string>Title field</string>
</property>
</widget>
</item>
<item row="2" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="passwordLabel">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>8</number>
</property>
<item>
<widget class="QDateTimeEdit" name="expireDatePicker">
<property name="enabled">
@ -176,27 +141,111 @@
</item>
</layout>
</item>
<item row="1" column="0" alignment="Qt::AlignRight">
<item row="2" column="0">
<widget class="QLabel" name="passwordLabel">
<property name="text">
<string>Password:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="urlLabel">
<property name="text">
<string>URL:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>8</number>
</property>
<item>
<widget class="URLEdit" name="urlEdit">
<property name="accessibleName">
<string>Url field</string>
</property>
<property name="placeholderText">
<string>https://example.com</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="fetchFaviconButton">
<property name="toolTip">
<string>Download favicon for URL</string>
</property>
<property name="accessibleName">
<string>Download favicon for URL</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="titleLabel">
<property name="text">
<string>Title:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="titleEdit">
<property name="accessibleName">
<string>Title field</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="usernameLabel">
<property name="text">
<string>Username:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="PasswordEdit" name="passwordEdit">
<property name="accessibleName">
<string>Password field</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="expireCheck">
<property name="toolTip">
<string>Toggle expiration</string>
</property>
<property name="accessibleName">
<string>Toggle expiration</string>
</property>
<property name="text">
<string>Expires:</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
<widget class="QLabel" name="titleLabel">
<property name="geometry">
<rect>
<x>35</x>
<y>0</y>
<width>23</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>Title:</string>
</property>
</widget>
</widget>
<customwidgets>
<customwidget>

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>498</width>
<height>518</height>
<width>452</width>
<height>618</height>
</rect>
</property>
<property name="windowTitle">
@ -26,53 +26,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="3" column="1" colspan="4">
<layout class="QHBoxLayout" name="removeKeyLayout">
<item>
<widget class="QCheckBox" name="lifetimeCheckBox">
<property name="text">
<string>Remove key from agent after</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="lifetimeSpinBox">
<property name="accessibleName">
<string>Remove key from agent after specified seconds</string>
</property>
<property name="suffix">
<string> seconds</string>
</property>
<property name="maximum">
<number>999999999</number>
</property>
</widget>
</item>
<item>
<spacer name="removeKeySpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="11" column="1">
<widget class="QLabel" name="fingerprintLabel">
<property name="text">
<string>Fingerprint</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1" colspan="4">
<widget class="QCheckBox" name="removeKeyFromAgentCheckBox">
<property name="text">
@ -80,13 +33,13 @@
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QLabel" name="publicKeyLabel">
<item row="14" column="1">
<widget class="QLabel" name="commentLabel">
<property name="text">
<string>Public key</string>
<string>Comment</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
@ -97,63 +50,69 @@
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QLabel" name="commentLabel">
<property name="text">
<string>Comment</string>
<item row="15" column="3" colspan="2">
<widget class="QPlainTextEdit" name="publicKeyEdit">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="12" column="4">
<item row="14" column="4">
<widget class="QPushButton" name="decryptButton">
<property name="text">
<string>Decrypt</string>
</property>
</widget>
</item>
<item row="11" column="3" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="fingerprintTextLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>n/a</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
<item row="4" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="14" column="3" colspan="2">
<item row="13" column="1">
<widget class="QLabel" name="fingerprintLabel">
<property name="text">
<string>Fingerprint</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="16" column="3" colspan="2">
<widget class="QPushButton" name="copyToClipboardButton">
<property name="text">
<string>Copy to clipboard</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="4">
<item row="15" column="1">
<widget class="QLabel" name="publicKeyLabel">
<property name="text">
<string>Public key</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
</property>
</widget>
</item>
<item row="5" column="1" colspan="4">
<widget class="QGroupBox" name="privateKeyGroupBox">
<property name="title">
<string>Private key</string>
@ -240,19 +199,7 @@
</property>
</widget>
</item>
<item row="13" column="3" colspan="2">
<widget class="QPlainTextEdit" name="publicKeyEdit">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="12" column="3">
<item row="14" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="commentTextLabel">
@ -284,6 +231,91 @@
</item>
</layout>
</item>
<item row="3" column="1" colspan="4">
<layout class="QHBoxLayout" name="removeKeyLayout">
<item>
<widget class="QCheckBox" name="lifetimeCheckBox">
<property name="text">
<string>Remove key from agent after</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="lifetimeSpinBox">
<property name="accessibleName">
<string>Remove key from agent after specified seconds</string>
</property>
<property name="suffix">
<string> seconds</string>
</property>
<property name="maximum">
<number>999999999</number>
</property>
</widget>
</item>
<item>
<spacer name="removeKeySpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="13" column="3" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="fingerprintTextLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>n/a</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="12" column="3">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>

View File

@ -6,13 +6,13 @@
<rect>
<x>0</x>
<y>0</y>
<width>579</width>
<height>407</height>
<width>410</width>
<height>430</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0,0,0,0,0,1" rowminimumheight="0,0,0,0,0,0,0,0,0,1">
<property name="leftMargin">
<number>10</number>
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
@ -23,10 +23,19 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="labelName">
<property name="horizontalSpacing">
<number>10</number>
</property>
<property name="verticalSpacing">
<number>8</number>
</property>
<item row="3" column="0">
<widget class="QCheckBox" name="expireCheck">
<property name="accessibleName">
<string>Toggle expiration</string>
</property>
<property name="text">
<string>Name</string>
<string>Expires:</string>
</property>
</widget>
</item>
@ -37,13 +46,113 @@
</property>
</widget>
</item>
<item row="1" column="0" alignment="Qt::AlignRight|Qt::AlignTop">
<widget class="QLabel" name="labelNotes">
<property name="text">
<string>Notes</string>
<item row="3" column="1">
<widget class="QDateTimeEdit" name="expireDatePicker">
<property name="enabled">
<bool>false</bool>
</property>
<property name="accessibleName">
<string>Expiration field</string>
</property>
<property name="calendarPopup">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QRadioButton" name="autoTypeSequenceInherit">
<property name="text">
<string>Use default Auto-Type sequence of parent group</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="autotypeLabel">
<property name="text">
<string>Auto-Type:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="searchLabel">
<property name="text">
<string>Search:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="autotypeComboBox">
<property name="accessibleName">
<string>Auto-Type toggle for this and sub groups</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="labelNotes">
<property name="text">
<string>Notes:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="8" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="autoTypeSequenceCustomEdit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="accessibleName">
<string>Default auto-type sequence field</string>
</property>
<property name="accessibleDescription">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QPlainTextEdit" name="editNotes">
<property name="sizePolicy">
@ -63,106 +172,32 @@
</property>
</widget>
</item>
<item row="2" column="0" alignment="Qt::AlignRight">
<widget class="QCheckBox" name="expireCheck">
<property name="accessibleName">
<string>Toggle expiration</string>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelName">
<property name="text">
<string>Expires</string>
<string>Name:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="autotypeComboBox">
<property name="accessibleName">
<string>Auto-Type toggle for this and sub groups</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDateTimeEdit" name="expireDatePicker">
<property name="enabled">
<bool>false</bool>
</property>
<property name="accessibleName">
<string>Expiration field</string>
</property>
<property name="calendarPopup">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="searchLabel">
<property name="text">
<string>Search</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="searchComboBox">
<property name="accessibleName">
<string>Search toggle for this and sub groups</string>
</property>
</widget>
</item>
<item row="4" column="0" alignment="Qt::AlignRight">
<widget class="QLabel" name="autotypeLabel">
<property name="text">
<string>Auto-Type</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QRadioButton" name="autoTypeSequenceInherit">
<property name="text">
<string>Use default Auto-Type sequence of parent group</string>
</property>
</widget>
</item>
<item row="6" column="1">
<item row="7" column="1">
<widget class="QRadioButton" name="autoTypeSequenceCustomRadio">
<property name="text">
<string>Set default Auto-Type sequence</string>
</property>
</widget>
</item>
<item row="7" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>13</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="autoTypeSequenceCustomEdit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="accessibleName">
<string>Default auto-type sequence field</string>
</property>
<property name="accessibleDescription">
<string/>
</property>
</widget>
</item>
</layout>
<item row="4" column="1">
<widget class="QComboBox" name="searchComboBox">
<property name="accessibleName">
<string>Search toggle for this and sub groups</string>
</property>
</widget>
</item>
<item row="8" column="1">
<spacer name="verticalSpacer">
<item row="9" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@ -183,6 +218,9 @@
<tabstop>expireDatePicker</tabstop>
<tabstop>searchComboBox</tabstop>
<tabstop>autotypeComboBox</tabstop>
<tabstop>autoTypeSequenceInherit</tabstop>
<tabstop>autoTypeSequenceCustomRadio</tabstop>
<tabstop>autoTypeSequenceCustomEdit</tabstop>
</tabstops>
<resources/>
<connections/>

View File

@ -75,6 +75,10 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>healthcheckTableView</tabstop>
<tabstop>showKnownBadCheckBox</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -227,6 +227,11 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>hibpTableView</tabstop>
<tabstop>showKnownBadCheckBox</tabstop>
<tabstop>validationButton</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -65,6 +65,9 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>statisticsTableView</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>378</width>
<height>508</height>
<height>511</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0">
@ -80,11 +80,17 @@
<string>Own certificate</string>
</property>
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,1,1">
<property name="horizontalSpacing">
<number>10</number>
</property>
<item row="5" column="0">
<widget class="QLabel" name="ownCertificateFingerprintLabel">
<property name="text">
<string>Fingerprint:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
@ -102,6 +108,9 @@
<property name="text">
<string>Certificate:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
@ -109,6 +118,9 @@
<property name="text">
<string>Signer:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
@ -116,6 +128,9 @@
<property name="text">
<string>Key:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
@ -310,6 +325,23 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>enableImportCheckBox</tabstop>
<tabstop>quietSuccessCheckBox</tabstop>
<tabstop>enableExportCheckBox</tabstop>
<tabstop>generateOwnCerticateButton</tabstop>
<tabstop>importOwnCertificateButton</tabstop>
<tabstop>exportOwnCertificateButton</tabstop>
<tabstop>ownCertificateSignerEdit</tabstop>
<tabstop>ownCertificatePrivateKeyEdit</tabstop>
<tabstop>ownCertificatePublicKeyEdit</tabstop>
<tabstop>ownCertificateFingerprintEdit</tabstop>
<tabstop>trustImportedCertificateButton</tabstop>
<tabstop>askImportedCertificateButton</tabstop>
<tabstop>untrustImportedCertificateButton</tabstop>
<tabstop>removeImportedCertificateButton</tabstop>
<tabstop>importedCertificateTableView</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -6,26 +6,37 @@
<rect>
<x>0</x>
<y>0</y>
<width>344</width>
<height>143</height>
<width>361</width>
<height>180</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>10</number>
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="MessageWidget" name="messageWidget" native="true"/>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="typeLabel">
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<layout class="QGridLayout" name="gridLayout">
<property name="horizontalSpacing">
<number>10</number>
</property>
<property name="verticalSpacing">
<number>8</number>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="typeComboBox">
<property name="sizePolicy">
@ -39,15 +50,63 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="PasswordEdit" name="passwordEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="accessibleName">
<string>Password field</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="typeLabel">
<property name="text">
<string>Type:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="passwordLabel">
<property name="text">
<string>Password:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="pathLabel">
<property name="text">
<string>Path:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="pathLayout">
<property name="spacing">
<number>6</number>
</property>
<item>
<widget class="QLineEdit" name="pathEdit">
<property name="sizePolicy">
@ -79,35 +138,6 @@
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="passwordLabel">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="PasswordEdit" name="passwordEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="accessibleName">
<string>Password field</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@ -141,21 +171,21 @@
</item>
</layout>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
@ -172,6 +202,13 @@
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>typeComboBox</tabstop>
<tabstop>pathEdit</tabstop>
<tabstop>pathSelectionButton</tabstop>
<tabstop>passwordEdit</tabstop>
<tabstop>clearButton</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -36,6 +36,7 @@ AgentSettingsWidget::AgentSettingsWidget(QWidget* parent)
m_ui->sshAuthSockMessageWidget->setVisible(sshAgent()->isEnabled());
m_ui->sshAuthSockMessageWidget->setCloseButtonVisible(false);
m_ui->sshAuthSockMessageWidget->setAutoHideTimeout(-1);
connect(m_ui->enableSSHAgentCheckBox, SIGNAL(stateChanged(int)), SLOT(toggleSettingsEnabled()));
}
AgentSettingsWidget::~AgentSettingsWidget()
@ -76,6 +77,8 @@ void AgentSettingsWidget::loadSettings()
m_ui->sshAuthSockMessageWidget->showMessage(sshAgent()->errorString(), MessageWidget::Error);
}
}
toggleSettingsEnabled();
}
void AgentSettingsWidget::saveSettings()
@ -87,3 +90,8 @@ void AgentSettingsWidget::saveSettings()
#endif
sshAgent()->setEnabled(m_ui->enableSSHAgentCheckBox->isChecked());
}
void AgentSettingsWidget::toggleSettingsEnabled()
{
m_ui->agentConfigPageBody->setEnabled(m_ui->enableSSHAgentCheckBox->isChecked());
}

View File

@ -37,6 +37,7 @@ public:
public slots:
void loadSettings();
void saveSettings();
void toggleSettingsEnabled();
private:
QScopedPointer<Ui::AgentSettingsWidget> m_ui;

View File

@ -10,7 +10,7 @@
<height>300</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
@ -23,20 +23,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="enableSSHAgentCheckBox">
<property name="text">
<string>Enable SSH Agent integration</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="useOpenSSHCheckBox">
<property name="text">
<string>Use OpenSSH for Windows instead of Pageant</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="sshAuthSockWidget" native="true">
<layout class="QGridLayout" name="sshAuthSockOverrideLayout">
@ -52,38 +38,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="4" column="0">
<widget class="QLabel" name="sshAuthSockValueLabel">
<property name="text">
<string>SSH_AUTH_SOCK value</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="sshAuthSockLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>(empty)</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="sshAuthSockOverrideLabel">
<property name="text">
<string>SSH_AUTH_SOCK override</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="sshAuthSockOverrideEdit"/>
</item>
</layout>
</widget>
</item>
@ -91,17 +45,109 @@
<widget class="MessageWidget" name="sshAuthSockMessageWidget" native="true"/>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<widget class="QCheckBox" name="enableSSHAgentCheckBox">
<property name="text">
<string>Enable SSH Agent integration</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</widget>
</item>
<item>
<widget class="QFrame" name="agentConfigPageBody">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
</spacer>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="useOpenSSHCheckBox">
<property name="text">
<string>Use OpenSSH for Windows instead of Pageant</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="agentValues">
<property name="topMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<property name="horizontalSpacing">
<number>10</number>
</property>
<property name="verticalSpacing">
<number>8</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="sshAuthSockValueLabel">
<property name="text">
<string>SSH_AUTH_SOCK value</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="sshAuthSockOverrideLabel">
<property name="text">
<string>SSH_AUTH_SOCK override</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="sshAuthSockOverrideEdit"/>
</item>
<item row="0" column="1">
<widget class="QLabel" name="sshAuthSockLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>(empty)</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>

View File

@ -64,7 +64,7 @@ void TestCsvExporter::testExport()
QString expectedResult = QString()
.append(ExpectedHeaderLine)
.append("\"Root/Test Group Name\",\"Test Entry Title\",\"Test Username\",\"Test "
.append("\"Passwords/Test Group Name\",\"Test Entry Title\",\"Test Username\",\"Test "
"Password\",\"http://test.url\",\"Test Notes\"\n");
QCOMPARE(QString::fromUtf8(buffer.buffer().constData()), expectedResult);
@ -96,8 +96,9 @@ void TestCsvExporter::testNestedGroups()
QVERIFY(buffer.open(QIODevice::ReadWrite));
m_csvExporter->exportDatabase(&buffer, m_db);
QCOMPARE(QString::fromUtf8(buffer.buffer().constData()),
QString()
.append(ExpectedHeaderLine)
.append("\"Root/Test Group Name/Test Sub Group Name\",\"Test Entry Title\",\"\",\"\",\"\",\"\"\n"));
QCOMPARE(
QString::fromUtf8(buffer.buffer().constData()),
QString()
.append(ExpectedHeaderLine)
.append("\"Passwords/Test Group Name/Test Sub Group Name\",\"Test Entry Title\",\"\",\"\",\"\",\"\"\n"));
}

View File

@ -574,7 +574,7 @@ void TestGui::testSearchEditEntry()
// Check the path in header is "parent-group > entry"
QCOMPARE(m_dbWidget->findChild<EditEntryWidget*>("editEntryWidget")->findChild<QLabel*>("headerLabel")->text(),
QString("Good > Doggy > Edit entry"));
QStringLiteral("Good \u2B29 Doggy \u2B29 Edit entry"));
}
void TestGui::testAddEntry()