-rw-r--r-- | core/pim/todo/mainwindow.cpp | 8 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 3 | ||||
-rw-r--r-- | core/pim/todo/todoentryimpl.cpp | 2 | ||||
-rw-r--r-- | libopie/libopie.pro | 2 | ||||
-rw-r--r-- | libopie/tododb.cpp | 8 | ||||
-rw-r--r-- | libopie/todoevent.cpp | 6 | ||||
-rw-r--r-- | libopie/todovcalresource.cpp | 153 |
7 files changed, 175 insertions, 7 deletions
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 @@ -20,2 +20,4 @@ +#define QTOPIA_INTERNAL_FD + #include "mainwindow.h" @@ -124,2 +126,3 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : a->addTo( edit ); + a = new QAction( tr( "Edit" ), Resource::loadIconSet( "edit" ), @@ -133,2 +136,3 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : editAction = a; + a = new QAction( tr( "Delete" ), Resource::loadIconSet( "trash" ), @@ -328,3 +332,3 @@ void TodoWindow::setCategory( int c ) table->setShowCategory( QString::null ); - setCaption( tr("Todo") + " - " + tr( "All" ) ); + setCaption( tr("Todo") + " - " + tr( "All Categories" ) ); } else if ( c == (int)catMenu->count() - 1 ) { @@ -350,3 +354,3 @@ void TodoWindow::populateCategories() id = 1; - catMenu->insertItem( tr( "All" ), id++ ); + catMenu->insertItem( tr( "All Categories" ), id++ ); // catMenu->insertSeparator(); 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,5 +1,6 @@ /********************************************************************** + Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org> ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of Qtopia and Opi Environment. ** 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 @@ -135,3 +135,3 @@ 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 diff --git a/libopie/libopie.pro b/libopie/libopie.pro index fb00422..1c0bf7b 100644 --- a/libopie/libopie.pro +++ b/libopie/libopie.pro @@ -3,3 +3,3 @@ 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 diff --git a/libopie/tododb.cpp b/libopie/tododb.cpp index b1b35d0..f9756c6 100644 --- a/libopie/tododb.cpp +++ b/libopie/tododb.cpp @@ -140,2 +140,10 @@ ToDoDB::ToDoDB(const QString &fileName = QString::null, ToDoResource *res ){ } +ToDoResource* ToDoDB::resource(){ + return m_res; +}; +void ToDoDB::setResource( ToDoResource *res ) +{ + delete m_res; + m_res = res; +} ToDoDB::~ToDoDB() diff --git a/libopie/todoevent.cpp b/libopie/todoevent.cpp index 4cfe1c0..5fa4472 100644 --- a/libopie/todoevent.cpp +++ b/libopie/todoevent.cpp @@ -3,2 +3,4 @@ #include <qpe/palmtopuidgen.h> +#include <qpe/stringutil.h> +//#include <qpe/palmtoprecord.h> @@ -13,3 +15,3 @@ ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, m_category = category; - m_desc = description; + m_desc = Qtopia::simplifyMultiLineSpace(description ); if (uid == -1 ) { @@ -55,3 +57,3 @@ void ToDoEvent::setDescription(const QString &desc ) { - m_desc = desc; + m_desc = Qtopia::simplifyMultiLineSpace(desc ); } 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 <freyther@kde.org> + .>+-= 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_,=:_. -<s. 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include <qfile.h> +#include <qvaluelist.h> +#include <opie/todoevent.h> +#include <opie/todovcalresource.h> + +#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<ToDoEvent> ToDoVCalResource::load(const QString &file) +{ + QValueList<ToDoEvent> 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<ToDoEvent>&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<ToDoEvent>::ConstIterator it = list.begin(); it != list.end(); ++it ){ + vo = vobjByEvent( (*it) ); + addVObjectProp(obj, vo ); + } + writeVObject( file.directHandle(), obj ); + cleanVObject( obj ); + cleanStrTbl(); + + return true; +} + + + + + + + + + + |