Core: Allow to pass a reason for a failed search

... and make use of it in the LanguageClient.

Change-Id: I7e47a7419c7168c5e26709ae225e4887d4c5089b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Christian Kandeler
2022-09-20 14:07:53 +02:00
parent 380362e75d
commit 5c0cafa68e
5 changed files with 16 additions and 10 deletions

View File

@@ -103,9 +103,9 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
auto messageLayout = new QHBoxLayout(m_messageWidget);
messageLayout->setContentsMargins(2, 2, 2, 2);
m_messageWidget->setLayout(messageLayout);
QLabel *messageLabel = new QLabel(tr("Search was canceled."));
messageLabel->setPalette(pal);
messageLayout->addWidget(messageLabel);
m_messageLabel = new QLabel;
m_messageLabel->setPalette(pal);
messageLayout->addWidget(m_messageLabel);
layout->addWidget(m_messageWidget);
m_messageWidget->setVisible(false);
@@ -435,7 +435,7 @@ void SearchResultWidget::setReplaceEnabled(bool enabled)
m_replaceButton->setEnabled(enabled);
}
void SearchResultWidget::finishSearch(bool canceled)
void SearchResultWidget::finishSearch(bool canceled, const QString &reason)
{
Id sizeWarningId(SIZE_WARNING_ID);
m_infoBar.removeInfo(sizeWarningId);
@@ -444,6 +444,8 @@ void SearchResultWidget::finishSearch(bool canceled)
m_replaceButton->setEnabled(m_count > 0);
m_preserveCaseCheck->setEnabled(m_count > 0);
m_cancelButton->setVisible(false);
if (canceled)
m_messageLabel->setText(reason.isEmpty() ? tr("Search was canceled.") : reason);
m_messageWidget->setVisible(canceled);
m_searchAgainButton->setVisible(m_searchAgainSupported);
m_searching = false;

View File

@@ -70,7 +70,7 @@ public:
void setReplaceEnabled(bool enabled);
public slots:
void finishSearch(bool canceled);
void finishSearch(bool canceled, const QString &reason);
void sendRequestPopup();
signals:
@@ -118,6 +118,7 @@ private:
QWidget *m_descriptionContainer = nullptr;
QLabel *m_label = nullptr;
QLabel *m_searchTerm = nullptr;
QLabel *m_messageLabel = nullptr;
QToolButton *m_cancelButton = nullptr;
QLabel *m_matchesFoundLabel = nullptr;
bool m_preserveCaseSupported = true;

View File

@@ -838,9 +838,9 @@ void SearchResult::setFilter(SearchResultFilter *filter)
Notifies the \uicontrol {Search Results} output pane that the current search
has been \a canceled, and the UI should reflect that.
*/
void SearchResult::finishSearch(bool canceled)
void SearchResult::finishSearch(bool canceled, const QString &reason)
{
m_widget->finishSearch(canceled);
m_widget->finishSearch(canceled, reason);
}
/*!

View File

@@ -58,7 +58,7 @@ public slots:
void addResult(const SearchResultItem &item);
void addResults(const QList<SearchResultItem> &items, AddMode mode);
void setFilter(SearchResultFilter *filter); // Takes ownership
void finishSearch(bool canceled);
void finishSearch(bool canceled, const QString &reason = {});
void setTextToReplace(const QString &textToReplace);
void restart();
void setReplaceEnabled(bool enabled);

View File

@@ -401,8 +401,11 @@ void SymbolSupport::handleRenameResponse(Core::SearchResult *search,
const RenameRequest::Response &response)
{
const std::optional<PrepareRenameRequest::Response::Error> &error = response.error();
if (error.has_value())
QString errorMessage;
if (error.has_value()) {
m_client->log(*error);
errorMessage = error->toString();
}
const std::optional<WorkspaceEdit> &edits = response.result();
if (edits.has_value()) {
@@ -412,7 +415,7 @@ void SymbolSupport::handleRenameResponse(Core::SearchResult *search,
search->setSearchAgainEnabled(false);
search->finishSearch(false);
} else {
search->finishSearch(error.has_value());
search->finishSearch(error.has_value(), errorMessage);
}
}