summaryrefslogtreecommitdiffabout
path: root/kabc/addresseeview.cpp
Unidiff
Diffstat (limited to 'kabc/addresseeview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseeview.cpp135
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
@@ -1,464 +1,475 @@
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 <qvbox.h> 33#include <qvbox.h>
34#include <qlabel.h> 34#include <qlabel.h>
35#include <qwidget.h> 35#include <qwidget.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qapplication.h> 37#include <qapplication.h>
38#include <qpushbutton.h> 38#include <qpushbutton.h>
39 39
40 40
41#include "externalapphandler.h" 41#include "externalapphandler.h"
42#include "addresseeview.h" 42#include "addresseeview.h"
43 43
44 44
45//US #ifndef DESKTOP_VERSION 45//US #ifndef DESKTOP_VERSION
46//US #include <qtopia/qcopenvelope_qws.h> 46//US #include <qtopia/qcopenvelope_qws.h>
47//US #include <qpe/qpeapplication.h> 47//US #include <qpe/qpeapplication.h>
48//US #endif 48//US #endif
49 49
50//US static int kphoneInstalled = 0; 50//US static int kphoneInstalled = 0;
51 51
52using namespace KPIM; 52using namespace KPIM;
53 53
54AddresseeView::AddresseeView( QWidget *parent, const char *name ) 54AddresseeView::AddresseeView( QWidget *parent, const char *name )
55//US : KTextBrowser( parent, name ) 55//US : KTextBrowser( parent, name )
56 : QTextBrowser( parent, name ) 56 : QTextBrowser( parent, name )
57 57
58 58
59{ 59{
60//US setWrapPolicy( QTextEdit::AtWordBoundary ); 60//US setWrapPolicy( QTextEdit::AtWordBoundary );
61 setLinkUnderline( false ); 61 setLinkUnderline( false );
62 // setVScrollBarMode( QScrollView::AlwaysOff ); 62 // setVScrollBarMode( QScrollView::AlwaysOff );
63 //setHScrollBarMode( QScrollView::AlwaysOff ); 63 //setHScrollBarMode( QScrollView::AlwaysOff );
64 64
65//US QStyleSheet *sheet = styleSheet(); 65//US QStyleSheet *sheet = styleSheet();
66//US QStyleSheetItem *link = sheet->item( "a" ); 66//US QStyleSheetItem *link = sheet->item( "a" );
67//US link->setColor( KGlobalSettings::linkColor() ); 67//US link->setColor( KGlobalSettings::linkColor() );
68 68
69} 69}
70 70
71void AddresseeView::setSource(const QString& n) 71void AddresseeView::setSource(const QString& n)
72{ 72{
73 //qDebug("********AddresseeView::setSource %s", n.latin1()); 73 //qDebug("********AddresseeView::setSource %s", n.latin1());
74 74
75 if ( n.left( 6 ) == "mailto" ) 75 if ( n.left( 6 ) == "mailto" )
76 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); 76 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) );
77 else if ( n.left( 7 ) == "phoneto" ) 77 else if ( n.left( 7 ) == "phoneto" )
78 ExternalAppHandler::instance()->callByPhone( n.mid(8) ); 78 ExternalAppHandler::instance()->callByPhone( n.mid(8) );
79 else if ( n.left( 5 ) == "faxto" ) 79 else if ( n.left( 5 ) == "faxto" )
80 ExternalAppHandler::instance()->callByFax( n.mid(6) ); 80 ExternalAppHandler::instance()->callByFax( n.mid(6) );
81 else if ( n.left( 5 ) == "smsto" ) 81 else if ( n.left( 5 ) == "smsto" )
82 ExternalAppHandler::instance()->callBySMS( n.mid(6) ); 82 ExternalAppHandler::instance()->callBySMS( n.mid(6) );
83 else if ( n.left( 7 ) == "pagerto" ) 83 else if ( n.left( 7 ) == "pagerto" )
84 ExternalAppHandler::instance()->callByPager( n.mid(8) ); 84 ExternalAppHandler::instance()->callByPager( n.mid(8) );
85 else if ( n.left( 5 ) == "sipto" ) 85 else if ( n.left( 5 ) == "sipto" )
86 ExternalAppHandler::instance()->callBySIP( n.mid(6) ); 86 ExternalAppHandler::instance()->callBySIP( n.mid(6) );
87 87
88} 88}
89void AddresseeView::setAddressee( const KABC::Addressee& addr ) 89void AddresseeView::setAddressee( const KABC::Addressee& addr )
90{ 90{
91 ExternalAppHandler* eah = ExternalAppHandler::instance(); 91 ExternalAppHandler* eah = ExternalAppHandler::instance();
92 bool kemailAvail = eah->isEmailAppAvailable(); 92 bool kemailAvail = eah->isEmailAppAvailable();
93 bool kphoneAvail = eah->isPhoneAppAvailable(); 93
94 bool kfaxAvail = eah->isFaxAppAvailable();
95 bool ksmsAvail = eah->isSMSAppAvailable();
96 bool kpagerAvail = eah->isPagerAppAvailable();
97 bool ksipAvail = eah->isSIPAppAvailable();
98 94
99 95
100 mAddressee = addr; 96 mAddressee = addr;
101 // clear view 97 // clear view
102 setText( QString::null ); 98 setText( QString::null );
103 99
104 if ( mAddressee.isEmpty() ) 100 if ( mAddressee.isEmpty() )
105 return; 101 return;
106 102
107 QString name = ( mAddressee.assembledName().isEmpty() ? 103 QString name = ( mAddressee.assembledName().isEmpty() ?
108 mAddressee.formattedName() : mAddressee.assembledName() ); 104 mAddressee.formattedName() : mAddressee.assembledName() );
109 105
110 QString dynamicPart; 106 QString dynamicPart;
111 107
108 dynamicPart += getPhoneNumbers( true );
109 qDebug("dynamic preferred %s ",dynamicPart.latin1() );
112 QStringList emails = mAddressee.emails(); 110 QStringList emails = mAddressee.emails();
113 QStringList::ConstIterator emailIt; 111 QStringList::ConstIterator emailIt;
114 QString type = i18n( "Email" ); 112 QString type = i18n( "Email" );
115 emailIt = emails.begin(); 113 emailIt = emails.begin();
116 if ( emailIt != emails.end() ) { 114 if ( emailIt != emails.end() ) {
117 if ( kemailAvail ) { 115 if ( kemailAvail ) {
118 dynamicPart += QString( 116 dynamicPart += QString(
119 "<tr><td align=\"right\"><b>%1</b></td>" 117 "<tr><td align=\"right\"><b>%1</b></td>"
120 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 118 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
121 .arg( type ) 119 .arg( type )
122 .arg( name ) 120 .arg( name )
123 .arg( *emailIt ) 121 .arg( *emailIt )
124 .arg( *emailIt ); 122 .arg( *emailIt );
125 ++emailIt; 123 ++emailIt;
126 } else { 124 } else {
127 dynamicPart += QString( 125 dynamicPart += QString(
128 "<tr><td align=\"right\"><b>%1</b></td>" 126 "<tr><td align=\"right\"><b>%1</b></td>"
129 "<td align=\"left\">%2</td></tr>" ) 127 "<td align=\"left\">%2</td></tr>" )
130 .arg( type ) 128 .arg( type )
131 .arg( *emailIt ); 129 .arg( *emailIt );
132 ++emailIt; 130 ++emailIt;
133 } 131 }
134 } 132 }
135 if ( mAddressee.birthday().date().isValid() ) { 133 if ( mAddressee.birthday().date().isValid() ) {
136 dynamicPart += QString( 134 dynamicPart += QString(
137 "<tr><td align=\"right\"><b>%1</b></td>" 135 "<tr><td align=\"right\"><b>%1</b></td>"
138 "<td align=\"left\">%2</td></tr>" ) 136 "<td align=\"left\">%2</td></tr>" )
139 .arg( i18n ("Birthday") ) 137 .arg( i18n ("Birthday") )
140 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); 138 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) );
141 } 139 }
142 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); 140 dynamicPart += getPhoneNumbers( false );
143 KABC::PhoneNumber::List::ConstIterator phoneIt;
144 QString extension;
145 int phonetype;
146 QString sms;
147 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
148 phonetype = (*phoneIt).type();
149 if (ksmsAvail &&
150 (
151 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
152 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
153 )
154 )
155 {
156 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
157 .arg( (*phoneIt).number() );
158
159 }
160 else
161 sms = "";
162
163 extension = QString::null;
164 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
165 if (kfaxAvail) extension = "faxto:";
166 }
167 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) {
168 if (kpagerAvail) extension = "pagerto:";
169 }
170 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) {
171 if (ksipAvail) extension = "sipto:";
172 }
173 else if (kphoneAvail) {
174 extension = "phoneto:";
175 }
176 else
177 extension = QString::null;
178
179 if ( !extension.isEmpty() ) {
180 dynamicPart += QString(
181 "<tr><td align=\"right\"><b>%1</b></td>"
182 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" )
183 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
184 .arg( extension )
185 .arg( (*phoneIt).number() )
186 .arg( (*phoneIt).number() )
187 .arg( sms );
188
189 } else {
190 dynamicPart += QString(
191 "<tr><td align=\"right\"><b>%1</b></td>"
192 "<td align=\"left\">%2 %3</td></tr>" )
193 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
194 .arg( (*phoneIt).number() )
195 .arg( sms );
196 }
197 }
198
199 141
200 for ( ; emailIt != emails.end(); ++emailIt ) { 142 for ( ; emailIt != emails.end(); ++emailIt ) {
201 if ( kemailAvail ) { 143 if ( kemailAvail ) {
202 dynamicPart += QString( 144 dynamicPart += QString(
203 "<tr><td align=\"right\"><b>%1</b></td>" 145 "<tr><td align=\"right\"><b>%1</b></td>"
204 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 146 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
205 .arg( type ) 147 .arg( type )
206 .arg( name ) 148 .arg( name )
207 .arg( *emailIt ) 149 .arg( *emailIt )
208 .arg( *emailIt ); 150 .arg( *emailIt );
209 } else { 151 } else {
210 dynamicPart += QString( 152 dynamicPart += QString(
211 "<tr><td align=\"right\"><b>%1</b></td>" 153 "<tr><td align=\"right\"><b>%1</b></td>"
212 "<td align=\"left\">%2</td></tr>" ) 154 "<td align=\"left\">%2</td></tr>" )
213 .arg( type ) 155 .arg( type )
214 .arg( *emailIt ); 156 .arg( *emailIt );
215 } 157 }
216 } 158 }
217 159
218 if ( !mAddressee.url().url().isEmpty() ) { 160 if ( !mAddressee.url().url().isEmpty() ) {
219 dynamicPart += QString( 161 dynamicPart += QString(
220 "<tr><td align=\"right\"><b>%1</b></td>" 162 "<tr><td align=\"right\"><b>%1</b></td>"
221 "<td align=\"left\">%2</td></tr>" ) 163 "<td align=\"left\">%2</td></tr>" )
222 .arg( i18n( "Homepage" ) ) 164 .arg( i18n( "Homepage" ) )
223//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) ); 165//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) );
224 .arg( mAddressee.url().url() ); 166 .arg( mAddressee.url().url() );
225 //qDebug("AddresseeView::setAddressee has to be verified."); 167 //qDebug("AddresseeView::setAddressee has to be verified.");
226 } 168 }
227 169
228 KABC::Address::List addresses = mAddressee.addresses(); 170 KABC::Address::List addresses = mAddressee.addresses();
229 KABC::Address::List::ConstIterator addrIt; 171 KABC::Address::List::ConstIterator addrIt;
230 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { 172 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) {
231 if ( true /*(*addrIt).label().isEmpty()*/ ) { 173 if ( true /*(*addrIt).label().isEmpty()*/ ) {
232 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); 174 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace();
233//US formattedAddress = formattedAddress.replace( '\n', "<br>" ); 175//US formattedAddress = formattedAddress.replace( '\n', "<br>" );
234 //qDebug("adresss %s ",formattedAddress.latin1() ); 176 //qDebug("adresss %s ",formattedAddress.latin1() );
235 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); 177 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" );
236 //qDebug("AddresseeView::setAddressee has to be verified."); 178 //qDebug("AddresseeView::setAddressee has to be verified.");
237 179
238 dynamicPart += QString( 180 dynamicPart += QString(
239 "<tr><td align=\"right\"><b>%1</b></td>" 181 "<tr><td align=\"right\"><b>%1</b></td>"
240 "<td align=\"left\">%2</td></tr>" ) 182 "<td align=\"left\">%2</td></tr>" )
241 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 183 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
242 .arg( formattedAddress ); 184 .arg( formattedAddress );
243 } else { 185 } else {
244 186
245 dynamicPart += QString( 187 dynamicPart += QString(
246 "<tr><td align=\"right\"><b>%1</b></td>" 188 "<tr><td align=\"right\"><b>%1</b></td>"
247 "<td align=\"left\">%2</td></tr>" ) 189 "<td align=\"left\">%2</td></tr>" )
248 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 190 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
249//US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); 191//US .arg( (*addrIt).label().replace( '\n', "<br>" ) );
250 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); 192 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ );
251 193
252 } 194 }
253 } 195 }
254 196
255 QString notes; 197 QString notes;
256 if ( !mAddressee.note().isEmpty() ) { 198 if ( !mAddressee.note().isEmpty() ) {
257 notes = QString( 199 notes = QString(
258 "<tr>" 200 "<tr>"
259 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label 201 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label
260 "<td align=\"left\">%2</td>" // note 202 "<td align=\"left\">%2</td>" // note
261 "</tr>" ).arg( i18n( "Notes" ) ) 203 "</tr>" ).arg( i18n( "Notes" ) )
262//US .arg( mAddressee.note().replace( '\n', "<br>" ) ); 204//US .arg( mAddressee.note().replace( '\n', "<br>" ) );
263 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); 205 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) );
264 //qDebug("AddresseeView::setAddressee has to be verified."); 206 //qDebug("AddresseeView::setAddressee has to be verified.");
265 } 207 }
266 208
267 QString aRole = ""; 209 QString aRole = "";
268 QString aOrga = ""; 210 QString aOrga = "";
269 if ( true /*!mAddressee.role().isEmpty()*/ ) { 211 if ( true /*!mAddressee.role().isEmpty()*/ ) {
270 aRole = "<tr>" 212 aRole = "<tr>"
271 "<td align=\"left\">" + mAddressee.role() + "</td>" 213 "<td align=\"left\">" + mAddressee.role() + "</td>"
272 "</tr>"; 214 "</tr>";
273 } 215 }
274 if ( true /*!mAddressee.organization().isEmpty()*/ ) { 216 if ( true /*!mAddressee.organization().isEmpty()*/ ) {
275 aOrga = "<tr>" 217 aOrga = "<tr>"
276 "<td align=\"left\">" + mAddressee.organization() + "</td>" ; 218 "<td align=\"left\">" + mAddressee.organization() + "</td>" ;
277 "</tr>"; 219 "</tr>";
278 } 220 }
279 mText = ""; 221 mText = "";
280 QString picString = ""; 222 QString picString = "";
281 KABC::Picture picture = mAddressee.photo(); 223 KABC::Picture picture = mAddressee.photo();
282 bool picAvailintern = false; 224 bool picAvailintern = false;
283 bool picAvailUrl = false; 225 bool picAvailUrl = false;
284 if (! picture.undefined() ) { 226 if (! picture.undefined() ) {
285 picAvailintern = (picture.isIntern() && !picture.data().isNull()); 227 picAvailintern = (picture.isIntern() && !picture.data().isNull());
286 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); 228 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() );
287 } 229 }
288 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { 230 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) {
289 if ( picAvailintern ) { 231 if ( picAvailintern ) {
290 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); 232 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() );
291 } else { 233 } else {
292 if ( picAvailUrl ) { 234 if ( picAvailUrl ) {
293 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() )); 235 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() ));
294 } else { 236 } else {
295 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) ); 237 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) );
296 } 238 }
297 } 239 }
298 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; 240 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">";
299 mText = QString::fromLatin1( 241 mText = QString::fromLatin1(
300 "<html>" 242 "<html>"
301 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color 243 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
302 "<table>" 244 "<table>"
303 "<tr>" 245 "<tr>"
304 "<td rowspan=\"3\" align=\"right\" valign=\"top\">" 246 "<td rowspan=\"3\" align=\"right\" valign=\"top\">"
305 "%3" 247 "%3"
306 "</td>" 248 "</td>"
307 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name 249 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name
308 "</tr>" 250 "</tr>"
309 "%5" // role 251 "%5" // role
310 "%6" // organization 252 "%6" // organization
311 "<td colspan=\"2\">&nbsp;</td>" 253 "<td colspan=\"2\">&nbsp;</td>"
312 "%7" // dynamic part 254 "%7" // dynamic part
313 "%8" // notes 255 "%8" // notes
314 "</table>" 256 "</table>"
315 "</body>" 257 "</body>"
316 "</html>") 258 "</html>")
317//US 259//US
318 .arg( /*KGlobalSettings::textColor().name()*/ "black" ) 260 .arg( /*KGlobalSettings::textColor().name()*/ "black" )
319//US 261//US
320 .arg( /*KGlobalSettings::baseColor().name()*/ "white" ) 262 .arg( /*KGlobalSettings::baseColor().name()*/ "white" )
321 .arg( picString ) 263 .arg( picString )
322 .arg( name ) 264 .arg( name )
323 .arg( aRole ) 265 .arg( aRole )
324 .arg( aOrga ) 266 .arg( aOrga )
325 .arg( dynamicPart ) 267 .arg( dynamicPart )
326 .arg( notes ); 268 .arg( notes );
327 269
328 } else { // no picture! 270 } else { // no picture!
329 271
330mText = "<table width=\"100%\">\n"; 272mText = "<table width=\"100%\">\n";
331 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 273 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
332#ifdef DESKTOP_VERSION 274#ifdef DESKTOP_VERSION
333 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; 275 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>";
334#else 276#else
335 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>"; 277 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>";
336#endif 278#endif
337 279
338#ifdef DESKTOP_VERSION 280#ifdef DESKTOP_VERSION
339 mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>"; 281 mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>";
340#else 282#else
341 mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>"; 283 mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>";
342#endif 284#endif
343 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 285 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
344 286
345 mText += "<table><td colspan=\"2\">&nbsp;</td>"; 287 mText += "<table><td colspan=\"2\">&nbsp;</td>";
346 /* 288 /*
347 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" 289 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>"
348 "<td align=\"left\"><b>%2</b></td></tr>" ) 290 "<td align=\"left\"><b>%2</b></td></tr>" )
349 .arg( i18n(" ") ) 291 .arg( i18n(" ") )
350 .arg( name ); 292 .arg( name );
351 */ 293 */
352 if ( ! mAddressee.role().isEmpty() ) 294 if ( ! mAddressee.role().isEmpty() )
353 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 295 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
354 "<td align=\"left\">%2</td></tr>" ) 296 "<td align=\"left\">%2</td></tr>" )
355 .arg( i18n(" ") ) 297 .arg( i18n(" ") )
356 .arg( mAddressee.role()); 298 .arg( mAddressee.role());
357 if ( ! mAddressee.organization().isEmpty() ) 299 if ( ! mAddressee.organization().isEmpty() )
358 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 300 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
359 "<td align=\"left\">%2</td></tr>" ) 301 "<td align=\"left\">%2</td></tr>" )
360 .arg( i18n(" ") ) 302 .arg( i18n(" ") )
361 .arg( mAddressee.organization()); 303 .arg( mAddressee.organization());
362 mText += dynamicPart; 304 mText += dynamicPart;
363 mText += notes; 305 mText += notes;
364 mText += "</table>"; 306 mText += "</table>";
365 307
366 } 308 }
367 309
368 // at last display it... 310 // at last display it...
369 setText( mText ); 311 setText( mText );
370 312
371} 313}
372 314
315QString AddresseeView::getPhoneNumbers( bool preferred )
316{
317 ExternalAppHandler* eah = ExternalAppHandler::instance();
318 bool kphoneAvail = eah->isPhoneAppAvailable();
319 bool kfaxAvail = eah->isFaxAppAvailable();
320 bool ksmsAvail = eah->isSMSAppAvailable();
321 bool kpagerAvail = eah->isPagerAppAvailable();
322 bool ksipAvail = eah->isSIPAppAvailable();
323 QString dynamicPart;
324 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers();
325 KABC::PhoneNumber::List::ConstIterator phoneIt;
326 QString extension;
327 int phonetype;
328 QString sms;
329 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
330 phonetype = (*phoneIt).type();
331 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred )
332 continue;
333 if (ksmsAvail &&
334 (
335 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
336 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
337 )
338 )
339 {
340 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
341 .arg( (*phoneIt).number() );
342
343 }
344 else
345 sms = "";
346
347 extension = QString::null;
348 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
349 if (kfaxAvail) extension = "faxto:";
350 }
351 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) {
352 if (kpagerAvail) extension = "pagerto:";
353 }
354 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) {
355 if (ksipAvail) extension = "sipto:";
356 }
357 else if (kphoneAvail) {
358 extension = "phoneto:";
359 }
360 else
361 extension = QString::null;
362
363 if ( !extension.isEmpty() ) {
364 dynamicPart += QString(
365 "<tr><td align=\"right\"><b>%1</b></td>"
366 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" )
367 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
368 .arg( extension )
369 .arg( (*phoneIt).number() )
370 .arg( (*phoneIt).number() )
371 .arg( sms );
372
373 } else {
374 dynamicPart += QString(
375 "<tr><td align=\"right\"><b>%1</b></td>"
376 "<td align=\"left\">%2 %3</td></tr>" )
377 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
378 .arg( (*phoneIt).number() )
379 .arg( sms );
380 }
381 }
382 return dynamicPart;
383}
373KABC::Addressee AddresseeView::addressee() const 384KABC::Addressee AddresseeView::addressee() const
374{ 385{
375 return mAddressee; 386 return mAddressee;
376} 387}
377void AddresseeView::addTag(const QString & tag,const QString & text) 388void AddresseeView::addTag(const QString & tag,const QString & text)
378{ 389{
379 if ( text.isEmpty() ) 390 if ( text.isEmpty() )
380 return; 391 return;
381 int number=text.contains("\n"); 392 int number=text.contains("\n");
382 QString str = "<" + tag + ">"; 393 QString str = "<" + tag + ">";
383 QString tmpText=text; 394 QString tmpText=text;
384 QString tmpStr=str; 395 QString tmpStr=str;
385 if(number !=-1) 396 if(number !=-1)
386 { 397 {
387 if (number > 0) { 398 if (number > 0) {
388 int pos=0; 399 int pos=0;
389 QString tmp; 400 QString tmp;
390 for(int i=0;i<=number;i++) { 401 for(int i=0;i<=number;i++) {
391 pos=tmpText.find("\n"); 402 pos=tmpText.find("\n");
392 tmp=tmpText.left(pos); 403 tmp=tmpText.left(pos);
393 tmpText=tmpText.right(tmpText.length()-pos-1); 404 tmpText=tmpText.right(tmpText.length()-pos-1);
394 tmpStr+=tmp+"<br>"; 405 tmpStr+=tmp+"<br>";
395 } 406 }
396 } 407 }
397 else tmpStr += tmpText; 408 else tmpStr += tmpText;
398 tmpStr+="</" + tag + ">"; 409 tmpStr+="</" + tag + ">";
399 mText.append(tmpStr); 410 mText.append(tmpStr);
400 } 411 }
401 else 412 else
402 { 413 {
403 str += text + "</" + tag + ">"; 414 str += text + "</" + tag + ">";
404 mText.append(str); 415 mText.append(str);
405 } 416 }
406} 417}
407 418
408AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name, 419AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name,
409 true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false) 420 true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false)
410{ 421{
411 findButton( Close )->setText( i18n("Cancel Sync")); 422 findButton( Close )->setText( i18n("Cancel Sync"));
412 findButton( Ok )->setText( i18n("Remote")); 423 findButton( Ok )->setText( i18n("Remote"));
413 findButton( User1 )->setText( i18n("Local")); 424 findButton( User1 )->setText( i18n("Local"));
414 QWidget* topframe = new QWidget( this ); 425 QWidget* topframe = new QWidget( this );
415 setMainWidget( topframe ); 426 setMainWidget( topframe );
416 QBoxLayout* bl; 427 QBoxLayout* bl;
417 if ( QApplication::desktop()->width() < 640 ) { 428 if ( QApplication::desktop()->width() < 640 ) {
418 bl = new QVBoxLayout( topframe ); 429 bl = new QVBoxLayout( topframe );
419 } else { 430 } else {
420 bl = new QHBoxLayout( topframe ); 431 bl = new QHBoxLayout( topframe );
421 } 432 }
422 QVBox* subframe = new QVBox( topframe ); 433 QVBox* subframe = new QVBox( topframe );
423 bl->addWidget(subframe ); 434 bl->addWidget(subframe );
424 QLabel* lab = new QLabel( i18n("Local Addressee"), subframe ); 435 QLabel* lab = new QLabel( i18n("Local Addressee"), subframe );
425 if ( takeloc ) 436 if ( takeloc )
426 lab->setBackgroundColor(Qt::green.light() ); 437 lab->setBackgroundColor(Qt::green.light() );
427 AddresseeView * av = new AddresseeView( subframe ); 438 AddresseeView * av = new AddresseeView( subframe );
428 av->setAddressee( loc ); 439 av->setAddressee( loc );
429 subframe = new QVBox( topframe ); 440 subframe = new QVBox( topframe );
430 bl->addWidget(subframe ); 441 bl->addWidget(subframe );
431 lab = new QLabel( i18n("Remote Addressee"), subframe ); 442 lab = new QLabel( i18n("Remote Addressee"), subframe );
432 if ( !takeloc ) 443 if ( !takeloc )
433 lab->setBackgroundColor(Qt::green.light() ); 444 lab->setBackgroundColor(Qt::green.light() );
434 av = new AddresseeView( subframe ); 445 av = new AddresseeView( subframe );
435 av->setAddressee( rem ); 446 av->setAddressee( rem );
436 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote())); 447 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote()));
437 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local())); 448 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local()));
438#ifndef DESKTOP_VERSION 449#ifndef DESKTOP_VERSION
439 showMaximized(); 450 showMaximized();
440#else 451#else
441 resize ( 640, 400 ); 452 resize ( 640, 400 );
442#endif 453#endif
443} 454}
444 455
445int AddresseeChooser::executeD( bool local ) 456int AddresseeChooser::executeD( bool local )
446{ 457{
447 mSyncResult = 3; 458 mSyncResult = 3;
448 if ( local ) 459 if ( local )
449 findButton( User1 )->setFocus(); 460 findButton( User1 )->setFocus();
450 else 461 else
451 findButton( Ok )->setFocus(); 462 findButton( Ok )->setFocus();
452 exec(); 463 exec();
453 return mSyncResult; 464 return mSyncResult;
454} 465}
455void AddresseeChooser::slot_remote() 466void AddresseeChooser::slot_remote()
456{ 467{
457 mSyncResult = 2; 468 mSyncResult = 2;
458 accept(); 469 accept();
459} 470}
460void AddresseeChooser::slot_local() 471void AddresseeChooser::slot_local()
461{ 472{
462 mSyncResult = 1; 473 mSyncResult = 1;
463 accept(); 474 accept();
464} 475}