-rw-r--r-- | korganizer/calendarview.cpp | 7 | ||||
-rw-r--r-- | korganizer/kofilterview.cpp | 251 | ||||
-rw-r--r-- | korganizer/kofilterview.h | 118 | ||||
-rw-r--r-- | korganizer/koprefs.cpp | 7 | ||||
-rw-r--r-- | korganizer/koprefs.h | 1 |
5 files changed, 310 insertions, 74 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 753d81f..1024b4e 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -3942,4 +3942,7 @@ void CalendarView::showFilter(bool visible) { -#if 0 - if (visible) mCalEditView->show(); +#if 1 + if (visible) { + mCalEditView->readConfig(); + mCalEditView->show(); + } else mCalEditView->hide(); diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp index dc6237b..d79b28e 100644 --- a/korganizer/kofilterview.cpp +++ b/korganizer/kofilterview.cpp @@ -28,2 +28,3 @@ #include <qlabel.h> +#include <qdialog.h> @@ -33,4 +34,46 @@ #include "kofilterview.h" +#include "koprefs.h" #include <kiconloader.h> #include <kglobal.h> +#include <kcolorbutton.h> +#include <kmessagebox.h> + + +#include <kurlrequester.h> +#include <klineedit.h> + +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("<b>Name of new calendar:</b>"), 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; +}; + @@ -105,9 +148,97 @@ KOCalEditView::KOCalEditView(QWidget* parent, { - /* - 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 <b>%1</b> is displaying file <b>%2</b><tr> 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 <b>%1</b> is displaying file <b>%2</b>").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 ); @@ -117,3 +248,3 @@ KOCalEditView::KOCalEditView(QWidget* parent, - addBut = new QPushButton ( this ); + addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,1 ); @@ -123,6 +254,6 @@ KOCalEditView::KOCalEditView(QWidget* parent, - 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 ); @@ -132,3 +263,3 @@ KOCalEditView::KOCalEditView(QWidget* parent, - addBut = new QPushButton ( this ); + addBut = new QPushButton ( mw ); mainLayout->addWidget( addBut,0,4 ); @@ -138,4 +269,7 @@ KOCalEditView::KOCalEditView(QWidget* parent, - 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")); @@ -143,13 +277,54 @@ KOCalEditView::KOCalEditView(QWidget* parent, addBut->setMaximumWidth( addBut->sizeHint().height() ); +#endif + KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); + int row = 1; + while ( kkf ) { + 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 ); } - -KOCalEditView::~KOCalEditView() -{ - // no need to delete child widgets, Qt does it all for us + ++row; + kkf = KOPrefs::instance()->mCalendars.next(); } -void KOCalEditView::readConfig( KConfig *) -{ + lab = new QLabel ( "", mw ); + mainLayout->addWidget( lab,row,0 ); + mw->show(); @@ -159,2 +334,17 @@ 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(); } @@ -162,3 +352,3 @@ void KOCalEditView::enableAll() { - qDebug("enableAll"); + toggleList( mEnabledB ); } @@ -166,3 +356,3 @@ void KOCalEditView::enableAlarm() { - qDebug("enableAlarm"); + toggleList( mAlarmB ); } @@ -170,3 +360,20 @@ void KOCalEditView::disableRO() { - qDebug("OCalEditView::disableRO() "); + toggleList( mROB ); +} +void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> 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(); + } } diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h index 060108f..aaf0eb6 100644 --- a/korganizer/kofilterview.h +++ b/korganizer/kofilterview.h @@ -33,51 +33,5 @@ -using namespace KCal; - -class KOFilterView : public KOFilterView_base -{ - Q_OBJECT - public: - KOFilterView(QPtrList<CalFilter> *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<CalFilter> *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 @@ -116,2 +70,4 @@ class KOCalCheckButton : public QCheckBox mNumber = -1; + //setMaximumWidth( 10 ); + } @@ -132,2 +88,68 @@ private slots : + +class KOFilterView : public KOFilterView_base +{ + Q_OBJECT + public: + KOFilterView(QPtrList<CalFilter> *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<CalFilter> *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<KOCalCheckButton> ); + QPtrList<KOCalCheckButton> mStdandardB; + QPtrList<KOCalCheckButton> mEnabledB; + QPtrList<KOCalCheckButton> mAlarmB; + QPtrList<KOCalCheckButton> 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 @@ -444,3 +444,3 @@ void KOPrefs::usrReadConfig() kkf->isStandard = true; - kkf->mName = i18n("Standard Calendar"); + kkf->mName = i18n("Standard"); kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); @@ -460,3 +460,2 @@ void KOPrefs::usrReadConfig() kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); - //kkf->mName = i18n("Standard Calendar"); } @@ -467,2 +466,6 @@ void KOPrefs::usrReadConfig() +KopiCalendarFile * KOPrefs::getCalendar( int num ) +{ + return mDefCalColors[num-1]; +} diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index 7d71cbd..f114d88 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h @@ -95,2 +95,3 @@ class KOPrefs : public KPimPrefs KopiCalendarFile * getNewCalendar(); + KopiCalendarFile * getCalendar( int ); void deleteCalendar( int ); |