summaryrefslogtreecommitdiffstats
path: root/korganizer/kojournaleditor.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /korganizer/kojournaleditor.cpp
downloadtdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz
tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'korganizer/kojournaleditor.cpp')
-rw-r--r--korganizer/kojournaleditor.cpp233
1 files changed, 233 insertions, 0 deletions
diff --git a/korganizer/kojournaleditor.cpp b/korganizer/kojournaleditor.cpp
new file mode 100644
index 00000000..1d2d7541
--- /dev/null
+++ b/korganizer/kojournaleditor.cpp
@@ -0,0 +1,233 @@
+/*
+ This file is part of KOrganizer.
+
+ Copyright (c) 1997, 1998 Preston Brown <pbrown@kde.org>
+ Copyright (c) 2000-2003 Cornelius Schumacher <schumacher@kde.org>
+ Copyright (c) 2004 Reinhold Kainhofer <reinhold@kainhofer.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+*/
+
+#include "kojournaleditor.h"
+
+#include "koeditorgeneraljournal.h"
+#include "koeditordetails.h"
+#include "kodialogmanager.h"
+#include "koprefs.h"
+
+#include <libkcal/journal.h>
+#include <libkcal/calendarlocal.h>
+#include <korganizer/baseview.h>
+
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kdebug.h>
+
+#include <qlayout.h>
+
+using namespace KCal;
+
+KOJournalEditor::KOJournalEditor( Calendar *calendar, QWidget *parent ) :
+ KOIncidenceEditor( i18n("Edit Journal Entry"), calendar, parent )
+{
+ mJournal = 0;
+}
+
+KOJournalEditor::~KOJournalEditor()
+{
+ emit dialogClose( mJournal );
+}
+
+void KOJournalEditor::init()
+{
+ setupGeneral();
+ setupAttendeesTab();
+}
+
+void KOJournalEditor::reload()
+{
+ kdDebug(5851)<<"reloading Journal"<<endl;
+ if ( mJournal ) readJournal( mJournal );
+}
+
+void KOJournalEditor::setupGeneral()
+{
+ mGeneral = new KOEditorGeneralJournal(this);
+
+ if (KOPrefs::instance()->mCompactDialogs) {
+ QFrame *topFrame = addPage(i18n("General"));
+
+ QBoxLayout *topLayout = new QVBoxLayout( topFrame );
+ topLayout->setMargin( marginHint() );
+ topLayout->setSpacing( spacingHint() );
+
+ mGeneral->initTitle( topFrame, topLayout );
+ mGeneral->initDate( topFrame, topLayout );
+ mGeneral->initDescription( topFrame, topLayout );
+ } else {
+ QFrame *topFrame = addPage(i18n("&General"));
+
+ QBoxLayout *topLayout = new QVBoxLayout(topFrame);
+ topLayout->setSpacing(spacingHint());
+
+ mGeneral->initTitle( topFrame, topLayout );
+ mGeneral->initDate( topFrame, topLayout );
+ mGeneral->initDescription( topFrame, topLayout );
+ }
+
+ mGeneral->finishSetup();
+}
+
+void KOJournalEditor::editIncidence( Incidence *incidence, Calendar * )
+{
+ Journal *journal=dynamic_cast<Journal*>(incidence);
+ if (journal)
+ {
+ init();
+
+ mJournal = journal;
+ readJournal(mJournal);
+ }
+}
+
+
+void KOJournalEditor::newJournal()
+{
+ init();
+ mJournal = 0;
+ loadDefaults();
+}
+
+void KOJournalEditor::setTexts( const QString &summary, const QString &description )
+{
+ if ( description.isEmpty() && summary.contains("\n") ) {
+ mGeneral->setDescription( summary );
+ int pos = summary.find( "\n" );
+ mGeneral->setSummary( summary.left( pos ) );
+ } else {
+ mGeneral->setSummary( summary );
+ mGeneral->setDescription( description );
+ }
+}
+
+
+
+void KOJournalEditor::loadDefaults()
+{
+ setDate( QDate::currentDate() );
+}
+
+bool KOJournalEditor::processInput()
+{
+ if ( !validateInput() ) return false;
+
+ if ( mJournal ) {
+ Journal *oldJournal = mJournal->clone();
+ writeJournal( mJournal );
+ mChanger->changeIncidence( oldJournal, mJournal );
+ delete oldJournal;
+ } else {
+ mJournal = new Journal;
+ mJournal->setOrganizer( Person( KOPrefs::instance()->fullName(),
+ KOPrefs::instance()->email() ) );
+
+ writeJournal( mJournal );
+
+ if ( !mChanger->addIncidence( mJournal, this ) ) {
+ KODialogManager::errorSaveIncidence( this, mJournal );
+ delete mJournal;
+ mJournal = 0;
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void KOJournalEditor::deleteJournal()
+{
+ kdDebug(5850) << "Delete journal" << endl;
+
+ if ( mJournal )
+ emit deleteIncidenceSignal( mJournal );
+ emit dialogClose( mJournal );
+ reject();
+}
+
+void KOJournalEditor::setDate( const QDate &date )
+{
+ mGeneral->setDefaults( date );
+ mDetails->setDefaults();
+}
+
+void KOJournalEditor::readJournal( Journal *journal )
+{
+ kdDebug(5851)<<"read Journal"<<endl;
+ mGeneral->readJournal( journal );
+ mDetails->readEvent( journal );
+}
+
+void KOJournalEditor::writeJournal( Journal *journal )
+{
+ mGeneral->writeJournal( journal );
+ mDetails->writeEvent( journal );
+}
+
+bool KOJournalEditor::validateInput()
+{
+ return mGeneral->validateInput() && mDetails->validateInput();
+}
+
+int KOJournalEditor::msgItemDelete()
+{
+ return KMessageBox::warningContinueCancel( this,
+ i18n("This journal entry will be permanently deleted."),
+ i18n("KOrganizer Confirmation"), KGuiItem( i18n("Delete"), "editdelete" ));
+}
+
+void KOJournalEditor::modified( int /*modification*/)
+{
+ // Play dump, just reload the Journal. This dialog has become so complicated that
+ // there is no point in trying to be smart here...
+ reload();
+}
+
+void KOJournalEditor::loadTemplate( /*const*/ CalendarLocal& cal)
+{
+ Journal::List journals = cal.journals();
+ if ( journals.count() == 0 ) {
+ KMessageBox::error( this,
+ i18n("Template does not contain a valid journal.") );
+ } else {
+ readJournal( journals.first() );
+ }
+}
+
+void KOJournalEditor::slotSaveTemplate( const QString &templateName )
+{
+ Journal *journal = new Journal;
+ writeJournal( journal );
+ saveAsTemplate( journal, templateName );
+}
+
+QStringList& KOJournalEditor::templates() const
+{
+ return KOPrefs::instance()->mJournalTemplates;
+}
+#include "kojournaleditor.moc"