agent.cpp00001
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 }
|