diff --git a/declarativeimports/krunnermodel/runnermodel.cpp b/declarativeimports/krunnermodel/runnermodel.cpp index b2dff3d01..b2de36a93 100644 --- a/declarativeimports/krunnermodel/runnermodel.cpp +++ b/declarativeimports/krunnermodel/runnermodel.cpp @@ -30,7 +30,8 @@ RunnerModel::RunnerModel(QObject *parent) : QAbstractListModel(parent), m_manager(0), - m_startQueryTimer(new QTimer(this)) + m_startQueryTimer(new QTimer(this)), + m_running(false) { QHash roles; roles.insert(Qt::DisplayRole, "label"); @@ -86,6 +87,11 @@ void RunnerModel::run(int index) } } +bool RunnerModel::isRunning() const +{ + return m_running; +} + QVariant RunnerModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.parent().isValid() || @@ -153,6 +159,8 @@ void RunnerModel::startQuery() //kDebug() << "running query" << query; m_manager->launchQuery(m_pendingQuery); emit queryChanged(); + m_running = true; + emit runningChanged(true); // } } @@ -162,6 +170,8 @@ void RunnerModel::createManager() m_manager = new Plasma::RunnerManager(this); connect(m_manager, SIGNAL(matchesChanged(QList)), this, SLOT(matchesChanged(QList))); + connect(m_manager, SIGNAL(queryFinished()), + this, SLOT(queryHasFinished())); if (!m_pendingRunnersList.isEmpty()) { m_manager->setAllowedRunners(m_pendingRunnersList); @@ -181,5 +191,11 @@ void RunnerModel::matchesChanged(const QList &matches) emit countChanged(); } +void RunnerModel::queryHasFinished() +{ + m_running = false; + emit runningChanged(false); +} + #include "runnermodel.moc" diff --git a/declarativeimports/krunnermodel/runnermodel.h b/declarativeimports/krunnermodel/runnermodel.h index 6258b3775..82e28cb8c 100644 --- a/declarativeimports/krunnermodel/runnermodel.h +++ b/declarativeimports/krunnermodel/runnermodel.h @@ -55,6 +55,11 @@ class RunnerModel : public QAbstractListModel */ Q_PROPERTY(int count READ count NOTIFY countChanged) + /** + * @property bool running: true when queries are in execution + */ + Q_PROPERTY(bool running READ isRunning NOTIFY runningChanged) + public: /** * @enum Roles of the model, they will be accessible from delegates @@ -80,6 +85,8 @@ public: Q_SCRIPTABLE void run(int row); + bool isRunning() const; + int rowCount(const QModelIndex&) const; int count() const; QVariant data(const QModelIndex&, int) const; @@ -91,6 +98,7 @@ Q_SIGNALS: void queryChanged(); void countChanged(); void runnersChanged(); + void runningChanged(bool running); private Q_SLOTS: void startQuery(); @@ -100,6 +108,7 @@ private: private Q_SLOTS: void matchesChanged(const QList &matches); + void queryHasFinished(); private: Plasma::RunnerManager *m_manager; @@ -107,6 +116,7 @@ private: QStringList m_pendingRunnersList; QString m_pendingQuery; QTimer *m_startQueryTimer; + bool m_running; }; #endif