summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp82
-rw-r--r--korganizer/kolistview.h3
2 files changed, 85 insertions, 0 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index bc52281..7022e02 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -1,1289 +1,1371 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qlistview.h> 25#include <qlistview.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qpopupmenu.h> 28#include <qpopupmenu.h>
29#include <qprogressbar.h> 29#include <qprogressbar.h>
30#include <qfileinfo.h> 30#include <qfileinfo.h>
31#include <qmessagebox.h> 31#include <qmessagebox.h>
32#include <qdialog.h> 32#include <qdialog.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34#include <qdir.h> 34#include <qdir.h>
35#include <qwhatsthis.h> 35#include <qwhatsthis.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qpainter.h>
38#include <qpaintdevicemetrics.h>
37 39
38#include <klocale.h> 40#include <klocale.h>
39#include <kdebug.h> 41#include <kdebug.h>
40#include <kiconloader.h> 42#include <kiconloader.h>
41#include <kglobal.h> 43#include <kglobal.h>
42 44
43#include <libkdepim/kpimglobalprefs.h> 45#include <libkdepim/kpimglobalprefs.h>
44#include <libkcal/calendar.h> 46#include <libkcal/calendar.h>
45#include <libkcal/calendarlocal.h> 47#include <libkcal/calendarlocal.h>
46#include <libkcal/icalformat.h> 48#include <libkcal/icalformat.h>
47#include <libkcal/vcalformat.h> 49#include <libkcal/vcalformat.h>
48#include <libkcal/recurrence.h> 50#include <libkcal/recurrence.h>
49#include <libkcal/filestorage.h> 51#include <libkcal/filestorage.h>
50#include <libkdepim/categoryselectdialog.h> 52#include <libkdepim/categoryselectdialog.h>
51#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
52#ifndef DESKTOP_VERSION 54#ifndef DESKTOP_VERSION
53#include <qpe/qpeapplication.h> 55#include <qpe/qpeapplication.h>
54#else 56#else
55#include <qapplication.h> 57#include <qapplication.h>
56#endif 58#endif
57 59
58#ifndef KORG_NOPRINTER 60#ifndef KORG_NOPRINTER
59#include "calprinter.h" 61#include "calprinter.h"
60#endif 62#endif
61#include "koglobals.h" 63#include "koglobals.h"
62#include "koprefs.h" 64#include "koprefs.h"
63#include "kfiledialog.h" 65#include "kfiledialog.h"
64 66
65#include "kolistview.h" 67#include "kolistview.h"
68#include "koeventviewer.h"
66 69
67 70
68 71
69 72
70class KOListViewWhatsThis :public QWhatsThis 73class KOListViewWhatsThis :public QWhatsThis
71{ 74{
72public: 75public:
73 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
74 77
75protected: 78protected:
76 virtual QString text( const QPoint& p) 79 virtual QString text( const QPoint& p)
77 { 80 {
78 return _view->getWhatsThisText(p) ; 81 return _view->getWhatsThisText(p) ;
79 } 82 }
80private: 83private:
81 QWidget* _wid; 84 QWidget* _wid;
82 KOListView * _view; 85 KOListView * _view;
83}; 86};
84 87
85 88
86ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
87{ 90{
88 mItem = item; 91 mItem = item;
89 mDate = date; 92 mDate = date;
90} 93}
91 94
92ListItemVisitor::~ListItemVisitor() 95ListItemVisitor::~ListItemVisitor()
93{ 96{
94} 97}
95 98
96bool ListItemVisitor::visit(Event *e) 99bool ListItemVisitor::visit(Event *e)
97{ 100{
98 bool ok = false; 101 bool ok = false;
99 QString start, end; 102 QString start, end;
100 QDate ds, de; 103 QDate ds, de;
101 if ( e->doesRecur() ) { 104 if ( e->doesRecur() ) {
102 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); 105 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date();
103 if ( ok ) { 106 if ( ok ) {
104 int days = e->dtStart().date().daysTo(e->dtEnd().date() ); 107 int days = e->dtStart().date().daysTo(e->dtEnd().date() );
105 start = KGlobal::locale()->formatDate(ds,true); 108 start = KGlobal::locale()->formatDate(ds,true);
106 de = ds.addDays( days); 109 de = ds.addDays( days);
107 end = KGlobal::locale()->formatDate(de,true); 110 end = KGlobal::locale()->formatDate(de,true);
108 } 111 }
109 112
110 } 113 }
111 if ( ! ok ) { 114 if ( ! ok ) {
112 start =e->dtStartDateStr(); 115 start =e->dtStartDateStr();
113 end = e->dtEndDateStr(); 116 end = e->dtEndDateStr();
114 ds = e->dtStart().date(); 117 ds = e->dtStart().date();
115 de = e->dtEnd().date(); 118 de = e->dtEnd().date();
116 } 119 }
117 mItem->setText(0,e->summary()); 120 mItem->setText(0,e->summary());
118 mItem->setText(1,start); 121 mItem->setText(1,start);
119 if ( e->doesFloat() ) 122 if ( e->doesFloat() )
120 mItem->setText(2,"---"); 123 mItem->setText(2,"---");
121 else 124 else
122 mItem->setText(2,e->dtStartTimeStr()); 125 mItem->setText(2,e->dtStartTimeStr());
123 mItem->setText(3,end); 126 mItem->setText(3,end);
124 if ( e->doesFloat() ) 127 if ( e->doesFloat() )
125 mItem->setText(4,"---"); 128 mItem->setText(4,"---");
126 else 129 else
127 mItem->setText(4,e->dtEndTimeStr()); 130 mItem->setText(4,e->dtEndTimeStr());
128 if ( e->isAlarmEnabled() ) { 131 if ( e->isAlarmEnabled() ) {
129 mItem->setText(5,e->alarms().first()->offsetText() ); 132 mItem->setText(5,e->alarms().first()->offsetText() );
130 } else { 133 } else {
131 mItem->setText(5, i18n("No")); 134 mItem->setText(5, i18n("No"));
132 } 135 }
133 mItem->setText(6, e->recurrence()->recurrenceText()); 136 mItem->setText(6, e->recurrence()->recurrenceText());
134 if( ! e->doesRecur() ) 137 if( ! e->doesRecur() )
135 mItem->setSortKey( 6, "-" ); 138 mItem->setSortKey( 6, "-" );
136 mItem->setText(7,"---"); 139 mItem->setText(7,"---");
137 mItem->setText(8,"---"); 140 mItem->setText(8,"---");
138 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); 141 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No"));
139 mItem->setText(10,e->categoriesStr()); 142 mItem->setText(10,e->categoriesStr());
140 143
141 QString key; 144 QString key;
142 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); 145 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time();
143 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());
144 mItem->setSortKey(1,key); 147 mItem->setSortKey(1,key);
145 148
146 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); 149 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time();
147 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());
148 mItem->setSortKey(3,key); 151 mItem->setSortKey(3,key);
149 return true; 152 return true;
150} 153}
151 154
152bool ListItemVisitor::visit(Todo *t) 155bool ListItemVisitor::visit(Todo *t)
153{ 156{
154 mItem->setText(0,i18n("Todo: %1").arg(t->summary())); 157 mItem->setText(0,i18n("Todo: %1").arg(t->summary()));
155 if (t->hasStartDate()) { 158 if (t->hasStartDate()) {
156 mItem->setText(1,t->dtStartDateStr()); 159 mItem->setText(1,t->dtStartDateStr());
157 if (t->doesFloat()) { 160 if (t->doesFloat()) {
158 mItem->setText(2,"---"); 161 mItem->setText(2,"---");
159 } else { 162 } else {
160 mItem->setText(2,t->dtStartTimeStr()); 163 mItem->setText(2,t->dtStartTimeStr());
161 } 164 }
162 } else { 165 } else {
163 mItem->setText(1,"---"); 166 mItem->setText(1,"---");
164 mItem->setText(2,"---"); 167 mItem->setText(2,"---");
165 } 168 }
166 mItem->setText(3,"---"); 169 mItem->setText(3,"---");
167 mItem->setText(4,"---"); 170 mItem->setText(4,"---");
168 if ( t->isAlarmEnabled() ) { 171 if ( t->isAlarmEnabled() ) {
169 mItem->setText(5,t->alarms().first()->offsetText() ); 172 mItem->setText(5,t->alarms().first()->offsetText() );
170 } else { 173 } else {
171 mItem->setText(5, i18n("No")); 174 mItem->setText(5, i18n("No"));
172 } 175 }
173 mItem->setText(6, t->recurrence()->recurrenceText()); 176 mItem->setText(6, t->recurrence()->recurrenceText());
174 if( ! t->doesRecur() ) 177 if( ! t->doesRecur() )
175 mItem->setSortKey( 6, "-" ); 178 mItem->setSortKey( 6, "-" );
176 if (t->hasDueDate()) { 179 if (t->hasDueDate()) {
177 mItem->setText(7,t->dtDueDateStr()); 180 mItem->setText(7,t->dtDueDateStr());
178 if (t->doesFloat()) { 181 if (t->doesFloat()) {
179 mItem->setText(8,"---"); 182 mItem->setText(8,"---");
180 } else { 183 } else {
181 mItem->setText(8,t->dtDueTimeStr()); 184 mItem->setText(8,t->dtDueTimeStr());
182 } 185 }
183 } else { 186 } else {
184 mItem->setText(7,"---"); 187 mItem->setText(7,"---");
185 mItem->setText(8,"---"); 188 mItem->setText(8,"---");
186 } 189 }
187 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); 190 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No"));
188 mItem->setText(10,t->categoriesStr()); 191 mItem->setText(10,t->categoriesStr());
189 192
190 QString key; 193 QString key;
191 QDate d; 194 QDate d;
192 if (t->hasDueDate()) { 195 if (t->hasDueDate()) {
193 d = t->dtDue().date(); 196 d = t->dtDue().date();
194 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); 197 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time();
195 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 198 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
196 mItem->setSortKey(7,key); 199 mItem->setSortKey(7,key);
197 } 200 }
198 if ( t->hasStartDate() ) { 201 if ( t->hasStartDate() ) {
199 d = t->dtStart().date(); 202 d = t->dtStart().date();
200 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); 203 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time();
201 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());
202 mItem->setSortKey(1,key); 205 mItem->setSortKey(1,key);
203 } 206 }
204 return true; 207 return true;
205} 208}
206 209
207bool ListItemVisitor::visit(Journal * j) 210bool ListItemVisitor::visit(Journal * j)
208{ 211{
209 QString des = j->description().left(30); 212 QString des = j->description().left(30);
210 des = des.simplifyWhiteSpace (); 213 des = des.simplifyWhiteSpace ();
211 des.replace (QRegExp ("\\n"),"" ); 214 des.replace (QRegExp ("\\n"),"" );
212 des.replace (QRegExp ("\\r"),"" ); 215 des.replace (QRegExp ("\\r"),"" );
213 mItem->setText(0,i18n("Journal: ")+des.left(25)); 216 mItem->setText(0,i18n("Journal: ")+des.left(25));
214 mItem->setText(1,j->dtStartDateStr()); 217 mItem->setText(1,j->dtStartDateStr());
215 mItem->setText(2,"---"); 218 mItem->setText(2,"---");
216 mItem->setText(3,"---"); 219 mItem->setText(3,"---");
217 mItem->setText(4,"---"); 220 mItem->setText(4,"---");
218 mItem->setText(5,"---"); 221 mItem->setText(5,"---");
219 mItem->setText(6,"---"); 222 mItem->setText(6,"---");
220 mItem->setText(7,j->dtStartDateStr()); 223 mItem->setText(7,j->dtStartDateStr());
221 mItem->setText(8,"---"); 224 mItem->setText(8,"---");
222 mItem->setText(9,"---"); 225 mItem->setText(9,"---");
223 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) ); 226 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) );
224 227
225 QString key; 228 QString key;
226 QDate d = j->dtStart().date(); 229 QDate d = j->dtStart().date();
227 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 230 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
228 mItem->setSortKey(1,key); 231 mItem->setSortKey(1,key);
229 mItem->setSortKey(7,key); 232 mItem->setSortKey(7,key);
230 233
231 return true; 234 return true;
232} 235}
233 236
234KOListView::KOListView(Calendar *calendar, QWidget *parent, 237KOListView::KOListView(Calendar *calendar, QWidget *parent,
235 const char *name) 238 const char *name)
236 : KOEventView(calendar, parent, name) 239 : KOEventView(calendar, parent, name)
237{ 240{
238 mActiveItem = 0; 241 mActiveItem = 0;
239 mListView = new KOListViewListView(this); 242 mListView = new KOListViewListView(this);
240 mListView->addColumn(i18n("Summary")); 243 mListView->addColumn(i18n("Summary"));
241 mListView->addColumn(i18n("Start Date")); 244 mListView->addColumn(i18n("Start Date"));
242 mListView->addColumn(i18n("Start Time")); 245 mListView->addColumn(i18n("Start Time"));
243 mListView->addColumn(i18n("End Date")); 246 mListView->addColumn(i18n("End Date"));
244 mListView->addColumn(i18n("End Time")); 247 mListView->addColumn(i18n("End Time"));
245 mListView->addColumn(i18n("Alarm")); // alarm set? 248 mListView->addColumn(i18n("Alarm")); // alarm set?
246 mListView->addColumn(i18n("Recurs")); // recurs? 249 mListView->addColumn(i18n("Recurs")); // recurs?
247 mListView->addColumn(i18n("Due Date")); 250 mListView->addColumn(i18n("Due Date"));
248 mListView->addColumn(i18n("Due Time")); 251 mListView->addColumn(i18n("Due Time"));
249 mListView->addColumn(i18n("Cancelled")); 252 mListView->addColumn(i18n("Cancelled"));
250 mListView->addColumn(i18n("Categories")); 253 mListView->addColumn(i18n("Categories"));
251 254
252 mListView->setColumnAlignment(0,AlignLeft); 255 mListView->setColumnAlignment(0,AlignLeft);
253 mListView->setColumnAlignment(1,AlignLeft); 256 mListView->setColumnAlignment(1,AlignLeft);
254 mListView->setColumnAlignment(2,AlignHCenter); 257 mListView->setColumnAlignment(2,AlignHCenter);
255 mListView->setColumnAlignment(3,AlignLeft); 258 mListView->setColumnAlignment(3,AlignLeft);
256 mListView->setColumnAlignment(4,AlignHCenter); 259 mListView->setColumnAlignment(4,AlignHCenter);
257 mListView->setColumnAlignment(5,AlignLeft); 260 mListView->setColumnAlignment(5,AlignLeft);
258 mListView->setColumnAlignment(6,AlignLeft); 261 mListView->setColumnAlignment(6,AlignLeft);
259 mListView->setColumnAlignment(7,AlignLeft); 262 mListView->setColumnAlignment(7,AlignLeft);
260 mListView->setColumnAlignment(8,AlignLeft); 263 mListView->setColumnAlignment(8,AlignLeft);
261 mListView->setColumnAlignment(9,AlignLeft); 264 mListView->setColumnAlignment(9,AlignLeft);
262 mListView->setColumnAlignment(10,AlignLeft); 265 mListView->setColumnAlignment(10,AlignLeft);
263 mListView->setColumnWidthMode(10, QListView::Manual); 266 mListView->setColumnWidthMode(10, QListView::Manual);
264 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); 267 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this);
265 268
266 int iii = 0; 269 int iii = 0;
267 for ( iii = 0; iii< 10 ; ++iii ) 270 for ( iii = 0; iii< 10 ; ++iii )
268 mListView->setColumnWidthMode( iii, QListView::Manual ); 271 mListView->setColumnWidthMode( iii, QListView::Manual );
269 272
270 QBoxLayout *layoutTop = new QVBoxLayout(this); 273 QBoxLayout *layoutTop = new QVBoxLayout(this);
271 layoutTop->addWidget(mListView); 274 layoutTop->addWidget(mListView);
272 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 275 mListView->setFont ( KOPrefs::instance()->mListViewFont );
273 mPopupMenu = eventPopup(); 276 mPopupMenu = eventPopup();
274 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
275 i18n("Select all"),this, 278 i18n("Select all"),this,
276 SLOT(allSelection()),true); 279 SLOT(allSelection()),true);
277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
278 i18n("Deselect all"),this, 281 i18n("Deselect all"),this,
279 SLOT(clearSelection()),true); 282 SLOT(clearSelection()),true);
280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 283 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
281 i18n("Delete all selected"),this, 284 i18n("Delete all selected"),this,
282 SLOT(deleteAll()),true); 285 SLOT(deleteAll()),true);
286#ifdef DESKTOP_VERSION
287 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
288 i18n("Hide all selected"),this,
289 SLOT(hideAll()),true);
290#endif
291 mPopupMenu->insertSeparator();
292#ifdef DESKTOP_VERSION
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Print complete list"),this,
295 SLOT(printList()),true);
283 mPopupMenu->insertSeparator(); 296 mPopupMenu->insertSeparator();
297#endif
284 QPopupMenu * exportPO = new QPopupMenu ( this ); 298 QPopupMenu * exportPO = new QPopupMenu ( this );
285 mPopupMenu->insertItem( i18n("Export selected"), exportPO ); 299 mPopupMenu->insertItem( i18n("Export selected"), exportPO );
286 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 300 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
287 SLOT(saveToFile())); 301 SLOT(saveToFile()));
288 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 302 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
289 SLOT(saveToFileVCS())); 303 SLOT(saveToFileVCS()));
290 exportPO->insertItem( i18n("Journal/Details..."),this, 304 exportPO->insertItem( i18n("Journal/Details..."),this,
291 SLOT(saveDescriptionToFile())); 305 SLOT(saveDescriptionToFile()));
292 // mPopupMenu->insertSeparator(); 306 // mPopupMenu->insertSeparator();
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Add Categ. to selected..."),this, 308 i18n("Add Categ. to selected..."),this,
295 SLOT(addCat()),true); 309 SLOT(addCat()),true);
296 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 310 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
297 i18n("Set Categ. for selected..."),this, 311 i18n("Set Categ. for selected..."),this,
298 SLOT(setCat()),true); 312 SLOT(setCat()),true);
299 //mPopupMenu->insertSeparator(); 313 //mPopupMenu->insertSeparator();
300 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 314 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
301 i18n("Set alarm for selected..."),this, 315 i18n("Set alarm for selected..."),this,
302 SLOT(setAlarm()),true); 316 SLOT(setAlarm()),true);
303 317
304 318
305#ifndef DESKTOP_VERSION 319#ifndef DESKTOP_VERSION
306 mPopupMenu->insertSeparator(); 320 mPopupMenu->insertSeparator();
307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
308 i18n("Beam selected via IR"),this, 322 i18n("Beam selected via IR"),this,
309 SLOT(beamSelected()),true); 323 SLOT(beamSelected()),true);
310#endif 324#endif
311 /* 325 /*
312 mPopupMenu = new QPopupMenu; 326 mPopupMenu = new QPopupMenu;
313 mPopupMenu->insertItem(i18n("Edit Event"), this, 327 mPopupMenu->insertItem(i18n("Edit Event"), this,
314 SLOT (editEvent())); 328 SLOT (editEvent()));
315 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 329 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
316 SLOT (deleteEvent())); 330 SLOT (deleteEvent()));
317 mPopupMenu->insertSeparator(); 331 mPopupMenu->insertSeparator();
318 mPopupMenu->insertItem(i18n("Show Dates"), this, 332 mPopupMenu->insertItem(i18n("Show Dates"), this,
319 SLOT(showDates())); 333 SLOT(showDates()));
320 mPopupMenu->insertItem(i18n("Hide Dates"), this, 334 mPopupMenu->insertItem(i18n("Hide Dates"), this,
321 SLOT(hideDates())); 335 SLOT(hideDates()));
322 */ 336 */
323 QObject::connect(mListView,SIGNAL( newEvent()), 337 QObject::connect(mListView,SIGNAL( newEvent()),
324 this,SIGNAL(signalNewEvent())); 338 this,SIGNAL(signalNewEvent()));
325 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 339 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
326 this,SLOT(defaultItemAction(QListViewItem *))); 340 this,SLOT(defaultItemAction(QListViewItem *)));
327 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, 341 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *,
328 const QPoint &, int )), 342 const QPoint &, int )),
329 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 343 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
330 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 344 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
331 SLOT(processSelectionChange(QListViewItem *))); 345 SLOT(processSelectionChange(QListViewItem *)));
332 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 346 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
333 SIGNAL(showIncidenceSignal(Incidence *)) ); 347 SIGNAL(showIncidenceSignal(Incidence *)) );
334 348
335 readSettings(KOGlobals::config(),"KOListView Layout"); 349 readSettings(KOGlobals::config(),"KOListView Layout");
336} 350}
337 351
338KOListView::~KOListView() 352KOListView::~KOListView()
339{ 353{
340 delete mPopupMenu; 354 delete mPopupMenu;
341#if QT_VERSION >= 0x030000 355#if QT_VERSION >= 0x030000
342 356
343#else 357#else
344 delete mKOListViewWhatsThis; 358 delete mKOListViewWhatsThis;
345#endif 359#endif
346} 360}
347 361
348QString KOListView::getWhatsThisText(QPoint p) 362QString KOListView::getWhatsThisText(QPoint p)
349{ 363{
350 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 364 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
351 if ( item ) 365 if ( item )
352 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 366 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
353 KOPrefs::instance()->mWTshowDetails, 367 KOPrefs::instance()->mWTshowDetails,
354 KOPrefs::instance()->mWTshowCreated, 368 KOPrefs::instance()->mWTshowCreated,
355 KOPrefs::instance()->mWTshowChanged); 369 KOPrefs::instance()->mWTshowChanged);
356 return i18n("That is the list view" ); 370 return i18n("That is the list view" );
357 371
358} 372}
359 373
360void KOListView::updateList() 374void KOListView::updateList()
361{ 375{
362 // qDebug(" KOListView::updateList() "); 376 // qDebug(" KOListView::updateList() ");
363 377
364} 378}
365 379
366void KOListView::clearList() 380void KOListView::clearList()
367{ 381{
368 clear (); 382 clear ();
369} 383}
370void KOListView::addCat( ) 384void KOListView::addCat( )
371{ 385{
372 setCategories( false ); 386 setCategories( false );
373} 387}
374void KOListView::setCat() 388void KOListView::setCat()
375{ 389{
376 setCategories( true ); 390 setCategories( true );
377} 391}
378void KOListView::setAlarm() 392void KOListView::setAlarm()
379{ 393{
380 KOAlarmPrefs kap( this); 394 KOAlarmPrefs kap( this);
381 if ( !kap.exec() ) 395 if ( !kap.exec() )
382 return; 396 return;
383 QStringList itemList; 397 QStringList itemList;
384 QPtrList<KOListViewItem> sel ; 398 QPtrList<KOListViewItem> sel ;
385 QListViewItem *qitem = mListView->firstChild (); 399 QListViewItem *qitem = mListView->firstChild ();
386 while ( qitem ) { 400 while ( qitem ) {
387 if ( qitem->isSelected() ) { 401 if ( qitem->isSelected() ) {
388 Incidence* inc = ((KOListViewItem *) qitem)->data(); 402 Incidence* inc = ((KOListViewItem *) qitem)->data();
389 if ( inc->type() != "Journal" ) { 403 if ( inc->type() != "Journal" ) {
390 if ( inc->type() == "Todo" ) { 404 if ( inc->type() == "Todo" ) {
391 if ( ((Todo*)inc)->hasDueDate() ) 405 if ( ((Todo*)inc)->hasDueDate() )
392 sel.append(((KOListViewItem *)qitem)); 406 sel.append(((KOListViewItem *)qitem));
393 } else 407 } else
394 sel.append(((KOListViewItem *)qitem)); 408 sel.append(((KOListViewItem *)qitem));
395 } 409 }
396 } 410 }
397 qitem = qitem->nextSibling(); 411 qitem = qitem->nextSibling();
398 } 412 }
399 int count = 0; 413 int count = 0;
400 KOListViewItem * item, *temp; 414 KOListViewItem * item, *temp;
401 item = sel.first(); 415 item = sel.first();
402 Incidence* inc; 416 Incidence* inc;
403 while ( item ) { 417 while ( item ) {
404 inc = item->data(); 418 inc = item->data();
405 ++count; 419 ++count;
406 if (kap.mAlarmButton->isChecked()) { 420 if (kap.mAlarmButton->isChecked()) {
407 if (inc->alarms().count() == 0) 421 if (inc->alarms().count() == 0)
408 inc->newAlarm(); 422 inc->newAlarm();
409 QPtrList<Alarm> alarms = inc->alarms(); 423 QPtrList<Alarm> alarms = inc->alarms();
410 Alarm *alarm; 424 Alarm *alarm;
411 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 425 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
412 alarm->setEnabled(true); 426 alarm->setEnabled(true);
413 int j = kap.mAlarmTimeEdit->value()* -60; 427 int j = kap.mAlarmTimeEdit->value()* -60;
414 if (kap.mAlarmIncrCombo->currentItem() == 1) 428 if (kap.mAlarmIncrCombo->currentItem() == 1)
415 j = j * 60; 429 j = j * 60;
416 else if (kap.mAlarmIncrCombo->currentItem() == 2) 430 else if (kap.mAlarmIncrCombo->currentItem() == 2)
417 j = j * (60 * 24); 431 j = j * (60 * 24);
418 alarm->setStartOffset( j ); 432 alarm->setStartOffset( j );
419 433
420 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { 434 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
421 alarm->setProcedureAlarm(kap.mAlarmProgram); 435 alarm->setProcedureAlarm(kap.mAlarmProgram);
422 } 436 }
423 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) 437 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
424 alarm->setAudioAlarm(kap.mAlarmSound); 438 alarm->setAudioAlarm(kap.mAlarmSound);
425 else 439 else
426 alarm->setType(Alarm::Invalid); 440 alarm->setType(Alarm::Invalid);
427 //alarm->setAudioAlarm("default"); 441 //alarm->setAudioAlarm("default");
428 // TODO: Deal with multiple alarms 442 // TODO: Deal with multiple alarms
429 break; // For now, stop after the first alarm 443 break; // For now, stop after the first alarm
430 } 444 }
431 } else { 445 } else {
432 Alarm* alarm = inc->alarms().first(); 446 Alarm* alarm = inc->alarms().first();
433 if ( alarm ) { 447 if ( alarm ) {
434 alarm->setEnabled(false); 448 alarm->setEnabled(false);
435 alarm->setType(Alarm::Invalid); 449 alarm->setType(Alarm::Invalid);
436 } 450 }
437 } 451 }
438 ListItemVisitor v(item, mStartDate ); 452 ListItemVisitor v(item, mStartDate );
439 inc->accept(v); 453 inc->accept(v);
440 item = sel.next(); 454 item = sel.next();
441 } 455 }
442 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); 456 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) );
443 qDebug("KO: Set alarm for %d items", count); 457 qDebug("KO: Set alarm for %d items", count);
444 calendar()->reInitAlarmSettings(); 458 calendar()->reInitAlarmSettings();
445 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 459 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
446} 460}
447void KOListView::setCategories( bool removeOld ) 461void KOListView::setCategories( bool removeOld )
448{ 462{
449 463
450 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 464 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
451 csd->setColorEnabled(); 465 csd->setColorEnabled();
452 if (! csd->exec()) { 466 if (! csd->exec()) {
453 delete csd; 467 delete csd;
454 return; 468 return;
455 } 469 }
456 QStringList catList = csd->selectedCategories(); 470 QStringList catList = csd->selectedCategories();
457 delete csd; 471 delete csd;
458 // if ( catList.count() == 0 ) 472 // if ( catList.count() == 0 )
459 // return; 473 // return;
460 //catList.sort(); 474 //catList.sort();
461 QString categoriesStr = catList.join(","); 475 QString categoriesStr = catList.join(",");
462 int i; 476 int i;
463 QStringList itemList; 477 QStringList itemList;
464 QPtrList<KOListViewItem> sel ; 478 QPtrList<KOListViewItem> sel ;
465 QListViewItem *qitem = mListView->firstChild (); 479 QListViewItem *qitem = mListView->firstChild ();
466 while ( qitem ) { 480 while ( qitem ) {
467 if ( qitem->isSelected() ) { 481 if ( qitem->isSelected() ) {
468 sel.append(((KOListViewItem *)qitem)); 482 sel.append(((KOListViewItem *)qitem));
469 } 483 }
470 qitem = qitem->nextSibling(); 484 qitem = qitem->nextSibling();
471 } 485 }
472 KOListViewItem * item, *temp; 486 KOListViewItem * item, *temp;
473 item = sel.first(); 487 item = sel.first();
474 if( item ) { 488 if( item ) {
475 Incidence* inc = item->data() ; 489 Incidence* inc = item->data() ;
476 bool setSub = false; 490 bool setSub = false;
477 if( inc->type() == "Todo" && sel.count() == 1 && inc->relations().count() > 0 ) { 491 if( inc->type() == "Todo" && sel.count() == 1 && inc->relations().count() > 0 ) {
478 int result = KMessageBox::warningYesNoCancel(this, 492 int result = KMessageBox::warningYesNoCancel(this,
479 i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ), 493 i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ),
480 i18n("Todo has subtodos"), 494 i18n("Todo has subtodos"),
481 i18n("Yes"), 495 i18n("Yes"),
482 i18n("No")); 496 i18n("No"));
483 if (result == KMessageBox::Cancel) item = 0; 497 if (result == KMessageBox::Cancel) item = 0;
484 if (result == KMessageBox::Yes) setSub = true; 498 if (result == KMessageBox::Yes) setSub = true;
485 } 499 }
486 while ( item ) { 500 while ( item ) {
487 inc = item->data(); 501 inc = item->data();
488 if ( removeOld ) { 502 if ( removeOld ) {
489 inc->setCategories( catList, setSub ); 503 inc->setCategories( catList, setSub );
490 } else { 504 } else {
491 inc->addCategories( catList, setSub ); 505 inc->addCategories( catList, setSub );
492 } 506 }
493 ListItemVisitor v(item, mStartDate ); 507 ListItemVisitor v(item, mStartDate );
494 inc->accept(v); 508 inc->accept(v);
495 item = sel.next(); 509 item = sel.next();
496 } 510 }
497 } 511 }
498 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 512 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
499} 513}
500 514
501void KOListView::beamSelected() 515void KOListView::beamSelected()
502{ 516{
503 int icount = 0; 517 int icount = 0;
504 QPtrList<Incidence> delSel ; 518 QPtrList<Incidence> delSel ;
505 QListViewItem *item = mListView->firstChild (); 519 QListViewItem *item = mListView->firstChild ();
506 while ( item ) { 520 while ( item ) {
507 if ( item->isSelected() ) { 521 if ( item->isSelected() ) {
508 delSel.append(((KOListViewItem *)item)->data()); 522 delSel.append(((KOListViewItem *)item)->data());
509 ++icount; 523 ++icount;
510 } 524 }
511 525
512 item = item->nextSibling(); 526 item = item->nextSibling();
513 } 527 }
514 if ( icount ) { 528 if ( icount ) {
515 emit beamIncidenceList( delSel ); 529 emit beamIncidenceList( delSel );
516 return; 530 return;
517 QString fn ; 531 QString fn ;
518 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; 532 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs";
519 QString mes; 533 QString mes;
520 bool createbup = true; 534 bool createbup = true;
521 if ( createbup ) { 535 if ( createbup ) {
522 QString description = "\n"; 536 QString description = "\n";
523 CalendarLocal* cal = new CalendarLocal(); 537 CalendarLocal* cal = new CalendarLocal();
524 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 538 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
525 Incidence *incidence = delSel.first(); 539 Incidence *incidence = delSel.first();
526 while ( incidence ) { 540 while ( incidence ) {
527 Incidence *in = incidence->clone(); 541 Incidence *in = incidence->clone();
528 description += in->summary() + "\n"; 542 description += in->summary() + "\n";
529 cal->addIncidence( in ); 543 cal->addIncidence( in );
530 incidence = delSel.next(); 544 incidence = delSel.next();
531 } 545 }
532 FileStorage storage( cal, fn, new VCalFormat ); 546 FileStorage storage( cal, fn, new VCalFormat );
533 storage.save(); 547 storage.save();
534 delete cal; 548 delete cal;
535 mes = i18n("KO/Pi: Ready for beaming"); 549 mes = i18n("KO/Pi: Ready for beaming");
536 topLevelWidget()->setCaption(mes); 550 topLevelWidget()->setCaption(mes);
537 551
538#ifndef DESKTOP_VERSION 552#ifndef DESKTOP_VERSION
539 Ir *ir = new Ir( this ); 553 Ir *ir = new Ir( this );
540 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 554 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
541 ir->send( fn, description, "text/x-vCalendar" ); 555 ir->send( fn, description, "text/x-vCalendar" );
542#endif 556#endif
543 } 557 }
544 } 558 }
545} 559}
546void KOListView::beamDone( Ir *ir ) 560void KOListView::beamDone( Ir *ir )
547{ 561{
548#ifndef DESKTOP_VERSION 562#ifndef DESKTOP_VERSION
549 delete ir; 563 delete ir;
550#endif 564#endif
551 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); 565 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done"));
552} 566}
553 567
554void KOListView::saveDescriptionToFile() 568void KOListView::saveDescriptionToFile()
555{ 569{
556 570
557 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 571 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
558 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), 572 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."),
559 i18n("Continue"), i18n("Cancel"), 0, 573 i18n("Continue"), i18n("Cancel"), 0,
560 0, 1 ); 574 0, 1 );
561 if ( result != 0 ) { 575 if ( result != 0 ) {
562 return; 576 return;
563 } 577 }
564 int icount = 0; 578 int icount = 0;
565 QPtrList<Incidence> delSel ; 579 QPtrList<Incidence> delSel ;
566 QListViewItem *item = mListView->firstChild (); 580 QListViewItem *item = mListView->firstChild ();
567 while ( item ) { 581 while ( item ) {
568 if ( item->isSelected() ) { 582 if ( item->isSelected() ) {
569 delSel.append(((KOListViewItem *)item)->data()); 583 delSel.append(((KOListViewItem *)item)->data());
570 ++icount; 584 ++icount;
571 } 585 }
572 586
573 item = item->nextSibling(); 587 item = item->nextSibling();
574 } 588 }
575 if ( icount ) { 589 if ( icount ) {
576 QString fn = KOPrefs::instance()->mLastSaveFile; 590 QString fn = KOPrefs::instance()->mLastSaveFile;
577 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 591 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
578 592
579 if ( fn == "" ) 593 if ( fn == "" )
580 return; 594 return;
581 QFileInfo info; 595 QFileInfo info;
582 info.setFile( fn ); 596 info.setFile( fn );
583 QString mes; 597 QString mes;
584 bool createbup = true; 598 bool createbup = true;
585 if ( info. exists() ) { 599 if ( info. exists() ) {
586 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 600 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
587 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 601 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
588 i18n("Overwrite!"), i18n("Cancel"), 0, 602 i18n("Overwrite!"), i18n("Cancel"), 0,
589 0, 1 ); 603 0, 1 );
590 if ( result != 0 ) { 604 if ( result != 0 ) {
591 createbup = false; 605 createbup = false;
592 } 606 }
593 } 607 }
594 if ( createbup ) { 608 if ( createbup ) {
595 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + 609 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") +
596 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); 610 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false);
597 Incidence *incidence = delSel.first(); 611 Incidence *incidence = delSel.first();
598 icount = 0; 612 icount = 0;
599 while ( incidence ) { 613 while ( incidence ) {
600 if ( incidence->type() == "Journal" ) { 614 if ( incidence->type() == "Journal" ) {
601 text += "\n************************************\n"; 615 text += "\n************************************\n";
602 text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); 616 text += i18n("Journal from: ") +incidence->dtStartDateStr( false );
603 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 617 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
604 text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); 618 text +="\n" + i18n("Description: ") + "\n"+ incidence->description();
605 ++icount; 619 ++icount;
606 620
607 } else { 621 } else {
608 if ( !incidence->description().isEmpty() ) { 622 if ( !incidence->description().isEmpty() ) {
609 text += "\n************************************\n"; 623 text += "\n************************************\n";
610 if ( incidence->type() == "Todo" ) 624 if ( incidence->type() == "Todo" )
611 text += i18n("To-Do: "); 625 text += i18n("To-Do: ");
612 text += incidence->summary(); 626 text += incidence->summary();
613 if ( incidence->hasStartDate() ) 627 if ( incidence->hasStartDate() )
614 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); 628 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false );
615 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 629 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
616 if ( !incidence->location().isEmpty() ) 630 if ( !incidence->location().isEmpty() )
617 text += "\n" +i18n("Location: ") + incidence->location(); 631 text += "\n" +i18n("Location: ") + incidence->location();
618 text += "\n" + i18n("Description: ") + "\n" + incidence->description(); 632 text += "\n" + i18n("Description: ") + "\n" + incidence->description();
619 ++icount; 633 ++icount;
620 634
621 } 635 }
622 } 636 }
623 incidence = delSel.next(); 637 incidence = delSel.next();
624 } 638 }
625 QFile file( fn ); 639 QFile file( fn );
626 if (!file.open( IO_WriteOnly ) ) { 640 if (!file.open( IO_WriteOnly ) ) {
627 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); 641 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") );
628 return; 642 return;
629 } 643 }
630 QTextStream ts( &file ); 644 QTextStream ts( &file );
631 ts << text; 645 ts << text;
632 file.close(); 646 file.close();
633 //qDebug("%s ", text.latin1()); 647 //qDebug("%s ", text.latin1());
634 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); 648 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount );
635 KOPrefs::instance()->mLastSaveFile = fn; 649 KOPrefs::instance()->mLastSaveFile = fn;
636 topLevelWidget()->setCaption(mes); 650 topLevelWidget()->setCaption(mes);
637 } 651 }
638 } 652 }
639} 653}
640void KOListView::saveToFileVCS() 654void KOListView::saveToFileVCS()
641{ 655{
642 writeToFile( false ); 656 writeToFile( false );
643} 657}
644void KOListView::saveToFile() 658void KOListView::saveToFile()
645{ 659{
646 writeToFile( true ); 660 writeToFile( true );
647} 661}
648void KOListView::writeToFile( bool iCal ) 662void KOListView::writeToFile( bool iCal )
649{ 663{
650 664
651 int icount = 0; 665 int icount = 0;
652 QPtrList<Incidence> delSel ; 666 QPtrList<Incidence> delSel ;
653 QListViewItem *item = mListView->firstChild (); 667 QListViewItem *item = mListView->firstChild ();
654 bool journal = iCal; // warn only for vCal 668 bool journal = iCal; // warn only for vCal
655 while ( item ) { 669 while ( item ) {
656 if ( item->isSelected() ) { 670 if ( item->isSelected() ) {
657 if ( !journal ) 671 if ( !journal )
658 if ( ((KOListViewItem *)item)->data()->type() == "Journal") 672 if ( ((KOListViewItem *)item)->data()->type() == "Journal")
659 journal = true; 673 journal = true;
660 delSel.append(((KOListViewItem *)item)->data()); 674 delSel.append(((KOListViewItem *)item)->data());
661 ++icount; 675 ++icount;
662 } 676 }
663 677
664 item = item->nextSibling(); 678 item = item->nextSibling();
665 } 679 }
666 if ( !iCal && journal ) { 680 if ( !iCal && journal ) {
667 int result = KMessageBox::warningContinueCancel(this, 681 int result = KMessageBox::warningContinueCancel(this,
668 i18n("The journal entries can not be\nexported to a vCalendar file."), 682 i18n("The journal entries can not be\nexported to a vCalendar file."),
669 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 683 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
670 true); 684 true);
671 if (result != KMessageBox::Continue) return; 685 if (result != KMessageBox::Continue) return;
672 } 686 }
673 if ( icount ) { 687 if ( icount ) {
674 QString fn = KOPrefs::instance()->mLastSaveFile; 688 QString fn = KOPrefs::instance()->mLastSaveFile;
675 QString extension; 689 QString extension;
676 if ( iCal ) { 690 if ( iCal ) {
677 if ( fn.right( 4 ).lower() == ".vcs" ) { 691 if ( fn.right( 4 ).lower() == ".vcs" ) {
678 fn = fn.left( fn.length() -3) + "ics"; 692 fn = fn.left( fn.length() -3) + "ics";
679 } 693 }
680 } else { 694 } else {
681 if ( fn.right( 4 ).lower() == ".ics" ) { 695 if ( fn.right( 4 ).lower() == ".ics" ) {
682 fn = fn.left( fn.length() -3) + "vcs"; 696 fn = fn.left( fn.length() -3) + "vcs";
683 } 697 }
684 } 698 }
685 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 699 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
686 700
687 if ( fn == "" ) 701 if ( fn == "" )
688 return; 702 return;
689 QFileInfo info; 703 QFileInfo info;
690 info.setFile( fn ); 704 info.setFile( fn );
691 QString mes; 705 QString mes;
692 bool createbup = true; 706 bool createbup = true;
693 if ( info. exists() ) { 707 if ( info. exists() ) {
694 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 708 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
695 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 709 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
696 i18n("Overwrite!"), i18n("Cancel"), 0, 710 i18n("Overwrite!"), i18n("Cancel"), 0,
697 0, 1 ); 711 0, 1 );
698 if ( result != 0 ) { 712 if ( result != 0 ) {
699 createbup = false; 713 createbup = false;
700 } 714 }
701 } 715 }
702 if ( createbup ) { 716 if ( createbup ) {
703 CalendarLocal cal; 717 CalendarLocal cal;
704 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 718 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
705 Incidence *incidence = delSel.first(); 719 Incidence *incidence = delSel.first();
706 while ( incidence ) { 720 while ( incidence ) {
707 cal.addIncidence( incidence->clone() ); 721 cal.addIncidence( incidence->clone() );
708 incidence = delSel.next(); 722 incidence = delSel.next();
709 } 723 }
710 if ( iCal ) { 724 if ( iCal ) {
711 ICalFormat format; 725 ICalFormat format;
712 format.save( &cal, fn ); 726 format.save( &cal, fn );
713 } else { 727 } else {
714 728
715 VCalFormat format; 729 VCalFormat format;
716 format.save( &cal, fn ); 730 format.save( &cal, fn );
717 } 731 }
718 mes = i18n("KO/Pi:Saved %1").arg(fn ); 732 mes = i18n("KO/Pi:Saved %1").arg(fn );
719 KOPrefs::instance()->mLastSaveFile = fn; 733 KOPrefs::instance()->mLastSaveFile = fn;
720 topLevelWidget()->setCaption(mes); 734 topLevelWidget()->setCaption(mes);
721 } 735 }
722 } 736 }
723 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 737 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
724} 738}
739void KOListView::hideAll()
740{
741 QPtrList<QListViewItem> delSel ;
742 QListViewItem *item = mListView->firstChild ();
743 while ( item ) {
744 if ( item->isSelected() ) {
745 delSel.append(item);
746 }
747 item = item->nextSibling();
748 }
749 item = delSel.first() ;
750 while ( item ) {
751 QListViewItem * del = item;
752 item = delSel.next();
753 delete del;
754 }
755}
756void KOListView::printList()
757{
758 mListView->printList();
759}
725void KOListView::deleteAll() 760void KOListView::deleteAll()
726{ 761{
727 int icount = 0; 762 int icount = 0;
728 QPtrList<Incidence> delSel ; 763 QPtrList<Incidence> delSel ;
729 QListViewItem *item = mListView->firstChild (); 764 QListViewItem *item = mListView->firstChild ();
730 while ( item ) { 765 while ( item ) {
731 if ( item->isSelected() ) { 766 if ( item->isSelected() ) {
732 delSel.append(((KOListViewItem *)item)->data()); 767 delSel.append(((KOListViewItem *)item)->data());
733 ++icount; 768 ++icount;
734 } 769 }
735 770
736 item = item->nextSibling(); 771 item = item->nextSibling();
737 } 772 }
738 if ( icount ) { 773 if ( icount ) {
739 Incidence *incidence = delSel.first(); 774 Incidence *incidence = delSel.first();
740 Incidence *toDelete; 775 Incidence *toDelete;
741 KOPrefs *p = KOPrefs::instance(); 776 KOPrefs *p = KOPrefs::instance();
742 bool confirm = p->mConfirm; 777 bool confirm = p->mConfirm;
743 QString mess; 778 QString mess;
744 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); 779 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount );
745 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")) ) { 780 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")) ) {
746 p->mConfirm = false; 781 p->mConfirm = false;
747 int delCounter = 0; 782 int delCounter = 0;
748 QDialog dia ( this, "p-dialog", true ); 783 QDialog dia ( this, "p-dialog", true );
749 QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); 784 QLabel lab (i18n("Close dialog to abort deletion!"), &dia );
750 QVBoxLayout lay( &dia ); 785 QVBoxLayout lay( &dia );
751 lay.setMargin(7); 786 lay.setMargin(7);
752 lay.setSpacing(7); 787 lay.setSpacing(7);
753 lay.addWidget( &lab); 788 lay.addWidget( &lab);
754 QProgressBar bar( icount, &dia ); 789 QProgressBar bar( icount, &dia );
755 lay.addWidget( &bar); 790 lay.addWidget( &bar);
756 int w = 220; 791 int w = 220;
757 int h = 50; 792 int h = 50;
758 int dw = QApplication::desktop()->width(); 793 int dw = QApplication::desktop()->width();
759 int dh = QApplication::desktop()->height(); 794 int dh = QApplication::desktop()->height();
760 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 795 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
761 //dia.resize( 240,50 ); 796 //dia.resize( 240,50 );
762 dia.show(); 797 dia.show();
763 798
764 while ( incidence ) { 799 while ( incidence ) {
765 bar.setProgress( delCounter ); 800 bar.setProgress( delCounter );
766 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 801 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
767 dia.setCaption( mess ); 802 dia.setCaption( mess );
768 qApp->processEvents(); 803 qApp->processEvents();
769 toDelete = (incidence); 804 toDelete = (incidence);
770 incidence = delSel.next(); 805 incidence = delSel.next();
771 emit deleteIncidenceSignal(toDelete ); 806 emit deleteIncidenceSignal(toDelete );
772 if ( dia.result() != 0 ) 807 if ( dia.result() != 0 )
773 break; 808 break;
774 809
775 } 810 }
776 mess = mess.sprintf( i18n("%d items remaining in list."), count() ); 811 mess = mess.sprintf( i18n("%d items remaining in list."), count() );
777 topLevelWidget ()->setCaption( mess ); 812 topLevelWidget ()->setCaption( mess );
778 p->mConfirm = confirm; 813 p->mConfirm = confirm;
779 } 814 }
780 } 815 }
781 816
782 817
783} 818}
784int KOListView::maxDatesHint() 819int KOListView::maxDatesHint()
785{ 820{
786 return 0; 821 return 0;
787} 822}
788 823
789int KOListView::currentDateCount() 824int KOListView::currentDateCount()
790{ 825{
791 return 0; 826 return 0;
792} 827}
793 828
794QPtrList<Incidence> KOListView::selectedIncidences() 829QPtrList<Incidence> KOListView::selectedIncidences()
795{ 830{
796 QPtrList<Incidence> eventList; 831 QPtrList<Incidence> eventList;
797 QListViewItem *item = mListView->firstChild (); 832 QListViewItem *item = mListView->firstChild ();
798 while ( item ) { 833 while ( item ) {
799 if ( item->isSelected() ) { 834 if ( item->isSelected() ) {
800 eventList.append(((KOListViewItem *)item)->data()); 835 eventList.append(((KOListViewItem *)item)->data());
801 } 836 }
802 837
803 item = item->nextSibling(); 838 item = item->nextSibling();
804 } 839 }
805 840
806 // // QListViewItem *item = mListView->selectedItem(); 841 // // QListViewItem *item = mListView->selectedItem();
807 //if (item) eventList.append(((KOListViewItem *)item)->data()); 842 //if (item) eventList.append(((KOListViewItem *)item)->data());
808 843
809 return eventList; 844 return eventList;
810} 845}
811 846
812DateList KOListView::selectedDates() 847DateList KOListView::selectedDates()
813{ 848{
814 DateList eventList; 849 DateList eventList;
815 return eventList; 850 return eventList;
816} 851}
817 852
818void KOListView::showDates(bool show) 853void KOListView::showDates(bool show)
819{ 854{
820 // Shouldn't we set it to a value greater 0? When showDates is called with 855 // Shouldn't we set it to a value greater 0? When showDates is called with
821 // show == true at first, then the columnwidths are set to zero. 856 // show == true at first, then the columnwidths are set to zero.
822 static int oldColWidth1 = 0; 857 static int oldColWidth1 = 0;
823 static int oldColWidth3 = 0; 858 static int oldColWidth3 = 0;
824 859
825 if (!show) { 860 if (!show) {
826 oldColWidth1 = mListView->columnWidth(1); 861 oldColWidth1 = mListView->columnWidth(1);
827 oldColWidth3 = mListView->columnWidth(3); 862 oldColWidth3 = mListView->columnWidth(3);
828 mListView->setColumnWidth(1, 0); 863 mListView->setColumnWidth(1, 0);
829 mListView->setColumnWidth(3, 0); 864 mListView->setColumnWidth(3, 0);
830 } else { 865 } else {
831 mListView->setColumnWidth(1, oldColWidth1); 866 mListView->setColumnWidth(1, oldColWidth1);
832 mListView->setColumnWidth(3, oldColWidth3); 867 mListView->setColumnWidth(3, oldColWidth3);
833 } 868 }
834 mListView->repaint(); 869 mListView->repaint();
835} 870}
836 871
837void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 872void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
838 const QDate &td) 873 const QDate &td)
839{ 874{
840#ifndef KORG_NOPRINTER 875#ifndef KORG_NOPRINTER
841 calPrinter->preview(CalPrinter::Day, fd, td); 876 calPrinter->preview(CalPrinter::Day, fd, td);
842#endif 877#endif
843} 878}
844 879
845void KOListView::showDates() 880void KOListView::showDates()
846{ 881{
847 showDates(true); 882 showDates(true);
848} 883}
849 884
850void KOListView::hideDates() 885void KOListView::hideDates()
851{ 886{
852 showDates(false); 887 showDates(false);
853} 888}
854 889
855void KOListView::resetFocus() 890void KOListView::resetFocus()
856{ 891{
857 topLevelWidget()->setActiveWindow(); 892 topLevelWidget()->setActiveWindow();
858 topLevelWidget()->raise(); 893 topLevelWidget()->raise();
859 mListView->setFocus(); 894 mListView->setFocus();
860} 895}
861void KOListView::updateView() 896void KOListView::updateView()
862{ 897{
863 mListView->setFocus(); 898 mListView->setFocus();
864 if ( mListView->firstChild () ) 899 if ( mListView->firstChild () )
865 mListView->setCurrentItem( mListView->firstChild () ); 900 mListView->setCurrentItem( mListView->firstChild () );
866} 901}
867void KOListView::updateConfig() 902void KOListView::updateConfig()
868{ 903{
869 904
870 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 905 mListView->setFont ( KOPrefs::instance()->mListViewFont );
871 updateView(); 906 updateView();
872 907
873} 908}
874void KOListView::setStartDate(const QDate &start) 909void KOListView::setStartDate(const QDate &start)
875{ 910{
876 mStartDate = start; 911 mStartDate = start;
877} 912}
878 913
879void KOListView::showDates(const QDate &start, const QDate &end) 914void KOListView::showDates(const QDate &start, const QDate &end)
880{ 915{
881 clear(); 916 clear();
882 mStartDate = start; 917 mStartDate = start;
883 QDate date = start; 918 QDate date = start;
884 QPtrList<Journal> j_list; 919 QPtrList<Journal> j_list;
885 while( date <= end ) { 920 while( date <= end ) {
886 addEvents(calendar()->events(date)); 921 addEvents(calendar()->events(date));
887 addTodos(calendar()->todos(date)); 922 addTodos(calendar()->todos(date));
888 Journal* jo = calendar()->journal(date); 923 Journal* jo = calendar()->journal(date);
889 if ( jo ) 924 if ( jo )
890 j_list.append( jo ); 925 j_list.append( jo );
891 date = date.addDays( 1 ); 926 date = date.addDays( 1 );
892 } 927 }
893 addJournals(j_list); 928 addJournals(j_list);
894 emit incidenceSelected( 0 ); 929 emit incidenceSelected( 0 );
895 updateView(); 930 updateView();
896 931
897} 932}
898 933
899void KOListView::addEvents(QPtrList<Event> eventList) 934void KOListView::addEvents(QPtrList<Event> eventList)
900{ 935{
901 936
902 Event *ev; 937 Event *ev;
903 for(ev = eventList.first(); ev; ev = eventList.next()) { 938 for(ev = eventList.first(); ev; ev = eventList.next()) {
904 addIncidence(ev); 939 addIncidence(ev);
905 } 940 }
906 if ( !mListView->currentItem() ){ 941 if ( !mListView->currentItem() ){
907 updateView(); 942 updateView();
908 } 943 }
909} 944}
910 945
911void KOListView::addTodos(QPtrList<Todo> eventList) 946void KOListView::addTodos(QPtrList<Todo> eventList)
912{ 947{
913 Todo *ev; 948 Todo *ev;
914 for(ev = eventList.first(); ev; ev = eventList.next()) { 949 for(ev = eventList.first(); ev; ev = eventList.next()) {
915 addIncidence(ev); 950 addIncidence(ev);
916 } 951 }
917 if ( !mListView->currentItem() ){ 952 if ( !mListView->currentItem() ){
918 updateView(); 953 updateView();
919 } 954 }
920} 955}
921void KOListView::addJournals(QPtrList<Journal> eventList) 956void KOListView::addJournals(QPtrList<Journal> eventList)
922{ 957{
923 Journal *ev; 958 Journal *ev;
924 for(ev = eventList.first(); ev; ev = eventList.next()) { 959 for(ev = eventList.first(); ev; ev = eventList.next()) {
925 addIncidence(ev); 960 addIncidence(ev);
926 } 961 }
927 if ( !mListView->currentItem() ){ 962 if ( !mListView->currentItem() ){
928 updateView(); 963 updateView();
929 } 964 }
930} 965}
931 966
932void KOListView::addIncidence(Incidence *incidence) 967void KOListView::addIncidence(Incidence *incidence)
933{ 968{
934 if ( mUidDict.find( incidence->uid() ) ) return; 969 if ( mUidDict.find( incidence->uid() ) ) return;
935 970
936 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 971 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
937 mUidDict.insert( incidence->uid(), incidence ); 972 mUidDict.insert( incidence->uid(), incidence );
938 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 973 KOListViewItem *item = new KOListViewItem( incidence, mListView );
939 ListItemVisitor v(item, mStartDate ); 974 ListItemVisitor v(item, mStartDate );
940 if (incidence->accept(v)) { 975 if (incidence->accept(v)) {
941 return; 976 return;
942 } 977 }
943 else delete item; 978 else delete item;
944} 979}
945 980
946void KOListView::showEvents(QPtrList<Event> eventList) 981void KOListView::showEvents(QPtrList<Event> eventList)
947{ 982{
948 clear(); 983 clear();
949 984
950 addEvents(eventList); 985 addEvents(eventList);
951 986
952 // After new creation of list view no events are selected. 987 // After new creation of list view no events are selected.
953 emit incidenceSelected( 0 ); 988 emit incidenceSelected( 0 );
954} 989}
955int KOListView::count() 990int KOListView::count()
956{ 991{
957 return mListView->childCount(); 992 return mListView->childCount();
958} 993}
959 994
960void KOListView::changeEventDisplay(Event *event, int action) 995void KOListView::changeEventDisplay(Event *event, int action)
961{ 996{
962 KOListViewItem *item; 997 KOListViewItem *item;
963 998
964 switch(action) { 999 switch(action) {
965 case KOGlobals::EVENTADDED: 1000 case KOGlobals::EVENTADDED:
966 addIncidence( event ); 1001 addIncidence( event );
967 break; 1002 break;
968 case KOGlobals::EVENTEDITED: 1003 case KOGlobals::EVENTEDITED:
969 item = getItemForEvent(event); 1004 item = getItemForEvent(event);
970 if (item) { 1005 if (item) {
971 mUidDict.remove( event->uid() ); 1006 mUidDict.remove( event->uid() );
972 delete item; 1007 delete item;
973 addIncidence( event ); 1008 addIncidence( event );
974 } 1009 }
975 break; 1010 break;
976 case KOGlobals::EVENTDELETED: 1011 case KOGlobals::EVENTDELETED:
977 item = getItemForEvent(event); 1012 item = getItemForEvent(event);
978 if (item) { 1013 if (item) {
979 mUidDict.remove( event->uid() ); 1014 mUidDict.remove( event->uid() );
980 delete item; 1015 delete item;
981 } 1016 }
982 break; 1017 break;
983 default: 1018 default:
984 ; 1019 ;
985 } 1020 }
986} 1021}
987 1022
988KOListViewItem *KOListView::getItemForEvent(Event *event) 1023KOListViewItem *KOListView::getItemForEvent(Event *event)
989{ 1024{
990 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 1025 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
991 while (item) { 1026 while (item) {
992 if (item->data() == event) return item; 1027 if (item->data() == event) return item;
993 item = (KOListViewItem *)item->nextSibling(); 1028 item = (KOListViewItem *)item->nextSibling();
994 } 1029 }
995 return 0; 1030 return 0;
996} 1031}
997 1032
998void KOListView::defaultItemAction(QListViewItem *i) 1033void KOListView::defaultItemAction(QListViewItem *i)
999{ 1034{
1000 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 1035 KOListViewItem *item = static_cast<KOListViewItem *>( i );
1001 if ( item ) defaultAction( item->data() ); 1036 if ( item ) defaultAction( item->data() );
1002 1037
1003} 1038}
1004 1039
1005void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1040void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
1006{ 1041{
1007 mActiveItem = (KOListViewItem *)item; 1042 mActiveItem = (KOListViewItem *)item;
1008 if (mActiveItem) { 1043 if (mActiveItem) {
1009 Incidence *incidence = mActiveItem->data(); 1044 Incidence *incidence = mActiveItem->data();
1010 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) ); 1045 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) );
1011 mPopupMenu->showIncidencePopup(incidence); 1046 mPopupMenu->showIncidencePopup(incidence);
1012 1047
1013 /* 1048 /*
1014 if ( incidence && incidence->type() == "Event" ) { 1049 if ( incidence && incidence->type() == "Event" ) {
1015 Event *event = static_cast<Event *>( incidence ); 1050 Event *event = static_cast<Event *>( incidence );
1016 mPopupMenu->showEventPopup(event); 1051 mPopupMenu->showEventPopup(event);
1017 } 1052 }
1018 */ 1053 */
1019 } 1054 }
1020} 1055}
1021 1056
1022void KOListView::readSettings(KConfig *config, QString setting) 1057void KOListView::readSettings(KConfig *config, QString setting)
1023{ 1058{
1024 // qDebug("KOListView::readSettings "); 1059 // qDebug("KOListView::readSettings ");
1025 mListView->restoreLayout(config,setting); 1060 mListView->restoreLayout(config,setting);
1026} 1061}
1027 1062
1028void KOListView::writeSettings(KConfig *config, QString setting) 1063void KOListView::writeSettings(KConfig *config, QString setting)
1029{ 1064{
1030 // qDebug("KOListView::writeSettings "); 1065 // qDebug("KOListView::writeSettings ");
1031 mListView->saveLayout(config, setting); 1066 mListView->saveLayout(config, setting);
1032} 1067}
1033 1068
1034void KOListView::processSelectionChange(QListViewItem *) 1069void KOListView::processSelectionChange(QListViewItem *)
1035{ 1070{
1036 1071
1037 KOListViewItem *item = 1072 KOListViewItem *item =
1038 static_cast<KOListViewItem *>( mListView->currentItem() ); 1073 static_cast<KOListViewItem *>( mListView->currentItem() );
1039 1074
1040 if ( !item ) { 1075 if ( !item ) {
1041 emit incidenceSelected( 0 ); 1076 emit incidenceSelected( 0 );
1042 } else { 1077 } else {
1043 emit incidenceSelected( item->data() ); 1078 emit incidenceSelected( item->data() );
1044 } 1079 }
1045} 1080}
1046 1081
1047void KOListView::clearSelection() 1082void KOListView::clearSelection()
1048{ 1083{
1049 mListView->selectAll( false ); 1084 mListView->selectAll( false );
1050} 1085}
1051void KOListView::allSelection() 1086void KOListView::allSelection()
1052{ 1087{
1053 mListView->selectAll( true ); 1088 mListView->selectAll( true );
1054} 1089}
1055 1090
1056void KOListView::clear() 1091void KOListView::clear()
1057{ 1092{
1058 mListView->clear(); 1093 mListView->clear();
1059 mUidDict.clear(); 1094 mUidDict.clear();
1060} 1095}
1061 1096
1062Incidence* KOListView::currentItem() 1097Incidence* KOListView::currentItem()
1063{ 1098{
1064 if ( mListView->currentItem() ) 1099 if ( mListView->currentItem() )
1065 return ((KOListViewItem*) mListView->currentItem())->data(); 1100 return ((KOListViewItem*) mListView->currentItem())->data();
1066 return 0; 1101 return 0;
1067} 1102}
1068void KOListView::keyPressEvent ( QKeyEvent *e) 1103void KOListView::keyPressEvent ( QKeyEvent *e)
1069{ 1104{
1070 1105
1071 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 1106 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
1072 deleteAll(); 1107 deleteAll();
1073 return; 1108 return;
1074 } 1109 }
1075 1110
1076 e->ignore(); 1111 e->ignore();
1077} 1112}
1078void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1113void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1079{ 1114{
1080 1115
1081 switch ( e->key() ) { 1116 switch ( e->key() ) {
1082 case Qt::Key_Down: 1117 case Qt::Key_Down:
1083 if ( e->state() == ShiftButton ) { 1118 if ( e->state() == ShiftButton ) {
1084 QListViewItem* cn = currentItem(); 1119 QListViewItem* cn = currentItem();
1085 if ( !cn ) 1120 if ( !cn )
1086 cn = firstChild(); 1121 cn = firstChild();
1087 if ( !cn ) 1122 if ( !cn )
1088 return; 1123 return;
1089 while ( cn->nextSibling() ) 1124 while ( cn->nextSibling() )
1090 cn = cn->nextSibling(); 1125 cn = cn->nextSibling();
1091 setCurrentItem ( cn ); 1126 setCurrentItem ( cn );
1092 ensureItemVisible ( cn ); 1127 ensureItemVisible ( cn );
1093 1128
1094 e->accept(); 1129 e->accept();
1095 return; 1130 return;
1096 } 1131 }
1097 if ( e->state() == ControlButton ) { 1132 if ( e->state() == ControlButton ) {
1098 int count = childCount (); 1133 int count = childCount ();
1099 int jump = count / 5; 1134 int jump = count / 5;
1100 QListViewItem* cn; 1135 QListViewItem* cn;
1101 cn = currentItem(); 1136 cn = currentItem();
1102 if ( ! cn ) 1137 if ( ! cn )
1103 return; 1138 return;
1104 if ( jump == 0 ) 1139 if ( jump == 0 )
1105 jump = 1; 1140 jump = 1;
1106 while ( jump && cn->nextSibling() ) { 1141 while ( jump && cn->nextSibling() ) {
1107 cn = cn->nextSibling(); 1142 cn = cn->nextSibling();
1108 --jump; 1143 --jump;
1109 } 1144 }
1110 setCurrentItem ( cn ); 1145 setCurrentItem ( cn );
1111 ensureItemVisible ( cn ); 1146 ensureItemVisible ( cn );
1112 1147
1113 } else 1148 } else
1114 QListView::keyPressEvent ( e ) ; 1149 QListView::keyPressEvent ( e ) ;
1115 e->accept(); 1150 e->accept();
1116 break; 1151 break;
1117 1152
1118 case Qt::Key_Up: 1153 case Qt::Key_Up:
1119 if ( e->state() == ShiftButton ) { 1154 if ( e->state() == ShiftButton ) {
1120 QListViewItem* cn = firstChild(); 1155 QListViewItem* cn = firstChild();
1121 if ( cn ) { 1156 if ( cn ) {
1122 setCurrentItem ( cn ); 1157 setCurrentItem ( cn );
1123 ensureItemVisible ( cn ); 1158 ensureItemVisible ( cn );
1124 } 1159 }
1125 e->accept(); 1160 e->accept();
1126 return; 1161 return;
1127 } 1162 }
1128 if ( e->state() == ControlButton ) { 1163 if ( e->state() == ControlButton ) {
1129 int count = childCount (); 1164 int count = childCount ();
1130 int jump = count / 5; 1165 int jump = count / 5;
1131 QListViewItem* cn; 1166 QListViewItem* cn;
1132 cn = currentItem(); 1167 cn = currentItem();
1133 if ( ! cn ) 1168 if ( ! cn )
1134 return; 1169 return;
1135 if ( jump == 0 ) 1170 if ( jump == 0 )
1136 jump = 1; 1171 jump = 1;
1137 while ( jump && cn->itemAbove ()) { 1172 while ( jump && cn->itemAbove ()) {
1138 cn = cn->itemAbove (); 1173 cn = cn->itemAbove ();
1139 --jump; 1174 --jump;
1140 } 1175 }
1141 setCurrentItem ( cn ); 1176 setCurrentItem ( cn );
1142 ensureItemVisible ( cn ); 1177 ensureItemVisible ( cn );
1143 } else 1178 } else
1144 QListView::keyPressEvent ( e ) ; 1179 QListView::keyPressEvent ( e ) ;
1145 e->accept(); 1180 e->accept();
1146 break; 1181 break;
1147 case Qt::Key_I: { 1182 case Qt::Key_I: {
1148 QListViewItem* cn; 1183 QListViewItem* cn;
1149 cn = currentItem(); 1184 cn = currentItem();
1150 if ( cn ) { 1185 if ( cn ) {
1151 KOListViewItem* ci = (KOListViewItem*)( cn ); 1186 KOListViewItem* ci = (KOListViewItem*)( cn );
1152 if ( ci ){ 1187 if ( ci ){
1153 //emit showIncidence( ci->data()); 1188 //emit showIncidence( ci->data());
1154 cn = cn->nextSibling(); 1189 cn = cn->nextSibling();
1155 if ( cn ) { 1190 if ( cn ) {
1156 setCurrentItem ( cn ); 1191 setCurrentItem ( cn );
1157 ensureItemVisible ( cn ); 1192 ensureItemVisible ( cn );
1158 } 1193 }
1159 emit showIncidence( ci->data()); 1194 emit showIncidence( ci->data());
1160 } 1195 }
1161 } 1196 }
1162 e->accept(); 1197 e->accept();
1163 } 1198 }
1164 break; 1199 break;
1165 case Qt::Key_Return: 1200 case Qt::Key_Return:
1166 case Qt::Key_Enter: 1201 case Qt::Key_Enter:
1167 { 1202 {
1168 QListViewItem* cn; 1203 QListViewItem* cn;
1169 cn = currentItem(); 1204 cn = currentItem();
1170 if ( cn ) { 1205 if ( cn ) {
1171 KOListViewItem* ci = (KOListViewItem*)( cn ); 1206 KOListViewItem* ci = (KOListViewItem*)( cn );
1172 if ( ci ){ 1207 if ( ci ){
1173 if ( e->state() == ShiftButton ) 1208 if ( e->state() == ShiftButton )
1174 ci->setSelected( false ); 1209 ci->setSelected( false );
1175 else 1210 else
1176 ci->setSelected( true ); 1211 ci->setSelected( true );
1177 cn = cn->nextSibling(); 1212 cn = cn->nextSibling();
1178 if ( cn ) { 1213 if ( cn ) {
1179 setCurrentItem ( cn ); 1214 setCurrentItem ( cn );
1180 ensureItemVisible ( cn ); 1215 ensureItemVisible ( cn );
1181 } 1216 }
1182 } 1217 }
1183 } 1218 }
1184 e->accept(); 1219 e->accept();
1185 } 1220 }
1186 break; 1221 break;
1187 default: 1222 default:
1188 e->ignore(); 1223 e->ignore();
1189 } 1224 }
1190} 1225}
1191KOListViewListView::KOListViewListView(KOListView * lv ) 1226KOListViewListView::KOListViewListView(KOListView * lv )
1192 : KListView( lv, "kolistlistview", false ) 1227 : KListView( lv, "kolistlistview", false )
1193{ 1228{
1194 mYMousePos = 0; 1229 mYMousePos = 0;
1195 mPopupTimer = new QTimer(this); 1230 mPopupTimer = new QTimer(this);
1196 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); 1231 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu()));
1197#ifndef DESKTOP_VERSION 1232#ifndef DESKTOP_VERSION
1198 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 1233 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
1199#endif 1234#endif
1200 setSelectionMode( QListView::Multi ); 1235 setSelectionMode( QListView::Multi );
1201 setMultiSelection( true); 1236 setMultiSelection( true);
1202} 1237}
1203bool KOListViewListView::hasMultiSelection(QListViewItem* item) 1238bool KOListViewListView::hasMultiSelection(QListViewItem* item)
1204{ 1239{
1205 int selCount = 0; 1240 int selCount = 0;
1206 QListViewItem *qitem = firstChild (); 1241 QListViewItem *qitem = firstChild ();
1207 while ( qitem ) { 1242 while ( qitem ) {
1208 if ( qitem->isSelected() && item != qitem ) 1243 if ( qitem->isSelected() && item != qitem )
1209 return true; 1244 return true;
1210 qitem = qitem->nextSibling(); 1245 qitem = qitem->nextSibling();
1211 } 1246 }
1212 return false; 1247 return false;
1213} 1248}
1214void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 1249void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
1215{ 1250{
1216 if (!e) return; 1251 if (!e) return;
1217 QPoint vp = contentsToViewport(e->pos()); 1252 QPoint vp = contentsToViewport(e->pos());
1218 QListViewItem *item = itemAt(vp); 1253 QListViewItem *item = itemAt(vp);
1219 if (!item) { 1254 if (!item) {
1220 emit newEvent(); 1255 emit newEvent();
1221 return; 1256 return;
1222 } 1257 }
1223 KListView::contentsMouseDoubleClickEvent(e); 1258 KListView::contentsMouseDoubleClickEvent(e);
1224} 1259}
1225#if 0 1260#if 0
1226void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1261void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1227{ 1262{
1228 //qDebug("contentsMousePressEvent++++ "); 1263 //qDebug("contentsMousePressEvent++++ ");
1229 KListView::contentsMousePressEvent( e ); 1264 KListView::contentsMousePressEvent( e );
1230 if ( e->button() == RightButton ) { 1265 if ( e->button() == RightButton ) {
1231 QListViewItem* ci = currentItem(); 1266 QListViewItem* ci = currentItem();
1232 clearSelection () ; 1267 clearSelection () ;
1233 if ( ci ) 1268 if ( ci )
1234 ci->setSelected( true ); 1269 ci->setSelected( true );
1235 } 1270 }
1236} 1271}
1237void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1272void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1238{ 1273{
1239 KListView::contentsMouseReleaseEvent(e); 1274 KListView::contentsMouseReleaseEvent(e);
1240} 1275}
1241void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1276void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1242{ 1277{
1243 KListView::contentsMouseMoveEvent(e); 1278 KListView::contentsMouseMoveEvent(e);
1244} 1279}
1245#endif 1280#endif
1246void KOListViewListView::popupMenu() 1281void KOListViewListView::popupMenu()
1247{ 1282{
1248 mPopupTimer->stop(); 1283 mPopupTimer->stop();
1249 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); 1284 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton );
1250 QApplication::postEvent( this->viewport(), e ); 1285 QApplication::postEvent( this->viewport(), e );
1251 1286
1252} 1287}
1253void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1288void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1254{ 1289{
1255 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); 1290 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y());
1256 mYMousePos = mapToGlobal( (e->pos())).y(); 1291 mYMousePos = mapToGlobal( (e->pos())).y();
1257 if ( e->button() == LeftButton ) { 1292 if ( e->button() == LeftButton ) {
1258 mPopupTimer->start( 600 ); 1293 mPopupTimer->start( 600 );
1259 mEventPos = contentsToViewport(e->pos()); 1294 mEventPos = contentsToViewport(e->pos());
1260 mEventGlobalPos = e->globalPos(); 1295 mEventGlobalPos = e->globalPos();
1261 } 1296 }
1262 KListView::contentsMousePressEvent( e ); 1297 KListView::contentsMousePressEvent( e );
1263 if ( e->button() == RightButton ) { 1298 if ( e->button() == RightButton ) {
1264 QListViewItem* ci = currentItem(); 1299 QListViewItem* ci = currentItem();
1265 //clearSelection(); 1300 //clearSelection();
1266 if ( ci ) 1301 if ( ci )
1267 ci->setSelected( true ); 1302 ci->setSelected( true );
1268 } 1303 }
1269} 1304}
1270void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1305void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1271{ 1306{
1272 mPopupTimer->stop(); 1307 mPopupTimer->stop();
1273 KListView::contentsMouseReleaseEvent(e); 1308 KListView::contentsMouseReleaseEvent(e);
1274} 1309}
1275void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1310void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1276{ 1311{
1277 // qDebug("contentsMouseMoveEv....... "); 1312 // qDebug("contentsMouseMoveEv....... ");
1278 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); 1313 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() );
1279 int diff = mYMousePos - mapToGlobal( (e->pos())).y(); 1314 int diff = mYMousePos - mapToGlobal( (e->pos())).y();
1280 if ( diff < 0 ) diff = -diff; 1315 if ( diff < 0 ) diff = -diff;
1281 if ( diff > 15 ) 1316 if ( diff > 15 )
1282 mPopupTimer->stop(); 1317 mPopupTimer->stop();
1283 else { 1318 else {
1284 mEventPos = contentsToViewport(e->pos()); 1319 mEventPos = contentsToViewport(e->pos());
1285 mEventGlobalPos = e->globalPos(); 1320 mEventGlobalPos = e->globalPos();
1286 } 1321 }
1287 KListView::contentsMouseMoveEvent(e); 1322 KListView::contentsMouseMoveEvent(e);
1288} 1323}
1289 1324
1325#define protected public
1326#include <qheader.h>
1327#undef protected
1328void KOListViewListView::printList()
1329{
1330#ifdef DESKTOP_VERSION
1331 KOPrintPrefs pp ( this );
1332 if (!pp.exec() )
1333 return;
1334 int scaleval = pp.printMode() ;
1335
1336 QPrinter printer;
1337 if (!printer.setup() )
1338 return;
1339 clearSelection ();
1340 QPainter p;
1341 p.begin ( &printer );
1342 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
1343 float dx, dy;
1344 int wid = (m.width() * 9)/10;
1345 dx = (float) wid/(float)contentsWidth ();
1346 dy = (float)(m.height()) / (float)contentsHeight ();
1347 float scale;
1348 // scale to fit the width or height of the paper
1349 if ( dx < dy )
1350 scale = dx;
1351 else
1352 scale = dy;
1353
1354 p.translate( m.width()/10,m.width()/10 );
1355 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
1356 p.scale( scale, scale );
1357 }
1358
1359 int cou = header()->count();
1360 int iii;
1361 QRect rect ( 0,0,0, header()->height());
1362 for ( iii = 0; iii < cou; ++iii ) {
1363 rect.setLeft ( header()->sectionPos( iii ) );
1364 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii));
1365 header()->paintSection ( & p, header()->mapToIndex (iii), rect );
1366 }
1367 p.translate( 0, header()->height());
1368 drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () );
1369 p.end();
1370#endif
1371}
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index f4d6879..c25592d 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -1,314 +1,317 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef _KOLISTVIEW_H 24#ifndef _KOLISTVIEW_H
25#define _KOLISTVIEW_H 25#define _KOLISTVIEW_H
26 26
27#include <qlistview.h> 27#include <qlistview.h>
28#include <qmap.h> 28#include <qmap.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include <klistview.h> 31#include <klistview.h>
32 32
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/incidence.h> 38#include <libkcal/incidence.h>
39 39
40#include "koeventview.h" 40#include "koeventview.h"
41#include "customlistviewitem.h" 41#include "customlistviewitem.h"
42 42
43using namespace KCal; 43using namespace KCal;
44 44
45class KOListViewWhatsThis; 45class KOListViewWhatsThis;
46 46
47#include <qpushbutton.h> 47#include <qpushbutton.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qdialog.h> 49#include <qdialog.h>
50#include <qtimer.h> 50#include <qtimer.h>
51#include <qcombobox.h> 51#include <qcombobox.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qtooltip.h> 53#include <qtooltip.h>
54#include <qcheckbox.h> 54#include <qcheckbox.h>
55#include <qhbox.h> 55#include <qhbox.h>
56#include <qlabel.h> 56#include <qlabel.h>
57#include <kiconloader.h> 57#include <kiconloader.h>
58#include "kfiledialog.h" 58#include "kfiledialog.h"
59#include "koprefs.h" 59#include "koprefs.h"
60class KOAlarmPrefs : public QDialog 60class KOAlarmPrefs : public QDialog
61{ 61{
62 Q_OBJECT 62 Q_OBJECT
63 public: 63 public:
64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) : 64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) :
65 QDialog( par, name, true ) 65 QDialog( par, name, true )
66 { 66 {
67 setCaption( i18n("Alarm Options") ); 67 setCaption( i18n("Alarm Options") );
68 QVBoxLayout* alarmLayout = new QVBoxLayout( this ); 68 QVBoxLayout* alarmLayout = new QVBoxLayout( this );
69 alarmLayout->setSpacing( 3 ); 69 alarmLayout->setSpacing( 3 );
70 alarmLayout->setMargin( 3 ); 70 alarmLayout->setMargin( 3 );
71 QWidget *parent = this; 71 QWidget *parent = this;
72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent); 72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent);
73 alarmLayout->addWidget(mAlarmButton); 73 alarmLayout->addWidget(mAlarmButton);
74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
75 mAlarmTimeEdit->setValue( 15 ); 75 mAlarmTimeEdit->setValue( 15 );
76 alarmLayout->addWidget(mAlarmTimeEdit); 76 alarmLayout->addWidget(mAlarmTimeEdit);
77 mAlarmIncrCombo = new QComboBox(false, parent); 77 mAlarmIncrCombo = new QComboBox(false, parent);
78 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 78 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
79 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 79 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
80 mAlarmIncrCombo->insertItem(i18n("day(s)")); 80 mAlarmIncrCombo->insertItem(i18n("day(s)"));
81 alarmLayout->addWidget(mAlarmIncrCombo); 81 alarmLayout->addWidget(mAlarmIncrCombo);
82 QHBox * hb = new QHBox ( parent ); 82 QHBox * hb = new QHBox ( parent );
83 alarmLayout->addWidget(hb); 83 alarmLayout->addWidget(hb);
84 mAlarmSoundButton = new QPushButton(hb); 84 mAlarmSoundButton = new QPushButton(hb);
85 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 85 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
86 mAlarmSoundButton->setToggleButton(true); 86 mAlarmSoundButton->setToggleButton(true);
87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
88 mAlarmProgramButton = new QPushButton(hb); 88 mAlarmProgramButton = new QPushButton(hb);
89 mAlarmProgramButton->setPixmap(SmallIcon("run")); 89 mAlarmProgramButton->setPixmap(SmallIcon("run"));
90 mAlarmProgramButton->setToggleButton(true); 90 mAlarmProgramButton->setToggleButton(true);
91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
94 mAlarmLabel = new QLabel( this ); 94 mAlarmLabel = new QLabel( this );
95 alarmLayout->addWidget( mAlarmLabel ); 95 alarmLayout->addWidget( mAlarmLabel );
96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) ); 96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) );
97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
98 mAlarmSoundButton->setOn( true ); 98 mAlarmSoundButton->setOn( true );
99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this ); 99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this );
100 alarmLayout->addWidget( ok ); 100 alarmLayout->addWidget( ok );
101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
102 alarmLayout->addWidget( cancel ); 102 alarmLayout->addWidget( cancel );
103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
105 resize( 200, 200 ); 105 resize( 200, 200 );
106 106
107 } 107 }
108 108
109 109
110 110
111 QString mAlarmSound, mAlarmProgram ; 111 QString mAlarmSound, mAlarmProgram ;
112 QCheckBox* mAlarmButton; 112 QCheckBox* mAlarmButton;
113 QSpinBox* mAlarmTimeEdit; 113 QSpinBox* mAlarmTimeEdit;
114 QLabel* mAlarmLabel; 114 QLabel* mAlarmLabel;
115 QComboBox* mAlarmIncrCombo ; 115 QComboBox* mAlarmIncrCombo ;
116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton; 116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton;
117private slots: 117private slots:
118 118
119void pickAlarmSound() 119void pickAlarmSound()
120{ 120{
121 //QString prefix = mAlarmSound; 121 //QString prefix = mAlarmSound;
122 if (!mAlarmSoundButton->isOn()) { 122 if (!mAlarmSoundButton->isOn()) {
123 //mAlarmSound = ""; 123 //mAlarmSound = "";
124 QToolTip::remove(mAlarmSoundButton); 124 QToolTip::remove(mAlarmSoundButton);
125 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 125 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
126 mAlarmProgramButton->setOn(true); 126 mAlarmProgramButton->setOn(true);
127 mAlarmSoundButton->setOn(false); 127 mAlarmSoundButton->setOn(false);
128 } else { 128 } else {
129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
130 i18n("*.wav|Wav Files"), 0)); 130 i18n("*.wav|Wav Files"), 0));
131 if (!fileName.isEmpty()) { 131 if (!fileName.isEmpty()) {
132 mAlarmSound = fileName; 132 mAlarmSound = fileName;
133 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 133 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
134 QToolTip::remove(mAlarmSoundButton); 134 QToolTip::remove(mAlarmSoundButton);
135 QString dispStr = i18n("Playing '%1'").arg(fileName); 135 QString dispStr = i18n("Playing '%1'").arg(fileName);
136 QToolTip::add(mAlarmSoundButton, dispStr); 136 QToolTip::add(mAlarmSoundButton, dispStr);
137 mAlarmProgramButton->setOn(false); 137 mAlarmProgramButton->setOn(false);
138 mAlarmSoundButton->setOn(true); 138 mAlarmSoundButton->setOn(true);
139 } else { 139 } else {
140 mAlarmProgramButton->setOn(true); 140 mAlarmProgramButton->setOn(true);
141 mAlarmSoundButton->setOn(false); 141 mAlarmSoundButton->setOn(false);
142 142
143 } 143 }
144 } 144 }
145}; 145};
146 146
147void pickAlarmProgram() 147void pickAlarmProgram()
148{ 148{
149 if (!mAlarmProgramButton->isOn()) { 149 if (!mAlarmProgramButton->isOn()) {
150 //mAlarmProgram = ""; 150 //mAlarmProgram = "";
151 QToolTip::remove(mAlarmProgramButton); 151 QToolTip::remove(mAlarmProgramButton);
152 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 152 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
153 mAlarmProgramButton->setOn(false); 153 mAlarmProgramButton->setOn(false);
154 mAlarmSoundButton->setOn(true); 154 mAlarmSoundButton->setOn(true);
155 } else { 155 } else {
156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
157 if (!fileName.isEmpty()) { 157 if (!fileName.isEmpty()) {
158 mAlarmProgram = fileName; 158 mAlarmProgram = fileName;
159 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 159 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
160 QToolTip::remove(mAlarmProgramButton); 160 QToolTip::remove(mAlarmProgramButton);
161 QString dispStr = i18n("Running '%1'").arg(fileName); 161 QString dispStr = i18n("Running '%1'").arg(fileName);
162 QToolTip::add(mAlarmProgramButton, dispStr); 162 QToolTip::add(mAlarmProgramButton, dispStr);
163 mAlarmSoundButton->setOn(false); 163 mAlarmSoundButton->setOn(false);
164 mAlarmProgramButton->setOn(true); 164 mAlarmProgramButton->setOn(true);
165 } else { 165 } else {
166 mAlarmProgramButton->setOn(false); 166 mAlarmProgramButton->setOn(false);
167 mAlarmSoundButton->setOn(true); 167 mAlarmSoundButton->setOn(true);
168 } 168 }
169 } 169 }
170}; 170};
171 171
172}; 172};
173 173
174 174
175 175
176 176
177 177
178 178
179 179
180typedef CustomListViewItem<Incidence *> KOListViewItem; 180typedef CustomListViewItem<Incidence *> KOListViewItem;
181 181
182/** 182/**
183 This class provides the initialisation of a KOListViewItem for calendar 183 This class provides the initialisation of a KOListViewItem for calendar
184 components using the Incidence::Visitor. 184 components using the Incidence::Visitor.
185*/ 185*/
186class ListItemVisitor : public Incidence::Visitor 186class ListItemVisitor : public Incidence::Visitor
187{ 187{
188 public: 188 public:
189 ListItemVisitor(KOListViewItem *, QDate d); 189 ListItemVisitor(KOListViewItem *, QDate d);
190 ~ListItemVisitor(); 190 ~ListItemVisitor();
191 191
192 bool visit(Event *); 192 bool visit(Event *);
193 bool visit(Todo *); 193 bool visit(Todo *);
194 bool visit(Journal *); 194 bool visit(Journal *);
195 195
196 private: 196 private:
197 KOListViewItem *mItem; 197 KOListViewItem *mItem;
198 QDate mDate; 198 QDate mDate;
199}; 199};
200 200
201/** 201/**
202 This class provides a multi-column list view of events. It can 202 This class provides a multi-column list view of events. It can
203 display events from one particular day or several days, it doesn't 203 display events from one particular day or several days, it doesn't
204 matter. To use a view that only handles one day at a time, use 204 matter. To use a view that only handles one day at a time, use
205 KODayListView. 205 KODayListView.
206 206
207 @short multi-column list view of various events. 207 @short multi-column list view of various events.
208 @author Preston Brown <pbrown@kde.org> 208 @author Preston Brown <pbrown@kde.org>
209 @see KOBaseView, KODayListView 209 @see KOBaseView, KODayListView
210*/ 210*/
211class KOListView; 211class KOListView;
212 212
213class KOListViewListView : public KListView 213class KOListViewListView : public KListView
214{ 214{
215 Q_OBJECT 215 Q_OBJECT
216 public: 216 public:
217 KOListViewListView(KOListView * lv ); 217 KOListViewListView(KOListView * lv );
218 bool hasMultiSelection(QListViewItem*); 218 bool hasMultiSelection(QListViewItem*);
219 void printList();
219 signals: 220 signals:
220 void newEvent(); 221 void newEvent();
221 void showIncidence( Incidence* ); 222 void showIncidence( Incidence* );
222 public slots: 223 public slots:
223 void popupMenu(); 224 void popupMenu();
224 private: 225 private:
225 QPoint mEventPos; 226 QPoint mEventPos;
226 QPoint mEventGlobalPos; 227 QPoint mEventGlobalPos;
227 QTimer* mPopupTimer; 228 QTimer* mPopupTimer;
228 int mYMousePos; 229 int mYMousePos;
229 void keyPressEvent ( QKeyEvent * ) ; 230 void keyPressEvent ( QKeyEvent * ) ;
230 void contentsMouseDoubleClickEvent(QMouseEvent *e); 231 void contentsMouseDoubleClickEvent(QMouseEvent *e);
231 void contentsMousePressEvent(QMouseEvent *e); 232 void contentsMousePressEvent(QMouseEvent *e);
232 void contentsMouseReleaseEvent(QMouseEvent *e); 233 void contentsMouseReleaseEvent(QMouseEvent *e);
233 void contentsMouseMoveEvent(QMouseEvent *e); 234 void contentsMouseMoveEvent(QMouseEvent *e);
234 bool mMouseDown; 235 bool mMouseDown;
235}; 236};
236 237
237class KOListView : public KOEventView 238class KOListView : public KOEventView
238{ 239{
239 Q_OBJECT 240 Q_OBJECT
240 public: 241 public:
241 KOListView(Calendar *calendar, QWidget *parent = 0, 242 KOListView(Calendar *calendar, QWidget *parent = 0,
242 const char *name = 0); 243 const char *name = 0);
243 ~KOListView(); 244 ~KOListView();
244 245
245 virtual int maxDatesHint(); 246 virtual int maxDatesHint();
246 virtual int currentDateCount(); 247 virtual int currentDateCount();
247 virtual QPtrList<Incidence> selectedIncidences(); 248 virtual QPtrList<Incidence> selectedIncidences();
248 virtual DateList selectedDates(); 249 virtual DateList selectedDates();
249 250
250 void showDates(bool show); 251 void showDates(bool show);
251 Incidence* currentItem(); 252 Incidence* currentItem();
252 void addTodos(QPtrList<Todo> eventList); 253 void addTodos(QPtrList<Todo> eventList);
253 void addJournals(QPtrList<Journal> eventList); 254 void addJournals(QPtrList<Journal> eventList);
254 virtual void printPreview(CalPrinter *calPrinter, 255 virtual void printPreview(CalPrinter *calPrinter,
255 const QDate &, const QDate &); 256 const QDate &, const QDate &);
256 257
257 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 258 void readSettings(KConfig *config, QString setting = "KOListView Layout");
258 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 259 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
259 void updateList(); 260 void updateList();
260 void clearList(); 261 void clearList();
261 void setStartDate(const QDate &start); 262 void setStartDate(const QDate &start);
262 int count(); 263 int count();
263 QString getWhatsThisText(QPoint p); 264 QString getWhatsThisText(QPoint p);
264 signals: 265 signals:
265 void signalNewEvent(); 266 void signalNewEvent();
266 void beamIncidenceList(QPtrList<Incidence>); 267 void beamIncidenceList(QPtrList<Incidence>);
267 268
268 public slots: 269 public slots:
270 void hideAll();
271 void printList();
269 void resetFocus(); 272 void resetFocus();
270 virtual void updateView(); 273 virtual void updateView();
271 virtual void showDates(const QDate &start, const QDate &end); 274 virtual void showDates(const QDate &start, const QDate &end);
272 virtual void showEvents(QPtrList<Event> eventList); 275 virtual void showEvents(QPtrList<Event> eventList);
273 void clearSelection(); 276 void clearSelection();
274 void allSelection(); 277 void allSelection();
275 278
276 void clear(); 279 void clear();
277 void beamDone( Ir *ir ); 280 void beamDone( Ir *ir );
278 void showDates(); 281 void showDates();
279 void hideDates(); 282 void hideDates();
280 void deleteAll(); 283 void deleteAll();
281 void saveToFile(); 284 void saveToFile();
282 void saveToFileVCS(); 285 void saveToFileVCS();
283 void saveDescriptionToFile(); 286 void saveDescriptionToFile();
284 void beamSelected(); 287 void beamSelected();
285 void updateConfig(); 288 void updateConfig();
286 void addCat(); 289 void addCat();
287 void setCat(); 290 void setCat();
288 void setAlarm(); 291 void setAlarm();
289 void setCategories( bool removeOld ); 292 void setCategories( bool removeOld );
290 void changeEventDisplay(Event *, int); 293 void changeEventDisplay(Event *, int);
291 294
292 void defaultItemAction(QListViewItem *item); 295 void defaultItemAction(QListViewItem *item);
293 void popupMenu(QListViewItem *item,const QPoint &,int); 296 void popupMenu(QListViewItem *item,const QPoint &,int);
294 297
295 protected slots: 298 protected slots:
296 void processSelectionChange(QListViewItem *); 299 void processSelectionChange(QListViewItem *);
297 300
298 protected: 301 protected:
299 void writeToFile( bool iCal ); 302 void writeToFile( bool iCal );
300 void addEvents(QPtrList<Event> eventList); 303 void addEvents(QPtrList<Event> eventList);
301 void addIncidence(Incidence *); 304 void addIncidence(Incidence *);
302 KOListViewItem *getItemForEvent(Event *event); 305 KOListViewItem *getItemForEvent(Event *event);
303 306
304 private: 307 private:
305 KOListViewWhatsThis *mKOListViewWhatsThis; 308 KOListViewWhatsThis *mKOListViewWhatsThis;
306 KOListViewListView *mListView; 309 KOListViewListView *mListView;
307 KOEventPopupMenu *mPopupMenu; 310 KOEventPopupMenu *mPopupMenu;
308 KOListViewItem *mActiveItem; 311 KOListViewItem *mActiveItem;
309 QDict<Incidence> mUidDict; 312 QDict<Incidence> mUidDict;
310 QDate mStartDate; 313 QDate mStartDate;
311 void keyPressEvent ( QKeyEvent * ) ; 314 void keyPressEvent ( QKeyEvent * ) ;
312}; 315};
313 316
314#endif 317#endif