summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (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
@@ -22,65 +22,32 @@
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()));
@@ -237,17 +204,17 @@ void KOCalEditView::deleteCal( int id )
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}
@@ -368,25 +335,56 @@ void KOCalEditView::readConfig()
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}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 3ab316f..945947a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -20,26 +20,85 @@
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() ),