Use of gcsDebug instead of qDebug
[meego-garage:garage-client-services.git] / src / category.h
1 #ifndef CATEGORY_H
2 #define CATEGORY_H
3
4 #include <QObject>
5 #include <QStringList>
6 #include "application.h"
7 #include "jobtypes.h"
8
9 namespace MeeGoGarage{
10
11 /**
12   A category represents a group of applications of the same kind.
13 */
14 class Category : public QObject
15 {
16 Q_OBJECT
17
18 public:
19
20     /// @return category identifier
21     QString id() const;
22     /// @return name of the category
23     QString name() const;
24
25     /// @return the list of applications belonging to this category, @see applicationListUpdated
26     ApplicationList applicationList();
27     /// @return the total number of applications in this category
28     int totalApplicationCount() const;
29     /// find an application by name in a category
30     Application *findApplication(const QString & name) const;
31
32     /**
33       Search in the list of application for this category.
34       This is an async operation.
35       @see
36       */
37     virtual ApplicationSearchJob *requestApplicationSearch(
38             const QString &searchString = QString(),
39             ApplicationListSortType sortType = SortByName,
40             int pageNumber = -1,
41             int itemsPerPage = 10);
42
43     /// Dump category information, useful for debugging
44     virtual void dumpCategory();
45
46 signals:
47
48     /// signaled when the list of applications is updated with new applications, @see applicationList
49     void applicationListUpdated();
50
51 private slots:
52
53     void onApplicationSearchOver();
54
55 protected:
56
57     friend class Catalog;
58     friend class XmlCatalog;
59
60     //Put following function as private and only for friend class to use.
61     Category(Catalog *catalog, QObject *parent = 0);
62     /// Merge with another category
63     virtual bool mergeCategory(Category * category);
64     bool mergeApplicationList(const ApplicationList &applicationList);
65     bool mergeApplication(Application *application, bool sort, bool emitUpdated);
66
67     /// sort application list by name
68     void sortApplications();
69     void setId(const QString& id);
70     void setName (const QString& name);
71     void addApplication (Application *application);
72
73     Catalog *m_catalog;
74     QString m_id;
75     QString m_categoryName;
76     bool m_applicationListRequested;
77     ApplicationSearchJob *m_internalRequest;
78     ApplicationList m_applicationList;
79     int m_totalApplicationCount;
80
81 };
82
83 } //MeeGoGarage namespace
84
85 #endif // CATEGORY_H