agent.cpp
00001 /* 00002 This file is part of libkabc. 00003 Copyright (c) 2002 Tobias Koenig <tokoe@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., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 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 }