-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 | |||
@@ -18,6 +18,8 @@ | |||
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #define QTOPIA_INTERNAL_FD | ||
22 | |||
21 | #include "mainwindow.h" | 23 | #include "mainwindow.h" |
22 | #include "todoentryimpl.h" | 24 | #include "todoentryimpl.h" |
23 | #include "todotable.h" | 25 | #include "todotable.h" |
@@ -122,6 +124,7 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
122 | this, SLOT( slotNew() ) ); | 124 | this, SLOT( slotNew() ) ); |
123 | a->addTo( bar ); | 125 | a->addTo( bar ); |
124 | a->addTo( edit ); | 126 | a->addTo( edit ); |
127 | |||
125 | a = new QAction( tr( "Edit" ), Resource::loadIconSet( "edit" ), | 128 | a = new QAction( tr( "Edit" ), Resource::loadIconSet( "edit" ), |
126 | QString::null, 0, this, 0 ); | 129 | QString::null, 0, this, 0 ); |
127 | connect( a, SIGNAL( activated() ), | 130 | connect( a, SIGNAL( activated() ), |
@@ -131,6 +134,7 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
131 | a->addTo( contextMenu ); | 134 | a->addTo( contextMenu ); |
132 | a->setEnabled( FALSE ); | 135 | a->setEnabled( FALSE ); |
133 | editAction = a; | 136 | editAction = a; |
137 | |||
134 | a = new QAction( tr( "Delete" ), Resource::loadIconSet( "trash" ), | 138 | a = new QAction( tr( "Delete" ), Resource::loadIconSet( "trash" ), |
135 | QString::null, 0, this, 0 ); | 139 | QString::null, 0, this, 0 ); |
136 | connect( a, SIGNAL( activated() ), | 140 | connect( a, SIGNAL( activated() ), |
@@ -326,7 +330,7 @@ void TodoWindow::setCategory( int c ) | |||
326 | catMenu->setItemChecked( i, c == (int)i ); | 330 | catMenu->setItemChecked( i, c == (int)i ); |
327 | if ( c == 1 ) { | 331 | if ( c == 1 ) { |
328 | table->setShowCategory( QString::null ); | 332 | table->setShowCategory( QString::null ); |
329 | setCaption( tr("Todo") + " - " + tr( "All" ) ); | 333 | setCaption( tr("Todo") + " - " + tr( "All Categories" ) ); |
330 | } else if ( c == (int)catMenu->count() - 1 ) { | 334 | } else if ( c == (int)catMenu->count() - 1 ) { |
331 | table->setShowCategory( tr( "Unfiled" ) ); | 335 | table->setShowCategory( tr( "Unfiled" ) ); |
332 | setCaption( tr("Todo") + " - " + tr( "Unfiled" ) ); | 336 | setCaption( tr("Todo") + " - " + tr( "Unfiled" ) ); |
@@ -348,7 +352,7 @@ void TodoWindow::populateCategories() | |||
348 | int id, | 352 | int id, |
349 | rememberId; | 353 | rememberId; |
350 | id = 1; | 354 | id = 1; |
351 | catMenu->insertItem( tr( "All" ), id++ ); | 355 | catMenu->insertItem( tr( "All Categories" ), id++ ); |
352 | // catMenu->insertSeparator(); | 356 | // catMenu->insertSeparator(); |
353 | QStringList categories = table->categories(); | 357 | QStringList categories = table->categories(); |
354 | categories.append( tr( "Unfiled" ) ); | 358 | 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 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org> | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 3 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 4 | ** |
4 | ** This file is part of Qtopia Environment. | 5 | ** This file is part of Qtopia and Opi Environment. |
5 | ** | 6 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 7 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 8 | ** 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() | |||
133 | void NewTaskDialog::accept() | 133 | void NewTaskDialog::accept() |
134 | { | 134 | { |
135 | QString strText = txtTodo->text(); | 135 | QString strText = txtTodo->text(); |
136 | if ( !strText || strText == "") { | 136 | if ( strText.isEmpty() ) { |
137 | // hmm... just decline it then, the user obviously didn't care about it | 137 | // hmm... just decline it then, the user obviously didn't care about it |
138 | QDialog::reject(); | 138 | QDialog::reject(); |
139 | return; | 139 | 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 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += qte warn_on release | 2 | CONFIG += qte warn_on release |
3 | HEADERS = $(OPIEDIR)/include/opie/xmltree.h | 3 | HEADERS = $(OPIEDIR)/include/opie/xmltree.h |
4 | SOURCES = xmltree.cc tododb.cpp todoevent.cpp | 4 | SOURCES = xmltree.cc tododb.cpp todoevent.cpp todovcalresource.cpp |
5 | TARGET = opie | 5 | TARGET = opie |
6 | INCLUDEPATH += $(OPIEDIR)/include | 6 | INCLUDEPATH += $(OPIEDIR)/include |
7 | DESTDIR = $(QTDIR)/lib$(PROJMAK) | 7 | 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 ){ | |||
138 | m_res = res; | 138 | m_res = res; |
139 | load(); | 139 | load(); |
140 | } | 140 | } |
141 | ToDoResource* ToDoDB::resource(){ | ||
142 | return m_res; | ||
143 | }; | ||
144 | void ToDoDB::setResource( ToDoResource *res ) | ||
145 | { | ||
146 | delete m_res; | ||
147 | m_res = res; | ||
148 | } | ||
141 | ToDoDB::~ToDoDB() | 149 | ToDoDB::~ToDoDB() |
142 | { | 150 | { |
143 | delete m_res; | 151 | 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 @@ | |||
1 | 1 | ||
2 | #include <opie/todoevent.h> | 2 | #include <opie/todoevent.h> |
3 | #include <qpe/palmtopuidgen.h> | 3 | #include <qpe/palmtopuidgen.h> |
4 | #include <qpe/stringutil.h> | ||
5 | //#include <qpe/palmtoprecord.h> | ||
4 | 6 | ||
5 | ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, | 7 | ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, |
6 | const QString &description, bool hasDate, QDate date, int uid ) | 8 | const QString &description, bool hasDate, QDate date, int uid ) |
@@ -11,7 +13,7 @@ ToDoEvent::ToDoEvent(bool completed, int priority, const QString &category, | |||
11 | m_hasDate = hasDate; | 13 | m_hasDate = hasDate; |
12 | m_priority = priority; | 14 | m_priority = priority; |
13 | m_category = category; | 15 | m_category = category; |
14 | m_desc = description; | 16 | m_desc = Qtopia::simplifyMultiLineSpace(description ); |
15 | if (uid == -1 ) { | 17 | if (uid == -1 ) { |
16 | Qtopia::UidGen *uidgen = new Qtopia::UidGen(); | 18 | Qtopia::UidGen *uidgen = new Qtopia::UidGen(); |
17 | uid = uidgen->generate(); | 19 | uid = uidgen->generate(); |
@@ -53,7 +55,7 @@ void ToDoEvent::setHasDate( bool hasDate ) | |||
53 | } | 55 | } |
54 | void ToDoEvent::setDescription(const QString &desc ) | 56 | void ToDoEvent::setDescription(const QString &desc ) |
55 | { | 57 | { |
56 | m_desc = desc; | 58 | m_desc = Qtopia::simplifyMultiLineSpace(desc ); |
57 | } | 59 | } |
58 | void ToDoEvent::setCategory( const QString &cat ) | 60 | void ToDoEvent::setCategory( const QString &cat ) |
59 | { | 61 | { |
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 @@ | |||
1 | /* | ||
2 | =. This file is part of the OPIE Project | ||
3 | .=l. Copyright (c) 2002 Holger Freyther <freyther@kde.org> | ||
4 | .>+-= the use of vobject was inspired by libkcal | ||
5 | _;:, .> :=|. This library is free software; you can | ||
6 | .> <`_, > . <= redistribute it and/or modify it under | ||
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | ||
8 | .="- .-=="i, .._ License as published by the Free Software | ||
9 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
10 | ._= =} : or (at your option) any later version. | ||
11 | .%`+i> _;_. | ||
12 | .i_,=:_. -<s. This library is distributed in the hope that | ||
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
14 | : .. .:, . . . without even the implied warranty of | ||
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | ||
17 | ..}^=.= = ; Library General Public License for more | ||
18 | ++= -. .` .: details. | ||
19 | : = ...= . :.=- | ||
20 | -. .:....=;==+<; You should have received a copy of the GNU | ||
21 | -_. . . )=. = Library General Public License along with | ||
22 | -- :-=` this library; see the file COPYING.LIB. | ||
23 | If not, write to the Free Software Foundation, | ||
24 | Inc., 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | |||
27 | */ | ||
28 | |||
29 | #include <qfile.h> | ||
30 | #include <qvaluelist.h> | ||
31 | #include <opie/todoevent.h> | ||
32 | #include <opie/todovcalresource.h> | ||
33 | |||
34 | #include "../library/backend/vobject_p.h" | ||
35 | #include "../library/backend/timeconversion.h" | ||
36 | #include "../library/backend/qfiledirect_p.h" | ||
37 | |||
38 | static VObject *vobjByEvent( const ToDoEvent &event ) | ||
39 | { | ||
40 | VObject *task = newVObject( VCTodoProp ); | ||
41 | if( task == 0 ) | ||
42 | return 0l; | ||
43 | if( event.hasDate() ) | ||
44 | addPropValue( task, VCDueProp, TimeConversion::toISO8601( event.date() ) ); | ||
45 | |||
46 | if( event.isCompleted() ) | ||
47 | addPropValue( task, VCStatusProp, "COMPLETED"); | ||
48 | |||
49 | QString string = QString::number(event.priority() ); | ||
50 | addPropValue( task, VCPriorityProp, string.local8Bit() ); | ||
51 | addPropValue( task, VCCategoriesProp, event.category().local8Bit() ); | ||
52 | addPropValue( task, VCDescriptionProp, event.description().local8Bit() ); | ||
53 | addPropValue( task, VCSummaryProp, event.description().left(15).local8Bit() ); | ||
54 | return task; | ||
55 | }; | ||
56 | |||
57 | static ToDoEvent eventByVObj( VObject *obj ){ | ||
58 | ToDoEvent event; | ||
59 | VObject *ob; | ||
60 | QCString name; | ||
61 | // no uid, attendees, ... and no fun | ||
62 | // description | ||
63 | if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){ | ||
64 | name = vObjectStringZValue( ob ); | ||
65 | event.setDescription( name ); | ||
66 | } | ||
67 | // completed | ||
68 | if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){ | ||
69 | name = vObjectStringZValue( ob ); | ||
70 | if( name == "COMPLETED" ){ | ||
71 | event.setCompleted( true ); | ||
72 | }else{ | ||
73 | event.setCompleted( false ); | ||
74 | } | ||
75 | }else | ||
76 | event.setCompleted( false ); | ||
77 | // priority | ||
78 | if ((ob = isAPropertyOf(obj, VCPriorityProp))) { | ||
79 | name = vObjectStringZValue( ob ); | ||
80 | bool ok; | ||
81 | event.setPriority(name.toInt(&ok) ); | ||
82 | } | ||
83 | //due date | ||
84 | if((ob = isAPropertyOf(obj, VCDueProp)) ){ | ||
85 | event.setHasDate( true ); | ||
86 | name = vObjectStringZValue( ob ); | ||
87 | event.setDate( TimeConversion::fromISO8601( name).date() ); | ||
88 | } | ||
89 | // categories | ||
90 | if((ob = isAPropertyOf( obj, VCCategoriesProp )) != 0 ){ | ||
91 | name = vObjectStringZValue( ob ); | ||
92 | qWarning("Categories:%s", name.data() ); | ||
93 | } | ||
94 | |||
95 | return event; | ||
96 | }; | ||
97 | |||
98 | |||
99 | QValueList<ToDoEvent> ToDoVCalResource::load(const QString &file) | ||
100 | { | ||
101 | QValueList<ToDoEvent> events; | ||
102 | VObject *vcal = 0l; | ||
103 | vcal = Parse_MIME_FromFileName( (char *)file.utf8().data() ); // from vobject | ||
104 | if(!vcal ) | ||
105 | return events; | ||
106 | // start parsing | ||
107 | |||
108 | VObjectIterator it; | ||
109 | VObject *vobj; | ||
110 | initPropIterator(&it, vcal); | ||
111 | |||
112 | while( moreIteration( &it ) ) { | ||
113 | vobj = ::nextVObject( &it ); | ||
114 | QCString name = ::vObjectName( vobj ); | ||
115 | //QCString objVal = ::vObjectStringZValue( vobj ); | ||
116 | // let's find out the type | ||
117 | if( name == VCTodoProp ){ | ||
118 | events.append( eventByVObj( vobj ) ); | ||
119 | |||
120 | } // parse the value | ||
121 | } | ||
122 | return events; | ||
123 | } | ||
124 | bool ToDoVCalResource::save(const QString &fileName, const QValueList<ToDoEvent>&list ) | ||
125 | { | ||
126 | QFileDirect file ( fileName ); | ||
127 | if(!file.open(IO_WriteOnly ) ) | ||
128 | return false; | ||
129 | // obj | ||
130 | VObject *obj; | ||
131 | obj = newVObject( VCCalProp ); | ||
132 | addPropValue( obj, VCVersionProp, "1.0" ); | ||
133 | VObject *vo; | ||
134 | for(QValueList<ToDoEvent>::ConstIterator it = list.begin(); it != list.end(); ++it ){ | ||
135 | vo = vobjByEvent( (*it) ); | ||
136 | addVObjectProp(obj, vo ); | ||
137 | } | ||
138 | writeVObject( file.directHandle(), obj ); | ||
139 | cleanVObject( obj ); | ||
140 | cleanStrTbl(); | ||
141 | |||
142 | return true; | ||
143 | } | ||
144 | |||
145 | |||
146 | |||
147 | |||
148 | |||
149 | |||
150 | |||
151 | |||
152 | |||
153 | |||