summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/kofilterview.cpp74
-rw-r--r--korganizer/kofilterview.h59
2 files changed, 95 insertions, 38 deletions
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 105028a..36ee2eb 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -18,72 +18,39 @@
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 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 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}
@@ -364,34 +331,65 @@ void KOCalEditView::readConfig()
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{
343 bool tryagain = true;
344 QString name, file;
345 while ( tryagain ) {
376 KONewCalPrefs prefs ( this ); 346 KONewCalPrefs prefs ( this );
347 if ( !name.isEmpty() ) prefs.nameE->setText( name );
348 if ( !file.isEmpty() ) prefs.url->setURL( file );
377 if ( ! prefs.exec() ) 349 if ( ! prefs.exec() )
378 return; 350 return;
379 QString name = prefs.calName(); 351 name = prefs.calName();
380 QString file = prefs.calFileName(); 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 )
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!") );
384 return; 377 return;
385 } 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();
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()
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 3ab316f..945947a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -16,34 +16,93 @@
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 }