summaryrefslogtreecommitdiff
path: root/libopie/pim
Side-by-side diff
Diffstat (limited to 'libopie/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/obackendfactory.h12
-rw-r--r--libopie/pim/ocontact.cpp253
-rw-r--r--libopie/pim/ocontact.h9
-rw-r--r--libopie/pim/ocontactaccess.h11
-rw-r--r--libopie/pim/ocontactaccessbackend.h14
-rw-r--r--libopie/pim/ocontactaccessbackend_vcard.cpp22
-rw-r--r--libopie/pim/ocontactaccessbackend_xml.cpp3
-rw-r--r--libopie/pim/oconversion.h5
-rw-r--r--libopie/pim/odatebookaccessbackend.h4
-rw-r--r--libopie/pim/odatebookaccessbackend_xml.cpp6
-rw-r--r--libopie/pim/opimaccessbackend.h4
-rw-r--r--libopie/pim/opimaccesstemplate.h4
-rw-r--r--libopie/pim/opimcache.h6
-rw-r--r--libopie/pim/opimmainwindow.cpp14
-rw-r--r--libopie/pim/opimxrefmanager.h2
-rw-r--r--libopie/pim/orecordlist.h12
-rw-r--r--libopie/pim/otemplatebase.h7
-rw-r--r--libopie/pim/otodo.cpp16
-rw-r--r--libopie/pim/otodo.h9
-rw-r--r--libopie/pim/otodoaccessbackend.h4
-rw-r--r--libopie/pim/otodoaccessvcal.cpp26
-rw-r--r--libopie/pim/otodoaccessxml.cpp6
22 files changed, 327 insertions, 122 deletions
diff --git a/libopie/pim/obackendfactory.h b/libopie/pim/obackendfactory.h
index ad6cf5a..f3c339d 100644
--- a/libopie/pim/obackendfactory.h
+++ b/libopie/pim/obackendfactory.h
@@ -15,8 +15,16 @@
* Version: $Id$
* =====================================================================
* History:
* $Log$
+ * Revision 1.7 2003/08/01 12:30:16 eilers
+ * Merging changes from BRANCH_1_0 to HEAD
+ *
+ * Revision 1.6.4.1 2003/06/30 14:34:19 eilers
+ * Patches from Zecke:
+ * Fixing and cleaning up extraMap handling
+ * Adding d_ptr for binary compatibility in the future
+ *
* Revision 1.6 2003/04/13 18:07:10 zecke
* More API doc
* QString -> const QString&
* QString = 0l -> QString::null
@@ -67,8 +75,10 @@
#ifdef __USE_SQL
#include "otodoaccesssql.h"
#endif
+class OBackendPrivate;
+
/**
* This class is our factory. It will give us the default implementations
* of at least Todolist, Contacts and Datebook. In the future this class will
* allow users to switch the backend with ( XML->SQLite ) without the need
@@ -147,8 +157,10 @@ class OBackendFactory
}
}
+ private:
+ OBackendPrivate* d;
};
#endif
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index be4ce0a..3473baa 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -20,12 +20,13 @@
#define QTOPIA_INTERNAL_CONTACT_MRE
#include "ocontact.h"
#include "opimresolver.h"
+#include "oconversion.h"
#include <qpe/stringutil.h>
-#include "oconversion.h"
#include <qpe/timestring.h>
+#include <qpe/config.h>
#include <qobject.h>
#include <qregexp.h>
#include <qstylesheet.h>
@@ -437,14 +438,18 @@ QString OContact::toRichText() const
QString value, comp, state;
QString str;
bool marker = false;
+ Config cfg("qpe");
+ cfg.setGroup("Appearance");
+ int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
+
// name, jobtitle and company
if ( !(value = fullName()).isEmpty() )
- text += "<b><h3><img src=\"addressbook/AddressBook\">" + Qtopia::escapeString(value) + "</h3></b>";
-
+ text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>";
+
if ( !(value = jobTitle()).isEmpty() )
- text += Qtopia::escapeString(value) + "<br>";
+ text += Qtopia::escapeString(value);
comp = company();
if ( !(value = department()).isEmpty() ) {
text += Qtopia::escapeString(value);
@@ -453,188 +458,256 @@ QString OContact::toRichText() const
else
text += "<br>";
}
if ( !comp.isEmpty() )
- text += Qtopia::escapeString(comp) + "<br>";
+ text += Qtopia::escapeString(comp);
- text += "<hr><br>";
+ text += "<br><hr>";
// defailt email
QString defEmail = defaultEmail();
- if ( !defEmail.isEmpty() )
- text += "<b><img src=\"addressbook/email\">" + QObject::tr("Default Email: ") + "</b>"
- + Qtopia::escapeString(defEmail) + "<br>";
-
- text += "<br>";
+ if ( !defEmail.isEmpty() ){
+ text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>"
+ + Qtopia::escapeString(defEmail);
+ marker = true;
+ }
// business address
if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
!businessZip().isEmpty() || !businessCountry().isEmpty() ) {
- text += QObject::tr( "<b>Work Address:</b>" );
- text += "<br>";
+ text += QObject::tr( "<br><br><b>Work Address:</b>" );
marker = true;
}
- if ( !(value = businessStreet()).isEmpty() )
- text += Qtopia::escapeString(value) + "<br>";
- state = businessState();
- if ( !(value = businessZip()).isEmpty() )
- text += Qtopia::escapeString(value) + " ";
- if ( !(value = businessCity()).isEmpty() ) {
- text += Qtopia::escapeString(value);
- if ( state )
- text += ", " + Qtopia::escapeString(state);
- text += "<br>";
- } else if ( !state.isEmpty() )
- text += Qtopia::escapeString(state) + "<br>";
+ if ( !(value = businessStreet()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value);
+ marker = true;
+ }
+
+ switch( addressformat ){
+ case Zip_City_State:{ // Zip_Code City, State
+ state = businessState();
+ if ( !(value = businessZip()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value) + " ";
+ marker = true;
+
+ } else
+ text += "<br>";
+
+ if ( !(value = businessCity()).isEmpty() ) {
+ marker = true;
+ text += Qtopia::escapeString(value);
+ if ( state )
+ text += ", " + Qtopia::escapeString(state);
+ } else if ( !state.isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(state);
+ marker = true;
+ }
+ break;
+ }
+ case City_State_Zip:{ // City, State Zip_Code
+ state = businessState();
+ if ( !(value = businessCity()).isEmpty() ) {
+ marker = true;
+ text += "<br>" + Qtopia::escapeString(value);
+ if ( state )
+ text += ", " + Qtopia::escapeString(state);
+ } else if ( !state.isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(state);
+ marker = true;
+ }
+ if ( !(value = businessZip()).isEmpty() ){
+ text += " " + Qtopia::escapeString(value);
+ marker = true;
+ }
+ break;
+ }
+ }
- if ( !(value = businessCountry()).isEmpty() )
- text += Qtopia::escapeString(value) + "<br>";
+ if ( !(value = businessCountry()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value);
+ marker = true;
+ }
// rest of Business data
str = office();
if ( !str.isEmpty() ){
- text += "<b>" + QObject::tr("Office: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Office: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = businessWebpage();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/webpagework\">" + QObject::tr("Business Web Page: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = businessPhone();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/phonework\">" + QObject::tr("Business Phone: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = businessFax();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/faxwork\">" + QObject::tr("Business Fax: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = businessMobile();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/mobilework\">" + QObject::tr("Business Mobile: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = businessPager();
if ( !str.isEmpty() ){
- text += "<b>" + QObject::tr("Business Pager: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
text += "<br>";
// home address
if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
!homeZip().isEmpty() || !homeCountry().isEmpty() ) {
- text += QObject::tr( "<b>Home Address:</b>" );
- text += "<br>";
+ text += QObject::tr( "<br><br><b>Home Address:</b>" );
+ marker = true;
}
- if ( !(value = homeStreet()).isEmpty() )
- text += Qtopia::escapeString(value) + "<br>";
- state = homeState();
- if ( !(value = homeZip()).isEmpty() )
- text += Qtopia::escapeString(value) + " ";
- if ( !(value = homeCity()).isEmpty() ) {
- text += Qtopia::escapeString(value);
- if ( !state.isEmpty() )
- text += ", " + Qtopia::escapeString(state);
- text += "<br>";
- } else if (!state.isEmpty())
- text += Qtopia::escapeString(state) + "<br>";
- if ( !(value = homeCountry()).isEmpty() )
- text += Qtopia::escapeString(value) + "<br>";
+ if ( !(value = homeStreet()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value);
+ marker = true;
+ }
+
+ switch( addressformat ){
+ case Zip_City_State:{ // Zip_Code City, State
+ state = homeState();
+ if ( !(value = homeZip()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value) + " ";
+ marker = true;
+ } else
+ text += "<br>";
+
+ if ( !(value = homeCity()).isEmpty() ) {
+ marker = true;
+ text += Qtopia::escapeString(value);
+ if ( !state.isEmpty() )
+ text += ", " + Qtopia::escapeString(state);
+ } else if (!state.isEmpty()) {
+ text += "<br>" + Qtopia::escapeString(state);
+ marker = true;
+ }
+ break;
+ }
+ case City_State_Zip:{ // City, State Zip_Code
+ state = homeState();
+ if ( !(value = homeCity()).isEmpty() ) {
+ marker = true;
+ text += "<br>" + Qtopia::escapeString(value);
+ if ( state )
+ text += ", " + Qtopia::escapeString(state);
+ } else if ( !state.isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(state);
+ marker = true;
+ }
+ if ( !(value = homeZip()).isEmpty() ){
+ text += " " + Qtopia::escapeString(value);
+ marker = true;
+ }
+ break;
+ }
+ }
+
+ if ( !(value = homeCountry()).isEmpty() ){
+ text += "<br>" + Qtopia::escapeString(value);
+ marker = true;
+ }
// rest of Home data
str = homeWebpage();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/webpagehome\">" + QObject::tr("Home Web Page: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = homePhone();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/phonehome\">" + QObject::tr("Home Phone: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = homeFax();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/faxhome\">" + QObject::tr("Home Fax: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
str = homeMobile();
if ( !str.isEmpty() ){
- text += "<b><img src=\"addressbook/mobilehome\">" + QObject::tr("Home Mobile: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>"
+ + Qtopia::escapeString(str);
marker = true;
}
if ( marker )
- text += "<br><hr><br>";
- // the others...
+ text += "<br><hr>";
+
+ // the rest...
str = emails();
if ( !str.isEmpty() && ( str != defEmail ) )
- text += "<b>" + QObject::tr("All Emails: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("All Emails: ") + "</b>"
+ + Qtopia::escapeString(str);
str = profession();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Profession: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Profession: ") + "</b>"
+ + Qtopia::escapeString(str);
str = assistant();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Assistant: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Assistant: ") + "</b>"
+ + Qtopia::escapeString(str);
str = manager();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Manager: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Manager: ") + "</b>"
+ + Qtopia::escapeString(str);
str = gender();
if ( !str.isEmpty() && str.toInt() != 0 ) {
- if ( str.toInt() == 1 )
- str = QObject::tr( "Male" );
- else if ( str.toInt() == 2 )
- str = QObject::tr( "Female" );
- text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>";
+ text += "<br>";
+ if ( str.toInt() == 1 )
+ str = QObject::tr( "Male" );
+ else if ( str.toInt() == 2 )
+ str = QObject::tr( "Female" );
+ text += "<b>" + QObject::tr("Gender: ") + "</b>" + str;
}
str = spouse();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Spouse: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Spouse: ") + "</b>"
+ + Qtopia::escapeString(str);
if ( birthday().isValid() ){
str = TimeString::numberDateString( birthday() );
- text += "<b>" + QObject::tr("Birthday: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Birthday: ") + "</b>"
+ + Qtopia::escapeString(str);
}
if ( anniversary().isValid() ){
str = TimeString::numberDateString( anniversary() );
- text += "<b>" + QObject::tr("Anniversary: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>"
+ + Qtopia::escapeString(str);
}
str = children();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Children: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Children: ") + "</b>"
+ + Qtopia::escapeString(str);
str = nickname();
if ( !str.isEmpty() )
- text += "<b>" + QObject::tr("Nickname: ") + "</b>"
- + Qtopia::escapeString(str) + "<br>";
+ text += "<br><b>" + QObject::tr("Nickname: ") + "</b>"
+ + Qtopia::escapeString(str);
// categories
if ( categoryNames("Contacts").count() ){
- text += "<b>" + QObject::tr( "Category:") + "</b> ";
+ text += "<br><b>" + QObject::tr( "Category:") + "</b> ";
text += categoryNames("Contacts").join(", ");
- text += "<br>";
}
// notes last
if ( !(value = notes()).isEmpty() ) {
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h
index dd2de17..9a1a8dc 100644
--- a/libopie/pim/ocontact.h
+++ b/libopie/pim/ocontact.h
@@ -31,9 +31,9 @@
QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
// MOC_SKIP_END
#endif
-class ContactPrivate;
+class OContactPrivate;
/**
* OContact class represents a specialised PIM Record for contacts.
* It does store all kind of persopn related information.
@@ -48,8 +48,13 @@ public:
OContact();
OContact( const QMap<int, QString> &fromMap );
virtual ~OContact();
+ enum DateFormat{
+ Zip_City_State = 0,
+ City_State_Zip
+ };
+
/*
* do we need to inline them
* if yes do we need to inline them this way?
* -zecke
@@ -232,9 +237,9 @@ private:
const QString &zip,
const QString &country ) const;
QMap<int, QString> mMap;
- ContactPrivate *d;
+ OContactPrivate *d;
};
#endif
diff --git a/libopie/pim/ocontactaccess.h b/libopie/pim/ocontactaccess.h
index e90db32..9b0a719 100644
--- a/libopie/pim/ocontactaccess.h
+++ b/libopie/pim/ocontactaccess.h
@@ -16,8 +16,16 @@
* Version: $Id$
* =====================================================================
* History:
* $Log$
+ * Revision 1.9 2003/08/01 12:30:16 eilers
+ * Merging changes from BRANCH_1_0 to HEAD
+ *
+ * Revision 1.8.2.1 2003/06/30 14:34:19 eilers
+ * Patches from Zecke:
+ * Fixing and cleaning up extraMap handling
+ * Adding d_ptr for binary compatibility in the future
+ *
* Revision 1.8 2003/05/08 13:55:09 tille
* search stuff
* and match, toRichText & toShortText in oevent
*
@@ -164,7 +172,10 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
private slots:
void copMessage( const QCString &msg, const QByteArray &data );
+ private:
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/pim/ocontactaccessbackend.h b/libopie/pim/ocontactaccessbackend.h
index ebeb42d..280e05c 100644
--- a/libopie/pim/ocontactaccessbackend.h
+++ b/libopie/pim/ocontactaccessbackend.h
@@ -18,8 +18,16 @@
* Version: $Id$
* =====================================================================
* History:
* $Log$
+ * Revision 1.6 2003/08/01 12:30:16 eilers
+ * Merging changes from BRANCH_1_0 to HEAD
+ *
+ * Revision 1.5.4.1 2003/06/30 14:34:19 eilers
+ * Patches from Zecke:
+ * Fixing and cleaning up extraMap handling
+ * Adding d_ptr for binary compatibility in the future
+ *
* Revision 1.5 2003/04/13 18:07:10 zecke
* More API doc
* QString -> const QString&
* QString = 0l -> QString::null
@@ -101,7 +109,11 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
* FIXME!!!
* Returns a sorted list of records either ascendinf or descending for a giving criteria and category
*/
virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
-
+
+
+private:
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/pim/ocontactaccessbackend_vcard.cpp b/libopie/pim/ocontactaccessbackend_vcard.cpp
index 270bef3..b60c5be 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.cpp
+++ b/libopie/pim/ocontactaccessbackend_vcard.cpp
@@ -16,8 +16,23 @@
* Version: $Id$
* =====================================================================
* History:
* $Log$
+ * Revision 1.11 2003/08/01 12:30:16 eilers
+ * Merging changes from BRANCH_1_0 to HEAD
+ *
+ * Revision 1.10.4.3 2003/07/23 08:54:37 eilers
+ * Default email was added to the list of all emails, which already contains
+ * the default email..
+ * This closes bug #1045
+ *
+ * Revision 1.10.4.2 2003/07/23 08:44:45 eilers
+ * Importing of Notes in vcard files wasn't implemented.
+ * Closes bug #1044
+ *
+ * Revision 1.10.4.1 2003/06/02 13:37:49 eilers
+ * Fixing memory leak
+ *
* Revision 1.10 2003/04/13 18:07:10 zecke
* More API doc
* QString -> const QString&
* QString = 0l -> QString::null
@@ -150,8 +165,9 @@ bool OContactAccessBackend_VCard::save()
writeVObject( file.directHandle() , vo );
cleanVObject( vo );
}
cleanStrTbl();
+ deleteVObject( obj );
m_dirty = false;
return true;
@@ -445,9 +461,11 @@ OContact OContactAccessBackend_VCard::parseVObject( VObject *obj )
// Reading Birthdate regarding RFC 2425 (5.8.4)
c.setBirthday( convVCardDateToDate( value ) );
}
-
+ else if ( name == VCCommentProp ) {
+ c.setNotes( value );
+ }
#if 0
else {
printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) );
VObjectIterator nit;
@@ -533,9 +551,9 @@ VObject* OContactAccessBackend_VCard::createVObject( const OContact &c )
safeAddProp( title, VCWorkProp );
QStringList emails = c.emailList();
- emails.prepend( c.defaultEmail() );
+ // emails.prepend( c.defaultEmail() ); Fix for bugreport #1045
for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it );
safeAddProp( email, VCInternetProp );
}
diff --git a/libopie/pim/ocontactaccessbackend_xml.cpp b/libopie/pim/ocontactaccessbackend_xml.cpp
index 097142b..1c21619 100644
--- a/libopie/pim/ocontactaccessbackend_xml.cpp
+++ b/libopie/pim/ocontactaccessbackend_xml.cpp
@@ -16,8 +16,11 @@
* Version: $Id$
* =====================================================================
* History:
* $Log$
+ * Revision 1.7 2003/08/01 12:30:16 eilers
+ * Merging changes from BRANCH_1_0 to HEAD
+ *
* Revision 1.6 2003/07/07 16:19:47 eilers
* Fixing serious bug in hasQuerySettings()
*
* Revision 1.5 2003/04/13 18:07:10 zecke
diff --git a/libopie/pim/oconversion.h b/libopie/pim/oconversion.h
index 13367e1..4c0a497 100644
--- a/libopie/pim/oconversion.h
+++ b/libopie/pim/oconversion.h
@@ -36,8 +36,13 @@ public:
* DDMMYYYYHHMMSS is the simple format
*/
static QString dateTimeToString( const QDateTime& );
static QDateTime dateTimeFromString( const QString& );
+
+private:
+ class Private;
+ Private* d;
+
};
#endif // __oconversion_h__
diff --git a/libopie/pim/odatebookaccessbackend.h b/libopie/pim/odatebookaccessbackend.h
index 86ff298..3c02c42 100644
--- a/libopie/pim/odatebookaccessbackend.h
+++ b/libopie/pim/odatebookaccessbackend.h
@@ -67,7 +67,11 @@ public:
* @see effecticeEvents
*/
virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start );
+private:
+ class Private;
+ Private *d;
+
};
#endif
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp
index ab2eea4..5ea945c 100644
--- a/libopie/pim/odatebookaccessbackend_xml.cpp
+++ b/libopie/pim/odatebookaccessbackend_xml.cpp
@@ -429,11 +429,11 @@ bool ODateBookAccessBackend_XML::loadFile() {
* add key + value
*/
find = dict[attr.data()];
if (!find)
- ev.setCustomField( attr, value );
+ ev.setCustomField( attr, str );
else {
- setField( ev, *find, value );
+ setField( ev, *find, str );
}
}
/* time to finalize */
finalizeRecord( ev );
@@ -452,9 +452,9 @@ void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) {
ev.setEndDateTime ( utc.fromUTCDateTime( end ) );
ev.setTimeZone( "UTC"); // make sure it is really utc
}else {
/* to current date time */
- qWarning(" Start is %d", start );
+ // qWarning(" Start is %d", start );
OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() );
QDateTime date = zone.toDateTime( start );
qWarning(" Start is %s", date.toString().latin1() );
ev.setStartDateTime( zone.toDateTime( date, OTimeZone::current() ) );
diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h
index f4bbe35..c3d91f7 100644
--- a/libopie/pim/opimaccessbackend.h
+++ b/libopie/pim/opimaccessbackend.h
@@ -6,8 +6,9 @@
#include <opie/otemplatebase.h>
#include <opie/opimrecord.h>
+class OPimAccessBackendPrivate;
/**
* OPimAccessBackend is the base class
* for all private backends
* it operates on OPimRecord as the base class
@@ -106,10 +107,9 @@ protected:
uint readAhead()const;
private:
- class Private;
- Private* d;
+ OPimAccessBackendPrivate *d;
Frontend* m_front;
uint m_read;
int m_acc;
diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h
index 8ff205c..ecbeb68 100644
--- a/libopie/pim/opimaccesstemplate.h
+++ b/libopie/pim/opimaccesstemplate.h
@@ -9,8 +9,9 @@
#include "opimcache.h"
#include "otemplatebase.h"
+class OPimAccessTemplatePrivate;
/**
* Thats the frontend to our OPIE PIM
* Library. Either you want to use it's
* interface or you want to implement
@@ -151,8 +152,11 @@ protected:
BackEnd* backEnd();
BackEnd* m_backEnd;
Cache m_cache;
+private:
+ OPimAccessTemplatePrivate *d;
+
};
template <class T>
OPimAccessTemplate<T>::OPimAccessTemplate( BackEnd* end )
diff --git a/libopie/pim/opimcache.h b/libopie/pim/opimcache.h
index 73414e5..7f7cff5 100644
--- a/libopie/pim/opimcache.h
+++ b/libopie/pim/opimcache.h
@@ -4,8 +4,10 @@
#include <qintcache.h>
#include "opimrecord.h"
+class OPimCacheItemPrivate;
+
template <class T = OPimRecord>
class OPimCacheItem {
public:
OPimCacheItem( const T& t = T() );
@@ -17,10 +19,13 @@ public:
T record()const;
void setRecord( const T& );
private:
T m_t;
+ OPimCacheItemPrivate *d;
};
+
+class OPimCachePrivate;
/**
* OPimCache for caching the items
* We support adding, removing
* and finding
@@ -45,8 +50,9 @@ public:
void replace( const T& );
private:
QIntCache<Item> m_cache;
+ OPimCachePrivate* d;
};
// Implementation
template <class T>
diff --git a/libopie/pim/opimmainwindow.cpp b/libopie/pim/opimmainwindow.cpp
index 4044bc1..2739e26 100644
--- a/libopie/pim/opimmainwindow.cpp
+++ b/libopie/pim/opimmainwindow.cpp
@@ -3,8 +3,9 @@
#include <qcopchannel_qws.h>
#include <qpe/sound.h>
#include <qpe/qcopenvelope_qws.h>
+#include <qpe/qpeapplication.h>
#include "opimresolver.h"
#include "opimmainwindow.h"
@@ -37,32 +38,39 @@ QCopChannel* OPimMainWindow::channel() {
void OPimMainWindow::doSetDocument( const QString& ) {
}
void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) {
+ bool needShow = false;
/*
* create demands to create
* a new record...
*/
QDataStream stream(array, IO_ReadOnly);
if ( cmd == "create()" ) {
+ raise();
int uid = create();
QCopEnvelope e(m_str, "created(int)" );
e << uid;
+ needShow = true;
}else if ( cmd == "remove(int)" ) {
int uid;
stream >> uid;
bool rem = remove( uid );
QCopEnvelope e(m_str, "removed(bool)" );
e << rem;
+ needShow = true;
}else if ( cmd == "beam(int)" ) {
int uid;
stream >> uid;
beam( uid);
}else if ( cmd == "show(int)" ) {
+ raise();
int uid;
stream >> uid;
show( uid );
+ needShow = true;
}else if ( cmd == "edit(int)" ) {
+ raise();
int uid;
stream >> uid;
edit( uid );
}else if ( cmd == "add(int,QByteArray)" ) {
@@ -74,18 +82,22 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
if (!m_fallBack) return;
add( *m_fallBack );
delete m_fallBack;
}else if ( cmd == "alarm(QDateTime,int)" ) {
+ raise();
QDateTime dt; int uid;
stream >> dt;
stream >> uid;
qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid );
QDateTime current = QDateTime::currentDateTime();
if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() )
return;
doAlarm( dt, uid );
-
+ needShow = true;
}
+
+ if (needShow )
+ QPEApplication::setKeepRunning();
}
/* implement the url scripting here */
void OPimMainWindow::setDocument( const QString& str) {
doSetDocument( str );
diff --git a/libopie/pim/opimxrefmanager.h b/libopie/pim/opimxrefmanager.h
index 39e5eef..c485e98 100644
--- a/libopie/pim/opimxrefmanager.h
+++ b/libopie/pim/opimxrefmanager.h
@@ -35,7 +35,9 @@ public:
OPimXRef::ValueList list( int uid )const;
private:
OPimXRef::ValueList m_list;
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index edcd729..5211f57 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -6,8 +6,9 @@
#include "otemplatebase.h"
#include "opimrecord.h"
+class ORecordListIteratorPrivate;
/**
* Our List Iterator
* it behaves like STL or Qt
*
@@ -70,11 +71,12 @@ private:
T m_record;
bool m_direction :1;
/* d pointer for future versions */
- class IteratorPrivate;
- IteratorPrivate *d;
+ ORecordListIteratorPrivate *d;
};
+
+class ORecordListPrivate;
/**
* The recordlist used as a return type
* from OPimAccessTemplate
*/
@@ -110,9 +112,9 @@ ORecordList( const QArray<int>& ids,
T operator[]( uint i );
int uidAt(uint i );
- /**
+ /**
* Remove the contact with given uid
*/
bool remove( int uid );
@@ -122,8 +124,9 @@ ORecordList( const QArray<int>& ids,
*/
private:
QArray<int> m_ids;
const Base* m_acc;
+ ORecordListPrivate *d;
};
/* ok now implement it */
template <class T>
@@ -219,8 +222,11 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
const Base* t )
: m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ),
m_direction( false )
{
+ /* if the list is empty we're already at the end of the list */
+ if (uids.count() == 0 )
+ m_end = true;
}
template <class T>
uint ORecordListIterator<T>::current()const {
return m_current;
diff --git a/libopie/pim/otemplatebase.h b/libopie/pim/otemplatebase.h
index 29fb6ec..cadac74 100644
--- a/libopie/pim/otemplatebase.h
+++ b/libopie/pim/otemplatebase.h
@@ -13,8 +13,9 @@
* to have a common base class
* You may not want to use that interface internaly
* POOR mans interface
*/
+class OPimBasePrivate;
struct OPimBase {
/**
* return the rtti
*/
@@ -31,14 +32,17 @@ struct OPimBase {
/*
* ADD editing here?
* -zecke
*/
+private:
+ OPimBasePrivate* d;
};
/**
* internal template base
* T needs to implement the copy c'tor!!!
*/
+class OTemplateBasePrivate;
template <class T = OPimRecord>
class OTemplateBase : public OPimBase {
public:
enum CacheDirection { Forward=0, Reverse };
@@ -60,8 +64,11 @@ public:
int rtti();
OPimRecord* record()const;
OPimRecord* record(int uid )const;
static T* rec();
+
+private:
+ OTemplateBasePrivate *d;
};
/*
* implementation
diff --git a/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index 38b93f7..5a18c37 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -27,8 +27,13 @@ struct OTodo::OTodoData : public QShared {
state = 0;
maintainer = 0;
notifiers = 0;
};
+ ~OTodoData() {
+ delete recur;
+ delete maintainer;
+ delete notifiers;
+ }
QDate date;
bool isCompleted:1;
bool hasDate:1;
@@ -273,26 +278,25 @@ QString OTodo::toRichText() const
QString text;
QStringList catlist;
// summary
- text += "<b><h3><img src=\"todo/TodoList\">";
+ text += "<b><h3><img src=\"todo/TodoList\"> ";
if ( !summary().isEmpty() ) {
text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" );
}
text += "</h3></b><br><hr><br>";
// description
if( !description().isEmpty() ){
- text += "<b>" + QObject::tr( "Description:" ) + "</b><br>";
- text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ;
+ text += "<b>" + QObject::tr( "Notes:" ) + "</b><br>";
+ text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
}
// priority
int priorityval = priority();
text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" +
- QString::number( priorityval ) + "\">";
-// text += "<b>" + QObject::tr( "Priority:") +"</b><img src=\"todo/priority" +
-// QString::number( priority() ) + "\"><br>";
+ QString::number( priorityval ) + "\"> ";
+
switch ( priorityval )
{
case 1 : text += QObject::tr( "Very high" );
break;
diff --git a/libopie/pim/otodo.h b/libopie/pim/otodo.h
index f9a345a..6df98b9 100644
--- a/libopie/pim/otodo.h
+++ b/libopie/pim/otodo.h
@@ -97,13 +97,8 @@ public:
bool hasStartDate()const;
bool hasCompletedDate()const;
/**
- * Does this Event has an alarm time ?
- */
- bool hasAlarmDateTime() const;
-
- /**
* What is the priority?
*/
int priority()const ;
@@ -240,12 +235,8 @@ public:
*/
void setCompletedDate( const QDate& date );
void setRecurrence( const ORecur& );
- /**
- * set the alarm time
- */
- void setAlarmDateTime ( const QDateTime& alarm );
void setDescription(const QString& );
void setSummary(const QString& );
diff --git a/libopie/pim/otodoaccessbackend.h b/libopie/pim/otodoaccessbackend.h
index 05e8ca9..6be95bc 100644
--- a/libopie/pim/otodoaccessbackend.h
+++ b/libopie/pim/otodoaccessbackend.h
@@ -17,8 +17,12 @@ public:
virtual QArray<int> sorted( bool asc, int sortOrder, int sortFilter,
int cat ) = 0;
virtual void removeAllCompleted() = 0;
virtual QBitArray supports()const = 0;
+
+private:
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/pim/otodoaccessvcal.cpp b/libopie/pim/otodoaccessvcal.cpp
index 3577e14..6415952 100644
--- a/libopie/pim/otodoaccessvcal.cpp
+++ b/libopie/pim/otodoaccessvcal.cpp
@@ -14,14 +14,22 @@ namespace {
// no uid, attendees, ... and no fun
// description
if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){
name = vObjectStringZValue( ob );
+#if 0
event.setDescription( name );
+#else
+ event.setSummary( name );
+#endif
}
// summary
if ( ( ob = isAPropertyOf( obj, VCSummaryProp ) ) != 0 ) {
name = vObjectStringZValue( ob );
+#if 0
event.setSummary( name );
+#else
+ event.setDescription( name );
+#endif
}
// completed
if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){
name = vObjectStringZValue( ob );
@@ -73,13 +81,29 @@ namespace {
addPropValue( task, VCCategoriesProp,
event.idsToString( event.categories() ).local8Bit() );
+#if 0
+
+ // There seems a misrepresentation between summary in otodoevent
+ // and summary in vcard.
+ // The same with description..
+ // Description is summary and vice versa.. Argh.. (eilers)
+
+
addPropValue( task, VCDescriptionProp,
event.description().local8Bit() );
addPropValue( task, VCSummaryProp,
event.summary().local8Bit() );
+
+#else
+ addPropValue( task, VCDescriptionProp,
+ event.summary().local8Bit() );
+
+ addPropValue( task, VCSummaryProp,
+ event.description().local8Bit() );
+#endif
return task;
};
}
@@ -184,9 +208,9 @@ QArray<int> OTodoAccessVCal::allRecords()const {
i++;
}
return ar;
}
-QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp &r)const {
+QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp& /* r */)const {
QArray<int> ar(0);
return ar;
}
QArray<int> OTodoAccessVCal::queryByExample( const OTodo&, int, const QDateTime& ) {
diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp
index 3d15354..f688735 100644
--- a/libopie/pim/otodoaccessxml.cpp
+++ b/libopie/pim/otodoaccessxml.cpp
@@ -86,9 +86,9 @@ bool OTodoAccessXML::load() {
/* initialize dict */
/*
* UPDATE dict if you change anything!!!
*/
- QAsciiDict<int> dict(21);
+ QAsciiDict<int> dict(26);
dict.setAutoDelete( TRUE );
dict.insert("Categories" , new int(OTodo::Category) );
dict.insert("Uid" , new int(OTodo::Uid) );
dict.insert("HasDate" , new int(OTodo::HasDate) );
@@ -835,12 +835,14 @@ QArray<int> OTodoAccessXML::sorted( bool asc, int sortOrder,
}
return array;
};
void OTodoAccessXML::removeAllCompleted() {
+ QMap<int, OTodo> events = m_events;
for ( QMap<int, OTodo>::Iterator it = m_events.begin(); it != m_events.end(); ++it ) {
if ( (*it).isCompleted() )
- m_events.remove( it );
+ events.remove( it.key() );
}
+ m_events = events;
}
QBitArray OTodoAccessXML::supports()const {
static QBitArray ar = sup();
return ar;