address.h

00001 /*
00002     This file is part of libkabc.
00003     Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public License
00016     along with this library; see the file COPYING.LIB.  If not, write to
00017     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018     Boston, MA 02110-1301, USA.
00019 */
00020 
00021 #ifndef KABC_ADDRESS_H
00022 #define KABC_ADDRESS_H
00023 
00024 #include <qmap.h>
00025 #include <qstring.h>
00026 #include <qvaluelist.h>
00027 
00028 #include <kdelibs_export.h>
00029 
00030 // template tags for address formatting localization
00031 #define KABC_FMTTAG_realname   QString("%n")
00032 #define KABC_FMTTAG_REALNAME   QString("%N")
00033 #define KABC_FMTTAG_company    QString("%cm")
00034 #define KABC_FMTTAG_COMPANY    QString("%CM")
00035 #define KABC_FMTTAG_pobox      QString("%p")
00036 #define KABC_FMTTAG_street     QString("%s")
00037 #define KABC_FMTTAG_STREET     QString("%S")
00038 #define KABC_FMTTAG_zipcode    QString("%z")
00039 #define KABC_FMTTAG_location   QString("%l")
00040 #define KABC_FMTTAG_LOCATION   QString("%L")
00041 #define KABC_FMTTAG_region     QString("%r")
00042 #define KABC_FMTTAG_REGION     QString("%R")
00043 #define KABC_FMTTAG_newline    QString("\\n")
00044 #define KABC_FMTTAG_condcomma  QString("%,")
00045 #define KABC_FMTTAG_condwhite  QString("%w")
00046 #define KABC_FMTTAG_purgeempty QString("%0")
00047 
00048 namespace KABC {
00049 
00055 class KABC_EXPORT Address
00056 {
00057     friend KABC_EXPORT QDataStream &operator<<( QDataStream &, const Address & );
00058     friend KABC_EXPORT QDataStream &operator>>( QDataStream &, Address & );
00059 
00060   public:
00064     typedef QValueList<Address> List;
00065     typedef QValueList<int> TypeList;
00066   
00078     enum Type { Dom = 1, Intl = 2, Postal = 4, Parcel = 8, Home = 16, Work = 32,
00079            Pref = 64 };
00080 
00085     Address();
00086   
00091     Address( int );
00092 
00093     bool operator==( const Address & ) const;
00094     bool operator!=( const Address & ) const;
00095   
00099     bool isEmpty() const;
00100 
00104     void clear();
00105 
00109     void setId( const QString & );
00110 
00111     /*
00112       Returns the unique id.
00113     */
00114     QString id() const;
00115 
00121     void setType( int type );
00122 
00126     int type() const;
00127 
00131     QString typeLabel() const;
00132 
00136     void setPostOfficeBox( const QString & );
00137 
00141     QString postOfficeBox() const;
00142 
00146     static QString postOfficeBoxLabel();
00147 
00151     void setExtended( const QString & );
00152 
00156     QString extended() const;
00157 
00161     static QString extendedLabel();
00162     
00166     void setStreet( const QString & );
00167 
00171     QString street() const;
00172 
00176     static QString streetLabel();
00177 
00181     void setLocality( const QString & );
00182 
00186     QString locality() const;
00187 
00191     static QString localityLabel();
00192 
00196     void setRegion( const QString & );
00197 
00201     QString region() const;
00202 
00206     static QString regionLabel();
00207  
00211     void setPostalCode( const QString & );
00212 
00216     QString postalCode() const;
00217 
00221     static QString postalCodeLabel();
00222 
00226     void setCountry( const QString & );
00227 
00231     QString country() const;
00232 
00236     static QString countryLabel();
00237 
00241     void setLabel( const QString & );
00242 
00246     QString label() const;
00247 
00251     static QString labelLabel();
00252 
00256     static TypeList typeList();
00257 
00261     static QString typeLabel( int type );
00262 
00266     void dump() const;
00267 
00279     QString formattedAddress( const QString &realName=QString::null
00280                             , const QString &orgaName=QString::null ) const;
00281 
00289     static QString countryToISO( const QString &cname );
00290 
00298     static QString ISOtoCountry( const QString &ISOname );
00299 
00300   private:
00307     bool parseAddressTemplateSection( const QString &tsection
00308                                     ,       QString &result
00309                                     , const QString &realName
00310                                     , const QString &orgaName ) const;
00311 
00317     int  findBalancedBracket( const QString &tsection, int pos ) const;
00318 
00319     bool mEmpty;
00320   
00321     QString mId;
00322     int mType;
00323   
00324     QString mPostOfficeBox;
00325     QString mExtended;
00326     QString mStreet;
00327     QString mLocality;
00328     QString mRegion;
00329     QString mPostalCode;
00330     QString mCountry;
00331     QString mLabel;
00332 
00333     static QMap<QString, QString> *mISOMap;
00334 };
00335 
00336 KABC_EXPORT QDataStream &operator<<( QDataStream &, const Address & );
00337 KABC_EXPORT QDataStream &operator>>( QDataStream &, Address & );
00338 
00339 }
00340 
00341 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys