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

Reply via email to