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 AlarmListView(QWidget* parent = 0, const char* name = 0);
00069 ~AlarmListView();
00070 void showExpired(bool show) { mShowExpired = show; }
00071 bool showingExpired() const { return mShowExpired; }
00072 bool showingTimeTo() const { return columnWidth(mTimeToColumn); }
00073 void selectTimeColumns(bool time, bool timeTo);
00074 void updateTimeToAlarms(bool forceDisplay = false);
00075 bool expired(AlarmListViewItem*) const;
00076 bool drawMessageInColour() const { return mDrawMessageInColour; }
00077 void setDrawMessageInColour(bool inColour) { mDrawMessageInColour = inColour; }
00078 int timeColumn() const { return mTimeColumn; }
00079 int timeToColumn() const { return mTimeToColumn; }
00080 int repeatColumn() const { return mRepeatColumn; }
00081 int colourColumn() const { return mColourColumn; }
00082 int typeColumn() const { return mTypeColumn; }
00083 int messageColumn() const { return mMessageColumn; }
00084 static bool dragging() { return mDragging; }
00085
00086 static void addEvent(const KAEvent&, EventListViewBase*);
00087 static void modifyEvent(const KAEvent& e, EventListViewBase* selectionView)
00088 { EventListViewBase::modifyEvent(e.id(), e, mInstanceList, selectionView); }
00089 static void modifyEvent(const QString& oldEventID, const KAEvent& newEvent, EventListViewBase* selectionView)
00090 { EventListViewBase::modifyEvent(oldEventID, newEvent, mInstanceList, selectionView); }
00091 static void deleteEvent(const QString& eventID)
00092 { EventListViewBase::deleteEvent(eventID, mInstanceList); }
00093 static void undeleteEvent(const QString& oldEventID, const KAEvent& event, EventListViewBase* selectionView)
00094 { EventListViewBase::modifyEvent(oldEventID, event, mInstanceList, selectionView); }
00095 AlarmListViewItem* getEntry(const QString& eventID) { return (AlarmListViewItem*)EventListViewBase::getEntry(eventID); }
00096 AlarmListViewItem* currentItem() const { return (AlarmListViewItem*)EventListViewBase::currentItem(); }
00097 AlarmListViewItem* firstChild() const { return (AlarmListViewItem*)EventListViewBase::firstChild(); }
00098 AlarmListViewItem* selectedItem() const { return (AlarmListViewItem*)EventListViewBase::selectedItem(); }
00099 virtual void setSelected(QListViewItem* item, bool selected) { EventListViewBase::setSelected(item, selected); }
00100 virtual void setSelected(AlarmListViewItem* item, bool selected) { EventListViewBase::setSelected(item, selected); }
00101 virtual InstanceList instances() { return mInstanceList; }
00102
00103 protected:
00104 virtual void populate();
00105 EventListViewItemBase* createItem(const KAEvent&);
00106 virtual QString whatsThisText(int column) const;
00107 virtual bool shouldShowEvent(const KAEvent& e) const { return mShowExpired || !e.expired(); }
00108 AlarmListViewItem* addEntry(const KAEvent& e, bool setSize = false)
00109 { return addEntry(e, QDateTime::currentDateTime(), setSize); }
00110 AlarmListViewItem* updateEntry(AlarmListViewItem* item, const KAEvent& newEvent, bool setSize = false)
00111 { return (AlarmListViewItem*)EventListViewBase::updateEntry(item, newEvent, setSize); }
00112 virtual void contentsMousePressEvent(QMouseEvent*);
00113 virtual void contentsMouseMoveEvent(QMouseEvent*);
00114 virtual void contentsMouseReleaseEvent(QMouseEvent*);
00115
00116 private:
00117 AlarmListViewItem* addEntry(const KAEvent&, const QDateTime& now, bool setSize = false, bool reselect = false);
00118
00119 static InstanceList mInstanceList;
00120 static bool mDragging;
00121 int mTimeColumn;
00122 int mTimeToColumn;
00123 int mRepeatColumn;
00124 int mColourColumn;
00125 int mTypeColumn;
00126 int mMessageColumn;
00127 int mTimeColumnHeaderWidth;
00128 int mTimeToColumnHeaderWidth;
00129 AlarmListTooltip* mTooltip;
00130 QPoint mMousePressPos;
00131 bool mMousePressed;
00132 bool mDrawMessageInColour;
00133 bool mShowExpired;
00134 };
00135
00136 #endif // ALARMLISTVIEW_H
00137