diff --git a/src/ui/TreeWidget.cpp b/src/ui/TreeWidget.cpp index fceb47eee..abe0987a6 100644 --- a/src/ui/TreeWidget.cpp +++ b/src/ui/TreeWidget.cpp @@ -56,9 +56,12 @@ TreeWidget::TreeWidget(const git::Repository &repo, QWidget *parent) connect(mSearch, &QLineEdit::textChanged, this, &TreeWidget::search); mcbRegex = new QCheckBox(tr("Regex"), this); connect(mcbRegex, &QCheckBox::clicked, this, &TreeWidget::search); + mcbCaseSensitive = new QCheckBox(tr("Case Sensitive"), this); + connect(mcbCaseSensitive, &QCheckBox::clicked, this, &TreeWidget::search); QHBoxLayout *l = new QHBoxLayout(); l->addWidget(mLabelSearch); l->addWidget(mSearch); + l->addWidget(mcbCaseSensitive); l->addWidget(mcbRegex); mSearchResults = new QListWidget(this); @@ -170,25 +173,30 @@ void TreeWidget::search() { return; bool regex = mcbRegex->isChecked(); + bool caseSensitive = mcbCaseSensitive->isChecked(); - QRegularExpression re(pattern, QRegularExpression::CaseInsensitiveOption); + QRegularExpression re( + pattern, caseSensitive ? QRegularExpression::NoPatternOption + : QRegularExpression::CaseInsensitiveOption); mSuppressIndexChange = true; mSearchResults->clear(); - searchFiles(re, regex); + searchFiles(re, regex, caseSensitive); mSuppressIndexChange = false; } void TreeWidget::searchFiles(const QRegularExpression &re, bool regex, - const QModelIndex &parent) { + bool caseSensitive, const QModelIndex &parent) { for (int row = 0; row < mModel->rowCount(parent); row++) { const auto index = mModel->index(row, 0, QModelIndex(parent)); if (mModel->rowCount(index) > 0) { // folder - searchFiles(re, regex, index); + searchFiles(re, regex, caseSensitive, index); } else { // file const QString name = mModel->data(index, Qt::EditRole).toString(); - if ((!regex && name.contains(re.pattern())) || + if ((!regex && + name.contains(re.pattern(), caseSensitive ? Qt::CaseSensitive + : Qt::CaseInsensitive)) || (regex && re.match(name).hasMatch())) { QListWidgetItem *item = new QListWidgetItem(name, mSearchResults); item->setData(Qt::UserRole, index); diff --git a/src/ui/TreeWidget.h b/src/ui/TreeWidget.h index 4d3517f11..e759e83ed 100644 --- a/src/ui/TreeWidget.h +++ b/src/ui/TreeWidget.h @@ -55,7 +55,7 @@ private slots: private: void edit(const QModelIndex &index); - void searchFiles(const QRegularExpression &re, bool regex, + void searchFiles(const QRegularExpression &re, bool regex, bool caseSensitive, const QModelIndex &parent = QModelIndex()); void loadEditorContent(const QModelIndex &index); @@ -63,6 +63,7 @@ private slots: QLabel *mLabelSearch; QCheckBox *mcbRegex; + QCheckBox *mcbCaseSensitive; QLineEdit *mSearch; QListWidget *mSearchResults; ColumnView *mView;