-rw-r--r-- | libkdepim/addresseeview.cpp | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/libkdepim/addresseeview.cpp b/libkdepim/addresseeview.cpp new file mode 100644 index 0000000..deafd34 --- a/dev/null +++ b/libkdepim/addresseeview.cpp @@ -0,0 +1,282 @@ +/* + This file is part of libkdepim. + + Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include <kabc/address.h> +#include <kabc/addressee.h> +#include <kabc/phonenumber.h> +#include <kglobal.h> +//US#include <kglobalsettings.h> +#include <kiconloader.h> +#include <klocale.h> +//US #include <kstringhandler.h> +#include <qscrollview.h> +#include <qregexp.h> +#include <qfile.h> +#include <qapplication.h> + + +#include "addresseeview.h" + +using namespace KPIM; + +AddresseeView::AddresseeView( QWidget *parent, const char *name ) +//US : KTextBrowser( parent, name ) + : QTextBrowser( parent, name ) + + +{ +//US setWrapPolicy( QTextEdit::AtWordBoundary ); + setLinkUnderline( false ); + // setVScrollBarMode( QScrollView::AlwaysOff ); + //setHScrollBarMode( QScrollView::AlwaysOff ); + +//US QStyleSheet *sheet = styleSheet(); +//US QStyleSheetItem *link = sheet->item( "a" ); +//US link->setColor( KGlobalSettings::linkColor() ); + +} + +void AddresseeView::setAddressee( const KABC::Addressee& addr ) +{ + mAddressee = addr; + + // clear view + setText( QString::null ); + + if ( mAddressee.isEmpty() ) + return; + + QString name = ( mAddressee.formattedName().isEmpty() ? + mAddressee.assembledName() : mAddressee.formattedName() ); + + QString dynamicPart; + + KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); + KABC::PhoneNumber::List::ConstIterator phoneIt; + for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2</td></tr>" ) + .arg( KABC::PhoneNumber::typeLabel( (*phoneIt).type() ) ) + .arg( (*phoneIt).number() ); + } + + QStringList emails = mAddressee.emails(); + QStringList::ConstIterator emailIt; + QString type = i18n( "Email" ); + for ( emailIt = emails.begin(); emailIt != emails.end(); ++emailIt ) { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\"><a href=\"mailto:%2\">%3</a></td></tr>" ) + .arg( type ) + .arg( *emailIt ) + .arg( *emailIt ); + type = i18n( "Other" ); + } + + if ( !mAddressee.url().url().isEmpty() ) { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2</td></tr>" ) + .arg( i18n( "Homepage" ) ) +//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) ); + .arg( mAddressee.url().url() ); + //qDebug("AddresseeView::setAddressee has to be verified."); + } + + KABC::Address::List addresses = mAddressee.addresses(); + KABC::Address::List::ConstIterator addrIt; + for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { + if ( true /*(*addrIt).label().isEmpty()*/ ) { + QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); +//US formattedAddress = formattedAddress.replace( '\n', "<br>" ); + //qDebug("adresss %s ",formattedAddress.latin1() ); + formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); + //qDebug("AddresseeView::setAddressee has to be verified."); + + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2</td></tr>" ) + .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) + .arg( formattedAddress ); + } else { + + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2</td></tr>" ) + .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) +//US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); + .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); + + } + } + + QString notes; + if ( !mAddressee.note().isEmpty() ) { + notes = QString( + "<tr>" + "<td align=\"right\" valign=\"top\"><b>%1:</b></td>" // note label + "<td align=\"left\">%2</td>" // note + "</tr>" ).arg( i18n( "Notes" ) ) +//US .arg( mAddressee.note().replace( '\n', "<br>" ) ); + .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); + //qDebug("AddresseeView::setAddressee has to be verified."); + } + + QString aRole = ""; + QString aOrga = ""; + if ( true /*!mAddressee.role().isEmpty()*/ ) { + aRole = "<tr>" + "<td align=\"left\">" + mAddressee.role() + "</td>" + "</tr>"; + } + if ( true /*!mAddressee.organization().isEmpty()*/ ) { + aOrga = "<tr>" + "<td align=\"left\">" + mAddressee.organization() + "</td>" ; + "</tr>"; + } + mText = ""; + QString picString = ""; + KABC::Picture picture = mAddressee.photo(); + bool picAvailintern = false; + bool picAvailUrl = false; + if (! picture.undefined() ) { + picAvailintern = (picture.isIntern() && !picture.data().isNull()); + picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); + } + if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { + if ( picAvailintern ) { + QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); + } else { + if ( picAvailUrl ) { + QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() )); + } else { + QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) ); + } + } + picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; + mText = QString::fromLatin1( + "<html>" + "<body text=\"%1\" bgcolor=\"%2\">" // text and background color + "<table>" + "<tr>" + "<td rowspan=\"3\" align=\"right\" valign=\"top\">" + "%3" + "</td>" + "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name + "</tr>" + "%5" // role + "%6" // organization + "<td colspan=\"2\"> </td>" + "%7" // dynamic part + "%8" // notes + "</table>" + "</body>" + "</html>") +//US + .arg( /*KGlobalSettings::textColor().name()*/ "black" ) +//US + .arg( /*KGlobalSettings::baseColor().name()*/ "white" ) + .arg( picString ) + .arg( name ) + .arg( aRole ) + .arg( aOrga ) + .arg( dynamicPart ) + .arg( notes ); + + } else { // no picture! + +mText = "<table width=\"100%\">\n"; + //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; +#ifdef DESKTOP_VERSION + mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; +#else + mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>"; +#endif + +#ifdef DESKTOP_VERSION + mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>"; +#else + mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>"; +#endif + mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; + + mText += "<table><td colspan=\"2\"> </td>"; + /* + mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" + "<td align=\"left\"><b>%2</b></td></tr>" ) + .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 ); +} + +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>"; + } + } + else tmpStr += tmpText; + tmpStr+="</" + tag + ">"; + mText.append(tmpStr); + } + else + { + str += text + "</" + tag + ">"; + mText.append(str); + } +} |