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