summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-06-29 12:52:18 (UTC)
committer zautrix <zautrix>2004-06-29 12:52:18 (UTC)
commit275e70532bb26ed78ce2d3bebf980dd745368ec2 (patch) (unidiff)
treec9252a9ec50856c86cc1165007f841c50d5cdc51
parent7b2b9f2b05809b9577837551ad864d88b9b355ef (diff)
downloadkdepimpi-275e70532bb26ed78ce2d3bebf980dd745368ec2.zip
kdepimpi-275e70532bb26ed78ce2d3bebf980dd745368ec2.tar.gz
kdepimpi-275e70532bb26ed78ce2d3bebf980dd745368ec2.tar.bz2
Removed the include moc on KO dir
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kalarmd/alarmdialog.cpp1
-rw-r--r--korganizer/calendarview.cpp4
-rw-r--r--korganizer/datenavigator.cpp2
-rw-r--r--korganizer/filtereditdialog.cpp2
-rw-r--r--korganizer/incomingdialog.cpp2
-rw-r--r--korganizer/incomingdialog_base.cpp2
-rw-r--r--korganizer/journalentry.cpp2
-rw-r--r--korganizer/kdatenavigator.cpp2
-rw-r--r--korganizer/koagenda.cpp1
-rw-r--r--korganizer/koagendaitem.cpp2
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kocounterdialog.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp1
-rw-r--r--korganizer/kodialogmanager.cpp1
-rw-r--r--korganizer/koeditordetails.cpp1
-rw-r--r--korganizer/koeditorgeneral.cpp1
-rw-r--r--korganizer/koeditorgeneralevent.cpp1
-rw-r--r--korganizer/koeditorgeneraltodo.cpp1
-rw-r--r--korganizer/koeditorrecurrence.cpp1
-rw-r--r--korganizer/koeventeditor.cpp1
-rw-r--r--korganizer/koeventpopupmenu.cpp1
-rw-r--r--korganizer/koeventview.cpp3
-rw-r--r--korganizer/koeventviewer.cpp1
-rw-r--r--korganizer/koeventviewerdialog.cpp1
-rw-r--r--korganizer/kofilterview.cpp1
-rw-r--r--korganizer/koincidenceeditor.cpp1
-rw-r--r--korganizer/kojournalview.cpp1
-rw-r--r--korganizer/kolistview.cpp1
-rw-r--r--korganizer/komonthview.cpp1
-rw-r--r--korganizer/koprefsdialog.cpp1
-rw-r--r--korganizer/kosyncprefsdialog.cpp1
-rw-r--r--korganizer/kotimespanview.cpp1
-rw-r--r--korganizer/kotodoeditor.cpp1
-rw-r--r--korganizer/kotodoview.cpp1
-rw-r--r--korganizer/koviewmanager.cpp1
-rw-r--r--korganizer/kowhatsnextview.cpp1
-rw-r--r--korganizer/ktimeedit.cpp1
-rw-r--r--korganizer/lineview.cpp1
-rw-r--r--korganizer/navigatorbar.cpp1
-rw-r--r--korganizer/outgoingdialog.cpp1
-rw-r--r--korganizer/outgoingdialog_base.cpp2
-rw-r--r--korganizer/publishdialog.cpp2
-rw-r--r--korganizer/publishdialog_base.cpp2
-rw-r--r--korganizer/savetemplatedialog.cpp1
-rw-r--r--korganizer/searchdialog.cpp1
-rw-r--r--korganizer/statusdialog.cpp1
-rw-r--r--korganizer/timeline.cpp1
-rw-r--r--korganizer/timespanview.cpp1
-rw-r--r--libkcal/calendar.cpp2
49 files changed, 12 insertions, 55 deletions
diff --git a/kalarmd/alarmdialog.cpp b/kalarmd/alarmdialog.cpp
index b82724f..521781e 100644
--- a/kalarmd/alarmdialog.cpp
+++ b/kalarmd/alarmdialog.cpp
@@ -1,259 +1,258 @@
1/* 1/*
2 This file is part of the KDE alarm daemon. 2 This file is part of the KDE alarm daemon.
3 Copyright (c) 2000 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000 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// $Id$ 24// $Id$
25 25
26#include <qhbox.h> 26#include <qhbox.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qapp.h> 28#include <qapp.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qsound.h> 33#include <qsound.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#include <qspinbox.h> 35#include <qspinbox.h>
36#include <stdlib.h> 36#include <stdlib.h>
37#ifndef _WIN32_ 37#ifndef _WIN32_
38#include <unistd.h> 38#include <unistd.h>
39#include <sys/ioctl.h> 39#include <sys/ioctl.h>
40#endif 40#endif
41#include <stdio.h> 41#include <stdio.h>
42#include <fcntl.h> 42#include <fcntl.h>
43 43
44#ifndef DESKTOP_VERSION 44#ifndef DESKTOP_VERSION
45#include <qtopia/alarmserver.h> 45#include <qtopia/alarmserver.h>
46#include <qpe/resource.h> 46#include <qpe/resource.h>
47#include <qtopia/sound.h> 47#include <qtopia/sound.h>
48#endif 48#endif
49 49
50#include "alarmdialog.h" 50#include "alarmdialog.h"
51#include "alarmdialog.moc"
52 51
53 52
54AlarmDialog::AlarmDialog(QWidget *parent,const char *name) 53AlarmDialog::AlarmDialog(QWidget *parent,const char *name)
55 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop ) 54 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop )
56{ 55{
57 setCaption( "KO/Pi Alarm!" ); 56 setCaption( "KO/Pi Alarm!" );
58 QVBoxLayout* layout = new QVBoxLayout( this); 57 QVBoxLayout* layout = new QVBoxLayout( this);
59 QLabel* l = new QLabel("The following event triggered alarm:",this); 58 QLabel* l = new QLabel("The following event triggered alarm:",this);
60 layout->addWidget ( l ); 59 layout->addWidget ( l );
61 l->setAlignment( AlignCenter); 60 l->setAlignment( AlignCenter);
62 mMessage = new QLabel ( " ", this ); 61 mMessage = new QLabel ( " ", this );
63 int fs = 18; 62 int fs = 18;
64 int fs2 = 12; 63 int fs2 = 12;
65 if ( QApplication::desktop()->width() < 480 ) { 64 if ( QApplication::desktop()->width() < 480 ) {
66 setMaximumSize(220, 260); 65 setMaximumSize(220, 260);
67 fs2 = 10; 66 fs2 = 10;
68 } 67 }
69 else { 68 else {
70 setMaximumSize(440, 440); 69 setMaximumSize(440, 440);
71 } 70 }
72 layout->setSpacing( 3 ); 71 layout->setSpacing( 3 );
73 layout->setMargin( 3 ); 72 layout->setMargin( 3 );
74 73
75 l->setFont( QFont("helvetica",fs2, QFont::Bold) ); 74 l->setFont( QFont("helvetica",fs2, QFont::Bold) );
76 mMessage->setFont( QFont("helvetica",fs, QFont::Bold) ); 75 mMessage->setFont( QFont("helvetica",fs, QFont::Bold) );
77 mMessage->setAlignment( AlignCenter); 76 mMessage->setAlignment( AlignCenter);
78 l = new QLabel("Missed Alarms:",this); 77 l = new QLabel("Missed Alarms:",this);
79 l->setAlignment( AlignCenter); 78 l->setAlignment( AlignCenter);
80 layout->addWidget ( mMessage ); 79 layout->addWidget ( mMessage );
81 layout->addWidget ( l ); 80 layout->addWidget ( l );
82 mMissedAlarms= new QLabel ( "", this ); 81 mMissedAlarms= new QLabel ( "", this );
83 mMissedAlarms->setAlignment( AlignCenter); 82 mMissedAlarms->setAlignment( AlignCenter);
84 83
85 playSoundTimer = new QTimer( this ); 84 playSoundTimer = new QTimer( this );
86 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) ); 85 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) );
87 86
88 playSoundTimer->stop(); 87 playSoundTimer->stop();
89 88
90 layout->addWidget ( mMissedAlarms ); 89 layout->addWidget ( mMissedAlarms );
91 QHBox *suspendBox = new QHBox( this ); 90 QHBox *suspendBox = new QHBox( this );
92 suspendBox->setSpacing(3); 91 suspendBox->setSpacing(3);
93 layout->addWidget ( suspendBox ); 92 layout->addWidget ( suspendBox );
94 (void)new QLabel("Suspend duration (minutes):",suspendBox); 93 (void)new QLabel("Suspend duration (minutes):",suspendBox);
95 mSuspendSpin = new QSpinBox(1,1440,1,suspendBox); 94 mSuspendSpin = new QSpinBox(1,1440,1,suspendBox);
96 mSuspendSpin->setValue(7); // default suspend duration 95 mSuspendSpin->setValue(7); // default suspend duration
97 QHBox * bbox = new QHBox ( this ); 96 QHBox * bbox = new QHBox ( this );
98 layout->addWidget ( bbox ); 97 layout->addWidget ( bbox );
99 bbox->layout()->setSpacing( 5 ); 98 bbox->layout()->setSpacing( 5 );
100 QPushButton* suspend = new QPushButton( "Suspend", bbox); 99 QPushButton* suspend = new QPushButton( "Suspend", bbox);
101 QPushButton* silen = new QPushButton( " Stop sound ", bbox); 100 QPushButton* silen = new QPushButton( " Stop sound ", bbox);
102 QPushButton* okbut = new QPushButton( "Ok", bbox); 101 QPushButton* okbut = new QPushButton( "Ok", bbox);
103 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) ); 102 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) );
104 connect (suspend , SIGNAL( clicked() ), this, SLOT (slotSuspend() ) ); 103 connect (suspend , SIGNAL( clicked() ), this, SLOT (slotSuspend() ) );
105 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) ); 104 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) );
106#ifndef _WIN32_ 105#ifndef _WIN32_
107 if ( QFile::exists ( "/dev/sharp_led" ) ) 106 if ( QFile::exists ( "/dev/sharp_led" ) )
108 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); 107 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK );
109 else 108 else
110#endif 109#endif
111 fd_led = 0; 110 fd_led = 0;
112 statusLED.which = SHARP_LED_SALARM; 111 statusLED.which = SHARP_LED_SALARM;
113 mSilent = false; 112 mSilent = false;
114 mSuspendCounter = 0; 113 mSuspendCounter = 0;
115 setServerNotification( true ); 114 setServerNotification( true );
116} 115}
117void AlarmDialog::reject () 116void AlarmDialog::reject ()
118{ 117{
119 QTimer::singleShot ( 3000, this, SLOT (suspend()) ); 118 QTimer::singleShot ( 3000, this, SLOT (suspend()) );
120 slotSuspend(); 119 slotSuspend();
121} 120}
122AlarmDialog::~AlarmDialog() 121AlarmDialog::~AlarmDialog()
123{ 122{
124} 123}
125void AlarmDialog::silent () 124void AlarmDialog::silent ()
126{ 125{
127 mSilent = true; 126 mSilent = true;
128} 127}
129void AlarmDialog::accept() 128void AlarmDialog::accept()
130{ 129{
131 slotOk(); 130 slotOk();
132} 131}
133 132
134void AlarmDialog::suspend() 133void AlarmDialog::suspend()
135{ 134{
136#ifdef DESKTOP_VERSION 135#ifdef DESKTOP_VERSION
137 136
138#else 137#else
139 Sound::soundAlarm (); 138 Sound::soundAlarm ();
140#endif 139#endif
141} 140}
142void AlarmDialog::slotOk() 141void AlarmDialog::slotOk()
143{ 142{
144 mStopAlarm = true; 143 mStopAlarm = true;
145 mMissedAlarms->setText(""); 144 mMissedAlarms->setText("");
146 mMessage->setText(""); 145 mMessage->setText("");
147#ifndef _WIN32_ 146#ifndef _WIN32_
148 if ( fd_led > 0 ) { 147 if ( fd_led > 0 ) {
149 statusLED.status = LED_SALARM_OFF ; 148 statusLED.status = LED_SALARM_OFF ;
150 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 149 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
151 } 150 }
152#endif 151#endif
153 QDialog::accept(); 152 QDialog::accept();
154} 153}
155 154
156void AlarmDialog::slotSuspend() 155void AlarmDialog::slotSuspend()
157{ 156{
158 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value()); 157 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value());
159 mStopAlarm = true; 158 mStopAlarm = true;
160 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 ); 159 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 );
161 QString mess = "suspend_alarm" +mFileName+"+++" ; 160 QString mess = "suspend_alarm" +mFileName+"+++" ;
162 if ( mMessage->text().left( 10 ) !="Suspended:" ) 161 if ( mMessage->text().left( 10 ) !="Suspended:" )
163 mess += "Suspended:\n"; 162 mess += "Suspended:\n";
164 mess +=mMessage->text(); 163 mess +=mMessage->text();
165#ifndef DESKTOP_VERSION 164#ifndef DESKTOP_VERSION
166 if ( mServerNotification ) 165 if ( mServerNotification )
167 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1()); 166 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1());
168#endif 167#endif
169 emit addAlarm( nextA , mess ); 168 emit addAlarm( nextA , mess );
170 slotOk(); 169 slotOk();
171} 170}
172 171
173void AlarmDialog::setServerNotification( bool b ) 172void AlarmDialog::setServerNotification( bool b )
174{ 173{
175 mServerNotification = b; 174 mServerNotification = b;
176} 175}
177int AlarmDialog::getSuspendTime( ) 176int AlarmDialog::getSuspendTime( )
178{ 177{
179 return mSuspendSpin->value(); 178 return mSuspendSpin->value();
180 179
181} 180}
182void AlarmDialog::setSuspendTime( int val ) 181void AlarmDialog::setSuspendTime( int val )
183{ 182{
184 mSuspendSpin->setValue( val ); 183 mSuspendSpin->setValue( val );
185} 184}
186bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes) 185bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes)
187{ 186{
188 if ( mess.left( 9) != "Suspended" ) 187 if ( mess.left( 9) != "Suspended" )
189 mSuspendCounter = suspendtimes; 188 mSuspendCounter = suspendtimes;
190 mPauseCount = pause; 189 mPauseCount = pause;
191 mFileName = fn; 190 mFileName = fn;
192 mPlayWav = playwav; 191 mPlayWav = playwav;
193 if ( !QFile::exists( fn ) ) 192 if ( !QFile::exists( fn ) )
194 mFileName = ""; 193 mFileName = "";
195 alarmCounter = 0 ; 194 alarmCounter = 0 ;
196 maxAlarmReplay = replay ; 195 maxAlarmReplay = replay ;
197 mStopAlarm = false; 196 mStopAlarm = false;
198 mSilent = false; 197 mSilent = false;
199 if ( mMissedAlarms->text() == "" ) 198 if ( mMissedAlarms->text() == "" )
200 mMissedAlarms->setText( mMessage->text()); 199 mMissedAlarms->setText( mMessage->text());
201 else 200 else
202 mMissedAlarms->setText( mMessage->text()+ "\n" + mMissedAlarms->text() ); 201 mMissedAlarms->setText( mMessage->text()+ "\n" + mMissedAlarms->text() );
203 if ( mMissedAlarms->text().length() > 180 ) 202 if ( mMissedAlarms->text().length() > 180 )
204 mMissedAlarms->setText(mMissedAlarms->text().left ( 180 )); 203 mMissedAlarms->setText(mMissedAlarms->text().left ( 180 ));
205 mMessage->setText(mess); 204 mMessage->setText(mess);
206 int w =sizeHint().width() ; 205 int w =sizeHint().width() ;
207 int h = sizeHint().height() ; 206 int h = sizeHint().height() ;
208 int dw = QApplication::desktop()->width(); 207 int dw = QApplication::desktop()->width();
209 int dh = QApplication::desktop()->height(); 208 int dh = QApplication::desktop()->height();
210 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 209 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
211 show(); 210 show();
212 raise(); 211 raise();
213 qApp->processEvents(); 212 qApp->processEvents();
214 repaint(); 213 repaint();
215 qApp->processEvents(); 214 qApp->processEvents();
216 215
217#ifndef _WIN32_ 216#ifndef _WIN32_
218 if ( fd_led > 0 ) { 217 if ( fd_led > 0 ) {
219 statusLED.status = LED_SALARM_ON ; 218 statusLED.status = LED_SALARM_ON ;
220 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 219 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
221 } 220 }
222#endif 221#endif
223 playSoundTimer->start( 1000, true ); 222 playSoundTimer->start( 1000, true );
224 return true; 223 return true;
225 224
226} 225}
227 226
228 227
229void AlarmDialog::playSound () 228void AlarmDialog::playSound ()
230{ 229{
231 if (mStopAlarm ) 230 if (mStopAlarm )
232 return; 231 return;
233 showNormal(); 232 showNormal();
234 setActiveWindow(); 233 setActiveWindow();
235 setFocus(); 234 setFocus();
236 raise(); 235 raise();
237 236
238 qApp->processEvents(); 237 qApp->processEvents();
239 if ( alarmCounter < maxAlarmReplay && ! mSilent) { 238 if ( alarmCounter < maxAlarmReplay && ! mSilent) {
240 ++alarmCounter; 239 ++alarmCounter;
241 if ( !mPlayWav || mFileName.length() < 2 ) { 240 if ( !mPlayWav || mFileName.length() < 2 ) {
242 241
243#ifndef DESKTOP_VERSION 242#ifndef DESKTOP_VERSION
244 Sound::soundAlarm (); 243 Sound::soundAlarm ();
245#endif 244#endif
246 } else { 245 } else {
247 QSound::play ( mFileName ); 246 QSound::play ( mFileName );
248 //qDebug("BEEP!"); 247 //qDebug("BEEP!");
249 } 248 }
250 } else { 249 } else {
251 if ( ! mSilent && mSuspendCounter > 0 ) { 250 if ( ! mSilent && mSuspendCounter > 0 ) {
252 --mSuspendCounter; 251 --mSuspendCounter;
253 reject (); 252 reject ();
254 hide(); 253 hide();
255 return; 254 return;
256 } 255 }
257 } 256 }
258 playSoundTimer->start( mPauseCount * 1000, true ); 257 playSoundTimer->start( mPauseCount * 1000, true );
259} 258}
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 7ac5b11..0956c78 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -3090,387 +3090,387 @@ void CalendarView::processIncidenceSelection( Incidence *incidence )
3090 } else { 3090 } else {
3091 emit groupEventsSelected(false); 3091 emit groupEventsSelected(false);
3092 } 3092 }
3093 return; 3093 return;
3094 } else { 3094 } else {
3095 emit todoSelected( false ); 3095 emit todoSelected( false );
3096 emit organizerEventsSelected(false); 3096 emit organizerEventsSelected(false);
3097 emit groupEventsSelected(false); 3097 emit groupEventsSelected(false);
3098 } 3098 }
3099 return; 3099 return;
3100 } 3100 }
3101 3101
3102 /* if ( incidence && incidence->type() == "Todo" ) { 3102 /* if ( incidence && incidence->type() == "Todo" ) {
3103 emit todoSelected( true ); 3103 emit todoSelected( true );
3104 } else { 3104 } else {
3105 emit todoSelected( false ); 3105 emit todoSelected( false );
3106 }*/ 3106 }*/
3107} 3107}
3108 3108
3109 3109
3110void CalendarView::checkClipboard() 3110void CalendarView::checkClipboard()
3111{ 3111{
3112#ifndef KORG_NODND 3112#ifndef KORG_NODND
3113 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3113 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3114 emit pasteEnabled(true); 3114 emit pasteEnabled(true);
3115 } else { 3115 } else {
3116 emit pasteEnabled(false); 3116 emit pasteEnabled(false);
3117 } 3117 }
3118#endif 3118#endif
3119} 3119}
3120 3120
3121void CalendarView::showDates(const DateList &selectedDates) 3121void CalendarView::showDates(const DateList &selectedDates)
3122{ 3122{
3123 // kdDebug() << "CalendarView::selectDates()" << endl; 3123 // kdDebug() << "CalendarView::selectDates()" << endl;
3124 3124
3125 if ( mViewManager->currentView() ) { 3125 if ( mViewManager->currentView() ) {
3126 updateView( selectedDates.first(), selectedDates.last() ); 3126 updateView( selectedDates.first(), selectedDates.last() );
3127 } else { 3127 } else {
3128 mViewManager->showAgendaView(); 3128 mViewManager->showAgendaView();
3129 } 3129 }
3130 3130
3131 QString selDates; 3131 QString selDates;
3132 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); 3132 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true);
3133 if (selectedDates.first() < selectedDates.last() ) 3133 if (selectedDates.first() < selectedDates.last() )
3134 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3134 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3135 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3135 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3136 3136
3137} 3137}
3138 3138
3139void CalendarView::editFilters() 3139void CalendarView::editFilters()
3140{ 3140{
3141 // kdDebug() << "CalendarView::editFilters()" << endl; 3141 // kdDebug() << "CalendarView::editFilters()" << endl;
3142 3142
3143 CalFilter *filter = mFilters.first(); 3143 CalFilter *filter = mFilters.first();
3144 while(filter) { 3144 while(filter) {
3145 kdDebug() << " Filter: " << filter->name() << endl; 3145 kdDebug() << " Filter: " << filter->name() << endl;
3146 filter = mFilters.next(); 3146 filter = mFilters.next();
3147 } 3147 }
3148 3148
3149 mDialogManager->showFilterEditDialog(&mFilters); 3149 mDialogManager->showFilterEditDialog(&mFilters);
3150} 3150}
3151void CalendarView::toggleFilter() 3151void CalendarView::toggleFilter()
3152{ 3152{
3153 showFilter(! mFilterView->isVisible()); 3153 showFilter(! mFilterView->isVisible());
3154} 3154}
3155 3155
3156void CalendarView::selectFilter( int fil ) 3156void CalendarView::selectFilter( int fil )
3157{ 3157{
3158 mFilterView->setSelectedFilter( fil ); 3158 mFilterView->setSelectedFilter( fil );
3159} 3159}
3160void CalendarView::showFilter(bool visible) 3160void CalendarView::showFilter(bool visible)
3161{ 3161{
3162 if (visible) mFilterView->show(); 3162 if (visible) mFilterView->show();
3163 else mFilterView->hide(); 3163 else mFilterView->hide();
3164} 3164}
3165void CalendarView::toggleFilerEnabled( ) 3165void CalendarView::toggleFilerEnabled( )
3166{ 3166{
3167 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3167 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3168 if ( !mFilterView->filtersEnabled() ) 3168 if ( !mFilterView->filtersEnabled() )
3169 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3169 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3170 3170
3171} 3171}
3172void CalendarView::updateFilter() 3172void CalendarView::updateFilter()
3173{ 3173{
3174 CalFilter *filter = mFilterView->selectedFilter(); 3174 CalFilter *filter = mFilterView->selectedFilter();
3175 if (filter) { 3175 if (filter) {
3176 if (mFilterView->filtersEnabled()) { 3176 if (mFilterView->filtersEnabled()) {
3177 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); 3177 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() );
3178 filter->setEnabled(true); 3178 filter->setEnabled(true);
3179 } 3179 }
3180 else filter->setEnabled(false); 3180 else filter->setEnabled(false);
3181 mCalendar->setFilter(filter); 3181 mCalendar->setFilter(filter);
3182 updateView(); 3182 updateView();
3183 } 3183 }
3184} 3184}
3185 3185
3186void CalendarView::filterEdited() 3186void CalendarView::filterEdited()
3187{ 3187{
3188 mFilterView->updateFilters(); 3188 mFilterView->updateFilters();
3189 updateFilter(); 3189 updateFilter();
3190 writeSettings(); 3190 writeSettings();
3191} 3191}
3192 3192
3193 3193
3194void CalendarView::takeOverEvent() 3194void CalendarView::takeOverEvent()
3195{ 3195{
3196 Incidence *incidence = currentSelection(); 3196 Incidence *incidence = currentSelection();
3197 3197
3198 if (!incidence) return; 3198 if (!incidence) return;
3199 3199
3200 incidence->setOrganizer(KOPrefs::instance()->email()); 3200 incidence->setOrganizer(KOPrefs::instance()->email());
3201 incidence->recreate(); 3201 incidence->recreate();
3202 incidence->setReadOnly(false); 3202 incidence->setReadOnly(false);
3203 3203
3204 updateView(); 3204 updateView();
3205} 3205}
3206 3206
3207void CalendarView::takeOverCalendar() 3207void CalendarView::takeOverCalendar()
3208{ 3208{
3209 // TODO: Create Calendar::allIncidences() function and use it here 3209 // TODO: Create Calendar::allIncidences() function and use it here
3210 3210
3211 QPtrList<Event> events = mCalendar->events(); 3211 QPtrList<Event> events = mCalendar->events();
3212 for(uint i=0; i<events.count(); ++i) { 3212 for(uint i=0; i<events.count(); ++i) {
3213 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3213 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3214 events.at(i)->recreate(); 3214 events.at(i)->recreate();
3215 events.at(i)->setReadOnly(false); 3215 events.at(i)->setReadOnly(false);
3216 } 3216 }
3217 3217
3218 QPtrList<Todo> todos = mCalendar->todos(); 3218 QPtrList<Todo> todos = mCalendar->todos();
3219 for(uint i=0; i<todos.count(); ++i) { 3219 for(uint i=0; i<todos.count(); ++i) {
3220 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3220 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3221 todos.at(i)->recreate(); 3221 todos.at(i)->recreate();
3222 todos.at(i)->setReadOnly(false); 3222 todos.at(i)->setReadOnly(false);
3223 } 3223 }
3224 3224
3225 QPtrList<Journal> journals = mCalendar->journals(); 3225 QPtrList<Journal> journals = mCalendar->journals();
3226 for(uint i=0; i<journals.count(); ++i) { 3226 for(uint i=0; i<journals.count(); ++i) {
3227 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3227 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3228 journals.at(i)->recreate(); 3228 journals.at(i)->recreate();
3229 journals.at(i)->setReadOnly(false); 3229 journals.at(i)->setReadOnly(false);
3230 } 3230 }
3231 3231
3232 updateView(); 3232 updateView();
3233} 3233}
3234 3234
3235void CalendarView::showIntro() 3235void CalendarView::showIntro()
3236{ 3236{
3237 kdDebug() << "To be implemented." << endl; 3237 kdDebug() << "To be implemented." << endl;
3238} 3238}
3239 3239
3240QWidgetStack *CalendarView::viewStack() 3240QWidgetStack *CalendarView::viewStack()
3241{ 3241{
3242 return mRightFrame; 3242 return mRightFrame;
3243} 3243}
3244 3244
3245QWidget *CalendarView::leftFrame() 3245QWidget *CalendarView::leftFrame()
3246{ 3246{
3247 return mLeftFrame; 3247 return mLeftFrame;
3248} 3248}
3249 3249
3250DateNavigator *CalendarView::dateNavigator() 3250DateNavigator *CalendarView::dateNavigator()
3251{ 3251{
3252 return mNavigator; 3252 return mNavigator;
3253} 3253}
3254 3254
3255KDateNavigator* CalendarView::dateNavigatorWidget() 3255KDateNavigator* CalendarView::dateNavigatorWidget()
3256{ 3256{
3257 return mDateNavigator; 3257 return mDateNavigator;
3258} 3258}
3259void CalendarView::toggleDateNavigatorWidget() 3259void CalendarView::toggleDateNavigatorWidget()
3260{ 3260{
3261 if (mDateNavigator->isVisible()) 3261 if (mDateNavigator->isVisible())
3262 mDateNavigator->hide(); 3262 mDateNavigator->hide();
3263 else 3263 else
3264 mDateNavigator->show(); 3264 mDateNavigator->show();
3265} 3265}
3266void CalendarView::addView(KOrg::BaseView *view) 3266void CalendarView::addView(KOrg::BaseView *view)
3267{ 3267{
3268 mViewManager->addView(view); 3268 mViewManager->addView(view);
3269} 3269}
3270 3270
3271void CalendarView::showView(KOrg::BaseView *view) 3271void CalendarView::showView(KOrg::BaseView *view)
3272{ 3272{
3273 mViewManager->showView(view, mLeftFrame->isVisible()); 3273 mViewManager->showView(view, mLeftFrame->isVisible());
3274} 3274}
3275 3275
3276Incidence *CalendarView::currentSelection() 3276Incidence *CalendarView::currentSelection()
3277{ 3277{
3278 return mViewManager->currentSelection(); 3278 return mViewManager->currentSelection();
3279} 3279}
3280void CalendarView::toggleAllDaySize() 3280void CalendarView::toggleAllDaySize()
3281{ 3281{
3282 /* 3282 /*
3283 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3283 if ( KOPrefs::instance()->mAllDaySize > 47 )
3284 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3284 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3285 else 3285 else
3286 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3286 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3287 */ 3287 */
3288 viewManager()->agendaView()->toggleAllDay(); 3288 viewManager()->agendaView()->toggleAllDay();
3289} 3289}
3290void CalendarView::toggleExpand() 3290void CalendarView::toggleExpand()
3291{ 3291{
3292 // if ( mLeftFrame->isHidden() ) { 3292 // if ( mLeftFrame->isHidden() ) {
3293 // mLeftFrame->show(); 3293 // mLeftFrame->show();
3294 // emit calendarViewExpanded( false ); 3294 // emit calendarViewExpanded( false );
3295 // } else { 3295 // } else {
3296 // mLeftFrame->hide(); 3296 // mLeftFrame->hide();
3297 // emit calendarViewExpanded( true ); 3297 // emit calendarViewExpanded( true );
3298 // } 3298 // }
3299 3299
3300 globalFlagBlockAgenda = 1; 3300 globalFlagBlockAgenda = 1;
3301 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3301 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3302 globalFlagBlockAgenda = 5; 3302 globalFlagBlockAgenda = 5;
3303 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3303 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3304 //mViewManager->showView( 0, true ); 3304 //mViewManager->showView( 0, true );
3305} 3305}
3306 3306
3307void CalendarView::calendarModified( bool modified, Calendar * ) 3307void CalendarView::calendarModified( bool modified, Calendar * )
3308{ 3308{
3309 setModified( modified ); 3309 setModified( modified );
3310} 3310}
3311 3311
3312Todo *CalendarView::selectedTodo() 3312Todo *CalendarView::selectedTodo()
3313{ 3313{
3314 Incidence *incidence = currentSelection(); 3314 Incidence *incidence = currentSelection();
3315 if ( incidence && incidence->type() == "Todo" ) { 3315 if ( incidence && incidence->type() == "Todo" ) {
3316 return static_cast<Todo *>( incidence ); 3316 return static_cast<Todo *>( incidence );
3317 } 3317 }
3318 3318
3319 incidence = mTodoList->selectedIncidences().first(); 3319 incidence = mTodoList->selectedIncidences().first();
3320 if ( incidence && incidence->type() == "Todo" ) { 3320 if ( incidence && incidence->type() == "Todo" ) {
3321 return static_cast<Todo *>( incidence ); 3321 return static_cast<Todo *>( incidence );
3322 } 3322 }
3323 3323
3324 return 0; 3324 return 0;
3325} 3325}
3326 3326
3327void CalendarView::dialogClosing(Incidence *in) 3327void CalendarView::dialogClosing(Incidence *in)
3328{ 3328{
3329 // mDialogList.remove(in); 3329 // mDialogList.remove(in);
3330} 3330}
3331 3331
3332void CalendarView::showIncidence() 3332void CalendarView::showIncidence()
3333{ 3333{
3334 Incidence *incidence = currentSelection(); 3334 Incidence *incidence = currentSelection();
3335 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3335 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3336 if ( incidence ) { 3336 if ( incidence ) {
3337 ShowIncidenceVisitor v; 3337 ShowIncidenceVisitor v;
3338 v.act( incidence, this ); 3338 v.act( incidence, this );
3339 } 3339 }
3340} 3340}
3341void CalendarView::editIncidenceDescription() 3341void CalendarView::editIncidenceDescription()
3342{ 3342{
3343 mFlagEditDescription = true; 3343 mFlagEditDescription = true;
3344 editIncidence(); 3344 editIncidence();
3345 mFlagEditDescription = false; 3345 mFlagEditDescription = false;
3346} 3346}
3347void CalendarView::editIncidence() 3347void CalendarView::editIncidence()
3348{ 3348{
3349 // qDebug("editIncidence() "); 3349 // qDebug("editIncidence() ");
3350 Incidence *incidence = currentSelection(); 3350 Incidence *incidence = currentSelection();
3351 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3351 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3352 if ( incidence ) { 3352 if ( incidence ) {
3353 EditIncidenceVisitor v; 3353 EditIncidenceVisitor v;
3354 v.act( incidence, this ); 3354 v.act( incidence, this );
3355 } 3355 }
3356} 3356}
3357 3357
3358void CalendarView::deleteIncidence() 3358void CalendarView::deleteIncidence()
3359{ 3359{
3360 Incidence *incidence = currentSelection(); 3360 Incidence *incidence = currentSelection();
3361 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3361 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3362 if ( incidence ) { 3362 if ( incidence ) {
3363 deleteIncidence(incidence); 3363 deleteIncidence(incidence);
3364 } 3364 }
3365} 3365}
3366 3366
3367void CalendarView::showIncidence(Incidence *incidence) 3367void CalendarView::showIncidence(Incidence *incidence)
3368{ 3368{
3369 if ( incidence ) { 3369 if ( incidence ) {
3370 ShowIncidenceVisitor v; 3370 ShowIncidenceVisitor v;
3371 v.act( incidence, this ); 3371 v.act( incidence, this );
3372 } 3372 }
3373} 3373}
3374 3374
3375void CalendarView::editIncidence(Incidence *incidence) 3375void CalendarView::editIncidence(Incidence *incidence)
3376{ 3376{
3377 if ( incidence ) { 3377 if ( incidence ) {
3378 3378
3379 EditIncidenceVisitor v; 3379 EditIncidenceVisitor v;
3380 v.act( incidence, this ); 3380 v.act( incidence, this );
3381 3381
3382 } 3382 }
3383} 3383}
3384 3384
3385void CalendarView::deleteIncidence(Incidence *incidence) 3385void CalendarView::deleteIncidence(Incidence *incidence)
3386{ 3386{
3387 //qDebug(" CalendarView::deleteIncidence "); 3387 //qDebug(" CalendarView::deleteIncidence ");
3388 if ( incidence ) { 3388 if ( incidence ) {
3389 DeleteIncidenceVisitor v; 3389 DeleteIncidenceVisitor v;
3390 v.act( incidence, this ); 3390 v.act( incidence, this );
3391 } 3391 }
3392} 3392}
3393 3393
3394 3394
3395void CalendarView::lookForOutgoingMessages() 3395void CalendarView::lookForOutgoingMessages()
3396{ 3396{
3397 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3397 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3398 ogd->loadMessages(); 3398 ogd->loadMessages();
3399} 3399}
3400 3400
3401void CalendarView::lookForIncomingMessages() 3401void CalendarView::lookForIncomingMessages()
3402{ 3402{
3403 IncomingDialog *icd = mDialogManager->incomingDialog(); 3403 IncomingDialog *icd = mDialogManager->incomingDialog();
3404 icd->retrieve(); 3404 icd->retrieve();
3405} 3405}
3406 3406
3407bool CalendarView::removeCompletedSubTodos( Todo* t ) 3407bool CalendarView::removeCompletedSubTodos( Todo* t )
3408{ 3408{
3409 bool deleteTodo = true; 3409 bool deleteTodo = true;
3410 QPtrList<Incidence> subTodos; 3410 QPtrList<Incidence> subTodos;
3411 Incidence *aTodo; 3411 Incidence *aTodo;
3412 subTodos = t->relations(); 3412 subTodos = t->relations();
3413 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3413 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3414 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3414 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3415 deleteTodo = false; 3415 deleteTodo = false;
3416 } 3416 }
3417 if ( deleteTodo ) { 3417 if ( deleteTodo ) {
3418 if ( t->isCompleted() ) { 3418 if ( t->isCompleted() ) {
3419 checkZaurusId( t->zaurusId(), true ); 3419 checkZaurusId( t->zaurusId(), true );
3420 mCalendar->deleteTodo( t ); 3420 mCalendar->deleteTodo( t );
3421 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3421 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3422 } 3422 }
3423 else 3423 else
3424 deleteTodo = false; 3424 deleteTodo = false;
3425 } 3425 }
3426 return deleteTodo; 3426 return deleteTodo;
3427 3427
3428} 3428}
3429void CalendarView::purgeCompleted() 3429void CalendarView::purgeCompleted()
3430{ 3430{
3431 int result = KMessageBox::warningContinueCancel(this, 3431 int result = KMessageBox::warningContinueCancel(this,
3432 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3432 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3433 3433
3434 if (result == KMessageBox::Continue) { 3434 if (result == KMessageBox::Continue) {
3435 3435
3436 QPtrList<Todo> todoCal; 3436 QPtrList<Todo> todoCal;
3437 QPtrList<Todo> rootTodos; 3437 QPtrList<Todo> rootTodos;
3438 //QPtrList<Incidence> rel; 3438 //QPtrList<Incidence> rel;
3439 Todo *aTodo;//, *rTodo; 3439 Todo *aTodo;//, *rTodo;
3440 Incidence *rIncidence; 3440 Incidence *rIncidence;
3441 bool childDelete = false; 3441 bool childDelete = false;
3442 bool deletedOne = true; 3442 bool deletedOne = true;
3443 todoCal = calendar()->todos(); 3443 todoCal = calendar()->todos();
3444 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3444 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3445 if ( !aTodo->relatedTo() ) 3445 if ( !aTodo->relatedTo() )
3446 rootTodos.append( aTodo ); 3446 rootTodos.append( aTodo );
3447 } 3447 }
3448 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3448 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3449 removeCompletedSubTodos( aTodo ); 3449 removeCompletedSubTodos( aTodo );
3450 } 3450 }
3451 3451
3452 updateView(); 3452 updateView();
3453 } 3453 }
3454} 3454}
3455 3455
3456void CalendarView::slotCalendarChanged() 3456void CalendarView::slotCalendarChanged()
3457{ 3457{
3458 ; 3458 ;
3459} 3459}
3460 3460
3461NavigatorBar *CalendarView::navigatorBar() 3461NavigatorBar *CalendarView::navigatorBar()
3462{ 3462{
3463 return mNavigatorBar; 3463 return mNavigatorBar;
3464} 3464}
3465 3465
3466 3466
3467 3467
3468void CalendarView::keyPressEvent ( QKeyEvent *e) 3468void CalendarView::keyPressEvent ( QKeyEvent *e)
3469{ 3469{
3470 //qDebug(" alendarView::keyPressEvent "); 3470 //qDebug(" alendarView::keyPressEvent ");
3471 e->ignore(); 3471 e->ignore();
3472} 3472}
3473 3473
3474#include "calendarview.moc" 3474//#include "calendarview.moc"
3475 3475
3476#include "calendarviewbase.moc" 3476//#include "calendarviewbase.moc"
diff --git a/korganizer/datenavigator.cpp b/korganizer/datenavigator.cpp
index 8d35c42..e26e20b 100644
--- a/korganizer/datenavigator.cpp
+++ b/korganizer/datenavigator.cpp
@@ -1,287 +1,287 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 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#include "datenavigator.h" 24#include "datenavigator.h"
25 25
26#include "koglobals.h" 26#include "koglobals.h"
27 27
28#include <kcalendarsystem.h> 28#include <kcalendarsystem.h>
29 29
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kglobal.h> 31#include <kglobal.h>
32#include <klocale.h> 32#include <klocale.h>
33 33
34using namespace KCal; 34using namespace KCal;
35 35
36DateNavigator::DateNavigator( QObject *parent, const char *name , KOViewManager * v) 36DateNavigator::DateNavigator( QObject *parent, const char *name , KOViewManager * v)
37 : QObject( parent, name ) 37 : QObject( parent, name )
38{ 38{
39 mViewManager = v; 39 mViewManager = v;
40 mSelectedDates.append( QDate::currentDate() ); 40 mSelectedDates.append( QDate::currentDate() );
41} 41}
42 42
43DateNavigator::~DateNavigator() 43DateNavigator::~DateNavigator()
44{ 44{
45} 45}
46 46
47void DateNavigator::slotMonthSelect( int m ) 47void DateNavigator::slotMonthSelect( int m )
48{ 48{
49 QDate firstSelected = mSelectedDates.first(); 49 QDate firstSelected = mSelectedDates.first();
50 int weekDay = firstSelected.dayOfWeek(); 50 int weekDay = firstSelected.dayOfWeek();
51 int diff = m - firstSelected.month() ; 51 int diff = m - firstSelected.month() ;
52 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, diff ); 52 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, diff );
53 53
54 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 ) 54 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 )
55 selectMonthByDate( firstSelected ); 55 selectMonthByDate( firstSelected );
56 else 56 else
57 selectWeekByDay( weekDay, firstSelected ); 57 selectWeekByDay( weekDay, firstSelected );
58 58
59} 59}
60 60
61void DateNavigator::slotDaySelect( QDate d ) 61void DateNavigator::slotDaySelect( QDate d )
62{ 62{
63 QDate firstSelected = mSelectedDates.first(); 63 QDate firstSelected = mSelectedDates.first();
64 int weekDay = firstSelected.dayOfWeek(); 64 int weekDay = firstSelected.dayOfWeek();
65 //int diff = firstSelected.daysTo( d ) ; 65 //int diff = firstSelected.daysTo( d ) ;
66 firstSelected = firstSelected.addDays( firstSelected .daysTo( d ) ); 66 firstSelected = firstSelected.addDays( firstSelected .daysTo( d ) );
67 67
68 selectWeekByDay( weekDay, firstSelected ); 68 selectWeekByDay( weekDay, firstSelected );
69 69
70} 70}
71 71
72void DateNavigator::selectMonthByDate( const QDate & firstSelected ) 72void DateNavigator::selectMonthByDate( const QDate & firstSelected )
73{ 73{
74 74
75 int monthDay = firstSelected.day(); 75 int monthDay = firstSelected.day();
76 QDate date = firstSelected.addDays( 1-monthDay ); 76 QDate date = firstSelected.addDays( 1-monthDay );
77 selectDates( date , date.daysInMonth ()); 77 selectDates( date , date.daysInMonth ());
78 78
79} 79}
80void DateNavigator::selectMonth() 80void DateNavigator::selectMonth()
81{ 81{
82 82
83 QDate date =mSelectedDates.first(); 83 QDate date =mSelectedDates.first();
84 selectMonthByDate( date ); 84 selectMonthByDate( date );
85} 85}
86 86
87DateList DateNavigator::selectedDates() 87DateList DateNavigator::selectedDates()
88{ 88{
89 return mSelectedDates; 89 return mSelectedDates;
90} 90}
91 91
92int DateNavigator::datesCount() const 92int DateNavigator::datesCount() const
93{ 93{
94 return mSelectedDates.count(); 94 return mSelectedDates.count();
95} 95}
96 96
97void DateNavigator::selectDates( const DateList& dateList ) 97void DateNavigator::selectDates( const DateList& dateList )
98{ 98{
99 if (dateList.count() > 0) { 99 if (dateList.count() > 0) {
100 mSelectedDates = dateList; 100 mSelectedDates = dateList;
101 emitSelected(); 101 emitSelected();
102 } 102 }
103} 103}
104 104
105void DateNavigator::selectDate( const QDate &date ) 105void DateNavigator::selectDate( const QDate &date )
106{ 106{
107 QDate d = date; 107 QDate d = date;
108 108
109 if ( !d.isValid() ) { 109 if ( !d.isValid() ) {
110 d = QDate::currentDate(); 110 d = QDate::currentDate();
111 } 111 }
112 112
113 mSelectedDates.clear(); 113 mSelectedDates.clear();
114 mSelectedDates.append( d ); 114 mSelectedDates.append( d );
115 115
116 emitSelected(); 116 emitSelected();
117} 117}
118 118
119void DateNavigator::selectDates( int count ) 119void DateNavigator::selectDates( int count )
120{ 120{
121 121
122 QDate d = mSelectedDates.first(); 122 QDate d = mSelectedDates.first();
123 selectDates( d, count ); 123 selectDates( d, count );
124} 124}
125 125
126void DateNavigator::selectDates( const QDate &d, int count ) 126void DateNavigator::selectDates( const QDate &d, int count )
127{ 127{
128 DateList dates; 128 DateList dates;
129 129
130 int i; 130 int i;
131 for( i = 0; i < count; ++i ) { 131 for( i = 0; i < count; ++i ) {
132 dates.append( d.addDays( i ) ); 132 dates.append( d.addDays( i ) );
133 } 133 }
134 134
135 mSelectedDates = dates; 135 mSelectedDates = dates;
136 136
137 emitSelected(); 137 emitSelected();
138} 138}
139 139
140void DateNavigator::selectWeekByDay( int weekDay, const QDate &d ) 140void DateNavigator::selectWeekByDay( int weekDay, const QDate &d )
141{ 141{
142 // qDebug("selectWeekByDay( %d %s ", weekDay, d.toString().latin1()); 142 // qDebug("selectWeekByDay( %d %s ", weekDay, d.toString().latin1());
143 int dateCount = mSelectedDates.count(); 143 int dateCount = mSelectedDates.count();
144 bool weekStart = ( weekDay == KGlobal::locale()->weekStartDay() ); 144 bool weekStart = ( weekDay == KGlobal::locale()->weekStartDay() );
145 if ( weekDay == 1 && dateCount == 5 ) selectWorkWeek( d ); 145 if ( weekDay == 1 && dateCount == 5 ) selectWorkWeek( d );
146 else if ( weekStart && dateCount == 7 ) selectWeek( d ); 146 else if ( weekStart && dateCount == 7 ) selectWeek( d );
147 else selectDates( d, dateCount ); 147 else selectDates( d, dateCount );
148} 148}
149 149
150void DateNavigator::selectWeek() 150void DateNavigator::selectWeek()
151{ 151{
152 QDate d = mSelectedDates.first(); 152 QDate d = mSelectedDates.first();
153 selectWeek( d ); 153 selectWeek( d );
154} 154}
155void DateNavigator::selectWeek( int num ) 155void DateNavigator::selectWeek( int num )
156{ 156{
157 int year = mSelectedDates.first().year(); 157 int year = mSelectedDates.first().year();
158 if ( mSelectedDates.first().dayOfYear() > 300 && num < 10 ) 158 if ( mSelectedDates.first().dayOfYear() > 300 && num < 10 )
159 ++year; 159 ++year;
160 if ( mSelectedDates.first().dayOfYear() < 70 && num > 40 ) 160 if ( mSelectedDates.first().dayOfYear() < 70 && num > 40 )
161 --year; 161 --year;
162 QDate d = QDate ( year, 1,1); 162 QDate d = QDate ( year, 1,1);
163 while ( d.dayOfWeek() != 4 ) 163 while ( d.dayOfWeek() != 4 )
164 d = d.addDays( 1 ); 164 d = d.addDays( 1 );
165 selectWeek( d.addDays ( (num-1) *7 ) ); 165 selectWeek( d.addDays ( (num-1) *7 ) );
166} 166}
167void DateNavigator::selectWeek( const QDate &d ) 167void DateNavigator::selectWeek( const QDate &d )
168{ 168{
169 int dayOfWeek = KOGlobals::self()->calendarSystem()->dayOfWeek( d ); 169 int dayOfWeek = KOGlobals::self()->calendarSystem()->dayOfWeek( d );
170 170
171 int weekStart = KGlobal::locale()->weekStartDay(); 171 int weekStart = KGlobal::locale()->weekStartDay();
172 QDate firstDate = d.addDays( weekStart - dayOfWeek ); 172 QDate firstDate = d.addDays( weekStart - dayOfWeek );
173 173
174 if ( weekStart != 1 && dayOfWeek < weekStart ) { 174 if ( weekStart != 1 && dayOfWeek < weekStart ) {
175 firstDate = firstDate.addDays(-7 ); 175 firstDate = firstDate.addDays(-7 );
176 } 176 }
177 177
178 178
179 selectDates( firstDate, 7 ); 179 selectDates( firstDate, 7 );
180} 180}
181 181
182void DateNavigator::selectWorkWeek() 182void DateNavigator::selectWorkWeek()
183{ 183{
184 QDate d = mSelectedDates.first(); 184 QDate d = mSelectedDates.first();
185 selectWorkWeek( d ); 185 selectWorkWeek( d );
186} 186}
187 187
188void DateNavigator::selectWorkWeek( const QDate &d ) 188void DateNavigator::selectWorkWeek( const QDate &d )
189{ 189{
190 int dayOfWeek = KOGlobals::self()->calendarSystem()->dayOfWeek( d ); 190 int dayOfWeek = KOGlobals::self()->calendarSystem()->dayOfWeek( d );
191 191
192 QDate firstDate = d.addDays( 1 - dayOfWeek ); 192 QDate firstDate = d.addDays( 1 - dayOfWeek );
193 193
194 int weekStart = KGlobal::locale()->weekStartDay(); 194 int weekStart = KGlobal::locale()->weekStartDay();
195 if ( weekStart != 1 && dayOfWeek >= weekStart ) { 195 if ( weekStart != 1 && dayOfWeek >= weekStart ) {
196 firstDate = firstDate.addDays( 7 ); 196 firstDate = firstDate.addDays( 7 );
197 } 197 }
198 198
199 selectDates( firstDate, 5 ); 199 selectDates( firstDate, 5 );
200} 200}
201 201
202void DateNavigator::selectToday() 202void DateNavigator::selectToday()
203{ 203{
204 QDate d = QDate::currentDate(); 204 QDate d = QDate::currentDate();
205 205
206 int dateCount = mSelectedDates.count(); 206 int dateCount = mSelectedDates.count();
207 207
208 if ( dateCount == 5 ) selectWorkWeek( d ); 208 if ( dateCount == 5 ) selectWorkWeek( d );
209 else if ( dateCount == 7 ) selectWeek( d ); 209 else if ( dateCount == 7 ) selectWeek( d );
210 else selectDates( d, dateCount ); 210 else selectDates( d, dateCount );
211} 211}
212 212
213void DateNavigator::selectPreviousYear() 213void DateNavigator::selectPreviousYear()
214{ 214{
215 QDate firstSelected = mSelectedDates.first(); 215 QDate firstSelected = mSelectedDates.first();
216 int weekDay = firstSelected.dayOfWeek(); 216 int weekDay = firstSelected.dayOfWeek();
217 firstSelected = KOGlobals::self()->calendarSystem()->addYears( firstSelected, -1 ); 217 firstSelected = KOGlobals::self()->calendarSystem()->addYears( firstSelected, -1 );
218 218
219 selectWeekByDay( weekDay, firstSelected ); 219 selectWeekByDay( weekDay, firstSelected );
220} 220}
221 221
222void DateNavigator::selectPreviousMonth() 222void DateNavigator::selectPreviousMonth()
223{ 223{
224 QDate firstSelected = mSelectedDates.first(); 224 QDate firstSelected = mSelectedDates.first();
225 int weekDay = firstSelected.dayOfWeek(); 225 int weekDay = firstSelected.dayOfWeek();
226 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, -1 ); 226 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, -1 );
227 227
228 228
229 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 ) 229 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 )
230 selectMonthByDate( firstSelected ); 230 selectMonthByDate( firstSelected );
231 else 231 else
232 selectWeekByDay( weekDay, firstSelected ); 232 selectWeekByDay( weekDay, firstSelected );
233} 233}
234 234
235void DateNavigator::selectNextMonth() 235void DateNavigator::selectNextMonth()
236{ 236{
237 QDate firstSelected = mSelectedDates.first(); 237 QDate firstSelected = mSelectedDates.first();
238 int weekDay = firstSelected.dayOfWeek(); 238 int weekDay = firstSelected.dayOfWeek();
239 239
240 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, 1 ); 240 firstSelected = KOGlobals::self()->calendarSystem()->addMonths( firstSelected, 1 );
241 241
242 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 ) 242 if ( mSelectedDates.first().day() == 1 && mSelectedDates.count() > 27 )
243 selectMonthByDate( firstSelected ); 243 selectMonthByDate( firstSelected );
244 else 244 else
245 selectWeekByDay( weekDay, firstSelected ); 245 selectWeekByDay( weekDay, firstSelected );
246 246
247} 247}
248 248
249void DateNavigator::selectNextYear() 249void DateNavigator::selectNextYear()
250{ 250{
251 QDate firstSelected = mSelectedDates.first(); 251 QDate firstSelected = mSelectedDates.first();
252 int weekDay = firstSelected.dayOfWeek(); 252 int weekDay = firstSelected.dayOfWeek();
253 firstSelected = KOGlobals::self()->calendarSystem()->addYears( firstSelected, 1 ); 253 firstSelected = KOGlobals::self()->calendarSystem()->addYears( firstSelected, 1 );
254 254
255 selectWeekByDay( weekDay, firstSelected ); 255 selectWeekByDay( weekDay, firstSelected );
256} 256}
257 257
258void DateNavigator::selectPrevious() 258void DateNavigator::selectPrevious()
259{ 259{
260 int offset = -7; 260 int offset = -7;
261 if ( datesCount() == 1 ) { 261 if ( datesCount() == 1 ) {
262 offset = -1; 262 offset = -1;
263 } 263 }
264 if ( mViewManager ) 264 if ( mViewManager )
265 if ( mViewManager->showsNextDays() ) 265 if ( mViewManager->showsNextDays() )
266 offset = -datesCount(); 266 offset = -datesCount();
267 selectDates( mSelectedDates.first().addDays( offset ), datesCount() ); 267 selectDates( mSelectedDates.first().addDays( offset ), datesCount() );
268} 268}
269 269
270void DateNavigator::selectNext() 270void DateNavigator::selectNext()
271{ 271{
272 int offset = 7; 272 int offset = 7;
273 if ( datesCount() == 1 ) { 273 if ( datesCount() == 1 ) {
274 offset = 1; 274 offset = 1;
275 } 275 }
276 if ( mViewManager ) 276 if ( mViewManager )
277 if ( mViewManager->showsNextDays() ) 277 if ( mViewManager->showsNextDays() )
278 offset = datesCount(); 278 offset = datesCount();
279 selectDates( mSelectedDates.first().addDays( offset ), datesCount() ); 279 selectDates( mSelectedDates.first().addDays( offset ), datesCount() );
280} 280}
281 281
282void DateNavigator::emitSelected() 282void DateNavigator::emitSelected()
283{ 283{
284 emit datesSelected( mSelectedDates ); 284 emit datesSelected( mSelectedDates );
285} 285}
286 286
287#include "datenavigator.moc" 287//#include "datenavigator.moc"
diff --git a/korganizer/filtereditdialog.cpp b/korganizer/filtereditdialog.cpp
index 2943e41..ca09844 100644
--- a/korganizer/filtereditdialog.cpp
+++ b/korganizer/filtereditdialog.cpp
@@ -1,270 +1,270 @@
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#include <qlayout.h> 24#include <qlayout.h>
25#include <qpushbutton.h> 25#include <qpushbutton.h>
26#include <qcombobox.h> 26#include <qcombobox.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qradiobutton.h> 28#include <qradiobutton.h>
29#include <qlistbox.h> 29#include <qlistbox.h>
30#include <qapplication.h> 30#include <qapplication.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <klineeditdlg.h> 34#include <klineeditdlg.h>
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36 36
37#include <libkdepim/categoryselectdialog.h> 37#include <libkdepim/categoryselectdialog.h>
38 38
39#include "koprefs.h" 39#include "koprefs.h"
40#include "filteredit_base.h" 40#include "filteredit_base.h"
41 41
42#include "filtereditdialog.h" 42#include "filtereditdialog.h"
43#include "filtereditdialog.moc" 43//#include "filtereditdialog.moc"
44 44
45// TODO: Make dialog work on a copy of the filters objects. 45// TODO: Make dialog work on a copy of the filters objects.
46 46
47class ComboFilterBox: public QComboBox 47class ComboFilterBox: public QComboBox
48{ 48{
49public: 49public:
50 ComboFilterBox( QWidget *parent=0, const char *name=0) : 50 ComboFilterBox( QWidget *parent=0, const char *name=0) :
51 QComboBox( parent,name ) { } 51 QComboBox( parent,name ) { }
52 void popupBox() { popup(); } 52 void popupBox() { popup(); }
53 53
54}; 54};
55 55
56FilterEditDialog::FilterEditDialog(QPtrList<CalFilter> *filters,QWidget *parent, 56FilterEditDialog::FilterEditDialog(QPtrList<CalFilter> *filters,QWidget *parent,
57 const char *name) : 57 const char *name) :
58 KDialogBase(parent,name,true,i18n("Edit Calendar Filters"), 58 KDialogBase(parent,name,true,i18n("Edit Calendar Filters"),
59 Ok|Apply|Cancel) 59 Ok|Apply|Cancel)
60{ 60{
61 mFilters = filters; 61 mFilters = filters;
62 62
63 QWidget *mainWidget = new QWidget(this); 63 QWidget *mainWidget = new QWidget(this);
64 setMainWidget(mainWidget); 64 setMainWidget(mainWidget);
65 65
66 mSelectionCombo = new ComboFilterBox(mainWidget); 66 mSelectionCombo = new ComboFilterBox(mainWidget);
67 connect(mSelectionCombo,SIGNAL(activated(int)),SLOT(filterSelected())); 67 connect(mSelectionCombo,SIGNAL(activated(int)),SLOT(filterSelected()));
68 // mSelectionCombo->setEditable ( true ); 68 // mSelectionCombo->setEditable ( true );
69 QPushButton *addButton = new QPushButton(i18n("Add Filter"),mainWidget); 69 QPushButton *addButton = new QPushButton(i18n("Add Filter"),mainWidget);
70 connect(addButton,SIGNAL(clicked()),SLOT(slotAdd())); 70 connect(addButton,SIGNAL(clicked()),SLOT(slotAdd()));
71 addButton->setMaximumSize( addButton->sizeHint()); 71 addButton->setMaximumSize( addButton->sizeHint());
72 mRemoveButton = new QPushButton( i18n("Remove"), mainWidget ); 72 mRemoveButton = new QPushButton( i18n("Remove"), mainWidget );
73 connect( mRemoveButton, SIGNAL( clicked() ), SLOT( slotRemove() ) ); 73 connect( mRemoveButton, SIGNAL( clicked() ), SLOT( slotRemove() ) );
74 mRemoveButton->setMaximumSize( mRemoveButton->sizeHint()); 74 mRemoveButton->setMaximumSize( mRemoveButton->sizeHint());
75 75
76 QPushButton *upButton = new QPushButton(i18n("Up"),mainWidget); 76 QPushButton *upButton = new QPushButton(i18n("Up"),mainWidget);
77 upButton->setMaximumSize( upButton->sizeHint()); 77 upButton->setMaximumSize( upButton->sizeHint());
78 connect(upButton,SIGNAL(clicked()),SLOT(slotUp())); 78 connect(upButton,SIGNAL(clicked()),SLOT(slotUp()));
79 79
80 80
81 mEditor = new FilterEdit_base(mainWidget); 81 mEditor = new FilterEdit_base(mainWidget);
82 82
83 QGridLayout *topLayout = new QGridLayout(mainWidget,2,2); 83 QGridLayout *topLayout = new QGridLayout(mainWidget,2,2);
84 topLayout->setSpacing(spacingHint()); 84 topLayout->setSpacing(spacingHint());
85 topLayout->addWidget(mSelectionCombo,0,0); 85 topLayout->addWidget(mSelectionCombo,0,0);
86 topLayout->addWidget(upButton,0,1); 86 topLayout->addWidget(upButton,0,1);
87 topLayout->addWidget(addButton,0,2); 87 topLayout->addWidget(addButton,0,2);
88 topLayout->addWidget(mRemoveButton,0,3); 88 topLayout->addWidget(mRemoveButton,0,3);
89 topLayout->addMultiCellWidget(mEditor,1,1,0,3); 89 topLayout->addMultiCellWidget(mEditor,1,1,0,3);
90 mSelectionCombo->setMaximumWidth ( QApplication::desktop()->width() - 90 mSelectionCombo->setMaximumWidth ( QApplication::desktop()->width() -
91 addButton->maximumWidth() - 91 addButton->maximumWidth() -
92 mRemoveButton->maximumWidth() - 92 mRemoveButton->maximumWidth() -
93 upButton->maximumWidth() - 93 upButton->maximumWidth() -
94 spacingHint() * 5 ); 94 spacingHint() * 5 );
95 connect(mEditor->mCatEditButton,SIGNAL(clicked()), 95 connect(mEditor->mCatEditButton,SIGNAL(clicked()),
96 SLOT(editCategorySelection())); 96 SLOT(editCategorySelection()));
97 97
98 // Clicking cancel exits the dialog without saving 98 // Clicking cancel exits the dialog without saving
99 connect(this,SIGNAL(cancelClicked()),SLOT(reject())); 99 connect(this,SIGNAL(cancelClicked()),SLOT(reject()));
100 updateFilterList(); 100 updateFilterList();
101} 101}
102 102
103FilterEditDialog::~FilterEditDialog() 103FilterEditDialog::~FilterEditDialog()
104{ 104{
105} 105}
106void FilterEditDialog::slotUp() 106void FilterEditDialog::slotUp()
107{ 107{
108 108
109 if ( mFilters->count() <= 1 ) return; 109 if ( mFilters->count() <= 1 ) return;
110 if ( mSelectionCombo->currentItem() == 0 ) return; 110 if ( mSelectionCombo->currentItem() == 0 ) return;
111 int num = mSelectionCombo->currentItem(); 111 int num = mSelectionCombo->currentItem();
112 CalFilter* f = new CalFilter( ); 112 CalFilter* f = new CalFilter( );
113 *f = *(mFilters->at( num )); 113 *f = *(mFilters->at( num ));
114 mFilters->remove( num ); 114 mFilters->remove( num );
115 mFilters->insert( num-1, f ); 115 mFilters->insert( num-1, f );
116 updateFilterList(); 116 updateFilterList();
117 mSelectionCombo->setCurrentItem( num-1 ); 117 mSelectionCombo->setCurrentItem( num-1 );
118 readFilter(f); 118 readFilter(f);
119 //qApp->processEvents(); 119 //qApp->processEvents();
120 //mSelectionCombo->popupBox(); 120 //mSelectionCombo->popupBox();
121} 121}
122void FilterEditDialog::updateFilterList() 122void FilterEditDialog::updateFilterList()
123{ 123{
124 mSelectionCombo->clear(); 124 mSelectionCombo->clear();
125 125
126 CalFilter *filter = mFilters->first(); 126 CalFilter *filter = mFilters->first();
127 127
128 if (!filter) { 128 if (!filter) {
129 enableButtonOK(false); 129 enableButtonOK(false);
130 enableButtonApply(false); 130 enableButtonApply(false);
131 } else { 131 } else {
132 while(filter) { 132 while(filter) {
133 mSelectionCombo->insertItem(filter->name()); 133 mSelectionCombo->insertItem(filter->name());
134 filter = mFilters->next(); 134 filter = mFilters->next();
135 } 135 }
136 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 136 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
137 if (f) readFilter(f); 137 if (f) readFilter(f);
138 138
139 enableButtonOK(true); 139 enableButtonOK(true);
140 enableButtonApply(true); 140 enableButtonApply(true);
141 } 141 }
142 142
143 mRemoveButton->setEnabled( mFilters->count() > 1 ); 143 mRemoveButton->setEnabled( mFilters->count() > 1 );
144} 144}
145 145
146void FilterEditDialog::slotDefault() 146void FilterEditDialog::slotDefault()
147{ 147{
148} 148}
149 149
150void FilterEditDialog::slotApply() 150void FilterEditDialog::slotApply()
151{ 151{
152 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 152 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
153 writeFilter(f); 153 writeFilter(f);
154 emit filterChanged(); 154 emit filterChanged();
155} 155}
156void FilterEditDialog::accept() 156void FilterEditDialog::accept()
157{ 157{
158 slotOk(); 158 slotOk();
159} 159}
160void FilterEditDialog::slotOk() 160void FilterEditDialog::slotOk()
161{ 161{
162 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 162 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
163 writeFilter(f); 163 writeFilter(f);
164 emit filterChanged(); 164 emit filterChanged();
165 QDialog::accept(); 165 QDialog::accept();
166} 166}
167 167
168void FilterEditDialog::slotAdd() 168void FilterEditDialog::slotAdd()
169{ 169{
170 KLineEditDlg dlg(i18n("Enter filter name:"), "New Filter", this); 170 KLineEditDlg dlg(i18n("Enter filter name:"), "New Filter", this);
171 dlg.setCaption(i18n("Add Filter")); 171 dlg.setCaption(i18n("Add Filter"));
172 if (dlg.exec()) { 172 if (dlg.exec()) {
173 if ( dlg.text().length() > 0 ) { 173 if ( dlg.text().length() > 0 ) {
174 mFilters->append(new CalFilter(dlg.text())); 174 mFilters->append(new CalFilter(dlg.text()));
175 updateFilterList(); 175 updateFilterList();
176 int num = mSelectionCombo->count() -1 ; 176 int num = mSelectionCombo->count() -1 ;
177 mSelectionCombo->setCurrentItem( num ); 177 mSelectionCombo->setCurrentItem( num );
178 readFilter(mFilters->at( num ) ); 178 readFilter(mFilters->at( num ) );
179 } 179 }
180 } 180 }
181} 181}
182 182
183void FilterEditDialog::slotRemove() 183void FilterEditDialog::slotRemove()
184{ 184{
185 int currentItem = mSelectionCombo->currentItem(); 185 int currentItem = mSelectionCombo->currentItem();
186 if ( currentItem < 0 ) return; 186 if ( currentItem < 0 ) return;
187 187
188 // We need at least a default filter object. 188 // We need at least a default filter object.
189 if ( mFilters->count() <= 1 ) return; 189 if ( mFilters->count() <= 1 ) return;
190 190
191 int result = KMessageBox::questionYesNo( this, 191 int result = KMessageBox::questionYesNo( this,
192 i18n("This item will be\npermanently deleted.") ); 192 i18n("This item will be\npermanently deleted.") );
193 193
194 if ( result != KMessageBox::Yes ) { 194 if ( result != KMessageBox::Yes ) {
195 return; 195 return;
196 } 196 }
197 197
198 mFilters->remove( currentItem ); 198 mFilters->remove( currentItem );
199 updateFilterList(); 199 updateFilterList();
200 emit filterChanged(); 200 emit filterChanged();
201} 201}
202 202
203void FilterEditDialog::editCategorySelection() 203void FilterEditDialog::editCategorySelection()
204{ 204{
205 KPIM::CategorySelectDialog *dlg = new KPIM::CategorySelectDialog( 205 KPIM::CategorySelectDialog *dlg = new KPIM::CategorySelectDialog(
206 KOPrefs::instance(), this, "filterCatSelect", true ); 206 KOPrefs::instance(), this, "filterCatSelect", true );
207 dlg->setSelected(mCategories); 207 dlg->setSelected(mCategories);
208 208
209 connect(dlg,SIGNAL(categoriesSelected(const QStringList &)), 209 connect(dlg,SIGNAL(categoriesSelected(const QStringList &)),
210 SLOT(updateCategorySelection(const QStringList &))); 210 SLOT(updateCategorySelection(const QStringList &)));
211 211
212 dlg->exec(); 212 dlg->exec();
213} 213}
214 214
215void FilterEditDialog::updateCategorySelection(const QStringList &categories) 215void FilterEditDialog::updateCategorySelection(const QStringList &categories)
216{ 216{
217 mCategories = categories; 217 mCategories = categories;
218 218
219 mEditor->mCatList->clear(); 219 mEditor->mCatList->clear();
220 mEditor->mCatList->insertStringList(mCategories); 220 mEditor->mCatList->insertStringList(mCategories);
221} 221}
222 222
223void FilterEditDialog::filterSelected() 223void FilterEditDialog::filterSelected()
224{ 224{
225 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 225 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
226 if (f) readFilter(f); 226 if (f) readFilter(f);
227} 227}
228 228
229void FilterEditDialog::readFilter(CalFilter *filter) 229void FilterEditDialog::readFilter(CalFilter *filter)
230{ 230{
231 int c = filter->criteria(); 231 int c = filter->criteria();
232 232
233 mEditor->mCompletedCheck->setChecked(c & CalFilter::HideCompleted); 233 mEditor->mCompletedCheck->setChecked(c & CalFilter::HideCompleted);
234 mEditor->mRecurringCheck->setChecked(c & CalFilter::HideRecurring); 234 mEditor->mRecurringCheck->setChecked(c & CalFilter::HideRecurring);
235 mEditor->mPublicCheck->setChecked(c & CalFilter::ShowPublic); 235 mEditor->mPublicCheck->setChecked(c & CalFilter::ShowPublic);
236 mEditor->mPrivateCheck->setChecked(c & CalFilter::ShowPrivate); 236 mEditor->mPrivateCheck->setChecked(c & CalFilter::ShowPrivate);
237 mEditor->mConfidentialCheck->setChecked(c & CalFilter::ShowConfidential); 237 mEditor->mConfidentialCheck->setChecked(c & CalFilter::ShowConfidential);
238 238
239 if (c & CalFilter::ShowCategories) { 239 if (c & CalFilter::ShowCategories) {
240 mEditor->mCatShowCheck->setChecked(true); 240 mEditor->mCatShowCheck->setChecked(true);
241 } else { 241 } else {
242 mEditor->mCatHideCheck->setChecked(true); 242 mEditor->mCatHideCheck->setChecked(true);
243 } 243 }
244 244
245 mEditor->mCatList->clear(); 245 mEditor->mCatList->clear();
246 mEditor->mCatList->insertStringList(filter->categoryList()); 246 mEditor->mCatList->insertStringList(filter->categoryList());
247 mCategories = filter->categoryList(); 247 mCategories = filter->categoryList();
248 248
249 setCaption( i18n("Filter position: ") + QString::number ( mSelectionCombo->currentItem()+1 )); 249 setCaption( i18n("Filter position: ") + QString::number ( mSelectionCombo->currentItem()+1 ));
250} 250}
251 251
252void FilterEditDialog::writeFilter(CalFilter *filter) 252void FilterEditDialog::writeFilter(CalFilter *filter)
253{ 253{
254 int c = 0; 254 int c = 0;
255 255
256 if (mEditor->mCompletedCheck->isChecked()) c |= CalFilter::HideCompleted; 256 if (mEditor->mCompletedCheck->isChecked()) c |= CalFilter::HideCompleted;
257 if (mEditor->mRecurringCheck->isChecked()) c |= CalFilter::HideRecurring; 257 if (mEditor->mRecurringCheck->isChecked()) c |= CalFilter::HideRecurring;
258 if (mEditor->mCatShowCheck->isChecked()) c |= CalFilter::ShowCategories; 258 if (mEditor->mCatShowCheck->isChecked()) c |= CalFilter::ShowCategories;
259 if (mEditor->mPublicCheck->isChecked()) c |= CalFilter::ShowPublic; 259 if (mEditor->mPublicCheck->isChecked()) c |= CalFilter::ShowPublic;
260 if (mEditor->mPrivateCheck->isChecked()) c |= CalFilter::ShowPrivate; 260 if (mEditor->mPrivateCheck->isChecked()) c |= CalFilter::ShowPrivate;
261 if (mEditor->mConfidentialCheck->isChecked()) c |= CalFilter::ShowConfidential; 261 if (mEditor->mConfidentialCheck->isChecked()) c |= CalFilter::ShowConfidential;
262 262
263 filter->setCriteria(c); 263 filter->setCriteria(c);
264 264
265 QStringList categoryList; 265 QStringList categoryList;
266 for(uint i=0;i<mEditor->mCatList->count();++i) { 266 for(uint i=0;i<mEditor->mCatList->count();++i) {
267 categoryList.append(mEditor->mCatList->text(i)); 267 categoryList.append(mEditor->mCatList->text(i));
268 } 268 }
269 filter->setCategoryList(categoryList); 269 filter->setCategoryList(categoryList);
270} 270}
diff --git a/korganizer/incomingdialog.cpp b/korganizer/incomingdialog.cpp
index 490d21e..f3bd09f 100644
--- a/korganizer/incomingdialog.cpp
+++ b/korganizer/incomingdialog.cpp
@@ -143,385 +143,385 @@ IncomingDialog::IncomingDialog(Calendar *calendar,OutgoingDialog *outgoing,
143 mScheduler = new MailScheduler(mCalendar); 143 mScheduler = new MailScheduler(mCalendar);
144#else 144#else
145 mScheduler = new DummyScheduler(mCalendar); 145 mScheduler = new DummyScheduler(mCalendar);
146#endif 146#endif
147 mMessageListView->setColumnAlignment(1,AlignHCenter); 147 mMessageListView->setColumnAlignment(1,AlignHCenter);
148 mMessageListView->setColumnAlignment(2,AlignHCenter); 148 mMessageListView->setColumnAlignment(2,AlignHCenter);
149 mMessageListView->setColumnAlignment(3,AlignHCenter); 149 mMessageListView->setColumnAlignment(3,AlignHCenter);
150 mMessageListView->setColumnAlignment(4,AlignHCenter); 150 mMessageListView->setColumnAlignment(4,AlignHCenter);
151 QObject::connect(mMessageListView,SIGNAL(doubleClicked(QListViewItem *)), 151 QObject::connect(mMessageListView,SIGNAL(doubleClicked(QListViewItem *)),
152 this,SLOT(showEvent(QListViewItem *))); 152 this,SLOT(showEvent(QListViewItem *)));
153 retrieve(); 153 retrieve();
154} 154}
155 155
156/* 156/*
157 * Destroys the object and frees any allocated resources 157 * Destroys the object and frees any allocated resources
158 */ 158 */
159IncomingDialog::~IncomingDialog() 159IncomingDialog::~IncomingDialog()
160{ 160{
161 // no need to delete child widgets, Qt does it all for us 161 // no need to delete child widgets, Qt does it all for us
162} 162}
163 163
164void IncomingDialog::setOutgoingDialog(OutgoingDialog *outgoing) 164void IncomingDialog::setOutgoingDialog(OutgoingDialog *outgoing)
165{ 165{
166 mOutgoing = outgoing; 166 mOutgoing = outgoing;
167} 167}
168 168
169void IncomingDialog::retrieve() 169void IncomingDialog::retrieve()
170{ 170{
171 QPtrList <ScheduleMessage> messages = mScheduler->retrieveTransactions(); 171 QPtrList <ScheduleMessage> messages = mScheduler->retrieveTransactions();
172 172
173 ScheduleMessage *message; 173 ScheduleMessage *message;
174 for(message = messages.first();message;message = messages.next()) { 174 for(message = messages.first();message;message = messages.next()) {
175 IncidenceBase *inc = message->event(); 175 IncidenceBase *inc = message->event();
176 Scheduler::Method method = (Scheduler::Method)message->method(); 176 Scheduler::Method method = (Scheduler::Method)message->method();
177 ScheduleMessage::Status status = message->status(); 177 ScheduleMessage::Status status = message->status();
178 178
179 ScheduleItemIn *item = new ScheduleItemIn(mMessageListView,inc,method,status); 179 ScheduleItemIn *item = new ScheduleItemIn(mMessageListView,inc,method,status);
180 if(inc->type()!="FreeBusy") { 180 if(inc->type()!="FreeBusy") {
181 Incidence *incidence = static_cast<Incidence *>(inc); 181 Incidence *incidence = static_cast<Incidence *>(inc);
182 ScheduleItemVisitor v(item); 182 ScheduleItemVisitor v(item);
183 if (!incidence->accept(v)) delete item; 183 if (!incidence->accept(v)) delete item;
184 } else { 184 } else {
185 FreeBusy *fb = static_cast<FreeBusy *>(item->event()); 185 FreeBusy *fb = static_cast<FreeBusy *>(item->event());
186 item->setText(0, "FreeBusy"); 186 item->setText(0, "FreeBusy");
187 item->setText(1, KGlobal::locale()->formatDate( fb->dtStart().date() ) ); 187 item->setText(1, KGlobal::locale()->formatDate( fb->dtStart().date() ) );
188 item->setText(2, KGlobal::locale()->formatTime( fb->dtStart().time() ) ); 188 item->setText(2, KGlobal::locale()->formatTime( fb->dtStart().time() ) );
189 item->setText(3, KGlobal::locale()->formatDate( fb->dtEnd().date() ) ); 189 item->setText(3, KGlobal::locale()->formatDate( fb->dtEnd().date() ) );
190 item->setText(4, KGlobal::locale()->formatTime( fb->dtEnd().time() ) ); 190 item->setText(4, KGlobal::locale()->formatTime( fb->dtEnd().time() ) );
191 item->setText(5, fb->organizer()); 191 item->setText(5, fb->organizer());
192 } 192 }
193 automaticAction(item); 193 automaticAction(item);
194 } 194 }
195 emit numMessagesChanged(mMessageListView->childCount()); 195 emit numMessagesChanged(mMessageListView->childCount());
196} 196}
197 197
198void IncomingDialog::acceptAllMessages() 198void IncomingDialog::acceptAllMessages()
199{ 199{
200 bool success = false; 200 bool success = false;
201 201
202 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->firstChild(); 202 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->firstChild();
203 while(item) { 203 while(item) {
204 ScheduleItemIn *nextitem = (ScheduleItemIn *)(item->nextSibling()); 204 ScheduleItemIn *nextitem = (ScheduleItemIn *)(item->nextSibling());
205 if (acceptMessage(item)) success = true; 205 if (acceptMessage(item)) success = true;
206 item = nextitem; 206 item = nextitem;
207 } 207 }
208 208
209 if (success) emit calendarUpdated(); 209 if (success) emit calendarUpdated();
210} 210}
211 211
212void IncomingDialog::acceptMessage() 212void IncomingDialog::acceptMessage()
213{ 213{
214 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->selectedItem(); 214 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->selectedItem();
215 if (item) { 215 if (item) {
216 if (acceptMessage(item)) emit calendarUpdated(); 216 if (acceptMessage(item)) emit calendarUpdated();
217 } 217 }
218} 218}
219 219
220bool IncomingDialog::acceptMessage(ScheduleItemIn *item) 220bool IncomingDialog::acceptMessage(ScheduleItemIn *item)
221{ 221{
222 switch (item->method()) { 222 switch (item->method()) {
223 case Scheduler::Refresh: 223 case Scheduler::Refresh:
224 return incomeRefresh(item); 224 return incomeRefresh(item);
225 break; 225 break;
226 case Scheduler::Counter: 226 case Scheduler::Counter:
227 return incomeCounter(item); 227 return incomeCounter(item);
228 break; 228 break;
229 case Scheduler::Declinecounter: 229 case Scheduler::Declinecounter:
230 return incomeDeclineCounter(item); 230 return incomeDeclineCounter(item);
231 break; 231 break;
232 case Scheduler::Add: 232 case Scheduler::Add:
233 return incomeAdd(item); 233 return incomeAdd(item);
234 break; 234 break;
235 case Scheduler::Request: 235 case Scheduler::Request:
236 return incomeRequest(item); 236 return incomeRequest(item);
237 break; 237 break;
238 default: 238 default:
239 return incomeDefault(item); 239 return incomeDefault(item);
240 } 240 }
241 return false; 241 return false;
242} 242}
243 243
244void IncomingDialog::rejectMessage() 244void IncomingDialog::rejectMessage()
245{ 245{
246 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->selectedItem(); 246 ScheduleItemIn *item = (ScheduleItemIn *)mMessageListView->selectedItem();
247 if (item) { 247 if (item) {
248 mScheduler->deleteTransaction(item->event()); 248 mScheduler->deleteTransaction(item->event());
249 delete item; 249 delete item;
250 emit numMessagesChanged(mMessageListView->childCount()); 250 emit numMessagesChanged(mMessageListView->childCount());
251 } 251 }
252} 252}
253 253
254void IncomingDialog::showEvent(QListViewItem *item) 254void IncomingDialog::showEvent(QListViewItem *item)
255{ 255{
256 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event(); 256 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event();
257 if( incidence && incidence->type() == "Event" ) { 257 if( incidence && incidence->type() == "Event" ) {
258 Event *event = static_cast<Event *>(incidence); 258 Event *event = static_cast<Event *>(incidence);
259 KOEventViewerDialog *eventViewer = new KOEventViewerDialog(this); 259 KOEventViewerDialog *eventViewer = new KOEventViewerDialog(this);
260 eventViewer->setEvent(event); 260 eventViewer->setEvent(event);
261 eventViewer->show(); 261 eventViewer->show();
262 } 262 }
263} 263}
264 264
265bool IncomingDialog::incomeRefresh(ScheduleItemIn *item) 265bool IncomingDialog::incomeRefresh(ScheduleItemIn *item)
266{ 266{
267 Event *ev = mCalendar->event(item->event()->uid()); 267 Event *ev = mCalendar->event(item->event()->uid());
268 if (ev) { 268 if (ev) {
269 //user interaction before?? 269 //user interaction before??
270 Attendee *att; 270 Attendee *att;
271 QPtrList<Attendee> attlist = ev->attendees(); 271 QPtrList<Attendee> attlist = ev->attendees();
272 for (att=attlist.first(); att; att=attlist.next()) { 272 for (att=attlist.first(); att; att=attlist.next()) {
273 Event *event = new Event(*ev); 273 Event *event = new Event(*ev);
274 mOutgoing->addMessage(event,Scheduler::Request,att->email()); 274 mOutgoing->addMessage(event,Scheduler::Request,att->email());
275 delete(event); 275 delete(event);
276 } 276 }
277 mScheduler->deleteTransaction(item->event()); 277 mScheduler->deleteTransaction(item->event());
278 delete item; 278 delete item;
279 emit numMessagesChanged(mMessageListView->childCount()); 279 emit numMessagesChanged(mMessageListView->childCount());
280 return true; 280 return true;
281 } 281 }
282 mScheduler->deleteTransaction(item->event()); 282 mScheduler->deleteTransaction(item->event());
283 delete item; 283 delete item;
284 emit numMessagesChanged(mMessageListView->childCount()); 284 emit numMessagesChanged(mMessageListView->childCount());
285 return false; 285 return false;
286} 286}
287 287
288bool IncomingDialog::incomeCounter(ScheduleItemIn *item) 288bool IncomingDialog::incomeCounter(ScheduleItemIn *item)
289{ 289{
290 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event(); 290 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event();
291 // currently only events supportet - attetion at insertion below! 291 // currently only events supportet - attetion at insertion below!
292 if ( incidence->type() != "Event" ) return false; 292 if ( incidence->type() != "Event" ) return false;
293 293
294 Event *counterEvent = static_cast<Event *>( incidence ); 294 Event *counterEvent = static_cast<Event *>( incidence );
295 295
296 Event *even = mCalendar->event(counterEvent->uid()); 296 Event *even = mCalendar->event(counterEvent->uid());
297 297
298 KOCounterDialog *eventViewer = new KOCounterDialog(this); 298 KOCounterDialog *eventViewer = new KOCounterDialog(this);
299 eventViewer->addText(i18n("counter proposal event","<b>Counter-event:</b><p>")); 299 eventViewer->addText(i18n("counter proposal event","<b>Counter-event:</b><p>"));
300 eventViewer->addEvent(counterEvent); 300 eventViewer->addEvent(counterEvent);
301 eventViewer->addText("<hr>"); 301 eventViewer->addText("<hr>");
302 eventViewer->addText(i18n("<b>Original event:</b><p>")); 302 eventViewer->addText(i18n("<b>Original event:</b><p>"));
303 if (even) eventViewer->addEvent(even); 303 if (even) eventViewer->addEvent(even);
304 else eventViewer->addText(i18n("A corresponding event is missing in your calendar!")); 304 else eventViewer->addText(i18n("A corresponding event is missing in your calendar!"));
305 eventViewer->addText("<hr>"); 305 eventViewer->addText("<hr>");
306 eventViewer->addText(i18n("If this counter-event is a good proposal for your event, press 'Accept'. All Attendees will then get the new version of this event")); 306 eventViewer->addText(i18n("If this counter-event is a good proposal for your event, press 'Accept'. All Attendees will then get the new version of this event"));
307 eventViewer->show(); 307 eventViewer->show();
308 308
309 eventViewer->exec(); 309 eventViewer->exec();
310 if (eventViewer->result()) { 310 if (eventViewer->result()) {
311 kdDebug() << "IncomingDialog::Counter:Accept" << endl; 311 kdDebug() << "IncomingDialog::Counter:Accept" << endl;
312 int revision = 0; 312 int revision = 0;
313 if (even) { 313 if (even) {
314 revision = even->revision(); 314 revision = even->revision();
315 mCalendar->deleteEvent(even); 315 mCalendar->deleteEvent(even);
316 } 316 }
317 mCalendar->addIncidence(counterEvent); 317 mCalendar->addIncidence(counterEvent);
318 318
319 even = mCalendar->event(item->event()->uid()); 319 even = mCalendar->event(item->event()->uid());
320 if (even) { 320 if (even) {
321 if (revision < even->revision()) 321 if (revision < even->revision())
322 even->setRevision(even->revision()+1); 322 even->setRevision(even->revision()+1);
323 else 323 else
324 even->setRevision(revision+1); 324 even->setRevision(revision+1);
325 Event *ev = new Event(*even); 325 Event *ev = new Event(*even);
326 mOutgoing->addMessage(ev,Scheduler::Request); 326 mOutgoing->addMessage(ev,Scheduler::Request);
327 delete(ev); 327 delete(ev);
328 } 328 }
329 mScheduler->deleteTransaction(item->event()); 329 mScheduler->deleteTransaction(item->event());
330 delete item; 330 delete item;
331 emit numMessagesChanged(mMessageListView->childCount()); 331 emit numMessagesChanged(mMessageListView->childCount());
332 return true; 332 return true;
333 } else { 333 } else {
334 kdDebug() << "IncomingDialog::Counter:Decline" << endl; 334 kdDebug() << "IncomingDialog::Counter:Decline" << endl;
335 //the counter-sender's email is missing... 335 //the counter-sender's email is missing...
336 //now every attendee gets an declinecounter :-( 336 //now every attendee gets an declinecounter :-(
337 mOutgoing->addMessage(counterEvent,Scheduler::Declinecounter); 337 mOutgoing->addMessage(counterEvent,Scheduler::Declinecounter);
338 delete item; 338 delete item;
339 emit numMessagesChanged(mMessageListView->childCount()); 339 emit numMessagesChanged(mMessageListView->childCount());
340 mScheduler->deleteTransaction(item->event()); 340 mScheduler->deleteTransaction(item->event());
341 delete item; 341 delete item;
342 emit numMessagesChanged(mMessageListView->childCount()); 342 emit numMessagesChanged(mMessageListView->childCount());
343 return true; 343 return true;
344 } 344 }
345 //mScheduler->deleteTransaction(item->event()); 345 //mScheduler->deleteTransaction(item->event());
346 delete item; 346 delete item;
347 emit numMessagesChanged(mMessageListView->childCount()); 347 emit numMessagesChanged(mMessageListView->childCount());
348 return false; 348 return false;
349} 349}
350 350
351bool IncomingDialog::incomeDeclineCounter(ScheduleItemIn *item) 351bool IncomingDialog::incomeDeclineCounter(ScheduleItemIn *item)
352{ 352{
353 Event *even = mCalendar->event(item->event()->uid()); 353 Event *even = mCalendar->event(item->event()->uid());
354 if (even) { 354 if (even) {
355 mOutgoing->addMessage(even,Scheduler::Refresh); 355 mOutgoing->addMessage(even,Scheduler::Refresh);
356 mScheduler->deleteTransaction(item->event()); 356 mScheduler->deleteTransaction(item->event());
357 delete item; 357 delete item;
358 emit numMessagesChanged(mMessageListView->childCount()); 358 emit numMessagesChanged(mMessageListView->childCount());
359 return true; 359 return true;
360 } 360 }
361 mScheduler->deleteTransaction(item->event()); 361 mScheduler->deleteTransaction(item->event());
362 delete item; 362 delete item;
363 emit numMessagesChanged(mMessageListView->childCount()); 363 emit numMessagesChanged(mMessageListView->childCount());
364 return false; 364 return false;
365} 365}
366 366
367bool IncomingDialog::incomeAdd(ScheduleItemIn *item) 367bool IncomingDialog::incomeAdd(ScheduleItemIn *item)
368{ 368{
369 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event(); 369 IncidenceBase *incidence = ((ScheduleItemIn *)item)->event();
370 if (incidence->type() == "Event" ) { 370 if (incidence->type() == "Event" ) {
371 Event *refr = static_cast<Event *>( incidence ); 371 Event *refr = static_cast<Event *>( incidence );
372 mOutgoing->addMessage(refr,Scheduler::Refresh); 372 mOutgoing->addMessage(refr,Scheduler::Refresh);
373 mScheduler->deleteTransaction( incidence ); 373 mScheduler->deleteTransaction( incidence );
374 delete item; 374 delete item;
375 emit numMessagesChanged(mMessageListView->childCount()); 375 emit numMessagesChanged(mMessageListView->childCount());
376 return true; 376 return true;
377 } 377 }
378 else { 378 else {
379 kdDebug() << "IncomingDialog::incomeAdd - only Events are supportet yet" << endl; 379 kdDebug() << "IncomingDialog::incomeAdd - only Events are supportet yet" << endl;
380 mScheduler->deleteTransaction( incidence ); 380 mScheduler->deleteTransaction( incidence );
381 delete item; 381 delete item;
382 emit numMessagesChanged(mMessageListView->childCount()); 382 emit numMessagesChanged(mMessageListView->childCount());
383 return false; 383 return false;
384 } 384 }
385} 385}
386 386
387bool IncomingDialog::incomeDefault(ScheduleItemIn *item) 387bool IncomingDialog::incomeDefault(ScheduleItemIn *item)
388{ 388{
389 if (mScheduler->acceptTransaction(item->event(),item->method(),item->status())) { 389 if (mScheduler->acceptTransaction(item->event(),item->method(),item->status())) {
390 delete item; 390 delete item;
391 emit numMessagesChanged(mMessageListView->childCount()); 391 emit numMessagesChanged(mMessageListView->childCount());
392 return true; 392 return true;
393 } 393 }
394 else { 394 else {
395 KMessageBox::error(this,i18n("Unable to accept the IMIP-message. It may be a problem with the email addresses.")); 395 KMessageBox::error(this,i18n("Unable to accept the IMIP-message. It may be a problem with the email addresses."));
396 kdDebug() << "IncomingDialog::acceptMessage(): Error!" << endl; 396 kdDebug() << "IncomingDialog::acceptMessage(): Error!" << endl;
397 return false; 397 return false;
398 } 398 }
399 return false; 399 return false;
400} 400}
401 401
402bool IncomingDialog::incomeRequest(ScheduleItemIn *item) 402bool IncomingDialog::incomeRequest(ScheduleItemIn *item)
403{ 403{
404 if (item->event()->type()=="FreeBusy") { 404 if (item->event()->type()=="FreeBusy") {
405 //handel freebusy request 405 //handel freebusy request
406 IncidenceBase *inc = item->event(); 406 IncidenceBase *inc = item->event();
407 QDateTime start = inc->dtStart(); 407 QDateTime start = inc->dtStart();
408 QDateTime end = start.addDays(inc->duration()/86400); 408 QDateTime end = start.addDays(inc->duration()/86400);
409 409
410 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 410 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
411 freebusy->setOrganizer(inc->organizer()); 411 freebusy->setOrganizer(inc->organizer());
412 Attendee *att = new Attendee(KOPrefs::instance()->fullName(), 412 Attendee *att = new Attendee(KOPrefs::instance()->fullName(),
413 KOPrefs::instance()->email()); 413 KOPrefs::instance()->email());
414 freebusy->addAttendee(att); 414 freebusy->addAttendee(att);
415 415
416 kdDebug() << "calendarview: schedule_publish_freebusy: startDate: " 416 kdDebug() << "calendarview: schedule_publish_freebusy: startDate: "
417 << KGlobal::locale()->formatDateTime( start ) << " End Date: " 417 << KGlobal::locale()->formatDateTime( start ) << " End Date: "
418 << KGlobal::locale()->formatDateTime( end ) << endl; 418 << KGlobal::locale()->formatDateTime( end ) << endl;
419 419
420 if (mOutgoing->addMessage(freebusy,Scheduler::Reply)) { 420 if (mOutgoing->addMessage(freebusy,Scheduler::Reply)) {
421 delete item; 421 delete item;
422 emit numMessagesChanged(mMessageListView->childCount()); 422 emit numMessagesChanged(mMessageListView->childCount());
423 delete(freebusy); 423 delete(freebusy);
424 return true; 424 return true;
425 } 425 }
426 return false; 426 return false;
427 } else { 427 } else {
428 return incomeDefault(item); 428 return incomeDefault(item);
429 } 429 }
430 return false; 430 return false;
431} 431}
432 432
433bool IncomingDialog::automaticAction(ScheduleItemIn *item) 433bool IncomingDialog::automaticAction(ScheduleItemIn *item)
434{ 434{
435 bool autoAction = false; 435 bool autoAction = false;
436 IncidenceBase *inc = item->event(); 436 IncidenceBase *inc = item->event();
437 Scheduler::Method method = item->method(); 437 Scheduler::Method method = item->method();
438 438
439 if( inc->type()=="FreeBusy" ) { 439 if( inc->type()=="FreeBusy" ) {
440 if ( method==Scheduler::Request ) { 440 if ( method==Scheduler::Request ) {
441 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) { 441 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) {
442 // reply freebusy information 442 // reply freebusy information
443 if ( checkOrganizerInAddressbook(inc->organizer()) ) { 443 if ( checkOrganizerInAddressbook(inc->organizer()) ) {
444 incomeRequest(item); 444 incomeRequest(item);
445 } 445 }
446 } else return false; 446 } else return false;
447 } else { 447 } else {
448 448
449 if ( method==Scheduler::Reply ) { 449 if ( method==Scheduler::Reply ) {
450 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) { 450 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) {
451 // insert freebusy information 451 // insert freebusy information
452 //if ( checkAttendeesInAddressbook(inc) ) 452 //if ( checkAttendeesInAddressbook(inc) )
453 453
454 } else return false; 454 } else return false;
455 } else { 455 } else {
456 if ( method==Scheduler::Publish) { 456 if ( method==Scheduler::Publish) {
457 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) { 457 if ( KOPrefs::instance()->mIMIPAutoFreeBusy==KOPrefs::addressbookAuto ) {
458 // insert freebusy information 458 // insert freebusy information
459 //if ( checkOrganizerInAddressbook(inc->organizer()) ) 459 //if ( checkOrganizerInAddressbook(inc->organizer()) )
460 460
461 } 461 }
462 } else return false; 462 } else return false;
463 } 463 }
464 } 464 }
465 } 465 }
466 466
467 if ( inc->type()=="Event" ) { 467 if ( inc->type()=="Event" ) {
468 if ( method==Scheduler::Request || method==Scheduler::Publish ) { 468 if ( method==Scheduler::Request || method==Scheduler::Publish ) {
469 if ( KOPrefs::instance()->mIMIPAutoInsertRequest==KOPrefs::addressbookAuto ) { 469 if ( KOPrefs::instance()->mIMIPAutoInsertRequest==KOPrefs::addressbookAuto ) {
470 // insert event 470 // insert event
471 if ( checkOrganizerInAddressbook(inc->organizer()) ) 471 if ( checkOrganizerInAddressbook(inc->organizer()) )
472 autoAction = acceptMessage(item); 472 autoAction = acceptMessage(item);
473 } else return false; 473 } else return false;
474 } else { 474 } else {
475 475
476 if ( method==Scheduler::Reply ) { 476 if ( method==Scheduler::Reply ) {
477 if ( KOPrefs::instance()->mIMIPAutoInsertReply==KOPrefs::addressbookAuto ) { 477 if ( KOPrefs::instance()->mIMIPAutoInsertReply==KOPrefs::addressbookAuto ) {
478 // update event information 478 // update event information
479 if ( checkAttendeesInAddressbook(inc) ) 479 if ( checkAttendeesInAddressbook(inc) )
480 autoAction = acceptMessage(item); 480 autoAction = acceptMessage(item);
481 } else return false; 481 } else return false;
482 } else { 482 } else {
483 483
484 if ( method==Scheduler::Refresh ) { 484 if ( method==Scheduler::Refresh ) {
485 if ( KOPrefs::instance()->mIMIPAutoRefresh==KOPrefs::addressbookAuto ) { 485 if ( KOPrefs::instance()->mIMIPAutoRefresh==KOPrefs::addressbookAuto ) {
486 // send refresh-information 486 // send refresh-information
487 if ( checkAttendeesInAddressbook(inc) ) 487 if ( checkAttendeesInAddressbook(inc) )
488 autoAction = acceptMessage(item); 488 autoAction = acceptMessage(item);
489 else return false; 489 else return false;
490 } else return false; 490 } else return false;
491 } else return false; 491 } else return false;
492 } 492 }
493 } 493 }
494 } 494 }
495 return autoAction; 495 return autoAction;
496} 496}
497 497
498bool IncomingDialog::checkOrganizerInAddressbook(QString organizer) 498bool IncomingDialog::checkOrganizerInAddressbook(QString organizer)
499{ 499{
500 bool inBook = false; 500 bool inBook = false;
501#ifndef KORG_NOKABC 501#ifndef KORG_NOKABC
502 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 502 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
503 KABC::Addressee::List addressList; 503 KABC::Addressee::List addressList;
504 addressList = add_book->findByEmail(organizer); 504 addressList = add_book->findByEmail(organizer);
505 if ( addressList.size()>0 ) inBook = true; 505 if ( addressList.size()>0 ) inBook = true;
506#endif 506#endif
507 return inBook; 507 return inBook;
508} 508}
509 509
510bool IncomingDialog::checkAttendeesInAddressbook(IncidenceBase *inc) 510bool IncomingDialog::checkAttendeesInAddressbook(IncidenceBase *inc)
511{ 511{
512 bool inBook = false; 512 bool inBook = false;
513#ifndef KORG_NOKABC 513#ifndef KORG_NOKABC
514 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 514 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
515 KABC::Addressee::List addressList; 515 KABC::Addressee::List addressList;
516 QPtrList <Attendee> attendees; 516 QPtrList <Attendee> attendees;
517 Attendee *att; 517 Attendee *att;
518 attendees = inc->attendees(); 518 attendees = inc->attendees();
519 for (att=attendees.first();att;att=attendees.next()) { 519 for (att=attendees.first();att;att=attendees.next()) {
520 addressList = add_book->findByEmail(att->email()); 520 addressList = add_book->findByEmail(att->email());
521 if (addressList.size()>0 ) inBook = true; 521 if (addressList.size()>0 ) inBook = true;
522 } 522 }
523#endif 523#endif
524 return inBook; 524 return inBook;
525} 525}
526 526
527#include "incomingdialog.moc" 527//#include "incomingdialog.moc"
diff --git a/korganizer/incomingdialog_base.cpp b/korganizer/incomingdialog_base.cpp
index 91740a4..8589803 100644
--- a/korganizer/incomingdialog_base.cpp
+++ b/korganizer/incomingdialog_base.cpp
@@ -1,137 +1,137 @@
1#include <klocale.h> 1#include <klocale.h>
2/**************************************************************************** 2/****************************************************************************
3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/incomingdialog_base.ui' 3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/incomingdialog_base.ui'
4** 4**
5** Created: Sat Mar 29 22:31:27 2003 5** Created: Sat Mar 29 22:31:27 2003
6** by: The User Interface Compiler () 6** by: The User Interface Compiler ()
7** 7**
8** WARNING! All changes made in this file will be lost! 8** WARNING! All changes made in this file will be lost!
9****************************************************************************/ 9****************************************************************************/
10 10
11#include "incomingdialog_base.h" 11#include "incomingdialog_base.h"
12 12
13#include <qvariant.h> 13#include <qvariant.h>
14#include <qheader.h> 14#include <qheader.h>
15#include <qlistview.h> 15#include <qlistview.h>
16#include <qpushbutton.h> 16#include <qpushbutton.h>
17#include <qlayout.h> 17#include <qlayout.h>
18#include <qtooltip.h> 18#include <qtooltip.h>
19#include <qwhatsthis.h> 19#include <qwhatsthis.h>
20 20
21/* 21/*
22 * Constructs a IncomingDialog_base as a child of 'parent', with the 22 * Constructs a IncomingDialog_base as a child of 'parent', with the
23 * name 'name' and widget flags set to 'f'. 23 * name 'name' and widget flags set to 'f'.
24 * 24 *
25 * The dialog will by default be modeless, unless you set 'modal' to 25 * The dialog will by default be modeless, unless you set 'modal' to
26 * TRUE to construct a modal dialog. 26 * TRUE to construct a modal dialog.
27 */ 27 */
28IncomingDialog_base::IncomingDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl ) 28IncomingDialog_base::IncomingDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl )
29 : QDialog( parent, name, modal, fl ) 29 : QDialog( parent, name, modal, fl )
30 30
31{ 31{
32 if ( !name ) 32 if ( !name )
33 setName( "IncomingDialog_base" ); 33 setName( "IncomingDialog_base" );
34 IncomingDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "IncomingDialog_baseLayout"); 34 IncomingDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "IncomingDialog_baseLayout");
35 35
36 PushButton4 = new QPushButton( this, "PushButton4" ); 36 PushButton4 = new QPushButton( this, "PushButton4" );
37 37
38 IncomingDialog_baseLayout->addWidget( PushButton4, 0, 1 ); 38 IncomingDialog_baseLayout->addWidget( PushButton4, 0, 1 );
39 39
40 PushButton7 = new QPushButton( this, "PushButton7" ); 40 PushButton7 = new QPushButton( this, "PushButton7" );
41 PushButton7->setDefault( TRUE ); 41 PushButton7->setDefault( TRUE );
42 42
43 IncomingDialog_baseLayout->addWidget( PushButton7, 5, 1 ); 43 IncomingDialog_baseLayout->addWidget( PushButton7, 5, 1 );
44 44
45 mMessageListView = new QListView( this, "mMessageListView" ); 45 mMessageListView = new QListView( this, "mMessageListView" );
46 mMessageListView->addColumn( tr2i18n( "Summary" ) ); 46 mMessageListView->addColumn( tr2i18n( "Summary" ) );
47 mMessageListView->addColumn( tr2i18n( "Start Date" ) ); 47 mMessageListView->addColumn( tr2i18n( "Start Date" ) );
48 mMessageListView->addColumn( tr2i18n( "Start Time" ) ); 48 mMessageListView->addColumn( tr2i18n( "Start Time" ) );
49 mMessageListView->addColumn( tr2i18n( "End Date" ) ); 49 mMessageListView->addColumn( tr2i18n( "End Date" ) );
50 mMessageListView->addColumn( tr2i18n( "End Time" ) ); 50 mMessageListView->addColumn( tr2i18n( "End Time" ) );
51 mMessageListView->addColumn( tr2i18n( "Organizer" ) ); 51 mMessageListView->addColumn( tr2i18n( "Organizer" ) );
52 mMessageListView->addColumn( tr2i18n( "Method" ) ); 52 mMessageListView->addColumn( tr2i18n( "Method" ) );
53 mMessageListView->addColumn( tr2i18n( "Status" ) ); 53 mMessageListView->addColumn( tr2i18n( "Status" ) );
54 mMessageListView->setAllColumnsShowFocus( FALSE ); 54 mMessageListView->setAllColumnsShowFocus( FALSE );
55 55
56 IncomingDialog_baseLayout->addMultiCellWidget( mMessageListView, 0, 5, 0, 0 ); 56 IncomingDialog_baseLayout->addMultiCellWidget( mMessageListView, 0, 5, 0, 0 );
57 57
58 PushButton7_2 = new QPushButton( this, "PushButton7_2" ); 58 PushButton7_2 = new QPushButton( this, "PushButton7_2" );
59 59
60 IncomingDialog_baseLayout->addWidget( PushButton7_2, 3, 1 ); 60 IncomingDialog_baseLayout->addWidget( PushButton7_2, 3, 1 );
61 61
62 PushButton8 = new QPushButton( this, "PushButton8" ); 62 PushButton8 = new QPushButton( this, "PushButton8" );
63 63
64 IncomingDialog_baseLayout->addWidget( PushButton8, 1, 1 ); 64 IncomingDialog_baseLayout->addWidget( PushButton8, 1, 1 );
65 65
66 PushButton9 = new QPushButton( this, "PushButton9" ); 66 PushButton9 = new QPushButton( this, "PushButton9" );
67 67
68 IncomingDialog_baseLayout->addWidget( PushButton9, 2, 1 ); 68 IncomingDialog_baseLayout->addWidget( PushButton9, 2, 1 );
69 QSpacerItem* spacer = new QSpacerItem( 20, 70, QSizePolicy::Minimum, QSizePolicy::Expanding ); 69 QSpacerItem* spacer = new QSpacerItem( 20, 70, QSizePolicy::Minimum, QSizePolicy::Expanding );
70 IncomingDialog_baseLayout->addItem( spacer, 4, 1 ); 70 IncomingDialog_baseLayout->addItem( spacer, 4, 1 );
71 languageChange(); 71 languageChange();
72 resize( QSize(525, 262).expandedTo(minimumSizeHint()) ); 72 resize( QSize(525, 262).expandedTo(minimumSizeHint()) );
73 73
74 // signals and slots connections 74 // signals and slots connections
75 connect( PushButton7, SIGNAL( clicked() ), this, SLOT( accept() ) ); 75 connect( PushButton7, SIGNAL( clicked() ), this, SLOT( accept() ) );
76 connect( PushButton4, SIGNAL( clicked() ), this, SLOT( retrieve() ) ); 76 connect( PushButton4, SIGNAL( clicked() ), this, SLOT( retrieve() ) );
77 connect( PushButton7_2, SIGNAL( clicked() ), this, SLOT( acceptAllMessages() ) ); 77 connect( PushButton7_2, SIGNAL( clicked() ), this, SLOT( acceptAllMessages() ) );
78 78
79 // tab order 79 // tab order
80 setTabOrder( PushButton7, PushButton4 ); 80 setTabOrder( PushButton7, PushButton4 );
81 setTabOrder( PushButton4, PushButton7_2 ); 81 setTabOrder( PushButton4, PushButton7_2 );
82 setTabOrder( PushButton7_2, mMessageListView ); 82 setTabOrder( PushButton7_2, mMessageListView );
83 setTabOrder( mMessageListView, PushButton8 ); 83 setTabOrder( mMessageListView, PushButton8 );
84 setTabOrder( PushButton8, PushButton9 ); 84 setTabOrder( PushButton8, PushButton9 );
85} 85}
86 86
87/* 87/*
88 * Destroys the object and frees any allocated resources 88 * Destroys the object and frees any allocated resources
89 */ 89 */
90IncomingDialog_base::~IncomingDialog_base() 90IncomingDialog_base::~IncomingDialog_base()
91{ 91{
92 // no need to delete child widgets, Qt does it all for us 92 // no need to delete child widgets, Qt does it all for us
93} 93}
94 94
95/* 95/*
96 * Sets the strings of the subwidgets using the current 96 * Sets the strings of the subwidgets using the current
97 * language. 97 * language.
98 */ 98 */
99void IncomingDialog_base::languageChange() 99void IncomingDialog_base::languageChange()
100{ 100{
101 setCaption( tr2i18n( "Scheduler - Incoming Messages" ) ); 101 setCaption( tr2i18n( "Scheduler - Incoming Messages" ) );
102 PushButton4->setText( tr2i18n( "Retrieve &Messages" ) ); 102 PushButton4->setText( tr2i18n( "Retrieve &Messages" ) );
103 PushButton7->setText( tr2i18n( "&Close" ) ); 103 PushButton7->setText( tr2i18n( "&Close" ) );
104 mMessageListView->header()->setLabel( 0, tr2i18n( "Summary" ) ); 104 mMessageListView->header()->setLabel( 0, tr2i18n( "Summary" ) );
105 mMessageListView->header()->setLabel( 1, tr2i18n( "Start Date" ) ); 105 mMessageListView->header()->setLabel( 1, tr2i18n( "Start Date" ) );
106 mMessageListView->header()->setLabel( 2, tr2i18n( "Start Time" ) ); 106 mMessageListView->header()->setLabel( 2, tr2i18n( "Start Time" ) );
107 mMessageListView->header()->setLabel( 3, tr2i18n( "End Date" ) ); 107 mMessageListView->header()->setLabel( 3, tr2i18n( "End Date" ) );
108 mMessageListView->header()->setLabel( 4, tr2i18n( "End Time" ) ); 108 mMessageListView->header()->setLabel( 4, tr2i18n( "End Time" ) );
109 mMessageListView->header()->setLabel( 5, tr2i18n( "Organizer" ) ); 109 mMessageListView->header()->setLabel( 5, tr2i18n( "Organizer" ) );
110 mMessageListView->header()->setLabel( 6, tr2i18n( "Method" ) ); 110 mMessageListView->header()->setLabel( 6, tr2i18n( "Method" ) );
111 mMessageListView->header()->setLabel( 7, tr2i18n( "Status" ) ); 111 mMessageListView->header()->setLabel( 7, tr2i18n( "Status" ) );
112 PushButton7_2->setText( tr2i18n( "Accept A&ll" ) ); 112 PushButton7_2->setText( tr2i18n( "Accept A&ll" ) );
113 PushButton8->setText( tr2i18n( "&Accept" ) ); 113 PushButton8->setText( tr2i18n( "&Accept" ) );
114 PushButton9->setText( tr2i18n( "&Reject" ) ); 114 PushButton9->setText( tr2i18n( "&Reject" ) );
115} 115}
116 116
117void IncomingDialog_base::acceptAllMessages() 117void IncomingDialog_base::acceptAllMessages()
118{ 118{
119 qWarning( "IncomingDialog_base::acceptAllMessages(): Not implemented yet" ); 119 qWarning( "IncomingDialog_base::acceptAllMessages(): Not implemented yet" );
120} 120}
121 121
122void IncomingDialog_base::acceptMessage() 122void IncomingDialog_base::acceptMessage()
123{ 123{
124 qWarning( "IncomingDialog_base::acceptMessage(): Not implemented yet" ); 124 qWarning( "IncomingDialog_base::acceptMessage(): Not implemented yet" );
125} 125}
126 126
127void IncomingDialog_base::rejectMessage() 127void IncomingDialog_base::rejectMessage()
128{ 128{
129 qWarning( "IncomingDialog_base::rejectMessage(): Not implemented yet" ); 129 qWarning( "IncomingDialog_base::rejectMessage(): Not implemented yet" );
130} 130}
131 131
132void IncomingDialog_base::retrieve() 132void IncomingDialog_base::retrieve()
133{ 133{
134 qWarning( "IncomingDialog_base::retrieve(): Not implemented yet" ); 134 qWarning( "IncomingDialog_base::retrieve(): Not implemented yet" );
135} 135}
136 136
137#include "incomingdialog_base.moc" 137//#include "incomingdialog_base.moc"
diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp
index d1d7946..7af5cf4 100644
--- a/korganizer/journalentry.cpp
+++ b/korganizer/journalentry.cpp
@@ -1,170 +1,170 @@
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 29
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kglobal.h> 31#include <kglobal.h>
32#include <klocale.h> 32#include <klocale.h>
33#include <ktextedit.h> 33#include <ktextedit.h>
34#include "koprefs.h" 34#include "koprefs.h"
35 35
36#include <libkcal/journal.h> 36#include <libkcal/journal.h>
37#include <libkcal/calendarresources.h> 37#include <libkcal/calendarresources.h>
38#include <libkcal/resourcecalendar.h> 38#include <libkcal/resourcecalendar.h>
39#include <kresources/resourceselectdialog.h> 39#include <kresources/resourceselectdialog.h>
40 40
41#include "journalentry.h" 41#include "journalentry.h"
42#include "journalentry.moc" 42//#include "journalentry.moc"
43#ifndef DESKTOP_VERSION 43#ifndef DESKTOP_VERSION
44#include <qpe/qpeapplication.h> 44#include <qpe/qpeapplication.h>
45#endif 45#endif
46JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) : 46JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) :
47 QFrame(parent) 47 QFrame(parent)
48{ 48{
49 mCalendar = calendar; 49 mCalendar = calendar;
50 mJournal = 0; 50 mJournal = 0;
51 mDirty = false; 51 mDirty = false;
52 52
53 mTitleLabel = new QLabel(i18n("Title"),this); 53 mTitleLabel = new QLabel(i18n("Title"),this);
54 mTitleLabel->setMargin(2); 54 mTitleLabel->setMargin(2);
55 mTitleLabel->setAlignment(AlignCenter); 55 mTitleLabel->setAlignment(AlignCenter);
56 56
57 mEditor = new KTextEdit(this); 57 mEditor = new KTextEdit(this);
58 connect(mEditor,SIGNAL(textChanged()),SLOT(setDirty())); 58 connect(mEditor,SIGNAL(textChanged()),SLOT(setDirty()));
59#ifndef DESKTOP_VERSION 59#ifndef DESKTOP_VERSION
60 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold ); 60 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold );
61#endif 61#endif
62 mEditor->setWordWrap( KTextEdit::WidgetWidth ); 62 mEditor->setWordWrap( KTextEdit::WidgetWidth );
63 QBoxLayout *topLayout = new QVBoxLayout(this); 63 QBoxLayout *topLayout = new QVBoxLayout(this);
64 topLayout->addWidget(mTitleLabel); 64 topLayout->addWidget(mTitleLabel);
65 topLayout->addWidget(mEditor); 65 topLayout->addWidget(mEditor);
66 mEditor->installEventFilter(this); 66 mEditor->installEventFilter(this);
67} 67}
68 68
69JournalEntry::~JournalEntry() 69JournalEntry::~JournalEntry()
70{ 70{
71} 71}
72 72
73void JournalEntry::setDate(const QDate &date) 73void JournalEntry::setDate(const QDate &date)
74{ 74{
75 writeJournal(); 75 writeJournal();
76 76
77 mTitleLabel->setText(KGlobal::locale()->formatDate(date)); 77 mTitleLabel->setText(KGlobal::locale()->formatDate(date));
78 78
79 79
80 mDate = date; 80 mDate = date;
81} 81}
82 82
83void JournalEntry::setJournal(Journal *journal) 83void JournalEntry::setJournal(Journal *journal)
84{ 84{
85 writeJournal(); 85 writeJournal();
86 86
87 mJournal = journal; 87 mJournal = journal;
88 88
89 mEditor->setText(mJournal->description()); 89 mEditor->setText(mJournal->description());
90 90
91 mDirty = false; 91 mDirty = false;
92} 92}
93 93
94Journal *JournalEntry::journal() const 94Journal *JournalEntry::journal() const
95{ 95{
96 return mJournal; 96 return mJournal;
97} 97}
98 98
99void JournalEntry::setDirty() 99void JournalEntry::setDirty()
100{ 100{
101 mDirty = true; 101 mDirty = true;
102 102
103// kdDebug() << "JournalEntry::setDirty()" << endl; 103// kdDebug() << "JournalEntry::setDirty()" << endl;
104} 104}
105 105
106void JournalEntry::clear() 106void JournalEntry::clear()
107{ 107{
108 mJournal = 0; 108 mJournal = 0;
109 mEditor->setText(""); 109 mEditor->setText("");
110} 110}
111 111
112bool JournalEntry::eventFilter( QObject *o, QEvent *e ) 112bool JournalEntry::eventFilter( QObject *o, QEvent *e )
113{ 113{
114// kdDebug() << "JournalEntry::event received " << e->type() << endl; 114// kdDebug() << "JournalEntry::event received " << e->type() << endl;
115 115
116 if ( e->type() == QEvent::FocusOut ) { 116 if ( e->type() == QEvent::FocusOut ) {
117 writeJournal(); 117 writeJournal();
118 } 118 }
119 if ( e->type() == QEvent::KeyPress ) { 119 if ( e->type() == QEvent::KeyPress ) {
120 QKeyEvent * k = (QKeyEvent *) e; 120 QKeyEvent * k = (QKeyEvent *) e;
121 if ( k->state() == Qt::ControlButton ) { 121 if ( k->state() == Qt::ControlButton ) {
122 k->ignore(); 122 k->ignore();
123 //return true; 123 //return true;
124 } 124 }
125 } 125 }
126 126
127 return QFrame::eventFilter( o, e ); // standard event processing 127 return QFrame::eventFilter( o, e ); // standard event processing
128} 128}
129 129
130void JournalEntry::writeJournal() 130void JournalEntry::writeJournal()
131{ 131{
132// kdDebug() << "JournalEntry::writeJournal()" << endl; 132// kdDebug() << "JournalEntry::writeJournal()" << endl;
133 if (!mDirty) return; 133 if (!mDirty) return;
134 134
135 if (mEditor->text().isEmpty()) { 135 if (mEditor->text().isEmpty()) {
136 if ( mJournal ) { 136 if ( mJournal ) {
137 mDirty = false; 137 mDirty = false;
138 bool conf = KOPrefs::instance()->mConfirm; 138 bool conf = KOPrefs::instance()->mConfirm;
139 KOPrefs::instance()->mConfirm = false; 139 KOPrefs::instance()->mConfirm = false;
140 emit deleteJournal(mJournal); 140 emit deleteJournal(mJournal);
141 KOPrefs::instance()->mConfirm = conf; 141 KOPrefs::instance()->mConfirm = conf;
142 mJournal = 0; 142 mJournal = 0;
143 } 143 }
144 return; 144 return;
145 } 145 }
146 146
147// kdDebug() << "JournalEntry::writeJournal()..." << endl; 147// kdDebug() << "JournalEntry::writeJournal()..." << endl;
148 148
149 if (!mJournal) { 149 if (!mJournal) {
150 mJournal = new Journal; 150 mJournal = new Journal;
151 mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0))); 151 mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0)));
152 mCalendar->addJournal(mJournal); 152 mCalendar->addJournal(mJournal);
153 } 153 }
154 154
155 mJournal->setDescription(mEditor->text()); 155 mJournal->setDescription(mEditor->text());
156 156
157 mDirty = false; 157 mDirty = false;
158} 158}
159 159
160void JournalEntry::flushEntry() 160void JournalEntry::flushEntry()
161{ 161{
162 if (!mDirty) return; 162 if (!mDirty) return;
163 163
164 writeJournal(); 164 writeJournal();
165} 165}
166void JournalEntry::keyPressEvent ( QKeyEvent * e ) 166void JournalEntry::keyPressEvent ( QKeyEvent * e )
167{ 167{
168 e->ignore(); 168 e->ignore();
169 169
170} 170}
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index 12e983b..7d0c516 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -1,364 +1,364 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001,2002 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#include <qstring.h> 24#include <qstring.h>
25#include <qkeycode.h> 25#include <qkeycode.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qtimer.h> 27#include <qtimer.h>
28#include <qframe.h> 28#include <qframe.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qapplication.h> 30#include <qapplication.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kglobal.h> 34#include <kglobal.h>
35 35
36#include "koglobals.h" 36#include "koglobals.h"
37#include "koprefs.h" 37#include "koprefs.h"
38#ifndef KORG_NOPLUGINS 38#ifndef KORG_NOPLUGINS
39#include "kocore.h" 39#include "kocore.h"
40#endif 40#endif
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#include "navigatorbar.h" 44#include "navigatorbar.h"
45 45
46#include "kdatenavigator.h" 46#include "kdatenavigator.h"
47 47
48KDateNavigator::KDateNavigator( QWidget *parent, Calendar *calendar, 48KDateNavigator::KDateNavigator( QWidget *parent, Calendar *calendar,
49 bool show_week_nums, const char *name, 49 bool show_week_nums, const char *name,
50 QDate startDate ) 50 QDate startDate )
51 : QFrame(parent, name), 51 : QFrame(parent, name),
52 updateTimer(0L) 52 updateTimer(0L)
53{ 53{
54 mCalendar = calendar; 54 mCalendar = calendar;
55 55
56 setFrameStyle(QFrame::NoFrame); 56 setFrameStyle(QFrame::NoFrame);
57 57
58 QGridLayout *topLayout = new QGridLayout(this,8,8); 58 QGridLayout *topLayout = new QGridLayout(this,8,8);
59 59
60 if (! startDate.isValid()) { 60 if (! startDate.isValid()) {
61 kdDebug() << "KDateNavigator::KDateNavigator(): an invalid date was passed as a parameter!" << endl; 61 kdDebug() << "KDateNavigator::KDateNavigator(): an invalid date was passed as a parameter!" << endl;
62 startDate = QDate::currentDate(); 62 startDate = QDate::currentDate();
63 } 63 }
64 64
65 mSelectedDates.append(startDate); 65 mSelectedDates.append(startDate);
66 m_MthYr = startDate; 66 m_MthYr = startDate;
67 m_bShowWeekNums = show_week_nums; 67 m_bShowWeekNums = show_week_nums;
68 68
69 setFont( KOPrefs::instance()->mDateNavigatorFont ); 69 setFont( KOPrefs::instance()->mDateNavigatorFont );
70 mNavigatorBar = new NavigatorBar( startDate, this ); 70 mNavigatorBar = new NavigatorBar( startDate, this );
71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); 71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 );
72 //mNavigatorBar->resize( 1,1); 72 //mNavigatorBar->resize( 1,1);
73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); 77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) );
78 78
79 // get the day of the week on the first day 79 // get the day of the week on the first day
80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
81 m_fstDayOfWk = dayone.dayOfWeek(); 81 m_fstDayOfWk = dayone.dayOfWeek();
82 82
83 int i; 83 int i;
84 84
85 // Set up the heading fields. 85 // Set up the heading fields.
86 for( i = 0; i < 7; i++ ) { 86 for( i = 0; i < 7; i++ ) {
87 headings[i] = new QLabel("",this); 87 headings[i] = new QLabel("",this);
88 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); 88 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold));
89 headings[i]->setAlignment(AlignCenter); 89 headings[i]->setAlignment(AlignCenter);
90 90
91 topLayout->addWidget(headings[i],1,i+1); 91 topLayout->addWidget(headings[i],1,i+1);
92 } 92 }
93 93
94 // Create the weeknumber labels 94 // Create the weeknumber labels
95 for( i = 0; i < 6; i++ ) { 95 for( i = 0; i < 6; i++ ) {
96 weeknos[i] = new QLabel(this); 96 weeknos[i] = new QLabel(this);
97 weeknos[i]->setAlignment(AlignCenter); 97 weeknos[i]->setAlignment(AlignCenter);
98 //weeknos[i]->setFont(QFont("Arial", 10)); 98 //weeknos[i]->setFont(QFont("Arial", 10));
99 if(!show_week_nums) { 99 if(!show_week_nums) {
100 weeknos[i]->hide(); 100 weeknos[i]->hide();
101 } 101 }
102 weeknos[i]->installEventFilter(this); 102 weeknos[i]->installEventFilter(this);
103 103
104 topLayout->addWidget(weeknos[i],i+2,0); 104 topLayout->addWidget(weeknos[i],i+2,0);
105 } 105 }
106 106
107 daymatrix = new KODayMatrix( this, mCalendar, dayone, 107 daymatrix = new KODayMatrix( this, mCalendar, dayone,
108 "KDateNavigator::DayMatrix"); 108 "KDateNavigator::DayMatrix");
109 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); 109 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken);
110 daymatrix->setLineWidth(1); 110 daymatrix->setLineWidth(1);
111 111
112 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ), 112 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ),
113 SIGNAL( datesSelected( const KCal::DateList & ) ) ); 113 SIGNAL( datesSelected( const KCal::DateList & ) ) );
114 114
115 connect( daymatrix, SIGNAL( eventDropped( Event * ) ), 115 connect( daymatrix, SIGNAL( eventDropped( Event * ) ),
116 SIGNAL( eventDropped( Event * ) ) ); 116 SIGNAL( eventDropped( Event * ) ) );
117 117
118 topLayout->addMultiCellWidget(daymatrix,2,7,1,7); 118 topLayout->addMultiCellWidget(daymatrix,2,7,1,7);
119 119
120 // read settings from configuration file. 120 // read settings from configuration file.
121 updateConfig(); 121 updateConfig();
122 enableRollover(FollowMonth); 122 enableRollover(FollowMonth);
123 setFixedSize ( sizeHint() ); 123 setFixedSize ( sizeHint() );
124} 124}
125 125
126void KDateNavigator::enableRollover(RolloverType r) 126void KDateNavigator::enableRollover(RolloverType r)
127{ 127{
128 switch(r) 128 switch(r)
129 { 129 {
130 case None : 130 case None :
131 if (updateTimer) 131 if (updateTimer)
132 { 132 {
133 updateTimer->stop(); 133 updateTimer->stop();
134 delete updateTimer; 134 delete updateTimer;
135 updateTimer=0L; 135 updateTimer=0L;
136 } 136 }
137 break; 137 break;
138 case FollowDay : 138 case FollowDay :
139 case FollowMonth : 139 case FollowMonth :
140 if (!updateTimer) 140 if (!updateTimer)
141 { 141 {
142 updateTimer = new QTimer(this); 142 updateTimer = new QTimer(this);
143 QObject::connect(updateTimer,SIGNAL(timeout()), 143 QObject::connect(updateTimer,SIGNAL(timeout()),
144 this,SLOT(possiblyPastMidnight())); 144 this,SLOT(possiblyPastMidnight()));
145 } 145 }
146 updateTimer->start(0,true); 146 updateTimer->start(0,true);
147 lastDayChecked = QDate::currentDate(); 147 lastDayChecked = QDate::currentDate();
148 } 148 }
149 updateRollover=r; 149 updateRollover=r;
150} 150}
151 151
152 152
153KDateNavigator::~KDateNavigator() 153KDateNavigator::~KDateNavigator()
154{ 154{
155} 155}
156 156
157 157
158void KDateNavigator::passedMidnight() 158void KDateNavigator::passedMidnight()
159{ 159{
160 QDate today = QDate::currentDate(); 160 QDate today = QDate::currentDate();
161 bool emitMonth = false; 161 bool emitMonth = false;
162 162
163 if (today.month() != lastDayChecked.month()) 163 if (today.month() != lastDayChecked.month())
164 { 164 {
165 if (updateRollover==FollowMonth && 165 if (updateRollover==FollowMonth &&
166 daymatrix->isEndOfMonth()) { 166 daymatrix->isEndOfMonth()) {
167 goNextMonth(); 167 goNextMonth();
168 emitMonth=true; 168 emitMonth=true;
169 } 169 }
170 } 170 }
171 daymatrix->recalculateToday(); 171 daymatrix->recalculateToday();
172 daymatrix->repaint(); 172 daymatrix->repaint();
173 emit dayPassed(today); 173 emit dayPassed(today);
174 if (emitMonth) { emit monthPassed(today); } 174 if (emitMonth) { emit monthPassed(today); }
175} 175}
176 176
177/* slot */ void KDateNavigator::possiblyPastMidnight() 177/* slot */ void KDateNavigator::possiblyPastMidnight()
178{ 178{
179 if (lastDayChecked!=QDate::currentDate()) 179 if (lastDayChecked!=QDate::currentDate())
180 { 180 {
181 passedMidnight(); 181 passedMidnight();
182 lastDayChecked=QDate::currentDate(); 182 lastDayChecked=QDate::currentDate();
183 } 183 }
184 // Set the timer to go off 1 second after midnight 184 // Set the timer to go off 1 second after midnight
185 // or after 8 minutes, whichever comes first. 185 // or after 8 minutes, whichever comes first.
186 if (updateTimer) 186 if (updateTimer)
187 { 187 {
188 QTime now = QTime::currentTime(); 188 QTime now = QTime::currentTime();
189 QTime midnight = QTime(23,59,59); 189 QTime midnight = QTime(23,59,59);
190 int msecsWait = QMIN(480000,now.msecsTo(midnight)+2000); 190 int msecsWait = QMIN(480000,now.msecsTo(midnight)+2000);
191 191
192 // qDebug(QString("Waiting %1 msec from %2 to %3.").arg(msecsWait)) 192 // qDebug(QString("Waiting %1 msec from %2 to %3.").arg(msecsWait))
193 //.arg(now.toString()).arg(midnight.toString())); 193 //.arg(now.toString()).arg(midnight.toString()));
194 194
195 updateTimer->stop(); 195 updateTimer->stop();
196 updateTimer->start(msecsWait,true); 196 updateTimer->start(msecsWait,true);
197 } 197 }
198} 198}
199 199
200void KDateNavigator::updateDates() 200void KDateNavigator::updateDates()
201{ 201{
202 // Find the first day of the week of the current month. 202 // Find the first day of the week of the current month.
203 //int d1 = KOGlobals::self()->calendarSystem()->day( m_MthYr ); 203 //int d1 = KOGlobals::self()->calendarSystem()->day( m_MthYr );
204 QDate dayone( m_MthYr.year(), m_MthYr.month(), m_MthYr.day() ); 204 QDate dayone( m_MthYr.year(), m_MthYr.month(), m_MthYr.day() );
205 int d2 = KOGlobals::self()->calendarSystem()->day( dayone ); 205 int d2 = KOGlobals::self()->calendarSystem()->day( dayone );
206 //int di = d1 - d2 + 1; 206 //int di = d1 - d2 + 1;
207 dayone = dayone.addDays( -d2 + 1 ); 207 dayone = dayone.addDays( -d2 + 1 );
208 208
209 int m_fstDayOfWkCalsys = KOGlobals::self()->calendarSystem()->dayOfWeek( dayone ); 209 int m_fstDayOfWkCalsys = KOGlobals::self()->calendarSystem()->dayOfWeek( dayone );
210 210
211 // If month begins on Monday and Monday is first day of week, 211 // If month begins on Monday and Monday is first day of week,
212 // month should begin on second line. Sunday doesn't have this problem. 212 // month should begin on second line. Sunday doesn't have this problem.
213 int nextLine = ( ( m_fstDayOfWkCalsys == 1) && 213 int nextLine = ( ( m_fstDayOfWkCalsys == 1) &&
214 ( KGlobal::locale()->weekStartsMonday() == 1 ) ) ? 7 : 0; 214 ( KGlobal::locale()->weekStartsMonday() == 1 ) ) ? 7 : 0;
215 215
216 // update the matrix dates 216 // update the matrix dates
217 int index = (KGlobal::locale()->weekStartsMonday() ? 1 : 0) - m_fstDayOfWkCalsys - nextLine; 217 int index = (KGlobal::locale()->weekStartsMonday() ? 1 : 0) - m_fstDayOfWkCalsys - nextLine;
218 218
219 219
220 daymatrix->updateView(dayone.addDays(index)); 220 daymatrix->updateView(dayone.addDays(index));
221//each updateDates is followed by an updateView -> repaint is issued there ! 221//each updateDates is followed by an updateView -> repaint is issued there !
222// daymatrix->repaint(); 222// daymatrix->repaint();
223} 223}
224 224
225void KDateNavigator::updateDayMatrix() 225void KDateNavigator::updateDayMatrix()
226{ 226{
227 daymatrix->updateView(); 227 daymatrix->updateView();
228 daymatrix->repaint(); 228 daymatrix->repaint();
229} 229}
230 230
231 231
232void KDateNavigator::updateView() 232void KDateNavigator::updateView()
233{ 233{
234 234
235 setUpdatesEnabled( false ); 235 setUpdatesEnabled( false );
236 236
237 int i; 237 int i;
238 238
239// kdDebug() << "updateView() -> daymatrix->updateView()" << endl; 239// kdDebug() << "updateView() -> daymatrix->updateView()" << endl;
240 daymatrix->updateView(); 240 daymatrix->updateView();
241 241
242 // set the week numbers. 242 // set the week numbers.
243 for(i = 0; i < 6; i++) { 243 for(i = 0; i < 6; i++) {
244 QString weeknum; 244 QString weeknum;
245 // remember, according to ISO 8601, the first week of the year is the 245 // remember, according to ISO 8601, the first week of the year is the
246 // first week that contains a thursday. Thus we must subtract off 4, 246 // first week that contains a thursday. Thus we must subtract off 4,
247 // not just 1. 247 // not just 1.
248 248
249 //ET int dayOfYear = buttons[(i + 1) * 7 - 4]->date().dayOfYear(); 249 //ET int dayOfYear = buttons[(i + 1) * 7 - 4]->date().dayOfYear();
250 int dayOfYear = KOGlobals::self()->calendarSystem()->dayOfYear((daymatrix->getDate((i+1)*7-4))); 250 int dayOfYear = KOGlobals::self()->calendarSystem()->dayOfYear((daymatrix->getDate((i+1)*7-4)));
251 251
252 if (dayOfYear % 7 != 0) 252 if (dayOfYear % 7 != 0)
253 weeknum.setNum(dayOfYear / 7 + 1); 253 weeknum.setNum(dayOfYear / 7 + 1);
254 else 254 else
255 weeknum.setNum(dayOfYear / 7); 255 weeknum.setNum(dayOfYear / 7);
256 weeknos[i]->setText(weeknum); 256 weeknos[i]->setText(weeknum);
257 } 257 }
258 258
259 setUpdatesEnabled( true ); 259 setUpdatesEnabled( true );
260// kdDebug() << "updateView() -> repaint()" << endl; 260// kdDebug() << "updateView() -> repaint()" << endl;
261 repaint(); 261 repaint();
262 daymatrix->repaint(); 262 daymatrix->repaint();
263} 263}
264 264
265void KDateNavigator::updateConfig() 265void KDateNavigator::updateConfig()
266{ 266{
267 int day; 267 int day;
268 for(int i=0; i<7; i++) { 268 for(int i=0; i<7; i++) {
269 // take the first letter of the day name to be the abbreviation 269 // take the first letter of the day name to be the abbreviation
270 if (KGlobal::locale()->weekStartsMonday()) { 270 if (KGlobal::locale()->weekStartsMonday()) {
271 day = i+1; 271 day = i+1;
272 } else { 272 } else {
273 if (i==0) day = 7; 273 if (i==0) day = 7;
274 else day = i; 274 else day = i;
275 } 275 }
276 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( day, 276 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( day,
277 true ); 277 true );
278 if ( KOPrefs::instance()->mCompactDialogs ) dayName = dayName.left( 1 ); 278 if ( KOPrefs::instance()->mCompactDialogs ) dayName = dayName.left( 1 );
279 headings[i]->setText( dayName ); 279 headings[i]->setText( dayName );
280 } 280 }
281 updateDates(); 281 updateDates();
282 updateView(); 282 updateView();
283} 283}
284 284
285void KDateNavigator::setShowWeekNums(bool enabled) 285void KDateNavigator::setShowWeekNums(bool enabled)
286{ 286{
287 m_bShowWeekNums = enabled; 287 m_bShowWeekNums = enabled;
288 for(int i=0; i<6; i++) { 288 for(int i=0; i<6; i++) {
289 if(enabled) 289 if(enabled)
290 weeknos[i]->show(); 290 weeknos[i]->show();
291 else 291 else
292 weeknos[i]->hide(); 292 weeknos[i]->hide();
293 } 293 }
294 resize(size()); 294 resize(size());
295} 295}
296 296
297void KDateNavigator::selectDates(const DateList& dateList) 297void KDateNavigator::selectDates(const DateList& dateList)
298{ 298{
299 299
300 if (dateList.count() > 0) { 300 if (dateList.count() > 0) {
301 mNavigatorBar->selectDates( dateList ); 301 mNavigatorBar->selectDates( dateList );
302 mSelectedDates = dateList; 302 mSelectedDates = dateList;
303 303
304 // set our record of the month and year that this datetbl is 304 // set our record of the month and year that this datetbl is
305 // displaying. 305 // displaying.
306 m_MthYr = mSelectedDates.first(); 306 m_MthYr = mSelectedDates.first();
307 307
308 308
309 // set our record of the first day of the week of the current 309 // set our record of the first day of the week of the current
310 // month. This needs to be done before calling dayToIndex, since it 310 // month. This needs to be done before calling dayToIndex, since it
311 // relies on this information being up to date. 311 // relies on this information being up to date.
312 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 312 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
313 m_fstDayOfWk = dayone.dayOfWeek(); 313 m_fstDayOfWk = dayone.dayOfWeek();
314 314
315 updateDates(); 315 updateDates();
316 316
317 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 317 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
318 318
319 updateView(); 319 updateView();
320 } 320 }
321} 321}
322 322
323int KDateNavigator::dayNum(int row, int col) 323int KDateNavigator::dayNum(int row, int col)
324{ 324{
325 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk; 325 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk;
326} 326}
327 327
328int KDateNavigator::dayToIndex(int dayNum) 328int KDateNavigator::dayToIndex(int dayNum)
329{ 329{
330 int row, col; 330 int row, col;
331 331
332 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7; 332 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7;
333 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1)) 333 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1))
334 row++; 334 row++;
335 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7; 335 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7;
336 return row * 7 + col; 336 return row * 7 + col;
337} 337}
338 338
339void KDateNavigator::wheelEvent (QWheelEvent *e) 339void KDateNavigator::wheelEvent (QWheelEvent *e)
340{ 340{
341 if(e->delta()>0) emit goPrevious(); 341 if(e->delta()>0) emit goPrevious();
342 else emit goNext(); 342 else emit goNext();
343 343
344 e->accept(); 344 e->accept();
345} 345}
346 346
347bool KDateNavigator::eventFilter (QObject *o,QEvent *e) 347bool KDateNavigator::eventFilter (QObject *o,QEvent *e)
348{ 348{
349 if (e->type() == QEvent::MouseButtonPress) { 349 if (e->type() == QEvent::MouseButtonPress) {
350 int i; 350 int i;
351 for(i=0;i<6;++i) { 351 for(i=0;i<6;++i) {
352 if (o == weeknos[i]) { 352 if (o == weeknos[i]) {
353 QDate weekstart = daymatrix->getDate(i*7); 353 QDate weekstart = daymatrix->getDate(i*7);
354 emit weekClicked(weekstart); 354 emit weekClicked(weekstart);
355 break; 355 break;
356 } 356 }
357 } 357 }
358 return true; 358 return true;
359 } else { 359 } else {
360 return false; 360 return false;
361 } 361 }
362} 362}
363 363
364#include "kdatenavigator.moc" 364//#include "kdatenavigator.moc"
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 607c250..6532705 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -1,433 +1,432 @@
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 Marcus Bains line. 5 Marcus Bains line.
6 Copyright (c) 2001 Ali Rahimi 6 Copyright (c) 2001 Ali Rahimi
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or 10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version. 11 (at your option) any later version.
12 12
13 This program is distributed in the hope that it will be useful, 13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details. 16 GNU General Public License for more details.
17 17
18 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 21
22 As a special exception, permission is given to link this program 22 As a special exception, permission is given to link this program
23 with any edition of Qt, and distribute the resulting executable, 23 with any edition of Qt, and distribute the resulting executable,
24 without including the source code for Qt in the source distribution. 24 without including the source code for Qt in the source distribution.
25*/ 25*/
26 26
27#ifndef _WIN32_ 27#ifndef _WIN32_
28#define protected public 28#define protected public
29#include <qwidget.h> 29#include <qwidget.h>
30#undef protected 30#undef protected
31#endif 31#endif
32#include <qintdict.h> 32#include <qintdict.h>
33#include <qdatetime.h> 33#include <qdatetime.h>
34#include <qapplication.h> 34#include <qapplication.h>
35#include <qpopupmenu.h> 35#include <qpopupmenu.h>
36#include <qcursor.h> 36#include <qcursor.h>
37#include <qpainter.h> 37#include <qpainter.h>
38 38
39#include <kdebug.h> 39#include <kdebug.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <kiconloader.h> 41#include <kiconloader.h>
42#include <kglobal.h> 42#include <kglobal.h>
43 43
44#include "koagendaitem.h" 44#include "koagendaitem.h"
45#include "koprefs.h" 45#include "koprefs.h"
46#include "koglobals.h" 46#include "koglobals.h"
47 47
48#include "koagenda.h" 48#include "koagenda.h"
49#include "koagenda.moc"
50 49
51#include <libkcal/event.h> 50#include <libkcal/event.h>
52#include <libkcal/todo.h> 51#include <libkcal/todo.h>
53 52
54#ifndef DESKTOP_VERSION 53#ifndef DESKTOP_VERSION
55#include <qpe/qpeapplication.h> 54#include <qpe/qpeapplication.h>
56#endif 55#endif
57 56
58//extern bool globalFlagBlockPainting; 57//extern bool globalFlagBlockPainting;
59extern int globalFlagBlockAgenda; 58extern int globalFlagBlockAgenda;
60extern int globalFlagBlockAgendaItemPaint; 59extern int globalFlagBlockAgendaItemPaint;
61extern int globalFlagBlockAgendaItemUpdate; 60extern int globalFlagBlockAgendaItemUpdate;
62extern int globalFlagBlockStartup; 61extern int globalFlagBlockStartup;
63 62
64//////////////////////////////////////////////////////////////////////////// 63////////////////////////////////////////////////////////////////////////////
65MarcusBains::MarcusBains(KOAgenda *_agenda,const char *name) 64MarcusBains::MarcusBains(KOAgenda *_agenda,const char *name)
66 : QFrame(_agenda->viewport(),name), agenda(_agenda) 65 : QFrame(_agenda->viewport(),name), agenda(_agenda)
67{ 66{
68 setLineWidth(0); 67 setLineWidth(0);
69 setMargin(0); 68 setMargin(0);
70 setBackgroundColor(Qt::red); 69 setBackgroundColor(Qt::red);
71 minutes = new QTimer(this); 70 minutes = new QTimer(this);
72 connect(minutes, SIGNAL(timeout()), this, SLOT(updateLoc())); 71 connect(minutes, SIGNAL(timeout()), this, SLOT(updateLoc()));
73 minutes->start(0, true); 72 minutes->start(0, true);
74 73
75 mTimeBox = new QLabel(this); 74 mTimeBox = new QLabel(this);
76 mTimeBox->setAlignment(Qt::AlignRight | Qt::AlignBottom); 75 mTimeBox->setAlignment(Qt::AlignRight | Qt::AlignBottom);
77 QPalette pal = mTimeBox->palette(); 76 QPalette pal = mTimeBox->palette();
78 pal.setColor(QColorGroup::Foreground, Qt::red); 77 pal.setColor(QColorGroup::Foreground, Qt::red);
79 mTimeBox->setPalette(pal); 78 mTimeBox->setPalette(pal);
80 //mTimeBox->setAutoMask(true); 79 //mTimeBox->setAutoMask(true);
81 80
82 agenda->addChild(mTimeBox); 81 agenda->addChild(mTimeBox);
83 82
84 oldToday = -1; 83 oldToday = -1;
85} 84}
86 85
87MarcusBains::~MarcusBains() 86MarcusBains::~MarcusBains()
88{ 87{
89 delete minutes; 88 delete minutes;
90} 89}
91 90
92int MarcusBains::todayColumn() 91int MarcusBains::todayColumn()
93{ 92{
94 QDate currentDate = QDate::currentDate(); 93 QDate currentDate = QDate::currentDate();
95 94
96 DateList dateList = agenda->dateList(); 95 DateList dateList = agenda->dateList();
97 DateList::ConstIterator it; 96 DateList::ConstIterator it;
98 int col = 0; 97 int col = 0;
99 for(it = dateList.begin(); it != dateList.end(); ++it) { 98 for(it = dateList.begin(); it != dateList.end(); ++it) {
100 if((*it) == currentDate) 99 if((*it) == currentDate)
101 return KOGlobals::self()->reverseLayout() ? 100 return KOGlobals::self()->reverseLayout() ?
102 agenda->columns() - 1 - col : col; 101 agenda->columns() - 1 - col : col;
103 ++col; 102 ++col;
104 } 103 }
105 104
106 return -1; 105 return -1;
107} 106}
108void MarcusBains::updateLoc() 107void MarcusBains::updateLoc()
109{ 108{
110 updateLocation(); 109 updateLocation();
111} 110}
112void MarcusBains::updateLocation(bool recalculate) 111void MarcusBains::updateLocation(bool recalculate)
113{ 112{
114 113
115 QTime tim = QTime::currentTime(); 114 QTime tim = QTime::currentTime();
116 //qDebug(" MarcusBains::updateLocation %s ", tim.toString().latin1()); 115 //qDebug(" MarcusBains::updateLocation %s ", tim.toString().latin1());
117 if((tim.hour() == 0) && (oldTime.hour()==23)) 116 if((tim.hour() == 0) && (oldTime.hour()==23))
118 recalculate = true; 117 recalculate = true;
119 118
120 int mins = tim.hour()*60 + tim.minute(); 119 int mins = tim.hour()*60 + tim.minute();
121 int minutesPerCell = 24 * 60 / agenda->rows(); 120 int minutesPerCell = 24 * 60 / agenda->rows();
122 int y = mins*agenda->gridSpacingY()/minutesPerCell; 121 int y = mins*agenda->gridSpacingY()/minutesPerCell;
123 int today = recalculate ? todayColumn() : oldToday; 122 int today = recalculate ? todayColumn() : oldToday;
124 int x = agenda->gridSpacingX()*today; 123 int x = agenda->gridSpacingX()*today;
125 bool disabled = !(KOPrefs::instance()->mMarcusBainsEnabled); 124 bool disabled = !(KOPrefs::instance()->mMarcusBainsEnabled);
126 125
127 oldTime = tim; 126 oldTime = tim;
128 oldToday = today; 127 oldToday = today;
129 128
130 if(disabled || (today<0)) { 129 if(disabled || (today<0)) {
131 hide(); mTimeBox->hide(); 130 hide(); mTimeBox->hide();
132 return; 131 return;
133 } else { 132 } else {
134 show(); mTimeBox->show(); 133 show(); mTimeBox->show();
135 } 134 }
136 135
137 if(recalculate) 136 if(recalculate)
138 setFixedSize(agenda->gridSpacingX(),1); 137 setFixedSize(agenda->gridSpacingX(),1);
139 agenda->moveChild(this, x, y); 138 agenda->moveChild(this, x, y);
140 raise(); 139 raise();
141 140
142 if(recalculate) 141 if(recalculate)
143 //mTimeBox->setFont(QFont("helvetica",10)); 142 //mTimeBox->setFont(QFont("helvetica",10));
144 mTimeBox->setFont(KOPrefs::instance()->mMarcusBainsFont); 143 mTimeBox->setFont(KOPrefs::instance()->mMarcusBainsFont);
145 144
146 mTimeBox->setText(KGlobal::locale()->formatTime(tim, KOPrefs::instance()->mMarcusBainsShowSeconds)); 145 mTimeBox->setText(KGlobal::locale()->formatTime(tim, KOPrefs::instance()->mMarcusBainsShowSeconds));
147 mTimeBox->adjustSize(); 146 mTimeBox->adjustSize();
148 // the -2 below is there because there is a bug in this program 147 // the -2 below is there because there is a bug in this program
149 // somewhere, where the last column of this widget is a few pixels 148 // somewhere, where the last column of this widget is a few pixels
150 // narrower than the other columns. 149 // narrower than the other columns.
151 int offs = (today==agenda->columns()-1) ? -4 : 0; 150 int offs = (today==agenda->columns()-1) ? -4 : 0;
152 agenda->moveChild(mTimeBox, 151 agenda->moveChild(mTimeBox,
153 x+agenda->gridSpacingX()-mTimeBox->width()+offs-1, 152 x+agenda->gridSpacingX()-mTimeBox->width()+offs-1,
154 y-mTimeBox->height()); 153 y-mTimeBox->height());
155 154
156 mTimeBox->raise(); 155 mTimeBox->raise();
157 //mTimeBox->setAutoMask(true); 156 //mTimeBox->setAutoMask(true);
158 minutes->start(5000,true); 157 minutes->start(5000,true);
159} 158}
160 159
161 160
162//////////////////////////////////////////////////////////////////////////// 161////////////////////////////////////////////////////////////////////////////
163 162
164 163
165/* 164/*
166 Create an agenda widget with rows rows and columns columns. 165 Create an agenda widget with rows rows and columns columns.
167*/ 166*/
168KOAgenda::KOAgenda(int columns,int rows,int rowSize,QWidget *parent, 167KOAgenda::KOAgenda(int columns,int rows,int rowSize,QWidget *parent,
169 const char *name,WFlags f) : 168 const char *name,WFlags f) :
170 QScrollView(parent,name,f) 169 QScrollView(parent,name,f)
171{ 170{
172 171
173 mColumns = columns; 172 mColumns = columns;
174 mRows = rows; 173 mRows = rows;
175 mGridSpacingY = rowSize; 174 mGridSpacingY = rowSize;
176 mAllDayMode = false; 175 mAllDayMode = false;
177#ifndef DESKTOP_VERSION 176#ifndef DESKTOP_VERSION
178 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 177 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
179#endif 178#endif
180 mHolidayMask = 0; 179 mHolidayMask = 0;
181 init(); 180 init();
182} 181}
183 182
184/* 183/*
185 Create an agenda widget with columns columns and one row. This is used for 184 Create an agenda widget with columns columns and one row. This is used for
186 all-day events. 185 all-day events.
187*/ 186*/
188KOAgenda::KOAgenda(int columns,QWidget *parent,const char *name,WFlags f) : 187KOAgenda::KOAgenda(int columns,QWidget *parent,const char *name,WFlags f) :
189 QScrollView(parent,name,f) 188 QScrollView(parent,name,f)
190{ 189{
191 190
192 blockResize = false; 191 blockResize = false;
193 mColumns = columns; 192 mColumns = columns;
194 mRows = 1; 193 mRows = 1;
195 //qDebug("aaaaaaaaaaaaaaaaaaldays %d ", KOPrefs::instance()->mAllDaySize); 194 //qDebug("aaaaaaaaaaaaaaaaaaldays %d ", KOPrefs::instance()->mAllDaySize);
196 mGridSpacingY = KOPrefs::instance()->mAllDaySize; 195 mGridSpacingY = KOPrefs::instance()->mAllDaySize;
197 mAllDayMode = true; 196 mAllDayMode = true;
198#ifndef DESKTOP_VERSION 197#ifndef DESKTOP_VERSION
199 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 198 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
200#endif 199#endif
201 mHolidayMask = 0; 200 mHolidayMask = 0;
202 init(); 201 init();
203} 202}
204 203
205 204
206KOAgenda::~KOAgenda() 205KOAgenda::~KOAgenda()
207{ 206{
208 if(mMarcusBains) delete mMarcusBains; 207 if(mMarcusBains) delete mMarcusBains;
209 208
210} 209}
211 210
212Incidence *KOAgenda::selectedIncidence() const 211Incidence *KOAgenda::selectedIncidence() const
213{ 212{
214 return (mSelectedItem ? mSelectedItem->incidence() : 0); 213 return (mSelectedItem ? mSelectedItem->incidence() : 0);
215} 214}
216 215
217 216
218QDate KOAgenda::selectedIncidenceDate() const 217QDate KOAgenda::selectedIncidenceDate() const
219{ 218{
220 return (mSelectedItem ? mSelectedItem->itemDate() : QDate()); 219 return (mSelectedItem ? mSelectedItem->itemDate() : QDate());
221} 220}
222 221
223 222
224void KOAgenda::init() 223void KOAgenda::init()
225{ 224{
226#ifndef _WIN32_ 225#ifndef _WIN32_
227 int wflags = viewport()-> getWFlags() |WRepaintNoErase;//WResizeNoErase 226 int wflags = viewport()-> getWFlags() |WRepaintNoErase;//WResizeNoErase
228 viewport()->setWFlags ( wflags); 227 viewport()->setWFlags ( wflags);
229#endif 228#endif
230 mGridSpacingX = 80; 229 mGridSpacingX = 80;
231 mResizeBorderWidth = 8; 230 mResizeBorderWidth = 8;
232 mScrollBorderWidth = 8; 231 mScrollBorderWidth = 8;
233 mScrollDelay = 30; 232 mScrollDelay = 30;
234 mScrollOffset = 10; 233 mScrollOffset = 10;
235 mPaintPixmap.resize( 20,20); 234 mPaintPixmap.resize( 20,20);
236 //enableClipper(true); 235 //enableClipper(true);
237 236
238 // Grab key strokes for keyboard navigation of agenda. Seems to have no 237 // Grab key strokes for keyboard navigation of agenda. Seems to have no
239 // effect. Has to be fixed. 238 // effect. Has to be fixed.
240 setFocusPolicy(WheelFocus); 239 setFocusPolicy(WheelFocus);
241 240
242 connect(&mScrollUpTimer,SIGNAL(timeout()),SLOT(scrollUp())); 241 connect(&mScrollUpTimer,SIGNAL(timeout()),SLOT(scrollUp()));
243 connect(&mScrollDownTimer,SIGNAL(timeout()),SLOT(scrollDown())); 242 connect(&mScrollDownTimer,SIGNAL(timeout()),SLOT(scrollDown()));
244 connect(&mResizeTimer,SIGNAL(timeout()),SLOT(finishResize())); 243 connect(&mResizeTimer,SIGNAL(timeout()),SLOT(finishResize()));
245 244
246 mStartCellX = 0; 245 mStartCellX = 0;
247 mStartCellY = 0; 246 mStartCellY = 0;
248 mCurrentCellX = 0; 247 mCurrentCellX = 0;
249 mCurrentCellY = 0; 248 mCurrentCellY = 0;
250 249
251 mSelectionCellX = 0; 250 mSelectionCellX = 0;
252 mSelectionYTop = 0; 251 mSelectionYTop = 0;
253 mSelectionHeight = 0; 252 mSelectionHeight = 0;
254 253
255 mOldLowerScrollValue = -1; 254 mOldLowerScrollValue = -1;
256 mOldUpperScrollValue = -1; 255 mOldUpperScrollValue = -1;
257 256
258 mClickedItem = 0; 257 mClickedItem = 0;
259 258
260 mActionItem = 0; 259 mActionItem = 0;
261 mActionType = NOP; 260 mActionType = NOP;
262 mItemMoved = false; 261 mItemMoved = false;
263 262
264 mSelectedItem = 0; 263 mSelectedItem = 0;
265 264
266 // mItems.setAutoDelete(true); 265 // mItems.setAutoDelete(true);
267 266
268 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 267 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
269 268
270 viewport()->update(); 269 viewport()->update();
271 270
272 setMinimumSize(30, 1); 271 setMinimumSize(30, 1);
273// setMaximumHeight(mGridSpacingY * mRows + 5); 272// setMaximumHeight(mGridSpacingY * mRows + 5);
274 273
275 // Disable horizontal scrollbar. This is a hack. The geometry should be 274 // Disable horizontal scrollbar. This is a hack. The geometry should be
276 // controlled in a way that the contents horizontally always fits. Then it is 275 // controlled in a way that the contents horizontally always fits. Then it is
277 // not necessary to turn off the scrollbar. 276 // not necessary to turn off the scrollbar.
278 setHScrollBarMode(AlwaysOff); 277 setHScrollBarMode(AlwaysOff);
279 if ( ! mAllDayMode ) 278 if ( ! mAllDayMode )
280 setVScrollBarMode(AlwaysOn); 279 setVScrollBarMode(AlwaysOn);
281 else 280 else
282 setVScrollBarMode(AlwaysOff); 281 setVScrollBarMode(AlwaysOff);
283 282
284 setStartHour(KOPrefs::instance()->mDayBegins); 283 setStartHour(KOPrefs::instance()->mDayBegins);
285 284
286 calculateWorkingHours(); 285 calculateWorkingHours();
287 286
288 connect(verticalScrollBar(),SIGNAL(valueChanged(int)), 287 connect(verticalScrollBar(),SIGNAL(valueChanged(int)),
289 SLOT(checkScrollBoundaries(int))); 288 SLOT(checkScrollBoundaries(int)));
290 289
291 // Create the Marcus Bains line. 290 // Create the Marcus Bains line.
292 if(mAllDayMode) 291 if(mAllDayMode)
293 mMarcusBains = 0; 292 mMarcusBains = 0;
294 else { 293 else {
295 mMarcusBains = new MarcusBains(this); 294 mMarcusBains = new MarcusBains(this);
296 addChild(mMarcusBains); 295 addChild(mMarcusBains);
297 } 296 }
298} 297}
299 298
300void KOAgenda::clear() 299void KOAgenda::clear()
301{ 300{
302 KOAgendaItem *item; 301 KOAgendaItem *item;
303 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 302 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
304 mUnusedItems.append( item ); 303 mUnusedItems.append( item );
305 //item->hide(); 304 //item->hide();
306 } 305 }
307 mItems.clear(); 306 mItems.clear();
308 mSelectedItem = 0; 307 mSelectedItem = 0;
309 clearSelection(); 308 clearSelection();
310} 309}
311 310
312void KOAgenda::clearSelection() 311void KOAgenda::clearSelection()
313{ 312{
314 mSelectionCellX = 0; 313 mSelectionCellX = 0;
315 mSelectionYTop = 0; 314 mSelectionYTop = 0;
316 mSelectionHeight = 0; 315 mSelectionHeight = 0;
317} 316}
318 317
319void KOAgenda::marcus_bains() 318void KOAgenda::marcus_bains()
320{ 319{
321 if(mMarcusBains) mMarcusBains->updateLocation(true); 320 if(mMarcusBains) mMarcusBains->updateLocation(true);
322} 321}
323 322
324 323
325void KOAgenda::changeColumns(int columns) 324void KOAgenda::changeColumns(int columns)
326{ 325{
327 if (columns == 0) { 326 if (columns == 0) {
328 kdDebug() << "KOAgenda::changeColumns() called with argument 0" << endl; 327 kdDebug() << "KOAgenda::changeColumns() called with argument 0" << endl;
329 return; 328 return;
330 } 329 }
331 330
332 clear(); 331 clear();
333 332
334 mColumns = columns; 333 mColumns = columns;
335// setMinimumSize(mColumns * 10, mGridSpacingY + 1); 334// setMinimumSize(mColumns * 10, mGridSpacingY + 1);
336// init(); 335// init();
337// update(); 336// update();
338 //qDebug("KOAgenda::changeColumns "); 337 //qDebug("KOAgenda::changeColumns ");
339 computeSizes(); 338 computeSizes();
340 // QResizeEvent event( size(), size() ); 339 // QResizeEvent event( size(), size() );
341 340
342 //QApplication::sendEvent( this, &event ); 341 //QApplication::sendEvent( this, &event );
343} 342}
344 343
345/* 344/*
346 This is the eventFilter function, which gets all events from the KOAgendaItems 345 This is the eventFilter function, which gets all events from the KOAgendaItems
347 contained in the agenda. It has to handle moving and resizing for all items. 346 contained in the agenda. It has to handle moving and resizing for all items.
348*/ 347*/
349bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) 348bool KOAgenda::eventFilter ( QObject *object, QEvent *event )
350{ 349{
351// kdDebug() << "KOAgenda::eventFilter" << endl; 350// kdDebug() << "KOAgenda::eventFilter" << endl;
352 switch(event->type()) { 351 switch(event->type()) {
353 case QEvent::MouseButtonPress: 352 case QEvent::MouseButtonPress:
354 case QEvent::MouseButtonDblClick: 353 case QEvent::MouseButtonDblClick:
355 case QEvent::MouseButtonRelease: 354 case QEvent::MouseButtonRelease:
356 case QEvent::MouseMove: 355 case QEvent::MouseMove:
357 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event)); 356 return eventFilter_mouse(object, static_cast<QMouseEvent *>(event));
358 357
359 case (QEvent::Leave): 358 case (QEvent::Leave):
360 if (!mActionItem) 359 if (!mActionItem)
361 setCursor(arrowCursor); 360 setCursor(arrowCursor);
362 return true; 361 return true;
363 362
364 default: 363 default:
365 return QScrollView::eventFilter(object,event); 364 return QScrollView::eventFilter(object,event);
366 } 365 }
367} 366}
368 367
369 368
370bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) 369bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
371{ 370{
372 //qDebug("KOAgenda::eventFilter_mous "); 371 //qDebug("KOAgenda::eventFilter_mous ");
373 QPoint viewportPos; 372 QPoint viewportPos;
374 if (object != viewport()) { 373 if (object != viewport()) {
375 viewportPos = ((QWidget *)object)->mapToParent(me->pos()); 374 viewportPos = ((QWidget *)object)->mapToParent(me->pos());
376 } else { 375 } else {
377 viewportPos = me->pos(); 376 viewportPos = me->pos();
378 } 377 }
379 static int startX = 0; 378 static int startX = 0;
380 static int startY = 0; 379 static int startY = 0;
381 static bool block = true; 380 static bool block = true;
382 switch (me->type()) { 381 switch (me->type()) {
383 case QEvent::MouseButtonPress: 382 case QEvent::MouseButtonPress:
384 //qDebug("QEvent::MouseButtonPress: "); 383 //qDebug("QEvent::MouseButtonPress: ");
385 // kdDebug() << "koagenda: filtered button press" << endl; 384 // kdDebug() << "koagenda: filtered button press" << endl;
386 if (object != viewport()) { 385 if (object != viewport()) {
387 if (me->button() == RightButton) { 386 if (me->button() == RightButton) {
388 387
389 mClickedItem = (KOAgendaItem *)object; 388 mClickedItem = (KOAgendaItem *)object;
390 if (mClickedItem) { 389 if (mClickedItem) {
391 selectItem(mClickedItem); 390 selectItem(mClickedItem);
392 // emit showIncidencePopupSignal(mClickedItem->incidence()); 391 // emit showIncidencePopupSignal(mClickedItem->incidence());
393 } 392 }
394 //mItemPopup->popup(QCursor::pos()); 393 //mItemPopup->popup(QCursor::pos());
395 } else { 394 } else {
396 mActionItem = (KOAgendaItem *)object; 395 mActionItem = (KOAgendaItem *)object;
397 if (mActionItem) { 396 if (mActionItem) {
398 if ( mSelectionHeight > 0 ) { 397 if ( mSelectionHeight > 0 ) {
399 int selectionCellX = mSelectionCellX * mGridSpacingX; 398 int selectionCellX = mSelectionCellX * mGridSpacingX;
400 int selectionYTop = mSelectionYTop; 399 int selectionYTop = mSelectionYTop;
401 int gridSpacingX = mGridSpacingX; 400 int gridSpacingX = mGridSpacingX;
402 int selectionHeight = mSelectionHeight; 401 int selectionHeight = mSelectionHeight;
403 clearSelection(); 402 clearSelection();
404 repaintContents( selectionCellX, selectionYTop, 403 repaintContents( selectionCellX, selectionYTop,
405 gridSpacingX, selectionHeight,false ); 404 gridSpacingX, selectionHeight,false );
406 } 405 }
407 selectItem(mActionItem); 406 selectItem(mActionItem);
408 Incidence *incidence = mActionItem->incidence(); 407 Incidence *incidence = mActionItem->incidence();
409 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { 408 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) {
410 mActionItem = 0; 409 mActionItem = 0;
411 } else { 410 } else {
412 startItemAction(viewportPos); 411 startItemAction(viewportPos);
413 startX = viewportPos.x(); 412 startX = viewportPos.x();
414 startY = viewportPos.y(); 413 startY = viewportPos.y();
415 block = true; 414 block = true;
416 } 415 }
417 } 416 }
418 } 417 }
419 } else { 418 } else {
420 selectItem(0); 419 selectItem(0);
421 mActionItem = 0; 420 mActionItem = 0;
422 setCursor(arrowCursor); 421 setCursor(arrowCursor);
423 startSelectAction(viewportPos); 422 startSelectAction(viewportPos);
424 } 423 }
425 break; 424 break;
426 425
427 case QEvent::MouseButtonRelease: 426 case QEvent::MouseButtonRelease:
428 //qDebug("QEvent::MouseButtonRelease: "); 427 //qDebug("QEvent::MouseButtonRelease: ");
429 if (me->button() == RightButton && block ) { 428 if (me->button() == RightButton && block ) {
430 if (object != viewport()) { 429 if (object != viewport()) {
431 mClickedItem = (KOAgendaItem *)object; 430 mClickedItem = (KOAgendaItem *)object;
432 if (mActionItem ) { 431 if (mActionItem ) {
433 endItemAction(); 432 endItemAction();
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index 02fd33b..a39feb1 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -1,434 +1,434 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 19
20#include <qlabel.h> 20#include <qlabel.h>
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qhbox.h> 22#include <qhbox.h>
23#include <qvbox.h> 23#include <qvbox.h>
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qwhatsthis.h> 25#include <qwhatsthis.h>
26#include <qdragobject.h> 26#include <qdragobject.h>
27#include <qdrawutil.h> 27#include <qdrawutil.h>
28#include <qpainter.h> 28#include <qpainter.h>
29 29
30#include <kiconloader.h> 30#include <kiconloader.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <klocale.h> 33#include <klocale.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
36#define AGENDA_ICON_SIZE 5 36#define AGENDA_ICON_SIZE 5
37#else 37#else
38#define AGENDA_ICON_SIZE 7 38#define AGENDA_ICON_SIZE 7
39#endif 39#endif
40#include <libkcal/icaldrag.h> 40#include <libkcal/icaldrag.h>
41#include <libkcal/vcaldrag.h> 41#include <libkcal/vcaldrag.h>
42#include <libkdepim/kincidenceformatter.h> 42#include <libkdepim/kincidenceformatter.h>
43extern int globalFlagBlockAgenda; 43extern int globalFlagBlockAgenda;
44extern int globalFlagBlockAgendaItemPaint; 44extern int globalFlagBlockAgendaItemPaint;
45extern int globalFlagBlockAgendaItemUpdate; 45extern int globalFlagBlockAgendaItemUpdate;
46 46
47#include "koprefs.h" 47#include "koprefs.h"
48 48
49#include "koagendaitem.h" 49#include "koagendaitem.h"
50#include "koagendaitem.moc" 50//#include "koagendaitem.moc"
51 51
52 52
53//-------------------------------------------------------------------------- 53//--------------------------------------------------------------------------
54 54
55QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; 55QToolTipGroup *KOAgendaItem::mToolTipGroup = 0;
56 56
57//-------------------------------------------------------------------------- 57//--------------------------------------------------------------------------
58 58
59KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, 59KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday,
60 const char *name,WFlags) : 60 const char *name,WFlags) :
61 QWidget(parent, name), mIncidence(incidence), mDate(qd) 61 QWidget(parent, name), mIncidence(incidence), mDate(qd)
62{ 62{
63#ifndef DESKTOP_VERSION 63#ifndef DESKTOP_VERSION
64 QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); 64 QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
65#endif 65#endif
66 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase 66 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase
67 setWFlags ( wflags); 67 setWFlags ( wflags);
68 mAllDay = allday; 68 mAllDay = allday;
69 init ( incidence, qd ); 69 init ( incidence, qd );
70 setMouseTracking(true); 70 setMouseTracking(true);
71 //setAcceptDrops(true); 71 //setAcceptDrops(true);
72 xPaintCoord = -1; 72 xPaintCoord = -1;
73 yPaintCoord = -1; 73 yPaintCoord = -1;
74} 74}
75 75
76void KOAgendaItem::init ( Incidence *incidence, QDate qd ) 76void KOAgendaItem::init ( Incidence *incidence, QDate qd )
77{ 77{
78 mIncidence = incidence; 78 mIncidence = incidence;
79 mDate = qd; 79 mDate = qd;
80 mFirstMultiItem = 0; 80 mFirstMultiItem = 0;
81 mNextMultiItem = 0; 81 mNextMultiItem = 0;
82 mLastMultiItem = 0; 82 mLastMultiItem = 0;
83 computeText(); 83 computeText();
84 84
85 if ( (incidence->type() == "Todo") && 85 if ( (incidence->type() == "Todo") &&
86 ( !((static_cast<Todo*>(incidence))->isCompleted()) && 86 ( !((static_cast<Todo*>(incidence))->isCompleted()) &&
87 ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) { 87 ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) {
88 if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date()) 88 if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date())
89 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; 89 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ;
90 else 90 else
91 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; 91 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor;
92 } 92 }
93 else { 93 else {
94 QStringList categories = mIncidence->categories(); 94 QStringList categories = mIncidence->categories();
95 QString cat = categories.first(); 95 QString cat = categories.first();
96 if (cat.isEmpty()) { 96 if (cat.isEmpty()) {
97 mBackgroundColor =KOPrefs::instance()->mEventColor; 97 mBackgroundColor =KOPrefs::instance()->mEventColor;
98 } else { 98 } else {
99 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); 99 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat);
100 } 100 }
101 } 101 }
102 mColorGroup = QColorGroup( mBackgroundColor.light(), 102 mColorGroup = QColorGroup( mBackgroundColor.light(),
103 mBackgroundColor.dark(),mBackgroundColor.light(), 103 mBackgroundColor.dark(),mBackgroundColor.light(),
104 mBackgroundColor.dark(),mBackgroundColor, black, mBackgroundColor) ; 104 mBackgroundColor.dark(),mBackgroundColor, black, mBackgroundColor) ;
105 setBackgroundColor( mBackgroundColor ); 105 setBackgroundColor( mBackgroundColor );
106 106
107 setCellXY(0,0,1); 107 setCellXY(0,0,1);
108 setCellXWidth(0); 108 setCellXWidth(0);
109 setSubCell(0); 109 setSubCell(0);
110 setSubCells(1); 110 setSubCells(1);
111 setMultiItem(0,0,0); 111 setMultiItem(0,0,0);
112 startMove(); 112 startMove();
113 mSelected = true; 113 mSelected = true;
114 select(false); 114 select(false);
115 QString tipText = mIncidence->summary(); 115 QString tipText = mIncidence->summary();
116 // QToolTip::add(this,tipText); 116 // QToolTip::add(this,tipText);
117 QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); 117 QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
118 if ( !mIncidence->doesFloat() ) 118 if ( !mIncidence->doesFloat() )
119 if ( mIncidence->type() == "Event" ) { 119 if ( mIncidence->type() == "Event" ) {
120 if ( (static_cast<Event*>(mIncidence))->isMultiDay() ) { 120 if ( (static_cast<Event*>(mIncidence))->isMultiDay() ) {
121 tipText += "\n"+i18n("From: ")+mIncidence->dtStartStr(); 121 tipText += "\n"+i18n("From: ")+mIncidence->dtStartStr();
122 tipText += "\n"+i18n("To: ")+(static_cast<Event*>(mIncidence))->dtEndStr(); 122 tipText += "\n"+i18n("To: ")+(static_cast<Event*>(mIncidence))->dtEndStr();
123 } 123 }
124 else { 124 else {
125 tipText += "\n"+i18n("Time: ")+mIncidence->dtStartTimeStr(); 125 tipText += "\n"+i18n("Time: ")+mIncidence->dtStartTimeStr();
126 tipText += " - "+(static_cast<Event*>(mIncidence))->dtEndTimeStr(); 126 tipText += " - "+(static_cast<Event*>(mIncidence))->dtEndTimeStr();
127 } 127 }
128 } 128 }
129 else if ( mIncidence->type() == "Todo" ) { 129 else if ( mIncidence->type() == "Todo" ) {
130 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueTimeStr(); 130 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueTimeStr();
131 } 131 }
132 132
133 if (!mIncidence->location().isEmpty()) { 133 if (!mIncidence->location().isEmpty()) {
134 tipText += "\n"+i18n("Location: ")+mIncidence->location(); 134 tipText += "\n"+i18n("Location: ")+mIncidence->location();
135 } 135 }
136 QToolTip::add(this,tipText,toolTipGroup(),""); 136 QToolTip::add(this,tipText,toolTipGroup(),"");
137 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); 137 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont);
138 mFontPixelSize = fontinf.height();; 138 mFontPixelSize = fontinf.height();;
139 hide(); 139 hide();
140 xPaintCoord = -1; 140 xPaintCoord = -1;
141 yPaintCoord = -1; 141 yPaintCoord = -1;
142} 142}
143 143
144 144
145KOAgendaItem::~KOAgendaItem() 145KOAgendaItem::~KOAgendaItem()
146{ 146{
147 // qDebug("deleteKOAgendaItem::~KOAgendaItem( "); 147 // qDebug("deleteKOAgendaItem::~KOAgendaItem( ");
148 148
149} 149}
150 150
151void KOAgendaItem::recreateIncidence() 151void KOAgendaItem::recreateIncidence()
152{ 152{
153 Incidence* newInc = mIncidence->clone(); 153 Incidence* newInc = mIncidence->clone();
154 newInc->recreate(); 154 newInc->recreate();
155 if ( mIncidence->doesRecur() ) { 155 if ( mIncidence->doesRecur() ) {
156 mIncidence->addExDate( mDate ); 156 mIncidence->addExDate( mDate );
157 newInc->recurrence()->unsetRecurs(); 157 newInc->recurrence()->unsetRecurs();
158 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); 158 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd());
159 QTime tim = mIncidence->dtStart().time(); 159 QTime tim = mIncidence->dtStart().time();
160 newInc->setDtStart( QDateTime(mDate, tim) ); 160 newInc->setDtStart( QDateTime(mDate, tim) );
161 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); 161 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) );
162 } 162 }
163 mIncidence = newInc; 163 mIncidence = newInc;
164} 164}
165bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) 165bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout)
166{ 166{
167 int size = AGENDA_ICON_SIZE; 167 int size = AGENDA_ICON_SIZE;
168 168
169 int yOff = 0; 169 int yOff = 0;
170 int xOff = 0; 170 int xOff = 0;
171 int x = pos().x() +3; 171 int x = pos().x() +3;
172 int y; 172 int y;
173 if ( mAllDay ) 173 if ( mAllDay )
174 y = pos().y()+3; 174 y = pos().y()+3;
175 else 175 else
176 y = mCellYTop * ( height() / cellHeight() ) +3; 176 y = mCellYTop * ( height() / cellHeight() ) +3;
177 if (mIncidence->cancelled()) { 177 if (mIncidence->cancelled()) {
178 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; 178 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x;
179 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; 179 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y;
180 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); 180 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 );
181 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); 181 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos );
182 if ( horLayout ) 182 if ( horLayout )
183 ++xOff; 183 ++xOff;
184 else 184 else
185 ++yOff; 185 ++yOff;
186 } 186 }
187 if (mIncidence->isAlarmEnabled()) { 187 if (mIncidence->isAlarmEnabled()) {
188 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red ); 188 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red );
189 if ( horLayout ) 189 if ( horLayout )
190 ++xOff; 190 ++xOff;
191 else 191 else
192 ++yOff; 192 ++yOff;
193 } 193 }
194 if (mIncidence->recurrence()->doesRecur()) { 194 if (mIncidence->recurrence()->doesRecur()) {
195 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue ); 195 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue );
196 if ( horLayout ) 196 if ( horLayout )
197 ++xOff; 197 ++xOff;
198 else 198 else
199 ++yOff; 199 ++yOff;
200 } 200 }
201 if (mIncidence->description().length() > 0) { 201 if (mIncidence->description().length() > 0) {
202 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen ); 202 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen );
203 if ( horLayout ) 203 if ( horLayout )
204 ++xOff; 204 ++xOff;
205 else 205 else
206 ++yOff; 206 ++yOff;
207 } 207 }
208 if (mIncidence->isReadOnly()) { 208 if (mIncidence->isReadOnly()) {
209 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white ); 209 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white );
210 if ( horLayout ) 210 if ( horLayout )
211 ++xOff; 211 ++xOff;
212 else 212 else
213 ++yOff; 213 ++yOff;
214 } 214 }
215 215
216 if (mIncidence->attendeeCount()>0) { 216 if (mIncidence->attendeeCount()>0) {
217 217
218 if (mIncidence->organizer() == KOPrefs::instance()->email()) { 218 if (mIncidence->organizer() == KOPrefs::instance()->email()) {
219 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black ); 219 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black );
220 if ( horLayout ) 220 if ( horLayout )
221 ++xOff; 221 ++xOff;
222 else 222 else
223 ++yOff; 223 ++yOff;
224 } else { 224 } else {
225 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 225 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
226 if (me!=0) { 226 if (me!=0) {
227 227
228 228
229 } else { 229 } else {
230 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow ); 230 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow );
231 if ( horLayout ) 231 if ( horLayout )
232 ++xOff; 232 ++xOff;
233 else 233 else
234 ++yOff; 234 ++yOff;
235 235
236 } 236 }
237 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow ); 237 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow );
238 if ( horLayout ) 238 if ( horLayout )
239 ++xOff; 239 ++xOff;
240 else 240 else
241 ++yOff; 241 ++yOff;
242 242
243 } 243 }
244 244
245 } 245 }
246 return ( yOff || xOff ); 246 return ( yOff || xOff );
247} 247}
248 248
249 249
250void KOAgendaItem::select(bool selected) 250void KOAgendaItem::select(bool selected)
251{ 251{
252 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() ); 252 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() );
253 if (mSelected == selected) return; 253 if (mSelected == selected) return;
254 mSelected = selected; 254 mSelected = selected;
255 if ( ! isVisible() ) 255 if ( ! isVisible() )
256 return; 256 return;
257 if ( firstMultiItem() ) 257 if ( firstMultiItem() )
258 firstMultiItem()->select( selected ); 258 firstMultiItem()->select( selected );
259 if ( !firstMultiItem() && nextMultiItem() ) { 259 if ( !firstMultiItem() && nextMultiItem() ) {
260 KOAgendaItem * placeItem = nextMultiItem(); 260 KOAgendaItem * placeItem = nextMultiItem();
261 while ( placeItem ) { 261 while ( placeItem ) {
262 placeItem->select( selected ); 262 placeItem->select( selected );
263 placeItem = placeItem->nextMultiItem(); 263 placeItem = placeItem->nextMultiItem();
264 } 264 }
265 } 265 }
266 globalFlagBlockAgendaItemUpdate = 0; 266 globalFlagBlockAgendaItemUpdate = 0;
267 paintMe( selected ); 267 paintMe( selected );
268 globalFlagBlockAgendaItemUpdate = 1; 268 globalFlagBlockAgendaItemUpdate = 1;
269 repaint( false ); 269 repaint( false );
270} 270}
271 271
272 272
273/* 273/*
274 The eventFilter has to filter the mouse events of the agenda item childs. The 274 The eventFilter has to filter the mouse events of the agenda item childs. The
275 events are fed into the event handling method of KOAgendaItem. This allows the 275 events are fed into the event handling method of KOAgendaItem. This allows the
276 KOAgenda to handle the KOAgendaItems by using an eventFilter. 276 KOAgenda to handle the KOAgendaItems by using an eventFilter.
277*/ 277*/
278bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e ) 278bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e )
279{ 279{
280 if (e->type() == QEvent::MouseButtonPress || 280 if (e->type() == QEvent::MouseButtonPress ||
281 e->type() == QEvent::MouseButtonDblClick || 281 e->type() == QEvent::MouseButtonDblClick ||
282 e->type() == QEvent::MouseButtonRelease || 282 e->type() == QEvent::MouseButtonRelease ||
283 e->type() == QEvent::MouseMove) { 283 e->type() == QEvent::MouseMove) {
284 QMouseEvent *me = (QMouseEvent *)e; 284 QMouseEvent *me = (QMouseEvent *)e;
285 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)-> 285 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)->
286 mapToGlobal(me->pos())); 286 mapToGlobal(me->pos()));
287 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state()); 287 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state());
288 return event(&returnEvent); 288 return event(&returnEvent);
289 } else { 289 } else {
290 return false; 290 return false;
291 } 291 }
292} 292}
293void KOAgendaItem::repaintMe( ) 293void KOAgendaItem::repaintMe( )
294{ 294{
295 paintMe ( mSelected ); 295 paintMe ( mSelected );
296} 296}
297void KOAgendaItem::paintMe( bool selected, QPainter* paint ) 297void KOAgendaItem::paintMe( bool selected, QPainter* paint )
298{ 298{
299 if ( globalFlagBlockAgendaItemUpdate && ! selected) 299 if ( globalFlagBlockAgendaItemUpdate && ! selected)
300 return; 300 return;
301 QPainter pa; 301 QPainter pa;
302 302
303 if ( mSelected ) { 303 if ( mSelected ) {
304 pa.begin( paintPixSel() ); 304 pa.begin( paintPixSel() );
305 } else { 305 } else {
306 if ( mAllDay ) 306 if ( mAllDay )
307 pa.begin( paintPixAllday() ); 307 pa.begin( paintPixAllday() );
308 else 308 else
309 pa.begin( paintPix() ); 309 pa.begin( paintPix() );
310 } 310 }
311 int x, yy, w, h; 311 int x, yy, w, h;
312 float nfh; 312 float nfh;
313 x = pos().x(); w = width(); h = height (); 313 x = pos().x(); w = width(); h = height ();
314 if ( mAllDay ) 314 if ( mAllDay )
315 yy = y(); 315 yy = y();
316 else 316 else
317 yy = mCellYTop * ( height() / cellHeight() ); 317 yy = mCellYTop * ( height() / cellHeight() );
318 xPaintCoord= x; 318 xPaintCoord= x;
319 yPaintCoord = yy; 319 yPaintCoord = yy;
320 wPaintCoord = width(); 320 wPaintCoord = width();
321 hPaintCoord = height(); 321 hPaintCoord = height();
322 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height()); 322 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height());
323 if ( paint == 0 ) 323 if ( paint == 0 )
324 paint = &pa; 324 paint = &pa;
325 bool horLayout = ( w < h ); 325 bool horLayout = ( w < h );
326 int maxhei = mFontPixelSize+4; 326 int maxhei = mFontPixelSize+4;
327 if ( horLayout ) 327 if ( horLayout )
328 maxhei += AGENDA_ICON_SIZE -4; 328 maxhei += AGENDA_ICON_SIZE -4;
329 bool small = ( h < maxhei ); 329 bool small = ( h < maxhei );
330 if ( ! small ) 330 if ( ! small )
331 paint->setFont(KOPrefs::instance()->mAgendaViewFont); 331 paint->setFont(KOPrefs::instance()->mAgendaViewFont);
332 else { 332 else {
333 QFont f = KOPrefs::instance()->mAgendaViewFont; 333 QFont f = KOPrefs::instance()->mAgendaViewFont;
334 f.setBold( false ); 334 f.setBold( false );
335 int fh = f.pointSize(); 335 int fh = f.pointSize();
336 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh; 336 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh;
337 if ( nfh < 6 ) 337 if ( nfh < 6 )
338 nfh = 6; 338 nfh = 6;
339 f.setPointSize( nfh ); 339 f.setPointSize( nfh );
340 paint->setFont(f); 340 paint->setFont(f);
341 } 341 }
342 paint->fillRect ( x, yy, w, h, mBackgroundColor ); 342 paint->fillRect ( x, yy, w, h, mBackgroundColor );
343 static const QPixmap completedPxmp = SmallIcon("greenhook16"); 343 static const QPixmap completedPxmp = SmallIcon("greenhook16");
344 static const QPixmap overduePxmp = SmallIcon("redcross16"); 344 static const QPixmap overduePxmp = SmallIcon("redcross16");
345 if ( mIncidence->type() == "Todo" ) { 345 if ( mIncidence->type() == "Todo" ) {
346 Todo* tempTodo = static_cast<Todo*>(mIncidence); 346 Todo* tempTodo = static_cast<Todo*>(mIncidence);
347 int xx = pos().x()+(width()-completedPxmp.width()-3 ); 347 int xx = pos().x()+(width()-completedPxmp.width()-3 );
348 int yyy = yy+3; 348 int yyy = yy+3;
349 if ( tempTodo->isCompleted() ) 349 if ( tempTodo->isCompleted() )
350 paint->drawPixmap ( xx, yyy, completedPxmp ); 350 paint->drawPixmap ( xx, yyy, completedPxmp );
351 else { 351 else {
352 paint->drawPixmap ( xx, yyy, overduePxmp ); 352 paint->drawPixmap ( xx, yyy, overduePxmp );
353 353
354 } 354 }
355 } 355 }
356 bool addIcon = false; 356 bool addIcon = false;
357 if ( ! small || w > 3 * h || h > 3* w ) 357 if ( ! small || w > 3 * h || h > 3* w )
358 addIcon = updateIcons( paint, horLayout ); 358 addIcon = updateIcons( paint, horLayout );
359 359
360 qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0); 360 qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0);
361 //qDebug("draw rect %d %d %d %d ",x, yy, w, h ); 361 //qDebug("draw rect %d %d %d %d ",x, yy, w, h );
362 if ( ! small ) { 362 if ( ! small ) {
363 x += 3; yy += 3;w -= 6; h-= 5; 363 x += 3; yy += 3;w -= 6; h-= 5;
364 } else { 364 } else {
365 x += 2; yy += 1;w -= 4; h-= 4; 365 x += 2; yy += 1;w -= 4; h-= 4;
366 if ( nfh < 6.01 ) { 366 if ( nfh < 6.01 ) {
367 yy -= 2; 367 yy -= 2;
368 h += 4; 368 h += 4;
369 } 369 }
370 else 370 else
371 if ( nfh < h -2 ) 371 if ( nfh < h -2 )
372 ++yy; 372 ++yy;
373 } 373 }
374 int align; 374 int align;
375#ifndef DESKTOP_VERSION 375#ifndef DESKTOP_VERSION
376 align = ( AlignLeft|WordBreak|AlignTop); 376 align = ( AlignLeft|WordBreak|AlignTop);
377#else 377#else
378 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 378 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
379#endif 379#endif
380 if ( addIcon ) { 380 if ( addIcon ) {
381 if ( ! horLayout ) { 381 if ( ! horLayout ) {
382 x += AGENDA_ICON_SIZE+3; 382 x += AGENDA_ICON_SIZE+3;
383 w -= (AGENDA_ICON_SIZE+3); 383 w -= (AGENDA_ICON_SIZE+3);
384 } 384 }
385 else { 385 else {
386 yy+= AGENDA_ICON_SIZE+2; 386 yy+= AGENDA_ICON_SIZE+2;
387 h -=(AGENDA_ICON_SIZE+3); 387 h -=(AGENDA_ICON_SIZE+3);
388 } 388 }
389 } 389 }
390 int colsum = mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue(); 390 int colsum = mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue();
391 if ( colsum < 250 ) 391 if ( colsum < 250 )
392 paint->setPen ( white); 392 paint->setPen ( white);
393 if ( x < 0 ) { 393 if ( x < 0 ) {
394 w = w+x-3; 394 w = w+x-3;
395 x = 3; 395 x = 3;
396 if ( w > parentWidget()->width() ){ 396 if ( w > parentWidget()->width() ){
397 w = parentWidget()->width() - 6; 397 w = parentWidget()->width() - 6;
398#ifndef DESKTOP_VERSION 398#ifndef DESKTOP_VERSION
399 align = ( AlignCenter|WordBreak); 399 align = ( AlignCenter|WordBreak);
400#else 400#else
401 align = ( AlignCenter|BreakAnywhere|WordBreak); 401 align = ( AlignCenter|BreakAnywhere|WordBreak);
402#endif 402#endif
403 403
404 } 404 }
405 } 405 }
406 QRect dr; 406 QRect dr;
407 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr ); 407 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr );
408 if ( mIncidence->cancelled() ){ 408 if ( mIncidence->cancelled() ){
409 if ( ! small ) { 409 if ( ! small ) {
410 QFontMetrics fm ( paint->font() ); 410 QFontMetrics fm ( paint->font() );
411 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2); 411 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2);
412 } 412 }
413 413
414 } 414 }
415 pa.end(); 415 pa.end();
416 416
417} 417}
418void KOAgendaItem::resizePixmap( int w , int h ) 418void KOAgendaItem::resizePixmap( int w , int h )
419{ 419{
420 paintPix()->resize( w, h ); 420 paintPix()->resize( w, h );
421 paintPixSel()->resize( w, h ); 421 paintPixSel()->resize( w, h );
422 422
423} 423}
424QPixmap * KOAgendaItem::paintPix() 424QPixmap * KOAgendaItem::paintPix()
425{ 425{
426 static QPixmap* mPaintPix = 0; 426 static QPixmap* mPaintPix = 0;
427 if ( ! mPaintPix ) 427 if ( ! mPaintPix )
428 mPaintPix = new QPixmap(); 428 mPaintPix = new QPixmap();
429 return mPaintPix ; 429 return mPaintPix ;
430} 430}
431QPixmap * KOAgendaItem::paintPixAllday() 431QPixmap * KOAgendaItem::paintPixAllday()
432{ 432{
433 static QPixmap* mPaintPixA = 0; 433 static QPixmap* mPaintPixA = 0;
434 if ( ! mPaintPixA ) 434 if ( ! mPaintPixA )
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 9e057e4..77a3164 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1,453 +1,453 @@
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#include <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#ifndef KORG_NOSPLITTER 29#ifndef KORG_NOSPLITTER
30#include <qsplitter.h> 30#include <qsplitter.h>
31#endif 31#endif
32#include <qfont.h> 32#include <qfont.h>
33#include <qfontmetrics.h> 33#include <qfontmetrics.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qtooltip.h> 35#include <qtooltip.h>
36#include <qpainter.h> 36#include <qpainter.h>
37#include <qpushbutton.h> 37#include <qpushbutton.h>
38#include <qapplication.h> 38#include <qapplication.h>
39 39
40#include <kapplication.h> 40#include <kapplication.h>
41#include <KDGanttMinimizeSplitter.h> 41#include <KDGanttMinimizeSplitter.h>
42#include <kdebug.h> 42#include <kdebug.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44#include <kiconloader.h> 44#include <kiconloader.h>
45#include <klocale.h> 45#include <klocale.h>
46#include <kconfig.h> 46#include <kconfig.h>
47#include <kglobal.h> 47#include <kglobal.h>
48#include "calendarview.h" 48#include "calendarview.h"
49#include "koviewmanager.h" 49#include "koviewmanager.h"
50 50
51#include <libkcal/calendar.h> 51#include <libkcal/calendar.h>
52#include <libkcal/icaldrag.h> 52#include <libkcal/icaldrag.h>
53#include <libkcal/dndfactory.h> 53#include <libkcal/dndfactory.h>
54 54
55#include <kcalendarsystem.h> 55#include <kcalendarsystem.h>
56 56
57#include "koglobals.h" 57#include "koglobals.h"
58#ifndef KORG_NOPLUGINS 58#ifndef KORG_NOPLUGINS
59#include "kocore.h" 59#include "kocore.h"
60#endif 60#endif
61#include "koprefs.h" 61#include "koprefs.h"
62#include "koagenda.h" 62#include "koagenda.h"
63#include "koagendaitem.h" 63#include "koagendaitem.h"
64#ifndef KORG_NOPRINTER 64#ifndef KORG_NOPRINTER
65#include "calprinter.h" 65#include "calprinter.h"
66#endif 66#endif
67 67
68#include "koagendaview.h" 68#include "koagendaview.h"
69#include "koagendaview.moc" 69//#include "koagendaview.moc"
70 70
71//extern bool globalFlagBlockPainting; 71//extern bool globalFlagBlockPainting;
72extern int globalFlagBlockAgenda; 72extern int globalFlagBlockAgenda;
73extern int globalFlagBlockStartup; 73extern int globalFlagBlockStartup;
74extern int globalFlagBlockAgendaItemPaint; 74extern int globalFlagBlockAgendaItemPaint;
75extern int globalFlagBlockAgendaItemUpdate; 75extern int globalFlagBlockAgendaItemUpdate;
76extern int globalFlagBlockLabel; 76extern int globalFlagBlockLabel;
77using namespace KOrg; 77using namespace KOrg;
78 78
79TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) : 79TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) :
80 QScrollView(parent,name,f) 80 QScrollView(parent,name,f)
81{ 81{
82 mRows = rows; 82 mRows = rows;
83 83
84 setMinimumHeight( 20 ); 84 setMinimumHeight( 20 );
85 mCellHeight = KOPrefs::instance()->mHourSize*4; 85 mCellHeight = KOPrefs::instance()->mHourSize*4;
86 86
87 enableClipper(true); 87 enableClipper(true);
88 88
89 setHScrollBarMode(AlwaysOff); 89 setHScrollBarMode(AlwaysOff);
90 setVScrollBarMode(AlwaysOff); 90 setVScrollBarMode(AlwaysOff);
91 91
92 resizeContents(50,mRows * mCellHeight); 92 resizeContents(50,mRows * mCellHeight);
93 93
94 viewport()->setBackgroundMode( PaletteBackground ); 94 viewport()->setBackgroundMode( PaletteBackground );
95} 95}
96 96
97void TimeLabels::setCellHeight(int height) 97void TimeLabels::setCellHeight(int height)
98{ 98{
99 mCellHeight = height; 99 mCellHeight = height;
100} 100}
101 101
102/* 102/*
103 Optimization so that only the "dirty" portion of the scroll view 103 Optimization so that only the "dirty" portion of the scroll view
104 is redrawn. Unfortunately, this is not called by default paintEvent() method. 104 is redrawn. Unfortunately, this is not called by default paintEvent() method.
105*/ 105*/
106void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) 106void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch)
107{ 107{
108 108
109 // if ( globalFlagBlockAgenda ) 109 // if ( globalFlagBlockAgenda )
110 // return; 110 // return;
111 // bug: the parameters cx, cy, cw, ch are the areas that need to be 111 // bug: the parameters cx, cy, cw, ch are the areas that need to be
112 // redrawn, not the area of the widget. unfortunately, this 112 // redrawn, not the area of the widget. unfortunately, this
113 // code assumes the latter... 113 // code assumes the latter...
114 114
115 // now, for a workaround... 115 // now, for a workaround...
116 // these two assignments fix the weird redraw bug 116 // these two assignments fix the weird redraw bug
117 cx = contentsX() + 2; 117 cx = contentsX() + 2;
118 cw = contentsWidth() - 2; 118 cw = contentsWidth() - 2;
119 // end of workaround 119 // end of workaround
120 120
121 int cell = ((int)(cy/mCellHeight)); 121 int cell = ((int)(cy/mCellHeight));
122 int y = cell * mCellHeight; 122 int y = cell * mCellHeight;
123 QFontMetrics fm = fontMetrics(); 123 QFontMetrics fm = fontMetrics();
124 QString hour; 124 QString hour;
125 QString suffix; 125 QString suffix;
126 QString fullTime; 126 QString fullTime;
127 int tW = fm.width("24:00i"); 127 int tW = fm.width("24:00i");
128 128
129 while (y < cy + ch) { 129 while (y < cy + ch) {
130 p->drawLine(cx,y,cx+tW,y); 130 p->drawLine(cx,y,cx+tW,y);
131 hour.setNum(cell); 131 hour.setNum(cell);
132 suffix = "am"; 132 suffix = "am";
133 133
134 // handle 24h and am/pm time formats 134 // handle 24h and am/pm time formats
135 if (KGlobal::locale()->use12Clock()) { 135 if (KGlobal::locale()->use12Clock()) {
136 if (cell > 11) suffix = "pm"; 136 if (cell > 11) suffix = "pm";
137 if (cell == 0) hour.setNum(12); 137 if (cell == 0) hour.setNum(12);
138 if (cell > 12) hour.setNum(cell - 12); 138 if (cell > 12) hour.setNum(cell - 12);
139 } else { 139 } else {
140 suffix = ":00"; 140 suffix = ":00";
141 } 141 }
142 142
143 // create string in format of "XX:XX" or "XXpm/am" 143 // create string in format of "XX:XX" or "XXpm/am"
144 fullTime = hour + suffix; 144 fullTime = hour + suffix;
145 145
146 // center and draw the time label 146 // center and draw the time label
147 int timeWidth = fm.width(fullTime+"i"); 147 int timeWidth = fm.width(fullTime+"i");
148 int offset = this->width() - timeWidth; 148 int offset = this->width() - timeWidth;
149 int borderWidth = 5; 149 int borderWidth = 5;
150 int timeHeight = fm.height(); 150 int timeHeight = fm.height();
151 timeHeight = timeHeight + 2 - ( timeHeight / 4 ); 151 timeHeight = timeHeight + 2 - ( timeHeight / 4 );
152 p->drawText(cx -borderWidth + offset, y+ timeHeight, fullTime); 152 p->drawText(cx -borderWidth + offset, y+ timeHeight, fullTime);
153 153
154 // increment indices 154 // increment indices
155 y += mCellHeight; 155 y += mCellHeight;
156 cell++; 156 cell++;
157 } 157 }
158} 158}
159 159
160/** 160/**
161 Calculates the minimum width. 161 Calculates the minimum width.
162*/ 162*/
163int TimeLabels::minimumWidth() const 163int TimeLabels::minimumWidth() const
164{ 164{
165 QFontMetrics fm = fontMetrics(); 165 QFontMetrics fm = fontMetrics();
166 166
167 //TODO: calculate this value 167 //TODO: calculate this value
168 int borderWidth = 4; 168 int borderWidth = 4;
169 169
170 // the maximum width possible 170 // the maximum width possible
171 int width = fm.width("88:88x") + borderWidth; 171 int width = fm.width("88:88x") + borderWidth;
172 172
173 return width; 173 return width;
174} 174}
175 175
176/** updates widget's internal state */ 176/** updates widget's internal state */
177void TimeLabels::updateConfig() 177void TimeLabels::updateConfig()
178{ 178{
179 // set the font 179 // set the font
180 // config->setGroup("Fonts"); 180 // config->setGroup("Fonts");
181 // QFont font = config->readFontEntry("TimeBar Font"); 181 // QFont font = config->readFontEntry("TimeBar Font");
182 setFont(KOPrefs::instance()->mTimeBarFont); 182 setFont(KOPrefs::instance()->mTimeBarFont);
183 183
184 // update geometry restrictions based on new settings 184 // update geometry restrictions based on new settings
185 setFixedWidth(minimumWidth()); 185 setFixedWidth(minimumWidth());
186 186
187 // update HourSize 187 // update HourSize
188 mCellHeight = KOPrefs::instance()->mHourSize*4; 188 mCellHeight = KOPrefs::instance()->mHourSize*4;
189 resizeContents(50,mRows * mCellHeight); 189 resizeContents(50,mRows * mCellHeight);
190} 190}
191 191
192/** update time label positions */ 192/** update time label positions */
193void TimeLabels::positionChanged() 193void TimeLabels::positionChanged()
194{ 194{
195 int adjustment = mAgenda->contentsY(); 195 int adjustment = mAgenda->contentsY();
196 setContentsPos(0, adjustment); 196 setContentsPos(0, adjustment);
197} 197}
198 198
199/** */ 199/** */
200void TimeLabels::setAgenda(KOAgenda* agenda) 200void TimeLabels::setAgenda(KOAgenda* agenda)
201{ 201{
202 mAgenda = agenda; 202 mAgenda = agenda;
203} 203}
204 204
205 205
206/** This is called in response to repaint() */ 206/** This is called in response to repaint() */
207void TimeLabels::paintEvent(QPaintEvent*) 207void TimeLabels::paintEvent(QPaintEvent*)
208{ 208{
209 209
210 // kdDebug() << "paintevent..." << endl; 210 // kdDebug() << "paintevent..." << endl;
211 // this is another hack! 211 // this is another hack!
212 // QPainter painter(this); 212 // QPainter painter(this);
213 //QString c 213 //QString c
214 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight()); 214 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight());
215} 215}
216 216
217//////////////////////////////////////////////////////////////////////////// 217////////////////////////////////////////////////////////////////////////////
218 218
219EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) 219EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name)
220 : QFrame(parent,name) 220 : QFrame(parent,name)
221{ 221{
222 mColumns = 1; 222 mColumns = 1;
223 mTopBox = 0; 223 mTopBox = 0;
224 mLocation = loc; 224 mLocation = loc;
225 mTopLayout = 0; 225 mTopLayout = 0;
226 mPaintWidget = 0; 226 mPaintWidget = 0;
227 mXOffset = 0; 227 mXOffset = 0;
228 if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); 228 if (mLocation == Top) mPixmap = SmallIcon("1uparrow");
229 else mPixmap = SmallIcon("1downarrow"); 229 else mPixmap = SmallIcon("1downarrow");
230 mEnabled.resize(mColumns); 230 mEnabled.resize(mColumns);
231 if (mLocation == Top) 231 if (mLocation == Top)
232 setMaximumHeight(0); 232 setMaximumHeight(0);
233 else 233 else
234 setMinimumHeight(mPixmap.height()); 234 setMinimumHeight(mPixmap.height());
235} 235}
236 236
237EventIndicator::~EventIndicator() 237EventIndicator::~EventIndicator()
238{ 238{
239} 239}
240 240
241void EventIndicator::drawContents(QPainter *p) 241void EventIndicator::drawContents(QPainter *p)
242{ 242{
243 243
244 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; 244 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl;
245 KDGanttSplitterHandle* han = 0; 245 KDGanttSplitterHandle* han = 0;
246 if ( mPaintWidget ) 246 if ( mPaintWidget )
247 han = mPaintWidget->firstHandle(); 247 han = mPaintWidget->firstHandle();
248 if ( ! han ) { 248 if ( ! han ) {
249 int i; 249 int i;
250 for(i=0;i<mColumns;++i) { 250 for(i=0;i<mColumns;++i) {
251 if (mEnabled[i]) { 251 if (mEnabled[i]) {
252 int cellWidth = contentsRect().right()/mColumns; 252 int cellWidth = contentsRect().right()/mColumns;
253 int xOffset = KOGlobals::self()->reverseLayout() ? 253 int xOffset = KOGlobals::self()->reverseLayout() ?
254 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : 254 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 :
255 i*cellWidth + cellWidth/2 -mPixmap.width()/2; 255 i*cellWidth + cellWidth/2 -mPixmap.width()/2;
256 p->drawPixmap(QPoint(xOffset,0),mPixmap); 256 p->drawPixmap(QPoint(xOffset,0),mPixmap);
257 } 257 }
258 } 258 }
259 } else { 259 } else {
260 han->repaint(); 260 han->repaint();
261 //mPaintWidget->setBackgroundColor( red ); 261 //mPaintWidget->setBackgroundColor( red );
262 262
263 QPainter pa( han ); 263 QPainter pa( han );
264 int i; 264 int i;
265 bool setColor = false; 265 bool setColor = false;
266 for(i=0;i<mColumns;++i) { 266 for(i=0;i<mColumns;++i) {
267 if (mEnabled[i]) { 267 if (mEnabled[i]) {
268 setColor = true; 268 setColor = true;
269 269
270 int cellWidth = contentsRect().right()/mColumns; 270 int cellWidth = contentsRect().right()/mColumns;
271 int xOffset = KOGlobals::self()->reverseLayout() ? 271 int xOffset = KOGlobals::self()->reverseLayout() ?
272 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : 272 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 :
273 i*cellWidth + cellWidth/2 -mPixmap.width()/2; 273 i*cellWidth + cellWidth/2 -mPixmap.width()/2;
274 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); 274 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap);
275 //qDebug("222draw pix %d ",xOffset ); 275 //qDebug("222draw pix %d ",xOffset );
276 276
277 } 277 }
278 278
279 } 279 }
280 pa.end(); 280 pa.end();
281 281
282 } 282 }
283} 283}
284 284
285void EventIndicator::setXOffset( int x ) 285void EventIndicator::setXOffset( int x )
286{ 286{
287 mXOffset = x; 287 mXOffset = x;
288} 288}
289void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) 289void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w )
290{ 290{
291 mPaintWidget = w; 291 mPaintWidget = w;
292} 292}
293void EventIndicator::changeColumns(int columns) 293void EventIndicator::changeColumns(int columns)
294{ 294{
295 mColumns = columns; 295 mColumns = columns;
296 mEnabled.resize(mColumns); 296 mEnabled.resize(mColumns);
297 297
298 update(); 298 update();
299} 299}
300 300
301void EventIndicator::enableColumn(int column, bool enable) 301void EventIndicator::enableColumn(int column, bool enable)
302{ 302{
303 mEnabled[column] = enable; 303 mEnabled[column] = enable;
304} 304}
305 305
306 306
307//////////////////////////////////////////////////////////////////////////// 307////////////////////////////////////////////////////////////////////////////
308//////////////////////////////////////////////////////////////////////////// 308////////////////////////////////////////////////////////////////////////////
309//////////////////////////////////////////////////////////////////////////// 309////////////////////////////////////////////////////////////////////////////
310 310
311KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : 311KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
312 KOEventView (cal,parent,name) 312 KOEventView (cal,parent,name)
313{ 313{
314 mBlockUpdating = true; 314 mBlockUpdating = true;
315 mStartHour = 8; 315 mStartHour = 8;
316 mSelectedDates.append(QDate::currentDate()); 316 mSelectedDates.append(QDate::currentDate());
317 317
318 mLayoutDayLabels = 0; 318 mLayoutDayLabels = 0;
319 mDayLabelsFrame = 0; 319 mDayLabelsFrame = 0;
320 mDayLabels = 0; 320 mDayLabels = 0;
321 bool isRTL = KOGlobals::self()->reverseLayout(); 321 bool isRTL = KOGlobals::self()->reverseLayout();
322 322
323 if ( KOPrefs::instance()->mVerticalScreen ) { 323 if ( KOPrefs::instance()->mVerticalScreen ) {
324 mExpandedPixmap = SmallIcon( "1downarrow" ); 324 mExpandedPixmap = SmallIcon( "1downarrow" );
325 mNotExpandedPixmap = SmallIcon( "1uparrow" ); 325 mNotExpandedPixmap = SmallIcon( "1uparrow" );
326 } else { 326 } else {
327 mExpandedPixmap = SmallIcon( isRTL ? "1leftarrow" : "1rightarrow" ); 327 mExpandedPixmap = SmallIcon( isRTL ? "1leftarrow" : "1rightarrow" );
328 mNotExpandedPixmap = SmallIcon( isRTL ? "1rightarrow" : "1leftarrow" ); 328 mNotExpandedPixmap = SmallIcon( isRTL ? "1rightarrow" : "1leftarrow" );
329 } 329 }
330 330
331 QBoxLayout *topLayout = new QVBoxLayout(this); 331 QBoxLayout *topLayout = new QVBoxLayout(this);
332 332
333 // Create day name labels for agenda columns 333 // Create day name labels for agenda columns
334 mDayLabelsFrame = new QHBox(this); 334 mDayLabelsFrame = new QHBox(this);
335 topLayout->addWidget(mDayLabelsFrame); 335 topLayout->addWidget(mDayLabelsFrame);
336 mDayLabels = new QFrame (mDayLabelsFrame); 336 mDayLabels = new QFrame (mDayLabelsFrame);
337 mLayoutDayLabels = new QHBoxLayout(mDayLabels); 337 mLayoutDayLabels = new QHBoxLayout(mDayLabels);
338 // Create agenda splitter 338 // Create agenda splitter
339#ifndef KORG_NOSPLITTER 339#ifndef KORG_NOSPLITTER
340 mSplitterAgenda = new QSplitter(Vertical,this); 340 mSplitterAgenda = new QSplitter(Vertical,this);
341 topLayout->addWidget(mSplitterAgenda); 341 topLayout->addWidget(mSplitterAgenda);
342 mSplitterAgenda->setOpaqueResize(); 342 mSplitterAgenda->setOpaqueResize();
343 343
344 mAllDayFrame = new QHBox(mSplitterAgenda); 344 mAllDayFrame = new QHBox(mSplitterAgenda);
345 345
346 QWidget *agendaFrame = new QWidget(mSplitterAgenda); 346 QWidget *agendaFrame = new QWidget(mSplitterAgenda);
347#else 347#else
348#if 0 348#if 0
349 QWidget *mainBox = new QWidget( this ); 349 QWidget *mainBox = new QWidget( this );
350 topLayout->addWidget( mainBox ); 350 topLayout->addWidget( mainBox );
351 QBoxLayout *mainLayout = new QVBoxLayout(mainBox); 351 QBoxLayout *mainLayout = new QVBoxLayout(mainBox);
352 mAllDayFrame = new QHBox(mainBox); 352 mAllDayFrame = new QHBox(mainBox);
353 mainLayout->addWidget(mAllDayFrame); 353 mainLayout->addWidget(mAllDayFrame);
354 mainLayout->setStretchFactor( mAllDayFrame, 0 ); 354 mainLayout->setStretchFactor( mAllDayFrame, 0 );
355 mAllDayFrame->setFocusPolicy(NoFocus); 355 mAllDayFrame->setFocusPolicy(NoFocus);
356 QWidget *agendaFrame = new QWidget(mainBox); 356 QWidget *agendaFrame = new QWidget(mainBox);
357 mainLayout->addWidget(agendaFrame); 357 mainLayout->addWidget(agendaFrame);
358 mainLayout->setStretchFactor( agendaFrame, 10 ); 358 mainLayout->setStretchFactor( agendaFrame, 10 );
359 359
360 agendaFrame->setFocusPolicy(NoFocus); 360 agendaFrame->setFocusPolicy(NoFocus);
361#endif 361#endif
362 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this); 362 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this);
363 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 363 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
364 topLayout->addWidget( mSplitterAgenda ); 364 topLayout->addWidget( mSplitterAgenda );
365 mAllDayFrame = new QHBox(mSplitterAgenda); 365 mAllDayFrame = new QHBox(mSplitterAgenda);
366 mAllDayFrame->setFocusPolicy(NoFocus); 366 mAllDayFrame->setFocusPolicy(NoFocus);
367 QWidget *agendaFrame = new QWidget(mSplitterAgenda); 367 QWidget *agendaFrame = new QWidget(mSplitterAgenda);
368 agendaFrame->setFocusPolicy(NoFocus); 368 agendaFrame->setFocusPolicy(NoFocus);
369 369
370#endif 370#endif
371 371
372 // Create all-day agenda widget 372 // Create all-day agenda widget
373 mDummyAllDayLeft = new QVBox( mAllDayFrame ); 373 mDummyAllDayLeft = new QVBox( mAllDayFrame );
374 374
375 mExpandButton = new QPushButton(mDummyAllDayLeft); 375 mExpandButton = new QPushButton(mDummyAllDayLeft);
376 mExpandButton->setPixmap( mNotExpandedPixmap ); 376 mExpandButton->setPixmap( mNotExpandedPixmap );
377 mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, 377 mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed,
378 QSizePolicy::Fixed ) ); 378 QSizePolicy::Fixed ) );
379 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); 379 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) );
380 mExpandButton->setFocusPolicy(NoFocus); 380 mExpandButton->setFocusPolicy(NoFocus);
381 mAllDayAgenda = new KOAgenda(1,mAllDayFrame); 381 mAllDayAgenda = new KOAgenda(1,mAllDayFrame);
382 mAllDayAgenda->setFocusPolicy(NoFocus); 382 mAllDayAgenda->setFocusPolicy(NoFocus);
383 QWidget *dummyAllDayRight = new QWidget(mAllDayFrame); 383 QWidget *dummyAllDayRight = new QWidget(mAllDayFrame);
384 384
385 // Create event context menu for all day agenda 385 // Create event context menu for all day agenda
386 mAllDayAgendaPopup = eventPopup(); 386 mAllDayAgendaPopup = eventPopup();
387 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 387 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
388 mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 388 mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
389 389
390 // Create agenda frame 390 // Create agenda frame
391 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3); 391 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3);
392 // QHBox *agendaFrame = new QHBox(splitterAgenda); 392 // QHBox *agendaFrame = new QHBox(splitterAgenda);
393 393
394 // create event indicator bars 394 // create event indicator bars
395 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 395 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
396 agendaLayout->addWidget(mEventIndicatorTop,0,1); 396 agendaLayout->addWidget(mEventIndicatorTop,0,1);
397 mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); 397 mEventIndicatorTop->setPaintWidget( mSplitterAgenda );
398 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, 398 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom,
399 agendaFrame); 399 agendaFrame);
400 agendaLayout->addWidget(mEventIndicatorBottom,2,1); 400 agendaLayout->addWidget(mEventIndicatorBottom,2,1);
401 QWidget *dummyAgendaRight = new QWidget(agendaFrame); 401 QWidget *dummyAgendaRight = new QWidget(agendaFrame);
402 agendaLayout->addWidget(dummyAgendaRight,0,2); 402 agendaLayout->addWidget(dummyAgendaRight,0,2);
403 403
404 // Create time labels 404 // Create time labels
405 mTimeLabels = new TimeLabels(24,agendaFrame); 405 mTimeLabels = new TimeLabels(24,agendaFrame);
406 agendaLayout->addWidget(mTimeLabels,1,0); 406 agendaLayout->addWidget(mTimeLabels,1,0);
407 407
408 // Create agenda 408 // Create agenda
409 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); 409 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame);
410 agendaLayout->addMultiCellWidget(mAgenda,1,1,1,2); 410 agendaLayout->addMultiCellWidget(mAgenda,1,1,1,2);
411 agendaLayout->setColStretch(1,1); 411 agendaLayout->setColStretch(1,1);
412 mAgenda->setFocusPolicy(NoFocus); 412 mAgenda->setFocusPolicy(NoFocus);
413 // Create event context menu for agenda 413 // Create event context menu for agenda
414 mAgendaPopup = eventPopup(); 414 mAgendaPopup = eventPopup();
415 415
416 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), 416 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")),
417 i18n("Toggle Alarm"),mAgenda, 417 i18n("Toggle Alarm"),mAgenda,
418 SLOT(popupAlarm()),true); 418 SLOT(popupAlarm()),true);
419 419
420 420
421 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 421 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
422 mAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 422 mAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
423 423
424 // make connections between dependent widgets 424 // make connections between dependent widgets
425 mTimeLabels->setAgenda(mAgenda); 425 mTimeLabels->setAgenda(mAgenda);
426 426
427 // Update widgets to reflect user preferences 427 // Update widgets to reflect user preferences
428 // updateConfig(); 428 // updateConfig();
429 429
430 // createDayLabels(); 430 // createDayLabels();
431 431
432 // these blank widgets make the All Day Event box line up with the agenda 432 // these blank widgets make the All Day Event box line up with the agenda
433 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 433 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
434 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 434 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
435 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 435 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
436 436
437 // Scrolling 437 // Scrolling
438 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), 438 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)),
439 mTimeLabels, SLOT(positionChanged())); 439 mTimeLabels, SLOT(positionChanged()));
440 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), 440 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)),
441 SLOT(setContentsPos(int))); 441 SLOT(setContentsPos(int)));
442 442
443 // Create/Show/Edit/Delete Event 443 // Create/Show/Edit/Delete Event
444 connect(mAgenda,SIGNAL(newEventSignal(int,int)), 444 connect(mAgenda,SIGNAL(newEventSignal(int,int)),
445 SLOT(newEvent(int,int))); 445 SLOT(newEvent(int,int)));
446 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), 446 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)),
447 SLOT(newEvent(int,int,int,int))); 447 SLOT(newEvent(int,int,int,int)));
448 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), 448 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)),
449 SLOT(newEventAllDay(int,int))); 449 SLOT(newEventAllDay(int,int)));
450 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), 450 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)),
451 SLOT(newEventAllDay(int,int))); 451 SLOT(newEventAllDay(int,int)));
452 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 452 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
453 SLOT(newTimeSpanSelected(int,int,int,int))); 453 SLOT(newTimeSpanSelected(int,int,int,int)));
diff --git a/korganizer/kocounterdialog.cpp b/korganizer/kocounterdialog.cpp
index 8a9ae44..82a7072 100644
--- a/korganizer/kocounterdialog.cpp
+++ b/korganizer/kocounterdialog.cpp
@@ -1,66 +1,66 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 19
20 20
21#include <klocale.h> 21#include <klocale.h>
22 22
23#include <libkcal/event.h> 23#include <libkcal/event.h>
24#include "koeventviewer.h" 24#include "koeventviewer.h"
25 25
26#include "kocounterdialog.h" 26#include "kocounterdialog.h"
27#include "kocounterdialog.moc" 27//#include "kocounterdialog.moc"
28 28
29KOCounterDialog::KOCounterDialog(QWidget *parent,const char *name) 29KOCounterDialog::KOCounterDialog(QWidget *parent,const char *name)
30 : KDialogBase(parent,name,false,i18n("Counter-event Viewer"),User1|User2,User1, 30 : KDialogBase(parent,name,false,i18n("Counter-event Viewer"),User1|User2,User1,
31 false,i18n("Decline"),i18n("Accept")) 31 false,i18n("Decline"),i18n("Accept"))
32{ 32{
33 mEventViewer = new KOEventViewer(this); 33 mEventViewer = new KOEventViewer(this);
34 setMainWidget(mEventViewer); 34 setMainWidget(mEventViewer);
35 35
36 connect(this,SIGNAL(user1Clicked()),this,SLOT(slotCancel())); 36 connect(this,SIGNAL(user1Clicked()),this,SLOT(slotCancel()));
37 connect(this,SIGNAL(user2Clicked()),this,SLOT(slotOk())); 37 connect(this,SIGNAL(user2Clicked()),this,SLOT(slotOk()));
38 38
39 // TODO: Set a sensible size (based on the content?). 39 // TODO: Set a sensible size (based on the content?).
40 setMinimumSize(300,200); 40 setMinimumSize(300,200);
41 resize(320,300); 41 resize(320,300);
42} 42}
43 43
44KOCounterDialog::~KOCounterDialog() 44KOCounterDialog::~KOCounterDialog()
45{ 45{
46} 46}
47 47
48void KOCounterDialog::setEvent(Event *event) 48void KOCounterDialog::setEvent(Event *event)
49{ 49{
50 mEventViewer->setEvent(event); 50 mEventViewer->setEvent(event);
51} 51}
52 52
53void KOCounterDialog::addEvent(Event *event) 53void KOCounterDialog::addEvent(Event *event)
54{ 54{
55 mEventViewer->addEvent(event); 55 mEventViewer->addEvent(event);
56} 56}
57 57
58void KOCounterDialog::setTodo(Todo *event) 58void KOCounterDialog::setTodo(Todo *event)
59{ 59{
60 mEventViewer->setTodo(event); 60 mEventViewer->setTodo(event);
61} 61}
62 62
63void KOCounterDialog::addText(QString text) 63void KOCounterDialog::addText(QString text)
64{ 64{
65 mEventViewer->addText(text); 65 mEventViewer->addText(text);
66} 66}
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 779d67c..fc00828 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -1,433 +1,432 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at> 3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at>
4 Parts of the source code have been copied from kdpdatebutton.cpp 4 Parts of the source code have been copied from kdpdatebutton.cpp
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 <qevent.h> 25#include <qevent.h>
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qptrlist.h> 27#include <qptrlist.h>
28 28
29#include <kglobal.h> 29#include <kglobal.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <klocale.h> 31#include <klocale.h>
32 32
33#include <libkcal/vcaldrag.h> 33#include <libkcal/vcaldrag.h>
34#include <libkcal/icaldrag.h> 34#include <libkcal/icaldrag.h>
35#include <libkcal/dndfactory.h> 35#include <libkcal/dndfactory.h>
36#include <libkcal/calendarresources.h> 36#include <libkcal/calendarresources.h>
37#include <libkcal/resourcecalendar.h> 37#include <libkcal/resourcecalendar.h>
38#include <kresources/resourceselectdialog.h> 38#include <kresources/resourceselectdialog.h>
39 39
40#include <kcalendarsystem.h> 40#include <kcalendarsystem.h>
41 41
42#ifndef KORG_NOPLUGINS 42#ifndef KORG_NOPLUGINS
43#include "kocore.h" 43#include "kocore.h"
44#endif 44#endif
45#include "koprefs.h" 45#include "koprefs.h"
46#include "koglobals.h" 46#include "koglobals.h"
47 47
48#include "kodaymatrix.h" 48#include "kodaymatrix.h"
49#include "kodaymatrix.moc"
50 49
51// ============================================================================ 50// ============================================================================
52// D Y N A M I C T I P 51// D Y N A M I C T I P
53// ============================================================================ 52// ============================================================================
54 53
55DynamicTip::DynamicTip( QWidget * parent ) 54DynamicTip::DynamicTip( QWidget * parent )
56 : QToolTip( parent ) 55 : QToolTip( parent )
57{ 56{
58 matrix = (KODayMatrix*)parent; 57 matrix = (KODayMatrix*)parent;
59} 58}
60 59
61 60
62void DynamicTip::maybeTip( const QPoint &pos ) 61void DynamicTip::maybeTip( const QPoint &pos )
63{ 62{
64 //calculate which cell of the matrix the mouse is in 63 //calculate which cell of the matrix the mouse is in
65 QRect sz = matrix->frameRect(); 64 QRect sz = matrix->frameRect();
66 int dheight = sz.height()*7 / 42; 65 int dheight = sz.height()*7 / 42;
67 int dwidth = sz.width() / 7; 66 int dwidth = sz.width() / 7;
68 int row = pos.y()/dheight; 67 int row = pos.y()/dheight;
69 int col = pos.x()/dwidth; 68 int col = pos.x()/dwidth;
70 69
71 QRect rct(col*dwidth, row*dheight, dwidth, dheight); 70 QRect rct(col*dwidth, row*dheight, dwidth, dheight);
72 71
73// kdDebug() << "DynamicTip::maybeTip matrix cell index [" << 72// kdDebug() << "DynamicTip::maybeTip matrix cell index [" <<
74// col << "][" << row << "] => " <<(col+row*7) << endl; 73// col << "][" << row << "] => " <<(col+row*7) << endl;
75 74
76 //show holiday names only 75 //show holiday names only
77 QString str = matrix->getHolidayLabel(col+row*7); 76 QString str = matrix->getHolidayLabel(col+row*7);
78 if (str.isEmpty()) return; 77 if (str.isEmpty()) return;
79 tip(rct, str); 78 tip(rct, str);
80} 79}
81 80
82 81
83// ============================================================================ 82// ============================================================================
84// K O D A Y M A T R I X 83// K O D A Y M A T R I X
85// ============================================================================ 84// ============================================================================
86 85
87const int KODayMatrix::NOSELECTION = -1000; 86const int KODayMatrix::NOSELECTION = -1000;
88const int KODayMatrix::NUMDAYS = 42; 87const int KODayMatrix::NUMDAYS = 42;
89 88
90KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : 89KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) :
91 QFrame(parent, name) 90 QFrame(parent, name)
92{ 91{
93 mCalendar = calendar; 92 mCalendar = calendar;
94 93
95 // initialize dynamic arrays 94 // initialize dynamic arrays
96 days = new QDate[NUMDAYS]; 95 days = new QDate[NUMDAYS];
97 daylbls = new QString[NUMDAYS]; 96 daylbls = new QString[NUMDAYS];
98 events = new int[NUMDAYS]; 97 events = new int[NUMDAYS];
99 mToolTip = new DynamicTip(this); 98 mToolTip = new DynamicTip(this);
100 99
101 // set default values used for drawing the matrix 100 // set default values used for drawing the matrix
102 mDefaultBackColor = palette().active().base(); 101 mDefaultBackColor = palette().active().base();
103 mDefaultTextColor = palette().active().foreground(); 102 mDefaultTextColor = palette().active().foreground();
104 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); 103 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor);
105 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); 104 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor);
106 mSelectedDaysColor = QColor("white"); 105 mSelectedDaysColor = QColor("white");
107 mTodayMarginWidth = 2; 106 mTodayMarginWidth = 2;
108 mSelEnd = mSelStart = NOSELECTION; 107 mSelEnd = mSelStart = NOSELECTION;
109 108
110 setAcceptDrops(true); 109 setAcceptDrops(true);
111 //setFont( QFont("Arial", 10) ); 110 //setFont( QFont("Arial", 10) );
112 updateView(date); 111 updateView(date);
113} 112}
114 113
115QColor KODayMatrix::getShadedColor(QColor color) 114QColor KODayMatrix::getShadedColor(QColor color)
116{ 115{
117 QColor shaded; 116 QColor shaded;
118 int h=0; 117 int h=0;
119 int s=0; 118 int s=0;
120 int v=0; 119 int v=0;
121 color.hsv(&h,&s,&v); 120 color.hsv(&h,&s,&v);
122 s = s/4; 121 s = s/4;
123 v = 192+v/4; 122 v = 192+v/4;
124 shaded.setHsv(h,s,v); 123 shaded.setHsv(h,s,v);
125 124
126 return shaded; 125 return shaded;
127} 126}
128 127
129KODayMatrix::~KODayMatrix() 128KODayMatrix::~KODayMatrix()
130{ 129{
131 delete [] days; 130 delete [] days;
132 delete [] daylbls; 131 delete [] daylbls;
133 delete [] events; 132 delete [] events;
134 delete mToolTip; 133 delete mToolTip;
135} 134}
136 135
137/* 136/*
138void KODayMatrix::setStartDate(QDate start) 137void KODayMatrix::setStartDate(QDate start)
139{ 138{
140 updateView(start); 139 updateView(start);
141} 140}
142*/ 141*/
143 142
144void KODayMatrix::addSelectedDaysTo(DateList& selDays) 143void KODayMatrix::addSelectedDaysTo(DateList& selDays)
145{ 144{
146 kdDebug() << "KODayMatrix::addSelectedDaysTo() - " << "mSelStart:" << mSelStart << endl; 145 kdDebug() << "KODayMatrix::addSelectedDaysTo() - " << "mSelStart:" << mSelStart << endl;
147 146
148 if (mSelStart == NOSELECTION) { 147 if (mSelStart == NOSELECTION) {
149 return; 148 return;
150 } 149 }
151 150
152 //cope with selection being out of matrix limits at top (< 0) 151 //cope with selection being out of matrix limits at top (< 0)
153 int i0 = mSelStart; 152 int i0 = mSelStart;
154 if (i0 < 0) { 153 if (i0 < 0) {
155 for (int i = i0; i < 0; i++) { 154 for (int i = i0; i < 0; i++) {
156 selDays.append(days[0].addDays(i)); 155 selDays.append(days[0].addDays(i));
157 } 156 }
158 i0 = 0; 157 i0 = 0;
159 } 158 }
160 159
161 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) 160 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1)
162 if (mSelEnd > NUMDAYS-1) { 161 if (mSelEnd > NUMDAYS-1) {
163 for (int i = i0; i <= NUMDAYS-1; i++) { 162 for (int i = i0; i <= NUMDAYS-1; i++) {
164 selDays.append(days[i]); 163 selDays.append(days[i]);
165 } 164 }
166 for (int i = NUMDAYS; i < mSelEnd; i++) { 165 for (int i = NUMDAYS; i < mSelEnd; i++) {
167 selDays.append(days[0].addDays(i)); 166 selDays.append(days[0].addDays(i));
168 } 167 }
169 168
170 // apply normal routine to selection being entirely within matrix limits 169 // apply normal routine to selection being entirely within matrix limits
171 } else { 170 } else {
172 for (int i = i0; i <= mSelEnd; i++) { 171 for (int i = i0; i <= mSelEnd; i++) {
173 selDays.append(days[i]); 172 selDays.append(days[i]);
174 } 173 }
175 } 174 }
176} 175}
177 176
178void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 177void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
179{ 178{
180 mSelStart = startdate.daysTo(start); 179 mSelStart = startdate.daysTo(start);
181 mSelEnd = startdate.daysTo(end); 180 mSelEnd = startdate.daysTo(end);
182} 181}
183 182
184 183
185void KODayMatrix::recalculateToday() 184void KODayMatrix::recalculateToday()
186{ 185{
187 today = -1; 186 today = -1;
188 for (int i=0; i<NUMDAYS; i++) { 187 for (int i=0; i<NUMDAYS; i++) {
189 days[i] = startdate.addDays(i); 188 days[i] = startdate.addDays(i);
190 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 189 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
191 190
192 // if today is in the currently displayed month, hilight today 191 // if today is in the currently displayed month, hilight today
193 if (days[i].year() == QDate::currentDate().year() && 192 if (days[i].year() == QDate::currentDate().year() &&
194 days[i].month() == QDate::currentDate().month() && 193 days[i].month() == QDate::currentDate().month() &&
195 days[i].day() == QDate::currentDate().day()) { 194 days[i].day() == QDate::currentDate().day()) {
196 today = i; 195 today = i;
197 } 196 }
198 } 197 }
199 // qDebug(QString("Today is visible at %1.").arg(today)); 198 // qDebug(QString("Today is visible at %1.").arg(today));
200} 199}
201 200
202void KODayMatrix::updateView() 201void KODayMatrix::updateView()
203{ 202{
204 updateView(startdate); 203 updateView(startdate);
205} 204}
206 205
207void KODayMatrix::updateView(QDate actdate) 206void KODayMatrix::updateView(QDate actdate)
208{ 207{
209 208
210// kdDebug() << "KODayMatrix::updateView() " << actdate.toString() << endl; 209// kdDebug() << "KODayMatrix::updateView() " << actdate.toString() << endl;
211 210
212 //flag to indicate if the starting day of the matrix has changed by this call 211 //flag to indicate if the starting day of the matrix has changed by this call
213 bool daychanged = false; 212 bool daychanged = false;
214 // if a new startdate is to be set then apply Cornelius's calculation 213 // if a new startdate is to be set then apply Cornelius's calculation
215 // of the first day to be shown 214 // of the first day to be shown
216 if (actdate != startdate) { 215 if (actdate != startdate) {
217 // reset index of selection according to shift of starting date from startdate to actdate 216 // reset index of selection according to shift of starting date from startdate to actdate
218 if (mSelStart != NOSELECTION) { 217 if (mSelStart != NOSELECTION) {
219 int tmp = actdate.daysTo(startdate); 218 int tmp = actdate.daysTo(startdate);
220 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 219 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
221 // shift selection if new one would be visible at least partly ! 220 // shift selection if new one would be visible at least partly !
222 221
223 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 222 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
224 // nested if is required for next X display pushed from a different month - correction required 223 // nested if is required for next X display pushed from a different month - correction required
225 // otherwise, for month forward and backward, it must be avoided 224 // otherwise, for month forward and backward, it must be avoided
226 if( mSelStart > NUMDAYS || mSelStart < 0 ) 225 if( mSelStart > NUMDAYS || mSelStart < 0 )
227 mSelStart = mSelStart + tmp; 226 mSelStart = mSelStart + tmp;
228 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 227 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
229 mSelEnd = mSelEnd + tmp; 228 mSelEnd = mSelEnd + tmp;
230 } 229 }
231 } 230 }
232 231
233 startdate = actdate; 232 startdate = actdate;
234 daychanged = true; 233 daychanged = true;
235 } 234 }
236 235
237 if (daychanged) { 236 if (daychanged) {
238 recalculateToday(); 237 recalculateToday();
239 } 238 }
240 239
241 for(int i = 0; i < NUMDAYS; i++) { 240 for(int i = 0; i < NUMDAYS; i++) {
242 241
243 // if events are set for the day then remember to draw it bold 242 // if events are set for the day then remember to draw it bold
244 QPtrList<Event> eventlist = mCalendar->events(days[i]); 243 QPtrList<Event> eventlist = mCalendar->events(days[i]);
245 Event *event; 244 Event *event;
246 int numEvents = eventlist.count(); 245 int numEvents = eventlist.count();
247 246
248 for(event=eventlist.first();event != 0;event=eventlist.next()) { 247 for(event=eventlist.first();event != 0;event=eventlist.next()) {
249 ushort recurType = event->recurrence()->doesRecur(); 248 ushort recurType = event->recurrence()->doesRecur();
250 249
251 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 250 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
252 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 251 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
253 numEvents--; 252 numEvents--;
254 } 253 }
255 } 254 }
256 events[i] = numEvents; 255 events[i] = numEvents;
257 256
258 //if it is a holy day then draw it red. Sundays are consider holidays, too 257 //if it is a holy day then draw it red. Sundays are consider holidays, too
259#ifndef KORG_NOPLUGINS 258#ifndef KORG_NOPLUGINS
260 QString holiStr = KOCore::self()->holiday(days[i]); 259 QString holiStr = KOCore::self()->holiday(days[i]);
261#else 260#else
262 QString holiStr = QString::null; 261 QString holiStr = QString::null;
263#endif 262#endif
264 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 263 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
265 !holiStr.isEmpty()) { 264 !holiStr.isEmpty()) {
266 if (holiStr.isNull()) holiStr = ""; 265 if (holiStr.isNull()) holiStr = "";
267 mHolidays[i] = holiStr; 266 mHolidays[i] = holiStr;
268 267
269 } else { 268 } else {
270 mHolidays[i] = QString::null; 269 mHolidays[i] = QString::null;
271 } 270 }
272 } 271 }
273} 272}
274 273
275const QDate& KODayMatrix::getDate(int offset) 274const QDate& KODayMatrix::getDate(int offset)
276{ 275{
277 if (offset < 0 || offset > NUMDAYS-1) { 276 if (offset < 0 || offset > NUMDAYS-1) {
278 kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getDate(int)" << endl; 277 kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getDate(int)" << endl;
279 return days[0]; 278 return days[0];
280 } 279 }
281 return days[offset]; 280 return days[offset];
282} 281}
283 282
284QString KODayMatrix::getHolidayLabel(int offset) 283QString KODayMatrix::getHolidayLabel(int offset)
285{ 284{
286 if (offset < 0 || offset > NUMDAYS-1) { 285 if (offset < 0 || offset > NUMDAYS-1) {
287 kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getHolidayLabel(int)" << endl; 286 kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getHolidayLabel(int)" << endl;
288 return 0; 287 return 0;
289 } 288 }
290 return mHolidays[offset]; 289 return mHolidays[offset];
291} 290}
292 291
293int KODayMatrix::getDayIndexFrom(int x, int y) 292int KODayMatrix::getDayIndexFrom(int x, int y)
294{ 293{
295 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? 294 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ?
296 6 - x/daysize.width() : x/daysize.width()); 295 6 - x/daysize.width() : x/daysize.width());
297} 296}
298 297
299// ---------------------------------------------------------------------------- 298// ----------------------------------------------------------------------------
300// M O U S E E V E N T H A N D L I N G 299// M O U S E E V E N T H A N D L I N G
301// ---------------------------------------------------------------------------- 300// ----------------------------------------------------------------------------
302 301
303void KODayMatrix::mousePressEvent (QMouseEvent* e) 302void KODayMatrix::mousePressEvent (QMouseEvent* e)
304{ 303{
305 mSelStart = getDayIndexFrom(e->x(), e->y()); 304 mSelStart = getDayIndexFrom(e->x(), e->y());
306 if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; 305 if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1;
307 mSelInit = mSelStart; 306 mSelInit = mSelStart;
308} 307}
309 308
310void KODayMatrix::mouseReleaseEvent (QMouseEvent* e) 309void KODayMatrix::mouseReleaseEvent (QMouseEvent* e)
311{ 310{
312 311
313 int tmp = getDayIndexFrom(e->x(), e->y()); 312 int tmp = getDayIndexFrom(e->x(), e->y());
314 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 313 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
315 314
316 if (mSelInit > tmp) { 315 if (mSelInit > tmp) {
317 mSelEnd = mSelInit; 316 mSelEnd = mSelInit;
318 if (tmp != mSelStart) { 317 if (tmp != mSelStart) {
319 mSelStart = tmp; 318 mSelStart = tmp;
320 repaint(); 319 repaint();
321 } 320 }
322 } else { 321 } else {
323 mSelStart = mSelInit; 322 mSelStart = mSelInit;
324 323
325 //repaint only if selection has changed 324 //repaint only if selection has changed
326 if (tmp != mSelEnd) { 325 if (tmp != mSelEnd) {
327 mSelEnd = tmp; 326 mSelEnd = tmp;
328 repaint(); 327 repaint();
329 } 328 }
330 } 329 }
331 330
332 DateList daylist; 331 DateList daylist;
333 if ( mSelStart < 0 ) 332 if ( mSelStart < 0 )
334 mSelStart = 0; 333 mSelStart = 0;
335 for (int i = mSelStart; i <= mSelEnd; i++) { 334 for (int i = mSelStart; i <= mSelEnd; i++) {
336 daylist.append(days[i]); 335 daylist.append(days[i]);
337 } 336 }
338 emit selected((const DateList)daylist); 337 emit selected((const DateList)daylist);
339 338
340} 339}
341 340
342void KODayMatrix::mouseMoveEvent (QMouseEvent* e) 341void KODayMatrix::mouseMoveEvent (QMouseEvent* e)
343{ 342{
344 int tmp = getDayIndexFrom(e->x(), e->y()); 343 int tmp = getDayIndexFrom(e->x(), e->y());
345 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 344 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
346 345
347 if (mSelInit > tmp) { 346 if (mSelInit > tmp) {
348 mSelEnd = mSelInit; 347 mSelEnd = mSelInit;
349 if (tmp != mSelStart) { 348 if (tmp != mSelStart) {
350 mSelStart = tmp; 349 mSelStart = tmp;
351 repaint(); 350 repaint();
352 } 351 }
353 } else { 352 } else {
354 mSelStart = mSelInit; 353 mSelStart = mSelInit;
355 354
356 //repaint only if selection has changed 355 //repaint only if selection has changed
357 if (tmp != mSelEnd) { 356 if (tmp != mSelEnd) {
358 mSelEnd = tmp; 357 mSelEnd = tmp;
359 repaint(); 358 repaint();
360 } 359 }
361 } 360 }
362} 361}
363 362
364// ---------------------------------------------------------------------------- 363// ----------------------------------------------------------------------------
365// D R A G ' N D R O P H A N D L I N G 364// D R A G ' N D R O P H A N D L I N G
366// ---------------------------------------------------------------------------- 365// ----------------------------------------------------------------------------
367 366
368void KODayMatrix::dragEnterEvent(QDragEnterEvent *e) 367void KODayMatrix::dragEnterEvent(QDragEnterEvent *e)
369{ 368{
370#ifndef KORG_NODND 369#ifndef KORG_NODND
371 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 370 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
372 e->ignore(); 371 e->ignore();
373 return; 372 return;
374 } 373 }
375 374
376 // some visual feedback 375 // some visual feedback
377// oldPalette = palette(); 376// oldPalette = palette();
378// setPalette(my_HilitePalette); 377// setPalette(my_HilitePalette);
379// update(); 378// update();
380#endif 379#endif
381} 380}
382 381
383void KODayMatrix::dragMoveEvent(QDragMoveEvent *e) 382void KODayMatrix::dragMoveEvent(QDragMoveEvent *e)
384{ 383{
385#ifndef KORG_NODND 384#ifndef KORG_NODND
386 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 385 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
387 e->ignore(); 386 e->ignore();
388 return; 387 return;
389 } 388 }
390 389
391 e->accept(); 390 e->accept();
392#endif 391#endif
393} 392}
394 393
395void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/) 394void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/)
396{ 395{
397#ifndef KORG_NODND 396#ifndef KORG_NODND
398// setPalette(oldPalette); 397// setPalette(oldPalette);
399// update(); 398// update();
400#endif 399#endif
401} 400}
402 401
403void KODayMatrix::dropEvent(QDropEvent *e) 402void KODayMatrix::dropEvent(QDropEvent *e)
404{ 403{
405#ifndef KORG_NODND 404#ifndef KORG_NODND
406// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl; 405// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl;
407 406
408 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 407 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
409 e->ignore(); 408 e->ignore();
410 return; 409 return;
411 } 410 }
412 411
413 DndFactory factory( mCalendar ); 412 DndFactory factory( mCalendar );
414 Event *event = factory.createDrop(e); 413 Event *event = factory.createDrop(e);
415 414
416 if (event) { 415 if (event) {
417 e->acceptAction(); 416 e->acceptAction();
418 417
419 Event *existingEvent = mCalendar->event(event->uid()); 418 Event *existingEvent = mCalendar->event(event->uid());
420 419
421 if(existingEvent) { 420 if(existingEvent) {
422 // uniquify event 421 // uniquify event
423 event->recreate(); 422 event->recreate();
424/* 423/*
425 KMessageBox::sorry(this, 424 KMessageBox::sorry(this,
426 i18n("Event already exists in this calendar."), 425 i18n("Event already exists in this calendar."),
427 i18n("Drop Event")); 426 i18n("Drop Event"));
428 delete event; 427 delete event;
429 return; 428 return;
430*/ 429*/
431 } 430 }
432// kdDebug() << "Drop new Event" << endl; 431// kdDebug() << "Drop new Event" << endl;
433 // Adjust date 432 // Adjust date
diff --git a/korganizer/kodialogmanager.cpp b/korganizer/kodialogmanager.cpp
index caf7599..58198a2 100644
--- a/korganizer/kodialogmanager.cpp
+++ b/korganizer/kodialogmanager.cpp
@@ -1,343 +1,342 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001 4 Copyright (c) 2001
5 Cornelius Schumacher <schumacher@kde.org> 5 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <libkdepim/categoryeditdialog.h> 22#include <libkdepim/categoryeditdialog.h>
23 23
24#include "calendarview.h" 24#include "calendarview.h"
25#include "incomingdialog.h" 25#include "incomingdialog.h"
26#include "outgoingdialog.h" 26#include "outgoingdialog.h"
27#include "koprefsdialog.h" 27#include "koprefsdialog.h"
28#include "koeventeditor.h" 28#include "koeventeditor.h"
29#include "koprefs.h" 29#include "koprefs.h"
30#include "datenavigator.h" 30#include "datenavigator.h"
31#include "kotodoeditor.h" 31#include "kotodoeditor.h"
32#include "searchdialog.h" 32#include "searchdialog.h"
33#include "filtereditdialog.h" 33#include "filtereditdialog.h"
34#ifndef KORG_NOPLUGINS 34#ifndef KORG_NOPLUGINS
35#include "plugindialog.h" 35#include "plugindialog.h"
36#endif 36#endif
37#ifndef KORG_NOARCHIVE 37#ifndef KORG_NOARCHIVE
38#include "archivedialog.h" 38#include "archivedialog.h"
39#endif 39#endif
40 40
41#include "kconfig.h" 41#include "kconfig.h"
42#include "kodialogmanager.h" 42#include "kodialogmanager.h"
43#include "kodialogmanager.moc"
44 43
45KODialogManager::KODialogManager( CalendarView *mainView ) : 44KODialogManager::KODialogManager( CalendarView *mainView ) :
46 QObject(), mMainView( mainView ) 45 QObject(), mMainView( mainView )
47{ 46{
48 mOutgoingDialog = 0; 47 mOutgoingDialog = 0;
49 mIncomingDialog = 0; 48 mIncomingDialog = 0;
50 mOptionsDialog = 0; 49 mOptionsDialog = 0;
51 mSearchDialog = 0; 50 mSearchDialog = 0;
52 mArchiveDialog = 0; 51 mArchiveDialog = 0;
53 mFilterEditDialog = 0; 52 mFilterEditDialog = 0;
54 mPluginDialog = 0; 53 mPluginDialog = 0;
55 54
56 // mCategoryEditDialog = new KPIM::CategoryEditDialog(KOPrefs::instance(),mMainView); 55 // mCategoryEditDialog = new KPIM::CategoryEditDialog(KOPrefs::instance(),mMainView);
57 //KOGlobals::fitDialogToScreen( mCategoryEditDialog ); 56 //KOGlobals::fitDialogToScreen( mCategoryEditDialog );
58} 57}
59 58
60KODialogManager::~KODialogManager() 59KODialogManager::~KODialogManager()
61{ 60{
62 delete mOutgoingDialog; 61 delete mOutgoingDialog;
63 delete mIncomingDialog; 62 delete mIncomingDialog;
64 delete mOptionsDialog; 63 delete mOptionsDialog;
65 delete mSearchDialog; 64 delete mSearchDialog;
66#ifndef KORG_NOARCHIVE 65#ifndef KORG_NOARCHIVE
67 delete mArchiveDialog; 66 delete mArchiveDialog;
68#endif 67#endif
69 delete mFilterEditDialog; 68 delete mFilterEditDialog;
70#ifndef KORG_NOPLUGINS 69#ifndef KORG_NOPLUGINS
71 delete mPluginDialog; 70 delete mPluginDialog;
72#endif 71#endif
73} 72}
74 73
75OutgoingDialog *KODialogManager::outgoingDialog() 74OutgoingDialog *KODialogManager::outgoingDialog()
76{ 75{
77 createOutgoingDialog(); 76 createOutgoingDialog();
78 return mOutgoingDialog; 77 return mOutgoingDialog;
79} 78}
80 79
81void KODialogManager::createOutgoingDialog() 80void KODialogManager::createOutgoingDialog()
82{ 81{
83 if (!mOutgoingDialog) { 82 if (!mOutgoingDialog) {
84 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView); 83 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView);
85 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog); 84 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog);
86 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)), 85 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)),
87 mMainView,SIGNAL(numOutgoingChanged(int))); 86 mMainView,SIGNAL(numOutgoingChanged(int)));
88 } 87 }
89} 88}
90 89
91void KODialogManager::showOptionsDialog( bool showSync ) 90void KODialogManager::showOptionsDialog( bool showSync )
92{ 91{
93 int curLanguage = KOPrefs::instance()->mPreferredLanguage; 92 int curLanguage = KOPrefs::instance()->mPreferredLanguage;
94 if (!mOptionsDialog) { 93 if (!mOptionsDialog) {
95 mOptionsDialog = new KOPrefsDialog(mMainView); 94 mOptionsDialog = new KOPrefsDialog(mMainView);
96 //mOptionsDialog->readConfig(); 95 //mOptionsDialog->readConfig();
97 connect(mOptionsDialog,SIGNAL(configChanged()), 96 connect(mOptionsDialog,SIGNAL(configChanged()),
98 mMainView,SLOT(updateConfig())); 97 mMainView,SLOT(updateConfig()));
99 //connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 98 //connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
100 // mOptionsDialog,SLOT(updateCategories())); 99 // mOptionsDialog,SLOT(updateCategories()));
101 100
102 } 101 }
103 mOptionsDialog->readConfig(); 102 mOptionsDialog->readConfig();
104#ifndef DESKTOP_VERSION 103#ifndef DESKTOP_VERSION
105 mOptionsDialog->showMaximized(); 104 mOptionsDialog->showMaximized();
106#else 105#else
107 mOptionsDialog->show(); 106 mOptionsDialog->show();
108#endif 107#endif
109 if ( showSync ) 108 if ( showSync )
110 mOptionsDialog->showSyncPage(); 109 mOptionsDialog->showSyncPage();
111 mOptionsDialog->exec(); 110 mOptionsDialog->exec();
112 if ( curLanguage != KOPrefs::instance()->mPreferredLanguage ) 111 if ( curLanguage != KOPrefs::instance()->mPreferredLanguage )
113 KOPrefs::instance()->mLanguageChanged = true; 112 KOPrefs::instance()->mLanguageChanged = true;
114} 113}
115void KODialogManager::showSyncOptions() 114void KODialogManager::showSyncOptions()
116{ 115{
117 showOptionsDialog( true ); 116 showOptionsDialog( true );
118 117
119} 118}
120void KODialogManager::showOutgoingDialog() 119void KODialogManager::showOutgoingDialog()
121{ 120{
122 createOutgoingDialog(); 121 createOutgoingDialog();
123 mOutgoingDialog->show(); 122 mOutgoingDialog->show();
124 mOutgoingDialog->raise(); 123 mOutgoingDialog->raise();
125} 124}
126 125
127IncomingDialog *KODialogManager::incomingDialog() 126IncomingDialog *KODialogManager::incomingDialog()
128{ 127{
129 createOutgoingDialog(); 128 createOutgoingDialog();
130 if (!mIncomingDialog) { 129 if (!mIncomingDialog) {
131 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView); 130 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView);
132 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)), 131 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)),
133 mMainView,SIGNAL(numIncomingChanged(int))); 132 mMainView,SIGNAL(numIncomingChanged(int)));
134 connect(mIncomingDialog,SIGNAL(calendarUpdated()), 133 connect(mIncomingDialog,SIGNAL(calendarUpdated()),
135 mMainView,SLOT(updateView())); 134 mMainView,SLOT(updateView()));
136 } 135 }
137 return mIncomingDialog; 136 return mIncomingDialog;
138} 137}
139 138
140void KODialogManager::createIncomingDialog() 139void KODialogManager::createIncomingDialog()
141{ 140{
142 createOutgoingDialog(); 141 createOutgoingDialog();
143 if (!mIncomingDialog) { 142 if (!mIncomingDialog) {
144 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView); 143 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView);
145 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)), 144 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)),
146 mMainView,SIGNAL(numIncomingChanged(int))); 145 mMainView,SIGNAL(numIncomingChanged(int)));
147 connect(mIncomingDialog,SIGNAL(calendarUpdated()), 146 connect(mIncomingDialog,SIGNAL(calendarUpdated()),
148 mMainView,SLOT(updateView())); 147 mMainView,SLOT(updateView()));
149 } 148 }
150} 149}
151 150
152void KODialogManager::showIncomingDialog() 151void KODialogManager::showIncomingDialog()
153{ 152{
154 createIncomingDialog(); 153 createIncomingDialog();
155 mIncomingDialog->show(); 154 mIncomingDialog->show();
156 mIncomingDialog->raise(); 155 mIncomingDialog->raise();
157} 156}
158/* 157/*
159void KODialogManager::showCategoryEditDialog() 158void KODialogManager::showCategoryEditDialog()
160{ 159{
161 mCategoryEditDialog->show(); 160 mCategoryEditDialog->show();
162} 161}
163*/ 162*/
164void KODialogManager::hideSearchDialog() 163void KODialogManager::hideSearchDialog()
165{ 164{
166 if (mSearchDialog) 165 if (mSearchDialog)
167 mSearchDialog->hide(); 166 mSearchDialog->hide();
168} 167}
169 168
170void KODialogManager::showSearchDialog() 169void KODialogManager::showSearchDialog()
171{ 170{
172 if (!mSearchDialog) { 171 if (!mSearchDialog) {
173 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView); 172 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView);
174 KOListView * lview = mSearchDialog->listview(); 173 KOListView * lview = mSearchDialog->listview();
175 174
176 connect(lview, SIGNAL(showIncidenceSignal(Incidence *)), 175 connect(lview, SIGNAL(showIncidenceSignal(Incidence *)),
177 mMainView, SLOT(showIncidence(Incidence *))); 176 mMainView, SLOT(showIncidence(Incidence *)));
178 connect(lview, SIGNAL(editIncidenceSignal(Incidence *)), 177 connect(lview, SIGNAL(editIncidenceSignal(Incidence *)),
179 mMainView, SLOT(editIncidence(Incidence *))); 178 mMainView, SLOT(editIncidence(Incidence *)));
180 connect(lview, SIGNAL(deleteIncidenceSignal(Incidence *)), 179 connect(lview, SIGNAL(deleteIncidenceSignal(Incidence *)),
181 mMainView, SLOT(deleteIncidence(Incidence *))); 180 mMainView, SLOT(deleteIncidence(Incidence *)));
182 connect(lview, SIGNAL(cloneIncidenceSignal(Incidence *)), 181 connect(lview, SIGNAL(cloneIncidenceSignal(Incidence *)),
183 mMainView, SLOT(cloneIncidence(Incidence *))); 182 mMainView, SLOT(cloneIncidence(Incidence *)));
184 connect(lview, SIGNAL(beamIncidenceSignal(Incidence *)), 183 connect(lview, SIGNAL(beamIncidenceSignal(Incidence *)),
185 mMainView, SLOT(beamIncidence(Incidence *))); 184 mMainView, SLOT(beamIncidence(Incidence *)));
186 connect(lview, SIGNAL(moveIncidenceSignal(Incidence *)), 185 connect(lview, SIGNAL(moveIncidenceSignal(Incidence *)),
187 mMainView, SLOT(moveIncidence(Incidence *))); 186 mMainView, SLOT(moveIncidence(Incidence *)));
188 connect(lview, SIGNAL(beamIncidenceList(QPtrList<Incidence> )), 187 connect(lview, SIGNAL(beamIncidenceList(QPtrList<Incidence> )),
189 mMainView, SLOT(beamIncidenceList(QPtrList<Incidence> ))); 188 mMainView, SLOT(beamIncidenceList(QPtrList<Incidence> )));
190 189
191 connect(mMainView, SIGNAL(configChanged()), mSearchDialog, SLOT(updateConfig())); 190 connect(mMainView, SIGNAL(configChanged()), mSearchDialog, SLOT(updateConfig()));
192 connect(mMainView, SIGNAL(updateSearchDialog()), mSearchDialog, SLOT(updateList())); 191 connect(mMainView, SIGNAL(updateSearchDialog()), mSearchDialog, SLOT(updateList()));
193 // connect( lview, SIGNAL( incidenceSelected( Incidence * ) ), 192 // connect( lview, SIGNAL( incidenceSelected( Incidence * ) ),
194 // mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 193 // mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
195#ifndef DESKTOP_VERSION 194#ifndef DESKTOP_VERSION
196 mSearchDialog->setMaximumSize( 640, 480 ); 195 mSearchDialog->setMaximumSize( 640, 480 );
197 //mSearchDialog->setGeometry( 40,40, 400, 300); 196 //mSearchDialog->setGeometry( 40,40, 400, 300);
198 mSearchDialog->showMaximized(); 197 mSearchDialog->showMaximized();
199#else 198#else
200 KConfig *config = KOGlobals::config(); 199 KConfig *config = KOGlobals::config();
201 config->setGroup("WidgetLayout"); 200 config->setGroup("WidgetLayout");
202 QStringList list; 201 QStringList list;
203 list = config->readListEntry("SearchLayout"); 202 list = config->readListEntry("SearchLayout");
204 int x,y,w,h; 203 int x,y,w,h;
205 if ( ! list.isEmpty() ) { 204 if ( ! list.isEmpty() ) {
206 x = list[0].toInt(); 205 x = list[0].toInt();
207 y = list[1].toInt(); 206 y = list[1].toInt();
208 w = list[2].toInt(); 207 w = list[2].toInt();
209 h = list[3].toInt(); 208 h = list[3].toInt();
210 mSearchDialog->setGeometry(x,y,w,h); 209 mSearchDialog->setGeometry(x,y,w,h);
211 210
212 } 211 }
213 212
214#endif 213#endif
215 } 214 }
216 // make sure the widget is on top again 215 // make sure the widget is on top again
217 mSearchDialog->show(); 216 mSearchDialog->show();
218 mSearchDialog->raise(); 217 mSearchDialog->raise();
219} 218}
220 219
221SearchDialog * KODialogManager::getSearchDialog() 220SearchDialog * KODialogManager::getSearchDialog()
222{ 221{
223 return mSearchDialog; 222 return mSearchDialog;
224} 223}
225void KODialogManager::showArchiveDialog() 224void KODialogManager::showArchiveDialog()
226{ 225{
227#ifndef KORG_NOARCHIVE 226#ifndef KORG_NOARCHIVE
228 if (!mArchiveDialog) { 227 if (!mArchiveDialog) {
229 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView); 228 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView);
230 connect(mArchiveDialog,SIGNAL(eventsDeleted()), 229 connect(mArchiveDialog,SIGNAL(eventsDeleted()),
231 mMainView,SLOT(updateView())); 230 mMainView,SLOT(updateView()));
232 } 231 }
233 mArchiveDialog->show(); 232 mArchiveDialog->show();
234 mArchiveDialog->raise(); 233 mArchiveDialog->raise();
235 234
236 // Workaround. 235 // Workaround.
237 QApplication::restoreOverrideCursor(); 236 QApplication::restoreOverrideCursor();
238#endif 237#endif
239} 238}
240 239
241void KODialogManager::showFilterEditDialog(QPtrList<CalFilter> *filters) 240void KODialogManager::showFilterEditDialog(QPtrList<CalFilter> *filters)
242{ 241{
243 if (!mFilterEditDialog) { 242 if (!mFilterEditDialog) {
244 mFilterEditDialog = new FilterEditDialog(filters,mMainView); 243 mFilterEditDialog = new FilterEditDialog(filters,mMainView);
245 connect(mFilterEditDialog,SIGNAL(filterChanged()), 244 connect(mFilterEditDialog,SIGNAL(filterChanged()),
246 mMainView,SLOT(filterEdited())); 245 mMainView,SLOT(filterEdited()));
247 246
248 } 247 }
249 248
250#ifndef DESKTOP_VERSION 249#ifndef DESKTOP_VERSION
251 mFilterEditDialog->showMaximized(); 250 mFilterEditDialog->showMaximized();
252#else 251#else
253 mFilterEditDialog->show(); 252 mFilterEditDialog->show();
254#endif 253#endif
255 mFilterEditDialog->raise(); 254 mFilterEditDialog->raise();
256} 255}
257 256
258void KODialogManager::showPluginDialog() 257void KODialogManager::showPluginDialog()
259{ 258{
260#ifndef KORG_NOPLUGINS 259#ifndef KORG_NOPLUGINS
261 if (!mPluginDialog) { 260 if (!mPluginDialog) {
262 mPluginDialog = new PluginDialog(mMainView); 261 mPluginDialog = new PluginDialog(mMainView);
263 connect(mPluginDialog,SIGNAL(configChanged()), 262 connect(mPluginDialog,SIGNAL(configChanged()),
264 mMainView,SLOT(updateConfig())); 263 mMainView,SLOT(updateConfig()));
265 } 264 }
266 mPluginDialog->show(); 265 mPluginDialog->show();
267 mPluginDialog->raise(); 266 mPluginDialog->raise();
268#endif 267#endif
269} 268}
270 269
271KOEventEditor *KODialogManager::getEventEditor() 270KOEventEditor *KODialogManager::getEventEditor()
272{ 271{
273 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(), 272 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(),
274 mMainView ); 273 mMainView );
275 274
276 connect(eventEditor,SIGNAL(eventAdded(Event *)), 275 connect(eventEditor,SIGNAL(eventAdded(Event *)),
277 mMainView,SLOT(eventAdded(Event *))); 276 mMainView,SLOT(eventAdded(Event *)));
278 connect(eventEditor,SIGNAL(eventChanged(Event *)), 277 connect(eventEditor,SIGNAL(eventChanged(Event *)),
279 mMainView,SLOT(eventChanged(Event *))); 278 mMainView,SLOT(eventChanged(Event *)));
280 connect(eventEditor,SIGNAL(eventDeleted()), 279 connect(eventEditor,SIGNAL(eventDeleted()),
281 mMainView,SLOT(eventDeleted())); 280 mMainView,SLOT(eventDeleted()));
282 connect(eventEditor,SIGNAL(deleteAttendee(Incidence *)), 281 connect(eventEditor,SIGNAL(deleteAttendee(Incidence *)),
283 mMainView,SLOT(schedule_cancel(Incidence *))); 282 mMainView,SLOT(schedule_cancel(Incidence *)));
284 connect( eventEditor, SIGNAL(jumpToTime( const QDate &)), 283 connect( eventEditor, SIGNAL(jumpToTime( const QDate &)),
285 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 284 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
286 connect( eventEditor, SIGNAL( showAgendaView( bool)), 285 connect( eventEditor, SIGNAL( showAgendaView( bool)),
287 mMainView->viewManager(), SLOT( showAgendaView( bool) ) ); 286 mMainView->viewManager(), SLOT( showAgendaView( bool) ) );
288 287
289 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 288 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
290 // eventEditor,SLOT(updateCategoryConfig())); 289 // eventEditor,SLOT(updateCategoryConfig()));
291 // connect(eventEditor,SIGNAL(editCategories()), 290 // connect(eventEditor,SIGNAL(editCategories()),
292 // mCategoryEditDialog,SLOT(show())); 291 // mCategoryEditDialog,SLOT(show()));
293 connect(eventEditor,SIGNAL(dialogClose(Incidence*)), 292 connect(eventEditor,SIGNAL(dialogClose(Incidence*)),
294 mMainView,SLOT(dialogClosing(Incidence*))); 293 mMainView,SLOT(dialogClosing(Incidence*)));
295 294
296 //connect(mMainView,SIGNAL(closingDown()),eventEditor,SLOT(reject())); 295 //connect(mMainView,SIGNAL(closingDown()),eventEditor,SLOT(reject()));
297 296
298 return eventEditor; 297 return eventEditor;
299} 298}
300 299
301KOTodoEditor *KODialogManager::getTodoEditor() 300KOTodoEditor *KODialogManager::getTodoEditor()
302{ 301{
303 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(), 302 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(),
304 mMainView ); 303 mMainView );
305 304
306 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 305 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
307 // todoEditor,SLOT(updateCategoryConfig())); 306 // todoEditor,SLOT(updateCategoryConfig()));
308 // connect(todoEditor,SIGNAL(editCategories()),mCategoryEditDialog,SLOT(show())); 307 // connect(todoEditor,SIGNAL(editCategories()),mCategoryEditDialog,SLOT(show()));
309 308
310 connect(todoEditor,SIGNAL(todoAdded(Todo *)), 309 connect(todoEditor,SIGNAL(todoAdded(Todo *)),
311 mMainView,SLOT(todoAdded(Todo *))); 310 mMainView,SLOT(todoAdded(Todo *)));
312 connect(todoEditor,SIGNAL(todoChanged(Todo *)), 311 connect(todoEditor,SIGNAL(todoChanged(Todo *)),
313 mMainView,SLOT(todoChanged(Todo *))); 312 mMainView,SLOT(todoChanged(Todo *)));
314 connect(todoEditor,SIGNAL(todoDeleted()), 313 connect(todoEditor,SIGNAL(todoDeleted()),
315 mMainView,SLOT(todoDeleted())); 314 mMainView,SLOT(todoDeleted()));
316 connect(todoEditor,SIGNAL(dialogClose(Incidence*)), 315 connect(todoEditor,SIGNAL(dialogClose(Incidence*)),
317 mMainView,SLOT(dialogClosing(Incidence*))); 316 mMainView,SLOT(dialogClosing(Incidence*)));
318 connect( todoEditor, SIGNAL(jumpToTime( const QDate &)), 317 connect( todoEditor, SIGNAL(jumpToTime( const QDate &)),
319 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 318 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
320 connect( todoEditor, SIGNAL( showAgendaView( bool)), 319 connect( todoEditor, SIGNAL( showAgendaView( bool)),
321 mMainView->viewManager(), SLOT( showAgendaView( bool) ) ); 320 mMainView->viewManager(), SLOT( showAgendaView( bool) ) );
322 // connect(todoEditor,SIGNAL(deleteAttendee(Incidence *)), 321 // connect(todoEditor,SIGNAL(deleteAttendee(Incidence *)),
323 // mMainView,SLOT(schedule_cancel(Incidence *))); 322 // mMainView,SLOT(schedule_cancel(Incidence *)));
324 //connect(mMainView,SIGNAL(closingDown()),todoEditor,SLOT(reject())); 323 //connect(mMainView,SIGNAL(closingDown()),todoEditor,SLOT(reject()));
325 324
326 return todoEditor; 325 return todoEditor;
327} 326}
328 327
329void KODialogManager::updateSearchDialog() 328void KODialogManager::updateSearchDialog()
330{ 329{
331 if (mSearchDialog) mSearchDialog->updateView(); 330 if (mSearchDialog) mSearchDialog->updateView();
332} 331}
333 332
334void KODialogManager::setDocumentId( const QString &id ) 333void KODialogManager::setDocumentId( const QString &id )
335{ 334{
336 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id ); 335 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id );
337} 336}
338 337
339void KODialogManager::writeSettings( KConfig *config ) 338void KODialogManager::writeSettings( KConfig *config )
340{ 339{
341 if (mSearchDialog) 340 if (mSearchDialog)
342 mSearchDialog->listview()->writeSettings(config,"SearchListView Layout"); 341 mSearchDialog->listview()->writeSettings(config,"SearchListView Layout");
343} 342}
diff --git a/korganizer/koeditordetails.cpp b/korganizer/koeditordetails.cpp
index 7c4c382..c0e7bdd 100644
--- a/korganizer/koeditordetails.cpp
+++ b/korganizer/koeditordetails.cpp
@@ -1,398 +1,397 @@
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 thse hope that it will be useful, 10 This program is distributed in thse 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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qfiledialog.h> 25#include <qfiledialog.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qapp.h> 32#include <qapp.h>
33 33
34#include <klocale.h> 34#include <klocale.h>
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kiconloader.h> 36#include <kiconloader.h>
37#include <kstandarddirs.h> 37#include <kstandarddirs.h>
38#include <kmessagebox.h> 38#include <kmessagebox.h>
39#ifndef KORG_NOKABC 39#ifndef KORG_NOKABC
40#include <kabc/addresseedialog.h> 40#include <kabc/addresseedialog.h>
41#endif 41#endif
42 42
43#include <libkcal/incidence.h> 43#include <libkcal/incidence.h>
44 44
45#include "koprefs.h" 45#include "koprefs.h"
46 46
47#include "koeditordetails.h" 47#include "koeditordetails.h"
48#include "koeditordetails.moc"
49 48
50template <> 49template <>
51CustomListViewItem<class Attendee *>::~CustomListViewItem() 50CustomListViewItem<class Attendee *>::~CustomListViewItem()
52{ 51{
53 delete mData; 52 delete mData;
54} 53}
55 54
56template <> 55template <>
57void CustomListViewItem<class Attendee *>::updateItem() 56void CustomListViewItem<class Attendee *>::updateItem()
58{ 57{
59 setText(0,mData->name()); 58 setText(0,mData->name());
60 setText(1,mData->email()); 59 setText(1,mData->email());
61 setText(2,mData->roleStr()); 60 setText(2,mData->roleStr());
62 setText(3,mData->statusStr()); 61 setText(3,mData->statusStr());
63 if (mData->RSVP() && !mData->email().isEmpty()) 62 if (mData->RSVP() && !mData->email().isEmpty())
64 setPixmap(4,SmallIcon("mailappt")); 63 setPixmap(4,SmallIcon("mailappt"));
65 else 64 else
66 setPixmap(4,SmallIcon("nomailappt")); 65 setPixmap(4,SmallIcon("nomailappt"));
67} 66}
68 67
69 68
70KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name) 69KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name)
71 : QWidget( parent, name), mDisableItemUpdate( false ) 70 : QWidget( parent, name), mDisableItemUpdate( false )
72{ 71{
73 QGridLayout *topLayout = new QGridLayout(this); 72 QGridLayout *topLayout = new QGridLayout(this);
74 topLayout->setSpacing(spacing); 73 topLayout->setSpacing(spacing);
75 74
76 QString organizer = KOPrefs::instance()->email(); 75 QString organizer = KOPrefs::instance()->email();
77 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this); 76 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this);
78 77
79 mListView = new KListView(this,"mListView"); 78 mListView = new KListView(this,"mListView");
80 mListView->addColumn(i18n("Name"),180); 79 mListView->addColumn(i18n("Name"),180);
81 mListView->addColumn(i18n("Email"),180); 80 mListView->addColumn(i18n("Email"),180);
82 mListView->addColumn(i18n("Role"),60); 81 mListView->addColumn(i18n("Role"),60);
83 mListView->addColumn(i18n("Status"),100); 82 mListView->addColumn(i18n("Status"),100);
84 mListView->addColumn(i18n("RSVP"),35); 83 mListView->addColumn(i18n("RSVP"),35);
85 if ( KOPrefs::instance()->mCompactDialogs ) { 84 if ( KOPrefs::instance()->mCompactDialogs ) {
86 //mListView->setFixedHeight(78); 85 //mListView->setFixedHeight(78);
87 } 86 }
88 87
89 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)), 88 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)),
90 SLOT(updateAttendeeInput())); 89 SLOT(updateAttendeeInput()));
91 90
92 QLabel *attendeeLabel = new QLabel(this); 91 QLabel *attendeeLabel = new QLabel(this);
93 attendeeLabel->setText(i18n("Name:")); 92 attendeeLabel->setText(i18n("Name:"));
94 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() ); 93 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() );
95 mNameEdit = new QLineEdit(this); 94 mNameEdit = new QLineEdit(this);
96 connect(mNameEdit,SIGNAL(textChanged(const QString &)), 95 connect(mNameEdit,SIGNAL(textChanged(const QString &)),
97 SLOT(updateAttendeeItem())); 96 SLOT(updateAttendeeItem()));
98 97
99 mUidEdit = new QLineEdit(0); 98 mUidEdit = new QLineEdit(0);
100 mUidEdit->setText(""); 99 mUidEdit->setText("");
101 100
102 QLabel *emailLabel = new QLabel(this); 101 QLabel *emailLabel = new QLabel(this);
103 emailLabel->setText(i18n("Email:")); 102 emailLabel->setText(i18n("Email:"));
104 mEmailEdit = new QLineEdit(this); 103 mEmailEdit = new QLineEdit(this);
105 connect(mEmailEdit,SIGNAL(textChanged(const QString &)), 104 connect(mEmailEdit,SIGNAL(textChanged(const QString &)),
106 SLOT(updateAttendeeItem())); 105 SLOT(updateAttendeeItem()));
107 106
108 QLabel *attendeeRoleLabel = new QLabel(this); 107 QLabel *attendeeRoleLabel = new QLabel(this);
109 attendeeRoleLabel->setText(i18n("Role:")); 108 attendeeRoleLabel->setText(i18n("Role:"));
110 mRoleCombo = new QComboBox(false,this); 109 mRoleCombo = new QComboBox(false,this);
111 mRoleCombo->insertStringList(Attendee::roleList()); 110 mRoleCombo->insertStringList(Attendee::roleList());
112 connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); 111 connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem()));
113 112
114 QLabel *statusLabel = new QLabel(this); 113 QLabel *statusLabel = new QLabel(this);
115 statusLabel->setText( i18n("Status:") ); 114 statusLabel->setText( i18n("Status:") );
116 115
117 mStatusCombo = new QComboBox(false,this); 116 mStatusCombo = new QComboBox(false,this);
118 mStatusCombo->insertStringList(Attendee::statusList()); 117 mStatusCombo->insertStringList(Attendee::statusList());
119 connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); 118 connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem()));
120 119
121 mRsvpButton = new QCheckBox(this); 120 mRsvpButton = new QCheckBox(this);
122 mRsvpButton->setText(i18n("Request response")); 121 mRsvpButton->setText(i18n("Request response"));
123 connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem())); 122 connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem()));
124 QWidget *buttonBox = new QWidget(this); 123 QWidget *buttonBox = new QWidget(this);
125 QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox); 124 QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox);
126 125
127 QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox); 126 QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox);
128 buttonLayout->addWidget(newButton); 127 buttonLayout->addWidget(newButton);
129 connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee())); 128 connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee()));
130 129
131 mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox); 130 mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox);
132 buttonLayout->addWidget(mRemoveButton); 131 buttonLayout->addWidget(mRemoveButton);
133 connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee())); 132 connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee()));
134 133
135 mAddressBookButton = new QPushButton(i18n("Address &Book..."),this); 134 mAddressBookButton = new QPushButton(i18n("Address &Book..."),this);
136 // buttonLayout->addWidget(mAddressBookButton); 135 // buttonLayout->addWidget(mAddressBookButton);
137 connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook())); 136 connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook()));
138 //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () ); 137 //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () );
139 138
140 if (qApp->desktop()->width() < 300 ) { 139 if (qApp->desktop()->width() < 300 ) {
141 mListView->setFixedHeight(80); 140 mListView->setFixedHeight(80);
142 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3); 141 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3);
143 topLayout->addMultiCellWidget(mListView,1,1,0,3); 142 topLayout->addMultiCellWidget(mListView,1,1,0,3);
144 topLayout->addWidget(attendeeLabel,3,0); 143 topLayout->addWidget(attendeeLabel,3,0);
145 topLayout->addMultiCellWidget(mNameEdit,3,3,1,2); 144 topLayout->addMultiCellWidget(mNameEdit,3,3,1,2);
146 topLayout->addWidget(emailLabel,4,0); 145 topLayout->addWidget(emailLabel,4,0);
147 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2); 146 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2);
148 topLayout->addWidget(attendeeRoleLabel,5,0); 147 topLayout->addWidget(attendeeRoleLabel,5,0);
149 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); 148 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2);
150 topLayout->addWidget(statusLabel,6,0); 149 topLayout->addWidget(statusLabel,6,0);
151 topLayout->addMultiCellWidget(mStatusCombo,6,6,1,2); 150 topLayout->addMultiCellWidget(mStatusCombo,6,6,1,2);
152 topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3); 151 topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3);
153 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); 152 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1);
154 topLayout->addMultiCellWidget(buttonBox,3,4,3,3); 153 topLayout->addMultiCellWidget(buttonBox,3,4,3,3);
155 topLayout->setRowStretch(1,2); 154 topLayout->setRowStretch(1,2);
156 topLayout->setColStretch(0,0); 155 topLayout->setColStretch(0,0);
157 topLayout->setColStretch(1,2); 156 topLayout->setColStretch(1,2);
158 topLayout->setColStretch(2,1); 157 topLayout->setColStretch(2,1);
159 topLayout->setColStretch(3,1); 158 topLayout->setColStretch(3,1);
160 159
161 } else { 160 } else {
162 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5); 161 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5);
163 topLayout->addMultiCellWidget(mListView,1,1,0,5); 162 topLayout->addMultiCellWidget(mListView,1,1,0,5);
164 topLayout->addWidget(attendeeLabel,3,0); 163 topLayout->addWidget(attendeeLabel,3,0);
165 topLayout->addMultiCellWidget(mNameEdit,3,3,1,4); 164 topLayout->addMultiCellWidget(mNameEdit,3,3,1,4);
166 topLayout->addWidget(emailLabel,4,0); 165 topLayout->addWidget(emailLabel,4,0);
167 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4); 166 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4);
168 topLayout->addWidget(attendeeRoleLabel,5,0); 167 topLayout->addWidget(attendeeRoleLabel,5,0);
169 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); 168 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2);
170 topLayout->addWidget(statusLabel,5,3); 169 topLayout->addWidget(statusLabel,5,3);
171 topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5); 170 topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5);
172 topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5); 171 topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5);
173 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); 172 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1);
174 topLayout->addMultiCellWidget(buttonBox,3,4,5,5); 173 topLayout->addMultiCellWidget(buttonBox,3,4,5,5);
175 topLayout->setRowStretch(1,5); 174 topLayout->setRowStretch(1,5);
176 topLayout->setColStretch(0,0); 175 topLayout->setColStretch(0,0);
177 } 176 }
178// #if 0 177// #if 0
179// topLayout->setColStretch(2,1); 178// topLayout->setColStretch(2,1);
180// topLayout->addWidget(statusLabel,3,3); 179// topLayout->addWidget(statusLabel,3,3);
181// topLayout->addWidget(mStatusCombo,3,4); 180// topLayout->addWidget(mStatusCombo,3,4);
182// #else 181// #else
183// topLayout->addWidget(statusLabel,4,3); 182// topLayout->addWidget(statusLabel,4,3);
184// // topLayout->addWidget(mStatusCombo,4,3); 183// // topLayout->addWidget(mStatusCombo,4,3);
185// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); 184// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5);
186 185
187// #endif 186// #endif
188// // topLayout->setRowStretch(5,1); 187// // topLayout->setRowStretch(5,1);
189// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); 188// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1);
190// topLayout->addMultiCellWidget(buttonBox,2,3,5,5); 189// topLayout->addMultiCellWidget(buttonBox,2,3,5,5);
191// topLayout->setRowStretch(1,5); 190// topLayout->setRowStretch(1,5);
192// topLayout->setColStretch(0,0); 191// topLayout->setColStretch(0,0);
193 192
194#ifdef KORG_NOKABC 193#ifdef KORG_NOKABC
195 mAddressBookButton->hide(); 194 mAddressBookButton->hide();
196#endif 195#endif
197 196
198 updateAttendeeInput(); 197 updateAttendeeInput();
199} 198}
200 199
201KOEditorDetails::~KOEditorDetails() 200KOEditorDetails::~KOEditorDetails()
202{ 201{
203} 202}
204 203
205void KOEditorDetails::removeAttendee() 204void KOEditorDetails::removeAttendee()
206{ 205{
207 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); 206 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem();
208 if (!aItem) return; 207 if (!aItem) return;
209 208
210 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), 209 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(),
211 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), 210 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(),
212 aItem->data()->uid()); 211 aItem->data()->uid());
213 mdelAttendees.append(delA); 212 mdelAttendees.append(delA);
214 213
215 delete aItem; 214 delete aItem;
216 215
217 updateAttendeeInput(); 216 updateAttendeeInput();
218} 217}
219 218
220 219
221void KOEditorDetails::openAddressBook() 220void KOEditorDetails::openAddressBook()
222{ 221{
223#ifndef KORG_NOKABC 222#ifndef KORG_NOKABC
224 223
225 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 224 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
226 uint i=0; 225 uint i=0;
227 for (i=0; i < list.count(); i++) { 226 for (i=0; i < list.count(); i++) {
228 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); 227 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) );
229 } 228 }
230 229
231#if 0 230#if 0
232 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); 231 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this);
233 if (!a.isEmpty()) { 232 if (!a.isEmpty()) {
234 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); 233 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) );
235 } 234 }
236#endif 235#endif
237#endif 236#endif
238} 237}
239 238
240 239
241void KOEditorDetails::addNewAttendee() 240void KOEditorDetails::addNewAttendee()
242{ 241{
243#if 0 242#if 0
244 // this is cool. If they didn't enter an email address, 243 // this is cool. If they didn't enter an email address,
245 // try to look it up in the address book and fill it in for them. 244 // try to look it up in the address book and fill it in for them.
246 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { 245 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) {
247 KabAPI addrBook; 246 KabAPI addrBook;
248 QString name; 247 QString name;
249 std::list<AddressBook::Entry> entries; 248 std::list<AddressBook::Entry> entries;
250 name = mNameEdit->text(); 249 name = mNameEdit->text();
251 if (addrBook.init() == AddressBook::NoError) { 250 if (addrBook.init() == AddressBook::NoError) {
252 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { 251 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) {
253 kdDebug() << "positive match" << endl; 252 kdDebug() << "positive match" << endl;
254 // take first email address 253 // take first email address
255 if (!entries.front().emails.isEmpty() && 254 if (!entries.front().emails.isEmpty() &&
256 entries.front().emails.first().length()>0) 255 entries.front().emails.first().length()>0)
257 mEmailEdit->setText(entries.front().emails.first()); 256 mEmailEdit->setText(entries.front().emails.first());
258 } 257 }
259 } 258 }
260 } 259 }
261#endif 260#endif
262 261
263 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); 262 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)"));
264 insertAttendee(a); 263 insertAttendee(a);
265} 264}
266 265
267 266
268void KOEditorDetails::insertAttendee(Attendee *a) 267void KOEditorDetails::insertAttendee(Attendee *a)
269{ 268{
270 AttendeeListItem *item = new AttendeeListItem(a,mListView); 269 AttendeeListItem *item = new AttendeeListItem(a,mListView);
271 mListView->setSelected( item, true ); 270 mListView->setSelected( item, true );
272} 271}
273 272
274void KOEditorDetails::setDefaults() 273void KOEditorDetails::setDefaults()
275{ 274{
276 mRsvpButton->setChecked(true); 275 mRsvpButton->setChecked(true);
277 mListView->clear(); 276 mListView->clear();
278 mdelAttendees.clear(); 277 mdelAttendees.clear();
279 clearAttendeeInput(); 278 clearAttendeeInput();
280 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); 279 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email()));
281 280
282 mNameEdit->setText(""); 281 mNameEdit->setText("");
283 mUidEdit->setText(""); 282 mUidEdit->setText("");
284 mEmailEdit->setText(""); 283 mEmailEdit->setText("");
285 mRoleCombo->setCurrentItem( 0 ); 284 mRoleCombo->setCurrentItem( 0 );
286 mStatusCombo->setCurrentItem( 0 ); 285 mStatusCombo->setCurrentItem( 0 );
287 286
288} 287}
289 288
290void KOEditorDetails::readEvent(Incidence *event) 289void KOEditorDetails::readEvent(Incidence *event)
291{ 290{
292 setDefaults(); 291 setDefaults();
293 //mListView->clear(); 292 //mListView->clear();
294 //mdelAttendees.clear(); 293 //mdelAttendees.clear();
295 QPtrList<Attendee> tmpAList = event->attendees(); 294 QPtrList<Attendee> tmpAList = event->attendees();
296 Attendee *a; 295 Attendee *a;
297 for (a = tmpAList.first(); a; a = tmpAList.next()) 296 for (a = tmpAList.first(); a; a = tmpAList.next())
298 insertAttendee(new Attendee(*a)); 297 insertAttendee(new Attendee(*a));
299 298
300 mListView->setSelected( mListView->firstChild(), true ); 299 mListView->setSelected( mListView->firstChild(), true );
301 mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer())); 300 mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer()));
302} 301}
303 302
304void KOEditorDetails::writeEvent(Incidence *event) 303void KOEditorDetails::writeEvent(Incidence *event)
305{ 304{
306 event->clearAttendees(); 305 event->clearAttendees();
307 QListViewItem *item; 306 QListViewItem *item;
308 AttendeeListItem *a; 307 AttendeeListItem *a;
309 for (item = mListView->firstChild(); item; 308 for (item = mListView->firstChild(); item;
310 item = item->nextSibling()) { 309 item = item->nextSibling()) {
311 a = (AttendeeListItem *)item; 310 a = (AttendeeListItem *)item;
312 event->addAttendee(new Attendee(*(a->data()))); 311 event->addAttendee(new Attendee(*(a->data())));
313 } 312 }
314 event->setOrganizer(KOPrefs::instance()->email()); 313 event->setOrganizer(KOPrefs::instance()->email());
315} 314}
316 315
317void KOEditorDetails::cancelAttendeeEvent(Incidence *event) 316void KOEditorDetails::cancelAttendeeEvent(Incidence *event)
318{ 317{
319 event->clearAttendees(); 318 event->clearAttendees();
320 Attendee * att; 319 Attendee * att;
321 for (att=mdelAttendees.first();att;att=mdelAttendees.next()) { 320 for (att=mdelAttendees.first();att;att=mdelAttendees.next()) {
322 event->addAttendee(new Attendee(*att)); 321 event->addAttendee(new Attendee(*att));
323 } 322 }
324 mdelAttendees.clear(); 323 mdelAttendees.clear();
325} 324}
326 325
327bool KOEditorDetails::validateInput() 326bool KOEditorDetails::validateInput()
328{ 327{
329 return true; 328 return true;
330} 329}
331 330
332void KOEditorDetails::updateAttendeeInput() 331void KOEditorDetails::updateAttendeeInput()
333{ 332{
334 QListViewItem *item = mListView->selectedItem(); 333 QListViewItem *item = mListView->selectedItem();
335 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); 334 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item );
336 if (aItem) { 335 if (aItem) {
337 fillAttendeeInput( aItem ); 336 fillAttendeeInput( aItem );
338 } else { 337 } else {
339 clearAttendeeInput(); 338 clearAttendeeInput();
340 } 339 }
341} 340}
342 341
343void KOEditorDetails::clearAttendeeInput() 342void KOEditorDetails::clearAttendeeInput()
344{ 343{
345 mNameEdit->setText(""); 344 mNameEdit->setText("");
346 mUidEdit->setText(""); 345 mUidEdit->setText("");
347 mEmailEdit->setText(""); 346 mEmailEdit->setText("");
348 mRoleCombo->setCurrentItem(0); 347 mRoleCombo->setCurrentItem(0);
349 mStatusCombo->setCurrentItem(0); 348 mStatusCombo->setCurrentItem(0);
350 mRsvpButton->setChecked(true); 349 mRsvpButton->setChecked(true);
351 setEnabledAttendeeInput( false ); 350 setEnabledAttendeeInput( false );
352} 351}
353 352
354void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem ) 353void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem )
355{ 354{
356 Attendee *a = aItem->data(); 355 Attendee *a = aItem->data();
357 mDisableItemUpdate = true; 356 mDisableItemUpdate = true;
358 mNameEdit->setText(a->name()); 357 mNameEdit->setText(a->name());
359 mUidEdit->setText(a->uid()); 358 mUidEdit->setText(a->uid());
360 mEmailEdit->setText(a->email()); 359 mEmailEdit->setText(a->email());
361 mRoleCombo->setCurrentItem(a->role()); 360 mRoleCombo->setCurrentItem(a->role());
362 mStatusCombo->setCurrentItem(a->status()); 361 mStatusCombo->setCurrentItem(a->status());
363 mRsvpButton->setChecked(a->RSVP()); 362 mRsvpButton->setChecked(a->RSVP());
364 363
365 mDisableItemUpdate = false; 364 mDisableItemUpdate = false;
366 365
367 setEnabledAttendeeInput( true ); 366 setEnabledAttendeeInput( true );
368} 367}
369 368
370void KOEditorDetails::setEnabledAttendeeInput( bool enabled ) 369void KOEditorDetails::setEnabledAttendeeInput( bool enabled )
371{ 370{
372 mNameEdit->setEnabled( enabled ); 371 mNameEdit->setEnabled( enabled );
373 mEmailEdit->setEnabled( enabled ); 372 mEmailEdit->setEnabled( enabled );
374 mRoleCombo->setEnabled( enabled ); 373 mRoleCombo->setEnabled( enabled );
375 mStatusCombo->setEnabled( enabled ); 374 mStatusCombo->setEnabled( enabled );
376 mRsvpButton->setEnabled( enabled ); 375 mRsvpButton->setEnabled( enabled );
377 376
378 mRemoveButton->setEnabled( enabled ); 377 mRemoveButton->setEnabled( enabled );
379} 378}
380 379
381void KOEditorDetails::updateAttendeeItem() 380void KOEditorDetails::updateAttendeeItem()
382{ 381{
383 if (mDisableItemUpdate) return; 382 if (mDisableItemUpdate) return;
384 383
385 QListViewItem *item = mListView->selectedItem(); 384 QListViewItem *item = mListView->selectedItem();
386 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); 385 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item );
387 if ( !aItem ) return; 386 if ( !aItem ) return;
388 387
389 Attendee *a = aItem->data(); 388 Attendee *a = aItem->data();
390 389
391 a->setName( mNameEdit->text() ); 390 a->setName( mNameEdit->text() );
392 a->setUid( mUidEdit->text() ); 391 a->setUid( mUidEdit->text() );
393 a->setEmail( mEmailEdit->text() ); 392 a->setEmail( mEmailEdit->text() );
394 a->setRole( Attendee::Role( mRoleCombo->currentItem() ) ); 393 a->setRole( Attendee::Role( mRoleCombo->currentItem() ) );
395 a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) ); 394 a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) );
396 a->setRSVP( mRsvpButton->isChecked() ); 395 a->setRSVP( mRsvpButton->isChecked() );
397 aItem->updateItem(); 396 aItem->updateItem();
398} 397}
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp
index ad1389f..94e1f4c 100644
--- a/korganizer/koeditorgeneral.cpp
+++ b/korganizer/koeditorgeneral.cpp
@@ -1,437 +1,436 @@
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#include <qwidget.h> 24#include <qwidget.h>
25#include <qtooltip.h> 25#include <qtooltip.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qfile.h> 32#include <qfile.h>
33 33
34 34
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kdebug.h> 36#include <kdebug.h>
37#include <klocale.h> 37#include <klocale.h>
38#include <kiconloader.h> 38#include <kiconloader.h>
39#include <kmessagebox.h> 39#include <kmessagebox.h>
40#include <kfiledialog.h> 40#include <kfiledialog.h>
41#include <kstandarddirs.h> 41#include <kstandarddirs.h>
42 42
43#include <libkcal/todo.h> 43#include <libkcal/todo.h>
44#include <libkcal/event.h> 44#include <libkcal/event.h>
45#include <libkdepim/categoryselectdialog.h> 45#include <libkdepim/categoryselectdialog.h>
46#include <libkdepim/kdateedit.h> 46#include <libkdepim/kdateedit.h>
47 47
48#include "koprefs.h" 48#include "koprefs.h"
49#include "koglobals.h" 49#include "koglobals.h"
50 50
51#include "koeditorgeneral.h" 51#include "koeditorgeneral.h"
52#include "kolocationbox.h" 52#include "kolocationbox.h"
53#include "koeditorgeneral.moc"
54#ifndef DESKTOP_VERSION 53#ifndef DESKTOP_VERSION
55#include <qpe/qpeapplication.h> 54#include <qpe/qpeapplication.h>
56#else 55#else
57#include <qapplication.h> 56#include <qapplication.h>
58#endif 57#endif
59 58
60KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) : 59KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) :
61 QObject( parent, name) 60 QObject( parent, name)
62{ 61{
63} 62}
64 63
65KOEditorGeneral::~KOEditorGeneral() 64KOEditorGeneral::~KOEditorGeneral()
66{ 65{
67} 66}
68 67
69void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) 68void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout)
70{ 69{
71 QGridLayout *headerLayout = new QGridLayout(topLayout); 70 QGridLayout *headerLayout = new QGridLayout(topLayout);
72 71
73#if 0 72#if 0
74 mOwnerLabel = new QLabel(i18n("Owner:"),parent); 73 mOwnerLabel = new QLabel(i18n("Owner:"),parent);
75 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); 74 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1);
76#endif 75#endif
77 76
78 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); 77 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent);
79 headerLayout->addWidget(summaryLabel,1,0); 78 headerLayout->addWidget(summaryLabel,1,0);
80 79
81 mSummaryEdit = new KOLocationBox(TRUE,parent, 10); 80 mSummaryEdit = new KOLocationBox(TRUE,parent, 10);
82 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 81 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
83 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); 82 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) );
84 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); 83 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() );
85 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; 84 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2;
86 if ( QApplication::desktop()->width() > 320 ) 85 if ( QApplication::desktop()->width() > 320 )
87 mSummaryEdit->setMaximumHeight( hei +6 ); 86 mSummaryEdit->setMaximumHeight( hei +6 );
88 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); 87 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding );
89 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } 88 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink }
90 // mSummaryEdit = new QLineEdit(parent); 89 // mSummaryEdit = new QLineEdit(parent);
91 headerLayout->addWidget(mSummaryEdit,1,1); 90 headerLayout->addWidget(mSummaryEdit,1,1);
92 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 91 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
93 92
94 QLabel *locationLabel = new QLabel(i18n("Location:"),parent); 93 QLabel *locationLabel = new QLabel(i18n("Location:"),parent);
95 headerLayout->addWidget(locationLabel,2,0); 94 headerLayout->addWidget(locationLabel,2,0);
96 95
97 mLocationEdit = new KOLocationBox(TRUE,parent,10); 96 mLocationEdit = new KOLocationBox(TRUE,parent,10);
98 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 97 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
99 if ( QApplication::desktop()->width() > 320 ) 98 if ( QApplication::desktop()->width() > 320 )
100 mLocationEdit->setMaximumHeight( hei + 6); 99 mLocationEdit->setMaximumHeight( hei + 6);
101 100
102 // mLocationEdit = new QLineEdit(parent); 101 // mLocationEdit = new QLineEdit(parent);
103 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 102 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
104 headerLayout->addWidget(mLocationEdit,2,1); 103 headerLayout->addWidget(mLocationEdit,2,1);
105 headerLayout->setColStretch( 1, 10); 104 headerLayout->setColStretch( 1, 10);
106} 105}
107void KOEditorGeneral::setFocusOn( int i ) 106void KOEditorGeneral::setFocusOn( int i )
108{ 107{
109 qApp->processEvents(); 108 qApp->processEvents();
110 if ( i == 1 ) { 109 if ( i == 1 ) {
111 mDescriptionEdit->setFocus(); 110 mDescriptionEdit->setFocus();
112 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); 111 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333);
113 } 112 }
114 if ( i == 2 ) { 113 if ( i == 2 ) {
115 mSummaryEdit->setFocus(); 114 mSummaryEdit->setFocus();
116 } 115 }
117 116
118} 117}
119void KOEditorGeneral::editCategories() 118void KOEditorGeneral::editCategories()
120{ 119{
121 // qDebug("KOEditorGeneral::editCategories() "); 120 // qDebug("KOEditorGeneral::editCategories() ");
122 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 121 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
123 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &))); 122 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &)));
124 //KOGlobals::fitDialogToScreen( csd ); 123 //KOGlobals::fitDialogToScreen( csd );
125 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) ); 124 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) );
126 csd->exec(); 125 csd->exec();
127 delete csd; 126 delete csd;
128} 127}
129void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) 128void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout)
130{ 129{
131 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); 130 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout );
132 131
133 mCategoriesButton = new QPushButton(parent); 132 mCategoriesButton = new QPushButton(parent);
134 mCategoriesButton->setText(i18n("Categories...")); 133 mCategoriesButton->setText(i18n("Categories..."));
135 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); 134 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() ));
136 categoriesLayout->addWidget(mCategoriesButton); 135 categoriesLayout->addWidget(mCategoriesButton);
137 136
138 mCategoriesLabel = new QLabel(parent); 137 mCategoriesLabel = new QLabel(parent);
139 mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); 138 mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
140 categoriesLayout->addWidget(mCategoriesLabel,1); 139 categoriesLayout->addWidget(mCategoriesLabel,1);
141} 140}
142 141
143void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout) 142void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout)
144{ 143{
145 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout ); 144 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout );
146 145
147 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent); 146 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent);
148 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent); 147 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent);
149 secrecyLayout->addWidget(mCancelBox); 148 secrecyLayout->addWidget(mCancelBox);
150 secrecyLayout->addWidget(secrecyLabel); 149 secrecyLayout->addWidget(secrecyLabel);
151 150
152 mSecrecyCombo = new QComboBox(parent); 151 mSecrecyCombo = new QComboBox(parent);
153 mSecrecyCombo->insertStringList(Incidence::secrecyList()); 152 mSecrecyCombo->insertStringList(Incidence::secrecyList());
154 secrecyLayout->addWidget(mSecrecyCombo); 153 secrecyLayout->addWidget(mSecrecyCombo);
155} 154}
156 155
157void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout) 156void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout)
158{ 157{
159 mDescriptionEdit = new KTextEdit(parent); 158 mDescriptionEdit = new KTextEdit(parent);
160 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont ); 159 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont );
161 mDescriptionEdit->append(""); 160 mDescriptionEdit->append("");
162 mDescriptionEdit->setReadOnly(false); 161 mDescriptionEdit->setReadOnly(false);
163 mDescriptionEdit->setOverwriteMode(false); 162 mDescriptionEdit->setOverwriteMode(false);
164 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth ); 163 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth );
165 topLayout->addWidget(mDescriptionEdit); 164 topLayout->addWidget(mDescriptionEdit);
166#ifndef DESKTOP_VERSION 165#ifndef DESKTOP_VERSION
167 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold ); 166 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold );
168#endif 167#endif
169 168
170} 169}
171 170
172void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) 171void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout)
173{ 172{
174 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout); 173 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout);
175 174
176 //mAlarmBell = new QLabel(parent); 175 //mAlarmBell = new QLabel(parent);
177 //mAlarmBell->setPixmap(SmallIcon("bell")); 176 //mAlarmBell->setPixmap(SmallIcon("bell"));
178 //alarmLayout->addWidget(mAlarmBell); 177 //alarmLayout->addWidget(mAlarmBell);
179 if ( QApplication::desktop()->width() < 320 ) 178 if ( QApplication::desktop()->width() < 320 )
180 mAlarmButton = new QCheckBox(i18n("Rem."),parent); 179 mAlarmButton = new QCheckBox(i18n("Rem."),parent);
181 else 180 else
182 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent); 181 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent);
183 182
184 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool))); 183 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool)));
185 alarmLayout->addWidget(mAlarmButton); 184 alarmLayout->addWidget(mAlarmButton);
186 185
187 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 186 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
188 alarmLayout->addWidget(mAlarmTimeEdit); 187 alarmLayout->addWidget(mAlarmTimeEdit);
189 mAlarmIncrCombo = new QComboBox(false, parent); 188 mAlarmIncrCombo = new QComboBox(false, parent);
190 if ( QApplication::desktop()->width() < 320 ) { 189 if ( QApplication::desktop()->width() < 320 ) {
191 mAlarmIncrCombo->insertItem(i18n("min")); 190 mAlarmIncrCombo->insertItem(i18n("min"));
192 mAlarmIncrCombo->insertItem(i18n("hou")); 191 mAlarmIncrCombo->insertItem(i18n("hou"));
193 mAlarmIncrCombo->insertItem(i18n("day")); 192 mAlarmIncrCombo->insertItem(i18n("day"));
194 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); 193 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() );
195 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); 194 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() );
196 } else { 195 } else {
197 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 196 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
198 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 197 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
199 mAlarmIncrCombo->insertItem(i18n("day(s)")); 198 mAlarmIncrCombo->insertItem(i18n("day(s)"));
200 } 199 }
201 200
202 // mAlarmIncrCombo->setMinimumHeight(20); 201 // mAlarmIncrCombo->setMinimumHeight(20);
203 alarmLayout->addWidget(mAlarmIncrCombo); 202 alarmLayout->addWidget(mAlarmIncrCombo);
204 mAlarmSoundButton = new QPushButton(parent); 203 mAlarmSoundButton = new QPushButton(parent);
205 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 204 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
206 mAlarmSoundButton->setToggleButton(true); 205 mAlarmSoundButton->setToggleButton(true);
207 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 206 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
208 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 207 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
209 alarmLayout->addWidget(mAlarmSoundButton); 208 alarmLayout->addWidget(mAlarmSoundButton);
210 209
211 mAlarmProgramButton = new QPushButton(parent); 210 mAlarmProgramButton = new QPushButton(parent);
212 mAlarmProgramButton->setPixmap(SmallIcon("run")); 211 mAlarmProgramButton->setPixmap(SmallIcon("run"));
213 mAlarmProgramButton->setToggleButton(true); 212 mAlarmProgramButton->setToggleButton(true);
214 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 213 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
215 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 214 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
216 alarmLayout->addWidget(mAlarmProgramButton); 215 alarmLayout->addWidget(mAlarmProgramButton);
217 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 216 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
218 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 217 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
219 // if ( KOPrefs::instance()->mCompactDialogs ) { 218 // if ( KOPrefs::instance()->mCompactDialogs ) {
220 // mAlarmSoundButton->hide(); 219 // mAlarmSoundButton->hide();
221 // mAlarmProgramButton->hide(); 220 // mAlarmProgramButton->hide();
222 // } 221 // }
223} 222}
224 223
225void KOEditorGeneral::pickAlarmSound() 224void KOEditorGeneral::pickAlarmSound()
226{ 225{
227 226
228 //QString prefix = mAlarmSound; 227 //QString prefix = mAlarmSound;
229 if (!mAlarmSoundButton->isOn()) { 228 if (!mAlarmSoundButton->isOn()) {
230 //mAlarmSound = ""; 229 //mAlarmSound = "";
231 QToolTip::remove(mAlarmSoundButton); 230 QToolTip::remove(mAlarmSoundButton);
232 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 231 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
233 mAlarmProgramButton->setOn(true); 232 mAlarmProgramButton->setOn(true);
234 mAlarmSoundButton->setOn(false); 233 mAlarmSoundButton->setOn(false);
235 } else { 234 } else {
236 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 235 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
237 i18n("*.wav|Wav Files"), 0)); 236 i18n("*.wav|Wav Files"), 0));
238 if (!fileName.isEmpty()) { 237 if (!fileName.isEmpty()) {
239 mAlarmSound = fileName; 238 mAlarmSound = fileName;
240 QToolTip::remove(mAlarmSoundButton); 239 QToolTip::remove(mAlarmSoundButton);
241 QString dispStr = i18n("Playing '%1'").arg(fileName); 240 QString dispStr = i18n("Playing '%1'").arg(fileName);
242 QToolTip::add(mAlarmSoundButton, dispStr); 241 QToolTip::add(mAlarmSoundButton, dispStr);
243 mAlarmProgramButton->setOn(false); 242 mAlarmProgramButton->setOn(false);
244 mAlarmSoundButton->setOn(true); 243 mAlarmSoundButton->setOn(true);
245 } else { 244 } else {
246 mAlarmProgramButton->setOn(true); 245 mAlarmProgramButton->setOn(true);
247 mAlarmSoundButton->setOn(false); 246 mAlarmSoundButton->setOn(false);
248 247
249 } 248 }
250 } 249 }
251 250
252 if (mAlarmProgramButton->isOn()) 251 if (mAlarmProgramButton->isOn())
253 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 252 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram );
254 if ( mAlarmSoundButton->isOn()) 253 if ( mAlarmSoundButton->isOn())
255 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound ); 254 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound );
256} 255}
257 256
258void KOEditorGeneral::pickAlarmProgram() 257void KOEditorGeneral::pickAlarmProgram()
259{ 258{
260 if (!mAlarmProgramButton->isOn()) { 259 if (!mAlarmProgramButton->isOn()) {
261 //mAlarmProgram = ""; 260 //mAlarmProgram = "";
262 QToolTip::remove(mAlarmProgramButton); 261 QToolTip::remove(mAlarmProgramButton);
263 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 262 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
264 mAlarmProgramButton->setOn(false); 263 mAlarmProgramButton->setOn(false);
265 mAlarmSoundButton->setOn(true); 264 mAlarmSoundButton->setOn(true);
266 } else { 265 } else {
267 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 266 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
268 if (!fileName.isEmpty()) { 267 if (!fileName.isEmpty()) {
269 mAlarmProgram = fileName; 268 mAlarmProgram = fileName;
270 QToolTip::remove(mAlarmProgramButton); 269 QToolTip::remove(mAlarmProgramButton);
271 QString dispStr = i18n("Running '%1'").arg(fileName); 270 QString dispStr = i18n("Running '%1'").arg(fileName);
272 QToolTip::add(mAlarmProgramButton, dispStr); 271 QToolTip::add(mAlarmProgramButton, dispStr);
273 mAlarmSoundButton->setOn(false); 272 mAlarmSoundButton->setOn(false);
274 mAlarmProgramButton->setOn(true); 273 mAlarmProgramButton->setOn(true);
275 } else { 274 } else {
276 mAlarmProgramButton->setOn(false); 275 mAlarmProgramButton->setOn(false);
277 mAlarmSoundButton->setOn(true); 276 mAlarmSoundButton->setOn(true);
278 } 277 }
279 } 278 }
280 if (mAlarmProgramButton->isOn()) 279 if (mAlarmProgramButton->isOn())
281 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 280 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram );
282 if ( mAlarmSoundButton->isOn()) 281 if ( mAlarmSoundButton->isOn())
283 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); 282 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound );
284} 283}
285 284
286 285
287 286
288void KOEditorGeneral::enableAlarmEdit(bool enable) 287void KOEditorGeneral::enableAlarmEdit(bool enable)
289{ 288{
290 if ( enable ) { 289 if ( enable ) {
291 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { 290 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) {
292 mAlarmSoundButton->setOn( true ); 291 mAlarmSoundButton->setOn( true );
293 if ( mAlarmSound.isEmpty() ) 292 if ( mAlarmSound.isEmpty() )
294 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 293 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
295 else { 294 else {
296 if ( ! QFile::exists( mAlarmSound ) ) 295 if ( ! QFile::exists( mAlarmSound ) )
297 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 296 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
298 } 297 }
299 } 298 }
300 if (mAlarmProgramButton->isOn()) 299 if (mAlarmProgramButton->isOn())
301 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 300 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram );
302 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) 301 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn())
303 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); 302 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound );
304 } 303 }
305 else { 304 else {
306 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled")); 305 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled"));
307 306
308 } 307 }
309 mAlarmTimeEdit->setEnabled(enable); 308 mAlarmTimeEdit->setEnabled(enable);
310 mAlarmSoundButton->setEnabled(enable); 309 mAlarmSoundButton->setEnabled(enable);
311 mAlarmProgramButton->setEnabled(enable); 310 mAlarmProgramButton->setEnabled(enable);
312 mAlarmIncrCombo->setEnabled(enable); 311 mAlarmIncrCombo->setEnabled(enable);
313} 312}
314 313
315void KOEditorGeneral::disableAlarmEdit(bool disable) 314void KOEditorGeneral::disableAlarmEdit(bool disable)
316{ 315{
317 enableAlarmEdit( !disable ); 316 enableAlarmEdit( !disable );
318} 317}
319 318
320void KOEditorGeneral::enableAlarm( bool enable ) 319void KOEditorGeneral::enableAlarm( bool enable )
321{ 320{
322 enableAlarmEdit( enable ); 321 enableAlarmEdit( enable );
323} 322}
324 323
325void KOEditorGeneral::alarmDisable(bool disable) 324void KOEditorGeneral::alarmDisable(bool disable)
326{ 325{
327 if (!disable) { 326 if (!disable) {
328 //mAlarmBell->setEnabled(true); 327 //mAlarmBell->setEnabled(true);
329 mAlarmButton->setEnabled(true); 328 mAlarmButton->setEnabled(true);
330 } else { 329 } else {
331 //mAlarmBell->setEnabled(false); 330 //mAlarmBell->setEnabled(false);
332 mAlarmButton->setEnabled(false); 331 mAlarmButton->setEnabled(false);
333 mAlarmButton->setChecked(false); 332 mAlarmButton->setChecked(false);
334 mAlarmTimeEdit->setEnabled(false); 333 mAlarmTimeEdit->setEnabled(false);
335 mAlarmSoundButton->setEnabled(false); 334 mAlarmSoundButton->setEnabled(false);
336 mAlarmProgramButton->setEnabled(false); 335 mAlarmProgramButton->setEnabled(false);
337 mAlarmIncrCombo->setEnabled(false); 336 mAlarmIncrCombo->setEnabled(false);
338 } 337 }
339} 338}
340 339
341void KOEditorGeneral::setCategories(const QString &str) 340void KOEditorGeneral::setCategories(const QString &str)
342{ 341{
343 mCategoriesLabel->setText(str); 342 mCategoriesLabel->setText(str);
344} 343}
345 344
346void KOEditorGeneral::setDefaults(bool allDay) 345void KOEditorGeneral::setDefaults(bool allDay)
347{ 346{
348#if 0 347#if 0
349 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); 348 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName());
350#endif 349#endif
351 350
352 enableAlarmEdit( !allDay ); 351 enableAlarmEdit( !allDay );
353 352
354 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 353 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
355 int alarmTime; 354 int alarmTime;
356 int a[] = { 1,5,10,15,30,60,180, 1440 }; 355 int a[] = { 1,5,10,15,30,60,180, 1440 };
357 int index = KOPrefs::instance()->mAlarmTime; 356 int index = KOPrefs::instance()->mAlarmTime;
358 if (index < 0 || index > 7) { 357 if (index < 0 || index > 7) {
359 alarmTime = 15; 358 alarmTime = 15;
360 } else { 359 } else {
361 alarmTime = a[index]; 360 alarmTime = a[index];
362 } 361 }
363 mAlarmButton ->setChecked( false ); 362 mAlarmButton ->setChecked( false );
364 mAlarmTimeEdit->setValue(alarmTime); 363 mAlarmTimeEdit->setValue(alarmTime);
365 mAlarmIncrCombo->setCurrentItem(0); 364 mAlarmIncrCombo->setCurrentItem(0);
366 enableAlarmEdit( false ); 365 enableAlarmEdit( false );
367 //alarmDisable (false); 366 //alarmDisable (false);
368 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); 367 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic);
369 mCancelBox->setChecked( false ); 368 mCancelBox->setChecked( false );
370 mSummaryEdit->setEditText(""); 369 mSummaryEdit->setEditText("");
371 mLocationEdit->setEditText(""); 370 mLocationEdit->setEditText("");
372 mDescriptionEdit->setText(""); 371 mDescriptionEdit->setText("");
373 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 372 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
374 setCategories(""); 373 setCategories("");
375} 374}
376void KOEditorGeneral::setSecrecy( int num ) 375void KOEditorGeneral::setSecrecy( int num )
377{ 376{
378 mSecrecyCombo->setCurrentItem(num); 377 mSecrecyCombo->setCurrentItem(num);
379} 378}
380void KOEditorGeneral::readIncidence(Incidence *event) 379void KOEditorGeneral::readIncidence(Incidence *event)
381{ 380{
382 381
383 mAlarmIncrCombo->setCurrentItem(0); 382 mAlarmIncrCombo->setCurrentItem(0);
384 mSummaryEdit->setEditText(event->summary()); 383 mSummaryEdit->setEditText(event->summary());
385 mLocationEdit->setEditText(event->location()); 384 mLocationEdit->setEditText(event->location());
386 mDescriptionEdit->setText(event->description()); 385 mDescriptionEdit->setText(event->description());
387 386
388#if 0 387#if 0
389 // organizer information 388 // organizer information
390 mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); 389 mOwnerLabel->setText(i18n("Owner: ") + event->organizer());
391#endif 390#endif
392 391
393 enableAlarmEdit( event->isAlarmEnabled() ); 392 enableAlarmEdit( event->isAlarmEnabled() );
394 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); 393 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) ");
395 if(!event->isAlarmEnabled()) { 394 if(!event->isAlarmEnabled()) {
396 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 395 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
397 int alarmTime; 396 int alarmTime;
398 int a[] = { 1,5,10,15,30,60,180, 1440 }; 397 int a[] = { 1,5,10,15,30,60,180, 1440 };
399 int index = KOPrefs::instance()->mAlarmTime; 398 int index = KOPrefs::instance()->mAlarmTime;
400 if (index < 0 || index > 7) { 399 if (index < 0 || index > 7) {
401 alarmTime = 15; 400 alarmTime = 15;
402 } else { 401 } else {
403 alarmTime = a[index]; 402 alarmTime = a[index];
404 } 403 }
405 mAlarmTimeEdit->setValue(alarmTime); 404 mAlarmTimeEdit->setValue(alarmTime);
406 } 405 }
407 mAlarmButton->setChecked( event->isAlarmEnabled() ); 406 mAlarmButton->setChecked( event->isAlarmEnabled() );
408 mSecrecyCombo->setCurrentItem(event->secrecy()); 407 mSecrecyCombo->setCurrentItem(event->secrecy());
409 mCancelBox->setChecked( event->cancelled() ); 408 mCancelBox->setChecked( event->cancelled() );
410 mAlarmProgramButton->setOn(false); 409 mAlarmProgramButton->setOn(false);
411 mAlarmSoundButton->setOn(false); 410 mAlarmSoundButton->setOn(false);
412 411
413 // set up alarm stuff 412 // set up alarm stuff
414 QPtrList<Alarm> alarms = event->alarms(); 413 QPtrList<Alarm> alarms = event->alarms();
415 Alarm* alarm; 414 Alarm* alarm;
416 mAlarmIncrCombo->setCurrentItem(0); 415 mAlarmIncrCombo->setCurrentItem(0);
417 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) { 416 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) {
418 int offset; 417 int offset;
419 if ( alarm->hasTime() ) { 418 if ( alarm->hasTime() ) {
420 QDateTime t = alarm->time(); 419 QDateTime t = alarm->time();
421 offset = event->dtStart().secsTo( t ); 420 offset = event->dtStart().secsTo( t );
422 } else { 421 } else {
423 offset = alarm->startOffset().asSeconds(); 422 offset = alarm->startOffset().asSeconds();
424 } 423 }
425 if ( offset != 0 ) { 424 if ( offset != 0 ) {
426 offset = offset / -60; // make minutes 425 offset = offset / -60; // make minutes
427 if (offset % 60 == 0) { // divides evenly into hours? 426 if (offset % 60 == 0) { // divides evenly into hours?
428 offset = offset / 60; 427 offset = offset / 60;
429 mAlarmIncrCombo->setCurrentItem(1); 428 mAlarmIncrCombo->setCurrentItem(1);
430 if (offset % 24 == 0) { // divides evenly into days? 429 if (offset % 24 == 0) { // divides evenly into days?
431 offset = offset / 24; 430 offset = offset / 24;
432 mAlarmIncrCombo->setCurrentItem(2); 431 mAlarmIncrCombo->setCurrentItem(2);
433 } 432 }
434 } 433 }
435 } 434 }
436 mAlarmTimeEdit->setValue( offset ); 435 mAlarmTimeEdit->setValue( offset );
437 if (alarm->type() == Alarm::Procedure) { 436 if (alarm->type() == Alarm::Procedure) {
diff --git a/korganizer/koeditorgeneralevent.cpp b/korganizer/koeditorgeneralevent.cpp
index 9b93e7e..42c3df1 100644
--- a/korganizer/koeditorgeneralevent.cpp
+++ b/korganizer/koeditorgeneralevent.cpp
@@ -1,432 +1,431 @@
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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qlayout.h> 25#include <qlayout.h>
26#include <qvbox.h> 26#include <qvbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qvgroupbox.h> 28#include <qvgroupbox.h>
29#include <qwidgetstack.h> 29#include <qwidgetstack.h>
30#include <qdatetime.h> 30#include <qdatetime.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kglobal.h> 33#include <kglobal.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kiconloader.h> 35#include <kiconloader.h>
36#include <kmessagebox.h> 36#include <kmessagebox.h>
37#include <kfiledialog.h> 37#include <kfiledialog.h>
38#include <kstandarddirs.h> 38#include <kstandarddirs.h>
39 39
40#include <libkcal/event.h> 40#include <libkcal/event.h>
41 41
42#include <libkdepim/kdateedit.h> 42#include <libkdepim/kdateedit.h>
43 43
44#include "koprefs.h" 44#include "koprefs.h"
45 45
46#include "koeditorgeneralevent.h" 46#include "koeditorgeneralevent.h"
47#include "kolocationbox.h" 47#include "kolocationbox.h"
48#include "koeditorgeneralevent.moc"
49 48
50KOEditorGeneralEvent::KOEditorGeneralEvent(QObject* parent, 49KOEditorGeneralEvent::KOEditorGeneralEvent(QObject* parent,
51 const char* name) : 50 const char* name) :
52 KOEditorGeneral( parent, name) 51 KOEditorGeneral( parent, name)
53{ 52{
54 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), 53 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)),
55 SLOT(setDuration())); 54 SLOT(setDuration()));
56 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), 55 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)),
57 SLOT(emitDateTimeStr())); 56 SLOT(emitDateTimeStr()));
58} 57}
59 58
60KOEditorGeneralEvent::~KOEditorGeneralEvent() 59KOEditorGeneralEvent::~KOEditorGeneralEvent()
61{ 60{
62} 61}
63 62
64void KOEditorGeneralEvent::finishSetup() 63void KOEditorGeneralEvent::finishSetup()
65{ 64{
66 65
67 //disabled 66 //disabled
68// QWidget::setTabOrder( mSummaryEdit, mLocationEdit ); 67// QWidget::setTabOrder( mSummaryEdit, mLocationEdit );
69// QWidget::setTabOrder( mLocationEdit, mStartDateEdit ); 68// QWidget::setTabOrder( mLocationEdit, mStartDateEdit );
70// QWidget::setTabOrder( mStartDateEdit, mStartTimeEdit ); 69// QWidget::setTabOrder( mStartDateEdit, mStartTimeEdit );
71// QWidget::setTabOrder( mStartTimeEdit, mEndDateEdit ); 70// QWidget::setTabOrder( mStartTimeEdit, mEndDateEdit );
72// QWidget::setTabOrder( mEndDateEdit, mEndTimeEdit ); 71// QWidget::setTabOrder( mEndDateEdit, mEndTimeEdit );
73// QWidget::setTabOrder( mEndTimeEdit, mNoTimeButton ); 72// QWidget::setTabOrder( mEndTimeEdit, mNoTimeButton );
74// QWidget::setTabOrder( mNoTimeButton, mAlarmButton ); 73// QWidget::setTabOrder( mNoTimeButton, mAlarmButton );
75// QWidget::setTabOrder( mAlarmButton, mAlarmTimeEdit ); 74// QWidget::setTabOrder( mAlarmButton, mAlarmTimeEdit );
76// QWidget::setTabOrder( mFreeTimeCombo, mCategoriesButton ); 75// QWidget::setTabOrder( mFreeTimeCombo, mCategoriesButton );
77// QWidget::setTabOrder( mCategoriesButton, mSecrecyCombo ); 76// QWidget::setTabOrder( mCategoriesButton, mSecrecyCombo );
78// QWidget::setTabOrder( mSecrecyCombo, mDescriptionEdit ); 77// QWidget::setTabOrder( mSecrecyCombo, mDescriptionEdit );
79 78
80 79
81 80
82 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 81 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
83 mSummaryEdit->setFocus(); 82 mSummaryEdit->setFocus();
84} 83}
85 84
86void KOEditorGeneralEvent::initTime(QWidget *parent,QBoxLayout *topLayout) 85void KOEditorGeneralEvent::initTime(QWidget *parent,QBoxLayout *topLayout)
87{ 86{
88 QBoxLayout *timeLayout = new QVBoxLayout(topLayout); 87 QBoxLayout *timeLayout = new QVBoxLayout(topLayout);
89 88
90 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal, 89 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal,
91 i18n("Date && Time"),parent); 90 i18n("Date && Time"),parent);
92 timeLayout->addWidget(timeGroupBox); 91 timeLayout->addWidget(timeGroupBox);
93 92
94 timeGroupBox->layout()->setSpacing( 0 ); 93 timeGroupBox->layout()->setSpacing( 0 );
95 timeGroupBox->layout()->setMargin( 5 ); 94 timeGroupBox->layout()->setMargin( 5 );
96 QFrame *timeBoxFrame = new QFrame(timeGroupBox); 95 QFrame *timeBoxFrame = new QFrame(timeGroupBox);
97 96
98 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,2,3); 97 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,2,3);
99 layoutTimeBox->setSpacing(topLayout->spacing()); 98 layoutTimeBox->setSpacing(topLayout->spacing());
100 99
101 mStartDateLabel = new QLabel(i18n("Start:"),timeBoxFrame); 100 mStartDateLabel = new QLabel(i18n("Start:"),timeBoxFrame);
102 layoutTimeBox->addWidget(mStartDateLabel,0,0); 101 layoutTimeBox->addWidget(mStartDateLabel,0,0);
103 102
104 mStartDateEdit = new KDateEdit(timeBoxFrame); 103 mStartDateEdit = new KDateEdit(timeBoxFrame);
105 layoutTimeBox->addWidget(mStartDateEdit,0,1); 104 layoutTimeBox->addWidget(mStartDateEdit,0,1);
106 105
107 mStartTimeEdit = new KOTimeEdit(timeBoxFrame); 106 mStartTimeEdit = new KOTimeEdit(timeBoxFrame);
108 layoutTimeBox->addWidget(mStartTimeEdit,0,2); 107 layoutTimeBox->addWidget(mStartTimeEdit,0,2);
109 108
110 109
111 mEndDateLabel = new QLabel(i18n("End:"),timeBoxFrame); 110 mEndDateLabel = new QLabel(i18n("End:"),timeBoxFrame);
112 layoutTimeBox->addWidget(mEndDateLabel,1,0); 111 layoutTimeBox->addWidget(mEndDateLabel,1,0);
113 112
114 mEndDateEdit = new KDateEdit(timeBoxFrame); 113 mEndDateEdit = new KDateEdit(timeBoxFrame);
115 layoutTimeBox->addWidget(mEndDateEdit,1,1); 114 layoutTimeBox->addWidget(mEndDateEdit,1,1);
116 115
117 mEndTimeEdit = new KOTimeEdit(timeBoxFrame); 116 mEndTimeEdit = new KOTimeEdit(timeBoxFrame);
118 layoutTimeBox->addWidget(mEndTimeEdit,1,2); 117 layoutTimeBox->addWidget(mEndTimeEdit,1,2);
119 QWidget* duration = new QWidget( timeBoxFrame ); 118 QWidget* duration = new QWidget( timeBoxFrame );
120 QHBoxLayout *flagsBox = new QHBoxLayout( duration ); 119 QHBoxLayout *flagsBox = new QHBoxLayout( duration );
121 mNoTimeButton = new QCheckBox(i18n("Allday"),duration); 120 mNoTimeButton = new QCheckBox(i18n("Allday"),duration);
122 flagsBox->addWidget(mNoTimeButton); 121 flagsBox->addWidget(mNoTimeButton);
123 connect(mNoTimeButton, SIGNAL(toggled(bool)),SLOT(dontAssociateTime(bool))); 122 connect(mNoTimeButton, SIGNAL(toggled(bool)),SLOT(dontAssociateTime(bool)));
124 mDurationLabel = new QLabel( duration ); 123 mDurationLabel = new QLabel( duration );
125 // if ( KOPrefs::instance()->mCompactDialogs ) { 124 // if ( KOPrefs::instance()->mCompactDialogs ) {
126 //layoutTimeBox->addMultiCellWidget( mDurationLabel, 3, 3, 0, 3 ); 125 //layoutTimeBox->addMultiCellWidget( mDurationLabel, 3, 3, 0, 3 );
127 //} else { 126 //} else {
128 flagsBox->addWidget( mDurationLabel ); 127 flagsBox->addWidget( mDurationLabel );
129 //} 128 //}
130 flagsBox->setStretchFactor(mDurationLabel, 10 ); 129 flagsBox->setStretchFactor(mDurationLabel, 10 );
131 mDurationLabel->setAlignment( AlignRight | AlignVCenter); 130 mDurationLabel->setAlignment( AlignRight | AlignVCenter);
132 layoutTimeBox->addMultiCellWidget( duration, 2, 2, 0, 3 ); 131 layoutTimeBox->addMultiCellWidget( duration, 2, 2, 0, 3 );
133 132
134 // time widgets are checked if they contain a valid time 133 // time widgets are checked if they contain a valid time
135 connect(mStartTimeEdit, SIGNAL(timeChanged(QTime)), 134 connect(mStartTimeEdit, SIGNAL(timeChanged(QTime)),
136 this, SLOT(startTimeChanged(QTime))); 135 this, SLOT(startTimeChanged(QTime)));
137 connect(mEndTimeEdit, SIGNAL(timeChanged(QTime)), 136 connect(mEndTimeEdit, SIGNAL(timeChanged(QTime)),
138 this, SLOT(endTimeChanged(QTime))); 137 this, SLOT(endTimeChanged(QTime)));
139 138
140 // date widgets are checked if they contain a valid date 139 // date widgets are checked if they contain a valid date
141 connect(mStartDateEdit, SIGNAL(dateChanged(QDate)), 140 connect(mStartDateEdit, SIGNAL(dateChanged(QDate)),
142 this, SLOT(startDateChanged(QDate))); 141 this, SLOT(startDateChanged(QDate)));
143 connect(mEndDateEdit, SIGNAL(dateChanged(QDate)), 142 connect(mEndDateEdit, SIGNAL(dateChanged(QDate)),
144 this, SLOT(endDateChanged(QDate))); 143 this, SLOT(endDateChanged(QDate)));
145} 144}
146 145
147void KOEditorGeneralEvent::initClass(QWidget *parent,QBoxLayout *topLayout) 146void KOEditorGeneralEvent::initClass(QWidget *parent,QBoxLayout *topLayout)
148{ 147{
149 QBoxLayout *classLayout = new QHBoxLayout(topLayout); 148 QBoxLayout *classLayout = new QHBoxLayout(topLayout);
150 149
151 QLabel *freeTimeLabel = new QLabel(i18n("Show time as:"),parent); 150 QLabel *freeTimeLabel = new QLabel(i18n("Show time as:"),parent);
152 classLayout->addWidget(freeTimeLabel); 151 classLayout->addWidget(freeTimeLabel);
153 152
154 mFreeTimeCombo = new QComboBox(false, parent); 153 mFreeTimeCombo = new QComboBox(false, parent);
155 mFreeTimeCombo->insertItem(i18n("Busy")); 154 mFreeTimeCombo->insertItem(i18n("Busy"));
156 mFreeTimeCombo->insertItem(i18n("Free")); 155 mFreeTimeCombo->insertItem(i18n("Free"));
157 classLayout->addWidget(mFreeTimeCombo); 156 classLayout->addWidget(mFreeTimeCombo);
158} 157}
159 158
160void KOEditorGeneralEvent::timeStuffDisable(bool disable) 159void KOEditorGeneralEvent::timeStuffDisable(bool disable)
161{ 160{
162 mStartTimeEdit->setEnabled( !disable ); 161 mStartTimeEdit->setEnabled( !disable );
163 mEndTimeEdit->setEnabled( !disable ); 162 mEndTimeEdit->setEnabled( !disable );
164 163
165 setDuration(); 164 setDuration();
166 emitDateTimeStr(); 165 emitDateTimeStr();
167} 166}
168 167
169void KOEditorGeneralEvent::dontAssociateTime(bool noTime) 168void KOEditorGeneralEvent::dontAssociateTime(bool noTime)
170{ 169{
171 timeStuffDisable(noTime); 170 timeStuffDisable(noTime);
172 //if(alarmButton->isChecked()) alarmStuffDisable(noTime); 171 //if(alarmButton->isChecked()) alarmStuffDisable(noTime);
173 allDayChanged(noTime); 172 allDayChanged(noTime);
174} 173}
175 174
176void KOEditorGeneralEvent::setDateTimes(QDateTime start, QDateTime end) 175void KOEditorGeneralEvent::setDateTimes(QDateTime start, QDateTime end)
177{ 176{
178// kdDebug() << "KOEditorGeneralEvent::setDateTimes(): Start DateTime: " << start.toString() << endl; 177// kdDebug() << "KOEditorGeneralEvent::setDateTimes(): Start DateTime: " << start.toString() << endl;
179 178
180 mStartDateEdit->setDate(start.date()); 179 mStartDateEdit->setDate(start.date());
181 // KTimeEdit seems to emit some signals when setTime() is called. 180 // KTimeEdit seems to emit some signals when setTime() is called.
182 mStartTimeEdit->blockSignals( true ); 181 mStartTimeEdit->blockSignals( true );
183 mStartTimeEdit->setTime(start.time()); 182 mStartTimeEdit->setTime(start.time());
184 mStartTimeEdit->blockSignals( false ); 183 mStartTimeEdit->blockSignals( false );
185 mEndDateEdit->setDate(end.date()); 184 mEndDateEdit->setDate(end.date());
186 mEndTimeEdit->setTime(end.time()); 185 mEndTimeEdit->setTime(end.time());
187 186
188 mCurrStartDateTime = start; 187 mCurrStartDateTime = start;
189 mCurrEndDateTime = end; 188 mCurrEndDateTime = end;
190 189
191 setDuration(); 190 setDuration();
192 emitDateTimeStr(); 191 emitDateTimeStr();
193} 192}
194 193
195void KOEditorGeneralEvent::startTimeChanged(QTime newtime) 194void KOEditorGeneralEvent::startTimeChanged(QTime newtime)
196{ 195{
197 kdDebug() << "KOEditorGeneralEvent::startTimeChanged() " << newtime.toString() << endl; 196 kdDebug() << "KOEditorGeneralEvent::startTimeChanged() " << newtime.toString() << endl;
198 197
199 int secsep = mCurrStartDateTime.secsTo(mCurrEndDateTime); 198 int secsep = mCurrStartDateTime.secsTo(mCurrEndDateTime);
200 199
201 mCurrStartDateTime.setTime(newtime); 200 mCurrStartDateTime.setTime(newtime);
202 201
203 // adjust end time so that the event has the same duration as before. 202 // adjust end time so that the event has the same duration as before.
204 mCurrEndDateTime = mCurrStartDateTime.addSecs(secsep); 203 mCurrEndDateTime = mCurrStartDateTime.addSecs(secsep);
205 mEndTimeEdit->setTime(mCurrEndDateTime.time()); 204 mEndTimeEdit->setTime(mCurrEndDateTime.time());
206 mEndDateEdit->setDate(mCurrEndDateTime.date()); 205 mEndDateEdit->setDate(mCurrEndDateTime.date());
207 206
208 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 207 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
209} 208}
210 209
211void KOEditorGeneralEvent::endTimeChanged(QTime newtime) 210void KOEditorGeneralEvent::endTimeChanged(QTime newtime)
212{ 211{
213// kdDebug() << "KOEditorGeneralEvent::endTimeChanged " << newtime.toString() << endl; 212// kdDebug() << "KOEditorGeneralEvent::endTimeChanged " << newtime.toString() << endl;
214 213
215 QDateTime newdt(mCurrEndDateTime.date(), newtime); 214 QDateTime newdt(mCurrEndDateTime.date(), newtime);
216 mCurrEndDateTime = newdt; 215 mCurrEndDateTime = newdt;
217 216
218 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 217 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
219} 218}
220 219
221void KOEditorGeneralEvent::startDateChanged(QDate newdate) 220void KOEditorGeneralEvent::startDateChanged(QDate newdate)
222{ 221{
223 int daysep = mCurrStartDateTime.daysTo(mCurrEndDateTime); 222 int daysep = mCurrStartDateTime.daysTo(mCurrEndDateTime);
224 223
225 mCurrStartDateTime.setDate(newdate); 224 mCurrStartDateTime.setDate(newdate);
226 225
227 // adjust end date so that the event has the same duration as before 226 // adjust end date so that the event has the same duration as before
228 mCurrEndDateTime.setDate(mCurrStartDateTime.date().addDays(daysep)); 227 mCurrEndDateTime.setDate(mCurrStartDateTime.date().addDays(daysep));
229 mEndDateEdit->setDate(mCurrEndDateTime.date()); 228 mEndDateEdit->setDate(mCurrEndDateTime.date());
230 229
231 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 230 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
232} 231}
233 232
234void KOEditorGeneralEvent::endDateChanged(QDate newdate) 233void KOEditorGeneralEvent::endDateChanged(QDate newdate)
235{ 234{
236 QDateTime newdt(newdate, mCurrEndDateTime.time()); 235 QDateTime newdt(newdate, mCurrEndDateTime.time());
237 236
238 if(newdt < mCurrStartDateTime) { 237 if(newdt < mCurrStartDateTime) {
239 // oops, we can't let that happen. 238 // oops, we can't let that happen.
240 newdt = mCurrStartDateTime; 239 newdt = mCurrStartDateTime;
241 mEndDateEdit->setDate(newdt.date()); 240 mEndDateEdit->setDate(newdt.date());
242 mEndTimeEdit->setTime(newdt.time()); 241 mEndTimeEdit->setTime(newdt.time());
243 } 242 }
244 mCurrEndDateTime = newdt; 243 mCurrEndDateTime = newdt;
245 244
246 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 245 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
247} 246}
248 247
249void KOEditorGeneralEvent::setDefaults(QDateTime from,QDateTime to,bool allDay) 248void KOEditorGeneralEvent::setDefaults(QDateTime from,QDateTime to,bool allDay)
250{ 249{
251 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 250 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
252 mLocationEdit->load(KOLocationBox::LOCATION); 251 mLocationEdit->load(KOLocationBox::LOCATION);
253 KOEditorGeneral::setDefaults(allDay); 252 KOEditorGeneral::setDefaults(allDay);
254 253
255 mNoTimeButton->setChecked(allDay); 254 mNoTimeButton->setChecked(allDay);
256 timeStuffDisable(allDay); 255 timeStuffDisable(allDay);
257 mFreeTimeCombo->setCurrentItem( 0 ); 256 mFreeTimeCombo->setCurrentItem( 0 );
258 setDateTimes(from,to); 257 setDateTimes(from,to);
259} 258}
260 259
261void KOEditorGeneralEvent::readEvent( Event *event, bool tmpl ) 260void KOEditorGeneralEvent::readEvent( Event *event, bool tmpl )
262{ 261{
263 QString tmpStr; 262 QString tmpStr;
264 263
265 if ( !tmpl ) { 264 if ( !tmpl ) {
266 // the rest is for the events only 265 // the rest is for the events only
267 mNoTimeButton->setChecked(event->doesFloat()); 266 mNoTimeButton->setChecked(event->doesFloat());
268 timeStuffDisable(event->doesFloat()); 267 timeStuffDisable(event->doesFloat());
269 268
270 setDateTimes(event->dtStart(),event->dtEnd()); 269 setDateTimes(event->dtStart(),event->dtEnd());
271 } 270 }
272 271
273 switch( event->transparency() ) { 272 switch( event->transparency() ) {
274 case Event::Transparent: 273 case Event::Transparent:
275 mFreeTimeCombo->setCurrentItem(1); 274 mFreeTimeCombo->setCurrentItem(1);
276 break; 275 break;
277 case Event::Opaque: 276 case Event::Opaque:
278 mFreeTimeCombo->setCurrentItem(0); 277 mFreeTimeCombo->setCurrentItem(0);
279 break; 278 break;
280 } 279 }
281 280
282 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 281 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
283 mLocationEdit->load(KOLocationBox::LOCATION); 282 mLocationEdit->load(KOLocationBox::LOCATION);
284 readIncidence(event); 283 readIncidence(event);
285} 284}
286 285
287void KOEditorGeneralEvent::writeEvent(Event *event) 286void KOEditorGeneralEvent::writeEvent(Event *event)
288{ 287{
289// kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl; 288// kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl;
290 289
291 writeIncidence(event); 290 writeIncidence(event);
292 291
293 QDate tmpDate; 292 QDate tmpDate;
294 QTime tmpTime; 293 QTime tmpTime;
295 QDateTime tmpDT; 294 QDateTime tmpDT;
296 295
297 // temp. until something better happens. 296 // temp. until something better happens.
298 QString tmpStr; 297 QString tmpStr;
299 298
300 if (mNoTimeButton->isChecked()) { 299 if (mNoTimeButton->isChecked()) {
301 event->setFloats(true); 300 event->setFloats(true);
302 // need to change this. 301 // need to change this.
303 tmpDate = mStartDateEdit->date(); 302 tmpDate = mStartDateEdit->date();
304 tmpTime.setHMS(0,0,0); 303 tmpTime.setHMS(0,0,0);
305 tmpDT.setDate(tmpDate); 304 tmpDT.setDate(tmpDate);
306 tmpDT.setTime(tmpTime); 305 tmpDT.setTime(tmpTime);
307 event->setDtStart(tmpDT); 306 event->setDtStart(tmpDT);
308 307
309 tmpDate = mEndDateEdit->date(); 308 tmpDate = mEndDateEdit->date();
310 tmpTime.setHMS(0,0,0); 309 tmpTime.setHMS(0,0,0);
311 tmpDT.setDate(tmpDate); 310 tmpDT.setDate(tmpDate);
312 tmpDT.setTime(tmpTime); 311 tmpDT.setTime(tmpTime);
313 event->setDtEnd(tmpDT); 312 event->setDtEnd(tmpDT);
314 } else { 313 } else {
315 event->setFloats(false); 314 event->setFloats(false);
316 315
317 // set date/time end 316 // set date/time end
318 tmpDate = mEndDateEdit->date(); 317 tmpDate = mEndDateEdit->date();
319 tmpTime = mEndTimeEdit->getTime(); 318 tmpTime = mEndTimeEdit->getTime();
320 tmpDT.setDate(tmpDate); 319 tmpDT.setDate(tmpDate);
321 tmpDT.setTime(tmpTime); 320 tmpDT.setTime(tmpTime);
322 event->setDtEnd(tmpDT); 321 event->setDtEnd(tmpDT);
323 322
324 // set date/time start 323 // set date/time start
325 tmpDate = mStartDateEdit->date(); 324 tmpDate = mStartDateEdit->date();
326 tmpTime = mStartTimeEdit->getTime(); 325 tmpTime = mStartTimeEdit->getTime();
327 tmpDT.setDate(tmpDate); 326 tmpDT.setDate(tmpDate);
328 tmpDT.setTime(tmpTime); 327 tmpDT.setTime(tmpTime);
329 event->setDtStart(tmpDT); 328 event->setDtStart(tmpDT);
330 } // check for float 329 } // check for float
331 mSummaryEdit->save(KOLocationBox::SUMMARYEVENT); 330 mSummaryEdit->save(KOLocationBox::SUMMARYEVENT);
332 331
333 event->setTransparency(mFreeTimeCombo->currentItem() > 0 332 event->setTransparency(mFreeTimeCombo->currentItem() > 0
334 ? KCal::Event::Transparent 333 ? KCal::Event::Transparent
335 : KCal::Event::Opaque); 334 : KCal::Event::Opaque);
336 335
337// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl; 336// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl;
338} 337}
339 338
340void KOEditorGeneralEvent::setDuration() 339void KOEditorGeneralEvent::setDuration()
341{ 340{
342 QString tmpStr = "", catStr; 341 QString tmpStr = "", catStr;
343 int hourdiff, minutediff; 342 int hourdiff, minutediff;
344 // end<date is an accepted temporary state while typing, but don't show 343 // end<date is an accepted temporary state while typing, but don't show
345 // any duration if this happens 344 // any duration if this happens
346 if(mCurrEndDateTime >= mCurrStartDateTime) { 345 if(mCurrEndDateTime >= mCurrStartDateTime) {
347 346
348 if (mNoTimeButton->isChecked()) { 347 if (mNoTimeButton->isChecked()) {
349 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1; 348 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1;
350 tmpStr = i18n("Duration: "); 349 tmpStr = i18n("Duration: ");
351 tmpStr.append(i18n("1 Day","%n Days",daydiff)); 350 tmpStr.append(i18n("1 Day","%n Days",daydiff));
352 } else { 351 } else {
353 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime ); 352 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime );
354 hourdiff = secto / 3600; 353 hourdiff = secto / 3600;
355 minutediff = (secto/60 ) % 60; 354 minutediff = (secto/60 ) % 60;
356 if (hourdiff || minutediff){ 355 if (hourdiff || minutediff){
357 tmpStr = i18n("Duration: "); 356 tmpStr = i18n("Duration: ");
358 if (hourdiff){ 357 if (hourdiff){
359 catStr = i18n("1 h","%n h",hourdiff); 358 catStr = i18n("1 h","%n h",hourdiff);
360 tmpStr.append(catStr); 359 tmpStr.append(catStr);
361 } 360 }
362 if (hourdiff && minutediff){ 361 if (hourdiff && minutediff){
363 tmpStr += i18n(", "); 362 tmpStr += i18n(", ");
364 } 363 }
365 if (minutediff){ 364 if (minutediff){
366 catStr = i18n("1 min","%n min",minutediff); 365 catStr = i18n("1 min","%n min",minutediff);
367 tmpStr += catStr; 366 tmpStr += catStr;
368 } 367 }
369 } else tmpStr = ""; 368 } else tmpStr = "";
370 } 369 }
371 } 370 }
372 mDurationLabel->setText(tmpStr); 371 mDurationLabel->setText(tmpStr);
373} 372}
374 373
375void KOEditorGeneralEvent::emitDateTimeStr() 374void KOEditorGeneralEvent::emitDateTimeStr()
376{ 375{
377 KLocale *l = KGlobal::locale(); 376 KLocale *l = KGlobal::locale();
378 377
379 QString from,to; 378 QString from,to;
380 if (mNoTimeButton->isChecked()) { 379 if (mNoTimeButton->isChecked()) {
381 from = l->formatDate(mCurrStartDateTime.date()); 380 from = l->formatDate(mCurrStartDateTime.date());
382 to = l->formatDate(mCurrEndDateTime.date()); 381 to = l->formatDate(mCurrEndDateTime.date());
383 } else { 382 } else {
384 from = l->formatDateTime(mCurrStartDateTime); 383 from = l->formatDateTime(mCurrStartDateTime);
385 to = l->formatDateTime(mCurrEndDateTime); 384 to = l->formatDateTime(mCurrEndDateTime);
386 } 385 }
387 386
388 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to) 387 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to)
389 .arg(mDurationLabel->text()); 388 .arg(mDurationLabel->text());
390 389
391 emit dateTimeStrChanged(str); 390 emit dateTimeStrChanged(str);
392} 391}
393 392
394bool KOEditorGeneralEvent::validateInput() 393bool KOEditorGeneralEvent::validateInput()
395{ 394{
396// kdDebug() << "KOEditorGeneralEvent::validateInput()" << endl; 395// kdDebug() << "KOEditorGeneralEvent::validateInput()" << endl;
397 396
398 if (!mNoTimeButton->isChecked()) { 397 if (!mNoTimeButton->isChecked()) {
399 if (!mStartTimeEdit->inputIsValid()) { 398 if (!mStartTimeEdit->inputIsValid()) {
400 KMessageBox::sorry( 0, 399 KMessageBox::sorry( 0,
401 i18n("Please specify a valid start time, for example '%1'.") 400 i18n("Please specify a valid start time, for example '%1'.")
402 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) ); 401 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
403 return false; 402 return false;
404 } 403 }
405 404
406 if (!mEndTimeEdit->inputIsValid()) { 405 if (!mEndTimeEdit->inputIsValid()) {
407 KMessageBox::sorry( 0, 406 KMessageBox::sorry( 0,
408 i18n("Please specify a valid end time, for example '%1'.") 407 i18n("Please specify a valid end time, for example '%1'.")
409 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) ); 408 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
410 return false; 409 return false;
411 } 410 }
412 } 411 }
413 412
414 if (!mStartDateEdit->inputIsValid()) { 413 if (!mStartDateEdit->inputIsValid()) {
415 KMessageBox::sorry( 0, 414 KMessageBox::sorry( 0,
416 i18n("Please specify a valid start date, for example '%1'.") 415 i18n("Please specify a valid start date, for example '%1'.")
417 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 416 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) );
418 return false; 417 return false;
419 } 418 }
420 419
421 if (!mEndDateEdit->inputIsValid()) { 420 if (!mEndDateEdit->inputIsValid()) {
422 KMessageBox::sorry( 0, 421 KMessageBox::sorry( 0,
423 i18n("Please specify a valid end date, for example '%1'.") 422 i18n("Please specify a valid end date, for example '%1'.")
424 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 423 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) );
425 return false; 424 return false;
426 } 425 }
427 426
428 QDateTime startDt,endDt; 427 QDateTime startDt,endDt;
429 startDt.setDate(mStartDateEdit->date()); 428 startDt.setDate(mStartDateEdit->date());
430 endDt.setDate(mEndDateEdit->date()); 429 endDt.setDate(mEndDateEdit->date());
431 if (!mNoTimeButton->isChecked()) { 430 if (!mNoTimeButton->isChecked()) {
432 startDt.setTime(mStartTimeEdit->getTime()); 431 startDt.setTime(mStartTimeEdit->getTime());
diff --git a/korganizer/koeditorgeneraltodo.cpp b/korganizer/koeditorgeneraltodo.cpp
index 57837bb..7db7da0 100644
--- a/korganizer/koeditorgeneraltodo.cpp
+++ b/korganizer/koeditorgeneraltodo.cpp
@@ -1,435 +1,434 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qfiledialog.h> 25#include <qfiledialog.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32 32
33#include <kglobal.h> 33#include <kglobal.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kiconloader.h> 35#include <kiconloader.h>
36#include <kmessagebox.h> 36#include <kmessagebox.h>
37#include <kdebug.h> 37#include <kdebug.h>
38#include <krestrictedline.h> 38#include <krestrictedline.h>
39#include <kstandarddirs.h> 39#include <kstandarddirs.h>
40#include <kfiledialog.h> 40#include <kfiledialog.h>
41 41
42#include <libkcal/todo.h> 42#include <libkcal/todo.h>
43 43
44#include <libkdepim/kdateedit.h> 44#include <libkdepim/kdateedit.h>
45 45
46#include "koprefs.h" 46#include "koprefs.h"
47#include "ktimeedit.h" 47#include "ktimeedit.h"
48 48
49#include "koeditorgeneraltodo.h" 49#include "koeditorgeneraltodo.h"
50#include "kolocationbox.h" 50#include "kolocationbox.h"
51#include "koeditorgeneraltodo.moc"
52 51
53KOEditorGeneralTodo::KOEditorGeneralTodo(QObject* parent, 52KOEditorGeneralTodo::KOEditorGeneralTodo(QObject* parent,
54 const char* name) 53 const char* name)
55 : KOEditorGeneral( parent, name) 54 : KOEditorGeneral( parent, name)
56{ 55{
57} 56}
58 57
59KOEditorGeneralTodo::~KOEditorGeneralTodo() 58KOEditorGeneralTodo::~KOEditorGeneralTodo()
60{ 59{
61} 60}
62 61
63void KOEditorGeneralTodo::finishSetup() 62void KOEditorGeneralTodo::finishSetup()
64{ 63{
65 64
66// QWidget::setTabOrder(mSummaryEdit, mLocationEdit); 65// QWidget::setTabOrder(mSummaryEdit, mLocationEdit);
67// QWidget::setTabOrder(mLocationEdit, mDueCheck); 66// QWidget::setTabOrder(mLocationEdit, mDueCheck);
68// QWidget::setTabOrder(mDueCheck, mDueDateEdit); 67// QWidget::setTabOrder(mDueCheck, mDueDateEdit);
69// QWidget::setTabOrder(mDueDateEdit, mDueTimeEdit); 68// QWidget::setTabOrder(mDueDateEdit, mDueTimeEdit);
70// QWidget::setTabOrder(mDueTimeEdit, mStartCheck); 69// QWidget::setTabOrder(mDueTimeEdit, mStartCheck);
71// QWidget::setTabOrder(mStartCheck, mStartDateEdit); 70// QWidget::setTabOrder(mStartCheck, mStartDateEdit);
72// QWidget::setTabOrder(mStartDateEdit, mStartTimeEdit); 71// QWidget::setTabOrder(mStartDateEdit, mStartTimeEdit);
73// QWidget::setTabOrder(mStartTimeEdit, mTimeButton); 72// QWidget::setTabOrder(mStartTimeEdit, mTimeButton);
74// QWidget::setTabOrder(mTimeButton, mCompletedCombo); 73// QWidget::setTabOrder(mTimeButton, mCompletedCombo);
75// QWidget::setTabOrder(mCompletedCombo, mPriorityCombo); 74// QWidget::setTabOrder(mCompletedCombo, mPriorityCombo);
76// QWidget::setTabOrder(mPriorityCombo, mAlarmButton); 75// QWidget::setTabOrder(mPriorityCombo, mAlarmButton);
77// QWidget::setTabOrder(mAlarmButton, mCategoriesButton); 76// QWidget::setTabOrder(mAlarmButton, mCategoriesButton);
78// QWidget::setTabOrder(mCategoriesButton, mSecrecyCombo); 77// QWidget::setTabOrder(mCategoriesButton, mSecrecyCombo);
79// QWidget::setTabOrder(mSecrecyCombo, mDescriptionEdit); 78// QWidget::setTabOrder(mSecrecyCombo, mDescriptionEdit);
80 mSummaryEdit->load(KOLocationBox::SUMMARYTODO); 79 mSummaryEdit->load(KOLocationBox::SUMMARYTODO);
81 mSummaryEdit->setFocus(); 80 mSummaryEdit->setFocus();
82} 81}
83 82
84void KOEditorGeneralTodo::initTime(QWidget *parent,QBoxLayout *topLayout) 83void KOEditorGeneralTodo::initTime(QWidget *parent,QBoxLayout *topLayout)
85{ 84{
86 QBoxLayout *timeLayout = new QVBoxLayout(topLayout); 85 QBoxLayout *timeLayout = new QVBoxLayout(topLayout);
87 86
88 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal, 87 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal,
89 i18n("Date && Time"),parent); 88 i18n("Date && Time"),parent);
90 timeLayout->addWidget(timeGroupBox); 89 timeLayout->addWidget(timeGroupBox);
91 timeGroupBox->layout()->setSpacing( 0 ); 90 timeGroupBox->layout()->setSpacing( 0 );
92 timeGroupBox->layout()->setMargin( 5 ); 91 timeGroupBox->layout()->setMargin( 5 );
93 QFrame *timeBoxFrame = new QFrame(timeGroupBox); 92 QFrame *timeBoxFrame = new QFrame(timeGroupBox);
94 93
95 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,3,3); 94 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,3,3);
96 layoutTimeBox->setSpacing(topLayout->spacing()); 95 layoutTimeBox->setSpacing(topLayout->spacing());
97 layoutTimeBox->setColStretch( 1, 1 ); 96 layoutTimeBox->setColStretch( 1, 1 );
98 97
99 mDueCheck = new QCheckBox(i18n("Due:"),timeBoxFrame); 98 mDueCheck = new QCheckBox(i18n("Due:"),timeBoxFrame);
100 layoutTimeBox->addWidget(mDueCheck,0,0); 99 layoutTimeBox->addWidget(mDueCheck,0,0);
101 connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(enableDueEdit(bool))); 100 connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(enableDueEdit(bool)));
102 connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(showAlarm())); 101 connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(showAlarm()));
103 102
104 103
105 mDueDateEdit = new KDateEdit(timeBoxFrame); 104 mDueDateEdit = new KDateEdit(timeBoxFrame);
106 layoutTimeBox->addWidget(mDueDateEdit,0,1); 105 layoutTimeBox->addWidget(mDueDateEdit,0,1);
107 106
108 mDueTimeEdit = new KOTimeEdit(timeBoxFrame); 107 mDueTimeEdit = new KOTimeEdit(timeBoxFrame);
109 layoutTimeBox->addWidget(mDueTimeEdit,0,2); 108 layoutTimeBox->addWidget(mDueTimeEdit,0,2);
110 109
111 110
112 mStartCheck = new QCheckBox(i18n("Start:"),timeBoxFrame); 111 mStartCheck = new QCheckBox(i18n("Start:"),timeBoxFrame);
113 layoutTimeBox->addWidget(mStartCheck,1,0); 112 layoutTimeBox->addWidget(mStartCheck,1,0);
114 connect(mStartCheck,SIGNAL(toggled(bool)),SLOT(enableStartEdit(bool))); 113 connect(mStartCheck,SIGNAL(toggled(bool)),SLOT(enableStartEdit(bool)));
115 114
116 mStartDateEdit = new KDateEdit(timeBoxFrame); 115 mStartDateEdit = new KDateEdit(timeBoxFrame);
117 layoutTimeBox->addWidget(mStartDateEdit,1,1); 116 layoutTimeBox->addWidget(mStartDateEdit,1,1);
118 117
119 mStartTimeEdit = new KOTimeEdit(timeBoxFrame); 118 mStartTimeEdit = new KOTimeEdit(timeBoxFrame);
120 layoutTimeBox->addWidget(mStartTimeEdit,1,2); 119 layoutTimeBox->addWidget(mStartTimeEdit,1,2);
121 120
122 121
123 mTimeButton = new QCheckBox(i18n("Time associated"),timeBoxFrame); 122 mTimeButton = new QCheckBox(i18n("Time associated"),timeBoxFrame);
124 layoutTimeBox->addMultiCellWidget(mTimeButton,2,2,0,1); 123 layoutTimeBox->addMultiCellWidget(mTimeButton,2,2,0,1);
125 124
126 connect(mTimeButton,SIGNAL(toggled(bool)),SLOT(enableTimeEdits(bool))); 125 connect(mTimeButton,SIGNAL(toggled(bool)),SLOT(enableTimeEdits(bool)));
127 126
128 // some more layouting 127 // some more layouting
129 //layoutTimeBox->setColStretch(3,1); 128 //layoutTimeBox->setColStretch(3,1);
130} 129}
131 130
132 131
133void KOEditorGeneralTodo::initCompletion(QWidget *parent, QBoxLayout *topLayout) 132void KOEditorGeneralTodo::initCompletion(QWidget *parent, QBoxLayout *topLayout)
134{ 133{
135 mCompletedCombo = new QComboBox(parent); 134 mCompletedCombo = new QComboBox(parent);
136 // xgettext:no-c-format 135 // xgettext:no-c-format
137 mCompletedCombo->insertItem(i18n(" 0 %")); 136 mCompletedCombo->insertItem(i18n(" 0 %"));
138 // xgettext:no-c-format 137 // xgettext:no-c-format
139 mCompletedCombo->insertItem(i18n(" 20 %")); 138 mCompletedCombo->insertItem(i18n(" 20 %"));
140 // xgettext:no-c-format 139 // xgettext:no-c-format
141 mCompletedCombo->insertItem(i18n(" 40 %")); 140 mCompletedCombo->insertItem(i18n(" 40 %"));
142 // xgettext:no-c-format 141 // xgettext:no-c-format
143 mCompletedCombo->insertItem(i18n(" 60 %")); 142 mCompletedCombo->insertItem(i18n(" 60 %"));
144 // xgettext:no-c-format 143 // xgettext:no-c-format
145 mCompletedCombo->insertItem(i18n(" 80 %")); 144 mCompletedCombo->insertItem(i18n(" 80 %"));
146 // xgettext:no-c-format 145 // xgettext:no-c-format
147 mCompletedCombo->insertItem(i18n("100 %")); 146 mCompletedCombo->insertItem(i18n("100 %"));
148 connect(mCompletedCombo,SIGNAL(activated(int)),SLOT(completedChanged(int))); 147 connect(mCompletedCombo,SIGNAL(activated(int)),SLOT(completedChanged(int)));
149 topLayout->addWidget(mCompletedCombo); 148 topLayout->addWidget(mCompletedCombo);
150 149
151 mCompletedLabel = new QLabel(i18n("completed"),parent); 150 mCompletedLabel = new QLabel(i18n("completed"),parent);
152 topLayout->addWidget(mCompletedLabel); 151 topLayout->addWidget(mCompletedLabel);
153} 152}
154 153
155void KOEditorGeneralTodo::initPriority(QWidget *parent, QBoxLayout *topLayout) 154void KOEditorGeneralTodo::initPriority(QWidget *parent, QBoxLayout *topLayout)
156{ 155{
157 156
158 QHBox* h = new QHBox ( parent ); 157 QHBox* h = new QHBox ( parent );
159 topLayout->addWidget( h ); 158 topLayout->addWidget( h );
160 QLabel *priorityLabel = new QLabel(i18n("Priority:"), h); 159 QLabel *priorityLabel = new QLabel(i18n("Priority:"), h);
161 // topLayout->addWidget(priorityLabel); 160 // topLayout->addWidget(priorityLabel);
162 161
163 mPriorityCombo = new QComboBox( h ); 162 mPriorityCombo = new QComboBox( h );
164 mPriorityCombo->insertItem(i18n("1 (high)")); 163 mPriorityCombo->insertItem(i18n("1 (high)"));
165 mPriorityCombo->insertItem(i18n("2")); 164 mPriorityCombo->insertItem(i18n("2"));
166 mPriorityCombo->insertItem(i18n("3")); 165 mPriorityCombo->insertItem(i18n("3"));
167 mPriorityCombo->insertItem(i18n("4")); 166 mPriorityCombo->insertItem(i18n("4"));
168 mPriorityCombo->insertItem(i18n("5 (low)")); 167 mPriorityCombo->insertItem(i18n("5 (low)"));
169 //topLayout->addWidget(mPriorityCombo); 168 //topLayout->addWidget(mPriorityCombo);
170} 169}
171 170
172void KOEditorGeneralTodo::initStatus(QWidget *parent,QBoxLayout *topLayout) 171void KOEditorGeneralTodo::initStatus(QWidget *parent,QBoxLayout *topLayout)
173{ 172{
174 QBoxLayout *statusLayout = new QHBoxLayout(topLayout); 173 QBoxLayout *statusLayout = new QHBoxLayout(topLayout);
175 174
176 initCompletion( parent, statusLayout ); 175 initCompletion( parent, statusLayout );
177 176
178 statusLayout->addStretch( 1 ); 177 statusLayout->addStretch( 1 );
179 178
180 initPriority( parent, statusLayout ); 179 initPriority( parent, statusLayout );
181} 180}
182 181
183void KOEditorGeneralTodo::setDefaults(QDateTime due,bool allDay) 182void KOEditorGeneralTodo::setDefaults(QDateTime due,bool allDay)
184{ 183{
185 184
186 mSummaryEdit->load(KOLocationBox::SUMMARYTODO); 185 mSummaryEdit->load(KOLocationBox::SUMMARYTODO);
187 mLocationEdit->load(KOLocationBox::LOCATION); 186 mLocationEdit->load(KOLocationBox::LOCATION);
188 KOEditorGeneral::setDefaults(allDay); 187 KOEditorGeneral::setDefaults(allDay);
189 188
190 mTimeButton->setChecked( !allDay ); 189 mTimeButton->setChecked( !allDay );
191 if(mTimeButton->isChecked()) { 190 if(mTimeButton->isChecked()) {
192 mTimeButton->setEnabled(true); 191 mTimeButton->setEnabled(true);
193 } 192 }
194 else { 193 else {
195 mTimeButton->setEnabled(false); 194 mTimeButton->setEnabled(false);
196 } 195 }
197 196
198 enableTimeEdits( !allDay ); 197 enableTimeEdits( !allDay );
199 198
200 mDueCheck->setChecked(false); 199 mDueCheck->setChecked(false);
201 enableDueEdit(false); 200 enableDueEdit(false);
202 201
203 alarmDisable(true); 202 alarmDisable(true);
204 203
205 mStartCheck->setChecked(false); 204 mStartCheck->setChecked(false);
206 enableStartEdit(false); 205 enableStartEdit(false);
207 206
208 mDueDateEdit->setDate(due.date()); 207 mDueDateEdit->setDate(due.date());
209 mDueTimeEdit->setTime(due.time()); 208 mDueTimeEdit->setTime(due.time());
210 209
211 mStartDateEdit->setDate(QDate::currentDate()); 210 mStartDateEdit->setDate(QDate::currentDate());
212 mStartTimeEdit->setTime(QTime::currentTime()); 211 mStartTimeEdit->setTime(QTime::currentTime());
213 212
214 mPriorityCombo->setCurrentItem(2); 213 mPriorityCombo->setCurrentItem(2);
215 mCompletedLabel->setText(i18n("completed"));; 214 mCompletedLabel->setText(i18n("completed"));;
216 mCompletedCombo->setCurrentItem(0); 215 mCompletedCombo->setCurrentItem(0);
217} 216}
218 217
219void KOEditorGeneralTodo::readTodo(Todo *todo) 218void KOEditorGeneralTodo::readTodo(Todo *todo)
220{ 219{
221 220
222 mSummaryEdit->load(KOLocationBox::SUMMARYTODO); 221 mSummaryEdit->load(KOLocationBox::SUMMARYTODO);
223 mLocationEdit->load(KOLocationBox::LOCATION); 222 mLocationEdit->load(KOLocationBox::LOCATION);
224 KOEditorGeneral::readIncidence(todo); 223 KOEditorGeneral::readIncidence(todo);
225 224
226 QDateTime dueDT; 225 QDateTime dueDT;
227 226
228 if (todo->hasDueDate()) { 227 if (todo->hasDueDate()) {
229 enableAlarmEdit(true); 228 enableAlarmEdit(true);
230 dueDT = todo->dtDue(); 229 dueDT = todo->dtDue();
231 mDueDateEdit->setDate(todo->dtDue().date()); 230 mDueDateEdit->setDate(todo->dtDue().date());
232 mDueTimeEdit->setTime(todo->dtDue().time()); 231 mDueTimeEdit->setTime(todo->dtDue().time());
233 mDueCheck->setChecked(true); 232 mDueCheck->setChecked(true);
234 } else { 233 } else {
235 alarmDisable(true); 234 alarmDisable(true);
236 mDueDateEdit->setEnabled(false); 235 mDueDateEdit->setEnabled(false);
237 mDueTimeEdit->setEnabled(false); 236 mDueTimeEdit->setEnabled(false);
238 mDueDateEdit->setDate(QDate::currentDate()); 237 mDueDateEdit->setDate(QDate::currentDate());
239 mDueTimeEdit->setTime(QTime::currentTime()); 238 mDueTimeEdit->setTime(QTime::currentTime());
240 mDueCheck->setChecked(false); 239 mDueCheck->setChecked(false);
241 } 240 }
242 241
243 if (todo->hasStartDate()) { 242 if (todo->hasStartDate()) {
244 mStartDateEdit->setDate(todo->dtStart().date()); 243 mStartDateEdit->setDate(todo->dtStart().date());
245 mStartTimeEdit->setTime(todo->dtStart().time()); 244 mStartTimeEdit->setTime(todo->dtStart().time());
246 mStartCheck->setChecked(true); 245 mStartCheck->setChecked(true);
247 } else { 246 } else {
248 mStartDateEdit->setEnabled(false); 247 mStartDateEdit->setEnabled(false);
249 mStartTimeEdit->setEnabled(false); 248 mStartTimeEdit->setEnabled(false);
250 mStartDateEdit->setDate(QDate::currentDate()); 249 mStartDateEdit->setDate(QDate::currentDate());
251 mStartTimeEdit->setTime(QTime::currentTime()); 250 mStartTimeEdit->setTime(QTime::currentTime());
252 mStartCheck->setChecked(false); 251 mStartCheck->setChecked(false);
253 } 252 }
254 253
255 mTimeButton->setChecked( !todo->doesFloat() ); 254 mTimeButton->setChecked( !todo->doesFloat() );
256 255
257 mCompletedCombo->setCurrentItem(todo->percentComplete() / 20); 256 mCompletedCombo->setCurrentItem(todo->percentComplete() / 20);
258 if (todo->isCompleted() && todo->hasCompletedDate()) { 257 if (todo->isCompleted() && todo->hasCompletedDate()) {
259 mCompleted = todo->completed(); 258 mCompleted = todo->completed();
260 } 259 }
261 setCompletedDate(); 260 setCompletedDate();
262 261
263 mPriorityCombo->setCurrentItem(todo->priority()-1); 262 mPriorityCombo->setCurrentItem(todo->priority()-1);
264} 263}
265 264
266void KOEditorGeneralTodo::writeTodo(Todo *todo) 265void KOEditorGeneralTodo::writeTodo(Todo *todo)
267{ 266{
268 KOEditorGeneral::writeIncidence(todo); 267 KOEditorGeneral::writeIncidence(todo);
269 268
270 // temp. until something better happens. 269 // temp. until something better happens.
271 QString tmpStr; 270 QString tmpStr;
272 271
273 todo->setHasDueDate(mDueCheck->isChecked()); 272 todo->setHasDueDate(mDueCheck->isChecked());
274 todo->setHasStartDate(mStartCheck->isChecked()); 273 todo->setHasStartDate(mStartCheck->isChecked());
275 274
276 QDate tmpDate; 275 QDate tmpDate;
277 QTime tmpTime; 276 QTime tmpTime;
278 QDateTime tmpDT; 277 QDateTime tmpDT;
279 if ( mTimeButton->isChecked() ) { 278 if ( mTimeButton->isChecked() ) {
280 todo->setFloats(false); 279 todo->setFloats(false);
281 280
282 // set due date/time 281 // set due date/time
283 tmpDate = mDueDateEdit->date(); 282 tmpDate = mDueDateEdit->date();
284 tmpTime = mDueTimeEdit->getTime(); 283 tmpTime = mDueTimeEdit->getTime();
285 tmpDT.setDate(tmpDate); 284 tmpDT.setDate(tmpDate);
286 tmpDT.setTime(tmpTime); 285 tmpDT.setTime(tmpTime);
287 todo->setDtDue(tmpDT); 286 todo->setDtDue(tmpDT);
288 287
289 // set start date/time 288 // set start date/time
290 tmpDate = mStartDateEdit->date(); 289 tmpDate = mStartDateEdit->date();
291 tmpTime = mStartTimeEdit->getTime(); 290 tmpTime = mStartTimeEdit->getTime();
292 tmpDT.setDate(tmpDate); 291 tmpDT.setDate(tmpDate);
293 tmpDT.setTime(tmpTime); 292 tmpDT.setTime(tmpTime);
294 todo->setDtStart(tmpDT); 293 todo->setDtStart(tmpDT);
295 } else { 294 } else {
296 todo->setFloats(true); 295 todo->setFloats(true);
297 296
298 // need to change this. 297 // need to change this.
299 tmpDate = mDueDateEdit->date(); 298 tmpDate = mDueDateEdit->date();
300 tmpTime.setHMS(0,0,0); 299 tmpTime.setHMS(0,0,0);
301 tmpDT.setDate(tmpDate); 300 tmpDT.setDate(tmpDate);
302 tmpDT.setTime(tmpTime); 301 tmpDT.setTime(tmpTime);
303 todo->setDtDue(tmpDT); 302 todo->setDtDue(tmpDT);
304 303
305 tmpDate = mStartDateEdit->date(); 304 tmpDate = mStartDateEdit->date();
306 tmpTime.setHMS(0,0,0); 305 tmpTime.setHMS(0,0,0);
307 tmpDT.setDate(tmpDate); 306 tmpDT.setDate(tmpDate);
308 tmpDT.setTime(tmpTime); 307 tmpDT.setTime(tmpTime);
309 todo->setDtStart(tmpDT); 308 todo->setDtStart(tmpDT);
310 } 309 }
311 310
312 todo->setPriority(mPriorityCombo->currentItem()+1); 311 todo->setPriority(mPriorityCombo->currentItem()+1);
313 312
314 // set completion state 313 // set completion state
315 todo->setPercentComplete(mCompletedCombo->currentItem() * 20); 314 todo->setPercentComplete(mCompletedCombo->currentItem() * 20);
316 315
317 if (mCompletedCombo->currentItem() == 5 && mCompleted.isValid()) { 316 if (mCompletedCombo->currentItem() == 5 && mCompleted.isValid()) {
318 todo->setCompleted(mCompleted); 317 todo->setCompleted(mCompleted);
319 } 318 }
320 mSummaryEdit->save(KOLocationBox::SUMMARYTODO); 319 mSummaryEdit->save(KOLocationBox::SUMMARYTODO);
321} 320}
322 321
323void KOEditorGeneralTodo::enableDueEdit(bool enable) 322void KOEditorGeneralTodo::enableDueEdit(bool enable)
324{ 323{
325 mDueDateEdit->setEnabled( enable ); 324 mDueDateEdit->setEnabled( enable );
326 325
327 if(mDueCheck->isChecked() || mStartCheck->isChecked()) { 326 if(mDueCheck->isChecked() || mStartCheck->isChecked()) {
328 mTimeButton->setEnabled(true); 327 mTimeButton->setEnabled(true);
329 } 328 }
330 else { 329 else {
331 mTimeButton->setEnabled(false); 330 mTimeButton->setEnabled(false);
332 mTimeButton->setChecked(false); 331 mTimeButton->setChecked(false);
333 } 332 }
334 333
335 if (enable) { 334 if (enable) {
336 mDueTimeEdit->setEnabled( mTimeButton->isChecked() ); 335 mDueTimeEdit->setEnabled( mTimeButton->isChecked() );
337 } else { 336 } else {
338 mDueTimeEdit->setEnabled( false ); 337 mDueTimeEdit->setEnabled( false );
339 } 338 }
340} 339}
341 340
342void KOEditorGeneralTodo::enableStartEdit( bool enable ) 341void KOEditorGeneralTodo::enableStartEdit( bool enable )
343{ 342{
344 mStartDateEdit->setEnabled( enable ); 343 mStartDateEdit->setEnabled( enable );
345 344
346 if(mDueCheck->isChecked() || mStartCheck->isChecked()) { 345 if(mDueCheck->isChecked() || mStartCheck->isChecked()) {
347 mTimeButton->setEnabled(true); 346 mTimeButton->setEnabled(true);
348 } 347 }
349 else { 348 else {
350 mTimeButton->setEnabled(false); 349 mTimeButton->setEnabled(false);
351 mTimeButton->setChecked(false); 350 mTimeButton->setChecked(false);
352 } 351 }
353 352
354 if (enable) { 353 if (enable) {
355 mStartTimeEdit->setEnabled( mTimeButton->isChecked() ); 354 mStartTimeEdit->setEnabled( mTimeButton->isChecked() );
356 } else { 355 } else {
357 mStartTimeEdit->setEnabled( false ); 356 mStartTimeEdit->setEnabled( false );
358 } 357 }
359} 358}
360 359
361void KOEditorGeneralTodo::enableTimeEdits(bool enable) 360void KOEditorGeneralTodo::enableTimeEdits(bool enable)
362{ 361{
363 if(mStartCheck->isChecked()) { 362 if(mStartCheck->isChecked()) {
364 mStartTimeEdit->setEnabled( enable ); 363 mStartTimeEdit->setEnabled( enable );
365 } 364 }
366 if(mDueCheck->isChecked()) { 365 if(mDueCheck->isChecked()) {
367 mDueTimeEdit->setEnabled( enable ); 366 mDueTimeEdit->setEnabled( enable );
368 } 367 }
369} 368}
370 369
371void KOEditorGeneralTodo::showAlarm() 370void KOEditorGeneralTodo::showAlarm()
372{ 371{
373 if ( mDueCheck->isChecked() ) { 372 if ( mDueCheck->isChecked() ) {
374 alarmDisable(false); 373 alarmDisable(false);
375 } 374 }
376 else { 375 else {
377 alarmDisable(true); 376 alarmDisable(true);
378 } 377 }
379} 378}
380 379
381bool KOEditorGeneralTodo::validateInput() 380bool KOEditorGeneralTodo::validateInput()
382{ 381{
383 if (mDueCheck->isChecked()) { 382 if (mDueCheck->isChecked()) {
384 if (!mDueDateEdit->inputIsValid()) { 383 if (!mDueDateEdit->inputIsValid()) {
385 KMessageBox::sorry(0,i18n("Please specify a valid due date.")); 384 KMessageBox::sorry(0,i18n("Please specify a valid due date."));
386 return false; 385 return false;
387 } 386 }
388 if (mTimeButton->isChecked()) { 387 if (mTimeButton->isChecked()) {
389 if (!mDueTimeEdit->inputIsValid()) { 388 if (!mDueTimeEdit->inputIsValid()) {
390 KMessageBox::sorry(0,i18n("Please specify a valid due time.")); 389 KMessageBox::sorry(0,i18n("Please specify a valid due time."));
391 return false; 390 return false;
392 } 391 }
393 } 392 }
394 } 393 }
395 394
396 if (mStartCheck->isChecked()) { 395 if (mStartCheck->isChecked()) {
397 if (!mStartDateEdit->inputIsValid()) { 396 if (!mStartDateEdit->inputIsValid()) {
398 KMessageBox::sorry(0,i18n("Please specify a valid start date.")); 397 KMessageBox::sorry(0,i18n("Please specify a valid start date."));
399 return false; 398 return false;
400 } 399 }
401 if (mTimeButton->isChecked()) { 400 if (mTimeButton->isChecked()) {
402 if (!mStartTimeEdit->inputIsValid()) { 401 if (!mStartTimeEdit->inputIsValid()) {
403 KMessageBox::sorry(0,i18n("Please specify a valid start time.")); 402 KMessageBox::sorry(0,i18n("Please specify a valid start time."));
404 return false; 403 return false;
405 } 404 }
406 } 405 }
407 } 406 }
408 407
409 if (mStartCheck->isChecked() && mDueCheck->isChecked()) { 408 if (mStartCheck->isChecked() && mDueCheck->isChecked()) {
410 QDateTime startDate; 409 QDateTime startDate;
411 QDateTime dueDate; 410 QDateTime dueDate;
412 startDate.setDate(mStartDateEdit->date()); 411 startDate.setDate(mStartDateEdit->date());
413 dueDate.setDate(mDueDateEdit->date()); 412 dueDate.setDate(mDueDateEdit->date());
414 if (mTimeButton->isChecked()) { 413 if (mTimeButton->isChecked()) {
415 startDate.setTime(mStartTimeEdit->getTime()); 414 startDate.setTime(mStartTimeEdit->getTime());
416 dueDate.setTime(mDueTimeEdit->getTime()); 415 dueDate.setTime(mDueTimeEdit->getTime());
417 } 416 }
418 if (startDate > dueDate) { 417 if (startDate > dueDate) {
419 KMessageBox::sorry(0, 418 KMessageBox::sorry(0,
420 i18n("The start date cannot be after the due date.")); 419 i18n("The start date cannot be after the due date."));
421 return false; 420 return false;
422 } 421 }
423 } 422 }
424 423
425 return KOEditorGeneral::validateInput(); 424 return KOEditorGeneral::validateInput();
426} 425}
427 426
428void KOEditorGeneralTodo::completedChanged(int index) 427void KOEditorGeneralTodo::completedChanged(int index)
429{ 428{
430 if (index == 5) { 429 if (index == 5) {
431 mCompleted = QDateTime::currentDateTime(); 430 mCompleted = QDateTime::currentDateTime();
432 } 431 }
433 setCompletedDate(); 432 setCompletedDate();
434} 433}
435 434
diff --git a/korganizer/koeditorrecurrence.cpp b/korganizer/koeditorrecurrence.cpp
index d82172f..98356fe 100644
--- a/korganizer/koeditorrecurrence.cpp
+++ b/korganizer/koeditorrecurrence.cpp
@@ -1,435 +1,434 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000-2003 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000-2003 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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qfiledialog.h> 25#include <qfiledialog.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qlistbox.h> 32#include <qlistbox.h>
33#include <qspinbox.h> 33#include <qspinbox.h>
34#include <qcheckbox.h> 34#include <qcheckbox.h>
35#include <qapplication.h> 35#include <qapplication.h>
36 36
37#include <kdialog.h> 37#include <kdialog.h>
38#include <kglobal.h> 38#include <kglobal.h>
39#include <klocale.h> 39#include <klocale.h>
40#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <knumvalidator.h> 42#include <knumvalidator.h>
43 43
44#include <libkcal/event.h> 44#include <libkcal/event.h>
45 45
46#include <libkdepim/kdateedit.h> 46#include <libkdepim/kdateedit.h>
47 47
48#include "koprefs.h" 48#include "koprefs.h"
49 49
50#include "koeditorrecurrence.h" 50#include "koeditorrecurrence.h"
51#include "koeditorrecurrence.moc"
52 51
53/////////////////////////// RecurBase /////////////////////////////// 52/////////////////////////// RecurBase ///////////////////////////////
54 53
55RecurBase::RecurBase( QWidget *parent, const char *name ) : 54RecurBase::RecurBase( QWidget *parent, const char *name ) :
56 QWidget( parent, name ) 55 QWidget( parent, name )
57{ 56{
58 mFrequencyEdit = new QSpinBox( 1, 9999, 1, this ); 57 mFrequencyEdit = new QSpinBox( 1, 9999, 1, this );
59 mFrequencyEdit->setValue( 1 ); 58 mFrequencyEdit->setValue( 1 );
60} 59}
61 60
62QWidget *RecurBase::frequencyEdit() 61QWidget *RecurBase::frequencyEdit()
63{ 62{
64 return mFrequencyEdit; 63 return mFrequencyEdit;
65} 64}
66 65
67void RecurBase::setFrequency( int f ) 66void RecurBase::setFrequency( int f )
68{ 67{
69 if ( f < 1 ) f = 1; 68 if ( f < 1 ) f = 1;
70 69
71 mFrequencyEdit->setValue( f ); 70 mFrequencyEdit->setValue( f );
72} 71}
73 72
74int RecurBase::frequency() 73int RecurBase::frequency()
75{ 74{
76 return mFrequencyEdit->value(); 75 return mFrequencyEdit->value();
77} 76}
78 77
79/////////////////////////// RecurDaily /////////////////////////////// 78/////////////////////////// RecurDaily ///////////////////////////////
80 79
81RecurDaily::RecurDaily( QWidget *parent, const char *name ) : 80RecurDaily::RecurDaily( QWidget *parent, const char *name ) :
82 RecurBase( parent, name ) 81 RecurBase( parent, name )
83{ 82{
84 QBoxLayout *topLayout = new QHBoxLayout( this ); 83 QBoxLayout *topLayout = new QHBoxLayout( this );
85 topLayout->setSpacing( KDialog::spacingHint() ); 84 topLayout->setSpacing( KDialog::spacingHint() );
86 85
87 QLabel *preLabel = new QLabel( i18n("Recur every"), this ); 86 QLabel *preLabel = new QLabel( i18n("Recur every"), this );
88 topLayout->addWidget( preLabel ); 87 topLayout->addWidget( preLabel );
89 88
90 topLayout->addWidget( frequencyEdit() ); 89 topLayout->addWidget( frequencyEdit() );
91 90
92 QLabel *postLabel = new QLabel( i18n("day(s)"), this ); 91 QLabel *postLabel = new QLabel( i18n("day(s)"), this );
93 topLayout->addWidget( postLabel ); 92 topLayout->addWidget( postLabel );
94} 93}
95 94
96 95
97/////////////////////////// RecurWeekly /////////////////////////////// 96/////////////////////////// RecurWeekly ///////////////////////////////
98 97
99RecurWeekly::RecurWeekly( QWidget *parent, const char *name ) : 98RecurWeekly::RecurWeekly( QWidget *parent, const char *name ) :
100 RecurBase( parent, name ) 99 RecurBase( parent, name )
101{ 100{
102 QBoxLayout *topLayout = new QVBoxLayout( this ); 101 QBoxLayout *topLayout = new QVBoxLayout( this );
103 topLayout->setSpacing( KDialog::spacingHint() ); 102 topLayout->setSpacing( KDialog::spacingHint() );
104 103
105 topLayout->addStretch( 1 ); 104 topLayout->addStretch( 1 );
106 105
107 QBoxLayout *weeksLayout = new QHBoxLayout( topLayout ); 106 QBoxLayout *weeksLayout = new QHBoxLayout( topLayout );
108 107
109 QLabel *preLabel = new QLabel( i18n("Recur every"), this ); 108 QLabel *preLabel = new QLabel( i18n("Recur every"), this );
110 weeksLayout->addWidget( preLabel ); 109 weeksLayout->addWidget( preLabel );
111 110
112 weeksLayout->addWidget( frequencyEdit() ); 111 weeksLayout->addWidget( frequencyEdit() );
113 112
114 QLabel *postLabel = new QLabel( i18n("week(s) on:"), this ); 113 QLabel *postLabel = new QLabel( i18n("week(s) on:"), this );
115 weeksLayout->addWidget( postLabel ); 114 weeksLayout->addWidget( postLabel );
116 115
117 QHBox *dayBox = new QHBox( this ); 116 QHBox *dayBox = new QHBox( this );
118 topLayout->addWidget( dayBox, 1, AlignVCenter ); 117 topLayout->addWidget( dayBox, 1, AlignVCenter );
119 // TODO: Respect start of week setting 118 // TODO: Respect start of week setting
120 for ( int i = 0; i < 7; ++i ) { 119 for ( int i = 0; i < 7; ++i ) {
121 QString weekDayName = KGlobal::locale()->weekDayName( i + 1, true ); 120 QString weekDayName = KGlobal::locale()->weekDayName( i + 1, true );
122 if ( KOPrefs::instance()->mCompactDialogs ) { 121 if ( KOPrefs::instance()->mCompactDialogs ) {
123 weekDayName = weekDayName.left( 1 ); 122 weekDayName = weekDayName.left( 1 );
124 } 123 }
125 mDayBoxes[ i ] = new QCheckBox( weekDayName, dayBox ); 124 mDayBoxes[ i ] = new QCheckBox( weekDayName, dayBox );
126 } 125 }
127 126
128 topLayout->addStretch( 1 ); 127 topLayout->addStretch( 1 );
129} 128}
130 129
131void RecurWeekly::setDays( const QBitArray &days ) 130void RecurWeekly::setDays( const QBitArray &days )
132{ 131{
133 for ( int i = 0; i < 7; ++i ) { 132 for ( int i = 0; i < 7; ++i ) {
134 mDayBoxes[ i ]->setChecked( days.testBit( i ) ); 133 mDayBoxes[ i ]->setChecked( days.testBit( i ) );
135 } 134 }
136} 135}
137 136
138QBitArray RecurWeekly::days() 137QBitArray RecurWeekly::days()
139{ 138{
140 QBitArray days( 7 ); 139 QBitArray days( 7 );
141 140
142 for ( int i = 0; i < 7; ++i ) { 141 for ( int i = 0; i < 7; ++i ) {
143 days.setBit( i, mDayBoxes[ i ]->isChecked() ); 142 days.setBit( i, mDayBoxes[ i ]->isChecked() );
144 } 143 }
145 144
146 return days; 145 return days;
147} 146}
148 147
149/////////////////////////// RecurMonthly /////////////////////////////// 148/////////////////////////// RecurMonthly ///////////////////////////////
150 149
151RecurMonthly::RecurMonthly( QWidget *parent, const char *name ) : 150RecurMonthly::RecurMonthly( QWidget *parent, const char *name ) :
152 RecurBase( parent, name ) 151 RecurBase( parent, name )
153{ 152{
154 QBoxLayout *topLayout = new QVBoxLayout( this ); 153 QBoxLayout *topLayout = new QVBoxLayout( this );
155 topLayout->setSpacing( KDialog::spacingHint() ); 154 topLayout->setSpacing( KDialog::spacingHint() );
156 155
157 156
158 QBoxLayout *freqLayout = new QHBoxLayout( topLayout ); 157 QBoxLayout *freqLayout = new QHBoxLayout( topLayout );
159 158
160 QLabel *preLabel = new QLabel( i18n("every"), this ); 159 QLabel *preLabel = new QLabel( i18n("every"), this );
161 freqLayout->addWidget( preLabel ); 160 freqLayout->addWidget( preLabel );
162 161
163 freqLayout->addWidget( frequencyEdit() ); 162 freqLayout->addWidget( frequencyEdit() );
164 163
165 QLabel *postLabel = new QLabel( i18n("month(s)"), this ); 164 QLabel *postLabel = new QLabel( i18n("month(s)"), this );
166 freqLayout->addWidget( postLabel ); 165 freqLayout->addWidget( postLabel );
167 166
168 167
169 QButtonGroup *buttonGroup = new QButtonGroup( this ); 168 QButtonGroup *buttonGroup = new QButtonGroup( this );
170 buttonGroup->setFrameStyle( QFrame::NoFrame ); 169 buttonGroup->setFrameStyle( QFrame::NoFrame );
171 topLayout->addWidget( buttonGroup, 1, AlignVCenter ); 170 topLayout->addWidget( buttonGroup, 1, AlignVCenter );
172 171
173 QGridLayout *buttonLayout = new QGridLayout( buttonGroup, 3, 2 ); 172 QGridLayout *buttonLayout = new QGridLayout( buttonGroup, 3, 2 );
174 buttonLayout->setSpacing( KDialog::spacingHint() ); 173 buttonLayout->setSpacing( KDialog::spacingHint() );
175 174
176 175
177 QString recurOnText; 176 QString recurOnText;
178 if ( !KOPrefs::instance()->mCompactDialogs ) { 177 if ( !KOPrefs::instance()->mCompactDialogs ) {
179 recurOnText = i18n("Recur on the"); 178 recurOnText = i18n("Recur on the");
180 } 179 }
181 180
182 mByDayRadio = new QRadioButton( recurOnText, buttonGroup ); 181 mByDayRadio = new QRadioButton( recurOnText, buttonGroup );
183 buttonLayout->addWidget( mByDayRadio, 0, 0 ); 182 buttonLayout->addWidget( mByDayRadio, 0, 0 );
184 183
185 mByDayCombo = new QComboBox( buttonGroup ); 184 mByDayCombo = new QComboBox( buttonGroup );
186 mByDayCombo->setSizeLimit( 7 ); 185 mByDayCombo->setSizeLimit( 7 );
187 mByDayCombo->insertItem( i18n("1st") ); 186 mByDayCombo->insertItem( i18n("1st") );
188 mByDayCombo->insertItem( i18n("2nd") ); 187 mByDayCombo->insertItem( i18n("2nd") );
189 mByDayCombo->insertItem( i18n("3rd") ); 188 mByDayCombo->insertItem( i18n("3rd") );
190 mByDayCombo->insertItem( i18n("4th") ); 189 mByDayCombo->insertItem( i18n("4th") );
191 mByDayCombo->insertItem( i18n("5th") ); 190 mByDayCombo->insertItem( i18n("5th") );
192 mByDayCombo->insertItem( i18n("6th") ); 191 mByDayCombo->insertItem( i18n("6th") );
193 mByDayCombo->insertItem( i18n("7th") ); 192 mByDayCombo->insertItem( i18n("7th") );
194 mByDayCombo->insertItem( i18n("8th") ); 193 mByDayCombo->insertItem( i18n("8th") );
195 mByDayCombo->insertItem( i18n("9th") ); 194 mByDayCombo->insertItem( i18n("9th") );
196 mByDayCombo->insertItem( i18n("10th") ); 195 mByDayCombo->insertItem( i18n("10th") );
197 mByDayCombo->insertItem( i18n("11th") ); 196 mByDayCombo->insertItem( i18n("11th") );
198 mByDayCombo->insertItem( i18n("12th") ); 197 mByDayCombo->insertItem( i18n("12th") );
199 mByDayCombo->insertItem( i18n("13th") ); 198 mByDayCombo->insertItem( i18n("13th") );
200 mByDayCombo->insertItem( i18n("14th") ); 199 mByDayCombo->insertItem( i18n("14th") );
201 mByDayCombo->insertItem( i18n("15th") ); 200 mByDayCombo->insertItem( i18n("15th") );
202 mByDayCombo->insertItem( i18n("16th") ); 201 mByDayCombo->insertItem( i18n("16th") );
203 mByDayCombo->insertItem( i18n("17th") ); 202 mByDayCombo->insertItem( i18n("17th") );
204 mByDayCombo->insertItem( i18n("18th") ); 203 mByDayCombo->insertItem( i18n("18th") );
205 mByDayCombo->insertItem( i18n("19th") ); 204 mByDayCombo->insertItem( i18n("19th") );
206 mByDayCombo->insertItem( i18n("20th") ); 205 mByDayCombo->insertItem( i18n("20th") );
207 mByDayCombo->insertItem( i18n("21st") ); 206 mByDayCombo->insertItem( i18n("21st") );
208 mByDayCombo->insertItem( i18n("22nd") ); 207 mByDayCombo->insertItem( i18n("22nd") );
209 mByDayCombo->insertItem( i18n("23rd") ); 208 mByDayCombo->insertItem( i18n("23rd") );
210 mByDayCombo->insertItem( i18n("24th") ); 209 mByDayCombo->insertItem( i18n("24th") );
211 mByDayCombo->insertItem( i18n("25th") ); 210 mByDayCombo->insertItem( i18n("25th") );
212 mByDayCombo->insertItem( i18n("26th") ); 211 mByDayCombo->insertItem( i18n("26th") );
213 mByDayCombo->insertItem( i18n("27th") ); 212 mByDayCombo->insertItem( i18n("27th") );
214 mByDayCombo->insertItem( i18n("28th") ); 213 mByDayCombo->insertItem( i18n("28th") );
215 mByDayCombo->insertItem( i18n("29th") ); 214 mByDayCombo->insertItem( i18n("29th") );
216 mByDayCombo->insertItem( i18n("30th") ); 215 mByDayCombo->insertItem( i18n("30th") );
217 mByDayCombo->insertItem( i18n("31st") ); 216 mByDayCombo->insertItem( i18n("31st") );
218 buttonLayout->addWidget( mByDayCombo, 0, 1 ); 217 buttonLayout->addWidget( mByDayCombo, 0, 1 );
219 218
220 QLabel *byDayLabel = new QLabel( i18n("day"), buttonGroup ); 219 QLabel *byDayLabel = new QLabel( i18n("day"), buttonGroup );
221 buttonLayout->addWidget( byDayLabel, 0, 2 ); 220 buttonLayout->addWidget( byDayLabel, 0, 2 );
222 221
223 222
224 mByPosRadio = new QRadioButton( recurOnText, buttonGroup); 223 mByPosRadio = new QRadioButton( recurOnText, buttonGroup);
225 buttonLayout->addWidget( mByPosRadio, 1, 0 ); 224 buttonLayout->addWidget( mByPosRadio, 1, 0 );
226 225
227 mByPosCountCombo = new QComboBox( buttonGroup ); 226 mByPosCountCombo = new QComboBox( buttonGroup );
228 mByPosCountCombo->insertItem( i18n("1st") ); 227 mByPosCountCombo->insertItem( i18n("1st") );
229 mByPosCountCombo->insertItem( i18n("2nd") ); 228 mByPosCountCombo->insertItem( i18n("2nd") );
230 mByPosCountCombo->insertItem( i18n("3rd") ); 229 mByPosCountCombo->insertItem( i18n("3rd") );
231 mByPosCountCombo->insertItem( i18n("4th") ); 230 mByPosCountCombo->insertItem( i18n("4th") );
232 mByPosCountCombo->insertItem( i18n("5th") ); 231 mByPosCountCombo->insertItem( i18n("5th") );
233 buttonLayout->addWidget( mByPosCountCombo, 1, 1 ); 232 buttonLayout->addWidget( mByPosCountCombo, 1, 1 );
234 233
235 mByPosWeekdayCombo = new QComboBox( buttonGroup ); 234 mByPosWeekdayCombo = new QComboBox( buttonGroup );
236 mByPosWeekdayCombo->insertItem( i18n("Monday") ); 235 mByPosWeekdayCombo->insertItem( i18n("Monday") );
237 mByPosWeekdayCombo->insertItem( i18n("Tuesday") ); 236 mByPosWeekdayCombo->insertItem( i18n("Tuesday") );
238 mByPosWeekdayCombo->insertItem( i18n("Wednesday") ); 237 mByPosWeekdayCombo->insertItem( i18n("Wednesday") );
239 mByPosWeekdayCombo->insertItem( i18n("Thursday") ); 238 mByPosWeekdayCombo->insertItem( i18n("Thursday") );
240 mByPosWeekdayCombo->insertItem( i18n("Friday") ); 239 mByPosWeekdayCombo->insertItem( i18n("Friday") );
241 mByPosWeekdayCombo->insertItem( i18n("Saturday") ); 240 mByPosWeekdayCombo->insertItem( i18n("Saturday") );
242 mByPosWeekdayCombo->insertItem( i18n("Sunday") ); 241 mByPosWeekdayCombo->insertItem( i18n("Sunday") );
243 buttonLayout->addWidget( mByPosWeekdayCombo, 1, 2 ); 242 buttonLayout->addWidget( mByPosWeekdayCombo, 1, 2 );
244} 243}
245 244
246void RecurMonthly::setByDay( int day ) 245void RecurMonthly::setByDay( int day )
247{ 246{
248 mByDayRadio->setChecked( true ); 247 mByDayRadio->setChecked( true );
249 mByDayCombo->setCurrentItem( day ); 248 mByDayCombo->setCurrentItem( day );
250} 249}
251 250
252void RecurMonthly::setByPos( int count, int weekday ) 251void RecurMonthly::setByPos( int count, int weekday )
253{ 252{
254 mByPosRadio->setChecked( true ); 253 mByPosRadio->setChecked( true );
255 mByPosCountCombo->setCurrentItem( count ); 254 mByPosCountCombo->setCurrentItem( count );
256 mByPosWeekdayCombo->setCurrentItem( weekday ); 255 mByPosWeekdayCombo->setCurrentItem( weekday );
257} 256}
258 257
259bool RecurMonthly::byDay() 258bool RecurMonthly::byDay()
260{ 259{
261 return mByDayRadio->isChecked(); 260 return mByDayRadio->isChecked();
262} 261}
263 262
264bool RecurMonthly::byPos() 263bool RecurMonthly::byPos()
265{ 264{
266 return mByPosRadio->isChecked(); 265 return mByPosRadio->isChecked();
267} 266}
268 267
269int RecurMonthly::day() 268int RecurMonthly::day()
270{ 269{
271 return mByDayCombo->currentItem() + 1; 270 return mByDayCombo->currentItem() + 1;
272} 271}
273 272
274int RecurMonthly::count() 273int RecurMonthly::count()
275{ 274{
276 return mByPosCountCombo->currentItem() + 1; 275 return mByPosCountCombo->currentItem() + 1;
277} 276}
278 277
279int RecurMonthly::weekday() 278int RecurMonthly::weekday()
280{ 279{
281 return mByPosWeekdayCombo->currentItem(); 280 return mByPosWeekdayCombo->currentItem();
282} 281}
283 282
284/////////////////////////// RecurYearly /////////////////////////////// 283/////////////////////////// RecurYearly ///////////////////////////////
285 284
286RecurYearly::RecurYearly( QWidget *parent, const char *name ) : 285RecurYearly::RecurYearly( QWidget *parent, const char *name ) :
287 RecurBase( parent, name ) 286 RecurBase( parent, name )
288{ 287{
289 QBoxLayout *topLayout = new QVBoxLayout( this ); 288 QBoxLayout *topLayout = new QVBoxLayout( this );
290 topLayout->setSpacing( KDialog::spacingHint() ); 289 topLayout->setSpacing( KDialog::spacingHint() );
291 290
292 291
293 QBoxLayout *freqLayout = new QHBoxLayout( topLayout ); 292 QBoxLayout *freqLayout = new QHBoxLayout( topLayout );
294 293
295 QLabel *preLabel = new QLabel( i18n("every"), this ); 294 QLabel *preLabel = new QLabel( i18n("every"), this );
296 freqLayout->addWidget( preLabel ); 295 freqLayout->addWidget( preLabel );
297 296
298 freqLayout->addWidget( frequencyEdit() ); 297 freqLayout->addWidget( frequencyEdit() );
299 298
300 QLabel *postLabel = new QLabel( i18n("year(s)"), this ); 299 QLabel *postLabel = new QLabel( i18n("year(s)"), this );
301 freqLayout->addWidget( postLabel ); 300 freqLayout->addWidget( postLabel );
302 301
303 302
304 QButtonGroup *buttonGroup = new QButtonGroup( this ); 303 QButtonGroup *buttonGroup = new QButtonGroup( this );
305 buttonGroup->setFrameStyle( QFrame::NoFrame ); 304 buttonGroup->setFrameStyle( QFrame::NoFrame );
306 topLayout->addWidget( buttonGroup, 1, AlignVCenter ); 305 topLayout->addWidget( buttonGroup, 1, AlignVCenter );
307 306
308 QGridLayout *buttonLayout = new QGridLayout( buttonGroup, 3, 2 ); 307 QGridLayout *buttonLayout = new QGridLayout( buttonGroup, 3, 2 );
309 308
310 QString recurInMonthText; 309 QString recurInMonthText;
311 if ( !KOPrefs::instance()->mCompactDialogs ) { 310 if ( !KOPrefs::instance()->mCompactDialogs ) {
312 recurInMonthText = i18n("Recur in the month of"); 311 recurInMonthText = i18n("Recur in the month of");
313 } 312 }
314 313
315 mByMonthRadio = new QRadioButton( recurInMonthText, buttonGroup); 314 mByMonthRadio = new QRadioButton( recurInMonthText, buttonGroup);
316 buttonLayout->addWidget( mByMonthRadio, 0, 0 ); 315 buttonLayout->addWidget( mByMonthRadio, 0, 0 );
317 316
318 mByMonthCombo = new QComboBox( buttonGroup ); 317 mByMonthCombo = new QComboBox( buttonGroup );
319 mByMonthCombo->insertItem( i18n("January") ); 318 mByMonthCombo->insertItem( i18n("January") );
320 mByMonthCombo->insertItem( i18n("February") ); 319 mByMonthCombo->insertItem( i18n("February") );
321 mByMonthCombo->insertItem( i18n("March") ); 320 mByMonthCombo->insertItem( i18n("March") );
322 mByMonthCombo->insertItem( i18n("April") ); 321 mByMonthCombo->insertItem( i18n("April") );
323 mByMonthCombo->insertItem( i18n("May") ); 322 mByMonthCombo->insertItem( i18n("May") );
324 mByMonthCombo->insertItem( i18n("June") ); 323 mByMonthCombo->insertItem( i18n("June") );
325 mByMonthCombo->insertItem( i18n("July") ); 324 mByMonthCombo->insertItem( i18n("July") );
326 mByMonthCombo->insertItem( i18n("August") ); 325 mByMonthCombo->insertItem( i18n("August") );
327 mByMonthCombo->insertItem( i18n("September") ); 326 mByMonthCombo->insertItem( i18n("September") );
328 mByMonthCombo->insertItem( i18n("October") ); 327 mByMonthCombo->insertItem( i18n("October") );
329 mByMonthCombo->insertItem( i18n("November") ); 328 mByMonthCombo->insertItem( i18n("November") );
330 mByMonthCombo->insertItem( i18n("December") ); 329 mByMonthCombo->insertItem( i18n("December") );
331 buttonLayout->addWidget( mByMonthCombo, 0, 1 ); 330 buttonLayout->addWidget( mByMonthCombo, 0, 1 );
332 331
333 mByMonthCombo->setSizeLimit( 6 ); 332 mByMonthCombo->setSizeLimit( 6 );
334 333
335 buttonLayout->setRowStretch( 1, 1 ); 334 buttonLayout->setRowStretch( 1, 1 );
336 335
337 QString recurOnDayText; 336 QString recurOnDayText;
338 if ( KOPrefs::instance()->mCompactDialogs ) { 337 if ( KOPrefs::instance()->mCompactDialogs ) {
339 recurOnDayText = i18n("This day"); 338 recurOnDayText = i18n("This day");
340 } else { 339 } else {
341 recurOnDayText = i18n("Recur on this day"); 340 recurOnDayText = i18n("Recur on this day");
342 } 341 }
343 342
344 mByDayRadio = new QRadioButton( recurOnDayText, buttonGroup); 343 mByDayRadio = new QRadioButton( recurOnDayText, buttonGroup);
345 buttonLayout->addMultiCellWidget( mByDayRadio, 2, 2, 0, 1 ); 344 buttonLayout->addMultiCellWidget( mByDayRadio, 2, 2, 0, 1 );
346} 345}
347 346
348void RecurYearly::setByDay() 347void RecurYearly::setByDay()
349{ 348{
350 mByDayRadio->setChecked( true ); 349 mByDayRadio->setChecked( true );
351} 350}
352 351
353void RecurYearly::setByMonth( int month ) 352void RecurYearly::setByMonth( int month )
354{ 353{
355 mByMonthRadio->setChecked( true ); 354 mByMonthRadio->setChecked( true );
356 mByMonthCombo->setCurrentItem( month - 1 ); 355 mByMonthCombo->setCurrentItem( month - 1 );
357} 356}
358 357
359bool RecurYearly::byMonth() 358bool RecurYearly::byMonth()
360{ 359{
361 return mByMonthRadio->isChecked(); 360 return mByMonthRadio->isChecked();
362} 361}
363 362
364bool RecurYearly::byDay() 363bool RecurYearly::byDay()
365{ 364{
366 return mByDayRadio->isChecked(); 365 return mByDayRadio->isChecked();
367} 366}
368 367
369int RecurYearly::month() 368int RecurYearly::month()
370{ 369{
371 return mByMonthCombo->currentItem() + 1; 370 return mByMonthCombo->currentItem() + 1;
372} 371}
373 372
374//////////////////////////// ExceptionsWidget ////////////////////////// 373//////////////////////////// ExceptionsWidget //////////////////////////
375 374
376ExceptionsWidget::ExceptionsWidget( QWidget *parent, const char *name ) : 375ExceptionsWidget::ExceptionsWidget( QWidget *parent, const char *name ) :
377 QWidget( parent, name ) 376 QWidget( parent, name )
378{ 377{
379 QBoxLayout *topLayout = new QVBoxLayout( this ); 378 QBoxLayout *topLayout = new QVBoxLayout( this );
380 379
381 QGroupBox *groupBox = new QGroupBox( 1, Horizontal, i18n("Exceptions"), 380 QGroupBox *groupBox = new QGroupBox( 1, Horizontal, i18n("Exceptions"),
382 this ); 381 this );
383 topLayout->addWidget( groupBox ); 382 topLayout->addWidget( groupBox );
384 383
385 QWidget *box = new QWidget( groupBox ); 384 QWidget *box = new QWidget( groupBox );
386 385
387 QGridLayout *boxLayout = new QGridLayout( box ); 386 QGridLayout *boxLayout = new QGridLayout( box );
388 387
389 mExceptionDateEdit = new KDateEdit( box ); 388 mExceptionDateEdit = new KDateEdit( box );
390 boxLayout->addWidget( mExceptionDateEdit, 0, 0 ); 389 boxLayout->addWidget( mExceptionDateEdit, 0, 0 );
391 390
392 QPushButton *addExceptionButton = new QPushButton( i18n("Add"), box ); 391 QPushButton *addExceptionButton = new QPushButton( i18n("Add"), box );
393 boxLayout->addWidget( addExceptionButton, 1, 0 ); 392 boxLayout->addWidget( addExceptionButton, 1, 0 );
394 QPushButton *changeExceptionButton = new QPushButton( i18n("Change"), box ); 393 QPushButton *changeExceptionButton = new QPushButton( i18n("Change"), box );
395 boxLayout->addWidget( changeExceptionButton, 2, 0 ); 394 boxLayout->addWidget( changeExceptionButton, 2, 0 );
396 QPushButton *deleteExceptionButton = new QPushButton( i18n("Delete"), box ); 395 QPushButton *deleteExceptionButton = new QPushButton( i18n("Delete"), box );
397 boxLayout->addWidget( deleteExceptionButton, 3, 0 ); 396 boxLayout->addWidget( deleteExceptionButton, 3, 0 );
398 397
399 mExceptionList = new QListBox( box ); 398 mExceptionList = new QListBox( box );
400 boxLayout->addMultiCellWidget( mExceptionList, 0, 3, 1, 1 ); 399 boxLayout->addMultiCellWidget( mExceptionList, 0, 3, 1, 1 );
401 400
402 boxLayout->setRowStretch( 4, 1 ); 401 boxLayout->setRowStretch( 4, 1 );
403 boxLayout->setColStretch( 1, 3 ); 402 boxLayout->setColStretch( 1, 3 );
404 403
405 connect( addExceptionButton, SIGNAL( clicked() ), 404 connect( addExceptionButton, SIGNAL( clicked() ),
406 SLOT( addException() ) ); 405 SLOT( addException() ) );
407 connect( changeExceptionButton, SIGNAL( clicked() ), 406 connect( changeExceptionButton, SIGNAL( clicked() ),
408 SLOT( changeException() ) ); 407 SLOT( changeException() ) );
409 connect( deleteExceptionButton, SIGNAL( clicked() ), 408 connect( deleteExceptionButton, SIGNAL( clicked() ),
410 SLOT( deleteException() ) ); 409 SLOT( deleteException() ) );
411 if ( QApplication::desktop()->width() < 480 ) { 410 if ( QApplication::desktop()->width() < 480 ) {
412 setMinimumWidth( 220 ); 411 setMinimumWidth( 220 );
413 } else { 412 } else {
414 setMinimumWidth( 440 ); 413 setMinimumWidth( 440 );
415 mExceptionDateEdit->setMinimumWidth( 200 ); 414 mExceptionDateEdit->setMinimumWidth( 200 );
416 } 415 }
417} 416}
418 417
419void ExceptionsWidget::setDefaults( const QDateTime &from ) 418void ExceptionsWidget::setDefaults( const QDateTime &from )
420{ 419{
421 mExceptionDateEdit->setDate( from.date() ); 420 mExceptionDateEdit->setDate( from.date() );
422} 421}
423 422
424void ExceptionsWidget::addException() 423void ExceptionsWidget::addException()
425{ 424{
426 QDate date = mExceptionDateEdit->date(); 425 QDate date = mExceptionDateEdit->date();
427 QString dateStr = KGlobal::locale()->formatDate( date ); 426 QString dateStr = KGlobal::locale()->formatDate( date );
428 if( !mExceptionList->findItem( dateStr ) ) { 427 if( !mExceptionList->findItem( dateStr ) ) {
429 mExceptionDates.append( date ); 428 mExceptionDates.append( date );
430 mExceptionList->insertItem( dateStr ); 429 mExceptionList->insertItem( dateStr );
431 } 430 }
432} 431}
433 432
434void ExceptionsWidget::changeException() 433void ExceptionsWidget::changeException()
435{ 434{
diff --git a/korganizer/koeventeditor.cpp b/korganizer/koeventeditor.cpp
index b3edec6..0ff99a4 100644
--- a/korganizer/koeventeditor.cpp
+++ b/korganizer/koeventeditor.cpp
@@ -1,378 +1,377 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001,2002 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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qframe.h> 25#include <qframe.h>
26#include <qpixmap.h> 26#include <qpixmap.h>
27#include <qhbox.h> 27#include <qhbox.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qapplication.h> 31#include <qapplication.h>
32 32
33#include <kiconloader.h> 33#include <kiconloader.h>
34#include <kstandarddirs.h> 34#include <kstandarddirs.h>
35#include <kdebug.h> 35#include <kdebug.h>
36#include <klocale.h> 36#include <klocale.h>
37#include <kfiledialog.h> 37#include <kfiledialog.h>
38#include <kmessagebox.h> 38#include <kmessagebox.h>
39#include <libkcal/calendarresources.h> 39#include <libkcal/calendarresources.h>
40#include <libkcal/resourcecalendar.h> 40#include <libkcal/resourcecalendar.h>
41#include <kresources/resourceselectdialog.h> 41#include <kresources/resourceselectdialog.h>
42 42
43#include <libkdepim/categoryselectdialog.h> 43#include <libkdepim/categoryselectdialog.h>
44#include <libkcal/calendarlocal.h> 44#include <libkcal/calendarlocal.h>
45#include <libkcal/icalformat.h> 45#include <libkcal/icalformat.h>
46 46
47#include "koprefs.h" 47#include "koprefs.h"
48 48
49#include "koeventeditor.h" 49#include "koeventeditor.h"
50#include "koeventeditor.moc"
51extern int globalFlagBlockAgenda; 50extern int globalFlagBlockAgenda;
52 51
53KOEventEditor::KOEventEditor( Calendar *calendar, QWidget *parent ) : 52KOEventEditor::KOEventEditor( Calendar *calendar, QWidget *parent ) :
54 KOIncidenceEditor( i18n("Edit Event"), calendar, parent ) 53 KOIncidenceEditor( i18n("Edit Event"), calendar, parent )
55{ 54{
56 mEvent = 0; 55 mEvent = 0;
57 init(); 56 init();
58} 57}
59 58
60KOEventEditor::~KOEventEditor() 59KOEventEditor::~KOEventEditor()
61{ 60{
62 //emit dialogClose( mEvent ); 61 //emit dialogClose( mEvent );
63} 62}
64 63
65void KOEventEditor::init() 64void KOEventEditor::init()
66{ 65{
67 66
68 setupGeneral(); 67 setupGeneral();
69 setupAttendeesTab(); 68 setupAttendeesTab();
70 setupRecurrence(); 69 setupRecurrence();
71 70
72 // Propagate date time settings to recurrence tab 71 // Propagate date time settings to recurrence tab
73 connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), 72 connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)),
74 mRecurrence,SLOT(setDateTimes(QDateTime,QDateTime))); 73 mRecurrence,SLOT(setDateTimes(QDateTime,QDateTime)));
75 connect(mGeneral,SIGNAL(dateTimeStrChanged(const QString &)), 74 connect(mGeneral,SIGNAL(dateTimeStrChanged(const QString &)),
76 mRecurrence,SLOT(setDateTimeStr(const QString &))); 75 mRecurrence,SLOT(setDateTimeStr(const QString &)));
77 76
78 // Category dialog 77 // Category dialog
79 // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); 78 // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show()));
80 //connect(mCategoryDialog,SIGNAL(categoriesSelected(const QString &)), 79 //connect(mCategoryDialog,SIGNAL(categoriesSelected(const QString &)),
81 // mGeneral,SLOT(setCategories(const QString &))); 80 // mGeneral,SLOT(setCategories(const QString &)));
82 81
83 82
84} 83}
85 84
86void KOEventEditor::reload() 85void KOEventEditor::reload()
87{ 86{
88 if ( mEvent ) readEvent( mEvent ); 87 if ( mEvent ) readEvent( mEvent );
89} 88}
90 89
91void KOEventEditor::setSecrecy( int sec ) 90void KOEventEditor::setSecrecy( int sec )
92{ 91{
93 mGeneral->setSecrecy( sec ); 92 mGeneral->setSecrecy( sec );
94} 93}
95void KOEventEditor::setCategories( QString s ) 94void KOEventEditor::setCategories( QString s )
96{ 95{
97 mGeneral->setCategories(s); 96 mGeneral->setCategories(s);
98 97
99} 98}
100void KOEventEditor::setupGeneral() 99void KOEventEditor::setupGeneral()
101{ 100{
102 mGeneral = new KOEditorGeneralEvent( this, "KOEditorGeneralEvent" ); 101 mGeneral = new KOEditorGeneralEvent( this, "KOEditorGeneralEvent" );
103 connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); 102 connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) );
104 103
105 if( KOPrefs::instance()->mCompactDialogs ) { 104 if( KOPrefs::instance()->mCompactDialogs ) {
106 QFrame *topFrame = addPage(i18n("General")); 105 QFrame *topFrame = addPage(i18n("General"));
107 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 106 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
108 topLayout->setSpacing(spacingHint()-1); 107 topLayout->setSpacing(spacingHint()-1);
109 topLayout->setMargin(marginHint()-1); 108 topLayout->setMargin(marginHint()-1);
110 mGeneral->initHeader(topFrame,topLayout); 109 mGeneral->initHeader(topFrame,topLayout);
111 mGeneral->initTime(topFrame,topLayout); 110 mGeneral->initTime(topFrame,topLayout);
112// QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); 111// QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout);
113 mGeneral->initAlarm(topFrame,topLayout); 112 mGeneral->initAlarm(topFrame,topLayout);
114 mGeneral->enableAlarm( false ); 113 mGeneral->enableAlarm( false );
115 114
116 QBoxLayout *buttonLayout; 115 QBoxLayout *buttonLayout;
117 if ( QApplication::desktop()->width() < 500 ) 116 if ( QApplication::desktop()->width() < 500 )
118 buttonLayout = new QVBoxLayout( topLayout ); 117 buttonLayout = new QVBoxLayout( topLayout );
119 else 118 else
120 buttonLayout = new QHBoxLayout( topLayout ); 119 buttonLayout = new QHBoxLayout( topLayout );
121 QHBox* buttonWidget = new QHBox (topFrame); 120 QHBox* buttonWidget = new QHBox (topFrame);
122 QIconSet icon; 121 QIconSet icon;
123 if ( QApplication::desktop()->width() < 321 ) 122 if ( QApplication::desktop()->width() < 321 )
124 icon = SmallIcon("fileexport16"); 123 icon = SmallIcon("fileexport16");
125 else 124 else
126 icon = SmallIcon("fileexport"); 125 icon = SmallIcon("fileexport");
127 QPushButton * loadTemplate = new QPushButton( buttonWidget); 126 QPushButton * loadTemplate = new QPushButton( buttonWidget);
128 QPushButton * saveTemplate = new QPushButton( buttonWidget); 127 QPushButton * saveTemplate = new QPushButton( buttonWidget);
129 saveTemplate->setIconSet (icon ) ; 128 saveTemplate->setIconSet (icon ) ;
130 int size = saveTemplate->sizeHint().height(); 129 int size = saveTemplate->sizeHint().height();
131 saveTemplate->setFixedSize( size, size ); 130 saveTemplate->setFixedSize( size, size );
132 if ( QApplication::desktop()->width() < 321 ) 131 if ( QApplication::desktop()->width() < 321 )
133 icon = SmallIcon("fileimport16"); 132 icon = SmallIcon("fileimport16");
134 else 133 else
135 icon = SmallIcon("fileimport"); 134 icon = SmallIcon("fileimport");
136 loadTemplate->setIconSet (icon ) ; 135 loadTemplate->setIconSet (icon ) ;
137 loadTemplate->setFixedSize( size, size ); 136 loadTemplate->setFixedSize( size, size );
138 buttonLayout->addWidget( buttonWidget ); 137 buttonLayout->addWidget( buttonWidget );
139 mGeneral->initCategories( topFrame, buttonLayout ); 138 mGeneral->initCategories( topFrame, buttonLayout );
140 139
141 topLayout->addStretch( 1 ); 140 topLayout->addStretch( 1 );
142 141
143 QFrame *topFrame2 = addPage(i18n("Details")); 142 QFrame *topFrame2 = addPage(i18n("Details"));
144 143
145 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); 144 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2);
146 topLayout2->setSpacing(spacingHint()); 145 topLayout2->setSpacing(spacingHint());
147 146
148 mGeneral->initClass(topFrame2,topLayout2); 147 mGeneral->initClass(topFrame2,topLayout2);
149 mGeneral->initSecrecy( topFrame2, topLayout2 ); 148 mGeneral->initSecrecy( topFrame2, topLayout2 );
150 mGeneral->initDescription(topFrame2,topLayout2); 149 mGeneral->initDescription(topFrame2,topLayout2);
151 150
152 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); 151 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
153 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); 152 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
154 } else { 153 } else {
155 QFrame *topFrame = addPage(i18n("General")); 154 QFrame *topFrame = addPage(i18n("General"));
156 155
157 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 156 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
158 topLayout->setSpacing(spacingHint()); 157 topLayout->setSpacing(spacingHint());
159 158
160 mGeneral->initHeader(topFrame,topLayout); 159 mGeneral->initHeader(topFrame,topLayout);
161 mGeneral->initTime(topFrame,topLayout); 160 mGeneral->initTime(topFrame,topLayout);
162 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); 161 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout);
163 mGeneral->initAlarm(topFrame,alarmLineLayout); 162 mGeneral->initAlarm(topFrame,alarmLineLayout);
164 mGeneral->initClass(topFrame,alarmLineLayout); 163 mGeneral->initClass(topFrame,alarmLineLayout);
165 mGeneral->initDescription(topFrame,topLayout); 164 mGeneral->initDescription(topFrame,topLayout);
166 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); 165 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout);
167 mGeneral->initCategories( topFrame, detailsLayout ); 166 mGeneral->initCategories( topFrame, detailsLayout );
168 mGeneral->initSecrecy( topFrame, detailsLayout ); 167 mGeneral->initSecrecy( topFrame, detailsLayout );
169 } 168 }
170 169
171 mGeneral->finishSetup(); 170 mGeneral->finishSetup();
172 171
173} 172}
174 173
175void KOEventEditor::setupRecurrence() 174void KOEventEditor::setupRecurrence()
176{ 175{
177 QFrame *topFrame = addPage( i18n("Recurrence") ); 176 QFrame *topFrame = addPage( i18n("Recurrence") );
178 QBoxLayout *topLayout = new QVBoxLayout( topFrame ); 177 QBoxLayout *topLayout = new QVBoxLayout( topFrame );
179 178
180 mRecurrence = new KOEditorRecurrence( topFrame ); 179 mRecurrence = new KOEditorRecurrence( topFrame );
181 topLayout->addWidget( mRecurrence ); 180 topLayout->addWidget( mRecurrence );
182} 181}
183 182
184void KOEventEditor::editEvent(Event *event, bool showDescription) 183void KOEventEditor::editEvent(Event *event, bool showDescription)
185{ 184{
186 // init(); 185 // init();
187 186
188 mEvent = event; 187 mEvent = event;
189 readEvent(mEvent); 188 readEvent(mEvent);
190 qApp->processEvents(); 189 qApp->processEvents();
191 if ( showDescription ) { 190 if ( showDescription ) {
192 showPage( 1 ); 191 showPage( 1 );
193 mGeneral->setFocusOn( 1 ); 192 mGeneral->setFocusOn( 1 );
194 } else { 193 } else {
195 showPage( 0 ); 194 showPage( 0 );
196 mGeneral->setFocusOn( 2 ); 195 mGeneral->setFocusOn( 2 );
197 } 196 }
198} 197}
199 198
200void KOEventEditor::newEvent( QDateTime from, QDateTime to, bool allDay ) 199void KOEventEditor::newEvent( QDateTime from, QDateTime to, bool allDay )
201{ 200{
202 // init(); 201 // init();
203 202
204 mEvent = 0; 203 mEvent = 0;
205 setDefaults(from,to,allDay); 204 setDefaults(from,to,allDay);
206} 205}
207 206
208void KOEventEditor::loadDefaults() 207void KOEventEditor::loadDefaults()
209{ 208{
210 int fmt = KOPrefs::instance()->mStartTime; 209 int fmt = KOPrefs::instance()->mStartTime;
211 210
212 QDateTime from(QDate::currentDate(), QTime(fmt,0,0)); 211 QDateTime from(QDate::currentDate(), QTime(fmt,0,0));
213 QDateTime to(QDate::currentDate(), 212 QDateTime to(QDate::currentDate(),
214 QTime(fmt+KOPrefs::instance()->mDefaultDuration,0,0)); 213 QTime(fmt+KOPrefs::instance()->mDefaultDuration,0,0));
215 214
216 setDefaults(from,to,false); 215 setDefaults(from,to,false);
217} 216}
218 217
219bool KOEventEditor::processInput( bool emitTime ) 218bool KOEventEditor::processInput( bool emitTime )
220{ 219{
221 if (!validateInput()) return false; 220 if (!validateInput()) return false;
222 221
223 Event *event = 0; 222 Event *event = 0;
224 223
225 if (mEvent) event = mEvent; 224 if (mEvent) event = mEvent;
226 else { 225 else {
227 event = new Event; 226 event = new Event;
228 event->setOrganizer(KOPrefs::instance()->email()); 227 event->setOrganizer(KOPrefs::instance()->email());
229 } 228 }
230 229
231 writeEvent(event); 230 writeEvent(event);
232 if ( emitTime ) { 231 if ( emitTime ) {
233 globalFlagBlockAgenda = 1; 232 globalFlagBlockAgenda = 1;
234 emit showAgendaView( false ); 233 emit showAgendaView( false );
235 emit jumpToTime( event->dtStart().date() ); 234 emit jumpToTime( event->dtStart().date() );
236 globalFlagBlockAgenda = 2; 235 globalFlagBlockAgenda = 2;
237 236
238 } 237 }
239 if (mEvent) { 238 if (mEvent) {
240 event->setRevision(event->revision()+1); 239 event->setRevision(event->revision()+1);
241 emit eventChanged(event); 240 emit eventChanged(event);
242 } else { 241 } else {
243 mCalendar->addEvent(event); 242 mCalendar->addEvent(event);
244 mEvent = event; 243 mEvent = event;
245 emit eventAdded(event); 244 emit eventAdded(event);
246 } 245 }
247 246
248 return true; 247 return true;
249} 248}
250 249
251void KOEventEditor::deleteEvent() 250void KOEventEditor::deleteEvent()
252{ 251{
253 kdDebug() << "Delete event" << endl; 252 kdDebug() << "Delete event" << endl;
254 253
255 if (mEvent) { 254 if (mEvent) {
256 if (KOPrefs::instance()->mConfirm) { 255 if (KOPrefs::instance()->mConfirm) {
257 switch (msgItemDelete()) { 256 switch (msgItemDelete()) {
258 case KMessageBox::Continue: // OK 257 case KMessageBox::Continue: // OK
259 emit eventToBeDeleted(mEvent); 258 emit eventToBeDeleted(mEvent);
260 emit dialogClose(mEvent); 259 emit dialogClose(mEvent);
261 mCalendar->deleteEvent(mEvent); 260 mCalendar->deleteEvent(mEvent);
262 emit eventDeleted(); 261 emit eventDeleted();
263 reject(); 262 reject();
264 break; 263 break;
265 } 264 }
266 } 265 }
267 else { 266 else {
268 emit eventToBeDeleted(mEvent); 267 emit eventToBeDeleted(mEvent);
269 emit dialogClose(mEvent); 268 emit dialogClose(mEvent);
270 mCalendar->deleteEvent(mEvent); 269 mCalendar->deleteEvent(mEvent);
271 emit eventDeleted(); 270 emit eventDeleted();
272 reject(); 271 reject();
273 } 272 }
274 } else { 273 } else {
275 reject(); 274 reject();
276 } 275 }
277} 276}
278 277
279void KOEventEditor::setDefaults(QDateTime from, QDateTime to, bool allDay) 278void KOEventEditor::setDefaults(QDateTime from, QDateTime to, bool allDay)
280{ 279{
281 mGeneral->setDefaults(from,to,allDay); 280 mGeneral->setDefaults(from,to,allDay);
282 mDetails->setDefaults(); 281 mDetails->setDefaults();
283 mRecurrence->setDefaults(from,to,allDay); 282 mRecurrence->setDefaults(from,to,allDay);
284 showPage( 0 ); 283 showPage( 0 );
285 mGeneral->setFocusOn( 2 ); 284 mGeneral->setFocusOn( 2 );
286} 285}
287 286
288void KOEventEditor::readEvent( Event *event, bool tmpl ) 287void KOEventEditor::readEvent( Event *event, bool tmpl )
289{ 288{
290 mGeneral->readEvent( event, tmpl ); 289 mGeneral->readEvent( event, tmpl );
291 mDetails->readEvent( event ); 290 mDetails->readEvent( event );
292 mRecurrence->readEvent( event ); 291 mRecurrence->readEvent( event );
293 292
294 // categories 293 // categories
295 //mCategoryDialog->setSelected( event->categories() ); 294 //mCategoryDialog->setSelected( event->categories() );
296} 295}
297 296
298void KOEventEditor::writeEvent(Event *event) 297void KOEventEditor::writeEvent(Event *event)
299{ 298{
300 mGeneral->writeEvent( event ); 299 mGeneral->writeEvent( event );
301 mDetails->writeEvent( event ); 300 mDetails->writeEvent( event );
302 301
303 if ( event->organizer() == KOPrefs::instance()->email() ) { 302 if ( event->organizer() == KOPrefs::instance()->email() ) {
304 Event *ev = new Event( *event ); 303 Event *ev = new Event( *event );
305 ev->registerObserver(0); 304 ev->registerObserver(0);
306 mDetails->cancelAttendeeEvent( ev ); 305 mDetails->cancelAttendeeEvent( ev );
307 if ( ev->attendeeCount() > 0 ) { 306 if ( ev->attendeeCount() > 0 ) {
308 emit deleteAttendee( ev ); 307 emit deleteAttendee( ev );
309 } 308 }
310 delete(ev); 309 delete(ev);
311 } 310 }
312 311
313 mRecurrence->writeEvent(event); 312 mRecurrence->writeEvent(event);
314} 313}
315 314
316bool KOEventEditor::validateInput() 315bool KOEventEditor::validateInput()
317{ 316{
318 if (!mGeneral->validateInput()) return false; 317 if (!mGeneral->validateInput()) return false;
319 if (!mDetails->validateInput()) return false; 318 if (!mDetails->validateInput()) return false;
320 if (!mRecurrence->validateInput()) return false; 319 if (!mRecurrence->validateInput()) return false;
321 return true; 320 return true;
322} 321}
323 322
324int KOEventEditor::msgItemDelete() 323int KOEventEditor::msgItemDelete()
325{ 324{
326 return KMessageBox::warningContinueCancel(this, 325 return KMessageBox::warningContinueCancel(this,
327 i18n("This item will be permanently deleted."), 326 i18n("This item will be permanently deleted."),
328 i18n("KOrganizer Confirmation"),i18n("Delete")); 327 i18n("KOrganizer Confirmation"),i18n("Delete"));
329} 328}
330 329
331void KOEventEditor::slotLoadTemplate() 330void KOEventEditor::slotLoadTemplate()
332{ 331{
333 332
334 QString fileName =locateLocal( "templates", "events" ); 333 QString fileName =locateLocal( "templates", "events" );
335 QDir t_dir; 334 QDir t_dir;
336 if ( !t_dir.exists(fileName) ) 335 if ( !t_dir.exists(fileName) )
337 t_dir.mkdir ( fileName ); 336 t_dir.mkdir ( fileName );
338 fileName += "/event"; 337 fileName += "/event";
339 fileName = KFileDialog::getSaveFileName( fileName , "Load Event template", this ); 338 fileName = KFileDialog::getSaveFileName( fileName , "Load Event template", this );
340 if ( fileName.length() == 0 ) 339 if ( fileName.length() == 0 )
341 return; 340 return;
342 CalendarLocal cal; 341 CalendarLocal cal;
343 ICalFormat format; 342 ICalFormat format;
344 if ( !format.load( &cal, fileName ) ) { 343 if ( !format.load( &cal, fileName ) ) {
345 KMessageBox::error( this, i18n("Error loading template file\n '%1'.") 344 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
346 .arg( fileName ) ); 345 .arg( fileName ) );
347 return ; 346 return ;
348 } 347 }
349 QPtrList<Event> events = cal.events(); 348 QPtrList<Event> events = cal.events();
350 Event* event = events.first(); 349 Event* event = events.first();
351 if ( !event ) { 350 if ( !event ) {
352 KMessageBox::error( this, 351 KMessageBox::error( this,
353 i18n("Template does not contain\na valid Event.")); 352 i18n("Template does not contain\na valid Event."));
354 } else { 353 } else {
355 kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl; 354 kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl;
356 readEvent( event, true ); 355 readEvent( event, true );
357 } 356 }
358} 357}
359 358
360 359
361void KOEventEditor::slotSaveTemplate() 360void KOEventEditor::slotSaveTemplate()
362{ 361{
363 QString fileName =locateLocal( "templates", "events" ); 362 QString fileName =locateLocal( "templates", "events" );
364 QDir t_dir; 363 QDir t_dir;
365 if ( !t_dir.exists(fileName) ) 364 if ( !t_dir.exists(fileName) )
366 t_dir.mkdir ( fileName ); 365 t_dir.mkdir ( fileName );
367 fileName += "/event"; 366 fileName += "/event";
368 fileName = KFileDialog::getSaveFileName( fileName , "Save as Event template", this ); 367 fileName = KFileDialog::getSaveFileName( fileName , "Save as Event template", this );
369 if ( fileName.length() > 0 ) 368 if ( fileName.length() > 0 )
370 saveTemplate( fileName ); 369 saveTemplate( fileName );
371} 370}
372 371
373void KOEventEditor::saveTemplate( const QString &templateName ) 372void KOEventEditor::saveTemplate( const QString &templateName )
374{ 373{
375 Event *event = new Event; 374 Event *event = new Event;
376 writeEvent( event ); 375 writeEvent( event );
377 saveAsTemplate( event, templateName ); 376 saveAsTemplate( event, templateName );
378} 377}
diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp
index 410bceb..b274810 100644
--- a/korganizer/koeventpopupmenu.cpp
+++ b/korganizer/koeventpopupmenu.cpp
@@ -1,114 +1,113 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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#include <qcursor.h> 24#include <qcursor.h>
25 25
26#include <klocale.h> 26#include <klocale.h>
27#include <kdebug.h> 27#include <kdebug.h>
28#include <kiconloader.h> 28#include <kiconloader.h>
29 29
30#include <libkcal/event.h> 30#include <libkcal/event.h>
31 31
32#include "koeventpopupmenu.h" 32#include "koeventpopupmenu.h"
33#include "koeventpopupmenu.moc"
34 33
35KOEventPopupMenu::KOEventPopupMenu() 34KOEventPopupMenu::KOEventPopupMenu()
36{ 35{
37 mCurrentIncidence = 0; 36 mCurrentIncidence = 0;
38 mHasAdditionalItems = false; 37 mHasAdditionalItems = false;
39 38
40 insertItem (i18n("&Show"),this,SLOT(popupShow())); 39 insertItem (i18n("&Show"),this,SLOT(popupShow()));
41 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit()))); 40 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit())));
42 mEditOnlyItems.append(insertItem (i18n("&Delete"), 41 mEditOnlyItems.append(insertItem (i18n("&Delete"),
43 this,SLOT(popupDelete()))); 42 this,SLOT(popupDelete())));
44 mEditOnlyItems.append(insertItem (i18n("&Clone..."), 43 mEditOnlyItems.append(insertItem (i18n("&Clone..."),
45 this,SLOT(popupClone()))); 44 this,SLOT(popupClone())));
46 mEditOnlyItems.append(insertItem (i18n("&Move..."), 45 mEditOnlyItems.append(insertItem (i18n("&Move..."),
47 this,SLOT(popupMove()))); 46 this,SLOT(popupMove())));
48#ifndef DESKTOP_VERSION 47#ifndef DESKTOP_VERSION
49 mEditOnlyItems.append(insertItem (i18n("&Beam..."), 48 mEditOnlyItems.append(insertItem (i18n("&Beam..."),
50 this,SLOT(popupBeam()))); 49 this,SLOT(popupBeam())));
51#endif 50#endif
52 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"), 51 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"),
53 this,SLOT(popupCancel()))); 52 this,SLOT(popupCancel())));
54} 53}
55 54
56void KOEventPopupMenu::showIncidencePopup(Incidence *incidence) 55void KOEventPopupMenu::showIncidencePopup(Incidence *incidence)
57{ 56{
58 mCurrentIncidence = incidence; 57 mCurrentIncidence = incidence;
59 58
60 if (mCurrentIncidence) { 59 if (mCurrentIncidence) {
61 // Enable/Disabled menu items only valid for editable events. 60 // Enable/Disabled menu items only valid for editable events.
62 QValueList<int>::Iterator it; 61 QValueList<int>::Iterator it;
63 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 62 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
64 setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); 63 setItemEnabled(*it,!mCurrentIncidence->isReadOnly());
65 } 64 }
66 popup(QCursor::pos()); 65 popup(QCursor::pos());
67 } else { 66 } else {
68 kdDebug() << "KOEventPopupMenu::showEventPopup(): No event selected" << endl; 67 kdDebug() << "KOEventPopupMenu::showEventPopup(): No event selected" << endl;
69 } 68 }
70} 69}
71 70
72void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text, 71void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text,
73 const QObject *receiver, const char *member, 72 const QObject *receiver, const char *member,
74 bool editOnly) 73 bool editOnly)
75{ 74{
76 if (!mHasAdditionalItems) { 75 if (!mHasAdditionalItems) {
77 mHasAdditionalItems = true; 76 mHasAdditionalItems = true;
78 insertSeparator(); 77 insertSeparator();
79 } 78 }
80 int id = insertItem(icon,text,receiver,member); 79 int id = insertItem(icon,text,receiver,member);
81 if (editOnly) mEditOnlyItems.append(id); 80 if (editOnly) mEditOnlyItems.append(id);
82} 81}
83 82
84void KOEventPopupMenu::popupShow() 83void KOEventPopupMenu::popupShow()
85{ 84{
86 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence); 85 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence);
87} 86}
88 87
89void KOEventPopupMenu::popupEdit() 88void KOEventPopupMenu::popupEdit()
90{ 89{
91 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence); 90 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence);
92} 91}
93 92
94void KOEventPopupMenu::popupDelete() 93void KOEventPopupMenu::popupDelete()
95{ 94{
96 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence); 95 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence);
97} 96}
98void KOEventPopupMenu::popupClone() 97void KOEventPopupMenu::popupClone()
99{ 98{
100 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence); 99 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence);
101} 100}
102void KOEventPopupMenu::popupCancel() 101void KOEventPopupMenu::popupCancel()
103{ 102{
104 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence); 103 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence);
105} 104}
106void KOEventPopupMenu::popupMove() 105void KOEventPopupMenu::popupMove()
107{ 106{
108 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence); 107 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence);
109} 108}
110 109
111void KOEventPopupMenu::popupBeam() 110void KOEventPopupMenu::popupBeam()
112{ 111{
113 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence); 112 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence);
114} 113}
diff --git a/korganizer/koeventview.cpp b/korganizer/koeventview.cpp
index 4553b0b..bce2626 100644
--- a/korganizer/koeventview.cpp
+++ b/korganizer/koeventview.cpp
@@ -1,133 +1,130 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000, 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#include <qpopupmenu.h> 24#include <qpopupmenu.h>
25#include <qcursor.h> 25#include <qcursor.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kdebug.h> 28#include <kdebug.h>
29#include <kiconloader.h> 29#include <kiconloader.h>
30#include <kmessagebox.h> 30#include <kmessagebox.h>
31 31
32#include <libkcal/calendar.h> 32#include <libkcal/calendar.h>
33#include "koprefs.h" 33#include "koprefs.h"
34#include "koeventview.h" 34#include "koeventview.h"
35using namespace KOrg; 35using namespace KOrg;
36#include "koeventview.moc"
37 36
38//--------------------------------------------------------------------------- 37//---------------------------------------------------------------------------
39 38
40KOEventView::KOEventView(Calendar *cal,QWidget *parent,const char *name) 39KOEventView::KOEventView(Calendar *cal,QWidget *parent,const char *name)
41 : KOrg::BaseView(cal,parent,name) 40 : KOrg::BaseView(cal,parent,name)
42{ 41{
43} 42}
44 43
45//--------------------------------------------------------------------------- 44//---------------------------------------------------------------------------
46 45
47KOEventView::~KOEventView() 46KOEventView::~KOEventView()
48{ 47{
49} 48}
50 49
51//--------------------------------------------------------------------------- 50//---------------------------------------------------------------------------
52 51
53KOEventPopupMenu *KOEventView::eventPopup() 52KOEventPopupMenu *KOEventView::eventPopup()
54{ 53{
55 KOEventPopupMenu *eventPopup = new KOEventPopupMenu; 54 KOEventPopupMenu *eventPopup = new KOEventPopupMenu;
56 55
57 connect(eventPopup,SIGNAL(editIncidenceSignal(Incidence *)), 56 connect(eventPopup,SIGNAL(editIncidenceSignal(Incidence *)),
58 SIGNAL(editIncidenceSignal(Incidence *))); 57 SIGNAL(editIncidenceSignal(Incidence *)));
59 connect(eventPopup,SIGNAL(showIncidenceSignal(Incidence *)), 58 connect(eventPopup,SIGNAL(showIncidenceSignal(Incidence *)),
60 SIGNAL(showIncidenceSignal(Incidence *))); 59 SIGNAL(showIncidenceSignal(Incidence *)));
61 connect(eventPopup,SIGNAL(deleteIncidenceSignal(Incidence *)), 60 connect(eventPopup,SIGNAL(deleteIncidenceSignal(Incidence *)),
62 SIGNAL(deleteIncidenceSignal(Incidence *))); 61 SIGNAL(deleteIncidenceSignal(Incidence *)));
63 connect(eventPopup,SIGNAL(cancelIncidenceSignal(Incidence *)), 62 connect(eventPopup,SIGNAL(cancelIncidenceSignal(Incidence *)),
64 SIGNAL(cancelIncidenceSignal(Incidence *))); 63 SIGNAL(cancelIncidenceSignal(Incidence *)));
65 connect(eventPopup,SIGNAL(cloneIncidenceSignal(Incidence *)), 64 connect(eventPopup,SIGNAL(cloneIncidenceSignal(Incidence *)),
66 SIGNAL(cloneIncidenceSignal(Incidence *))); 65 SIGNAL(cloneIncidenceSignal(Incidence *)));
67 connect(eventPopup,SIGNAL(beamIncidenceSignal(Incidence *)), 66 connect(eventPopup,SIGNAL(beamIncidenceSignal(Incidence *)),
68 SIGNAL(beamIncidenceSignal(Incidence *))); 67 SIGNAL(beamIncidenceSignal(Incidence *)));
69 connect(eventPopup,SIGNAL(moveIncidenceSignal(Incidence *)), 68 connect(eventPopup,SIGNAL(moveIncidenceSignal(Incidence *)),
70 SIGNAL(moveIncidenceSignal(Incidence *))); 69 SIGNAL(moveIncidenceSignal(Incidence *)));
71 70
72 return eventPopup; 71 return eventPopup;
73} 72}
74 73
75//--------------------------------------------------------------------------- 74//---------------------------------------------------------------------------
76 75
77void KOEventView::showIncidencePopup(QPopupMenu *popup,Incidence *event) 76void KOEventView::showIncidencePopup(QPopupMenu *popup,Incidence *event)
78{ 77{
79 mCurrentIncidence = event; 78 mCurrentIncidence = event;
80 if (event) popup->popup(QCursor::pos()); 79 if (event) popup->popup(QCursor::pos());
81 else kdDebug() << "KOEventView::showEventPopup(): No event selected" << endl; 80 else kdDebug() << "KOEventView::showEventPopup(): No event selected" << endl;
82} 81}
83 82
84//--------------------------------------------------------------------------- 83//---------------------------------------------------------------------------
85 84
86void KOEventView::popupShow() 85void KOEventView::popupShow()
87{ 86{
88 emit showIncidenceSignal(mCurrentIncidence); 87 emit showIncidenceSignal(mCurrentIncidence);
89} 88}
90 89
91//--------------------------------------------------------------------------- 90//---------------------------------------------------------------------------
92 91
93void KOEventView::popupEdit() 92void KOEventView::popupEdit()
94{ 93{
95 emit editIncidenceSignal(mCurrentIncidence); 94 emit editIncidenceSignal(mCurrentIncidence);
96} 95}
97 96
98//--------------------------------------------------------------------------- 97//---------------------------------------------------------------------------
99 98
100void KOEventView::popupDelete() 99void KOEventView::popupDelete()
101{ 100{
102 emit deleteIncidenceSignal(mCurrentIncidence); 101 emit deleteIncidenceSignal(mCurrentIncidence);
103} 102}
104void KOEventView::popupClone() 103void KOEventView::popupClone()
105{ 104{
106 emit cloneIncidenceSignal(mCurrentIncidence); 105 emit cloneIncidenceSignal(mCurrentIncidence);
107} 106}
108void KOEventView::popupCancel() 107void KOEventView::popupCancel()
109{ 108{
110 emit cancelIncidenceSignal(mCurrentIncidence); 109 emit cancelIncidenceSignal(mCurrentIncidence);
111} 110}
112 111
113//--------------------------------------------------------------------------- 112//---------------------------------------------------------------------------
114 113
115void KOEventView::defaultAction( Incidence *incidence ) 114void KOEventView::defaultAction( Incidence *incidence )
116{ 115{
117 116
118 if ( !incidence ) return; 117 if ( !incidence ) return;
119 118
120 if ( incidence->isReadOnly() ) 119 if ( incidence->isReadOnly() )
121 emit showIncidenceSignal(incidence); 120 emit showIncidenceSignal(incidence);
122 else { 121 else {
123 if ( KOPrefs::instance()->mEditOnDoubleClick ) 122 if ( KOPrefs::instance()->mEditOnDoubleClick )
124 emit editIncidenceSignal(incidence); 123 emit editIncidenceSignal(incidence);
125 else 124 else
126 emit showIncidenceSignal(incidence); 125 emit showIncidenceSignal(incidence);
127 } 126 }
128} 127}
129 128
130//--------------------------------------------------------------------------- 129//---------------------------------------------------------------------------
131 130
132#include "baseview.moc"
133
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index 9f8bd9b..bac66d3 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,433 +1,432 @@
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 19
20#include <qcstring.h> 20#include <qcstring.h>
21#include <qwhatsthis.h> 21#include <qwhatsthis.h>
22#include <qdialog.h> 22#include <qdialog.h>
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kapplication.h> 28#include <kapplication.h>
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30#include <libkcal/todo.h> 30#include <libkcal/todo.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <krun.h> 33#include <krun.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include <kprocess.h> 35#include <kprocess.h>
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38#include <libkdepim/addresseeview.h> 38#include <libkdepim/addresseeview.h>
39#include <kabc/stdaddressbook.h> 39#include <kabc/stdaddressbook.h>
40 40
41#ifndef KORG_NODCOP 41#ifndef KORG_NODCOP
42#include <dcopclient.h> 42#include <dcopclient.h>
43#include "korganizer.h" 43#include "korganizer.h"
44#include "koprefs.h" 44#include "koprefs.h"
45#include "actionmanager.h" 45#include "actionmanager.h"
46#endif 46#endif
47 47
48#include "koeventviewer.h" 48#include "koeventviewer.h"
49#include "koeventviewer.moc"
50#ifndef KORG_NOKABC 49#ifndef KORG_NOKABC
51#include <kabc/stdaddressbook.h> 50#include <kabc/stdaddressbook.h>
52#define size count 51#define size count
53#endif 52#endif
54KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 53KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
55 : QTextBrowser(parent,name) 54 : QTextBrowser(parent,name)
56{ 55{
57 mSyncMode = false; 56 mSyncMode = false;
58 mColorMode = 0; 57 mColorMode = 0;
59} 58}
60 59
61KOEventViewer::~KOEventViewer() 60KOEventViewer::~KOEventViewer()
62{ 61{
63} 62}
64 63
65void KOEventViewer::setSource(const QString& n) 64void KOEventViewer::setSource(const QString& n)
66{ 65{
67 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 66 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
68 KABC::AddressBook::Iterator it; 67 KABC::AddressBook::Iterator it;
69 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 68 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
70 // LR I do not understand, why the uid string is different on zaurus and desktop 69 // LR I do not understand, why the uid string is different on zaurus and desktop
71#ifdef DESKTOP_VERSION 70#ifdef DESKTOP_VERSION
72 QString uid = "uid://"+(*it).uid(); 71 QString uid = "uid://"+(*it).uid();
73#else 72#else
74 QString uid = "uid:"+(*it).uid(); 73 QString uid = "uid:"+(*it).uid();
75#endif 74#endif
76 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 75 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
77 if (n == uid ) { 76 if (n == uid ) {
78 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 77 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
79 QDialog dia( this,"dia123", true ); 78 QDialog dia( this,"dia123", true );
80 dia.setCaption( i18n("Details of attendee") ); 79 dia.setCaption( i18n("Details of attendee") );
81 QVBoxLayout lay ( &dia ); 80 QVBoxLayout lay ( &dia );
82 KPIM::AddresseeView av ( &dia ); 81 KPIM::AddresseeView av ( &dia );
83 av.setAddressee( (*it) ); 82 av.setAddressee( (*it) );
84 lay.addWidget( &av ); 83 lay.addWidget( &av );
85 if ( QApplication::desktop()->width() < 480 ) 84 if ( QApplication::desktop()->width() < 480 )
86 dia.resize( 220, 240); 85 dia.resize( 220, 240);
87 else { 86 else {
88 dia.resize( 400,400); 87 dia.resize( 400,400);
89 88
90 } 89 }
91 dia.exec(); 90 dia.exec();
92 break; 91 break;
93 } 92 }
94 } 93 }
95 94
96 95
97#ifndef KORG_NODCOP 96#ifndef KORG_NODCOP
98 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 97 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
99 QString tmpStr; 98 QString tmpStr;
100 if (n.startsWith("mailto:")) { 99 if (n.startsWith("mailto:")) {
101 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 100 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
102 //emit showIncidence(n); 101 //emit showIncidence(n);
103 return; 102 return;
104 } else if (n.startsWith("uid:")) { 103 } else if (n.startsWith("uid:")) {
105 DCOPClient *client = KApplication::kApplication()->dcopClient(); 104 DCOPClient *client = KApplication::kApplication()->dcopClient();
106 const QByteArray noParamData; 105 const QByteArray noParamData;
107 const QByteArray paramData; 106 const QByteArray paramData;
108 QByteArray replyData; 107 QByteArray replyData;
109 QCString replyTypeStr; 108 QCString replyTypeStr;
110#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 109#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
111 bool foundAbbrowser = PING_ABBROWSER; 110 bool foundAbbrowser = PING_ABBROWSER;
112 111
113 if (foundAbbrowser) { 112 if (foundAbbrowser) {
114 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 113 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
115 //client->send("kaddressbook","KAddressBookIface", 114 //client->send("kaddressbook","KAddressBookIface",
116 QDataStream arg(paramData, IO_WriteOnly); 115 QDataStream arg(paramData, IO_WriteOnly);
117 arg << n.mid(6); 116 arg << n.mid(6);
118 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 117 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
119 return; 118 return;
120 } else { 119 } else {
121 /* 120 /*
122 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 121 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
123 We start it without its main interface 122 We start it without its main interface
124 */ 123 */
125 KIconLoader* iconLoader = new KIconLoader(); 124 KIconLoader* iconLoader = new KIconLoader();
126 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 125 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
127 ActionManager::setStartedKAddressBook(true); 126 ActionManager::setStartedKAddressBook(true);
128 tmpStr = "kaddressbook --editor-only --uid "; 127 tmpStr = "kaddressbook --editor-only --uid ";
129 tmpStr += KProcess::quote(n.mid(6)); 128 tmpStr += KProcess::quote(n.mid(6));
130 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 129 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
131 return; 130 return;
132 } 131 }
133 } else { 132 } else {
134 //QTextBrowser::setSource(n); 133 //QTextBrowser::setSource(n);
135 } 134 }
136#endif 135#endif
137} 136}
138 137
139void KOEventViewer::addTag(const QString & tag,const QString & text) 138void KOEventViewer::addTag(const QString & tag,const QString & text)
140{ 139{
141 int number=text.contains("\n"); 140 int number=text.contains("\n");
142 QString str = "<" + tag + ">"; 141 QString str = "<" + tag + ">";
143 QString tmpText=text; 142 QString tmpText=text;
144 QString tmpStr=str; 143 QString tmpStr=str;
145 if(number !=-1) 144 if(number !=-1)
146 { 145 {
147 if (number > 0) { 146 if (number > 0) {
148 int pos=0; 147 int pos=0;
149 QString tmp; 148 QString tmp;
150 for(int i=0;i<=number;i++) { 149 for(int i=0;i<=number;i++) {
151 pos=tmpText.find("\n"); 150 pos=tmpText.find("\n");
152 tmp=tmpText.left(pos); 151 tmp=tmpText.left(pos);
153 tmpText=tmpText.right(tmpText.length()-pos-1); 152 tmpText=tmpText.right(tmpText.length()-pos-1);
154 tmpStr+=tmp+"<br>"; 153 tmpStr+=tmp+"<br>";
155 } 154 }
156 } 155 }
157 else tmpStr += tmpText; 156 else tmpStr += tmpText;
158 tmpStr+="</" + tag + ">"; 157 tmpStr+="</" + tag + ">";
159 mText.append(tmpStr); 158 mText.append(tmpStr);
160 } 159 }
161 else 160 else
162 { 161 {
163 str += text + "</" + tag + ">"; 162 str += text + "</" + tag + ">";
164 mText.append(str); 163 mText.append(str);
165 } 164 }
166} 165}
167 166
168void KOEventViewer::setColorMode( int m ) 167void KOEventViewer::setColorMode( int m )
169{ 168{
170 mColorMode = m; 169 mColorMode = m;
171} 170}
172void KOEventViewer::appendEvent(Event *event, int mode ) 171void KOEventViewer::appendEvent(Event *event, int mode )
173{ 172{
174 mCurrentIncidence = event; 173 mCurrentIncidence = event;
175 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 174 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
176 topLevelWidget()->setCaption(i18n("Event Viewer")); 175 topLevelWidget()->setCaption(i18n("Event Viewer"));
177 if ( mode == 0 ) { 176 if ( mode == 0 ) {
178 addTag("h2",event->summary()); 177 addTag("h2",event->summary());
179 } 178 }
180 else { 179 else {
181 if ( mColorMode == 1 ) { 180 if ( mColorMode == 1 ) {
182 mText +="<font color=\"#00A000\">"; 181 mText +="<font color=\"#00A000\">";
183 } 182 }
184 if ( mColorMode == 2 ) { 183 if ( mColorMode == 2 ) {
185 mText +="<font color=\"#C00000\">"; 184 mText +="<font color=\"#C00000\">";
186 } 185 }
187 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 186 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
188 if ( mode == 1 ) { 187 if ( mode == 1 ) {
189 addTag("h2",i18n( "Local: " ) +event->summary()); 188 addTag("h2",i18n( "Local: " ) +event->summary());
190 } else { 189 } else {
191 addTag("h2",i18n( "Remote: " ) +event->summary()); 190 addTag("h2",i18n( "Remote: " ) +event->summary());
192 } 191 }
193 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 192 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
194 if ( mColorMode ) 193 if ( mColorMode )
195 mText += "</font>"; 194 mText += "</font>";
196 } 195 }
197 if (event->cancelled ()) { 196 if (event->cancelled ()) {
198 mText +="<font color=\"#B00000\">"; 197 mText +="<font color=\"#B00000\">";
199 addTag("i",i18n("This event has been cancelled!")); 198 addTag("i",i18n("This event has been cancelled!"));
200 mText.append("<br>"); 199 mText.append("<br>");
201 mText += "</font>"; 200 mText += "</font>";
202 } 201 }
203 if (!event->location().isEmpty()) { 202 if (!event->location().isEmpty()) {
204 addTag("b",i18n("Location: ")); 203 addTag("b",i18n("Location: "));
205 mText.append(event->location()+"<br>"); 204 mText.append(event->location()+"<br>");
206 } 205 }
207 if (event->doesFloat()) { 206 if (event->doesFloat()) {
208 if (event->isMultiDay()) { 207 if (event->isMultiDay()) {
209 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 208 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
210 .arg(event->dtStartDateStr(shortDate)) 209 .arg(event->dtStartDateStr(shortDate))
211 .arg(event->dtEndDateStr(shortDate))); 210 .arg(event->dtEndDateStr(shortDate)));
212 } else { 211 } else {
213 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 212 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
214 } 213 }
215 } else { 214 } else {
216 if (event->isMultiDay()) { 215 if (event->isMultiDay()) {
217 mText.append(i18n("<p><b>From:</b> %1</p> ") 216 mText.append(i18n("<p><b>From:</b> %1</p> ")
218 .arg(event->dtStartStr( shortDate))); 217 .arg(event->dtStartStr( shortDate)));
219 mText.append(i18n("<p><b>To:</b> %1</p>") 218 mText.append(i18n("<p><b>To:</b> %1</p>")
220 .arg(event->dtEndStr(shortDate))); 219 .arg(event->dtEndStr(shortDate)));
221 } else { 220 } else {
222 mText.append(i18n("<p><b>On:</b> %1</p> ") 221 mText.append(i18n("<p><b>On:</b> %1</p> ")
223 .arg(event->dtStartDateStr( shortDate ))); 222 .arg(event->dtStartDateStr( shortDate )));
224 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 223 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
225 .arg(event->dtStartTimeStr()) 224 .arg(event->dtStartTimeStr())
226 .arg(event->dtEndTimeStr())); 225 .arg(event->dtEndTimeStr()));
227 } 226 }
228 } 227 }
229 228
230 if (event->recurrence()->doesRecur()) { 229 if (event->recurrence()->doesRecur()) {
231 230
232 QString recurText = event->recurrence()->recurrenceText(); 231 QString recurText = event->recurrence()->recurrenceText();
233 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 232 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
234 bool last; 233 bool last;
235 QDate start = QDate::currentDate(); 234 QDate start = QDate::currentDate();
236 QDate next; 235 QDate next;
237 next = event->recurrence()->getPreviousDate( start , &last ); 236 next = event->recurrence()->getPreviousDate( start , &last );
238 if ( !last ) { 237 if ( !last ) {
239 next = event->recurrence()->getNextDate( start.addDays( - 1 ) ); 238 next = event->recurrence()->getNextDate( start.addDays( - 1 ) );
240 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 239 addTag("p",i18n("<b>Next recurrence is on:</b>") );
241 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 240 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
242 } else { 241 } else {
243 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 242 addTag("p",i18n("<b>Last recurrence was on:</b>") );
244 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 243 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
245 } 244 }
246 } 245 }
247 246
248 247
249 if (event->isAlarmEnabled()) { 248 if (event->isAlarmEnabled()) {
250 Alarm *alarm =event->alarms().first() ; 249 Alarm *alarm =event->alarms().first() ;
251 QDateTime t = alarm->time(); 250 QDateTime t = alarm->time();
252 int min = t.secsTo( event->dtStart() )/60; 251 int min = t.secsTo( event->dtStart() )/60;
253 QString s =i18n("( %1 min before )").arg( min ); 252 QString s =i18n("( %1 min before )").arg( min );
254 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 253 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
255 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 254 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
256 //addTag("p",s); 255 //addTag("p",s);
257 } 256 }
258 257
259 addTag("b",i18n("Access: ")); 258 addTag("b",i18n("Access: "));
260 mText.append(event->secrecyStr()+"<br>"); 259 mText.append(event->secrecyStr()+"<br>");
261 if (!event->description().isEmpty()) { 260 if (!event->description().isEmpty()) {
262 addTag("p",i18n("<b>Details: </b>")); 261 addTag("p",i18n("<b>Details: </b>"));
263 addTag("p",event->description()); 262 addTag("p",event->description());
264 } 263 }
265 264
266 formatCategories(event); 265 formatCategories(event);
267 266
268 formatReadOnly(event); 267 formatReadOnly(event);
269 formatAttendees(event); 268 formatAttendees(event);
270 269
271 setText(mText); 270 setText(mText);
272 //QWhatsThis::add(this,mText); 271 //QWhatsThis::add(this,mText);
273 272
274} 273}
275 274
276void KOEventViewer::appendTodo(Todo *event, int mode ) 275void KOEventViewer::appendTodo(Todo *event, int mode )
277{ 276{
278 mCurrentIncidence = event; 277 mCurrentIncidence = event;
279 topLevelWidget()->setCaption(i18n("Todo Viewer")); 278 topLevelWidget()->setCaption(i18n("Todo Viewer"));
280 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 279 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
281 if (mode == 0 ) 280 if (mode == 0 )
282 addTag("h2",event->summary()); 281 addTag("h2",event->summary());
283 else { 282 else {
284 if ( mColorMode == 1 ) { 283 if ( mColorMode == 1 ) {
285 mText +="<font color=\"#00A000\">"; 284 mText +="<font color=\"#00A000\">";
286 } 285 }
287 if ( mColorMode == 2 ) { 286 if ( mColorMode == 2 ) {
288 mText +="<font color=\"#B00000\">"; 287 mText +="<font color=\"#B00000\">";
289 } 288 }
290 if ( mode == 1 ) { 289 if ( mode == 1 ) {
291 addTag("h2",i18n( "Local: " ) +event->summary()); 290 addTag("h2",i18n( "Local: " ) +event->summary());
292 } else { 291 } else {
293 addTag("h2",i18n( "Remote: " ) +event->summary()); 292 addTag("h2",i18n( "Remote: " ) +event->summary());
294 } 293 }
295 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 294 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
296 if ( mColorMode ) 295 if ( mColorMode )
297 mText += "</font>"; 296 mText += "</font>";
298 } 297 }
299 if (event->cancelled ()) { 298 if (event->cancelled ()) {
300 mText +="<font color=\"#B00000\">"; 299 mText +="<font color=\"#B00000\">";
301 addTag("i",i18n("This todo has been cancelled!")); 300 addTag("i",i18n("This todo has been cancelled!"));
302 mText.append("<br>"); 301 mText.append("<br>");
303 mText += "</font>"; 302 mText += "</font>";
304 } 303 }
305 304
306 if (!event->location().isEmpty()) { 305 if (!event->location().isEmpty()) {
307 addTag("b",i18n("Location: ")); 306 addTag("b",i18n("Location: "));
308 mText.append(event->location()+"<br>"); 307 mText.append(event->location()+"<br>");
309 } 308 }
310 if (event->hasDueDate()) { 309 if (event->hasDueDate()) {
311 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 310 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
312 } 311 }
313 addTag("b",i18n("Access: ")); 312 addTag("b",i18n("Access: "));
314 mText.append(event->secrecyStr()+"<br>"); 313 mText.append(event->secrecyStr()+"<br>");
315 if (!event->description().isEmpty()) { 314 if (!event->description().isEmpty()) {
316 addTag("p",i18n("<b>Details: </b>")); 315 addTag("p",i18n("<b>Details: </b>"));
317 addTag("p",event->description()); 316 addTag("p",event->description());
318 } 317 }
319 318
320 formatCategories(event); 319 formatCategories(event);
321 320
322 mText.append(i18n("<p><b>Priority:</b> %2</p>") 321 mText.append(i18n("<p><b>Priority:</b> %2</p>")
323 .arg(QString::number(event->priority()))); 322 .arg(QString::number(event->priority())));
324 323
325 mText.append(i18n("<p><i>%1 % completed</i></p>") 324 mText.append(i18n("<p><i>%1 % completed</i></p>")
326 .arg(event->percentComplete())); 325 .arg(event->percentComplete()));
327 326
328 formatReadOnly(event); 327 formatReadOnly(event);
329 formatAttendees(event); 328 formatAttendees(event);
330 329
331 setText(mText); 330 setText(mText);
332} 331}
333 332
334void KOEventViewer::formatCategories(Incidence *event) 333void KOEventViewer::formatCategories(Incidence *event)
335{ 334{
336 if (!event->categoriesStr().isEmpty()) { 335 if (!event->categoriesStr().isEmpty()) {
337 if (event->categories().count() == 1) { 336 if (event->categories().count() == 1) {
338 addTag("h3",i18n("Category")); 337 addTag("h3",i18n("Category"));
339 } else { 338 } else {
340 addTag("h3",i18n("Categories")); 339 addTag("h3",i18n("Categories"));
341 } 340 }
342 addTag("p",event->categoriesStr()); 341 addTag("p",event->categoriesStr());
343 } 342 }
344} 343}
345void KOEventViewer::formatAttendees(Incidence *event) 344void KOEventViewer::formatAttendees(Incidence *event)
346{ 345{
347 QPtrList<Attendee> attendees = event->attendees(); 346 QPtrList<Attendee> attendees = event->attendees();
348 if (attendees.count()) { 347 if (attendees.count()) {
349 348
350 349
351 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 350 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
352 addTag("h3",i18n("Organizer")); 351 addTag("h3",i18n("Organizer"));
353 mText.append("<ul><li>"); 352 mText.append("<ul><li>");
354#ifndef KORG_NOKABC 353#ifndef KORG_NOKABC
355 354
356 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 355 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
357 KABC::Addressee::List addressList; 356 KABC::Addressee::List addressList;
358 addressList = add_book->findByEmail(event->organizer()); 357 addressList = add_book->findByEmail(event->organizer());
359 KABC::Addressee o = addressList.first(); 358 KABC::Addressee o = addressList.first();
360 if (!o.isEmpty() && addressList.size()<2) { 359 if (!o.isEmpty() && addressList.size()<2) {
361 mText += "<a href=\"uid:" + o.uid() + "\">"; 360 mText += "<a href=\"uid:" + o.uid() + "\">";
362 mText += o.formattedName(); 361 mText += o.formattedName();
363 mText += "</a>\n"; 362 mText += "</a>\n";
364 } else { 363 } else {
365 mText.append(event->organizer()); 364 mText.append(event->organizer());
366 } 365 }
367#else 366#else
368 mText.append(event->organizer()); 367 mText.append(event->organizer());
369#endif 368#endif
370 369
371 if (iconPath) { 370 if (iconPath) {
372 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 371 mText += " <a href=\"mailto:" + event->organizer() + "\">";
373 mText += "<IMG src=\"" + iconPath + "\">"; 372 mText += "<IMG src=\"" + iconPath + "\">";
374 mText += "</a>\n"; 373 mText += "</a>\n";
375 } 374 }
376 mText.append("</li></ul>"); 375 mText.append("</li></ul>");
377 376
378 addTag("h3",i18n("Attendees")); 377 addTag("h3",i18n("Attendees"));
379 Attendee *a; 378 Attendee *a;
380 mText.append("<ul>"); 379 mText.append("<ul>");
381 for(a=attendees.first();a;a=attendees.next()) { 380 for(a=attendees.first();a;a=attendees.next()) {
382#ifndef KORG_NOKABC 381#ifndef KORG_NOKABC
383 if (a->name().isEmpty()) { 382 if (a->name().isEmpty()) {
384 addressList = add_book->findByEmail(a->email()); 383 addressList = add_book->findByEmail(a->email());
385 KABC::Addressee o = addressList.first(); 384 KABC::Addressee o = addressList.first();
386 if (!o.isEmpty() && addressList.size()<2) { 385 if (!o.isEmpty() && addressList.size()<2) {
387 mText += "<a href=\"uid:" + o.uid() + "\">"; 386 mText += "<a href=\"uid:" + o.uid() + "\">";
388 mText += o.formattedName(); 387 mText += o.formattedName();
389 mText += "</a>\n"; 388 mText += "</a>\n";
390 } else { 389 } else {
391 mText += "<li>"; 390 mText += "<li>";
392 mText.append(a->email()); 391 mText.append(a->email());
393 mText += "\n"; 392 mText += "\n";
394 } 393 }
395 } else { 394 } else {
396 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 395 mText += "<li><a href=\"uid:" + a->uid() + "\">";
397 if (!a->name().isEmpty()) mText += a->name(); 396 if (!a->name().isEmpty()) mText += a->name();
398 else mText += a->email(); 397 else mText += a->email();
399 mText += "</a>\n"; 398 mText += "</a>\n";
400 } 399 }
401#else 400#else
402 //qDebug("nokabc "); 401 //qDebug("nokabc ");
403 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 402 mText += "<li><a href=\"uid:" + a->uid() + "\">";
404 if (!a->name().isEmpty()) mText += a->name(); 403 if (!a->name().isEmpty()) mText += a->name();
405 else mText += a->email(); 404 else mText += a->email();
406 mText += "</a>\n"; 405 mText += "</a>\n";
407#endif 406#endif
408 407
409 if (!a->email().isEmpty()) { 408 if (!a->email().isEmpty()) {
410 if (iconPath) { 409 if (iconPath) {
411 mText += "<a href=\"mailto:" + a->name() +" "+ "<" + a->email() + ">" + "\">"; 410 mText += "<a href=\"mailto:" + a->name() +" "+ "<" + a->email() + ">" + "\">";
412 mText += "<IMG src=\"" + iconPath + "\">"; 411 mText += "<IMG src=\"" + iconPath + "\">";
413 mText += "</a>\n"; 412 mText += "</a>\n";
414 } 413 }
415 } 414 }
416 if (a->status() != Attendee::NeedsAction ) 415 if (a->status() != Attendee::NeedsAction )
417 mText +="[" + a->statusStr() + "] "; 416 mText +="[" + a->statusStr() + "] ";
418 if (a->role() == Attendee::Chair ) 417 if (a->role() == Attendee::Chair )
419 mText +="(" + a->roleStr().left(1) + ".)"; 418 mText +="(" + a->roleStr().left(1) + ".)";
420 } 419 }
421 mText.append("</li></ul>"); 420 mText.append("</li></ul>");
422 } 421 }
423 422
424} 423}
425void KOEventViewer::appendJournal(Journal *jour, int mode ) 424void KOEventViewer::appendJournal(Journal *jour, int mode )
426{ 425{
427 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 426 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
428 if (mode == 0 ) 427 if (mode == 0 )
429 addTag("h2",i18n("Journal from: ")); 428 addTag("h2",i18n("Journal from: "));
430 else { 429 else {
431 if ( mode == 1 ) { 430 if ( mode == 1 ) {
432 addTag("h2",i18n( "Local: " ) +i18n("Journal from: ")); 431 addTag("h2",i18n( "Local: " ) +i18n("Journal from: "));
433 } else { 432 } else {
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index 64ab94d..be183eb 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -1,240 +1,239 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 19
20#include <klocale.h> 20#include <klocale.h>
21 21
22#include <libkcal/event.h> 22#include <libkcal/event.h>
23#include <qpushbutton.h> 23#include <qpushbutton.h>
24 24
25#include "koeventviewer.h" 25#include "koeventviewer.h"
26#include "koprefs.h" 26#include "koprefs.h"
27#include <libkcal/todo.h> 27#include <libkcal/todo.h>
28#include "qapp.h" 28#include "qapp.h"
29 29
30#include "koeventviewerdialog.h" 30#include "koeventviewerdialog.h"
31#include "koeventviewerdialog.moc"
32extern int globalFlagBlockAgenda; 31extern int globalFlagBlockAgenda;
33 32
34KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name) 33KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
35 : KDialogBase(parent,name, 34 : KDialogBase(parent,name,
36#ifndef DESKTOP_VERSION 35#ifndef DESKTOP_VERSION
37 true , 36 true ,
38#else 37#else
39 false, 38 false,
40#endif 39#endif
41 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda")) 40 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
42{ 41{
43 42
44 mEventViewer = new KOEventViewer(this); 43 mEventViewer = new KOEventViewer(this);
45 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 44 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
46 setMainWidget(mEventViewer); 45 setMainWidget(mEventViewer);
47 setButtonText(Ok, i18n("Edit") ); 46 setButtonText(Ok, i18n("Edit") );
48 47
49 QObject::connect(findButton( Ok ),SIGNAL(clicked()), 48 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
50 SLOT(editIncidence())); 49 SLOT(editIncidence()));
51 QObject::connect(this,SIGNAL(user1Clicked()), 50 QObject::connect(this,SIGNAL(user1Clicked()),
52 SLOT(showIncidence())); 51 SLOT(showIncidence()));
53 mIncidence = 0; 52 mIncidence = 0;
54 // TODO: Set a sensible size (based on the content?). 53 // TODO: Set a sensible size (based on the content?).
55 //showMaximized(); 54 //showMaximized();
56 //qDebug("++++++++++++KOEventViewerDialog() "); 55 //qDebug("++++++++++++KOEventViewerDialog() ");
57 // if ( KOPrefs::instance()->mCompactDialogs ) { 56 // if ( KOPrefs::instance()->mCompactDialogs ) {
58// setFixedSize( 240,284 ); 57// setFixedSize( 240,284 );
59// move( 0, 15 ); 58// move( 0, 15 );
60// } else { 59// } else {
61// setMinimumSize(300,200); 60// setMinimumSize(300,200);
62// resize(320,300); 61// resize(320,300);
63// } 62// }
64 mSyncMode = false; 63 mSyncMode = false;
65 mSyncResult = 0; 64 mSyncResult = 0;
66 65
67} 66}
68 67
69KOEventViewerDialog::~KOEventViewerDialog() 68KOEventViewerDialog::~KOEventViewerDialog()
70{ 69{
71 //qDebug("-------~KOEventViewerDialog() "); 70 //qDebug("-------~KOEventViewerDialog() ");
72} 71}
73void KOEventViewerDialog::showMe() 72void KOEventViewerDialog::showMe()
74{ 73{
75 74
76#ifdef DESKTOP_VERSION 75#ifdef DESKTOP_VERSION
77 show(); 76 show();
78#else 77#else
79 showMaximized(); 78 showMaximized();
80#endif 79#endif
81 setFocus(); 80 setFocus();
82 setActiveWindow(); 81 setActiveWindow();
83 82
84} 83}
85void KOEventViewerDialog::setSyncMode( bool b ) 84void KOEventViewerDialog::setSyncMode( bool b )
86{ 85{
87 mSyncMode = b; 86 mSyncMode = b;
88 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode ); 87 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode );
89 if ( mSyncMode ) { 88 if ( mSyncMode ) {
90 findButton( Close )->setText( i18n("Cancel Sync")); 89 findButton( Close )->setText( i18n("Cancel Sync"));
91 findButton( Ok )->setText( i18n("Remote")); 90 findButton( Ok )->setText( i18n("Remote"));
92 findButton( User1 )->setText( i18n("Local")); 91 findButton( User1 )->setText( i18n("Local"));
93 } else { 92 } else {
94 findButton( Close )->setText( i18n("Close")); 93 findButton( Close )->setText( i18n("Close"));
95 findButton( Ok )->setText( i18n("Edit")); 94 findButton( Ok )->setText( i18n("Edit"));
96 findButton( User1 )->setText( i18n("Agenda")); 95 findButton( User1 )->setText( i18n("Agenda"));
97 } 96 }
98 mEventViewer->setSyncMode( b ); 97 mEventViewer->setSyncMode( b );
99} 98}
100void KOEventViewerDialog::setColorMode( int m ) 99void KOEventViewerDialog::setColorMode( int m )
101{ 100{
102 mEventViewer->setColorMode( m ); 101 mEventViewer->setColorMode( m );
103} 102}
104int KOEventViewerDialog::executeS( bool local ) 103int KOEventViewerDialog::executeS( bool local )
105{ 104{
106 mSyncResult = 3; 105 mSyncResult = 3;
107 if ( local ) 106 if ( local )
108 findButton( User1 )->setFocus(); 107 findButton( User1 )->setFocus();
109 else 108 else
110 findButton( Ok )->setFocus(); 109 findButton( Ok )->setFocus();
111 exec(); 110 exec();
112 return mSyncResult; 111 return mSyncResult;
113} 112}
114 113
115void KOEventViewerDialog::updateConfig() 114void KOEventViewerDialog::updateConfig()
116{ 115{
117 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 116 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
118 117
119} 118}
120void KOEventViewerDialog::setEvent(Event *event) 119void KOEventViewerDialog::setEvent(Event *event)
121{ 120{
122 mEventViewer->setEvent(event); 121 mEventViewer->setEvent(event);
123 mIncidence = event; 122 mIncidence = event;
124 findButton( Close )->setFocus(); 123 findButton( Close )->setFocus();
125} 124}
126void KOEventViewerDialog::setIncidence(Incidence *in ) 125void KOEventViewerDialog::setIncidence(Incidence *in )
127{ 126{
128 if ( in->type() == "Event" ) 127 if ( in->type() == "Event" )
129 setEvent( (Event*) in ); 128 setEvent( (Event*) in );
130 else if ( in->type() =="Todo" ) 129 else if ( in->type() =="Todo" )
131 setTodo( (Todo*) in ); 130 setTodo( (Todo*) in );
132 else if ( in->type() =="Journal" ) 131 else if ( in->type() =="Journal" )
133 setJournal( (Journal*) in ); 132 setJournal( (Journal*) in );
134} 133}
135void KOEventViewerDialog::addIncidence(Incidence *in) 134void KOEventViewerDialog::addIncidence(Incidence *in)
136{ 135{
137 if ( in->type() == "Event" ) 136 if ( in->type() == "Event" )
138 addEvent( (Event*) in ); 137 addEvent( (Event*) in );
139 else if ( in->type() =="Todo" ) 138 else if ( in->type() =="Todo" )
140 mEventViewer->setTodo( (Todo*) in, false ); 139 mEventViewer->setTodo( (Todo*) in, false );
141 else if ( in->type() =="Journal" ) 140 else if ( in->type() =="Journal" )
142 mEventViewer->setJournal( (Journal*) in, false ); 141 mEventViewer->setJournal( (Journal*) in, false );
143 if ( mSyncMode ) { 142 if ( mSyncMode ) {
144 findButton( User1 )->setFocus(); 143 findButton( User1 )->setFocus();
145 setCaption(i18n("Conflict! Please choose entry")); 144 setCaption(i18n("Conflict! Please choose entry"));
146 } 145 }
147} 146}
148 147
149void KOEventViewerDialog::addEvent(Event *event) 148void KOEventViewerDialog::addEvent(Event *event)
150{ 149{
151 mEventViewer->addEvent(event); 150 mEventViewer->addEvent(event);
152 mIncidence = event; 151 mIncidence = event;
153 findButton( Close )->setFocus(); 152 findButton( Close )->setFocus();
154} 153}
155 154
156void KOEventViewerDialog::setTodo(Todo *event) 155void KOEventViewerDialog::setTodo(Todo *event)
157{ 156{
158 mEventViewer->setTodo(event); 157 mEventViewer->setTodo(event);
159 mIncidence = (Incidence*)event; 158 mIncidence = (Incidence*)event;
160 findButton( Close )->setFocus(); 159 findButton( Close )->setFocus();
161} 160}
162void KOEventViewerDialog::setJournal(Journal *j) 161void KOEventViewerDialog::setJournal(Journal *j)
163{ 162{
164 mEventViewer->setJournal(j); 163 mEventViewer->setJournal(j);
165 mIncidence = (Incidence*)j; 164 mIncidence = (Incidence*)j;
166 findButton( Close )->setFocus(); 165 findButton( Close )->setFocus();
167} 166}
168 167
169void KOEventViewerDialog::addText(QString text) 168void KOEventViewerDialog::addText(QString text)
170{ 169{
171 mEventViewer->addText(text); 170 mEventViewer->addText(text);
172 findButton( Close )->setFocus(); 171 findButton( Close )->setFocus();
173} 172}
174void KOEventViewerDialog::editIncidence() 173void KOEventViewerDialog::editIncidence()
175{ 174{
176 if ( mSyncMode ) { 175 if ( mSyncMode ) {
177 mSyncResult = 2; 176 mSyncResult = 2;
178 accept(); 177 accept();
179 return; 178 return;
180 } 179 }
181 if ( mIncidence ){ 180 if ( mIncidence ){
182#ifndef DESKTOP_VERSION 181#ifndef DESKTOP_VERSION
183 hide(); 182 hide();
184#endif 183#endif
185 emit editIncidence( mIncidence ); 184 emit editIncidence( mIncidence );
186 } 185 }
187} 186}
188void KOEventViewerDialog::showIncidence() 187void KOEventViewerDialog::showIncidence()
189{ 188{
190 189
191 if ( mSyncMode ) { 190 if ( mSyncMode ) {
192 mSyncResult = 1; 191 mSyncResult = 1;
193 accept(); 192 accept();
194 return; 193 return;
195 } 194 }
196 195
197 if ( mIncidence ){ 196 if ( mIncidence ){
198#ifndef DESKTOP_VERSION 197#ifndef DESKTOP_VERSION
199 hide(); 198 hide();
200#endif 199#endif
201 QDate date; 200 QDate date;
202 if ( mIncidence->type() == "Todo" ) { 201 if ( mIncidence->type() == "Todo" ) {
203 if ( ((Todo*)mIncidence)->hasDueDate() ) 202 if ( ((Todo*)mIncidence)->hasDueDate() )
204 date = ((Todo*)mIncidence)->dtDue().date(); 203 date = ((Todo*)mIncidence)->dtDue().date();
205 else { 204 else {
206 globalFlagBlockAgenda = 2; 205 globalFlagBlockAgenda = 2;
207 emit showAgendaView( false ); 206 emit showAgendaView( false );
208 return; 207 return;
209 } 208 }
210 } else 209 } else
211 date = mIncidence->dtStart().date(); 210 date = mIncidence->dtStart().date();
212 globalFlagBlockAgenda = 1; 211 globalFlagBlockAgenda = 1;
213 emit showAgendaView( false ); 212 emit showAgendaView( false );
214 globalFlagBlockAgenda = 2; 213 globalFlagBlockAgenda = 2;
215 emit jumpToTime( date ); 214 emit jumpToTime( date );
216 } 215 }
217} 216}
218void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e ) 217void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
219{ 218{
220 switch ( e->key() ) { 219 switch ( e->key() ) {
221 220
222 case Qt::Key_A : 221 case Qt::Key_A :
223 case Qt::Key_L : 222 case Qt::Key_L :
224 showIncidence(); 223 showIncidence();
225 break; 224 break;
226 case Qt::Key_E : 225 case Qt::Key_E :
227 case Qt::Key_R : 226 case Qt::Key_R :
228 editIncidence(); 227 editIncidence();
229 break; 228 break;
230 case Qt::Key_C: 229 case Qt::Key_C:
231 close(); 230 close();
232 break; 231 break;
233 case Qt::Key_I: 232 case Qt::Key_I:
234 accept(); 233 accept();
235 break; 234 break;
236 default: 235 default:
237 break; 236 break;
238 } 237 }
239 238
240} 239}
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index b22bc54..1479208 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -1,96 +1,95 @@
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#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27 27
28#include <libkcal/calfilter.h> 28#include <libkcal/calfilter.h>
29 29
30#include "kofilterview.h" 30#include "kofilterview.h"
31#include "kofilterview.moc"
32 31
33KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 32KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
34 const char* name,WFlags fl ) 33 const char* name,WFlags fl )
35 : KOFilterView_base(parent,name,fl) 34 : KOFilterView_base(parent,name,fl)
36{ 35{
37 mFilters = filterList; 36 mFilters = filterList;
38 37
39 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 38 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
40 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 39 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
41 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 40 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
42} 41}
43 42
44KOFilterView::~KOFilterView() 43KOFilterView::~KOFilterView()
45{ 44{
46 // no need to delete child widgets, Qt does it all for us 45 // no need to delete child widgets, Qt does it all for us
47} 46}
48 47
49bool KOFilterView::filtersEnabled() 48bool KOFilterView::filtersEnabled()
50{ 49{
51 return mEnabledCheck->isChecked(); 50 return mEnabledCheck->isChecked();
52} 51}
53 52
54void KOFilterView::setFiltersEnabled(bool set) 53void KOFilterView::setFiltersEnabled(bool set)
55{ 54{
56 mEnabledCheck->setChecked(set); 55 mEnabledCheck->setChecked(set);
57 emit filterChanged(); 56 emit filterChanged();
58} 57}
59 58
60 59
61void KOFilterView::updateFilters() 60void KOFilterView::updateFilters()
62{ 61{
63 mSelectionCombo->clear(); 62 mSelectionCombo->clear();
64 63
65 CalFilter *filter = mFilters->first(); 64 CalFilter *filter = mFilters->first();
66 while(filter) { 65 while(filter) {
67 mSelectionCombo->insertItem(filter->name()); 66 mSelectionCombo->insertItem(filter->name());
68 filter = mFilters->next(); 67 filter = mFilters->next();
69 } 68 }
70} 69}
71 70
72CalFilter *KOFilterView::selectedFilter() 71CalFilter *KOFilterView::selectedFilter()
73{ 72{
74 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 73 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
75 return f; 74 return f;
76} 75}
77 76
78void KOFilterView::setSelectedFilter(QString filterName) 77void KOFilterView::setSelectedFilter(QString filterName)
79{ 78{
80 int filter_num = mSelectionCombo->count(); 79 int filter_num = mSelectionCombo->count();
81 int i; 80 int i;
82 for (i=0;i<filter_num;i++) { 81 for (i=0;i<filter_num;i++) {
83 if (mSelectionCombo->text(i)==filterName) 82 if (mSelectionCombo->text(i)==filterName)
84 mSelectionCombo->setCurrentItem(i); 83 mSelectionCombo->setCurrentItem(i);
85 } 84 }
86 emit filterChanged(); 85 emit filterChanged();
87} 86}
88void KOFilterView::setSelectedFilter( int fil ) 87void KOFilterView::setSelectedFilter( int fil )
89{ 88{
90 if ( fil >= mSelectionCombo->count() ) 89 if ( fil >= mSelectionCombo->count() )
91 return; 90 return;
92 mSelectionCombo->setCurrentItem( fil ); 91 mSelectionCombo->setCurrentItem( fil );
93 emit filterChanged(); 92 emit filterChanged();
94} 93}
95 94
96 95
diff --git a/korganizer/koincidenceeditor.cpp b/korganizer/koincidenceeditor.cpp
index e10a188..51df123 100644
--- a/korganizer/koincidenceeditor.cpp
+++ b/korganizer/koincidenceeditor.cpp
@@ -1,187 +1,186 @@
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#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qframe.h> 25#include <qframe.h>
26#include <qpixmap.h> 26#include <qpixmap.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qwidgetstack.h> 28#include <qwidgetstack.h>
29#include <qdatetime.h> 29#include <qdatetime.h>
30#include <qdir.h> 30#include <qdir.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kstandarddirs.h> 34#include <kstandarddirs.h>
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36#include <kfiledialog.h> 36#include <kfiledialog.h>
37 37
38#include <libkdepim/categoryselectdialog.h> 38#include <libkdepim/categoryselectdialog.h>
39#include <libkdepim/kinputdialog.h> 39#include <libkdepim/kinputdialog.h>
40 40
41#include <libkcal/calendarlocal.h> 41#include <libkcal/calendarlocal.h>
42#include <libkcal/icalformat.h> 42#include <libkcal/icalformat.h>
43 43
44#include "koprefs.h" 44#include "koprefs.h"
45#include "koglobals.h" 45#include "koglobals.h"
46 46
47#include "koincidenceeditor.h" 47#include "koincidenceeditor.h"
48#include "koincidenceeditor.moc"
49 48
50KOIncidenceEditor::KOIncidenceEditor( const QString &caption, 49KOIncidenceEditor::KOIncidenceEditor( const QString &caption,
51 Calendar *calendar, QWidget *parent ) : 50 Calendar *calendar, QWidget *parent ) :
52 KDialogBase( Tabbed, caption, Ok | Apply | Cancel |/* Default | */User1, Ok, 51 KDialogBase( Tabbed, caption, Ok | Apply | Cancel |/* Default | */User1, Ok,
53 parent, caption, true, false ), 52 parent, caption, true, false ),
54 mSaveTemplateDialog( 0 ) 53 mSaveTemplateDialog( 0 )
55{ 54{
56 mCalendar = calendar; 55 mCalendar = calendar;
57 56
58 setButtonText( Default, i18n("Template...") ); 57 setButtonText( Default, i18n("Template...") );
59 58
60 QString saveTemplateText; 59 QString saveTemplateText;
61 // if ( KOPrefs::instance()->mCompactDialogs ) { 60 // if ( KOPrefs::instance()->mCompactDialogs ) {
62// showButton( User1, false ); 61// showButton( User1, false );
63// showButton( Apply, false ); 62// showButton( Apply, false );
64// } else { 63// } else {
65 showButton( Apply, false ); 64 showButton( Apply, false );
66 saveTemplateText = i18n("Ok+Agenda"); 65 saveTemplateText = i18n("Ok+Agenda");
67 // } 66 // }
68 setButtonText( User1, saveTemplateText ); 67 setButtonText( User1, saveTemplateText );
69 68
70 //mCategoryDialog = new KPIM::CategorySelectDialog( KOPrefs::instance(), this ); 69 //mCategoryDialog = new KPIM::CategorySelectDialog( KOPrefs::instance(), this );
71 // KOGlobals::fitDialogToScreen( mCategoryDialog ); 70 // KOGlobals::fitDialogToScreen( mCategoryDialog );
72 71
73 //connect(mCategoryDialog,SIGNAL(editCategories()),SIGNAL(editCategories())); 72 //connect(mCategoryDialog,SIGNAL(editCategories()),SIGNAL(editCategories()));
74 73
75 //connect( this, SIGNAL( defaultClicked() ), SLOT( slotLoadTemplate() ) ); 74 //connect( this, SIGNAL( defaultClicked() ), SLOT( slotLoadTemplate() ) );
76 // connect( this, SIGNAL( user1Clicked() ), SLOT( slotSaveTemplate() ) ); 75 // connect( this, SIGNAL( user1Clicked() ), SLOT( slotSaveTemplate() ) );
77 connect( this, SIGNAL( user1Clicked() ), SLOT( slotShowIncidence() ) ); 76 connect( this, SIGNAL( user1Clicked() ), SLOT( slotShowIncidence() ) );
78} 77}
79 78
80KOIncidenceEditor::~KOIncidenceEditor() 79KOIncidenceEditor::~KOIncidenceEditor()
81{ 80{
82 //delete mCategoryDialog; 81 //delete mCategoryDialog;
83} 82}
84 83
85void KOIncidenceEditor::setupAttendeesTab() 84void KOIncidenceEditor::setupAttendeesTab()
86{ 85{
87 QFrame *topFrame = addPage(i18n("Attendees")); 86 QFrame *topFrame = addPage(i18n("Attendees"));
88 87
89 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 88 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
90 89
91 mDetails = new KOEditorDetails(spacingHint(),topFrame); 90 mDetails = new KOEditorDetails(spacingHint(),topFrame);
92 topLayout->addWidget(mDetails); 91 topLayout->addWidget(mDetails);
93} 92}
94 93
95 94
96void KOIncidenceEditor::slotApply() 95void KOIncidenceEditor::slotApply()
97{ 96{
98 processInput( false ); 97 processInput( false );
99} 98}
100void KOIncidenceEditor::accept() 99void KOIncidenceEditor::accept()
101{ 100{
102 slotOk(); 101 slotOk();
103} 102}
104void KOIncidenceEditor::slotOk() 103void KOIncidenceEditor::slotOk()
105{ 104{
106 if ( processInput( false ) ) QDialog::accept(); 105 if ( processInput( false ) ) QDialog::accept();
107} 106}
108 107
109void KOIncidenceEditor::updateCategoryConfig() 108void KOIncidenceEditor::updateCategoryConfig()
110{ 109{
111 qDebug("KOIncidenceEditor::updateCategoryConfig() is dead! "); 110 qDebug("KOIncidenceEditor::updateCategoryConfig() is dead! ");
112 //mCategoryDialog->updateCategoryConfig(); 111 //mCategoryDialog->updateCategoryConfig();
113} 112}
114 113
115void KOIncidenceEditor::slotCancel() 114void KOIncidenceEditor::slotCancel()
116{ 115{
117 reject(); 116 reject();
118} 117}
119 118
120void KOIncidenceEditor::slotLoadTemplate() 119void KOIncidenceEditor::slotLoadTemplate()
121{ 120{
122 kdDebug() << "KOIncidenceEditor::loadTemplate()" << endl; 121 kdDebug() << "KOIncidenceEditor::loadTemplate()" << endl;
123} 122}
124void KOIncidenceEditor::slotShowIncidence() 123void KOIncidenceEditor::slotShowIncidence()
125{ 124{
126 125
127 if ( processInput(true ) ) { 126 if ( processInput(true ) ) {
128 accept(); 127 accept();
129 } 128 }
130} 129}
131 130
132void KOIncidenceEditor::slotSaveTemplate() 131void KOIncidenceEditor::slotSaveTemplate()
133{ 132{
134 kdDebug() << "KOIncidenceEditor::saveTemplate()" << endl; 133 kdDebug() << "KOIncidenceEditor::saveTemplate()" << endl;
135} 134}
136 135
137void KOIncidenceEditor::createSaveTemplateDialog( SaveTemplateDialog::IncidenceType type ) 136void KOIncidenceEditor::createSaveTemplateDialog( SaveTemplateDialog::IncidenceType type )
138{ 137{
139 if ( !mSaveTemplateDialog ) { 138 if ( !mSaveTemplateDialog ) {
140 mSaveTemplateDialog = new SaveTemplateDialog( type, this ); 139 mSaveTemplateDialog = new SaveTemplateDialog( type, this );
141 connect( mSaveTemplateDialog, SIGNAL( templateSelected( const QString & ) ), 140 connect( mSaveTemplateDialog, SIGNAL( templateSelected( const QString & ) ),
142 SLOT( saveTemplate( const QString & ) ) ); 141 SLOT( saveTemplate( const QString & ) ) );
143 } 142 }
144 mSaveTemplateDialog->show(); 143 mSaveTemplateDialog->show();
145 mSaveTemplateDialog->raise(); 144 mSaveTemplateDialog->raise();
146} 145}
147 146
148void KOIncidenceEditor::saveAsTemplate( Incidence *incidence, 147void KOIncidenceEditor::saveAsTemplate( Incidence *incidence,
149 const QString &templateName ) 148 const QString &templateName )
150{ 149{
151 CalendarLocal cal; 150 CalendarLocal cal;
152 cal.addIncidence( incidence ); 151 cal.addIncidence( incidence );
153 ICalFormat format; 152 ICalFormat format;
154 format.save( &cal, templateName ); 153 format.save( &cal, templateName );
155} 154}
156 155
157QString KOIncidenceEditor::loadTemplate( Calendar *cal, const QString &type, 156QString KOIncidenceEditor::loadTemplate( Calendar *cal, const QString &type,
158 const QStringList &templates ) 157 const QStringList &templates )
159{ 158{
160 // bool ok = false; 159 // bool ok = false;
161// QString templateName = KInputDialog::getItem( i18n("Load Template"), 160// QString templateName = KInputDialog::getItem( i18n("Load Template"),
162// i18n("Select a template to load:"), templates, 0, &ok ); 161// i18n("Select a template to load:"), templates, 0, &ok );
163// if ( !ok || templateName.isEmpty() ) return QString::null; 162// if ( !ok || templateName.isEmpty() ) return QString::null;
164 163
165// QString fileName = locateLocal( "data", "korganizer/templates/" + type + "/" + 164// QString fileName = locateLocal( "data", "korganizer/templates/" + type + "/" +
166// templateName ); 165// templateName );
167// fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this ); 166// fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this );
168 167
169 // QString fileName;// =locateLocal( "templates", incidence->type() ); 168 // QString fileName;// =locateLocal( "templates", incidence->type() );
170// fileName=KFileDialog:: getOpenFileName( fileName, "Load "+incidence()->type(), this ); 169// fileName=KFileDialog:: getOpenFileName( fileName, "Load "+incidence()->type(), this );
171// if ( fileNamelength() == 0) 170// if ( fileNamelength() == 0)
172// return QString::null; 171// return QString::null;
173// if ( fileName.isEmpty() ) { 172// if ( fileName.isEmpty() ) {
174// KMessageBox::error( this, i18n("Unable to find template '%1'.") 173// KMessageBox::error( this, i18n("Unable to find template '%1'.")
175// .arg( fileName ) ); 174// .arg( fileName ) );
176// return QString::null; 175// return QString::null;
177// } else { 176// } else {
178// ICalFormat format; 177// ICalFormat format;
179// if ( !format.load( cal, fileName ) ) { 178// if ( !format.load( cal, fileName ) ) {
180// KMessageBox::error( this, i18n("Error loading template file '%1'.") 179// KMessageBox::error( this, i18n("Error loading template file '%1'.")
181// .arg( fileName ) ); 180// .arg( fileName ) );
182// return QString::null; 181// return QString::null;
183// } 182// }
184// } 183// }
185 184
186 return ""; 185 return "";
187} 186}
diff --git a/korganizer/kojournalview.cpp b/korganizer/kojournalview.cpp
index 579f24d..6e6a939 100644
--- a/korganizer/kojournalview.cpp
+++ b/korganizer/kojournalview.cpp
@@ -1,113 +1,112 @@
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// View of Journal entries 25// View of Journal entries
26 26
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qpopupmenu.h> 28#include <qpopupmenu.h>
29 29
30#include <klocale.h> 30#include <klocale.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include "koprefs.h" 32#include "koprefs.h"
33 33
34#include <libkcal/calendar.h> 34#include <libkcal/calendar.h>
35 35
36#include "journalentry.h" 36#include "journalentry.h"
37 37
38#include "kojournalview.h" 38#include "kojournalview.h"
39using namespace KOrg; 39using namespace KOrg;
40#include "kojournalview.moc"
41 40
42KOJournalView::KOJournalView(Calendar *calendar, QWidget *parent, 41KOJournalView::KOJournalView(Calendar *calendar, QWidget *parent,
43 const char *name) 42 const char *name)
44 : KOrg::BaseView(calendar, parent, name) 43 : KOrg::BaseView(calendar, parent, name)
45{ 44{
46 mEntry = new JournalEntry(calendar,this); 45 mEntry = new JournalEntry(calendar,this);
47 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont ); 46 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont );
48 QBoxLayout *topLayout = new QVBoxLayout(this); 47 QBoxLayout *topLayout = new QVBoxLayout(this);
49 topLayout->addWidget(mEntry); 48 topLayout->addWidget(mEntry);
50 connect ( mEntry,SIGNAL(deleteJournal(Journal *) ),this ,SIGNAL(deleteJournal(Journal *) ) ) ; 49 connect ( mEntry,SIGNAL(deleteJournal(Journal *) ),this ,SIGNAL(deleteJournal(Journal *) ) ) ;
51} 50}
52 51
53KOJournalView::~KOJournalView() 52KOJournalView::~KOJournalView()
54{ 53{
55} 54}
56 55
57int KOJournalView::currentDateCount() 56int KOJournalView::currentDateCount()
58{ 57{
59 return 0; 58 return 0;
60} 59}
61 60
62QPtrList<Incidence> KOJournalView::selectedIncidences() 61QPtrList<Incidence> KOJournalView::selectedIncidences()
63{ 62{
64 QPtrList<Incidence> eventList; 63 QPtrList<Incidence> eventList;
65 64
66 return eventList; 65 return eventList;
67} 66}
68void KOJournalView::updateConfig() 67void KOJournalView::updateConfig()
69{ 68{
70 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont ); 69 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont );
71} 70}
72void KOJournalView::updateView() 71void KOJournalView::updateView()
73{ 72{
74 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont ); 73 mEntry->setFont ( KOPrefs::instance()->mJornalViewFont );
75} 74}
76 75
77void KOJournalView::flushView() 76void KOJournalView::flushView()
78{ 77{
79 mEntry->flushEntry(); 78 mEntry->flushEntry();
80} 79}
81 80
82void KOJournalView::showDates(const QDate &start, const QDate &) 81void KOJournalView::showDates(const QDate &start, const QDate &)
83{ 82{
84// kdDebug() << "KOJournalView::selectDates()" << endl; 83// kdDebug() << "KOJournalView::selectDates()" << endl;
85 84
86 mEntry->setDate(start); 85 mEntry->setDate(start);
87 86
88 Journal *j = calendar()->journal(start); 87 Journal *j = calendar()->journal(start);
89 if (j) mEntry->setJournal(j); 88 if (j) mEntry->setJournal(j);
90 else mEntry->clear(); 89 else mEntry->clear();
91 90
92// emit incidenceSelected( 0 ); 91// emit incidenceSelected( 0 );
93} 92}
94 93
95void KOJournalView::showEvents(QPtrList<Event>) 94void KOJournalView::showEvents(QPtrList<Event>)
96{ 95{
97 // After new creation of list view no events are selected. 96 // After new creation of list view no events are selected.
98// emit incidenceSelected( 0 ); 97// emit incidenceSelected( 0 );
99} 98}
100 99
101void KOJournalView::changeEventDisplay(Event *, int /*action*/) 100void KOJournalView::changeEventDisplay(Event *, int /*action*/)
102{ 101{
103 updateView(); 102 updateView();
104} 103}
105 104
106void KOJournalView::keyPressEvent ( QKeyEvent * e ) 105void KOJournalView::keyPressEvent ( QKeyEvent * e )
107{ 106{
108 //qDebug("keyPressEven "); 107 //qDebug("keyPressEven ");
109 if ( e->state() == Qt::ControlButton ) { 108 if ( e->state() == Qt::ControlButton ) {
110 if ( e->key () == Qt::Key_Right || e->key () == Qt::Key_Left ) 109 if ( e->key () == Qt::Key_Right || e->key () == Qt::Key_Left )
111 e->ignore(); 110 e->ignore();
112 } 111 }
113} 112}
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index b6061d0..9a3ba73 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -1,446 +1,445 @@
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 35
36#include <klocale.h> 36#include <klocale.h>
37#include <kdebug.h> 37#include <kdebug.h>
38#include <kiconloader.h> 38#include <kiconloader.h>
39#include <kglobal.h> 39#include <kglobal.h>
40 40
41#include <libkcal/calendar.h> 41#include <libkcal/calendar.h>
42#include <libkcal/calendarlocal.h> 42#include <libkcal/calendarlocal.h>
43#include <libkcal/icalformat.h> 43#include <libkcal/icalformat.h>
44#include <libkcal/vcalformat.h> 44#include <libkcal/vcalformat.h>
45#include <libkcal/recurrence.h> 45#include <libkcal/recurrence.h>
46#include <libkcal/filestorage.h> 46#include <libkcal/filestorage.h>
47#include <libkdepim/categoryselectdialog.h> 47#include <libkdepim/categoryselectdialog.h>
48#ifndef DESKTOP_VERSION 48#ifndef DESKTOP_VERSION
49#include <qpe/qpeapplication.h> 49#include <qpe/qpeapplication.h>
50#else 50#else
51#include <qapplication.h> 51#include <qapplication.h>
52#endif 52#endif
53 53
54#ifndef KORG_NOPRINTER 54#ifndef KORG_NOPRINTER
55#include "calprinter.h" 55#include "calprinter.h"
56#endif 56#endif
57#include "koglobals.h" 57#include "koglobals.h"
58#include "koprefs.h" 58#include "koprefs.h"
59#include "kfiledialog.h" 59#include "kfiledialog.h"
60 60
61#include "kolistview.h" 61#include "kolistview.h"
62#include "kolistview.moc"
63 62
64ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 63ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
65{ 64{
66 mItem = item; 65 mItem = item;
67 mDate = date; 66 mDate = date;
68} 67}
69 68
70ListItemVisitor::~ListItemVisitor() 69ListItemVisitor::~ListItemVisitor()
71{ 70{
72} 71}
73 72
74bool ListItemVisitor::visit(Event *e) 73bool ListItemVisitor::visit(Event *e)
75{ 74{
76 75
77 bool ok = false; 76 bool ok = false;
78 QString start, end; 77 QString start, end;
79 if ( e->doesRecur() ) { 78 if ( e->doesRecur() ) {
80 QDate d = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); 79 QDate d = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date();
81 if ( ok ) { 80 if ( ok ) {
82 int days = e->dtStart().date().daysTo(e->dtEnd().date() ); 81 int days = e->dtStart().date().daysTo(e->dtEnd().date() );
83 start = KGlobal::locale()->formatDate(d,true); 82 start = KGlobal::locale()->formatDate(d,true);
84 end = KGlobal::locale()->formatDate(d.addDays( days),true); 83 end = KGlobal::locale()->formatDate(d.addDays( days),true);
85 } 84 }
86 85
87 } 86 }
88 if ( ! ok ) { 87 if ( ! ok ) {
89 start =e->dtStartDateStr(); 88 start =e->dtStartDateStr();
90 end = e->dtEndDateStr(); 89 end = e->dtEndDateStr();
91 } 90 }
92 mItem->setText(0,e->summary()); 91 mItem->setText(0,e->summary());
93 mItem->setText(1,start); 92 mItem->setText(1,start);
94 mItem->setText(2,e->dtStartTimeStr()); 93 mItem->setText(2,e->dtStartTimeStr());
95 mItem->setText(3,end); 94 mItem->setText(3,end);
96 mItem->setText(4,e->dtEndTimeStr()); 95 mItem->setText(4,e->dtEndTimeStr());
97 mItem->setText(5,e->isAlarmEnabled() ? i18n("Yes") : i18n("No")); 96 mItem->setText(5,e->isAlarmEnabled() ? i18n("Yes") : i18n("No"));
98 mItem->setText(6, e->recurrence()->recurrenceText()); 97 mItem->setText(6, e->recurrence()->recurrenceText());
99 mItem->setText(7,"---"); 98 mItem->setText(7,"---");
100 mItem->setText(8,"---"); 99 mItem->setText(8,"---");
101 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); 100 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No"));
102 mItem->setText(10,e->categoriesStr()); 101 mItem->setText(10,e->categoriesStr());
103 102
104 QString key; 103 QString key;
105 QDate d = e->dtStart().date(); 104 QDate d = e->dtStart().date();
106 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); 105 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time();
107 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute()); 106 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute());
108 mItem->setSortKey(1,key); 107 mItem->setSortKey(1,key);
109 108
110 d = e->dtEnd().date(); 109 d = e->dtEnd().date();
111 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); 110 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time();
112 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute()); 111 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute());
113 mItem->setSortKey(3,key); 112 mItem->setSortKey(3,key);
114 113
115 return true; 114 return true;
116} 115}
117 116
118bool ListItemVisitor::visit(Todo *t) 117bool ListItemVisitor::visit(Todo *t)
119{ 118{
120 mItem->setText(0,i18n("To-Do: %1").arg(t->summary())); 119 mItem->setText(0,i18n("To-Do: %1").arg(t->summary()));
121 if (t->hasStartDate()) { 120 if (t->hasStartDate()) {
122 mItem->setText(1,t->dtStartDateStr()); 121 mItem->setText(1,t->dtStartDateStr());
123 if (t->doesFloat()) { 122 if (t->doesFloat()) {
124 mItem->setText(2,"---"); 123 mItem->setText(2,"---");
125 } else { 124 } else {
126 mItem->setText(2,t->dtStartTimeStr()); 125 mItem->setText(2,t->dtStartTimeStr());
127 } 126 }
128 } else { 127 } else {
129 mItem->setText(1,"---"); 128 mItem->setText(1,"---");
130 mItem->setText(2,"---"); 129 mItem->setText(2,"---");
131 } 130 }
132 mItem->setText(3,"---"); 131 mItem->setText(3,"---");
133 mItem->setText(4,"---"); 132 mItem->setText(4,"---");
134 mItem->setText(5,"---"); 133 mItem->setText(5,"---");
135 mItem->setText(6,"---"); 134 mItem->setText(6,"---");
136 if (t->hasDueDate()) { 135 if (t->hasDueDate()) {
137 mItem->setText(7,t->dtDueDateStr()); 136 mItem->setText(7,t->dtDueDateStr());
138 if (t->doesFloat()) { 137 if (t->doesFloat()) {
139 mItem->setText(8,"---"); 138 mItem->setText(8,"---");
140 } else { 139 } else {
141 mItem->setText(8,t->dtDueTimeStr()); 140 mItem->setText(8,t->dtDueTimeStr());
142 } 141 }
143 } else { 142 } else {
144 mItem->setText(7,"---"); 143 mItem->setText(7,"---");
145 mItem->setText(8,"---"); 144 mItem->setText(8,"---");
146 } 145 }
147 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); 146 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No"));
148 mItem->setText(10,t->categoriesStr()); 147 mItem->setText(10,t->categoriesStr());
149 148
150 QString key; 149 QString key;
151 QDate d; 150 QDate d;
152 if (t->hasDueDate()) { 151 if (t->hasDueDate()) {
153 d = t->dtDue().date(); 152 d = t->dtDue().date();
154 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); 153 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time();
155 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 154 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
156 mItem->setSortKey(7,key); 155 mItem->setSortKey(7,key);
157 } 156 }
158 if ( t->hasStartDate() ) { 157 if ( t->hasStartDate() ) {
159 d = t->dtStart().date(); 158 d = t->dtStart().date();
160 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); 159 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time();
161 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 160 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
162 mItem->setSortKey(1,key); 161 mItem->setSortKey(1,key);
163 } 162 }
164 return true; 163 return true;
165} 164}
166 165
167bool ListItemVisitor::visit(Journal * j) 166bool ListItemVisitor::visit(Journal * j)
168{ 167{
169 mItem->setText(0,i18n("Journal")); 168 mItem->setText(0,i18n("Journal"));
170 mItem->setText(1,j->dtStartDateStr()); 169 mItem->setText(1,j->dtStartDateStr());
171 mItem->setText(2,"---"); 170 mItem->setText(2,"---");
172 mItem->setText(3,"---"); 171 mItem->setText(3,"---");
173 mItem->setText(4,"---"); 172 mItem->setText(4,"---");
174 mItem->setText(5,"---"); 173 mItem->setText(5,"---");
175 mItem->setText(6,"---"); 174 mItem->setText(6,"---");
176 mItem->setText(7,j->dtStartDateStr()); 175 mItem->setText(7,j->dtStartDateStr());
177 mItem->setText(8,"---"); 176 mItem->setText(8,"---");
178 mItem->setText(9,"---"); 177 mItem->setText(9,"---");
179 178
180 QString key; 179 QString key;
181 QDate d = j->dtStart().date(); 180 QDate d = j->dtStart().date();
182 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 181 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
183 mItem->setSortKey(1,key); 182 mItem->setSortKey(1,key);
184 mItem->setSortKey(7,key); 183 mItem->setSortKey(7,key);
185 184
186 return true; 185 return true;
187} 186}
188 187
189KOListView::KOListView(Calendar *calendar, QWidget *parent, 188KOListView::KOListView(Calendar *calendar, QWidget *parent,
190 const char *name) 189 const char *name)
191 : KOEventView(calendar, parent, name) 190 : KOEventView(calendar, parent, name)
192{ 191{
193 mActiveItem = 0; 192 mActiveItem = 0;
194 mListView = new KOListViewListView(this); 193 mListView = new KOListViewListView(this);
195 mListView->addColumn(i18n("Summary")); 194 mListView->addColumn(i18n("Summary"));
196 mListView->addColumn(i18n("Start Date")); 195 mListView->addColumn(i18n("Start Date"));
197 mListView->addColumn(i18n("Start Time")); 196 mListView->addColumn(i18n("Start Time"));
198 mListView->addColumn(i18n("End Date")); 197 mListView->addColumn(i18n("End Date"));
199 mListView->addColumn(i18n("End Time")); 198 mListView->addColumn(i18n("End Time"));
200 mListView->addColumn(i18n("Alarm")); // alarm set? 199 mListView->addColumn(i18n("Alarm")); // alarm set?
201 mListView->addColumn(i18n("Recurs")); // recurs? 200 mListView->addColumn(i18n("Recurs")); // recurs?
202 mListView->addColumn(i18n("Due Date")); 201 mListView->addColumn(i18n("Due Date"));
203 mListView->addColumn(i18n("Due Time")); 202 mListView->addColumn(i18n("Due Time"));
204 mListView->addColumn(i18n("Cancelled")); 203 mListView->addColumn(i18n("Cancelled"));
205 mListView->addColumn(i18n("Categories")); 204 mListView->addColumn(i18n("Categories"));
206 205
207 mListView->setColumnAlignment(0,AlignLeft); 206 mListView->setColumnAlignment(0,AlignLeft);
208 mListView->setColumnAlignment(1,AlignLeft); 207 mListView->setColumnAlignment(1,AlignLeft);
209 mListView->setColumnAlignment(2,AlignHCenter); 208 mListView->setColumnAlignment(2,AlignHCenter);
210 mListView->setColumnAlignment(3,AlignLeft); 209 mListView->setColumnAlignment(3,AlignLeft);
211 mListView->setColumnAlignment(4,AlignHCenter); 210 mListView->setColumnAlignment(4,AlignHCenter);
212 mListView->setColumnAlignment(5,AlignLeft); 211 mListView->setColumnAlignment(5,AlignLeft);
213 mListView->setColumnAlignment(6,AlignLeft); 212 mListView->setColumnAlignment(6,AlignLeft);
214 mListView->setColumnAlignment(7,AlignLeft); 213 mListView->setColumnAlignment(7,AlignLeft);
215 mListView->setColumnAlignment(8,AlignLeft); 214 mListView->setColumnAlignment(8,AlignLeft);
216 mListView->setColumnAlignment(9,AlignLeft); 215 mListView->setColumnAlignment(9,AlignLeft);
217 mListView->setColumnAlignment(10,AlignLeft); 216 mListView->setColumnAlignment(10,AlignLeft);
218 217
219 int iii = 0; 218 int iii = 0;
220 for ( iii = 0; iii< 10 ; ++iii ) 219 for ( iii = 0; iii< 10 ; ++iii )
221 mListView->setColumnWidthMode( iii, QListView::Manual ); 220 mListView->setColumnWidthMode( iii, QListView::Manual );
222 221
223 QBoxLayout *layoutTop = new QVBoxLayout(this); 222 QBoxLayout *layoutTop = new QVBoxLayout(this);
224 layoutTop->addWidget(mListView); 223 layoutTop->addWidget(mListView);
225 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 224 mListView->setFont ( KOPrefs::instance()->mListViewFont );
226 mPopupMenu = eventPopup(); 225 mPopupMenu = eventPopup();
227 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 226 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
228 i18n("Select all"),this, 227 i18n("Select all"),this,
229 SLOT(allSelection()),true); 228 SLOT(allSelection()),true);
230 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 229 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
231 i18n("Deselect All"),this, 230 i18n("Deselect All"),this,
232 SLOT(clearSelection()),true); 231 SLOT(clearSelection()),true);
233 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 232 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
234 i18n("Delete all selected"),this, 233 i18n("Delete all selected"),this,
235 SLOT(deleteAll()),true); 234 SLOT(deleteAll()),true);
236 mPopupMenu->insertSeparator(); 235 mPopupMenu->insertSeparator();
237 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 236 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
238 i18n("Save selected to file..."),this, 237 i18n("Save selected to file..."),this,
239 SLOT(saveToFile()),true); 238 SLOT(saveToFile()),true);
240 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 239 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
241 i18n("Save Journal/Description..."),this, 240 i18n("Save Journal/Description..."),this,
242 SLOT(saveDescriptionToFile()),true); 241 SLOT(saveDescriptionToFile()),true);
243 mPopupMenu->insertSeparator(); 242 mPopupMenu->insertSeparator();
244 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 243 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
245 i18n("Add Categ. to selected..."),this, 244 i18n("Add Categ. to selected..."),this,
246 SLOT(addCat()),true); 245 SLOT(addCat()),true);
247 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 246 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
248 i18n("Set Categ. for selected..."),this, 247 i18n("Set Categ. for selected..."),this,
249 SLOT(setCat()),true); 248 SLOT(setCat()),true);
250 mPopupMenu->insertSeparator(); 249 mPopupMenu->insertSeparator();
251 250
252 251
253#ifndef DESKTOP_VERSION 252#ifndef DESKTOP_VERSION
254 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 253 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
255 i18n("Beam selected via IR"),this, 254 i18n("Beam selected via IR"),this,
256 SLOT(beamSelected()),true); 255 SLOT(beamSelected()),true);
257#endif 256#endif
258 /* 257 /*
259 mPopupMenu = new QPopupMenu; 258 mPopupMenu = new QPopupMenu;
260 mPopupMenu->insertItem(i18n("Edit Event"), this, 259 mPopupMenu->insertItem(i18n("Edit Event"), this,
261 SLOT (editEvent())); 260 SLOT (editEvent()));
262 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 261 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
263 SLOT (deleteEvent())); 262 SLOT (deleteEvent()));
264 mPopupMenu->insertSeparator(); 263 mPopupMenu->insertSeparator();
265 mPopupMenu->insertItem(i18n("Show Dates"), this, 264 mPopupMenu->insertItem(i18n("Show Dates"), this,
266 SLOT(showDates())); 265 SLOT(showDates()));
267 mPopupMenu->insertItem(i18n("Hide Dates"), this, 266 mPopupMenu->insertItem(i18n("Hide Dates"), this,
268 SLOT(hideDates())); 267 SLOT(hideDates()));
269 */ 268 */
270 QObject::connect(mListView,SIGNAL( newEvent()), 269 QObject::connect(mListView,SIGNAL( newEvent()),
271 this,SIGNAL(signalNewEvent())); 270 this,SIGNAL(signalNewEvent()));
272 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 271 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
273 this,SLOT(defaultItemAction(QListViewItem *))); 272 this,SLOT(defaultItemAction(QListViewItem *)));
274 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *, 273 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *,
275 const QPoint &, int )), 274 const QPoint &, int )),
276 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 275 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
277 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 276 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
278 SLOT(processSelectionChange(QListViewItem *))); 277 SLOT(processSelectionChange(QListViewItem *)));
279 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 278 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
280 SIGNAL(showIncidenceSignal(Incidence *)) ); 279 SIGNAL(showIncidenceSignal(Incidence *)) );
281 280
282 readSettings(KOGlobals::config(),"KOListView Layout"); 281 readSettings(KOGlobals::config(),"KOListView Layout");
283} 282}
284 283
285KOListView::~KOListView() 284KOListView::~KOListView()
286{ 285{
287 delete mPopupMenu; 286 delete mPopupMenu;
288} 287}
289 288
290void KOListView::updateList() 289void KOListView::updateList()
291{ 290{
292 // qDebug(" KOListView::updateList() "); 291 // qDebug(" KOListView::updateList() ");
293 292
294} 293}
295 294
296void KOListView::addCat( ) 295void KOListView::addCat( )
297{ 296{
298 setCategories( false ); 297 setCategories( false );
299} 298}
300void KOListView::setCat() 299void KOListView::setCat()
301{ 300{
302 setCategories( true ); 301 setCategories( true );
303} 302}
304void KOListView::setCategories( bool removeOld ) 303void KOListView::setCategories( bool removeOld )
305{ 304{
306 305
307 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 306 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
308 if (! csd->exec()) { 307 if (! csd->exec()) {
309 delete csd; 308 delete csd;
310 return; 309 return;
311 } 310 }
312 QStringList catList = csd->selectedCategories(); 311 QStringList catList = csd->selectedCategories();
313 delete csd; 312 delete csd;
314 // if ( catList.count() == 0 ) 313 // if ( catList.count() == 0 )
315 // return; 314 // return;
316 catList.sort(); 315 catList.sort();
317 QString categoriesStr = catList.join(","); 316 QString categoriesStr = catList.join(",");
318 int i; 317 int i;
319 QStringList itemList; 318 QStringList itemList;
320 QPtrList<KOListViewItem> sel ; 319 QPtrList<KOListViewItem> sel ;
321 QListViewItem *qitem = mListView->firstChild (); 320 QListViewItem *qitem = mListView->firstChild ();
322 while ( qitem ) { 321 while ( qitem ) {
323 if ( qitem->isSelected() ) { 322 if ( qitem->isSelected() ) {
324 sel.append(((KOListViewItem *)qitem)); 323 sel.append(((KOListViewItem *)qitem));
325 } 324 }
326 qitem = qitem->nextSibling(); 325 qitem = qitem->nextSibling();
327 } 326 }
328 KOListViewItem * item, *temp; 327 KOListViewItem * item, *temp;
329 item = sel.first(); 328 item = sel.first();
330 Incidence* inc; 329 Incidence* inc;
331 while ( item ) { 330 while ( item ) {
332 inc = item->data(); 331 inc = item->data();
333 if ( removeOld ) { 332 if ( removeOld ) {
334 inc->setCategories( categoriesStr ); 333 inc->setCategories( categoriesStr );
335 } else { 334 } else {
336 itemList = QStringList::split (",", inc->categoriesStr() ); 335 itemList = QStringList::split (",", inc->categoriesStr() );
337 for( i = 0; i< catList.count(); ++i ) { 336 for( i = 0; i< catList.count(); ++i ) {
338 if ( !itemList.contains (catList[i])) 337 if ( !itemList.contains (catList[i]))
339 itemList.append( catList[i] ); 338 itemList.append( catList[i] );
340 } 339 }
341 itemList.sort(); 340 itemList.sort();
342 inc->setCategories( itemList.join(",") ); 341 inc->setCategories( itemList.join(",") );
343 } 342 }
344 temp = item; 343 temp = item;
345 item = sel.next(); 344 item = sel.next();
346 mUidDict.remove( inc->uid() ); 345 mUidDict.remove( inc->uid() );
347 delete temp;; 346 delete temp;;
348 addIncidence( inc ); 347 addIncidence( inc );
349 } 348 }
350} 349}
351 350
352void KOListView::beamSelected() 351void KOListView::beamSelected()
353{ 352{
354 int icount = 0; 353 int icount = 0;
355 QPtrList<Incidence> delSel ; 354 QPtrList<Incidence> delSel ;
356 QListViewItem *item = mListView->firstChild (); 355 QListViewItem *item = mListView->firstChild ();
357 while ( item ) { 356 while ( item ) {
358 if ( item->isSelected() ) { 357 if ( item->isSelected() ) {
359 delSel.append(((KOListViewItem *)item)->data()); 358 delSel.append(((KOListViewItem *)item)->data());
360 ++icount; 359 ++icount;
361 } 360 }
362 361
363 item = item->nextSibling(); 362 item = item->nextSibling();
364 } 363 }
365 if ( icount ) { 364 if ( icount ) {
366 emit beamIncidenceList( delSel ); 365 emit beamIncidenceList( delSel );
367 return; 366 return;
368 QString fn ; 367 QString fn ;
369 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; 368 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs";
370 QString mes; 369 QString mes;
371 bool createbup = true; 370 bool createbup = true;
372 if ( createbup ) { 371 if ( createbup ) {
373 QString description = "\n"; 372 QString description = "\n";
374 CalendarLocal* cal = new CalendarLocal(); 373 CalendarLocal* cal = new CalendarLocal();
375 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 374 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
376 Incidence *incidence = delSel.first(); 375 Incidence *incidence = delSel.first();
377 while ( incidence ) { 376 while ( incidence ) {
378 Incidence *in = incidence->clone(); 377 Incidence *in = incidence->clone();
379 description += in->summary() + "\n"; 378 description += in->summary() + "\n";
380 cal->addIncidence( in ); 379 cal->addIncidence( in );
381 incidence = delSel.next(); 380 incidence = delSel.next();
382 } 381 }
383 FileStorage storage( cal, fn, new VCalFormat ); 382 FileStorage storage( cal, fn, new VCalFormat );
384 storage.save(); 383 storage.save();
385 delete cal; 384 delete cal;
386 mes = i18n("KO/Pi: Ready for beaming"); 385 mes = i18n("KO/Pi: Ready for beaming");
387 topLevelWidget()->setCaption(mes); 386 topLevelWidget()->setCaption(mes);
388 387
389#ifndef DESKTOP_VERSION 388#ifndef DESKTOP_VERSION
390 Ir *ir = new Ir( this ); 389 Ir *ir = new Ir( this );
391 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 390 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
392 ir->send( fn, description, "text/x-vCalendar" ); 391 ir->send( fn, description, "text/x-vCalendar" );
393#endif 392#endif
394 } 393 }
395 } 394 }
396} 395}
397void KOListView::beamDone( Ir *ir ) 396void KOListView::beamDone( Ir *ir )
398{ 397{
399#ifndef DESKTOP_VERSION 398#ifndef DESKTOP_VERSION
400 delete ir; 399 delete ir;
401#endif 400#endif
402 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); 401 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done"));
403} 402}
404 403
405void KOListView::saveDescriptionToFile() 404void KOListView::saveDescriptionToFile()
406{ 405{
407 406
408 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 407 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
409 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), 408 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."),
410 i18n("Continue"), i18n("Cancel"), 0, 409 i18n("Continue"), i18n("Cancel"), 0,
411 0, 1 ); 410 0, 1 );
412 if ( result != 0 ) { 411 if ( result != 0 ) {
413 return; 412 return;
414 } 413 }
415 int icount = 0; 414 int icount = 0;
416 QPtrList<Incidence> delSel ; 415 QPtrList<Incidence> delSel ;
417 QListViewItem *item = mListView->firstChild (); 416 QListViewItem *item = mListView->firstChild ();
418 while ( item ) { 417 while ( item ) {
419 if ( item->isSelected() ) { 418 if ( item->isSelected() ) {
420 delSel.append(((KOListViewItem *)item)->data()); 419 delSel.append(((KOListViewItem *)item)->data());
421 ++icount; 420 ++icount;
422 } 421 }
423 422
424 item = item->nextSibling(); 423 item = item->nextSibling();
425 } 424 }
426 if ( icount ) { 425 if ( icount ) {
427 QString fn = KOPrefs::instance()->mLastSaveFile; 426 QString fn = KOPrefs::instance()->mLastSaveFile;
428 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 427 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
429 428
430 if ( fn == "" ) 429 if ( fn == "" )
431 return; 430 return;
432 QFileInfo info; 431 QFileInfo info;
433 info.setFile( fn ); 432 info.setFile( fn );
434 QString mes; 433 QString mes;
435 bool createbup = true; 434 bool createbup = true;
436 if ( info. exists() ) { 435 if ( info. exists() ) {
437 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 436 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
438 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 437 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
439 i18n("Overwrite!"), i18n("Cancel"), 0, 438 i18n("Overwrite!"), i18n("Cancel"), 0,
440 0, 1 ); 439 0, 1 );
441 if ( result != 0 ) { 440 if ( result != 0 ) {
442 createbup = false; 441 createbup = false;
443 } 442 }
444 } 443 }
445 if ( createbup ) { 444 if ( createbup ) {
446 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + 445 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") +
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index c4bc51b..df60564 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,439 +1,438 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 19
20#include <qpopupmenu.h> 20#include <qpopupmenu.h>
21#include <qfont.h> 21#include <qfont.h>
22#include <qfontmetrics.h> 22#include <qfontmetrics.h>
23#include <qkeycode.h> 23#include <qkeycode.h>
24#include <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qtooltip.h> 27#include <qtooltip.h>
28#include <qpainter.h> 28#include <qpainter.h>
29#include <qwhatsthis.h> 29#include <qwhatsthis.h>
30#ifndef DESKTOP_VERSION 30#ifndef DESKTOP_VERSION
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#else 32#else
33#include <qapplication.h> 33#include <qapplication.h>
34#endif 34#endif
35 35
36#include <kdebug.h> 36#include <kdebug.h>
37#include <klocale.h> 37#include <klocale.h>
38#include <kglobal.h> 38#include <kglobal.h>
39#include <kconfig.h> 39#include <kconfig.h>
40#include <kiconloader.h> 40#include <kiconloader.h>
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#ifndef KORG_NOPRINTER 44#ifndef KORG_NOPRINTER
45#include "calprinter.h" 45#include "calprinter.h"
46#endif 46#endif
47#include "koprefs.h" 47#include "koprefs.h"
48#ifndef KORG_NOPLUGINS 48#ifndef KORG_NOPLUGINS
49#include "kocore.h" 49#include "kocore.h"
50#endif 50#endif
51#include "koglobals.h" 51#include "koglobals.h"
52#include <libkdepim/kincidenceformatter.h> 52#include <libkdepim/kincidenceformatter.h>
53 53
54#include "komonthview.h" 54#include "komonthview.h"
55#include "komonthview.moc"
56 55
57#define PIXMAP_SIZE 5 56#define PIXMAP_SIZE 5
58 57
59class KNOWhatsThis :public QWhatsThis 58class KNOWhatsThis :public QWhatsThis
60{ 59{
61public: 60public:
62 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; 61 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
63 62
64protected: 63protected:
65 virtual QString text( const QPoint& p) 64 virtual QString text( const QPoint& p)
66 { 65 {
67 return _wid->getWhatsThisText(p) ; 66 return _wid->getWhatsThisText(p) ;
68 }; 67 };
69private: 68private:
70 KNoScrollListBox* _wid; 69 KNoScrollListBox* _wid;
71 70
72}; 71};
73 72
74 73
75KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 74KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
76 : QListBox(parent, name) 75 : QListBox(parent, name)
77{ 76{
78#ifndef DESKTOP_VERSION 77#ifndef DESKTOP_VERSION
79 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 78 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
80#endif 79#endif
81 new KNOWhatsThis(this); 80 new KNOWhatsThis(this);
82} 81}
83 82
84QString KNoScrollListBox::getWhatsThisText(QPoint p) 83QString KNoScrollListBox::getWhatsThisText(QPoint p)
85{ 84{
86 QListBoxItem* item = itemAt ( p ); 85 QListBoxItem* item = itemAt ( p );
87 if ( ! item ) { 86 if ( ! item ) {
88 return i18n("Click in the cell or\non the date label\nto add an event!"); 87 return i18n("Click in the cell or\non the date label\nto add an event!");
89 } 88 }
90 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 89 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
91} 90}
92void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 91void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
93{ 92{
94 93
95 switch(e->key()) { 94 switch(e->key()) {
96 case Key_Right: 95 case Key_Right:
97 // if ( e->state() == Qt::ControlButton ) 96 // if ( e->state() == Qt::ControlButton )
98 { 97 {
99 e->ignore(); 98 e->ignore();
100 return; 99 return;
101 } 100 }
102 scrollBy(4,0); 101 scrollBy(4,0);
103 break; 102 break;
104 case Key_Left: 103 case Key_Left:
105 // if ( e->state() == Qt::ControlButton ) 104 // if ( e->state() == Qt::ControlButton )
106 { 105 {
107 e->ignore(); 106 e->ignore();
108 return; 107 return;
109 } 108 }
110 scrollBy(-4,0); 109 scrollBy(-4,0);
111 break; 110 break;
112 case Key_Up: 111 case Key_Up:
113 if(!count()) break; 112 if(!count()) break;
114 setCurrentItem((currentItem()+count()-1)%count()); 113 setCurrentItem((currentItem()+count()-1)%count());
115 if(!itemVisible(currentItem())) { 114 if(!itemVisible(currentItem())) {
116 if((unsigned int) currentItem() == (count()-1)) { 115 if((unsigned int) currentItem() == (count()-1)) {
117 setTopItem(currentItem()-numItemsVisible()+1); 116 setTopItem(currentItem()-numItemsVisible()+1);
118 } else { 117 } else {
119 setTopItem(topItem()-1); 118 setTopItem(topItem()-1);
120 } 119 }
121 } 120 }
122 break; 121 break;
123 case Key_Down: 122 case Key_Down:
124 if(!count()) break; 123 if(!count()) break;
125 setCurrentItem((currentItem()+1)%count()); 124 setCurrentItem((currentItem()+1)%count());
126 if(!itemVisible(currentItem())) { 125 if(!itemVisible(currentItem())) {
127 if(currentItem() == 0) { 126 if(currentItem() == 0) {
128 setTopItem(0); 127 setTopItem(0);
129 } else { 128 } else {
130 setTopItem(topItem()+1); 129 setTopItem(topItem()+1);
131 } 130 }
132 } 131 }
133 break; 132 break;
134 case Key_Shift: 133 case Key_Shift:
135 emit shiftDown(); 134 emit shiftDown();
136 break; 135 break;
137 default: 136 default:
138 e->ignore(); 137 e->ignore();
139 break; 138 break;
140 } 139 }
141} 140}
142 141
143void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 142void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
144{ 143{
145 switch(e->key()) { 144 switch(e->key()) {
146 case Key_Shift: 145 case Key_Shift:
147 emit shiftUp(); 146 emit shiftUp();
148 break; 147 break;
149 default: 148 default:
150 break; 149 break;
151 } 150 }
152} 151}
153 152
154void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 153void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
155{ 154{
156 QListBox::mousePressEvent(e); 155 QListBox::mousePressEvent(e);
157 156
158 if(e->button() == RightButton) { 157 if(e->button() == RightButton) {
159 emit rightClick(); 158 emit rightClick();
160 } 159 }
161} 160}
162 161
163MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 162MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
164 : QListBoxItem() 163 : QListBoxItem()
165{ 164{
166 setText( s ); 165 setText( s );
167 166
168 mIncidence = incidence; 167 mIncidence = incidence;
169 mDate = qd; 168 mDate = qd;
170 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); 169 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
171 mRecur = false; 170 mRecur = false;
172 mAlarm = false; 171 mAlarm = false;
173 mReply = false; 172 mReply = false;
174 mInfo = false; 173 mInfo = false;
175} 174}
176 175
177void MonthViewItem::paint(QPainter *p) 176void MonthViewItem::paint(QPainter *p)
178{ 177{
179#if QT_VERSION >= 0x030000 178#if QT_VERSION >= 0x030000
180 bool sel = isSelected(); 179 bool sel = isSelected();
181#else 180#else
182 bool sel = selected(); 181 bool sel = selected();
183#endif 182#endif
184 183
185 184
186 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) 185 if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
187 { 186 {
188 p->setBackgroundColor( palette().color( QPalette::Normal, \ 187 p->setBackgroundColor( palette().color( QPalette::Normal, \
189 sel ? QColorGroup::Highlight : QColorGroup::Background ) ); 188 sel ? QColorGroup::Highlight : QColorGroup::Background ) );
190 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); 189 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
191 } 190 }
192 int x = 1; 191 int x = 1;
193 int y = 3;//(height() - mRecurPixmap.height()) /2; 192 int y = 3;//(height() - mRecurPixmap.height()) /2;
194 int size = PIXMAP_SIZE; 193 int size = PIXMAP_SIZE;
195 if ( QApplication::desktop()->width() < 300 ) 194 if ( QApplication::desktop()->width() < 300 )
196 size = 3; 195 size = 3;
197 if ( KOPrefs::instance()->mMonthShowIcons ) { 196 if ( KOPrefs::instance()->mMonthShowIcons ) {
198 if ( mInfo ) { 197 if ( mInfo ) {
199 p->fillRect ( x, y,size,size, Qt::darkGreen ); 198 p->fillRect ( x, y,size,size, Qt::darkGreen );
200 x += size + 1; 199 x += size + 1;
201 } 200 }
202 if ( mRecur ) { 201 if ( mRecur ) {
203 p->fillRect ( x, y,size,size, Qt::blue ); 202 p->fillRect ( x, y,size,size, Qt::blue );
204 x += size + 1; 203 x += size + 1;
205 } 204 }
206 if ( mAlarm ) { 205 if ( mAlarm ) {
207 p->fillRect ( x, y,size,size, Qt::red ); 206 p->fillRect ( x, y,size,size, Qt::red );
208 x += size + 1; 207 x += size + 1;
209 } 208 }
210 if ( mReply ) { 209 if ( mReply ) {
211 p->fillRect ( x, y,size,size, Qt::yellow ); 210 p->fillRect ( x, y,size,size, Qt::yellow );
212 x += size + 1; 211 x += size + 1;
213 } 212 }
214 } 213 }
215 QFontMetrics fm = p->fontMetrics(); 214 QFontMetrics fm = p->fontMetrics();
216 int yPos; 215 int yPos;
217 int pmheight = size; 216 int pmheight = size;
218 if( pmheight < fm.height() ) 217 if( pmheight < fm.height() )
219 yPos = fm.ascent() + fm.leading()/2; 218 yPos = fm.ascent() + fm.leading()/2;
220 else 219 else
221 yPos = pmheight/2 - fm.height()/2 + fm.ascent(); 220 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
222 p->setPen( palette().color( QPalette::Normal, sel ? \ 221 p->setPen( palette().color( QPalette::Normal, sel ? \
223 QColorGroup::HighlightedText : QColorGroup::Foreground ) ); 222 QColorGroup::HighlightedText : QColorGroup::Foreground ) );
224 p->drawText( x, yPos, text() ); 223 p->drawText( x, yPos, text() );
225 if ( mIncidence->cancelled() ) { 224 if ( mIncidence->cancelled() ) {
226 int wid = fm.width( text() ); 225 int wid = fm.width( text() );
227 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2); 226 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2);
228 } 227 }
229 228
230} 229}
231 230
232int MonthViewItem::height(const QListBox *lb) const 231int MonthViewItem::height(const QListBox *lb) const
233{ 232{
234 return lb->fontMetrics().lineSpacing()+1; 233 return lb->fontMetrics().lineSpacing()+1;
235} 234}
236 235
237int MonthViewItem::width(const QListBox *lb) const 236int MonthViewItem::width(const QListBox *lb) const
238{ 237{
239 int size = PIXMAP_SIZE; 238 int size = PIXMAP_SIZE;
240 if ( QApplication::desktop()->width() < 300 ) 239 if ( QApplication::desktop()->width() < 300 )
241 size = 3; 240 size = 3;
242 int x = 1; 241 int x = 1;
243 if ( mInfo ) { 242 if ( mInfo ) {
244 x += size + 1; 243 x += size + 1;
245 } 244 }
246 if( mRecur ) { 245 if( mRecur ) {
247 x += size+1; 246 x += size+1;
248 } 247 }
249 if( mAlarm ) { 248 if( mAlarm ) {
250 x += size+1; 249 x += size+1;
251 } 250 }
252 if( mReply ) { 251 if( mReply ) {
253 x += size+1; 252 x += size+1;
254 } 253 }
255 254
256 return( x + lb->fontMetrics().width( text() ) + 1 ); 255 return( x + lb->fontMetrics().width( text() ) + 1 );
257} 256}
258 257
259 258
260MonthViewCell::MonthViewCell( KOMonthView *parent) 259MonthViewCell::MonthViewCell( KOMonthView *parent)
261 : QWidget( parent ), 260 : QWidget( parent ),
262 mMonthView( parent ) 261 mMonthView( parent )
263{ 262{
264 263
265 QVBoxLayout *topLayout = new QVBoxLayout( this ); 264 QVBoxLayout *topLayout = new QVBoxLayout( this );
266 265
267 // mLabel = new QLabel( this );QPushButton 266 // mLabel = new QLabel( this );QPushButton
268 mLabel = new QPushButton( this ); 267 mLabel = new QPushButton( this );
269 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 268 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
270 //mLabel->setLineWidth( 1 ); 269 //mLabel->setLineWidth( 1 );
271 //mLabel->setAlignment( AlignCenter ); 270 //mLabel->setAlignment( AlignCenter );
272 mLabel->setFlat( true ); 271 mLabel->setFlat( true );
273 mItemList = new KNoScrollListBox( this ); 272 mItemList = new KNoScrollListBox( this );
274 mItemList->setMinimumSize( 10, 10 ); 273 mItemList->setMinimumSize( 10, 10 );
275 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 274 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
276 mItemList->setLineWidth( 1 ); 275 mItemList->setLineWidth( 1 );
277 topLayout->addWidget( mItemList ); 276 topLayout->addWidget( mItemList );
278 mLabel->raise(); 277 mLabel->raise();
279 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 278 // QColor( 0,0,255 ) QColor( 160,1600,255 )
280 mStandardPalette = palette(); 279 mStandardPalette = palette();
281 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 280 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
282 281
283 enableScrollBars( false ); 282 enableScrollBars( false );
284 updateConfig(); 283 updateConfig();
285 connect( mLabel, SIGNAL( clicked( )), 284 connect( mLabel, SIGNAL( clicked( )),
286 SLOT( newEvent() )); 285 SLOT( newEvent() ));
287 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 286 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
288 SLOT( defaultAction( QListBoxItem * ) ) ); 287 SLOT( defaultAction( QListBoxItem * ) ) );
289 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 288 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
290 const QPoint &) ), 289 const QPoint &) ),
291 SLOT( contextMenu( QListBoxItem * ) ) ); 290 SLOT( contextMenu( QListBoxItem * ) ) );
292 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 291 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
293 SLOT( selection( QListBoxItem * ) ) ); 292 SLOT( selection( QListBoxItem * ) ) );
294 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 293 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
295 SLOT( cellClicked( QListBoxItem * ) ) ); 294 SLOT( cellClicked( QListBoxItem * ) ) );
296 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 295 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
297 SLOT( selection( QListBoxItem * ) ) ); 296 SLOT( selection( QListBoxItem * ) ) );
298} 297}
299 298
300void MonthViewCell::setDate( const QDate &date ) 299void MonthViewCell::setDate( const QDate &date )
301{ 300{
302// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 301// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
303 302
304 mDate = date; 303 mDate = date;
305 304
306 QString text; 305 QString text;
307 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 306 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
308 if ( KOGlobals::self()->calendarSystem()->day( date ) == 1 || (date.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 307 if ( KOGlobals::self()->calendarSystem()->day( date ) == 1 || (date.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
309 text = KOGlobals::self()->calendarSystem()->monthName( date, true ) + " "; 308 text = KOGlobals::self()->calendarSystem()->monthName( date, true ) + " ";
310 mLabel->resize( mLabelBigSize ); 309 mLabel->resize( mLabelBigSize );
311 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 310 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
312 } else { 311 } else {
313 mLabel->resize( mLabelSize ); 312 mLabel->resize( mLabelSize );
314 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 313 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
315 } 314 }
316 mLabel->setText( text ); 315 mLabel->setText( text );
317 316
318 //resizeEvent( 0 ); 317 //resizeEvent( 0 );
319} 318}
320 319
321QDate MonthViewCell::date() const 320QDate MonthViewCell::date() const
322{ 321{
323 return mDate; 322 return mDate;
324} 323}
325 324
326void MonthViewCell::setPrimary( bool primary ) 325void MonthViewCell::setPrimary( bool primary )
327{ 326{
328 mPrimary = primary; 327 mPrimary = primary;
329 //setMyPalette(); 328 //setMyPalette();
330} 329}
331void MonthViewCell::setMyPalette() 330void MonthViewCell::setMyPalette()
332{ 331{
333 332
334 if ( mHoliday) { 333 if ( mHoliday) {
335 setPalette( mHolidayPalette ); 334 setPalette( mHolidayPalette );
336 } else { 335 } else {
337 if ( mPrimary ) { 336 if ( mPrimary ) {
338 setPalette( mPrimaryPalette ); 337 setPalette( mPrimaryPalette );
339 } else { 338 } else {
340 setPalette( mNonPrimaryPalette ); 339 setPalette( mNonPrimaryPalette );
341 } 340 }
342 } 341 }
343 QPalette pal = palette(); 342 QPalette pal = palette();
344 343
345 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 344 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
346} 345}
347QPalette MonthViewCell::getPalette () 346QPalette MonthViewCell::getPalette ()
348{ 347{
349 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 348 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
350 return mStandardPalette; 349 return mStandardPalette;
351 if ( mHoliday) { 350 if ( mHoliday) {
352 return mHolidayPalette ; 351 return mHolidayPalette ;
353 } else { 352 } else {
354 if ( mPrimary ) { 353 if ( mPrimary ) {
355 return mPrimaryPalette ; 354 return mPrimaryPalette ;
356 } 355 }
357 } 356 }
358 return mNonPrimaryPalette; 357 return mNonPrimaryPalette;
359} 358}
360bool MonthViewCell::isPrimary() const 359bool MonthViewCell::isPrimary() const
361{ 360{
362 return mPrimary; 361 return mPrimary;
363} 362}
364 363
365void MonthViewCell::setHoliday( bool holiday ) 364void MonthViewCell::setHoliday( bool holiday )
366{ 365{
367 mHoliday = holiday; 366 mHoliday = holiday;
368 //setMyPalette(); 367 //setMyPalette();
369} 368}
370 369
371void MonthViewCell::setHoliday( const QString &holiday ) 370void MonthViewCell::setHoliday( const QString &holiday )
372{ 371{
373 mHolidayString = holiday; 372 mHolidayString = holiday;
374 373
375 if ( !holiday.isEmpty() ) { 374 if ( !holiday.isEmpty() ) {
376 setHoliday( true ); 375 setHoliday( true );
377 } 376 }
378} 377}
379void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 378void MonthViewCell::keyPressEvent ( QKeyEvent * e )
380{ 379{
381 380
382 e->ignore(); 381 e->ignore();
383 382
384} 383}
385void MonthViewCell::updateCell() 384void MonthViewCell::updateCell()
386{ 385{
387 386
388 setPrimary( mDate.month()%2 ); 387 setPrimary( mDate.month()%2 );
389 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() ); 388 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() );
390 if ( mDate == QDate::currentDate() ) { 389 if ( mDate == QDate::currentDate() ) {
391 mItemList->setLineWidth( 3 ); 390 mItemList->setLineWidth( 3 );
392 } else { 391 } else {
393 mItemList->setLineWidth( 1 ); 392 mItemList->setLineWidth( 1 );
394 } 393 }
395 mItemList->clear(); 394 mItemList->clear();
396 //qApp->processEvents(); 395 //qApp->processEvents();
397 if ( !mHolidayString.isEmpty() ) { 396 if ( !mHolidayString.isEmpty() ) {
398 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 397 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
399 item->setPalette( mHolidayPalette ); 398 item->setPalette( mHolidayPalette );
400 mItemList->insertItem( item ); 399 mItemList->insertItem( item );
401 } 400 }
402 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 401 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
403 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 402 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
404 Event *event; 403 Event *event;
405 for( event = events.first(); event; event = events.next() ) { 404 for( event = events.first(); event; event = events.next() ) {
406 if ( event->categories().contains("Holiday") || 405 if ( event->categories().contains("Holiday") ||
407 event->categories().contains(i18n("Holiday"))) { 406 event->categories().contains(i18n("Holiday"))) {
408 setHoliday( true ); 407 setHoliday( true );
409 if ( mDate.dayOfWeek() == 7 ) 408 if ( mDate.dayOfWeek() == 7 )
410 mItemList->setLineWidth( 3 ); 409 mItemList->setLineWidth( 3 );
411 } 410 }
412 QString text; 411 QString text;
413 if (event->isMultiDay()) { 412 if (event->isMultiDay()) {
414 QString prefix = "<->"; 413 QString prefix = "<->";
415 if ( event->doesRecur() ) { 414 if ( event->doesRecur() ) {
416 if ( event->recursOn( mDate) ) 415 if ( event->recursOn( mDate) )
417 prefix ="->" ; 416 prefix ="->" ;
418 else { 417 else {
419 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 418 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
420 if ( event->recursOn( mDate.addDays( -days)) ) 419 if ( event->recursOn( mDate.addDays( -days)) )
421 prefix ="<-" ; 420 prefix ="<-" ;
422 } 421 }
423 422
424 } else { 423 } else {
425 if (mDate == event->dtStart().date()) { 424 if (mDate == event->dtStart().date()) {
426 prefix ="->" ; 425 prefix ="->" ;
427 } else if (mDate == event->dtEnd().date()) { 426 } else if (mDate == event->dtEnd().date()) {
428 prefix ="<-" ; 427 prefix ="<-" ;
429 } 428 }
430 } 429 }
431 text = prefix + event->summary(); 430 text = prefix + event->summary();
432 } else { 431 } else {
433 if (event->doesFloat()) 432 if (event->doesFloat())
434 text = event->summary(); 433 text = event->summary();
435 else { 434 else {
436 text = KGlobal::locale()->formatTime(event->dtStart().time()); 435 text = KGlobal::locale()->formatTime(event->dtStart().time());
437 text += " " + event->summary(); 436 text += " " + event->summary();
438 } 437 }
439 } 438 }
diff --git a/korganizer/koprefsdialog.cpp b/korganizer/koprefsdialog.cpp
index 04fffe2..da6644f 100644
--- a/korganizer/koprefsdialog.cpp
+++ b/korganizer/koprefsdialog.cpp
@@ -1,454 +1,453 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qvbox.h> 34#include <qvbox.h>
35#include <qhbox.h> 35#include <qhbox.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qspinbox.h> 37#include <qspinbox.h>
38#include <qdatetime.h> 38#include <qdatetime.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qradiobutton.h> 40#include <qradiobutton.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qstrlist.h> 42#include <qstrlist.h>
43#include <qapplication.h> 43#include <qapplication.h>
44 44
45#include <kcolorbutton.h> 45#include <kcolorbutton.h>
46#include <kdebug.h> 46#include <kdebug.h>
47#include <klocale.h> 47#include <klocale.h>
48#include <kglobal.h> 48#include <kglobal.h>
49#include <kfontdialog.h> 49#include <kfontdialog.h>
50#include <kfiledialog.h> 50#include <kfiledialog.h>
51#include <kmessagebox.h> 51#include <kmessagebox.h>
52#include <kcolordialog.h> 52#include <kcolordialog.h>
53#include <kiconloader.h> 53#include <kiconloader.h>
54#include <kemailsettings.h> 54#include <kemailsettings.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56 56
57#include <kurlrequester.h> 57#include <kurlrequester.h>
58#include <klineedit.h> 58#include <klineedit.h>
59 59
60#if defined(USE_SOLARIS) 60#if defined(USE_SOLARIS)
61#include <sys/param.h> 61#include <sys/param.h>
62 62
63#define ZONEINFODIR "/usr/share/lib/zoneinfo" 63#define ZONEINFODIR "/usr/share/lib/zoneinfo"
64#define INITFILE "/etc/default/init" 64#define INITFILE "/etc/default/init"
65#endif 65#endif
66 66
67#include "koprefs.h" 67#include "koprefs.h"
68 68
69#include "koprefsdialog.h" 69#include "koprefsdialog.h"
70#include "koprefsdialog.moc"
71 70
72 71
73KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : 72KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) :
74 KPrefsDialog(KOPrefs::instance(),parent,name,true) 73 KPrefsDialog(KOPrefs::instance(),parent,name,true)
75{ 74{
76 75
77 setCaption( i18n("Preferences - some settings need a restart (nr)")); 76 setCaption( i18n("Preferences - some settings need a restart (nr)"));
78 mCategoryDict.setAutoDelete(true); 77 mCategoryDict.setAutoDelete(true);
79 78
80 KGlobal::locale()->insertCatalogue("timezones"); 79 KGlobal::locale()->insertCatalogue("timezones");
81 80
82 setupMainTab(); 81 setupMainTab();
83 setupLocaleTab(); 82 setupLocaleTab();
84 setupTimeZoneTab(); 83 setupTimeZoneTab();
85 setupTimeTab(); 84 setupTimeTab();
86 setupLocaleDateTab(); 85 setupLocaleDateTab();
87 setupFontsTab(); 86 setupFontsTab();
88 setupColorsTab(); 87 setupColorsTab();
89 setupViewsTab(); 88 setupViewsTab();
90 //setupSyncTab(); 89 //setupSyncTab();
91 //setupSyncAlgTab(); 90 //setupSyncAlgTab();
92 //setupPrinterTab(); 91 //setupPrinterTab();
93 //setupGroupSchedulingTab(); 92 //setupGroupSchedulingTab();
94 //setupGroupAutomationTab(); 93 //setupGroupAutomationTab();
95} 94}
96 95
97 96
98KOPrefsDialog::~KOPrefsDialog() 97KOPrefsDialog::~KOPrefsDialog()
99{ 98{
100} 99}
101 100
102void KOPrefsDialog::setupLocaleDateTab() 101void KOPrefsDialog::setupLocaleDateTab()
103{ 102{
104QFrame *topFrame = addPage(i18n("Date Format"),0,0); 103QFrame *topFrame = addPage(i18n("Date Format"),0,0);
105 QGridLayout *topLayout = new QGridLayout(topFrame,3,2); 104 QGridLayout *topLayout = new QGridLayout(topFrame,3,2);
106 topLayout->setSpacing(spacingHint()); 105 topLayout->setSpacing(spacingHint());
107 topLayout->setMargin(marginHint()); 106 topLayout->setMargin(marginHint());
108 int iii = 0; 107 int iii = 0;
109 108
110 109
111 KPrefsWidRadios *syncPrefsGroup = 110 KPrefsWidRadios *syncPrefsGroup =
112 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); 111 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame);
113 QString format; 112 QString format;
114 if ( QApplication::desktop()->width() < 480 ) 113 if ( QApplication::desktop()->width() < 480 )
115 format = "(%d.%m.%Y)"; 114 format = "(%d.%m.%Y)";
116 else 115 else
117 format = "(%d.%m.%Y|%A %d %B %Y)"; 116 format = "(%d.%m.%Y|%A %d %B %Y)";
118 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); 117 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format));
119 if ( QApplication::desktop()->width() < 480 ) 118 if ( QApplication::desktop()->width() < 480 )
120 format = "(%m.%d.%Y)"; 119 format = "(%m.%d.%Y)";
121 else 120 else
122 format = "(%m.%d.%Y|%A %B %d %Y)"; 121 format = "(%m.%d.%Y|%A %B %d %Y)";
123 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); 122 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format));
124 if ( QApplication::desktop()->width() < 480 ) 123 if ( QApplication::desktop()->width() < 480 )
125 format = "(%Y-%m-%d)"; 124 format = "(%Y-%m-%d)";
126 else 125 else
127 format = "(%Y-%m-%d|%A %Y %B %d)"; 126 format = "(%Y-%m-%d|%A %Y %B %d)";
128 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); 127 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format));
129 syncPrefsGroup->addRadio(i18n("User defined")); 128 syncPrefsGroup->addRadio(i18n("User defined"));
130 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 129 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
131 ++iii; 130 ++iii;
132 ++iii; 131 ++iii;
133 QLabel * lab; 132 QLabel * lab;
134 mUserDateFormatLong = new QLineEdit(topFrame); 133 mUserDateFormatLong = new QLineEdit(topFrame);
135 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); 134 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame);
136 topLayout->addWidget(lab ,iii,0); 135 topLayout->addWidget(lab ,iii,0);
137 topLayout->addWidget(mUserDateFormatLong,iii,1); 136 topLayout->addWidget(mUserDateFormatLong,iii,1);
138 ++iii; 137 ++iii;
139 mUserDateFormatShort = new QLineEdit(topFrame); 138 mUserDateFormatShort = new QLineEdit(topFrame);
140 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); 139 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame);
141 topLayout->addWidget(lab ,iii,0); 140 topLayout->addWidget(lab ,iii,0);
142 topLayout->addWidget(mUserDateFormatShort,iii,1); 141 topLayout->addWidget(mUserDateFormatShort,iii,1);
143 ++iii; 142 ++iii;
144 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); 143 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame);
145 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 144 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
146 ++iii; 145 ++iii;
147 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); 146 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame);
148 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 147 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
149 ++iii; 148 ++iii;
150 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); 149 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame);
151 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 150 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
152 ++iii; 151 ++iii;
153 152
154} 153}
155 154
156void KOPrefsDialog::setupLocaleTab() 155void KOPrefsDialog::setupLocaleTab()
157{ 156{
158 QFrame *topFrame = addPage(i18n("Locale"),0,0); 157 QFrame *topFrame = addPage(i18n("Locale"),0,0);
159 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 158 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
160 topLayout->setSpacing(spacingHint()); 159 topLayout->setSpacing(spacingHint());
161 topLayout->setMargin(marginHint()); 160 topLayout->setMargin(marginHint());
162 int iii = 0; 161 int iii = 0;
163 KPrefsWidRadios *syncPrefsGroup = 162 KPrefsWidRadios *syncPrefsGroup =
164 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame); 163 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame);
165 syncPrefsGroup->addRadio(i18n("English")); 164 syncPrefsGroup->addRadio(i18n("English"));
166 syncPrefsGroup->addRadio(i18n("German")); 165 syncPrefsGroup->addRadio(i18n("German"));
167 syncPrefsGroup->addRadio(i18n("French(nyi)")); 166 syncPrefsGroup->addRadio(i18n("French(nyi)"));
168 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); 167 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)"));
169 if ( QApplication::desktop()->width() < 300 ) 168 if ( QApplication::desktop()->width() < 300 )
170 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 169 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
171 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 170 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
172 ++iii; 171 ++iii;
173 172
174 syncPrefsGroup = 173 syncPrefsGroup =
175 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame); 174 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame);
176 if ( QApplication::desktop()->width() > 300 ) 175 if ( QApplication::desktop()->width() > 300 )
177 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 176 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
178 syncPrefsGroup->addRadio(i18n("24:00")); 177 syncPrefsGroup->addRadio(i18n("24:00"));
179 syncPrefsGroup->addRadio(i18n("12:00am")); 178 syncPrefsGroup->addRadio(i18n("12:00am"));
180 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 179 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
181 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 180 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
182 ++iii; 181 ++iii;
183 KPrefsWidBool *sb; 182 KPrefsWidBool *sb;
184 if ( QApplication::desktop()->width() < 300 ) { 183 if ( QApplication::desktop()->width() < 300 ) {
185 sb = 184 sb =
186 addWidBool(i18n("Week starts on Sunday"), 185 addWidBool(i18n("Week starts on Sunday"),
187 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame); 186 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame);
188 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 187 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
189 ++iii; 188 ++iii;
190 sb = 189 sb =
191 addWidBool(i18n("Use short date in (WN/E) view"), 190 addWidBool(i18n("Use short date in (WN/E) view"),
192 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 191 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
193 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 192 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
194 } 193 }
195 else { 194 else {
196 QWidget * hb = new QWidget( topFrame ); 195 QWidget * hb = new QWidget( topFrame );
197 QHBoxLayout *hbLayout = new QHBoxLayout(hb); 196 QHBoxLayout *hbLayout = new QHBoxLayout(hb);
198 sb = 197 sb =
199 addWidBool(i18n("Week starts on Sunday"), 198 addWidBool(i18n("Week starts on Sunday"),
200 &(KOPrefs::instance()->mWeekStartsOnSunday),hb); 199 &(KOPrefs::instance()->mWeekStartsOnSunday),hb);
201 hbLayout->addWidget(sb->checkBox() ); 200 hbLayout->addWidget(sb->checkBox() );
202 sb = 201 sb =
203 addWidBool(i18n("Use short date in (WN/E) view"), 202 addWidBool(i18n("Use short date in (WN/E) view"),
204 &(KOPrefs::instance()->mShortDateInViewer),hb); 203 &(KOPrefs::instance()->mShortDateInViewer),hb);
205 hbLayout->addWidget(sb->checkBox() ); 204 hbLayout->addWidget(sb->checkBox() );
206 topLayout->addMultiCellWidget(hb, iii,iii,0,1); 205 topLayout->addMultiCellWidget(hb, iii,iii,0,1);
207 206
208 } 207 }
209 //#ifndef DESKTOP_VERSION 208 //#ifndef DESKTOP_VERSION
210#if 0 209#if 0
211 ++iii; 210 ++iii;
212 sb = 211 sb =
213 addWidBool(i18n("Quick load/save (w/o Unicode)"), 212 addWidBool(i18n("Quick load/save (w/o Unicode)"),
214 &(KOPrefs::instance()->mUseQuicksave),topFrame); 213 &(KOPrefs::instance()->mUseQuicksave),topFrame);
215 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 214 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
216#endif 215#endif
217} 216}
218void KOPrefsDialog::showSyncPage() 217void KOPrefsDialog::showSyncPage()
219{ 218{
220 showPage ( 2 ) ; 219 showPage ( 2 ) ;
221 220
222} 221}
223void KOPrefsDialog::setupSyncAlgTab() 222void KOPrefsDialog::setupSyncAlgTab()
224{ 223{
225#if 0 224#if 0
226 QLabel * lab; 225 QLabel * lab;
227 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0); 226 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0);
228 mSetupSyncAlgTab = topFrame; 227 mSetupSyncAlgTab = topFrame;
229 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 228 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
230 topLayout->setSpacing(spacingHint()); 229 topLayout->setSpacing(spacingHint());
231 topLayout->setMargin(marginHint()); 230 topLayout->setMargin(marginHint());
232 int iii = 0; 231 int iii = 0;
233 232
234 KPrefsWidBool *sb = 233 KPrefsWidBool *sb =
235 addWidBool(i18n("Ask for preferences before syncing"), 234 addWidBool(i18n("Ask for preferences before syncing"),
236 &(KOPrefs::instance()->mAskForPreferences),topFrame); 235 &(KOPrefs::instance()->mAskForPreferences),topFrame);
237 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 236 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
238 237
239 ++iii; 238 ++iii;
240 239
241 KPrefsWidRadios *syncPrefsGroup = 240 KPrefsWidRadios *syncPrefsGroup =
242 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs), 241 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs),
243 topFrame); 242 topFrame);
244 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 243 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
245 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 244 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
246 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 245 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
247 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 246 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
248 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 247 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
249 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 248 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
250 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 249 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
251 ++iii; 250 ++iii;
252 sb = 251 sb =
253 addWidBool(i18n("Show summary after syncing"), 252 addWidBool(i18n("Show summary after syncing"),
254 &(KOPrefs::instance()->mShowSyncSummary),topFrame); 253 &(KOPrefs::instance()->mShowSyncSummary),topFrame);
255 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 254 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
256 255
257 ++iii; 256 ++iii;
258#endif 257#endif
259 258
260 259
261 260
262} 261}
263 262
264 263
265void KOPrefsDialog::setupSyncTab() 264void KOPrefsDialog::setupSyncTab()
266{ 265{
267#if 0 266#if 0
268 QLabel * lab; 267 QLabel * lab;
269 QFrame *topFrame = addPage(i18n("Sync Network"),0,0); 268 QFrame *topFrame = addPage(i18n("Sync Network"),0,0);
270 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 269 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
271 topLayout->setSpacing(spacingHint()); 270 topLayout->setSpacing(spacingHint());
272 topLayout->setMargin(marginHint()); 271 topLayout->setMargin(marginHint());
273 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame); 272 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame);
274 int iii = 0; 273 int iii = 0;
275 topLayout->addMultiCellWidget(lab , iii,iii,0,1); 274 topLayout->addMultiCellWidget(lab , iii,iii,0,1);
276 ++iii; 275 ++iii;
277 276
278 mRemoteIPEdit = new QLineEdit(topFrame); 277 mRemoteIPEdit = new QLineEdit(topFrame);
279 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame); 278 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame);
280 topLayout->addWidget(lab ,iii,0); 279 topLayout->addWidget(lab ,iii,0);
281 topLayout->addWidget(mRemoteIPEdit,iii,1); 280 topLayout->addWidget(mRemoteIPEdit,iii,1);
282 ++iii; 281 ++iii;
283 mRemoteUser = new QLineEdit(topFrame); 282 mRemoteUser = new QLineEdit(topFrame);
284 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame); 283 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame);
285 topLayout->addWidget(lab ,iii,0); 284 topLayout->addWidget(lab ,iii,0);
286 topLayout->addWidget(mRemoteUser, iii,1); 285 topLayout->addWidget(mRemoteUser, iii,1);
287 ++iii; 286 ++iii;
288 287
289 mRemoteFile = new QLineEdit(topFrame); 288 mRemoteFile = new QLineEdit(topFrame);
290 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame); 289 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame);
291 topLayout->addWidget(lab ,iii,0); 290 topLayout->addWidget(lab ,iii,0);
292 topLayout->addWidget(mRemoteFile,iii,1); 291 topLayout->addWidget(mRemoteFile,iii,1);
293 ++iii; 292 ++iii;
294 293
295 mLocalTempFile = new QLineEdit(topFrame); 294 mLocalTempFile = new QLineEdit(topFrame);
296 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame); 295 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame);
297 topLayout->addWidget(lab ,iii,0); 296 topLayout->addWidget(lab ,iii,0);
298 topLayout->addWidget(mLocalTempFile,iii,1); 297 topLayout->addWidget(mLocalTempFile,iii,1);
299 ++iii; 298 ++iii;
300 299
301 KPrefsWidBool *wb = 300 KPrefsWidBool *wb =
302 addWidBool(i18n("Write back synced file"), 301 addWidBool(i18n("Write back synced file"),
303 &(KOPrefs::instance()->mWriteBackFile),topFrame); 302 &(KOPrefs::instance()->mWriteBackFile),topFrame);
304 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 303 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
305 ++iii; 304 ++iii;
306 wb = 305 wb =
307 addWidBool(i18n("Write back existing entries only"), 306 addWidBool(i18n("Write back existing entries only"),
308 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame); 307 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame);
309 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 308 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
310 ++iii; 309 ++iii;
311 310
312#endif 311#endif
313} 312}
314 313
315void KOPrefsDialog::setupMainTab() 314void KOPrefsDialog::setupMainTab()
316{ 315{
317 QFrame *topFrame = addPage(i18n("General"),0,0); 316 QFrame *topFrame = addPage(i18n("General"),0,0);
318 // DesktopIcon("identity",KIcon::SizeMedium)); 317 // DesktopIcon("identity",KIcon::SizeMedium));
319 318
320 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 319 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
321 topLayout->setSpacing(spacingHint()); 320 topLayout->setSpacing(spacingHint());
322 topLayout->setMargin(marginHint()); 321 topLayout->setMargin(marginHint());
323 322
324 // KPrefsWidBool *emailControlCenter = 323 // KPrefsWidBool *emailControlCenter =
325// addWidBool(i18n("&Use email settings from Control Center"), 324// addWidBool(i18n("&Use email settings from Control Center"),
326// &(KOPrefs::instance()->mEmailControlCenter),topFrame); 325// &(KOPrefs::instance()->mEmailControlCenter),topFrame);
327// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1); 326// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1);
328 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)), 327 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)),
329 // SLOT(toggleEmailSettings(bool))); 328 // SLOT(toggleEmailSettings(bool)));
330 329
331 mNameEdit = new QLineEdit(topFrame); 330 mNameEdit = new QLineEdit(topFrame);
332 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); 331 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame);
333 topLayout->addWidget(mNameLabel,0,0); 332 topLayout->addWidget(mNameLabel,0,0);
334 topLayout->addWidget(mNameEdit,0,1); 333 topLayout->addWidget(mNameEdit,0,1);
335 334
336 mEmailEdit = new QLineEdit(topFrame); 335 mEmailEdit = new QLineEdit(topFrame);
337 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); 336 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame);
338 topLayout->addWidget(mEmailLabel,1,0); 337 topLayout->addWidget(mEmailLabel,1,0);
339 topLayout->addWidget(mEmailEdit,1,1); 338 topLayout->addWidget(mEmailEdit,1,1);
340 KPrefsWidBool *wb; 339 KPrefsWidBool *wb;
341 QHBox *dummy; 340 QHBox *dummy;
342 if ( QApplication::desktop()->width() > 480 ) { 341 if ( QApplication::desktop()->width() > 480 ) {
343 dummy = new QHBox(topFrame); 342 dummy = new QHBox(topFrame);
344 } else { 343 } else {
345 dummy = new QVBox(topFrame); 344 dummy = new QVBox(topFrame);
346 } 345 }
347 346
348 topLayout->addMultiCellWidget(dummy, 2,2,0,1); 347 topLayout->addMultiCellWidget(dummy, 2,2,0,1);
349 addWidBool(i18n("Full menu bar(nr)"), 348 addWidBool(i18n("Full menu bar(nr)"),
350 &(KOPrefs::instance()->mShowFullMenu),dummy); 349 &(KOPrefs::instance()->mShowFullMenu),dummy);
351 350
352 351
353 addWidBool(i18n("Mini icons in toolbar(nr)"), 352 addWidBool(i18n("Mini icons in toolbar(nr)"),
354 &(KOPrefs::instance()->mToolBarMiniIcons),dummy); 353 &(KOPrefs::instance()->mToolBarMiniIcons),dummy);
355 354
356 355
357 dummy = new QHBox(topFrame); 356 dummy = new QHBox(topFrame);
358 new QLabel(i18n("Days in What's Next:"),dummy); 357 new QLabel(i18n("Days in What's Next:"),dummy);
359 mWhatsNextSpin = new QSpinBox(1,14,1,dummy); 358 mWhatsNextSpin = new QSpinBox(1,14,1,dummy);
360 359
361 topLayout->addMultiCellWidget(dummy,3,3,0,1); 360 topLayout->addMultiCellWidget(dummy,3,3,0,1);
362 361
363 362
364 363
365 dummy = new QHBox(topFrame); 364 dummy = new QHBox(topFrame);
366 new QLabel(i18n("Days in Next-X-Days:"),dummy); 365 new QLabel(i18n("Days in Next-X-Days:"),dummy);
367 mNextXDaysSpin = new QSpinBox(2,14,1,dummy); 366 mNextXDaysSpin = new QSpinBox(2,14,1,dummy);
368 367
369 topLayout->addMultiCellWidget(dummy,4,4,0,1); 368 topLayout->addMultiCellWidget(dummy,4,4,0,1);
370 369
371 QHBox *prioBox = new QHBox(topFrame); 370 QHBox *prioBox = new QHBox(topFrame);
372 // intervalBox->setSpacing(spacingHint()); 371 // intervalBox->setSpacing(spacingHint());
373 topLayout->addMultiCellWidget(prioBox,5,5,0,1); 372 topLayout->addMultiCellWidget(prioBox,5,5,0,1);
374 QString messa = i18n("Show topmost todo prios in What's Next:"); 373 QString messa = i18n("Show topmost todo prios in What's Next:");
375 374
376 if ( QApplication::desktop()->width() < 300 ) 375 if ( QApplication::desktop()->width() < 300 )
377 messa = i18n("Show topmost todo prios in What's N.:"); 376 messa = i18n("Show topmost todo prios in What's N.:");
378 QLabel *prioLabel = new QLabel(messa, prioBox); 377 QLabel *prioLabel = new QLabel(messa, prioBox);
379 mPrioSpin = new QSpinBox(0,5,1,prioBox); 378 mPrioSpin = new QSpinBox(0,5,1,prioBox);
380 if ( QApplication::desktop()->width() < 300 ) 379 if ( QApplication::desktop()->width() < 300 )
381 mPrioSpin->setFixedWidth( 40 ); 380 mPrioSpin->setFixedWidth( 40 );
382 381
383 // KPrefsWidBool *bcc = 382 // KPrefsWidBool *bcc =
384// addWidBool(i18n("Send copy to owner when mailing events"), 383// addWidBool(i18n("Send copy to owner when mailing events"),
385// &(KOPrefs::instance()->mBcc),topFrame); 384// &(KOPrefs::instance()->mBcc),topFrame);
386// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1); 385// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1);
387 386
388 387
389 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame); 388 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame);
390 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1); 389 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1);
391 390
392 // addWidBool(i18n("Enable automatic saving of calendar"), 391 // addWidBool(i18n("Enable automatic saving of calendar"),
393 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup); 392 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup);
394 393
395 QHBox *intervalBox = new QHBox(topFrame); 394 QHBox *intervalBox = new QHBox(topFrame);
396 // intervalBox->setSpacing(spacingHint()); 395 // intervalBox->setSpacing(spacingHint());
397 topLayout->addMultiCellWidget(intervalBox,6,6,0,1); 396 topLayout->addMultiCellWidget(intervalBox,6,6,0,1);
398 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox); 397 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox);
399 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox); 398 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox);
400 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin); 399 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin);
401 /* 400 /*
402 QHBox * agendasize = new QHBox ( topFrame ); 401 QHBox * agendasize = new QHBox ( topFrame );
403 402
404 new QLabel (i18n("AllDayAgenda Height:"), agendasize ); 403 new QLabel (i18n("AllDayAgenda Height:"), agendasize );
405 404
406 405
407 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize); 406 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize);
408 topLayout->addMultiCellWidget(agendasize,7,7,0,1); 407 topLayout->addMultiCellWidget(agendasize,7,7,0,1);
409 */ 408 */
410 KPrefsWidBool *verticalScreen = 409 KPrefsWidBool *verticalScreen =
411 addWidBool(i18n("Show vertical screen (Needs restart)"), 410 addWidBool(i18n("Show vertical screen (Needs restart)"),
412 &(KOPrefs::instance()->mVerticalScreen),topFrame); 411 &(KOPrefs::instance()->mVerticalScreen),topFrame);
413 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0); 412 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0);
414 topLayout->addMultiCellWidget(verticalScreen->checkBox(),7,7,0,1); 413 topLayout->addMultiCellWidget(verticalScreen->checkBox(),7,7,0,1);
415 414
416 KPrefsWidBool *ask = 415 KPrefsWidBool *ask =
417 addWidBool(i18n("Ask for quit when closing KO/Pi"), 416 addWidBool(i18n("Ask for quit when closing KO/Pi"),
418 &(KOPrefs::instance()->mAskForQuit),topFrame); 417 &(KOPrefs::instance()->mAskForQuit),topFrame);
419 topLayout->addMultiCellWidget(ask->checkBox(),8,8,0,1); 418 topLayout->addMultiCellWidget(ask->checkBox(),8,8,0,1);
420 419
421 420
422 /* 421 /*
423 KPrefsWidBool *confirmCheck = 422 KPrefsWidBool *confirmCheck =
424 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm), 423 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm),
425 topFrame); 424 topFrame);
426 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1); 425 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1);
427 426
428 427
429 mEnableGroupScheduling = 428 mEnableGroupScheduling =
430 addWidBool(i18n("Enable group scheduling"), 429 addWidBool(i18n("Enable group scheduling"),
431 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame); 430 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame);
432 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0); 431 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0);
433 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()), 432 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()),
434 SLOT(warningGroupScheduling())); 433 SLOT(warningGroupScheduling()));
435 434
436 mEnableProjectView = 435 mEnableProjectView =
437 addWidBool(i18n("Enable project view"), 436 addWidBool(i18n("Enable project view"),
438 &(KOPrefs::instance()->mEnableProjectView),topFrame); 437 &(KOPrefs::instance()->mEnableProjectView),topFrame);
439 topLayout->addWidget(mEnableProjectView->checkBox(),9,0); 438 topLayout->addWidget(mEnableProjectView->checkBox(),9,0);
440 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()), 439 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()),
441 SLOT(warningProjectView())); 440 SLOT(warningProjectView()));
442 441
443 // Can't be disabled anymore 442 // Can't be disabled anymore
444 mEnableGroupScheduling->checkBox()->hide(); 443 mEnableGroupScheduling->checkBox()->hide();
445 444
446 // Disable setting, because this feature now becomes stable 445 // Disable setting, because this feature now becomes stable
447 mEnableProjectView->checkBox()->hide(); 446 mEnableProjectView->checkBox()->hide();
448 447
449 KPrefsWidRadios *defaultFormatGroup = 448 KPrefsWidRadios *defaultFormatGroup =
450 addWidRadios(i18n("Default Calendar Format"), 449 addWidRadios(i18n("Default Calendar Format"),
451 &(KOPrefs::instance()->mDefaultFormat),topFrame); 450 &(KOPrefs::instance()->mDefaultFormat),topFrame);
452 defaultFormatGroup->addRadio(i18n("vCalendar")); 451 defaultFormatGroup->addRadio(i18n("vCalendar"));
453 defaultFormatGroup->addRadio(i18n("iCalendar")); 452 defaultFormatGroup->addRadio(i18n("iCalendar"));
454 453
diff --git a/korganizer/kosyncprefsdialog.cpp b/korganizer/kosyncprefsdialog.cpp
index 2e051f2..b7e4265 100644
--- a/korganizer/kosyncprefsdialog.cpp
+++ b/korganizer/kosyncprefsdialog.cpp
@@ -1,450 +1,449 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> 3 Copyright (c) 2004 Lutz Rogowski <rogowski@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#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qvbox.h> 34#include <qvbox.h>
35#include <qhbox.h> 35#include <qhbox.h>
36#include <qspinbox.h> 36#include <qspinbox.h>
37#include <qdatetime.h> 37#include <qdatetime.h>
38#include <qcheckbox.h> 38#include <qcheckbox.h>
39#include <qradiobutton.h> 39#include <qradiobutton.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qstrlist.h> 41#include <qstrlist.h>
42#include <qapplication.h> 42#include <qapplication.h>
43 43
44#include <kcolorbutton.h> 44#include <kcolorbutton.h>
45#include <kdebug.h> 45#include <kdebug.h>
46#include <klocale.h> 46#include <klocale.h>
47#include <kglobal.h> 47#include <kglobal.h>
48#include <kfontdialog.h> 48#include <kfontdialog.h>
49#include <kmessagebox.h> 49#include <kmessagebox.h>
50#include <kcolordialog.h> 50#include <kcolordialog.h>
51#include <kiconloader.h> 51#include <kiconloader.h>
52#include <kemailsettings.h> 52#include <kemailsettings.h>
53#include <kstandarddirs.h> 53#include <kstandarddirs.h>
54#include <kfiledialog.h> 54#include <kfiledialog.h>
55#include <kmessagebox.h> 55#include <kmessagebox.h>
56 56
57#include <kurlrequester.h> 57#include <kurlrequester.h>
58#include <klineedit.h> 58#include <klineedit.h>
59#include <libkdepim/ksyncprofile.h> 59#include <libkdepim/ksyncprofile.h>
60 60
61 61
62#include "koprefs.h" 62#include "koprefs.h"
63 63
64#include "kosyncprefsdialog.h" 64#include "kosyncprefsdialog.h"
65#include "koglobals.h" 65#include "koglobals.h"
66#include "kosyncprefsdialog.moc"
67 66
68 67
69KOSyncPrefsDialog::KOSyncPrefsDialog(QWidget *parent, char *name, bool modal) : 68KOSyncPrefsDialog::KOSyncPrefsDialog(QWidget *parent, char *name, bool modal) :
70 KDialog(parent,name,true) 69 KDialog(parent,name,true)
71{ 70{
72 71
73 setCaption( i18n("Synchronization Preferences")); 72 setCaption( i18n("Synchronization Preferences"));
74 73
75 mSyncProfiles.setAutoDelete( true ); 74 mSyncProfiles.setAutoDelete( true );
76 setupSyncAlgTab(); 75 setupSyncAlgTab();
77} 76}
78 77
79 78
80KOSyncPrefsDialog::~KOSyncPrefsDialog() 79KOSyncPrefsDialog::~KOSyncPrefsDialog()
81{ 80{
82} 81}
83 82
84#include <qlayout.h> 83#include <qlayout.h>
85#include <qscrollview.h> 84#include <qscrollview.h>
86void KOSyncPrefsDialog::setupSyncAlgTab() 85void KOSyncPrefsDialog::setupSyncAlgTab()
87{ 86{
88 QLabel * lab; 87 QLabel * lab;
89 //QFrame *page = addPage(i18n("Sync Prefs"),0,0); 88 //QFrame *page = addPage(i18n("Sync Prefs"),0,0);
90 QVBox * mainbox = new QVBox( this ); 89 QVBox * mainbox = new QVBox( this );
91 QScrollView* sv = new QScrollView( mainbox ); 90 QScrollView* sv = new QScrollView( mainbox );
92 QHBoxLayout * lay = new QHBoxLayout( this ); 91 QHBoxLayout * lay = new QHBoxLayout( this );
93 lay->addWidget( mainbox ); 92 lay->addWidget( mainbox );
94 QHBox * b_box = new QHBox( mainbox ); 93 QHBox * b_box = new QHBox( mainbox );
95 94
96 QPushButton* button = new QPushButton( i18n("Ok"), b_box ); 95 QPushButton* button = new QPushButton( i18n("Ok"), b_box );
97 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) ); 96 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) );
98 button = new QPushButton( i18n("Cancel"), b_box ); 97 button = new QPushButton( i18n("Cancel"), b_box );
99 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) ); 98 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) );
100 //QBoxLayout * sl = new QVBoxLayout(this ); 99 //QBoxLayout * sl = new QVBoxLayout(this );
101 //sl->addWidget ( sv ); 100 //sl->addWidget ( sv );
102 sv->setResizePolicy ( QScrollView::AutoOneFit ); 101 sv->setResizePolicy ( QScrollView::AutoOneFit );
103 QFrame *topFrame = new QFrame ( sv ); 102 QFrame *topFrame = new QFrame ( sv );
104 sv->addChild( topFrame ); 103 sv->addChild( topFrame );
105 mSetupSyncAlgTab = topFrame; 104 mSetupSyncAlgTab = topFrame;
106 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 105 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
107 topLayout->setSpacing(spacingHint()); 106 topLayout->setSpacing(spacingHint());
108 topLayout->setMargin(marginHint()); 107 topLayout->setMargin(marginHint());
109 108
110 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame); 109 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame);
111 int iii = 0; 110 int iii = 0;
112 //topLayout->addMultiCellWidget(lab , iii,iii,0,1); 111 //topLayout->addMultiCellWidget(lab , iii,iii,0,1);
113 //++iii; 112 //++iii;
114 113
115 mMyMachineName = new QLineEdit(topFrame); 114 mMyMachineName = new QLineEdit(topFrame);
116 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame); 115 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame);
117 topLayout->addWidget(lab ,iii,0); 116 topLayout->addWidget(lab ,iii,0);
118 topLayout->addWidget(mMyMachineName,iii,1); 117 topLayout->addWidget(mMyMachineName,iii,1);
119 ++iii; 118 ++iii;
120 119
121 QHBox* buttonbox = new QHBox( topFrame); 120 QHBox* buttonbox = new QHBox( topFrame);
122 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1); 121 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1);
123 ++iii; 122 ++iii;
124 button = new QPushButton( i18n("New profile"), buttonbox ); 123 button = new QPushButton( i18n("New profile"), buttonbox );
125 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) ); 124 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) );
126 125
127 button = new QPushButton( i18n("Clone profile"), buttonbox ); 126 button = new QPushButton( i18n("Clone profile"), buttonbox );
128 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) ); 127 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) );
129 128
130 button = new QPushButton( i18n("Delete profile"), buttonbox ); 129 button = new QPushButton( i18n("Delete profile"), buttonbox );
131 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) ); 130 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) );
132 131
133 mProfileBox = new QComboBox(topFrame); 132 mProfileBox = new QComboBox(topFrame);
134 mProfileBox->setEditable ( true ); 133 mProfileBox->setEditable ( true );
135 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) ); 134 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) );
136 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) ); 135 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) );
137 136
138 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame); 137 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame);
139 topLayout->addWidget(lab ,iii,0); 138 topLayout->addWidget(lab ,iii,0);
140 topLayout->addWidget(mProfileBox, iii,1); 139 topLayout->addWidget(mProfileBox, iii,1);
141 ++iii; 140 ++iii;
142 141
143 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), topFrame ); 142 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), topFrame );
144 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1); 143 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1);
145 ++iii; 144 ++iii;
146 145
147 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame ); 146 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame );
148 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1); 147 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1);
149 ++iii; 148 ++iii;
150 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame); 149 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame);
151 topLayout->addMultiCellWidget(gr, iii,iii,0,1); 150 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
152 ++iii; 151 ++iii;
153 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr ); 152 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
154 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr ); 153 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
155 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr ); 154 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
156 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr ); 155 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
157 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr ); 156 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
158 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr ); 157 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
159 // both = new QRadioButton ( i18n("Take both on conflict"), gr ); 158 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
160 159
161 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame ); 160 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame );
162 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); 161 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1);
163 ++iii; 162 ++iii;
164 163
165 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), topFrame ); 164 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), topFrame );
166 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1); 165 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1);
167 ++iii; 166 ++iii;
168 167
169 mWriteBackFile = new QCheckBox( i18n("Write back file"), topFrame ); 168 mWriteBackFile = new QCheckBox( i18n("Write back file"), topFrame );
170 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1); 169 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1);
171 ++iii; 170 ++iii;
172 171
173 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame); 172 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame);
174 gr = proGr; 173 gr = proGr;
175 topLayout->addMultiCellWidget(gr, iii,iii,0,1); 174 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
176 ++iii; 175 ++iii;
177 mIsLocal = new QRadioButton ( i18n("Local file"), gr ); 176 mIsLocal = new QRadioButton ( i18n("Local file"), gr );
178 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr ); 177 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr );
179 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); 178 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) );
180 179
181 localFileWidget = new QVBox( topFrame); 180 localFileWidget = new QVBox( topFrame);
182 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); 181 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1);
183 ++iii; 182 ++iii;
184 QHBox* temphb = new QHBox( localFileWidget ); 183 QHBox* temphb = new QHBox( localFileWidget );
185 lab = new QLabel( i18n("Local file:"), temphb); 184 lab = new QLabel( i18n("Local file:"), temphb);
186 mRemoteFile = new QLineEdit(localFileWidget); 185 mRemoteFile = new QLineEdit(localFileWidget);
187 186
188 button = new QPushButton( i18n("Choose..."), temphb ); 187 button = new QPushButton( i18n("Choose..."), temphb );
189 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); 188 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) );
190 189
191 190
192 remoteFileWidget = new QVBox( topFrame); 191 remoteFileWidget = new QVBox( topFrame);
193 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); 192 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1);
194 ++iii; 193 ++iii;
195 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget); 194 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget);
196 mRemotePrecommand = new QLineEdit(remoteFileWidget); 195 mRemotePrecommand = new QLineEdit(remoteFileWidget);
197 196
198 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); 197 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget);
199 mLocalTempFile = new QLineEdit(remoteFileWidget); 198 mLocalTempFile = new QLineEdit(remoteFileWidget);
200 199
201 200
202 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); 201 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget);
203 mRemotePostcommand = new QLineEdit(remoteFileWidget); 202 mRemotePostcommand = new QLineEdit(remoteFileWidget);
204 203
205 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget); 204 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
206 temphb = new QHBox( remoteFileWidget ); 205 temphb = new QHBox( remoteFileWidget );
207 button = new QPushButton( i18n("ssh/scp"), temphb ); 206 button = new QPushButton( i18n("ssh/scp"), temphb );
208 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) ); 207 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
209 button = new QPushButton( i18n("ftp"), temphb ); 208 button = new QPushButton( i18n("ftp"), temphb );
210 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) ); 209 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
211 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget); 210 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
212 211
213 212
214} 213}
215void KOSyncPrefsDialog::slotOK() 214void KOSyncPrefsDialog::slotOK()
216{ 215{
217 if ( mMyMachineName->text() == "undefined" ) { 216 if ( mMyMachineName->text() == "undefined" ) {
218 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error")); 217 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error"));
219 return; 218 return;
220 } 219 }
221 int i; 220 int i;
222 for (i = 0; i < mSyncProfileNames.count(); ++ i) { 221 for (i = 0; i < mSyncProfileNames.count(); ++ i) {
223 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) { 222 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) {
224 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error")); 223 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error"));
225 return; 224 return;
226 } 225 }
227 } 226 }
228 usrWriteConfig(); 227 usrWriteConfig();
229 QDialog::accept(); 228 QDialog::accept();
230} 229}
231void KOSyncPrefsDialog::accept() 230void KOSyncPrefsDialog::accept()
232{ 231{
233 slotOK(); 232 slotOK();
234} 233}
235void KOSyncPrefsDialog::chooseFile() 234void KOSyncPrefsDialog::chooseFile()
236{ 235{
237 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 236 QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
238 237
239 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 238 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
240 if ( fn == "" ) 239 if ( fn == "" )
241 return; 240 return;
242 mRemoteFile->setText( fn ); 241 mRemoteFile->setText( fn );
243} 242}
244 243
245void KOSyncPrefsDialog::textChanged( const QString & s ) 244void KOSyncPrefsDialog::textChanged( const QString & s )
246{ 245{
247 if ( mProfileBox->count() == 0 ) 246 if ( mProfileBox->count() == 0 )
248 return; 247 return;
249 if ( currentSelection < 3 ) { 248 if ( currentSelection < 3 ) {
250 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error")); 249 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error"));
251 mProfileBox->blockSignals( true ); 250 mProfileBox->blockSignals( true );
252 mProfileBox->setCurrentItem(mProfileBox-> currentItem ()); 251 mProfileBox->setCurrentItem(mProfileBox-> currentItem ());
253 mProfileBox->blockSignals( false ); 252 mProfileBox->blockSignals( false );
254 return; 253 return;
255 } 254 }
256 //qDebug("cur i %d ",mProfileBox-> currentItem () ); 255 //qDebug("cur i %d ",mProfileBox-> currentItem () );
257 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ; 256 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ;
258 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ; 257 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ;
259 prof->setName( s ); 258 prof->setName( s );
260 mSyncProfileNames[mProfileBox-> currentItem ()] = s; 259 mSyncProfileNames[mProfileBox-> currentItem ()] = s;
261} 260}
262void KOSyncPrefsDialog::profileChanged( int item ) 261void KOSyncPrefsDialog::profileChanged( int item )
263{ 262{
264 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item ); 263 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item );
265 KSyncProfile* prof; 264 KSyncProfile* prof;
266 saveProfile(); 265 saveProfile();
267 currentSelection = item; 266 currentSelection = item;
268 prof = mSyncProfiles.at(item) ; 267 prof = mSyncProfiles.at(item) ;
269 mRemotePrecommand->setText(prof->getPreSyncCommand()); 268 mRemotePrecommand->setText(prof->getPreSyncCommand());
270 mRemotePostcommand->setText(prof->getPostSyncCommand()); 269 mRemotePostcommand->setText(prof->getPostSyncCommand());
271 mLocalTempFile->setText(prof->getLocalTempFile()); 270 mLocalTempFile->setText(prof->getLocalTempFile());
272 mRemoteFile->setText(prof->getRemoteFileName()) ; 271 mRemoteFile->setText(prof->getRemoteFileName()) ;
273 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync()); 272 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync());
274 mAskForPreferences->setChecked( prof->getAskForPreferences()); 273 mAskForPreferences->setChecked( prof->getAskForPreferences());
275 mWriteBackExisting->setChecked( prof->getWriteBackExisting() ); 274 mWriteBackExisting->setChecked( prof->getWriteBackExisting() );
276 mWriteBackFile->setChecked( prof->getWriteBackFile()); 275 mWriteBackFile->setChecked( prof->getWriteBackFile());
277 mIncludeInRing->setChecked( prof->getIncludeInRingSync() ); 276 mIncludeInRing->setChecked( prof->getIncludeInRingSync() );
278 277
279 switch ( prof->getSyncPrefs() ) { 278 switch ( prof->getSyncPrefs() ) {
280 case 0: 279 case 0:
281 loc->setChecked( true); 280 loc->setChecked( true);
282 break; 281 break;
283 case 1: 282 case 1:
284 rem->setChecked( true ); 283 rem->setChecked( true );
285 break; 284 break;
286 case 2: 285 case 2:
287 newest->setChecked( true); 286 newest->setChecked( true);
288 break; 287 break;
289 case 3: 288 case 3:
290 ask->setChecked( true); 289 ask->setChecked( true);
291 break; 290 break;
292 case 4: 291 case 4:
293 f_loc->setChecked( true); 292 f_loc->setChecked( true);
294 break; 293 break;
295 case 5: 294 case 5:
296 f_rem->setChecked( true); 295 f_rem->setChecked( true);
297 break; 296 break;
298 case 6: 297 case 6:
299 //both->setChecked( true); 298 //both->setChecked( true);
300 break; 299 break;
301 default: 300 default:
302 break; 301 break;
303 } 302 }
304 mIsLocal->setChecked(prof->getIsLocalFileSync()) ; 303 mIsLocal->setChecked(prof->getIsLocalFileSync()) ;
305 mIsNotLocal->setChecked(!prof->getIsLocalFileSync()); 304 mIsNotLocal->setChecked(!prof->getIsLocalFileSync());
306 proGr->setEnabled( item > 2 ); 305 proGr->setEnabled( item > 2 );
307 if ( item < 3 ) { 306 if ( item < 3 ) {
308 localFileWidget->setEnabled(false); 307 localFileWidget->setEnabled(false);
309 remoteFileWidget->setEnabled(false); 308 remoteFileWidget->setEnabled(false);
310 309
311 } else 310 } else
312 kindChanged( prof->getIsLocalFileSync() ); 311 kindChanged( prof->getIsLocalFileSync() );
313} 312}
314 313
315void KOSyncPrefsDialog::fillSSH() 314void KOSyncPrefsDialog::fillSSH()
316{ 315{
317 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 316 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" );
318 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 317 mLocalTempFile->setText("/tmp/mycalendar.ics" );
319 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" ); 318 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" );
320} 319}
321void KOSyncPrefsDialog::fillFTP() 320void KOSyncPrefsDialog::fillFTP()
322{ 321{
323 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" ); 322 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" );
324 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 323 mLocalTempFile->setText("/tmp/mycalendar.ics" );
325 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 324 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" );
326 325
327} 326}
328void KOSyncPrefsDialog::kindChanged( bool b ) 327void KOSyncPrefsDialog::kindChanged( bool b )
329{ 328{
330 329
331 localFileWidget->setEnabled(b); 330 localFileWidget->setEnabled(b);
332 remoteFileWidget->setEnabled(!b); 331 remoteFileWidget->setEnabled(!b);
333 332
334} 333}
335void KOSyncPrefsDialog::deleteProfile() 334void KOSyncPrefsDialog::deleteProfile()
336{ 335{
337 //qDebug("KOSyncPrefsDialog::deleteProfile() "); 336 //qDebug("KOSyncPrefsDialog::deleteProfile() ");
338 if ( currentSelection >= 0 ) { 337 if ( currentSelection >= 0 ) {
339 if ( currentSelection < 3 ) { 338 if ( currentSelection < 3 ) {
340 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error")); 339 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error"));
341 return; 340 return;
342 } 341 }
343 KSyncProfile* temp = mSyncProfiles.at(currentSelection); 342 KSyncProfile* temp = mSyncProfiles.at(currentSelection);
344 mSyncProfiles.remove( temp ); 343 mSyncProfiles.remove( temp );
345 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection )); 344 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection ));
346 insertProfiles(); 345 insertProfiles();
347 } 346 }
348} 347}
349 348
350void KOSyncPrefsDialog::saveProfile() 349void KOSyncPrefsDialog::saveProfile()
351{ 350{
352 KSyncProfile* prof; 351 KSyncProfile* prof;
353 if ( currentSelection >= 0 ) { 352 if ( currentSelection >= 0 ) {
354 prof = mSyncProfiles.at(currentSelection) ; 353 prof = mSyncProfiles.at(currentSelection) ;
355 prof->setPreSyncCommand( mRemotePrecommand->text()); 354 prof->setPreSyncCommand( mRemotePrecommand->text());
356 prof->setPostSyncCommand( mRemotePostcommand->text() ); 355 prof->setPostSyncCommand( mRemotePostcommand->text() );
357 prof->setLocalTempFile( mLocalTempFile->text()); 356 prof->setLocalTempFile( mLocalTempFile->text());
358 prof->setRemoteFileName( mRemoteFile->text() ); 357 prof->setRemoteFileName( mRemoteFile->text() );
359 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() ); 358 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
360 prof->setAskForPreferences( mAskForPreferences->isChecked()); 359 prof->setAskForPreferences( mAskForPreferences->isChecked());
361 prof->setWriteBackExisting(mWriteBackExisting->isChecked() ); 360 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
362 prof->setWriteBackFile( mWriteBackFile->isChecked()); 361 prof->setWriteBackFile( mWriteBackFile->isChecked());
363 prof->setIncludeInRingSync( mIncludeInRing->isChecked() ); 362 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
364 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ; 363 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
365 prof->setSyncPrefs( syncprefs); 364 prof->setSyncPrefs( syncprefs);
366 prof->setIsLocalFileSync( mIsLocal->isChecked() ); 365 prof->setIsLocalFileSync( mIsLocal->isChecked() );
367 } 366 }
368 367
369} 368}
370 369
371void KOSyncPrefsDialog::insertProfiles() 370void KOSyncPrefsDialog::insertProfiles()
372{ 371{
373 int curItem = mProfileBox->currentItem(); 372 int curItem = mProfileBox->currentItem();
374 mProfileBox->blockSignals( true ); 373 mProfileBox->blockSignals( true );
375 mProfileBox->clear(); 374 mProfileBox->clear();
376 mProfileBox->insertStringList (mSyncProfileNames ); 375 mProfileBox->insertStringList (mSyncProfileNames );
377 int item = mSyncProfileNames.count() -1; 376 int item = mSyncProfileNames.count() -1;
378 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() ) 377 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() )
379 mProfileBox->setCurrentItem( curItem ); 378 mProfileBox->setCurrentItem( curItem );
380 else if ( item >= 0 ) { 379 else if ( item >= 0 ) {
381 mProfileBox->setCurrentItem( item ); 380 mProfileBox->setCurrentItem( item );
382 } 381 }
383 currentSelection = -1; 382 currentSelection = -1;
384 if ( mSyncProfileNames.count() > 0 ) { 383 if ( mSyncProfileNames.count() > 0 ) {
385 //qDebug(" profileChanged( mProfileBox->currentItem() "); 384 //qDebug(" profileChanged( mProfileBox->currentItem() ");
386 profileChanged( mProfileBox->currentItem() ); 385 profileChanged( mProfileBox->currentItem() );
387 currentSelection = mProfileBox->currentItem(); 386 currentSelection = mProfileBox->currentItem();
388 } 387 }
389 mProfileBox->blockSignals( false ); 388 mProfileBox->blockSignals( false );
390} 389}
391 390
392void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp ) 391void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp )
393{ 392{
394 saveProfile(); 393 saveProfile();
395 mSyncProfiles.append( temp ); 394 mSyncProfiles.append( temp );
396 mSyncProfileNames << temp->getName(); 395 mSyncProfileNames << temp->getName();
397 insertProfiles(); 396 insertProfiles();
398 int last = mProfileBox->count() -1; 397 int last = mProfileBox->count() -1;
399 mProfileBox->blockSignals( true ); 398 mProfileBox->blockSignals( true );
400 mProfileBox->setCurrentItem( last ); 399 mProfileBox->setCurrentItem( last );
401 mProfileBox->blockSignals( false ); 400 mProfileBox->blockSignals( false );
402 profileChanged(last); 401 profileChanged(last);
403} 402}
404void KOSyncPrefsDialog::newProfile() 403void KOSyncPrefsDialog::newProfile()
405{ 404{
406 addProfile ( new KSyncProfile () ); 405 addProfile ( new KSyncProfile () );
407} 406}
408 407
409void KOSyncPrefsDialog::cloneProfile() 408void KOSyncPrefsDialog::cloneProfile()
410{ 409{
411 if ( currentSelection >= 0 ) 410 if ( currentSelection >= 0 )
412 addProfile (mSyncProfiles.at(currentSelection)->clone()) ; 411 addProfile (mSyncProfiles.at(currentSelection)->clone()) ;
413 else 412 else
414 newProfile(); 413 newProfile();
415} 414}
416 415
417 416
418void KOSyncPrefsDialog::usrReadConfig() 417void KOSyncPrefsDialog::usrReadConfig()
419{ 418{
420 KConfig *config = KOGlobals::config(); 419 KConfig *config = KOGlobals::config();
421 config->setGroup("SyncProfiles"); 420 config->setGroup("SyncProfiles");
422 mSyncProfileNames = KOPrefs::instance()->mSyncProfileNames; 421 mSyncProfileNames = KOPrefs::instance()->mSyncProfileNames;
423 int i; 422 int i;
424 KSyncProfile* temp ; 423 KSyncProfile* temp ;
425 mSyncProfiles.clear(); 424 mSyncProfiles.clear();
426 for ( i = 0; i < mSyncProfileNames.count();++i ) { 425 for ( i = 0; i < mSyncProfileNames.count();++i ) {
427 temp = new KSyncProfile (); 426 temp = new KSyncProfile ();
428 temp->setName( mSyncProfileNames[i] ); 427 temp->setName( mSyncProfileNames[i] );
429 temp->readConfig( config ); 428 temp->readConfig( config );
430 mSyncProfiles.append( temp ); 429 mSyncProfiles.append( temp );
431 } 430 }
432 insertProfiles(); 431 insertProfiles();
433 mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName ); 432 mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName );
434} 433}
435 434
436 435
437void KOSyncPrefsDialog::usrWriteConfig() 436void KOSyncPrefsDialog::usrWriteConfig()
438{ 437{
439 saveProfile(); 438 saveProfile();
440 if ( currentSelection >= 0 ) 439 if ( currentSelection >= 0 )
441 profileChanged(currentSelection); 440 profileChanged(currentSelection);
442 KConfig *config = KOGlobals::config(); 441 KConfig *config = KOGlobals::config();
443 config->setGroup("SyncProfiles"); 442 config->setGroup("SyncProfiles");
444 KSyncProfile* prof = mSyncProfiles.first(); 443 KSyncProfile* prof = mSyncProfiles.first();
445 while ( prof ) { 444 while ( prof ) {
446 prof->writeConfig(config); 445 prof->writeConfig(config);
447 prof = mSyncProfiles.next(); 446 prof = mSyncProfiles.next();
448 } 447 }
449 KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames; 448 KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames;
450 KOPrefs::instance()->mLocalMachineName = mMyMachineName->text(); 449 KOPrefs::instance()->mLocalMachineName = mMyMachineName->text();
diff --git a/korganizer/kotimespanview.cpp b/korganizer/kotimespanview.cpp
index 266a403..3265a3a 100644
--- a/korganizer/kotimespanview.cpp
+++ b/korganizer/kotimespanview.cpp
@@ -1,110 +1,109 @@
1#include <qlayout.h> 1#include <qlayout.h>
2 2
3#include <kconfig.h> 3#include <kconfig.h>
4 4
5#include "timespanview.h" 5#include "timespanview.h"
6#include "koglobals.h" 6#include "koglobals.h"
7 7
8#include "kotimespanview.h" 8#include "kotimespanview.h"
9#include "kotimespanview.moc"
10 9
11KOTimeSpanView::KOTimeSpanView(Calendar *calendar, QWidget *parent, 10KOTimeSpanView::KOTimeSpanView(Calendar *calendar, QWidget *parent,
12 const char *name) : 11 const char *name) :
13 KOEventView( calendar, parent, name ) 12 KOEventView( calendar, parent, name )
14{ 13{
15 QBoxLayout *topLayout = new QVBoxLayout( this ); 14 QBoxLayout *topLayout = new QVBoxLayout( this );
16 15
17 mTimeSpanView = new TimeSpanView( this ); 16 mTimeSpanView = new TimeSpanView( this );
18 topLayout->addWidget( mTimeSpanView ); 17 topLayout->addWidget( mTimeSpanView );
19 18
20 connect( mTimeSpanView, SIGNAL( dateRangeChanged() ), SLOT( updateView() ) ); 19 connect( mTimeSpanView, SIGNAL( dateRangeChanged() ), SLOT( updateView() ) );
21} 20}
22 21
23KOTimeSpanView::~KOTimeSpanView() 22KOTimeSpanView::~KOTimeSpanView()
24{ 23{
25} 24}
26 25
27void KOTimeSpanView::readSettings() 26void KOTimeSpanView::readSettings()
28{ 27{
29 readSettings(KOGlobals::config()); 28 readSettings(KOGlobals::config());
30} 29}
31 30
32void KOTimeSpanView::readSettings(KConfig *config) 31void KOTimeSpanView::readSettings(KConfig *config)
33{ 32{
34// kdDebug() << "KOTimeSpanView::readSettings()" << endl; 33// kdDebug() << "KOTimeSpanView::readSettings()" << endl;
35 34
36 config->setGroup("Views"); 35 config->setGroup("Views");
37 36
38 QValueList<int> sizes = config->readIntListEntry("Separator TimeSpanView"); 37 QValueList<int> sizes = config->readIntListEntry("Separator TimeSpanView");
39 if (sizes.count() == 2) { 38 if (sizes.count() == 2) {
40 mTimeSpanView->setSplitterSizes(sizes); 39 mTimeSpanView->setSplitterSizes(sizes);
41 } 40 }
42} 41}
43 42
44void KOTimeSpanView::writeSettings(KConfig *config) 43void KOTimeSpanView::writeSettings(KConfig *config)
45{ 44{
46// kdDebug() << "KOTimeSpanView::writeSettings()" << endl; 45// kdDebug() << "KOTimeSpanView::writeSettings()" << endl;
47 46
48 config->setGroup("Views"); 47 config->setGroup("Views");
49 48
50 QValueList<int> list = mTimeSpanView->splitterSizes(); 49 QValueList<int> list = mTimeSpanView->splitterSizes();
51 config->writeEntry("Separator TimeSpanView",list); 50 config->writeEntry("Separator TimeSpanView",list);
52} 51}
53 52
54int KOTimeSpanView::maxDatesHint() 53int KOTimeSpanView::maxDatesHint()
55{ 54{
56 return 0; 55 return 0;
57} 56}
58 57
59int KOTimeSpanView::currentDateCount() 58int KOTimeSpanView::currentDateCount()
60{ 59{
61 return 0; 60 return 0;
62} 61}
63 62
64QPtrList<Incidence> KOTimeSpanView::selectedIncidences() 63QPtrList<Incidence> KOTimeSpanView::selectedIncidences()
65{ 64{
66 QPtrList<Incidence> selected; 65 QPtrList<Incidence> selected;
67 66
68 return selected; 67 return selected;
69} 68}
70 69
71void KOTimeSpanView::updateView() 70void KOTimeSpanView::updateView()
72{ 71{
73 insertItems( mTimeSpanView->startDateTime().date(), 72 insertItems( mTimeSpanView->startDateTime().date(),
74 mTimeSpanView->endDateTime().date() ); 73 mTimeSpanView->endDateTime().date() );
75} 74}
76 75
77void KOTimeSpanView::showDates(const QDate &start, const QDate &end) 76void KOTimeSpanView::showDates(const QDate &start, const QDate &end)
78{ 77{
79 QDate s = start.addDays( -2 ); 78 QDate s = start.addDays( -2 );
80 QDate e = end.addDays( 2 ); 79 QDate e = end.addDays( 2 );
81 80
82 insertItems( s, e ); 81 insertItems( s, e );
83} 82}
84 83
85void KOTimeSpanView::insertItems(const QDate &start, const QDate &end) 84void KOTimeSpanView::insertItems(const QDate &start, const QDate &end)
86{ 85{
87 mTimeSpanView->clear(); 86 mTimeSpanView->clear();
88 mTimeSpanView->setDateRange( start, end ); 87 mTimeSpanView->setDateRange( start, end );
89 88
90 QPtrList<Event> events = calendar()->events( start, end ); 89 QPtrList<Event> events = calendar()->events( start, end );
91 Event *event = events.first(); 90 Event *event = events.first();
92 while( event ) { 91 while( event ) {
93// kdDebug() << "KOTimeSpanView::showDates() add event: " << event->summary() 92// kdDebug() << "KOTimeSpanView::showDates() add event: " << event->summary()
94// << endl; 93// << endl;
95 94
96 mTimeSpanView->addItem( event ); 95 mTimeSpanView->addItem( event );
97 96
98 event = events.next(); 97 event = events.next();
99 } 98 }
100 99
101 mTimeSpanView->updateView(); 100 mTimeSpanView->updateView();
102} 101}
103 102
104void KOTimeSpanView::showEvents(QPtrList<Event> eventList) 103void KOTimeSpanView::showEvents(QPtrList<Event> eventList)
105{ 104{
106} 105}
107 106
108void KOTimeSpanView::changeEventDisplay(Event *, int) 107void KOTimeSpanView::changeEventDisplay(Event *, int)
109{ 108{
110} 109}
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp
index 1c44f2b..abeb068 100644
--- a/korganizer/kotodoeditor.cpp
+++ b/korganizer/kotodoeditor.cpp
@@ -1,373 +1,372 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1997, 1998 Preston Brown 3 Copyright (c) 1997, 1998 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 <qtooltip.h> 25#include <qtooltip.h>
26#include <qframe.h> 26#include <qframe.h>
27#include <qpixmap.h> 27#include <qpixmap.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qhbox.h> 29#include <qhbox.h>
30#include <qdir.h> 30#include <qdir.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qapplication.h> 32#include <qapplication.h>
33 33
34#include <kiconloader.h> 34#include <kiconloader.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kfiledialog.h> 36#include <kfiledialog.h>
37#include <kstandarddirs.h> 37#include <kstandarddirs.h>
38#include <kmessagebox.h> 38#include <kmessagebox.h>
39 39
40#include <libkdepim/categoryselectdialog.h> 40#include <libkdepim/categoryselectdialog.h>
41#include <libkcal/calendarlocal.h> 41#include <libkcal/calendarlocal.h>
42#include <libkcal/calendarresources.h> 42#include <libkcal/calendarresources.h>
43#include <libkcal/resourcecalendar.h> 43#include <libkcal/resourcecalendar.h>
44#include <libkcal/icalformat.h> 44#include <libkcal/icalformat.h>
45#include <kresources/resourceselectdialog.h> 45#include <kresources/resourceselectdialog.h>
46 46
47#include "koprefs.h" 47#include "koprefs.h"
48 48
49#include "kotodoeditor.h" 49#include "kotodoeditor.h"
50#include "kotodoeditor.moc"
51extern int globalFlagBlockAgenda; 50extern int globalFlagBlockAgenda;
52 51
53KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : 52KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) :
54 KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent ) 53 KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent )
55{ 54{
56 mTodo = 0; 55 mTodo = 0;
57 mRelatedTodo = 0; 56 mRelatedTodo = 0;
58 findButton(User1)->hide(); 57 findButton(User1)->hide();
59 init(); 58 init();
60} 59}
61 60
62KOTodoEditor::~KOTodoEditor() 61KOTodoEditor::~KOTodoEditor()
63{ 62{
64 emit dialogClose( mTodo ); 63 emit dialogClose( mTodo );
65} 64}
66 65
67void KOTodoEditor::init() 66void KOTodoEditor::init()
68{ 67{
69 setupGeneral(); 68 setupGeneral();
70 setupAttendeesTab(); 69 setupAttendeesTab();
71} 70}
72void KOTodoEditor::setCategories( QString s ) 71void KOTodoEditor::setCategories( QString s )
73{ 72{
74 mGeneral->setCategories(s); 73 mGeneral->setCategories(s);
75} 74}
76void KOTodoEditor::setSecrecy( int sec ) 75void KOTodoEditor::setSecrecy( int sec )
77{ 76{
78 mGeneral->setSecrecy( sec ); 77 mGeneral->setSecrecy( sec );
79} 78}
80void KOTodoEditor::reload() 79void KOTodoEditor::reload()
81{ 80{
82 if ( mTodo ) readTodo( mTodo ); 81 if ( mTodo ) readTodo( mTodo );
83} 82}
84 83
85void KOTodoEditor::setupGeneral() 84void KOTodoEditor::setupGeneral()
86{ 85{
87 mGeneral = new KOEditorGeneralTodo(this); 86 mGeneral = new KOEditorGeneralTodo(this);
88 connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); 87 connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) );
89 88
90 // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); 89 // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show()));
91 //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)), 90 //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)),
92 // mGeneral,SLOT(setCategories(const QString &))); 91 // mGeneral,SLOT(setCategories(const QString &)));
93 92
94 if (KOPrefs::instance()->mCompactDialogs) { 93 if (KOPrefs::instance()->mCompactDialogs) {
95 QFrame *topFrame = addPage(i18n("General")); 94 QFrame *topFrame = addPage(i18n("General"));
96 95
97 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 96 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
98 if ( QApplication::desktop()->width() < 480 ) { 97 if ( QApplication::desktop()->width() < 480 ) {
99 topLayout->setMargin(1); 98 topLayout->setMargin(1);
100 topLayout->setSpacing(1); 99 topLayout->setSpacing(1);
101 } else { 100 } else {
102 topLayout->setMargin(marginHint()-1); 101 topLayout->setMargin(marginHint()-1);
103 topLayout->setSpacing(spacingHint()-1); 102 topLayout->setSpacing(spacingHint()-1);
104 } 103 }
105 mGeneral->initHeader(topFrame,topLayout); 104 mGeneral->initHeader(topFrame,topLayout);
106 mGeneral->initTime(topFrame,topLayout); 105 mGeneral->initTime(topFrame,topLayout);
107 mGeneral->initAlarm(topFrame,topLayout); 106 mGeneral->initAlarm(topFrame,topLayout);
108 mGeneral->enableAlarm( false ); 107 mGeneral->enableAlarm( false );
109 108
110 109
111 QBoxLayout *priorityLayout; 110 QBoxLayout *priorityLayout;
112 if ( QApplication::desktop()->width() < 500 ) 111 if ( QApplication::desktop()->width() < 500 )
113 priorityLayout = new QVBoxLayout( topLayout ); 112 priorityLayout = new QVBoxLayout( topLayout );
114 else 113 else
115 priorityLayout = new QHBoxLayout( topLayout ); 114 priorityLayout = new QHBoxLayout( topLayout );
116 QWidget* prioWidget = new QWidget (topFrame); 115 QWidget* prioWidget = new QWidget (topFrame);
117 priorityLayout->addWidget( prioWidget ); 116 priorityLayout->addWidget( prioWidget );
118 QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); 117 QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget);
119 118
120 119
121 QIconSet icon; 120 QIconSet icon;
122 if ( QApplication::desktop()->width() < 321 ) 121 if ( QApplication::desktop()->width() < 321 )
123 icon = SmallIcon("fileexport16"); 122 icon = SmallIcon("fileexport16");
124 else 123 else
125 icon = SmallIcon("fileexport"); 124 icon = SmallIcon("fileexport");
126 QPushButton * saveTemplate = new QPushButton( prioWidget); 125 QPushButton * saveTemplate = new QPushButton( prioWidget);
127 saveTemplate->setIconSet (icon ) ; 126 saveTemplate->setIconSet (icon ) ;
128 int size = saveTemplate->sizeHint().height(); 127 int size = saveTemplate->sizeHint().height();
129 saveTemplate->setFixedSize( size, size ); 128 saveTemplate->setFixedSize( size, size );
130 if ( QApplication::desktop()->width() < 321 ) 129 if ( QApplication::desktop()->width() < 321 )
131 icon = SmallIcon("fileimport16"); 130 icon = SmallIcon("fileimport16");
132 else 131 else
133 icon = SmallIcon("fileimport"); 132 icon = SmallIcon("fileimport");
134 QPushButton * loadTemplate = new QPushButton( prioWidget); 133 QPushButton * loadTemplate = new QPushButton( prioWidget);
135 loadTemplate->setIconSet (icon ) ; 134 loadTemplate->setIconSet (icon ) ;
136 loadTemplate->setFixedSize( size, size ); 135 loadTemplate->setFixedSize( size, size );
137 136
138 priorityLayout2->addWidget(loadTemplate); 137 priorityLayout2->addWidget(loadTemplate);
139 priorityLayout2->addWidget(saveTemplate); 138 priorityLayout2->addWidget(saveTemplate);
140 mGeneral->initPriority(prioWidget,priorityLayout2); 139 mGeneral->initPriority(prioWidget,priorityLayout2);
141 mGeneral->initCategories( topFrame, priorityLayout ); 140 mGeneral->initCategories( topFrame, priorityLayout );
142 topLayout->addStretch(1); 141 topLayout->addStretch(1);
143 142
144 QFrame *topFrame2 = addPage(i18n("Details")); 143 QFrame *topFrame2 = addPage(i18n("Details"));
145 144
146 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); 145 QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2);
147 topLayout2->setMargin(marginHint()); 146 topLayout2->setMargin(marginHint());
148 topLayout2->setSpacing(spacingHint()); 147 topLayout2->setSpacing(spacingHint());
149 148
150 QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); 149 QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 );
151 mGeneral->initCompletion(topFrame2,completionLayout); 150 mGeneral->initCompletion(topFrame2,completionLayout);
152 151
153 152
154 mGeneral->initSecrecy( topFrame2, topLayout2 ); 153 mGeneral->initSecrecy( topFrame2, topLayout2 );
155 mGeneral->initDescription(topFrame2,topLayout2); 154 mGeneral->initDescription(topFrame2,topLayout2);
156 155
157 // QHBox * hb = new QHBox ( topFrame2 ); 156 // QHBox * hb = new QHBox ( topFrame2 );
158 // topLayout2->addWidget(hb); 157 // topLayout2->addWidget(hb);
159 // hb->setSpacing( 3 ); 158 // hb->setSpacing( 3 );
160 159
161 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); 160 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
162 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); 161 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
163 162
164 } else { 163 } else {
165 QFrame *topFrame = addPage(i18n("General")); 164 QFrame *topFrame = addPage(i18n("General"));
166 165
167 QBoxLayout *topLayout = new QVBoxLayout(topFrame); 166 QBoxLayout *topLayout = new QVBoxLayout(topFrame);
168 topLayout->setSpacing(spacingHint()); 167 topLayout->setSpacing(spacingHint());
169 168
170 mGeneral->initHeader(topFrame,topLayout); 169 mGeneral->initHeader(topFrame,topLayout);
171 mGeneral->initTime(topFrame,topLayout); 170 mGeneral->initTime(topFrame,topLayout);
172 mGeneral->initStatus(topFrame,topLayout); 171 mGeneral->initStatus(topFrame,topLayout);
173 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); 172 QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout);
174 mGeneral->initAlarm(topFrame,alarmLineLayout); 173 mGeneral->initAlarm(topFrame,alarmLineLayout);
175 mGeneral->initDescription(topFrame,topLayout); 174 mGeneral->initDescription(topFrame,topLayout);
176 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); 175 QBoxLayout *detailsLayout = new QHBoxLayout(topLayout);
177 mGeneral->initCategories( topFrame, detailsLayout ); 176 mGeneral->initCategories( topFrame, detailsLayout );
178 mGeneral->initSecrecy( topFrame, detailsLayout ); 177 mGeneral->initSecrecy( topFrame, detailsLayout );
179 } 178 }
180 mGeneral->finishSetup(); 179 mGeneral->finishSetup();
181 180
182} 181}
183 182
184void KOTodoEditor::editTodo(Todo *todo, bool editDescription) 183void KOTodoEditor::editTodo(Todo *todo, bool editDescription)
185{ 184{
186 //init(); 185 //init();
187 186
188 mTodo = todo; 187 mTodo = todo;
189 readTodo(mTodo); 188 readTodo(mTodo);
190 if ( editDescription ) { 189 if ( editDescription ) {
191 showPage( 1 ); 190 showPage( 1 );
192 mGeneral->setFocusOn( 1 ); 191 mGeneral->setFocusOn( 1 );
193 } else { 192 } else {
194 showPage( 0 ); 193 showPage( 0 );
195 mGeneral->setFocusOn( 2 ); 194 mGeneral->setFocusOn( 2 );
196 } 195 }
197} 196}
198 197
199void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) 198void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay)
200{ 199{
201 //init(); 200 //init();
202 201
203 mTodo = 0; 202 mTodo = 0;
204 setDefaults(due,relatedTodo,allDay); 203 setDefaults(due,relatedTodo,allDay);
205} 204}
206 205
207void KOTodoEditor::loadDefaults() 206void KOTodoEditor::loadDefaults()
208{ 207{
209 setDefaults(QDateTime::currentDateTime().addDays(7),0,false); 208 setDefaults(QDateTime::currentDateTime().addDays(7),0,false);
210} 209}
211 210
212bool KOTodoEditor::processInput( bool emitTime ) 211bool KOTodoEditor::processInput( bool emitTime )
213{ 212{
214 if (!validateInput()) return false; 213 if (!validateInput()) return false;
215 214
216 Todo *todo = 0; 215 Todo *todo = 0;
217 216
218 if (mTodo) todo = mTodo; 217 if (mTodo) todo = mTodo;
219 else { 218 else {
220 todo = new Todo; 219 todo = new Todo;
221 todo->setOrganizer(KOPrefs::instance()->email()); 220 todo->setOrganizer(KOPrefs::instance()->email());
222 } 221 }
223 222
224 writeTodo(todo); 223 writeTodo(todo);
225 if ( emitTime ) { 224 if ( emitTime ) {
226 globalFlagBlockAgenda = 1; 225 globalFlagBlockAgenda = 1;
227 emit showAgendaView( false ); 226 emit showAgendaView( false );
228 if ( todo->hasDueDate() ) 227 if ( todo->hasDueDate() )
229 emit jumpToTime( todo->dtDue().date() ); 228 emit jumpToTime( todo->dtDue().date() );
230 globalFlagBlockAgenda = 2; 229 globalFlagBlockAgenda = 2;
231 } 230 }
232 if (mTodo) { 231 if (mTodo) {
233 todo->setRevision(todo->revision()+1); 232 todo->setRevision(todo->revision()+1);
234 emit todoChanged(todo); 233 emit todoChanged(todo);
235 } else { 234 } else {
236 mCalendar->addTodo(todo); 235 mCalendar->addTodo(todo);
237 mTodo = todo; 236 mTodo = todo;
238 emit todoAdded(todo); 237 emit todoAdded(todo);
239 } 238 }
240 239
241 return true; 240 return true;
242} 241}
243 242
244void KOTodoEditor::deleteTodo() 243void KOTodoEditor::deleteTodo()
245{ 244{
246 if (mTodo) { 245 if (mTodo) {
247 if (KOPrefs::instance()->mConfirm) { 246 if (KOPrefs::instance()->mConfirm) {
248 switch (msgItemDelete()) { 247 switch (msgItemDelete()) {
249 case KMessageBox::Continue: // OK 248 case KMessageBox::Continue: // OK
250 emit todoToBeDeleted(mTodo); 249 emit todoToBeDeleted(mTodo);
251 emit dialogClose(mTodo); 250 emit dialogClose(mTodo);
252 mCalendar->deleteTodo(mTodo); 251 mCalendar->deleteTodo(mTodo);
253 emit todoDeleted(); 252 emit todoDeleted();
254 reject(); 253 reject();
255 break; 254 break;
256 } 255 }
257 } 256 }
258 else { 257 else {
259 emit todoToBeDeleted(mTodo); 258 emit todoToBeDeleted(mTodo);
260 emit dialogClose(mTodo); 259 emit dialogClose(mTodo);
261 mCalendar->deleteTodo(mTodo); 260 mCalendar->deleteTodo(mTodo);
262 emit todoDeleted(); 261 emit todoDeleted();
263 reject(); 262 reject();
264 } 263 }
265 } else { 264 } else {
266 reject(); 265 reject();
267 } 266 }
268} 267}
269 268
270void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) 269void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay)
271{ 270{
272 mRelatedTodo = relatedEvent; 271 mRelatedTodo = relatedEvent;
273 272
274 mGeneral->setDefaults(due,allDay); 273 mGeneral->setDefaults(due,allDay);
275 mDetails->setDefaults(); 274 mDetails->setDefaults();
276 showPage( 0 ); 275 showPage( 0 );
277 if ( mRelatedTodo ) 276 if ( mRelatedTodo )
278 mGeneral->setCategories (mRelatedTodo->categoriesStr ()); 277 mGeneral->setCategories (mRelatedTodo->categoriesStr ());
279 mGeneral->setFocusOn( 2 ); 278 mGeneral->setFocusOn( 2 );
280} 279}
281 280
282void KOTodoEditor::readTodo(Todo *todo) 281void KOTodoEditor::readTodo(Todo *todo)
283{ 282{
284 mGeneral->readTodo(todo); 283 mGeneral->readTodo(todo);
285 mDetails->readEvent(todo); 284 mDetails->readEvent(todo);
286 mRelatedTodo = 0;//todo->relatedTo(); 285 mRelatedTodo = 0;//todo->relatedTo();
287 // categories 286 // categories
288 // mCategoryDialog->setSelected(todo->categories()); 287 // mCategoryDialog->setSelected(todo->categories());
289 288
290 // We should handle read-only events here. 289 // We should handle read-only events here.
291} 290}
292 291
293void KOTodoEditor::writeTodo(Todo *event) 292void KOTodoEditor::writeTodo(Todo *event)
294{ 293{
295 mGeneral->writeTodo(event); 294 mGeneral->writeTodo(event);
296 mDetails->writeEvent(event); 295 mDetails->writeEvent(event);
297 296
298 // set related event, i.e. parent to-do in this case. 297 // set related event, i.e. parent to-do in this case.
299 if (mRelatedTodo) { 298 if (mRelatedTodo) {
300 event->setRelatedTo(mRelatedTodo); 299 event->setRelatedTo(mRelatedTodo);
301 } 300 }
302} 301}
303 302
304bool KOTodoEditor::validateInput() 303bool KOTodoEditor::validateInput()
305{ 304{
306 if (!mGeneral->validateInput()) return false; 305 if (!mGeneral->validateInput()) return false;
307 if (!mDetails->validateInput()) return false; 306 if (!mDetails->validateInput()) return false;
308 return true; 307 return true;
309} 308}
310 309
311int KOTodoEditor::msgItemDelete() 310int KOTodoEditor::msgItemDelete()
312{ 311{
313 return KMessageBox::warningContinueCancel(this, 312 return KMessageBox::warningContinueCancel(this,
314 i18n("This item will be permanently deleted."), 313 i18n("This item will be permanently deleted."),
315 i18n("KOrganizer Confirmation"),i18n("Delete")); 314 i18n("KOrganizer Confirmation"),i18n("Delete"));
316} 315}
317 316
318void KOTodoEditor::modified (int modification) 317void KOTodoEditor::modified (int modification)
319{ 318{
320 if (modification == KOGlobals::CATEGORY_MODIFIED || 319 if (modification == KOGlobals::CATEGORY_MODIFIED ||
321 KOGlobals::UNKNOWN_MODIFIED == modification ) 320 KOGlobals::UNKNOWN_MODIFIED == modification )
322 // mCategoryDialog->setSelected (mTodo->categories ()); 321 // mCategoryDialog->setSelected (mTodo->categories ());
323 mGeneral->modified (mTodo, modification); 322 mGeneral->modified (mTodo, modification);
324 323
325} 324}
326 325
327void KOTodoEditor::slotLoadTemplate() 326void KOTodoEditor::slotLoadTemplate()
328{ 327{
329 328
330 QString fileName =locateLocal( "templates", "todos" ); 329 QString fileName =locateLocal( "templates", "todos" );
331 QDir t_dir; 330 QDir t_dir;
332 if ( !t_dir.exists(fileName) ) 331 if ( !t_dir.exists(fileName) )
333 t_dir.mkdir ( fileName ); 332 t_dir.mkdir ( fileName );
334 fileName += "/todo"; 333 fileName += "/todo";
335 fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this ); 334 fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this );
336 if ( fileName.length() == 0 ) 335 if ( fileName.length() == 0 )
337 return; 336 return;
338 CalendarLocal cal; 337 CalendarLocal cal;
339 ICalFormat format; 338 ICalFormat format;
340 if ( !format.load( &cal, fileName ) ) { 339 if ( !format.load( &cal, fileName ) ) {
341 KMessageBox::error( this, i18n("Error loading template file\n '%1'.") 340 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
342 .arg( fileName ) ); 341 .arg( fileName ) );
343 return ; 342 return ;
344 } 343 }
345 QPtrList<Todo> todos = cal.todos(); 344 QPtrList<Todo> todos = cal.todos();
346 Todo * todo = todos.first(); 345 Todo * todo = todos.first();
347 if ( !todo ) { 346 if ( !todo ) {
348 KMessageBox::error( this, 347 KMessageBox::error( this,
349 i18n("Template does not\ncontain a valid Todo.")); 348 i18n("Template does not\ncontain a valid Todo."));
350 } else { 349 } else {
351 readTodo( todo ); 350 readTodo( todo );
352 } 351 }
353 352
354} 353}
355 354
356void KOTodoEditor::slotSaveTemplate() 355void KOTodoEditor::slotSaveTemplate()
357{ 356{
358 QString fileName =locateLocal( "templates", "todos" ); 357 QString fileName =locateLocal( "templates", "todos" );
359 QDir t_dir; 358 QDir t_dir;
360 if ( !t_dir.exists(fileName) ) 359 if ( !t_dir.exists(fileName) )
361 t_dir.mkdir ( fileName ); 360 t_dir.mkdir ( fileName );
362 fileName += "/todo"; 361 fileName += "/todo";
363 fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this ); 362 fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this );
364 if ( fileName.length() > 0 ) 363 if ( fileName.length() > 0 )
365 saveTemplate( fileName ); 364 saveTemplate( fileName );
366} 365}
367 366
368void KOTodoEditor::saveTemplate( const QString &templateName ) 367void KOTodoEditor::saveTemplate( const QString &templateName )
369{ 368{
370 Todo *todo = new Todo; 369 Todo *todo = new Todo;
371 writeTodo( todo ); 370 writeTodo( todo );
372 saveAsTemplate( todo, templateName ); 371 saveAsTemplate( todo, templateName );
373} 372}
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 0708a69..d9e0a03 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -1,439 +1,438 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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#include <qlayout.h> 24#include <qlayout.h>
25#include <qheader.h> 25#include <qheader.h>
26#include <qcursor.h> 26#include <qcursor.h>
27 27
28#include <qvbox.h> 28#include <qvbox.h>
29#include <kdebug.h> 29#include <kdebug.h>
30#include "koprefs.h" 30#include "koprefs.h"
31#include <klocale.h> 31#include <klocale.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <kiconloader.h> 33#include <kiconloader.h>
34#include <kmessagebox.h> 34#include <kmessagebox.h>
35 35
36#include <libkcal/icaldrag.h> 36#include <libkcal/icaldrag.h>
37#include <libkcal/vcaldrag.h> 37#include <libkcal/vcaldrag.h>
38#include <libkcal/calfilter.h> 38#include <libkcal/calfilter.h>
39#include <libkcal/dndfactory.h> 39#include <libkcal/dndfactory.h>
40#include <libkcal/calendarresources.h> 40#include <libkcal/calendarresources.h>
41#include <libkcal/resourcecalendar.h> 41#include <libkcal/resourcecalendar.h>
42#include <kresources/resourceselectdialog.h> 42#include <kresources/resourceselectdialog.h>
43#ifndef DESKTOP_VERSION 43#ifndef DESKTOP_VERSION
44#include <qpe/qpeapplication.h> 44#include <qpe/qpeapplication.h>
45#else 45#else
46#include <qapplication.h> 46#include <qapplication.h>
47#endif 47#endif
48#ifndef KORG_NOPRINTER 48#ifndef KORG_NOPRINTER
49#include "calprinter.h" 49#include "calprinter.h"
50#endif 50#endif
51#include "docprefs.h" 51#include "docprefs.h"
52 52
53#include "kotodoview.h" 53#include "kotodoview.h"
54using namespace KOrg; 54using namespace KOrg;
55#include "kotodoview.moc"
56 55
57KOTodoListView::KOTodoListView(Calendar *calendar,QWidget *parent, 56KOTodoListView::KOTodoListView(Calendar *calendar,QWidget *parent,
58 const char *name) : 57 const char *name) :
59 KListView(parent,name) 58 KListView(parent,name)
60{ 59{
61 mCalendar = calendar; 60 mCalendar = calendar;
62#ifndef DESKTOP_VERSION 61#ifndef DESKTOP_VERSION
63 QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 62 QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
64#endif 63#endif
65 mOldCurrent = 0; 64 mOldCurrent = 0;
66 mMousePressed = false; 65 mMousePressed = false;
67 66
68 setAcceptDrops(true); 67 setAcceptDrops(true);
69 viewport()->setAcceptDrops(true); 68 viewport()->setAcceptDrops(true);
70 int size = 16; 69 int size = 16;
71 if (qApp->desktop()->width() < 300 ) 70 if (qApp->desktop()->width() < 300 )
72 size = 12; 71 size = 12;
73 setTreeStepSize( size + 6 ); 72 setTreeStepSize( size + 6 );
74 73
75} 74}
76 75
77void KOTodoListView::contentsDragEnterEvent(QDragEnterEvent *e) 76void KOTodoListView::contentsDragEnterEvent(QDragEnterEvent *e)
78{ 77{
79#ifndef KORG_NODND 78#ifndef KORG_NODND
80// kdDebug() << "KOTodoListView::contentsDragEnterEvent" << endl; 79// kdDebug() << "KOTodoListView::contentsDragEnterEvent" << endl;
81 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) && 80 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) &&
82 !QTextDrag::canDecode( e ) ) { 81 !QTextDrag::canDecode( e ) ) {
83 e->ignore(); 82 e->ignore();
84 return; 83 return;
85 } 84 }
86 85
87 mOldCurrent = currentItem(); 86 mOldCurrent = currentItem();
88#endif 87#endif
89} 88}
90 89
91 90
92void KOTodoListView::contentsDragMoveEvent(QDragMoveEvent *e) 91void KOTodoListView::contentsDragMoveEvent(QDragMoveEvent *e)
93{ 92{
94#ifndef KORG_NODND 93#ifndef KORG_NODND
95// kdDebug() << "KOTodoListView::contentsDragMoveEvent" << endl; 94// kdDebug() << "KOTodoListView::contentsDragMoveEvent" << endl;
96 95
97 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) && 96 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) &&
98 !QTextDrag::canDecode( e ) ) { 97 !QTextDrag::canDecode( e ) ) {
99 e->ignore(); 98 e->ignore();
100 return; 99 return;
101 } 100 }
102 101
103 e->accept(); 102 e->accept();
104#endif 103#endif
105} 104}
106 105
107void KOTodoListView::contentsDragLeaveEvent(QDragLeaveEvent *) 106void KOTodoListView::contentsDragLeaveEvent(QDragLeaveEvent *)
108{ 107{
109#ifndef KORG_NODND 108#ifndef KORG_NODND
110// kdDebug() << "KOTodoListView::contentsDragLeaveEvent" << endl; 109// kdDebug() << "KOTodoListView::contentsDragLeaveEvent" << endl;
111 110
112 setCurrentItem(mOldCurrent); 111 setCurrentItem(mOldCurrent);
113 setSelected(mOldCurrent,true); 112 setSelected(mOldCurrent,true);
114#endif 113#endif
115} 114}
116 115
117void KOTodoListView::contentsDropEvent(QDropEvent *e) 116void KOTodoListView::contentsDropEvent(QDropEvent *e)
118{ 117{
119#ifndef KORG_NODND 118#ifndef KORG_NODND
120// kdDebug() << "KOTodoListView::contentsDropEvent" << endl; 119// kdDebug() << "KOTodoListView::contentsDropEvent" << endl;
121 120
122 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) && 121 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) &&
123 !QTextDrag::canDecode( e ) ) { 122 !QTextDrag::canDecode( e ) ) {
124 e->ignore(); 123 e->ignore();
125 return; 124 return;
126 } 125 }
127 126
128 DndFactory factory( mCalendar ); 127 DndFactory factory( mCalendar );
129 Todo *todo = factory.createDropTodo(e); 128 Todo *todo = factory.createDropTodo(e);
130 129
131 if (todo) { 130 if (todo) {
132 e->acceptAction(); 131 e->acceptAction();
133 132
134 KOTodoViewItem *destination = 133 KOTodoViewItem *destination =
135 (KOTodoViewItem *)itemAt(contentsToViewport(e->pos())); 134 (KOTodoViewItem *)itemAt(contentsToViewport(e->pos()));
136 Todo *destinationEvent = 0; 135 Todo *destinationEvent = 0;
137 if (destination) destinationEvent = destination->todo(); 136 if (destination) destinationEvent = destination->todo();
138 137
139 Todo *existingTodo = mCalendar->todo(todo->uid()); 138 Todo *existingTodo = mCalendar->todo(todo->uid());
140 139
141 if(existingTodo) { 140 if(existingTodo) {
142// kdDebug() << "Drop existing Todo" << endl; 141// kdDebug() << "Drop existing Todo" << endl;
143 Incidence *to = destinationEvent; 142 Incidence *to = destinationEvent;
144 while(to) { 143 while(to) {
145 if (to->uid() == todo->uid()) { 144 if (to->uid() == todo->uid()) {
146 KMessageBox::sorry(this, 145 KMessageBox::sorry(this,
147 i18n("Cannot move To-Do to itself or a child of itself"), 146 i18n("Cannot move To-Do to itself or a child of itself"),
148 i18n("Drop To-Do")); 147 i18n("Drop To-Do"));
149 delete todo; 148 delete todo;
150 return; 149 return;
151 } 150 }
152 to = to->relatedTo(); 151 to = to->relatedTo();
153 } 152 }
154 existingTodo->setRelatedTo(destinationEvent); 153 existingTodo->setRelatedTo(destinationEvent);
155 emit todoDropped(todo); 154 emit todoDropped(todo);
156 delete todo; 155 delete todo;
157 } else { 156 } else {
158// kdDebug() << "Drop new Todo" << endl; 157// kdDebug() << "Drop new Todo" << endl;
159 todo->setRelatedTo(destinationEvent); 158 todo->setRelatedTo(destinationEvent);
160 mCalendar->addTodo(todo); 159 mCalendar->addTodo(todo);
161 160
162 emit todoDropped(todo); 161 emit todoDropped(todo);
163 } 162 }
164 } 163 }
165 else { 164 else {
166 QString text; 165 QString text;
167 if (QTextDrag::decode(e,text)) { 166 if (QTextDrag::decode(e,text)) {
168 //QListViewItem *qlvi = itemAt( contentsToViewport(e->pos()) ); 167 //QListViewItem *qlvi = itemAt( contentsToViewport(e->pos()) );
169 KOTodoViewItem *todoi = static_cast<KOTodoViewItem *>(itemAt( contentsToViewport(e->pos()) )); 168 KOTodoViewItem *todoi = static_cast<KOTodoViewItem *>(itemAt( contentsToViewport(e->pos()) ));
170 kdDebug() << "Dropped : " << text << endl; 169 kdDebug() << "Dropped : " << text << endl;
171 QStringList emails = QStringList::split(",",text); 170 QStringList emails = QStringList::split(",",text);
172 for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) { 171 for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) {
173 kdDebug() << " Email: " << (*it) << endl; 172 kdDebug() << " Email: " << (*it) << endl;
174 int pos = (*it).find("<"); 173 int pos = (*it).find("<");
175 QString name = (*it).left(pos); 174 QString name = (*it).left(pos);
176 QString email = (*it).mid(pos); 175 QString email = (*it).mid(pos);
177 if (!email.isEmpty() && todoi) { 176 if (!email.isEmpty() && todoi) {
178 todoi->todo()->addAttendee(new Attendee(name,email)); 177 todoi->todo()->addAttendee(new Attendee(name,email));
179 } 178 }
180 } 179 }
181 } 180 }
182 else { 181 else {
183 kdDebug() << "KOTodoListView::contentsDropEvent(): Todo from drop not decodable" << endl; 182 kdDebug() << "KOTodoListView::contentsDropEvent(): Todo from drop not decodable" << endl;
184 e->ignore(); 183 e->ignore();
185 } 184 }
186 } 185 }
187#endif 186#endif
188} 187}
189 188
190void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) 189void KOTodoListView::contentsMousePressEvent(QMouseEvent* e)
191{ 190{
192 QListView::contentsMousePressEvent(e); 191 QListView::contentsMousePressEvent(e);
193#ifndef KORG_NODND 192#ifndef KORG_NODND
194 QPoint p(contentsToViewport(e->pos())); 193 QPoint p(contentsToViewport(e->pos()));
195 QListViewItem *i = itemAt(p); 194 QListViewItem *i = itemAt(p);
196 if (i) { 195 if (i) {
197 // if the user clicked into the root decoration of the item, don't 196 // if the user clicked into the root decoration of the item, don't
198 // try to start a drag! 197 // try to start a drag!
199 if (p.x() > header()->sectionPos(header()->mapToIndex(0)) + 198 if (p.x() > header()->sectionPos(header()->mapToIndex(0)) +
200 treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) + 199 treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) +
201 itemMargin() || 200 itemMargin() ||
202 p.x() < header()->sectionPos(header()->mapToIndex(0))) { 201 p.x() < header()->sectionPos(header()->mapToIndex(0))) {
203 if (e->button()==Qt::LeftButton) { 202 if (e->button()==Qt::LeftButton) {
204 mPressPos = e->pos(); 203 mPressPos = e->pos();
205 mMousePressed = true; 204 mMousePressed = true;
206 } 205 }
207 } 206 }
208 } 207 }
209#endif 208#endif
210} 209}
211 210
212void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) 211void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e)
213{ 212{
214#ifndef KORG_NODND 213#ifndef KORG_NODND
215// kdDebug() << "KOTodoListView::contentsMouseMoveEvent()" << endl; 214// kdDebug() << "KOTodoListView::contentsMouseMoveEvent()" << endl;
216 QListView::contentsMouseMoveEvent(e); 215 QListView::contentsMouseMoveEvent(e);
217 if (mMousePressed && (mPressPos - e->pos()).manhattanLength() > 216 if (mMousePressed && (mPressPos - e->pos()).manhattanLength() >
218 QApplication::startDragDistance()) { 217 QApplication::startDragDistance()) {
219 mMousePressed = false; 218 mMousePressed = false;
220 QListViewItem *item = itemAt(contentsToViewport(mPressPos)); 219 QListViewItem *item = itemAt(contentsToViewport(mPressPos));
221 if (item) { 220 if (item) {
222// kdDebug() << "Start Drag for item " << item->text(0) << endl; 221// kdDebug() << "Start Drag for item " << item->text(0) << endl;
223 DndFactory factory( mCalendar ); 222 DndFactory factory( mCalendar );
224 ICalDrag *vd = factory.createDragTodo( 223 ICalDrag *vd = factory.createDragTodo(
225 ((KOTodoViewItem *)item)->todo(),viewport()); 224 ((KOTodoViewItem *)item)->todo(),viewport());
226 if (vd->drag()) { 225 if (vd->drag()) {
227 kdDebug() << "KOTodoListView::contentsMouseMoveEvent(): Delete drag source" << endl; 226 kdDebug() << "KOTodoListView::contentsMouseMoveEvent(): Delete drag source" << endl;
228 } 227 }
229/* 228/*
230 QString source = fullPath(item); 229 QString source = fullPath(item);
231 if ( QFile::exists(source) ) { 230 if ( QFile::exists(source) ) {
232 QUriDrag* ud = new QUriDrag(viewport()); 231 QUriDrag* ud = new QUriDrag(viewport());
233 ud->setFilenames( source ); 232 ud->setFilenames( source );
234 if ( ud->drag() ) 233 if ( ud->drag() )
235 QMessageBox::information( this, "Drag source", 234 QMessageBox::information( this, "Drag source",
236 QString("Delete ")+source, "Not implemented" ); 235 QString("Delete ")+source, "Not implemented" );
237*/ 236*/
238 } 237 }
239 } 238 }
240#endif 239#endif
241} 240}
242void KOTodoListView::keyPressEvent ( QKeyEvent * e ) 241void KOTodoListView::keyPressEvent ( QKeyEvent * e )
243{ 242{
244 243
245 QListViewItem* cn; 244 QListViewItem* cn;
246 if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) { 245 if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) {
247 cn = currentItem(); 246 cn = currentItem();
248 if ( cn ) { 247 if ( cn ) {
249 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 248 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
250 if ( ci ){ 249 if ( ci ){
251 if ( e->state() == ShiftButton ) 250 if ( e->state() == ShiftButton )
252 ci->setOn( false ); 251 ci->setOn( false );
253 else 252 else
254 ci->setOn( true ); 253 ci->setOn( true );
255 cn = cn->nextSibling(); 254 cn = cn->nextSibling();
256 if ( cn ) { 255 if ( cn ) {
257 setCurrentItem ( cn ); 256 setCurrentItem ( cn );
258 ensureItemVisible ( cn ); 257 ensureItemVisible ( cn );
259 } 258 }
260 259
261 } 260 }
262 } 261 }
263 262
264 return; 263 return;
265 } 264 }
266 265
267 // qDebug("KOTodoListView::keyPressEvent "); 266 // qDebug("KOTodoListView::keyPressEvent ");
268 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || ( height() > 150 && width() > 200 ) ) { 267 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || ( height() > 150 && width() > 200 ) ) {
269 switch ( e->key() ) { 268 switch ( e->key() ) {
270 case Qt::Key_Down: 269 case Qt::Key_Down:
271 case Qt::Key_Up: 270 case Qt::Key_Up:
272 QListView::keyPressEvent ( e ); 271 QListView::keyPressEvent ( e );
273 break; 272 break;
274 default: 273 default:
275 e->ignore(); 274 e->ignore();
276 break; 275 break;
277 } 276 }
278 return; 277 return;
279 } 278 }
280 e->ignore(); 279 e->ignore();
281} 280}
282void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e) 281void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e)
283{ 282{
284 QListView::contentsMouseReleaseEvent(e); 283 QListView::contentsMouseReleaseEvent(e);
285 mMousePressed = false; 284 mMousePressed = false;
286} 285}
287 286
288void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 287void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
289{ 288{
290 if (!e) return; 289 if (!e) return;
291 290
292 QPoint vp = contentsToViewport(e->pos()); 291 QPoint vp = contentsToViewport(e->pos());
293 292
294 QListViewItem *item = itemAt(vp); 293 QListViewItem *item = itemAt(vp);
295 294
296 emit double_Clicked(item); 295 emit double_Clicked(item);
297 if (!item) return; 296 if (!item) return;
298 297
299 emit doubleClicked(item,vp,0); 298 emit doubleClicked(item,vp,0);
300} 299}
301 300
302///////////////////////////////////////////////////////////////////////////// 301/////////////////////////////////////////////////////////////////////////////
303 302
304KOQuickTodo::KOQuickTodo(QWidget *parent) : 303KOQuickTodo::KOQuickTodo(QWidget *parent) :
305 QLineEdit(parent) 304 QLineEdit(parent)
306{ 305{
307 setText(i18n("Click to add a new Todo")); 306 setText(i18n("Click to add a new Todo"));
308} 307}
309 308
310void KOQuickTodo::focusInEvent(QFocusEvent *ev) 309void KOQuickTodo::focusInEvent(QFocusEvent *ev)
311{ 310{
312 if ( text()==i18n("Click to add a new Todo") ) 311 if ( text()==i18n("Click to add a new Todo") )
313 setText(""); 312 setText("");
314 QLineEdit::focusInEvent(ev); 313 QLineEdit::focusInEvent(ev);
315} 314}
316 315
317void KOQuickTodo::focusOutEvent(QFocusEvent *ev) 316void KOQuickTodo::focusOutEvent(QFocusEvent *ev)
318{ 317{
319 setText(i18n("Click to add a new Todo")); 318 setText(i18n("Click to add a new Todo"));
320 QLineEdit::focusOutEvent(ev); 319 QLineEdit::focusOutEvent(ev);
321} 320}
322 321
323///////////////////////////////////////////////////////////////////////////// 322/////////////////////////////////////////////////////////////////////////////
324 323
325KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : 324KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
326 KOrg::BaseView(calendar,parent,name) 325 KOrg::BaseView(calendar,parent,name)
327{ 326{
328 QBoxLayout *topLayout = new QVBoxLayout(this); 327 QBoxLayout *topLayout = new QVBoxLayout(this);
329 mName = QString ( name ); 328 mName = QString ( name );
330 mBlockUpdate = false; 329 mBlockUpdate = false;
331 mQuickAdd = new KOQuickTodo(this); 330 mQuickAdd = new KOQuickTodo(this);
332 topLayout->addWidget(mQuickAdd); 331 topLayout->addWidget(mQuickAdd);
333 332
334 if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickAdd->hide(); 333 if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickAdd->hide();
335 334
336 mTodoListView = new KOTodoListView(calendar,this); 335 mTodoListView = new KOTodoListView(calendar,this);
337 topLayout->addWidget(mTodoListView); 336 topLayout->addWidget(mTodoListView);
338 //mTodoListView->header()->setMaximumHeight(30); 337 //mTodoListView->header()->setMaximumHeight(30);
339 mTodoListView->setRootIsDecorated(true); 338 mTodoListView->setRootIsDecorated(true);
340 mTodoListView->setAllColumnsShowFocus(true); 339 mTodoListView->setAllColumnsShowFocus(true);
341 340
342 mTodoListView->setShowSortIndicator(true); 341 mTodoListView->setShowSortIndicator(true);
343 342
344 mTodoListView->addColumn(i18n("Todo")); 343 mTodoListView->addColumn(i18n("Todo"));
345 mTodoListView->addColumn(i18n("Prio")); 344 mTodoListView->addColumn(i18n("Prio"));
346 mTodoListView->setColumnAlignment(1,AlignHCenter); 345 mTodoListView->setColumnAlignment(1,AlignHCenter);
347 mTodoListView->addColumn(i18n("Complete")); 346 mTodoListView->addColumn(i18n("Complete"));
348 mTodoListView->setColumnAlignment(2,AlignHCenter); 347 mTodoListView->setColumnAlignment(2,AlignHCenter);
349 mTodoListView->addColumn(i18n("Due Date")); 348 mTodoListView->addColumn(i18n("Due Date"));
350 mTodoListView->setColumnAlignment(3,AlignLeft); 349 mTodoListView->setColumnAlignment(3,AlignLeft);
351 mTodoListView->addColumn(i18n("Due Time")); 350 mTodoListView->addColumn(i18n("Due Time"));
352 mTodoListView->setColumnAlignment(4,AlignHCenter); 351 mTodoListView->setColumnAlignment(4,AlignHCenter);
353 mTodoListView->addColumn(i18n("Cancelled")); 352 mTodoListView->addColumn(i18n("Cancelled"));
354 mTodoListView->addColumn(i18n("Categories")); 353 mTodoListView->addColumn(i18n("Categories"));
355#if 0 354#if 0
356 mTodoListView->addColumn(i18n("Sort Id")); 355 mTodoListView->addColumn(i18n("Sort Id"));
357 mTodoListView->setColumnAlignment(4,AlignHCenter); 356 mTodoListView->setColumnAlignment(4,AlignHCenter);
358#endif 357#endif
359 358
360 mTodoListView->setMinimumHeight( 60 ); 359 mTodoListView->setMinimumHeight( 60 );
361 mTodoListView->setItemsRenameable( true ); 360 mTodoListView->setItemsRenameable( true );
362 mTodoListView->setRenameable( 0 ); 361 mTodoListView->setRenameable( 0 );
363 mTodoListView->setColumnWidth( 0, 120 ); 362 mTodoListView->setColumnWidth( 0, 120 );
364 mTodoListView->setColumnWidthMode(0, QListView::Manual); 363 mTodoListView->setColumnWidthMode(0, QListView::Manual);
365 mTodoListView->setColumnWidthMode(1, QListView::Manual); 364 mTodoListView->setColumnWidthMode(1, QListView::Manual);
366 mTodoListView->setColumnWidthMode(2, QListView::Manual); 365 mTodoListView->setColumnWidthMode(2, QListView::Manual);
367 mTodoListView->setColumnWidthMode(3, QListView::Manual); 366 mTodoListView->setColumnWidthMode(3, QListView::Manual);
368 mTodoListView->setColumnWidthMode(4, QListView::Manual); 367 mTodoListView->setColumnWidthMode(4, QListView::Manual);
369 mTodoListView->setColumnWidthMode(5, QListView::Manual); 368 mTodoListView->setColumnWidthMode(5, QListView::Manual);
370 mTodoListView->setColumnAlignment( 2, AlignCenter ); 369 mTodoListView->setColumnAlignment( 2, AlignCenter );
371#if 0 370#if 0
372 mTodoListView->setColumnWidthMode(6, QListView::Manual); 371 mTodoListView->setColumnWidthMode(6, QListView::Manual);
373#endif 372#endif
374 373
375 mPriorityPopupMenu = new QPopupMenu(this); 374 mPriorityPopupMenu = new QPopupMenu(this);
376 for (int i = 1; i <= 5; i++) { 375 for (int i = 1; i <= 5; i++) {
377 QString label = QString ("%1").arg (i); 376 QString label = QString ("%1").arg (i);
378 mPriority[mPriorityPopupMenu->insertItem (label)] = i; 377 mPriority[mPriorityPopupMenu->insertItem (label)] = i;
379 } 378 }
380 connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int))); 379 connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int)));
381 380
382 mPercentageCompletedPopupMenu = new QPopupMenu(this); 381 mPercentageCompletedPopupMenu = new QPopupMenu(this);
383 for (int i = 0; i <= 100; i+=20) { 382 for (int i = 0; i <= 100; i+=20) {
384 QString label = QString ("%1 %").arg (i); 383 QString label = QString ("%1 %").arg (i);
385 mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i; 384 mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i;
386 } 385 }
387 connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int))); 386 connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int)));
388 387
389 388
390 389
391 mItemPopupMenu = new QPopupMenu(this); 390 mItemPopupMenu = new QPopupMenu(this);
392 mItemPopupMenu->insertItem(i18n("Show..."), this, 391 mItemPopupMenu->insertItem(i18n("Show..."), this,
393 SLOT (showTodo())); 392 SLOT (showTodo()));
394 mItemPopupMenu->insertItem(i18n("Edit..."), this, 393 mItemPopupMenu->insertItem(i18n("Edit..."), this,
395 SLOT (editTodo())); 394 SLOT (editTodo()));
396 mItemPopupMenu->insertItem( i18n("Delete"), this, 395 mItemPopupMenu->insertItem( i18n("Delete"), this,
397 SLOT (deleteTodo())); 396 SLOT (deleteTodo()));
398 mItemPopupMenu->insertItem( i18n("Clone..."), this, 397 mItemPopupMenu->insertItem( i18n("Clone..."), this,
399 SLOT (cloneTodo())); 398 SLOT (cloneTodo()));
400 mItemPopupMenu->insertItem( i18n("Move..."), this, 399 mItemPopupMenu->insertItem( i18n("Move..."), this,
401 SLOT (moveTodo())); 400 SLOT (moveTodo()));
402 mItemPopupMenu->insertItem( i18n("Beam..."), this, 401 mItemPopupMenu->insertItem( i18n("Beam..."), this,
403 SLOT (beamTodo())); 402 SLOT (beamTodo()));
404 mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, 403 mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this,
405 SLOT (cancelTodo())); 404 SLOT (cancelTodo()));
406 mItemPopupMenu->insertSeparator(); 405 mItemPopupMenu->insertSeparator();
407 406
408 mItemPopupMenu->insertItem( i18n("New Todo..."), this, 407 mItemPopupMenu->insertItem( i18n("New Todo..."), this,
409 SLOT (newTodo())); 408 SLOT (newTodo()));
410 mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, 409 mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this,
411 SLOT (newSubTodo())); 410 SLOT (newSubTodo()));
412 mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, 411 mItemPopupMenu->insertItem(i18n("Unparent Todo"), this,
413 SLOT (unparentTodo())); 412 SLOT (unparentTodo()));
414 mItemPopupMenu->insertSeparator(); 413 mItemPopupMenu->insertSeparator();
415 mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed"), 414 mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed"),
416 this, SLOT( purgeCompleted() ) ); 415 this, SLOT( purgeCompleted() ) );
417 mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"), 416 mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"),
418 this, SLOT( toggleCompleted() ),0, 33 ); 417 this, SLOT( toggleCompleted() ),0, 33 );
419 mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), 418 mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"),
420 this, SLOT( toggleQuickTodo() ),0, 34 ); 419 this, SLOT( toggleQuickTodo() ),0, 34 );
421 420
422 mPopupMenu = new QPopupMenu(this); 421 mPopupMenu = new QPopupMenu(this);
423 mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, 422 mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this,
424 SLOT (newTodo()),0,1); 423 SLOT (newTodo()),0,1);
425 mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"), 424 mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"),
426 this, SLOT(purgeCompleted()),0,2); 425 this, SLOT(purgeCompleted()),0,2);
427 mPopupMenu->insertItem(i18n("Show Completed"), 426 mPopupMenu->insertItem(i18n("Show Completed"),
428 this, SLOT( toggleCompleted() ),0,3 ); 427 this, SLOT( toggleCompleted() ),0,3 );
429 mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), 428 mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"),
430 this, SLOT( toggleQuickTodo() ),0,4 ); 429 this, SLOT( toggleQuickTodo() ),0,4 );
431 mDocPrefs = new DocPrefs( name ); 430 mDocPrefs = new DocPrefs( name );
432 431
433 mPopupMenu->setCheckable( true ); 432 mPopupMenu->setCheckable( true );
434 mItemPopupMenu->setCheckable( true ); 433 mItemPopupMenu->setCheckable( true );
435 // Double clicking conflicts with opening/closing the subtree 434 // Double clicking conflicts with opening/closing the subtree
436 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), 435 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ),
437 SLOT( editItem( QListViewItem *) ) ); 436 SLOT( editItem( QListViewItem *) ) );
438 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, 437 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *,
439 const QPoint &,int ) ), 438 const QPoint &,int ) ),
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 88d69c6..fc2bc77 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -1,433 +1,432 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001 4 Copyright (c) 2001
5 Cornelius Schumacher <schumacher@kde.org> 5 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <qwidgetstack.h> 26#include <qwidgetstack.h>
27 27
28#include <kconfig.h> 28#include <kconfig.h>
29#include <kglobal.h> 29#include <kglobal.h>
30#ifndef DESKTOP_VERSION 30#ifndef DESKTOP_VERSION
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#else 32#else
33#include <qapplication.h> 33#include <qapplication.h>
34#endif 34#endif
35#include "calendarview.h" 35#include "calendarview.h"
36#include "datenavigator.h" 36#include "datenavigator.h"
37#include "kotodoview.h" 37#include "kotodoview.h"
38#include "koagendaview.h" 38#include "koagendaview.h"
39#include "kodialogmanager.h" 39#include "kodialogmanager.h"
40#include "komonthview.h" 40#include "komonthview.h"
41#include "kolistview.h" 41#include "kolistview.h"
42#include "kowhatsnextview.h" 42#include "kowhatsnextview.h"
43#include "kojournalview.h" 43#include "kojournalview.h"
44#include "kotimespanview.h" 44#include "kotimespanview.h"
45#include "koprefs.h" 45#include "koprefs.h"
46#include "navigatorbar.h" 46#include "navigatorbar.h"
47 47
48#include "koviewmanager.h" 48#include "koviewmanager.h"
49#include "koviewmanager.moc"
50//extern bool externFlagMonthviewBlockPainting; 49//extern bool externFlagMonthviewBlockPainting;
51 50
52//bool globalFlagBlockPainting = false; 51//bool globalFlagBlockPainting = false;
53int globalFlagBlockAgenda = 0; 52int globalFlagBlockAgenda = 0;
54int globalFlagBlockLabel = 0; 53int globalFlagBlockLabel = 0;
55int globalFlagBlockAgendaItemPaint = 1; 54int globalFlagBlockAgendaItemPaint = 1;
56int globalFlagBlockAgendaItemUpdate = 1; 55int globalFlagBlockAgendaItemUpdate = 1;
57 56
58 57
59KOViewManager::KOViewManager( CalendarView *mainView ) : 58KOViewManager::KOViewManager( CalendarView *mainView ) :
60 QObject(), mMainView( mainView ) 59 QObject(), mMainView( mainView )
61{ 60{
62 mCurrentView = 0; 61 mCurrentView = 0;
63 62
64 mWhatsNextView = 0; 63 mWhatsNextView = 0;
65 mTodoView = 0; 64 mTodoView = 0;
66 mAgendaView = 0; 65 mAgendaView = 0;
67 mMonthView = 0; 66 mMonthView = 0;
68 mListView = 0; 67 mListView = 0;
69 mJournalView = 0; 68 mJournalView = 0;
70 mTimeSpanView = 0; 69 mTimeSpanView = 0;
71 mCurrentAgendaView = 0 ; 70 mCurrentAgendaView = 0 ;
72 mFlagShowNextxDays = false; 71 mFlagShowNextxDays = false;
73} 72}
74 73
75KOViewManager::~KOViewManager() 74KOViewManager::~KOViewManager()
76{ 75{
77} 76}
78 77
79 78
80KOrg::BaseView *KOViewManager::currentView() 79KOrg::BaseView *KOViewManager::currentView()
81{ 80{
82 return mCurrentView; 81 return mCurrentView;
83} 82}
84 83
85void KOViewManager::readSettings(KConfig *config) 84void KOViewManager::readSettings(KConfig *config)
86{ 85{
87 config->setGroup("General"); 86 config->setGroup("General");
88 QString view = config->readEntry("Current View"); 87 QString view = config->readEntry("Current View");
89 if (view == "WhatsNext") showWhatsNextView(); 88 if (view == "WhatsNext") showWhatsNextView();
90 else if (view == "Month") showMonthView(); 89 else if (view == "Month") showMonthView();
91 else if (view == "List") showListView(); 90 else if (view == "List") showListView();
92 else if (view == "Journal") showJournalView(); 91 else if (view == "Journal") showJournalView();
93 else if (view == "TimeSpan") showTimeSpanView(); 92 else if (view == "TimeSpan") showTimeSpanView();
94 else if (view == "Todo") showTodoView(); 93 else if (view == "Todo") showTodoView();
95 else { 94 else {
96 showAgendaView(); 95 showAgendaView();
97 } 96 }
98} 97}
99 98
100void KOViewManager::writeSettings(KConfig *config) 99void KOViewManager::writeSettings(KConfig *config)
101{ 100{
102 config->setGroup("General"); 101 config->setGroup("General");
103 102
104 QString view; 103 QString view;
105 if (mCurrentView == mWhatsNextView) view = "WhatsNext"; 104 if (mCurrentView == mWhatsNextView) view = "WhatsNext";
106 else if (mCurrentView == mMonthView) view = "Month"; 105 else if (mCurrentView == mMonthView) view = "Month";
107 else if (mCurrentView == mListView) view = "List"; 106 else if (mCurrentView == mListView) view = "List";
108 else if (mCurrentView == mJournalView) view = "Journal"; 107 else if (mCurrentView == mJournalView) view = "Journal";
109 else if (mCurrentView == mTimeSpanView) view = "TimeSpan"; 108 else if (mCurrentView == mTimeSpanView) view = "TimeSpan";
110 else if (mCurrentView == mTodoView) view = "Todo"; 109 else if (mCurrentView == mTodoView) view = "Todo";
111 else view = "Agenda"; 110 else view = "Agenda";
112 111
113 config->writeEntry("Current View",view); 112 config->writeEntry("Current View",view);
114 113
115 if (mAgendaView) { 114 if (mAgendaView) {
116 mAgendaView->writeSettings(config); 115 mAgendaView->writeSettings(config);
117 } 116 }
118 if (mTimeSpanView) { 117 if (mTimeSpanView) {
119 mTimeSpanView->writeSettings(config); 118 mTimeSpanView->writeSettings(config);
120 } 119 }
121 if (mListView) { 120 if (mListView) {
122 mListView->writeSettings(config); 121 mListView->writeSettings(config);
123 } 122 }
124 if (mTodoView) { 123 if (mTodoView) {
125 mTodoView->saveLayout(config,"Todo View"); 124 mTodoView->saveLayout(config,"Todo View");
126 } 125 }
127} 126}
128 127
129void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen ) 128void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
130{ 129{
131 130
132 //mFlagShowNextxDays = false; 131 //mFlagShowNextxDays = false;
133 //if(view == mCurrentView) return; 132 //if(view == mCurrentView) return;
134 if ( view == 0 ) { 133 if ( view == 0 ) {
135 view = mCurrentView; 134 view = mCurrentView;
136 if ( view == 0 ) 135 if ( view == 0 )
137 return; 136 return;
138 } 137 }
139 bool full = fullScreen; 138 bool full = fullScreen;
140 if(view == mCurrentView && view != mWhatsNextView ) { 139 if(view == mCurrentView && view != mWhatsNextView ) {
141 if ( mCurrentAgendaView < 0 ) 140 if ( mCurrentAgendaView < 0 )
142 return; 141 return;
143 full = mMainView->leftFrame()->isVisible(); 142 full = mMainView->leftFrame()->isVisible();
144 } else { 143 } else {
145 mCurrentView = view; 144 mCurrentView = view;
146 145
147 // bool full = fullScreen; 146 // bool full = fullScreen;
148 bool isFull = !mMainView->leftFrame()->isVisible(); 147 bool isFull = !mMainView->leftFrame()->isVisible();
149 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen ) 148 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen )
150 full = true; 149 full = true;
151 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen ) 150 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen )
152 full = false; 151 full = false;
153 } 152 }
154 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime(); 153 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime();
155 raiseCurrentView( full ); 154 raiseCurrentView( full );
156 mMainView->processIncidenceSelection( 0 ); 155 mMainView->processIncidenceSelection( 0 );
157 mMainView->updateView(); 156 mMainView->updateView();
158 mMainView->adaptNavigationUnits(); 157 mMainView->adaptNavigationUnits();
159} 158}
160 159
161void KOViewManager::raiseCurrentView( bool fullScreen ) 160void KOViewManager::raiseCurrentView( bool fullScreen )
162{ 161{
163 //qDebug("raiseCurrentView "); 162 //qDebug("raiseCurrentView ");
164 mCurrentAgendaView = 0; 163 mCurrentAgendaView = 0;
165 int wid = mMainView->width() ; 164 int wid = mMainView->width() ;
166 int hei = mMainView->height(); 165 int hei = mMainView->height();
167 if ( mCurrentView == mMonthView ) { 166 if ( mCurrentView == mMonthView ) {
168 mMainView->navigatorBar()->show(); 167 mMainView->navigatorBar()->show();
169 hei -= mMainView->navigatorBar()->sizeHint().height(); 168 hei -= mMainView->navigatorBar()->sizeHint().height();
170 //mMainView->navigatorBar()->hide(); 169 //mMainView->navigatorBar()->hide();
171 } else { 170 } else {
172 mMainView->navigatorBar()->hide(); 171 mMainView->navigatorBar()->hide();
173 } 172 }
174 if ( fullScreen ) { 173 if ( fullScreen ) {
175 mMainView->leftFrame()->hide(); 174 mMainView->leftFrame()->hide();
176 } else { 175 } else {
177 mMainView->leftFrame()->show(); 176 mMainView->leftFrame()->show();
178 if ( KOPrefs::instance()->mVerticalScreen ) 177 if ( KOPrefs::instance()->mVerticalScreen )
179 hei -= mMainView->leftFrame()->height(); 178 hei -= mMainView->leftFrame()->height();
180 else 179 else
181 wid -= mMainView->leftFrame()->width(); 180 wid -= mMainView->leftFrame()->width();
182 } 181 }
183 182
184 if ( globalFlagBlockAgenda == 5 ) { 183 if ( globalFlagBlockAgenda == 5 ) {
185 globalFlagBlockAgenda = 4; 184 globalFlagBlockAgenda = 4;
186 globalFlagBlockAgendaItemPaint = 1; 185 globalFlagBlockAgendaItemPaint = 1;
187 } 186 }
188 mMainView->viewStack()->raiseWidget(mCurrentView); 187 mMainView->viewStack()->raiseWidget(mCurrentView);
189 if ( globalFlagBlockAgenda == 4 ) { 188 if ( globalFlagBlockAgenda == 4 ) {
190 if ( mCurrentView == mAgendaView ) { 189 if ( mCurrentView == mAgendaView ) {
191 //globalFlagBlockAgenda =1 ; 190 //globalFlagBlockAgenda =1 ;
192 if ( KOPrefs::instance()->mSetTimeToDayStartAt ) 191 if ( KOPrefs::instance()->mSetTimeToDayStartAt )
193 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins ); 192 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins );
194 else if ( KOPrefs::instance()->mCenterOnCurrentTime ) 193 else if ( KOPrefs::instance()->mCenterOnCurrentTime )
195 mAgendaView->setStartHour( QTime::currentTime ().hour() ); 194 mAgendaView->setStartHour( QTime::currentTime ().hour() );
196 qApp->processEvents(); 195 qApp->processEvents();
197 //qDebug("qApp->processEvents() "); 196 //qDebug("qApp->processEvents() ");
198 globalFlagBlockAgenda = 0; 197 globalFlagBlockAgenda = 0;
199 mAgendaView->repaintAgenda(); 198 mAgendaView->repaintAgenda();
200 199
201 } 200 }
202 globalFlagBlockAgenda = 0; 201 globalFlagBlockAgenda = 0;
203 } 202 }
204 //qDebug("raiseCurrentView ende "); 203 //qDebug("raiseCurrentView ende ");
205} 204}
206 205
207void KOViewManager::updateView() 206void KOViewManager::updateView()
208{ 207{
209 // qDebug("KOViewManager::updateView() "); 208 // qDebug("KOViewManager::updateView() ");
210 // if we are updating mTodoView, we get endless recursion 209 // if we are updating mTodoView, we get endless recursion
211 if ( mTodoView == mCurrentView ) 210 if ( mTodoView == mCurrentView )
212 return; 211 return;
213 if ( mCurrentView ) mCurrentView->updateView(); 212 if ( mCurrentView ) mCurrentView->updateView();
214 213
215} 214}
216 215
217void KOViewManager::updateView(const QDate &start, const QDate &end) 216void KOViewManager::updateView(const QDate &start, const QDate &end)
218{ 217{
219 // kdDebug() << "KOViewManager::updateView()" << endl; 218 // kdDebug() << "KOViewManager::updateView()" << endl;
220 219
221 if (mCurrentView) mCurrentView->showDates(start, end); 220 if (mCurrentView) mCurrentView->showDates(start, end);
222 221
223 if (mTodoView) mTodoView->updateView(); 222 if (mTodoView) mTodoView->updateView();
224} 223}
225 224
226 225
227void KOViewManager::showWhatsNextView() 226void KOViewManager::showWhatsNextView()
228{ 227{
229 if (!mWhatsNextView) { 228 if (!mWhatsNextView) {
230 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(), 229 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(),
231 "KOViewManager::WhatsNextView"); 230 "KOViewManager::WhatsNextView");
232 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog()); 231 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog());
233 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig())); 232 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig()));
234 addView(mWhatsNextView); 233 addView(mWhatsNextView);
235 } 234 }
236 globalFlagBlockAgenda = 1; 235 globalFlagBlockAgenda = 1;
237 showView(mWhatsNextView, true ); 236 showView(mWhatsNextView, true );
238 mWhatsNextView->updateView(); 237 mWhatsNextView->updateView();
239 238
240} 239}
241 240
242void KOViewManager::showListView() 241void KOViewManager::showListView()
243{ 242{
244 if (!mListView) { 243 if (!mListView) {
245 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView"); 244 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView");
246 addView(mListView); 245 addView(mListView);
247 246
248 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)), 247 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)),
249 mMainView, SLOT(showIncidence(Incidence *))); 248 mMainView, SLOT(showIncidence(Incidence *)));
250 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)), 249 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)),
251 mMainView, SLOT(editIncidence(Incidence *))); 250 mMainView, SLOT(editIncidence(Incidence *)));
252 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)), 251 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)),
253 mMainView, SLOT(deleteIncidence(Incidence *))); 252 mMainView, SLOT(deleteIncidence(Incidence *)));
254 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ), 253 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ),
255 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 254 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
256 connect( mListView, SIGNAL( signalNewEvent() ), 255 connect( mListView, SIGNAL( signalNewEvent() ),
257 mMainView, SLOT( newEvent() ) ); 256 mMainView, SLOT( newEvent() ) );
258 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig())); 257 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig()));
259 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 258 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
260 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 259 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
261 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 260 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
262 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 261 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
263 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 262 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
264 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 263 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
265 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 264 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
266 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 265 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
267 } 266 }
268 // bool temp = mFlagShowNextxDays; 267 // bool temp = mFlagShowNextxDays;
269 //globalFlagBlockPainting = true; 268 //globalFlagBlockPainting = true;
270 globalFlagBlockAgenda = 1; 269 globalFlagBlockAgenda = 1;
271 if ( KOPrefs::instance()->mListViewMonthTimespan ) 270 if ( KOPrefs::instance()->mListViewMonthTimespan )
272 mMainView->dateNavigator()->selectMonth(); 271 mMainView->dateNavigator()->selectMonth();
273 showView(mListView, KOPrefs::instance()->mFullViewTodo); 272 showView(mListView, KOPrefs::instance()->mFullViewTodo);
274 //mFlagShowNextxDays = temp; 273 //mFlagShowNextxDays = temp;
275} 274}
276 275
277void KOViewManager::showAgendaView( bool fullScreen ) 276void KOViewManager::showAgendaView( bool fullScreen )
278{ 277{
279 278
280 mMainView->dialogManager()->hideSearchDialog(); 279 mMainView->dialogManager()->hideSearchDialog();
281 // qDebug("KOViewManager::showAgendaView "); 280 // qDebug("KOViewManager::showAgendaView ");
282 bool full; 281 bool full;
283 full = fullScreen; 282 full = fullScreen;
284 if (!mAgendaView) { 283 if (!mAgendaView) {
285 full = false; 284 full = false;
286 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView"); 285 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView");
287 addView(mAgendaView); 286 addView(mAgendaView);
288#ifndef DESKTOP_VERSION 287#ifndef DESKTOP_VERSION
289 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold ); 288 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold );
290#endif 289#endif
291 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )), 290 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )),
292 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) )); 291 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) ));
293 292
294 // SIGNALS/SLOTS FOR DAY/WEEK VIEW 293 // SIGNALS/SLOTS FOR DAY/WEEK VIEW
295 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)), 294 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)),
296 mMainView, SLOT(newEvent(QDateTime))); 295 mMainView, SLOT(newEvent(QDateTime)));
297 // connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)), 296 // connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)),
298 // mMainView, SLOT(newEvent(QDateTime,QDateTime))); 297 // mMainView, SLOT(newEvent(QDateTime,QDateTime)));
299 connect(mAgendaView,SIGNAL(newEventSignal(QDate)), 298 connect(mAgendaView,SIGNAL(newEventSignal(QDate)),
300 mMainView, SLOT(newEvent(QDate))); 299 mMainView, SLOT(newEvent(QDate)));
301 300
302 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)), 301 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)),
303 mMainView, SLOT(editIncidence(Incidence *))); 302 mMainView, SLOT(editIncidence(Incidence *)));
304 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)), 303 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)),
305 mMainView, SLOT(showIncidence(Incidence *))); 304 mMainView, SLOT(showIncidence(Incidence *)));
306 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)), 305 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)),
307 mMainView, SLOT(deleteIncidence(Incidence *))); 306 mMainView, SLOT(deleteIncidence(Incidence *)));
308 307
309 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ), 308 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ),
310 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 309 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
311 310
312 connect(mAgendaView, SIGNAL( toggleExpand() ), 311 connect(mAgendaView, SIGNAL( toggleExpand() ),
313 mMainView, SLOT( toggleExpand() ) ); 312 mMainView, SLOT( toggleExpand() ) );
314 313
315 connect(mMainView, SIGNAL( calendarViewExpanded( bool ) ), 314 connect(mMainView, SIGNAL( calendarViewExpanded( bool ) ),
316 mAgendaView, SLOT( setExpandedButton( bool ) ) ); 315 mAgendaView, SLOT( setExpandedButton( bool ) ) );
317 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ), 316 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ),
318 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ; 317 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ;
319 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ), 318 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ),
320 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ; 319 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ;
321 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig())); 320 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig()));
322 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView, 321 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView,
323 SLOT( updateTodo( Todo *, int ) ) ); 322 SLOT( updateTodo( Todo *, int ) ) );
324 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )), 323 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )),
325 mMainView, SIGNAL( todoModified( Todo *, int ))); 324 mMainView, SIGNAL( todoModified( Todo *, int )));
326 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 325 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
327 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 326 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
328 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 327 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
329 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 328 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
330 mAgendaView->readSettings(); 329 mAgendaView->readSettings();
331 mAgendaView->updateConfig(); 330 mAgendaView->updateConfig();
332 } 331 }
333 332
334 showView( mAgendaView, full); 333 showView( mAgendaView, full);
335 334
336} 335}
337 336
338void KOViewManager::showDayView() 337void KOViewManager::showDayView()
339{ 338{
340 mFlagShowNextxDays = false; 339 mFlagShowNextxDays = false;
341 globalFlagBlockLabel = 1; 340 globalFlagBlockLabel = 1;
342 globalFlagBlockAgenda = 1; 341 globalFlagBlockAgenda = 1;
343 if ( mCurrentAgendaView != 1 ) 342 if ( mCurrentAgendaView != 1 )
344 mCurrentAgendaView = -1; 343 mCurrentAgendaView = -1;
345 showAgendaView(); 344 showAgendaView();
346 qApp->processEvents(); 345 qApp->processEvents();
347 globalFlagBlockAgenda = 2; 346 globalFlagBlockAgenda = 2;
348 globalFlagBlockLabel = 0; 347 globalFlagBlockLabel = 0;
349 mMainView->dateNavigator()->selectDates( 1 ); 348 mMainView->dateNavigator()->selectDates( 1 );
350 mCurrentAgendaView = 1 ; 349 mCurrentAgendaView = 1 ;
351 350
352} 351}
353 352
354void KOViewManager::showWorkWeekView() 353void KOViewManager::showWorkWeekView()
355{ 354{
356 mFlagShowNextxDays = false; 355 mFlagShowNextxDays = false;
357 globalFlagBlockAgenda = 1; 356 globalFlagBlockAgenda = 1;
358 globalFlagBlockLabel = 1; 357 globalFlagBlockLabel = 1;
359 if ( mCurrentAgendaView != 5 ) 358 if ( mCurrentAgendaView != 5 )
360 mCurrentAgendaView = -1; 359 mCurrentAgendaView = -1;
361 showAgendaView(); 360 showAgendaView();
362 qApp->processEvents(); 361 qApp->processEvents();
363 globalFlagBlockAgenda = 2; 362 globalFlagBlockAgenda = 2;
364 globalFlagBlockLabel = 0; 363 globalFlagBlockLabel = 0;
365 mMainView->dateNavigator()->selectWorkWeek(); 364 mMainView->dateNavigator()->selectWorkWeek();
366 mCurrentAgendaView = 5 ; 365 mCurrentAgendaView = 5 ;
367 366
368} 367}
369 368
370void KOViewManager::showWeekView() 369void KOViewManager::showWeekView()
371{ 370{
372 /* 371 /*
373 globalFlagBlockAgenda = 2; 372 globalFlagBlockAgenda = 2;
374 qDebug("4globalFlagBlockAgenda = 2; "); 373 qDebug("4globalFlagBlockAgenda = 2; ");
375 //globalFlagBlockPainting = true; 374 //globalFlagBlockPainting = true;
376 mMainView->dateNavigator()->selectWeek(); 375 mMainView->dateNavigator()->selectWeek();
377 showAgendaView(); 376 showAgendaView();
378 */ 377 */
379 378
380 379
381 mFlagShowNextxDays = false; 380 mFlagShowNextxDays = false;
382 globalFlagBlockAgenda = 1; 381 globalFlagBlockAgenda = 1;
383 globalFlagBlockLabel = 1; 382 globalFlagBlockLabel = 1;
384 if ( mCurrentAgendaView != 7 ) 383 if ( mCurrentAgendaView != 7 )
385 mCurrentAgendaView = -1; 384 mCurrentAgendaView = -1;
386 showAgendaView(); 385 showAgendaView();
387 qApp->processEvents(); 386 qApp->processEvents();
388 globalFlagBlockAgenda = 2; 387 globalFlagBlockAgenda = 2;
389 globalFlagBlockLabel = 0; 388 globalFlagBlockLabel = 0;
390 mMainView->dateNavigator()->selectWeek(); 389 mMainView->dateNavigator()->selectWeek();
391 mCurrentAgendaView = 7 ; 390 mCurrentAgendaView = 7 ;
392} 391}
393 392
394void KOViewManager::showNextXView() 393void KOViewManager::showNextXView()
395{ 394{
396 395
397 globalFlagBlockAgenda = 1; 396 globalFlagBlockAgenda = 1;
398 if ( mCurrentAgendaView != 3 ) 397 if ( mCurrentAgendaView != 3 )
399 mCurrentAgendaView = -1; 398 mCurrentAgendaView = -1;
400 showAgendaView(KOPrefs::instance()->mFullViewMonth); 399 showAgendaView(KOPrefs::instance()->mFullViewMonth);
401 globalFlagBlockAgenda = 2; 400 globalFlagBlockAgenda = 2;
402 mMainView->dateNavigator()->selectDates( QDate::currentDate(), 401 mMainView->dateNavigator()->selectDates( QDate::currentDate(),
403 KOPrefs::instance()->mNextXDays ); 402 KOPrefs::instance()->mNextXDays );
404 mFlagShowNextxDays = true; 403 mFlagShowNextxDays = true;
405 mCurrentAgendaView = 3 ; 404 mCurrentAgendaView = 3 ;
406} 405}
407bool KOViewManager::showsNextDays() 406bool KOViewManager::showsNextDays()
408{ 407{
409 return mFlagShowNextxDays; 408 return mFlagShowNextxDays;
410} 409}
411void KOViewManager::showMonthView() 410void KOViewManager::showMonthView()
412{ 411{
413 if (!mMonthView) { 412 if (!mMonthView) {
414 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView"); 413 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView");
415 414
416 addView(mMonthView); 415 addView(mMonthView);
417 // mMonthView->show(); 416 // mMonthView->show();
418 // SIGNALS/SLOTS FOR MONTH VIEW 417 // SIGNALS/SLOTS FOR MONTH VIEW
419 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)), 418 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)),
420 mMainView, SLOT(newEvent(QDateTime))); 419 mMainView, SLOT(newEvent(QDateTime)));
421 420
422 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)), 421 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)),
423 mMainView, SLOT(showIncidence(Incidence *))); 422 mMainView, SLOT(showIncidence(Incidence *)));
424 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)), 423 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)),
425 mMainView, SLOT(editIncidence(Incidence *))); 424 mMainView, SLOT(editIncidence(Incidence *)));
426 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)), 425 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)),
427 mMainView, SLOT(deleteIncidence(Incidence *))); 426 mMainView, SLOT(deleteIncidence(Incidence *)));
428 427
429 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ), 428 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ),
430 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 429 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
431 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 430 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
432 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 431 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
433 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 432 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index ffaea37..0547a2e 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -1,429 +1,428 @@
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 19
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qtextcodec.h> 22#include <qtextcodec.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qlabel.h> 24#include <qlabel.h>
25 25
26#include <qapplication.h> 26#include <qapplication.h>
27 27
28#include <kglobal.h> 28#include <kglobal.h>
29#include <klocale.h> 29#include <klocale.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kiconloader.h> 31#include <kiconloader.h>
32#include <kmessagebox.h> 32#include <kmessagebox.h>
33 33
34#include <libkcal/calendar.h> 34#include <libkcal/calendar.h>
35 35
36#ifndef KORG_NOPRINTER 36#ifndef KORG_NOPRINTER
37#include "calprinter.h" 37#include "calprinter.h"
38#endif 38#endif
39#include "koglobals.h" 39#include "koglobals.h"
40#include "koprefs.h" 40#include "koprefs.h"
41#include "koeventviewerdialog.h" 41#include "koeventviewerdialog.h"
42 42
43#include "kowhatsnextview.h" 43#include "kowhatsnextview.h"
44using namespace KOrg; 44using namespace KOrg;
45#include "kowhatsnextview.moc"
46 45
47void WhatsNextTextBrowser::setSource(const QString& n) 46void WhatsNextTextBrowser::setSource(const QString& n)
48{ 47{
49 48
50 if (n.startsWith("event:")) { 49 if (n.startsWith("event:")) {
51 emit showIncidence(n); 50 emit showIncidence(n);
52 return; 51 return;
53 } else if (n.startsWith("todo:")) { 52 } else if (n.startsWith("todo:")) {
54 emit showIncidence(n); 53 emit showIncidence(n);
55 return; 54 return;
56 } else { 55 } else {
57 QTextBrowser::setSource(n); 56 QTextBrowser::setSource(n);
58 } 57 }
59} 58}
60 59
61KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent, 60KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent,
62 const char *name) 61 const char *name)
63 : KOrg::BaseView(calendar, parent, name) 62 : KOrg::BaseView(calendar, parent, name)
64{ 63{
65 // mDateLabel = 64 // mDateLabel =
66 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this); 65 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this);
67 // mDateLabel->setMargin(2); 66 // mDateLabel->setMargin(2);
68 // mDateLabel->setAlignment(AlignCenter); 67 // mDateLabel->setAlignment(AlignCenter);
69 setFont( KOPrefs::instance()->mWhatsNextFont ); 68 setFont( KOPrefs::instance()->mWhatsNextFont );
70 mView = new WhatsNextTextBrowser(this); 69 mView = new WhatsNextTextBrowser(this);
71 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &))); 70 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &)));
72 71
73 mEventViewer = 0; 72 mEventViewer = 0;
74 73
75 QBoxLayout *topLayout = new QVBoxLayout(this); 74 QBoxLayout *topLayout = new QVBoxLayout(this);
76 // topLayout->addWidget(mDateLabel); 75 // topLayout->addWidget(mDateLabel);
77 topLayout->addWidget(mView); 76 topLayout->addWidget(mView);
78} 77}
79 78
80KOWhatsNextView::~KOWhatsNextView() 79KOWhatsNextView::~KOWhatsNextView()
81{ 80{
82} 81}
83 82
84int KOWhatsNextView::maxDatesHint() 83int KOWhatsNextView::maxDatesHint()
85{ 84{
86 return 0; 85 return 0;
87} 86}
88 87
89int KOWhatsNextView::currentDateCount() 88int KOWhatsNextView::currentDateCount()
90{ 89{
91 return 0; 90 return 0;
92} 91}
93 92
94QPtrList<Incidence> KOWhatsNextView::selectedIncidences() 93QPtrList<Incidence> KOWhatsNextView::selectedIncidences()
95{ 94{
96 QPtrList<Incidence> eventList; 95 QPtrList<Incidence> eventList;
97 96
98 return eventList; 97 return eventList;
99} 98}
100 99
101 100
102void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd, 101void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd,
103 const QDate &td) 102 const QDate &td)
104{ 103{
105#ifndef KORG_NOPRINTER 104#ifndef KORG_NOPRINTER
106 calPrinter->preview(CalPrinter::Day, fd, td); 105 calPrinter->preview(CalPrinter::Day, fd, td);
107#endif 106#endif
108} 107}
109void KOWhatsNextView::updateConfig() 108void KOWhatsNextView::updateConfig()
110{ 109{
111 setFont( KOPrefs::instance()->mWhatsNextFont ); 110 setFont( KOPrefs::instance()->mWhatsNextFont );
112 updateView(); 111 updateView();
113 112
114} 113}
115void KOWhatsNextView::updateView() 114void KOWhatsNextView::updateView()
116{ 115{
117 116
118 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate())); 117 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate()));
119 KIconLoader kil("korganizer"); 118 KIconLoader kil("korganizer");
120 QString ipath;// = new QString(); 119 QString ipath;// = new QString();
121 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath); 120 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath);
122 //<big><big><strong>" + date + "</strong></big></big>\n"; 121 //<big><big><strong>" + date + "</strong></big></big>\n";
123 mText = "<table width=\"100%\">\n"; 122 mText = "<table width=\"100%\">\n";
124 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 123 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
125#ifdef DESKTOP_VERSION 124#ifdef DESKTOP_VERSION
126 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; 125 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>";
127#else 126#else
128 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 127 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
129#endif 128#endif
130 // mText += "<img src=\""; 129 // mText += "<img src=\"";
131 // mText += ipath; 130 // mText += ipath;
132 // mText += "\">"; 131 // mText += "\">";
133 mEventDate = QDate::currentDate(); 132 mEventDate = QDate::currentDate();
134#ifdef DESKTOP_VERSION 133#ifdef DESKTOP_VERSION
135 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>"; 134 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>";
136#else 135#else
137 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>"; 136 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>";
138#endif 137#endif
139 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 138 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
140 int iii; 139 int iii;
141 mTodos.clear(); 140 mTodos.clear();
142 QPtrList<Event> events; 141 QPtrList<Event> events;
143 QPtrList<Todo> todos = calendar()->todos(); 142 QPtrList<Todo> todos = calendar()->todos();
144 Todo * todo; 143 Todo * todo;
145 //mText += "<h2>" + i18n("Events: ") + "</h2>\n"; 144 //mText += "<h2>" + i18n("Events: ") + "</h2>\n";
146 int daysToShow = KOPrefs::instance()->mWhatsNextDays ; 145 int daysToShow = KOPrefs::instance()->mWhatsNextDays ;
147 bool itemAdded = false; 146 bool itemAdded = false;
148 for ( iii = 0; iii < daysToShow; ++iii ) { 147 for ( iii = 0; iii < daysToShow; ++iii ) {
149 QString date; 148 QString date;
150 itemAdded = false; 149 itemAdded = false;
151 events = calendar()->events( mEventDate, true ); 150 events = calendar()->events( mEventDate, true );
152 151
153 if ( iii == 0 ) { // today !!! 152 if ( iii == 0 ) { // today !!!
154 todo = todos.first(); 153 todo = todos.first();
155 while(todo) { 154 while(todo) {
156 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) { 155 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) {
157 if ( ! itemAdded ) { 156 if ( ! itemAdded ) {
158 appendDay ( iii, mEventDate ); 157 appendDay ( iii, mEventDate );
159 itemAdded = true; 158 itemAdded = true;
160 159
161 } 160 }
162 appendEvent(todo); 161 appendEvent(todo);
163 } 162 }
164 todo = todos.next(); 163 todo = todos.next();
165 } 164 }
166 } 165 }
167 166
168 167
169 if (events.count() > 0) { 168 if (events.count() > 0) {
170 // mText += "<p></p>"; 169 // mText += "<p></p>";
171 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 170 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
172 // mText += "<h2>"; 171 // mText += "<h2>";
173 //mText += " <img src=\""; 172 //mText += " <img src=\"";
174 //mText += ipath; 173 //mText += ipath;
175 //mText += "\">"; 174 //mText += "\">";
176 if ( ! itemAdded ) { 175 if ( ! itemAdded ) {
177 appendDay ( iii, mEventDate ); 176 appendDay ( iii, mEventDate );
178 itemAdded = true; 177 itemAdded = true;
179 178
180 } 179 }
181 Event *ev = events.first(); 180 Event *ev = events.first();
182 while(ev) { 181 while(ev) {
183 //qDebug("+++++event append %s", ev->summary().latin1()); 182 //qDebug("+++++event append %s", ev->summary().latin1());
184 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 183 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
185 appendEvent(ev, false , iii!= 0 ); 184 appendEvent(ev, false , iii!= 0 );
186 } 185 }
187 ev = events.next(); 186 ev = events.next();
188 } 187 }
189 188
190 //mText += "</table>\n"; 189 //mText += "</table>\n";
191 } 190 }
192 191
193 todo = todos.first(); 192 todo = todos.first();
194 while(todo) { 193 while(todo) {
195 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 194 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
196 if ( ! itemAdded ) { 195 if ( ! itemAdded ) {
197 appendDay ( iii, mEventDate ); 196 appendDay ( iii, mEventDate );
198 itemAdded = true; 197 itemAdded = true;
199 } 198 }
200 appendEvent(todo); 199 appendEvent(todo);
201 } 200 }
202 todo = todos.next(); 201 todo = todos.next();
203 } 202 }
204 if ( !itemAdded && iii == 0 ) { 203 if ( !itemAdded && iii == 0 ) {
205 // appendDay ( iii, mEventDate ); 204 // appendDay ( iii, mEventDate );
206 //mText += "<table>"; 205 //mText += "<table>";
207 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n"; 206 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n";
208 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do. ") +"</em></font></h3>\n"; 207 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do. ") +"</em></font></h3>\n";
209 //mText +="</table>"; 208 //mText +="</table>";
210 } 209 }
211 if ( itemAdded ) 210 if ( itemAdded )
212 mText += "</table>\n"; 211 mText += "</table>\n";
213 mEventDate = mEventDate.addDays( 1 ); 212 mEventDate = mEventDate.addDays( 1 );
214 } 213 }
215 214
216 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios; 215 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios;
217 if (todos.count() > 0 && topmostPrios > 0 ) { 216 if (todos.count() > 0 && topmostPrios > 0 ) {
218 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 217 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
219 // mText += "<h2>"; 218 // mText += "<h2>";
220 //<img src=\""; 219 //<img src=\"";
221 // mText += ipath; 220 // mText += ipath;
222 // mText += "\">"; 221 // mText += "\">";
223 // mText += i18n("Overdue To-Do:") + "</h2>\n"; 222 // mText += i18n("Overdue To-Do:") + "</h2>\n";
224 223
225 //mText += "<ul>\n"; 224 //mText += "<ul>\n";
226 bool gotone = false; 225 bool gotone = false;
227 int priority = 1; 226 int priority = 1;
228 int priosFound = 0; 227 int priosFound = 0;
229#ifdef DESKTOP_VERSION 228#ifdef DESKTOP_VERSION
230 mText +="<p></p>"; 229 mText +="<p></p>";
231#endif 230#endif
232 231
233 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></strong></big></big>\n"; 232 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></strong></big></big>\n";
234 mText += "<ul>\n"; 233 mText += "<ul>\n";
235 while (!gotone && priority<6) { 234 while (!gotone && priority<6) {
236 todo = todos.first(); 235 todo = todos.first();
237 while(todo) { 236 while(todo) {
238 if (!todo->isCompleted() && (todo->priority() == priority) ) { 237 if (!todo->isCompleted() && (todo->priority() == priority) ) {
239 if ( appendTodo(todo) ) 238 if ( appendTodo(todo) )
240 gotone = true; 239 gotone = true;
241 } 240 }
242 todo = todos.next(); 241 todo = todos.next();
243 } 242 }
244 if ( gotone ) { 243 if ( gotone ) {
245 gotone = false; 244 gotone = false;
246 ++priosFound; 245 ++priosFound;
247 if ( priosFound == topmostPrios ) 246 if ( priosFound == topmostPrios )
248 break; 247 break;
249 } 248 }
250 priority++; 249 priority++;
251 // kdDebug() << "adding the todos..." << endl; 250 // kdDebug() << "adding the todos..." << endl;
252 } 251 }
253 mText += "</ul>\n"; 252 mText += "</ul>\n";
254 } 253 }
255 254
256 int replys = 0; 255 int replys = 0;
257 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6)); 256 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6));
258 if (events.count() > 0) { 257 if (events.count() > 0) {
259 Event *ev = events.first(); 258 Event *ev = events.first();
260 while(ev) { 259 while(ev) {
261 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 260 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
262 if (me!=0) { 261 if (me!=0) {
263 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 262 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
264 if (replys == 0) { 263 if (replys == 0) {
265 mText += "<p></p>"; 264 mText += "<p></p>";
266 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 265 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
267 mText += "<h2>"; 266 mText += "<h2>";
268 //<img src=\""; 267 //<img src=\"";
269 // mText += ipath; 268 // mText += ipath;
270 // mText += "\">"; 269 // mText += "\">";
271 mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 270 mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
272 mText += "<table>\n"; 271 mText += "<table>\n";
273 } 272 }
274 replys++; 273 replys++;
275 appendEvent(ev,true); 274 appendEvent(ev,true);
276 } 275 }
277 } 276 }
278 ev = events.next(); 277 ev = events.next();
279 } 278 }
280 } 279 }
281 todos = calendar()->todos(); 280 todos = calendar()->todos();
282 if (todos.count() > 0) { 281 if (todos.count() > 0) {
283 Todo *to = todos.first(); 282 Todo *to = todos.first();
284 while(to) { 283 while(to) {
285 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 284 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
286 if (me!=0) { 285 if (me!=0) {
287 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 286 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
288 if (replys == 0) { 287 if (replys == 0) {
289 mText += "<p></p>"; 288 mText += "<p></p>";
290 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 289 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
291 mText += "<h2>"; 290 mText += "<h2>";
292 //<img src=\""; 291 //<img src=\"";
293 // mText += ipath; 292 // mText += ipath;
294 // mText += "\">"; 293 // mText += "\">";
295 mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 294 mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
296 mText += "<table>\n"; 295 mText += "<table>\n";
297 } 296 }
298 replys++; 297 replys++;
299 appendEvent(to); 298 appendEvent(to);
300 } 299 }
301 } 300 }
302 kdDebug () << "check for todo-replys..." << endl; 301 kdDebug () << "check for todo-replys..." << endl;
303 to = todos.next(); 302 to = todos.next();
304 } 303 }
305 } 304 }
306 if (replys > 0 ) mText += "</table>\n"; 305 if (replys > 0 ) mText += "</table>\n";
307 306
308 307
309 mText += "</td></tr>\n</table>\n"; 308 mText += "</td></tr>\n</table>\n";
310 309
311 kdDebug() << "KOWhatsNextView::updateView: text: " << mText << endl; 310 kdDebug() << "KOWhatsNextView::updateView: text: " << mText << endl;
312 mView->setText(mText); 311 mView->setText(mText);
313 mView->setFocus(); 312 mView->setFocus();
314 313
315 // QPixmap bPix = SmallIcon( "back" ); 314 // QPixmap bPix = SmallIcon( "back" );
316 // qDebug("xxxxxxxxxxxxxxxxxxxxx "); 315 // qDebug("xxxxxxxxxxxxxxxxxxxxx ");
317 // QWidget* test = new QWidget(); 316 // QWidget* test = new QWidget();
318 // test->setBackgroundMode(FixedPixmap ); 317 // test->setBackgroundMode(FixedPixmap );
319 // test->setBackgroundPixmap ( bPix ); 318 // test->setBackgroundPixmap ( bPix );
320 // test->resize( 300, 400 ); 319 // test->resize( 300, 400 );
321 // test->show(); 320 // test->show();
322 // mView->setBackgroundMode(FixedPixmap ); 321 // mView->setBackgroundMode(FixedPixmap );
323 // mView->setBackgroundPixmap ( bPix ); 322 // mView->setBackgroundPixmap ( bPix );
324} 323}
325 324
326void KOWhatsNextView::appendDay( int i, QDate eventDate ) 325void KOWhatsNextView::appendDay( int i, QDate eventDate )
327{ 326{
328 QString date; 327 QString date;
329 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer); 328 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer);
330 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) { 329 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) {
331 if ( i == 0 ) { 330 if ( i == 0 ) {
332 mText += "<table>\n"; 331 mText += "<table>\n";
333 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>"; 332 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>";
334 } 333 }
335 else if ( i == 1 ) 334 else if ( i == 1 )
336 date = "<em><font color=\"#000080\">" + day + "</font></em>" ; 335 date = "<em><font color=\"#000080\">" + day + "</font></em>" ;
337 else date = "<em><font color=\"#000080\">" + day + "</font></em>"; 336 else date = "<em><font color=\"#000080\">" + day + "</font></em>";
338 //mText += "<h2>" + date + "</h2>\n"; 337 //mText += "<h2>" + date + "</h2>\n";
339 mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 338 mText += "<big><big><strong>" + date + "</strong></big></big>\n";
340 mText += "<table>\n"; 339 mText += "<table>\n";
341 340
342 341
343 342
344 } else { 343 } else {
345 if ( i == 0 ) { 344 if ( i == 0 ) {
346 mText += "<table>\n"; 345 mText += "<table>\n";
347 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>"; 346 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>";
348 } 347 }
349 348
350#ifdef DESKTOP_VERSION 349#ifdef DESKTOP_VERSION
351 else if ( i == 1 ) { 350 else if ( i == 1 ) {
352 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ; 351 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ;
353 } 352 }
354 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>"; 353 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>";
355#else 354#else
356 else if ( i == 1 ) { 355 else if ( i == 1 ) {
357 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ; 356 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ;
358 } 357 }
359 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>"; 358 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>";
360 359
361#endif 360#endif
362 //mText += "<h2>" + date + "</h2>\n"; 361 //mText += "<h2>" + date + "</h2>\n";
363 mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 362 mText += "<big><big><strong>" + date + "</strong></big></big>\n";
364 mText += "<table>\n"; 363 mText += "<table>\n";
365 } 364 }
366} 365}
367 366
368 367
369void KOWhatsNextView::showDates(const QDate &, const QDate &) 368void KOWhatsNextView::showDates(const QDate &, const QDate &)
370{ 369{
371 updateView(); 370 updateView();
372} 371}
373 372
374void KOWhatsNextView::showEvents(QPtrList<Event>) 373void KOWhatsNextView::showEvents(QPtrList<Event>)
375{ 374{
376} 375}
377 376
378void KOWhatsNextView::changeEventDisplay(Event *, int action) 377void KOWhatsNextView::changeEventDisplay(Event *, int action)
379{ 378{
380 switch(action) { 379 switch(action) {
381 case KOGlobals::EVENTADDED: 380 case KOGlobals::EVENTADDED:
382 updateView(); 381 updateView();
383 break; 382 break;
384 case KOGlobals::EVENTEDITED: 383 case KOGlobals::EVENTEDITED:
385 updateView(); 384 updateView();
386 break; 385 break;
387 case KOGlobals::EVENTDELETED: 386 case KOGlobals::EVENTDELETED:
388 updateView(); 387 updateView();
389 break; 388 break;
390 default: 389 default:
391 updateView(); 390 updateView();
392 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; 391 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl;
393 } 392 }
394} 393}
395 394
396void KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed ) 395void KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed )
397{ 396{
398 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(21) == QString("last-syncEvent-device") ) 397 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(21) == QString("last-syncEvent-device") )
399 return; 398 return;
400 QDateTime cdt = QDateTime::currentDateTime(); 399 QDateTime cdt = QDateTime::currentDateTime();
401 mText += "<tr><td><b>"; 400 mText += "<tr><td><b>";
402 if (ev->type()=="Event") { 401 if (ev->type()=="Event") {
403 402
404 if (!ev->doesFloat()) { 403 if (!ev->doesFloat()) {
405 Event *event = static_cast<Event *>(ev); 404 Event *event = static_cast<Event *>(ev);
406 QDateTime st,end; 405 QDateTime st,end;
407 if ( event->recurrence()->doesRecur() ) { 406 if ( event->recurrence()->doesRecur() ) {
408 QDate recDate= mEventDate; 407 QDate recDate= mEventDate;
409 int days = event->dtStart().date().daysTo (event->dtEnd().date() ); 408 int days = event->dtStart().date().daysTo (event->dtEnd().date() );
410 while ( ! event->recursOn( recDate ) ) { 409 while ( ! event->recursOn( recDate ) ) {
411 recDate = recDate.addDays( -1 ); 410 recDate = recDate.addDays( -1 );
412 411
413 } 412 }
414 st = QDateTime ( recDate, event->dtStart().time() ); 413 st = QDateTime ( recDate, event->dtStart().time() );
415 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); 414 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() );
416 } 415 }
417 else { 416 else {
418 st = event->dtStart(); 417 st = event->dtStart();
419 end = event->dtEnd(); 418 end = event->dtEnd();
420 } 419 }
421 420
422 if (reply) mText += "on " + event->dtStartDateStr() + ": "; 421 if (reply) mText += "on " + event->dtStartDateStr() + ": ";
423 QString dateText; 422 QString dateText;
424 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); 423 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() );
425 if ( st.date() < mEventDate ) 424 if ( st.date() < mEventDate )
426 dateText = "++:++-"; 425 dateText = "++:++-";
427 else 426 else
428 dateText = event->dtStartTimeStr() + "-"; 427 dateText = event->dtStartTimeStr() + "-";
429 if ( end.date() > mEventDate ) 428 if ( end.date() > mEventDate )
diff --git a/korganizer/ktimeedit.cpp b/korganizer/ktimeedit.cpp
index f9720f6..cf07a1a 100644
--- a/korganizer/ktimeedit.cpp
+++ b/korganizer/ktimeedit.cpp
@@ -1,422 +1,421 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown, Ian Dawes 3 Copyright (c) 1999 Preston Brown, Ian Dawes
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#include <qkeycode.h> 24#include <qkeycode.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qdatetime.h> 26#include <qdatetime.h>
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qapplication.h> 28#include <qapplication.h>
29 29
30#include <kmessagebox.h> 30#include <kmessagebox.h>
31#include <kglobal.h> 31#include <kglobal.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35#include "ktimeedit.h" 35#include "ktimeedit.h"
36#include "koprefs.h" 36#include "koprefs.h"
37#include <qvalidator.h> 37#include <qvalidator.h>
38#include "ktimeedit.moc"
39 38
40// Validator for a time value with only hours and minutes (no seconds) 39// Validator for a time value with only hours and minutes (no seconds)
41// Mostly locale aware. Author: David Faure <faure@kde.org> 40// Mostly locale aware. Author: David Faure <faure@kde.org>
42class KOTimeValidator : public QValidator 41class KOTimeValidator : public QValidator
43{ 42{
44public: 43public:
45 KOTimeValidator(QWidget* parent, const char* name=0) : QValidator(parent, name) {} 44 KOTimeValidator(QWidget* parent, const char* name=0) : QValidator(parent, name) {}
46 45
47 virtual State validate(QString& str, int& /*cursorPos*/) const 46 virtual State validate(QString& str, int& /*cursorPos*/) const
48 { 47 {
49 return Acceptable; 48 return Acceptable;
50 bool ok = false; 49 bool ok = false;
51 // TODO use KLocale::WithoutSeconds in HEAD 50 // TODO use KLocale::WithoutSeconds in HEAD
52 /*QTime time =*/ KGlobal::locale()->readTime(str, &ok); 51 /*QTime time =*/ KGlobal::locale()->readTime(str, &ok);
53 if ( ok ) 52 if ( ok )
54 return Acceptable; 53 return Acceptable;
55 // readTime doesn't help knowing when the string is "Intermediate". 54 // readTime doesn't help knowing when the string is "Intermediate".
56 int length = str.length(); 55 int length = str.length();
57 if ( !str ) // empty string? 56 if ( !str ) // empty string?
58 return Invalid; // there should always be a ':' in it, right? 57 return Invalid; // there should always be a ':' in it, right?
59 // HACK. Not fully locale aware etc. (esp. the separator is '.' in sv_SE...) 58 // HACK. Not fully locale aware etc. (esp. the separator is '.' in sv_SE...)
60 QChar sep = ':'; 59 QChar sep = ':';
61 // I want to allow "HH:", ":MM" and ":" to make editing easier 60 // I want to allow "HH:", ":MM" and ":" to make editing easier
62 if ( str[0] == sep ) 61 if ( str[0] == sep )
63 { 62 {
64 if ( length == 1 ) // just ":" 63 if ( length == 1 ) // just ":"
65 return Intermediate; 64 return Intermediate;
66 QString minutes = str.mid(1); 65 QString minutes = str.mid(1);
67 int m = minutes.toInt(&ok); 66 int m = minutes.toInt(&ok);
68 if ( ok && m >= 0 && m < 60 ) 67 if ( ok && m >= 0 && m < 60 )
69 return Intermediate; 68 return Intermediate;
70 } else if ( str.at(str.length()-1) == sep ) 69 } else if ( str.at(str.length()-1) == sep )
71 { 70 {
72 QString hours = str.left(length-1); 71 QString hours = str.left(length-1);
73 int h = hours.toInt(&ok); 72 int h = hours.toInt(&ok);
74 if ( ok && h >= 0 && h < 24 ) 73 if ( ok && h >= 0 && h < 24 )
75 return Intermediate; 74 return Intermediate;
76 } 75 }
77 return Invalid; 76 return Invalid;
78 } 77 }
79}; 78};
80 79
81// KTimeWidget/QTimeEdit provide nicer editing, but don't provide a combobox. 80// KTimeWidget/QTimeEdit provide nicer editing, but don't provide a combobox.
82// Difficult to get all in one... 81// Difficult to get all in one...
83// But Qt-3.2 will offer QLineEdit::setMask, so a "99:99" mask would help. 82// But Qt-3.2 will offer QLineEdit::setMask, so a "99:99" mask would help.
84KOTimeEdit::KOTimeEdit(QWidget *parent, QTime qt, const char *name) 83KOTimeEdit::KOTimeEdit(QWidget *parent, QTime qt, const char *name)
85 : QComboBox(TRUE, parent, name) 84 : QComboBox(TRUE, parent, name)
86{ 85{
87 setInsertionPolicy(NoInsertion); 86 setInsertionPolicy(NoInsertion);
88 setValidator( new KOTimeValidator( this ) ); 87 setValidator( new KOTimeValidator( this ) );
89 mFlagKeyPressed = false; 88 mFlagKeyPressed = false;
90 89
91 if ( QApplication::desktop()->width() < 650 ) 90 if ( QApplication::desktop()->width() < 650 )
92 setSizeLimit ( 6 ); 91 setSizeLimit ( 6 );
93 mTime = qt; 92 mTime = qt;
94 93
95// mNoTimeString = i18n("No Time"); 94// mNoTimeString = i18n("No Time");
96// insertItem( mNoTimeString ); 95// insertItem( mNoTimeString );
97 96
98 // Fill combo box with selection of times in localized format. 97 // Fill combo box with selection of times in localized format.
99 QTime timeEntry(0,0,0); 98 QTime timeEntry(0,0,0);
100 do { 99 do {
101 insertItem(KGlobal::locale()->formatTime(timeEntry)); 100 insertItem(KGlobal::locale()->formatTime(timeEntry));
102 timeEntry = timeEntry.addSecs(60*15); 101 timeEntry = timeEntry.addSecs(60*15);
103 } while (!timeEntry.isNull()); 102 } while (!timeEntry.isNull());
104 // Add end of day. 103 // Add end of day.
105 insertItem( KGlobal::locale()->formatTime( QTime( 23, 59, 59 ) ) ); 104 insertItem( KGlobal::locale()->formatTime( QTime( 23, 59, 59 ) ) );
106 105
107 updateText(); 106 updateText();
108 setFocusPolicy(QWidget::StrongFocus); 107 setFocusPolicy(QWidget::StrongFocus);
109 108
110 connect(this, SIGNAL(activated(int)), this, SLOT(activ(int))); 109 connect(this, SIGNAL(activated(int)), this, SLOT(activ(int)));
111 connect(this, SIGNAL(highlighted(int)), this, SLOT(hilit(int))); 110 connect(this, SIGNAL(highlighted(int)), this, SLOT(hilit(int)));
112 connect(this,SIGNAL(textChanged(const QString&)),this,SLOT(changedText())); 111 connect(this,SIGNAL(textChanged(const QString&)),this,SLOT(changedText()));
113 QFontMetrics fm ( font() ); 112 QFontMetrics fm ( font() );
114 QString timeString = "24:00"; 113 QString timeString = "24:00";
115 if ( KOPrefs::instance()->mPreferredTime == 1 ) 114 if ( KOPrefs::instance()->mPreferredTime == 1 )
116 timeString = "02:00pm"; 115 timeString = "02:00pm";
117 int addSpace = 32; 116 int addSpace = 32;
118 if ( QApplication::desktop()->width() > 320 ) 117 if ( QApplication::desktop()->width() > 320 )
119 timeString += ":00"; 118 timeString += ":00";
120 setFixedWidth(fm.width( timeString ) + 32 ); 119 setFixedWidth(fm.width( timeString ) + 32 );
121 120
122 // Highlight Background and Textcolor change from default 121 // Highlight Background and Textcolor change from default
123 QPalette palette = QWidget::palette(); 122 QPalette palette = QWidget::palette();
124 unsigned char red, green, blue; 123 unsigned char red, green, blue;
125 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10; 124 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10;
126 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10; 125 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10;
127 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10; 126 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10;
128 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) ); 127 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) );
129 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) ); 128 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) );
130 setPalette( palette ); 129 setPalette( palette );
131} 130}
132 131
133KOTimeEdit::~KOTimeEdit() 132KOTimeEdit::~KOTimeEdit()
134{ 133{
135} 134}
136 135
137bool KOTimeEdit::hasTime() const 136bool KOTimeEdit::hasTime() const
138{ 137{
139 // Can't happen 138 // Can't happen
140 if ( currentText().isEmpty() ) return false; 139 if ( currentText().isEmpty() ) return false;
141 //if ( currentText() == mNoTimeString ) return false; 140 //if ( currentText() == mNoTimeString ) return false;
142 141
143 return true; // always 142 return true; // always
144} 143}
145 144
146QTime KOTimeEdit::getTime() const 145QTime KOTimeEdit::getTime() const
147{ 146{
148 //kdDebug(5850) << "KOTimeEdit::getTime(), currentText() = " << currentText() << endl; 147 //kdDebug(5850) << "KOTimeEdit::getTime(), currentText() = " << currentText() << endl;
149 // TODO use KLocale::WithoutSeconds in HEAD 148 // TODO use KLocale::WithoutSeconds in HEAD
150 QTime time = KGlobal::locale()->readTime(currentText()); 149 QTime time = KGlobal::locale()->readTime(currentText());
151 // kdDebug(5850) << "KOTimeEdit::getTime(): " << time.toString() << endl; 150 // kdDebug(5850) << "KOTimeEdit::getTime(): " << time.toString() << endl;
152 return time; 151 return time;
153} 152}
154/* 153/*
155QSizePolicy KOTimeEdit::sizePolicy() const 154QSizePolicy KOTimeEdit::sizePolicy() const
156{ 155{
157 // Set size policy to Fixed, because edit cannot contain more text than the 156 // Set size policy to Fixed, because edit cannot contain more text than the
158 // string representing the time. It doesn't make sense to provide more space. 157 // string representing the time. It doesn't make sense to provide more space.
159 QSizePolicy sizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); 158 QSizePolicy sizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
160 159
161 return sizePolicy; 160 return sizePolicy;
162} 161}
163*/ 162*/
164void KOTimeEdit::setTime(QTime newTime) 163void KOTimeEdit::setTime(QTime newTime)
165{ 164{
166 if ( mTime != newTime ) 165 if ( mTime != newTime )
167 { 166 {
168 kdDebug(5850) << "KOTimeEdit::setTime(): " << newTime.toString() << endl; 167 kdDebug(5850) << "KOTimeEdit::setTime(): " << newTime.toString() << endl;
169 168
170 mTime = newTime; 169 mTime = newTime;
171 updateText(); 170 updateText();
172 } 171 }
173 172
174} 173}
175 174
176void KOTimeEdit::activ(int i) 175void KOTimeEdit::activ(int i)
177{ 176{
178 // The last entry, 23:59, is a special case 177 // The last entry, 23:59, is a special case
179 if( i == count() - 1 ) 178 if( i == count() - 1 )
180 mTime = QTime( 23, 59, 0 ); 179 mTime = QTime( 23, 59, 0 );
181 else 180 else
182 mTime = QTime(0,0,0).addSecs(i*15*60); 181 mTime = QTime(0,0,0).addSecs(i*15*60);
183 emit timeChanged(mTime); 182 emit timeChanged(mTime);
184} 183}
185 184
186void KOTimeEdit::hilit(int ) 185void KOTimeEdit::hilit(int )
187{ 186{
188 // we don't currently need to do anything here. 187 // we don't currently need to do anything here.
189} 188}
190 189
191void KOTimeEdit::addTime(QTime qt, bool update) 190void KOTimeEdit::addTime(QTime qt, bool update)
192{ 191{
193 // Calculate the new time. 192 // Calculate the new time.
194 //qDebug("add h %d min %d ", qt.hour(),qt.minute() ); 193 //qDebug("add h %d min %d ", qt.hour(),qt.minute() );
195 mTime = mTime.addSecs(qt.minute()*60+qt.hour()*3600); 194 mTime = mTime.addSecs(qt.minute()*60+qt.hour()*3600);
196 // if ( update ) 195 // if ( update )
197 updateText(); 196 updateText();
198 emit timeChanged(mTime); 197 emit timeChanged(mTime);
199} 198}
200 199
201void KOTimeEdit::subTime(QTime qt, bool update) 200void KOTimeEdit::subTime(QTime qt, bool update)
202{ 201{
203 int h, m; 202 int h, m;
204 //qDebug("sub h %d min %d ", qt.hour(),qt.minute() ); 203 //qDebug("sub h %d min %d ", qt.hour(),qt.minute() );
205 204
206 mTime = mTime.addSecs(-(qt.minute()*60+qt.hour()*3600)); 205 mTime = mTime.addSecs(-(qt.minute()*60+qt.hour()*3600));
207 // store the newly calculated time. 206 // store the newly calculated time.
208 // mTime.setHMS(h, m, 0); 207 // mTime.setHMS(h, m, 0);
209 //if ( update ) 208 //if ( update )
210 updateText(); 209 updateText();
211 emit timeChanged(mTime); 210 emit timeChanged(mTime);
212} 211}
213 212
214// void KOTimeEdit::mouseReleaseEvent ( QMouseEvent * ) 213// void KOTimeEdit::mouseReleaseEvent ( QMouseEvent * )
215// { 214// {
216// qDebug("mouseReleaseEvent ( QMouseEvent * ) "); 215// qDebug("mouseReleaseEvent ( QMouseEvent * ) ");
217// } 216// }
218 217
219// void KOTimeEdit::focusInEvent ( QFocusEvent * ) 218// void KOTimeEdit::focusInEvent ( QFocusEvent * )
220// { 219// {
221// qDebug("focusInEvent ( QFocusEvent * ) "); 220// qDebug("focusInEvent ( QFocusEvent * ) ");
222// } 221// }
223 222
224void KOTimeEdit::keyReleaseEvent(QKeyEvent *e) 223void KOTimeEdit::keyReleaseEvent(QKeyEvent *e)
225{ 224{
226 if ( !e->isAutoRepeat() ) { 225 if ( !e->isAutoRepeat() ) {
227 mFlagKeyPressed = false; 226 mFlagKeyPressed = false;
228 } 227 }
229 228
230} 229}
231void KOTimeEdit::setSelect( int from, int to ) 230void KOTimeEdit::setSelect( int from, int to )
232{ 231{
233 if ( KOPrefs::instance()->mHightlightDateTimeEdit) 232 if ( KOPrefs::instance()->mHightlightDateTimeEdit)
234 lineEdit()->setSelection( from , to ); 233 lineEdit()->setSelection( from , to );
235} 234}
236 235
237 236
238void KOTimeEdit::keyPressEvent(QKeyEvent *e) 237void KOTimeEdit::keyPressEvent(QKeyEvent *e)
239{ 238{
240 239
241 qApp->processEvents(); 240 qApp->processEvents();
242 bool hour12Format = ( KOPrefs::instance()->mPreferredTime == 1 ); 241 bool hour12Format = ( KOPrefs::instance()->mPreferredTime == 1 );
243 int maxpos = hour12Format?7:5; 242 int maxpos = hour12Format?7:5;
244 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 243 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
245 e->ignore(); 244 e->ignore();
246 // qDebug(" ignore %d",e->isAutoRepeat() ); 245 // qDebug(" ignore %d",e->isAutoRepeat() );
247 return; 246 return;
248 } 247 }
249 if (! e->isAutoRepeat() ) { 248 if (! e->isAutoRepeat() ) {
250 mFlagKeyPressed = true; 249 mFlagKeyPressed = true;
251 } 250 }
252 // Tap -> Focus Next Widget 251 // Tap -> Focus Next Widget
253 if ( e->key() == Key_Tab ) { 252 if ( e->key() == Key_Tab ) {
254 QComboBox::keyPressEvent(e); 253 QComboBox::keyPressEvent(e);
255 return; 254 return;
256 } 255 }
257 256
258 // save Text from QLineEdit and CursorPosition 257 // save Text from QLineEdit and CursorPosition
259 QString text = lineEdit()->text(); 258 QString text = lineEdit()->text();
260 int cpos = lineEdit()->cursorPosition(); 259 int cpos = lineEdit()->cursorPosition();
261 // qDebug("cpos %d ", cpos); 260 // qDebug("cpos %d ", cpos);
262 261
263 // Switch for arrows, backspace and escape 262 // Switch for arrows, backspace and escape
264 switch(e->key()) { 263 switch(e->key()) {
265 case Key_Escape: 264 case Key_Escape:
266 lineEdit()->deselect(); 265 lineEdit()->deselect();
267 case Key_Tab: 266 case Key_Tab:
268 QComboBox::keyPressEvent(e); 267 QComboBox::keyPressEvent(e);
269 break; 268 break;
270 case Key_Up: 269 case Key_Up:
271 if ( e->state () == Qt::ControlButton ) { 270 if ( e->state () == Qt::ControlButton ) {
272 addTime(QTime(0,15,0), false ); 271 addTime(QTime(0,15,0), false );
273 lineEdit()->setCursorPosition(3); 272 lineEdit()->setCursorPosition(3);
274 setSelect( 3 , 2 ); 273 setSelect( 3 , 2 );
275 } 274 }
276 else 275 else
277 if ( e->state () == Qt::ShiftButton ) { 276 if ( e->state () == Qt::ShiftButton ) {
278 addTime(QTime(1,0,0), false ); 277 addTime(QTime(1,0,0), false );
279 lineEdit()->setCursorPosition(0); 278 lineEdit()->setCursorPosition(0);
280 setSelect( 0 , 2 ); 279 setSelect( 0 , 2 );
281 } 280 }
282 else 281 else
283 // switch time up, cursor location depend 282 // switch time up, cursor location depend
284 switch (cpos) { 283 switch (cpos) {
285 case 7: 284 case 7:
286 case 6: 285 case 6:
287 case 5: 286 case 5:
288 if(!hour12Format) { 287 if(!hour12Format) {
289 lineEdit()->setCursorPosition(cpos = 4); 288 lineEdit()->setCursorPosition(cpos = 4);
290 } else { 289 } else {
291 addTime(QTime(12,0,0), false ); 290 addTime(QTime(12,0,0), false );
292 setSelect ( 5 , 2 ); 291 setSelect ( 5 , 2 );
293 break; 292 break;
294 } 293 }
295 case 4: 294 case 4:
296 addTime(QTime(0,1,0), false ); 295 addTime(QTime(0,1,0), false );
297 setSelect ( cpos , 1 ); 296 setSelect ( cpos , 1 );
298 break; 297 break;
299 case 3: 298 case 3:
300 addTime(QTime(0,10,0), false ); 299 addTime(QTime(0,10,0), false );
301 setSelect ( cpos , 1 ); 300 setSelect ( cpos , 1 );
302 break; 301 break;
303 case 2: 302 case 2:
304 lineEdit()->setCursorPosition(--cpos); 303 lineEdit()->setCursorPosition(--cpos);
305 case 1: 304 case 1:
306 case 0: 305 case 0:
307 addTime(QTime(1,0,0), false ); 306 addTime(QTime(1,0,0), false );
308 setSelect ( 0, 2 ); 307 setSelect ( 0, 2 );
309 break; 308 break;
310 } 309 }
311 break; 310 break;
312 case Key_Down: 311 case Key_Down:
313 if ( e->state () == Qt::ControlButton ) { 312 if ( e->state () == Qt::ControlButton ) {
314 subTime(QTime(0,15,0), false ); 313 subTime(QTime(0,15,0), false );
315 lineEdit()->setCursorPosition(3); 314 lineEdit()->setCursorPosition(3);
316 setSelect( 3 , 2 ); 315 setSelect( 3 , 2 );
317 } 316 }
318 else 317 else
319 if ( e->state () == Qt::ShiftButton ) { 318 if ( e->state () == Qt::ShiftButton ) {
320 subTime(QTime(1,0,0), false ); 319 subTime(QTime(1,0,0), false );
321 lineEdit()->setCursorPosition(0); 320 lineEdit()->setCursorPosition(0);
322 setSelect( 0 , 2 ); 321 setSelect( 0 , 2 );
323 } 322 }
324 else 323 else
325 // switch time down, cursor location depend 324 // switch time down, cursor location depend
326 switch (cpos) { 325 switch (cpos) {
327 case 7: 326 case 7:
328 case 6: 327 case 6:
329 case 5: 328 case 5:
330 if(!hour12Format) { 329 if(!hour12Format) {
331 lineEdit()->setCursorPosition(cpos = 4); 330 lineEdit()->setCursorPosition(cpos = 4);
332 } else { 331 } else {
333 subTime(QTime(12,0,0), false ); 332 subTime(QTime(12,0,0), false );
334 setSelect ( 5 , 2 ); 333 setSelect ( 5 , 2 );
335 break; 334 break;
336 } 335 }
337 case 4: 336 case 4:
338 subTime(QTime(0,1,0), false ); 337 subTime(QTime(0,1,0), false );
339 setSelect ( cpos , 1 ); 338 setSelect ( cpos , 1 );
340 break; 339 break;
341 case 3: 340 case 3:
342 subTime(QTime(0,10,0), false ); 341 subTime(QTime(0,10,0), false );
343 setSelect ( cpos , 1 ); 342 setSelect ( cpos , 1 );
344 break; 343 break;
345 case 2: 344 case 2:
346 lineEdit()->setCursorPosition(--cpos); 345 lineEdit()->setCursorPosition(--cpos);
347 case 1: 346 case 1:
348 case 0: 347 case 0:
349 subTime(QTime(1,0,0), false ); 348 subTime(QTime(1,0,0), false );
350 setSelect ( 0 , 2 ); 349 setSelect ( 0 , 2 );
351 break; 350 break;
352 } 351 }
353 break; 352 break;
354 // set cursor to correct place 353 // set cursor to correct place
355 case Key_Left: 354 case Key_Left:
356 if ( cpos == 3 ) 355 if ( cpos == 3 )
357 --cpos; 356 --cpos;
358 if ( cpos > 0) { 357 if ( cpos > 0) {
359 lineEdit()->setCursorPosition(--cpos); 358 lineEdit()->setCursorPosition(--cpos);
360 setSelect ( cpos , 1 ); 359 setSelect ( cpos , 1 );
361 } 360 }
362 else 361 else
363 setSelect ( 0 , 1 ); 362 setSelect ( 0 , 1 );
364 break; 363 break;
365 // set cursor to correct place 364 // set cursor to correct place
366 case Key_Right: 365 case Key_Right:
367 if ( cpos == 1 ) 366 if ( cpos == 1 )
368 ++cpos; 367 ++cpos;
369 if ( cpos < maxpos ) { 368 if ( cpos < maxpos ) {
370 lineEdit()->setCursorPosition(++cpos); 369 lineEdit()->setCursorPosition(++cpos);
371 setSelect ( cpos , 1 ); 370 setSelect ( cpos , 1 );
372 } 371 }
373 break; 372 break;
374 // rest 373 // rest
375 case Key_Prior: 374 case Key_Prior:
376 subTime(QTime(1,0,0)); 375 subTime(QTime(1,0,0));
377 break; 376 break;
378 case Key_Next: 377 case Key_Next:
379 addTime(QTime(1,0,0)); 378 addTime(QTime(1,0,0));
380 break; 379 break;
381 case Key_Backspace: 380 case Key_Backspace:
382 if ( cpos > 0) { 381 if ( cpos > 0) {
383 if ( cpos == 3 ) 382 if ( cpos == 3 )
384 --cpos; 383 --cpos;
385 if ( cpos > 5) 384 if ( cpos > 5)
386 cpos = 5; 385 cpos = 5;
387 text.at( cpos-1 ) = '0'; 386 text.at( cpos-1 ) = '0';
388 lineEdit()->setText( text ); 387 lineEdit()->setText( text );
389 lineEdit()->setCursorPosition(--cpos); 388 lineEdit()->setCursorPosition(--cpos);
390 setSelect ( cpos , 1 ); 389 setSelect ( cpos , 1 );
391 changedText(); 390 changedText();
392 } 391 }
393 break; 392 break;
394 } // switch arrows 393 } // switch arrows
395 394
396 // if cursor at string end, alltext market and keyEvent don't ArrowLeft -> deselect and cpos 395 // if cursor at string end, alltext market and keyEvent don't ArrowLeft -> deselect and cpos
397 if( cpos > 4 && lineEdit()->markedText().length() == 5 && e->key() != Key_Left ) { 396 if( cpos > 4 && lineEdit()->markedText().length() == 5 && e->key() != Key_Left ) {
398 lineEdit()->deselect(); 397 lineEdit()->deselect();
399 cpos = 0; 398 cpos = 0;
400 lineEdit()->setCursorPosition(cpos); 399 lineEdit()->setCursorPosition(cpos);
401 setSelect(cpos , 1); 400 setSelect(cpos , 1);
402 } 401 }
403 402
404 if ( cpos == 2 ) { 403 if ( cpos == 2 ) {
405 lineEdit()->setCursorPosition(++cpos); 404 lineEdit()->setCursorPosition(++cpos);
406 } 405 }
407 406
408 // num keys when cursorPos preEnd 407 // num keys when cursorPos preEnd
409 if ( cpos < 5 ) { 408 if ( cpos < 5 ) {
410 // switch another keys 409 // switch another keys
411 switch(e->key()) { 410 switch(e->key()) {
412 case Key_Delete: 411 case Key_Delete:
413 text.at( cpos ) = '0'; 412 text.at( cpos ) = '0';
414 lineEdit()->setText( text ); 413 lineEdit()->setText( text );
415 lineEdit()->setCursorPosition(cpos); 414 lineEdit()->setCursorPosition(cpos);
416 setSelect ( cpos , 1 ); 415 setSelect ( cpos , 1 );
417 changedText(); 416 changedText();
418 break; 417 break;
419 case Key_9: 418 case Key_9:
420 case Key_8: 419 case Key_8:
421 case Key_7: 420 case Key_7:
422 case Key_6: 421 case Key_6:
diff --git a/korganizer/lineview.cpp b/korganizer/lineview.cpp
index f1ff29f..e72e41c 100644
--- a/korganizer/lineview.cpp
+++ b/korganizer/lineview.cpp
@@ -1,94 +1,93 @@
1#include <qpainter.h> 1#include <qpainter.h>
2 2
3#include <kdebug.h> 3#include <kdebug.h>
4 4
5#include "koprefs.h" 5#include "koprefs.h"
6 6
7#include "lineview.h" 7#include "lineview.h"
8#include "lineview.moc"
9 8
10LineView::LineView( QWidget *parent, const char *name ) : 9LineView::LineView( QWidget *parent, const char *name ) :
11 QScrollView( parent, name ) 10 QScrollView( parent, name )
12{ 11{
13 mPixelWidth = 1000; 12 mPixelWidth = 1000;
14 13
15 mLines.setAutoDelete( true ); 14 mLines.setAutoDelete( true );
16 15
17 resizeContents( mPixelWidth, contentsHeight() ); 16 resizeContents( mPixelWidth, contentsHeight() );
18 17
19 viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor); 18 viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor);
20} 19}
21 20
22LineView::~LineView() 21LineView::~LineView()
23{ 22{
24} 23}
25 24
26int LineView::pixelWidth() 25int LineView::pixelWidth()
27{ 26{
28 return mPixelWidth; 27 return mPixelWidth;
29} 28}
30 29
31void LineView::addLine( int start, int end ) 30void LineView::addLine( int start, int end )
32{ 31{
33 int count = mLines.count(); 32 int count = mLines.count();
34 33
35 if( start < 0 ) start = 0; 34 if( start < 0 ) start = 0;
36 if( end > mPixelWidth) end = mPixelWidth; 35 if( end > mPixelWidth) end = mPixelWidth;
37 36
38 kdDebug() << "LineView::addLine() col: " << count << " start: " << start 37 kdDebug() << "LineView::addLine() col: " << count << " start: " << start
39 << " end: " << end << endl; 38 << " end: " << end << endl;
40 39
41 mLines.append( new Line( count, start, end ) ); 40 mLines.append( new Line( count, start, end ) );
42} 41}
43 42
44void LineView::clear() 43void LineView::clear()
45{ 44{
46 mLines.clear(); 45 mLines.clear();
47 update(); 46 update();
48} 47}
49 48
50void LineView::drawContents(QPainter* p, int cx, int cy, int cw, int ch) 49void LineView::drawContents(QPainter* p, int cx, int cy, int cw, int ch)
51{ 50{
52// kdDebug() << "LineView::drawContents()" << endl; 51// kdDebug() << "LineView::drawContents()" << endl;
53 52
54 int mGridSpacingX = 10; 53 int mGridSpacingX = 10;
55 int mGridSpacingY = 20; 54 int mGridSpacingY = 20;
56 55
57#if 0 56#if 0
58 // Draw vertical lines of grid 57 // Draw vertical lines of grid
59 // kdDebug() << "drawContents cx: " << cx << " cy: " << cy << " cw: " << cw << " ch: " << ch << endl; 58 // kdDebug() << "drawContents cx: " << cx << " cy: " << cy << " cw: " << cw << " ch: " << ch << endl;
60 int x = ((int)(cx/mGridSpacingX))*mGridSpacingX; 59 int x = ((int)(cx/mGridSpacingX))*mGridSpacingX;
61 while (x < cx + cw) { 60 while (x < cx + cw) {
62 p->drawLine(x,cy,x,cy+ch); 61 p->drawLine(x,cy,x,cy+ch);
63 x+=mGridSpacingX; 62 x+=mGridSpacingX;
64 } 63 }
65#endif 64#endif
66 65
67 // Draw horizontal lines of grid 66 // Draw horizontal lines of grid
68 int y = ((int)(cy/mGridSpacingY))*mGridSpacingY + 10; 67 int y = ((int)(cy/mGridSpacingY))*mGridSpacingY + 10;
69 while (y < cy + ch) { 68 while (y < cy + ch) {
70// kdDebug() << " y: " << y << endl; 69// kdDebug() << " y: " << y << endl;
71 p->drawLine(cx,y,cx+cw,y); 70 p->drawLine(cx,y,cx+cw,y);
72 y+=mGridSpacingY; 71 y+=mGridSpacingY;
73 } 72 }
74 73
75 Line *line; 74 Line *line;
76 for( line = mLines.first(); line; line = mLines.next() ) { 75 for( line = mLines.first(); line; line = mLines.next() ) {
77 int ctop = line->column * 20 + 10 - 5; 76 int ctop = line->column * 20 + 10 - 5;
78 int cbottom = line->column * 20 + 10 + 5; 77 int cbottom = line->column * 20 + 10 + 5;
79 int s = line->start; 78 int s = line->start;
80 int e = line->end; 79 int e = line->end;
81// kdDebug() << " LineView::drawContents(): ctop: " << ctop << " cbottom: " 80// kdDebug() << " LineView::drawContents(): ctop: " << ctop << " cbottom: "
82// << cbottom << " s: " << s << " e: " << e << endl; 81// << cbottom << " s: " << s << " e: " << e << endl;
83 if ( ctop <= (cy+ch) && cbottom >= cy && 82 if ( ctop <= (cy+ch) && cbottom >= cy &&
84 s <= (cx+cw) && e >= cx ) { 83 s <= (cx+cw) && e >= cx ) {
85 if ( s < cx ) s = cx; 84 if ( s < cx ) s = cx;
86 if ( e > (cx+cw) ) e = cx+cw; 85 if ( e > (cx+cw) ) e = cx+cw;
87 if ( ctop < cy ) ctop = cy; 86 if ( ctop < cy ) ctop = cy;
88 if ( cbottom > (cy+ch) ) cbottom = cy+ch; 87 if ( cbottom > (cy+ch) ) cbottom = cy+ch;
89// kdDebug() << " drawContents(): ctop: " << ctop << " cbottom: " 88// kdDebug() << " drawContents(): ctop: " << ctop << " cbottom: "
90// << cbottom << " s: " << s << " e: " << e << endl; 89// << cbottom << " s: " << s << " e: " << e << endl;
91 p->fillRect( s, ctop, e - s + 1, cbottom - ctop + 1, QBrush("red") ); 90 p->fillRect( s, ctop, e - s + 1, cbottom - ctop + 1, QBrush("red") );
92 } 91 }
93 } 92 }
94} 93}
diff --git a/korganizer/navigatorbar.cpp b/korganizer/navigatorbar.cpp
index 1052a99..f339c67 100644
--- a/korganizer/navigatorbar.cpp
+++ b/korganizer/navigatorbar.cpp
@@ -1,199 +1,198 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2003 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 <qstring.h> 25#include <qstring.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qframe.h> 29#include <qframe.h>
30#include <qlabel.h> 30#include <qlabel.h>
31#include <qapplication.h> 31#include <qapplication.h>
32 32
33#include <kdebug.h> 33#include <kdebug.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kiconloader.h> 36#include <kiconloader.h>
37#include "libkdepim/kdatepicker.h" 37#include "libkdepim/kdatepicker.h"
38#include <knotifyclient.h> 38#include <knotifyclient.h>
39#include "kdatetbl.h" 39#include "kdatetbl.h"
40 40
41#include "koglobals.h" 41#include "koglobals.h"
42#include "koprefs.h" 42#include "koprefs.h"
43#ifndef KORG_NOPLUGINS 43#ifndef KORG_NOPLUGINS
44#include "kocore.h" 44#include "kocore.h"
45#endif 45#endif
46 46
47#include <kcalendarsystem.h> 47#include <kcalendarsystem.h>
48 48
49#include "navigatorbar.h" 49#include "navigatorbar.h"
50 50
51NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name ) 51NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name )
52 : QWidget( parent, name ) 52 : QWidget( parent, name )
53{ 53{
54 QBoxLayout *topLayout = new QHBoxLayout( this ); 54 QBoxLayout *topLayout = new QHBoxLayout( this );
55 55
56 // Set up the control buttons and date label 56 // Set up the control buttons and date label
57 mCtrlFrame = new QFrame( this ); 57 mCtrlFrame = new QFrame( this );
58 mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised); 58 mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);
59 mCtrlFrame->setLineWidth(1); 59 mCtrlFrame->setLineWidth(1);
60 60
61 topLayout->addWidget( mCtrlFrame ); 61 topLayout->addWidget( mCtrlFrame );
62 62
63 QFont tfont = font(); 63 QFont tfont = font();
64 if ( QApplication::desktop()->width() >= 480 ) 64 if ( QApplication::desktop()->width() >= 480 )
65 tfont.setPointSize(tfont.pointSize()+2); 65 tfont.setPointSize(tfont.pointSize()+2);
66 tfont.setBold(true); 66 tfont.setBold(true);
67 67
68 bool isRTL = KOGlobals::self()->reverseLayout(); 68 bool isRTL = KOGlobals::self()->reverseLayout();
69#ifndef DESKTOP_VERSION 69#ifndef DESKTOP_VERSION
70 bool isDesktop = false; 70 bool isDesktop = false;
71#else 71#else
72 bool isDesktop = true; 72 bool isDesktop = true;
73#endif 73#endif
74 if ( QString ( name ) == QString("useBigPixmaps") && QApplication::desktop()->width() > 320 ) 74 if ( QString ( name ) == QString("useBigPixmaps") && QApplication::desktop()->width() > 320 )
75 isDesktop = true; 75 isDesktop = true;
76 // Create backward navigation buttons 76 // Create backward navigation buttons
77 mPrevYear = new QPushButton( mCtrlFrame ); 77 mPrevYear = new QPushButton( mCtrlFrame );
78 mPrevYear->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow" ) ); 78 mPrevYear->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow" ) );
79 QToolTip::add( mPrevYear, i18n("Previous Year") ); 79 QToolTip::add( mPrevYear, i18n("Previous Year") );
80 80
81 mPrevMonth = new QPushButton( mCtrlFrame ); 81 mPrevMonth = new QPushButton( mCtrlFrame );
82 mPrevMonth->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") ); 82 mPrevMonth->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") );
83 QToolTip::add( mPrevMonth, i18n("Previous Month") ); 83 QToolTip::add( mPrevMonth, i18n("Previous Month") );
84 84
85 // Create forward navigation buttons 85 // Create forward navigation buttons
86 mNextMonth = new QPushButton( mCtrlFrame ); 86 mNextMonth = new QPushButton( mCtrlFrame );
87 mNextMonth->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") ); 87 mNextMonth->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") );
88 QToolTip::add( mNextMonth, i18n("Next Month") ); 88 QToolTip::add( mNextMonth, i18n("Next Month") );
89 89
90 mNextYear = new QPushButton( mCtrlFrame ); 90 mNextYear = new QPushButton( mCtrlFrame );
91 mNextYear->setPixmap( SmallIcon( isDesktop ? "2rightarrowB": "2rightarrow") ); 91 mNextYear->setPixmap( SmallIcon( isDesktop ? "2rightarrowB": "2rightarrow") );
92 QToolTip::add( mNextYear, i18n("Next Year") ); 92 QToolTip::add( mNextYear, i18n("Next Year") );
93 mSelectMonth = new QPushButton( mCtrlFrame ); 93 mSelectMonth = new QPushButton( mCtrlFrame );
94 // Create month name label 94 // Create month name label
95 //selectMonth->setFont( tfont ); 95 //selectMonth->setFont( tfont );
96 // selectMonth->setAlignment( AlignCenter ); 96 // selectMonth->setAlignment( AlignCenter );
97 //mDateLabel = new QLabel( selectMonth ); 97 //mDateLabel = new QLabel( selectMonth );
98 //mDateLabel->setFont( tfont ); 98 //mDateLabel->setFont( tfont );
99 //mDateLabel->setAlignment( AlignCenter ); 99 //mDateLabel->setAlignment( AlignCenter );
100 if ( QString ( name ) == QString("useBigPixmaps") ) { 100 if ( QString ( name ) == QString("useBigPixmaps") ) {
101 mNextMonth->setFlat( true); 101 mNextMonth->setFlat( true);
102 mNextYear->setFlat( true); 102 mNextYear->setFlat( true);
103 mSelectMonth->setFlat( true); 103 mSelectMonth->setFlat( true);
104 mPrevYear->setFlat( true); 104 mPrevYear->setFlat( true);
105 mPrevMonth->setFlat( true); 105 mPrevMonth->setFlat( true);
106 } 106 }
107 mSelectMonth->setFont( tfont ); 107 mSelectMonth->setFont( tfont );
108 // Set minimum width to width of widest month name label 108 // Set minimum width to width of widest month name label
109 int i; 109 int i;
110 int maxwidth = 0; 110 int maxwidth = 0;
111 QFontMetrics fm ( mSelectMonth->font() ); 111 QFontMetrics fm ( mSelectMonth->font() );
112 int width = fm.width("September '00" ); 112 int width = fm.width("September '00" );
113// for( i = 1; i <= KOGlobals::self()->calendarSystem()->monthsInYear(date); 113// for( i = 1; i <= KOGlobals::self()->calendarSystem()->monthsInYear(date);
114// ++i ) { 114// ++i ) {
115// //int width = fm.width( KOGlobals::self()->calendarSystem()->monthName(i, 115// //int width = fm.width( KOGlobals::self()->calendarSystem()->monthName(i,
116// // KOGlobals::self()->calendarSystem()->year(date) ) + " 2000" ); 116// // KOGlobals::self()->calendarSystem()->year(date) ) + " 2000" );
117// int width = fm.width("September 2000" ); 117// int width = fm.width("September 2000" );
118// if ( width > maxwidth ) maxwidth = width; 118// if ( width > maxwidth ) maxwidth = width;
119// } 119// }
120 maxwidth = width+2; 120 maxwidth = width+2;
121 int size = fm.height()+2; 121 int size = fm.height()+2;
122 if ( QApplication::desktop()->width() >= 480 ) { 122 if ( QApplication::desktop()->width() >= 480 ) {
123 size += 6; 123 size += 6;
124 maxwidth+= 6; 124 maxwidth+= 6;
125 } 125 }
126 mSelectMonth->setFixedWidth( maxwidth ); 126 mSelectMonth->setFixedWidth( maxwidth );
127 mSelectMonth->setFixedHeight( size ); 127 mSelectMonth->setFixedHeight( size );
128 mPrevYear->setFixedHeight( size ); 128 mPrevYear->setFixedHeight( size );
129 mPrevMonth->setFixedHeight( size ); 129 mPrevMonth->setFixedHeight( size );
130 mNextMonth->setFixedHeight( size ); 130 mNextMonth->setFixedHeight( size );
131 mNextYear->setFixedHeight ( size ); 131 mNextYear->setFixedHeight ( size );
132 // set up control frame layout 132 // set up control frame layout
133 QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 ); 133 QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 );
134 ctrlLayout->addWidget( mPrevYear, 3 ); 134 ctrlLayout->addWidget( mPrevYear, 3 );
135 ctrlLayout->addWidget( mPrevMonth, 3 ); 135 ctrlLayout->addWidget( mPrevMonth, 3 );
136 //ctrlLayout->addStretch( 1 ); 136 //ctrlLayout->addStretch( 1 );
137 // ctrlLayout->addSpacing( 1 ); 137 // ctrlLayout->addSpacing( 1 );
138 // ctrlLayout->addWidget( mDateLabel ); 138 // ctrlLayout->addWidget( mDateLabel );
139 ctrlLayout->addWidget( mSelectMonth ); 139 ctrlLayout->addWidget( mSelectMonth );
140 // ctrlLayout->addSpacing( 1 ); 140 // ctrlLayout->addSpacing( 1 );
141 // ctrlLayout->addStretch( 1 ); 141 // ctrlLayout->addStretch( 1 );
142 ctrlLayout->addWidget( mNextMonth, 3 ); 142 ctrlLayout->addWidget( mNextMonth, 3 );
143 ctrlLayout->addWidget( mNextYear, 3 ); 143 ctrlLayout->addWidget( mNextYear, 3 );
144 144
145 connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) ); 145 connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) );
146 connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) ); 146 connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) );
147 connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) ); 147 connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) );
148 connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) ); 148 connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) );
149 connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) ); 149 connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) );
150 mPrevYear->setFocusPolicy(NoFocus); 150 mPrevYear->setFocusPolicy(NoFocus);
151 mPrevMonth->setFocusPolicy(NoFocus); 151 mPrevMonth->setFocusPolicy(NoFocus);
152 mNextMonth->setFocusPolicy(NoFocus); 152 mNextMonth->setFocusPolicy(NoFocus);
153 mNextYear->setFocusPolicy(NoFocus); 153 mNextYear->setFocusPolicy(NoFocus);
154 mSelectMonth->setFocusPolicy(NoFocus); 154 mSelectMonth->setFocusPolicy(NoFocus);
155} 155}
156 156
157NavigatorBar::~NavigatorBar() 157NavigatorBar::~NavigatorBar()
158{ 158{
159} 159}
160 160
161void NavigatorBar::selectMonth() 161void NavigatorBar::selectMonth()
162{ 162{
163 163
164 int month; 164 int month;
165 KPopupFrame* popup = new KPopupFrame(this); 165 KPopupFrame* popup = new KPopupFrame(this);
166 int size = 12; 166 int size = 12;
167 if ( QApplication::desktop()->width() >= 480 ) 167 if ( QApplication::desktop()->width() >= 480 )
168 size = 18; 168 size = 18;
169 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(size, popup); 169 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(size, popup);
170 // ----- 170 // -----
171 picker->resize(picker->sizeHint()); 171 picker->resize(picker->sizeHint());
172 popup->setMainWidget(picker); 172 popup->setMainWidget(picker);
173 picker->setFocus(); 173 picker->setFocus();
174 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 174 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
175 if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height())))) 175 if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height()))))
176 { 176 {
177 month = picker->getResult(); 177 month = picker->getResult();
178 emit monthSelected ( month ); 178 emit monthSelected ( month );
179 } else { 179 } else {
180 KNotifyClient::beep(); 180 KNotifyClient::beep();
181 } 181 }
182 delete popup; 182 delete popup;
183} 183}
184void NavigatorBar::selectDates( const KCal::DateList &dateList ) 184void NavigatorBar::selectDates( const KCal::DateList &dateList )
185{ 185{
186 if (dateList.count() > 0) { 186 if (dateList.count() > 0) {
187 QDate date = dateList.first(); 187 QDate date = dateList.first();
188 188
189 const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem(); 189 const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
190 190
191 // compute the label at the top of the navigator 191 // compute the label at the top of the navigator
192 QString dtstr = i18n(calSys->monthName( date )) + " '" + 192 QString dtstr = i18n(calSys->monthName( date )) + " '" +
193 QString::number( calSys->year( date ) ).right(2); 193 QString::number( calSys->year( date ) ).right(2);
194 194
195 mSelectMonth->setText( dtstr ); 195 mSelectMonth->setText( dtstr );
196 } 196 }
197} 197}
198 198
199#include "navigatorbar.moc"
diff --git a/korganizer/outgoingdialog.cpp b/korganizer/outgoingdialog.cpp
index 4eb64f3..0fc90c4 100644
--- a/korganizer/outgoingdialog.cpp
+++ b/korganizer/outgoingdialog.cpp
@@ -10,385 +10,384 @@
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 19
20#include <kdebug.h> 20#include <kdebug.h>
21 21
22#include <qfile.h> 22#include <qfile.h>
23#include <qdir.h> 23#include <qdir.h>
24#include <qtextstream.h> 24#include <qtextstream.h>
25 25
26#include <kglobal.h> 26#include <kglobal.h>
27#include <klocale.h> 27#include <klocale.h>
28#include <ktempfile.h> 28#include <ktempfile.h>
29#include <kstandarddirs.h> 29#include <kstandarddirs.h>
30 30
31#include <libkcal/event.h> 31#include <libkcal/event.h>
32#include <libkcal/freebusy.h> 32#include <libkcal/freebusy.h>
33//#include <libkcal/imipscheduler.h> 33//#include <libkcal/imipscheduler.h>
34#include <libkcal/dummyscheduler.h> 34#include <libkcal/dummyscheduler.h>
35#include <libkcal/icalformat.h> 35#include <libkcal/icalformat.h>
36#include <libkcal/calendar.h> 36#include <libkcal/calendar.h>
37 37
38#ifndef KORG_NOMAIL 38#ifndef KORG_NOMAIL
39#include "mailscheduler.h" 39#include "mailscheduler.h"
40#endif 40#endif
41 41
42#include "koprefs.h" 42#include "koprefs.h"
43#include "outgoingdialog.h" 43#include "outgoingdialog.h"
44#include "koeventviewerdialog.h" 44#include "koeventviewerdialog.h"
45#include "docprefs.h" 45#include "docprefs.h"
46 46
47ScheduleItemOut::ScheduleItemOut(QListView *parent,IncidenceBase *ev, 47ScheduleItemOut::ScheduleItemOut(QListView *parent,IncidenceBase *ev,
48 Scheduler::Method method, 48 Scheduler::Method method,
49 const QString &recipients) 49 const QString &recipients)
50 : QListViewItem(parent) 50 : QListViewItem(parent)
51{ 51{
52 mIncidence = ev; 52 mIncidence = ev;
53 mMethod = method; 53 mMethod = method;
54 mRecipients = recipients; 54 mRecipients = recipients;
55 55
56// kdDebug() << "ScheduleItemOut: setting the summary" << endl; 56// kdDebug() << "ScheduleItemOut: setting the summary" << endl;
57 //Set the summary 57 //Set the summary
58 if(ev->type() != "FreeBusy") { 58 if(ev->type() != "FreeBusy") {
59 Incidence *incidence = static_cast<Incidence *>(ev); 59 Incidence *incidence = static_cast<Incidence *>(ev);
60 setText(0,incidence->summary()); 60 setText(0,incidence->summary());
61 } else { 61 } else {
62 setText(0,i18n("Free Busy Object")); 62 setText(0,i18n("Free Busy Object"));
63 } 63 }
64 64
65// kdDebug() << "ScheduleItemOut: checking if the object is an event" << endl; 65// kdDebug() << "ScheduleItemOut: checking if the object is an event" << endl;
66 //If the object is an event 66 //If the object is an event
67 if(ev->type()=="Event") { 67 if(ev->type()=="Event") {
68 Event *event = static_cast<Event *>(ev); 68 Event *event = static_cast<Event *>(ev);
69 69
70 setText(1,event->dtStartDateStr()); 70 setText(1,event->dtStartDateStr());
71 if (event->doesFloat()) { //If the event floats set the start and end times to no time 71 if (event->doesFloat()) { //If the event floats set the start and end times to no time
72 setText(2,i18n("no time")); 72 setText(2,i18n("no time"));
73 setText(4,i18n("no time")); 73 setText(4,i18n("no time"));
74 } else { //If it does not float 74 } else { //If it does not float
75 setText(2,event->dtStartTimeStr()); 75 setText(2,event->dtStartTimeStr());
76 if (event->hasDuration()) { 76 if (event->hasDuration()) {
77 setText(4,event->dtEndTimeStr()); 77 setText(4,event->dtEndTimeStr());
78 } else { 78 } else {
79 setText(4,i18n("no time")); 79 setText(4,i18n("no time"));
80 } 80 }
81 } 81 }
82 if (event->hasEndDate()) { 82 if (event->hasEndDate()) {
83 setText(3,event->dtEndDateStr()); 83 setText(3,event->dtEndDateStr());
84 } 84 }
85 else { 85 else {
86 setText(3,i18n("no time")); 86 setText(3,i18n("no time"));
87 } 87 }
88 } 88 }
89 89
90 //If the object is an Todo 90 //If the object is an Todo
91 if(ev->type()=="Todo") { 91 if(ev->type()=="Todo") {
92 Todo *event = static_cast<Todo *>(ev); 92 Todo *event = static_cast<Todo *>(ev);
93 if (event->hasStartDate()) { 93 if (event->hasStartDate()) {
94 setText(1,event->dtStartDateStr()); 94 setText(1,event->dtStartDateStr());
95 if (!event->doesFloat()) { 95 if (!event->doesFloat()) {
96 setText(2,event->dtStartTimeStr()); 96 setText(2,event->dtStartTimeStr());
97 } 97 }
98 } 98 }
99 if (event->hasDueDate()) { 99 if (event->hasDueDate()) {
100 setText(3,event->dtDueDateStr()); 100 setText(3,event->dtDueDateStr());
101 if (!event->doesFloat()) { 101 if (!event->doesFloat()) {
102 setText(4,event->dtDueTimeStr()); 102 setText(4,event->dtDueTimeStr());
103 } 103 }
104 } 104 }
105 } 105 }
106 106
107// kdDebug() << "ScheduleItemOut: checking if the object is a FreeBusy object" << endl; 107// kdDebug() << "ScheduleItemOut: checking if the object is a FreeBusy object" << endl;
108 //If the object is a freebusy object 108 //If the object is a freebusy object
109 if(ev->type() == "FreeBusy") { 109 if(ev->type() == "FreeBusy") {
110 FreeBusy *freebusy = static_cast<FreeBusy *>(ev); 110 FreeBusy *freebusy = static_cast<FreeBusy *>(ev);
111 111
112 setText(1,freebusy->dtStartDateStr()); 112 setText(1,freebusy->dtStartDateStr());
113 setText(2,freebusy->dtStartTimeStr()); 113 setText(2,freebusy->dtStartTimeStr());
114 //Must try and get this to the users local settings 114 //Must try and get this to the users local settings
115 setText(3,KGlobal::locale()->formatDate( freebusy->dtEnd().date() ) ); 115 setText(3,KGlobal::locale()->formatDate( freebusy->dtEnd().date() ) );
116 setText(4,KGlobal::locale()->formatTime( freebusy->dtEnd().time() ) ); 116 setText(4,KGlobal::locale()->formatTime( freebusy->dtEnd().time() ) );
117 } 117 }
118 118
119// kdDebug() << "ScheduleItemOut: Setting the method" << endl; 119// kdDebug() << "ScheduleItemOut: Setting the method" << endl;
120 //Set the Method 120 //Set the Method
121 setText(5,Scheduler::translatedMethodName(mMethod)); 121 setText(5,Scheduler::translatedMethodName(mMethod));
122} 122}
123 123
124OutgoingDialog::OutgoingDialog(Calendar *calendar,QWidget* parent, 124OutgoingDialog::OutgoingDialog(Calendar *calendar,QWidget* parent,
125 const char* name,bool modal, 125 const char* name,bool modal,
126 WFlags fl) 126 WFlags fl)
127 : OutgoingDialog_base(parent,name,modal,fl) 127 : OutgoingDialog_base(parent,name,modal,fl)
128{ 128{
129 mCalendar = calendar; 129 mCalendar = calendar;
130 130
131 mFormat = new ICalFormat; 131 mFormat = new ICalFormat;
132 132
133 if (KOPrefs::instance()->mIMIPScheduler == KOPrefs::IMIPDummy ) { 133 if (KOPrefs::instance()->mIMIPScheduler == KOPrefs::IMIPDummy ) {
134 mScheduler = new DummyScheduler(mCalendar); 134 mScheduler = new DummyScheduler(mCalendar);
135 } else { 135 } else {
136#ifndef KORG_NOMAIL 136#ifndef KORG_NOMAIL
137 mScheduler = new MailScheduler(mCalendar); 137 mScheduler = new MailScheduler(mCalendar);
138#else 138#else
139 mScheduler = new DummyScheduler(mCalendar); 139 mScheduler = new DummyScheduler(mCalendar);
140#endif 140#endif
141 } 141 }
142 mMessageListView->setColumnAlignment(1,AlignHCenter); 142 mMessageListView->setColumnAlignment(1,AlignHCenter);
143 mMessageListView->setColumnAlignment(2,AlignHCenter); 143 mMessageListView->setColumnAlignment(2,AlignHCenter);
144 mMessageListView->setColumnAlignment(3,AlignHCenter); 144 mMessageListView->setColumnAlignment(3,AlignHCenter);
145 mMessageListView->setColumnAlignment(4,AlignHCenter); 145 mMessageListView->setColumnAlignment(4,AlignHCenter);
146 QObject::connect(mMessageListView,SIGNAL(doubleClicked(QListViewItem *)), 146 QObject::connect(mMessageListView,SIGNAL(doubleClicked(QListViewItem *)),
147 this,SLOT(showEvent(QListViewItem *))); 147 this,SLOT(showEvent(QListViewItem *)));
148 mDocPrefs = new DocPrefs("groupschedule"); 148 mDocPrefs = new DocPrefs("groupschedule");
149 loadMessages(); 149 loadMessages();
150} 150}
151 151
152OutgoingDialog::~OutgoingDialog() 152OutgoingDialog::~OutgoingDialog()
153{ 153{
154 delete mDocPrefs; 154 delete mDocPrefs;
155 delete mFormat; 155 delete mFormat;
156} 156}
157 157
158bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method) 158bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method)
159{ 159{
160 kdDebug() << "Outgoing::addMessage" << "Method:" << method << endl; 160 kdDebug() << "Outgoing::addMessage" << "Method:" << method << endl;
161 if (method == Scheduler::Publish) return false; 161 if (method == Scheduler::Publish) return false;
162 if( mDocPrefs ) { 162 if( mDocPrefs ) {
163 if (method != Scheduler::Cancel) { 163 if (method != Scheduler::Cancel) {
164 mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true ); 164 mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true );
165 } else { 165 } else {
166 if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") ) 166 if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") )
167 return true; 167 return true;
168 } 168 }
169 } 169 }
170 170
171 if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) { 171 if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) {
172 new ScheduleItemOut(mMessageListView,incidence,method); 172 new ScheduleItemOut(mMessageListView,incidence,method);
173 saveMessage(incidence,method); 173 saveMessage(incidence,method);
174 emit numMessagesChanged(mMessageListView->childCount()); 174 emit numMessagesChanged(mMessageListView->childCount());
175 } 175 }
176 else { 176 else {
177 mScheduler->performTransaction(incidence,method); 177 mScheduler->performTransaction(incidence,method);
178 } 178 }
179 return true; 179 return true;
180} 180}
181 181
182bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method, 182bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method,
183 const QString &recipients) 183 const QString &recipients)
184{ 184{
185 //if (method != Scheduler::Publish) return false; 185 //if (method != Scheduler::Publish) return false;
186 if( mDocPrefs ) { 186 if( mDocPrefs ) {
187 if (method != Scheduler::Cancel) { 187 if (method != Scheduler::Cancel) {
188 mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true ); 188 mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true );
189 } else { 189 } else {
190 if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") ) 190 if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") )
191 return true; 191 return true;
192 } 192 }
193 } 193 }
194 if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) { 194 if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) {
195 new ScheduleItemOut(mMessageListView,incidence,method,recipients); 195 new ScheduleItemOut(mMessageListView,incidence,method,recipients);
196 saveMessage(incidence,method,recipients); 196 saveMessage(incidence,method,recipients);
197 emit numMessagesChanged(mMessageListView->childCount()); 197 emit numMessagesChanged(mMessageListView->childCount());
198 } 198 }
199 else { 199 else {
200 mScheduler->performTransaction(incidence,method,recipients); 200 mScheduler->performTransaction(incidence,method,recipients);
201 } 201 }
202 return true; 202 return true;
203} 203}
204 204
205void OutgoingDialog::send() 205void OutgoingDialog::send()
206{ 206{
207 kdDebug() << "OutgoingDialog::send" << endl; 207 kdDebug() << "OutgoingDialog::send" << endl;
208 ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->firstChild()); 208 ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->firstChild());
209 while(item) { 209 while(item) {
210 bool success; 210 bool success;
211 if (item->method() == Scheduler::Publish) { 211 if (item->method() == Scheduler::Publish) {
212 success = mScheduler->publish(item->event(),item->recipients()); 212 success = mScheduler->publish(item->event(),item->recipients());
213 } else { 213 } else {
214 success = mScheduler->performTransaction(item->event(),item->method()); 214 success = mScheduler->performTransaction(item->event(),item->method());
215 } 215 }
216 ScheduleItemOut *oldItem = item; 216 ScheduleItemOut *oldItem = item;
217 item = (ScheduleItemOut *)(item->nextSibling()); 217 item = (ScheduleItemOut *)(item->nextSibling());
218 if (success) { 218 if (success) {
219 deleteMessage(oldItem->event()); 219 deleteMessage(oldItem->event());
220 delete (oldItem->event()); 220 delete (oldItem->event());
221 delete oldItem; 221 delete oldItem;
222 } 222 }
223 } 223 }
224 224
225 emit numMessagesChanged(mMessageListView->childCount()); 225 emit numMessagesChanged(mMessageListView->childCount());
226} 226}
227 227
228void OutgoingDialog::deleteItem() 228void OutgoingDialog::deleteItem()
229{ 229{
230 ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->selectedItem()); 230 ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->selectedItem());
231 if(!item) 231 if(!item)
232 return; 232 return;
233 deleteMessage(item->event()); 233 deleteMessage(item->event());
234 delete(item->event()); 234 delete(item->event());
235 mMessageListView->takeItem(item); 235 mMessageListView->takeItem(item);
236 emit numMessagesChanged(mMessageListView->childCount()); 236 emit numMessagesChanged(mMessageListView->childCount());
237} 237}
238 238
239void OutgoingDialog::showEvent(QListViewItem *qitem) 239void OutgoingDialog::showEvent(QListViewItem *qitem)
240{ 240{
241 ScheduleItemOut *item = (ScheduleItemOut *)qitem; 241 ScheduleItemOut *item = (ScheduleItemOut *)qitem;
242 Event *event = 0; 242 Event *event = 0;
243 Todo *todo = 0; 243 Todo *todo = 0;
244 if ( item->event()->type()=="Event" ) { 244 if ( item->event()->type()=="Event" ) {
245 event = static_cast<Event *>(item->event()); 245 event = static_cast<Event *>(item->event());
246 } 246 }
247 if ( item->event()->type()=="Todo" ) { 247 if ( item->event()->type()=="Todo" ) {
248 todo = static_cast<Todo *>(item->event()); 248 todo = static_cast<Todo *>(item->event());
249 } 249 }
250 QString sendText; 250 QString sendText;
251 if (event || todo) { 251 if (event || todo) {
252 KOEventViewerDialog *eventViewer = new KOEventViewerDialog(this); 252 KOEventViewerDialog *eventViewer = new KOEventViewerDialog(this);
253 if (event) eventViewer->setEvent(event); 253 if (event) eventViewer->setEvent(event);
254 if (todo) eventViewer->setTodo(todo); 254 if (todo) eventViewer->setTodo(todo);
255 sendText = "<hr><h4>"+i18n("Event will be sent to:")+"</h4>"; 255 sendText = "<hr><h4>"+i18n("Event will be sent to:")+"</h4>";
256 switch (item->method()) { 256 switch (item->method()) {
257 case Scheduler::Publish: { 257 case Scheduler::Publish: {
258 sendText += item->recipients(); 258 sendText += item->recipients();
259 break; } 259 break; }
260 case Scheduler::Request: { 260 case Scheduler::Request: {
261 sendText += i18n("All attendees"); 261 sendText += i18n("All attendees");
262 break; } 262 break; }
263 case Scheduler::Refresh: { 263 case Scheduler::Refresh: {
264 sendText += i18n("All attendees"); 264 sendText += i18n("All attendees");
265 break; } 265 break; }
266 case Scheduler::Cancel: { 266 case Scheduler::Cancel: {
267 sendText += i18n("All attendees"); 267 sendText += i18n("All attendees");
268 break; } 268 break; }
269 case Scheduler::Add: { 269 case Scheduler::Add: {
270 sendText += i18n("All attendees"); 270 sendText += i18n("All attendees");
271 break; } 271 break; }
272 case Scheduler::Reply: { 272 case Scheduler::Reply: {
273 sendText += i18n("The organizer %1").arg(item->event()->organizer()); 273 sendText += i18n("The organizer %1").arg(item->event()->organizer());
274 break; } 274 break; }
275 case Scheduler::Counter: { 275 case Scheduler::Counter: {
276 sendText += i18n("The organizer %1").arg(item->event()->organizer()); 276 sendText += i18n("The organizer %1").arg(item->event()->organizer());
277 break; } 277 break; }
278 case Scheduler::Declinecounter: { 278 case Scheduler::Declinecounter: {
279 sendText += i18n("All attendees"); 279 sendText += i18n("All attendees");
280 break; } 280 break; }
281 case Scheduler::NoMethod: { 281 case Scheduler::NoMethod: {
282 sendText += ""; 282 sendText += "";
283 break; } 283 break; }
284 default: 284 default:
285 sendText = ""; 285 sendText = "";
286 } 286 }
287 eventViewer->addText(sendText); 287 eventViewer->addText(sendText);
288 eventViewer->show(); 288 eventViewer->show();
289 } 289 }
290} 290}
291 291
292bool OutgoingDialog::saveMessage(IncidenceBase *incidence,Scheduler::Method method, 292bool OutgoingDialog::saveMessage(IncidenceBase *incidence,Scheduler::Method method,
293 const QString &recipients) 293 const QString &recipients)
294{ 294{
295 KTempFile ktfile(locateLocal("data","korganizer/outgoing/"),"ics"); 295 KTempFile ktfile(locateLocal("data","korganizer/outgoing/"),"ics");
296 QString messageText = mFormat->createScheduleMessage(incidence,method); 296 QString messageText = mFormat->createScheduleMessage(incidence,method);
297 QTextStream *qts = ktfile.textStream(); 297 QTextStream *qts = ktfile.textStream();
298 *qts << messageText; 298 *qts << messageText;
299 *qts << "METHOD-BEGIN:" << endl << method << endl << ":METHOD-END" << endl; 299 *qts << "METHOD-BEGIN:" << endl << method << endl << ":METHOD-END" << endl;
300 *qts << "RECIPIENTS-BEGIN:" << endl << recipients << endl << ":RECIPIENTS-END" << endl; 300 *qts << "RECIPIENTS-BEGIN:" << endl << recipients << endl << ":RECIPIENTS-END" << endl;
301 mMessageMap[incidence]=ktfile.name(); 301 mMessageMap[incidence]=ktfile.name();
302 302
303 return true; 303 return true;
304} 304}
305 305
306bool OutgoingDialog::deleteMessage(IncidenceBase *incidence) 306bool OutgoingDialog::deleteMessage(IncidenceBase *incidence)
307{ 307{
308 QFile f( mMessageMap[incidence] ); 308 QFile f( mMessageMap[incidence] );
309 mMessageMap.remove(incidence); 309 mMessageMap.remove(incidence);
310 if ( !f.exists() ) return false; 310 if ( !f.exists() ) return false;
311 else 311 else
312 return f.remove(); 312 return f.remove();
313} 313}
314 314
315void OutgoingDialog::loadMessages() 315void OutgoingDialog::loadMessages()
316{ 316{
317 Scheduler::Method method; 317 Scheduler::Method method;
318 QString recipients; 318 QString recipients;
319 319
320 QString outgoingDirName = locateLocal("data","korganizer/outgoing"); 320 QString outgoingDirName = locateLocal("data","korganizer/outgoing");
321 QDir outgoingDir(outgoingDirName); 321 QDir outgoingDir(outgoingDirName);
322 QStringList outgoing = outgoingDir.entryList(QDir::Files); 322 QStringList outgoing = outgoingDir.entryList(QDir::Files);
323 QStringList::ConstIterator it; 323 QStringList::ConstIterator it;
324 for(it = outgoing.begin(); it != outgoing.end(); ++it) { 324 for(it = outgoing.begin(); it != outgoing.end(); ++it) {
325 kdDebug() << "-- File: " << (*it) << endl; 325 kdDebug() << "-- File: " << (*it) << endl;
326 QFile f(outgoingDirName + "/" + (*it)); 326 QFile f(outgoingDirName + "/" + (*it));
327 bool inserted = false; 327 bool inserted = false;
328 QMap<IncidenceBase*, QString>::Iterator iter; 328 QMap<IncidenceBase*, QString>::Iterator iter;
329 for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) { 329 for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) {
330 if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true; 330 if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true;
331 } 331 }
332 if (!inserted) { 332 if (!inserted) {
333 if (!f.open(IO_ReadOnly)) { 333 if (!f.open(IO_ReadOnly)) {
334 kdDebug() << "OutgoingDialog::loadMessage(): Can't open file'" 334 kdDebug() << "OutgoingDialog::loadMessage(): Can't open file'"
335 << (*it) << "'" << endl; 335 << (*it) << "'" << endl;
336 } else { 336 } else {
337 QTextStream t(&f); 337 QTextStream t(&f);
338 QString messageString = t.read(); 338 QString messageString = t.read();
339 ScheduleMessage *message = mFormat->parseScheduleMessage(mCalendar, 339 ScheduleMessage *message = mFormat->parseScheduleMessage(mCalendar,
340 messageString); 340 messageString);
341 int begin_pos = messageString.find("METHOD-BEGIN:"); 341 int begin_pos = messageString.find("METHOD-BEGIN:");
342 begin_pos = messageString.find('\n',begin_pos)+1; 342 begin_pos = messageString.find('\n',begin_pos)+1;
343 QString meth = messageString.mid(begin_pos,1); 343 QString meth = messageString.mid(begin_pos,1);
344 switch (meth.toInt()) { 344 switch (meth.toInt()) {
345 case 0:method=Scheduler::Publish; break; 345 case 0:method=Scheduler::Publish; break;
346 case 1:method=Scheduler::Request; break; 346 case 1:method=Scheduler::Request; break;
347 case 2:method=Scheduler::Refresh; break; 347 case 2:method=Scheduler::Refresh; break;
348 case 3:method=Scheduler::Cancel; break; 348 case 3:method=Scheduler::Cancel; break;
349 case 4:method=Scheduler::Add; break; 349 case 4:method=Scheduler::Add; break;
350 case 5:method=Scheduler::Reply; break; 350 case 5:method=Scheduler::Reply; break;
351 case 6:method=Scheduler::Counter; break; 351 case 6:method=Scheduler::Counter; break;
352 case 7:method=Scheduler::Declinecounter; break; 352 case 7:method=Scheduler::Declinecounter; break;
353 default :method=Scheduler::NoMethod; break; 353 default :method=Scheduler::NoMethod; break;
354 } 354 }
355 begin_pos = messageString.find("RECIPIENTS-BEGIN:"); 355 begin_pos = messageString.find("RECIPIENTS-BEGIN:");
356 begin_pos = messageString.find('\n',begin_pos)+1; 356 begin_pos = messageString.find('\n',begin_pos)+1;
357 int end_pos = messageString.find(":RECIPIENTS-END",begin_pos)-1; 357 int end_pos = messageString.find(":RECIPIENTS-END",begin_pos)-1;
358 recipients = messageString.mid(begin_pos, end_pos-begin_pos); 358 recipients = messageString.mid(begin_pos, end_pos-begin_pos);
359 kdDebug() << "Outgoing::loadMessage(): Recipients: " << recipients << endl; 359 kdDebug() << "Outgoing::loadMessage(): Recipients: " << recipients << endl;
360 360
361 if (message) { 361 if (message) {
362 bool inserted = false; 362 bool inserted = false;
363 QMap<IncidenceBase*, QString>::Iterator iter; 363 QMap<IncidenceBase*, QString>::Iterator iter;
364 for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) { 364 for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) {
365 if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true; 365 if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true;
366 } 366 }
367 if (!inserted) { 367 if (!inserted) {
368 kdDebug() << "OutgoingDialog::loadMessage(): got message '" 368 kdDebug() << "OutgoingDialog::loadMessage(): got message '"
369 << (*it) << "'" << endl; 369 << (*it) << "'" << endl;
370 IncidenceBase *inc = message->event(); 370 IncidenceBase *inc = message->event();
371 new ScheduleItemOut(mMessageListView,inc,method,recipients); 371 new ScheduleItemOut(mMessageListView,inc,method,recipients);
372 mMessageMap[message->event()]=outgoingDirName + "/" + (*it); 372 mMessageMap[message->event()]=outgoingDirName + "/" + (*it);
373 } 373 }
374 } else { 374 } else {
375 QString errorMessage; 375 QString errorMessage;
376 if (mFormat->exception()) { 376 if (mFormat->exception()) {
377 errorMessage = mFormat->exception()->message(); 377 errorMessage = mFormat->exception()->message();
378 } 378 }
379 kdDebug() << "OutgoingDialog::loadMessage(): Error parsing " 379 kdDebug() << "OutgoingDialog::loadMessage(): Error parsing "
380 "message: " << errorMessage << endl; 380 "message: " << errorMessage << endl;
381 } 381 }
382 f.close(); 382 f.close();
383 } 383 }
384 } 384 }
385 } 385 }
386 emit numMessagesChanged(mMessageListView->childCount()); 386 emit numMessagesChanged(mMessageListView->childCount());
387} 387}
388 388
389void OutgoingDialog::setDocumentId( const QString &id ) 389void OutgoingDialog::setDocumentId( const QString &id )
390{ 390{
391 mDocPrefs->setDoc( id ); 391 mDocPrefs->setDoc( id );
392} 392}
393 393
394#include "outgoingdialog.moc"
diff --git a/korganizer/outgoingdialog_base.cpp b/korganizer/outgoingdialog_base.cpp
index e5b913a..1873b44 100644
--- a/korganizer/outgoingdialog_base.cpp
+++ b/korganizer/outgoingdialog_base.cpp
@@ -1,109 +1,107 @@
1#include <klocale.h> 1#include <klocale.h>
2/**************************************************************************** 2/****************************************************************************
3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/outgoingdialog_base.ui' 3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/outgoingdialog_base.ui'
4** 4**
5** Created: Sat Mar 29 22:31:21 2003 5** Created: Sat Mar 29 22:31:21 2003
6** by: The User Interface Compiler () 6** by: The User Interface Compiler ()
7** 7**
8** WARNING! All changes made in this file will be lost! 8** WARNING! All changes made in this file will be lost!
9****************************************************************************/ 9****************************************************************************/
10 10
11#include "outgoingdialog_base.h" 11#include "outgoingdialog_base.h"
12 12
13#include <qvariant.h> 13#include <qvariant.h>
14#include <qheader.h> 14#include <qheader.h>
15#include <qlistview.h> 15#include <qlistview.h>
16#include <qpushbutton.h> 16#include <qpushbutton.h>
17#include <qlayout.h> 17#include <qlayout.h>
18#include <qtooltip.h> 18#include <qtooltip.h>
19#include <qwhatsthis.h> 19#include <qwhatsthis.h>
20 20
21/* 21/*
22 * Constructs a OutgoingDialog_base as a child of 'parent', with the 22 * Constructs a OutgoingDialog_base as a child of 'parent', with the
23 * name 'name' and widget flags set to 'f'. 23 * name 'name' and widget flags set to 'f'.
24 * 24 *
25 * The dialog will by default be modeless, unless you set 'modal' to 25 * The dialog will by default be modeless, unless you set 'modal' to
26 * TRUE to construct a modal dialog. 26 * TRUE to construct a modal dialog.
27 */ 27 */
28OutgoingDialog_base::OutgoingDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl ) 28OutgoingDialog_base::OutgoingDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl )
29 : QDialog( parent, name, modal, fl ) 29 : QDialog( parent, name, modal, fl )
30 30
31{ 31{
32 if ( !name ) 32 if ( !name )
33 setName( "OutgoingDialog_base" ); 33 setName( "OutgoingDialog_base" );
34 OutgoingDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "OutgoingDialog_baseLayout"); 34 OutgoingDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "OutgoingDialog_baseLayout");
35 35
36 mMessageListView = new QListView( this, "mMessageListView" ); 36 mMessageListView = new QListView( this, "mMessageListView" );
37 mMessageListView->addColumn( tr2i18n( "Summary" ) ); 37 mMessageListView->addColumn( tr2i18n( "Summary" ) );
38 mMessageListView->addColumn( tr2i18n( "Start Date" ) ); 38 mMessageListView->addColumn( tr2i18n( "Start Date" ) );
39 mMessageListView->addColumn( tr2i18n( "Start Time" ) ); 39 mMessageListView->addColumn( tr2i18n( "Start Time" ) );
40 mMessageListView->addColumn( tr2i18n( "End Date" ) ); 40 mMessageListView->addColumn( tr2i18n( "End Date" ) );
41 mMessageListView->addColumn( tr2i18n( "End Time" ) ); 41 mMessageListView->addColumn( tr2i18n( "End Time" ) );
42 mMessageListView->addColumn( tr2i18n( "Method" ) ); 42 mMessageListView->addColumn( tr2i18n( "Method" ) );
43 mMessageListView->setFrameShape( QListView::StyledPanel ); 43 mMessageListView->setFrameShape( QListView::StyledPanel );
44 mMessageListView->setFrameShadow( QListView::Sunken ); 44 mMessageListView->setFrameShadow( QListView::Sunken );
45 mMessageListView->setAllColumnsShowFocus( TRUE ); 45 mMessageListView->setAllColumnsShowFocus( TRUE );
46 46
47 OutgoingDialog_baseLayout->addMultiCellWidget( mMessageListView, 0, 3, 0, 0 ); 47 OutgoingDialog_baseLayout->addMultiCellWidget( mMessageListView, 0, 3, 0, 0 );
48 48
49 PushButton5 = new QPushButton( this, "PushButton5" ); 49 PushButton5 = new QPushButton( this, "PushButton5" );
50 PushButton5->setDefault( FALSE ); 50 PushButton5->setDefault( FALSE );
51 51
52 OutgoingDialog_baseLayout->addWidget( PushButton5, 0, 1 ); 52 OutgoingDialog_baseLayout->addWidget( PushButton5, 0, 1 );
53 53
54 PushButton7 = new QPushButton( this, "PushButton7" ); 54 PushButton7 = new QPushButton( this, "PushButton7" );
55 55
56 OutgoingDialog_baseLayout->addWidget( PushButton7, 1, 1 ); 56 OutgoingDialog_baseLayout->addWidget( PushButton7, 1, 1 );
57 57
58 PushButton6 = new QPushButton( this, "PushButton6" ); 58 PushButton6 = new QPushButton( this, "PushButton6" );
59 PushButton6->setDefault( TRUE ); 59 PushButton6->setDefault( TRUE );
60 60
61 OutgoingDialog_baseLayout->addWidget( PushButton6, 3, 1 ); 61 OutgoingDialog_baseLayout->addWidget( PushButton6, 3, 1 );
62 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); 62 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
63 OutgoingDialog_baseLayout->addItem( spacer, 2, 1 ); 63 OutgoingDialog_baseLayout->addItem( spacer, 2, 1 );
64 languageChange(); 64 languageChange();
65 resize( QSize(582, 274).expandedTo(minimumSizeHint()) ); 65 resize( QSize(582, 274).expandedTo(minimumSizeHint()) );
66 66
67 // signals and slots connections 67 // signals and slots connections
68 connect( PushButton6, SIGNAL( clicked() ), this, SLOT( accept() ) ); 68 connect( PushButton6, SIGNAL( clicked() ), this, SLOT( accept() ) );
69 connect( PushButton5, SIGNAL( clicked() ), this, SLOT( send() ) ); 69 connect( PushButton5, SIGNAL( clicked() ), this, SLOT( send() ) );
70 connect( PushButton7, SIGNAL( clicked() ), this, SLOT( deleteItem() ) ); 70 connect( PushButton7, SIGNAL( clicked() ), this, SLOT( deleteItem() ) );
71} 71}
72 72
73/* 73/*
74 * Destroys the object and frees any allocated resources 74 * Destroys the object and frees any allocated resources
75 */ 75 */
76OutgoingDialog_base::~OutgoingDialog_base() 76OutgoingDialog_base::~OutgoingDialog_base()
77{ 77{
78 // no need to delete child widgets, Qt does it all for us 78 // no need to delete child widgets, Qt does it all for us
79} 79}
80 80
81/* 81/*
82 * Sets the strings of the subwidgets using the current 82 * Sets the strings of the subwidgets using the current
83 * language. 83 * language.
84 */ 84 */
85void OutgoingDialog_base::languageChange() 85void OutgoingDialog_base::languageChange()
86{ 86{
87 setCaption( tr2i18n( "Scheduler - Outgoing Messages" ) ); 87 setCaption( tr2i18n( "Scheduler - Outgoing Messages" ) );
88 mMessageListView->header()->setLabel( 0, tr2i18n( "Summary" ) ); 88 mMessageListView->header()->setLabel( 0, tr2i18n( "Summary" ) );
89 mMessageListView->header()->setLabel( 1, tr2i18n( "Start Date" ) ); 89 mMessageListView->header()->setLabel( 1, tr2i18n( "Start Date" ) );
90 mMessageListView->header()->setLabel( 2, tr2i18n( "Start Time" ) ); 90 mMessageListView->header()->setLabel( 2, tr2i18n( "Start Time" ) );
91 mMessageListView->header()->setLabel( 3, tr2i18n( "End Date" ) ); 91 mMessageListView->header()->setLabel( 3, tr2i18n( "End Date" ) );
92 mMessageListView->header()->setLabel( 4, tr2i18n( "End Time" ) ); 92 mMessageListView->header()->setLabel( 4, tr2i18n( "End Time" ) );
93 mMessageListView->header()->setLabel( 5, tr2i18n( "Method" ) ); 93 mMessageListView->header()->setLabel( 5, tr2i18n( "Method" ) );
94 PushButton5->setText( tr2i18n( "&Send Messages" ) ); 94 PushButton5->setText( tr2i18n( "&Send Messages" ) );
95 PushButton7->setText( tr2i18n( "&Remove" ) ); 95 PushButton7->setText( tr2i18n( "&Remove" ) );
96 PushButton6->setText( tr2i18n( "&Close" ) ); 96 PushButton6->setText( tr2i18n( "&Close" ) );
97} 97}
98 98
99void OutgoingDialog_base::send() 99void OutgoingDialog_base::send()
100{ 100{
101 qWarning( "OutgoingDialog_base::send(): Not implemented yet" ); 101 qWarning( "OutgoingDialog_base::send(): Not implemented yet" );
102} 102}
103 103
104void OutgoingDialog_base::deleteItem() 104void OutgoingDialog_base::deleteItem()
105{ 105{
106 qWarning( "OutgoingDialog_base::deleteItem(): Not implemented yet" ); 106 qWarning( "OutgoingDialog_base::deleteItem(): Not implemented yet" );
107} 107}
108
109#include "outgoingdialog_base.moc"
diff --git a/korganizer/publishdialog.cpp b/korganizer/publishdialog.cpp
index 176595a..4323b91 100644
--- a/korganizer/publishdialog.cpp
+++ b/korganizer/publishdialog.cpp
@@ -1,152 +1,150 @@
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#include <qlineedit.h> 24#include <qlineedit.h>
25#include <kdebug.h> 25#include <kdebug.h>
26 26
27#include <kglobal.h> 27#include <kglobal.h>
28#include <klocale.h> 28#include <klocale.h>
29#ifndef KORG_NOKABC 29#ifndef KORG_NOKABC
30#include <kabc/addresseedialog.h> 30#include <kabc/addresseedialog.h>
31#endif 31#endif
32 32
33#include "koprefs.h" 33#include "koprefs.h"
34#include "publishdialog.h" 34#include "publishdialog.h"
35 35
36PublishDialog::PublishDialog(QWidget* parent, const char* name, 36PublishDialog::PublishDialog(QWidget* parent, const char* name,
37 bool modal, WFlags fl) 37 bool modal, WFlags fl)
38 : PublishDialog_base(parent,name,modal,fl) 38 : PublishDialog_base(parent,name,modal,fl)
39{ 39{
40 setCaption(i18n("Select Addresses")); 40 setCaption(i18n("Select Addresses"));
41 mNameLineEdit->setEnabled(false); 41 mNameLineEdit->setEnabled(false);
42 mEmailLineEdit->setEnabled(false); 42 mEmailLineEdit->setEnabled(false);
43 connect(mAddressListView,SIGNAL(selectionChanged(QListViewItem *)), 43 connect(mAddressListView,SIGNAL(selectionChanged(QListViewItem *)),
44 SLOT(updateInput())); 44 SLOT(updateInput()));
45} 45}
46 46
47PublishDialog::~PublishDialog() 47PublishDialog::~PublishDialog()
48{ 48{
49} 49}
50 50
51void PublishDialog::addAttendee(Attendee *attendee) 51void PublishDialog::addAttendee(Attendee *attendee)
52{ 52{
53 mNameLineEdit->setEnabled(true); 53 mNameLineEdit->setEnabled(true);
54 mEmailLineEdit->setEnabled(true); 54 mEmailLineEdit->setEnabled(true);
55 QListViewItem *item = new QListViewItem(mAddressListView); 55 QListViewItem *item = new QListViewItem(mAddressListView);
56 item->setText(0,attendee->name()); 56 item->setText(0,attendee->name());
57 item->setText(1,attendee->email()); 57 item->setText(1,attendee->email());
58 mAddressListView->insertItem(item); 58 mAddressListView->insertItem(item);
59} 59}
60 60
61QString PublishDialog::addresses() 61QString PublishDialog::addresses()
62{ 62{
63 QString to = ""; 63 QString to = "";
64 QListViewItem *item; 64 QListViewItem *item;
65 int i, count; 65 int i, count;
66 count = mAddressListView->childCount(); 66 count = mAddressListView->childCount();
67 for (i=0;i<count;i++) { 67 for (i=0;i<count;i++) {
68 item = mAddressListView->firstChild(); 68 item = mAddressListView->firstChild();
69 mAddressListView->takeItem(item); 69 mAddressListView->takeItem(item);
70 to += item->text(1); 70 to += item->text(1);
71 if (i<count-1) { 71 if (i<count-1) {
72 to += ", "; 72 to += ", ";
73 } 73 }
74 } 74 }
75 return to; 75 return to;
76} 76}
77 77
78void PublishDialog::addItem() 78void PublishDialog::addItem()
79{ 79{
80 mNameLineEdit->setEnabled(true); 80 mNameLineEdit->setEnabled(true);
81 mEmailLineEdit->setEnabled(true); 81 mEmailLineEdit->setEnabled(true);
82 QListViewItem *item = new QListViewItem(mAddressListView); 82 QListViewItem *item = new QListViewItem(mAddressListView);
83 mAddressListView->insertItem(item); 83 mAddressListView->insertItem(item);
84 mAddressListView->setSelected(item,true); 84 mAddressListView->setSelected(item,true);
85 mNameLineEdit->setText(i18n("(EmptyName)")); 85 mNameLineEdit->setText(i18n("(EmptyName)"));
86 mEmailLineEdit->setText(i18n("(EmptyEmail)")); 86 mEmailLineEdit->setText(i18n("(EmptyEmail)"));
87} 87}
88 88
89void PublishDialog::removeItem() 89void PublishDialog::removeItem()
90{ 90{
91 QListViewItem *item; 91 QListViewItem *item;
92 item = mAddressListView->selectedItem(); 92 item = mAddressListView->selectedItem();
93 if (!item) return; 93 if (!item) return;
94 mAddressListView->takeItem(item); 94 mAddressListView->takeItem(item);
95 item = mAddressListView->selectedItem(); 95 item = mAddressListView->selectedItem();
96 if (!item) { 96 if (!item) {
97 mNameLineEdit->setText(""); 97 mNameLineEdit->setText("");
98 mEmailLineEdit->setText(""); 98 mEmailLineEdit->setText("");
99 mNameLineEdit->setEnabled(false); 99 mNameLineEdit->setEnabled(false);
100 mEmailLineEdit->setEnabled(false); 100 mEmailLineEdit->setEnabled(false);
101 } 101 }
102 if (mAddressListView->childCount() == 0) { 102 if (mAddressListView->childCount() == 0) {
103 mNameLineEdit->setEnabled(false); 103 mNameLineEdit->setEnabled(false);
104 mEmailLineEdit->setEnabled(false); 104 mEmailLineEdit->setEnabled(false);
105 } 105 }
106} 106}
107 107
108void PublishDialog::openAddressbook() 108void PublishDialog::openAddressbook()
109{ 109{
110#ifndef KORG_NOKABC 110#ifndef KORG_NOKABC
111 KABC::Addressee::List addressList; 111 KABC::Addressee::List addressList;
112 addressList = KABC::AddresseeDialog::getAddressees(this); 112 addressList = KABC::AddresseeDialog::getAddressees(this);
113 //KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); 113 //KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this);
114 KABC::Addressee a = addressList.first(); 114 KABC::Addressee a = addressList.first();
115 if (!a.isEmpty()) { 115 if (!a.isEmpty()) {
116 uint i; 116 uint i;
117 for (i=0;i<addressList.count();i++) { 117 for (i=0;i<addressList.count();i++) {
118 a = addressList[i]; 118 a = addressList[i];
119 mNameLineEdit->setEnabled(true); 119 mNameLineEdit->setEnabled(true);
120 mEmailLineEdit->setEnabled(true); 120 mEmailLineEdit->setEnabled(true);
121 QListViewItem *item = new QListViewItem(mAddressListView); 121 QListViewItem *item = new QListViewItem(mAddressListView);
122 mAddressListView->setSelected(item,true); 122 mAddressListView->setSelected(item,true);
123 mNameLineEdit->setText(a.realName()); 123 mNameLineEdit->setText(a.realName());
124 mEmailLineEdit->setText(a.preferredEmail()); 124 mEmailLineEdit->setText(a.preferredEmail());
125 mAddressListView->insertItem(item); 125 mAddressListView->insertItem(item);
126 } 126 }
127 } 127 }
128#endif 128#endif
129} 129}
130 130
131void PublishDialog::updateItem() 131void PublishDialog::updateItem()
132{ 132{
133 QListViewItem *item; 133 QListViewItem *item;
134 item = mAddressListView->selectedItem(); 134 item = mAddressListView->selectedItem();
135 if (!item) return; 135 if (!item) return;
136 item->setText(0,mNameLineEdit->text()); 136 item->setText(0,mNameLineEdit->text());
137 item->setText(1,mEmailLineEdit->text()); 137 item->setText(1,mEmailLineEdit->text());
138} 138}
139 139
140void PublishDialog::updateInput() 140void PublishDialog::updateInput()
141{ 141{
142 QListViewItem *item; 142 QListViewItem *item;
143 item = mAddressListView->selectedItem(); 143 item = mAddressListView->selectedItem();
144 if (!item) return; 144 if (!item) return;
145 mNameLineEdit->setEnabled(true); 145 mNameLineEdit->setEnabled(true);
146 mEmailLineEdit->setEnabled(true); 146 mEmailLineEdit->setEnabled(true);
147 QString mail = item->text(1); 147 QString mail = item->text(1);
148 mNameLineEdit->setText(item->text(0)); 148 mNameLineEdit->setText(item->text(0));
149 mEmailLineEdit->setText(mail); 149 mEmailLineEdit->setText(mail);
150} 150}
151
152#include "publishdialog.moc"
diff --git a/korganizer/publishdialog_base.cpp b/korganizer/publishdialog_base.cpp
index 75e4746..683f7e9 100644
--- a/korganizer/publishdialog_base.cpp
+++ b/korganizer/publishdialog_base.cpp
@@ -1,162 +1,160 @@
1#include <klocale.h> 1#include <klocale.h>
2/**************************************************************************** 2/****************************************************************************
3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/publishdialog_base.ui' 3** Form implementation generated from reading ui file '/build/kde/cvs/korge/kdepim/korganizer/publishdialog_base.ui'
4** 4**
5** Created: Sat Mar 29 22:31:35 2003 5** Created: Sat Mar 29 22:31:35 2003
6** by: The User Interface Compiler () 6** by: The User Interface Compiler ()
7** 7**
8** WARNING! All changes made in this file will be lost! 8** WARNING! All changes made in this file will be lost!
9****************************************************************************/ 9****************************************************************************/
10 10
11#include "publishdialog_base.h" 11#include "publishdialog_base.h"
12 12
13#include <qvariant.h> 13#include <qvariant.h>
14#include <qframe.h> 14#include <qframe.h>
15#include <qheader.h> 15#include <qheader.h>
16#include <qlabel.h> 16#include <qlabel.h>
17#include <qlineedit.h> 17#include <qlineedit.h>
18#include <qlistview.h> 18#include <qlistview.h>
19#include <qpushbutton.h> 19#include <qpushbutton.h>
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qtooltip.h> 21#include <qtooltip.h>
22#include <qwhatsthis.h> 22#include <qwhatsthis.h>
23 23
24/* 24/*
25 * Constructs a PublishDialog_base as a child of 'parent', with the 25 * Constructs a PublishDialog_base as a child of 'parent', with the
26 * name 'name' and widget flags set to 'f'. 26 * name 'name' and widget flags set to 'f'.
27 * 27 *
28 * The dialog will by default be modeless, unless you set 'modal' to 28 * The dialog will by default be modeless, unless you set 'modal' to
29 * TRUE to construct a modal dialog. 29 * TRUE to construct a modal dialog.
30 */ 30 */
31PublishDialog_base::PublishDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl ) 31PublishDialog_base::PublishDialog_base( QWidget* parent, const char* name, bool modal, WFlags fl )
32 : QDialog( parent, name, modal, fl ) 32 : QDialog( parent, name, modal, fl )
33 33
34{ 34{
35 if ( !name ) 35 if ( !name )
36 setName( "PublishDialog_base" ); 36 setName( "PublishDialog_base" );
37 PublishDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "PublishDialog_baseLayout"); 37 PublishDialog_baseLayout = new QGridLayout( this, 1, 1, 11, 6, "PublishDialog_baseLayout");
38 38
39 mAddressListView = new QListView( this, "mAddressListView" ); 39 mAddressListView = new QListView( this, "mAddressListView" );
40 mAddressListView->addColumn( tr2i18n( "Name" ) ); 40 mAddressListView->addColumn( tr2i18n( "Name" ) );
41 mAddressListView->addColumn( tr2i18n( "Email" ) ); 41 mAddressListView->addColumn( tr2i18n( "Email" ) );
42 42
43 PublishDialog_baseLayout->addMultiCellWidget( mAddressListView, 0, 3, 0, 1 ); 43 PublishDialog_baseLayout->addMultiCellWidget( mAddressListView, 0, 3, 0, 1 );
44 44
45 TextLabel1 = new QLabel( this, "TextLabel1" ); 45 TextLabel1 = new QLabel( this, "TextLabel1" );
46 46
47 PublishDialog_baseLayout->addWidget( TextLabel1, 4, 0 ); 47 PublishDialog_baseLayout->addWidget( TextLabel1, 4, 0 );
48 48
49 TextLabel2 = new QLabel( this, "TextLabel2" ); 49 TextLabel2 = new QLabel( this, "TextLabel2" );
50 50
51 PublishDialog_baseLayout->addWidget( TextLabel2, 5, 0 ); 51 PublishDialog_baseLayout->addWidget( TextLabel2, 5, 0 );
52 52
53 mEmailLineEdit = new QLineEdit( this, "mEmailLineEdit" ); 53 mEmailLineEdit = new QLineEdit( this, "mEmailLineEdit" );
54 54
55 PublishDialog_baseLayout->addWidget( mEmailLineEdit, 5, 1 ); 55 PublishDialog_baseLayout->addWidget( mEmailLineEdit, 5, 1 );
56 56
57 mNameLineEdit = new QLineEdit( this, "mNameLineEdit" ); 57 mNameLineEdit = new QLineEdit( this, "mNameLineEdit" );
58 58
59 PublishDialog_baseLayout->addWidget( mNameLineEdit, 4, 1 ); 59 PublishDialog_baseLayout->addWidget( mNameLineEdit, 4, 1 );
60 60
61 PushButton10 = new QPushButton( this, "PushButton10" ); 61 PushButton10 = new QPushButton( this, "PushButton10" );
62 62
63 PublishDialog_baseLayout->addWidget( PushButton10, 0, 2 ); 63 PublishDialog_baseLayout->addWidget( PushButton10, 0, 2 );
64 64
65 PushButton12 = new QPushButton( this, "PushButton12" ); 65 PushButton12 = new QPushButton( this, "PushButton12" );
66 66
67 PublishDialog_baseLayout->addWidget( PushButton12, 2, 2 ); 67 PublishDialog_baseLayout->addWidget( PushButton12, 2, 2 );
68 68
69 PushButton11 = new QPushButton( this, "PushButton11" ); 69 PushButton11 = new QPushButton( this, "PushButton11" );
70 70
71 PublishDialog_baseLayout->addWidget( PushButton11, 1, 2 ); 71 PublishDialog_baseLayout->addWidget( PushButton11, 1, 2 );
72 QSpacerItem* spacer = new QSpacerItem( 20, 241, QSizePolicy::Minimum, QSizePolicy::Expanding ); 72 QSpacerItem* spacer = new QSpacerItem( 20, 241, QSizePolicy::Minimum, QSizePolicy::Expanding );
73 PublishDialog_baseLayout->addMultiCell( spacer, 3, 5, 2, 2 ); 73 PublishDialog_baseLayout->addMultiCell( spacer, 3, 5, 2, 2 );
74 74
75 Line2 = new QFrame( this, "Line2" ); 75 Line2 = new QFrame( this, "Line2" );
76 Line2->setFrameShape( QFrame::HLine ); 76 Line2->setFrameShape( QFrame::HLine );
77 Line2->setFrameShadow( QFrame::Sunken ); 77 Line2->setFrameShadow( QFrame::Sunken );
78 Line2->setFrameShape( QFrame::HLine ); 78 Line2->setFrameShape( QFrame::HLine );
79 79
80 PublishDialog_baseLayout->addMultiCellWidget( Line2, 6, 6, 0, 2 ); 80 PublishDialog_baseLayout->addMultiCellWidget( Line2, 6, 6, 0, 2 );
81 81
82 layout95 = new QHBoxLayout( 0, 0, 6, "layout95"); 82 layout95 = new QHBoxLayout( 0, 0, 6, "layout95");
83 QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); 83 QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
84 layout95->addItem( spacer_2 ); 84 layout95->addItem( spacer_2 );
85 85
86 PushButton9 = new QPushButton( this, "PushButton9" ); 86 PushButton9 = new QPushButton( this, "PushButton9" );
87 PushButton9->setDefault( TRUE ); 87 PushButton9->setDefault( TRUE );
88 layout95->addWidget( PushButton9 ); 88 layout95->addWidget( PushButton9 );
89 89
90 PushButton8 = new QPushButton( this, "PushButton8" ); 90 PushButton8 = new QPushButton( this, "PushButton8" );
91 layout95->addWidget( PushButton8 ); 91 layout95->addWidget( PushButton8 );
92 92
93 PublishDialog_baseLayout->addMultiCellLayout( layout95, 7, 7, 0, 2 ); 93 PublishDialog_baseLayout->addMultiCellLayout( layout95, 7, 7, 0, 2 );
94 languageChange(); 94 languageChange();
95 resize( QSize(420, 379).expandedTo(minimumSizeHint()) ); 95 resize( QSize(420, 379).expandedTo(minimumSizeHint()) );
96 96
97 // signals and slots connections 97 // signals and slots connections
98 connect( PushButton10, SIGNAL( clicked() ), this, SLOT( addItem() ) ); 98 connect( PushButton10, SIGNAL( clicked() ), this, SLOT( addItem() ) );
99 connect( PushButton11, SIGNAL( clicked() ), this, SLOT( removeItem() ) ); 99 connect( PushButton11, SIGNAL( clicked() ), this, SLOT( removeItem() ) );
100 connect( PushButton12, SIGNAL( clicked() ), this, SLOT( openAddressbook() ) ); 100 connect( PushButton12, SIGNAL( clicked() ), this, SLOT( openAddressbook() ) );
101 connect( PushButton9, SIGNAL( clicked() ), this, SLOT( accept() ) ); 101 connect( PushButton9, SIGNAL( clicked() ), this, SLOT( accept() ) );
102 connect( mNameLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( updateItem() ) ); 102 connect( mNameLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( updateItem() ) );
103 connect( mEmailLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( updateItem() ) ); 103 connect( mEmailLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( updateItem() ) );
104 connect( PushButton8, SIGNAL( clicked() ), this, SLOT( reject() ) ); 104 connect( PushButton8, SIGNAL( clicked() ), this, SLOT( reject() ) );
105 105
106 // tab order 106 // tab order
107 setTabOrder( mAddressListView, mNameLineEdit ); 107 setTabOrder( mAddressListView, mNameLineEdit );
108 setTabOrder( mNameLineEdit, mEmailLineEdit ); 108 setTabOrder( mNameLineEdit, mEmailLineEdit );
109 setTabOrder( mEmailLineEdit, PushButton10 ); 109 setTabOrder( mEmailLineEdit, PushButton10 );
110 setTabOrder( PushButton10, PushButton11 ); 110 setTabOrder( PushButton10, PushButton11 );
111 setTabOrder( PushButton11, PushButton12 ); 111 setTabOrder( PushButton11, PushButton12 );
112 setTabOrder( PushButton12, PushButton9 ); 112 setTabOrder( PushButton12, PushButton9 );
113 setTabOrder( PushButton9, PushButton8 ); 113 setTabOrder( PushButton9, PushButton8 );
114} 114}
115 115
116/* 116/*
117 * Destroys the object and frees any allocated resources 117 * Destroys the object and frees any allocated resources
118 */ 118 */
119PublishDialog_base::~PublishDialog_base() 119PublishDialog_base::~PublishDialog_base()
120{ 120{
121 // no need to delete child widgets, Qt does it all for us 121 // no need to delete child widgets, Qt does it all for us
122} 122}
123 123
124/* 124/*
125 * Sets the strings of the subwidgets using the current 125 * Sets the strings of the subwidgets using the current
126 * language. 126 * language.
127 */ 127 */
128void PublishDialog_base::languageChange() 128void PublishDialog_base::languageChange()
129{ 129{
130 setCaption( tr2i18n( "Form1" ) ); 130 setCaption( tr2i18n( "Form1" ) );
131 mAddressListView->header()->setLabel( 0, tr2i18n( "Name" ) ); 131 mAddressListView->header()->setLabel( 0, tr2i18n( "Name" ) );
132 mAddressListView->header()->setLabel( 1, tr2i18n( "Email" ) ); 132 mAddressListView->header()->setLabel( 1, tr2i18n( "Email" ) );
133 TextLabel1->setText( tr2i18n( "Name:" ) ); 133 TextLabel1->setText( tr2i18n( "Name:" ) );
134 TextLabel2->setText( tr2i18n( "Email:" ) ); 134 TextLabel2->setText( tr2i18n( "Email:" ) );
135 PushButton10->setText( tr2i18n( "&New" ) ); 135 PushButton10->setText( tr2i18n( "&New" ) );
136 PushButton12->setText( tr2i18n( "&Addressbook" ) ); 136 PushButton12->setText( tr2i18n( "&Addressbook" ) );
137 PushButton11->setText( tr2i18n( "&Remove" ) ); 137 PushButton11->setText( tr2i18n( "&Remove" ) );
138 PushButton9->setText( tr2i18n( "&OK" ) ); 138 PushButton9->setText( tr2i18n( "&OK" ) );
139 PushButton8->setText( tr2i18n( "&Cancel" ) ); 139 PushButton8->setText( tr2i18n( "&Cancel" ) );
140} 140}
141 141
142void PublishDialog_base::addItem() 142void PublishDialog_base::addItem()
143{ 143{
144 qWarning( "PublishDialog_base::addItem(): Not implemented yet" ); 144 qWarning( "PublishDialog_base::addItem(): Not implemented yet" );
145} 145}
146 146
147void PublishDialog_base::removeItem() 147void PublishDialog_base::removeItem()
148{ 148{
149 qWarning( "PublishDialog_base::removeItem(): Not implemented yet" ); 149 qWarning( "PublishDialog_base::removeItem(): Not implemented yet" );
150} 150}
151 151
152void PublishDialog_base::openAddressbook() 152void PublishDialog_base::openAddressbook()
153{ 153{
154 qWarning( "PublishDialog_base::openAddressbook(): Not implemented yet" ); 154 qWarning( "PublishDialog_base::openAddressbook(): Not implemented yet" );
155} 155}
156 156
157void PublishDialog_base::updateItem() 157void PublishDialog_base::updateItem()
158{ 158{
159 qWarning( "PublishDialog_base::updateItem(): Not implemented yet" ); 159 qWarning( "PublishDialog_base::updateItem(): Not implemented yet" );
160} 160}
161
162#include "publishdialog_base.moc"
diff --git a/korganizer/savetemplatedialog.cpp b/korganizer/savetemplatedialog.cpp
index 0da524f..3544081 100644
--- a/korganizer/savetemplatedialog.cpp
+++ b/korganizer/savetemplatedialog.cpp
@@ -1,76 +1,75 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 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#include <qlayout.h> 24#include <qlayout.h>
25 25
26#include <keditlistbox.h> 26#include <keditlistbox.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#include "koprefs.h" 29#include "koprefs.h"
30 30
31#include "savetemplatedialog.h" 31#include "savetemplatedialog.h"
32#include "savetemplatedialog.moc"
33 32
34SaveTemplateDialog::SaveTemplateDialog( IncidenceType type, QWidget *parent ) 33SaveTemplateDialog::SaveTemplateDialog( IncidenceType type, QWidget *parent )
35 : KDialogBase( Plain, i18n("Save Template"), Ok | Cancel, Ok, parent, 0, 34 : KDialogBase( Plain, i18n("Save Template"), Ok | Cancel, Ok, parent, 0,
36 true, false ), 35 true, false ),
37 mType( type ) 36 mType( type )
38{ 37{
39 QFrame *topFrame = plainPage(); 38 QFrame *topFrame = plainPage();
40 QVBoxLayout *topLayout = new QVBoxLayout( topFrame, 0, spacingHint() ); 39 QVBoxLayout *topLayout = new QVBoxLayout( topFrame, 0, spacingHint() );
41 40
42 mEditListBox = new KEditListBox( i18n("Select Template Name"), topFrame, 41 mEditListBox = new KEditListBox( i18n("Select Template Name"), topFrame,
43 0, false, KEditListBox::Add | 42 0, false, KEditListBox::Add |
44 KEditListBox::Remove ); 43 KEditListBox::Remove );
45 topLayout->addWidget( mEditListBox ); 44 topLayout->addWidget( mEditListBox );
46 connect( mEditListBox, SIGNAL( changed() ), SLOT( slotChanged() ) ); 45 connect( mEditListBox, SIGNAL( changed() ), SLOT( slotChanged() ) );
47 46
48 QStringList templates; 47 QStringList templates;
49 48
50 if ( mType == EventType ) { 49 if ( mType == EventType ) {
51 templates = KOPrefs::instance()->mEventTemplates; 50 templates = KOPrefs::instance()->mEventTemplates;
52 } else if( mType == TodoType ) { 51 } else if( mType == TodoType ) {
53 templates = KOPrefs::instance()->mTodoTemplates; 52 templates = KOPrefs::instance()->mTodoTemplates;
54 } 53 }
55 54
56 mEditListBox->insertStringList( templates ); 55 mEditListBox->insertStringList( templates );
57} 56}
58 57
59SaveTemplateDialog::~SaveTemplateDialog() 58SaveTemplateDialog::~SaveTemplateDialog()
60{ 59{
61} 60}
62 61
63void SaveTemplateDialog::slotOk() 62void SaveTemplateDialog::slotOk()
64{ 63{
65 emit templateSelected( mEditListBox->currentText() ); 64 emit templateSelected( mEditListBox->currentText() );
66 accept(); 65 accept();
67} 66}
68 67
69void SaveTemplateDialog::slotChanged() 68void SaveTemplateDialog::slotChanged()
70{ 69{
71 if ( mType == EventType ) { 70 if ( mType == EventType ) {
72 KOPrefs::instance()->mEventTemplates = mEditListBox->items(); 71 KOPrefs::instance()->mEventTemplates = mEditListBox->items();
73 } else if( mType == TodoType ) { 72 } else if( mType == TodoType ) {
74 KOPrefs::instance()->mTodoTemplates = mEditListBox->items(); 73 KOPrefs::instance()->mTodoTemplates = mEditListBox->items();
75 } 74 }
76} 75}
diff --git a/korganizer/searchdialog.cpp b/korganizer/searchdialog.cpp
index 74d48b9..5bd7c6f 100644
--- a/korganizer/searchdialog.cpp
+++ b/korganizer/searchdialog.cpp
@@ -1,396 +1,395 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 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 <qlayout.h> 25#include <qlayout.h>
26#include <qcheckbox.h> 26#include <qcheckbox.h>
27#include <qgroupbox.h> 27#include <qgroupbox.h>
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qlineedit.h> 29#include <qlineedit.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31 31
32#include <klocale.h> 32#include <klocale.h>
33#include <kmessagebox.h> 33#include <kmessagebox.h>
34 34
35#include <libkdepim/kdateedit.h> 35#include <libkdepim/kdateedit.h>
36 36
37#include "koglobals.h" 37#include "koglobals.h"
38#include "koprefs.h" 38#include "koprefs.h"
39 39
40#include "calendarview.h" 40#include "calendarview.h"
41#include "koviewmanager.h" 41#include "koviewmanager.h"
42#include "searchdialog.h" 42#include "searchdialog.h"
43#include "searchdialog.moc"
44 43
45SearchDialog::SearchDialog(Calendar *calendar,CalendarView *parent) 44SearchDialog::SearchDialog(Calendar *calendar,CalendarView *parent)
46 : KDialogBase(Plain,i18n("KO/Pi Find "),User1|Close,User1,parent,0,false,false, 45 : KDialogBase(Plain,i18n("KO/Pi Find "),User1|Close,User1,parent,0,false,false,
47 i18n("&Find")) 46 i18n("&Find"))
48{ 47{
49 mCalendar = calendar; 48 mCalendar = calendar;
50 QFrame *topFrame = plainPage(); 49 QFrame *topFrame = plainPage();
51 QVBoxLayout *layout = new QVBoxLayout(topFrame,0,spacingHint()); 50 QVBoxLayout *layout = new QVBoxLayout(topFrame,0,spacingHint());
52 51
53 // Search expression 52 // Search expression
54 QHBoxLayout *subLayout = new QHBoxLayout(); 53 QHBoxLayout *subLayout = new QHBoxLayout();
55 layout->addLayout(subLayout); 54 layout->addLayout(subLayout);
56 55
57 searchLabel = new QLabel(topFrame); 56 searchLabel = new QLabel(topFrame);
58 searchLabel->setText(i18n("Search for:")); 57 searchLabel->setText(i18n("Search for:"));
59 subLayout->addWidget(searchLabel); 58 subLayout->addWidget(searchLabel);
60 59
61 searchEdit = new QLineEdit(topFrame); 60 searchEdit = new QLineEdit(topFrame);
62 subLayout->addWidget(searchEdit); 61 subLayout->addWidget(searchEdit);
63 searchEdit->setText("*"); // Find all events by default 62 searchEdit->setText("*"); // Find all events by default
64 searchEdit->setFocus(); 63 searchEdit->setFocus();
65 connect(searchEdit, SIGNAL(textChanged ( const QString & )),this,SLOT(searchTextChanged( const QString & ))); 64 connect(searchEdit, SIGNAL(textChanged ( const QString & )),this,SLOT(searchTextChanged( const QString & )));
66 connect(searchEdit, SIGNAL( returnPressed () ),this,SLOT(doSearch())); 65 connect(searchEdit, SIGNAL( returnPressed () ),this,SLOT(doSearch()));
67 // Subjects to search 66 // Subjects to search
68 // QGroupBox *subjectGroup = new QGroupBox(1,Vertical,i18n("Search In"), 67 // QGroupBox *subjectGroup = new QGroupBox(1,Vertical,i18n("Search In"),
69 // topFrame); 68 // topFrame);
70 69
71 70
72 71
73 QHBox *incidenceGroup = new QHBox( topFrame ); 72 QHBox *incidenceGroup = new QHBox( topFrame );
74 layout->addWidget(incidenceGroup); 73 layout->addWidget(incidenceGroup);
75 74
76 mSearchEvent = new QCheckBox(i18n("Events"),incidenceGroup); 75 mSearchEvent = new QCheckBox(i18n("Events"),incidenceGroup);
77 mSearchEvent->setChecked(true); 76 mSearchEvent->setChecked(true);
78 mSearchTodo = new QCheckBox(i18n("Todos"),incidenceGroup); 77 mSearchTodo = new QCheckBox(i18n("Todos"),incidenceGroup);
79 mSearchJournal = new QCheckBox(i18n("Journals"),incidenceGroup); 78 mSearchJournal = new QCheckBox(i18n("Journals"),incidenceGroup);
80 79
81 QHBox *subjectGroup = new QHBox( topFrame ); 80 QHBox *subjectGroup = new QHBox( topFrame );
82 layout->addWidget(subjectGroup); 81 layout->addWidget(subjectGroup);
83 82
84 mSummaryCheck = new QCheckBox(i18n("Summaries"),subjectGroup); 83 mSummaryCheck = new QCheckBox(i18n("Summaries"),subjectGroup);
85 mSummaryCheck->setChecked(true); 84 mSummaryCheck->setChecked(true);
86 mDescriptionCheck = new QCheckBox(i18n("Descriptions"),subjectGroup); 85 mDescriptionCheck = new QCheckBox(i18n("Descriptions"),subjectGroup);
87 mCategoryCheck = new QCheckBox(i18n("Categories"),subjectGroup); 86 mCategoryCheck = new QCheckBox(i18n("Categories"),subjectGroup);
88 87
89 QHBox *attendeeGroup = new QHBox( topFrame ); 88 QHBox *attendeeGroup = new QHBox( topFrame );
90 layout->addWidget(attendeeGroup ); 89 layout->addWidget(attendeeGroup );
91 new QLabel( i18n("Attendee:"),attendeeGroup ); 90 new QLabel( i18n("Attendee:"),attendeeGroup );
92 mSearchAName = new QCheckBox(i18n("Name"),attendeeGroup ); 91 mSearchAName = new QCheckBox(i18n("Name"),attendeeGroup );
93 mSearchAEmail = new QCheckBox(i18n("Email"), attendeeGroup ); 92 mSearchAEmail = new QCheckBox(i18n("Email"), attendeeGroup );
94 // Date range 93 // Date range
95 // QGroupBox *rangeGroup = new QGroupBox(1,Horizontal,i18n("Date Range"), 94 // QGroupBox *rangeGroup = new QGroupBox(1,Horizontal,i18n("Date Range"),
96 // topFrame); 95 // topFrame);
97 // layout->addWidget(rangeGroup); 96 // layout->addWidget(rangeGroup);
98 97
99 QWidget *rangeWidget = new QWidget(topFrame); 98 QWidget *rangeWidget = new QWidget(topFrame);
100 QHBoxLayout *rangeLayout = new QHBoxLayout(rangeWidget,0,spacingHint()); 99 QHBoxLayout *rangeLayout = new QHBoxLayout(rangeWidget,0,spacingHint());
101 100
102 rangeLayout->addWidget(new QLabel(i18n("From:"),rangeWidget)); 101 rangeLayout->addWidget(new QLabel(i18n("From:"),rangeWidget));
103 mStartDate = new KDateEdit(rangeWidget); 102 mStartDate = new KDateEdit(rangeWidget);
104 rangeLayout->addWidget(mStartDate); 103 rangeLayout->addWidget(mStartDate);
105 rangeLayout->addWidget(new QLabel(i18n("To:"),rangeWidget)); 104 rangeLayout->addWidget(new QLabel(i18n("To:"),rangeWidget));
106 mEndDate = new KDateEdit(rangeWidget); 105 mEndDate = new KDateEdit(rangeWidget);
107 mEndDate->setDate(QDate::currentDate().addDays(365)); 106 mEndDate->setDate(QDate::currentDate().addDays(365));
108 rangeLayout->addWidget(mEndDate); 107 rangeLayout->addWidget(mEndDate);
109 108
110 // mInclusiveCheck = new QCheckBox(i18n("Events have to be completely included"), topFrame); 109 // mInclusiveCheck = new QCheckBox(i18n("Events have to be completely included"), topFrame);
111 //mInclusiveCheck->setChecked(false); 110 //mInclusiveCheck->setChecked(false);
112 layout->addWidget(rangeWidget); 111 layout->addWidget(rangeWidget);
113 //layout->addWidget(mInclusiveCheck); 112 //layout->addWidget(mInclusiveCheck);
114 // Subjects to search 113 // Subjects to search
115 114
116 115
117 // Results list view 116 // Results list view
118 listView = new KOListView(mCalendar,topFrame); 117 listView = new KOListView(mCalendar,topFrame);
119 //listView->showDates(); 118 //listView->showDates();
120 119
121 120
122 layout->addWidget(listView); 121 layout->addWidget(listView);
123 122
124 // if ( KOPrefs::instance()->mCompactDialogs ) { 123 // if ( KOPrefs::instance()->mCompactDialogs ) {
125 // KOGlobals::fitDialogToScreen( this, true ); 124 // KOGlobals::fitDialogToScreen( this, true );
126 // } 125 // }
127 126
128 listView->readSettings(KOGlobals::config(),"SearchListView Layout"); 127 listView->readSettings(KOGlobals::config(),"SearchListView Layout");
129 connect(this,SIGNAL(user1Clicked()),SLOT(doSearch())); 128 connect(this,SIGNAL(user1Clicked()),SLOT(doSearch()));
130 QPushButton *CloseButton = findButton( Close ); 129 QPushButton *CloseButton = findButton( Close );
131 //connect(CloseButton,SIGNAL(clicked()),listView, SLOT(clear())); 130 //connect(CloseButton,SIGNAL(clicked()),listView, SLOT(clear()));
132 131
133#ifndef DESKTOP_VERSION 132#ifndef DESKTOP_VERSION
134 setCaption(i18n("Click OK to search ->")); 133 setCaption(i18n("Click OK to search ->"));
135 hideButtons(); 134 hideButtons();
136#endif 135#endif
137} 136}
138 137
139SearchDialog::~SearchDialog() 138SearchDialog::~SearchDialog()
140{ 139{
141 140
142} 141}
143void SearchDialog::accept() 142void SearchDialog::accept()
144{ 143{
145 doSearch(); 144 doSearch();
146} 145}
147void SearchDialog::updateList() 146void SearchDialog::updateList()
148{ 147{
149 //listView->updateList(); 148 //listView->updateList();
150 if ( isVisible() ) { 149 if ( isVisible() ) {
151 updateView(); 150 updateView();
152 //qDebug("SearchDialog::updated "); 151 //qDebug("SearchDialog::updated ");
153 } 152 }
154 else { 153 else {
155 listView->clear(); 154 listView->clear();
156 //qDebug("SearchDialog::cleared "); 155 //qDebug("SearchDialog::cleared ");
157 156
158 } 157 }
159} 158}
160void SearchDialog::searchTextChanged( const QString &_text ) 159void SearchDialog::searchTextChanged( const QString &_text )
161{ 160{
162 enableButton( KDialogBase::User1, !_text.isEmpty() ); 161 enableButton( KDialogBase::User1, !_text.isEmpty() );
163} 162}
164 163
165void SearchDialog::doSearch() 164void SearchDialog::doSearch()
166{ 165{
167 QRegExp re; 166 QRegExp re;
168 167
169 re.setWildcard(true); // most people understand these better. 168 re.setWildcard(true); // most people understand these better.
170 re.setCaseSensitive(false); 169 re.setCaseSensitive(false);
171 re.setPattern(searchEdit->text()); 170 re.setPattern(searchEdit->text());
172 if (!re.isValid() ) { 171 if (!re.isValid() ) {
173 KMessageBox::sorry(this, 172 KMessageBox::sorry(this,
174 i18n("Invalid search expression,\ncannot perform " 173 i18n("Invalid search expression,\ncannot perform "
175 "the search.\nPlease enter a search expression\n" 174 "the search.\nPlease enter a search expression\n"
176 "using the wildcard characters\n '*' and '?'" 175 "using the wildcard characters\n '*' and '?'"
177 "where needed.")); 176 "where needed."));
178 return; 177 return;
179 } 178 }
180 179
181 search(re); 180 search(re);
182 181
183 listView->setStartDate( mStartDate->date() ); 182 listView->setStartDate( mStartDate->date() );
184 listView->showEvents(mMatchedEvents); 183 listView->showEvents(mMatchedEvents);
185 listView->addTodos(mMatchedTodos); 184 listView->addTodos(mMatchedTodos);
186 listView->addJournals(mMatchedJournals); 185 listView->addJournals(mMatchedJournals);
187 186
188 if (mMatchedEvents.count() + mMatchedJournals.count() + mMatchedTodos.count() == 0) { 187 if (mMatchedEvents.count() + mMatchedJournals.count() + mMatchedTodos.count() == 0) {
189 KMessageBox::information(this, 188 KMessageBox::information(this,
190 i18n("No event/todo were found matching\nyour search expression.\nUse the wildcard characters\n ' * ' and ' ? ' where needed.")); 189 i18n("No event/todo were found matching\nyour search expression.\nUse the wildcard characters\n ' * ' and ' ? ' where needed."));
191#ifndef DESKTOP_VERSION 190#ifndef DESKTOP_VERSION
192 setCaption(i18n("Click OK to search ->")); 191 setCaption(i18n("Click OK to search ->"));
193#else 192#else
194 setCaption(i18n("KO/Pi Find ")); 193 setCaption(i18n("KO/Pi Find "));
195#endif 194#endif
196 } else { 195 } else {
197 QString mess; 196 QString mess;
198 mess = mess.sprintf( i18n("%d item(s) found."), mMatchedEvents.count()+ mMatchedJournals.count() + mMatchedTodos.count() ); 197 mess = mess.sprintf( i18n("%d item(s) found."), mMatchedEvents.count()+ mMatchedJournals.count() + mMatchedTodos.count() );
199 setCaption( i18n("KO/Pi Find: ") + mess); 198 setCaption( i18n("KO/Pi Find: ") + mess);
200 199
201 } 200 }
202} 201}
203void SearchDialog::updateConfig() 202void SearchDialog::updateConfig()
204{ 203{
205 listView->updateConfig(); 204 listView->updateConfig();
206} 205}
207void SearchDialog::updateView() 206void SearchDialog::updateView()
208{ 207{
209 208
210 QRegExp re; 209 QRegExp re;
211 re.setWildcard(true); // most people understand these better. 210 re.setWildcard(true); // most people understand these better.
212 re.setCaseSensitive(false); 211 re.setCaseSensitive(false);
213 re.setPattern(searchEdit->text()); 212 re.setPattern(searchEdit->text());
214 if (re.isValid()) { 213 if (re.isValid()) {
215 search(re); 214 search(re);
216 } else { 215 } else {
217 mMatchedEvents.clear(); 216 mMatchedEvents.clear();
218 mMatchedTodos.clear(); 217 mMatchedTodos.clear();
219 mMatchedJournals.clear(); 218 mMatchedJournals.clear();
220 } 219 }
221 listView->setStartDate( mStartDate->date() ); 220 listView->setStartDate( mStartDate->date() );
222 listView->showEvents(mMatchedEvents); 221 listView->showEvents(mMatchedEvents);
223 listView->addTodos(mMatchedTodos); 222 listView->addTodos(mMatchedTodos);
224 listView->addJournals(mMatchedJournals); 223 listView->addJournals(mMatchedJournals);
225} 224}
226 225
227void SearchDialog::search(const QRegExp &re) 226void SearchDialog::search(const QRegExp &re)
228{ 227{
229 QPtrList<Event> events = mCalendar->events( mStartDate->date(), 228 QPtrList<Event> events = mCalendar->events( mStartDate->date(),
230 mEndDate->date(), 229 mEndDate->date(),
231 false /*mInclusiveCheck->isChecked()*/ ); 230 false /*mInclusiveCheck->isChecked()*/ );
232 231
233 mMatchedEvents.clear(); 232 mMatchedEvents.clear();
234 if ( mSearchEvent->isChecked() ) { 233 if ( mSearchEvent->isChecked() ) {
235 Event *ev; 234 Event *ev;
236 for(ev=events.first();ev;ev=events.next()) { 235 for(ev=events.first();ev;ev=events.next()) {
237 if (mSummaryCheck->isChecked()) { 236 if (mSummaryCheck->isChecked()) {
238#if QT_VERSION >= 300 237#if QT_VERSION >= 300
239 if (re.search(ev->summary()) != -1) 238 if (re.search(ev->summary()) != -1)
240#else 239#else
241 if (re.match(ev->summary()) != -1) 240 if (re.match(ev->summary()) != -1)
242#endif 241#endif
243 { 242 {
244 mMatchedEvents.append(ev); 243 mMatchedEvents.append(ev);
245 continue; 244 continue;
246 } 245 }
247 } 246 }
248 if (mDescriptionCheck->isChecked()) { 247 if (mDescriptionCheck->isChecked()) {
249#if QT_VERSION >= 300 248#if QT_VERSION >= 300
250 if (re.search(ev->description()) != -1) 249 if (re.search(ev->description()) != -1)
251#else 250#else
252 if (re.match(ev->description()) != -1) 251 if (re.match(ev->description()) != -1)
253#endif 252#endif
254 { 253 {
255 mMatchedEvents.append(ev); 254 mMatchedEvents.append(ev);
256 continue; 255 continue;
257 } 256 }
258 } 257 }
259 if (mCategoryCheck->isChecked()) { 258 if (mCategoryCheck->isChecked()) {
260#if QT_VERSION >= 300 259#if QT_VERSION >= 300
261 if (re.search(ev->categoriesStr()) != -1) 260 if (re.search(ev->categoriesStr()) != -1)
262#else 261#else
263 if (re.match(ev->categoriesStr()) != -1) 262 if (re.match(ev->categoriesStr()) != -1)
264#endif 263#endif
265 { 264 {
266 mMatchedEvents.append(ev); 265 mMatchedEvents.append(ev);
267 continue; 266 continue;
268 } 267 }
269 } 268 }
270 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) { 269 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) {
271 QPtrList<Attendee> tmpAList = ev->attendees(); 270 QPtrList<Attendee> tmpAList = ev->attendees();
272 Attendee *a; 271 Attendee *a;
273 for (a = tmpAList.first(); a; a = tmpAList.next()) { 272 for (a = tmpAList.first(); a; a = tmpAList.next()) {
274 if (mSearchAName->isChecked()) { 273 if (mSearchAName->isChecked()) {
275#if QT_VERSION >= 300 274#if QT_VERSION >= 300
276 if (re.search(a->name()) != -1) 275 if (re.search(a->name()) != -1)
277#else 276#else
278 if (re.match(a->name()) != -1) 277 if (re.match(a->name()) != -1)
279#endif 278#endif
280 { 279 {
281 mMatchedEvents.append(ev); 280 mMatchedEvents.append(ev);
282 break; 281 break;
283 } 282 }
284 } 283 }
285 if (mSearchAEmail->isChecked()) { 284 if (mSearchAEmail->isChecked()) {
286#if QT_VERSION >= 300 285#if QT_VERSION >= 300
287 if (re.search(a->email()) != -1) 286 if (re.search(a->email()) != -1)
288#else 287#else
289 if (re.match(a->email()) != -1) 288 if (re.match(a->email()) != -1)
290#endif 289#endif
291 { 290 {
292 mMatchedEvents.append(ev); 291 mMatchedEvents.append(ev);
293 break; 292 break;
294 } 293 }
295 } 294 }
296 } 295 }
297 } 296 }
298 } 297 }
299 } 298 }
300 QPtrList<Todo> todos = mCalendar->todos( ); 299 QPtrList<Todo> todos = mCalendar->todos( );
301 mMatchedTodos.clear(); 300 mMatchedTodos.clear();
302 if ( mSearchTodo->isChecked() ) { 301 if ( mSearchTodo->isChecked() ) {
303 Todo *tod; 302 Todo *tod;
304 for(tod=todos.first();tod;tod=todos.next()) { 303 for(tod=todos.first();tod;tod=todos.next()) {
305 if (mSummaryCheck->isChecked()) { 304 if (mSummaryCheck->isChecked()) {
306#if QT_VERSION >= 300 305#if QT_VERSION >= 300
307 if (re.search(tod->summary()) != -1) 306 if (re.search(tod->summary()) != -1)
308#else 307#else
309 if (re.match(tod->summary()) != -1) 308 if (re.match(tod->summary()) != -1)
310#endif 309#endif
311 { 310 {
312 mMatchedTodos.append(tod); 311 mMatchedTodos.append(tod);
313 continue; 312 continue;
314 } 313 }
315 } 314 }
316 if (mDescriptionCheck->isChecked()) { 315 if (mDescriptionCheck->isChecked()) {
317#if QT_VERSION >= 300 316#if QT_VERSION >= 300
318 if (re.search(tod->description()) != -1) 317 if (re.search(tod->description()) != -1)
319#else 318#else
320 if (re.match(tod->description()) != -1) 319 if (re.match(tod->description()) != -1)
321#endif 320#endif
322 { 321 {
323 mMatchedTodos.append(tod); 322 mMatchedTodos.append(tod);
324 continue; 323 continue;
325 } 324 }
326 } 325 }
327 if (mCategoryCheck->isChecked()) { 326 if (mCategoryCheck->isChecked()) {
328#if QT_VERSION >= 300 327#if QT_VERSION >= 300
329 if (re.search(tod->categoriesStr()) != -1) 328 if (re.search(tod->categoriesStr()) != -1)
330#else 329#else
331 if (re.match(tod->categoriesStr()) != -1) 330 if (re.match(tod->categoriesStr()) != -1)
332#endif 331#endif
333 { 332 {
334 mMatchedTodos.append(tod); 333 mMatchedTodos.append(tod);
335 continue; 334 continue;
336 } 335 }
337 } 336 }
338 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) { 337 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) {
339 QPtrList<Attendee> tmpAList = tod->attendees(); 338 QPtrList<Attendee> tmpAList = tod->attendees();
340 Attendee *a; 339 Attendee *a;
341 for (a = tmpAList.first(); a; a = tmpAList.next()) { 340 for (a = tmpAList.first(); a; a = tmpAList.next()) {
342 if (mSearchAName->isChecked()) { 341 if (mSearchAName->isChecked()) {
343#if QT_VERSION >= 300 342#if QT_VERSION >= 300
344 if (re.search(a->name()) != -1) 343 if (re.search(a->name()) != -1)
345#else 344#else
346 if (re.match(a->name()) != -1) 345 if (re.match(a->name()) != -1)
347#endif 346#endif
348 { 347 {
349 mMatchedTodos.append(tod); 348 mMatchedTodos.append(tod);
350 break; 349 break;
351 } 350 }
352 } 351 }
353 if (mSearchAEmail->isChecked()) { 352 if (mSearchAEmail->isChecked()) {
354#if QT_VERSION >= 300 353#if QT_VERSION >= 300
355 if (re.search(a->email()) != -1) 354 if (re.search(a->email()) != -1)
356#else 355#else
357 if (re.match(a->email()) != -1) 356 if (re.match(a->email()) != -1)
358#endif 357#endif
359 { 358 {
360 mMatchedTodos.append(tod); 359 mMatchedTodos.append(tod);
361 break; 360 break;
362 } 361 }
363 } 362 }
364 } 363 }
365 } 364 }
366 } 365 }
367 } 366 }
368 mMatchedJournals.clear(); 367 mMatchedJournals.clear();
369 if (mSearchJournal->isChecked() ) { 368 if (mSearchJournal->isChecked() ) {
370 QPtrList<Journal> journals = mCalendar->journals( ); 369 QPtrList<Journal> journals = mCalendar->journals( );
371 Journal* journ; 370 Journal* journ;
372 371
373 for(journ=journals.first();journ;journ=journals.next()) { 372 for(journ=journals.first();journ;journ=journals.next()) {
374 if ( journ->dtStart().date() <= mEndDate->date() 373 if ( journ->dtStart().date() <= mEndDate->date()
375 &&journ->dtStart().date() >= mStartDate->date()) { 374 &&journ->dtStart().date() >= mStartDate->date()) {
376#if QT_VERSION >= 300 375#if QT_VERSION >= 300
377 if (re.search(journ->description()) != -1) 376 if (re.search(journ->description()) != -1)
378#else 377#else
379 if (re.match(journ->description()) != -1) 378 if (re.match(journ->description()) != -1)
380#endif 379#endif
381 { 380 {
382 mMatchedJournals.append(journ); 381 mMatchedJournals.append(journ);
383 continue; 382 continue;
384 } 383 }
385 } 384 }
386 } 385 }
387 } 386 }
388 387
389} 388}
390void SearchDialog::keyPressEvent ( QKeyEvent *e) 389void SearchDialog::keyPressEvent ( QKeyEvent *e)
391{ 390{
392 391
393 e->ignore(); 392 e->ignore();
394 393
395} 394}
396//mMatchedJournals; 395//mMatchedJournals;
diff --git a/korganizer/statusdialog.cpp b/korganizer/statusdialog.cpp
index 78efeb0..7137c49 100644
--- a/korganizer/statusdialog.cpp
+++ b/korganizer/statusdialog.cpp
@@ -1,67 +1,66 @@
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 19
20#include <qlabel.h> 20#include <qlabel.h>
21#include <qpushbutton.h> 21#include <qpushbutton.h>
22#include <qstringlist.h> 22#include <qstringlist.h>
23#include <qlayout.h> 23#include <qlayout.h>
24 24
25#include <kdebug.h> 25#include <kdebug.h>
26#include <klocale.h> 26#include <klocale.h>
27 27
28#include "statusdialog.h" 28#include "statusdialog.h"
29#include "statusdialog.moc"
30 29
31StatusDialog::StatusDialog(QWidget* parent, const char* name) : 30StatusDialog::StatusDialog(QWidget* parent, const char* name) :
32 KDialog(parent,name,true) 31 KDialog(parent,name,true)
33{ 32{
34 setCaption(i18n("Set Your Status")); 33 setCaption(i18n("Set Your Status"));
35 34
36 QBoxLayout *topLayout = new QVBoxLayout( this ); 35 QBoxLayout *topLayout = new QVBoxLayout( this );
37 topLayout->setSpacing( spacingHint() ); 36 topLayout->setSpacing( spacingHint() );
38 topLayout->setMargin( marginHint() ); 37 topLayout->setMargin( marginHint() );
39 38
40 QBoxLayout *statusLayout = new QHBoxLayout( topLayout ); 39 QBoxLayout *statusLayout = new QHBoxLayout( topLayout );
41 40
42 QLabel *text = new QLabel(i18n("Set your status"),this); 41 QLabel *text = new QLabel(i18n("Set your status"),this);
43 statusLayout->addWidget( text ); 42 statusLayout->addWidget( text );
44 43
45 mStatus = new QComboBox(false,this); 44 mStatus = new QComboBox(false,this);
46 mStatus->insertStringList(Attendee::statusList()); 45 mStatus->insertStringList(Attendee::statusList());
47 statusLayout->addWidget( mStatus ); 46 statusLayout->addWidget( mStatus );
48 47
49 QBoxLayout *buttonLayout = new QHBoxLayout( topLayout ); 48 QBoxLayout *buttonLayout = new QHBoxLayout( topLayout );
50 49
51 QPushButton *ok = new QPushButton(i18n("&OK"), this); 50 QPushButton *ok = new QPushButton(i18n("&OK"), this);
52 connect ( ok,SIGNAL(clicked()), this,SLOT(accept()) ); 51 connect ( ok,SIGNAL(clicked()), this,SLOT(accept()) );
53 buttonLayout->addWidget( ok ); 52 buttonLayout->addWidget( ok );
54 53
55 QPushButton *cancel = new QPushButton(i18n("&Cancel"), this); 54 QPushButton *cancel = new QPushButton(i18n("&Cancel"), this);
56 connect ( cancel,SIGNAL(clicked()), this,SLOT(reject()) ); 55 connect ( cancel,SIGNAL(clicked()), this,SLOT(reject()) );
57 buttonLayout->addWidget( cancel ); 56 buttonLayout->addWidget( cancel );
58} 57}
59 58
60StatusDialog::~StatusDialog() 59StatusDialog::~StatusDialog()
61{ 60{
62} 61}
63 62
64Attendee::PartStat StatusDialog::status() 63Attendee::PartStat StatusDialog::status()
65{ 64{
66 return Attendee::PartStat( mStatus->currentItem() ) ; 65 return Attendee::PartStat( mStatus->currentItem() ) ;
67} 66}
diff --git a/korganizer/timeline.cpp b/korganizer/timeline.cpp
index 6f9c8dd..11be432 100644
--- a/korganizer/timeline.cpp
+++ b/korganizer/timeline.cpp
@@ -1,63 +1,62 @@
1#include <qpainter.h> 1#include <qpainter.h>
2 2
3#include <kdebug.h> 3#include <kdebug.h>
4 4
5#include "timeline.h" 5#include "timeline.h"
6#include "timeline.moc"
7 6
8TimeLine::TimeLine( QWidget *parent, const char *name ) : 7TimeLine::TimeLine( QWidget *parent, const char *name ) :
9 QScrollView( parent, name ) 8 QScrollView( parent, name )
10{ 9{
11 mPixelWidth = 1000; 10 mPixelWidth = 1000;
12 11
13 resizeContents( mPixelWidth, 20 ); 12 resizeContents( mPixelWidth, 20 );
14 13
15 viewport()->setBackgroundMode( PaletteBackground ); 14 viewport()->setBackgroundMode( PaletteBackground );
16 15
17 setHScrollBarMode(AlwaysOff); 16 setHScrollBarMode(AlwaysOff);
18 setVScrollBarMode(AlwaysOff); 17 setVScrollBarMode(AlwaysOff);
19} 18}
20 19
21TimeLine::~TimeLine() 20TimeLine::~TimeLine()
22{ 21{
23} 22}
24 23
25void TimeLine::drawContents(QPainter* p, int cx, int cy, int cw, int ch) 24void TimeLine::drawContents(QPainter* p, int cx, int cy, int cw, int ch)
26{ 25{
27 int spacingX = mDaySpacing; 26 int spacingX = mDaySpacing;
28 int offsetX = mDayOffset; 27 int offsetX = mDayOffset;
29 28
30 // Draw vertical lines of grid 29 // Draw vertical lines of grid
31// kdDebug() << "drawContents cx: " << cx << " cy: " << cy << " cw: " << cw << " ch: " << ch << endl; 30// kdDebug() << "drawContents cx: " << cx << " cy: " << cy << " cw: " << cw << " ch: " << ch << endl;
32 int cell = int( (cx - ( spacingX - offsetX ) ) / spacingX ); 31 int cell = int( (cx - ( spacingX - offsetX ) ) / spacingX );
33 int x = cell * spacingX + ( spacingX - offsetX ); 32 int x = cell * spacingX + ( spacingX - offsetX );
34// kdDebug() << " x: " << x << endl; 33// kdDebug() << " x: " << x << endl;
35 while (x < cx + cw) { 34 while (x < cx + cw) {
36// kdDebug() << " x: " << x << endl; 35// kdDebug() << " x: " << x << endl;
37 p->drawLine(x,cy,x,cy+ch); 36 p->drawLine(x,cy,x,cy+ch);
38 p->drawText( x + 5, 15, QString::number( mStartDate.addDays( cell + 1 ).date().day() ) ); 37 p->drawText( x + 5, 15, QString::number( mStartDate.addDays( cell + 1 ).date().day() ) );
39 38
40 x += spacingX; 39 x += spacingX;
41 cell++; 40 cell++;
42 } 41 }
43} 42}
44 43
45void TimeLine::setDateRange( const QDateTime &start, const QDateTime &end ) 44void TimeLine::setDateRange( const QDateTime &start, const QDateTime &end )
46{ 45{
47 mStartDate = start; 46 mStartDate = start;
48 mEndDate = end; 47 mEndDate = end;
49 48
50 mSecsPerPixel = mStartDate.secsTo( mEndDate ) / mPixelWidth; 49 mSecsPerPixel = mStartDate.secsTo( mEndDate ) / mPixelWidth;
51 50
52 mDaySpacing = 60 * 60 * 24 / mSecsPerPixel; 51 mDaySpacing = 60 * 60 * 24 / mSecsPerPixel;
53 52
54 mDayOffset = QDateTime( mStartDate.date() ).secsTo( mStartDate ) / mSecsPerPixel; 53 mDayOffset = QDateTime( mStartDate.date() ).secsTo( mStartDate ) / mSecsPerPixel;
55 54
56 kdDebug() << "TimeLines::setDateRange(): mDaySpacing: " << mDaySpacing << " mDayOffset: " 55 kdDebug() << "TimeLines::setDateRange(): mDaySpacing: " << mDaySpacing << " mDayOffset: "
57 << mDayOffset << " mSecsPerPixel: " << mSecsPerPixel << endl; 56 << mDayOffset << " mSecsPerPixel: " << mSecsPerPixel << endl;
58} 57}
59 58
60void TimeLine::setContentsPos( int pos ) 59void TimeLine::setContentsPos( int pos )
61{ 60{
62 QScrollView::setContentsPos ( pos, 0 ); 61 QScrollView::setContentsPos ( pos, 0 );
63} 62}
diff --git a/korganizer/timespanview.cpp b/korganizer/timespanview.cpp
index f8314e7..67a3811 100644
--- a/korganizer/timespanview.cpp
+++ b/korganizer/timespanview.cpp
@@ -1,158 +1,157 @@
1 1
2#ifndef DESKTOP_VERSION 2#ifndef DESKTOP_VERSION
3#include <qksplitter.h> 3#include <qksplitter.h>
4#else 4#else
5#include <qsplitter.h> 5#include <qsplitter.h>
6#endif 6#endif
7#include <qlistview.h> 7#include <qlistview.h>
8#include <qlayout.h> 8#include <qlayout.h>
9#include <qheader.h> 9#include <qheader.h>
10#include <qpushbutton.h> 10#include <qpushbutton.h>
11 11
12#include <klocale.h> 12#include <klocale.h>
13#include <kdebug.h> 13#include <kdebug.h>
14 14
15#include "lineview.h" 15#include "lineview.h"
16#include "timeline.h" 16#include "timeline.h"
17 17
18#include "timespanview.h" 18#include "timespanview.h"
19#include "timespanview.moc"
20 19
21 20
22TimeSpanView::TimeSpanView( QWidget *parent, const char *name ) : 21TimeSpanView::TimeSpanView( QWidget *parent, const char *name ) :
23 QWidget( parent, name ) 22 QWidget( parent, name )
24{ 23{
25 QBoxLayout *topLayout = new QVBoxLayout( this ); 24 QBoxLayout *topLayout = new QVBoxLayout( this );
26#ifndef DESKTOP_VERSION 25#ifndef DESKTOP_VERSION
27 mSplitter = new QKSplitter( this ); 26 mSplitter = new QKSplitter( this );
28#else 27#else
29 mSplitter = new QSplitter( this ); 28 mSplitter = new QSplitter( this );
30#endif 29#endif
31 topLayout->addWidget( mSplitter ); 30 topLayout->addWidget( mSplitter );
32 31
33 mList = new QListView( mSplitter ); 32 mList = new QListView( mSplitter );
34 mList->addColumn( i18n("Summary") ); 33 mList->addColumn( i18n("Summary") );
35 34
36 QWidget *rightPane = new QWidget( mSplitter ); 35 QWidget *rightPane = new QWidget( mSplitter );
37 QBoxLayout *rightPaneLayout = new QVBoxLayout( rightPane ); 36 QBoxLayout *rightPaneLayout = new QVBoxLayout( rightPane );
38 37
39 mTimeLine = new TimeLine( rightPane ); 38 mTimeLine = new TimeLine( rightPane );
40 mTimeLine->setFixedHeight( mList->header()->height() ); 39 mTimeLine->setFixedHeight( mList->header()->height() );
41 rightPaneLayout->addWidget( mTimeLine ); 40 rightPaneLayout->addWidget( mTimeLine );
42 41
43 mLineView = new LineView( rightPane ); 42 mLineView = new LineView( rightPane );
44 rightPaneLayout->addWidget( mLineView ); 43 rightPaneLayout->addWidget( mLineView );
45 44
46 QBoxLayout *buttonLayout = new QHBoxLayout( rightPaneLayout ); 45 QBoxLayout *buttonLayout = new QHBoxLayout( rightPaneLayout );
47 46
48 QPushButton *zoomInButton = new QPushButton( i18n("Zoom In"), rightPane ); 47 QPushButton *zoomInButton = new QPushButton( i18n("Zoom In"), rightPane );
49 connect( zoomInButton, SIGNAL( clicked() ), SLOT( zoomIn() ) ); 48 connect( zoomInButton, SIGNAL( clicked() ), SLOT( zoomIn() ) );
50 buttonLayout->addWidget( zoomInButton ); 49 buttonLayout->addWidget( zoomInButton );
51 50
52 QPushButton *zoomOutButton = new QPushButton( i18n("Zoom Out"), rightPane ); 51 QPushButton *zoomOutButton = new QPushButton( i18n("Zoom Out"), rightPane );
53 connect( zoomOutButton, SIGNAL( clicked() ), SLOT( zoomOut() ) ); 52 connect( zoomOutButton, SIGNAL( clicked() ), SLOT( zoomOut() ) );
54 buttonLayout->addWidget( zoomOutButton ); 53 buttonLayout->addWidget( zoomOutButton );
55 54
56 QPushButton *centerButton = new QPushButton( i18n("Center View"), rightPane ); 55 QPushButton *centerButton = new QPushButton( i18n("Center View"), rightPane );
57 connect( centerButton, SIGNAL( clicked() ), SLOT( centerView() ) ); 56 connect( centerButton, SIGNAL( clicked() ), SLOT( centerView() ) );
58 buttonLayout->addWidget( centerButton ); 57 buttonLayout->addWidget( centerButton );
59 58
60 connect(mLineView->horizontalScrollBar(),SIGNAL(valueChanged(int)), 59 connect(mLineView->horizontalScrollBar(),SIGNAL(valueChanged(int)),
61 mTimeLine,SLOT(setContentsPos(int))); 60 mTimeLine,SLOT(setContentsPos(int)));
62} 61}
63 62
64TimeSpanView::~TimeSpanView() 63TimeSpanView::~TimeSpanView()
65{ 64{
66} 65}
67 66
68QValueList<int> TimeSpanView::splitterSizes() 67QValueList<int> TimeSpanView::splitterSizes()
69{ 68{
70 return mSplitter->sizes(); 69 return mSplitter->sizes();
71} 70}
72 71
73void TimeSpanView::setSplitterSizes( QValueList<int> sizes ) 72void TimeSpanView::setSplitterSizes( QValueList<int> sizes )
74{ 73{
75 mSplitter->setSizes( sizes ); 74 mSplitter->setSizes( sizes );
76} 75}
77 76
78void TimeSpanView::addItem( KCal::Event *event ) 77void TimeSpanView::addItem( KCal::Event *event )
79{ 78{
80 new QListViewItem( mList, event->summary() ); 79 new QListViewItem( mList, event->summary() );
81 80
82 QDateTime startDt = event->dtStart(); 81 QDateTime startDt = event->dtStart();
83 QDateTime endDt = event->dtEnd(); 82 QDateTime endDt = event->dtEnd();
84 83
85// kdDebug() << "TimeSpanView::addItem(): start: " << startDt.toString() 84// kdDebug() << "TimeSpanView::addItem(): start: " << startDt.toString()
86// << " end: " << endDt.toString() << endl; 85// << " end: " << endDt.toString() << endl;
87 86
88 int startSecs = mStartDate.secsTo( startDt ); 87 int startSecs = mStartDate.secsTo( startDt );
89 int durationSecs = startDt.secsTo( endDt ); 88 int durationSecs = startDt.secsTo( endDt );
90 89
91// kdDebug() << "--- startSecs: " << startSecs << " dur: " << durationSecs << endl; 90// kdDebug() << "--- startSecs: " << startSecs << " dur: " << durationSecs << endl;
92 91
93 int startX = mStartDate.secsTo( startDt ) / mSecsPerPixel; 92 int startX = mStartDate.secsTo( startDt ) / mSecsPerPixel;
94 int endX = startX + startDt.secsTo( endDt ) / mSecsPerPixel; 93 int endX = startX + startDt.secsTo( endDt ) / mSecsPerPixel;
95 94
96// kdDebug() << "TimeSpanView::addItem(): s: " << startX << " e: " << endX << endl; 95// kdDebug() << "TimeSpanView::addItem(): s: " << startX << " e: " << endX << endl;
97 96
98 mLineView->addLine( startX, endX ); 97 mLineView->addLine( startX, endX );
99} 98}
100 99
101void TimeSpanView::clear() 100void TimeSpanView::clear()
102{ 101{
103 mList->clear(); 102 mList->clear();
104 mLineView->clear(); 103 mLineView->clear();
105} 104}
106 105
107void TimeSpanView::updateView() 106void TimeSpanView::updateView()
108{ 107{
109#if QT_VERSION >= 300 108#if QT_VERSION >= 300
110 mLineView->updateContents(); 109 mLineView->updateContents();
111 mTimeLine->updateContents(); 110 mTimeLine->updateContents();
112#else 111#else
113#endif 112#endif
114} 113}
115 114
116void TimeSpanView::setDateRange( const QDateTime &start, const QDateTime &end ) 115void TimeSpanView::setDateRange( const QDateTime &start, const QDateTime &end )
117{ 116{
118 mStartDate = start; 117 mStartDate = start;
119 mEndDate = end; 118 mEndDate = end;
120 119
121 mTimeLine->setDateRange( start, end ); 120 mTimeLine->setDateRange( start, end );
122 121
123 mSecsPerPixel = mStartDate.secsTo( mEndDate ) / mLineView->pixelWidth(); 122 mSecsPerPixel = mStartDate.secsTo( mEndDate ) / mLineView->pixelWidth();
124} 123}
125 124
126QDateTime TimeSpanView::startDateTime() 125QDateTime TimeSpanView::startDateTime()
127{ 126{
128 return mStartDate; 127 return mStartDate;
129} 128}
130 129
131QDateTime TimeSpanView::endDateTime() 130QDateTime TimeSpanView::endDateTime()
132{ 131{
133 return mEndDate; 132 return mEndDate;
134} 133}
135 134
136void TimeSpanView::zoomIn() 135void TimeSpanView::zoomIn()
137{ 136{
138 int span = mStartDate.daysTo( mEndDate ); 137 int span = mStartDate.daysTo( mEndDate );
139 setDateRange( mStartDate.addDays( span / 4 ), mEndDate.addDays( span / -4 ) ); 138 setDateRange( mStartDate.addDays( span / 4 ), mEndDate.addDays( span / -4 ) );
140 139
141 emit dateRangeChanged(); 140 emit dateRangeChanged();
142} 141}
143 142
144void TimeSpanView::zoomOut() 143void TimeSpanView::zoomOut()
145{ 144{
146 int span = mStartDate.daysTo( mEndDate ); 145 int span = mStartDate.daysTo( mEndDate );
147 setDateRange( mStartDate.addDays( span / -4 ), mEndDate.addDays( span / 4 ) ); 146 setDateRange( mStartDate.addDays( span / -4 ), mEndDate.addDays( span / 4 ) );
148 147
149 emit dateRangeChanged(); 148 emit dateRangeChanged();
150} 149}
151 150
152void TimeSpanView::centerView() 151void TimeSpanView::centerView()
153{ 152{
154 QScrollBar *scrollBar = mLineView->horizontalScrollBar(); 153 QScrollBar *scrollBar = mLineView->horizontalScrollBar();
155 int min = scrollBar->minValue(); 154 int min = scrollBar->minValue();
156 int max = scrollBar->maxValue(); 155 int max = scrollBar->maxValue();
157 scrollBar->setValue( min + (max-min) / 2 ); 156 scrollBar->setValue( min + (max-min) / 2 );
158} 157}
diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp
index dc198bd..32aac7a 100644
--- a/libkcal/calendar.cpp
+++ b/libkcal/calendar.cpp
@@ -42,385 +42,385 @@ Calendar::Calendar()
42 42
43Calendar::Calendar( const QString &timeZoneId ) 43Calendar::Calendar( const QString &timeZoneId )
44{ 44{
45 45
46 init(); 46 init();
47 setTimeZoneId(timeZoneId); 47 setTimeZoneId(timeZoneId);
48} 48}
49 49
50void Calendar::init() 50void Calendar::init()
51{ 51{
52 mObserver = 0; 52 mObserver = 0;
53 mNewObserver = false; 53 mNewObserver = false;
54 54
55 mModified = false; 55 mModified = false;
56 56
57 // Setup default filter, which does nothing 57 // Setup default filter, which does nothing
58 mDefaultFilter = new CalFilter; 58 mDefaultFilter = new CalFilter;
59 mFilter = mDefaultFilter; 59 mFilter = mDefaultFilter;
60 mFilter->setEnabled(false); 60 mFilter->setEnabled(false);
61 61
62 // initialize random numbers. This is a hack, and not 62 // initialize random numbers. This is a hack, and not
63 // even that good of one at that. 63 // even that good of one at that.
64// srandom(time(0)); 64// srandom(time(0));
65 65
66 // user information... 66 // user information...
67 setOwner(i18n("Unknown Name")); 67 setOwner(i18n("Unknown Name"));
68 setEmail(i18n("unknown@nowhere")); 68 setEmail(i18n("unknown@nowhere"));
69 69
70#if 0 70#if 0
71 tmpStr = KOPrefs::instance()->mTimeZone; 71 tmpStr = KOPrefs::instance()->mTimeZone;
72// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl; 72// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl;
73 int dstSetting = KOPrefs::instance()->mDaylightSavings; 73 int dstSetting = KOPrefs::instance()->mDaylightSavings;
74 extern long int timezone; 74 extern long int timezone;
75 struct tm *now; 75 struct tm *now;
76 time_t curtime; 76 time_t curtime;
77 curtime = time(0); 77 curtime = time(0);
78 now = localtime(&curtime); 78 now = localtime(&curtime);
79 int hourOff = - ((timezone / 60) / 60); 79 int hourOff = - ((timezone / 60) / 60);
80 if (now->tm_isdst) 80 if (now->tm_isdst)
81 hourOff += 1; 81 hourOff += 1;
82 QString tzStr; 82 QString tzStr;
83 tzStr.sprintf("%.2d%.2d", 83 tzStr.sprintf("%.2d%.2d",
84 hourOff, 84 hourOff,
85 abs((timezone / 60) % 60)); 85 abs((timezone / 60) % 60));
86 86
87 // if no time zone was in the config file, write what we just discovered. 87 // if no time zone was in the config file, write what we just discovered.
88 if (tmpStr.isEmpty()) { 88 if (tmpStr.isEmpty()) {
89// KOPrefs::instance()->mTimeZone = tzStr; 89// KOPrefs::instance()->mTimeZone = tzStr;
90 } else { 90 } else {
91 tzStr = tmpStr; 91 tzStr = tmpStr;
92 } 92 }
93 93
94 // if daylight savings has changed since last load time, we need 94 // if daylight savings has changed since last load time, we need
95 // to rewrite these settings to the config file. 95 // to rewrite these settings to the config file.
96 if ((now->tm_isdst && !dstSetting) || 96 if ((now->tm_isdst && !dstSetting) ||
97 (!now->tm_isdst && dstSetting)) { 97 (!now->tm_isdst && dstSetting)) {
98 KOPrefs::instance()->mTimeZone = tzStr; 98 KOPrefs::instance()->mTimeZone = tzStr;
99 KOPrefs::instance()->mDaylightSavings = now->tm_isdst; 99 KOPrefs::instance()->mDaylightSavings = now->tm_isdst;
100 } 100 }
101 101
102 setTimeZone(tzStr); 102 setTimeZone(tzStr);
103#endif 103#endif
104 104
105// KOPrefs::instance()->writeConfig(); 105// KOPrefs::instance()->writeConfig();
106} 106}
107 107
108Calendar::~Calendar() 108Calendar::~Calendar()
109{ 109{
110 delete mDefaultFilter; 110 delete mDefaultFilter;
111} 111}
112 112
113const QString &Calendar::getOwner() const 113const QString &Calendar::getOwner() const
114{ 114{
115 return mOwner; 115 return mOwner;
116} 116}
117 117
118void Calendar::setOwner(const QString &os) 118void Calendar::setOwner(const QString &os)
119{ 119{
120 int i; 120 int i;
121 mOwner = os; 121 mOwner = os;
122 i = mOwner.find(','); 122 i = mOwner.find(',');
123 if (i != -1) 123 if (i != -1)
124 mOwner = mOwner.left(i); 124 mOwner = mOwner.left(i);
125 125
126 setModified( true ); 126 setModified( true );
127} 127}
128 128
129void Calendar::setTimeZone(const QString & tz) 129void Calendar::setTimeZone(const QString & tz)
130{ 130{
131 bool neg = FALSE; 131 bool neg = FALSE;
132 int hours, minutes; 132 int hours, minutes;
133 QString tmpStr(tz); 133 QString tmpStr(tz);
134 134
135 if (tmpStr.left(1) == "-") 135 if (tmpStr.left(1) == "-")
136 neg = TRUE; 136 neg = TRUE;
137 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+") 137 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+")
138 tmpStr.remove(0, 1); 138 tmpStr.remove(0, 1);
139 hours = tmpStr.left(2).toInt(); 139 hours = tmpStr.left(2).toInt();
140 if (tmpStr.length() > 2) 140 if (tmpStr.length() > 2)
141 minutes = tmpStr.right(2).toInt(); 141 minutes = tmpStr.right(2).toInt();
142 else 142 else
143 minutes = 0; 143 minutes = 0;
144 mTimeZone = (60*hours+minutes); 144 mTimeZone = (60*hours+minutes);
145 if (neg) 145 if (neg)
146 mTimeZone = -mTimeZone; 146 mTimeZone = -mTimeZone;
147 mLocalTime = false; 147 mLocalTime = false;
148 148
149 setModified( true ); 149 setModified( true );
150} 150}
151 151
152QString Calendar::getTimeZoneStr() const 152QString Calendar::getTimeZoneStr() const
153{ 153{
154 if (mLocalTime) 154 if (mLocalTime)
155 return ""; 155 return "";
156 QString tmpStr; 156 QString tmpStr;
157 int hours = abs(mTimeZone / 60); 157 int hours = abs(mTimeZone / 60);
158 int minutes = abs(mTimeZone % 60); 158 int minutes = abs(mTimeZone % 60);
159 bool neg = mTimeZone < 0; 159 bool neg = mTimeZone < 0;
160 160
161 tmpStr.sprintf("%c%.2d%.2d", 161 tmpStr.sprintf("%c%.2d%.2d",
162 (neg ? '-' : '+'), 162 (neg ? '-' : '+'),
163 hours, minutes); 163 hours, minutes);
164 return tmpStr; 164 return tmpStr;
165} 165}
166 166
167void Calendar::setTimeZone(int tz) 167void Calendar::setTimeZone(int tz)
168{ 168{
169 mTimeZone = tz; 169 mTimeZone = tz;
170 mLocalTime = false; 170 mLocalTime = false;
171 171
172 setModified( true ); 172 setModified( true );
173} 173}
174 174
175int Calendar::getTimeZone() const 175int Calendar::getTimeZone() const
176{ 176{
177 return mTimeZone; 177 return mTimeZone;
178} 178}
179 179
180void Calendar::setTimeZoneId(const QString &id) 180void Calendar::setTimeZoneId(const QString &id)
181{ 181{
182 mTimeZoneId = id; 182 mTimeZoneId = id;
183 mLocalTime = false; 183 mLocalTime = false;
184 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId); 184 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId);
185 if ( mTimeZone > 1000) 185 if ( mTimeZone > 1000)
186 setLocalTime(); 186 setLocalTime();
187 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone); 187 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone);
188 setModified( true ); 188 setModified( true );
189} 189}
190 190
191QString Calendar::timeZoneId() const 191QString Calendar::timeZoneId() const
192{ 192{
193 return mTimeZoneId; 193 return mTimeZoneId;
194} 194}
195 195
196void Calendar::setLocalTime() 196void Calendar::setLocalTime()
197{ 197{
198 //qDebug("Calendar::setLocalTime() "); 198 //qDebug("Calendar::setLocalTime() ");
199 mLocalTime = true; 199 mLocalTime = true;
200 mTimeZone = 0; 200 mTimeZone = 0;
201 mTimeZoneId = ""; 201 mTimeZoneId = "";
202 202
203 setModified( true ); 203 setModified( true );
204} 204}
205 205
206bool Calendar::isLocalTime() const 206bool Calendar::isLocalTime() const
207{ 207{
208 return mLocalTime; 208 return mLocalTime;
209} 209}
210 210
211const QString &Calendar::getEmail() 211const QString &Calendar::getEmail()
212{ 212{
213 return mOwnerEmail; 213 return mOwnerEmail;
214} 214}
215 215
216void Calendar::setEmail(const QString &e) 216void Calendar::setEmail(const QString &e)
217{ 217{
218 mOwnerEmail = e; 218 mOwnerEmail = e;
219 219
220 setModified( true ); 220 setModified( true );
221} 221}
222 222
223void Calendar::setFilter(CalFilter *filter) 223void Calendar::setFilter(CalFilter *filter)
224{ 224{
225 mFilter = filter; 225 mFilter = filter;
226} 226}
227 227
228CalFilter *Calendar::filter() 228CalFilter *Calendar::filter()
229{ 229{
230 return mFilter; 230 return mFilter;
231} 231}
232 232
233QPtrList<Incidence> Calendar::incidences() 233QPtrList<Incidence> Calendar::incidences()
234{ 234{
235 QPtrList<Incidence> incidences; 235 QPtrList<Incidence> incidences;
236 236
237 Incidence *i; 237 Incidence *i;
238 238
239 QPtrList<Event> e = events(); 239 QPtrList<Event> e = events();
240 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 240 for( i = e.first(); i; i = e.next() ) incidences.append( i );
241 241
242 QPtrList<Todo> t = todos(); 242 QPtrList<Todo> t = todos();
243 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 243 for( i = t.first(); i; i = t.next() ) incidences.append( i );
244 244
245 QPtrList<Journal> j = journals(); 245 QPtrList<Journal> j = journals();
246 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 246 for( i = j.first(); i; i = j.next() ) incidences.append( i );
247 247
248 return incidences; 248 return incidences;
249} 249}
250 250
251QPtrList<Incidence> Calendar::rawIncidences() 251QPtrList<Incidence> Calendar::rawIncidences()
252{ 252{
253 QPtrList<Incidence> incidences; 253 QPtrList<Incidence> incidences;
254 254
255 Incidence *i; 255 Incidence *i;
256 256
257 QPtrList<Event> e = rawEvents(); 257 QPtrList<Event> e = rawEvents();
258 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 258 for( i = e.first(); i; i = e.next() ) incidences.append( i );
259 259
260 QPtrList<Todo> t = rawTodos(); 260 QPtrList<Todo> t = rawTodos();
261 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 261 for( i = t.first(); i; i = t.next() ) incidences.append( i );
262 262
263 QPtrList<Journal> j = journals(); 263 QPtrList<Journal> j = journals();
264 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 264 for( i = j.first(); i; i = j.next() ) incidences.append( i );
265 265
266 return incidences; 266 return incidences;
267} 267}
268 268
269QPtrList<Event> Calendar::events( const QDate &date, bool sorted ) 269QPtrList<Event> Calendar::events( const QDate &date, bool sorted )
270{ 270{
271 QPtrList<Event> el = rawEventsForDate(date,sorted); 271 QPtrList<Event> el = rawEventsForDate(date,sorted);
272 mFilter->apply(&el); 272 mFilter->apply(&el);
273 return el; 273 return el;
274} 274}
275 275
276QPtrList<Event> Calendar::events( const QDateTime &qdt ) 276QPtrList<Event> Calendar::events( const QDateTime &qdt )
277{ 277{
278 QPtrList<Event> el = rawEventsForDate(qdt); 278 QPtrList<Event> el = rawEventsForDate(qdt);
279 mFilter->apply(&el); 279 mFilter->apply(&el);
280 return el; 280 return el;
281} 281}
282 282
283QPtrList<Event> Calendar::events( const QDate &start, const QDate &end, 283QPtrList<Event> Calendar::events( const QDate &start, const QDate &end,
284 bool inclusive) 284 bool inclusive)
285{ 285{
286 QPtrList<Event> el = rawEvents(start,end,inclusive); 286 QPtrList<Event> el = rawEvents(start,end,inclusive);
287 mFilter->apply(&el); 287 mFilter->apply(&el);
288 return el; 288 return el;
289} 289}
290 290
291QPtrList<Event> Calendar::events() 291QPtrList<Event> Calendar::events()
292{ 292{
293 QPtrList<Event> el = rawEvents(); 293 QPtrList<Event> el = rawEvents();
294 mFilter->apply(&el); 294 mFilter->apply(&el);
295 return el; 295 return el;
296} 296}
297 297
298 298
299bool Calendar::addIncidence(Incidence *i) 299bool Calendar::addIncidence(Incidence *i)
300{ 300{
301 Incidence::AddVisitor<Calendar> v(this); 301 Incidence::AddVisitor<Calendar> v(this);
302 302
303 return i->accept(v); 303 return i->accept(v);
304} 304}
305void Calendar::deleteIncidence(Incidence *in) 305void Calendar::deleteIncidence(Incidence *in)
306{ 306{
307 if ( in->type() == "Event" ) 307 if ( in->type() == "Event" )
308 deleteEvent( (Event*) in ); 308 deleteEvent( (Event*) in );
309 else if ( in->type() =="Todo" ) 309 else if ( in->type() =="Todo" )
310 deleteTodo( (Todo*) in); 310 deleteTodo( (Todo*) in);
311 else if ( in->type() =="Journal" ) 311 else if ( in->type() =="Journal" )
312 deleteJournal( (Journal*) in ); 312 deleteJournal( (Journal*) in );
313} 313}
314 314
315Incidence* Calendar::incidence( const QString& uid ) 315Incidence* Calendar::incidence( const QString& uid )
316{ 316{
317 Incidence* i; 317 Incidence* i;
318 318
319 if( (i = todo( uid )) != 0 ) 319 if( (i = todo( uid )) != 0 )
320 return i; 320 return i;
321 if( (i = event( uid )) != 0 ) 321 if( (i = event( uid )) != 0 )
322 return i; 322 return i;
323 if( (i = journal( uid )) != 0 ) 323 if( (i = journal( uid )) != 0 )
324 return i; 324 return i;
325 325
326 return 0; 326 return 0;
327} 327}
328 328
329QPtrList<Todo> Calendar::todos() 329QPtrList<Todo> Calendar::todos()
330{ 330{
331 QPtrList<Todo> tl = rawTodos(); 331 QPtrList<Todo> tl = rawTodos();
332 mFilter->apply( &tl ); 332 mFilter->apply( &tl );
333 return tl; 333 return tl;
334} 334}
335 335
336// When this is called, the todo have already been added to the calendar. 336// When this is called, the todo have already been added to the calendar.
337// This method is only about linking related todos 337// This method is only about linking related todos
338void Calendar::setupRelations( Incidence *incidence ) 338void Calendar::setupRelations( Incidence *incidence )
339{ 339{
340 QString uid = incidence->uid(); 340 QString uid = incidence->uid();
341 //qDebug("Calendar::setupRelations "); 341 //qDebug("Calendar::setupRelations ");
342 // First, go over the list of orphans and see if this is their parent 342 // First, go over the list of orphans and see if this is their parent
343 while( Incidence* i = mOrphans[ uid ] ) { 343 while( Incidence* i = mOrphans[ uid ] ) {
344 mOrphans.remove( uid ); 344 mOrphans.remove( uid );
345 i->setRelatedTo( incidence ); 345 i->setRelatedTo( incidence );
346 incidence->addRelation( i ); 346 incidence->addRelation( i );
347 mOrphanUids.remove( i->uid() ); 347 mOrphanUids.remove( i->uid() );
348 } 348 }
349 349
350 // Now see about this incidences parent 350 // Now see about this incidences parent
351 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) { 351 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) {
352 // This incidence has a uid it is related to, but is not registered to it yet 352 // This incidence has a uid it is related to, but is not registered to it yet
353 // Try to find it 353 // Try to find it
354 Incidence* parent = this->incidence( incidence->relatedToUid() ); 354 Incidence* parent = this->incidence( incidence->relatedToUid() );
355 if( parent ) { 355 if( parent ) {
356 // Found it 356 // Found it
357 incidence->setRelatedTo( parent ); 357 incidence->setRelatedTo( parent );
358 parent->addRelation( incidence ); 358 parent->addRelation( incidence );
359 } else { 359 } else {
360 // Not found, put this in the mOrphans list 360 // Not found, put this in the mOrphans list
361 mOrphans.insert( incidence->relatedToUid(), incidence ); 361 mOrphans.insert( incidence->relatedToUid(), incidence );
362 mOrphanUids.insert( incidence->uid(), incidence ); 362 mOrphanUids.insert( incidence->uid(), incidence );
363 } 363 }
364 } 364 }
365} 365}
366 366
367// If a task with subtasks is deleted, move it's subtasks to the orphans list 367// If a task with subtasks is deleted, move it's subtasks to the orphans list
368void Calendar::removeRelations( Incidence *incidence ) 368void Calendar::removeRelations( Incidence *incidence )
369{ 369{
370 // qDebug("Calendar::removeRelations "); 370 // qDebug("Calendar::removeRelations ");
371 QString uid = incidence->uid(); 371 QString uid = incidence->uid();
372 372
373 QPtrList<Incidence> relations = incidence->relations(); 373 QPtrList<Incidence> relations = incidence->relations();
374 for( Incidence* i = relations.first(); i; i = relations.next() ) 374 for( Incidence* i = relations.first(); i; i = relations.next() )
375 if( !mOrphanUids.find( i->uid() ) ) { 375 if( !mOrphanUids.find( i->uid() ) ) {
376 mOrphans.insert( uid, i ); 376 mOrphans.insert( uid, i );
377 mOrphanUids.insert( i->uid(), i ); 377 mOrphanUids.insert( i->uid(), i );
378 i->setRelatedTo( 0 ); 378 i->setRelatedTo( 0 );
379 i->setRelatedToUid( uid ); 379 i->setRelatedToUid( uid );
380 } 380 }
381 381
382 // If this incidence is related to something else, tell that about it 382 // If this incidence is related to something else, tell that about it
383 if( incidence->relatedTo() ) 383 if( incidence->relatedTo() )
384 incidence->relatedTo()->removeRelation( incidence ); 384 incidence->relatedTo()->removeRelation( incidence );
385 385
386 // Remove this one from the orphans list 386 // Remove this one from the orphans list
387 if( mOrphanUids.remove( uid ) ) 387 if( mOrphanUids.remove( uid ) )
388 // This incidence is located in the orphans list - it should be removed 388 // This incidence is located in the orphans list - it should be removed
389 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) { 389 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) {
390 // Removing wasn't that easy 390 // Removing wasn't that easy
391 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) { 391 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) {
392 if( it.current()->uid() == uid ) { 392 if( it.current()->uid() == uid ) {
393 mOrphans.remove( it.currentKey() ); 393 mOrphans.remove( it.currentKey() );
394 break; 394 break;
395 } 395 }
396 } 396 }
397 } 397 }
398} 398}
399 399
400void Calendar::registerObserver( Observer *observer ) 400void Calendar::registerObserver( Observer *observer )
401{ 401{
402 mObserver = observer; 402 mObserver = observer;
403 mNewObserver = true; 403 mNewObserver = true;
404} 404}
405 405
406void Calendar::setModified( bool modified ) 406void Calendar::setModified( bool modified )
407{ 407{
408 if ( mObserver ) mObserver->calendarModified( modified, this ); 408 if ( mObserver ) mObserver->calendarModified( modified, this );
409 if ( modified != mModified || mNewObserver ) { 409 if ( modified != mModified || mNewObserver ) {
410 mNewObserver = false; 410 mNewObserver = false;
411 // if ( mObserver ) mObserver->calendarModified( modified, this ); 411 // if ( mObserver ) mObserver->calendarModified( modified, this );
412 mModified = modified; 412 mModified = modified;
413 } 413 }
414} 414}
415 415
416void Calendar::setLoadedProductId( const QString &id ) 416void Calendar::setLoadedProductId( const QString &id )
417{ 417{
418 mLoadedProductId = id; 418 mLoadedProductId = id;
419} 419}
420 420
421QString Calendar::loadedProductId() 421QString Calendar::loadedProductId()
422{ 422{
423 return mLoadedProductId; 423 return mLoadedProductId;
424} 424}
425 425
426#include "calendar.moc" 426//#include "calendar.moc"