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"