From e9189f8d0cc46b0532fdcbcb2377ae3d108666d5 Mon Sep 17 00:00:00 2001 From: zecke Date: Wed, 20 Mar 2002 21:45:51 +0000 Subject: vCal Resource for the tododb --- diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index fb85a09..6709811 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -18,6 +18,8 @@ ** **********************************************************************/ +#define QTOPIA_INTERNAL_FD + #include "mainwindow.h" #include "todoentryimpl.h" #include "todotable.h" @@ -122,6 +124,7 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : this, SLOT( slotNew() ) ); a->addTo( bar ); a->addTo( edit ); + a = new QAction( tr( "Edit" ), Resource::loadIconSet( "edit" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), @@ -131,6 +134,7 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : a->addTo( contextMenu ); a->setEnabled( FALSE ); editAction = a; + a = new QAction( tr( "Delete" ), Resource::loadIconSet( "trash" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), @@ -326,7 +330,7 @@ void TodoWindow::setCategory( int c ) catMenu->setItemChecked( i, c == (int)i ); if ( c == 1 ) { table->setShowCategory( QString::null ); - setCaption( tr("Todo") + " - " + tr( "All" ) ); + setCaption( tr("Todo") + " - " + tr( "All Categories" ) ); } else if ( c == (int)catMenu->count() - 1 ) { table->setShowCategory( tr( "Unfiled" ) ); setCaption( tr("Todo") + " - " + tr( "Unfiled" ) ); @@ -348,7 +352,7 @@ void TodoWindow::populateCategories() int id, rememberId; id = 1; - catMenu->insertItem( tr( "All" ), id++ ); + catMenu->insertItem( tr( "All Categories" ), id++ ); // catMenu->insertSeparator(); QStringList categories = table->categories(); categories.append( tr( "Unfiled" ) ); diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index f4fcd1b..856dcb4 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h @@ -1,7 +1,8 @@ /********************************************************************** + Copyright (C) 2002 Holger 'zecke' Freyther ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of Qtopia and Opi Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software diff --git a/core/pim/todo/todoentryimpl.cpp b/core/pim/todo/todoentryimpl.cpp index 79206de..c957715 100644 --- a/core/pim/todo/todoentryimpl.cpp +++ b/core/pim/todo/todoentryimpl.cpp @@ -133,7 +133,7 @@ Task NewTaskDialog::todoEntry() void NewTaskDialog::accept() { QString strText = txtTodo->text(); - if ( !strText || strText == "") { + if ( strText.isEmpty() ) { // hmm... just decline it then, the user obviously didn't care about it QDialog::reject(); return; diff --git a/libopie/libopie.pro b/libopie/libopie.pro index fb00422..1c0bf7b 100644 --- a/libopie/libopie.pro +++ b/libopie/libopie.pro @@ -1,7 +1,7 @@ TEMPLATE = lib CONFIG += qte warn_on release HEADERS = $(OPIEDIR)/include/opie/xmltree.h -SOURCES = xmltree.cc tododb.cpp todoevent.cpp +SOURCES = xmltree.cc tododb.cpp todoevent.cpp todovcalresource.cpp TARGET = opie INCLUDEPATH += $(OPIEDIR)/include DESTDIR = $(QTDIR)/lib$(PROJMAK) diff --git a/libopie/tododb.cpp b/libopie/tododb.cpp index b1b35d0..f9756c6 100644 --- a/libopie/tododb.cpp +++ b/libopie/tododb.cpp @@ -138,6 +138,14 @@ ToDoDB::ToDoDB(const QString &fileName = QString::null, ToDoResource *res ){ m_res = res; load(); } +ToDoResource* ToDoDB::resource(){ + return m_res; +}; +void ToDoDB::setResource( ToDoResource *res ) +{ + delete m_res; + m_res = res; +} ToDoDB::~ToDoDB() { delete m_res; diff --git a/libopie/todoevent.cpp b/libopie/todoevent.cpp index 4cfe1c0..5fa4472 100644 --- a/libopie/todoevent.cpp +++ b/libopie/todoevent.cpp @@ -1,6 +1,8 @@ #include #include +#include +//#include ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, const QString &description, bool hasDate, QDate date, int uid ) @@ -11,7 +13,7 @@ ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, m_hasDate = hasDate; m_priority = priority; m_category = category; - m_desc = description; + m_desc = Qtopia::simplifyMultiLineSpace(description ); if (uid == -1 ) { Qtopia::UidGen *uidgen = new Qtopia::UidGen(); uid = uidgen->generate(); @@ -53,7 +55,7 @@ void ToDoEvent::setHasDate( bool hasDate ) } void ToDoEvent::setDescription(const QString &desc ) { - m_desc = desc; + m_desc = Qtopia::simplifyMultiLineSpace(desc ); } void ToDoEvent::setCategory( const QString &cat ) { diff --git a/libopie/todovcalresource.cpp b/libopie/todovcalresource.cpp new file mode 100644 index 0000000..a6afe68 --- a/dev/null +++ b/libopie/todovcalresource.cpp @@ -0,0 +1,153 @@ +/* +               =. This file is part of the OPIE Project +             .=l. Copyright (c) 2002 Holger Freyther +           .>+-= the use of vobject was inspired by libkcal + _;:,     .>    :=|. This library is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include +#include +#include +#include + +#include "../library/backend/vobject_p.h" +#include "../library/backend/timeconversion.h" +#include "../library/backend/qfiledirect_p.h" + +static VObject *vobjByEvent( const ToDoEvent &event ) +{ + VObject *task = newVObject( VCTodoProp ); + if( task == 0 ) + return 0l; + if( event.hasDate() ) + addPropValue( task, VCDueProp, TimeConversion::toISO8601( event.date() ) ); + + if( event.isCompleted() ) + addPropValue( task, VCStatusProp, "COMPLETED"); + + QString string = QString::number(event.priority() ); + addPropValue( task, VCPriorityProp, string.local8Bit() ); + addPropValue( task, VCCategoriesProp, event.category().local8Bit() ); + addPropValue( task, VCDescriptionProp, event.description().local8Bit() ); + addPropValue( task, VCSummaryProp, event.description().left(15).local8Bit() ); + return task; +}; + +static ToDoEvent eventByVObj( VObject *obj ){ + ToDoEvent event; + VObject *ob; + QCString name; + // no uid, attendees, ... and no fun + // description + if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){ + name = vObjectStringZValue( ob ); + event.setDescription( name ); + } + // completed + if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){ + name = vObjectStringZValue( ob ); + if( name == "COMPLETED" ){ + event.setCompleted( true ); + }else{ + event.setCompleted( false ); + } + }else + event.setCompleted( false ); + // priority + if ((ob = isAPropertyOf(obj, VCPriorityProp))) { + name = vObjectStringZValue( ob ); + bool ok; + event.setPriority(name.toInt(&ok) ); + } + //due date + if((ob = isAPropertyOf(obj, VCDueProp)) ){ + event.setHasDate( true ); + name = vObjectStringZValue( ob ); + event.setDate( TimeConversion::fromISO8601( name).date() ); + } + // categories + if((ob = isAPropertyOf( obj, VCCategoriesProp )) != 0 ){ + name = vObjectStringZValue( ob ); + qWarning("Categories:%s", name.data() ); + } + + return event; +}; + + +QValueList ToDoVCalResource::load(const QString &file) +{ + QValueList events; + VObject *vcal = 0l; + vcal = Parse_MIME_FromFileName( (char *)file.utf8().data() ); // from vobject + if(!vcal ) + return events; + // start parsing + + VObjectIterator it; + VObject *vobj; + initPropIterator(&it, vcal); + + while( moreIteration( &it ) ) { + vobj = ::nextVObject( &it ); + QCString name = ::vObjectName( vobj ); + //QCString objVal = ::vObjectStringZValue( vobj ); + // let's find out the type + if( name == VCTodoProp ){ + events.append( eventByVObj( vobj ) ); + + } // parse the value + } + return events; +} +bool ToDoVCalResource::save(const QString &fileName, const QValueList&list ) +{ + QFileDirect file ( fileName ); + if(!file.open(IO_WriteOnly ) ) + return false; + // obj + VObject *obj; + obj = newVObject( VCCalProp ); + addPropValue( obj, VCVersionProp, "1.0" ); + VObject *vo; + for(QValueList::ConstIterator it = list.begin(); it != list.end(); ++it ){ + vo = vobjByEvent( (*it) ); + addVObjectProp(obj, vo ); + } + writeVObject( file.directHandle(), obj ); + cleanVObject( obj ); + cleanStrTbl(); + + return true; +} + + + + + + + + + + -- cgit v0.9.0.2