File indexing completed on 2023-12-03 08:28:33

0001 /*
0002  * Copyright (C) 2013  Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * This library is free software; you can redistribute it and/or
0005  * modify it under the terms of the GNU Lesser General Public
0006  * License as published by the Free Software Foundation; either
0007  * version 2.1 of the License, or (at your option) any later version.
0008  *
0009  * This library is distributed in the hope that it will be useful,
0010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012  * Lesser General Public License for more details.
0013  *
0014  * You should have received a copy of the GNU Lesser General Public
0015  * License along with this library; if not, write to the Free Software
0016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
0017  *
0018  */
0019 
0020 #include "pending-logger-search-impl.h"
0021 #include "abstract-logger-plugin.h"
0022 
0023 #include "debug.h"
0024 
0025 PendingLoggerSearchImpl::PendingLoggerSearchImpl(const QString& term, QObject* parent):
0026     PendingLoggerSearch(term, parent)
0027 {
0028     if (plugins().isEmpty()) {
0029         emitFinished();
0030         return;
0031     }
0032 
0033     Q_FOREACH (KTp::AbstractLoggerPlugin *plugin, plugins()) {
0034         PendingLoggerOperation *op = plugin->search(term);
0035         if (!op) {
0036             continue;
0037         }
0038 
0039         connect(op, SIGNAL(finished(KTp::PendingLoggerOperation*)),
0040                 this, SLOT(operationFinished(KTp::PendingLoggerOperation*)));
0041         mRunningOps << op;
0042     }
0043 }
0044 
0045 PendingLoggerSearchImpl::~PendingLoggerSearchImpl()
0046 {
0047 }
0048 
0049 void PendingLoggerSearchImpl::operationFinished(KTp::PendingLoggerOperation *op)
0050 {
0051     Q_ASSERT(mRunningOps.contains(op));
0052     mRunningOps.removeAll(op);
0053 
0054     KTp::PendingLoggerSearch *operation = qobject_cast<KTp::PendingLoggerSearch*>(op);
0055     Q_ASSERT(operation);
0056 
0057     const QList<KTp::LogSearchHit> hits = operation->searchHits();
0058     qCDebug(KTP_LOGGER) << "Plugin" << op->parent() << "returned" << hits.count() << "results";
0059     appendSearchHits(hits);
0060 
0061     if (mRunningOps.isEmpty()) {
0062         emitFinished();
0063     }
0064 }