summaryrefslogtreecommitdiff
authorzecke <zecke>2003-08-25 15:06:32 (UTC)
committer zecke <zecke>2003-08-25 15:06:32 (UTC)
commit44b9e62c1e5071fc6e5f8e80204b9974dbc704b6 (patch) (unidiff)
tree2ed47cff84f9b9cfb94fd38f6931ba69316f32aa
parentbf3c4abb9dff716e098f05852d9a3d8ac8cbcb44 (diff)
downloadopie-44b9e62c1e5071fc6e5f8e80204b9974dbc704b6.zip
opie-44b9e62c1e5071fc6e5f8e80204b9974dbc704b6.tar.gz
opie-44b9e62c1e5071fc6e5f8e80204b9974dbc704b6.tar.bz2
add a qtopia method we need for the new launcher
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/backend/categories.cpp8
-rw-r--r--library/backend/categories.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/library/backend/categories.cpp b/library/backend/categories.cpp
index cce9f38..34ff6fe 100644
--- a/library/backend/categories.cpp
+++ b/library/backend/categories.cpp
@@ -676,256 +676,264 @@ bool Categories::save( const QString &fname ) const
676 out += "</Categories>\n"; 676 out += "</Categories>\n";
677 677
678 QCString cstr = out.utf8(); 678 QCString cstr = out.utf8();
679 total_written = f.writeBlock( cstr.data(), cstr.length() ); 679 total_written = f.writeBlock( cstr.data(), cstr.length() );
680 if ( total_written != int(cstr.length()) ) { 680 if ( total_written != int(cstr.length()) ) {
681 f.close(); 681 f.close();
682 QFile::remove( strNewFile ); 682 QFile::remove( strNewFile );
683 return FALSE; 683 return FALSE;
684 } 684 }
685 f.close(); 685 f.close();
686 686
687#ifdef Q_OS_WIN32 687#ifdef Q_OS_WIN32
688 QFile::remove( fname ); 688 QFile::remove( fname );
689#endif 689#endif
690 if ( ::rename( strNewFile.latin1(), fname.latin1() ) < 0 ) { 690 if ( ::rename( strNewFile.latin1(), fname.latin1() ) < 0 ) {
691 qWarning( "problem renaming file %s to %s", 691 qWarning( "problem renaming file %s to %s",
692 strNewFile.latin1(), fname.latin1()); 692 strNewFile.latin1(), fname.latin1());
693 // remove the tmp file... 693 // remove the tmp file...
694 QFile::remove( strNewFile ); 694 QFile::remove( strNewFile );
695 } 695 }
696 696
697 return TRUE; 697 return TRUE;
698} 698}
699 699
700/*! 700/*!
701 Loads the Categories database using \a fname. See categoryFileName() 701 Loads the Categories database using \a fname. See categoryFileName()
702 for the default file name string used for the shared category database. 702 for the default file name string used for the shared category database.
703 703
704 Returns FALSE if there is error reading the file or TRUE on success. 704 Returns FALSE if there is error reading the file or TRUE on success.
705 */ 705 */
706bool Categories::load( const QString &fname ) 706bool Categories::load( const QString &fname )
707{ 707{
708 QFile file( fname ); 708 QFile file( fname );
709 if ( !file.open( IO_ReadOnly ) ) { 709 if ( !file.open( IO_ReadOnly ) ) {
710 qWarning("Unable to open %s", fname.latin1()); 710 qWarning("Unable to open %s", fname.latin1());
711 711
712 addGlobalCategory(tr("Business")); 712 addGlobalCategory(tr("Business"));
713 addGlobalCategory(tr("Personal")); 713 addGlobalCategory(tr("Personal"));
714 save(fname); 714 save(fname);
715 715
716 return FALSE; 716 return FALSE;
717 } 717 }
718 718
719 clear(); 719 clear();
720 QByteArray ba = file.readAll(); 720 QByteArray ba = file.readAll();
721 QString data = QString::fromUtf8( ba.data(), ba.size() ); 721 QString data = QString::fromUtf8( ba.data(), ba.size() );
722 QChar *uc = (QChar *)data.unicode(); 722 QChar *uc = (QChar *)data.unicode();
723 int len = data.length(); 723 int len = data.length();
724 724
725 // QTime t; 725 // QTime t;
726 // t.start(); 726 // t.start();
727 QString name; 727 QString name;
728 QString id; 728 QString id;
729 QString app; 729 QString app;
730 int i = 0; 730 int i = 0;
731 while ( (i = data.find( "<Category ", i)) != -1 ) { 731 while ( (i = data.find( "<Category ", i)) != -1 ) {
732 732
733 i += 10; 733 i += 10;
734 name = QString::null; 734 name = QString::null;
735 app = QString::null; 735 app = QString::null;
736 while ( 1 ) { 736 while ( 1 ) {
737 // skip white space 737 // skip white space
738 while ( i < len && 738 while ( i < len &&
739 (uc[i] == ' ' || uc[i] == '\n' || uc[i] == '\r') ) 739 (uc[i] == ' ' || uc[i] == '\n' || uc[i] == '\r') )
740 i++; 740 i++;
741 // if at the end, then done 741 // if at the end, then done
742 if ( i >= len-2 || (uc[i] == '/' && uc[i+1] == '>') ) 742 if ( i >= len-2 || (uc[i] == '/' && uc[i+1] == '>') )
743 break; 743 break;
744 // we have another attribute read it. 744 // we have another attribute read it.
745 int j = i; 745 int j = i;
746 while ( j < len && uc[j] != '=' ) 746 while ( j < len && uc[j] != '=' )
747 j++; 747 j++;
748 QString attr = QConstString( uc+i, j-i ).string(); 748 QString attr = QConstString( uc+i, j-i ).string();
749 i = ++j; // skip = 749 i = ++j; // skip =
750 while ( i < len && uc[i] != '"' ) 750 while ( i < len && uc[i] != '"' )
751 i++; 751 i++;
752 j = ++i; 752 j = ++i;
753 while ( j < len && uc[j] != '"' ) 753 while ( j < len && uc[j] != '"' )
754 j++; 754 j++;
755 QString value = Qtopia::plainString( QConstString( uc+i, j-i ).string() ); 755 QString value = Qtopia::plainString( QConstString( uc+i, j-i ).string() );
756 i = j + 1; 756 i = j + 1;
757 757
758 // qDebug("attr='%s' value='%s'", attr.latin1(), value.latin1() ); 758 // qDebug("attr='%s' value='%s'", attr.latin1(), value.latin1() );
759 if ( attr == "id" ) 759 if ( attr == "id" )
760 id = value; 760 id = value;
761 else if ( attr == "app" ) 761 else if ( attr == "app" )
762 app = value; 762 app = value;
763 763
764 else if ( attr == "name" ) 764 else if ( attr == "name" )
765 name = value; 765 name = value;
766 } 766 }
767 767
768 if ( name.isNull() || id.isNull() ) { 768 if ( name.isNull() || id.isNull() ) {
769 qWarning("No name or id in the category"); 769 qWarning("No name or id in the category");
770 continue; 770 continue;
771 } 771 }
772 if ( app.isNull() ) 772 if ( app.isNull() )
773 mGlobalCats.add( id.toInt(), name ); 773 mGlobalCats.add( id.toInt(), name );
774 else 774 else
775 mAppCats[ app ].add( id.toInt(), name ); 775 mAppCats[ app ].add( id.toInt(), name );
776 } 776 }
777 777
778 return TRUE; 778 return TRUE;
779} 779}
780 780
781/*! 781/*!
782 Clear the categories in memory. Equivelent to creating an empty Categories 782 Clear the categories in memory. Equivelent to creating an empty Categories
783 object. 783 object.
784*/ 784*/
785void Categories::clear() 785void Categories::clear()
786{ 786{
787 mGlobalCats.clear(); 787 mGlobalCats.clear();
788 mAppCats.clear(); 788 mAppCats.clear();
789} 789}
790 790
791/*! 791/*!
792 Dump the contents to standard out. Used for debugging only. 792 Dump the contents to standard out. Used for debugging only.
793*/ 793*/
794void Categories::dump() const 794void Categories::dump() const
795{ 795{
796 qDebug("\tglobal categories = %s", mGlobalCats.labels().join(", ").latin1() ); 796 qDebug("\tglobal categories = %s", mGlobalCats.labels().join(", ").latin1() );
797 for ( QMap<QString, CategoryGroup>::ConstIterator appsIt = mAppCats.begin(); appsIt != mAppCats.end(); ++appsIt ) { 797 for ( QMap<QString, CategoryGroup>::ConstIterator appsIt = mAppCats.begin(); appsIt != mAppCats.end(); ++appsIt ) {
798 const QString &app = appsIt.key(); 798 const QString &app = appsIt.key();
799 QStringList appcats = (*appsIt).labels(); 799 QStringList appcats = (*appsIt).labels();
800 qDebug("\tapp = %s\tcategories = %s", app.latin1(), 800 qDebug("\tapp = %s\tcategories = %s", app.latin1(),
801 appcats.join(", ").latin1() ); 801 appcats.join(", ").latin1() );
802 802
803 } 803 }
804} 804}
805 805
806QStringList CheckedListView::checked() const 806QStringList CheckedListView::checked() const
807{ 807{
808 QStringList strs; 808 QStringList strs;
809 for ( QCheckListItem *i = (QCheckListItem *) firstChild(); 809 for ( QCheckListItem *i = (QCheckListItem *) firstChild();
810 i; i = (QCheckListItem *)i->nextSibling() ) 810 i; i = (QCheckListItem *)i->nextSibling() )
811 if ( i->isOn() ) 811 if ( i->isOn() )
812 strs += i->text( 0 ); 812 strs += i->text( 0 );
813 return strs; 813 return strs;
814} 814}
815 815
816void CheckedListView::addCheckableList( const QStringList &options ) 816void CheckedListView::addCheckableList( const QStringList &options )
817{ 817{
818 for ( QStringList::ConstIterator it = options.begin(); 818 for ( QStringList::ConstIterator it = options.begin();
819 it != options.end(); ++it ) { 819 it != options.end(); ++it ) {
820 (void) new QCheckListItem( this, *it, 820 (void) new QCheckListItem( this, *it,
821 QCheckListItem::CheckBox ); 821 QCheckListItem::CheckBox );
822 } 822 }
823} 823}
824 824
825void CheckedListView::setChecked( const QStringList &checked ) 825void CheckedListView::setChecked( const QStringList &checked )
826{ 826{
827 // iterate over all items 827 // iterate over all items
828 bool showingChecked = FALSE; 828 bool showingChecked = FALSE;
829 for ( QCheckListItem *i = (QCheckListItem *) firstChild(); 829 for ( QCheckListItem *i = (QCheckListItem *) firstChild();
830 i; i = (QCheckListItem *)i->nextSibling() ) 830 i; i = (QCheckListItem *)i->nextSibling() )
831 // see if the item should be checked by searching the 831 // see if the item should be checked by searching the
832 // checked list 832 // checked list
833 if ( checked.find( i->text( 0 ) ) != checked.end() ) { 833 if ( checked.find( i->text( 0 ) ) != checked.end() ) {
834 i->setOn( TRUE ); 834 i->setOn( TRUE );
835 // make sure it is showing at least one checked item 835 // make sure it is showing at least one checked item
836 if ( !showingChecked ) { 836 if ( !showingChecked ) {
837 ensureItemVisible( i ); 837 ensureItemVisible( i );
838 showingChecked = TRUE; 838 showingChecked = TRUE;
839 } 839 }
840 } 840 }
841 else 841 else
842 i->setOn( FALSE ); 842 i->setOn( FALSE );
843} 843}
844 844
845/*! \fn Categories &Categories::operator= ( const Categories &c ) 845/*! \fn Categories &Categories::operator= ( const Categories &c )
846 846
847 Performs deep copy. 847 Performs deep copy.
848 */ 848 */
849 849
850 850
851/*! \fn QStringList Categories::globalCategories() const 851/*! \fn QStringList Categories::globalCategories() const
852 852
853 Returns list of all global category labels 853 Returns list of all global category labels
854*/ 854*/
855 855
856/*! \fn const QMap<QString, CategoryGroup> &Categories::appGroupMap() const 856/*! \fn const QMap<QString, CategoryGroup> &Categories::appGroupMap() const
857 857
858 Returns a map of application names to CategoryGroup. The CategoryGroup 858 Returns a map of application names to CategoryGroup. The CategoryGroup
859 class defines a map of ids to category labels and category labels to ids. 859 class defines a map of ids to category labels and category labels to ids.
860*/ 860*/
861 861
862/*! \fn const CategoryGroup &Categories::globalGroup() const 862/*! \fn const CategoryGroup &Categories::globalGroup() const
863 863
864 Returns the global CategoryGroup. The CategoryGroup 864 Returns the global CategoryGroup. The CategoryGroup
865 class defines a map of ids to category labels and category labels to ids. 865 class defines a map of ids to category labels and category labels to ids.
866*/ 866*/
867 867
868/*! \fn void Categories::categoryAdded( const Categories &cats, const QString &appname, int uid) 868/*! \fn void Categories::categoryAdded( const Categories &cats, const QString &appname, int uid)
869 869
870 Emitted if a category is added. 870 Emitted if a category is added.
871 871
872 \a cats is a const reference to this object 872 \a cats is a const reference to this object
873 \a appname is the CategoryGroup application name that the category was added to or QString::null if it was global 873 \a appname is the CategoryGroup application name that the category was added to or QString::null if it was global
874 \a uid is the unique identifier associated with the added category 874 \a uid is the unique identifier associated with the added category
875*/ 875*/
876 876
877/*! \fn void Categories::categoryRemoved( const Categories &cats, const QString &appname, 877/*! \fn void Categories::categoryRemoved( const Categories &cats, const QString &appname,
878 int uid) 878 int uid)
879 879
880 Emitted if removed category is removed. 880 Emitted if removed category is removed.
881 881
882 \a cats is a const reference to this object 882 \a cats is a const reference to this object
883 \a appname is the CategoryGroup application name that the category was removed from or QString::null if it was the global CategoryGroup 883 \a appname is the CategoryGroup application name that the category was removed from or QString::null if it was the global CategoryGroup
884 \a uid is the unique identifier associated with the removed category 884 \a uid is the unique identifier associated with the removed category
885*/ 885*/
886 886
887 887
888/*! \fn void Categories::categoryRenamed( const Categories &cats, const QString &appname, 888/*! \fn void Categories::categoryRenamed( const Categories &cats, const QString &appname,
889 int uid) 889 int uid)
890 890
891 Emitted if \a uid in the \a appname CategoryGroup is renamed in \a cats 891 Emitted if \a uid in the \a appname CategoryGroup is renamed in \a cats
892 object. 892 object.
893 893
894 \a cats is a const reference to this object 894 \a cats is a const reference to this object
895 \a appname is the CategoryGroup application name that the category was renamed in or QString::null if it was the global CategoryGroup 895 \a appname is the CategoryGroup application name that the category was renamed in or QString::null if it was the global CategoryGroup
896 \a uid is the unique identifier associated with the renamed category 896 \a uid is the unique identifier associated with the renamed category
897*/ 897*/
898 898
899/*! \fn Categories::Categories( QObject *parent=0, const char *name = 0 ) 899/*! \fn Categories::Categories( QObject *parent=0, const char *name = 0 )
900 900
901 Constructor for an empty Categories object. 901 Constructor for an empty Categories object.
902*/ 902*/
903 903
904/*! \fn Categories::Categories( const Categories &copyFrom ) 904/*! \fn Categories::Categories( const Categories &copyFrom )
905 905
906 Deep copy constructor 906 Deep copy constructor
907*/ 907*/
908 908
909/*! \fn Categories::~Categories() 909/*! \fn Categories::~Categories()
910 910
911 Empty destructor. Call save() before destruction if there are changes 911 Empty destructor. Call save() before destruction if there are changes
912 that need to be saved. 912 that need to be saved.
913*/ 913*/
914 914
915/*! \fn CategoryGroup::clear() 915/*! \fn CategoryGroup::clear()
916 \internal 916 \internal
917*/ 917*/
918 918
919/*! \fn const QMap<int, QString> &CategoryGroup::idMap() const 919/*! \fn const QMap<int, QString> &CategoryGroup::idMap() const
920 920
921 Returns a const reference to the id to label QMap 921 Returns a const reference to the id to label QMap
922*/ 922*/
923 923
924/*! \fn CategoryGroup::CategoryGroup() 924/*! \fn CategoryGroup::CategoryGroup()
925 \internal 925 \internal
926*/ 926*/
927 927
928/*! \fn CategoryGroup::CategoryGroup(const CategoryGroup &c) 928/*! \fn CategoryGroup::CategoryGroup(const CategoryGroup &c)
929 \internal 929 \internal
930*/ 930*/
931 931
932
933/* ### FIXME properly merge */
934QStringList Categories::labels( const QString & app, const QArray<int> &catids ) const
935{
936 QStringList strs = mGlobalCats.labels( catids );
937 strs += mAppCats[app].labels( catids );
938 return strs;
939}
diff --git a/library/backend/categories.h b/library/backend/categories.h
index d5b3669..91c93e7 100644
--- a/library/backend/categories.h
+++ b/library/backend/categories.h
@@ -1,226 +1,229 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free 7** GNU General Public License version 2 as published by the Free
8** Software Foundation and appearing in the file LICENSE.GPL included 8** Software Foundation and appearing in the file LICENSE.GPL included
9** in the packaging of this file. 9** in the packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
12** THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A 12** THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
13** PARTICULAR PURPOSE. 13** PARTICULAR PURPOSE.
14** 14**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 16**
17** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 18** not clear to you.
19** 19**
20**********************************************************************/ 20**********************************************************************/
21 21
22#ifndef QTPALMTOP_CATEGORIES_H 22#ifndef QTPALMTOP_CATEGORIES_H
23#define QTPALMTOP_CATEGORIES_H 23#define QTPALMTOP_CATEGORIES_H
24 24
25#include <qstring.h> 25#include <qstring.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27#include <qmap.h> 27#include <qmap.h>
28#include <qlistview.h> 28#include <qlistview.h>
29#include <qarray.h> 29#include <qarray.h>
30#include "qpcglobal.h" 30#include "qpcglobal.h"
31#include "palmtopuidgen.h" 31#include "palmtopuidgen.h"
32 32
33class CategoryGroup; 33class CategoryGroup;
34 34
35#if defined(QPC_TEMPLATEDLL) 35#if defined(QPC_TEMPLATEDLL)
36// MOC_SKIP_BEGIN 36// MOC_SKIP_BEGIN
37template class QPC_EXPORT QMap<int, QString>; 37template class QPC_EXPORT QMap<int, QString>;
38template class QPC_EXPORT QMap<QString, int>; 38template class QPC_EXPORT QMap<QString, int>;
39template class QPC_EXPORT QMap< QString, CategoryGroup >; 39template class QPC_EXPORT QMap< QString, CategoryGroup >;
40// MOC_SKIP_END 40// MOC_SKIP_END
41#endif 41#endif
42 42
43class QPC_EXPORT CategoryGroup 43class QPC_EXPORT CategoryGroup
44{ 44{
45 friend class Categories; 45 friend class Categories;
46public: 46public:
47 CategoryGroup(): mIdLabelMap(), mLabelIdMap() { } 47 CategoryGroup(): mIdLabelMap(), mLabelIdMap() { }
48 CategoryGroup( const CategoryGroup &c ) : 48 CategoryGroup( const CategoryGroup &c ) :
49 mIdLabelMap( c.mIdLabelMap), mLabelIdMap( c.mLabelIdMap ) { } 49 mIdLabelMap( c.mIdLabelMap), mLabelIdMap( c.mLabelIdMap ) { }
50 50
51 void clear() { mIdLabelMap.clear(); mLabelIdMap.clear(); } 51 void clear() { mIdLabelMap.clear(); mLabelIdMap.clear(); }
52 52
53 int add( const QString &label ); 53 int add( const QString &label );
54 bool add( int uid, const QString &label ); 54 bool add( int uid, const QString &label );
55 55
56 bool remove( const QString &label ); 56 bool remove( const QString &label );
57 bool remove( int uid ); 57 bool remove( int uid );
58 58
59 bool rename( int uid, const QString &newLabel ); 59 bool rename( int uid, const QString &newLabel );
60 bool rename( const QString &oldLabel, const QString &newLabel ); 60 bool rename( const QString &oldLabel, const QString &newLabel );
61 61
62 bool contains(int id) const; 62 bool contains(int id) const;
63 bool contains(const QString &label) const; 63 bool contains(const QString &label) const;
64 64
65 /** Returns label associated with the uid or QString::null if 65 /** Returns label associated with the uid or QString::null if
66 * not found 66 * not found
67 */ 67 */
68 const QString &label(int id) const; 68 const QString &label(int id) const;
69 /** Returns the uid associated with label or 0 if not found */ 69 /** Returns the uid associated with label or 0 if not found */
70 int id(const QString &label) const; 70 int id(const QString &label) const;
71 71
72 /** Returns a sorted list of labels */ 72 /** Returns a sorted list of labels */
73 QStringList labels() const; 73 QStringList labels() const;
74 74
75 QStringList labels( const QArray<int> &catids ) const; 75 QStringList labels( const QArray<int> &catids ) const;
76 76
77 const QMap<int, QString> &idMap() const { return mIdLabelMap; } 77 const QMap<int, QString> &idMap() const { return mIdLabelMap; }
78 78
79private: 79private:
80 void insert( int uid, const QString &label ); 80 void insert( int uid, const QString &label );
81 QMap<int, QString> mIdLabelMap; 81 QMap<int, QString> mIdLabelMap;
82 QMap<QString, int> mLabelIdMap; 82 QMap<QString, int> mLabelIdMap;
83 83
84 static Qtopia::UidGen &uidGen() { return sUidGen; } 84 static Qtopia::UidGen &uidGen() { return sUidGen; }
85 static Qtopia::UidGen sUidGen; 85 static Qtopia::UidGen sUidGen;
86}; 86};
87 87
88/* Map from application name to categories */ 88/* Map from application name to categories */
89class QPC_EXPORT Categories : public QObject 89class QPC_EXPORT Categories : public QObject
90{ 90{
91 Q_OBJECT 91 Q_OBJECT
92public: 92public:
93 Categories( QObject *parent=0, const char *name = 0 ) 93 Categories( QObject *parent=0, const char *name = 0 )
94 : QObject( parent, name ), mGlobalCats(), mAppCats() { } 94 : QObject( parent, name ), mGlobalCats(), mAppCats() { }
95 Categories( const Categories &copyFrom ) : QObject( copyFrom.parent() ), 95 Categories( const Categories &copyFrom ) : QObject( copyFrom.parent() ),
96 mGlobalCats( copyFrom.mGlobalCats ), 96 mGlobalCats( copyFrom.mGlobalCats ),
97 mAppCats( copyFrom.mAppCats ) { } 97 mAppCats( copyFrom.mAppCats ) { }
98 virtual ~Categories() { } 98 virtual ~Categories() { }
99 99
100 Categories &operator= ( const Categories &c ) 100 Categories &operator= ( const Categories &c )
101{ mAppCats = c.mAppCats; mGlobalCats = c.mGlobalCats; return *this; } 101{ mAppCats = c.mAppCats; mGlobalCats = c.mGlobalCats; return *this; }
102 102
103 void clear(); 103 void clear();
104 104
105 /** Add the category name as long as it doesn't already exist 105 /** Add the category name as long as it doesn't already exist
106 * locally or globally. Return UID if added, 0 if conflicts 106 * locally or globally. Return UID if added, 0 if conflicts
107 * (error). 107 * (error).
108 */ 108 */
109 int addCategory( const QString &appname, const QString &catname); 109 int addCategory( const QString &appname, const QString &catname);
110 /** Add the category name as long as it doesn't already exist 110 /** Add the category name as long as it doesn't already exist
111 * locally or globally. Return UID if added, 0 if conflicts 111 * locally or globally. Return UID if added, 0 if conflicts
112 * (error). 112 * (error).
113 */ 113 */
114 int addCategory( const QString &appname, const QString &catname, int uid); 114 int addCategory( const QString &appname, const QString &catname, int uid);
115 /** Add the global category just checking that it doesn't 115 /** Add the global category just checking that it doesn't
116 * already exist globally. Return UID if added, 0 if conflicts. 116 * already exist globally. Return UID if added, 0 if conflicts.
117 */ 117 */
118 int addGlobalCategory( const QString &catname ); 118 int addGlobalCategory( const QString &catname );
119 /** Add the global category just checking that it doesn't 119 /** Add the global category just checking that it doesn't
120 * already exist globally. Return UID if added, 0 if conflicts. 120 * already exist globally. Return UID if added, 0 if conflicts.
121 */ 121 */
122 int addGlobalCategory( const QString &catname, int uid ); 122 int addGlobalCategory( const QString &catname, int uid );
123 /** Removes the category from the application; if it is not found 123 /** Removes the category from the application; if it is not found
124 * in the application, then it removes it from the global list 124 * in the application, then it removes it from the global list
125 */ 125 */
126 bool removeCategory( const QString &appName, const QString &catName, 126 bool removeCategory( const QString &appName, const QString &catName,
127 bool checkGlobal = TRUE); 127 bool checkGlobal = TRUE);
128 bool removeCategory( const QString &appName, int uid ); 128 bool removeCategory( const QString &appName, int uid );
129 bool removeGlobalCategory( const QString &catName ); 129 bool removeGlobalCategory( const QString &catName );
130 bool removeGlobalCategory( int uid ); 130 bool removeGlobalCategory( int uid );
131 131
132 QArray<int> ids( const QString &app, const QStringList &labels) const; 132 QArray<int> ids( const QString &app, const QStringList &labels) const;
133 133
134 /** Returns the id associated with the app */ 134 /** Returns the id associated with the app */
135 int id( const QString &app, const QString &cat ) const; 135 int id( const QString &app, const QString &cat ) const;
136 /** Returns the label associated with the id */ 136 /** Returns the label associated with the id */
137 QString label( const QString &app, int id ) const; 137 QString label( const QString &app, int id ) const;
138 138
139 enum ExtraLabels { NoExtra, AllUnfiled, AllLabel, UnfiledLabel }; 139 enum ExtraLabels { NoExtra, AllUnfiled, AllLabel, UnfiledLabel };
140 /** Returns the sorted list of all categories that are 140 /** Returns the sorted list of all categories that are
141 * associated with the app. 141 * associated with the app.
142 * If includeGlobal parameter is TRUE then the returned 142 * If includeGlobal parameter is TRUE then the returned
143 * categories will include the global category items. 143 * categories will include the global category items.
144 * If extra = NoExtra, then 144 * If extra = NoExtra, then
145 * If extra = AllUnfiled, then All and Unfiled will be prepended to 145 * If extra = AllUnfiled, then All and Unfiled will be prepended to
146 * the list 146 * the list
147 * If extra = AllLabel, then All is prepended 147 * If extra = AllLabel, then All is prepended
148 * If extra = UnfiledLabel, then Unfiled is prepended 148 * If extra = UnfiledLabel, then Unfiled is prepended
149 */ 149 */
150 QStringList labels( const QString &app, 150 QStringList labels( const QString &app,
151 bool includeGlobal = TRUE, 151 bool includeGlobal = TRUE,
152 ExtraLabels extra = NoExtra ) const; 152 ExtraLabels extra = NoExtra ) const;
153 153
154 QStringList labels( const QString &app,
155 const QArray<int> &catids ) const;
156
154 enum DisplaySingle { ShowMulti, ShowAll, ShowFirst }; 157 enum DisplaySingle { ShowMulti, ShowAll, ShowFirst };
155 158
156 /** Returns a single string associated with the cat ids for display in 159 /** Returns a single string associated with the cat ids for display in
157 * a combobox or any area that requires one string. If catids are empty 160 * a combobox or any area that requires one string. If catids are empty
158 * then "Unfiled" will be returned. If multiple categories are assigned 161 * then "Unfiled" will be returned. If multiple categories are assigned
159 * then the behavior depends on the DisplaySingle type. 162 * then the behavior depends on the DisplaySingle type.
160 * If /a display is set to ShowMulti then " (multi)" appended to the 163 * If /a display is set to ShowMulti then " (multi)" appended to the
161 * first string. If /a display is set to ShowAll, then a space seperated 164 * first string. If /a display is set to ShowAll, then a space seperated
162 * string is returned with all categories. If ShowFirst is returned, 165 * string is returned with all categories. If ShowFirst is returned,
163 * the just the first string is returned. 166 * the just the first string is returned.
164 */ 167 */
165 QString displaySingle( const QString &app, 168 QString displaySingle( const QString &app,
166 const QArray<int> &catids, 169 const QArray<int> &catids,
167 DisplaySingle display ) const; 170 DisplaySingle display ) const;
168 171
169 QStringList globalCategories() const { return mGlobalCats.labels();} 172 QStringList globalCategories() const { return mGlobalCats.labels();}
170 173
171 bool renameCategory( const QString &appname, 174 bool renameCategory( const QString &appname,
172 const QString &oldName, 175 const QString &oldName,
173 const QString &newName ); 176 const QString &newName );
174 bool renameGlobalCategory( const QString &oldName, 177 bool renameGlobalCategory( const QString &oldName,
175 const QString &newName ); 178 const QString &newName );
176 179
177 void setGlobal( const QString &appname, const QString &catname, 180 void setGlobal( const QString &appname, const QString &catname,
178 bool value ); 181 bool value );
179 bool isGlobal( const QString &catname ) const; 182 bool isGlobal( const QString &catname ) const;
180 183
181 184
182 /** Returns true if the catname is associated with any application 185 /** Returns true if the catname is associated with any application
183 */ 186 */
184 bool exists( const QString &catname ) const; 187 bool exists( const QString &catname ) const;
185 bool exists( const QString &appname, const QString &catname) const; 188 bool exists( const QString &appname, const QString &catname) const;
186 189
187 bool save( const QString &fname ) const; 190 bool save( const QString &fname ) const;
188 bool load( const QString &fname ); 191 bool load( const QString &fname );
189 192
190 // for debugging 193 // for debugging
191 void dump() const; 194 void dump() const;
192 195
193 const QMap<QString, CategoryGroup> &appGroupMap() const{ return mAppCats; } 196 const QMap<QString, CategoryGroup> &appGroupMap() const{ return mAppCats; }
194 const CategoryGroup &globalGroup() const { return mGlobalCats; } 197 const CategoryGroup &globalGroup() const { return mGlobalCats; }
195 198
196signals: 199signals:
197 /** emitted if added a category; 200 /** emitted if added a category;
198 * the second param is the application the category was added to 201 * the second param is the application the category was added to
199 * or null if global 202 * or null if global
200 * the third param is the uid of the newly added category 203 * the third param is the uid of the newly added category
201 */ 204 */
202 void categoryAdded( const Categories &, const QString &, int ); 205 void categoryAdded( const Categories &, const QString &, int );
203 /** emitted if removed a category 206 /** emitted if removed a category
204 * the second param is the application the category was removed from 207 * the second param is the application the category was removed from
205 * or null if global 208 * or null if global
206 * the third param is the uid of the removed category 209 * the third param is the uid of the removed category
207 */ 210 */
208 void categoryRemoved( const Categories &, const QString &, int ); 211 void categoryRemoved( const Categories &, const QString &, int );
209 /** emitted if a category is renamed; the second param is the uid of 212 /** emitted if a category is renamed; the second param is the uid of
210 * the removed category */ 213 * the removed category */
211 void categoryRenamed( const Categories &, const QString &, int ); 214 void categoryRenamed( const Categories &, const QString &, int );
212 215
213private: 216private:
214 CategoryGroup mGlobalCats; 217 CategoryGroup mGlobalCats;
215 QMap< QString, CategoryGroup > mAppCats; 218 QMap< QString, CategoryGroup > mAppCats;
216}; 219};
217 220
218class QPC_EXPORT CheckedListView : public QListView 221class QPC_EXPORT CheckedListView : public QListView
219{ 222{
220public: 223public:
221 void addCheckableList( const QStringList &options ); 224 void addCheckableList( const QStringList &options );
222 void setChecked( const QStringList &checked ); 225 void setChecked( const QStringList &checked );
223 QStringList checked() const; 226 QStringList checked() const;
224}; 227};
225 228
226#endif 229#endif