author | eilers <eilers> | 2003-08-08 14:45:49 (UTC) |
---|---|---|
committer | eilers <eilers> | 2003-08-08 14:45:49 (UTC) |
commit | 14d394e6c107b037a09a31a92605034fe50f7813 (patch) (unidiff) | |
tree | 800699cf4dc9681c3eb023340634dd6a15fd04c8 /library/categorymenu.cpp | |
parent | dbc6ea35f5535a1f69deb7ebbafc0f721721dbf2 (diff) | |
download | opie-14d394e6c107b037a09a31a92605034fe50f7813.zip opie-14d394e6c107b037a09a31a92605034fe50f7813.tar.gz opie-14d394e6c107b037a09a31a92605034fe50f7813.tar.bz2 |
Merged branches from BRANCH_1_0
-rw-r--r-- | library/categorymenu.cpp | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/library/categorymenu.cpp b/library/categorymenu.cpp index e733107..5d7adf7 100644 --- a/library/categorymenu.cpp +++ b/library/categorymenu.cpp | |||
@@ -21,27 +21,62 @@ | |||
21 | #include "categorymenu.h" | 21 | #include "categorymenu.h" |
22 | #include "backend/categories.h" | 22 | #include "backend/categories.h" |
23 | #include "categoryselect.h" | 23 | #include "categoryselect.h" |
24 | #include <qstring.h> | 24 | #include <qstring.h> |
25 | #include <qmap.h> | 25 | #include <qmap.h> |
26 | 26 | ||
27 | /*! | ||
28 | \class CategoryMenu | ||
29 | \brief The CategoryMenu widget aids in filtering records or files by Category. | ||
30 | |||
31 | The CategoryMenu widget provides a popup menu that will make filtering records | ||
32 | or files by category much easier. The widget will lookup the available | ||
33 | categories for an application, populate the menu, and keep a track of which | ||
34 | categories are being filtered against. A set of categories can be tested | ||
35 | by the isSelected() function to see if a record or file containing those | ||
36 | categories would be allowed through by the filter. | ||
37 | |||
38 | \warning Currently this class is not suitable for extending. | ||
39 | |||
40 | \ingroup qtopiaemb | ||
41 | */ | ||
42 | |||
43 | /*! | ||
44 | \fn void CategoryMenu::categoryChange() | ||
45 | This signal is emitted when the user selects a different category in the | ||
46 | menu, hence changing what records or files should be selected. | ||
47 | */ | ||
48 | |||
49 | /*! | ||
50 | Creates a new CategoryMenu with \a parent and \a name. The menu will be | ||
51 | populated with the available categories for \a application. | ||
52 | |||
53 | If \a globals is TRUE then it will also poplulate the menu with the | ||
54 | global categories. | ||
55 | */ | ||
27 | CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE, | 56 | CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE, |
28 | QWidget *parent, const char *name ) : | 57 | QWidget *parent, const char *name ) : |
29 | QPopupMenu(parent, name), | 58 | QPopupMenu(parent, name), |
30 | appName(n), | 59 | appName(n), |
31 | includeGlobal(ig) | 60 | includeGlobal(ig) |
32 | { | 61 | { |
33 | currentMid = 1; | 62 | currentMid = 1; |
34 | reload(); | 63 | reload(); |
35 | connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int))); | 64 | connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int))); |
36 | } | 65 | } |
37 | 66 | ||
38 | CategoryMenu::~CategoryMenu( ) | 67 | /*! |
68 | Destroys a CategoryMenu. | ||
69 | */ | ||
70 | CategoryMenu::~CategoryMenu( ) | ||
39 | { | 71 | { |
40 | } | 72 | } |
41 | 73 | ||
74 | /*! | ||
75 | Repopulates the widget's list of available categories. | ||
76 | */ | ||
42 | void CategoryMenu::reload() | 77 | void CategoryMenu::reload() |
43 | { | 78 | { |
44 | clear(); | 79 | clear(); |
45 | Categories c; | 80 | Categories c; |
46 | 81 | ||
47 | c.load(categoryFileName()); | 82 | c.load(categoryFileName()); |
@@ -63,48 +98,65 @@ void CategoryMenu::reload() | |||
63 | mid++; | 98 | mid++; |
64 | } | 99 | } |
65 | 100 | ||
66 | setItemChecked(currentMid, TRUE ); | 101 | setItemChecked(currentMid, TRUE ); |
67 | } | 102 | } |
68 | 103 | ||
69 | void CategoryMenu::mapMenuId(int id) | 104 | /*! |
105 | \internal | ||
106 | */ | ||
107 | void CategoryMenu::mapMenuId(int id) | ||
70 | { | 108 | { |
71 | if (id == currentMid) | 109 | if (id == currentMid) |
72 | return; | 110 | return; |
73 | setItemChecked( currentMid, FALSE ); | 111 | setItemChecked( currentMid, FALSE ); |
74 | setItemChecked( id, TRUE ); | 112 | setItemChecked( id, TRUE ); |
75 | currentMid = id; | 113 | currentMid = id; |
76 | 114 | ||
77 | emit categoryChange(); | 115 | emit categoryChange(); |
78 | } | 116 | } |
79 | 117 | ||
118 | /*! | ||
119 | Returns TRUE if a record or file with the set of category ids \a cUids | ||
120 | is allowed by the current selection in the CategoryMenu. | ||
121 | Otherwise returns FALSE. | ||
122 | */ | ||
80 | bool CategoryMenu::isSelected(const QArray<int> &cUids) const | 123 | bool CategoryMenu::isSelected(const QArray<int> &cUids) const |
81 | { | 124 | { |
82 | if (currentMid == 1) | 125 | if (currentMid == 1) |
83 | return TRUE; | 126 | return TRUE; |
84 | 127 | ||
85 | if (currentMid == 2 && cUids.count() == 0) | 128 | if (currentMid == 2 && cUids.count() == 0) |
86 | return TRUE; | 129 | return TRUE; |
87 | 130 | ||
88 | if (cUids.contains(menuToId[currentMid])) | 131 | if (cUids.contains(menuToId[currentMid])) |
89 | return TRUE; | 132 | return TRUE; |
90 | 133 | ||
91 | return FALSE; | 134 | return FALSE; |
92 | } | 135 | } |
93 | 136 | ||
137 | /*! | ||
138 | Sets the menu to have \a newCatUid as the currently selected Category. | ||
139 | */ | ||
94 | void CategoryMenu::setCurrentCategory( int newCatUid ) | 140 | void CategoryMenu::setCurrentCategory( int newCatUid ) |
95 | { | 141 | { |
96 | if (!idToMenu.contains(newCatUid)) | 142 | if (!idToMenu.contains(newCatUid)) |
97 | return; | 143 | return; |
98 | 144 | ||
99 | mapMenuId(idToMenu[newCatUid]); | 145 | mapMenuId(idToMenu[newCatUid]); |
100 | } | 146 | } |
101 | 147 | ||
148 | /*! | ||
149 | Sets the menu to allow all category sets. | ||
150 | */ | ||
102 | void CategoryMenu::setCurrentCategoryAll( ) | 151 | void CategoryMenu::setCurrentCategoryAll( ) |
103 | { | 152 | { |
104 | mapMenuId(1); | 153 | mapMenuId(1); |
105 | } | 154 | } |
106 | 155 | ||
156 | /*! | ||
157 | Sets the menu to allow only empty category sets. | ||
158 | */ | ||
107 | void CategoryMenu::setCurrentCategoryUnfiled( ) | 159 | void CategoryMenu::setCurrentCategoryUnfiled( ) |
108 | { | 160 | { |
109 | mapMenuId(2); | 161 | mapMenuId(2); |
110 | } | 162 | } |