SearchResultWidget: Disable replace button if replace text is unchanged

To avoid unneeded file rename operations when the "Rename x files"
checkbox is checked.

Change-Id: I3fc8b1607979bdfcdd7a3f2d3cf172350f7ca758
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Andre Hartmann
2017-07-27 21:14:55 +02:00
committed by André Hartmann
parent 941af98716
commit e75f595873
2 changed files with 15 additions and 2 deletions

View File

@@ -210,6 +210,8 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
this, &SearchResultWidget::handleReplaceButton); this, &SearchResultWidget::handleReplaceButton);
connect(m_replaceButton, &QAbstractButton::clicked, connect(m_replaceButton, &QAbstractButton::clicked,
this, &SearchResultWidget::handleReplaceButton); this, &SearchResultWidget::handleReplaceButton);
connect(m_replaceTextEdit, &QLineEdit::textChanged,
this, &SearchResultWidget::handleReplaceEditTextChanged);
} }
SearchResultWidget::~SearchResultWidget() SearchResultWidget::~SearchResultWidget()
@@ -304,6 +306,7 @@ void SearchResultWidget::setSupportsReplace(bool replaceSupported, const QString
void SearchResultWidget::setTextToReplace(const QString &textToReplace) void SearchResultWidget::setTextToReplace(const QString &textToReplace)
{ {
m_replaceText = textToReplace;
m_replaceTextEdit->setText(textToReplace); m_replaceTextEdit->setText(textToReplace);
} }
@@ -406,7 +409,6 @@ void SearchResultWidget::goToPrevious()
void SearchResultWidget::restart() void SearchResultWidget::restart()
{ {
m_replaceTextEdit->setEnabled(false); m_replaceTextEdit->setEnabled(false);
m_replaceButton->setEnabled(false);
m_searchResultTreeView->clear(); m_searchResultTreeView->clear();
m_count = 0; m_count = 0;
Id sizeWarningId(SIZE_WARNING_ID); Id sizeWarningId(SIZE_WARNING_ID);
@@ -416,6 +418,7 @@ void SearchResultWidget::restart()
m_searchAgainButton->setVisible(false); m_searchAgainButton->setVisible(false);
m_messageWidget->setVisible(false); m_messageWidget->setVisible(false);
updateMatchesFoundLabel(); updateMatchesFoundLabel();
handleReplaceEditTextChanged();
emit restarted(); emit restarted();
} }
@@ -436,7 +439,6 @@ void SearchResultWidget::finishSearch(bool canceled)
m_infoBar.removeInfo(sizeWarningId); m_infoBar.removeInfo(sizeWarningId);
m_infoBar.enableInfo(sizeWarningId); m_infoBar.enableInfo(sizeWarningId);
m_replaceTextEdit->setEnabled(m_count > 0); m_replaceTextEdit->setEnabled(m_count > 0);
m_replaceButton->setEnabled(m_count > 0);
m_preserveCaseCheck->setEnabled(m_count > 0); m_preserveCaseCheck->setEnabled(m_count > 0);
m_cancelButton->setVisible(false); m_cancelButton->setVisible(false);
m_messageWidget->setVisible(canceled); m_messageWidget->setVisible(canceled);
@@ -461,6 +463,15 @@ void SearchResultWidget::cancelAfterSizeWarning()
emit paused(false); emit paused(false);
} }
void SearchResultWidget::handleReplaceEditTextChanged()
{
const bool enabled = m_replaceTextEdit->text() != m_replaceText;
m_replaceButton->setEnabled(enabled);
m_replaceButton->setToolTip(enabled
? QString()
: tr("Cannot replace because replacement text is unchanged."));
}
void SearchResultWidget::handleJumpToSearchResult(const SearchResultItem &item) void SearchResultWidget::handleJumpToSearchResult(const SearchResultItem &item)
{ {
emit activated(item); emit activated(item);

View File

@@ -115,6 +115,7 @@ private:
void setShowReplaceUI(bool visible); void setShowReplaceUI(bool visible);
void continueAfterSizeWarning(); void continueAfterSizeWarning();
void cancelAfterSizeWarning(); void cancelAfterSizeWarning();
void handleReplaceEditTextChanged();
QList<SearchResultItem> checkedItems() const; QList<SearchResultItem> checkedItems() const;
void updateMatchesFoundLabel(); void updateMatchesFoundLabel();
@@ -141,6 +142,7 @@ private:
bool m_isShowingReplaceUI = false; bool m_isShowingReplaceUI = false;
bool m_searchAgainSupported = false; bool m_searchAgainSupported = false;
bool m_replaceSupported = false; bool m_replaceSupported = false;
QString m_replaceText;
}; };
} // Internal } // Internal