From 7908800e149d0bed5c1f83e2f43937a39abd46d4 Mon Sep 17 00:00:00 2001 From: Trevor SANDY Date: Wed, 19 Apr 2023 13:07:46 +0200 Subject: [PATCH] Add match case button --- common/lc_partselectionwidget.cpp | 22 ++++++++++++++++++++-- common/lc_partselectionwidget.h | 2 ++ leocad.qrc | 5 +++-- resources/case.png | Bin 0 -> 1031 bytes 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 resources/case.png 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 0000000000000000000000000000000000000000..9c24a2d44dc1ac43eab9db75065fc2e5aa8e2f07 GIT binary patch literal 1031 zcmV+i1o-=jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1Dr`jK~z{r?NwW7 zR7V(|bLO1vg_@0pCIx9h1BHmU286!#!Paaet%BfP0>zgiB^VKeK9<^-ltuBWAU082 zrM{@BMDf9=AjV4(L9&YRW!+{sn{3YJT=sIN-#?j+i9LGaL&(d1@GGXNnY{s^k<2cN+N{i$`Dy1_#bskm(DQ;fd#YB-t8_J$KPJ4TBkmk%HY9jYcquF>dfX zn06KA=wGp-S(c2zIhS%1so$0Cmfu550JOvFDKcV}N@b4Kd3~Y>RZuRL&*!@KAL!{% zBwEz;#UoIGbAx}#7SQs!oTw{6Y8a-;49=wj8#Zp7b<(ususf^Os)@v6=uhG^%}YQP zU+3K7x~_e_HMv*$QzH?Wz8`ouH|Fh38dT zQS$GjxG6EH1i$TNukx814@6iA4uKaC=p^l&q{mgnE_pXLa~We7!8kb*@O_IAem{QK zlq?RQ_yLOas^LHcmSCyzUWah0(MX_y29_C&{Rbtp?-txem=yp3002ovPDHLkV1fYA B^m+gQ literal 0 HcmV?d00001