summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
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)
emit needsUpdate();
}
-void KOCalEditView::selectStdCal( int id, bool b )
+void KOCalEditView::selectStdCal( int id )
{
-
- if ( !b ) {
- KOCalCheckButton* it = (KOCalCheckButton*) sender();
- if ( it ) {
- it->blockSignals( true );
- it->setChecked( true );
- it->blockSignals( false );
- return;
- }
- return;
- }
- KOCalRadioButton* sen = (KOCalRadioButton*) sender();
KOCalRadioButton* it = mStdandardB.first();
while ( it ) {
- if ( it->isChecked() ) {
- if ( it != sen ) {
- it->blockSignals( true );
- it->setChecked( false );
- it->blockSignals( false );
- break;
- }
- }
+ it->blockSignals( true );
+ it->setChecked( it->num() == id );
+ it->blockSignals( false );
it = mStdandardB.next();
}
KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
while ( kkf ) {
- kkf->isStandard = false;
+ kkf->isStandard = (kkf->mCalNumber == id );
kkf = KOPrefs::instance()->mCalendars.next();
}
- KOPrefs::instance()->getCalendar( id )->isStandard = true;
emit setCalendarDefault ( id );
}
@@ -177,17 +159,43 @@ void KOCalEditView::selectReadOnly(int id ,bool b )
{
KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
emit calendarReadonly ( id , b );
- if ( KOPrefs::instance()->getCalendar( id )->isStandard && b && id > 1 ) {
- KOPrefs::instance()->getCalendar( id )->isStandard = false;
- KOPrefs::instance()->getCalendar( 1 )->isStandard = true;
- mStdandardB.at(0)->setChecked( true );
- mStdandardB.at(id-1)->setChecked( false );
- emit setCalendarDefault ( 1 );
+ if ( KOPrefs::instance()->getCalendar( id )->isStandard && b ) {
+ findNewStandard();
+ } else {
+ if ( !b ){
+ KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
+ while ( kkf ) {
+ if (kkf->isReadOnly && kkf->isStandard ) {
+ selectStdCal( id );
+ break;
+ }
+ kkf = KOPrefs::instance()->mCalendars.next();
+ }
+ }
}
mStdandardB.at(id-1)->setEnabled( !b );
emit needsUpdate();
}
+void KOCalEditView::findNewStandard()
+{
+ bool found = false;
+ KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
+ while ( kkf ) {
+ if (!kkf->isReadOnly && !kkf->mErrorOnLoad ) {
+ found = true;
+ selectStdCal( kkf->mCalNumber );
+ break;
+ }
+ kkf = KOPrefs::instance()->mCalendars.next();
+ }
+ if ( !found ) {
+ KMessageBox::error( this,i18n("\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n"),
+ i18n("Houston, we have a problem!") );
+
+ }
+}
+
void KOCalEditView::setColor( const QColor& c, int id )
{
KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
@@ -199,10 +207,10 @@ void KOCalEditView::deleteCal( int id )
QString name = kkf->mName;
QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
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;
- if ( kkf->isStandard )
- selectStdCal( 1, true );
+ bool findnewstd = kkf->isStandard;
emit removeCalendar ( id );
KOPrefs::instance()->mCalendars.remove ( kkf );
+ if ( findnewstd ) findNewStandard();
emit needsUpdate();
QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
}
@@ -284,18 +292,21 @@ void KOCalEditView::readConfig()
KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
int row = 1;
+ bool errorLoadStandard = false;
while ( kkf ) {
int iii = 0;
KOCalRadioButton* rb = new KOCalRadioButton( mw );
mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb );
rb->setChecked( kkf->isStandard );
+ if ( kkf->isStandard && ( kkf->mErrorOnLoad || kkf->isReadOnly ) )
+ errorLoadStandard = true;
rb->setNum( kkf->mCalNumber );
- connect (rb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) );
+ connect (rb, SIGNAL (selectNum(int)), SLOT ( selectStdCal(int) ) );
if ( kkf->mErrorOnLoad || kkf->isReadOnly )
rb->setEnabled( false );
KOCalCheckButton* cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb );
- cb->setChecked( kkf->isEnabled );
+ cb->setChecked( kkf->isEnabled && !kkf->mErrorOnLoad );
cb->setNum( kkf->mCalNumber );
if ( kkf->mErrorOnLoad )
cb->setEnabled( false );
@@ -309,7 +320,7 @@ void KOCalEditView::readConfig()
//mainLayout->addWidget( lab,row,++iii );
cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb );
- cb->setChecked( kkf->isAlarmEnabled );
+ cb->setChecked( kkf->isAlarmEnabled && !kkf->mErrorOnLoad);
cb->setNum( kkf->mCalNumber );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
if ( kkf->mErrorOnLoad )
@@ -338,13 +349,14 @@ void KOCalEditView::readConfig()
++row;
kkf = KOPrefs::instance()->mCalendars.next();
}
+ if ( errorLoadStandard )
+ findNewStandard();
lab = new QLabel ( "", mw );
mainLayout->addWidget( lab,row,0 );
mw->show();
}
-
void KOCalEditView::defaultInfo()
{
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()
}
void KOCalEditView::disableRO()
{
- toggleList( mROB );
+ toggleList( mROB, false );
}
-void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list )
+void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list , bool enable )
{
- bool dis = false;
+ bool dis = !enable;
KOCalCheckButton* it = list.first();
while ( it ) {
- if ( !it->isChecked() ) {
- dis = true;
+ if ( !it->isChecked() == enable && it->isEnabled() ) {
+ dis = !dis;
break;
}
it = list.next();
}
it = list.first();
while ( it ) {
- it->setChecked(dis);
+ if ( it->isEnabled() )
+ it->setChecked(dis);
it = list.next();
}
}
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
lay->addWidget( cancel );
connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
- setMinimumWidth( 220 );
+ int minwid = 220;
+ if ( QApplication::desktop()->width() >= 320 ) minwid = 300;
+ setMinimumWidth( minwid );
resize(sizeHint() );
}
@@ -163,9 +165,10 @@ class KOCalRadioButton : public QRadioButton
//setMaximumWidth( 10 );
}
+ int num() { return mNumber;}
void setNum ( int num ) {mNumber = num; }
signals:
- void selectNum ( int, bool );
+ void selectNum ( int );
private:
int mNumber;
void keyPressEvent ( QKeyEvent * e )
@@ -174,7 +177,7 @@ private:
}
private slots :
- void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
+ void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); }
};
@@ -216,7 +219,7 @@ class KOCalEditView : public QScrollView
void enableAlarm();
void disableRO();
void deleteAll();
- void selectStdCal(int,bool );
+ void selectStdCal(int);
void selectCal(int,bool );
void selectCalAlarm(int,bool );
void selectReadOnly(int,bool );
@@ -225,6 +228,7 @@ class KOCalEditView : public QScrollView
void infoCal(int) ;
void readConfig();
void defaultInfo();
+ void findNewStandard();
signals:
void alarmEnabled ( int cal, bool enable );
void calendarEnabled ( int cal, bool enable );
@@ -237,7 +241,7 @@ class KOCalEditView : public QScrollView
private:
QWidget *mw;
- void toggleList ( QPtrList<KOCalCheckButton> );
+ void toggleList ( QPtrList<KOCalCheckButton> , bool b = true );
QPtrList<KOCalRadioButton> mStdandardB;
QPtrList<KOCalCheckButton> mEnabledB;
QPtrList<KOCalCheckButton> mAlarmB;