00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef KOAGENDAVIEW_H
00025
#define KOAGENDAVIEW_H
00026
00027
#include <qscrollview.h>
00028
#include <qdatetime.h>
00029
#include <qlayout.h>
00030
#include <qsplitter.h>
00031
#include <qmemarray.h>
00032
#include <qlabel.h>
00033
00034
#include "koeventview.h"
00035
#include "calprinter.h"
00036
00037
class QHBox;
00038
class QFrame;
00039
class QPushButton;
00040
00041
class KOAgenda;
00042
class KOAgendaItem;
00043
class KConfig;
00044
00045
class TimeLabels :
public QScrollView
00046 {
00047 Q_OBJECT
00048
public:
00049 TimeLabels(
int rows, QWidget *parent = 0,
const char *name = 0,
00050 WFlags f = 0 );
00051
00052
void setCellHeight(
int height );
00053
00055
virtual int minimumWidth() const;
00056
00058
void updateConfig();
00059
00061
void setAgenda( KOAgenda *agenda );
00062
00064 virtual
void paintEvent( QPaintEvent *e );
00065
00066 public slots:
00068
void positionChanged();
00069
00070 protected:
00071
void drawContents( QPainter *p,
int cx,
int cy,
int cw,
int ch );
00072
00073 private:
00074
int mRows;
00075
int mCellHeight;
00076
00077 KOAgenda* mAgenda;
00078 };
00079
00080 class EventIndicator : public QFrame
00081 {
00082 Q_OBJECT
00083
public:
00084
enum Location { Top, Bottom };
00085 EventIndicator( Location loc = Top, QWidget *parent = 0,
00086
const char *name = 0 );
00087
virtual ~EventIndicator();
00088
00089
void changeColumns(
int columns );
00090
00091
void enableColumn(
int column,
bool enable );
00092
00093
protected:
00094
void drawContents( QPainter * );
00095
00096
private:
00097
int mColumns;
00098 QHBox *mTopBox;
00099 QBoxLayout *mTopLayout;
00100 Location mLocation;
00101 QPixmap mPixmap;
00102 QMemArray<bool> mEnabled;
00103 };
00104
00105
class KOAlternateLabel :
public QLabel
00106 {
00107 Q_OBJECT
00108
public:
00109 KOAlternateLabel( QString shortlabel, QString longlabel,
00110 QString extensivelabel = QString::null,
00111 QWidget *parent = 0,
const char *name = 0 );
00112 ~KOAlternateLabel();
00113
00114
virtual QSize minimumSizeHint() const;
00115
00116 public slots:
00117
void setText( const QString & );
00118
void useShortText();
00119
void useLongText();
00120
void useExtensiveText();
00121
void useDefaultText();
00122
00123 protected:
00124 virtual
void resizeEvent( QResizeEvent * );
00125 virtual
void squeezeTextToLabel();
00126
bool mTextTypeFixed;
00127 QString mShortText, mLongText, mExtensiveText;
00128 };
00129
00134 class
KOAgendaView : public
KOEventView
00135 {
00136 Q_OBJECT
00137
public:
00138
KOAgendaView( Calendar *cal, QWidget *parent = 0,
const char *name = 0 );
00139
virtual ~
KOAgendaView();
00140
00142
virtual int maxDatesHint();
00143
00145
virtual int currentDateCount();
00146
00148
virtual Incidence::List selectedIncidences();
00149
00151
virtual DateList selectedDates();
00152
00154
void clearView();
00155
00156
virtual void printPreview(
CalPrinter *calPrinter,
00157
const QDate &,
const QDate & );
00158
00159 CalPrinter::PrintType printType();
00160
00162 QDateTime selectionStart() {
return mTimeSpanBegin; }
00164 QDateTime selectionEnd() {
return mTimeSpanEnd; }
00166 bool selectedIsAllDay() {
return mTimeSpanInAllDay; }
00168
void deleteSelectedDateTime();
00170
bool selectedIsSingleCell();
00171
00172
void setTypeAheadReceiver( QObject * );
00173
00174
public slots:
00175
virtual void updateView();
00176
virtual void updateConfig();
00177
virtual void showDates(
const QDate &start,
const QDate &end );
00178
virtual void showEvents(
const Event::List & );
00179
virtual void showNewEventPopup();
00180
00181
void insertEvent( Event *event, QDate curDate,
int curCol = -1 );
00182
void changeEventDisplayAdded( Event *event );
00183
void changeEventDisplay( Event *event,
int mode );
00184
00185
void clearSelection();
00186
00187
void newEvent(
int gx,
int gy );
00188
void newEvent(
int gxStart,
int gyStart,
int gxEnd,
int gyEnd );
00189
void newEventAllDay(
int gx,
int gy );
00190
00191
void startDrag( Incidence * );
00192
00193
void readSettings();
00194
void readSettings( KConfig * );
00195
void writeSettings( KConfig * );
00196
00197
void setContentsPos(
int y );
00198
00199
void setExpandedButton(
bool expanded );
00200
00201
void finishTypeAhead();
00202
00204
void slotTodoDropped( Todo *,
int,
int,
bool );
00205
00206 signals:
00207
void toggleExpand();
00208
void incidenceChanged( Incidence*, Incidence* );
00209
00210
void todoChanged( Todo*, Todo* );
00211
void todoDropped( Todo* );
00212
00213
protected:
00215
void fillAgenda(
const QDate &startDate );
00216
00218
void fillAgenda();
00219
00221
void createDayLabels();
00222
00226
void setHolidayMasks();
00227
00228
protected slots:
00230
void updateEventDates( KOAgendaItem *item );
00231
00232
void updateEventIndicatorTop(
int newY );
00233
void updateEventIndicatorBottom(
int newY );
00234
00236
void newTimeSpanSelected(
int gxStart,
int gyStart,
int gxEnd,
int gyEnd );
00238
void newTimeSpanSelectedAllDay(
int gxStart,
int gyStart,
00239
int gxEnd,
int gyEnd);
00240
00241
private:
00242
00243 QFrame *mDayLabels;
00244 QHBox *mDayLabelsFrame;
00245 QBoxLayout *mLayoutDayLabels;
00246 QFrame *mAllDayFrame;
00247 KOAgenda *mAllDayAgenda;
00248 KOAgenda *mAgenda;
00249 TimeLabels *mTimeLabels;
00250 QWidget *mDummyAllDayLeft;
00251 QSplitter *mSplitterAgenda;
00252 QPushButton *mExpandButton;
00253
00254 DateList mSelectedDates;
00255
int mViewType;
00256
00257 KOEventPopupMenu *mAgendaPopup;
00258 KOEventPopupMenu *mAllDayAgendaPopup;
00259
00260 EventIndicator *mEventIndicatorTop;
00261 EventIndicator *mEventIndicatorBottom;
00262
00263 QMemArray<int> mMinY;
00264 QMemArray<int> mMaxY;
00265
00266 QMemArray<bool> mHolidayMask;
00267
00268 QPixmap mExpandedPixmap;
00269 QPixmap mNotExpandedPixmap;
00270
00271 QDateTime mTimeSpanBegin;
00272 QDateTime mTimeSpanEnd;
00273
bool mTimeSpanInAllDay;
00274
00275 };
00276
00277
#endif