summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-10 19:41:25 (UTC)
committer ulf69 <ulf69>2004-08-10 19:41:25 (UTC)
commit467e50111dfd6d66aca205501b6bf369b7f0a166 (patch) (unidiff)
tree3bd041c5e88a819bbbe857335a2afcd0d75ad518
parent20a2709f00d4e99eace87338fefc54701fcc47c0 (diff)
downloadkdepimpi-467e50111dfd6d66aca205501b6bf369b7f0a166.zip
kdepimpi-467e50111dfd6d66aca205501b6bf369b7f0a166.tar.gz
kdepimpi-467e50111dfd6d66aca205501b6bf369b7f0a166.tar.bz2
added links for external applications
Diffstat (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,203 +1,244 @@
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>" ) );