kodaymatrix.h
00001 /* 00002 This file is part of KOrganizer. 00003 00004 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at> 00005 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 00006 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 00007 00008 This program is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 2 of the License, or 00011 (at your option) any later version. 00012 00013 This program is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program; if not, write to the Free Software 00020 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00021 00022 As a special exception, permission is given to link this program 00023 with any edition of TQt, and distribute the resulting executable, 00024 without including the source code for TQt in the source distribution. 00025 */ 00026 #ifndef KODAYMATRIX_H 00027 #define KODAYMATRIX_H 00028 00029 #include <libkcal/incidencebase.h> 00030 #include <libkcal/calendar.h> 00031 00032 #include <tqframe.h> 00033 #include <tqcolor.h> 00034 #include <tqtooltip.h> 00035 #include <tqmap.h> 00036 00037 class TQDragEnterEvent; 00038 class TQDragMoveEvent; 00039 class TQDragLeaveEvent; 00040 class TQDropEvent; 00041 00042 class KODayMatrix; 00043 00044 namespace KCal { 00045 class Incidence; 00046 class Calendar; 00047 } 00048 using namespace KCal; 00049 00050 00056 class DynamicTip : public TQToolTip 00057 { 00058 public: 00064 DynamicTip( TQWidget *parent ); 00065 00066 protected: 00073 void maybeTip( const TQPoint &pos ); 00074 00075 private: 00077 KODayMatrix *mMatrix; 00078 }; 00079 00105 class KODayMatrix: public TQFrame, public KCal::Calendar::Observer 00106 { 00107 Q_OBJECT 00108 TQ_OBJECT 00109 public: 00116 KODayMatrix( TQWidget *parent, const char *name ); 00117 00120 ~KODayMatrix(); 00121 00125 static TQPair<TQDate,TQDate> matrixLimits( const TQDate &month ); 00126 00131 void setCalendar( Calendar * ); 00132 00140 void updateView( const TQDate &actdate ); 00141 00146 void updateEvents(); 00147 00151 const TQDate& getDate( int offset ); 00152 00156 TQString getHolidayLabel( int offset ); 00157 00161 void addSelectedDaysTo( DateList & ); 00162 00167 void setSelectedDaysFrom( const TQDate &start, const TQDate &end ); 00168 00172 void clearSelection(); 00173 00177 bool isTodayVisible() const { return mToday >= 0; } 00178 00185 bool isBeginningOfMonth() const { return mToday <= 8; } 00186 bool isEndOfMonth() const { return mToday >= 27; } 00187 00188 /* reimplmented from KCal::Calendar::Observer */ 00189 void calendarIncidenceAdded( Incidence *incidence ); 00190 void calendarIncidenceChanged( Incidence *incidence ); 00191 void calendarIncidenceDeleted( Incidence *incidence ); 00192 00193 void setUpdateNeeded(); 00194 00195 public slots: 00199 void updateView(); 00200 00205 void recalculateToday(); 00206 00210 void resourcesChanged(); 00211 00212 signals: 00218 void selected( const KCal::DateList &daylist ); 00219 00225 void incidenceDropped( Incidence *incidence, const TQDate &dt ); 00231 void incidenceDroppedMove( Incidence *oldincidence, const TQDate &dt ); 00232 00233 protected: 00234 void paintEvent( TQPaintEvent *ev ); 00235 00236 void mousePressEvent( TQMouseEvent *e ); 00237 00238 void mouseReleaseEvent( TQMouseEvent *e ); 00239 00240 void mouseMoveEvent( TQMouseEvent *e ); 00241 00242 void dragEnterEvent( TQDragEnterEvent * ); 00243 00244 void dragMoveEvent( TQDragMoveEvent * ); 00245 00246 void dragLeaveEvent( TQDragLeaveEvent * ); 00247 00248 void dropEvent( TQDropEvent * ); 00249 00250 void resizeEvent( TQResizeEvent * ); 00251 00252 private: 00258 int getDayIndexFrom( int x, int y ); 00259 00265 TQColor getShadedColor( const TQColor &color ); 00266 00269 static const int NUMDAYS; 00270 00272 Calendar *mCalendar; 00273 00275 TQDate mStartDate; 00276 00278 TQString *mDayLabels; 00279 00282 TQDate *mDays; 00283 00287 int *mEvents; 00288 00290 TQMap<int,TQString> mHolidays; 00291 00293 int mToday; 00294 00297 int mSelInit; 00298 00301 static const int NOSELECTION; 00302 00304 int mSelStart; 00305 00307 int mSelEnd; 00308 00310 DynamicTip* mToolTip; 00311 00313 int mTodayMarginWidth; 00314 00318 TQRect mDaySize; 00319 00323 bool mPendingChanges; 00324 }; 00325 00326 #endif