-rw-r--r-- | korganizer/kolistview.cpp | 102 |
1 files changed, 50 insertions, 52 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index 4c815d8..1b4397f 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp | |||
@@ -90,997 +90,995 @@ ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) | |||
90 | mItem = item; | 90 | mItem = item; |
91 | mDate = date; | 91 | mDate = date; |
92 | } | 92 | } |
93 | 93 | ||
94 | ListItemVisitor::~ListItemVisitor() | 94 | ListItemVisitor::~ListItemVisitor() |
95 | { | 95 | { |
96 | } | 96 | } |
97 | 97 | ||
98 | bool ListItemVisitor::visit(Event *e) | 98 | bool ListItemVisitor::visit(Event *e) |
99 | { | 99 | { |
100 | bool ok = false; | 100 | bool ok = false; |
101 | QString start, end; | 101 | QString start, end; |
102 | QDate ds, de; | 102 | QDate ds, de; |
103 | if ( e->doesRecur() ) { | 103 | if ( e->doesRecur() ) { |
104 | ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); | 104 | ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); |
105 | if ( ok ) { | 105 | if ( ok ) { |
106 | int days = e->dtStart().date().daysTo(e->dtEnd().date() ); | 106 | int days = e->dtStart().date().daysTo(e->dtEnd().date() ); |
107 | start = KGlobal::locale()->formatDate(ds,true); | 107 | start = KGlobal::locale()->formatDate(ds,true); |
108 | de = ds.addDays( days); | 108 | de = ds.addDays( days); |
109 | end = KGlobal::locale()->formatDate(de,true); | 109 | end = KGlobal::locale()->formatDate(de,true); |
110 | } | 110 | } |
111 | 111 | ||
112 | } | 112 | } |
113 | if ( ! ok ) { | 113 | if ( ! ok ) { |
114 | start =e->dtStartDateStr(); | 114 | start =e->dtStartDateStr(); |
115 | end = e->dtEndDateStr(); | 115 | end = e->dtEndDateStr(); |
116 | ds = e->dtStart().date(); | 116 | ds = e->dtStart().date(); |
117 | de = e->dtEnd().date(); | 117 | de = e->dtEnd().date(); |
118 | } | 118 | } |
119 | mItem->setText(0,e->summary()); | 119 | mItem->setText(0,e->summary()); |
120 | mItem->setText(1,start); | 120 | mItem->setText(1,start); |
121 | if ( e->doesFloat() ) | 121 | if ( e->doesFloat() ) |
122 | mItem->setText(2,"---"); | 122 | mItem->setText(2,"---"); |
123 | else | 123 | else |
124 | mItem->setText(2,e->dtStartTimeStr()); | 124 | mItem->setText(2,e->dtStartTimeStr()); |
125 | mItem->setText(3,end); | 125 | mItem->setText(3,end); |
126 | if ( e->doesFloat() ) | 126 | if ( e->doesFloat() ) |
127 | mItem->setText(4,"---"); | 127 | mItem->setText(4,"---"); |
128 | else | 128 | else |
129 | mItem->setText(4,e->dtEndTimeStr()); | 129 | mItem->setText(4,e->dtEndTimeStr()); |
130 | if ( e->isAlarmEnabled() ) { | 130 | if ( e->isAlarmEnabled() ) { |
131 | mItem->setText(5,e->alarms().first()->offsetText() ); | 131 | mItem->setText(5,e->alarms().first()->offsetText() ); |
132 | } else { | 132 | } else { |
133 | mItem->setText(5, i18n("No")); | 133 | mItem->setText(5, i18n("No")); |
134 | } | 134 | } |
135 | mItem->setText(6, e->recurrence()->recurrenceText()); | 135 | mItem->setText(6, e->recurrence()->recurrenceText()); |
136 | if( ! e->doesRecur() ) | 136 | if( ! e->doesRecur() ) |
137 | mItem->setSortKey( 6, "-" ); | 137 | mItem->setSortKey( 6, "-" ); |
138 | mItem->setText(7,"---"); | 138 | mItem->setText(7,"---"); |
139 | mItem->setText(8,"---"); | 139 | mItem->setText(8,"---"); |
140 | mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); | 140 | mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); |
141 | mItem->setText(10,e->categoriesStr()); | 141 | mItem->setText(10,e->categoriesStr()); |
142 | mItem->setText(11, KOPrefs::instance()->calName( e->calID() )); | 142 | mItem->setText(11, KOPrefs::instance()->calName( e->calID() )); |
143 | 143 | ||
144 | QString key; | 144 | QString key; |
145 | QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); | 145 | QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); |
146 | key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); | 146 | key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); |
147 | mItem->setSortKey(1,key); | 147 | mItem->setSortKey(1,key); |
148 | 148 | ||
149 | t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); | 149 | t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); |
150 | key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); | 150 | key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); |
151 | mItem->setSortKey(3,key); | 151 | mItem->setSortKey(3,key); |
152 | return true; | 152 | return true; |
153 | } | 153 | } |
154 | 154 | ||
155 | bool ListItemVisitor::visit(Todo *t) | 155 | bool ListItemVisitor::visit(Todo *t) |
156 | { | 156 | { |
157 | mItem->setText(0,t->summary()); | 157 | mItem->setText(0,t->summary()); |
158 | if ( t->isCompleted() ) { | 158 | if ( t->isCompleted() ) { |
159 | mItem->setSortKey(0,"99"+ t->summary().left(10)); | 159 | mItem->setSortKey(0,"99"+ t->summary().left(10)); |
160 | } else | 160 | } else |
161 | mItem->setSortKey(0,QString::number( t->percentComplete() )+ t->summary().left(10)); | 161 | mItem->setSortKey(0,QString::number( t->percentComplete() )+ t->summary().left(10)); |
162 | mItem->setPixmap( 0, *(sgListViewCompletedPix[t->percentComplete()/20])); | 162 | mItem->setPixmap( 0, *(sgListViewCompletedPix[t->percentComplete()/20])); |
163 | if (t->hasStartDate()) { | 163 | if (t->hasStartDate()) { |
164 | mItem->setText(1,t->dtStartDateStr()); | 164 | mItem->setText(1,t->dtStartDateStr()); |
165 | if (t->doesFloat()) { | 165 | if (t->doesFloat()) { |
166 | mItem->setText(2,"---"); | 166 | mItem->setText(2,"---"); |
167 | } else { | 167 | } else { |
168 | mItem->setText(2,t->dtStartTimeStr()); | 168 | mItem->setText(2,t->dtStartTimeStr()); |
169 | } | 169 | } |
170 | } else { | 170 | } else { |
171 | mItem->setText(1,"---"); | 171 | mItem->setText(1,"---"); |
172 | mItem->setText(2,"---"); | 172 | mItem->setText(2,"---"); |
173 | } | 173 | } |
174 | mItem->setText(3,"---"); | 174 | mItem->setText(3,"---"); |
175 | mItem->setText(4,"---"); | 175 | mItem->setText(4,"---"); |
176 | if ( t->isAlarmEnabled() ) { | 176 | if ( t->isAlarmEnabled() ) { |
177 | mItem->setText(5,t->alarms().first()->offsetText() ); | 177 | mItem->setText(5,t->alarms().first()->offsetText() ); |
178 | } else { | 178 | } else { |
179 | mItem->setText(5, i18n("No")); | 179 | mItem->setText(5, i18n("No")); |
180 | } | 180 | } |
181 | mItem->setText(6, t->recurrence()->recurrenceText()); | 181 | mItem->setText(6, t->recurrence()->recurrenceText()); |
182 | if( ! t->doesRecur() ) | 182 | if( ! t->doesRecur() ) |
183 | mItem->setSortKey( 6, "-" ); | 183 | mItem->setSortKey( 6, "-" ); |
184 | if (t->hasDueDate()) { | 184 | if (t->hasDueDate()) { |
185 | mItem->setText(7,t->dtDueDateStr()); | 185 | mItem->setText(7,t->dtDueDateStr()); |
186 | if (t->doesFloat()) { | 186 | if (t->doesFloat()) { |
187 | mItem->setText(8,"---"); | 187 | mItem->setText(8,"---"); |
188 | } else { | 188 | } else { |
189 | mItem->setText(8,t->dtDueTimeStr()); | 189 | mItem->setText(8,t->dtDueTimeStr()); |
190 | } | 190 | } |
191 | } else { | 191 | } else { |
192 | mItem->setText(7,"---"); | 192 | mItem->setText(7,"---"); |
193 | mItem->setText(8,"---"); | 193 | mItem->setText(8,"---"); |
194 | } | 194 | } |
195 | mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); | 195 | mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); |
196 | mItem->setText(10,t->categoriesStr()); | 196 | mItem->setText(10,t->categoriesStr()); |
197 | mItem->setText(11, KOPrefs::instance()->calName( t->calID() )); | 197 | mItem->setText(11, KOPrefs::instance()->calName( t->calID() )); |
198 | 198 | ||
199 | QString key; | 199 | QString key; |
200 | QDate d; | 200 | QDate d; |
201 | if (t->hasDueDate()) { | 201 | if (t->hasDueDate()) { |
202 | d = t->dtDue().date(); | 202 | d = t->dtDue().date(); |
203 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); | 203 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); |
204 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); | 204 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); |
205 | mItem->setSortKey(7,key); | 205 | mItem->setSortKey(7,key); |
206 | } | 206 | } |
207 | if ( t->hasStartDate() ) { | 207 | if ( t->hasStartDate() ) { |
208 | d = t->dtStart().date(); | 208 | d = t->dtStart().date(); |
209 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); | 209 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); |
210 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); | 210 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); |
211 | mItem->setSortKey(1,key); | 211 | mItem->setSortKey(1,key); |
212 | } | 212 | } |
213 | return true; | 213 | return true; |
214 | } | 214 | } |
215 | 215 | ||
216 | bool ListItemVisitor::visit(Journal * j) | 216 | bool ListItemVisitor::visit(Journal * j) |
217 | { | 217 | { |
218 | 218 | ||
219 | QString des; | 219 | QString des; |
220 | if ( !j->summary().isEmpty() ) { | 220 | if ( !j->summary().isEmpty() ) { |
221 | des = j->summary(); | 221 | des = j->summary(); |
222 | } else { | 222 | } else { |
223 | des = j->description().left(30); | 223 | des = j->description().left(30); |
224 | des = des.simplifyWhiteSpace (); | 224 | des = des.simplifyWhiteSpace (); |
225 | des.replace (QRegExp ("\\n"),"" ); | 225 | des.replace (QRegExp ("\\n"),"" ); |
226 | des.replace (QRegExp ("\\r"),"" ); | 226 | des.replace (QRegExp ("\\r"),"" ); |
227 | } | 227 | } |
228 | mItem->setText(0,i18n("Journal: ")+des.left(25)); | 228 | mItem->setText(0,i18n("Journal: ")+des.left(25)); |
229 | mItem->setText(1,j->dtStartDateStr()); | 229 | mItem->setText(1,j->dtStartDateStr()); |
230 | mItem->setText(2,"---"); | 230 | mItem->setText(2,"---"); |
231 | mItem->setText(3,"---"); | 231 | mItem->setText(3,"---"); |
232 | mItem->setText(4,"---"); | 232 | mItem->setText(4,"---"); |
233 | mItem->setText(5,"---"); | 233 | mItem->setText(5,"---"); |
234 | mItem->setText(6,"---"); | 234 | mItem->setText(6,"---"); |
235 | mItem->setText(7,j->dtStartDateStr()); | 235 | mItem->setText(7,j->dtStartDateStr()); |
236 | mItem->setText(8,"---"); | 236 | mItem->setText(8,"---"); |
237 | mItem->setText(9,"---"); | 237 | mItem->setText(9,"---"); |
238 | mItem->setText(10,j->categoriesStr()); | 238 | mItem->setText(10,j->categoriesStr()); |
239 | mItem->setText(11, KOPrefs::instance()->calName( j->calID() )); | 239 | mItem->setText(11, KOPrefs::instance()->calName( j->calID() )); |
240 | 240 | ||
241 | QString key; | 241 | QString key; |
242 | QDate d = j->dtStart().date(); | 242 | QDate d = j->dtStart().date(); |
243 | key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); | 243 | key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); |
244 | mItem->setSortKey(1,key); | 244 | mItem->setSortKey(1,key); |
245 | mItem->setSortKey(7,key); | 245 | mItem->setSortKey(7,key); |
246 | 246 | ||
247 | return true; | 247 | return true; |
248 | } | 248 | } |
249 | 249 | ||
250 | KOListView::KOListView(Calendar *calendar, QWidget *parent, | 250 | KOListView::KOListView(Calendar *calendar, QWidget *parent, |
251 | const char *name) | 251 | const char *name) |
252 | : KOEventView(calendar, parent, name) | 252 | : KOEventView(calendar, parent, name) |
253 | { | 253 | { |
254 | 254 | ||
255 | mActiveItem = 0; | 255 | mActiveItem = 0; |
256 | mForceShowCompletedTodos = false; | 256 | mForceShowCompletedTodos = false; |
257 | mListView = new KOListViewListView(this); | 257 | mListView = new KOListViewListView(this); |
258 | mListView->addColumn(i18n("Summary")); | 258 | mListView->addColumn(i18n("Summary")); |
259 | mListView->addColumn(i18n("Start Date")); | 259 | mListView->addColumn(i18n("Start Date")); |
260 | mListView->addColumn(i18n("Start Time")); | 260 | mListView->addColumn(i18n("Start Time")); |
261 | mListView->addColumn(i18n("End Date")); | 261 | mListView->addColumn(i18n("End Date")); |
262 | mListView->addColumn(i18n("End Time")); | 262 | mListView->addColumn(i18n("End Time")); |
263 | mListView->addColumn(i18n("Alarm")); // alarm set? | 263 | mListView->addColumn(i18n("Alarm")); // alarm set? |
264 | mListView->addColumn(i18n("Recurs")); // recurs? | 264 | mListView->addColumn(i18n("Recurs")); // recurs? |
265 | mListView->addColumn(i18n("Due Date")); | 265 | mListView->addColumn(i18n("Due Date")); |
266 | mListView->addColumn(i18n("Due Time")); | 266 | mListView->addColumn(i18n("Due Time")); |
267 | mListView->addColumn(i18n("Cancelled")); | 267 | mListView->addColumn(i18n("Cancelled")); |
268 | mListView->addColumn(i18n("Categories")); | 268 | mListView->addColumn(i18n("Categories")); |
269 | mListView->addColumn(i18n("Calendar")); | 269 | mListView->addColumn(i18n("Calendar")); |
270 | 270 | ||
271 | mListView->setColumnAlignment(0,AlignLeft); | 271 | mListView->setColumnAlignment(0,AlignLeft); |
272 | mListView->setColumnAlignment(1,AlignLeft); | 272 | mListView->setColumnAlignment(1,AlignLeft); |
273 | mListView->setColumnAlignment(2,AlignHCenter); | 273 | mListView->setColumnAlignment(2,AlignHCenter); |
274 | mListView->setColumnAlignment(3,AlignLeft); | 274 | mListView->setColumnAlignment(3,AlignLeft); |
275 | mListView->setColumnAlignment(4,AlignHCenter); | 275 | mListView->setColumnAlignment(4,AlignHCenter); |
276 | mListView->setColumnAlignment(5,AlignLeft); | 276 | mListView->setColumnAlignment(5,AlignLeft); |
277 | mListView->setColumnAlignment(6,AlignLeft); | 277 | mListView->setColumnAlignment(6,AlignLeft); |
278 | mListView->setColumnAlignment(7,AlignLeft); | 278 | mListView->setColumnAlignment(7,AlignLeft); |
279 | mListView->setColumnAlignment(8,AlignLeft); | 279 | mListView->setColumnAlignment(8,AlignLeft); |
280 | mListView->setColumnAlignment(9,AlignLeft); | 280 | mListView->setColumnAlignment(9,AlignLeft); |
281 | mListView->setColumnAlignment(10,AlignLeft); | 281 | mListView->setColumnAlignment(10,AlignLeft); |
282 | mListView->setColumnAlignment(11,AlignLeft); | 282 | mListView->setColumnAlignment(11,AlignLeft); |
283 | mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); | 283 | mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); |
284 | 284 | ||
285 | int iii = 0; | 285 | int iii = 0; |
286 | for ( iii = 0; iii< 12 ; ++iii ) | 286 | for ( iii = 0; iii< 12 ; ++iii ) |
287 | mListView->setColumnWidthMode( iii, QListView::Manual ); | 287 | mListView->setColumnWidthMode( iii, QListView::Manual ); |
288 | 288 | ||
289 | QBoxLayout *layoutTop = new QVBoxLayout(this); | 289 | QBoxLayout *layoutTop = new QVBoxLayout(this); |
290 | layoutTop->addWidget(mListView); | 290 | layoutTop->addWidget(mListView); |
291 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 291 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
292 | mPopupMenu = eventPopup(); | 292 | mPopupMenu = eventPopup(); |
293 | QPopupMenu* selPopup = new QPopupMenu ( this ); | 293 | QPopupMenu* selPopup = new QPopupMenu ( this ); |
294 | mPopupMenu->insertSeparator(); | 294 | mPopupMenu->insertSeparator(); |
295 | 295 | ||
296 | selPopup->insertItem(i18n("All"),this, | 296 | selPopup->insertItem(i18n("All"),this, |
297 | SLOT(allSelection())); | 297 | SLOT(allSelection())); |
298 | selPopup->insertItem(i18n("None"),this, | 298 | selPopup->insertItem(i18n("None"),this, |
299 | SLOT(clearSelection())); | 299 | SLOT(clearSelection())); |
300 | selPopup->insertItem(i18n("Delete selected..."),this, | 300 | selPopup->insertItem(i18n("Delete selected..."),this, |
301 | SLOT(deleteAll())); | 301 | SLOT(deleteAll())); |
302 | mPopupMenu->insertItem(i18n("Selection"), selPopup ); | 302 | mPopupMenu->insertItem(i18n("Selection"), selPopup ); |
303 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 303 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
304 | i18n("Hide all selected"),this, | 304 | i18n("Hide all selected"),this, |
305 | SLOT(hideAll()),true); | 305 | SLOT(hideAll()),true); |
306 | 306 | ||
307 | mPopupMenu->insertSeparator(); | 307 | mPopupMenu->insertSeparator(); |
308 | #ifdef DESKTOP_VERSION | 308 | #ifdef DESKTOP_VERSION |
309 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 309 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
310 | i18n("Print complete list"),this, | 310 | i18n("Print complete list"),this, |
311 | SLOT(printList()),true); | 311 | SLOT(printList()),true); |
312 | mPopupMenu->insertSeparator(); | 312 | mPopupMenu->insertSeparator(); |
313 | #endif | 313 | #endif |
314 | mCalPopup = new QPopupMenu ( this ); | 314 | mCalPopup = new QPopupMenu ( this ); |
315 | mPopupMenu->insertItem( i18n("Set Calendar"), mCalPopup ); | 315 | mPopupMenu->insertItem( i18n("Set Calendar"), mCalPopup ); |
316 | 316 | ||
317 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 317 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
318 | i18n("Set categories")+"...",this, | 318 | i18n("Set categories")+"...",this, |
319 | SLOT(setCat()),true); | 319 | SLOT(setCat()),true); |
320 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 320 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
321 | i18n("Set alarm..."),this, | 321 | i18n("Set alarm..."),this, |
322 | SLOT(setAlarm()),true); | 322 | SLOT(setAlarm()),true); |
323 | QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this, | 323 | QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this, |
324 | SLOT( populateCalPopup() )); | 324 | SLOT( populateCalPopup() )); |
325 | QObject::connect(mCalPopup,SIGNAL(activated( int )),this, | 325 | QObject::connect(mCalPopup,SIGNAL(activated( int )),this, |
326 | SLOT( setCalendar( int ) )); | 326 | SLOT( setCalendar( int ) )); |
327 | QPopupMenu * exportPO = new QPopupMenu ( this ); | 327 | QPopupMenu * exportPO = new QPopupMenu ( this ); |
328 | mPopupMenu->insertItem( i18n("Export"), exportPO ); | 328 | mPopupMenu->insertItem( i18n("Export"), exportPO ); |
329 | exportPO->insertItem( i18n("As iCal (ics) file..."),this, | 329 | exportPO->insertItem( i18n("As iCal (ics) file..."),this, |
330 | SLOT(saveToFile())); | 330 | SLOT(saveToFile())); |
331 | exportPO->insertItem( i18n("As vCal (vcs) file..."),this, | 331 | exportPO->insertItem( i18n("As vCal (vcs) file..."),this, |
332 | SLOT(saveToFileVCS())); | 332 | SLOT(saveToFileVCS())); |
333 | exportPO->insertItem( i18n("Journal/Details..."),this, | 333 | exportPO->insertItem( i18n("Journal/Details..."),this, |
334 | SLOT(saveDescriptionToFile())); | 334 | SLOT(saveDescriptionToFile())); |
335 | // mPopupMenu->insertSeparator(); | 335 | // mPopupMenu->insertSeparator(); |
336 | // mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 336 | // mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
337 | // i18n("Add Categ. to selected..."),this, | 337 | // i18n("Add Categ. to selected..."),this, |
338 | // SLOT(addCat()),true); | 338 | // SLOT(addCat()),true); |
339 | //mPopupMenu->insertSeparator(); | 339 | //mPopupMenu->insertSeparator(); |
340 | #ifndef DESKTOP_VERSION | 340 | #ifndef DESKTOP_VERSION |
341 | mPopupMenu->insertSeparator(); | 341 | mPopupMenu->insertSeparator(); |
342 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 342 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
343 | i18n("Beam via IR"),this, | 343 | i18n("Beam via IR"),this, |
344 | SLOT(beamSelected()),true); | 344 | SLOT(beamSelected()),true); |
345 | #endif | 345 | #endif |
346 | /* | 346 | /* |
347 | mPopupMenu = new QPopupMenu; | 347 | mPopupMenu = new QPopupMenu; |
348 | mPopupMenu->insertItem(i18n("Edit Event"), this, | 348 | mPopupMenu->insertItem(i18n("Edit Event"), this, |
349 | SLOT (editEvent())); | 349 | SLOT (editEvent())); |
350 | mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, | 350 | mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, |
351 | SLOT (deleteEvent())); | 351 | SLOT (deleteEvent())); |
352 | mPopupMenu->insertSeparator(); | 352 | mPopupMenu->insertSeparator(); |
353 | mPopupMenu->insertItem(i18n("Show Dates"), this, | 353 | mPopupMenu->insertItem(i18n("Show Dates"), this, |
354 | SLOT(showDates())); | 354 | SLOT(showDates())); |
355 | mPopupMenu->insertItem(i18n("Hide Dates"), this, | 355 | mPopupMenu->insertItem(i18n("Hide Dates"), this, |
356 | SLOT(hideDates())); | 356 | SLOT(hideDates())); |
357 | */ | 357 | */ |
358 | QObject::connect(mListView,SIGNAL( newEvent()), | 358 | QObject::connect(mListView,SIGNAL( newEvent()), |
359 | this,SIGNAL(signalNewEvent())); | 359 | this,SIGNAL(signalNewEvent())); |
360 | QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), | 360 | QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), |
361 | this,SLOT(defaultItemAction(QListViewItem *))); | 361 | this,SLOT(defaultItemAction(QListViewItem *))); |
362 | QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, | 362 | QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, |
363 | const QPoint &, int )), | 363 | const QPoint &, int )), |
364 | this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); | 364 | this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); |
365 | QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), | 365 | QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), |
366 | SLOT(processSelectionChange(QListViewItem *))); | 366 | SLOT(processSelectionChange(QListViewItem *))); |
367 | QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), | 367 | QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), |
368 | SIGNAL(showIncidenceSignal(Incidence *)) ); | 368 | SIGNAL(showIncidenceSignal(Incidence *)) ); |
369 | 369 | ||
370 | readSettings(KOGlobals::config(),"KOListView Layout"); | 370 | readSettings(KOGlobals::config(),"KOListView Layout"); |
371 | } | 371 | } |
372 | 372 | ||
373 | KOListView::~KOListView() | 373 | KOListView::~KOListView() |
374 | { | 374 | { |
375 | delete mPopupMenu; | 375 | delete mPopupMenu; |
376 | #if QT_VERSION >= 0x030000 | 376 | #if QT_VERSION >= 0x030000 |
377 | 377 | ||
378 | #else | 378 | #else |
379 | delete mKOListViewWhatsThis; | 379 | delete mKOListViewWhatsThis; |
380 | #endif | 380 | #endif |
381 | } | 381 | } |
382 | 382 | ||
383 | QString KOListView::getWhatsThisText(QPoint p) | 383 | QString KOListView::getWhatsThisText(QPoint p) |
384 | { | 384 | { |
385 | KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); | 385 | KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); |
386 | if ( item ) | 386 | if ( item ) |
387 | return KIncidenceFormatter::instance()->getFormattedText( item->data(), | 387 | return KIncidenceFormatter::instance()->getFormattedText( item->data(), |
388 | KOPrefs::instance()->mWTshowDetails, | 388 | KOPrefs::instance()->mWTshowDetails, |
389 | KOPrefs::instance()->mWTshowCreated, | 389 | KOPrefs::instance()->mWTshowCreated, |
390 | KOPrefs::instance()->mWTshowChanged); | 390 | KOPrefs::instance()->mWTshowChanged); |
391 | return i18n("That is the list view" ); | 391 | return i18n("That is the list view" ); |
392 | 392 | ||
393 | } | 393 | } |
394 | 394 | ||
395 | void KOListView::setCalendar( int c ) | 395 | void KOListView::setCalendar( int c ) |
396 | { | 396 | { |
397 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), | 397 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), |
398 | i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ), | 398 | i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ), |
399 | i18n("Continue"), i18n("Cancel"), 0, | 399 | i18n("Continue"), i18n("Cancel"), 0, |
400 | 0, 1 ); | 400 | 0, 1 ); |
401 | if ( result != 0 ) { | 401 | if ( result != 0 ) { |
402 | return; | 402 | return; |
403 | } | 403 | } |
404 | 404 | ||
405 | QPtrList<Incidence> delSel = getSelectedIncidences() ; | 405 | QPtrList<Incidence> delSel = getSelectedIncidences() ; |
406 | int icount = delSel.count(); | 406 | int icount = delSel.count(); |
407 | if ( icount ) { | 407 | if ( icount ) { |
408 | Incidence *incidence = delSel.first(); | 408 | Incidence *incidence = delSel.first(); |
409 | while ( incidence ) { | 409 | while ( incidence ) { |
410 | incidence->setCalID( c ); | 410 | incidence->setCalID( c ); |
411 | KOListViewItem * item = getItemForEvent( incidence ); | 411 | KOListViewItem * item = getItemForEvent( incidence ); |
412 | if ( item ) { | 412 | if ( item ) { |
413 | ListItemVisitor v(item, mStartDate ); | 413 | ListItemVisitor v(item, mStartDate ); |
414 | incidence->accept(v); | 414 | incidence->accept(v); |
415 | } | 415 | } |
416 | incidence = delSel.next(); | 416 | incidence = delSel.next(); |
417 | } | 417 | } |
418 | } | 418 | } |
419 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; | 419 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; |
420 | KopiCalendarFile * cal = calendars.first(); | 420 | KopiCalendarFile * cal = calendars.first(); |
421 | while ( cal ) { | 421 | while ( cal ) { |
422 | mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); | 422 | mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); |
423 | mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); | 423 | mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); |
424 | mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); | 424 | mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); |
425 | if ( cal->isStandard ) | 425 | if ( cal->isStandard ) |
426 | mCalendar->setDefaultCalendar( cal->mCalNumber ); | 426 | mCalendar->setDefaultCalendar( cal->mCalNumber ); |
427 | cal = calendars.next(); | 427 | cal = calendars.next(); |
428 | } | 428 | } |
429 | mCalendar->setSyncEventsReadOnly(); | 429 | mCalendar->setSyncEventsReadOnly(); |
430 | mCalendar->reInitAlarmSettings(); | 430 | mCalendar->reInitAlarmSettings(); |
431 | 431 | ||
432 | } | 432 | } |
433 | void KOListView::populateCalPopup() | 433 | void KOListView::populateCalPopup() |
434 | { | 434 | { |
435 | mCalPopup->clear(); | 435 | mCalPopup->clear(); |
436 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); | 436 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); |
437 | while ( kkf ) { | 437 | while ( kkf ) { |
438 | int index = mCalPopup->insertItem( kkf->mName+"...", kkf->mCalNumber); | 438 | int index = mCalPopup->insertItem( kkf->mName+"...", kkf->mCalNumber); |
439 | if ( kkf->mErrorOnLoad || kkf->isReadOnly ) | 439 | if ( kkf->mErrorOnLoad || kkf->isReadOnly ) |
440 | mCalPopup->setItemEnabled( index, false ); | 440 | mCalPopup->setItemEnabled( index, false ); |
441 | kkf = KOPrefs::instance()->mCalendars.next(); | 441 | kkf = KOPrefs::instance()->mCalendars.next(); |
442 | } | 442 | } |
443 | } | 443 | } |
444 | void KOListView::updateList() | 444 | void KOListView::updateList() |
445 | { | 445 | { |
446 | // qDebug(" KOListView::updateList() "); | 446 | // qDebug(" KOListView::updateList() "); |
447 | 447 | ||
448 | } | 448 | } |
449 | 449 | ||
450 | void KOListView::clearList() | 450 | void KOListView::clearList() |
451 | { | 451 | { |
452 | clear (); | 452 | clear (); |
453 | } | 453 | } |
454 | 454 | ||
455 | void KOListView::setCat() | 455 | void KOListView::setCat() |
456 | { | 456 | { |
457 | 457 | ||
458 | bool set = true; | 458 | bool set = true; |
459 | int result = KMessageBox::warningYesNoCancel(this, | 459 | int result = KMessageBox::warningYesNoCancel(this, |
460 | i18n("Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?"), | 460 | i18n("Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?"), |
461 | i18n("Set categories"), | 461 | i18n("Set categories"), |
462 | i18n("Add"), | 462 | i18n("Add"), |
463 | i18n("Reset")); | 463 | i18n("Reset")); |
464 | if (result == KMessageBox::Cancel) return; | 464 | if (result == KMessageBox::Cancel) return; |
465 | if (result == KMessageBox::Yes) set = false; | 465 | if (result == KMessageBox::Yes) set = false; |
466 | setCategories( set ); | 466 | setCategories( set ); |
467 | } | 467 | } |
468 | 468 | ||
469 | void KOListView::setAlarm() | 469 | void KOListView::setAlarm() |
470 | { | 470 | { |
471 | KOAlarmPrefs kap( this); | 471 | KOAlarmPrefs kap( this); |
472 | if ( !kap.exec() ) | 472 | if ( !kap.exec() ) |
473 | return; | 473 | return; |
474 | QPtrList<KOListViewItem> sel ; | 474 | QPtrList<Incidence> delSel = getSelectedIncidences( true, true, false, true ); // no journals, only due todos |
475 | QListViewItem *qitem = mListView->firstChild (); | 475 | Incidence* inc = delSel.first(); |
476 | while ( qitem ) { | ||
477 | if ( qitem->isSelected() ) { | ||
478 | Incidence* inc = ((KOListViewItem *) qitem)->data(); | ||
479 | if ( inc->typeID() != journalID ) { | ||
480 | if ( inc->typeID() == todoID ) { | ||
481 | if ( ((Todo*)inc)->hasDueDate() ) | ||
482 | sel.append(((KOListViewItem *)qitem)); | ||
483 | } else | ||
484 | sel.append(((KOListViewItem *)qitem)); | ||
485 | } | ||
486 | } | ||
487 | qitem = qitem->nextSibling(); | ||
488 | } | ||
489 | int count = 0; | 476 | int count = 0; |
490 | KOListViewItem * item, *temp; | 477 | while ( inc ) { |
491 | item = sel.first(); | 478 | ++count; |
492 | Incidence* inc; | 479 | if (kap.mAlarmButton->isChecked()) { |
493 | while ( item ) { | 480 | if (inc->alarms().count() == 0) |
494 | inc = item->data(); | 481 | inc->newAlarm(); |
495 | ++count; | 482 | QPtrList<Alarm> alarms = inc->alarms(); |
496 | if (kap.mAlarmButton->isChecked()) { | 483 | Alarm *alarm; |
497 | if (inc->alarms().count() == 0) | 484 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { |
498 | inc->newAlarm(); | 485 | alarm->setEnabled(true); |
499 | QPtrList<Alarm> alarms = inc->alarms(); | 486 | int j = kap.mAlarmTimeEdit->value()* -60; |
500 | Alarm *alarm; | 487 | if (kap.mAlarmIncrCombo->currentItem() == 1) |
501 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { | 488 | j = j * 60; |
502 | alarm->setEnabled(true); | 489 | else if (kap.mAlarmIncrCombo->currentItem() == 2) |
503 | int j = kap.mAlarmTimeEdit->value()* -60; | 490 | j = j * (60 * 24); |
504 | if (kap.mAlarmIncrCombo->currentItem() == 1) | 491 | alarm->setStartOffset( j ); |
505 | j = j * 60; | 492 | |
506 | else if (kap.mAlarmIncrCombo->currentItem() == 2) | 493 | if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { |
507 | j = j * (60 * 24); | 494 | alarm->setProcedureAlarm(kap.mAlarmProgram); |
508 | alarm->setStartOffset( j ); | ||
509 | |||
510 | if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { | ||
511 | alarm->setProcedureAlarm(kap.mAlarmProgram); | ||
512 | } | ||
513 | else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) | ||
514 | alarm->setAudioAlarm(kap.mAlarmSound); | ||
515 | else | ||
516 | alarm->setType(Alarm::Invalid); | ||
517 | //alarm->setAudioAlarm("default"); | ||
518 | // TODO: Deal with multiple alarms | ||
519 | break; // For now, stop after the first alarm | ||
520 | } | 495 | } |
521 | } else { | 496 | else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) |
522 | Alarm* alarm = inc->alarms().first(); | 497 | alarm->setAudioAlarm(kap.mAlarmSound); |
523 | if ( alarm ) { | 498 | else |
524 | alarm->setEnabled(false); | ||
525 | alarm->setType(Alarm::Invalid); | 499 | alarm->setType(Alarm::Invalid); |
526 | } | 500 | //alarm->setAudioAlarm("default"); |
501 | // TODO: Deal with multiple alarms | ||
502 | break; // For now, stop after the first alarm | ||
527 | } | 503 | } |
504 | } else { | ||
505 | Alarm* alarm = inc->alarms().first(); | ||
506 | if ( alarm ) { | ||
507 | alarm->setEnabled(false); | ||
508 | alarm->setType(Alarm::Invalid); | ||
509 | } | ||
510 | } | ||
511 | KOListViewItem* item = getItemForEvent(inc); | ||
512 | if (item) { | ||
528 | ListItemVisitor v(item, mStartDate ); | 513 | ListItemVisitor v(item, mStartDate ); |
529 | inc->accept(v); | 514 | inc->accept(v); |
530 | item = sel.next(); | 515 | } |
516 | inc = delSel.next(); | ||
531 | } | 517 | } |
532 | topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); | 518 | topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); |
533 | qDebug("KO: Set alarm for %d items", count); | 519 | qDebug("KO: Set alarm for %d items", count); |
534 | calendar()->reInitAlarmSettings(); | 520 | calendar()->reInitAlarmSettings(); |
535 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 521 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
536 | } | 522 | } |
537 | void KOListView::setCategories( bool removeOld ) | 523 | void KOListView::setCategories( bool removeOld ) |
538 | { | 524 | { |
539 | 525 | ||
540 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); | 526 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); |
541 | csd->setColorEnabled(); | 527 | csd->setColorEnabled(); |
542 | if (! csd->exec()) { | 528 | if (! csd->exec()) { |
543 | delete csd; | 529 | delete csd; |
544 | return; | 530 | return; |
545 | } | 531 | } |
546 | QStringList catList = csd->selectedCategories(); | 532 | QStringList catList = csd->selectedCategories(); |
547 | delete csd; | 533 | delete csd; |
548 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; | 534 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; |
549 | Incidence* inc = delSel.first(); | 535 | Incidence* inc = delSel.first(); |
550 | while ( inc ) { | 536 | while ( inc ) { |
551 | if ( removeOld ) { | 537 | if ( removeOld ) { |
552 | inc->setCategories( catList, false ); | 538 | inc->setCategories( catList, false ); |
553 | } else { | 539 | } else { |
554 | inc->addCategories( catList, false ); | 540 | inc->addCategories( catList, false ); |
555 | } | 541 | } |
556 | KOListViewItem* item = getItemForEvent(inc); | 542 | KOListViewItem* item = getItemForEvent(inc); |
557 | if (item) { | 543 | if (item) { |
558 | ListItemVisitor v(item, mStartDate ); | 544 | ListItemVisitor v(item, mStartDate ); |
559 | inc->accept(v); | 545 | inc->accept(v); |
560 | } | 546 | } |
561 | inc = delSel.next(); | 547 | inc = delSel.next(); |
562 | } | 548 | } |
563 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 549 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
564 | } | 550 | } |
565 | 551 | ||
566 | void KOListView::beamSelected() | 552 | void KOListView::beamSelected() |
567 | { | 553 | { |
568 | QPtrList<Incidence> delSel = getSelectedIncidences() ; | 554 | QPtrList<Incidence> delSel = getSelectedIncidences() ; |
569 | if ( delSel.count() ) | 555 | if ( delSel.count() ) |
570 | emit beamIncidenceList( delSel ); | 556 | emit beamIncidenceList( delSel ); |
571 | } | 557 | } |
572 | 558 | ||
573 | void KOListView::saveDescriptionToFile() | 559 | void KOListView::saveDescriptionToFile() |
574 | { | 560 | { |
575 | 561 | ||
576 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), | 562 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), |
577 | i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), | 563 | i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), |
578 | i18n("Continue"), i18n("Cancel"), 0, | 564 | i18n("Continue"), i18n("Cancel"), 0, |
579 | 0, 1 ); | 565 | 0, 1 ); |
580 | if ( result != 0 ) { | 566 | if ( result != 0 ) { |
581 | return; | 567 | return; |
582 | } | 568 | } |
583 | QPtrList<Incidence> delSel = getSelectedIncidences() ; | 569 | QPtrList<Incidence> delSel = getSelectedIncidences() ; |
584 | int icount = delSel.count(); | 570 | int icount = delSel.count(); |
585 | if ( icount ) { | 571 | if ( icount ) { |
586 | QString fn = KOPrefs::instance()->mLastSaveFile; | 572 | QString fn = KOPrefs::instance()->mLastSaveFile; |
587 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); | 573 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); |
588 | 574 | ||
589 | if ( fn == "" ) | 575 | if ( fn == "" ) |
590 | return; | 576 | return; |
591 | QFileInfo info; | 577 | QFileInfo info; |
592 | info.setFile( fn ); | 578 | info.setFile( fn ); |
593 | QString mes; | 579 | QString mes; |
594 | bool createbup = true; | 580 | bool createbup = true; |
595 | if ( info. exists() ) { | 581 | if ( info. exists() ) { |
596 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); | 582 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); |
597 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 583 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
598 | i18n("Overwrite!"), i18n("Cancel"), 0, | 584 | i18n("Overwrite!"), i18n("Cancel"), 0, |
599 | 0, 1 ); | 585 | 0, 1 ); |
600 | if ( result != 0 ) { | 586 | if ( result != 0 ) { |
601 | createbup = false; | 587 | createbup = false; |
602 | } | 588 | } |
603 | } | 589 | } |
604 | if ( createbup ) { | 590 | if ( createbup ) { |
605 | QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + | 591 | QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + |
606 | KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); | 592 | KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); |
607 | Incidence *incidence = delSel.first(); | 593 | Incidence *incidence = delSel.first(); |
608 | icount = 0; | 594 | icount = 0; |
609 | while ( incidence ) { | 595 | while ( incidence ) { |
610 | if ( incidence->typeID() == journalID ) { | 596 | if ( incidence->typeID() == journalID ) { |
611 | text += "\n************************************\n"; | 597 | text += "\n************************************\n"; |
612 | if ( !incidence->summary().isEmpty() ) | 598 | if ( !incidence->summary().isEmpty() ) |
613 | text += i18n("Journal: %1 from ").arg( incidence->summary() ) +incidence->dtStartDateStr( false ); | 599 | text += i18n("Journal: %1 from ").arg( incidence->summary() ) +incidence->dtStartDateStr( false ); |
614 | else | 600 | else |
615 | text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); | 601 | text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); |
616 | if ( !incidence->location().isEmpty() ) | 602 | if ( !incidence->location().isEmpty() ) |
617 | text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; | 603 | text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; |
618 | text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); | 604 | text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); |
619 | text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); | 605 | text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); |
620 | ++icount; | 606 | ++icount; |
621 | 607 | ||
622 | } else { | 608 | } else { |
623 | if ( !incidence->description().isEmpty() ) { | 609 | if ( !incidence->description().isEmpty() ) { |
624 | text += "\n************************************\n"; | 610 | text += "\n************************************\n"; |
625 | if ( incidence->typeID() == todoID ) | 611 | if ( incidence->typeID() == todoID ) |
626 | text += i18n("To-Do: "); | 612 | text += i18n("To-Do: "); |
627 | text += incidence->summary(); | 613 | text += incidence->summary(); |
628 | if ( !incidence->location().isEmpty() ) | 614 | if ( !incidence->location().isEmpty() ) |
629 | text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; | 615 | text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; |
630 | if ( incidence->hasStartDate() ) | 616 | if ( incidence->hasStartDate() ) |
631 | text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); | 617 | text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); |
632 | text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); | 618 | text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); |
633 | text += "\n" + i18n("Description: ") + "\n" + incidence->description(); | 619 | text += "\n" + i18n("Description: ") + "\n" + incidence->description(); |
634 | ++icount; | 620 | ++icount; |
635 | 621 | ||
636 | } | 622 | } |
637 | } | 623 | } |
638 | incidence = delSel.next(); | 624 | incidence = delSel.next(); |
639 | } | 625 | } |
640 | QFile file( fn ); | 626 | QFile file( fn ); |
641 | if (!file.open( IO_WriteOnly ) ) { | 627 | if (!file.open( IO_WriteOnly ) ) { |
642 | topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); | 628 | topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); |
643 | return; | 629 | return; |
644 | } | 630 | } |
645 | QTextStream ts( &file ); | 631 | QTextStream ts( &file ); |
646 | ts << text; | 632 | ts << text; |
647 | file.close(); | 633 | file.close(); |
648 | //qDebug("%s ", text.latin1()); | 634 | //qDebug("%s ", text.latin1()); |
649 | mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); | 635 | mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); |
650 | KOPrefs::instance()->mLastSaveFile = fn; | 636 | KOPrefs::instance()->mLastSaveFile = fn; |
651 | topLevelWidget()->setCaption(mes); | 637 | topLevelWidget()->setCaption(mes); |
652 | } | 638 | } |
653 | } | 639 | } |
654 | } | 640 | } |
655 | void KOListView::saveToFileVCS() | 641 | void KOListView::saveToFileVCS() |
656 | { | 642 | { |
657 | writeToFile( false ); | 643 | writeToFile( false ); |
658 | } | 644 | } |
659 | void KOListView::saveToFile() | 645 | void KOListView::saveToFile() |
660 | { | 646 | { |
661 | writeToFile( true ); | 647 | writeToFile( true ); |
662 | } | 648 | } |
663 | QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) | 649 | QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) |
664 | { | 650 | { |
665 | QPtrList<Incidence> delSel ; | 651 | QPtrList<Incidence> delSel ; |
666 | bool addSubTodos = false; | 652 | bool addSubTodos = false; |
667 | bool askSubTodos = true; | 653 | bool askSubTodos = true; |
668 | QListViewItem *item = mListView->firstChild (); | 654 | QListViewItem *item = mListView->firstChild (); |
669 | while ( item ) { | 655 | while ( item ) { |
670 | if ( item->isSelected() ) { | 656 | if ( item->isSelected() ) { |
671 | Incidence* inc = ((KOListViewItem *)item)->data(); | 657 | Incidence* inc = ((KOListViewItem *)item)->data(); |
672 | if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) { | 658 | if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) { |
673 | if ( (inc->typeID() == todoID && includeTodos) || | 659 | if ( (inc->typeID() == todoID && includeTodos) || |
674 | (inc->typeID() == eventID && includeEvents) || | 660 | (inc->typeID() == eventID && includeEvents) || |
675 | (inc->typeID() == journalID && includeJournals) ) { | 661 | (inc->typeID() == journalID && includeJournals) ) { |
676 | if ( inc->typeID() == todoID && onlyDueTodos ) { | 662 | if ( inc->typeID() == todoID && onlyDueTodos ) { |
677 | if ( ((Todo*)inc)->hasDueDate() ) | 663 | if ( ((Todo*)inc)->hasDueDate() ) |
678 | delSel.append( inc ); | 664 | delSel.append( inc ); |
679 | } else | 665 | } else |
680 | delSel.append( inc ); | 666 | delSel.append( inc ); |
681 | 667 | ||
682 | } | 668 | } |
683 | } | 669 | } |
684 | if ( inc->typeID() == todoID ) { | 670 | if ( inc->typeID() == todoID ) { |
685 | Todo * todo = (Todo*) inc; | 671 | Todo * todo = (Todo*) inc; |
686 | if ( todo->relations().count() ) { | 672 | if ( todo->relations().count() ) { |
687 | if ( askSubTodos ) { | 673 | if ( askSubTodos ) { |
688 | int result = KMessageBox::warningYesNoCancel(this, | 674 | int result = KMessageBox::warningYesNoCancel(this, |
689 | i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"), | 675 | i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"), |
690 | i18n("Todo has subtodos"), | 676 | i18n("Todo has subtodos"), |
691 | i18n("Yes"), | 677 | i18n("Yes"), |
692 | i18n("No")); | 678 | i18n("No")); |
693 | if ( result == KMessageBox::Cancel ) { | 679 | if ( result == KMessageBox::Cancel ) { |
694 | delSel.clear(); | 680 | delSel.clear(); |
695 | return delSel; | 681 | return delSel; |
696 | } | 682 | } |
697 | if (result == KMessageBox::Yes) | 683 | if (result == KMessageBox::Yes) |
698 | addSubTodos = true; | 684 | addSubTodos = true; |
699 | askSubTodos = false; | 685 | askSubTodos = false; |
700 | } | 686 | } |
701 | if ( addSubTodos ) { | 687 | if ( addSubTodos ) { |
702 | inc->addRelationsToList( &delSel ); | 688 | QPtrList<Incidence> tempSel ; |
689 | inc->addRelationsToList( &tempSel ); | ||
690 | Incidence* tempinc = tempSel.first(); | ||
691 | while ( tempinc ) { | ||
692 | if ( delSel.findRef( tempinc ) == -1 ) { | ||
693 | if ( tempinc->typeID() == todoID && onlyDueTodos ) { | ||
694 | if ( ((Todo*)tempinc)->hasDueDate() ) | ||
695 | delSel.append( tempinc ); | ||
696 | } else | ||
697 | delSel.append( tempinc ); | ||
698 | } | ||
699 | tempinc = tempSel.next(); | ||
700 | } | ||
703 | } | 701 | } |
704 | } | 702 | } |
705 | } | 703 | } |
706 | } | 704 | } |
707 | item = item->nextSibling(); | 705 | item = item->nextSibling(); |
708 | } | 706 | } |
709 | return delSel; | 707 | return delSel; |
710 | } | 708 | } |
711 | 709 | ||
712 | void KOListView::writeToFile( bool iCal ) | 710 | void KOListView::writeToFile( bool iCal ) |
713 | { | 711 | { |
714 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; | 712 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; |
715 | if ( !iCal ) { | 713 | if ( !iCal ) { |
716 | bool journal = false; | 714 | bool journal = false; |
717 | Incidence *incidence = delSel.first(); | 715 | Incidence *incidence = delSel.first(); |
718 | while ( incidence ) { | 716 | while ( incidence ) { |
719 | if ( incidence->typeID() == journalID ) { | 717 | if ( incidence->typeID() == journalID ) { |
720 | journal = true; | 718 | journal = true; |
721 | break; | 719 | break; |
722 | } | 720 | } |
723 | incidence = delSel.next(); | 721 | incidence = delSel.next(); |
724 | } | 722 | } |
725 | if ( journal ) { | 723 | if ( journal ) { |
726 | int result = KMessageBox::warningContinueCancel(this, | 724 | int result = KMessageBox::warningContinueCancel(this, |
727 | i18n("The journal entries can not be\nexported to a vCalendar file."), | 725 | i18n("The journal entries can not be\nexported to a vCalendar file."), |
728 | i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), | 726 | i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), |
729 | true); | 727 | true); |
730 | if (result != KMessageBox::Continue) return; | 728 | if (result != KMessageBox::Continue) return; |
731 | } | 729 | } |
732 | } | 730 | } |
733 | if ( delSel.count() ) { | 731 | if ( delSel.count() ) { |
734 | QString fn = KOPrefs::instance()->mLastSaveFile; | 732 | QString fn = KOPrefs::instance()->mLastSaveFile; |
735 | QString extension; | 733 | QString extension; |
736 | if ( iCal ) { | 734 | if ( iCal ) { |
737 | if ( fn.right( 4 ).lower() == ".vcs" ) { | 735 | if ( fn.right( 4 ).lower() == ".vcs" ) { |
738 | fn = fn.left( fn.length() -3) + "ics"; | 736 | fn = fn.left( fn.length() -3) + "ics"; |
739 | } | 737 | } |
740 | } else { | 738 | } else { |
741 | if ( fn.right( 4 ).lower() == ".ics" ) { | 739 | if ( fn.right( 4 ).lower() == ".ics" ) { |
742 | fn = fn.left( fn.length() -3) + "vcs"; | 740 | fn = fn.left( fn.length() -3) + "vcs"; |
743 | } | 741 | } |
744 | } | 742 | } |
745 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); | 743 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); |
746 | 744 | ||
747 | if ( fn == "" ) | 745 | if ( fn == "" ) |
748 | return; | 746 | return; |
749 | QFileInfo info; | 747 | QFileInfo info; |
750 | info.setFile( fn ); | 748 | info.setFile( fn ); |
751 | QString mes; | 749 | QString mes; |
752 | bool createbup = true; | 750 | bool createbup = true; |
753 | if ( info. exists() ) { | 751 | if ( info. exists() ) { |
754 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); | 752 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); |
755 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 753 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
756 | i18n("Overwrite!"), i18n("Cancel"), 0, | 754 | i18n("Overwrite!"), i18n("Cancel"), 0, |
757 | 0, 1 ); | 755 | 0, 1 ); |
758 | if ( result != 0 ) { | 756 | if ( result != 0 ) { |
759 | createbup = false; | 757 | createbup = false; |
760 | } | 758 | } |
761 | } | 759 | } |
762 | if ( createbup ) { | 760 | if ( createbup ) { |
763 | CalendarLocal cal; | 761 | CalendarLocal cal; |
764 | cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); | 762 | cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); |
765 | Incidence *incidence = delSel.first(); | 763 | Incidence *incidence = delSel.first(); |
766 | while ( incidence ) { | 764 | while ( incidence ) { |
767 | cal.addIncidence( incidence->clone() ); | 765 | cal.addIncidence( incidence->clone() ); |
768 | incidence = delSel.next(); | 766 | incidence = delSel.next(); |
769 | } | 767 | } |
770 | if ( iCal ) { | 768 | if ( iCal ) { |
771 | ICalFormat format; | 769 | ICalFormat format; |
772 | format.save( &cal, fn ); | 770 | format.save( &cal, fn ); |
773 | } else { | 771 | } else { |
774 | 772 | ||
775 | VCalFormat format; | 773 | VCalFormat format; |
776 | format.save( &cal, fn ); | 774 | format.save( &cal, fn ); |
777 | } | 775 | } |
778 | mes = i18n("KO/Pi:Saved %1").arg(fn ); | 776 | mes = i18n("KO/Pi:Saved %1").arg(fn ); |
779 | KOPrefs::instance()->mLastSaveFile = fn; | 777 | KOPrefs::instance()->mLastSaveFile = fn; |
780 | topLevelWidget()->setCaption(mes); | 778 | topLevelWidget()->setCaption(mes); |
781 | } | 779 | } |
782 | } | 780 | } |
783 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 781 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
784 | } | 782 | } |
785 | void KOListView::hideAll() | 783 | void KOListView::hideAll() |
786 | { | 784 | { |
787 | QPtrList<QListViewItem> delSel ; | 785 | QPtrList<QListViewItem> delSel ; |
788 | QListViewItem *item = mListView->firstChild (); | 786 | QListViewItem *item = mListView->firstChild (); |
789 | while ( item ) { | 787 | while ( item ) { |
790 | if ( item->isSelected() ) { | 788 | if ( item->isSelected() ) { |
791 | delSel.append(item); | 789 | delSel.append(item); |
792 | } | 790 | } |
793 | item = item->nextSibling(); | 791 | item = item->nextSibling(); |
794 | } | 792 | } |
795 | item = delSel.first() ; | 793 | item = delSel.first() ; |
796 | while ( item ) { | 794 | while ( item ) { |
797 | QListViewItem * del = item; | 795 | QListViewItem * del = item; |
798 | item = delSel.next(); | 796 | item = delSel.next(); |
799 | delete del; | 797 | delete del; |
800 | } | 798 | } |
801 | } | 799 | } |
802 | void KOListView::printList() | 800 | void KOListView::printList() |
803 | { | 801 | { |
804 | mListView->printList(); | 802 | mListView->printList(); |
805 | } | 803 | } |
806 | void KOListView::deleteAll() | 804 | void KOListView::deleteAll() |
807 | { | 805 | { |
808 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;; | 806 | QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;; |
809 | if ( delSel.count() ) { | 807 | if ( delSel.count() ) { |
810 | int icount = delSel.count(); | 808 | int icount = delSel.count(); |
811 | Incidence *incidence = delSel.first(); | 809 | Incidence *incidence = delSel.first(); |
812 | Incidence *toDelete; | 810 | Incidence *toDelete; |
813 | KOPrefs *p = KOPrefs::instance(); | 811 | KOPrefs *p = KOPrefs::instance(); |
814 | bool confirm = p->mConfirm; | 812 | bool confirm = p->mConfirm; |
815 | QString mess; | 813 | QString mess; |
816 | mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); | 814 | mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); |
817 | if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { | 815 | if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { |
818 | p->mConfirm = false; | 816 | p->mConfirm = false; |
819 | int delCounter = 0; | 817 | int delCounter = 0; |
820 | QDialog dia ( this, "p-dialog", true ); | 818 | QDialog dia ( this, "p-dialog", true ); |
821 | QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); | 819 | QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); |
822 | QVBoxLayout lay( &dia ); | 820 | QVBoxLayout lay( &dia ); |
823 | lay.setMargin(7); | 821 | lay.setMargin(7); |
824 | lay.setSpacing(7); | 822 | lay.setSpacing(7); |
825 | lay.addWidget( &lab); | 823 | lay.addWidget( &lab); |
826 | QProgressBar bar( icount, &dia ); | 824 | QProgressBar bar( icount, &dia ); |
827 | lay.addWidget( &bar); | 825 | lay.addWidget( &bar); |
828 | int w = 220; | 826 | int w = 220; |
829 | int h = 50; | 827 | int h = 50; |
830 | int dw = QApplication::desktop()->width(); | 828 | int dw = QApplication::desktop()->width(); |
831 | int dh = QApplication::desktop()->height(); | 829 | int dh = QApplication::desktop()->height(); |
832 | dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); | 830 | dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); |
833 | //dia.resize( 240,50 ); | 831 | //dia.resize( 240,50 ); |
834 | dia.show(); | 832 | dia.show(); |
835 | 833 | ||
836 | while ( incidence ) { | 834 | while ( incidence ) { |
837 | bar.setProgress( delCounter ); | 835 | bar.setProgress( delCounter ); |
838 | mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); | 836 | mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); |
839 | dia.setCaption( mess ); | 837 | dia.setCaption( mess ); |
840 | qApp->processEvents(); | 838 | qApp->processEvents(); |
841 | toDelete = (incidence); | 839 | toDelete = (incidence); |
842 | incidence = delSel.next(); | 840 | incidence = delSel.next(); |
843 | emit deleteIncidenceSignal(toDelete ); | 841 | emit deleteIncidenceSignal(toDelete ); |
844 | if ( dia.result() != 0 ) | 842 | if ( dia.result() != 0 ) |
845 | break; | 843 | break; |
846 | 844 | ||
847 | } | 845 | } |
848 | mess = mess.sprintf( i18n("%d items remaining in list."), count() ); | 846 | mess = mess.sprintf( i18n("%d items remaining in list."), count() ); |
849 | topLevelWidget ()->setCaption( mess ); | 847 | topLevelWidget ()->setCaption( mess ); |
850 | p->mConfirm = confirm; | 848 | p->mConfirm = confirm; |
851 | } | 849 | } |
852 | } | 850 | } |
853 | 851 | ||
854 | 852 | ||
855 | } | 853 | } |
856 | int KOListView::maxDatesHint() | 854 | int KOListView::maxDatesHint() |
857 | { | 855 | { |
858 | return 0; | 856 | return 0; |
859 | } | 857 | } |
860 | 858 | ||
861 | int KOListView::currentDateCount() | 859 | int KOListView::currentDateCount() |
862 | { | 860 | { |
863 | return 0; | 861 | return 0; |
864 | } | 862 | } |
865 | 863 | ||
866 | QPtrList<Incidence> KOListView::selectedIncidences() | 864 | QPtrList<Incidence> KOListView::selectedIncidences() |
867 | { | 865 | { |
868 | QPtrList<Incidence> eventList; | 866 | QPtrList<Incidence> eventList; |
869 | QListViewItem *item = mListView->firstChild (); | 867 | QListViewItem *item = mListView->firstChild (); |
870 | while ( item ) { | 868 | while ( item ) { |
871 | if ( item->isSelected() ) { | 869 | if ( item->isSelected() ) { |
872 | eventList.append(((KOListViewItem *)item)->data()); | 870 | eventList.append(((KOListViewItem *)item)->data()); |
873 | } | 871 | } |
874 | 872 | ||
875 | item = item->nextSibling(); | 873 | item = item->nextSibling(); |
876 | } | 874 | } |
877 | 875 | ||
878 | // // QListViewItem *item = mListView->selectedItem(); | 876 | // // QListViewItem *item = mListView->selectedItem(); |
879 | //if (item) eventList.append(((KOListViewItem *)item)->data()); | 877 | //if (item) eventList.append(((KOListViewItem *)item)->data()); |
880 | 878 | ||
881 | return eventList; | 879 | return eventList; |
882 | } | 880 | } |
883 | 881 | ||
884 | DateList KOListView::selectedDates() | 882 | DateList KOListView::selectedDates() |
885 | { | 883 | { |
886 | DateList eventList; | 884 | DateList eventList; |
887 | return eventList; | 885 | return eventList; |
888 | } | 886 | } |
889 | 887 | ||
890 | void KOListView::showDates(bool show) | 888 | void KOListView::showDates(bool show) |
891 | { | 889 | { |
892 | // Shouldn't we set it to a value greater 0? When showDates is called with | 890 | // Shouldn't we set it to a value greater 0? When showDates is called with |
893 | // show == true at first, then the columnwidths are set to zero. | 891 | // show == true at first, then the columnwidths are set to zero. |
894 | static int oldColWidth1 = 0; | 892 | static int oldColWidth1 = 0; |
895 | static int oldColWidth3 = 0; | 893 | static int oldColWidth3 = 0; |
896 | 894 | ||
897 | if (!show) { | 895 | if (!show) { |
898 | oldColWidth1 = mListView->columnWidth(1); | 896 | oldColWidth1 = mListView->columnWidth(1); |
899 | oldColWidth3 = mListView->columnWidth(3); | 897 | oldColWidth3 = mListView->columnWidth(3); |
900 | mListView->setColumnWidth(1, 0); | 898 | mListView->setColumnWidth(1, 0); |
901 | mListView->setColumnWidth(3, 0); | 899 | mListView->setColumnWidth(3, 0); |
902 | } else { | 900 | } else { |
903 | mListView->setColumnWidth(1, oldColWidth1); | 901 | mListView->setColumnWidth(1, oldColWidth1); |
904 | mListView->setColumnWidth(3, oldColWidth3); | 902 | mListView->setColumnWidth(3, oldColWidth3); |
905 | } | 903 | } |
906 | mListView->repaint(); | 904 | mListView->repaint(); |
907 | } | 905 | } |
908 | 906 | ||
909 | void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 907 | void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, |
910 | const QDate &td) | 908 | const QDate &td) |
911 | { | 909 | { |
912 | #ifndef KORG_NOPRINTER | 910 | #ifndef KORG_NOPRINTER |
913 | calPrinter->preview(CalPrinter::Day, fd, td); | 911 | calPrinter->preview(CalPrinter::Day, fd, td); |
914 | #endif | 912 | #endif |
915 | } | 913 | } |
916 | 914 | ||
917 | void KOListView::showDates() | 915 | void KOListView::showDates() |
918 | { | 916 | { |
919 | showDates(true); | 917 | showDates(true); |
920 | } | 918 | } |
921 | 919 | ||
922 | void KOListView::hideDates() | 920 | void KOListView::hideDates() |
923 | { | 921 | { |
924 | showDates(false); | 922 | showDates(false); |
925 | } | 923 | } |
926 | 924 | ||
927 | void KOListView::resetFocus() | 925 | void KOListView::resetFocus() |
928 | { | 926 | { |
929 | topLevelWidget()->setActiveWindow(); | 927 | topLevelWidget()->setActiveWindow(); |
930 | topLevelWidget()->raise(); | 928 | topLevelWidget()->raise(); |
931 | mListView->setFocus(); | 929 | mListView->setFocus(); |
932 | } | 930 | } |
933 | void KOListView::updateView() | 931 | void KOListView::updateView() |
934 | { | 932 | { |
935 | mListView->setFocus(); | 933 | mListView->setFocus(); |
936 | if ( mListView->firstChild () ) | 934 | if ( mListView->firstChild () ) |
937 | mListView->setCurrentItem( mListView->firstChild () ); | 935 | mListView->setCurrentItem( mListView->firstChild () ); |
938 | } | 936 | } |
939 | void KOListView::updateConfig() | 937 | void KOListView::updateConfig() |
940 | { | 938 | { |
941 | 939 | ||
942 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 940 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
943 | updateView(); | 941 | updateView(); |
944 | 942 | ||
945 | } | 943 | } |
946 | void KOListView::setStartDate(const QDate &start) | 944 | void KOListView::setStartDate(const QDate &start) |
947 | { | 945 | { |
948 | mStartDate = start; | 946 | mStartDate = start; |
949 | } | 947 | } |
950 | 948 | ||
951 | void KOListView::showDates(const QDate &start, const QDate &end) | 949 | void KOListView::showDates(const QDate &start, const QDate &end) |
952 | { | 950 | { |
953 | clear(); | 951 | clear(); |
954 | mStartDate = start; | 952 | mStartDate = start; |
955 | QDate date = start; | 953 | QDate date = start; |
956 | while( date <= end ) { | 954 | while( date <= end ) { |
957 | addEvents(calendar()->events(date)); | 955 | addEvents(calendar()->events(date)); |
958 | addTodos(calendar()->todos(date)); | 956 | addTodos(calendar()->todos(date)); |
959 | addJournals( calendar()->journals4Date(date) ); | 957 | addJournals( calendar()->journals4Date(date) ); |
960 | date = date.addDays( 1 ); | 958 | date = date.addDays( 1 ); |
961 | } | 959 | } |
962 | emit incidenceSelected( 0 ); | 960 | emit incidenceSelected( 0 ); |
963 | updateView(); | 961 | updateView(); |
964 | 962 | ||
965 | } | 963 | } |
966 | 964 | ||
967 | void KOListView::addEvents(QPtrList<Event> eventList) | 965 | void KOListView::addEvents(QPtrList<Event> eventList) |
968 | { | 966 | { |
969 | 967 | ||
970 | Event *ev; | 968 | Event *ev; |
971 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 969 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
972 | addIncidence(ev); | 970 | addIncidence(ev); |
973 | } | 971 | } |
974 | if ( !mListView->currentItem() ){ | 972 | if ( !mListView->currentItem() ){ |
975 | updateView(); | 973 | updateView(); |
976 | } | 974 | } |
977 | } | 975 | } |
978 | 976 | ||
979 | void KOListView::addTodos(QPtrList<Todo> eventList) | 977 | void KOListView::addTodos(QPtrList<Todo> eventList) |
980 | { | 978 | { |
981 | Todo *ev; | 979 | Todo *ev; |
982 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 980 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
983 | addIncidence(ev); | 981 | addIncidence(ev); |
984 | } | 982 | } |
985 | if ( !mListView->currentItem() ){ | 983 | if ( !mListView->currentItem() ){ |
986 | updateView(); | 984 | updateView(); |
987 | } | 985 | } |
988 | } | 986 | } |
989 | void KOListView::addJournals(QPtrList<Journal> eventList) | 987 | void KOListView::addJournals(QPtrList<Journal> eventList) |
990 | { | 988 | { |
991 | Journal *ev; | 989 | Journal *ev; |
992 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 990 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
993 | addIncidence(ev); | 991 | addIncidence(ev); |
994 | } | 992 | } |
995 | if ( !mListView->currentItem() ){ | 993 | if ( !mListView->currentItem() ){ |
996 | updateView(); | 994 | updateView(); |
997 | } | 995 | } |
998 | } | 996 | } |
999 | 997 | ||
1000 | void KOListView::showCompletedTodos() | 998 | void KOListView::showCompletedTodos() |
1001 | { | 999 | { |
1002 | mForceShowCompletedTodos = true; | 1000 | mForceShowCompletedTodos = true; |
1003 | } | 1001 | } |
1004 | void KOListView::addIncidence(Incidence *incidence) | 1002 | void KOListView::addIncidence(Incidence *incidence) |
1005 | { | 1003 | { |
1006 | if ( mUidDict.find( incidence->uid() ) ) return; | 1004 | if ( mUidDict.find( incidence->uid() ) ) return; |
1007 | 1005 | ||
1008 | // mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 1006 | // mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
1009 | if ( incidence->typeID() == todoID ) { | 1007 | if ( incidence->typeID() == todoID ) { |
1010 | if ( ! mForceShowCompletedTodos ) { | 1008 | if ( ! mForceShowCompletedTodos ) { |
1011 | if ( !KOPrefs::instance()->mShowCompletedTodo && ((Todo*)incidence)->isCompleted() ) | 1009 | if ( !KOPrefs::instance()->mShowCompletedTodo && ((Todo*)incidence)->isCompleted() ) |
1012 | return; | 1010 | return; |
1013 | } | 1011 | } |
1014 | } | 1012 | } |
1015 | mUidDict.insert( incidence->uid(), incidence ); | 1013 | mUidDict.insert( incidence->uid(), incidence ); |
1016 | KOListViewItem *item = new KOListViewItem( incidence, mListView ); | 1014 | KOListViewItem *item = new KOListViewItem( incidence, mListView ); |
1017 | ListItemVisitor v(item, mStartDate ); | 1015 | ListItemVisitor v(item, mStartDate ); |
1018 | if (incidence->accept(v)) { | 1016 | if (incidence->accept(v)) { |
1019 | return; | 1017 | return; |
1020 | } | 1018 | } |
1021 | else delete item; | 1019 | else delete item; |
1022 | } | 1020 | } |
1023 | 1021 | ||
1024 | void KOListView::showEvents(QPtrList<Event> eventList) | 1022 | void KOListView::showEvents(QPtrList<Event> eventList) |
1025 | { | 1023 | { |
1026 | clear(); | 1024 | clear(); |
1027 | 1025 | ||
1028 | addEvents(eventList); | 1026 | addEvents(eventList); |
1029 | 1027 | ||
1030 | // After new creation of list view no events are selected. | 1028 | // After new creation of list view no events are selected. |
1031 | emit incidenceSelected( 0 ); | 1029 | emit incidenceSelected( 0 ); |
1032 | } | 1030 | } |
1033 | int KOListView::count() | 1031 | int KOListView::count() |
1034 | { | 1032 | { |
1035 | return mListView->childCount(); | 1033 | return mListView->childCount(); |
1036 | } | 1034 | } |
1037 | 1035 | ||
1038 | void KOListView::changeEventDisplay(Event *event, int action) | 1036 | void KOListView::changeEventDisplay(Event *event, int action) |
1039 | { | 1037 | { |
1040 | KOListViewItem *item; | 1038 | KOListViewItem *item; |
1041 | 1039 | ||
1042 | switch(action) { | 1040 | switch(action) { |
1043 | case KOGlobals::EVENTADDED: | 1041 | case KOGlobals::EVENTADDED: |
1044 | addIncidence( event ); | 1042 | addIncidence( event ); |
1045 | break; | 1043 | break; |
1046 | case KOGlobals::EVENTEDITED: | 1044 | case KOGlobals::EVENTEDITED: |
1047 | item = getItemForEvent(event); | 1045 | item = getItemForEvent(event); |
1048 | if (item) { | 1046 | if (item) { |
1049 | ListItemVisitor v(item, mStartDate ); | 1047 | ListItemVisitor v(item, mStartDate ); |
1050 | ((Incidence*)event)->accept(v); | 1048 | ((Incidence*)event)->accept(v); |
1051 | } | 1049 | } |
1052 | break; | 1050 | break; |
1053 | case KOGlobals::EVENTDELETED: | 1051 | case KOGlobals::EVENTDELETED: |
1054 | item = getItemForEvent(event); | 1052 | item = getItemForEvent(event); |
1055 | if (item) { | 1053 | if (item) { |
1056 | mUidDict.remove( event->uid() ); | 1054 | mUidDict.remove( event->uid() ); |
1057 | delete item; | 1055 | delete item; |
1058 | } | 1056 | } |
1059 | break; | 1057 | break; |
1060 | default: | 1058 | default: |
1061 | ; | 1059 | ; |
1062 | } | 1060 | } |
1063 | } | 1061 | } |
1064 | 1062 | ||
1065 | KOListViewItem *KOListView::getItemForEvent(Incidence *event) | 1063 | KOListViewItem *KOListView::getItemForEvent(Incidence *event) |
1066 | { | 1064 | { |
1067 | KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); | 1065 | KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); |
1068 | while (item) { | 1066 | while (item) { |
1069 | if (item->data() == event) return item; | 1067 | if (item->data() == event) return item; |
1070 | item = (KOListViewItem *)item->nextSibling(); | 1068 | item = (KOListViewItem *)item->nextSibling(); |
1071 | } | 1069 | } |
1072 | return 0; | 1070 | return 0; |
1073 | } | 1071 | } |
1074 | 1072 | ||
1075 | void KOListView::defaultItemAction(QListViewItem *i) | 1073 | void KOListView::defaultItemAction(QListViewItem *i) |
1076 | { | 1074 | { |
1077 | KOListViewItem *item = static_cast<KOListViewItem *>( i ); | 1075 | KOListViewItem *item = static_cast<KOListViewItem *>( i ); |
1078 | if ( item ) defaultAction( item->data() ); | 1076 | if ( item ) defaultAction( item->data() ); |
1079 | 1077 | ||
1080 | } | 1078 | } |
1081 | 1079 | ||
1082 | void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) | 1080 | void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) |
1083 | { | 1081 | { |
1084 | mActiveItem = (KOListViewItem *)item; | 1082 | mActiveItem = (KOListViewItem *)item; |
1085 | if (mActiveItem) { | 1083 | if (mActiveItem) { |
1086 | Incidence *incidence = mActiveItem->data(); | 1084 | Incidence *incidence = mActiveItem->data(); |