-rw-r--r-- | kabc/addresseeview.cpp | 135 |
1 files changed, 73 insertions, 62 deletions
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp index 2dda968..af149a0 100644 --- a/kabc/addresseeview.cpp +++ b/kabc/addresseeview.cpp @@ -69,154 +69,96 @@ AddresseeView::AddresseeView( QWidget *parent, const char *name ) } void AddresseeView::setSource(const QString& n) { //qDebug("********AddresseeView::setSource %s", n.latin1()); if ( n.left( 6 ) == "mailto" ) ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); else if ( n.left( 7 ) == "phoneto" ) ExternalAppHandler::instance()->callByPhone( n.mid(8) ); else if ( n.left( 5 ) == "faxto" ) ExternalAppHandler::instance()->callByFax( n.mid(6) ); else if ( n.left( 5 ) == "smsto" ) ExternalAppHandler::instance()->callBySMS( n.mid(6) ); else if ( n.left( 7 ) == "pagerto" ) ExternalAppHandler::instance()->callByPager( n.mid(8) ); else if ( n.left( 5 ) == "sipto" ) ExternalAppHandler::instance()->callBySIP( n.mid(6) ); } void AddresseeView::setAddressee( const KABC::Addressee& addr ) { ExternalAppHandler* eah = ExternalAppHandler::instance(); bool kemailAvail = eah->isEmailAppAvailable(); - bool kphoneAvail = eah->isPhoneAppAvailable(); - bool kfaxAvail = eah->isFaxAppAvailable(); - bool ksmsAvail = eah->isSMSAppAvailable(); - bool kpagerAvail = eah->isPagerAppAvailable(); - bool ksipAvail = eah->isSIPAppAvailable(); + mAddressee = addr; // clear view setText( QString::null ); if ( mAddressee.isEmpty() ) return; QString name = ( mAddressee.assembledName().isEmpty() ? mAddressee.formattedName() : mAddressee.assembledName() ); QString dynamicPart; + dynamicPart += getPhoneNumbers( true ); + qDebug("dynamic preferred %s ",dynamicPart.latin1() ); QStringList emails = mAddressee.emails(); QStringList::ConstIterator emailIt; QString type = i18n( "Email" ); emailIt = emails.begin(); if ( emailIt != emails.end() ) { if ( kemailAvail ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) .arg( type ) .arg( name ) .arg( *emailIt ) .arg( *emailIt ); ++emailIt; } else { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( type ) .arg( *emailIt ); ++emailIt; } } if ( mAddressee.birthday().date().isValid() ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n ("Birthday") ) .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); } - KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); - KABC::PhoneNumber::List::ConstIterator phoneIt; - QString extension; - int phonetype; - QString sms; - for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { - phonetype = (*phoneIt).type(); - if (ksmsAvail && - ( - ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || - ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) - ) - ) - { - sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) - .arg( (*phoneIt).number() ); - - } - else - sms = ""; - - extension = QString::null; - if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { - if (kfaxAvail) extension = "faxto:"; - } - else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { - if (kpagerAvail) extension = "pagerto:"; - } - else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { - if (ksipAvail) extension = "sipto:"; - } - else if (kphoneAvail) { - extension = "phoneto:"; - } - else - extension = QString::null; - - if ( !extension.isEmpty() ) { - dynamicPart += QString( - "<tr><td align=\"right\"><b>%1</b></td>" - "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) - .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) - .arg( extension ) - .arg( (*phoneIt).number() ) - .arg( (*phoneIt).number() ) - .arg( sms ); - - } else { - dynamicPart += QString( - "<tr><td align=\"right\"><b>%1</b></td>" - "<td align=\"left\">%2 %3</td></tr>" ) - .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) - .arg( (*phoneIt).number() ) - .arg( sms ); - } - } - + dynamicPart += getPhoneNumbers( false ); for ( ; emailIt != emails.end(); ++emailIt ) { if ( kemailAvail ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) .arg( type ) .arg( name ) .arg( *emailIt ) .arg( *emailIt ); } else { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( type ) .arg( *emailIt ); } } if ( !mAddressee.url().url().isEmpty() ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n( "Homepage" ) ) @@ -349,48 +291,117 @@ mText = "<table width=\"100%\">\n"; .arg( i18n(" ") ) .arg( name ); */ if ( ! mAddressee.role().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.role()); if ( ! mAddressee.organization().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.organization()); mText += dynamicPart; mText += notes; mText += "</table>"; } // at last display it... setText( mText ); } +QString AddresseeView::getPhoneNumbers( bool preferred ) +{ + ExternalAppHandler* eah = ExternalAppHandler::instance(); + bool kphoneAvail = eah->isPhoneAppAvailable(); + bool kfaxAvail = eah->isFaxAppAvailable(); + bool ksmsAvail = eah->isSMSAppAvailable(); + bool kpagerAvail = eah->isPagerAppAvailable(); + bool ksipAvail = eah->isSIPAppAvailable(); + QString dynamicPart; + KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); + KABC::PhoneNumber::List::ConstIterator phoneIt; + QString extension; + int phonetype; + QString sms; + for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { + phonetype = (*phoneIt).type(); + if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) + continue; + if (ksmsAvail && + ( + ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || + ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) + ) + ) + { + sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) + .arg( (*phoneIt).number() ); + + } + else + sms = ""; + + extension = QString::null; + if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { + if (kfaxAvail) extension = "faxto:"; + } + else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { + if (kpagerAvail) extension = "pagerto:"; + } + else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { + if (ksipAvail) extension = "sipto:"; + } + else if (kphoneAvail) { + extension = "phoneto:"; + } + else + extension = QString::null; + + if ( !extension.isEmpty() ) { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) + .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) + .arg( extension ) + .arg( (*phoneIt).number() ) + .arg( (*phoneIt).number() ) + .arg( sms ); + + } else { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2 %3</td></tr>" ) + .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) + .arg( (*phoneIt).number() ) + .arg( sms ); + } + } + return dynamicPart; +} KABC::Addressee AddresseeView::addressee() const { return mAddressee; } void AddresseeView::addTag(const QString & tag,const QString & text) { if ( text.isEmpty() ) return; int number=text.contains("\n"); QString str = "<" + tag + ">"; QString tmpText=text; QString tmpStr=str; if(number !=-1) { if (number > 0) { int pos=0; QString tmp; for(int i=0;i<=number;i++) { pos=tmpText.find("\n"); tmp=tmpText.left(pos); tmpText=tmpText.right(tmpText.length()-pos-1); tmpStr+=tmp+"<br>"; } } |