00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef ALARMLISTVIEW_H
00022 #define ALARMLISTVIEW_H
00023
00024 #include "kalarm.h"
00025 #include "eventlistviewbase.h"
00026
00027 class AlarmListView;
00028 class AlarmListTooltip;
00029
00030
00031 class AlarmListViewItem : public EventListViewItemBase
00032 {
00033 public:
00034 AlarmListViewItem(AlarmListView* parent, const KAEvent&, const QDateTime& now);
00035 QTime showTimeToAlarm(bool show);
00036 void updateTimeToAlarm(const QDateTime& now, bool forceDisplay = false);
00037 virtual void paintCell(QPainter*, const QColorGroup&, int column, int width, int align);
00038 AlarmListView* alarmListView() const { return (AlarmListView*)listView(); }
00039 bool messageTruncated() const { return mMessageTruncated; }
00040 int messageColWidthNeeded() const { return mMessageColWidth; }
00041 static int typeIconWidth(AlarmListView*);
00042
00043 AlarmListViewItem* nextSibling() const { return (AlarmListViewItem*)QListViewItem::nextSibling(); }
00044 virtual QString key(int column, bool ascending) const;
00045 protected:
00046 virtual QString lastColumnText() const { return alarmText(event()); }
00047 private:
00048 QString alarmText(const KAEvent&) const;
00049 QString alarmTimeText(const DateTime&) const;
00050 QString timeToAlarmText(const QDateTime& now) const;
00051
00052 static int mTimeHourPos;
00053 static int mDigitWidth;
00054 QString mDateTimeOrder;
00055 QString mRepeatOrder;
00056 QString mColourOrder;
00057 QString mTypeOrder;
00058 mutable int mMessageColWidth;
00059 mutable bool mMessageTruncated;
00060 bool mTimeToAlarmShown;
00061 };
00062
00063
00064 class AlarmListView : public EventListViewBase
00065 {
00066 Q_OBJECT
00067 public:
00068 enum ColumnIndex {
00069 TIME_COLUMN, TIME_TO_COLUMN, REPEAT_COLUMN, COLOUR_COLUMN, TYPE_COLUMN, MESSAGE_COLUMN,
00070 COLUMN_COUNT
00071 };
00072
00073 AlarmListView(const QValueList<int>& order, QWidget* parent = 0, const char* name = 0);
00074 ~AlarmListView();
00075 void showExpired(bool show) { mShowExpired = show; }
00076 bool showingExpired() const { return mShowExpired; }
00077 bool showingTimeTo() const { return columnWidth(mColumn[TIME_TO_COLUMN]); }
00078 void selectTimeColumns(bool time, bool timeTo);
00079 void updateTimeToAlarms(bool forceDisplay = false);
00080 bool expired(AlarmListViewItem*) const;
00081 bool drawMessageInColour() const { return mDrawMessageInColour; }
00082 void setDrawMessageInColour(bool inColour) { mDrawMessageInColour = inColour; }
00083 QValueList<int> columnOrder() const;
00084 int column(ColumnIndex i) const { return mColumn[i]; }
00085 static bool dragging() { return mDragging; }
00086
00087 static void addEvent(const KAEvent&, EventListViewBase*);
00088 static void modifyEvent(const KAEvent& e, EventListViewBase* selectionView)
00089 { EventListViewBase::modifyEvent(e.id(), e, mInstanceList, selectionView); }
00090 static void modifyEvent(const QString& oldEventID, const KAEvent& newEvent, EventListViewBase* selectionView)
00091 { EventListViewBase::modifyEvent(oldEventID, newEvent, mInstanceList, selectionView); }
00092 static void deleteEvent(const QString& eventID)
00093 { EventListViewBase::deleteEvent(eventID, mInstanceList); }
00094 static void undeleteEvent(const QString& oldEventID, const KAEvent& event, EventListViewBase* selectionView)
00095 { EventListViewBase::modifyEvent(oldEventID, event, mInstanceList, selectionView); }
00096 AlarmListViewItem* getEntry(const QString& eventID) { return (AlarmListViewItem*)EventListViewBase::getEntry(eventID); }
00097 AlarmListViewItem* currentItem() const { return (AlarmListViewItem*)EventListViewBase::currentItem(); }
00098 AlarmListViewItem* firstChild() const { return (AlarmListViewItem*)EventListViewBase::firstChild(); }
00099 AlarmListViewItem* selectedItem() const { return (AlarmListViewItem*)EventListViewBase::selectedItem(); }
00100 virtual void setSelected(QListViewItem* item, bool selected) { EventListViewBase::setSelected(item, selected); }
00101 virtual void setSelected(AlarmListViewItem* item, bool selected) { EventListViewBase::setSelected(item, selected); }
00102 virtual InstanceList instances() { return mInstanceList; }
00103
00104 protected:
00105 virtual void populate();
00106 EventListViewItemBase* createItem(const KAEvent&);
00107 virtual QString whatsThisText(int column) const;
00108 virtual bool shouldShowEvent(const KAEvent& e) const { return mShowExpired || !e.expired(); }
00109 AlarmListViewItem* addEntry(const KAEvent& e, bool setSize = false)
00110 { return addEntry(e, QDateTime::currentDateTime(), setSize); }
00111 AlarmListViewItem* updateEntry(AlarmListViewItem* item, const KAEvent& newEvent, bool setSize = false)
00112 { return (AlarmListViewItem*)EventListViewBase::updateEntry(item, newEvent, setSize); }
00113 virtual void contentsMousePressEvent(QMouseEvent*);
00114 virtual void contentsMouseMoveEvent(QMouseEvent*);
00115 virtual void contentsMouseReleaseEvent(QMouseEvent*);
00116
00117 private:
00118 AlarmListViewItem* addEntry(const KAEvent&, const QDateTime& now, bool setSize = false, bool reselect = false);
00119
00120 static InstanceList mInstanceList;
00121 static bool mDragging;
00122 int mColumn[COLUMN_COUNT];
00123 int mTimeColumnHeaderWidth;
00124 int mTimeToColumnHeaderWidth;
00125 AlarmListTooltip* mTooltip;
00126 QPoint mMousePressPos;
00127 bool mMousePressed;
00128 bool mDrawMessageInColour;
00129 bool mShowExpired;
00130 };
00131
00132 #endif // ALARMLISTVIEW_H
00133