korganizer
koagendaitem.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 #ifndef KOAGENDAITEM_H
00026 #define KOAGENDAITEM_H
00027
00028 #include "cellitem.h"
00029
00030 #include <qdatetime.h>
00031
00032 class QToolTipGroup;
00033 class QDragEnterEvent;
00034 class QDropEvent;
00035
00036 namespace KCal {
00037 class Calendar;
00038 class Incidence;
00039 }
00040 using namespace KCal;
00041 class KOAgendaItem;
00042
00043 struct MultiItemInfo
00044 {
00045 int mStartCellXLeft, mStartCellXRight;
00046 int mStartCellYTop, mStartCellYBottom;
00047 KOAgendaItem *mFirstMultiItem;
00048 KOAgendaItem *mPrevMultiItem;
00049 KOAgendaItem *mNextMultiItem;
00050 KOAgendaItem *mLastMultiItem;
00051 };
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 class KOAgendaItem : public QWidget, public KOrg::CellItem
00076 {
00077 Q_OBJECT
00078 public:
00079 KOAgendaItem( Calendar *calendar, Incidence *incidence, const QDate &qd,
00080 QWidget *parent,
00081 int itemPos, int itemCount,
00082 const char *name = 0, WFlags f = 0 );
00083
00084 int cellXLeft() const { return mCellXLeft; }
00085 int cellXRight() const { return mCellXRight; }
00086 int cellYTop() const { return mCellYTop; }
00087 int cellYBottom() const { return mCellYBottom; }
00088 int cellHeight() const;
00089 int cellWidth() const;
00090
00091 int itemPos() const { return mItemPos; }
00092 int itemCount() const { return mItemCount; }
00093
00094 void setCellXY(int X, int YTop, int YBottom);
00095 void setCellY(int YTop, int YBottom);
00096 void setCellX(int XLeft, int XRight);
00097 void setCellXRight(int xright);
00098
00100 void startMove();
00102 void resetMove();
00104 void endMove();
00105
00106 void moveRelative(int dx,int dy);
00107 void expandTop(int dy);
00108 void expandBottom(int dy);
00109 void expandLeft(int dx);
00110 void expandRight(int dx);
00111
00112 bool isMultiItem();
00113 KOAgendaItem *prevMoveItem() const { return (mStartMoveInfo)?(mStartMoveInfo->mPrevMultiItem):0; }
00114 KOAgendaItem *nextMoveItem() const { return (mStartMoveInfo)?(mStartMoveInfo->mNextMultiItem):0; }
00115 MultiItemInfo *moveInfo() const { return mStartMoveInfo; }
00116 void setMultiItem(KOAgendaItem *first,KOAgendaItem *prev,
00117 KOAgendaItem *next, KOAgendaItem *last);
00118 KOAgendaItem *prependMoveItem(KOAgendaItem*);
00119 KOAgendaItem *appendMoveItem(KOAgendaItem*);
00120 KOAgendaItem *removeMoveItem(KOAgendaItem*);
00121 KOAgendaItem *firstMultiItem() const { return (mMultiItemInfo)?(mMultiItemInfo->mFirstMultiItem):0; }
00122 KOAgendaItem *prevMultiItem() const { return (mMultiItemInfo)?(mMultiItemInfo->mPrevMultiItem):0; }
00123 KOAgendaItem *nextMultiItem() const { return (mMultiItemInfo)?(mMultiItemInfo->mNextMultiItem):0; }
00124 KOAgendaItem *lastMultiItem() const { return (mMultiItemInfo)?(mMultiItemInfo->mLastMultiItem):0; }
00125
00126 bool dissociateFromMultiItem();
00127
00128 bool setIncidence( Incidence * );
00129 Incidence *incidence() const { return mIncidence; }
00130 QDate itemDate() { return mDate; }
00131
00133 void setItemDate( const QDate &qd );
00134
00135 void setText ( const QString & text ) { mLabelText = text; }
00136 QString text () { return mLabelText; }
00137
00138 static QToolTipGroup *toolTipGroup();
00139
00140 QPtrList<KOAgendaItem> conflictItems();
00141 void setConflictItems(QPtrList<KOAgendaItem>);
00142 void addConflictItem(KOAgendaItem *ci);
00143
00144 QString label() const;
00145
00146 bool overlaps( KOrg::CellItem * ) const;
00147
00148 void setResourceColor( const QColor& color ) { mResourceColor = color; }
00149 QColor resourceColor() {return mResourceColor;}
00150 signals:
00151 void removeAgendaItem( KOAgendaItem* );
00152 void showAgendaItem( KOAgendaItem* );
00153
00154 public slots:
00155 void updateIcons();
00156 void select(bool=true);
00157 void addAttendee( const QString & );
00158
00159 protected:
00160 void dragEnterEvent(QDragEnterEvent *e);
00161 void dropEvent(QDropEvent *e);
00162 void paintEvent(QPaintEvent *e);
00163 void paintFrame(QPainter *p, const QColor &color);
00164 void paintEventIcon(QPainter *p, int &x, int ft);
00165 void paintTodoIcon(QPainter *p, int &x, int ft);
00166 void paintAlarmIcon(QPainter *p, int &x, int ft);
00167
00168
00169 void paintIcons(QPainter *p, int &x, int ft);
00170
00174 void startMovePrivate();
00175 void resetMovePrivate();
00176 void endMovePrivate();
00177
00178
00179 private:
00180 int mCellXLeft, mCellXRight;
00181 int mCellYTop, mCellYBottom;
00182
00183 Calendar *mCalendar;
00184 Incidence *mIncidence;
00185 QDate mDate;
00186 QString mLabelText;
00187 bool mIconAlarm, mIconRecur, mIconReadonly;
00188 bool mIconReply, mIconGroup, mIconGroupTentative;
00189 bool mIconOrganizer, mSpecialEvent;
00190
00191
00192
00193 int mItemPos;
00194 int mItemCount;
00195
00196
00197 MultiItemInfo* mMultiItemInfo;
00198 protected:
00199
00200 MultiItemInfo* mStartMoveInfo;
00201
00202 QColor mResourceColor;
00203 private:
00204 static QToolTipGroup *mToolTipGroup;
00205
00206 bool mSelected;
00207 QPtrList<KOAgendaItem> mConflictItems;
00208
00209 static QPixmap *alarmPxmp;
00210 static QPixmap *recurPxmp;
00211 static QPixmap *readonlyPxmp;
00212 static QPixmap *replyPxmp;
00213 static QPixmap *groupPxmp;
00214 static QPixmap *groupPxmpTentative;
00215 static QPixmap *organizerPxmp;
00216 };
00217
00218 #endif
|