Merge branch 'develop'
Conflicts: CMakeLists.txt cmake/CLangFormat.cmake snapcraft.yaml src/CMakeLists.txt src/core/Database.cpp src/core/Database.h src/core/Tools.cpp src/crypto/CryptoHash.h src/crypto/ssh/ASN1Key.h src/crypto/ssh/OpenSSHKey.cpp src/format/Kdbx4Reader.cpp src/gui/DatabaseTabWidget.cpp src/gui/DatabaseTabWidget.h src/gui/DatabaseWidget.cpp src/gui/DatabaseWidget.h src/gui/DetailsWidget.cpp src/gui/DetailsWidget.ui src/gui/EditWidgetProperties.cpp src/gui/EntryPreviewWidget.cpp src/gui/EntryPreviewWidget.ui src/gui/FileDialog.cpp src/gui/dbsettings/DatabaseSettingsDialog.cpp src/gui/dbsettings/DatabaseSettingsDialog.h src/gui/group/EditGroupWidget.cpp src/gui/group/EditGroupWidget.h src/sshagent/ASN1Key.h src/sshagent/OpenSSHKey.cpp src/sshagent/SSHAgent.cpp tests/CMakeLists.txt
This commit is contained in:
@@ -40,7 +40,7 @@ QWidget* DatabaseSettingsPageKeeShare::createWidget()
|
||||
return new DatabaseSettingsWidgetKeeShare();
|
||||
}
|
||||
|
||||
void DatabaseSettingsPageKeeShare::loadSettings(QWidget* widget, Database* db)
|
||||
void DatabaseSettingsPageKeeShare::loadSettings(QWidget* widget, QSharedPointer<Database> db)
|
||||
{
|
||||
DatabaseSettingsWidgetKeeShare* settingsWidget = reinterpret_cast<DatabaseSettingsWidgetKeeShare*>(widget);
|
||||
settingsWidget->loadSettings(db);
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
QString name() override;
|
||||
QIcon icon() override;
|
||||
QWidget* createWidget() override;
|
||||
void loadSettings(QWidget* widget, Database* db) override;
|
||||
void loadSettings(QWidget* widget, QSharedPointer<Database> db) override;
|
||||
void saveSettings(QWidget* widget) override;
|
||||
};
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ DatabaseSettingsWidgetKeeShare::~DatabaseSettingsWidgetKeeShare()
|
||||
{
|
||||
}
|
||||
|
||||
void DatabaseSettingsWidgetKeeShare::loadSettings(Database* db)
|
||||
void DatabaseSettingsWidgetKeeShare::loadSettings(QSharedPointer<Database> db)
|
||||
{
|
||||
m_db = db;
|
||||
|
||||
|
||||
@@ -38,14 +38,14 @@ public:
|
||||
explicit DatabaseSettingsWidgetKeeShare(QWidget* parent = nullptr);
|
||||
~DatabaseSettingsWidgetKeeShare();
|
||||
|
||||
void loadSettings(Database* db);
|
||||
void loadSettings(QSharedPointer<Database> db);
|
||||
void saveSettings();
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::DatabaseSettingsWidgetKeeShare> m_ui;
|
||||
|
||||
QScopedPointer<QStandardItemModel> m_referencesModel;
|
||||
QPointer<Database> m_db;
|
||||
QSharedPointer<Database> m_db;
|
||||
};
|
||||
|
||||
#endif // KEEPASSXC_DATABASESETTINGSWIDGETKEESHARE_H
|
||||
|
||||
@@ -160,18 +160,18 @@ QString KeeShare::indicatorSuffix(const Group* group, const QString& text)
|
||||
return text;
|
||||
}
|
||||
|
||||
void KeeShare::connectDatabase(Database* newDb, Database* oldDb)
|
||||
void KeeShare::connectDatabase(QSharedPointer<Database> newDb, QSharedPointer<Database> oldDb)
|
||||
{
|
||||
if (oldDb && m_observersByDatabase.contains(oldDb)) {
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.take(oldDb);
|
||||
if (oldDb && m_observersByDatabase.contains(oldDb.data())) {
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.take(oldDb.data());
|
||||
if (observer) {
|
||||
delete observer;
|
||||
}
|
||||
}
|
||||
|
||||
if (newDb && !m_observersByDatabase.contains(newDb)) {
|
||||
QPointer<ShareObserver> observer(new ShareObserver(newDb, newDb));
|
||||
m_observersByDatabase[newDb] = observer;
|
||||
if (newDb && !m_observersByDatabase.contains(newDb.data())) {
|
||||
QPointer<ShareObserver> observer(new ShareObserver(newDb, this));
|
||||
m_observersByDatabase[newDb.data()] = observer;
|
||||
connect(observer.data(),
|
||||
SIGNAL(sharingMessage(QString, MessageWidget::MessageType)),
|
||||
this,
|
||||
@@ -179,17 +179,17 @@ void KeeShare::connectDatabase(Database* newDb, Database* oldDb)
|
||||
}
|
||||
}
|
||||
|
||||
void KeeShare::handleDatabaseOpened(Database* db)
|
||||
void KeeShare::handleDatabaseOpened(QSharedPointer<Database> db)
|
||||
{
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.value(db);
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.value(db.data());
|
||||
if (observer) {
|
||||
observer->handleDatabaseOpened();
|
||||
}
|
||||
}
|
||||
|
||||
void KeeShare::handleDatabaseSaved(Database* db)
|
||||
void KeeShare::handleDatabaseSaved(QSharedPointer<Database> db)
|
||||
{
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.value(db);
|
||||
QPointer<ShareObserver> observer = m_observersByDatabase.value(db.data());
|
||||
if (observer) {
|
||||
observer->handleDatabaseSaved();
|
||||
}
|
||||
@@ -198,7 +198,7 @@ void KeeShare::handleDatabaseSaved(Database* db)
|
||||
void KeeShare::emitSharingMessage(const QString& message, KMessageWidget::MessageType type)
|
||||
{
|
||||
QObject* observer = sender();
|
||||
Database* db = m_databasesByObserver.value(observer);
|
||||
auto db = m_databasesByObserver.value(observer);
|
||||
if (db) {
|
||||
emit sharingMessage(db, message, type);
|
||||
}
|
||||
@@ -216,7 +216,7 @@ void KeeShare::handleObserverDeleted(QObject* observer)
|
||||
{
|
||||
auto database = m_databasesByObserver.take(observer);
|
||||
if (database) {
|
||||
m_observersByDatabase.remove(database);
|
||||
m_observersByDatabase.remove(database.data());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,13 +53,13 @@ public:
|
||||
static void setReferenceTo(Group* group, const KeeShareSettings::Reference& reference);
|
||||
static QString referenceTypeLabel(const KeeShareSettings::Reference& reference);
|
||||
|
||||
void connectDatabase(Database* newDb, Database* oldDb);
|
||||
void handleDatabaseOpened(Database* db);
|
||||
void handleDatabaseSaved(Database* db);
|
||||
void connectDatabase(QSharedPointer<Database> newDb, QSharedPointer<Database> oldDb);
|
||||
void handleDatabaseOpened(QSharedPointer<Database> db);
|
||||
void handleDatabaseSaved(QSharedPointer<Database> db);
|
||||
|
||||
signals:
|
||||
void activeChanged();
|
||||
void sharingMessage(Database*, QString, MessageWidget::MessageType);
|
||||
void sharingMessage(QSharedPointer<Database>, QString, MessageWidget::MessageType);
|
||||
|
||||
private slots:
|
||||
void emitSharingMessage(const QString&, MessageWidget::MessageType);
|
||||
@@ -73,7 +73,7 @@ private:
|
||||
explicit KeeShare(QObject* parent);
|
||||
|
||||
QMap<QObject*, QPointer<ShareObserver>> m_observersByDatabase;
|
||||
QMap<QObject*, QPointer<Database>> m_databasesByObserver;
|
||||
QMap<QObject*, QSharedPointer<Database>> m_databasesByObserver;
|
||||
};
|
||||
|
||||
#endif // KEEPASSXC_KEESHARE_H
|
||||
|
||||
@@ -114,14 +114,14 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
ShareObserver::ShareObserver(Database* db, QObject* parent)
|
||||
ShareObserver::ShareObserver(QSharedPointer<Database> db, QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_db(db)
|
||||
, m_db(std::move(db))
|
||||
, m_fileWatcher(new BulkFileWatcher(this))
|
||||
{
|
||||
connect(KeeShare::instance(), SIGNAL(activeChanged()), this, SLOT(handleDatabaseChanged()));
|
||||
|
||||
connect(m_db, SIGNAL(modified()), this, SLOT(handleDatabaseChanged()));
|
||||
connect(m_db.data(), SIGNAL(modified()), this, SLOT(handleDatabaseChanged()));
|
||||
|
||||
connect(m_fileWatcher, SIGNAL(fileCreated(QString)), this, SLOT(handleFileCreated(QString)));
|
||||
connect(m_fileWatcher, SIGNAL(fileChanged(QString)), this, SLOT(handleFileChanged(QString)));
|
||||
@@ -319,8 +319,8 @@ ShareObserver::Result ShareObserver::importContainerInto(const KeeShareSettings:
|
||||
KeePass2Reader reader;
|
||||
auto key = QSharedPointer<CompositeKey>::create();
|
||||
key->addKey(QSharedPointer<PasswordKey>::create(reference.password));
|
||||
auto* sourceDb = reader.readDatabase(&buffer, key);
|
||||
if (reader.hasError()) {
|
||||
auto sourceDb = QSharedPointer<Database>::create();
|
||||
if (!reader.readDatabase(&buffer, key, sourceDb.data())) {
|
||||
qCritical("Error while parsing the database: %s", qPrintable(reader.errorString()));
|
||||
return {reference.path, Result::Error, reader.errorString()};
|
||||
}
|
||||
@@ -352,7 +352,7 @@ ShareObserver::Result ShareObserver::importContainerInto(const KeeShareSettings:
|
||||
KeeShare::setForeign(foreign);
|
||||
}
|
||||
}
|
||||
[[gnu::fallthrough]];
|
||||
[[fallthrough]];
|
||||
case Single:
|
||||
case Own: {
|
||||
qDebug("Synchronize %s %s with %s",
|
||||
@@ -414,7 +414,7 @@ void ShareObserver::resolveReferenceAttributes(Entry* targetEntry, const Databas
|
||||
}
|
||||
// We could do more sophisticated **** trying to point the reference to the next in-scope reference
|
||||
// but those cases with high propability constructed examples and very rare in real usage
|
||||
const auto* sourceReference = sourceDb->resolveEntry(targetEntry->uuid());
|
||||
const auto* sourceReference = sourceDb->rootGroup()->findEntryByUuid(targetEntry->uuid());
|
||||
const auto resolvedValue = sourceReference->resolveMultiplePlaceholders(standardValue);
|
||||
targetEntry->setUpdateTimeinfo(false);
|
||||
targetEntry->attributes()->set(attribute, resolvedValue, targetEntry->attributes()->isProtected(attribute));
|
||||
@@ -471,12 +471,12 @@ Database* ShareObserver::exportIntoContainer(const KeeShareSettings::Reference&
|
||||
return targetDb;
|
||||
}
|
||||
|
||||
const Database* ShareObserver::database() const
|
||||
const QSharedPointer<Database> ShareObserver::database() const
|
||||
{
|
||||
return m_db;
|
||||
}
|
||||
|
||||
Database* ShareObserver::database()
|
||||
QSharedPointer<Database> ShareObserver::database()
|
||||
{
|
||||
return m_db;
|
||||
}
|
||||
|
||||
@@ -38,14 +38,14 @@ class ShareObserver : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ShareObserver(Database* db, QObject* parent = nullptr);
|
||||
explicit ShareObserver(QSharedPointer<Database> db, QObject* parent = nullptr);
|
||||
~ShareObserver();
|
||||
|
||||
void handleDatabaseSaved();
|
||||
void handleDatabaseOpened();
|
||||
|
||||
const Database* database() const;
|
||||
Database* database();
|
||||
const QSharedPointer<Database> database() const;
|
||||
QSharedPointer<Database> database();
|
||||
|
||||
signals:
|
||||
void sharingMessage(QString, MessageWidget::MessageType);
|
||||
@@ -101,7 +101,7 @@ private:
|
||||
void notifyAbout(const QStringList& success, const QStringList& warning, const QStringList& error);
|
||||
|
||||
private:
|
||||
Database* const m_db;
|
||||
QSharedPointer<Database> m_db;
|
||||
QMap<KeeShareSettings::Reference, QPointer<Group>> m_referenceToGroup;
|
||||
QMap<QPointer<Group>, KeeShareSettings::Reference> m_groupToReference;
|
||||
QMap<QString, QPointer<Group>> m_shareToGroup;
|
||||
|
||||
Reference in New Issue
Block a user