kalarm

alarmlistview.h

00001 /*
00002  *  alarmlistview.h  -  widget showing list of outstanding alarms
00003  *  Program:  kalarm
00004  *  Copyright (C) 2001 - 2005 by David Jarvie <software@astrojar.org.uk>
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License as published by
00008  *  the Free Software Foundation; either version 2 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License along
00017  *  with this program; if not, write to the Free Software Foundation, Inc.,
00018  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
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         // Overridden base class methods
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;       // position of hour within time string, or -1 if leading zeroes included
00053         static int          mDigitWidth;        // display width of a digit
00054         QString             mDateTimeOrder;     // controls ordering of date/time column
00055         QString             mRepeatOrder;       // controls ordering of repeat column
00056         QString             mColourOrder;       // controls ordering of colour column
00057         QString             mTypeOrder;         // controls ordering of alarm type column
00058         mutable int         mMessageColWidth;   // width needed to display complete message text
00059         mutable bool        mMessageTruncated;  // multi-line message text has been truncated for the display
00060         bool                mTimeToAlarmShown;  // relative alarm time is displayed
00061 };
00062 
00063 
00064 class AlarmListView : public EventListViewBase
00065 {
00066         Q_OBJECT       // needed by QObject::isA() calls
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         // Overridden base class methods
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;         // all current instances of this class
00120         static bool            mDragging;
00121         int                    mTimeColumn;           // index to alarm time column
00122         int                    mTimeToColumn;         // index to time-to-alarm column
00123         int                    mRepeatColumn;         // index to repetition type column
00124         int                    mColourColumn;         // index to colour column
00125         int                    mTypeColumn;           // index to alarm type column
00126         int                    mMessageColumn;        // index to message column
00127         int                    mTimeColumnHeaderWidth;
00128         int                    mTimeToColumnHeaderWidth;
00129         AlarmListTooltip*      mTooltip;              // tooltip for showing full text of alarm messages
00130         QPoint                 mMousePressPos;        // where the mouse left button was last pressed
00131         bool                   mMousePressed;         // true while the mouse left button is pressed
00132         bool                   mDrawMessageInColour;
00133         bool                   mShowExpired;          // true to show expired alarms
00134 };
00135 
00136 #endif // ALARMLISTVIEW_H
00137 
KDE Home | KDE Accessibility Home | Description of Access Keys