File indexing completed on 2024-05-12 05:12:48

0001 /*
0002  * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  *
0006  */
0007 
0008 #pragma once
0009 
0010 #include <QMap>
0011 #include <QScopedPointer>
0012 #include <QVariant>
0013 #include <QWidget>
0014 
0015 class QDBusArgument;
0016 
0017 namespace Ui
0018 {
0019 class QueryDebugger;
0020 }
0021 
0022 class QueryDebuggerModel;
0023 class QueryTreeModel;
0024 class OrgFreedesktopAkonadiStorageDebuggerInterface;
0025 
0026 struct DbConnection {
0027     qint64 id;
0028     QString name;
0029     qint64 start;
0030     QString trxName;
0031     qint64 transactionStart;
0032 };
0033 
0034 Q_DECLARE_METATYPE(DbConnection)
0035 Q_DECLARE_METATYPE(QList<DbConnection>)
0036 
0037 QDBusArgument &operator<<(QDBusArgument &arg, const DbConnection &con);
0038 const QDBusArgument &operator>>(const QDBusArgument &arg, DbConnection &con);
0039 
0040 class QueryDebugger : public QWidget
0041 {
0042     Q_OBJECT
0043 
0044 public:
0045     explicit QueryDebugger(QWidget *parent = nullptr);
0046     ~QueryDebugger() override;
0047 
0048 private Q_SLOTS:
0049     void debuggerToggled(bool on);
0050     void addQuery(double sequence,
0051                   qint64 connectionId,
0052                   qint64 timestamp,
0053                   uint duration,
0054                   const QString &query,
0055                   const QMap<QString, QVariant> &values,
0056                   int resultsCount,
0057                   const QList<QList<QVariant>> &result,
0058                   const QString &error);
0059     void queryTreeDoubleClicked(const QModelIndex &index);
0060     void clear();
0061     void saveTreeToFile();
0062 
0063 private:
0064     QScopedPointer<Ui::QueryDebugger> mUi;
0065     OrgFreedesktopAkonadiStorageDebuggerInterface *mDebugger = nullptr;
0066 
0067     QueryDebuggerModel *mQueryList = nullptr;
0068     QueryTreeModel *mQueryTree = nullptr;
0069 };