summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-06-15 20:45:30 (UTC)
committer zautrix <zautrix>2005-06-15 20:45:30 (UTC)
commite74483434835ad799b1a6880ae4576aacb14624a (patch) (unidiff)
tree2a060544e0f6b026d773032d65ab079d75879afd /korganizer
parente17a686fcfab42a71f25e9f0a4c3a395ec41a7b1 (diff)
downloadkdepimpi-e74483434835ad799b1a6880ae4576aacb14624a.zip
kdepimpi-e74483434835ad799b1a6880ae4576aacb14624a.tar.gz
kdepimpi-e74483434835ad799b1a6880ae4576aacb14624a.tar.bz2
fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kofilterview.cpp86
-rw-r--r--korganizer/kofilterview.h59
2 files changed, 101 insertions, 44 deletions
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 105028a..36ee2eb 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -6,97 +6,64 @@
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qdialog.h> 29#include <qdialog.h>
30#include <qtextstream.h>
31#include <qtextcodec.h>
30 32
31 33
32#include <libkcal/calfilter.h> 34#include <libkcal/calfilter.h>
33 35
34#include "kofilterview.h" 36#include "kofilterview.h"
35#include "koprefs.h" 37#include "koprefs.h"
36#include <kiconloader.h> 38#include <kiconloader.h>
37#include <kglobal.h> 39#include <kglobal.h>
38#include <kcolorbutton.h> 40#include <kcolorbutton.h>
39#include <kmessagebox.h> 41#include <kmessagebox.h>
40 42
41 43
42#include <kurlrequester.h>
43#include <klineedit.h>
44
45class KONewCalPrefs : public QDialog
46{
47 public:
48 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
49 QDialog( parent, name, true )
50 {
51 setCaption( i18n("Add new Calendar") );
52 QVBoxLayout* lay = new QVBoxLayout( this );
53 lay->setSpacing( 3 );
54 lay->setMargin( 3 );
55 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
56 lay->addWidget( lab );
57 nameE = new KLineEdit( this );
58 lay->addWidget( nameE );
59 lab = new QLabel( i18n("Local ical (*.ics) file:"), this );
60 lay->addWidget( lab );
61 url = new KURLRequester ( this );
62 lay->addWidget( url );
63 QPushButton * ok = new QPushButton( i18n("OK"), this );
64 lay->addWidget( ok );
65 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
66 lay->addWidget( cancel );
67 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
68 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
69 //resize( 200, 200 );
70 }
71
72 QString calName() { return nameE->text(); }
73 QString calFileName() { return url->url(); }
74private:
75 KLineEdit* nameE;
76 KURLRequester *url;
77};
78 44
45
79 46
80KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 47KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
81 const char* name,WFlags fl ) 48 const char* name,WFlags fl )
82 : KOFilterView_base(parent,name,fl) 49 : KOFilterView_base(parent,name,fl)
83{ 50{
84 mFilters = filterList; 51 mFilters = filterList;
85 52
86 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 53 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
87 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 54 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
88 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 55 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
89} 56}
90 57
91KOFilterView::~KOFilterView() 58KOFilterView::~KOFilterView()
92{ 59{
93 // no need to delete child widgets, Qt does it all for us 60 // no need to delete child widgets, Qt does it all for us
94} 61}
95 62
96bool KOFilterView::filtersEnabled() 63bool KOFilterView::filtersEnabled()
97{ 64{
98 return mEnabledCheck->isChecked(); 65 return mEnabledCheck->isChecked();
99} 66}
100 67
101void KOFilterView::setFiltersEnabled(bool set) 68void KOFilterView::setFiltersEnabled(bool set)
102{ 69{
@@ -221,49 +188,49 @@ void KOCalEditView::selectReadOnly(int id ,bool b )
221} 188}
222void KOCalEditView::setColor( const QColor& c, int id ) 189void KOCalEditView::setColor( const QColor& c, int id )
223{ 190{
224 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; 191 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
225 emit needsUpdate(); 192 emit needsUpdate();
226} 193}
227void KOCalEditView::deleteCal( int id ) 194void KOCalEditView::deleteCal( int id )
228{ 195{
229 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); 196 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
230 QString name = kkf->mName; 197 QString name = kkf->mName;
231 QString file = kkf->mFileName; 198 QString file = kkf->mFileName;
232 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar<tr><b>%1</b><tr>is displaying file<tr><b>%2</b><tr>Do you want to remove<tr>this calendar from KO/Pi?<tr>(The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; 199 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar<tr><b>%1</b><tr>is displaying file<tr><b>%2</b><tr>Do you want to remove<tr>this calendar from KO/Pi?<tr>(The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
233 if ( kkf->isStandard ) 200 if ( kkf->isStandard )
234 selectStdCal( 1, true ); 201 selectStdCal( 1, true );
235 emit removeCalendar ( id ); 202 emit removeCalendar ( id );
236 KOPrefs::instance()->mCalendars.remove ( kkf ); 203 KOPrefs::instance()->mCalendars.remove ( kkf );
237 emit needsUpdate(); 204 emit needsUpdate();
238 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 205 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
239} 206}
240void KOCalEditView::infoCal( int id ) 207void KOCalEditView::infoCal( int id )
241{ 208{
242 QString name = KOPrefs::instance()->getCalendar( id )->mName; 209 QString name = KOPrefs::instance()->getCalendar( id )->mName;
243 QString file = KOPrefs::instance()->getCalendar( id )->mFileName; 210 QString file = KOPrefs::instance()->getCalendar( id )->mFileName;
244 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) { 211 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) {
245 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <tr><b>%1</b><tr> is not loaded! Loading of file <tr><b>%2</b><tr> failed! <tr><b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) { 212 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <tr><b>%1</b><tr> is not loaded! Loading of file <tr><b>%2</b><tr>failed!<tr><b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) {
246 emit calendarAdded( id ); 213 emit calendarAdded( id );
247 emit needsUpdate(); 214 emit needsUpdate();
248 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 215 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
249 } 216 }
250 } 217 }
251 else 218 else
252 KMessageBox::information( this, i18n("The calendar <tr><b>%1</b><tr>is displaying file<tr><b>%2</b>").arg(name).arg(file) ); 219 KMessageBox::information( this, i18n("The calendar <tr><b>%1</b><tr>is displaying file<tr><b>%2</b>").arg(name).arg(file) );
253} 220}
254void KOCalEditView::readConfig() 221void KOCalEditView::readConfig()
255{ 222{
256 223
257 mStdandardB.clear(); 224 mStdandardB.clear();
258 mEnabledB.clear(); 225 mEnabledB.clear();
259 mAlarmB.clear(); 226 mAlarmB.clear();
260 mROB.clear(); 227 mROB.clear();
261 228
262 if ( mw ) delete mw; 229 if ( mw ) delete mw;
263 mw = new QWidget ( viewport() ); 230 mw = new QWidget ( viewport() );
264 addChild(mw); 231 addChild(mw);
265 232
266 mainLayout = new QGridLayout ( mw , 2, 8 ); 233 mainLayout = new QGridLayout ( mw , 2, 8 );
267 mainLayout->setMargin( 3); 234 mainLayout->setMargin( 3);
268 mainLayout->setSpacing( 2); 235 mainLayout->setSpacing( 2);
269 QPushButton * addBut = new QPushButton ( mw ); 236 QPushButton * addBut = new QPushButton ( mw );
@@ -352,57 +319,88 @@ void KOCalEditView::readConfig()
352 if ( row > 1) { 319 if ( row > 1) {
353 KColorButton *colb = new KColorButton( mw ); 320 KColorButton *colb = new KColorButton( mw );
354 mainLayout->addWidget( colb,row,++iii ); 321 mainLayout->addWidget( colb,row,++iii );
355 colb->setID( kkf->mCalNumber ); 322 colb->setID( kkf->mCalNumber );
356 colb->setColor( kkf->mDefaultColor ); 323 colb->setColor( kkf->mDefaultColor );
357 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) ); 324 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) );
358 KOCalButton* calb = new KOCalButton( mw ); 325 KOCalButton* calb = new KOCalButton( mw );
359 mainLayout->addWidget( calb,row,++iii ); 326 mainLayout->addWidget( calb,row,++iii );
360 calb->setNum( kkf->mCalNumber ); 327 calb->setNum( kkf->mCalNumber );
361 calb->setPixmap ( SmallIcon("minus")); 328 calb->setPixmap ( SmallIcon("minus"));
362 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) ); 329 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) );
363 int hei = calb->sizeHint().height(); 330 int hei = calb->sizeHint().height();
364 //calb->setMaximumSize( hei*9/10, hei*9/10 ); 331 //calb->setMaximumSize( hei*9/10, hei*9/10 );
365 } 332 }
366 ++row; 333 ++row;
367 kkf = KOPrefs::instance()->mCalendars.next(); 334 kkf = KOPrefs::instance()->mCalendars.next();
368 } 335 }
369 lab = new QLabel ( "", mw ); 336 lab = new QLabel ( "", mw );
370 mainLayout->addWidget( lab,row,0 ); 337 mainLayout->addWidget( lab,row,0 );
371 mw->show(); 338 mw->show();
372 339
373} 340}
374void KOCalEditView::addCal() 341void KOCalEditView::addCal()
375{ 342{
376 KONewCalPrefs prefs ( this ); 343 bool tryagain = true;
377 if ( ! prefs.exec() ) 344 QString name, file;
378 return; 345 while ( tryagain ) {
379 QString name = prefs.calName(); 346 KONewCalPrefs prefs ( this );
380 QString file = prefs.calFileName(); 347 if ( !name.isEmpty() ) prefs.nameE->setText( name );
348 if ( !file.isEmpty() ) prefs.url->setURL( file );
349 if ( ! prefs.exec() )
350 return;
351 name = prefs.calName();
352 file = prefs.calFileName();
353 tryagain = false;
354 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
355 while ( kkf ) {
356 if ( kkf->mName == name ) {
357 KMessageBox::information( this, i18n("Sorry, the calendar name already exists!\nPlease choose another name!") );
358 name = "";
359 break;
360 tryagain = true;
361 }
362 if ( kkf->mFileName == file ) {
363
364 break;
365 tryagain = true;
366 }
367 kkf = KOPrefs::instance()->mCalendars.next();
368 }
369 }
381 QFileInfo fi ( file ); 370 QFileInfo fi ( file );
382 if (!fi.exists() ) { 371 if (!fi.exists() ) {
383 KMessageBox::information( this, i18n("File does not exist!\nNo calendar added!")); 372 if ( KMessageBox::questionYesNo(this, i18n("The file does not exist!\nShall I create it for you?")) == KMessageBox::No )
384 return; 373 return;
374 QFile fileIn( file );
375 if (!fileIn.open( IO_WriteOnly ) ) {
376 KMessageBox::sorry( this, i18n("Sorry, cannot create the file!\nNo calendar added!") );
377 return;
378 }
379 QTextStream tsIn( &fileIn );
380 tsIn.setCodec( QTextCodec::codecForName("utf8") );
381 tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n";
382 fileIn.close();
385 } 383 }
386 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar(); 384 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar();
387 kkf->mName = name; 385 kkf->mName = name;
388 kkf->mFileName = file; 386 kkf->mFileName = file;
389 emit calendarAdded( kkf->mCalNumber ); 387 emit calendarAdded( kkf->mCalNumber );
390 emit needsUpdate(); 388 emit needsUpdate();
391 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 389 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
392} 390}
393void KOCalEditView::enableAll() 391void KOCalEditView::enableAll()
394{ 392{
395 toggleList( mEnabledB ); 393 toggleList( mEnabledB );
396} 394}
397void KOCalEditView::enableAlarm() 395void KOCalEditView::enableAlarm()
398{ 396{
399 toggleList( mAlarmB ); 397 toggleList( mAlarmB );
400} 398}
401void KOCalEditView::disableRO() 399void KOCalEditView::disableRO()
402{ 400{
403 toggleList( mROB ); 401 toggleList( mROB );
404} 402}
405void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list ) 403void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list )
406{ 404{
407 bool dis = false; 405 bool dis = false;
408 KOCalCheckButton* it = list.first(); 406 KOCalCheckButton* it = list.first();
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 3ab316f..945947a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -4,58 +4,117 @@
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qlayout.h>
29#include <qlabel.h>
28#include <qscrollview.h> 30#include <qscrollview.h>
29#include <qpushbutton.h> 31#include <qpushbutton.h>
30#include <kconfig.h> 32#include <kconfig.h>
31#include "kofilterview_base.h" 33#include "kofilterview_base.h"
32 34
33#include <libkcal/calfilter.h> 35#include <libkcal/calfilter.h>
34 36
37#include <kurlrequester.h>
38#include <klineedit.h>
39#include <kglobal.h>
40#include <kmessagebox.h>
41
35class QGridLayout; 42class QGridLayout;
36 43
37using namespace KCal; 44using namespace KCal;
45
46class KONewCalPrefs : public QDialog
47{
48 Q_OBJECT
49 public:
50 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
51 QDialog( parent, name, true )
52 {
53 setCaption( i18n("Add new Calendar") );
54 QVBoxLayout* lay = new QVBoxLayout( this );
55 lay->setSpacing( 3 );
56 lay->setMargin( 3 );
57 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
58 lay->addWidget( lab );
59 nameE = new KLineEdit( this );
60 lay->addWidget( nameE );
61 lab = new QLabel( i18n("<b>Local ical (*.ics) file:</b>"), this );
62 lay->addWidget( lab );
63 url = new KURLRequester ( this );
64 lay->addWidget( url );
65 QPushButton * ok = new QPushButton( i18n("OK"), this );
66 lay->addWidget( ok );
67 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
68 lay->addWidget( cancel );
69 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
70 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
71 setMinimumWidth( 220 );
72 resize(sizeHint() );
73 }
74
75 QString calName() { return nameE->text(); }
76 QString calFileName() { return url->url(); }
77
78public slots:
79void checkValid() {
80 if ( nameE->text().isEmpty() ) {
81 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") );
82 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () ));
83 return;
84 }
85 if ( url->url().isEmpty() ) {
86 KMessageBox::information( this, i18n("Sorry, the file name is empty!") );
87 return;
88 }
89 accept();
90}
91
92public:
93 KLineEdit* nameE;
94 KURLRequester *url;
95};
96
38class KOCalButton : public QPushButton 97class KOCalButton : public QPushButton
39{ 98{
40 Q_OBJECT 99 Q_OBJECT
41 public: 100 public:
42 KOCalButton( QWidget *parent=0, const char *name=0 ) : 101 KOCalButton( QWidget *parent=0, const char *name=0 ) :
43 QPushButton( parent, name) 102 QPushButton( parent, name)
44 { 103 {
45 connect( this, SIGNAL( clicked() ), 104 connect( this, SIGNAL( clicked() ),
46 SLOT( bottonClicked() )); 105 SLOT( bottonClicked() ));
47 mNumber = -1; 106 mNumber = -1;
48 setFocusPolicy(NoFocus); 107 setFocusPolicy(NoFocus);
49 } 108 }
50 void setNum ( int num ) {mNumber = num; } 109 void setNum ( int num ) {mNumber = num; }
51 signals: 110 signals:
52 void selectNum ( int ); 111 void selectNum ( int );
53private: 112private:
54 int mNumber; 113 int mNumber;
55 void keyPressEvent ( QKeyEvent * e ) 114 void keyPressEvent ( QKeyEvent * e )
56 { 115 {
57 e->ignore(); 116 e->ignore();
58 } 117 }
59 118
60private slots : 119private slots :
61 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); } 120 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }