From 46ef01d4e4cb23b68771278e2fc1f8017a8e64fb Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sun, 3 Apr 2016 01:01:14 -0400 Subject: [PATCH] Improved design of category selection in SelectProductDialog. --- glabels/SelectProductDialog.cpp | 47 ++++++--------- glabels/SelectProductDialog.h | 2 +- glabels/ui/SelectProductDialog.ui | 99 +++++++++++++++++++++++-------- 3 files changed, 93 insertions(+), 55 deletions(-) diff --git a/glabels/SelectProductDialog.cpp b/glabels/SelectProductDialog.cpp index 67f0c31..976e01f 100644 --- a/glabels/SelectProductDialog.cpp +++ b/glabels/SelectProductDialog.cpp @@ -39,14 +39,17 @@ SelectProductDialog::SelectProductDialog( QWidget *parent ) pageSizeUsCheck->setChecked( Settings::searchUsPaperSizes() ); pageSizeOtherCheck->setChecked( Settings::searchOtherPaperSizes() ); - anyCategoryCheck->setChecked( Settings::searchAllCategories() ); - mCategoryIdList = Settings::searchCategoryList(); + allCategoriesRadio->setChecked( Settings::searchAllCategories() ); + selectedCategoriesRadio->setChecked( !Settings::searchAllCategories() ); + categoriesCheckContainer->setEnabled( !Settings::searchAllCategories() ); + mCategoryIdList = Settings::searchCategoryList(); + QList categories = glabels::Db::categories(); foreach ( glabels::Category *category, categories ) { QCheckBox* check = new QCheckBox( category->name() ); - check->setChecked( mCategoryIdList.contains( category->id() ) || anyCategoryCheck->isChecked() ); + check->setChecked( mCategoryIdList.contains( category->id() ) ); categoriesLayout->addWidget( check ); mCheckToCategoryMap[check] = category->id(); @@ -61,7 +64,7 @@ SelectProductDialog::SelectProductDialog( QWidget *parent ) pageSizeIsoCheck->isChecked(), pageSizeUsCheck->isChecked(), pageSizeOtherCheck->isChecked(), - anyCategoryCheck->isChecked(), + allCategoriesRadio->isChecked(), mCategoryIdList ); } @@ -90,7 +93,7 @@ void SelectProductDialog::onSearchEntryTextChanged() pageSizeIsoCheck->isChecked(), pageSizeUsCheck->isChecked(), pageSizeOtherCheck->isChecked(), - anyCategoryCheck->isChecked(), + allCategoriesRadio->isChecked(), mCategoryIdList ); } @@ -117,32 +120,27 @@ void SelectProductDialog::onPageSizeCheckClicked() pageSizeIsoCheck->isChecked(), pageSizeUsCheck->isChecked(), pageSizeOtherCheck->isChecked(), - anyCategoryCheck->isChecked(), + allCategoriesRadio->isChecked(), mCategoryIdList ); } /// -/// Any category Check Clicked Slot +/// Category Radio Clicked Slot /// -void SelectProductDialog::onAnyCategoryCheckClicked() +void SelectProductDialog::onCategoryRadioClicked() { - if ( anyCategoryCheck->isChecked() ) - { - foreach( QCheckBox* check, mCheckToCategoryMap.keys() ) - { - check->setChecked( true ); - } - } - + categoriesCheckContainer->setEnabled( selectedCategoriesRadio->isChecked() ); loadCategoryList(); templatePicker->applyFilter( searchEntry->text(), pageSizeIsoCheck->isChecked(), pageSizeUsCheck->isChecked(), pageSizeOtherCheck->isChecked(), - anyCategoryCheck->isChecked(), + allCategoriesRadio->isChecked(), mCategoryIdList ); + + Settings::setSearchAllCategories( allCategoriesRadio->isChecked() ); } @@ -151,21 +149,17 @@ void SelectProductDialog::onAnyCategoryCheckClicked() /// void SelectProductDialog::onCategoryCheckClicked() { - bool allFlag = true; - foreach( QCheckBox* check, mCheckToCategoryMap.keys() ) - { - allFlag = allFlag && check->isChecked(); - } - anyCategoryCheck->setChecked( allFlag ); - loadCategoryList(); templatePicker->applyFilter( searchEntry->text(), pageSizeIsoCheck->isChecked(), pageSizeUsCheck->isChecked(), pageSizeOtherCheck->isChecked(), - anyCategoryCheck->isChecked(), + allCategoriesRadio->isChecked(), mCategoryIdList ); + + + Settings::setSearchCategoryList( mCategoryIdList ); } @@ -213,7 +207,4 @@ void SelectProductDialog::loadCategoryList() mCategoryIdList.append( mCheckToCategoryMap[check] ); } } - - Settings::setSearchAllCategories( anyCategoryCheck->isChecked() ); - Settings::setSearchCategoryList( mCategoryIdList ); } diff --git a/glabels/SelectProductDialog.h b/glabels/SelectProductDialog.h index bd2acec..75da7f4 100644 --- a/glabels/SelectProductDialog.h +++ b/glabels/SelectProductDialog.h @@ -53,7 +53,7 @@ private slots: void onSearchEntryTextChanged(); void onSearchClearButtonClicked(); void onPageSizeCheckClicked(); - void onAnyCategoryCheckClicked(); + void onCategoryRadioClicked(); void onCategoryCheckClicked(); void onTemplatePickerSelectionChanged(); void onCancelButtonClicked(); diff --git a/glabels/ui/SelectProductDialog.ui b/glabels/ui/SelectProductDialog.ui index d124788..4ba5667 100644 --- a/glabels/ui/SelectProductDialog.ui +++ b/glabels/ui/SelectProductDialog.ui @@ -6,8 +6,8 @@ 0 0 - 967 - 660 + 987 + 661 @@ -34,6 +34,12 @@ 0 + + + 180 + 0 + + Search @@ -94,6 +100,9 @@ false + + 3 + @@ -123,23 +132,45 @@ Filter by category - - - - - - - - 50 - false - - - - All categories - - - - + + + 3 + + + + + All + + + + + + + Selected + + + + + + + + 0 + + + 0 + + + + + 3 + + + 20 + + + + + @@ -320,18 +351,34 @@ - anyCategoryCheck + allCategoriesRadio clicked() SelectProductDialog - onAnyCategoryCheckClicked() + onCategoryRadioClicked() - 31 - 234 + 36 + 226 - -7 - 240 + -5 + 223 + + + + + selectedCategoriesRadio + clicked() + SelectProductDialog + onCategoryRadioClicked() + + + 32 + 246 + + + 1 + 252 @@ -344,6 +391,6 @@ onCancelButtonClicked() onSelectButtonClicked() onPageSizeCheckClicked() - onAnyCategoryCheckClicked() + onCategoryRadioClicked()