summaryrefslogtreecommitdiffabout
path: root/libkdepim/addresseeview.cpp
Side-by-side diff
Diffstat (limited to 'libkdepim/addresseeview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libkdepim/addresseeview.cpp282
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\">&nbsp;</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\">&nbsp;</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);
+ }
+}