kabc Library API Documentation

address.cpp

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., 59 Temple Place - Suite 330,
00018     Boston, MA 02111-1307, USA.
00019 */
00020 
00021 #include <kapplication.h>
00022 #include <kdebug.h>
00023 #include <klocale.h>
00024 
00025 #include "address.h"
00026 
00027 using namespace KABC;
00028 
00029 Address::Address() :
00030   mEmpty( true ), mType( 0 )
00031 {
00032   mId = KApplication::randomString( 10 );
00033 }
00034 
00035 Address::Address( int type ) :
00036   mEmpty( true ), mType( type )
00037 {
00038   mId = KApplication::randomString( 10 );
00039 }
00040 
00041 bool Address::operator==( const Address &a ) const
00042 {
00043   if ( mPostOfficeBox != a.mPostOfficeBox ) return false;
00044   if ( mExtended != a.mExtended ) return false;
00045   if ( mStreet != a.mStreet ) return false;
00046   if ( mLocality != a.mLocality ) return false;
00047   if ( mRegion != a.mRegion ) return false;
00048   if ( mPostalCode != a.mPostalCode ) return false;
00049   if ( mCountry != a.mCountry ) return false;
00050   if ( mLabel != a.mLabel ) return false;
00051   
00052   return true;
00053 }
00054 
00055 bool Address::operator!=( const Address &a ) const
00056 {
00057   return !( a == *this );
00058 }
00059 
00060 bool Address::isEmpty() const
00061 {
00062   if ( mPostOfficeBox.isEmpty() &&
00063        mExtended.isEmpty() &&
00064        mStreet.isEmpty() &&
00065        mLocality.isEmpty() &&
00066        mRegion.isEmpty() &&
00067        mPostalCode.isEmpty() &&
00068        mCountry.isEmpty() &&
00069        mLabel.isEmpty() ) {
00070     return true;
00071   }
00072   return false;
00073 }
00074 
00075 void Address::clear()
00076 {
00077   *this = Address();
00078 }
00079 
00080 void Address::setId( const QString &id )
00081 {
00082   mEmpty = false;
00083 
00084   mId = id;
00085 }
00086 
00087 QString Address::id() const
00088 {
00089   return mId;
00090 }
00091 
00092 void Address::setType( int type )
00093 {
00094   mEmpty = false;
00095 
00096   mType = type;
00097 }
00098 
00099 int Address::type() const
00100 {
00101   return mType;
00102 }
00103 
00104 QString Address::typeLabel() const
00105 {
00106   QString label;
00107   bool first = true;
00108 
00109   TypeList list = typeList();
00110 
00111   TypeList::Iterator it;
00112   for ( it = list.begin(); it != list.end(); ++it ) {
00113     if ( ( type() & (*it) ) && ( (*it) != Pref ) ) {
00114       label.append( ( first ? "" : "/" ) + typeLabel( *it ) );
00115       if ( first )
00116         first = false;
00117     }
00118   }
00119 
00120   return label;
00121 }
00122 
00123 void Address::setPostOfficeBox( const QString &s )
00124 {
00125   mEmpty = false;
00126 
00127   mPostOfficeBox = s;
00128 }
00129 
00130 QString Address::postOfficeBox() const
00131 {
00132   return mPostOfficeBox;
00133 }
00134 
00135 QString Address::postOfficeBoxLabel()
00136 {
00137   return i18n("Post Office Box");
00138 }
00139 
00140 
00141 void Address::setExtended( const QString &s )
00142 {
00143   mEmpty = false;
00144 
00145   mExtended = s;
00146 }
00147 
00148 QString Address::extended() const
00149 {
00150   return mExtended;
00151 }
00152 
00153 QString Address::extendedLabel()
00154 {
00155   return i18n("Extended Address Information");
00156 }
00157 
00158 
00159 void Address::setStreet( const QString &s )
00160 {
00161   mEmpty = false;
00162 
00163   mStreet = s;
00164 }
00165 
00166 QString Address::street() const
00167 {
00168   return mStreet;
00169 }
00170 
00171 QString Address::streetLabel()
00172 {
00173   return i18n("Street");
00174 }
00175 
00176 
00177 void Address::setLocality( const QString &s )
00178 {
00179   mEmpty = false;
00180 
00181   mLocality = s;
00182 }
00183 
00184 QString Address::locality() const
00185 {
00186   return mLocality;
00187 }
00188 
00189 QString Address::localityLabel()
00190 {
00191   return i18n("Locality");
00192 }
00193 
00194 
00195 void Address::setRegion( const QString &s )
00196 {
00197   mEmpty = false;
00198 
00199   mRegion = s;
00200 }
00201 
00202 QString Address::region() const
00203 {
00204   return mRegion;
00205 }
00206 
00207 QString Address::regionLabel()
00208 {
00209   return i18n("Region");
00210 }
00211 
00212 
00213 void Address::setPostalCode( const QString &s )
00214 {
00215   mEmpty = false;
00216 
00217   mPostalCode = s;
00218 }
00219 
00220 QString Address::postalCode() const
00221 {
00222   return mPostalCode;
00223 }
00224 
00225 QString Address::postalCodeLabel()
00226 {
00227   return i18n("Postal Code");
00228 }
00229 
00230 
00231 void Address::setCountry( const QString &s )
00232 {
00233   mEmpty = false;
00234 
00235   mCountry = s;
00236 }
00237 
00238 QString Address::country() const
00239 {
00240   return mCountry;
00241 }
00242 
00243 QString Address::countryLabel()
00244 {
00245   return i18n("Country");
00246 }
00247 
00248 
00249 void Address::setLabel( const QString &s )
00250 {
00251   mEmpty = false;
00252 
00253   mLabel = s;
00254 }
00255 
00256 QString Address::label() const
00257 {
00258   return mLabel;
00259 }
00260 
00261 QString Address::labelLabel()
00262 {
00263   return i18n("Delivery Label");
00264 }
00265 
00266 Address::TypeList Address::typeList()
00267 {
00268   TypeList list;
00269 
00270   list << Dom << Intl << Postal << Parcel << Home << Work << Pref;
00271 
00272   return list;
00273 }
00274 
00275 QString Address::typeLabel( int type )
00276 {
00277   switch ( type ) {
00278     case Dom:
00279       return i18n("Domestic");
00280       break;
00281     case Intl:
00282       return i18n("International");
00283       break;
00284     case Postal:
00285       return i18n("Postal");
00286       break;
00287     case Parcel:
00288       return i18n("Parcel");
00289       break;
00290     case Home:
00291       return i18n("Home Address", "Home");
00292       break;
00293     case Work:
00294       return i18n("Work Address", "Work");
00295       break;
00296     case Pref:
00297       return i18n("Preferred Address");
00298       break;
00299     default:
00300       return i18n("Other");
00301       break;
00302   }
00303 }
00304 
00305 void Address::dump() const
00306 {
00307   kdDebug(5700) << "  Address {" << endl;
00308   kdDebug(5700) << "    Id: " << id() << endl;
00309   kdDebug(5700) << "    Extended: " << extended() << endl;
00310   kdDebug(5700) << "    Street: " << street() << endl;
00311   kdDebug(5700) << "    Postal Code: " << postalCode() << endl;
00312   kdDebug(5700) << "    Locality: " << locality() << endl;
00313   kdDebug(5700) << "  }" << endl;
00314 }
00315 
00316 QDataStream &KABC::operator<<( QDataStream &s, const Address &addr )
00317 {
00318     return s << addr.mId << addr.mType << addr.mPostOfficeBox <<
00319         addr.mExtended << addr.mStreet << addr.mLocality <<
00320         addr.mRegion << addr.mPostalCode << addr.mCountry <<
00321         addr.mLabel;
00322 }
00323 
00324 QDataStream &KABC::operator>>( QDataStream &s, Address &addr )
00325 {
00326     s >> addr.mId >> addr.mType >> addr.mPostOfficeBox >> addr.mExtended >>
00327         addr.mStreet >> addr.mLocality >> addr.mRegion >>
00328         addr.mPostalCode >> addr.mCountry >> addr.mLabel;
00329 
00330     addr.mEmpty = false;
00331 
00332     return s;
00333 }
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:16:06 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001