summaryrefslogtreecommitdiffstats
path: root/knotes/resourcelocal.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 /knotes/resourcelocal.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 'knotes/resourcelocal.cpp')
-rw-r--r--knotes/resourcelocal.cpp132
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;
+}