korganizer
komonthview.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _KOMONTHVIEW_H
00027 #define _KOMONTHVIEW_H
00028
00029 #include <tqlistbox.h>
00030 #include <tqptrvector.h>
00031 #include <tqtooltip.h>
00032 #include "koeventview.h"
00033
00034 class KNoScrollListBox;
00035
00036 class KOMonthCellToolTip : public TQToolTip
00037 {
00038 public:
00039 KOMonthCellToolTip (TQWidget* parent, Calendar *calendar, const TQDate &date, KNoScrollListBox* lv );
00040
00041 protected:
00042 void maybeTip( const TQPoint & pos);
00043
00044 private:
00045 Calendar *mCalendar;
00046 TQDate mDate;
00047 KNoScrollListBox* eventlist;
00048 };
00049
00050
00051 class KNoScrollListBox: public TQListBox
00052 {
00053 Q_OBJECT
00054 TQ_OBJECT
00055 public:
00056 KNoScrollListBox(TQWidget *parent=0, const char *name=0);
00057 ~KNoScrollListBox() {}
00058
00059 void setBackground( bool primary, bool workday );
00060
00061 signals:
00062 void shiftDown();
00063 void shiftUp();
00064 void rightClick();
00065
00066 protected slots:
00067 void keyPressEvent(TQKeyEvent *);
00068 void keyReleaseEvent(TQKeyEvent *);
00069 void mousePressEvent(TQMouseEvent *);
00070 void resizeEvent(TQResizeEvent *);
00071 void contentsMouseDoubleClickEvent( TQMouseEvent * e );
00072
00073 private:
00074 bool mSqueezing;
00075 };
00076
00077
00078 class MonthViewItem: public TQListBoxItem
00079 {
00080 public:
00081 MonthViewItem( Incidence *, const TQDateTime &qd, const TQString & title );
00082
00083 void setEvent(bool on) { mEvent = on; }
00084 void setTodo(bool on) { mTodo = on; }
00085 void setTodoDone(bool on) { mTodoDone = on; }
00086 void setRecur(bool on) { mRecur = on; }
00087 void setAlarm(bool on) { mAlarm = on; }
00088 void setReply(bool on) { mReply = on; }
00089
00090 void setPalette(const TQPalette &p) { mPalette = p; }
00091 TQPalette palette() const { return mPalette; }
00092
00093 Incidence *incidence() const { return mIncidence; }
00094 TQDateTime incidenceDateTime() { return mDateTime; }
00095
00096 void setResourceColor( TQColor& color ) { mResourceColor = color; }
00097 TQColor &resourceColor() { return mResourceColor; }
00098 protected:
00099 virtual void paint(TQPainter *);
00100 virtual int height(const TQListBox *) const;
00101 virtual int width(const TQListBox *) const;
00102
00103 TQColor mResourceColor;
00104 private:
00105 bool mEvent;
00106 bool mTodo;
00107 bool mTodoDone;
00108 bool mRecur;
00109 bool mAlarm;
00110 bool mReply;
00111
00112 TQPixmap mEventPixmap;
00113 TQPixmap mBirthdayPixmap;
00114 TQPixmap mAnniversaryPixmap;
00115 TQPixmap mTodoPixmap;
00116 TQPixmap mTodoDonePixmap;
00117 TQPixmap mAlarmPixmap;
00118 TQPixmap mRecurPixmap;
00119 TQPixmap mReplyPixmap;
00120
00121 TQPalette mPalette;
00122 TQDateTime mDateTime;
00123
00124 Incidence *mIncidence;
00125 TQColor catColor() const;
00126 };
00127
00128
00129 class KOMonthView;
00130
00135 class MonthViewCell : public TQWidget
00136 {
00137 Q_OBJECT
00138 TQ_OBJECT
00139 public:
00140 class CreateItemVisitor;
00141 MonthViewCell( KOMonthView * );
00142
00144 void setDate( const TQDate & );
00146 TQDate date() const;
00147
00149 KOMonthView *monthView() { return mMonthView; }
00150
00158 void setPrimary( bool primary );
00162 bool isPrimary() const;
00163
00165 void setHoliday( bool );
00171 void setHolidayString( const TQString &name );
00172
00173 void updateCell();
00181 void addIncidence( Incidence *incidence, MonthViewCell::CreateItemVisitor&v, int multiDay = 0 );
00186 void removeIncidence( Incidence * );
00187
00188 void updateConfig();
00189
00190 void enableScrollBars( bool );
00191
00192 Incidence *selectedIncidence();
00193 TQDate selectedIncidenceDate();
00194
00195 void deselect();
00196
00197 signals:
00198 void defaultAction( Incidence * );
00204 void newEventSignal( ResourceCalendar *res,const TQString &subResource,
00205 const TQDate &date );
00206
00207 public slots:
00208 void select();
00209
00210 protected:
00211 void setFrameWidth();
00212 void resizeEvent( TQResizeEvent * );
00213
00214 protected slots:
00215 void defaultAction( TQListBoxItem * );
00216 void contextMenu( TQListBoxItem * );
00217
00218 private:
00219 KOMonthView *mMonthView;
00220
00221 TQDate mDate;
00222 bool mPrimary;
00223 bool mHoliday;
00224 TQString mHolidayString;
00225
00226 TQLabel *mLabel;
00227 KNoScrollListBox *mItemList;
00228
00229 bool isSelected;
00230
00231 TQSize mLabelSize;
00232
00233 TQPalette mHolidayPalette;
00234 TQPalette mStandardPalette;
00235 TQPalette mTodayPalette;
00236 };
00237
00245 class KOMonthView: public KOEventView
00246 {
00247 Q_OBJECT
00248 TQ_OBJECT
00249 public:
00250 KOMonthView(Calendar *cal, TQWidget *parent = 0, const char *name = 0 );
00251 ~KOMonthView();
00252
00254 virtual int maxDatesHint();
00255
00257 virtual int currentDateCount();
00258
00260 virtual Incidence::List selectedIncidences();
00261
00263 virtual DateList selectedIncidenceDates();
00264
00265 virtual TQDateTime selectionStart();
00266
00267 virtual TQDateTime selectionEnd();
00268
00269 virtual bool eventDurationHint(TQDateTime &startDt, TQDateTime &endDt, bool &allDay);
00270
00271 public slots:
00272 virtual void updateView();
00273 virtual void updateConfig();
00274 virtual void showDates(const TQDate &start, const TQDate &end);
00275 virtual void showIncidences( const Incidence::List &incidenceList, const TQDate &date );
00276
00277 void changeIncidenceDisplay(Incidence *, int);
00278 void changeIncidenceDisplayAdded(Incidence *, MonthViewCell::CreateItemVisitor&);
00279
00280 void clearSelection();
00281
00282 void showEventContextMenu( Calendar *, Incidence *, const TQDate & );
00283 void showGeneralContextMenu();
00284
00285 void setSelectedCell( MonthViewCell * );
00286
00287 protected slots:
00288 void processSelectionChange();
00289
00290 protected:
00291 void resizeEvent(TQResizeEvent *);
00292
00293 void viewChanged();
00294 void updateDayLabels();
00295
00296 private:
00297 void showLabel( bool show );
00298
00299 class GetDateVisitor;
00300 int mDaysPerWeek;
00301 int mNumWeeks;
00302 int mNumCells;
00303 int mWeekStartDay;
00304
00305 TQPtrVector<MonthViewCell> mCells;
00306 TQMap<TQDate,MonthViewCell *> mDateToCell;
00307 TQPtrVector<TQLabel> mDayLabels;
00308
00309 bool mShortDayLabels;
00310 int mWidthLongDayLabel;
00311
00312 TQDate mStartDate;
00313 TQDate mSelectedDate;
00314
00315 MonthViewCell *mSelectedCell;
00316
00317 KOEventPopupMenu *mEventContextMenu;
00318 TQLabel *mLabel;
00319 };
00320
00321 #endif
|