summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp102
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
94ListItemVisitor::~ListItemVisitor() 94ListItemVisitor::~ListItemVisitor()
95{ 95{
96} 96}
97 97
98bool ListItemVisitor::visit(Event *e) 98bool 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
155bool ListItemVisitor::visit(Todo *t) 155bool 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
216bool ListItemVisitor::visit(Journal * j) 216bool 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
250KOListView::KOListView(Calendar *calendar, QWidget *parent, 250KOListView::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
373KOListView::~KOListView() 373KOListView::~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
383QString KOListView::getWhatsThisText(QPoint p) 383QString 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
395void KOListView::setCalendar( int c ) 395void 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}
433void KOListView::populateCalPopup() 433void 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}
444void KOListView::updateList() 444void KOListView::updateList()
445{ 445{
446 // qDebug(" KOListView::updateList() "); 446 // qDebug(" KOListView::updateList() ");
447 447
448} 448}
449 449
450void KOListView::clearList() 450void KOListView::clearList()
451{ 451{
452 clear (); 452 clear ();
453} 453}
454 454
455void KOListView::setCat() 455void 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
469void KOListView::setAlarm() 469void 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}
537void KOListView::setCategories( bool removeOld ) 523void 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
566void KOListView::beamSelected() 552void 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
573void KOListView::saveDescriptionToFile() 559void 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}
655void KOListView::saveToFileVCS() 641void KOListView::saveToFileVCS()
656{ 642{
657 writeToFile( false ); 643 writeToFile( false );
658} 644}
659void KOListView::saveToFile() 645void KOListView::saveToFile()
660{ 646{
661 writeToFile( true ); 647 writeToFile( true );
662} 648}
663QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) 649QPtrList<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
712void KOListView::writeToFile( bool iCal ) 710void 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}
785void KOListView::hideAll() 783void 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}
802void KOListView::printList() 800void KOListView::printList()
803{ 801{
804 mListView->printList(); 802 mListView->printList();
805} 803}
806void KOListView::deleteAll() 804void 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}
856int KOListView::maxDatesHint() 854int KOListView::maxDatesHint()
857{ 855{
858 return 0; 856 return 0;
859} 857}
860 858
861int KOListView::currentDateCount() 859int KOListView::currentDateCount()
862{ 860{
863 return 0; 861 return 0;
864} 862}
865 863
866QPtrList<Incidence> KOListView::selectedIncidences() 864QPtrList<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
884DateList KOListView::selectedDates() 882DateList KOListView::selectedDates()
885{ 883{
886 DateList eventList; 884 DateList eventList;
887 return eventList; 885 return eventList;
888} 886}
889 887
890void KOListView::showDates(bool show) 888void 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
909void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 907void 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
917void KOListView::showDates() 915void KOListView::showDates()
918{ 916{
919 showDates(true); 917 showDates(true);
920} 918}
921 919
922void KOListView::hideDates() 920void KOListView::hideDates()
923{ 921{
924 showDates(false); 922 showDates(false);
925} 923}
926 924
927void KOListView::resetFocus() 925void KOListView::resetFocus()
928{ 926{
929 topLevelWidget()->setActiveWindow(); 927 topLevelWidget()->setActiveWindow();
930 topLevelWidget()->raise(); 928 topLevelWidget()->raise();
931 mListView->setFocus(); 929 mListView->setFocus();
932} 930}
933void KOListView::updateView() 931void 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}
939void KOListView::updateConfig() 937void 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}
946void KOListView::setStartDate(const QDate &start) 944void KOListView::setStartDate(const QDate &start)
947{ 945{
948 mStartDate = start; 946 mStartDate = start;
949} 947}
950 948
951void KOListView::showDates(const QDate &start, const QDate &end) 949void 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
967void KOListView::addEvents(QPtrList<Event> eventList) 965void 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
979void KOListView::addTodos(QPtrList<Todo> eventList) 977void 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}
989void KOListView::addJournals(QPtrList<Journal> eventList) 987void 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
1000void KOListView::showCompletedTodos() 998void KOListView::showCompletedTodos()
1001{ 999{
1002 mForceShowCompletedTodos = true; 1000 mForceShowCompletedTodos = true;
1003} 1001}
1004void KOListView::addIncidence(Incidence *incidence) 1002void 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
1024void KOListView::showEvents(QPtrList<Event> eventList) 1022void 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}
1033int KOListView::count() 1031int KOListView::count()
1034{ 1032{
1035 return mListView->childCount(); 1033 return mListView->childCount();
1036} 1034}
1037 1035
1038void KOListView::changeEventDisplay(Event *event, int action) 1036void 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
1065KOListViewItem *KOListView::getItemForEvent(Incidence *event) 1063KOListViewItem *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
1075void KOListView::defaultItemAction(QListViewItem *i) 1073void 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
1082void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1080void 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();