summaryrefslogtreecommitdiffstats
path: root/kresources/featureplan/kcal_resourcefeatureplan.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 /kresources/featureplan/kcal_resourcefeatureplan.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 'kresources/featureplan/kcal_resourcefeatureplan.cpp')
-rw-r--r--kresources/featureplan/kcal_resourcefeatureplan.cpp152
1 files changed, 152 insertions, 0 deletions
diff --git a/kresources/featureplan/kcal_resourcefeatureplan.cpp b/kresources/featureplan/kcal_resourcefeatureplan.cpp
new file mode 100644
index 000000000..84c198216
--- /dev/null
+++ b/kresources/featureplan/kcal_resourcefeatureplan.cpp
@@ -0,0 +1,152 @@
+/*
+ This file is part of kdepim.
+
+ Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "kcal_resourcefeatureplan.h"
+
+#include "kcal_resourcefeatureplanconfig.h"
+
+#include "kde-features.h"
+#include "kde-features_parser.h"
+
+#include <qapplication.h>
+#include <qdatetime.h>
+#include <qptrlist.h>
+#include <qstringlist.h>
+#include <qtimer.h>
+
+#include <kabc/locknull.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kresources/configwidget.h>
+#include <kstandarddirs.h>
+#include <kstringhandler.h>
+#include <kurl.h>
+#include <libkdepim/kpimprefs.h>
+
+using namespace KCal;
+
+ResourceFeaturePlan::ResourceFeaturePlan( const KConfig *config )
+ : ResourceCached( config ), mLock( true )
+{
+ mPrefs = new Prefs;
+
+ if ( config ) readConfig( config );
+}
+
+ResourceFeaturePlan::~ResourceFeaturePlan()
+{
+}
+
+Prefs *ResourceFeaturePlan::prefs()
+{
+ return mPrefs;
+}
+
+void ResourceFeaturePlan::readConfig( const KConfig * )
+{
+ mPrefs->readConfig();
+}
+
+void ResourceFeaturePlan::writeConfig( KConfig *config )
+{
+ ResourceCalendar::writeConfig( config );
+
+ mPrefs->writeConfig();
+}
+
+bool ResourceFeaturePlan::doLoad()
+{
+ kdDebug() << "ResourceFeaturePlan::load()" << endl;
+
+ mCalendar.close();
+
+ FeaturesParser parser;
+
+ Features *features = parser.parseFile( mPrefs->filename() );
+
+ if ( !features ) {
+ return false;
+ } else {
+ Category::List categories = features->categoryList();
+
+ KCal::Todo *masterTodo = new KCal::Todo;
+ masterTodo->setSummary( i18n("Feature Plan") );
+ mCalendar.addTodo( masterTodo );
+
+ insertCategories( categories, masterTodo );
+ }
+
+ emit resourceChanged( this );
+
+ return true;
+}
+
+void ResourceFeaturePlan::insertCategories( const Category::List &categories,
+ Todo *parent )
+{
+ Category::List::ConstIterator it;
+ for( it = categories.begin(); it != categories.end(); ++it ) {
+ Category *c = *it;
+
+ Todo *categoryTodo = new Todo;
+ categoryTodo->setSummary( c->name() );
+ categoryTodo->setRelatedTo( parent );
+
+ insertCategories( c->categoryList(), categoryTodo );
+
+ Feature::List features = (*it)->featureList();
+ Feature::List::ConstIterator it2;
+ for( it2 = features.begin(); it2 != features.end(); ++it2 ) {
+ Feature *f = *it2;
+ Todo *todo = new Todo;
+
+ QString summary = f->summary();
+ int pos = summary.find( '\n' );
+ if ( pos > 0 ) summary = summary.left( pos ) + "...";
+ todo->setSummary( summary );
+
+ todo->setDescription( f->summary() );
+
+ todo->setRelatedTo( categoryTodo );
+
+ int completed;
+ if ( f->status() == "done" ) completed = 100;
+ else if ( f->status() == "inprogress" ) completed = 50;
+ else completed = 0;
+ todo->setPercentComplete( completed );
+
+ mCalendar.addTodo( todo );
+ }
+ }
+}
+
+bool ResourceFeaturePlan::doSave()
+{
+ return true;
+}
+
+KABC::Lock *ResourceFeaturePlan::lock()
+{
+ return &mLock;
+}
+
+
+#include "kcal_resourcefeatureplan.moc"