summaryrefslogtreecommitdiff
path: root/library/categorymenu.cpp
authorkergoth <kergoth>2002-01-25 22:14:26 (UTC)
committer kergoth <kergoth>2002-01-25 22:14:26 (UTC)
commit15318cad33835e4e2dc620d033e43cd930676cdd (patch) (side-by-side diff)
treec2fa0399a2c47fda8e2cd0092c73a809d17f68eb /library/categorymenu.cpp
downloadopie-15318cad33835e4e2dc620d033e43cd930676cdd.zip
opie-15318cad33835e4e2dc620d033e43cd930676cdd.tar.gz
opie-15318cad33835e4e2dc620d033e43cd930676cdd.tar.bz2
Initial revision
Diffstat (limited to 'library/categorymenu.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/categorymenu.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/library/categorymenu.cpp b/library/categorymenu.cpp
new file mode 100644
index 0000000..52a127c
--- a/dev/null
+++ b/library/categorymenu.cpp
@@ -0,0 +1,110 @@
+/**********************************************************************
+** Copyright (C) 2001 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "categorymenu.h"
+#include "backend/categories.h"
+#include "categoryselect.h"
+#include <qstring.h>
+#include <qmap.h>
+
+CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE,
+ QWidget *parent = 0, const char *name = 0 ) :
+ QPopupMenu(parent, name),
+ appName(n),
+ includeGlobal(ig)
+{
+ currentMid = 1;
+ reload();
+ connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int)));
+}
+
+CategoryMenu::~CategoryMenu( )
+{
+}
+
+void CategoryMenu::reload()
+{
+ clear();
+ Categories c;
+
+ c.load(categoryFileName());
+
+ QStringList sl = c.labels(appName, includeGlobal);
+ int mid = 1;
+
+ insertItem(tr("All"), mid);
+ mid++;
+ insertItem(tr("Unfiled"), mid);
+ mid++;
+
+ for (QStringList::Iterator it = sl.begin();
+ it != sl.end(); ++it ) {
+ int cid = c.id(appName, *it);
+ insertItem(*it, mid);
+ menuToId.insert(mid, cid);
+ idToMenu.insert(cid, mid);
+ mid++;
+ }
+
+ setItemChecked(currentMid, TRUE );
+}
+
+void CategoryMenu::mapMenuId(int id)
+{
+ if (id == currentMid)
+ return;
+ setItemChecked( currentMid, FALSE );
+ setItemChecked( id, TRUE );
+ currentMid = id;
+
+ emit categoryChange();
+}
+
+bool CategoryMenu::isSelected(const QArray<int> &cUids) const
+{
+ if (currentMid == 1)
+ return TRUE;
+
+ if (currentMid == 2 && cUids.count() == 0)
+ return TRUE;
+
+ if (cUids.contains(menuToId[currentMid]))
+ return TRUE;
+
+ return FALSE;
+}
+
+void CategoryMenu::setCurrentCategory( int newCatUid )
+{
+ if (!idToMenu.contains(newCatUid))
+ return;
+
+ mapMenuId(idToMenu[newCatUid]);
+}
+
+void CategoryMenu::setCurrentCategoryAll( )
+{
+ mapMenuId(1);
+}
+
+void CategoryMenu::setCurrentCategoryUnfiled( )
+{
+ mapMenuId(2);
+}