From 5e4f16e92a96bdf89f82be3b231d18ae9e257486 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sun, 12 Jun 2005 22:36:41 +0000 Subject: fixxxx --- diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 753d81f..1024b4e 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -3940,8 +3940,11 @@ void CalendarView::selectFilter( int fil ) } void CalendarView::showFilter(bool visible) { -#if 0 - if (visible) mCalEditView->show(); +#if 1 + if (visible) { + mCalEditView->readConfig(); + mCalEditView->show(); + } else mCalEditView->hide(); #else if (visible) mFilterView->show(); diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp index dc6237b..d79b28e 100644 --- a/korganizer/kofilterview.cpp +++ b/korganizer/kofilterview.cpp @@ -26,13 +26,56 @@ #include #include #include +#include #include #include "kofilterview.h" +#include "koprefs.h" #include #include +#include +#include + + +#include +#include + +class KONewCalPrefs : public QDialog +{ + public: + KONewCalPrefs( QWidget *parent=0, const char *name=0 ) : + QDialog( parent, name, true ) + { + setCaption( i18n("Add new Calendar") ); + QVBoxLayout* lay = new QVBoxLayout( this ); + lay->setSpacing( 3 ); + lay->setMargin( 3 ); + QLabel * lab = new QLabel( i18n("Name of new calendar:"), this ); + lay->addWidget( lab ); + nameE = new KLineEdit( this ); + lay->addWidget( nameE ); + lab = new QLabel( i18n("Local ical (*.ics) file:"), this ); + lay->addWidget( lab ); + url = new KURLRequester ( this ); + lay->addWidget( url ); + 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 ( accept() ) ); + connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); + resize( 200, 200 ); + } + + QString calName() { return nameE->text(); } + QString calFileName() { return url->url(); } +private: + KLineEdit* nameE; + KURLRequester *url; +}; + KOFilterView::KOFilterView(QPtrList *filterList,QWidget* parent, const char* name,WFlags fl ) @@ -103,72 +146,236 @@ KOCalEditView::KOCalEditView(QWidget* parent, const char* name ) : QWidget(parent,name) { - /* - connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); - connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); - connect(mEditButton,SIGNAL(clicked()),SIGNAL(editCalEdits())); - */ - QGridLayout* mainLayout = new QGridLayout ( this , 2, 6 ); - QPushButton * addBut = new QPushButton ( this ); + mw = 0; + ml = new QVBoxLayout ( this ); +} + +KOCalEditView::~KOCalEditView() +{ + // no need to delete child widgets, Qt does it all for us +} +void KOCalEditView::selectCal(int id ,bool b) +{ + KOPrefs::instance()->getCalendar( id )->isEnabled = b; + emit calendarEnabled ( id, b ); + +} +void KOCalEditView::selectStdCal( int id, bool b ) +{ + + if ( !b ) { + KOCalCheckButton* it = (KOCalCheckButton*) sender(); + if ( it ) { + it->blockSignals( true ); + it->setChecked( true ); + it->blockSignals( false ); + return; + } + return; + } + KOCalCheckButton* sen = (KOCalCheckButton*) sender(); + KOCalCheckButton* it = mStdandardB.first(); + while ( it ) { + if ( it->isChecked() ) { + if ( it != sen ) { + it->blockSignals( true ); + it->setChecked( false ); + it->blockSignals( false ); + break; + } + } + it = mStdandardB.next(); + } + KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); + while ( kkf ) { + kkf->isStandard = false; + 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; + emit alarmEnabled ( id , b ); +} +void KOCalEditView::selectReadOnly(int id ,bool b ) +{ + KOPrefs::instance()->getCalendar( id )->isReadOnly = b; + emit calendarReadonly ( id , b ); + +} +void KOCalEditView::setColor( const QColor& c, int id ) +{ + KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; +} +void KOCalEditView::deleteCal( int id ) +{ + KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); + QString name = kkf->mName; + QString file = kkf->mFileName; + if ( KMessageBox::warningContinueCancel( this, i18n("The calendar %1 is displaying file %2 Do you want to remove this calendar from KO/Pi? (The file is not removed, of course!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; + emit removeCalendar ( id ); + KOPrefs::instance()->mCalendars.remove ( kkf ); + readConfig(); +} +void KOCalEditView::infoCal( int id ) +{ + QString name = KOPrefs::instance()->getCalendar( id )->mName; + QString file = KOPrefs::instance()->getCalendar( id )->mFileName; + KMessageBox::information( this, i18n("The calendar %1 is displaying file %2").arg(name).arg(file) ); +} +void KOCalEditView::readConfig() +{ + + mStdandardB.clear(); + mEnabledB.clear(); + mAlarmB.clear(); + mROB.clear(); + + if ( mw ) delete mw; + mw = new QWidget ( this ); + ml->addWidget ( mw ); + + mainLayout = new QGridLayout ( mw , 2, 8 ); + mainLayout->setSpacing( 3 ); + QPushButton * addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,0 ); addBut->setPixmap ( SmallIcon("plus")); connect(addBut,SIGNAL(clicked()),SLOT(addCal())); addBut->setMaximumWidth( addBut->sizeHint().height() ); - addBut = new QPushButton ( this ); + addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,1 ); addBut->setPixmap ( SmallIcon("eye")); connect(addBut,SIGNAL(clicked()),SLOT(enableAll())); addBut->setMaximumWidth( addBut->sizeHint().height() ); - QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", this ); + QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", mw ); mainLayout->addWidget( lab,0,2 ); - addBut = new QPushButton ( this ); + addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,3 ); addBut->setPixmap ( SmallIcon("bell")); connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm())); addBut->setMaximumWidth( addBut->sizeHint().height() ); - addBut = new QPushButton ( this ); + addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,4 ); addBut->setPixmap ( SmallIcon("pencil")); connect(addBut,SIGNAL(clicked()),SLOT(disableRO())); addBut->setMaximumWidth( addBut->sizeHint().height() ); - addBut = new QPushButton ( this ); - mainLayout->addWidget( addBut,0,5 ); + lab = new QLabel ( i18n(" Color "), mw ); + mainLayout->addWidget( lab,0,5 ); +#if 0 + addBut = new QPushButton ( mw ); + mainLayout->addWidget( addBut,0,6 ); addBut->setPixmap ( SmallIcon("minus")); connect(addBut,SIGNAL(clicked()),SLOT(deleteAll())); addBut->setMaximumWidth( addBut->sizeHint().height() ); +#endif + KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); + int row = 1; + while ( kkf ) { -} - -KOCalEditView::~KOCalEditView() -{ - // no need to delete child widgets, Qt does it all for us -} -void KOCalEditView::readConfig( KConfig *) -{ + KOCalCheckButton* cb = new KOCalCheckButton( mw ); + mainLayout->addWidget( cb,row,0 );mStdandardB.append( cb ); + cb->setChecked( kkf->isStandard ); + cb->setNum( kkf->mCalNumber ); + connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) ); + cb = new KOCalCheckButton( mw ); + mainLayout->addWidget( cb,row,1 );mEnabledB.append( cb ); + cb->setChecked( kkf->isEnabled ); + cb->setNum( kkf->mCalNumber ); + connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) ); + KOCalButton* name = new KOCalButton( mw ); + name->setNum( kkf->mCalNumber ); + name->setText( kkf->mName ); + mainLayout->addWidget( name,row,2 ); + connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) ); + cb = new KOCalCheckButton( mw ); + mainLayout->addWidget( cb,row,3 );mAlarmB.append( cb ); + cb->setChecked( kkf->isAlarmEnabled ); + cb->setNum( kkf->mCalNumber ); + connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) ); + cb = new KOCalCheckButton( mw ); + mainLayout->addWidget( cb,row,4 );mROB.append( cb ); + cb->setChecked( kkf->isReadOnly ); + cb->setNum( kkf->mCalNumber ); + connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) ); + KColorButton *colb = new KColorButton( mw ); + mainLayout->addWidget( colb,row,5 ); + colb->setID( kkf->mCalNumber ); + colb->setColor( kkf->mDefaultColor ); + connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) ); + if ( row > 1) { + KOCalButton* calb = new KOCalButton( mw ); + mainLayout->addWidget( calb,row,6 ); + calb->setNum( kkf->mCalNumber ); + calb->setPixmap ( SmallIcon("minus")); + connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) ); + int hei = calb->sizeHint().height(); + calb->setMaximumSize( hei*9/10, hei*9/10 ); + } + ++row; + kkf = KOPrefs::instance()->mCalendars.next(); + } + lab = new QLabel ( "", mw ); + mainLayout->addWidget( lab,row,0 ); + mw->show(); } void KOCalEditView::addCal() { qDebug("addcal "); + KONewCalPrefs prefs ( this ); + if ( ! prefs.exec() ) + return; + QString name = prefs.calName(); + QString file = prefs.calFileName(); + QFileInfo fi ( file ); + if (!fi.exists() ) { + KMessageBox::information( this, i18n("File does not exist!\nNo calendar added!")); + return; + } + KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar(); + kkf->mName = name; + kkf->mFileName = file; + emit calendarAdded( kkf->mCalNumber ); + readConfig(); } void KOCalEditView::enableAll() { - qDebug("enableAll"); + toggleList( mEnabledB ); } void KOCalEditView::enableAlarm() { - qDebug("enableAlarm"); + toggleList( mAlarmB ); } void KOCalEditView::disableRO() { - qDebug("OCalEditView::disableRO() "); + toggleList( mROB ); +} +void KOCalEditView::toggleList ( QPtrList list ) +{ + bool dis = false; + KOCalCheckButton* it = list.first(); + while ( it ) { + if ( !it->isChecked() ) { + dis = true; + break; + } + it = list.next(); + } + it = list.first(); + while ( it ) { + it->setChecked(dis); + it = list.next(); + } } void KOCalEditView::deleteAll() { diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h index 060108f..aaf0eb6 100644 --- a/korganizer/kofilterview.h +++ b/korganizer/kofilterview.h @@ -31,55 +31,9 @@ #include -using namespace KCal; - -class KOFilterView : public KOFilterView_base -{ - Q_OBJECT - public: - KOFilterView(QPtrList *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); - ~KOFilterView(); - - void updateFilters(); - - bool filtersEnabled(); - void setFiltersEnabled(bool); - CalFilter *selectedFilter(); - void setSelectedFilter(QString); - void setSelectedFilter( int ); - - signals: - void filterChanged(); - void editFilters(); - - private: - QPtrList *mFilters; -}; - -class KOCalEditView : public QWidget -{ - Q_OBJECT - public: - KOCalEditView( QWidget* parent=0,const char* name=0); - ~KOCalEditView(); - - void readConfig( KConfig *); - public slots: - void addCal(); - void enableAll(); - void enableAlarm(); - void disableRO(); - void deleteAll(); - 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 ); - - private: -}; +class QGridLayout; +using namespace KCal; class KOCalButton : public QPushButton { Q_OBJECT @@ -114,6 +68,8 @@ class KOCalCheckButton : public QCheckBox connect( this, SIGNAL( toggled ( bool ) ), SLOT( bottonClicked( bool ) )); mNumber = -1; + //setMaximumWidth( 10 ); + } void setNum ( int num ) {mNumber = num; } signals: @@ -130,4 +86,70 @@ private slots : }; + +class KOFilterView : public KOFilterView_base +{ + Q_OBJECT + public: + KOFilterView(QPtrList *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); + ~KOFilterView(); + + void updateFilters(); + + bool filtersEnabled(); + void setFiltersEnabled(bool); + CalFilter *selectedFilter(); + void setSelectedFilter(QString); + void setSelectedFilter( int ); + + signals: + void filterChanged(); + void editFilters(); + + private: + QPtrList *mFilters; +}; + +class KOCalEditView : public QWidget +{ + Q_OBJECT + public: + KOCalEditView( QWidget* parent=0,const char* name=0); + ~KOCalEditView(); + + void readConfig(); + public slots: + void addCal(); + void enableAll(); + void enableAlarm(); + void disableRO(); + void deleteAll(); + void selectStdCal(int,bool ); + void selectCal(int,bool ); + void selectCalAlarm(int,bool ); + void selectReadOnly(int,bool ); + void setColor(const QColor &,int) ; + void deleteCal(int) ; + void infoCal(int) ; + 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 ); + + private: + QVBoxLayout* ml; + QWidget *mw; + void toggleList ( QPtrList ); + QPtrList mStdandardB; + QPtrList mEnabledB; + QPtrList mAlarmB; + QPtrList mROB; + QGridLayout* mainLayout; +}; + + + #endif // KOFILTERVIEW_H diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 179f586..bc6aae4 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp @@ -442,7 +442,7 @@ void KOPrefs::usrReadConfig() if ( numCals == 0 ) { KopiCalendarFile *kkf = getNewCalendar(); kkf->isStandard = true; - kkf->mName = i18n("Standard Calendar"); + kkf->mName = i18n("Standard"); kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); } while ( mNextAvailableCalendar <= numCals ) { @@ -458,13 +458,16 @@ void KOPrefs::usrReadConfig() kkf->mDefaultColor = config()->readColorEntry( prefix+"_Color",&mEventColor); if ( kkf->mCalNumber == 1 ) { kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); - //kkf->mName = i18n("Standard Calendar"); } } KPimPrefs::usrReadConfig(); } +KopiCalendarFile * KOPrefs::getCalendar( int num ) +{ + return mDefCalColors[num-1]; +} KopiCalendarFile * KOPrefs::getNewCalendar() { diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index 7d71cbd..f114d88 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h @@ -93,6 +93,7 @@ class KOPrefs : public KPimPrefs void setCategoryDefaults(); void setAllDefaults(); KopiCalendarFile * getNewCalendar(); + KopiCalendarFile * getCalendar( int ); void deleteCalendar( int ); QColor defaultColor( int ) const; protected: diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp index a0f9d2e..ff1e240 100644 --- a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp +++ b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp @@ -89,6 +89,7 @@ $Id$ #include + KDEPIMConfigWidget::KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent, const char *name ) : KPrefsWidget(prefs, parent, name ) { diff --git a/microkde/kcolorbutton.cpp b/microkde/kcolorbutton.cpp index 96dc256..197bea2 100644 --- a/microkde/kcolorbutton.cpp +++ b/microkde/kcolorbutton.cpp @@ -16,6 +16,7 @@ void KColorButton:: edit() mColor = col; setColor ( mColor ); emit changed ( mColor ); + emit changedID ( mColor, id ); } #else KColorDialog* k = new KColorDialog( this ); @@ -25,6 +26,7 @@ void KColorButton:: edit() mColor = k->getColor(); setColor ( mColor ); emit changed ( mColor ); + emit changedID ( mColor, id ); } delete k; #endif @@ -35,9 +37,14 @@ KColorButton::KColorButton( QWidget *p ):QPushButton( p ) if( QApplication::desktop()->width() < 480 || QApplication::desktop()->height() <= 320 ) size = 18; setFixedSize( size,size ); + int id = 0; connect ( this, SIGNAL( clicked() ), this ,SLOT (edit() )); } +void KColorButton::setID ( int i) +{ + id = i; +} void KColorButton::setColor ( const QColor & c) { mColor = c; diff --git a/microkde/kcolorbutton.h b/microkde/kcolorbutton.h index 88b3774..983771b 100644 --- a/microkde/kcolorbutton.h +++ b/microkde/kcolorbutton.h @@ -14,13 +14,16 @@ Q_OBJECT public: KColorButton( QWidget *p ); void setColor ( const QColor &); + void setID ( int i) ; QColor color() const { return mColor ; } signals: void changed(const QColor &); + void changedID(const QColor &, int id); private slots: void edit(); private: QColor mColor; + int id; }; #endif -- cgit v0.9.0.2