diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /knotes/resourcelocal.cpp | |
download | tdepim-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 'knotes/resourcelocal.cpp')
-rw-r--r-- | knotes/resourcelocal.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/knotes/resourcelocal.cpp b/knotes/resourcelocal.cpp new file mode 100644 index 000000000..194afb6f0 --- /dev/null +++ b/knotes/resourcelocal.cpp @@ -0,0 +1,132 @@ +/******************************************************************* + This file is part of KNotes. + + Copyright (c) 2004, Bo Thorsen <bo@sonofthor.dk> + 2004-2006, Michael Brade <brade@kde.org> + + 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. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*******************************************************************/ + +#include <klocale.h> +#include <kmessagebox.h> +#include <kstandarddirs.h> + +#include <libkcal/icalformat.h> + +#include "knotes/resourcelocal.h" +#include "knotes/resourcelocalconfig.h" +#include "knotes/resourcemanager.h" +#include "knotes/resourcenotes.h" + + + +ResourceLocal::ResourceLocal( const KConfig *config ) + : ResourceNotes( config ), mCalendar( QString::fromLatin1( "UTC" ) ) +{ + kdDebug(5500) << "ResourceLocal::ResourceLocal()" << endl; + setType( "file" ); + mURL = KGlobal::dirs()->saveLocation( "data", "knotes/" ) + "notes.ics"; + + if ( config ) + { + KURL u = config->readPathEntry( "NotesURL" ); + if ( !u.isEmpty() ) + mURL = u; + } +} + +ResourceLocal::~ResourceLocal() +{ +} + +void ResourceLocal::writeConfig( KConfig *config ) +{ + KRES::Resource::writeConfig( config ); + config->writePathEntry( "NotesURL", mURL.prettyURL() ); +} + +bool ResourceLocal::load() +{ + mCalendar.load( mURL.path() ); + + KCal::Journal::List notes = mCalendar.journals(); + KCal::Journal::List::ConstIterator it; + for ( it = notes.begin(); it != notes.end(); ++it ) + manager()->registerNote( this, *it ); + + return true; +} + +bool ResourceLocal::save() +{ + if ( !mCalendar.save( mURL.path(), new KCal::ICalFormat() ) ) + { + KMessageBox::error( 0, + i18n("<qt>Unable to save the notes to <b>%1</b>. " + "Check that there is sufficient disk space." + "<br>There should be a backup in the same directory " + "though.</qt>").arg( mURL.path() ) ); + return false; + } + + return true; +} + +bool ResourceLocal::addNote( KCal::Journal *journal ) +{ + mCalendar.addJournal( journal ); + return true; +} + +bool ResourceLocal::deleteNote( KCal::Journal *journal ) +{ + mCalendar.deleteJournal( journal ); + return true; +} + +KCal::Alarm::List ResourceLocal::alarms( const QDateTime& from, const QDateTime& to ) +{ + KCal::Alarm::List alarms; + KCal::Journal::List notes = mCalendar.journals(); + KCal::Journal::List::ConstIterator note; + for ( note = notes.begin(); note != notes.end(); ++note ) + { + QDateTime preTime = from.addSecs( -1 ); + KCal::Alarm::List::ConstIterator it; + for( it = (*note)->alarms().begin(); it != (*note)->alarms().end(); ++it ) + { + if ( (*it)->enabled() ) + { + QDateTime dt = (*it)->nextRepetition( preTime ); + if ( dt.isValid() && dt <= to ) + alarms.append( *it ); + } + } + } + + return alarms; +} |