Warning, file /pim/akonadi-search/debug/akonadisearchdebugwidget.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002   SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "akonadisearchdebugwidget.h"
0008 #include "akonadisearchsyntaxhighlighter.h"
0009 #include "job/akonadisearchdebugsearchjob.h"
0010 #include <KLineEdit>
0011 #include <QPushButton>
0012 
0013 #include <QLabel>
0014 #include <QVBoxLayout>
0015 
0016 #include <QPlainTextEdit>
0017 
0018 using namespace Akonadi::Search;
0019 
0020 AkonadiSearchDebugWidget::AkonadiSearchDebugWidget(QWidget *parent)
0021     : QWidget(parent)
0022     , mPlainTextEditor(new QPlainTextEdit(this))
0023     , mSearchPathComboBox(new Akonadi::Search::AkonadiSearchDebugSearchPathComboBox(this))
0024     , mLineEdit(new KLineEdit(this))
0025     , mSearchButton(new QPushButton(QStringLiteral("Search"), this))
0026 {
0027     auto mainLayout = new QVBoxLayout(this);
0028 
0029     auto hbox = new QHBoxLayout;
0030     mainLayout->addLayout(hbox);
0031     auto lab = new QLabel(QStringLiteral("Item identifier:"), this);
0032     hbox->addWidget(lab);
0033     mLineEdit->setTrapReturnKey(true);
0034     mLineEdit->setClearButtonEnabled(true);
0035     mLineEdit->setObjectName(QLatin1StringView("lineedit"));
0036     connect(mLineEdit, &KLineEdit::textChanged, this, &AkonadiSearchDebugWidget::slotSearchLineTextChanged);
0037     hbox->addWidget(mLineEdit);
0038 
0039     hbox->addWidget(mSearchPathComboBox);
0040     mSearchPathComboBox->setObjectName(QLatin1StringView("searchpathcombo"));
0041 
0042     mSearchButton->setObjectName(QLatin1StringView("searchbutton"));
0043     connect(mSearchButton, &QPushButton::clicked, this, &AkonadiSearchDebugWidget::slotSearch);
0044     hbox->addWidget(mSearchButton);
0045     mSearchButton->setEnabled(false);
0046 
0047     new AkonadiSearchSyntaxHighlighter(mPlainTextEditor->document());
0048     mPlainTextEditor->setReadOnly(true);
0049     mainLayout->addWidget(mPlainTextEditor);
0050     mPlainTextEditor->setObjectName(QLatin1StringView("plaintexteditor"));
0051 
0052     connect(mLineEdit, &KLineEdit::returnPressed, this, &AkonadiSearchDebugWidget::slotSearch);
0053 }
0054 
0055 AkonadiSearchDebugWidget::~AkonadiSearchDebugWidget() = default;
0056 
0057 void AkonadiSearchDebugWidget::slotSearchLineTextChanged(const QString &text)
0058 {
0059     mSearchButton->setEnabled(!text.trimmed().isEmpty());
0060 }
0061 
0062 void AkonadiSearchDebugWidget::setAkonadiId(Akonadi::Item::Id akonadiId)
0063 {
0064     mLineEdit->setText(QString::number(akonadiId));
0065 }
0066 
0067 void AkonadiSearchDebugWidget::setSearchType(AkonadiSearchDebugSearchPathComboBox::SearchType type)
0068 {
0069     mSearchPathComboBox->setSearchType(type);
0070 }
0071 
0072 void AkonadiSearchDebugWidget::doSearch()
0073 {
0074     slotSearch();
0075 }
0076 
0077 QString AkonadiSearchDebugWidget::plainText() const
0078 {
0079     return QStringLiteral("Item: %1\n").arg(mLineEdit->text()) + mPlainTextEditor->toPlainText();
0080 }
0081 
0082 void AkonadiSearchDebugWidget::slotSearch()
0083 {
0084     const QString searchId = mLineEdit->text();
0085     if (searchId.isEmpty()) {
0086         return;
0087     }
0088     auto job = new Akonadi::Search::AkonadiSearchDebugSearchJob(this);
0089     job->setAkonadiId(searchId);
0090     job->setSearchPath(mSearchPathComboBox->searchPath());
0091     connect(job, &Akonadi::Search::AkonadiSearchDebugSearchJob::result, this, &AkonadiSearchDebugWidget::slotResult);
0092     connect(job, &Akonadi::Search::AkonadiSearchDebugSearchJob::error, this, &AkonadiSearchDebugWidget::slotError);
0093     job->start();
0094 }
0095 
0096 void AkonadiSearchDebugWidget::slotResult(const QString &result)
0097 {
0098     mPlainTextEditor->setPlainText(result);
0099 }
0100 
0101 void AkonadiSearchDebugWidget::slotError(const QString &errorStr)
0102 {
0103     mPlainTextEditor->setPlainText(QStringLiteral("Error found:\n") + errorStr);
0104 }
0105 
0106 #include "moc_akonadisearchdebugwidget.cpp"