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