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
const TypeList list =
typeList();
00109
00110 TypeList::ConstIterator 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
static TypeList list;
00130
00131
if ( list.isEmpty() ) {
00132 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video
00133 << Bbs << Modem << Car << Isdn << Pcs << Pager;
00134 }
00135
00136
return list;
00137 }
00138
00139 QString PhoneNumber::label(
int type )
00140 {
00141
return typeLabel( type );
00142 }
00143
00144 QString PhoneNumber::typeLabel(
int type )
00145 {
00146
if ( type & Pref )
00147
return i18n(
"Preferred phone",
"Preferred" );
00148
00149
switch ( type ) {
00150
case Home:
00151
return i18n(
"Home phone",
"Home");
00152
break;
00153
case Work:
00154
return i18n(
"Work phone",
"Work");
00155
break;
00156
case Msg:
00157
return i18n(
"Messenger");
00158
break;
00159
case Pref:
00160
return i18n(
"Preferred Number");
00161
break;
00162
case Voice:
00163
return i18n(
"Voice");
00164
break;
00165
case Fax:
00166
return i18n(
"Fax");
00167
break;
00168
case Cell:
00169
return i18n(
"Mobile Phone",
"Mobile" );
00170
break;
00171
case Video:
00172
return i18n(
"Video");
00173
break;
00174
case Bbs:
00175
return i18n(
"Mailbox");
00176
break;
00177
case Modem:
00178
return i18n(
"Modem");
00179
break;
00180
case Car:
00181
return i18n(
"Car Phone",
"Car" );
00182
break;
00183
case Isdn:
00184
return i18n(
"ISDN");
00185
break;
00186
case Pcs:
00187
return i18n(
"PCS");
00188
break;
00189
case Pager:
00190
return i18n(
"Pager");
00191
break;
00192
case Home | Fax:
00193
return i18n(
"Home Fax");
00194
break;
00195
case Work | Fax:
00196
return i18n(
"Work Fax");
00197
break;
00198
default:
00199
return i18n(
"Other");
00200 }
00201 }
00202
00203
QDataStream &KABC::operator<<(
QDataStream &s,
const PhoneNumber &phone )
00204 {
00205
return s << phone.
mId << phone.
mType << phone.
mNumber;
00206 }
00207
00208
QDataStream &KABC::operator>>(
QDataStream &s,
PhoneNumber &phone )
00209 {
00210 s >> phone.
mId >> phone.
mType >> phone.
mNumber;
00211
00212
return s;
00213 }