diff --git a/share/demo.kdbx b/share/demo.kdbx index 5195cd19..f7852463 100644 Binary files a/share/demo.kdbx and b/share/demo.kdbx differ diff --git a/src/core/Database.cpp b/src/core/Database.cpp index e567b9df..30e5a565 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -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); diff --git a/src/core/Global.h b/src/core/Global.h index 9cb89029..73aea2e1 100644 --- a/src/core/Global.h +++ b/src/core/Global.h @@ -49,8 +49,8 @@ static const auto FALSE_STR = QStringLiteral("false"); enum IconSize { Default = 24, - Medium = 32, - Large = 40 + Medium = 30, + Large = 36 }; template struct AddConst diff --git a/src/gui/AboutDialog.ui b/src/gui/AboutDialog.ui index 8bd8ea01..348c79cf 100644 --- a/src/gui/AboutDialog.ui +++ b/src/gui/AboutDialog.ui @@ -231,7 +231,7 @@ 0 0 466 - 246 + 242 @@ -336,6 +336,12 @@ + + tabWidget + scrollArea + debugInfo + copyToClipboard + diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index 72905c0b..896fd889 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -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> 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()) { diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui index 86415959..12a5cc57 100644 --- a/src/gui/ApplicationSettingsWidgetGeneral.ui +++ b/src/gui/ApplicationSettingsWidgetGeneral.ui @@ -6,11 +6,11 @@ 0 0 - 559 - 1280 + 605 + 1279 - + 0 @@ -32,786 +32,784 @@ Basic Settings - + - - - Startup + + + + 0 + 0 + - - - - - Start only a single instance of KeePassXC - - - true - - - - - - - Automatically launch KeePassXC at system startup - - - - - - - Minimize window at application startup - - - - - - - Minimize window after unlocking database - - - - - - - Remember previously used databases - - - true - - - - - - - 0 - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Load previously open databases on startup - - - true - - - - - - - - - 0 - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Remember database key files and security dongles - - - true - - - - - - - - - Check for updates at application startup once per week - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Include beta releases when checking for updates - - - - - - - - - - - - File Management + + QFrame::NoFrame - - - - - Safely save database files (may be incompatible with Dropbox, etc) - - - true - - - - - - - Backup database file before saving - - - - - - - Automatically save after every change - - - - - - - Automatically save on exit - - - - - - - Mark database as modified for non-data changes (e.g., expanding groups) - - - - - - - Automatically reload the database when modified externally - - - - - - - - - - Entry Management + + QFrame::Plain - - - - - Use group icon on entry creation - - - true - - - - - - - Hide the entry preview panel - - - - - - - Minimize when opening a URL - - - - - - - Hide window when copying to clipboard - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Minimize - - - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Drop to background - - - - - - - - - - - Favicon download timeout: - - - - - - - true - - - Qt::StrongFocus - - - Website icon download timeout in seconds - - - sec - - - 1 - - - 60 - - - 10 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - General + + Qt::ScrollBarAlwaysOff - - - - - - - Application Theme: - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Application Theme Selection - - - - - - - (restart program to activate) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Hide toolbar (icons) - - - - - - - 0 - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - true - - - - 0 - 0 - - - - Movable toolbar - - - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - true - - - - 0 - 0 - - - - margin-right: 5px - - - Button style: - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Toolbar button style - - - QComboBox::AdjustToContents - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Use monospaced font for Notes - - - - - - - Minimize instead of app exit - - - - - - - Show a system tray icon - - - - - - - 0 - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - false - - - Dark system tray icon - - - - - - - - - + + true + + + + + 0 + 0 + 581 + 1235 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Startup + + + + + + Start only a single instance of KeePassXC + + + true + + + + + + + Automatically launch KeePassXC at system startup + + + + + + + Minimize window at application startup + + + + + + + Minimize window after unlocking database + + + + + + + Remember previously used databases + + + true + + + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + Load previously open databases on startup + + + true + + + + + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + Remember database key files and security dongles + + + true + + + + + + + + + Check for updates at application startup once per week + + + + + + + 0 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + Include beta releases when checking for updates + + + + + + + + + + + + File Management + + + + + + Automatically save after every change + + + + + + + Automatically save on exit + + + + + + + Mark database as modified for non-data changes (e.g., expanding groups) + + + + + + + Backup database file before saving + + + + + + + Automatically reload the database when modified externally + + + + + + + Safely save database files (disable if experiencing problems with Dropbox, etc.) + + + true + + + + + + + + + + Entry Management + + + + + + Use group icon on entry creation + + + true + + + + + + + Hide the entry preview panel + + + + + + + Minimize when opening a URL + + + + + + + Hide window when copying to clipboard + + + + + + + 0 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + Minimize + + + + + + + + + 0 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + Drop to background + + + + + + + + + + + Favicon download timeout: + + + + + + + true + + + Qt::StrongFocus + + + Website icon download timeout in seconds + + + sec + + + 1 + + + 60 + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + User Interface + + + + + + 10 + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + Application Theme Selection + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + (restart program to activate) + + + + + + + (restart program to activate) + + + + + + + Application theme: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + Language selection + + + + + + + + 0 + 0 + + + + Language: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + margin-right: 5px + + + Toolbar button style: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + Toolbar button style + + + QComboBox::AdjustToContents + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + Hide toolbar + + + + + + + true + + + + 0 + 0 + + + + Movable toolbar + + + + + + + Use monospaced font for notes + + + + + + + Minimize instead of app exit + + + + + + + Show a system tray icon + + + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + Dark system tray icon + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + + 0 + 0 + + + + Hide window to system tray when minimized + + + + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + 0 - - 0 - - - 0 - - - 0 + + QLayout::SetMaximumSize - - - 0 + + + Reset settings to default… - - QLayout::SetMaximumSize + + + + + + Qt::Horizontal - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - false - - - - 0 - 0 - - - - Hide window to system tray when minimized - - - - + + QSizePolicy::Expanding + + + + 50 + 20 + + + - - - - - - 8 - - - - - - 0 - 0 - - - - Language: - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Language selection - - - - - - - (restart program to activate) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 15 - - - - - - - - 0 - - - QLayout::SetMaximumSize - - - - - Reset settings to default… - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 50 - 20 - - - - - - - + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - @@ -819,6 +817,18 @@ Auto-Type + + 10 + + + 10 + + + 10 + + + 10 + @@ -844,21 +854,43 @@ - - + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + 10 - - + + 8 + + + - Global Auto-Type shortcut: + Auto-Type typing delay: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + - + 0 0 @@ -868,17 +900,10 @@ - - - - Auto-Type typing delay: - - - - + - + 0 0 @@ -900,17 +925,10 @@ - - - - Auto-Type start delay: - - - - + - + 0 0 @@ -938,6 +956,39 @@ + + + + Global Auto-Type shortcut: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Auto-Type start delay: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + @@ -948,7 +999,7 @@ 20 - 40 + 0 @@ -966,6 +1017,49 @@
autotype/ShortcutWidget.h
+ + generalSettingsTabWidget + scrollArea + singleInstanceCheckBox + launchAtStartup + systrayMinimizeOnStartup + minimizeAfterUnlockCheckBox + rememberLastDatabasesCheckBox + openPreviousDatabasesOnStartupCheckBox + rememberLastKeyFilesCheckBox + checkForUpdatesOnStartupCheckBox + checkForUpdatesIncludeBetasCheckBox + autoSaveAfterEveryChangeCheckBox + autoSaveOnExitCheckBox + trackNonDataChangesCheckBox + backupBeforeSaveCheckBox + autoReloadOnChangeCheckBox + useAtomicSavesCheckBox + useGroupIconOnEntryCreationCheckBox + previewHideCheckBox + minimizeOnOpenUrlCheckBox + hideWindowOnCopyCheckBox + minimizeOnCopyRadioButton + dropToBackgroundOnCopyRadioButton + faviconTimeoutSpinBox + appThemeSelection + languageComboBox + toolButtonStyleComboBox + toolbarHideCheckBox + toolbarMovableCheckBox + monospaceNotesCheckBox + minimizeOnCloseCheckBox + systrayShowCheckBox + systrayDarkIconCheckBox + systrayMinimizeToTrayCheckBox + resetSettingsButton + autoTypeEntryTitleMatchCheckBox + autoTypeEntryURLMatchCheckBox + autoTypeAskCheckBox + autoTypeShortcutWidget + autoTypeStartDelaySpinBox + autoTypeDelaySpinBox + diff --git a/src/gui/ApplicationSettingsWidgetSecurity.ui b/src/gui/ApplicationSettingsWidgetSecurity.ui index c39105c0..bd4af19f 100644 --- a/src/gui/ApplicationSettingsWidgetSecurity.ui +++ b/src/gui/ApplicationSettingsWidgetSecurity.ui @@ -297,6 +297,11 @@ clearClipboardCheckBox clearClipboardSpinBox + lockDatabaseIdleCheckBox + lockDatabaseIdleSpinBox + clearSearchCheckBox + clearSearchSpinBox + touchIDResetCheckBox touchIDResetSpinBox lockDatabaseOnScreenLockCheckBox touchIDResetOnScreenLockCheckBox diff --git a/src/gui/CategoryListWidget.ui b/src/gui/CategoryListWidget.ui index f16165cd..f21f4718 100644 --- a/src/gui/CategoryListWidget.ui +++ b/src/gui/CategoryListWidget.ui @@ -6,7 +6,7 @@ 0 0 - 182 + 256 418 @@ -113,8 +113,8 @@
- categoryList scrollUp + categoryList scrollDown diff --git a/src/gui/DatabaseOpenWidget.ui b/src/gui/DatabaseOpenWidget.ui index 278d45c4..8ae2e9d6 100644 --- a/src/gui/DatabaseOpenWidget.ui +++ b/src/gui/DatabaseOpenWidget.ui @@ -246,6 +246,9 @@ PointingHandCursor + + Qt::ClickFocus + <p>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.</p><p>This is <strong>not</strong> your *.kdbx database file!<br>If you do not have a key file, leave the field empty.</p><p>Click for more information...</p> @@ -347,6 +350,9 @@ PointingHandCursor + + Qt::ClickFocus + <p>You can use a hardware security key such as a <strong>YubiKey</strong> or <strong>OnlyKey</strong> with slots configured for HMAC-SHA1.</p> <p>Click for more information...</p> @@ -585,11 +591,6 @@ - - PasswordEdit - QLineEdit -
gui/PasswordEdit.h
-
MessageWidget QWidget @@ -601,12 +602,18 @@ QLabel
gui/widgets/ElidedLabel.h
+ + PasswordEdit + QLineEdit +
gui/PasswordEdit.h
+
+ editPassword comboKeyFile buttonBrowseFile - hardwareKeyLabelHelp challengeResponseCombo + buttonRedetectYubikey checkTouchID diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index b8ac5f3e..8bbec46b 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -6,8 +6,8 @@ 0 0 - 612 - 255 + 527 + 391
@@ -15,11 +15,27 @@ - - - + + + 2 - + + 2 + + + 2 + + + 2 + + + + + + + + + @@ -39,6 +55,9 @@ + + 18 + diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 9ffb80ae..e348e880 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -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(); diff --git a/src/gui/EditWidgetIcons.ui b/src/gui/EditWidgetIcons.ui index 5b1bd9b0..b23f5fba 100644 --- a/src/gui/EditWidgetIcons.ui +++ b/src/gui/EditWidgetIcons.ui @@ -55,6 +55,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + @@ -166,6 +182,7 @@ customIconsView addButton deleteButton + faviconButton applyIconToPushButton diff --git a/src/gui/EditWidgetProperties.ui b/src/gui/EditWidgetProperties.ui index d80bf158..0caa9ef2 100644 --- a/src/gui/EditWidgetProperties.ui +++ b/src/gui/EditWidgetProperties.ui @@ -6,11 +6,11 @@ 0 0 - 614 - 328 + 364 + 408 - + 5 @@ -27,18 +27,21 @@ 0 - - - QFormLayout::ExpandingFieldsGrow + + + 8 - + Created: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - + @@ -54,14 +57,17 @@ - + Modified: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - + @@ -77,14 +83,17 @@ - + Accessed: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - + Datetime accessed @@ -94,14 +103,17 @@ - + Uuid: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - + Unique ID @@ -113,6 +125,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + diff --git a/src/gui/EntryPreviewWidget.cpp b/src/gui/EntryPreviewWidget.cpp index 9332bb2d..eee1dd00 100644 --- a/src/gui/EntryPreviewWidget.cpp +++ b/src/gui/EntryPreviewWidget.cpp @@ -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); } diff --git a/src/gui/EntryPreviewWidget.ui b/src/gui/EntryPreviewWidget.ui index 8c68ab9a..d78b04a4 100644 --- a/src/gui/EntryPreviewWidget.ui +++ b/src/gui/EntryPreviewWidget.ui @@ -7,7 +7,7 @@ 0 0 566 - 206 + 247 @@ -46,49 +46,62 @@ 0 - + QLayout::SetDefaultConstraint - 9 + 5 + + + 3 + + + 3 - - - - 0 - 0 - + + + 12 - - - 16 - 0 - - - - - - - - - - - - 0 - 0 - - - - - 12 - - - - Qt::AutoText - - + + + + + 0 + 0 + + + + + 16 + 0 + + + + + + + + + + + + 0 + 0 + + + + + 12 + + + + Qt::AutoText + + + + @@ -757,43 +770,56 @@ 0 - + QLayout::SetDefaultConstraint - 9 + 5 + + + 3 + + + 3 - - - - 0 - 0 - + + + 12 - - - - - - - - - - 0 - 0 - - - - - 12 - - - - Qt::AutoText - - + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + + 12 + + + + Qt::AutoText + + + + @@ -1137,14 +1163,14 @@ + entryTotpButton entryCloseButton entryTabWidget togglePasswordButton toggleEntryNotesButton - groupCloseButton groupTabWidget toggleGroupNotesButton - entryTotpButton + groupCloseButton diff --git a/src/gui/IconDownloaderDialog.ui b/src/gui/IconDownloaderDialog.ui index ed9fddd1..fbcfb01f 100644 --- a/src/gui/IconDownloaderDialog.ui +++ b/src/gui/IconDownloaderDialog.ui @@ -149,6 +149,11 @@ You can enable the DuckDuckGo website icon service in the security section of th + + cancelButton + tableView + closeButton + diff --git a/src/gui/csvImport/CsvImportWidget.ui b/src/gui/csvImport/CsvImportWidget.ui index beaa3938..845fe16b 100644 --- a/src/gui/csvImport/CsvImportWidget.ui +++ b/src/gui/csvImport/CsvImportWidget.ui @@ -497,6 +497,16 @@ 1 + + comboBoxCodec + comboBoxTextQualifier + comboBoxFieldSeparator + comboBoxComment + checkBoxFieldNames + spinBoxSkip + checkBoxBackslash + tableViewFields + diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.ui b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.ui index 4fcf091e..c67a5134 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.ui +++ b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.ui @@ -180,6 +180,14 @@ 1 + + removeSharedEncryptionKeys + removeStoredPermissions + convertToCustomData + refreshDatabaseID + customDataTable + removeCustomDataButton + diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui index 1e0bb383..97da3747 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui @@ -420,6 +420,17 @@ + + activateChangeDecryptionTimeButton + decryptionTimeSlider + compatibilitySelection + algorithmComboBox + kdfComboBox + transformRoundsSpinBox + transformBenchmarkButton + memorySpinBox + parallelismSpinBox + diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 330a9cd6..23fd5167 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -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"))); } } diff --git a/src/gui/entry/EditEntryWidgetAdvanced.ui b/src/gui/entry/EditEntryWidgetAdvanced.ui index 8faa7a4f..80841eb6 100644 --- a/src/gui/entry/EditEntryWidgetAdvanced.ui +++ b/src/gui/entry/EditEntryWidgetAdvanced.ui @@ -11,6 +11,18 @@ + + 0 + + + 0 + + + 0 + + + 0 + diff --git a/src/gui/entry/EditEntryWidgetAutoType.ui b/src/gui/entry/EditEntryWidgetAutoType.ui index 0008a701..f82240d7 100644 --- a/src/gui/entry/EditEntryWidgetAutoType.ui +++ b/src/gui/entry/EditEntryWidgetAutoType.ui @@ -6,8 +6,8 @@ 0 0 - 567 - 348 + 577 + 434 @@ -106,6 +106,22 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + diff --git a/src/gui/entry/EditEntryWidgetMain.ui b/src/gui/entry/EditEntryWidgetMain.ui index 80b94c03..f96481a3 100644 --- a/src/gui/entry/EditEntryWidgetMain.ui +++ b/src/gui/entry/EditEntryWidgetMain.ui @@ -6,11 +6,14 @@ 0 0 - 430 - 381 + 496 + 420 - + + + 0 + 0 @@ -20,18 +23,47 @@ 0 - - - - true - - - Toggle the checkbox to reveal the notes section. - - - Qt::AlignTop - - + + 10 + + + 8 + + + + + + + + 0 + 1 + + + + + 0 + 100 + + + + Notes field + + + + + + + true + + + Toggle the checkbox to reveal the notes section. + + + Qt::AlignTop + + + + @@ -40,108 +72,41 @@ - - + + - - - Url field + + + Toggle notes visible - - https://example.com + + Toggle notes visible + + + Notes: - - - Download favicon for URL + + + Qt::Vertical - - Download favicon for URL + + + 20 + 40 + - + - - - - URL: - - - - - - - Password field - - - QLineEdit::Password - - - - - - - Toggle expiration - - - Toggle expiration - - - Expires - - - - - - - - 0 - 1 - - - - - 0 - 100 - - - - Notes field - - - - - - - Toggle notes visible - - - Toggle notes visible - - - Notes - - - - - - - Title field - - - - - - - Password: - - - - + + + 8 + @@ -176,27 +141,111 @@ - + + + + Password: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + URL: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 8 + + + + + Url field + + + https://example.com + + + + + + + Download favicon for URL + + + Download favicon for URL + + + + + + + + + Title: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Title field + + + + Username: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + Password field + + + QLineEdit::Password + + + + + + + 0 + + + + + Toggle expiration + + + Toggle expiration + + + Expires: + + + + + - - - - 35 - 0 - 23 - 19 - - - - Title: - - diff --git a/src/gui/entry/EditEntryWidgetSSHAgent.ui b/src/gui/entry/EditEntryWidgetSSHAgent.ui index 2e9d94b6..fae13dcc 100644 --- a/src/gui/entry/EditEntryWidgetSSHAgent.ui +++ b/src/gui/entry/EditEntryWidgetSSHAgent.ui @@ -6,8 +6,8 @@ 0 0 - 498 - 518 + 452 + 618 @@ -26,53 +26,6 @@ 0 - - - - - - Remove key from agent after - - - - - - - Remove key from agent after specified seconds - - - seconds - - - 999999999 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Fingerprint - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -80,13 +33,13 @@ - - + + - Public key + Comment - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -97,63 +50,69 @@ - - - - Comment + + + + + Monospace + - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + true - + Decrypt - - - - - - - Monospace - - - - n/a - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + - + + + + Fingerprint + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + Copy to clipboard - + + + + Public key + + + Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + + + + Private key @@ -240,19 +199,7 @@ - - - - - Monospace - - - - true - - - - + @@ -284,6 +231,91 @@ + + + + + + Remove key from agent after + + + + + + + Remove key from agent after specified seconds + + + seconds + + + 999999999 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Monospace + + + + n/a + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + diff --git a/src/gui/group/EditGroupWidgetMain.ui b/src/gui/group/EditGroupWidgetMain.ui index f23e43f1..9531cc84 100644 --- a/src/gui/group/EditGroupWidgetMain.ui +++ b/src/gui/group/EditGroupWidgetMain.ui @@ -6,13 +6,13 @@ 0 0 - 579 - 407 + 410 + 430 - + - 10 + 0 0 @@ -23,10 +23,19 @@ 0 - - + + 10 + + + 8 + + + + + Toggle expiration + - Name + Expires: @@ -37,13 +46,113 @@ - - - - Notes + + + + false + + + Expiration field + + + true + + + + Use default Auto-Type sequence of parent group + + + + + + + Auto-Type: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Search: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Auto-Type toggle for this and sub groups + + + + + + + + + Notes: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 0 + + + + + + + + false + + + Default auto-type sequence field + + + + + + + + @@ -63,106 +172,32 @@ - - - - Toggle expiration - + + - Expires + Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - Auto-Type toggle for this and sub groups - - - - - - - false - - - Expiration field - - - true - - - - - - - Search - - - - - - - Search toggle for this and sub groups - - - - - - - Auto-Type - - - - - - - Use default Auto-Type sequence of parent group - - - - + Set default Auto-Type sequence - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 1 - - - - - - - - false - - - Default auto-type sequence field - - - - - - - + + + + Search toggle for this and sub groups + + - - + + Qt::Vertical @@ -183,6 +218,9 @@ expireDatePicker searchComboBox autotypeComboBox + autoTypeSequenceInherit + autoTypeSequenceCustomRadio + autoTypeSequenceCustomEdit diff --git a/src/gui/reports/ReportsWidgetHealthcheck.ui b/src/gui/reports/ReportsWidgetHealthcheck.ui index 202ca6b1..38359a88 100644 --- a/src/gui/reports/ReportsWidgetHealthcheck.ui +++ b/src/gui/reports/ReportsWidgetHealthcheck.ui @@ -75,6 +75,10 @@
+ + healthcheckTableView + showKnownBadCheckBox + diff --git a/src/gui/reports/ReportsWidgetHibp.ui b/src/gui/reports/ReportsWidgetHibp.ui index af593119..3de67a81 100644 --- a/src/gui/reports/ReportsWidgetHibp.ui +++ b/src/gui/reports/ReportsWidgetHibp.ui @@ -227,6 +227,11 @@
+ + hibpTableView + showKnownBadCheckBox + validationButton + diff --git a/src/gui/reports/ReportsWidgetStatistics.ui b/src/gui/reports/ReportsWidgetStatistics.ui index 4b96dc51..047b55cf 100644 --- a/src/gui/reports/ReportsWidgetStatistics.ui +++ b/src/gui/reports/ReportsWidgetStatistics.ui @@ -65,6 +65,9 @@ + + statisticsTableView + diff --git a/src/keeshare/SettingsWidgetKeeShare.ui b/src/keeshare/SettingsWidgetKeeShare.ui index 0840c974..44fb9f1d 100644 --- a/src/keeshare/SettingsWidgetKeeShare.ui +++ b/src/keeshare/SettingsWidgetKeeShare.ui @@ -7,7 +7,7 @@ 0 0 378 - 508 + 511 @@ -80,11 +80,17 @@ Own certificate + + 10 + Fingerprint: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -102,6 +108,9 @@ Certificate: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -109,6 +118,9 @@ Signer: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -116,6 +128,9 @@ Key: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -310,6 +325,23 @@ + + enableImportCheckBox + quietSuccessCheckBox + enableExportCheckBox + generateOwnCerticateButton + importOwnCertificateButton + exportOwnCertificateButton + ownCertificateSignerEdit + ownCertificatePrivateKeyEdit + ownCertificatePublicKeyEdit + ownCertificateFingerprintEdit + trustImportedCertificateButton + askImportedCertificateButton + untrustImportedCertificateButton + removeImportedCertificateButton + importedCertificateTableView + diff --git a/src/keeshare/group/EditGroupWidgetKeeShare.ui b/src/keeshare/group/EditGroupWidgetKeeShare.ui index 58d8dccb..7cea782f 100644 --- a/src/keeshare/group/EditGroupWidgetKeeShare.ui +++ b/src/keeshare/group/EditGroupWidgetKeeShare.ui @@ -6,26 +6,37 @@ 0 0 - 344 - 143 + 361 + 180 + + 0 + - 10 + 0 + + + 0 + + + 0 + + + 0 - - - - - Type: - - - + + + 10 + + + 8 + @@ -39,15 +50,63 @@ + + + + + 0 + 0 + + + + + 200 + 0 + + + + Password field + + + QLineEdit::Password + + + + + + + Type: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Password: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + Path: + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 6 + @@ -79,35 +138,6 @@ - - - - Password: - - - - - - - - 0 - 0 - - - - - 200 - 0 - - - - Password field - - - QLineEdit::Password - - - @@ -141,21 +171,21 @@ + + + + Qt::Vertical + + + + 20 + 0 + + + + - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -172,6 +202,13 @@ 1 + + typeComboBox + pathEdit + pathSelectionButton + passwordEdit + clearButton + diff --git a/src/sshagent/AgentSettingsWidget.cpp b/src/sshagent/AgentSettingsWidget.cpp index f7d85ce7..3db5431f 100644 --- a/src/sshagent/AgentSettingsWidget.cpp +++ b/src/sshagent/AgentSettingsWidget.cpp @@ -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()); +} diff --git a/src/sshagent/AgentSettingsWidget.h b/src/sshagent/AgentSettingsWidget.h index 8667be65..fcc65818 100644 --- a/src/sshagent/AgentSettingsWidget.h +++ b/src/sshagent/AgentSettingsWidget.h @@ -37,6 +37,7 @@ public: public slots: void loadSettings(); void saveSettings(); + void toggleSettingsEnabled(); private: QScopedPointer m_ui; diff --git a/src/sshagent/AgentSettingsWidget.ui b/src/sshagent/AgentSettingsWidget.ui index 3b8c70fa..71958644 100644 --- a/src/sshagent/AgentSettingsWidget.ui +++ b/src/sshagent/AgentSettingsWidget.ui @@ -10,7 +10,7 @@ 300 - + 0 @@ -23,20 +23,6 @@ 0 - - - - Enable SSH Agent integration - - - - - - - Use OpenSSH for Windows instead of Pageant - - - @@ -52,38 +38,6 @@ 0 - - - - SSH_AUTH_SOCK value - - - - - - - - Monospace - - - - (empty) - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - SSH_AUTH_SOCK override - - - - - - @@ -91,17 +45,109 @@ - - - Qt::Vertical + + + Enable SSH Agent integration - - - 20 - 40 - + + + + + + QFrame::NoFrame - + + QFrame::Plain + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Use OpenSSH for Windows instead of Pageant + + + + + + + 10 + + + 10 + + + 10 + + + 8 + + + + + SSH_AUTH_SOCK value + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + SSH_AUTH_SOCK override + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + Monospace + + + + (empty) + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + diff --git a/tests/TestCsvExporter.cpp b/tests/TestCsvExporter.cpp index 3e662361..63ba1148 100644 --- a/tests/TestCsvExporter.cpp +++ b/tests/TestCsvExporter.cpp @@ -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")); } diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp index 5ca7ccdb..f47a013e 100644 --- a/tests/gui/TestGui.cpp +++ b/tests/gui/TestGui.cpp @@ -574,7 +574,7 @@ void TestGui::testSearchEditEntry() // Check the path in header is "parent-group > entry" QCOMPARE(m_dbWidget->findChild("editEntryWidget")->findChild("headerLabel")->text(), - QString("Good > Doggy > Edit entry")); + QStringLiteral("Good \u2B29 Doggy \u2B29 Edit entry")); } void TestGui::testAddEntry()