summaryrefslogtreecommitdiffabout
Side-by-side diff
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
@@ -29,2 +29,4 @@
#include <qdialog.h>
+#include <qtextstream.h>
+#include <qtextcodec.h>
@@ -41,38 +43,3 @@
-#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;
-};
@@ -375,12 +342,43 @@ void KOCalEditView::addCal()
{
+ bool tryagain = true;
+ QString name, file;
+ while ( tryagain ) {
KONewCalPrefs prefs ( this );
+ if ( !name.isEmpty() ) prefs.nameE->setText( name );
+ if ( !file.isEmpty() ) prefs.url->setURL( file );
if ( ! prefs.exec() )
return;
- QString name = prefs.calName();
- QString file = prefs.calFileName();
+ name = prefs.calName();
+ file = prefs.calFileName();
+ tryagain = false;
+ KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
+ while ( kkf ) {
+ if ( kkf->mName == name ) {
+ KMessageBox::information( this, i18n("Sorry, the calendar name already exists!\nPlease choose another name!") );
+ name = "";
+ break;
+ tryagain = true;
+ }
+ if ( kkf->mFileName == file ) {
+
+ break;
+ tryagain = true;
+ }
+ kkf = KOPrefs::instance()->mCalendars.next();
+ }
+ }
QFileInfo fi ( file );
if (!fi.exists() ) {
- KMessageBox::information( this, i18n("File does not exist!\nNo calendar added!"));
+ if ( KMessageBox::questionYesNo(this, i18n("The file does not exist!\nShall I create it for you?")) == KMessageBox::No )
+ return;
+ QFile fileIn( file );
+ if (!fileIn.open( IO_WriteOnly ) ) {
+ KMessageBox::sorry( this, i18n("Sorry, cannot create the file!\nNo calendar added!") );
return;
}
+ QTextStream tsIn( &fileIn );
+ tsIn.setCodec( QTextCodec::codecForName("utf8") );
+ tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n";
+ fileIn.close();
+ }
KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar();
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 3ab316f..945947a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -27,2 +27,4 @@
#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qlabel.h>
#include <qscrollview.h>
@@ -34,2 +36,7 @@
+#include <kurlrequester.h>
+#include <klineedit.h>
+#include <kglobal.h>
+#include <kmessagebox.h>
+
class QGridLayout;
@@ -37,2 +44,54 @@ class QGridLayout;
using namespace KCal;
+
+class KONewCalPrefs : public QDialog
+{
+ Q_OBJECT
+ 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("<b>Local ical (*.ics) file:</b>"), 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 ( checkValid() ) );
+ connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
+ setMinimumWidth( 220 );
+ resize(sizeHint() );
+ }
+
+ QString calName() { return nameE->text(); }
+ QString calFileName() { return url->url(); }
+
+public slots:
+void checkValid() {
+ if ( nameE->text().isEmpty() ) {
+ KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") );
+ nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () ));
+ return;
+ }
+ if ( url->url().isEmpty() ) {
+ KMessageBox::information( this, i18n("Sorry, the file name is empty!") );
+ return;
+ }
+ accept();
+}
+
+public:
+ KLineEdit* nameE;
+ KURLRequester *url;
+};
+
class KOCalButton : public QPushButton