Add an additional filter view, showing installed packages which were selected for installation by the user, not installed as dependencies.
Future work: Why is PickView::views is not an enum? The view button would make more sense as a pop-up menu, allowing a specific filter view to be directly selected, rather than cycling around the possible filter views (and this situation is made worse by adding another filter view) --- PickView.cc | 16 ++++++++++++---- PickView.h | 4 ++-- res.rc | 5 ++++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/PickView.cc b/PickView.cc index 4630ee9..c784a2a 100644 --- a/PickView.cc +++ b/PickView.cc @@ -57,8 +57,9 @@ const PickView::views PickView::views::Unknown (0); const PickView::views PickView::views::PackageFull (1); const PickView::views PickView::views::Package (2); const PickView::views PickView::views::PackageKeeps (3); -const PickView::views PickView::views::PackageSkips = PickView::views (4); -const PickView::views PickView::views::Category (5); +const PickView::views PickView::views::PackageSkips (4); +const PickView::views PickView::views::PackageUserPicked (5); +const PickView::views PickView::views::Category (6); ATOM PickView::WindowClassAtom = 0; @@ -92,7 +93,8 @@ PickView::set_header_column_order (views vm) if (vm == views::Unknown) return -1; else if (vm == views::PackageFull || vm == views::Package - || vm == views::PackageKeeps || vm == views::PackageSkips) + || vm == views::PackageKeeps || vm == views::PackageSkips + || vm == views::PackageUserPicked) { headers = pkg_headers; current_col = 0; @@ -197,7 +199,11 @@ PickView::setViewMode (views mode) // "Not installed" || (view_mode == PickView::views::PackageSkips && - (!pkg.desired && !pkg.installed))) + (!pkg.desired && !pkg.installed)) + + // "UserPick" : installed packages that were picked by user + || (view_mode == PickView::views::PackageUserPicked && + (pkg.installed && pkg.user_picked))) { // Filter by package name if (packageFilterString.empty () @@ -246,6 +252,8 @@ PickView::views::caption () case 4: return "Not Installed"; case 5: + return "Picked"; + case 6: return "Category"; default: return ""; diff --git a/PickView.h b/PickView.h index 0ce7581..fd20dc9 100644 --- a/PickView.h +++ b/PickView.h @@ -104,15 +104,15 @@ public: static const views Package; static const views PackageKeeps; static const views PackageSkips; + static const views PackageUserPicked; static const views Category; - static const views NView; views ():_value (0) { }; views (int aInt) { _value = aInt; - if (_value < 0 || _value > 5) + if (_value < 0 || _value > 6) _value = 0; } views & operator++ (); diff --git a/res.rc b/res.rc index f1cf406..de75da8 100644 --- a/res.rc +++ b/res.rc @@ -551,7 +551,10 @@ BEGIN "are at the desired version already.\r\n" "\r\n" "Not installed: Show packages that are are not currently installed " - "and haven't been selected for installation." + "and haven't been selected for installation.\r\n" + "\r\n" + "Picked: Show installed packages that were selected, not installed " + "as a dependency." IDS_HIDEOBS_TOOLTIP "If selected, setup will hide packages in categories " "with names that begin with '_'. Such packages are usually empty " "placeholders for packages that have been removed or renamed, or are " -- 2.8.3