-rw-r--r-- | korganizer/koagendaitem.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp index e660c32..a8e0678 100644 --- a/korganizer/koagendaitem.cpp +++ b/korganizer/koagendaitem.cpp | |||
@@ -38,195 +38,200 @@ | |||
38 | #include <qapplication.h> | 38 | #include <qapplication.h> |
39 | #define AGENDA_ICON_SIZE 7 | 39 | #define AGENDA_ICON_SIZE 7 |
40 | #endif | 40 | #endif |
41 | #include <libkcal/icaldrag.h> | 41 | #include <libkcal/icaldrag.h> |
42 | #include <libkcal/vcaldrag.h> | 42 | #include <libkcal/vcaldrag.h> |
43 | #include <libkcal/kincidenceformatter.h> | 43 | #include <libkcal/kincidenceformatter.h> |
44 | extern int globalFlagBlockAgenda; | 44 | extern int globalFlagBlockAgenda; |
45 | extern int globalFlagBlockAgendaItemPaint; | 45 | extern int globalFlagBlockAgendaItemPaint; |
46 | extern int globalFlagBlockAgendaItemUpdate; | 46 | extern int globalFlagBlockAgendaItemUpdate; |
47 | 47 | ||
48 | #include "koprefs.h" | 48 | #include "koprefs.h" |
49 | 49 | ||
50 | #include "koagendaitem.h" | 50 | #include "koagendaitem.h" |
51 | //#include "koagendaitem.moc" | 51 | //#include "koagendaitem.moc" |
52 | 52 | ||
53 | 53 | ||
54 | //-------------------------------------------------------------------------- | 54 | //-------------------------------------------------------------------------- |
55 | 55 | ||
56 | QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; | 56 | QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; |
57 | 57 | ||
58 | //-------------------------------------------------------------------------- | 58 | //-------------------------------------------------------------------------- |
59 | 59 | ||
60 | class KOAgendaItemWhatsThis :public QWhatsThis | 60 | class KOAgendaItemWhatsThis :public QWhatsThis |
61 | { | 61 | { |
62 | public: | 62 | public: |
63 | KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; | 63 | KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; |
64 | 64 | ||
65 | protected: | 65 | protected: |
66 | virtual QString text( const QPoint& ) | 66 | virtual QString text( const QPoint& ) |
67 | { | 67 | { |
68 | return _view->getWhatsThisText() ; | 68 | return _view->getWhatsThisText() ; |
69 | } | 69 | } |
70 | private: | 70 | private: |
71 | KOAgendaItem * _view; | 71 | KOAgendaItem * _view; |
72 | }; | 72 | }; |
73 | 73 | ||
74 | KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, | 74 | KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, |
75 | const char *name,WFlags) : | 75 | const char *name,WFlags) : |
76 | QWidget(parent, name), mIncidence(incidence), mDate(qd) | 76 | QWidget(parent, name), mIncidence(incidence), mDate(qd) |
77 | { | 77 | { |
78 | #ifndef DESKTOP_VERSION | 78 | #ifndef DESKTOP_VERSION |
79 | //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); | 79 | //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); |
80 | #endif | 80 | #endif |
81 | mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this); | 81 | mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this); |
82 | int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase | 82 | int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase |
83 | setWFlags ( wflags); | 83 | setWFlags ( wflags); |
84 | mAllDay = allday; | 84 | mAllDay = allday; |
85 | init ( incidence, qd ); | 85 | init ( incidence, qd ); |
86 | //setMouseTracking(true); | 86 | //setMouseTracking(true); |
87 | //setAcceptDrops(true); | 87 | //setAcceptDrops(true); |
88 | xPaintCoord = -1; | 88 | xPaintCoord = -1; |
89 | yPaintCoord = -1; | 89 | yPaintCoord = -1; |
90 | } | 90 | } |
91 | QString KOAgendaItem::getWhatsThisText() | 91 | QString KOAgendaItem::getWhatsThisText() |
92 | { | 92 | { |
93 | if ( mIncidence ) | 93 | if ( mIncidence ) |
94 | return KIncidenceFormatter::instance()->getFormattedText( mIncidence, | 94 | return KIncidenceFormatter::instance()->getFormattedText( mIncidence, |
95 | KOPrefs::instance()->mWTshowDetails, | 95 | KOPrefs::instance()->mWTshowDetails, |
96 | KOPrefs::instance()->mWTshowCreated, | 96 | KOPrefs::instance()->mWTshowCreated, |
97 | KOPrefs::instance()->mWTshowChanged); | 97 | KOPrefs::instance()->mWTshowChanged); |
98 | return "KOAgendaItem::getWhatsThisText()::internal error"; | 98 | return "KOAgendaItem::getWhatsThisText()::internal error"; |
99 | } | 99 | } |
100 | void KOAgendaItem::init ( Incidence *incidence, QDate qd ) | 100 | void KOAgendaItem::init ( Incidence *incidence, QDate qd ) |
101 | { | 101 | { |
102 | mIncidence = incidence; | 102 | mIncidence = incidence; |
103 | mDate = qd; | 103 | mDate = qd; |
104 | mFirstMultiItem = 0; | 104 | mFirstMultiItem = 0; |
105 | mNextMultiItem = 0; | 105 | mNextMultiItem = 0; |
106 | mLastMultiItem = 0; | 106 | mLastMultiItem = 0; |
107 | computeText(); | 107 | computeText(); |
108 | 108 | ||
109 | if ( (incidence->typeID() == todoID ) && | 109 | if ( (incidence->typeID() == todoID ) && |
110 | ( !((static_cast<Todo*>(incidence))->isCompleted()) && | 110 | ( !((static_cast<Todo*>(incidence))->isCompleted()) && |
111 | ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) { | 111 | ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) { |
112 | if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date()) | 112 | if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date()) |
113 | mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; | 113 | mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; |
114 | else | 114 | else |
115 | mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; | 115 | mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; |
116 | } | 116 | } |
117 | else { | 117 | else { |
118 | QStringList categories = mIncidence->categories(); | 118 | QStringList categories = mIncidence->categories(); |
119 | QString cat = categories.first(); | 119 | QString cat = categories.first(); |
120 | if (cat.isEmpty()) { | 120 | if (cat.isEmpty()) { |
121 | if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) | 121 | if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) |
122 | mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; | 122 | mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; |
123 | else | 123 | else |
124 | mBackgroundColor =KOPrefs::instance()->defaultColor( incidence->calID() ); | 124 | mBackgroundColor =KOPrefs::instance()->defaultColor( incidence->calID() ); |
125 | } else { | 125 | } else { |
126 | mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); | 126 | mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); |
127 | if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) { | 127 | if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) { |
128 | if ( mBackgroundColor == KOPrefs::instance()->mEventColor ) | 128 | if ( mBackgroundColor == KOPrefs::instance()->mEventColor ) |
129 | mBackgroundColor = KOPrefs::instance()->mTodoDoneColor; | 129 | mBackgroundColor = KOPrefs::instance()->mTodoDoneColor; |
130 | } | 130 | } |
131 | } | 131 | } |
132 | 132 | ||
133 | } | 133 | } |
134 | mColorGroup = QColorGroup( mBackgroundColor.light(), | 134 | |
135 | mBackgroundColor.dark(),mBackgroundColor.light(), | 135 | QColor BackgroundColor ( mBackgroundColor ); |
136 | mBackgroundColor.dark(),mBackgroundColor, black, mBackgroundColor) ; | 136 | if ( mIncidence->calID() > 1 ) { |
137 | BackgroundColor = KOPrefs::instance()->defaultColor( mIncidence->calID() ); | ||
138 | } | ||
139 | mColorGroup = QColorGroup( BackgroundColor.light(), | ||
140 | BackgroundColor.dark(),BackgroundColor.light(), | ||
141 | BackgroundColor.dark(),BackgroundColor, black, BackgroundColor) ; | ||
137 | setBackgroundColor( mBackgroundColor ); | 142 | setBackgroundColor( mBackgroundColor ); |
138 | mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250); | 143 | mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250); |
139 | mConflictItems.clear(); | 144 | mConflictItems.clear(); |
140 | setCellXY(0,0,1); | 145 | setCellXY(0,0,1); |
141 | setCellXWidth(0); | 146 | setCellXWidth(0); |
142 | setSubCell(0); | 147 | setSubCell(0); |
143 | setSubCells(1); | 148 | setSubCells(1); |
144 | setMultiItem(0,0,0); | 149 | setMultiItem(0,0,0); |
145 | startMove(); | 150 | startMove(); |
146 | mSelected = true; | 151 | mSelected = true; |
147 | select(false); | 152 | select(false); |
148 | QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); | 153 | QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); |
149 | mFontPixelSize = fontinf.height();; | 154 | mFontPixelSize = fontinf.height();; |
150 | hide(); | 155 | hide(); |
151 | xPaintCoord = -1; | 156 | xPaintCoord = -1; |
152 | yPaintCoord = -1; | 157 | yPaintCoord = -1; |
153 | } | 158 | } |
154 | 159 | ||
155 | 160 | ||
156 | KOAgendaItem::~KOAgendaItem() | 161 | KOAgendaItem::~KOAgendaItem() |
157 | { | 162 | { |
158 | #if QT_VERSION >= 0x030000 | 163 | #if QT_VERSION >= 0x030000 |
159 | 164 | ||
160 | #else | 165 | #else |
161 | delete mKOAgendaItemWhatsThis; | 166 | delete mKOAgendaItemWhatsThis; |
162 | #endif | 167 | #endif |
163 | 168 | ||
164 | } | 169 | } |
165 | 170 | ||
166 | void KOAgendaItem::recreateIncidence() | 171 | void KOAgendaItem::recreateIncidence() |
167 | { | 172 | { |
168 | #if 0 | 173 | #if 0 |
169 | Incidence* newInc = mIncidence->clone(); | 174 | Incidence* newInc = mIncidence->clone(); |
170 | newInc->recreate(); | 175 | newInc->recreate(); |
171 | if ( mIncidence->doesRecur() ) { | 176 | if ( mIncidence->doesRecur() ) { |
172 | mIncidence->addExDate( mDate ); | 177 | mIncidence->addExDate( mDate ); |
173 | newInc->recurrence()->unsetRecurs(); | 178 | newInc->recurrence()->unsetRecurs(); |
174 | int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); | 179 | int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); |
175 | QTime tim = mIncidence->dtStart().time(); | 180 | QTime tim = mIncidence->dtStart().time(); |
176 | newInc->setDtStart( QDateTime(mDate, tim) ); | 181 | newInc->setDtStart( QDateTime(mDate, tim) ); |
177 | ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); | 182 | ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); |
178 | } | 183 | } |
179 | #endif | 184 | #endif |
180 | mIncidence = mIncidence->recreateCloneException( mDate ); | 185 | mIncidence = mIncidence->recreateCloneException( mDate ); |
181 | } | 186 | } |
182 | bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) | 187 | bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) |
183 | { | 188 | { |
184 | int size = AGENDA_ICON_SIZE; | 189 | int size = AGENDA_ICON_SIZE; |
185 | 190 | ||
186 | int yOff = 0; | 191 | int yOff = 0; |
187 | int xOff = 0; | 192 | int xOff = 0; |
188 | int x = pos().x() +3; | 193 | int x = pos().x() +3; |
189 | int y; | 194 | int y; |
190 | if ( mAllDay ) | 195 | if ( mAllDay ) |
191 | y = pos().y()+3; | 196 | y = pos().y()+3; |
192 | else | 197 | else |
193 | y = mCellYTop * ( height() / cellHeight() ) +3; | 198 | y = mCellYTop * ( height() / cellHeight() ) +3; |
194 | if (mIncidence->cancelled()) { | 199 | if (mIncidence->cancelled()) { |
195 | int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; | 200 | int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; |
196 | int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; | 201 | int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; |
197 | p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); | 202 | p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); |
198 | p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); | 203 | p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); |
199 | if ( horLayout ) | 204 | if ( horLayout ) |
200 | ++xOff; | 205 | ++xOff; |
201 | else | 206 | else |
202 | ++yOff; | 207 | ++yOff; |
203 | } | 208 | } |
204 | if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) { | 209 | if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) { |
205 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red ); | 210 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red ); |
206 | if ( horLayout ) | 211 | if ( horLayout ) |
207 | ++xOff; | 212 | ++xOff; |
208 | else | 213 | else |
209 | ++yOff; | 214 | ++yOff; |
210 | } | 215 | } |
211 | if (mIncidence->recurrence()->doesRecur()) { | 216 | if (mIncidence->recurrence()->doesRecur()) { |
212 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue ); | 217 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue ); |
213 | if ( horLayout ) | 218 | if ( horLayout ) |
214 | ++xOff; | 219 | ++xOff; |
215 | else | 220 | else |
216 | ++yOff; | 221 | ++yOff; |
217 | } | 222 | } |
218 | if (mIncidence->description().length() > 0) { | 223 | if (mIncidence->description().length() > 0) { |
219 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen ); | 224 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen ); |
220 | if ( horLayout ) | 225 | if ( horLayout ) |
221 | ++xOff; | 226 | ++xOff; |
222 | else | 227 | else |
223 | ++yOff; | 228 | ++yOff; |
224 | } | 229 | } |
225 | if (mIncidence->isReadOnly()) { | 230 | if (mIncidence->isReadOnly()) { |
226 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white ); | 231 | p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white ); |
227 | if ( horLayout ) | 232 | if ( horLayout ) |
228 | ++xOff; | 233 | ++xOff; |
229 | else | 234 | else |
230 | ++yOff; | 235 | ++yOff; |
231 | } | 236 | } |
232 | 237 | ||