From 6c715b67a8f0e32a4edca5be91332622834c8d91 Mon Sep 17 00:00:00 2001 From: eilers Date: Fri, 01 Aug 2003 12:30:16 +0000 Subject: Merging changes from BRANCH_1_0 to HEAD --- diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 34bf7f1..6819085 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp @@ -1,7 +1,8 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2003 Stefan Eilers (eilers.stefan@epost.de) ** -** This file is part of Qt Palmtop Environment. +** This file is part of the Open Palmtop Environment (see www.opie.info). ** ** 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 @@ -13,8 +14,6 @@ ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** -** OContact info@trolltech.com if any conditions of this licensing are -** not clear to you. ** **********************************************************************/ @@ -113,12 +112,12 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, moveToolBar( listTools, m_config.getToolBarPos() ); // View Icons - m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/weeklst" ), + m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/listview" ), QString::null, 0, this, 0 ); connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); m_tableViewButton->setToggleAction( true ); m_tableViewButton->addTo( listTools ); - m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "day" ), QString::null, 0, this, 0 ); + m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "addressbook/cardview" ), QString::null, 0, this, 0 ); connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); m_cardViewButton->setToggleAction( true ); m_cardViewButton->addTo( listTools ); @@ -652,7 +651,9 @@ static void parseName( const QString& name, QString *first, QString *middle, void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) { - qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() ); + bool needShow = FALSE; + qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() ); + if (msg == "editPersonal()") { editPersonal(); @@ -689,6 +690,7 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) QString description = "mycard.vcf"; ir->send( beamFilename, description, "text/x-vCard" ); } else if ( msg == "show(int)" ) { + raise(); QDataStream stream(data,IO_ReadOnly); int uid; stream >> uid; @@ -705,9 +707,9 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) m_abView -> setShowByCategory( QString::null ); m_abView -> setCurrentUid( uid ); slotViewSwitched ( AbView::CardView ); - - showMaximized(); - qApp->exec(); + + needShow = true; + } else if ( msg == "edit(int)" ) { QDataStream stream(data,IO_ReadOnly); @@ -724,7 +726,10 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) m_abView -> setShowByCategory( QString::null ); m_abView -> setCurrentUid( uid ); slotViewEdit(); - } + } + + if (needShow) + QPEApplication::setKeepRunning(); } @@ -900,7 +905,7 @@ void AddressbookWindow::slotNotFound() { qWarning("Got notfound signal!"); QMessageBox::information( this, tr( "Not Found" ), - tr( "Unable to find a contact for this \n search pattern!" ) ); + "" + tr( "Unable to find a contact for this search pattern!" ) + "" ); } @@ -950,7 +955,7 @@ void AddressbookWindow::slotSetCategory( int c ) cat = QString::null; }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled cat = "Unfiled"; - qWarning ("Unfiled selected!!!"); + qWarning ("Unfiled selected!"); }else{ cat = m_abView->categories()[i - 4]; } diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp index ce14f98..9d1a1c7 100644 --- a/core/pim/addressbook/contacteditor.cpp +++ b/core/pim/addressbook/contacteditor.cpp @@ -597,7 +597,7 @@ void ContactEditor::init() { if (((*it) == "Anniversary") || ((*it) == "Birthday")|| ((*it) == "Gender")) continue; - l = new QLabel( mapIdToStr[mapStrToID[*it]].utf8() , container ); + l = new QLabel( mapIdToStr[mapStrToID[*it]], container ); listName.append( l ); gl->addWidget( l, i, 0 ); QLineEdit *e = new QLineEdit( container ); diff --git a/core/pim/addressbook/opie-addressbook.control b/core/pim/addressbook/opie-addressbook.control index f06fa91..d949bd4 100644 --- a/core/pim/addressbook/opie-addressbook.control +++ b/core/pim/addressbook/opie-addressbook.control @@ -1,11 +1,11 @@ Package: opie-addressbook -Files: bin/addressbook apps/1Pim/addressbook.desktop pics/addressbook/*.png +Files: bin/addressbook apps/1Pim/addressbook.desktop Priority: optional Section: opie/applications Conflicts: qpe-tkcaddressbook Maintainer: Stefan Eilers Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-minimal, libopie1 +Depends: task-opie-minimal, libopie1, opie-pics Description: Contacts A simple addressbook for the Opie environment. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h index 4c93584..9621826 100644 --- a/core/pim/addressbook/version.h +++ b/core/pim/addressbook/version.h @@ -1,9 +1,9 @@ #ifndef _VERSION_H_ #define _VERSION_H_ -#define MAINVERSION "0" -#define SUBVERSION "9" -#define PATCHVERSION "5" +#define MAINVERSION "1" +#define SUBVERSION "0" +#define PATCHVERSION "0" #define APPNAME "OPIE_ADDRESSBOOK" 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 @@ -16,6 +16,14 @@ * ===================================================================== * 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& @@ -68,6 +76,8 @@ #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 @@ -148,6 +158,8 @@ class OBackendFactory } + private: + OBackendPrivate* d; }; 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 @@ -21,10 +21,11 @@ #include "ocontact.h" #include "opimresolver.h" +#include "oconversion.h" #include -#include "oconversion.h" #include +#include #include #include @@ -438,12 +439,16 @@ QString OContact::toRichText() const 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 += "

" + Qtopia::escapeString(value) + "

"; - + text += "

" + Qtopia::escapeString(value) + "

"; + if ( !(value = jobTitle()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + text += Qtopia::escapeString(value); comp = company(); if ( !(value = department()).isEmpty() ) { @@ -454,77 +459,110 @@ QString OContact::toRichText() const text += "
"; } if ( !comp.isEmpty() ) - text += Qtopia::escapeString(comp) + "
"; + text += Qtopia::escapeString(comp); - text += "

"; + text += "

"; // defailt email QString defEmail = defaultEmail(); - if ( !defEmail.isEmpty() ) - text += "" + QObject::tr("Default Email: ") + "" - + Qtopia::escapeString(defEmail) + "
"; - - text += "
"; + if ( !defEmail.isEmpty() ){ + text += " " + QObject::tr("Default Email: ") + "" + + Qtopia::escapeString(defEmail); + marker = true; + } // business address if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || !businessZip().isEmpty() || !businessCountry().isEmpty() ) { - text += QObject::tr( "Work Address:" ); - text += "
"; + text += QObject::tr( "

Work Address:" ); marker = true; } - if ( !(value = businessStreet()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; - 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 += "
"; - } else if ( !state.isEmpty() ) - text += Qtopia::escapeString(state) + "
"; + if ( !(value = businessStreet()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } + + switch( addressformat ){ + case Zip_City_State:{ // Zip_Code City, State + state = businessState(); + if ( !(value = businessZip()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value) + " "; + marker = true; + + } else + text += "
"; + + if ( !(value = businessCity()).isEmpty() ) { + marker = true; + text += Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + break; + } + case City_State_Zip:{ // City, State Zip_Code + state = businessState(); + if ( !(value = businessCity()).isEmpty() ) { + marker = true; + text += "
" + Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + if ( !(value = businessZip()).isEmpty() ){ + text += " " + Qtopia::escapeString(value); + marker = true; + } + break; + } + } - if ( !(value = businessCountry()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + if ( !(value = businessCountry()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } // rest of Business data str = office(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Office: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Office: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessWebpage(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Web Page: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Web Page: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessPhone(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Phone: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Phone: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessFax(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Fax: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Fax: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessMobile(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Mobile: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Mobile: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessPager(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Pager: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Pager: ") + "" + + Qtopia::escapeString(str); marker = true; } @@ -533,107 +571,142 @@ QString OContact::toRichText() const // home address if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || !homeZip().isEmpty() || !homeCountry().isEmpty() ) { - text += QObject::tr( "Home Address:" ); - text += "
"; + text += QObject::tr( "

Home Address:" ); + marker = true; } - if ( !(value = homeStreet()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; - 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 += "
"; - } else if (!state.isEmpty()) - text += Qtopia::escapeString(state) + "
"; - if ( !(value = homeCountry()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + if ( !(value = homeStreet()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } + + switch( addressformat ){ + case Zip_City_State:{ // Zip_Code City, State + state = homeState(); + if ( !(value = homeZip()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value) + " "; + marker = true; + } else + text += "
"; + + if ( !(value = homeCity()).isEmpty() ) { + marker = true; + text += Qtopia::escapeString(value); + if ( !state.isEmpty() ) + text += ", " + Qtopia::escapeString(state); + } else if (!state.isEmpty()) { + text += "
" + Qtopia::escapeString(state); + marker = true; + } + break; + } + case City_State_Zip:{ // City, State Zip_Code + state = homeState(); + if ( !(value = homeCity()).isEmpty() ) { + marker = true; + text += "
" + Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + if ( !(value = homeZip()).isEmpty() ){ + text += " " + Qtopia::escapeString(value); + marker = true; + } + break; + } + } + + if ( !(value = homeCountry()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } // rest of Home data str = homeWebpage(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Web Page: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Web Page: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homePhone(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Phone: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Phone: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homeFax(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Fax: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Fax: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homeMobile(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Mobile: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Mobile: ") + "" + + Qtopia::escapeString(str); marker = true; } if ( marker ) - text += "


"; - // the others... + text += "

"; + + // the rest... str = emails(); if ( !str.isEmpty() && ( str != defEmail ) ) - text += "" + QObject::tr("All Emails: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("All Emails: ") + "" + + Qtopia::escapeString(str); str = profession(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Profession: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Profession: ") + "" + + Qtopia::escapeString(str); str = assistant(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Assistant: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Assistant: ") + "" + + Qtopia::escapeString(str); str = manager(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Manager: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Manager: ") + "" + + 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 += "" + QObject::tr("Gender: ") + "" + str + "
"; + text += "
"; + if ( str.toInt() == 1 ) + str = QObject::tr( "Male" ); + else if ( str.toInt() == 2 ) + str = QObject::tr( "Female" ); + text += "" + QObject::tr("Gender: ") + "" + str; } str = spouse(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Spouse: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Spouse: ") + "" + + Qtopia::escapeString(str); if ( birthday().isValid() ){ str = TimeString::numberDateString( birthday() ); - text += "" + QObject::tr("Birthday: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Birthday: ") + "" + + Qtopia::escapeString(str); } if ( anniversary().isValid() ){ str = TimeString::numberDateString( anniversary() ); - text += "" + QObject::tr("Anniversary: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Anniversary: ") + "" + + Qtopia::escapeString(str); } str = children(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Children: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Children: ") + "" + + Qtopia::escapeString(str); str = nickname(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Nickname: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Nickname: ") + "" + + Qtopia::escapeString(str); // categories if ( categoryNames("Contacts").count() ){ - text += "" + QObject::tr( "Category:") + " "; + text += "
" + QObject::tr( "Category:") + " "; text += categoryNames("Contacts").join(", "); - text += "
"; } // notes last 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 @@ -32,7 +32,7 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap; // MOC_SKIP_END #endif -class ContactPrivate; +class OContactPrivate; /** * OContact class represents a specialised PIM Record for contacts. @@ -49,6 +49,11 @@ public: OContact( const QMap &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? @@ -233,7 +238,7 @@ private: const QString &country ) const; QMap mMap; - ContactPrivate *d; + OContactPrivate *d; }; 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 @@ -17,6 +17,14 @@ * ===================================================================== * 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 @@ -165,6 +173,9 @@ class OContactAccess: public QObject, public OPimAccessTemplate 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 @@ -19,6 +19,14 @@ * ===================================================================== * 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& @@ -102,6 +110,10 @@ class OContactAccessBackend: public OPimAccessBackend { * Returns a sorted list of records either ascendinf or descending for a giving criteria and category */ virtual QArray 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 @@ -17,6 +17,21 @@ * ===================================================================== * 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& @@ -151,6 +166,7 @@ bool OContactAccessBackend_VCard::save() cleanVObject( vo ); } cleanStrTbl(); + deleteVObject( obj ); m_dirty = false; return true; @@ -446,7 +462,9 @@ OContact OContactAccessBackend_VCard::parseVObject( VObject *obj ) c.setBirthday( convVCardDateToDate( value ) ); } - + else if ( name == VCCommentProp ) { + c.setNotes( value ); + } #if 0 else { printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) ); @@ -534,7 +552,7 @@ VObject* OContactAccessBackend_VCard::createVObject( const OContact &c ) 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 @@ -17,6 +17,9 @@ * ===================================================================== * 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() * 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 @@ -37,6 +37,11 @@ public: */ 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 @@ -68,6 +68,10 @@ public: */ 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 @@ -430,9 +430,9 @@ bool ODateBookAccessBackend_XML::loadFile() { */ 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 */ @@ -453,7 +453,7 @@ void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) { 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() ); 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 @@ -7,6 +7,7 @@ #include +class OPimAccessBackendPrivate; /** * OPimAccessBackend is the base class * for all private backends @@ -107,8 +108,7 @@ 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 @@ -10,6 +10,7 @@ #include "opimcache.h" #include "otemplatebase.h" +class OPimAccessTemplatePrivate; /** * Thats the frontend to our OPIE PIM * Library. Either you want to use it's @@ -152,6 +153,9 @@ protected: BackEnd* m_backEnd; Cache m_cache; +private: + OPimAccessTemplatePrivate *d; + }; template 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 @@ -5,6 +5,8 @@ #include "opimrecord.h" +class OPimCacheItemPrivate; + template class OPimCacheItem { public: @@ -18,8 +20,11 @@ public: void setRecord( const T& ); private: T m_t; + OPimCacheItemPrivate *d; }; + +class OPimCachePrivate; /** * OPimCache for caching the items * We support adding, removing @@ -46,6 +51,7 @@ public: private: QIntCache m_cache; + OPimCachePrivate* d; }; // Implementation 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 @@ -4,6 +4,7 @@ #include #include +#include #include "opimresolver.h" #include "opimmainwindow.h" @@ -38,30 +39,37 @@ 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 ); @@ -75,6 +83,7 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) add( *m_fallBack ); delete m_fallBack; }else if ( cmd == "alarm(QDateTime,int)" ) { + raise(); QDateTime dt; int uid; stream >> dt; stream >> uid; @@ -83,8 +92,11 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) 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) { 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 @@ -36,6 +36,8 @@ public: 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 @@ -7,6 +7,7 @@ #include "otemplatebase.h" #include "opimrecord.h" +class ORecordListIteratorPrivate; /** * Our List Iterator * it behaves like STL or Qt @@ -71,9 +72,10 @@ private: 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 @@ -111,7 +113,7 @@ ORecordList( const QArray& ids, T operator[]( uint i ); int uidAt(uint i ); - /** + /** * Remove the contact with given uid */ bool remove( int uid ); @@ -123,6 +125,7 @@ ORecordList( const QArray& ids, private: QArray m_ids; const Base* m_acc; + ORecordListPrivate *d; }; /* ok now implement it */ @@ -220,6 +223,9 @@ ORecordListIterator::ORecordListIterator( const QArray uids, : 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 uint ORecordListIterator::current()const { 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 @@ -14,6 +14,7 @@ * You may not want to use that interface internaly * POOR mans interface */ +class OPimBasePrivate; struct OPimBase { /** * return the rtti @@ -32,12 +33,15 @@ struct OPimBase { * ADD editing here? * -zecke */ +private: + OPimBasePrivate* d; }; /** * internal template base * T needs to implement the copy c'tor!!! */ +class OTemplateBasePrivate; template class OTemplateBase : public OPimBase { public: @@ -61,6 +65,9 @@ public: OPimRecord* record()const; OPimRecord* record(int uid )const; static T* rec(); + +private: + OTemplateBasePrivate *d; }; /* 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 @@ -28,6 +28,11 @@ struct OTodo::OTodoData : public QShared { maintainer = 0; notifiers = 0; }; + ~OTodoData() { + delete recur; + delete maintainer; + delete notifiers; + } QDate date; bool isCompleted:1; @@ -274,7 +279,7 @@ QString OTodo::toRichText() const QStringList catlist; // summary - text += "

"; + text += "

"; if ( !summary().isEmpty() ) { text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" ); } @@ -282,16 +287,15 @@ QString OTodo::toRichText() const // description if( !description().isEmpty() ){ - text += "" + QObject::tr( "Description:" ) + "
"; - text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "
" ) ; + text += "" + QObject::tr( "Notes:" ) + "
"; + text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "
" ) + "
"; } // priority int priorityval = priority(); text += "" + QObject::tr( "Priority:") +" "; -// text += "" + QObject::tr( "Priority:") +"
"; + QString::number( priorityval ) + "\"> "; + switch ( priorityval ) { case 1 : text += QObject::tr( "Very high" ); 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 @@ -98,11 +98,6 @@ public: bool hasCompletedDate()const; /** - * Does this Event has an alarm time ? - */ - bool hasAlarmDateTime() const; - - /** * What is the priority? */ int priority()const ; @@ -241,10 +236,6 @@ 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 @@ -18,6 +18,10 @@ public: int cat ) = 0; virtual void removeAllCompleted() = 0; virtual QBitArray supports()const = 0; + +private: + class Private; + Private *d; }; 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 @@ -15,12 +15,20 @@ namespace { // 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 ){ @@ -74,11 +82,27 @@ 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; }; } @@ -185,7 +209,7 @@ QArray OTodoAccessVCal::allRecords()const { } return ar; } -QArray OTodoAccessVCal::matchRegexp(const QRegExp &r)const { +QArray OTodoAccessVCal::matchRegexp(const QRegExp& /* r */)const { QArray ar(0); return ar; } 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 @@ -87,7 +87,7 @@ bool OTodoAccessXML::load() { /* * UPDATE dict if you change anything!!! */ - QAsciiDict dict(21); + QAsciiDict dict(26); dict.setAutoDelete( TRUE ); dict.insert("Categories" , new int(OTodo::Category) ); dict.insert("Uid" , new int(OTodo::Uid) ); @@ -836,10 +836,12 @@ QArray OTodoAccessXML::sorted( bool asc, int sortOrder, return array; }; void OTodoAccessXML::removeAllCompleted() { + QMap events = m_events; for ( QMap::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(); diff --git a/libopie2/opiepim/backend/obackendfactory.h b/libopie2/opiepim/backend/obackendfactory.h index ad6cf5a..f3c339d 100644 --- a/libopie2/opiepim/backend/obackendfactory.h +++ b/libopie2/opiepim/backend/obackendfactory.h @@ -16,6 +16,14 @@ * ===================================================================== * 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& @@ -68,6 +76,8 @@ #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 @@ -148,6 +158,8 @@ class OBackendFactory } + private: + OBackendPrivate* d; }; diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.h b/libopie2/opiepim/backend/ocontactaccessbackend.h index ebeb42d..280e05c 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend.h +++ b/libopie2/opiepim/backend/ocontactaccessbackend.h @@ -19,6 +19,14 @@ * ===================================================================== * 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& @@ -102,6 +110,10 @@ class OContactAccessBackend: public OPimAccessBackend { * Returns a sorted list of records either ascendinf or descending for a giving criteria and category */ virtual QArray sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; - + + +private: + class Private; + Private *d; }; #endif diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp index 270bef3..b60c5be 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp @@ -17,6 +17,21 @@ * ===================================================================== * 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& @@ -151,6 +166,7 @@ bool OContactAccessBackend_VCard::save() cleanVObject( vo ); } cleanStrTbl(); + deleteVObject( obj ); m_dirty = false; return true; @@ -446,7 +462,9 @@ OContact OContactAccessBackend_VCard::parseVObject( VObject *obj ) c.setBirthday( convVCardDateToDate( value ) ); } - + else if ( name == VCCommentProp ) { + c.setNotes( value ); + } #if 0 else { printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) ); @@ -534,7 +552,7 @@ VObject* OContactAccessBackend_VCard::createVObject( const OContact &c ) 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/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp index 097142b..1c21619 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp @@ -17,6 +17,9 @@ * ===================================================================== * 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() * diff --git a/libopie2/opiepim/backend/odatebookaccessbackend.h b/libopie2/opiepim/backend/odatebookaccessbackend.h index 86ff298..3c02c42 100644 --- a/libopie2/opiepim/backend/odatebookaccessbackend.h +++ b/libopie2/opiepim/backend/odatebookaccessbackend.h @@ -68,6 +68,10 @@ public: */ virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start ); +private: + class Private; + Private *d; + }; #endif diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp index ab2eea4..5ea945c 100644 --- a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp +++ b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp @@ -430,9 +430,9 @@ bool ODateBookAccessBackend_XML::loadFile() { */ 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 */ @@ -453,7 +453,7 @@ void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) { 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() ); diff --git a/libopie2/opiepim/backend/opimaccessbackend.h b/libopie2/opiepim/backend/opimaccessbackend.h index f4bbe35..c3d91f7 100644 --- a/libopie2/opiepim/backend/opimaccessbackend.h +++ b/libopie2/opiepim/backend/opimaccessbackend.h @@ -7,6 +7,7 @@ #include +class OPimAccessBackendPrivate; /** * OPimAccessBackend is the base class * for all private backends @@ -107,8 +108,7 @@ protected: uint readAhead()const; private: - class Private; - Private* d; + OPimAccessBackendPrivate *d; Frontend* m_front; uint m_read; int m_acc; diff --git a/libopie2/opiepim/backend/otodoaccessbackend.h b/libopie2/opiepim/backend/otodoaccessbackend.h index 05e8ca9..6be95bc 100644 --- a/libopie2/opiepim/backend/otodoaccessbackend.h +++ b/libopie2/opiepim/backend/otodoaccessbackend.h @@ -18,6 +18,10 @@ public: int cat ) = 0; virtual void removeAllCompleted() = 0; virtual QBitArray supports()const = 0; + +private: + class Private; + Private *d; }; diff --git a/libopie2/opiepim/backend/otodoaccessvcal.cpp b/libopie2/opiepim/backend/otodoaccessvcal.cpp index 3577e14..6415952 100644 --- a/libopie2/opiepim/backend/otodoaccessvcal.cpp +++ b/libopie2/opiepim/backend/otodoaccessvcal.cpp @@ -15,12 +15,20 @@ namespace { // 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 ){ @@ -74,11 +82,27 @@ 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; }; } @@ -185,7 +209,7 @@ QArray OTodoAccessVCal::allRecords()const { } return ar; } -QArray OTodoAccessVCal::matchRegexp(const QRegExp &r)const { +QArray OTodoAccessVCal::matchRegexp(const QRegExp& /* r */)const { QArray ar(0); return ar; } diff --git a/libopie2/opiepim/backend/otodoaccessxml.cpp b/libopie2/opiepim/backend/otodoaccessxml.cpp index 3d15354..f688735 100644 --- a/libopie2/opiepim/backend/otodoaccessxml.cpp +++ b/libopie2/opiepim/backend/otodoaccessxml.cpp @@ -87,7 +87,7 @@ bool OTodoAccessXML::load() { /* * UPDATE dict if you change anything!!! */ - QAsciiDict dict(21); + QAsciiDict dict(26); dict.setAutoDelete( TRUE ); dict.insert("Categories" , new int(OTodo::Category) ); dict.insert("Uid" , new int(OTodo::Uid) ); @@ -836,10 +836,12 @@ QArray OTodoAccessXML::sorted( bool asc, int sortOrder, return array; }; void OTodoAccessXML::removeAllCompleted() { + QMap events = m_events; for ( QMap::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(); diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h index e90db32..9b0a719 100644 --- a/libopie2/opiepim/core/ocontactaccess.h +++ b/libopie2/opiepim/core/ocontactaccess.h @@ -17,6 +17,14 @@ * ===================================================================== * 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 @@ -165,6 +173,9 @@ class OContactAccess: public QObject, public OPimAccessTemplate private slots: void copMessage( const QCString &msg, const QByteArray &data ); + private: + class Private; + Private *d; }; #endif diff --git a/libopie2/opiepim/core/oconversion.h b/libopie2/opiepim/core/oconversion.h index 13367e1..4c0a497 100644 --- a/libopie2/opiepim/core/oconversion.h +++ b/libopie2/opiepim/core/oconversion.h @@ -37,6 +37,11 @@ public: */ static QString dateTimeToString( const QDateTime& ); static QDateTime dateTimeFromString( const QString& ); + +private: + class Private; + Private* d; + }; #endif // __oconversion_h__ diff --git a/libopie2/opiepim/core/opimaccesstemplate.h b/libopie2/opiepim/core/opimaccesstemplate.h index 8ff205c..ecbeb68 100644 --- a/libopie2/opiepim/core/opimaccesstemplate.h +++ b/libopie2/opiepim/core/opimaccesstemplate.h @@ -10,6 +10,7 @@ #include "opimcache.h" #include "otemplatebase.h" +class OPimAccessTemplatePrivate; /** * Thats the frontend to our OPIE PIM * Library. Either you want to use it's @@ -152,6 +153,9 @@ protected: BackEnd* m_backEnd; Cache m_cache; +private: + OPimAccessTemplatePrivate *d; + }; template diff --git a/libopie2/opiepim/core/opimcache.h b/libopie2/opiepim/core/opimcache.h index 73414e5..7f7cff5 100644 --- a/libopie2/opiepim/core/opimcache.h +++ b/libopie2/opiepim/core/opimcache.h @@ -5,6 +5,8 @@ #include "opimrecord.h" +class OPimCacheItemPrivate; + template class OPimCacheItem { public: @@ -18,8 +20,11 @@ public: void setRecord( const T& ); private: T m_t; + OPimCacheItemPrivate *d; }; + +class OPimCachePrivate; /** * OPimCache for caching the items * We support adding, removing @@ -46,6 +51,7 @@ public: private: QIntCache m_cache; + OPimCachePrivate* d; }; // Implementation diff --git a/libopie2/opiepim/core/opimxrefmanager.h b/libopie2/opiepim/core/opimxrefmanager.h index 39e5eef..c485e98 100644 --- a/libopie2/opiepim/core/opimxrefmanager.h +++ b/libopie2/opiepim/core/opimxrefmanager.h @@ -36,6 +36,8 @@ public: private: OPimXRef::ValueList m_list; + class Private; + Private *d; }; #endif diff --git a/libopie2/opiepim/core/otemplatebase.h b/libopie2/opiepim/core/otemplatebase.h index 29fb6ec..cadac74 100644 --- a/libopie2/opiepim/core/otemplatebase.h +++ b/libopie2/opiepim/core/otemplatebase.h @@ -14,6 +14,7 @@ * You may not want to use that interface internaly * POOR mans interface */ +class OPimBasePrivate; struct OPimBase { /** * return the rtti @@ -32,12 +33,15 @@ struct OPimBase { * ADD editing here? * -zecke */ +private: + OPimBasePrivate* d; }; /** * internal template base * T needs to implement the copy c'tor!!! */ +class OTemplateBasePrivate; template class OTemplateBase : public OPimBase { public: @@ -61,6 +65,9 @@ public: OPimRecord* record()const; OPimRecord* record(int uid )const; static T* rec(); + +private: + OTemplateBasePrivate *d; }; /* diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp index be4ce0a..3473baa 100644 --- a/libopie2/opiepim/ocontact.cpp +++ b/libopie2/opiepim/ocontact.cpp @@ -21,10 +21,11 @@ #include "ocontact.h" #include "opimresolver.h" +#include "oconversion.h" #include -#include "oconversion.h" #include +#include #include #include @@ -438,12 +439,16 @@ QString OContact::toRichText() const 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 += "

" + Qtopia::escapeString(value) + "

"; - + text += "

" + Qtopia::escapeString(value) + "

"; + if ( !(value = jobTitle()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + text += Qtopia::escapeString(value); comp = company(); if ( !(value = department()).isEmpty() ) { @@ -454,77 +459,110 @@ QString OContact::toRichText() const text += "
"; } if ( !comp.isEmpty() ) - text += Qtopia::escapeString(comp) + "
"; + text += Qtopia::escapeString(comp); - text += "

"; + text += "

"; // defailt email QString defEmail = defaultEmail(); - if ( !defEmail.isEmpty() ) - text += "" + QObject::tr("Default Email: ") + "" - + Qtopia::escapeString(defEmail) + "
"; - - text += "
"; + if ( !defEmail.isEmpty() ){ + text += " " + QObject::tr("Default Email: ") + "" + + Qtopia::escapeString(defEmail); + marker = true; + } // business address if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || !businessZip().isEmpty() || !businessCountry().isEmpty() ) { - text += QObject::tr( "Work Address:" ); - text += "
"; + text += QObject::tr( "

Work Address:" ); marker = true; } - if ( !(value = businessStreet()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; - 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 += "
"; - } else if ( !state.isEmpty() ) - text += Qtopia::escapeString(state) + "
"; + if ( !(value = businessStreet()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } + + switch( addressformat ){ + case Zip_City_State:{ // Zip_Code City, State + state = businessState(); + if ( !(value = businessZip()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value) + " "; + marker = true; + + } else + text += "
"; + + if ( !(value = businessCity()).isEmpty() ) { + marker = true; + text += Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + break; + } + case City_State_Zip:{ // City, State Zip_Code + state = businessState(); + if ( !(value = businessCity()).isEmpty() ) { + marker = true; + text += "
" + Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + if ( !(value = businessZip()).isEmpty() ){ + text += " " + Qtopia::escapeString(value); + marker = true; + } + break; + } + } - if ( !(value = businessCountry()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + if ( !(value = businessCountry()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } // rest of Business data str = office(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Office: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Office: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessWebpage(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Web Page: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Web Page: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessPhone(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Phone: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Phone: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessFax(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Fax: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Fax: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessMobile(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Mobile: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Mobile: ") + "" + + Qtopia::escapeString(str); marker = true; } str = businessPager(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Business Pager: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Business Pager: ") + "" + + Qtopia::escapeString(str); marker = true; } @@ -533,107 +571,142 @@ QString OContact::toRichText() const // home address if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || !homeZip().isEmpty() || !homeCountry().isEmpty() ) { - text += QObject::tr( "Home Address:" ); - text += "
"; + text += QObject::tr( "

Home Address:" ); + marker = true; } - if ( !(value = homeStreet()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; - 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 += "
"; - } else if (!state.isEmpty()) - text += Qtopia::escapeString(state) + "
"; - if ( !(value = homeCountry()).isEmpty() ) - text += Qtopia::escapeString(value) + "
"; + if ( !(value = homeStreet()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } + + switch( addressformat ){ + case Zip_City_State:{ // Zip_Code City, State + state = homeState(); + if ( !(value = homeZip()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value) + " "; + marker = true; + } else + text += "
"; + + if ( !(value = homeCity()).isEmpty() ) { + marker = true; + text += Qtopia::escapeString(value); + if ( !state.isEmpty() ) + text += ", " + Qtopia::escapeString(state); + } else if (!state.isEmpty()) { + text += "
" + Qtopia::escapeString(state); + marker = true; + } + break; + } + case City_State_Zip:{ // City, State Zip_Code + state = homeState(); + if ( !(value = homeCity()).isEmpty() ) { + marker = true; + text += "
" + Qtopia::escapeString(value); + if ( state ) + text += ", " + Qtopia::escapeString(state); + } else if ( !state.isEmpty() ){ + text += "
" + Qtopia::escapeString(state); + marker = true; + } + if ( !(value = homeZip()).isEmpty() ){ + text += " " + Qtopia::escapeString(value); + marker = true; + } + break; + } + } + + if ( !(value = homeCountry()).isEmpty() ){ + text += "
" + Qtopia::escapeString(value); + marker = true; + } // rest of Home data str = homeWebpage(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Web Page: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Web Page: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homePhone(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Phone: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Phone: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homeFax(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Fax: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Fax: ") + "" + + Qtopia::escapeString(str); marker = true; } str = homeMobile(); if ( !str.isEmpty() ){ - text += "" + QObject::tr("Home Mobile: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Home Mobile: ") + "" + + Qtopia::escapeString(str); marker = true; } if ( marker ) - text += "


"; - // the others... + text += "

"; + + // the rest... str = emails(); if ( !str.isEmpty() && ( str != defEmail ) ) - text += "" + QObject::tr("All Emails: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("All Emails: ") + "" + + Qtopia::escapeString(str); str = profession(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Profession: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Profession: ") + "" + + Qtopia::escapeString(str); str = assistant(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Assistant: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Assistant: ") + "" + + Qtopia::escapeString(str); str = manager(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Manager: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Manager: ") + "" + + 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 += "" + QObject::tr("Gender: ") + "" + str + "
"; + text += "
"; + if ( str.toInt() == 1 ) + str = QObject::tr( "Male" ); + else if ( str.toInt() == 2 ) + str = QObject::tr( "Female" ); + text += "" + QObject::tr("Gender: ") + "" + str; } str = spouse(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Spouse: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Spouse: ") + "" + + Qtopia::escapeString(str); if ( birthday().isValid() ){ str = TimeString::numberDateString( birthday() ); - text += "" + QObject::tr("Birthday: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Birthday: ") + "" + + Qtopia::escapeString(str); } if ( anniversary().isValid() ){ str = TimeString::numberDateString( anniversary() ); - text += "" + QObject::tr("Anniversary: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Anniversary: ") + "" + + Qtopia::escapeString(str); } str = children(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Children: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Children: ") + "" + + Qtopia::escapeString(str); str = nickname(); if ( !str.isEmpty() ) - text += "" + QObject::tr("Nickname: ") + "" - + Qtopia::escapeString(str) + "
"; + text += "
" + QObject::tr("Nickname: ") + "" + + Qtopia::escapeString(str); // categories if ( categoryNames("Contacts").count() ){ - text += "" + QObject::tr( "Category:") + " "; + text += "
" + QObject::tr( "Category:") + " "; text += categoryNames("Contacts").join(", "); - text += "
"; } // notes last diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h index dd2de17..9a1a8dc 100644 --- a/libopie2/opiepim/ocontact.h +++ b/libopie2/opiepim/ocontact.h @@ -32,7 +32,7 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap; // MOC_SKIP_END #endif -class ContactPrivate; +class OContactPrivate; /** * OContact class represents a specialised PIM Record for contacts. @@ -49,6 +49,11 @@ public: OContact( const QMap &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? @@ -233,7 +238,7 @@ private: const QString &country ) const; QMap mMap; - ContactPrivate *d; + OContactPrivate *d; }; diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index edcd729..5211f57 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h @@ -7,6 +7,7 @@ #include "otemplatebase.h" #include "opimrecord.h" +class ORecordListIteratorPrivate; /** * Our List Iterator * it behaves like STL or Qt @@ -71,9 +72,10 @@ private: 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 @@ -111,7 +113,7 @@ ORecordList( const QArray& ids, T operator[]( uint i ); int uidAt(uint i ); - /** + /** * Remove the contact with given uid */ bool remove( int uid ); @@ -123,6 +125,7 @@ ORecordList( const QArray& ids, private: QArray m_ids; const Base* m_acc; + ORecordListPrivate *d; }; /* ok now implement it */ @@ -220,6 +223,9 @@ ORecordListIterator::ORecordListIterator( const QArray uids, : 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 uint ORecordListIterator::current()const { diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp index 38b93f7..5a18c37 100644 --- a/libopie2/opiepim/otodo.cpp +++ b/libopie2/opiepim/otodo.cpp @@ -28,6 +28,11 @@ struct OTodo::OTodoData : public QShared { maintainer = 0; notifiers = 0; }; + ~OTodoData() { + delete recur; + delete maintainer; + delete notifiers; + } QDate date; bool isCompleted:1; @@ -274,7 +279,7 @@ QString OTodo::toRichText() const QStringList catlist; // summary - text += "

"; + text += "

"; if ( !summary().isEmpty() ) { text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" ); } @@ -282,16 +287,15 @@ QString OTodo::toRichText() const // description if( !description().isEmpty() ){ - text += "" + QObject::tr( "Description:" ) + "
"; - text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "
" ) ; + text += "" + QObject::tr( "Notes:" ) + "
"; + text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "
" ) + "
"; } // priority int priorityval = priority(); text += "" + QObject::tr( "Priority:") +" "; -// text += "" + QObject::tr( "Priority:") +"
"; + QString::number( priorityval ) + "\"> "; + switch ( priorityval ) { case 1 : text += QObject::tr( "Very high" ); diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h index f9a345a..6df98b9 100644 --- a/libopie2/opiepim/otodo.h +++ b/libopie2/opiepim/otodo.h @@ -98,11 +98,6 @@ public: bool hasCompletedDate()const; /** - * Does this Event has an alarm time ? - */ - bool hasAlarmDateTime() const; - - /** * What is the priority? */ int priority()const ; @@ -241,10 +236,6 @@ 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/libopie2/opiepim/ui/opimmainwindow.cpp b/libopie2/opiepim/ui/opimmainwindow.cpp index 4044bc1..2739e26 100644 --- a/libopie2/opiepim/ui/opimmainwindow.cpp +++ b/libopie2/opiepim/ui/opimmainwindow.cpp @@ -4,6 +4,7 @@ #include #include +#include #include "opimresolver.h" #include "opimmainwindow.h" @@ -38,30 +39,37 @@ 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 ); @@ -75,6 +83,7 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) add( *m_fallBack ); delete m_fallBack; }else if ( cmd == "alarm(QDateTime,int)" ) { + raise(); QDateTime dt; int uid; stream >> dt; stream >> uid; @@ -83,8 +92,11 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) 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) { -- cgit v0.9.0.2