File indexing completed on 2024-04-28 05:48:41
0001 /* 0002 SPDX-FileCopyrightText: 2010 Marco Mentasti <marcomentasti@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #pragma once 0008 0009 class ConnectionModel; 0010 class KConfigGroup; 0011 class QUrl; 0012 0013 #include "connection.h" 0014 #include <KWallet> 0015 #include <QSqlQuery> 0016 #include <QUrl> 0017 0018 class SQLManager : public QObject 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 explicit SQLManager(QObject *parent = nullptr); 0024 ~SQLManager() override; 0025 0026 ConnectionModel *connectionModel(); 0027 void createConnection(const Connection &conn); 0028 static bool testConnection(const Connection &conn, QSqlError &error); 0029 bool isValidAndOpen(const QString &connection); 0030 0031 KWallet::Wallet *openWallet(); 0032 int storeCredentials(const Connection &conn); 0033 int readCredentials(const QString &name, QString &password); 0034 static const int K_WALLET_CONNECTION_SUCCESSFUL = 0; 0035 static const int K_WALLET_CONNECTION_ERROR = -1; 0036 static const int K_WALLET_CONNECTION_REJECTED_BY_USER = -2; 0037 0038 public Q_SLOTS: 0039 void removeConnection(const QString &name); 0040 void reopenConnection(const QString &name); 0041 void loadConnections(const KConfigGroup &connectionsGroup); 0042 void saveConnections(KConfigGroup *connectionsGroup); 0043 void runQuery(const QString &text, const QString &connection); 0044 0045 protected: 0046 static void saveConnection(KConfigGroup *connectionsGroup, const Connection &conn); 0047 0048 Q_SIGNALS: 0049 void connectionCreated(const QString &name); 0050 void connectionRemoved(const QString &name); 0051 void connectionAboutToBeClosed(const QString &name); 0052 0053 void queryActivated(QSqlQuery &query, const QString &connection); 0054 0055 void error(const QString &message); 0056 void success(const QString &message); 0057 0058 private: 0059 ConnectionModel *m_model; 0060 KWallet::Wallet *m_wallet = nullptr; 0061 };