kabc Library API Documentation

phonenumber.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 <klocale.h>
00023 
00024 #include "phonenumber.h"
00025 
00026 using namespace KABC;
00027 
00028 PhoneNumber::PhoneNumber() :
00029   mType( Home )
00030 {
00031   init();
00032 }
00033 
00034 PhoneNumber::PhoneNumber( const QString &number, int type ) :
00035   mType( type )
00036 {
00037   init();
00038 
00039   validateNumber( number );
00040 }
00041 
00042 PhoneNumber::~PhoneNumber()
00043 {
00044 }
00045 
00046 void PhoneNumber::init()
00047 {
00048   mId = KApplication::randomString( 8 );
00049 }
00050 
00051 void PhoneNumber::validateNumber( const QString &number )
00052 {
00053   mNumber = number;
00054 
00055   // remove line breaks
00056   mNumber = mNumber.replace( '\n', "" );
00057   mNumber = mNumber.replace( '\r', "" );
00058 }
00059 
00060 bool PhoneNumber::operator==( const PhoneNumber &p ) const
00061 {
00062   if ( mNumber != p.mNumber ) return false;
00063   if ( mType != p.mType ) return false;
00064 
00065   return true;
00066 }
00067 
00068 bool PhoneNumber::operator!=( const PhoneNumber &p ) const
00069 {
00070   return !( p == *this );
00071 }
00072 
00073 void PhoneNumber::setId( const QString &id )
00074 {
00075   mId = id;
00076 }
00077 
00078 QString PhoneNumber::id() const
00079 {
00080   return mId;
00081 }
00082 
00083 void PhoneNumber::setNumber( const QString &number )
00084 {
00085   validateNumber( number );
00086 }
00087 
00088 QString PhoneNumber::number() const
00089 {
00090   return mNumber;
00091 }
00092 
00093 void PhoneNumber::setType( int type )
00094 {
00095   mType = type;
00096 }
00097 
00098 int PhoneNumber::type() const
00099 {
00100   return mType;
00101 }
00102 
00103 QString PhoneNumber::typeLabel() const
00104 {
00105   QString label;
00106   bool first = true;
00107 
00108   TypeList list = typeList();
00109 
00110   TypeList::Iterator it;
00111   for ( it = list.begin(); it != list.end(); ++it ) {
00112     if ( ( type() & (*it) ) && ( (*it) != Pref ) ) {
00113       label.append( ( first ? "" : "/" ) + typeLabel( *it ) );
00114       if ( first )
00115         first = false;
00116     }
00117   }
00118 
00119   return label;
00120 }
00121 
00122 QString PhoneNumber::label() const
00123 {
00124   return typeLabel( type() );
00125 }
00126 
00127 PhoneNumber::TypeList PhoneNumber::typeList()
00128 {
00129   TypeList list;
00130   
00131   list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video
00132        << Bbs << Modem << Car << Isdn << Pcs << Pager;
00133 
00134   return list;
00135 }
00136 
00137 QString PhoneNumber::label( int type )
00138 {
00139   return typeLabel( type );
00140 }
00141 
00142 QString PhoneNumber::typeLabel( int type )
00143 {
00144   if ( type & Pref )
00145     return i18n( "Preferred phone", "Preferred" );
00146 
00147   switch ( type ) {
00148     case Home:
00149       return i18n("Home phone", "Home");
00150       break;
00151     case Work:
00152       return i18n("Work phone", "Work");
00153       break;
00154     case Msg:
00155       return i18n("Messenger");
00156       break;  
00157     case Pref:
00158       return i18n("Preferred Number");
00159       break;
00160     case Voice:
00161       return i18n("Voice");
00162       break;  
00163     case Fax:
00164       return i18n("Fax");
00165       break;  
00166     case Cell:
00167       return i18n("Mobile Phone", "Mobile" );
00168       break;  
00169     case Video:
00170       return i18n("Video");
00171       break;
00172     case Bbs:
00173       return i18n("Mailbox");
00174       break;
00175     case Modem:
00176       return i18n("Modem");
00177       break;
00178     case Car:
00179       return i18n("Car Phone", "Car" );
00180       break;
00181     case Isdn:
00182       return i18n("ISDN");
00183       break;
00184     case Pcs:
00185       return i18n("PCS");
00186       break;
00187     case Pager:
00188       return i18n("Pager");
00189       break;
00190     case Home | Fax:
00191       return i18n("Home Fax");
00192       break;
00193     case Work | Fax:
00194       return i18n("Work Fax");
00195       break;
00196     default:
00197       return i18n("Other");
00198   }
00199 }
00200 
00201 QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone )
00202 {
00203     return s << phone.mId << phone.mType << phone.mNumber;
00204 }
00205 
00206 QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone )
00207 {
00208     s >> phone.mId >> phone.mType >> phone.mNumber;
00209 
00210     return s;
00211 }
KDE Logo
This file is part of the documentation for kabc Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Feb 18 15:11:26 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003