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
@@ -129,44 +129,26 @@ void KOCalEditView::selectCal(int id ,bool b)
{
KOPrefs::instance()->getCalendar( id )->isEnabled = b;
emit calendarEnabled ( id, 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 );
}
void KOCalEditView::selectCalAlarm(int id ,bool b )
{
KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b;
@@ -174,38 +156,64 @@ void KOCalEditView::selectCalAlarm(int id ,bool b )
emit needsUpdate();
}
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;
emit needsUpdate();
}
void KOCalEditView::deleteCal( int id )
{
KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( 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() ) );
}
void KOCalEditView::infoCal( int id )
{
QString name = KOPrefs::instance()->getCalendar( id )->mName;
@@ -281,24 +289,27 @@ void KOCalEditView::readConfig()
lab = new QLabel ( " ", mw );
mainLayout->addWidget( lab,0,++ii );
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 );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) );
KOCalButton* name = new KOCalButton( mw );
name->setNum( kkf->mCalNumber );
@@ -306,13 +317,13 @@ void KOCalEditView::readConfig()
mainLayout->addWidget( name,row,++iii );
connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) );
//lab = new QLabel (" ", mw );
//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 )
cb->setEnabled( false );
cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,++iii );mROB.append( cb );
@@ -335,19 +346,20 @@ void KOCalEditView::readConfig()
int hei = calb->sizeHint().height();
//calb->setMaximumSize( hei*9/10, hei*9/10 );
}
++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.") );
}
void KOCalEditView::addCal()
{
@@ -428,28 +440,29 @@ void KOCalEditView::enableAll()
void KOCalEditView::enableAlarm()
{
toggleList( mAlarmB );
}
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();
}
}
void KOCalEditView::deleteAll()
{
qDebug("delteAll");
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 02107cf..874fc6a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -67,13 +67,15 @@ class KONewCalPrefs : public QDialog
QPushButton * ok = new QPushButton( i18n("OK"), this );
lay->addWidget( ok );
QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
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() );
}
QString calName() { return nameE->text(); }
QString calFileName() { return url->url(); }
@@ -160,24 +162,25 @@ class KOCalRadioButton : public QRadioButton
SLOT( bottonClicked( bool ) ));
mNumber = -1;
setFocusPolicy(NoFocus);
//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 )
{
e->ignore();
}
private slots :
- void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
+ void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); }
};
class KOFilterView : public KOFilterView_base
{
@@ -213,34 +216,35 @@ class KOCalEditView : public QScrollView
public slots:
void addCal();
void enableAll();
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 );
void setColor(const QColor &,int) ;
void deleteCal(int) ;
void infoCal(int) ;
void readConfig();
void defaultInfo();
+ void findNewStandard();
signals:
void alarmEnabled ( int cal, bool enable );
void calendarEnabled ( int cal, bool enable );
void calendarReadonly ( int cal, bool readonly );
void setCalendarDefault ( int cal );
void removeCalendar ( int cal );
void calendarAdded( int );
void needsUpdate();
void checkCalendar();
private:
QWidget *mw;
- void toggleList ( QPtrList<KOCalCheckButton> );
+ void toggleList ( QPtrList<KOCalCheckButton> , bool b = true );
QPtrList<KOCalRadioButton> mStdandardB;
QPtrList<KOCalCheckButton> mEnabledB;
QPtrList<KOCalCheckButton> mAlarmB;
QPtrList<KOCalCheckButton> mROB;
QGridLayout* mainLayout;
};