Build with clang.
[kdepim.git] / kalarm / resourcemodelview.h
blob028f0a9d9e938f7ee6569772f40682f86a20582f
1 /*
2 * resourcemodelview.h - model/view classes for alarm resource lists
3 * Program: kalarm
4 * Copyright © 2007,2008,2010 by David Jarvie <djarvie@kde.org>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #ifndef RESOURCEMODELVIEW_H
22 #define RESOURCEMODELVIEW_H
24 #include "kalarm.h"
26 #include <QAbstractListModel>
27 #include <QSortFilterProxyModel>
28 #include <QItemDelegate>
29 #include <QListView>
30 #include <QList>
31 #include <QFont>
32 #include <QColor>
34 #include "resources/alarmresource.h"
35 #include "resources/alarmresources.h"
38 class ResourceModel : public QAbstractListModel
40 Q_OBJECT
41 public:
42 static ResourceModel* instance(QObject* parent = 0);
43 virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
44 virtual QModelIndex index(int row, int column, const QModelIndex& parent) const;
45 virtual QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const;
46 virtual bool setData(const QModelIndex&, const QVariant& value, int role = Qt::EditRole);
47 virtual Qt::ItemFlags flags(const QModelIndex&) const;
48 AlarmResource* resource(const QModelIndex&) const;
49 void removeResource(AlarmResource*);
50 void notifyChange(const QModelIndex&);
52 private slots:
53 void refresh();
54 void addResource(AlarmResource*);
55 void updateResource(AlarmResource*);
56 void slotStandardChanged(KAlarm::CalEvent::Type);
57 void slotLoaded(AlarmResource*, bool active);
58 void slotStatusChanged(AlarmResource*, AlarmResources::Change);
60 private:
61 explicit ResourceModel(QObject* parent = 0);
63 static ResourceModel* mInstance;
64 QList<AlarmResource*> mResources;
65 QString mErrorPrompt;
66 QFont mFont;
70 class ResourceFilterModel : public QSortFilterProxyModel
72 Q_OBJECT
73 public:
74 ResourceFilterModel(QAbstractItemModel* baseModel, QObject* parent);
75 void setFilter(KAlarm::CalEvent::Type);
76 AlarmResource* resource(int row) const;
77 AlarmResource* resource(const QModelIndex&) const;
78 void notifyChange(int row);
79 void notifyChange(const QModelIndex&);
81 protected:
82 virtual bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const;
84 private:
85 KAlarm::CalEvent::Type mResourceType;
89 class ResourceView : public QListView
91 Q_OBJECT
92 public:
93 ResourceView(QWidget* parent = 0) : QListView(parent) {}
94 virtual void setModel(QAbstractItemModel*);
95 AlarmResource* resource(int row) const;
96 AlarmResource* resource(const QModelIndex&) const;
97 void notifyChange(int row) const;
98 void notifyChange(const QModelIndex&) const;
100 protected:
101 virtual void mouseReleaseEvent(QMouseEvent*);
102 virtual bool viewportEvent(QEvent*);
106 class ResourceDelegate : public QItemDelegate
108 Q_OBJECT
109 public:
110 ResourceDelegate(ResourceView* parent = 0) : QItemDelegate(parent) {}
111 virtual bool editorEvent(QEvent*, QAbstractItemModel*, const QStyleOptionViewItem&, const QModelIndex&);
114 #endif // RESOURCEMODELVIEW_H
116 // vim: et sw=4: