From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- knotes/resourcelocal.cpp | 132 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 knotes/resourcelocal.cpp (limited to 'knotes/resourcelocal.cpp') 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 + 2004-2006, Michael Brade + + 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 +#include +#include + +#include + +#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("Unable to save the notes to %1. " + "Check that there is sufficient disk space." + "
There should be a backup in the same directory " + "though.
").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; +} -- cgit v1.2.1