summaryrefslogtreecommitdiffstats
path: root/libkdepim/addresseeview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libkdepim/addresseeview.cpp')
-rw-r--r--libkdepim/addresseeview.cpp792
1 files changed, 0 insertions, 792 deletions
diff --git a/libkdepim/addresseeview.cpp b/libkdepim/addresseeview.cpp
deleted file mode 100644
index 15c7215e..00000000
--- a/libkdepim/addresseeview.cpp
+++ /dev/null
@@ -1,792 +0,0 @@
-/*
- This file is part of libtdepim.
-
- 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., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqbuffer.h>
-#include <tqimage.h>
-#include <tqpopupmenu.h>
-#include <tqurl.h>
-
-#include <kabc/address.h>
-#include <kabc/addressee.h>
-#include <kabc/phonenumber.h>
-#include <kabc/resource.h>
-#include <kactionclasses.h>
-#include <kapplication.h>
-#include <kconfig.h>
-#include <kglobal.h>
-#include <kglobalsettings.h>
-#include <kiconloader.h>
-#include <kio/job.h>
-#include <klocale.h>
-#include <kmdcodec.h>
-#include <kmessagebox.h>
-#include <krun.h>
-#include <kstringhandler.h>
-#include <ktempfile.h>
-
-#include <kdebug.h>
-
-#include "addresseeview.h"
-#include "sendsmsdialog.h"
-#include "resourceabc.h"
-
-using namespace KPIM;
-
-AddresseeView::AddresseeView( TQWidget *parent, const char *name,
- KConfig *config )
- : KTextBrowser( parent, name ), mDefaultConfig( false ), mImageJob( 0 ),
- mLinkMask( AddressLinks | EmailLinks | PhoneLinks | URLLinks | IMLinks | CustomFields )
-{
- setWrapPolicy( TQTextEdit::AtWordBoundary );
- setLinkUnderline( false );
- setVScrollBarMode( TQScrollView::AlwaysOff );
- setHScrollBarMode( TQScrollView::AlwaysOff );
-
- TQStyleSheet *sheet = styleSheet();
- TQStyleSheetItem *link = sheet->item( "a" );
- link->setColor( KGlobalSettings::linkColor() );
-
- connect( this, TQT_SIGNAL( mailClick( const TQString&, const TQString& ) ),
- this, TQT_SLOT( slotMailClicked( const TQString&, const TQString& ) ) );
- connect( this, TQT_SIGNAL( urlClick( const TQString& ) ),
- this, TQT_SLOT( slotUrlClicked( const TQString& ) ) );
- connect( this, TQT_SIGNAL( highlighted( const TQString& ) ),
- this, TQT_SLOT( slotHighlighted( const TQString& ) ) );
-
- setNotifyClick( true );
-
- mActionShowBirthday = new KToggleAction( i18n( "Show Birthday" ) );
- mActionShowBirthday->setCheckedState( i18n( "Hide Birthday" ) );
- mActionShowAddresses = new KToggleAction( i18n( "Show Postal Addresses" ) );
- mActionShowAddresses->setCheckedState( i18n( "Hide Postal Addresses" ) );
- mActionShowEmails = new KToggleAction( i18n( "Show Email Addresses" ) );
- mActionShowEmails->setCheckedState( i18n( "Hide Email Addresses" ) );
- mActionShowPhones = new KToggleAction( i18n( "Show Telephone Numbers" ) );
- mActionShowPhones->setCheckedState( i18n( "Hide Telephone Numbers" ) );
- mActionShowURLs = new KToggleAction( i18n( "Show Web Pages (URLs)" ) );
- mActionShowURLs->setCheckedState( i18n( "Hide Web Pages (URLs)" ) );
- mActionShowIMAddresses = new KToggleAction( i18n( "Show Instant Messaging Addresses" ) );
- mActionShowIMAddresses->setCheckedState( i18n( "Hide Instant Messaging Addresses" ) );
- mActionShowCustomFields = new KToggleAction( i18n( "Show Custom Fields" ) );
- mActionShowCustomFields->setCheckedState( i18n( "Hide Custom Fields" ) );
-
- connect( mActionShowBirthday, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowAddresses, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowEmails, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowPhones, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowURLs, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowIMAddresses, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
- connect( mActionShowCustomFields, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( configChanged() ) );
-
- if ( !config ) {
- mConfig = new KConfig( "kaddressbookrc" );
- mDefaultConfig = true;
- } else
- mConfig = config;
-
- load();
-
- // set up IMProxy to display contacts' IM presence and make connections to keep the display live
- mKIMProxy = ::KIMProxy::instance( kapp->dcopClient() );
- connect( mKIMProxy, TQT_SIGNAL( sigContactPresenceChanged( const TQString& ) ),
- this, TQT_SLOT( slotPresenceChanged( const TQString& ) ) );
- connect( mKIMProxy, TQT_SIGNAL( sigPresenceInfoExpired() ),
- this, TQT_SLOT( slotPresenceInfoExpired() ) );
-}
-
-AddresseeView::~AddresseeView()
-{
- if ( mDefaultConfig )
- delete mConfig;
- mConfig = 0;
-
- delete mActionShowBirthday;
- delete mActionShowAddresses;
- delete mActionShowEmails;
- delete mActionShowPhones;
- delete mActionShowURLs;
- delete mActionShowIMAddresses;
- delete mActionShowCustomFields;
-
- mKIMProxy = 0;
-}
-
-void AddresseeView::setAddressee( const KABC::Addressee& addr )
-{
- mAddressee = addr;
-
- if ( mImageJob ) {
- mImageJob->kill();
- mImageJob = 0;
- }
-
- mImageData.truncate( 0 );
-
- updateView();
-}
-
-void AddresseeView::enableLinks( int linkMask )
-{
- mLinkMask = linkMask;
-}
-
-TQString AddresseeView::vCardAsHTML( const KABC::Addressee& addr, ::KIMProxy *proxy, LinkMask linkMask,
- bool internalLoading, FieldMask fieldMask )
-{
- TQString image = TQString( "contact_%1_image" ).tqarg( addr.uid() );
-
- // Style strings from Gentix; this is just an initial version.
- //
- // These will be substituted into various HTML strings with .tqarg().
- // Search for @STYLE@ to find where. Note how we use %1 as a
- // placeholder where we fill in something else (in this case,
- // the global background color).
- //
- TQString backgroundColor = KGlobalSettings::alternateBackgroundColor().name();
- TQString cellStyle = TQString::tqfromLatin1(
- "style=\""
- "padding-right: 2px; "
- "border-right: #000 dashed 1px; "
- "background: %1;\"").tqarg(backgroundColor);
- TQString backgroundColor2 = KGlobalSettings::baseColor().name();
- TQString cellStyle2 = TQString::tqfromLatin1(
- "style=\""
- "padding-left: 2px; "
- "background: %1;\"").tqarg(backgroundColor2);
- TQString tableStyle = TQString::tqfromLatin1(
- "style=\""
- "border: solid 1px; "
- "margin: 0em;\"");
-
- // We'll be building a table to display the vCard in.
- // Each row of the table will be built using this string for its HTML.
- //
- TQString rowFmtStr = TQString::tqfromLatin1(
- "<tr>"
- "<td align=\"right\" valign=\"top\" width=\"30%\" "); // Tag unclosed
- rowFmtStr.append( cellStyle );
- rowFmtStr.append( TQString::tqfromLatin1(
- ">" // Close tag
- "<b>%1</b>"
- "</td>"
- "<td align=\"left\" valign=\"top\" width=\"70%\" ") ); // Tag unclosed
- rowFmtStr.append( cellStyle2 );
- rowFmtStr.append( TQString::tqfromLatin1(
- ">" // Close tag
- "%2"
- "</td>"
- "</tr>\n"
- ) );
-
- // Build the table's rows here
- TQString dynamicPart;
-
-
- if ( !internalLoading ) {
- KABC::Picture pic = addr.photo();
- if ( pic.isIntern() && !pic.data().isNull() ) {
- image = pixmapAsDataUrl( pic.data() );
- } else if ( !pic.url().isEmpty() ) {
- image = (pic.url().startsWith( "http://" ) || pic.url().startsWith( "https://" ) ? pic.url() : "http://" + pic.url());
- } else {
- image = "file:" + KGlobal::iconLoader()->iconPath( "personal", KIcon::Desktop );
- }
- }
-
- if ( fieldMask & BirthdayFields ) {
- TQDate date = addr.birthday().date();
-
- if ( date.isValid() )
- dynamicPart += rowFmtStr
- .tqarg( KABC::Addressee::birthdayLabel() )
- .tqarg( KGlobal::locale()->formatDate( date, true ) );
- }
-
- if ( fieldMask & PhoneFields ) {
- KABC::PhoneNumber::List phones = addr.phoneNumbers();
- KABC::PhoneNumber::List::ConstIterator phoneIt;
- for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
- TQString number = TQStyleSheet::escape( (*phoneIt).number() );
-
- TQString url;
- if ( (*phoneIt).type() & KABC::PhoneNumber::Fax )
- url = TQString::tqfromLatin1( "fax:" ) + number;
- else
- url = TQString::tqfromLatin1( "phone:" ) + number;
-
- if ( linkMask & PhoneLinks ) {
- TQString smsURL;
- if ( (*phoneIt).type() & KABC::PhoneNumber::Cell )
- smsURL = TQString(" (<a href=\"sms:%1\">%2</a>)" ).tqarg( number ).tqarg( i18n( "SMS") );
-
- dynamicPart += rowFmtStr
- .tqarg( (*phoneIt).typeLabel().replace( " ", "&nbsp;" ) )
- .tqarg( TQString::tqfromLatin1( "<a href=\"%1\">%2</a>%3" ).tqarg( url ).tqarg( number ).tqarg( smsURL ) );
- } else {
- dynamicPart += rowFmtStr
- .tqarg( (*phoneIt).typeLabel().replace( " ", "&nbsp;" ) )
- .tqarg( number );
- }
- }
- }
-
- if ( fieldMask & EmailFields ) {
- TQStringList emails = addr.emails();
- TQStringList::ConstIterator emailIt;
- TQString type = i18n( "Email" );
- for ( emailIt = emails.begin(); emailIt != emails.end(); ++emailIt ) {
- TQString fullEmail = addr.fullEmail( *emailIt );
- TQUrl::encode( fullEmail );
-
- if ( linkMask & EmailLinks ) {
- dynamicPart += rowFmtStr.tqarg( type )
- .tqarg( TQString::tqfromLatin1( "<a href=\"mailto:%1\">%2</a>" )
- .tqarg( fullEmail, TQStyleSheet::escape( *emailIt ) ) );
- } else {
- dynamicPart += rowFmtStr.tqarg( type ).tqarg( *emailIt );
- }
- }
- }
-
- if ( fieldMask & URLFields ) {
- if ( !addr.url().url().isEmpty() ) {
- TQString url;
- if ( linkMask & URLLinks ) {
- url = (addr.url().url().startsWith( "http://" ) || addr.url().url().startsWith( "https://" ) ? addr.url().prettyURL() :
- "http://" + addr.url().prettyURL());
- url = KStringHandler::tagURLs( url );
- } else {
- url = addr.url().prettyURL();
- }
- dynamicPart += rowFmtStr.tqarg( i18n("Homepage") ).tqarg( url );
- }
-
- TQString blog = addr.custom( "KADDRESSBOOK", "BlogFeed" );
- if ( !blog.isEmpty() ) {
- if ( linkMask & URLLinks ) {
- blog = KStringHandler::tagURLs( blog );
- }
- dynamicPart += rowFmtStr.tqarg( i18n("Blog Feed") ).tqarg( blog );
- }
- }
-
- if ( fieldMask & AddressFields ) {
- KABC::Address::List addresses = addr.addresses();
- KABC::Address::List::ConstIterator addrIt;
- for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) {
- if ( (*addrIt).label().isEmpty() ) {
- TQString formattedAddress;
-
- formattedAddress = TQStyleSheet::escape( (*addrIt).formattedAddress().stripWhiteSpace() );
- formattedAddress = formattedAddress.replace( '\n', "<br>" );
-
- TQString link = "<a href=\"addr:" + (*addrIt).id() + "\">" +
- formattedAddress + "</a>";
-
- if ( linkMask & AddressLinks ) {
- dynamicPart += rowFmtStr
- .tqarg( KABC::Address::typeLabel( (*addrIt).type() ) )
- .tqarg( link );
- } else {
- dynamicPart += rowFmtStr
- .tqarg( KABC::Address::typeLabel( (*addrIt).type() ) )
- .tqarg( formattedAddress );
- }
- } else {
- TQString link = "<a href=\"addr:" + (*addrIt).id() + "\">" +
- (*addrIt).label().replace( '\n', "<br>" ) + "</a>";
-
- if ( linkMask & AddressLinks ) {
- dynamicPart += rowFmtStr
- .tqarg( KABC::Address::typeLabel( (*addrIt).type() ) )
- .tqarg( link );
- } else {
- dynamicPart += rowFmtStr
- .tqarg( KABC::Address::typeLabel( (*addrIt).type() ) )
- .tqarg( (*addrIt).label().replace( '\n', "<br>" ) );
- }
- }
- }
- }
-
- TQString notes;
- if ( !addr.note().isEmpty() ) {
- // @STYLE@ - substitute the cell style in first, and append
- // the data afterwards (keeps us safe from possible % signs
- // in either one).
- notes = TQStyleSheet::escape( addr.note() );
- notes = rowFmtStr.tqarg( i18n( "Notes" ) ).tqarg( notes.replace( '\n', "<br>" ) ) ;
- }
-
- TQString customData;
- if ( fieldMask & CustomFields ) {
- static TQMap<TQString, TQString> titleMap;
- if ( titleMap.isEmpty() ) {
- titleMap.insert( "Department", i18n( "Department" ) );
- titleMap.insert( "Profession", i18n( "Profession" ) );
- titleMap.insert( "AssistantsName", i18n( "Assistant's Name" ) );
- titleMap.insert( "ManagersName", i18n( "Manager's Name" ) );
- titleMap.insert( "SpousesName", i18n( "Partner's Name" ) );
- titleMap.insert( "Office", i18n( "Office" ) );
- titleMap.insert( "Anniversary", i18n( "Anniversary" ) );
- }
-
- if ( !addr.customs().empty() ) {
- TQStringList customs = addr.customs();
- TQStringList::Iterator it( customs.begin() );
- const TQStringList::Iterator endIt( customs.end() );
- for ( ; it != endIt; ++it ) {
- TQString customEntry = *it;
- if ( customEntry.startsWith ( "KADDRESSBOOK-" ) ) {
- customEntry.remove( "KADDRESSBOOK-X-" );
- customEntry.remove( "KADDRESSBOOK-" );
-
- int pos = customEntry.find( ':' );
- TQString key = customEntry.left( pos );
- const TQString value = customEntry.mid( pos + 1 );
-
- // blog and im address is handled separated
- if ( key == "BlogFeed" || key == "IMAddress" )
- continue;
-
- const TQMap<TQString, TQString>::ConstIterator keyIt = titleMap.find( key );
- if ( keyIt != titleMap.end() )
- key = keyIt.data();
-
- customData += rowFmtStr.tqarg( key ).tqarg( TQStyleSheet::escape( value ) ) ;
- }
- }
- }
- }
-
- TQString name( TQStyleSheet::escape( addr.realName() ) );
- TQString role( TQStyleSheet::escape( addr.role() ) );
- TQString organization( TQStyleSheet::escape( addr.organization() ) );
-
- if ( fieldMask & IMFields ) {
-
- const TQString imAddress = addr.custom( "KADDRESSBOOK", "X-IMAddress" );
- if ( !imAddress.isEmpty() ) {
- customData += rowFmtStr.tqarg( i18n( "IM Address" ) ).tqarg( TQStyleSheet::escape( imAddress ) ) ;
- }
-
- if ( proxy ) {
- if ( proxy->isPresent( addr.uid() ) && proxy->presenceNumeric( addr.uid() ) > 0 ) {
- // set image source to either a TQMimeSourceFactory key or a data:/ URL
- TQString imgSrc;
- if ( internalLoading ) {
- imgSrc = TQString::tqfromLatin1( "im_status_%1_image").tqarg( addr.uid() );
- TQMimeSourceFactory::defaultFactory()->setPixmap( imgSrc, proxy->presenceIcon( addr.uid() ) );
- } else
- imgSrc = pixmapAsDataUrl( proxy->presenceIcon( addr.uid() ) );
-
- // make the status a link, if required
- TQString imtqStatus;
- if ( linkMask & IMLinks )
- imtqStatus = TQString::tqfromLatin1( "<a href=\"im:\"><img src=\"%1\"> (%2)</a>" );
- else
- imtqStatus = TQString::tqfromLatin1( "<img src=\"%1\"> (%2)" );
-
- // append our status to the rest of the dynamic part of the addressee
- dynamicPart += rowFmtStr
- .tqarg( i18n( "Presence" ) )
- .tqarg( imtqStatus
- .tqarg( imgSrc )
- .tqarg( proxy->presenceString( addr.uid() ) )
- );
- }
- }
- }
-
- // @STYLE@ - construct the string by parts, substituting in
- // the styles first. There are lots of appends, but we need to
- // do it this way to avoid cases where the substituted string
- // contains %1 and the like.
- //
- TQString strAddr = TQString::tqfromLatin1(
- "<div align=\"center\">"
- "<table cellpadding=\"1\" cellspacing=\"0\" %1>"
- "<tr>").tqarg(tableStyle);
-
- strAddr.append( TQString::tqfromLatin1(
- "<td align=\"right\" valign=\"top\" width=\"30%\" rowspan=\"3\" %2>")
- .tqarg( cellStyle ) );
- strAddr.append( TQString::tqfromLatin1(
- "<img src=\"%1\" width=\"50\" vspace=\"1\">" // image
- "</td>")
- .tqarg( image ) );
- strAddr.append( TQString::tqfromLatin1(
- "<td align=\"left\" width=\"70%\" %2>")
- .tqarg( cellStyle2 ) );
- strAddr.append( TQString::tqfromLatin1(
- "<font size=\"+2\"><b>%2</b></font></td>" // name
- "</tr>")
- .tqarg( name ) );
- strAddr.append( TQString::tqfromLatin1(
- "<tr>"
- "<td align=\"left\" width=\"70%\" %2>")
- .tqarg( cellStyle2 ) );
- strAddr.append( TQString::tqfromLatin1(
- "%3</td>" // role
- "</tr>")
- .tqarg( role ) );
- strAddr.append( TQString::tqfromLatin1(
- "<tr>"
- "<td align=\"left\" width=\"70%\" %2>")
- .tqarg( cellStyle2 ) );
- strAddr.append( TQString::tqfromLatin1(
- "%4</td>" // organization
- "</tr>")
- .tqarg( organization ) );
- strAddr.append( TQString::tqfromLatin1(
- "<tr><td %2>")
- .tqarg( cellStyle ) );
- strAddr.append( TQString::tqfromLatin1(
- "&nbsp;</td><td %2>&nbsp;</td></tr>")
- .tqarg( cellStyle2 ) );
- strAddr.append( dynamicPart );
- strAddr.append( notes );
- strAddr.append( customData );
- strAddr.append( TQString::tqfromLatin1( "</table></div>\n" ) );
-
- if ( addr.resource() ) {
- TQString addrBookName = addr.resource()->resourceName();
- ResourceABC *r = dynamic_cast<ResourceABC*>( addr.resource() );
- if ( r && !r->subresources().isEmpty() ) {
- const TQString subRes = r->uidToResourceMap()[ addr.uid() ];
- const TQString label = r->subresourceLabel( subRes );
- if ( !label.isEmpty() )
- addrBookName = label;
- }
- strAddr.append( i18n( "<p><b>Address book</b>: %1</p>" ).tqarg( addrBookName ) );
- }
- return strAddr;
-}
-
-TQString AddresseeView::pixmapAsDataUrl( const TQPixmap& pixmap )
-{
- TQByteArray ba;
- TQBuffer buffer( ba );
- buffer.open( IO_WriteOnly );
- pixmap.save( &buffer, "PNG" );
- TQString encoded( "data:image/png;base64," );
- encoded.append( KCodecs::base64Encode( ba ) );
- return encoded;
-}
-
-void AddresseeView::updateView()
-{
- // clear view
- setText( TQString() );
-
- if ( mAddressee.isEmpty() )
- return;
-
- if ( mImageJob ) {
- mImageJob->kill();
- mImageJob = 0;
-
- mImageData.truncate( 0 );
- }
-
- int fieldMask = NoFields;
- if ( mActionShowBirthday->isChecked() )
- fieldMask |= ( FieldMask )BirthdayFields;
- if ( mActionShowAddresses->isChecked() )
- fieldMask |= AddressFields;
- if ( mActionShowEmails->isChecked() )
- fieldMask |= EmailFields;
- if ( mActionShowPhones->isChecked() )
- fieldMask |= PhoneFields;
- if ( mActionShowURLs->isChecked() )
- fieldMask |= URLFields;
- if ( mActionShowIMAddresses->isChecked() )
- fieldMask |= IMFields;
- if ( mActionShowCustomFields->isChecked() )
- fieldMask |= CustomFields;
-
- TQString strAddr = vCardAsHTML( mAddressee, mKIMProxy, (LinkMask)mLinkMask,
- true, (FieldMask)fieldMask );
-
- strAddr = TQString::tqfromLatin1(
- "<html>"
- "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
- "%3" // dynamic part
- "</body>"
- "</html>" )
- .tqarg( KGlobalSettings::textColor().name() )
- .tqarg( KGlobalSettings::baseColor().name() )
- .tqarg( strAddr );
-
- TQString imageURL = TQString( "contact_%1_image" ).tqarg( mAddressee.uid() );
-
- KABC::Picture picture = mAddressee.photo();
- if ( picture.isIntern() && !picture.data().isNull() )
- TQMimeSourceFactory::defaultFactory()->setImage( imageURL, picture.data() );
- else {
- if ( !picture.url().isEmpty() ) {
- if ( mImageData.count() > 0 )
- TQMimeSourceFactory::defaultFactory()->setImage( imageURL, TQImage(mImageData) );
- else {
- mImageJob = KIO::get( KURL( picture.url() ), false, false );
- connect( mImageJob, TQT_SIGNAL( data( KIO::Job*, const TQByteArray& ) ),
- this, TQT_SLOT( data( KIO::Job*, const TQByteArray& ) ) );
- connect( mImageJob, TQT_SIGNAL( result( KIO::Job* ) ),
- this, TQT_SLOT( result( KIO::Job* ) ) );
- }
- } else {
- TQMimeSourceFactory::defaultFactory()->setPixmap( imageURL,
- KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 128 ) );
- }
- }
-
- // at last display it...
- setText( strAddr );
-}
-
-KABC::Addressee AddresseeView::addressee() const
-{
- return mAddressee;
-}
-
-void AddresseeView::urlClicked( const TQString &url )
-{
- kapp->invokeBrowser( url );
-}
-
-void AddresseeView::emailClicked( const TQString &email )
-{
- if ( email.startsWith( "mailto:" ) )
- kapp->invokeMailer( email.mid( 7 ), TQString() );
- else
- kapp->invokeMailer( email, TQString() );
-}
-
-void AddresseeView::phoneNumberClicked( const TQString &number )
-{
- KConfig config( "kaddressbookrc" );
- config.setGroup( "General" );
- TQString commandLine = config.readEntry( "PhoneHookApplication" );
-
- if ( commandLine.isEmpty() ) {
- KMessageBox::sorry( this, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) );
- return;
- }
-
- commandLine.replace( "%N", number );
- KRun::runCommand( commandLine );
-}
-
-void AddresseeView::smsTextClicked( const TQString &number )
-{
- KConfig config( "kaddressbookrc" );
- config.setGroup( "General" );
- TQString commandLine = config.readEntry( "SMSHookApplication" );
-
- if ( commandLine.isEmpty() ) {
- KMessageBox::sorry( this, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) );
- return;
- }
-
- SendSMSDialog dlg( mAddressee.realName(), this );
-
- if ( dlg.exec() )
- sendSMS ( number, dlg.text() );
-}
-
-void AddresseeView::sendSMS( const TQString &number, const TQString &text )
-{
- KConfig config( "kaddressbookrc" );
- config.setGroup( "General" );
- TQString commandLine = config.readEntry( "SMSHookApplication" );
-
- KTempFile file ;
- TQTextStream* stream = file.textStream();
- *stream << text;
- file.close();
-
- commandLine.replace( "%N", number );
- commandLine.replace( "%F", file.name() );
-
- KRun::runCommand( commandLine );
-}
-
-void AddresseeView::faxNumberClicked( const TQString &number )
-{
- KConfig config( "kaddressbookrc" );
- config.setGroup( "General" );
- TQString commandLine = config.readEntry( "FaxHookApplication", "tdeprintfax --phone %N" );
-
- if ( commandLine.isEmpty() ) {
- KMessageBox::sorry( this, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) );
- return;
- }
-
- commandLine.replace( "%N", number );
- KRun::runCommand( commandLine );
-}
-
-void AddresseeView::imAddressClicked()
-{
- mKIMProxy->chatWithContact( mAddressee.uid() );
-}
-
-TQPopupMenu *AddresseeView::createPopupMenu( const TQPoint& )
-{
- TQPopupMenu *menu = new TQPopupMenu( this );
- mActionShowBirthday->plug( menu );
- mActionShowAddresses->plug( menu );
- mActionShowEmails->plug( menu );
- mActionShowPhones->plug( menu );
- mActionShowURLs->plug( menu );
- mActionShowIMAddresses->plug( menu );
- mActionShowCustomFields->plug( menu );
-
- return menu;
-}
-
-void AddresseeView::slotMailClicked( const TQString&, const TQString &email )
-{
- emailClicked( email );
-}
-
-void AddresseeView::slotUrlClicked( const TQString &url )
-{
- if ( url.startsWith( "phone:" ) )
- phoneNumberClicked( strippedNumber( url.mid( 8 ) ) );
- else if ( url.startsWith( "sms:" ) )
- smsTextClicked( strippedNumber( url.mid( 6 ) ) );
- else if ( url.startsWith( "fax:" ) )
- faxNumberClicked( strippedNumber( url.mid( 6 ) ) );
- else if ( url.startsWith( "addr:" ) )
- emit addressClicked( url.mid( 7 ) );
- else if ( url.startsWith( "im:" ) )
- imAddressClicked();
- else
- urlClicked( url );
-}
-
-void AddresseeView::slotHighlighted( const TQString &link )
-{
- if ( link.startsWith( "mailto:" ) ) {
- TQString email = link.mid( 7 );
-
- emit emailHighlighted( email );
- emit highlightedMessage( i18n( "Send mail to '%1'" ).tqarg( email ) );
- } else if ( link.startsWith( "phone:" ) ) {
- TQString number = link.mid( 8 );
-
- emit phoneNumberHighlighted( strippedNumber( number ) );
- emit highlightedMessage( i18n( "Call number %1" ).tqarg( number ) );
- } else if ( link.startsWith( "fax:" ) ) {
- TQString number = link.mid( 6 );
-
- emit faxNumberHighlighted( strippedNumber( number ) );
- emit highlightedMessage( i18n( "Send fax to %1" ).tqarg( number ) );
- } else if ( link.startsWith( "addr:" ) ) {
- emit highlightedMessage( i18n( "Show address on map" ) );
- } else if ( link.startsWith( "sms:" ) ) {
- TQString number = link.mid( 6 );
- emit highlightedMessage( i18n( "Send SMS to %1" ).tqarg( number ) );
- } else if ( link.startsWith( "http:" ) || link.startsWith( "https:" ) ) {
- emit urlHighlighted( link );
- emit highlightedMessage( i18n( "Open URL %1" ).tqarg( link ) );
- } else if ( link.startsWith( "im:" ) ) {
- emit highlightedMessage( i18n( "Chat with %1" ).tqarg( mAddressee.realName() ) );
- } else
- emit highlightedMessage( "" );
-}
-
-void AddresseeView::slotPresenceChanged( const TQString &uid )
-{
- kdDebug() << k_funcinfo << " uid is: " << uid << " mAddressee is: " << mAddressee.uid() << endl;
- if ( uid == mAddressee.uid() )
- updateView();
-}
-
-
-void AddresseeView::slotPresenceInfoExpired()
-{
- updateView();
-}
-
-void AddresseeView::configChanged()
-{
- save();
- updateView();
-}
-
-void AddresseeView::data( KIO::Job*, const TQByteArray &d )
-{
- unsigned int oldSize = mImageData.size();
- mImageData.resize( oldSize + d.size() );
- memcpy( mImageData.data() + oldSize, d.data(), d.size() );
-}
-
-void AddresseeView::result( KIO::Job *job )
-{
- mImageJob = 0;
-
- if ( job->error() )
- mImageData.truncate( 0 );
- else
- updateView();
-}
-
-void AddresseeView::load()
-{
- mConfig->setGroup( "AddresseeViewSettings" );
- mActionShowBirthday->setChecked( mConfig->readBoolEntry( "ShowBirthday", false ) );
- mActionShowAddresses->setChecked( mConfig->readBoolEntry( "ShowAddresses", true ) );
- mActionShowEmails->setChecked( mConfig->readBoolEntry( "ShowEmails", true ) );
- mActionShowPhones->setChecked( mConfig->readBoolEntry( "ShowPhones", true ) );
- mActionShowURLs->setChecked( mConfig->readBoolEntry( "ShowURLs", true ) );
- mActionShowIMAddresses->setChecked( mConfig->readBoolEntry( "ShowIMAddresses", false ) );
- mActionShowCustomFields->setChecked( mConfig->readBoolEntry( "ShowCustomFields", false ) );
-}
-
-void AddresseeView::save()
-{
- mConfig->setGroup( "AddresseeViewSettings" );
- mConfig->writeEntry( "ShowBirthday", mActionShowBirthday->isChecked() );
- mConfig->writeEntry( "ShowAddresses", mActionShowAddresses->isChecked() );
- mConfig->writeEntry( "ShowEmails", mActionShowEmails->isChecked() );
- mConfig->writeEntry( "ShowPhones", mActionShowPhones->isChecked() );
- mConfig->writeEntry( "ShowURLs", mActionShowURLs->isChecked() );
- mConfig->writeEntry( "ShowIMAddresses", mActionShowIMAddresses->isChecked() );
- mConfig->writeEntry( "ShowCustomFields", mActionShowCustomFields->isChecked() );
- mConfig->sync();
-}
-
-TQString AddresseeView::strippedNumber( const TQString &number )
-{
- TQString retval;
-
- for ( uint i = 0; i < number.length(); ++i ) {
- TQChar c = number[ i ];
- if ( c.isDigit() || (((c == '*') || (c == '#') || (c == '+')) && (i == 0)) )
- retval.append( c );
- }
-
- return retval;
-}
-
-#include "addresseeview.moc"