korganizer Library API Documentation

koagendaview.h

00001 /* 00002 This file is part of KOrganizer. 00003 00004 Copyright (c) 2000,2001,2003 Cornelius Schumacher <schumacher@kde.org> 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 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00019 00020 As a special exception, permission is given to link this program 00021 with any edition of Qt, and distribute the resulting executable, 00022 without including the source code for Qt in the source distribution. 00023 */ 00024 #ifndef KOAGENDAVIEW_H 00025 #define KOAGENDAVIEW_H 00026 00027 #include <qscrollview.h> 00028 #include <qlabel.h> 00029 00030 #include "calprinter.h" 00031 #include "koeventview.h" 00032 00033 class QHBox; 00034 class QPushButton; 00035 00036 class KOAgenda; 00037 class KOAgendaItem; 00038 class KConfig; 00039 00040 class TimeLabels : public QScrollView 00041 { 00042 Q_OBJECT 00043 public: 00044 TimeLabels( int rows, QWidget *parent = 0, const char *name = 0, 00045 WFlags f = 0 ); 00046 00047 void setCellHeight( int height ); 00048 00050 virtual int minimumWidth() const; 00051 00053 void updateConfig(); 00054 00056 void setAgenda( KOAgenda *agenda ); 00057 00059 virtual void paintEvent( QPaintEvent *e ); 00060 00061 public slots: 00063 void positionChanged(); 00064 00065 protected: 00066 void drawContents( QPainter *p, int cx, int cy, int cw, int ch ); 00067 00068 private: 00069 int mRows; 00070 int mCellHeight; 00071 00072 KOAgenda* mAgenda; 00073 }; 00074 00075 class EventIndicator : public QFrame 00076 { 00077 Q_OBJECT 00078 public: 00079 enum Location { Top, Bottom }; 00080 EventIndicator( Location loc = Top, QWidget *parent = 0, 00081 const char *name = 0 ); 00082 virtual ~EventIndicator(); 00083 00084 void changeColumns( int columns ); 00085 00086 void enableColumn( int column, bool enable ); 00087 00088 protected: 00089 void drawContents( QPainter * ); 00090 00091 private: 00092 int mColumns; 00093 QHBox *mTopBox; 00094 QBoxLayout *mTopLayout; 00095 Location mLocation; 00096 QPixmap mPixmap; 00097 QMemArray<bool> mEnabled; 00098 }; 00099 00100 class KOAlternateLabel : public QLabel 00101 { 00102 Q_OBJECT 00103 public: 00104 KOAlternateLabel( QString shortlabel, QString longlabel, 00105 QString extensivelabel = QString::null, 00106 QWidget *parent = 0, const char *name = 0 ); 00107 ~KOAlternateLabel(); 00108 00109 virtual QSize minimumSizeHint() const; 00110 00111 public slots: 00112 void setText( const QString & ); 00113 void useShortText(); 00114 void useLongText(); 00115 void useExtensiveText(); 00116 void useDefaultText(); 00117 00118 protected: 00119 virtual void resizeEvent( QResizeEvent * ); 00120 virtual void squeezeTextToLabel(); 00121 bool mTextTypeFixed; 00122 QString mShortText, mLongText, mExtensiveText; 00123 }; 00124 00129 class KOAgendaView : public KOEventView 00130 { 00131 Q_OBJECT 00132 public: 00133 KOAgendaView( Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 00134 virtual ~KOAgendaView(); 00135 00137 virtual int maxDatesHint(); 00138 00140 virtual int currentDateCount(); 00141 00143 virtual Incidence::List selectedIncidences(); 00144 00146 virtual DateList selectedDates(); 00147 00149 virtual bool eventDurationHint(QDateTime &startDt, QDateTime &endDt, bool &allDay); 00150 00152 void clearView(); 00153 00154 virtual void printPreview( CalPrinter *calPrinter, 00155 const QDate &, const QDate & ); 00156 00157 CalPrinter::PrintType printType(); 00158 00160 QDateTime selectionStart() { return mTimeSpanBegin; } 00162 QDateTime selectionEnd() { return mTimeSpanEnd; } 00164 bool selectedIsAllDay() { return mTimeSpanInAllDay; } 00166 void deleteSelectedDateTime(); 00168 bool selectedIsSingleCell(); 00169 00170 void setTypeAheadReceiver( QObject * ); 00171 00172 public slots: 00173 virtual void updateView(); 00174 virtual void updateConfig(); 00175 virtual void showDates( const QDate &start, const QDate &end ); 00176 virtual void showIncidences( const Incidence::List & ); 00177 00178 void insertIncidence( Incidence *incidence, QDate curDate, int curCol = -1 ); 00179 void changeIncidenceDisplayAdded( Incidence *incidence ); 00180 void changeIncidenceDisplay( Incidence *incidence, int mode ); 00181 00182 void clearSelection(); 00183 00184 void newEvent( const QPoint &pos ); 00185 void newEvent( const QPoint &start, const QPoint &end ); 00186 void newEventAllDay( const QPoint &pos ); 00187 00188 void startDrag( Incidence * ); 00189 00190 void readSettings(); 00191 void readSettings( KConfig * ); 00192 void writeSettings( KConfig * ); 00193 00194 void setContentsPos( int y ); 00195 00196 void setExpandedButton( bool expanded ); 00197 00198 void finishTypeAhead(); 00199 00201 void slotTodoDropped( Todo *, const QPoint &, bool ); 00202 00203 void enableAgendaUpdate( bool enable ); 00204 00205 signals: 00206 void toggleExpand(); 00207 00208 protected: 00210 void fillAgenda( const QDate &startDate ); 00211 00213 void fillAgenda(); 00214 00215 void connectAgenda( KOAgenda*agenda, QPopupMenu*popup, KOAgenda* otherAgenda ); 00216 00218 void createDayLabels(); 00219 00223 void setHolidayMasks(); 00224 00225 void removeIncidence( Incidence * ); 00230 void updateEventIndicators(); 00231 00232 protected slots: 00234 void updateEventDates( KOAgendaItem *item ); 00236 void doUpdateItem(); 00237 00238 void updateEventIndicatorTop( int newY ); 00239 void updateEventIndicatorBottom( int newY ); 00240 00242 void newTimeSpanSelected( const QPoint &start, const QPoint &end ); 00244 void newTimeSpanSelectedAllDay( const QPoint &start, const QPoint &end ); 00245 00246 private: 00247 // view widgets 00248 QFrame *mDayLabels; 00249 QHBox *mDayLabelsFrame; 00250 QBoxLayout *mLayoutDayLabels; 00251 QFrame *mAllDayFrame; 00252 KOAgenda *mAllDayAgenda; 00253 KOAgenda *mAgenda; 00254 TimeLabels *mTimeLabels; 00255 QWidget *mDummyAllDayLeft; 00256 QSplitter *mSplitterAgenda; 00257 QPushButton *mExpandButton; 00258 00259 DateList mSelectedDates; // List of dates to be displayed 00260 int mViewType; 00261 00262 KOEventPopupMenu *mAgendaPopup; 00263 KOEventPopupMenu *mAllDayAgendaPopup; 00264 00265 EventIndicator *mEventIndicatorTop; 00266 EventIndicator *mEventIndicatorBottom; 00267 00268 QMemArray<int> mMinY; 00269 QMemArray<int> mMaxY; 00270 00271 QMemArray<bool> mHolidayMask; 00272 00273 QPixmap mExpandedPixmap; 00274 QPixmap mNotExpandedPixmap; 00275 00276 QDateTime mTimeSpanBegin; 00277 QDateTime mTimeSpanEnd; 00278 bool mTimeSpanInAllDay; 00279 bool mAllowAgendaUpdate; 00280 00281 Incidence *mUpdateItem; 00282 }; 00283 00284 #endif
KDE Logo
This file is part of the documentation for korganizer Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 27 12:53:22 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003