Minor UI fixes

* Fixes #11044 - password generator excluded characters tooltip was incorrect

* Fixes #11084 - allow more than 30 days for showing expiring passwords. Also fix the ability to properly translate this control.

* Fixes #11212 - don't show password on creating new database

* Fixes #10726 - improve indication of hardware key polling. Also improve layout spacing of unlock dialog.

* Fixes #11142 - provide better link for challenge-response information
This commit is contained in:
Jonathan White 2024-10-01 09:36:05 -04:00
parent 3fde6aae45
commit ba0fc3b886
7 changed files with 41 additions and 59 deletions

View File

@ -282,25 +282,6 @@
<source>Include beta releases when checking for updates</source> <source>Include beta releases when checking for updates</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>On database unlock, show entries that </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>have expired</source>
<comment>On database unlock, show entries that...</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source> days</source>
<comment>On database unlock, show entries that will expire within %1 days</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>will expire within </source>
<comment>On database unlock, show entries that...</comment>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>File Management</source> <source>File Management</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -507,6 +488,19 @@
<source>Remember last typed entry for:</source> <source>Remember last typed entry for:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>On database unlock, show entries that will expire within</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On database unlock, show entries that will expire within </source>
<translation type="unfinished"></translation>
</message>
<message>
<source> days</source>
<comment>number of days warning for password expiration</comment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ApplicationSettingsWidgetSecurity</name> <name>ApplicationSettingsWidgetSecurity</name>
@ -6788,10 +6782,6 @@ The following data is missing:
<source>Also choose from:</source> <source>Also choose from:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Excluded characters: &quot;0&quot;, &quot;1&quot;, &quot;l&quot;, &quot;I&quot;, &quot;O&quot;, &quot;|&quot;, &quot;&quot;</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Exclude look-alike characters</source> <source>Exclude look-alike characters</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -6949,6 +6939,10 @@ Do you want to overwrite it?</source>
<source>Characters: %1</source> <source>Characters: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Excluded characters: &quot;0&quot;, &quot;1&quot;, &quot;l&quot;, &quot;I&quot;, &quot;O&quot;, &quot;|&quot;, &quot;&quot;, &quot;B&quot;, &quot;8&quot;, &quot;G&quot;, &quot;6&quot;</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PasswordWidget</name> <name>PasswordWidget</name>
@ -10136,11 +10130,11 @@ Example: JBSWY3DPEHPK3PXP</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt; or &lt;a href=&quot;https://onlykey.io&quot;&gt;OnlyKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The key requires one of its slots to be programmed as &lt;a href=&quot;https://docs.yubico.com/yesdk/users-manual/application-otp/challenge-response.html&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source> <source>Refresh hardware keys</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Refresh hardware keys</source> <source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt; or &lt;a href=&quot;https://onlykey.io&quot;&gt;OnlyKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The key requires one of its slots to be programmed with &lt;a href=&quot;https://keepassxc.org/docs/#faq-yubikey-howto&quot;&gt;Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>

View File

@ -278,7 +278,7 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QCheckBox" name="showExpiredEntriesOnDatabaseUnlockCheckBox"> <widget class="QCheckBox" name="showExpiredEntriesOnDatabaseUnlockCheckBox">
<property name="text"> <property name="text">
<string>On database unlock, show entries that </string> <string>On database unlock, show entries that will expire within</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -297,25 +297,19 @@
<enum>Qt::StrongFocus</enum> <enum>Qt::StrongFocus</enum>
</property> </property>
<property name="accessibleName"> <property name="accessibleName">
<string>On database unlock, show entries that </string> <string>On database unlock, show entries that will expire within </string>
</property>
<property name="specialValueText">
<string comment="On database unlock, show entries that...">have expired</string>
</property> </property>
<property name="suffix"> <property name="suffix">
<string comment="On database unlock, show entries that will expire within %1 days"> days</string> <string comment="number of days warning for password expiration"> days</string>
</property>
<property name="prefix">
<string comment="On database unlock, show entries that...">will expire within </string>
</property> </property>
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
</property> </property>
<property name="maximum"> <property name="maximum">
<number>30</number> <number>90</number>
</property> </property>
<property name="value"> <property name="value">
<number>0</number> <number>3</number>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -253,6 +253,7 @@ void DatabaseOpenWidget::clearForms()
m_ui->keyFileLineEdit->setShowPassword(false); m_ui->keyFileLineEdit->setShowPassword(false);
m_ui->keyFileLineEdit->setClearButtonEnabled(true); m_ui->keyFileLineEdit->setClearButtonEnabled(true);
m_ui->hardwareKeyCombo->clear(); m_ui->hardwareKeyCombo->clear();
toggleHardwareKeyComponent(false);
toggleQuickUnlockScreen(); toggleQuickUnlockScreen();
m_db.reset(new Database(m_filename)); m_db.reset(new Database(m_filename));
@ -497,6 +498,7 @@ void DatabaseOpenWidget::pollHardwareKey(bool manualTrigger)
} }
m_ui->hardwareKeyCombo->setEnabled(false); m_ui->hardwareKeyCombo->setEnabled(false);
m_ui->useHardwareKeyCheckBox->setEnabled(false);
m_ui->hardwareKeyProgress->setVisible(true); m_ui->hardwareKeyProgress->setVisible(true);
m_ui->refreshHardwareKeys->setEnabled(false); m_ui->refreshHardwareKeys->setEnabled(false);
m_ui->noHardwareKeysFoundLabel->setVisible(false); m_ui->noHardwareKeysFoundLabel->setVisible(false);
@ -511,6 +513,7 @@ void DatabaseOpenWidget::pollHardwareKey(bool manualTrigger)
void DatabaseOpenWidget::hardwareKeyResponse(bool found) void DatabaseOpenWidget::hardwareKeyResponse(bool found)
{ {
m_ui->useHardwareKeyCheckBox->setEnabled(true);
m_ui->hardwareKeyProgress->setVisible(false); m_ui->hardwareKeyProgress->setVisible(false);
m_ui->refreshHardwareKeys->setEnabled(true); m_ui->refreshHardwareKeys->setEnabled(true);
m_ui->hardwareKeyCombo->clear(); m_ui->hardwareKeyCombo->clear();

View File

@ -59,6 +59,7 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -143,7 +144,7 @@
<number>0</number> <number>0</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>10</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="passwordLabel"> <widget class="QLabel" name="passwordLabel">
@ -155,7 +156,7 @@
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing"> <property name="spacing">
<number>0</number> <number>2</number>
</property> </property>
<item> <item>
<widget class="PasswordWidget" name="editPassword" native="true"> <widget class="PasswordWidget" name="editPassword" native="true">
@ -213,13 +214,13 @@
<number>0</number> <number>0</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>10</number> <number>0</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>15</number> <number>10</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="selectKeyFileLabel"> <widget class="QLabel" name="selectKeyFileLabel">
@ -362,7 +363,7 @@
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>40</width> <width>40</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@ -417,19 +418,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<layout class="QHBoxLayout" name="dialogButtonsLayout"> <layout class="QHBoxLayout" name="dialogButtonsLayout">
<property name="spacing"> <property name="spacing">
@ -511,6 +499,7 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>10</pointsize> <pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>

View File

@ -716,7 +716,10 @@ QProgressBar::chunk {
<item> <item>
<widget class="QCheckBox" name="checkBoxExcludeAlike"> <widget class="QCheckBox" name="checkBoxExcludeAlike">
<property name="toolTip"> <property name="toolTip">
<string>Excluded characters: &quot;0&quot;, &quot;1&quot;, &quot;l&quot;, &quot;I&quot;, &quot;O&quot;, &quot;|&quot;, &quot;﹒&quot;</string> <string>Excluded characters: &quot;0&quot;, &quot;1&quot;, &quot;l&quot;, &quot;I&quot;, &quot;O&quot;, &quot;|&quot;, &quot;﹒&quot;, &quot;B&quot;, &quot;8&quot;, &quot;G&quot;, &quot;6&quot;</string>
</property>
<property name="accessibleDescription">
<string>Excluded characters: &quot;0&quot;, &quot;1&quot;, &quot;l&quot;, &quot;I&quot;, &quot;O&quot;, &quot;|&quot;, &quot;﹒&quot;, &quot;B&quot;, &quot;8&quot;, &quot;G&quot;, &quot;6&quot;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Exclude look-alike characters</string> <string>Exclude look-alike characters</string>

View File

@ -139,9 +139,9 @@ void YubiKeyEditWidget::initComponent()
m_ui->componentDescription->setText( m_ui->componentDescription->setText(
tr("<p>If you own a <a href=\"https://www.yubico.com/\">YubiKey</a> or " tr("<p>If you own a <a href=\"https://www.yubico.com/\">YubiKey</a> or "
"<a href=\"https://onlykey.io\">OnlyKey</a>, you can use it for additional security.</p>" "<a href=\"https://onlykey.io\">OnlyKey</a>, you can use it for additional security.</p>"
"<p>The key requires one of its slots to be programmed as " "<p>The key requires one of its slots to be programmed with "
"<a href=\"https://docs.yubico.com/yesdk/users-manual/application-otp/challenge-response.html\">" "<a href=\"https://keepassxc.org/docs/#faq-yubikey-howto\">"
"HMAC-SHA1 Challenge-Response</a>.</p>")); "Challenge-Response</a>.</p>"));
} }
void YubiKeyEditWidget::pollYubikey() void YubiKeyEditWidget::pollYubikey()

View File

@ -78,7 +78,6 @@ void DatabaseSettingsWidgetDatabaseKey::loadSettings(QSharedPointer<Database> db
if (!m_db->key() || m_db->key()->keys().isEmpty()) { if (!m_db->key() || m_db->key()->keys().isEmpty()) {
// Database has no key, we are about to add a new one // Database has no key, we are about to add a new one
m_passwordEditWidget->changeVisiblePage(KeyComponentWidget::Page::Edit); m_passwordEditWidget->changeVisiblePage(KeyComponentWidget::Page::Edit);
m_passwordEditWidget->setPasswordVisible(true);
// Focus won't work until the UI settles // Focus won't work until the UI settles
QTimer::singleShot(0, m_passwordEditWidget, SLOT(setFocus())); QTimer::singleShot(0, m_passwordEditWidget, SLOT(setFocus()));
} else { } else {