summaryrefslogtreecommitdiffabout
path: root/libkdepim
Unidiff
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/addresseeview.cpp137
1 files changed, 89 insertions, 48 deletions
diff --git a/libkdepim/addresseeview.cpp b/libkdepim/addresseeview.cpp
index 83aba48..8fecaf8 100644
--- a/libkdepim/addresseeview.cpp
+++ b/libkdepim/addresseeview.cpp
@@ -1,251 +1,292 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 3
4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <kabc/address.h> 22#include <kabc/address.h>
23#include <kabc/addressee.h> 23#include <kabc/addressee.h>
24#include <kabc/phonenumber.h> 24#include <kabc/phonenumber.h>
25#include <kglobal.h> 25#include <kglobal.h>
26//US#include <kglobalsettings.h> 26//US#include <kglobalsettings.h>
27#include <kiconloader.h> 27#include <kiconloader.h>
28#include <klocale.h> 28#include <klocale.h>
29//US #include <kstringhandler.h> 29//US #include <kstringhandler.h>
30#include <qscrollview.h> 30#include <qscrollview.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qapplication.h> 33#include <qapplication.h>
34 34
35 35
36#include "externalapphandler.h"
36#include "addresseeview.h" 37#include "addresseeview.h"
37 38
38 39
39#ifndef DESKTOP_VERSION 40//US #ifndef DESKTOP_VERSION
40#include <qtopia/qcopenvelope_qws.h> 41//US #include <qtopia/qcopenvelope_qws.h>
41#include <qpe/qpeapplication.h> 42//US #include <qpe/qpeapplication.h>
42#endif 43//US #endif
43 44
44static int kphoneInstalled = 0; 45//US static int kphoneInstalled = 0;
45 46
46using namespace KPIM; 47using namespace KPIM;
47 48
48AddresseeView::AddresseeView( QWidget *parent, const char *name ) 49AddresseeView::AddresseeView( QWidget *parent, const char *name )
49//US : KTextBrowser( parent, name ) 50//US : KTextBrowser( parent, name )
50 : QTextBrowser( parent, name ) 51 : QTextBrowser( parent, name )
51 52
52 53
53{ 54{
54//US setWrapPolicy( QTextEdit::AtWordBoundary ); 55//US setWrapPolicy( QTextEdit::AtWordBoundary );
55 setLinkUnderline( false ); 56 setLinkUnderline( false );
56 // setVScrollBarMode( QScrollView::AlwaysOff ); 57 // setVScrollBarMode( QScrollView::AlwaysOff );
57 //setHScrollBarMode( QScrollView::AlwaysOff ); 58 //setHScrollBarMode( QScrollView::AlwaysOff );
58 59
59//US QStyleSheet *sheet = styleSheet(); 60//US QStyleSheet *sheet = styleSheet();
60//US QStyleSheetItem *link = sheet->item( "a" ); 61//US QStyleSheetItem *link = sheet->item( "a" );
61//US link->setColor( KGlobalSettings::linkColor() ); 62//US link->setColor( KGlobalSettings::linkColor() );
62 63
63} 64}
65
64void AddresseeView::setSource(const QString& n) 66void AddresseeView::setSource(const QString& n)
65{ 67{
66 qDebug("********AddresseeView::setSource %s", n.latin1()); 68 qDebug("********AddresseeView::setSource %s", n.latin1());
67#ifndef DESKTOP_VERSION 69
68 if ( n.left( 6 ) == "mailto" ) { 70 if ( n.left( 6 ) == "mailto" )
69 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)"); 71 ExternalAppHandler::instance()->mailToContacts( n.mid(7) );
70 e << n.mid(7); 72 else if ( n.left( 7 ) == "phoneto" )
71 } 73 ExternalAppHandler::instance()->callByPhone( n.mid(8) );
72 if ( n.left( 7 ) == "phoneto" ) { 74 else if ( n.left( 5 ) == "faxto" )
73 QString mess = "-ring:" + n.mid(8); 75 ExternalAppHandler::instance()->callByFax( n.mid(6) );
74 QCopEnvelope e("QPE/Application/kppi", mess.latin1()); 76 else if ( n.left( 5 ) == "smsto" )
75 } 77 ExternalAppHandler::instance()->callBySMS( n.mid(6) );
76#endif 78 else if ( n.left( 7 ) == "pagerto" )
79 ExternalAppHandler::instance()->callByPager( n.mid(8) );
77 80
78} 81}
79void AddresseeView::setAddressee( const KABC::Addressee& addr ) 82void AddresseeView::setAddressee( const KABC::Addressee& addr )
80{ 83{
81 bool kphoneAvail = false; 84 ExternalAppHandler* eah = ExternalAppHandler::instance();
82 85 bool kemailAvail = eah->isEmailAppAvailable();
83#ifndef DESKTOP_VERSION 86 bool kphoneAvail = eah->isPhoneAppAvailable();
84 if ( ! kphoneInstalled ) { 87 bool kfaxAvail = eah->isFaxAppAvailable();
85 if ( QFile::exists( QPEApplication::qpeDir() + "/bin/kppi" ) ) 88 bool ksmsAvail = eah->isSMSAppAvailable();
86 kphoneInstalled = 1; 89 bool kpagerAvail = eah->isPagerAppAvailable();
87 else 90
88 kphoneInstalled = -1;
89 }
90 if ( kphoneInstalled > 0 )
91 kphoneAvail = true;
92#if 0
93 if ( kphoneAvail )
94 qDebug("KPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPone avail ");
95 else
96 qDebug("NOOOOOOOOOOOo KPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPone avail ");
97#endif
98 91
99#endif
100 mAddressee = addr; 92 mAddressee = addr;
101 // clear view 93 // clear view
102 setText( QString::null ); 94 setText( QString::null );
103 95
104 if ( mAddressee.isEmpty() ) 96 if ( mAddressee.isEmpty() )
105 return; 97 return;
106 98
107 QString name = ( mAddressee.formattedName().isEmpty() ? 99 QString name = ( mAddressee.formattedName().isEmpty() ?
108 mAddressee.assembledName() : mAddressee.formattedName() ); 100 mAddressee.assembledName() : mAddressee.formattedName() );
109 101
110 QString dynamicPart; 102 QString dynamicPart;
111 103
112 QStringList emails = mAddressee.emails(); 104 QStringList emails = mAddressee.emails();
113 QStringList::ConstIterator emailIt; 105 QStringList::ConstIterator emailIt;
114 QString type = i18n( "Email" ); 106 QString type = i18n( "Email" );
115 emailIt = emails.begin(); 107 emailIt = emails.begin();
116 if ( emailIt != emails.end() ) { 108 if ( emailIt != emails.end() ) {
109 if ( kemailAvail ) {
117 dynamicPart += QString( 110 dynamicPart += QString(
118 "<tr><td align=\"right\"><b>%1</b></td>" 111 "<tr><td align=\"right\"><b>%1</b></td>"
119 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 112 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
120 .arg( type ) 113 .arg( type )
121 .arg( name ) 114 .arg( name )
122 .arg( *emailIt ) 115 .arg( *emailIt )
123 .arg( *emailIt ); 116 .arg( *emailIt );
124 ++emailIt; 117 ++emailIt;
118 } else {
119 dynamicPart += QString(
120 "<tr><td align=\"right\"><b>%1</b></td>"
121 "<td align=\"left\">%2</td></tr>" )
122 .arg( type )
123 .arg( *emailIt );
124 ++emailIt;
125 }
125 } 126 }
126 127
127 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); 128 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers();
128 KABC::PhoneNumber::List::ConstIterator phoneIt; 129 KABC::PhoneNumber::List::ConstIterator phoneIt;
130 QString extension;
131 int phonetype;
132 QString sms;
129 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { 133 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
130 if ( kphoneAvail ) { 134 phonetype = (*phoneIt).type();
135 if (ksmsAvail &&
136 (
137 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
138 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
139 )
140 )
141 {
142 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
143 .arg( (*phoneIt).number() );
144
145 }
146 else
147 sms = "";
148
149 extension = QString::null;
150 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax)
151 if (kfaxAvail) extension = "faxto:";
152 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager)
153 if (kpagerAvail) extension = "pagerto:";
154 else if (kphoneAvail)
155 extension = "phoneto:";
156 else
157 extension = QString::null;
158
159
160 if ( !extension.isEmpty() ) {
131 dynamicPart += QString( 161 dynamicPart += QString(
132 "<tr><td align=\"right\"><b>%1</b></td>" 162 "<tr><td align=\"right\"><b>%1</b></td>"
133 "<td align=\"left\"><a href=\"phoneto:%2 \">%3</a></td></tr>" ) 163 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" )
134 .arg( KABC::PhoneNumber::typeLabel( (*phoneIt).type() ) ) 164 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
165 .arg( extension )
135 .arg( (*phoneIt).number() ) 166 .arg( (*phoneIt).number() )
136 .arg( (*phoneIt).number() ); 167 .arg( (*phoneIt).number() )
168 .arg( sms );
137 169
138 } else { 170 } else {
139 dynamicPart += QString( 171 dynamicPart += QString(
140 "<tr><td align=\"right\"><b>%1</b></td>" 172 "<tr><td align=\"right\"><b>%1</b></td>"
141 "<td align=\"left\">%2</td></tr>" ) 173 "<td align=\"left\">%2 %3</td></tr>" )
142 .arg( KABC::PhoneNumber::typeLabel( (*phoneIt).type() ) ) 174 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
143 .arg( (*phoneIt).number() ); 175 .arg( (*phoneIt).number() )
176 .arg( sms );
144 } 177 }
145 } 178 }
146 179
147 180
148 for ( ; emailIt != emails.end(); ++emailIt ) { 181 for ( ; emailIt != emails.end(); ++emailIt ) {
149 dynamicPart += QString( 182 if ( kemailAvail ) {
150 "<tr><td align=\"right\"><b>%1</b></td>" 183 dynamicPart += QString(
151 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 184 "<tr><td align=\"right\"><b>%1</b></td>"
152 .arg( type ) 185 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
153 .arg( name ) 186 .arg( type )
154 .arg( *emailIt ) 187 .arg( name )
155 .arg( *emailIt ); 188 .arg( *emailIt )
189 .arg( *emailIt );
190 } else {
191 dynamicPart += QString(
192 "<tr><td align=\"right\"><b>%1</b></td>"
193 "<td align=\"left\">%2</td></tr>" )
194 .arg( type )
195 .arg( *emailIt );
196 }
156 } 197 }
157 198
158 if ( !mAddressee.url().url().isEmpty() ) { 199 if ( !mAddressee.url().url().isEmpty() ) {
159 dynamicPart += QString( 200 dynamicPart += QString(
160 "<tr><td align=\"right\"><b>%1</b></td>" 201 "<tr><td align=\"right\"><b>%1</b></td>"
161 "<td align=\"left\">%2</td></tr>" ) 202 "<td align=\"left\">%2</td></tr>" )
162 .arg( i18n( "Homepage" ) ) 203 .arg( i18n( "Homepage" ) )
163//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) ); 204//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) );
164 .arg( mAddressee.url().url() ); 205 .arg( mAddressee.url().url() );
165 //qDebug("AddresseeView::setAddressee has to be verified."); 206 //qDebug("AddresseeView::setAddressee has to be verified.");
166 } 207 }
167 208
168 KABC::Address::List addresses = mAddressee.addresses(); 209 KABC::Address::List addresses = mAddressee.addresses();
169 KABC::Address::List::ConstIterator addrIt; 210 KABC::Address::List::ConstIterator addrIt;
170 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { 211 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) {
171 if ( true /*(*addrIt).label().isEmpty()*/ ) { 212 if ( true /*(*addrIt).label().isEmpty()*/ ) {
172 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); 213 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace();
173//US formattedAddress = formattedAddress.replace( '\n', "<br>" ); 214//US formattedAddress = formattedAddress.replace( '\n', "<br>" );
174 //qDebug("adresss %s ",formattedAddress.latin1() ); 215 //qDebug("adresss %s ",formattedAddress.latin1() );
175 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); 216 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" );
176 //qDebug("AddresseeView::setAddressee has to be verified."); 217 //qDebug("AddresseeView::setAddressee has to be verified.");
177 218
178 dynamicPart += QString( 219 dynamicPart += QString(
179 "<tr><td align=\"right\"><b>%1</b></td>" 220 "<tr><td align=\"right\"><b>%1</b></td>"
180 "<td align=\"left\">%2</td></tr>" ) 221 "<td align=\"left\">%2</td></tr>" )
181 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 222 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
182 .arg( formattedAddress ); 223 .arg( formattedAddress );
183 } else { 224 } else {
184 225
185 dynamicPart += QString( 226 dynamicPart += QString(
186 "<tr><td align=\"right\"><b>%1</b></td>" 227 "<tr><td align=\"right\"><b>%1</b></td>"
187 "<td align=\"left\">%2</td></tr>" ) 228 "<td align=\"left\">%2</td></tr>" )
188 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 229 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
189//US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); 230//US .arg( (*addrIt).label().replace( '\n', "<br>" ) );
190 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); 231 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ );
191 232
192 } 233 }
193 } 234 }
194 235
195 QString notes; 236 QString notes;
196 if ( !mAddressee.note().isEmpty() ) { 237 if ( !mAddressee.note().isEmpty() ) {
197 notes = QString( 238 notes = QString(
198 "<tr>" 239 "<tr>"
199 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label 240 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label
200 "<td align=\"left\">%2</td>" // note 241 "<td align=\"left\">%2</td>" // note
201 "</tr>" ).arg( i18n( "Notes" ) ) 242 "</tr>" ).arg( i18n( "Notes" ) )
202//US .arg( mAddressee.note().replace( '\n', "<br>" ) ); 243//US .arg( mAddressee.note().replace( '\n', "<br>" ) );
203 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); 244 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) );
204 //qDebug("AddresseeView::setAddressee has to be verified."); 245 //qDebug("AddresseeView::setAddressee has to be verified.");
205 } 246 }
206 247
207 QString aRole = ""; 248 QString aRole = "";
208 QString aOrga = ""; 249 QString aOrga = "";
209 if ( true /*!mAddressee.role().isEmpty()*/ ) { 250 if ( true /*!mAddressee.role().isEmpty()*/ ) {
210 aRole = "<tr>" 251 aRole = "<tr>"
211 "<td align=\"left\">" + mAddressee.role() + "</td>" 252 "<td align=\"left\">" + mAddressee.role() + "</td>"
212 "</tr>"; 253 "</tr>";
213 } 254 }
214 if ( true /*!mAddressee.organization().isEmpty()*/ ) { 255 if ( true /*!mAddressee.organization().isEmpty()*/ ) {
215 aOrga = "<tr>" 256 aOrga = "<tr>"
216 "<td align=\"left\">" + mAddressee.organization() + "</td>" ; 257 "<td align=\"left\">" + mAddressee.organization() + "</td>" ;
217 "</tr>"; 258 "</tr>";
218 } 259 }
219 mText = ""; 260 mText = "";
220 QString picString = ""; 261 QString picString = "";
221 KABC::Picture picture = mAddressee.photo(); 262 KABC::Picture picture = mAddressee.photo();
222 bool picAvailintern = false; 263 bool picAvailintern = false;
223 bool picAvailUrl = false; 264 bool picAvailUrl = false;
224 if (! picture.undefined() ) { 265 if (! picture.undefined() ) {
225 picAvailintern = (picture.isIntern() && !picture.data().isNull()); 266 picAvailintern = (picture.isIntern() && !picture.data().isNull());
226 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); 267 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() );
227 } 268 }
228 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { 269 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) {
229 if ( picAvailintern ) { 270 if ( picAvailintern ) {
230 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); 271 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() );
231 } else { 272 } else {
232 if ( picAvailUrl ) { 273 if ( picAvailUrl ) {
233 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() )); 274 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() ));
234 } else { 275 } else {
235 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) ); 276 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) );
236 } 277 }
237 } 278 }
238 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; 279 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">";
239 mText = QString::fromLatin1( 280 mText = QString::fromLatin1(
240 "<html>" 281 "<html>"
241 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color 282 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
242 "<table>" 283 "<table>"
243 "<tr>" 284 "<tr>"
244 "<td rowspan=\"3\" align=\"right\" valign=\"top\">" 285 "<td rowspan=\"3\" align=\"right\" valign=\"top\">"
245 "%3" 286 "%3"
246 "</td>" 287 "</td>"
247 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name 288 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name
248 "</tr>" 289 "</tr>"
249 "%5" // role 290 "%5" // role
250 "%6" // organization 291 "%6" // organization
251 "<td colspan=\"2\">&nbsp;</td>" 292 "<td colspan=\"2\">&nbsp;</td>"