summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-02-05 14:31:01 (UTC)
committer zautrix <zautrix>2005-02-05 14:31:01 (UTC)
commit231a90376b096687770b2b029d4a3d2efa232b2e (patch) (unidiff)
tree609a9b8434fe28eab8ea9a1a7e4441a37be0b246 /korganizer
parent7be6218eaf6bd29d4bc09d0bb79bb0dec6da9ae5 (diff)
downloadkdepimpi-231a90376b096687770b2b029d4a3d2efa232b2e.zip
kdepimpi-231a90376b096687770b2b029d4a3d2efa232b2e.tar.gz
kdepimpi-231a90376b096687770b2b029d4a3d2efa232b2e.tar.bz2
many fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/journalentry.cpp83
-rw-r--r--korganizer/journalentry.h2
-rw-r--r--korganizer/koeventeditor.cpp4
3 files changed, 85 insertions, 4 deletions
diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp
index 7af5cf4..dca42e0 100644
--- a/korganizer/journalentry.cpp
+++ b/korganizer/journalentry.cpp
@@ -1,170 +1,249 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
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 23
24// 24//
25// Journal Entry 25// Journal Entry
26 26
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qvbox.h>
30#include <qfile.h>
31#include <qdir.h>
32#include <qtextstream.h>
33#include <qtextcodec.h>
34#include <qpixmap.h>
35#include <qpushbutton.h>
29 36
30#include <kdebug.h> 37#include <kdebug.h>
31#include <kglobal.h> 38#include <kglobal.h>
32#include <klocale.h> 39#include <klocale.h>
33#include <ktextedit.h> 40#include <ktextedit.h>
41#include <kfiledialog.h>
42#include <kmessagebox.h>
34#include "koprefs.h" 43#include "koprefs.h"
35 44
36#include <libkcal/journal.h> 45#include <libkcal/journal.h>
37#include <libkcal/calendarresources.h> 46#include <libkcal/calendarresources.h>
38#include <libkcal/resourcecalendar.h> 47#include <libkcal/resourcecalendar.h>
39#include <kresources/resourceselectdialog.h> 48#include <kresources/resourceselectdialog.h>
40 49
41#include "journalentry.h" 50#include "journalentry.h"
42//#include "journalentry.moc" 51//#include "journalentry.moc"
43#ifndef DESKTOP_VERSION 52#ifndef DESKTOP_VERSION
44#include <qpe/qpeapplication.h> 53#include <qpe/qpeapplication.h>
45#endif 54#endif
46JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) : 55JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) :
47 QFrame(parent) 56 QFrame(parent)
48{ 57{
49 mCalendar = calendar; 58 mCalendar = calendar;
50 mJournal = 0; 59 mJournal = 0;
51 mDirty = false; 60 mDirty = false;
52 61
53 mTitleLabel = new QLabel(i18n("Title"),this); 62 QHBox * vb = new QHBox ( this );
63 QPushButton * loadTemplate = new QPushButton( vb );
64 QPushButton * saveTemplate = new QPushButton( vb );
65 QIconSet icon;
66 if ( QApplication::desktop()->width() < 321 )
67 icon = SmallIcon("fileexport16");
68 else
69 icon = SmallIcon("fileexport");
70 saveTemplate->setIconSet (icon ) ;
71 int size = saveTemplate->sizeHint().height();
72 saveTemplate->setFixedSize( size, size );
73 if ( QApplication::desktop()->width() < 321 )
74 icon = SmallIcon("fileimport16");
75 else
76 icon = SmallIcon("fileimport");
77 loadTemplate->setIconSet (icon ) ;
78 loadTemplate->setFixedSize( size, size );
79
80 mTitleLabel = new QLabel(i18n("Title"),vb);
54 mTitleLabel->setMargin(2); 81 mTitleLabel->setMargin(2);
55 mTitleLabel->setAlignment(AlignCenter); 82 mTitleLabel->setAlignment(AlignCenter);
56 83
57 mEditor = new KTextEdit(this); 84 mEditor = new KTextEdit(this);
58 connect(mEditor,SIGNAL(textChanged()),SLOT(setDirty())); 85 connect(mEditor,SIGNAL(textChanged()),SLOT(setDirty()));
59#ifndef DESKTOP_VERSION 86#ifndef DESKTOP_VERSION
60 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold ); 87 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold );
61#endif 88#endif
62 mEditor->setWordWrap( KTextEdit::WidgetWidth ); 89 mEditor->setWordWrap( KTextEdit::WidgetWidth );
63 QBoxLayout *topLayout = new QVBoxLayout(this); 90 QBoxLayout *topLayout = new QVBoxLayout(this);
64 topLayout->addWidget(mTitleLabel); 91 topLayout->addWidget(vb);
65 topLayout->addWidget(mEditor); 92 topLayout->addWidget(mEditor);
66 mEditor->installEventFilter(this); 93 mEditor->installEventFilter(this);
94 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
95 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
67} 96}
68 97
69JournalEntry::~JournalEntry() 98JournalEntry::~JournalEntry()
70{ 99{
71} 100}
72 101
102void JournalEntry::slotSaveTemplate()
103{
104 QString fileName =locateLocal( "templates", "journals" );
105 QDir t_dir;
106 if ( !t_dir.exists(fileName) )
107 t_dir.mkdir ( fileName );
108 fileName += "/journal";
109 fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Journal template"), this );
110 if ( fileName.length() == 0 )
111 return;
112
113 QFile fileIn( fileName );
114 if (!fileIn.open( IO_WriteOnly ) ) {
115 KMessageBox::error( this, i18n("Error saving template file\n '%1'.")
116 .arg( fileName ) );
117 return;
118 }
119 // QString text;
120 QTextStream tsIn( &fileIn );
121 tsIn.setCodec( QTextCodec::codecForName("utf8") );
122 tsIn << mEditor->text();
123 fileIn.close();
124}
125void JournalEntry::slotLoadTemplate()
126{
127 QString fileName =locateLocal( "templates", "journals" );
128 QDir t_dir;
129 if ( !t_dir.exists(fileName) )
130 t_dir.mkdir ( fileName );
131 fileName += "/journal";
132 fileName = KFileDialog::getOpenFileName( fileName , i18n("Insert Journal template"), this );
133 if ( fileName.length() == 0 )
134 return;
135 QFile fileIn( fileName );
136 if (!fileIn.open( IO_ReadOnly ) ) {
137 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
138 .arg( fileName ) );
139 return;
140 }
141 QTextStream tsIn( &fileIn );
142 tsIn.setCodec( QTextCodec::codecForName("utf8") );
143 QString text = tsIn.read();
144 fileIn.close();
145 int line, col;
146 mEditor->getCursorPosition (& line, & col );
147 mEditor-> insertAt ( text, line, col, true );
148 //mEditor->setIgnoreMark( true );
149 setDirty();
150}
73void JournalEntry::setDate(const QDate &date) 151void JournalEntry::setDate(const QDate &date)
74{ 152{
75 writeJournal(); 153 writeJournal();
76 154
77 mTitleLabel->setText(KGlobal::locale()->formatDate(date)); 155 mTitleLabel->setText(KGlobal::locale()->formatDate(date));
78 156
79 157
80 mDate = date; 158 mDate = date;
81} 159}
82 160
83void JournalEntry::setJournal(Journal *journal) 161void JournalEntry::setJournal(Journal *journal)
84{ 162{
85 writeJournal(); 163 writeJournal();
86 164
87 mJournal = journal; 165 mJournal = journal;
88 166
89 mEditor->setText(mJournal->description()); 167 mEditor->setText(mJournal->description());
90 168
91 mDirty = false; 169 mDirty = false;
92} 170}
93 171
94Journal *JournalEntry::journal() const 172Journal *JournalEntry::journal() const
95{ 173{
96 return mJournal; 174 return mJournal;
97} 175}
98 176
99void JournalEntry::setDirty() 177void JournalEntry::setDirty()
100{ 178{
101 mDirty = true; 179 mDirty = true;
102 180
103// kdDebug() << "JournalEntry::setDirty()" << endl; 181// kdDebug() << "JournalEntry::setDirty()" << endl;
104} 182}
105 183
106void JournalEntry::clear() 184void JournalEntry::clear()
107{ 185{
108 mJournal = 0; 186 mJournal = 0;
109 mEditor->setText(""); 187 mEditor->setText("");
110} 188}
111 189
112bool JournalEntry::eventFilter( QObject *o, QEvent *e ) 190bool JournalEntry::eventFilter( QObject *o, QEvent *e )
113{ 191{
114// kdDebug() << "JournalEntry::event received " << e->type() << endl; 192// kdDebug() << "JournalEntry::event received " << e->type() << endl;
115 193
116 if ( e->type() == QEvent::FocusOut ) { 194 if ( e->type() == QEvent::FocusOut ) {
117 writeJournal(); 195 writeJournal();
118 } 196 }
119 if ( e->type() == QEvent::KeyPress ) { 197 if ( e->type() == QEvent::KeyPress ) {
120 QKeyEvent * k = (QKeyEvent *) e; 198 QKeyEvent * k = (QKeyEvent *) e;
121 if ( k->state() == Qt::ControlButton ) { 199 if ( k->state() == Qt::ControlButton ) {
122 k->ignore(); 200 k->ignore();
123 //return true; 201 //return true;
124 } 202 }
125 } 203 }
126 204
127 return QFrame::eventFilter( o, e ); // standard event processing 205 return QFrame::eventFilter( o, e ); // standard event processing
128} 206}
129 207
130void JournalEntry::writeJournal() 208void JournalEntry::writeJournal()
131{ 209{
132// kdDebug() << "JournalEntry::writeJournal()" << endl; 210// kdDebug() << "JournalEntry::writeJournal()" << endl;
133 if (!mDirty) return; 211 if (!mDirty) return;
134 212
135 if (mEditor->text().isEmpty()) { 213 if (mEditor->text().isEmpty()) {
136 if ( mJournal ) { 214 if ( mJournal ) {
137 mDirty = false; 215 mDirty = false;
138 bool conf = KOPrefs::instance()->mConfirm; 216 bool conf = KOPrefs::instance()->mConfirm;
139 KOPrefs::instance()->mConfirm = false; 217 KOPrefs::instance()->mConfirm = false;
140 emit deleteJournal(mJournal); 218 emit deleteJournal(mJournal);
141 KOPrefs::instance()->mConfirm = conf; 219 KOPrefs::instance()->mConfirm = conf;
142 mJournal = 0; 220 mJournal = 0;
143 } 221 }
144 return; 222 return;
145 } 223 }
146 224
147// kdDebug() << "JournalEntry::writeJournal()..." << endl; 225// kdDebug() << "JournalEntry::writeJournal()..." << endl;
148 226
149 if (!mJournal) { 227 if (!mJournal) {
150 mJournal = new Journal; 228 mJournal = new Journal;
151 mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0))); 229 mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0)));
152 mCalendar->addJournal(mJournal); 230 mCalendar->addJournal(mJournal);
153 } 231 }
154 232
155 mJournal->setDescription(mEditor->text()); 233 mJournal->setDescription(mEditor->text());
234 //qDebug("tttt%s ", mEditor->text().latin1());
156 235
157 mDirty = false; 236 mDirty = false;
158} 237}
159 238
160void JournalEntry::flushEntry() 239void JournalEntry::flushEntry()
161{ 240{
162 if (!mDirty) return; 241 if (!mDirty) return;
163 242
164 writeJournal(); 243 writeJournal();
165} 244}
166void JournalEntry::keyPressEvent ( QKeyEvent * e ) 245void JournalEntry::keyPressEvent ( QKeyEvent * e )
167{ 246{
168 e->ignore(); 247 e->ignore();
169 248
170} 249}
diff --git a/korganizer/journalentry.h b/korganizer/journalentry.h
index 1f784f4..f1a1fef 100644
--- a/korganizer/journalentry.h
+++ b/korganizer/journalentry.h
@@ -5,69 +5,71 @@
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 JOURNALENTRY_H 23#ifndef JOURNALENTRY_H
24#define JOURNALENTRY_H 24#define JOURNALENTRY_H
25// 25//
26// Widget showing one Journal entry 26// Widget showing one Journal entry
27 27
28#include <qframe.h> 28#include <qframe.h>
29 29
30#include <libkcal/calendar.h> 30#include <libkcal/calendar.h>
31 31
32class QLabel; 32class QLabel;
33class KTextEdit; 33class KTextEdit;
34 34
35using namespace KCal; 35using namespace KCal;
36 36
37class JournalEntry : public QFrame { 37class JournalEntry : public QFrame {
38 Q_OBJECT 38 Q_OBJECT
39 public: 39 public:
40 JournalEntry(Calendar *,QWidget *parent); 40 JournalEntry(Calendar *,QWidget *parent);
41 virtual ~JournalEntry(); 41 virtual ~JournalEntry();
42 42
43 void setJournal(Journal *); 43 void setJournal(Journal *);
44 Journal *journal() const; 44 Journal *journal() const;
45 45
46 void setDate(const QDate &); 46 void setDate(const QDate &);
47 47
48 void clear(); 48 void clear();
49 49
50 void flushEntry(); 50 void flushEntry();
51 51
52 protected slots: 52 protected slots:
53 void slotSaveTemplate();
54 void slotLoadTemplate();
53 void setDirty(); 55 void setDirty();
54 signals: 56 signals:
55 void deleteJournal(Journal *); 57 void deleteJournal(Journal *);
56 58
57 protected: 59 protected:
58 bool eventFilter( QObject *o, QEvent *e ); 60 bool eventFilter( QObject *o, QEvent *e );
59 61
60 void writeJournal(); 62 void writeJournal();
61 63
62 private: 64 private:
63 Calendar *mCalendar; 65 Calendar *mCalendar;
64 Journal *mJournal; 66 Journal *mJournal;
65 QDate mDate; 67 QDate mDate;
66 void keyPressEvent ( QKeyEvent * ) ; 68 void keyPressEvent ( QKeyEvent * ) ;
67 QLabel *mTitleLabel; 69 QLabel *mTitleLabel;
68 KTextEdit *mEditor; 70 KTextEdit *mEditor;
69 71
70 bool mDirty; 72 bool mDirty;
71}; 73};
72 74
73#endif 75#endif
diff --git a/korganizer/koeventeditor.cpp b/korganizer/koeventeditor.cpp
index 0ff99a4..337db9b 100644
--- a/korganizer/koeventeditor.cpp
+++ b/korganizer/koeventeditor.cpp
@@ -290,88 +290,88 @@ void KOEventEditor::readEvent( Event *event, bool tmpl )
290 mDetails->readEvent( event ); 290 mDetails->readEvent( event );
291 mRecurrence->readEvent( event ); 291 mRecurrence->readEvent( event );
292 292
293 // categories 293 // categories
294 //mCategoryDialog->setSelected( event->categories() ); 294 //mCategoryDialog->setSelected( event->categories() );
295} 295}
296 296
297void KOEventEditor::writeEvent(Event *event) 297void KOEventEditor::writeEvent(Event *event)
298{ 298{
299 mGeneral->writeEvent( event ); 299 mGeneral->writeEvent( event );
300 mDetails->writeEvent( event ); 300 mDetails->writeEvent( event );
301 301
302 if ( event->organizer() == KOPrefs::instance()->email() ) { 302 if ( event->organizer() == KOPrefs::instance()->email() ) {
303 Event *ev = new Event( *event ); 303 Event *ev = new Event( *event );
304 ev->registerObserver(0); 304 ev->registerObserver(0);
305 mDetails->cancelAttendeeEvent( ev ); 305 mDetails->cancelAttendeeEvent( ev );
306 if ( ev->attendeeCount() > 0 ) { 306 if ( ev->attendeeCount() > 0 ) {
307 emit deleteAttendee( ev ); 307 emit deleteAttendee( ev );
308 } 308 }
309 delete(ev); 309 delete(ev);
310 } 310 }
311 311
312 mRecurrence->writeEvent(event); 312 mRecurrence->writeEvent(event);
313} 313}
314 314
315bool KOEventEditor::validateInput() 315bool KOEventEditor::validateInput()
316{ 316{
317 if (!mGeneral->validateInput()) return false; 317 if (!mGeneral->validateInput()) return false;
318 if (!mDetails->validateInput()) return false; 318 if (!mDetails->validateInput()) return false;
319 if (!mRecurrence->validateInput()) return false; 319 if (!mRecurrence->validateInput()) return false;
320 return true; 320 return true;
321} 321}
322 322
323int KOEventEditor::msgItemDelete() 323int KOEventEditor::msgItemDelete()
324{ 324{
325 return KMessageBox::warningContinueCancel(this, 325 return KMessageBox::warningContinueCancel(this,
326 i18n("This item will be permanently deleted."), 326 i18n("This item will be permanently deleted."),
327 i18n("KOrganizer Confirmation"),i18n("Delete")); 327 i18n("KOrganizer Confirmation"),i18n("Delete"));
328} 328}
329 329
330void KOEventEditor::slotLoadTemplate() 330void KOEventEditor::slotLoadTemplate()
331{ 331{
332 332
333 QString fileName =locateLocal( "templates", "events" ); 333 QString fileName =locateLocal( "templates", "events" );
334 QDir t_dir; 334 QDir t_dir;
335 if ( !t_dir.exists(fileName) ) 335 if ( !t_dir.exists(fileName) )
336 t_dir.mkdir ( fileName ); 336 t_dir.mkdir ( fileName );
337 fileName += "/event"; 337 fileName += "/event";
338 fileName = KFileDialog::getSaveFileName( fileName , "Load Event template", this ); 338 fileName = KFileDialog::getOpenFileName( fileName , i18n("Load Event template"), this );
339 if ( fileName.length() == 0 ) 339 if ( fileName.length() == 0 )
340 return; 340 return;
341 CalendarLocal cal; 341 CalendarLocal cal;
342 ICalFormat format; 342 ICalFormat format;
343 if ( !format.load( &cal, fileName ) ) { 343 if ( !format.load( &cal, fileName ) ) {
344 KMessageBox::error( this, i18n("Error loading template file\n '%1'.") 344 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
345 .arg( fileName ) ); 345 .arg( fileName ) );
346 return ; 346 return ;
347 } 347 }
348 QPtrList<Event> events = cal.events(); 348 QPtrList<Event> events = cal.events();
349 Event* event = events.first(); 349 Event* event = events.first();
350 if ( !event ) { 350 if ( !event ) {
351 KMessageBox::error( this, 351 KMessageBox::error( this,
352 i18n("Template does not contain\na valid Event.")); 352 i18n("Template does not contain\na valid Event."));
353 } else { 353 } else {
354 kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl; 354 kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl;
355 readEvent( event, true ); 355 readEvent( event, true );
356 } 356 }
357} 357}
358 358
359 359
360void KOEventEditor::slotSaveTemplate() 360void KOEventEditor::slotSaveTemplate()
361{ 361{
362 QString fileName =locateLocal( "templates", "events" ); 362 QString fileName =locateLocal( "templates", "events" );
363 QDir t_dir; 363 QDir t_dir;
364 if ( !t_dir.exists(fileName) ) 364 if ( !t_dir.exists(fileName) )
365 t_dir.mkdir ( fileName ); 365 t_dir.mkdir ( fileName );
366 fileName += "/event"; 366 fileName += "/event";
367 fileName = KFileDialog::getSaveFileName( fileName , "Save as Event template", this ); 367 fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Event template"), this );
368 if ( fileName.length() > 0 ) 368 if ( fileName.length() > 0 )
369 saveTemplate( fileName ); 369 saveTemplate( fileName );
370} 370}
371 371
372void KOEventEditor::saveTemplate( const QString &templateName ) 372void KOEventEditor::saveTemplate( const QString &templateName )
373{ 373{
374 Event *event = new Event; 374 Event *event = new Event;
375 writeEvent( event ); 375 writeEvent( event );
376 saveAsTemplate( event, templateName ); 376 saveAsTemplate( event, templateName );
377} 377}