00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
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 }