diff --git a/common/lc_partselectionwidget.cpp b/common/lc_partselectionwidget.cpp
index 9b9efbc6..51570adc 100644
--- a/common/lc_partselectionwidget.cpp
+++ b/common/lc_partselectionwidget.cpp
@@ -734,7 +734,7 @@ lcPartSelectionWidget::lcPartSelectionWidget(QWidget* Parent)
CategoriesGroupWidget->setLayout(CategoriesLayout);
QHBoxLayout* FilterCategoriesLayout = new QHBoxLayout();
- FilterCategoriesLayout->setContentsMargins(0, 0, 6, 0);
+ FilterCategoriesLayout->setContentsMargins(0, 0, 0, 0);
CategoriesLayout->addLayout(FilterCategoriesLayout);
mFilterCategoriesWidget = new QLineEdit(CategoriesGroupWidget);
@@ -743,6 +743,17 @@ lcPartSelectionWidget::lcPartSelectionWidget(QWidget* Parent)
connect(mFilterCategoriesAction, SIGNAL(triggered()), this, SLOT(FilterCategoriesTriggered()));
FilterCategoriesLayout->addWidget(mFilterCategoriesWidget);
+ mFilterCaseAction = new QAction();
+ mFilterCaseAction->setIcon(QIcon(":/resources/case.png"));
+ mFilterCaseAction->setToolTip(tr("Match Case"));
+ mFilterCaseAction->setCheckable(true);
+ mFilterCaseAction->setChecked(false);
+ connect(mFilterCaseAction, SIGNAL(triggered()), this, SLOT(FilterCaseTriggered()));
+
+ QToolButton* FilterCaseButton = new QToolButton();
+ FilterCaseButton->setDefaultAction(mFilterCaseAction);
+ FilterCategoriesLayout->addWidget(FilterCaseButton);
+
mCategoriesWidget = new QTreeWidget(mSplitter);
mCategoriesWidget->setHeaderHidden(true);
mCategoriesWidget->setUniformRowHeights(true);
@@ -885,12 +896,13 @@ void lcPartSelectionWidget::FilterCategoriesChanged(const QString& Text)
}
bool Hide = true;
+ Qt::CaseSensitivity MatchCase = mFilterCaseAction->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
mCategoriesWidget->setUpdatesEnabled(false);
for (int CategoryIdx = 0; CategoryIdx < mCategoriesWidget->topLevelItemCount(); CategoryIdx++)
{
QTreeWidgetItem* CategoryItem = mCategoriesWidget->topLevelItem(CategoryIdx);
Hide = false;
- if (!CategoryItem->text(0).contains(Text, Qt::CaseInsensitive))
+ if (!CategoryItem->text(0).contains(Text, MatchCase))
Hide = true;
CategoryItem->setHidden(Hide);
}
@@ -916,6 +928,12 @@ void lcPartSelectionWidget::FilterCategoriesTriggered()
mFilterCategoriesWidget->clear();
}
+void lcPartSelectionWidget::FilterCaseTriggered()
+{
+ if (!mFilterCategoriesWidget->text().isEmpty())
+ FilterCategoriesChanged(mFilterCategoriesWidget->text());
+}
+
void lcPartSelectionWidget::FilterTriggered()
{
mFilterWidget->clear();
diff --git a/common/lc_partselectionwidget.h b/common/lc_partselectionwidget.h
index 1f97ab4b..bda09014 100644
--- a/common/lc_partselectionwidget.h
+++ b/common/lc_partselectionwidget.h
@@ -232,6 +232,7 @@ protected slots:
void FilterChanged(const QString& Text);
void FilterCategoriesChanged(const QString& Text);
void FilterTriggered();
+ void FilterCaseTriggered();
void FilterCategoriesTriggered();
void CategoryChanged(QTreeWidgetItem* Current, QTreeWidgetItem* Previous);
void PartChanged(const QModelIndex& Current, const QModelIndex& Previous);
@@ -248,6 +249,7 @@ protected:
QTreeWidget* mCategoriesWidget;
QLineEdit* mFilterCategoriesWidget;
QAction* mFilterCategoriesAction;
+ QAction* mFilterCaseAction;
QLineEdit* mFilterWidget;
QAction* mFilterAction;
lcPartSelectionListView* mPartsWidget;
diff --git a/leocad.qrc b/leocad.qrc
index 75d84a9d..c5ebff8f 100644
--- a/leocad.qrc
+++ b/leocad.qrc
@@ -78,7 +78,6 @@
resources/file_print.png
resources/file_print_preview.png
resources/file_save.png
- resources/filter.png
resources/time_first.png
resources/time_last.png
resources/time_next.png
@@ -135,7 +134,9 @@
resources/shaders/unlit_vertex_color_vs.glsl
resources/shaders/unlit_view_sphere_ps.glsl
resources/shaders/unlit_view_sphere_vs.glsl
- resources/gear_in.png
+ resources/case.png
+ resources/filter.png
resources/flexible.png
+ resources/gear_in.png
diff --git a/resources/case.png b/resources/case.png
new file mode 100644
index 00000000..9c24a2d4
Binary files /dev/null and b/resources/case.png differ