summaryrefslogtreecommitdiffabout
path: root/libkdepim/addresseeview.cpp
Unidiff
Diffstat (limited to 'libkdepim/addresseeview.cpp') (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
@@ -12,168 +12,209 @@
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>"