File indexing completed on 2024-05-05 05:37:09

0001 /*
0002  *   SPDX-FileCopyrightText: 2007 Aaron Seigo <aseigo@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef ENGINEEXPLORER_H
0008 #define ENGINEEXPLORER_H
0009 
0010 class QStandardItemModel;
0011 class QStandardItem;
0012 
0013 #include <QDialog>
0014 
0015 #include <Plasma5Support/DataEngine>
0016 
0017 #include "ui_engineexplorer.h"
0018 
0019 namespace Plasma5Support
0020 {
0021 class DataEngine;
0022 class PluginLoader;
0023 } // namespace Plasma
0024 
0025 class QPushButton;
0026 
0027 class EngineExplorer : public QDialog, public Ui::EngineExplorer
0028 {
0029     Q_OBJECT
0030 
0031 public:
0032     explicit EngineExplorer(QWidget *parent = nullptr);
0033     ~EngineExplorer() override;
0034 
0035     void setApp(const QString &app);
0036     void setEngine(const QString &engine);
0037     void setInterval(const int interval);
0038     void requestSource(const QString &source);
0039 
0040     static QString convertToString(const QVariant &value);
0041 
0042 public Q_SLOTS:
0043     void dataUpdated(const QString &source, const Plasma5Support::DataEngine::Data &data);
0044 
0045 private Q_SLOTS:
0046     void showEngine(const QString &engine);
0047     void addSource(const QString &source);
0048     void removeSource(const QString &source);
0049     void requestSource();
0050     void requestServiceForSource();
0051     void showDataContextMenu(const QPoint &point);
0052     void cleanUp();
0053 
0054 private:
0055     void listEngines();
0056     int showData(QStandardItem *parent, Plasma5Support::DataEngine::Data data);
0057     void showData(QStandardItem *parent, int row, const QString &key, const QVariant &value);
0058     int showContainerData(QStandardItem *parent, QStandardItem *current, int row, const char *typeName, const QList<QVariantMap> &list);
0059     int showContainerData(QStandardItem *parent, QStandardItem *current, int row, const char *typeName, const QVariantList &list);
0060     int showContainerData(QStandardItem *parent, QStandardItem *current, int row, const char *typeName, const QVariantMap &map);
0061     void updateTitle();
0062     void enableButtons(bool enable);
0063     void removeExtraRows(QStandardItem *parent, int preserve);
0064 
0065     QStandardItemModel *m_dataModel;
0066     QString m_app;
0067     QString m_engineName;
0068     Plasma5Support::DataEngine *m_engine;
0069     int m_sourceCount;
0070     bool m_requestingSource;
0071     QPushButton *m_expandButton;
0072     QPushButton *m_collapseButton;
0073 };
0074 
0075 #endif // multiple inclusion guard