-rw-r--r-- | bin/kdepim/WhatsNew.txt | 5 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 6 | ||||
-rw-r--r-- | korganizer/journalentry.cpp | 83 | ||||
-rw-r--r-- | korganizer/journalentry.h | 2 | ||||
-rw-r--r-- | korganizer/koeventeditor.cpp | 4 | ||||
-rw-r--r-- | microkde/kfiledialog.cpp | 4 | ||||
-rw-r--r-- | microkde/ktextedit.h | 1 |
7 files changed, 99 insertions, 6 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 4421e61..41c60ea 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt @@ -15,24 +15,29 @@ Made the week-month mode changing in month view faster. Made month view better useable with keyboard. Now TAB key jumps to next cell with an event/todo. Scroll in cell with coursor keys, scroll in time (next week) with Shift/Control + coursorkeys. Fixed bug that the todo view flat mode was reset after first view update. If a todo is displayed closed in the todo view, it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. Added info about the numbers of years to the caption (title) information about a birthday event. +Made completion date in todo editor editable. + +Added possibility to save/load templates for journals. +(Which is just a simple "save text to file" or "insert text from file". + ********** VERSION 2.0.2 ************ KO/Pi: Fixed the layout problem of the day label buttons of the agenda view introduced in version 2.0.1. Added WhatsThis support for the todo view and the list view. Added a quite useful feature to the montview. Just click on the week numbers on the left. And in the top right corner of month view/agenda view there is now a "week number quick selector". diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index b8080b5..5c18aaa 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt @@ -1209,16 +1209,22 @@ { "Select Week","Selektiere Woche" }, { "Set alarm for selected...","Setze Alarm für Selekt..." }, { "Set Alarm!","Setze Alarm!" }, { "Canged alarm for %1 items","Alarm für %1 Items geändert" }, { " and "," und " }, { "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, { "Mail to selected","Mail an Ausgewählte" }, { "Mail to all","Mail an Alle" }, { "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, { "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, { " on"," am" }, { " completed on "," erledigt am " }, +{ "Save as Event template","Speichere als Vorlage" }, +{ "Load Event template","Lade Termin Vorlage" }, +{ "Save as Journal template","Speichere als Journal Vorlage" }, +{ "Insert Journal template","Füge Journal Vorlage ein" }, +{ "","" }, +{ "","" }, { "","" }, { "","" }, { "","" }, { "","" }, diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp index 7af5cf4..dca42e0 100644 --- a/korganizer/journalentry.cpp +++ b/korganizer/journalentry.cpp @@ -17,68 +17,146 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ // // Journal Entry #include <qlabel.h> #include <qlayout.h> +#include <qvbox.h> +#include <qfile.h> +#include <qdir.h> +#include <qtextstream.h> +#include <qtextcodec.h> +#include <qpixmap.h> +#include <qpushbutton.h> #include <kdebug.h> #include <kglobal.h> #include <klocale.h> #include <ktextedit.h> +#include <kfiledialog.h> +#include <kmessagebox.h> #include "koprefs.h" #include <libkcal/journal.h> #include <libkcal/calendarresources.h> #include <libkcal/resourcecalendar.h> #include <kresources/resourceselectdialog.h> #include "journalentry.h" //#include "journalentry.moc" #ifndef DESKTOP_VERSION #include <qpe/qpeapplication.h> #endif JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) : QFrame(parent) { mCalendar = calendar; mJournal = 0; mDirty = false; - mTitleLabel = new QLabel(i18n("Title"),this); + QHBox * vb = new QHBox ( this ); + QPushButton * loadTemplate = new QPushButton( vb ); + QPushButton * saveTemplate = new QPushButton( vb ); + QIconSet icon; + if ( QApplication::desktop()->width() < 321 ) + icon = SmallIcon("fileexport16"); + else + icon = SmallIcon("fileexport"); + saveTemplate->setIconSet (icon ) ; + int size = saveTemplate->sizeHint().height(); + saveTemplate->setFixedSize( size, size ); + if ( QApplication::desktop()->width() < 321 ) + icon = SmallIcon("fileimport16"); + else + icon = SmallIcon("fileimport"); + loadTemplate->setIconSet (icon ) ; + loadTemplate->setFixedSize( size, size ); + + mTitleLabel = new QLabel(i18n("Title"),vb); mTitleLabel->setMargin(2); mTitleLabel->setAlignment(AlignCenter); mEditor = new KTextEdit(this); connect(mEditor,SIGNAL(textChanged()),SLOT(setDirty())); #ifndef DESKTOP_VERSION QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold ); #endif mEditor->setWordWrap( KTextEdit::WidgetWidth ); QBoxLayout *topLayout = new QVBoxLayout(this); - topLayout->addWidget(mTitleLabel); + topLayout->addWidget(vb); topLayout->addWidget(mEditor); mEditor->installEventFilter(this); + connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); + connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); } JournalEntry::~JournalEntry() { } +void JournalEntry::slotSaveTemplate() +{ + QString fileName =locateLocal( "templates", "journals" ); + QDir t_dir; + if ( !t_dir.exists(fileName) ) + t_dir.mkdir ( fileName ); + fileName += "/journal"; + fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Journal template"), this ); + if ( fileName.length() == 0 ) + return; + + QFile fileIn( fileName ); + if (!fileIn.open( IO_WriteOnly ) ) { + KMessageBox::error( this, i18n("Error saving template file\n '%1'.") + .arg( fileName ) ); + return; + } + // QString text; + QTextStream tsIn( &fileIn ); + tsIn.setCodec( QTextCodec::codecForName("utf8") ); + tsIn << mEditor->text(); + fileIn.close(); +} +void JournalEntry::slotLoadTemplate() +{ + QString fileName =locateLocal( "templates", "journals" ); + QDir t_dir; + if ( !t_dir.exists(fileName) ) + t_dir.mkdir ( fileName ); + fileName += "/journal"; + fileName = KFileDialog::getOpenFileName( fileName , i18n("Insert Journal template"), this ); + if ( fileName.length() == 0 ) + return; + QFile fileIn( fileName ); + if (!fileIn.open( IO_ReadOnly ) ) { + KMessageBox::error( this, i18n("Error loading template file\n '%1'.") + .arg( fileName ) ); + return; + } + QTextStream tsIn( &fileIn ); + tsIn.setCodec( QTextCodec::codecForName("utf8") ); + QString text = tsIn.read(); + fileIn.close(); + int line, col; + mEditor->getCursorPosition (& line, & col ); + mEditor-> insertAt ( text, line, col, true ); + //mEditor->setIgnoreMark( true ); + setDirty(); +} void JournalEntry::setDate(const QDate &date) { writeJournal(); mTitleLabel->setText(KGlobal::locale()->formatDate(date)); mDate = date; } void JournalEntry::setJournal(Journal *journal) { @@ -144,24 +222,25 @@ void JournalEntry::writeJournal() return; } // kdDebug() << "JournalEntry::writeJournal()..." << endl; if (!mJournal) { mJournal = new Journal; mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0))); mCalendar->addJournal(mJournal); } mJournal->setDescription(mEditor->text()); + //qDebug("tttt%s ", mEditor->text().latin1()); mDirty = false; } void JournalEntry::flushEntry() { if (!mDirty) return; writeJournal(); } void JournalEntry::keyPressEvent ( QKeyEvent * e ) { diff --git a/korganizer/journalentry.h b/korganizer/journalentry.h index 1f784f4..f1a1fef 100644 --- a/korganizer/journalentry.h +++ b/korganizer/journalentry.h @@ -41,24 +41,26 @@ class JournalEntry : public QFrame { virtual ~JournalEntry(); void setJournal(Journal *); Journal *journal() const; void setDate(const QDate &); void clear(); void flushEntry(); protected slots: + void slotSaveTemplate(); + void slotLoadTemplate(); void setDirty(); signals: void deleteJournal(Journal *); protected: bool eventFilter( QObject *o, QEvent *e ); void writeJournal(); private: Calendar *mCalendar; Journal *mJournal; diff --git a/korganizer/koeventeditor.cpp b/korganizer/koeventeditor.cpp index 0ff99a4..337db9b 100644 --- a/korganizer/koeventeditor.cpp +++ b/korganizer/koeventeditor.cpp @@ -326,25 +326,25 @@ int KOEventEditor::msgItemDelete() i18n("This item will be permanently deleted."), i18n("KOrganizer Confirmation"),i18n("Delete")); } void KOEventEditor::slotLoadTemplate() { QString fileName =locateLocal( "templates", "events" ); QDir t_dir; if ( !t_dir.exists(fileName) ) t_dir.mkdir ( fileName ); fileName += "/event"; - fileName = KFileDialog::getSaveFileName( fileName , "Load Event template", this ); + fileName = KFileDialog::getOpenFileName( fileName , i18n("Load Event template"), this ); if ( fileName.length() == 0 ) return; CalendarLocal cal; ICalFormat format; if ( !format.load( &cal, fileName ) ) { KMessageBox::error( this, i18n("Error loading template file\n '%1'.") .arg( fileName ) ); return ; } QPtrList<Event> events = cal.events(); Event* event = events.first(); if ( !event ) { @@ -355,23 +355,23 @@ void KOEventEditor::slotLoadTemplate() readEvent( event, true ); } } void KOEventEditor::slotSaveTemplate() { QString fileName =locateLocal( "templates", "events" ); QDir t_dir; if ( !t_dir.exists(fileName) ) t_dir.mkdir ( fileName ); fileName += "/event"; - fileName = KFileDialog::getSaveFileName( fileName , "Save as Event template", this ); + fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Event template"), this ); if ( fileName.length() > 0 ) saveTemplate( fileName ); } void KOEventEditor::saveTemplate( const QString &templateName ) { Event *event = new Event; writeEvent( event ); saveAsTemplate( event, templateName ); } diff --git a/microkde/kfiledialog.cpp b/microkde/kfiledialog.cpp index 309f8dc..3f47425 100644 --- a/microkde/kfiledialog.cpp +++ b/microkde/kfiledialog.cpp @@ -7,59 +7,59 @@ #ifndef DESKTOP_VERSION //US orig#include <ofileselector.h> #include <ofileselector_p.h> QString KFileDialog::getSaveFileName( const QString & fn, const QString & cap , QWidget * par ) { QString retfile = ""; QDialog dia ( par, "input-dialog", true ); QVBoxLayout lay( &dia ); lay.setMargin(7); lay.setSpacing(7); - dia.setCaption( cap ); QString file = fn; if ( file.isEmpty() ) file = QDir::homeDirPath()+"/*"; QFileInfo fi ( file ); OFileSelector o ( &dia,OFileSelector::FileSelector, OFileSelector::Save, fi.dirPath(true), fi.fileName() ); QObject::connect ( &o, SIGNAL( ok() ), &dia, SLOT ( accept () ) ); lay.addWidget( &o); // o.setNewVisible( true ); // o.setNameVisible( true ); dia.showMaximized(); + dia.setCaption( cap ); int res = dia.exec(); if ( res ) retfile = o.selectedName(); return retfile; } QString KFileDialog::getOpenFileName( const QString & fn, const QString & cap, QWidget * par ) { QString retfile = ""; QDialog dia ( par, "input-dialog", true ); // QLineEdit lab ( &dia ); QVBoxLayout lay( &dia ); lay.setMargin(7); lay.setSpacing(7); - dia.setCaption( cap ); QString file = fn; if ( file.isEmpty() ) file = QDir::homeDirPath()+"/*";; QFileInfo fi ( file ); OFileSelector o ( &dia,OFileSelector::FileSelector, OFileSelector::Open, fi.dirPath(true), fi.fileName() ); QObject::connect ( &o, SIGNAL( ok() ), &dia, SLOT ( accept () ) ); lay.addWidget( &o); dia.showMaximized(); + dia.setCaption( cap ); int res = dia.exec(); if ( res ) retfile = o.selectedName(); return retfile; } #else #include <qfiledialog.h> QString KFileDialog::getSaveFileName( const QString & fn, const QString & cap , QWidget * par ) diff --git a/microkde/ktextedit.h b/microkde/ktextedit.h index c912f3b..87c0602 100644 --- a/microkde/ktextedit.h +++ b/microkde/ktextedit.h @@ -1,21 +1,22 @@ #ifndef MICROKDE_KTEXTEDIT_H #define MICROKDE_KTEXTEDIT_H #include <qmultilineedit.h> class KTextEdit : public QMultiLineEdit { public: KTextEdit( QWidget *parent ) ; + void setIgnoreMark( bool b ) { mIgnoreMark = b; } private: bool mAllowPopupMenu; bool mMouseDown; bool mIgnoreMark; int mYMousePos; int mXMousePos; void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); }; |