keepassxc/src/gui/DatabaseOpenDialog.h
Allen Wild 53dcafaa58 Allow selecting any open database in unlock dialog
* Closes #2322

* Show locked databases in tabbed interface in unlock dialog for browser and auto-type workflows.

* Make the DatabaseOpenDialog window Application-Modal so that it blocks input to the main UI when the dialog is open. This reduces corner cases by avoiding the possibility of databases getting closed or unlocked
behind the open dialog.
2021-08-29 16:02:40 -04:00

72 lines
2 KiB
C++

/*
* Copyright (C) 2018 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_UNLOCKDATABASEDIALOG_H
#define KEEPASSX_UNLOCKDATABASEDIALOG_H
#include "core/Global.h"
#include <QDialog>
#include <QList>
#include <QPointer>
#include <QTabBar>
class Database;
class DatabaseWidget;
class DatabaseOpenWidget;
class DatabaseOpenDialog : public QDialog
{
Q_OBJECT
public:
enum class Intent
{
None,
AutoType,
Merge,
Browser
};
explicit DatabaseOpenDialog(QWidget* parent = nullptr);
void setTarget(DatabaseWidget* dbWidget, const QString& filePath);
void addDatabaseTab(DatabaseWidget* dbWidget);
void setActiveDatabaseTab(DatabaseWidget* dbWidget);
void setIntent(Intent intent);
Intent intent() const;
QSharedPointer<Database> database() const;
void clearForms();
signals:
void dialogFinished(bool accepted, DatabaseWidget* dbWidget);
public slots:
void complete(bool accepted);
void tabChanged(int index);
private:
void selectTabOffset(int offset);
QPointer<DatabaseOpenWidget> m_view;
QPointer<QTabBar> m_tabBar;
QSharedPointer<Database> m_db;
QList<QPointer<DatabaseWidget>> m_tabDbWidgets;
QPointer<DatabaseWidget> m_currentDbWidget;
Intent m_intent = Intent::None;
};
#endif // KEEPASSX_UNLOCKDATABASEDIALOG_H