KCal Library
person.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00034 #include "person.h"
00035
00036 #include "kpimutils/email.h"
00037
00038 #include <QtCore/QRegExp>
00039
00040 #include <kdebug.h>
00041 #include <klocale.h>
00042
00043 using namespace KCal;
00044
00049
00050 class KCal::Person::Private
00051 {
00052 public:
00053 QString mName;
00054 QString mEmail;
00055 };
00056
00057
00058 Person::Person() : d( new KCal::Person::Private )
00059 {
00060 }
00061
00062 Person::Person( const QString &fullName ) : d( new KCal::Person::Private )
00063 {
00064 KPIMUtils::extractEmailAddressAndName( fullName, d->mEmail, d->mName );
00065 }
00066
00067 Person::Person( const QString &name, const QString &email )
00068 : d( new KCal::Person::Private )
00069 {
00070 d->mName = name;
00071 d->mEmail = email;
00072 }
00073
00074 Person::Person( const Person &person )
00075 : d( new KCal::Person::Private( *person.d ) )
00076 {
00077 }
00078
00079 Person::~Person()
00080 {
00081 delete d;
00082 }
00083
00084 bool KCal::Person::operator==( const Person &person )
00085 {
00086 return
00087 d->mName == person.d->mName &&
00088 d->mEmail == person.d->mEmail;
00089 }
00090
00091 Person &KCal::Person::operator=( const Person &person )
00092 {
00093 *d = *person.d;
00094 return *this;
00095 }
00096
00097 QString Person::fullName() const
00098 {
00099 if ( d->mName.isEmpty() ) {
00100 return d->mEmail;
00101 } else {
00102 if ( d->mEmail.isEmpty() ) {
00103 return d->mName;
00104 } else {
00105
00106 QString name = d->mName;
00107 QRegExp needQuotes( "[^ 0-9A-Za-z\\x0080-\\xFFFF]" );
00108 bool weNeedToQuote = name.indexOf( needQuotes ) != -1;
00109 if ( weNeedToQuote ) {
00110 if ( name[0] != '"' ) {
00111 name.prepend( '"' );
00112 }
00113 if ( name[ name.length()-1 ] != '"' ) {
00114 name.append( '"' );
00115 }
00116 }
00117 return name + " <" + d->mEmail + '>';
00118 }
00119 }
00120 }
00121
00122 QString Person::name() const
00123 {
00124 return d->mName;
00125 }
00126
00127 QString Person::email() const
00128 {
00129 return d->mEmail;
00130 }
00131
00132 bool Person::isEmpty() const
00133 {
00134 return d->mEmail.isEmpty() && d->mName.isEmpty();
00135 }
00136
00137 void Person::setName( const QString &name )
00138 {
00139 d->mName = name;
00140 }
00141
00142 void Person::setEmail( const QString &email )
00143 {
00144 if ( email.startsWith( "mailto:", Qt::CaseInsensitive ) ) {
00145 d->mEmail = email.mid( 7 );
00146 } else {
00147 d->mEmail = email;
00148 }
00149 }