You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/kresources/featureplan/kcal_resourcefeatureplan.cpp

153 lines
3.7 KiB

/*
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 <tqapplication.h>
#include <tqdatetime.h>
#include <tqptrlist.h>
#include <tqstringlist.h>
#include <tqtimer.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 <libtdepim/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;
TQString 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"