mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-01-26 06:26:11 -05:00
5492b5c4f6
With this change we get rid of the confusing key component checkboxes. Now a component is either there or not (if left empty). There is no redundant distinction between "unset" and "emtpy" anymore. For compatibility with older databases that have "empty" passwords, KeePassXC will ask if the user wants to retry with an empty password if unlocking failed and the password field was left blank. Besides these functional changes, the widget's layout has been rearranged to be more compact, less stretched out (e.g. input fields do not fill the full window width anymore), and more user-friendly by providing a help tooltip for the hardware key field and accessible descriptions for screen readers.
85 lines
2.2 KiB
C++
85 lines
2.2 KiB
C++
/*
|
|
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
|
|
* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 or (at your option)
|
|
* version 3 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef KEEPASSX_DATABASEOPENWIDGET_H
|
|
#define KEEPASSX_DATABASEOPENWIDGET_H
|
|
|
|
#include <QScopedPointer>
|
|
|
|
#include "gui/DialogyWidget.h"
|
|
#include "keys/CompositeKey.h"
|
|
|
|
class Database;
|
|
class QFile;
|
|
|
|
namespace Ui
|
|
{
|
|
class DatabaseOpenWidget;
|
|
}
|
|
|
|
class DatabaseOpenWidget : public DialogyWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DatabaseOpenWidget(QWidget* parent = nullptr);
|
|
~DatabaseOpenWidget();
|
|
void load(const QString& filename);
|
|
void clearForms();
|
|
void enterKey(const QString& pw, const QString& keyFile);
|
|
QSharedPointer<Database> database();
|
|
|
|
public slots:
|
|
void pollYubikey();
|
|
|
|
signals:
|
|
void dialogFinished(bool accepted);
|
|
|
|
protected:
|
|
void showEvent(QShowEvent* event) override;
|
|
void hideEvent(QHideEvent* event) override;
|
|
QSharedPointer<CompositeKey> databaseKey();
|
|
|
|
protected slots:
|
|
virtual void openDatabase();
|
|
void reject();
|
|
|
|
private slots:
|
|
void browseKeyFile();
|
|
void clearKeyFileEdit();
|
|
void handleKeyFileComboEdited();
|
|
void handleKeyFileComboChanged();
|
|
void yubikeyDetected(int slot, bool blocking);
|
|
void yubikeyDetectComplete();
|
|
void noYubikeyFound();
|
|
void openHardwareKeyHelp();
|
|
|
|
protected:
|
|
const QScopedPointer<Ui::DatabaseOpenWidget> m_ui;
|
|
QSharedPointer<Database> m_db;
|
|
QString m_filename;
|
|
bool m_retryUnlockWithEmptyPassword = false;
|
|
|
|
private:
|
|
bool m_yubiKeyBeingPolled = false;
|
|
bool m_keyFileComboEdited = false;
|
|
Q_DISABLE_COPY(DatabaseOpenWidget)
|
|
};
|
|
|
|
#endif // KEEPASSX_DATABASEOPENWIDGET_H
|