00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "addressee.h"
00022
00023
#include "agent.h"
00024
00025
using namespace KABC;
00026
00027 Agent::Agent()
00028 : mAddressee( 0 ), mIntern( false )
00029 {
00030 }
00031
00032 Agent::Agent(
const QString &url )
00033 : mAddressee( 0 ),mUrl( url ), mIntern( false )
00034 {
00035 }
00036
00037 Agent::Agent(
Addressee *addressee )
00038 : mAddressee( addressee ), mIntern( true )
00039 {
00040 }
00041
00042 Agent::~Agent()
00043 {
00044
delete mAddressee;
00045 mAddressee = 0;
00046 }
00047
00048
bool Agent::operator==(
const Agent &a )
const
00049
{
00050
if ( mIntern != a.
mIntern )
00051
return false;
00052
00053
if ( !mIntern ) {
00054
if ( mUrl != a.
mUrl )
00055
return false;
00056 }
else {
00057
if ( mAddressee && !a.
mAddressee )
return false;
00058
if ( !mAddressee && a.
mAddressee )
return false;
00059
if ( !mAddressee && !a.
mAddressee )
return false;
00060
if ( (*mAddressee) != (*a.
mAddressee) )
return false;
00061 }
00062
00063
return true;
00064 }
00065
00066
bool Agent::operator!=(
const Agent &a )
const
00067
{
00068
return !( a == *
this );
00069 }
00070
00071
Agent &Agent::operator=(
const Agent &addr )
00072 {
00073
if (
this == &addr )
00074
return *
this;
00075
00076
if ( addr.
mIntern && addr.
mAddressee ) {
00077
if ( mAddressee )
00078
delete mAddressee;
00079
00080 mAddressee =
new Addressee;
00081 *mAddressee = *(addr.
mAddressee);
00082 }
00083
00084 mUrl = addr.
mUrl;
00085 mIntern = addr.
mIntern;
00086
00087
return *
this;
00088 }
00089
00090 void Agent::setUrl(
const QString &url )
00091 {
00092 mUrl = url;
00093 mIntern =
false;
00094 }
00095
00096 void Agent::setAddressee(
Addressee *addressee )
00097 {
00098 mAddressee = addressee;
00099 mIntern =
true;
00100 }
00101
00102 bool Agent::isIntern()
const
00103
{
00104
return mIntern;
00105 }
00106
00107 QString Agent::url()
const
00108
{
00109
return mUrl;
00110 }
00111
00112 Addressee *
Agent::addressee()
const
00113
{
00114
return mAddressee;
00115 }
00116
00117 QString Agent::asString()
const
00118
{
00119
if ( mIntern )
00120
return "intern agent";
00121
else
00122
return mUrl;
00123 }
00124
00125
QDataStream &KABC::operator<<(
QDataStream &s,
const Agent &agent )
00126 {
00127 Q_UINT32 hasAddressee = ( agent.
mAddressee != 0 );
00128
00129 s << agent.
mIntern << agent.
mUrl << hasAddressee;
00130
if ( hasAddressee )
00131 s << (*agent.
mAddressee);
00132
00133
return s;
00134 }
00135
00136
QDataStream &KABC::operator>>(
QDataStream &s,
Agent &agent )
00137 {
00138 Q_UINT32 hasAddressee;
00139
00140 s >> agent.
mIntern >> agent.
mUrl >> hasAddressee;
00141
00142
if ( hasAddressee ) {
00143 agent.
mAddressee =
new Addressee;
00144 s >> (*agent.
mAddressee);
00145 }
00146
00147
return s;
00148 }