summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kofilterview.cpp95
-rw-r--r--korganizer/kofilterview.h14
2 files changed, 63 insertions, 46 deletions
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 20118aa..1335d7e 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -132,38 +132,20 @@ void KOCalEditView::selectCal(int id ,bool b)
132 emit needsUpdate(); 132 emit needsUpdate();
133 133
134} 134}
135void KOCalEditView::selectStdCal( int id, bool b ) 135void KOCalEditView::selectStdCal( int id )
136{ 136{
137
138 if ( !b ) {
139 KOCalCheckButton* it = (KOCalCheckButton*) sender();
140 if ( it ) {
141 it->blockSignals( true );
142 it->setChecked( true );
143 it->blockSignals( false );
144 return;
145 }
146 return;
147 }
148 KOCalRadioButton* sen = (KOCalRadioButton*) sender();
149 KOCalRadioButton* it = mStdandardB.first(); 137 KOCalRadioButton* it = mStdandardB.first();
150 while ( it ) { 138 while ( it ) {
151 if ( it->isChecked() ) { 139 it->blockSignals( true );
152 if ( it != sen ) { 140 it->setChecked( it->num() == id );
153 it->blockSignals( true ); 141 it->blockSignals( false );
154 it->setChecked( false );
155 it->blockSignals( false );
156 break;
157 }
158 }
159 it = mStdandardB.next(); 142 it = mStdandardB.next();
160 } 143 }
161 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 144 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
162 while ( kkf ) { 145 while ( kkf ) {
163 kkf->isStandard = false; 146 kkf->isStandard = (kkf->mCalNumber == id );
164 kkf = KOPrefs::instance()->mCalendars.next(); 147 kkf = KOPrefs::instance()->mCalendars.next();
165 } 148 }
166 KOPrefs::instance()->getCalendar( id )->isStandard = true;
167 emit setCalendarDefault ( id ); 149 emit setCalendarDefault ( id );
168} 150}
169 151
@@ -177,17 +159,43 @@ void KOCalEditView::selectReadOnly(int id ,bool b )
177{ 159{
178 KOPrefs::instance()->getCalendar( id )->isReadOnly = b; 160 KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
179 emit calendarReadonly ( id , b ); 161 emit calendarReadonly ( id , b );
180 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b && id > 1 ) { 162 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b ) {
181 KOPrefs::instance()->getCalendar( id )->isStandard = false; 163 findNewStandard();
182 KOPrefs::instance()->getCalendar( 1 )->isStandard = true; 164 } else {
183 mStdandardB.at(0)->setChecked( true ); 165 if ( !b ){
184 mStdandardB.at(id-1)->setChecked( false ); 166 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
185 emit setCalendarDefault ( 1 ); 167 while ( kkf ) {
168 if (kkf->isReadOnly && kkf->isStandard ) {
169 selectStdCal( id );
170 break;
171 }
172 kkf = KOPrefs::instance()->mCalendars.next();
173 }
174 }
186 } 175 }
187 mStdandardB.at(id-1)->setEnabled( !b ); 176 mStdandardB.at(id-1)->setEnabled( !b );
188 emit needsUpdate(); 177 emit needsUpdate();
189 178
190} 179}
180void KOCalEditView::findNewStandard()
181{
182 bool found = false;
183 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
184 while ( kkf ) {
185 if (!kkf->isReadOnly && !kkf->mErrorOnLoad ) {
186 found = true;
187 selectStdCal( kkf->mCalNumber );
188 break;
189 }
190 kkf = KOPrefs::instance()->mCalendars.next();
191 }
192 if ( !found ) {
193 KMessageBox::error( this,i18n("\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n"),
194 i18n("Houston, we have a problem!") );
195
196 }
197}
198
191void KOCalEditView::setColor( const QColor& c, int id ) 199void KOCalEditView::setColor( const QColor& c, int id )
192{ 200{
193 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; 201 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
@@ -199,10 +207,10 @@ void KOCalEditView::deleteCal( int id )
199 QString name = kkf->mName; 207 QString name = kkf->mName;
200 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 ); 208 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
201 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; 209 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
202 if ( kkf->isStandard ) 210 bool findnewstd = kkf->isStandard;
203 selectStdCal( 1, true );
204 emit removeCalendar ( id ); 211 emit removeCalendar ( id );
205 KOPrefs::instance()->mCalendars.remove ( kkf ); 212 KOPrefs::instance()->mCalendars.remove ( kkf );
213 if ( findnewstd ) findNewStandard();
206 emit needsUpdate(); 214 emit needsUpdate();
207 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 215 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
208} 216}
@@ -284,18 +292,21 @@ void KOCalEditView::readConfig()
284 292
285 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 293 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
286 int row = 1; 294 int row = 1;
295 bool errorLoadStandard = false;
287 while ( kkf ) { 296 while ( kkf ) {
288 int iii = 0; 297 int iii = 0;
289 KOCalRadioButton* rb = new KOCalRadioButton( mw ); 298 KOCalRadioButton* rb = new KOCalRadioButton( mw );
290 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb ); 299 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb );
291 rb->setChecked( kkf->isStandard ); 300 rb->setChecked( kkf->isStandard );
301 if ( kkf->isStandard && ( kkf->mErrorOnLoad || kkf->isReadOnly ) )
302 errorLoadStandard = true;
292 rb->setNum( kkf->mCalNumber ); 303 rb->setNum( kkf->mCalNumber );
293 connect (rb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) ); 304 connect (rb, SIGNAL (selectNum(int)), SLOT ( selectStdCal(int) ) );
294 if ( kkf->mErrorOnLoad || kkf->isReadOnly ) 305 if ( kkf->mErrorOnLoad || kkf->isReadOnly )
295 rb->setEnabled( false ); 306 rb->setEnabled( false );
296 KOCalCheckButton* cb = new KOCalCheckButton( mw ); 307 KOCalCheckButton* cb = new KOCalCheckButton( mw );
297 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb ); 308 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb );
298 cb->setChecked( kkf->isEnabled ); 309 cb->setChecked( kkf->isEnabled && !kkf->mErrorOnLoad );
299 cb->setNum( kkf->mCalNumber ); 310 cb->setNum( kkf->mCalNumber );
300 if ( kkf->mErrorOnLoad ) 311 if ( kkf->mErrorOnLoad )
301 cb->setEnabled( false ); 312 cb->setEnabled( false );
@@ -309,7 +320,7 @@ void KOCalEditView::readConfig()
309 //mainLayout->addWidget( lab,row,++iii ); 320 //mainLayout->addWidget( lab,row,++iii );
310 cb = new KOCalCheckButton( mw ); 321 cb = new KOCalCheckButton( mw );
311 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb ); 322 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb );
312 cb->setChecked( kkf->isAlarmEnabled ); 323 cb->setChecked( kkf->isAlarmEnabled && !kkf->mErrorOnLoad);
313 cb->setNum( kkf->mCalNumber ); 324 cb->setNum( kkf->mCalNumber );
314 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) ); 325 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
315 if ( kkf->mErrorOnLoad ) 326 if ( kkf->mErrorOnLoad )
@@ -338,13 +349,14 @@ void KOCalEditView::readConfig()
338 ++row; 349 ++row;
339 kkf = KOPrefs::instance()->mCalendars.next(); 350 kkf = KOPrefs::instance()->mCalendars.next();
340 } 351 }
352 if ( errorLoadStandard )
353 findNewStandard();
341 lab = new QLabel ( "", mw ); 354 lab = new QLabel ( "", mw );
342 mainLayout->addWidget( lab,row,0 ); 355 mainLayout->addWidget( lab,row,0 );
343 mw->show(); 356 mw->show();
344 357
345} 358}
346 359
347
348void KOCalEditView::defaultInfo() 360void KOCalEditView::defaultInfo()
349{ 361{
350 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") ); 362 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") );
@@ -431,22 +443,23 @@ void KOCalEditView::enableAlarm()
431} 443}
432void KOCalEditView::disableRO() 444void KOCalEditView::disableRO()
433{ 445{
434 toggleList( mROB ); 446 toggleList( mROB, false );
435} 447}
436void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list ) 448void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list , bool enable )
437{ 449{
438 bool dis = false; 450 bool dis = !enable;
439 KOCalCheckButton* it = list.first(); 451 KOCalCheckButton* it = list.first();
440 while ( it ) { 452 while ( it ) {
441 if ( !it->isChecked() ) { 453 if ( !it->isChecked() == enable && it->isEnabled() ) {
442 dis = true; 454 dis = !dis;
443 break; 455 break;
444 } 456 }
445 it = list.next(); 457 it = list.next();
446 } 458 }
447 it = list.first(); 459 it = list.first();
448 while ( it ) { 460 while ( it ) {
449 it->setChecked(dis); 461 if ( it->isEnabled() )
462 it->setChecked(dis);
450 it = list.next(); 463 it = list.next();
451 } 464 }
452} 465}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 02107cf..874fc6a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -70,7 +70,9 @@ class KONewCalPrefs : public QDialog
70 lay->addWidget( cancel ); 70 lay->addWidget( cancel );
71 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) ); 71 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
72 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 72 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
73 setMinimumWidth( 220 ); 73 int minwid = 220;
74 if ( QApplication::desktop()->width() >= 320 ) minwid = 300;
75 setMinimumWidth( minwid );
74 resize(sizeHint() ); 76 resize(sizeHint() );
75 } 77 }
76 78
@@ -163,9 +165,10 @@ class KOCalRadioButton : public QRadioButton
163 //setMaximumWidth( 10 ); 165 //setMaximumWidth( 10 );
164 166
165 } 167 }
168 int num() { return mNumber;}
166 void setNum ( int num ) {mNumber = num; } 169 void setNum ( int num ) {mNumber = num; }
167 signals: 170 signals:
168 void selectNum ( int, bool ); 171 void selectNum ( int );
169private: 172private:
170 int mNumber; 173 int mNumber;
171 void keyPressEvent ( QKeyEvent * e ) 174 void keyPressEvent ( QKeyEvent * e )
@@ -174,7 +177,7 @@ private:
174 } 177 }
175 178
176private slots : 179private slots :
177 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 180 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); }
178}; 181};
179 182
180 183
@@ -216,7 +219,7 @@ class KOCalEditView : public QScrollView
216 void enableAlarm(); 219 void enableAlarm();
217 void disableRO(); 220 void disableRO();
218 void deleteAll(); 221 void deleteAll();
219 void selectStdCal(int,bool ); 222 void selectStdCal(int);
220 void selectCal(int,bool ); 223 void selectCal(int,bool );
221 void selectCalAlarm(int,bool ); 224 void selectCalAlarm(int,bool );
222 void selectReadOnly(int,bool ); 225 void selectReadOnly(int,bool );
@@ -225,6 +228,7 @@ class KOCalEditView : public QScrollView
225 void infoCal(int) ; 228 void infoCal(int) ;
226 void readConfig(); 229 void readConfig();
227 void defaultInfo(); 230 void defaultInfo();
231 void findNewStandard();
228 signals: 232 signals:
229 void alarmEnabled ( int cal, bool enable ); 233 void alarmEnabled ( int cal, bool enable );
230 void calendarEnabled ( int cal, bool enable ); 234 void calendarEnabled ( int cal, bool enable );
@@ -237,7 +241,7 @@ class KOCalEditView : public QScrollView
237 241
238 private: 242 private:
239 QWidget *mw; 243 QWidget *mw;
240 void toggleList ( QPtrList<KOCalCheckButton> ); 244 void toggleList ( QPtrList<KOCalCheckButton> , bool b = true );
241 QPtrList<KOCalRadioButton> mStdandardB; 245 QPtrList<KOCalRadioButton> mStdandardB;
242 QPtrList<KOCalCheckButton> mEnabledB; 246 QPtrList<KOCalCheckButton> mEnabledB;
243 QPtrList<KOCalCheckButton> mAlarmB; 247 QPtrList<KOCalCheckButton> mAlarmB;