summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-16 22:19:12 (UTC)
committer zautrix <zautrix>2005-01-16 22:19:12 (UTC)
commit507b362d42d5eed6277ad17422b6ba61acca636e (patch) (unidiff)
treed3d29451d37649b102c3e171e2927437925f8ce8
parenta704468d5fd02d30cf962c8b2d6815c7e9208e5d (diff)
downloadkdepimpi-507b362d42d5eed6277ad17422b6ba61acca636e.zip
kdepimpi-507b362d42d5eed6277ad17422b6ba61acca636e.tar.gz
kdepimpi-507b362d42d5eed6277ad17422b6ba61acca636e.tar.bz2
print AB
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseeview.cpp38
-rw-r--r--kabc/addresseeview.h4
-rw-r--r--kaddressbook/details/detailsviewcontainer.cpp4
-rw-r--r--kaddressbook/details/detailsviewcontainer.h1
-rw-r--r--kaddressbook/details/look_basic.h2
-rw-r--r--kaddressbook/details/look_html.cpp10
-rw-r--r--kaddressbook/details/look_html.h8
-rw-r--r--kaddressbook/kabcore.cpp21
-rw-r--r--kaddressbook/kabcore.h1
-rw-r--r--kaddressbook/kaddressbookview.h9
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.cpp2
-rw-r--r--kaddressbook/mainembedded.cpp3
-rw-r--r--kaddressbook/viewmanager.h1
-rw-r--r--kaddressbook/views/contactlistview.cpp27
-rw-r--r--kaddressbook/views/contactlistview.h1
-rw-r--r--kaddressbook/views/kaddressbookcardview.cpp29
-rw-r--r--kaddressbook/views/kaddressbookcardview.h2
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp2
-rw-r--r--kaddressbook/xxportmanager.cpp2
-rw-r--r--korganizer/koeventviewer.cpp2
-rw-r--r--korganizer/kowhatsnextview.cpp42
-rw-r--r--korganizer/kowhatsnextview.h5
22 files changed, 176 insertions, 40 deletions
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp
index 7a4336b..e85991e 100644
--- a/kabc/addresseeview.cpp
+++ b/kabc/addresseeview.cpp
@@ -1,342 +1,370 @@
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#ifdef DESKTOP_VERSION
40#include <qpaintdevicemetrics.h>
41#include <qprinter.h>
42#include <qpainter.h>
43#endif
39 44
40 45
41#include "externalapphandler.h" 46#include "externalapphandler.h"
42#include "addresseeview.h" 47#include <kabc/addresseeview.h>
43 48
44 49
45//US #ifndef DESKTOP_VERSION 50//US #ifndef DESKTOP_VERSION
46//US #include <qtopia/qcopenvelope_qws.h> 51//US #include <qtopia/qcopenvelope_qws.h>
47//US #include <qpe/qpeapplication.h> 52//US #include <qpe/qpeapplication.h>
48//US #endif 53//US #endif
49 54
50//US static int kphoneInstalled = 0; 55//US static int kphoneInstalled = 0;
51 56
52using namespace KPIM; 57using namespace KABC;
53 58
54AddresseeView::AddresseeView( QWidget *parent, const char *name ) 59AddresseeView::AddresseeView( QWidget *parent, const char *name )
55//US : KTextBrowser( parent, name )
56 : QTextBrowser( parent, name ) 60 : QTextBrowser( parent, name )
57 61
58 62
59{ 63{
60//US setWrapPolicy( QTextEdit::AtWordBoundary ); 64//US setWrapPolicy( QTextEdit::AtWordBoundary );
61 setLinkUnderline( false ); 65 setLinkUnderline( false );
62 // setVScrollBarMode( QScrollView::AlwaysOff ); 66 // setVScrollBarMode( QScrollView::AlwaysOff );
63 //setHScrollBarMode( QScrollView::AlwaysOff ); 67 //setHScrollBarMode( QScrollView::AlwaysOff );
64 68
65//US QStyleSheet *sheet = styleSheet(); 69//US QStyleSheet *sheet = styleSheet();
66//US QStyleSheetItem *link = sheet->item( "a" ); 70//US QStyleSheetItem *link = sheet->item( "a" );
67//US link->setColor( KGlobalSettings::linkColor() ); 71//US link->setColor( KGlobalSettings::linkColor() );
68 72
69} 73}
70 74void AddresseeView::printMe()
75{
76#ifdef DESKTOP_VERSION
77 QPrinter printer;
78 if (!printer.setup() )
79 return;
80 QPainter p;
81 p.begin ( &printer );
82 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
83 float dx, dy;
84 int wid = (m.width() * 9)/10;
85 dx = (float) wid/(float)contentsWidth ();
86 dy = (float)(m.height()) / (float)contentsHeight ();
87 float scale;
88 // scale to fit the width or height of the paper
89 if ( dx < dy )
90 scale = dx;
91 else
92 scale = dy;
93 p.translate( m.width()/10,0 );
94 p.scale( scale, scale );
95 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
96 p.end();
97#endif
98}
71void AddresseeView::setSource(const QString& n) 99void AddresseeView::setSource(const QString& n)
72{ 100{
73 //qDebug("********AddresseeView::setSource %s", n.latin1()); 101 //qDebug("********AddresseeView::setSource %s", n.latin1());
74 102
75 if ( n.left( 6 ) == "mailto" ) 103 if ( n.left( 6 ) == "mailto" )
76 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); 104 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) );
77 else if ( n.left( 7 ) == "phoneto" ) 105 else if ( n.left( 7 ) == "phoneto" )
78 ExternalAppHandler::instance()->callByPhone( n.mid(8) ); 106 ExternalAppHandler::instance()->callByPhone( n.mid(8) );
79 else if ( n.left( 5 ) == "faxto" ) 107 else if ( n.left( 5 ) == "faxto" )
80 ExternalAppHandler::instance()->callByFax( n.mid(6) ); 108 ExternalAppHandler::instance()->callByFax( n.mid(6) );
81 else if ( n.left( 5 ) == "smsto" ) 109 else if ( n.left( 5 ) == "smsto" )
82 ExternalAppHandler::instance()->callBySMS( n.mid(6) ); 110 ExternalAppHandler::instance()->callBySMS( n.mid(6) );
83 else if ( n.left( 7 ) == "pagerto" ) 111 else if ( n.left( 7 ) == "pagerto" )
84 ExternalAppHandler::instance()->callByPager( n.mid(8) ); 112 ExternalAppHandler::instance()->callByPager( n.mid(8) );
85 else if ( n.left( 5 ) == "sipto" ) 113 else if ( n.left( 5 ) == "sipto" )
86 ExternalAppHandler::instance()->callBySIP( n.mid(6) ); 114 ExternalAppHandler::instance()->callBySIP( n.mid(6) );
87 115
88} 116}
89void AddresseeView::setAddressee( const KABC::Addressee& mAddressee ) 117void AddresseeView::setAddressee( const KABC::Addressee& mAddressee )
90{ 118{
91 bool kemailAvail = ExternalAppHandler::instance()->isEmailAppAvailable(); 119 bool kemailAvail = ExternalAppHandler::instance()->isEmailAppAvailable();
92 // mAddressee = addr; 120 // mAddressee = addr;
93 // clear view 121 // clear view
94 //setText( QString::null ); 122 //setText( QString::null );
95 123
96 if ( mAddressee.isEmpty() ) { 124 if ( mAddressee.isEmpty() ) {
97 setText( QString::null); 125 setText( QString::null);
98 return; 126 return;
99 } 127 }
100 QString name = ( mAddressee.assembledName().isEmpty() ? 128 QString name = ( mAddressee.assembledName().isEmpty() ?
101 mAddressee.formattedName() : mAddressee.assembledName() ); 129 mAddressee.formattedName() : mAddressee.assembledName() );
102 130
103 QString dynamicPart; 131 QString dynamicPart;
104 132
105 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(),true ); 133 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(),true );
106 QStringList emails = mAddressee.emails(); 134 QStringList emails = mAddressee.emails();
107 QStringList::ConstIterator emailIt; 135 QStringList::ConstIterator emailIt;
108 QString type = i18n( "Email" ); 136 QString type = i18n( "Email" );
109 emailIt = emails.begin(); 137 emailIt = emails.begin();
110 if ( emailIt != emails.end() ) { 138 if ( emailIt != emails.end() ) {
111 if ( kemailAvail ) { 139 if ( kemailAvail ) {
112 dynamicPart += QString( 140 dynamicPart += QString(
113 "<tr><td align=\"right\"><b>%1</b></td>" 141 "<tr><td align=\"right\"><b>%1</b></td>"
114 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 142 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
115 .arg( type ) 143 .arg( type )
116 .arg( name ) 144 .arg( name )
117 .arg( *emailIt ) 145 .arg( *emailIt )
118 .arg( *emailIt ); 146 .arg( *emailIt );
119 ++emailIt; 147 ++emailIt;
120 } else { 148 } else {
121 dynamicPart += QString( 149 dynamicPart += QString(
122 "<tr><td align=\"right\"><b>%1</b></td>" 150 "<tr><td align=\"right\"><b>%1</b></td>"
123 "<td align=\"left\">%2</td></tr>" ) 151 "<td align=\"left\">%2</td></tr>" )
124 .arg( type ) 152 .arg( type )
125 .arg( *emailIt ); 153 .arg( *emailIt );
126 ++emailIt; 154 ++emailIt;
127 } 155 }
128 } 156 }
129 if ( mAddressee.birthday().date().isValid() ) { 157 if ( mAddressee.birthday().date().isValid() ) {
130 dynamicPart += QString( 158 dynamicPart += QString(
131 "<tr><td align=\"right\"><b>%1</b></td>" 159 "<tr><td align=\"right\"><b>%1</b></td>"
132 "<td align=\"left\">%2</td></tr>" ) 160 "<td align=\"left\">%2</td></tr>" )
133 .arg( i18n ("Birthday") ) 161 .arg( i18n ("Birthday") )
134 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); 162 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) );
135 } 163 }
136 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(), false ); 164 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(), false );
137 165
138 for ( ; emailIt != emails.end(); ++emailIt ) { 166 for ( ; emailIt != emails.end(); ++emailIt ) {
139 if ( kemailAvail ) { 167 if ( kemailAvail ) {
140 dynamicPart += QString( 168 dynamicPart += QString(
141 "<tr><td align=\"right\"><b>%1</b></td>" 169 "<tr><td align=\"right\"><b>%1</b></td>"
142 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 170 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
143 .arg( type ) 171 .arg( type )
144 .arg( name ) 172 .arg( name )
145 .arg( *emailIt ) 173 .arg( *emailIt )
146 .arg( *emailIt ); 174 .arg( *emailIt );
147 } else { 175 } else {
148 dynamicPart += QString( 176 dynamicPart += QString(
149 "<tr><td align=\"right\"><b>%1</b></td>" 177 "<tr><td align=\"right\"><b>%1</b></td>"
150 "<td align=\"left\">%2</td></tr>" ) 178 "<td align=\"left\">%2</td></tr>" )
151 .arg( type ) 179 .arg( type )
152 .arg( *emailIt ); 180 .arg( *emailIt );
153 } 181 }
154 } 182 }
155 183
156 if ( !mAddressee.url().url().isEmpty() ) { 184 if ( !mAddressee.url().url().isEmpty() ) {
157 dynamicPart += QString( 185 dynamicPart += QString(
158 "<tr><td align=\"right\"><b>%1</b></td>" 186 "<tr><td align=\"right\"><b>%1</b></td>"
159 "<td align=\"left\">%2</td></tr>" ) 187 "<td align=\"left\">%2</td></tr>" )
160 .arg( i18n( "Homepage" ) ) 188 .arg( i18n( "Homepage" ) )
161//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) ); 189//US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) );
162 .arg( mAddressee.url().url() ); 190 .arg( mAddressee.url().url() );
163 //qDebug("AddresseeView::setAddressee has to be verified."); 191 //qDebug("AddresseeView::setAddressee has to be verified.");
164 } 192 }
165 193
166 KABC::Address::List addresses = mAddressee.addresses(); 194 KABC::Address::List addresses = mAddressee.addresses();
167 KABC::Address::List::ConstIterator addrIt; 195 KABC::Address::List::ConstIterator addrIt;
168 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { 196 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) {
169 if ( true /*(*addrIt).label().isEmpty()*/ ) { 197 if ( true /*(*addrIt).label().isEmpty()*/ ) {
170 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); 198 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace();
171//US formattedAddress = formattedAddress.replace( '\n', "<br>" ); 199//US formattedAddress = formattedAddress.replace( '\n', "<br>" );
172 //qDebug("adresss %s ",formattedAddress.latin1() ); 200 //qDebug("adresss %s ",formattedAddress.latin1() );
173 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); 201 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" );
174 //qDebug("AddresseeView::setAddressee has to be verified."); 202 //qDebug("AddresseeView::setAddressee has to be verified.");
175 203
176 dynamicPart += QString( 204 dynamicPart += QString(
177 "<tr><td align=\"right\"><b>%1</b></td>" 205 "<tr><td align=\"right\"><b>%1</b></td>"
178 "<td align=\"left\">%2</td></tr>" ) 206 "<td align=\"left\">%2</td></tr>" )
179 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 207 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
180 .arg( formattedAddress ); 208 .arg( formattedAddress );
181 } else { 209 } else {
182 210
183 dynamicPart += QString( 211 dynamicPart += QString(
184 "<tr><td align=\"right\"><b>%1</b></td>" 212 "<tr><td align=\"right\"><b>%1</b></td>"
185 "<td align=\"left\">%2</td></tr>" ) 213 "<td align=\"left\">%2</td></tr>" )
186 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 214 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
187//US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); 215//US .arg( (*addrIt).label().replace( '\n', "<br>" ) );
188 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); 216 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ );
189 217
190 } 218 }
191 } 219 }
192 220
193 QString notes; 221 QString notes;
194 if ( !mAddressee.note().isEmpty() ) { 222 if ( !mAddressee.note().isEmpty() ) {
195 notes = QString( 223 notes = QString(
196 "<tr>" 224 "<tr>"
197 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label 225 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label
198 "<td align=\"left\">%2</td>" // note 226 "<td align=\"left\">%2</td>" // note
199 "</tr>" ).arg( i18n( "Notes" ) ) 227 "</tr>" ).arg( i18n( "Notes" ) )
200//US .arg( mAddressee.note().replace( '\n', "<br>" ) ); 228//US .arg( mAddressee.note().replace( '\n', "<br>" ) );
201 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); 229 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) );
202 //qDebug("AddresseeView::setAddressee has to be verified."); 230 //qDebug("AddresseeView::setAddressee has to be verified.");
203 } 231 }
204 232
205 QString aRole = ""; 233 QString aRole = "";
206 QString aOrga = ""; 234 QString aOrga = "";
207 if ( true /*!mAddressee.role().isEmpty()*/ ) { 235 if ( true /*!mAddressee.role().isEmpty()*/ ) {
208 aRole = "<tr>" 236 aRole = "<tr>"
209 "<td align=\"left\">" + mAddressee.role() + "</td>" 237 "<td align=\"left\">" + mAddressee.role() + "</td>"
210 "</tr>"; 238 "</tr>";
211 } 239 }
212 if ( true /*!mAddressee.organization().isEmpty()*/ ) { 240 if ( true /*!mAddressee.organization().isEmpty()*/ ) {
213 aOrga = "<tr>" 241 aOrga = "<tr>"
214 "<td align=\"left\">" + mAddressee.organization() + "</td>" ; 242 "<td align=\"left\">" + mAddressee.organization() + "</td>"
215 "</tr>"; 243 "</tr>";
216 } 244 }
217 mText = ""; 245 mText = "";
218 QString picString = ""; 246 QString picString = "";
219 KABC::Picture picture = mAddressee.photo(); 247 KABC::Picture picture = mAddressee.photo();
220 bool picAvailintern = false; 248 bool picAvailintern = false;
221 bool picAvailUrl = false; 249 bool picAvailUrl = false;
222 if (! picture.undefined() ) { 250 if (! picture.undefined() ) {
223 picAvailintern = (picture.isIntern() && !picture.data().isNull()); 251 picAvailintern = (picture.isIntern() && !picture.data().isNull());
224 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); 252 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() );
225 } 253 }
226 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { 254 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) {
227 if ( picAvailintern ) { 255 if ( picAvailintern ) {
228 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); 256 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() );
229 } else { 257 } else {
230 if ( picAvailUrl ) { 258 if ( picAvailUrl ) {
231 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() )); 259 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() ));
232 } else { 260 } else {
233 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) ); 261 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) );
234 } 262 }
235 } 263 }
236 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; 264 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">";
237 mText = QString::fromLatin1( 265 mText = QString::fromLatin1(
238 "<html>" 266 "<html>"
239 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color 267 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
240 "<table>" 268 "<table>"
241 "<tr>" 269 "<tr>"
242 "<td rowspan=\"3\" align=\"right\" valign=\"top\">" 270 "<td rowspan=\"3\" align=\"right\" valign=\"top\">"
243 "%3" 271 "%3"
244 "</td>" 272 "</td>"
245 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name 273 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name
246 "</tr>" 274 "</tr>"
247 "%5" // role 275 "%5" // role
248 "%6" // organization 276 "%6" // organization
249 "<td colspan=\"2\">&nbsp;</td>" 277 "<td colspan=\"2\">&nbsp;</td>"
250 "%7" // dynamic part 278 "%7" // dynamic part
251 "%8" // notes 279 "%8" // notes
252 "</table>" 280 "</table>"
253 "</body>" 281 "</body>"
254 "</html>") 282 "</html>")
255//US 283//US
256 .arg( /*KGlobalSettings::textColor().name()*/ "black" ) 284 .arg( /*KGlobalSettings::textColor().name()*/ "black" )
257//US 285//US
258 .arg( /*KGlobalSettings::baseColor().name()*/ "white" ) 286 .arg( /*KGlobalSettings::baseColor().name()*/ "white" )
259 .arg( picString ) 287 .arg( picString )
260 .arg( name ) 288 .arg( name )
261 .arg( aRole ) 289 .arg( aRole )
262 .arg( aOrga ) 290 .arg( aOrga )
263 .arg( dynamicPart ) 291 .arg( dynamicPart )
264 .arg( notes ); 292 .arg( notes );
265 293
266 } else { // no picture! 294 } else { // no picture!
267 295
268mText = "<table width=\"100%\">\n"; 296mText = "<table width=\"100%\">\n";
269 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 297 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
270#ifdef DESKTOP_VERSION 298#ifdef DESKTOP_VERSION
271 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; 299 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>";
272 mText += "<font color=\"#FFFFFF\">" + name +"</font></h1>"; 300 mText += "<font color=\"#FFFFFF\">" + name +"</font></h1>";
273#else 301#else
274 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h3>"; 302 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h3>";
275 mText += "<font color=\"#FFFFFF\"> " + name +"</font></h3>"; 303 mText += "<font color=\"#FFFFFF\"> " + name +"</font></h3>";
276#endif 304#endif
277 305
278 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 306 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
279 307
280 mText += "<table><td colspan=\"2\">&nbsp;</td>"; 308 mText += "<table><td colspan=\"2\">&nbsp;</td>";
281 /* 309 /*
282 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" 310 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>"
283 "<td align=\"left\"><b>%2</b></td></tr>" ) 311 "<td align=\"left\"><b>%2</b></td></tr>" )
284 .arg( i18n(" ") ) 312 .arg( i18n(" ") )
285 .arg( name ); 313 .arg( name );
286 */ 314 */
287 if ( ! mAddressee.role().isEmpty() ) 315 if ( ! mAddressee.role().isEmpty() )
288 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 316 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
289 "<td align=\"left\">%2</td></tr>" ) 317 "<td align=\"left\">%2</td></tr>" )
290 .arg( i18n(" ") ) 318 .arg( i18n(" ") )
291 .arg( mAddressee.role()); 319 .arg( mAddressee.role());
292 if ( ! mAddressee.organization().isEmpty() ) 320 if ( ! mAddressee.organization().isEmpty() )
293 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 321 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
294 "<td align=\"left\">%2</td></tr>" ) 322 "<td align=\"left\">%2</td></tr>" )
295 .arg( i18n(" ") ) 323 .arg( i18n(" ") )
296 .arg( mAddressee.organization()); 324 .arg( mAddressee.organization());
297 mText += dynamicPart; 325 mText += dynamicPart;
298 mText += notes; 326 mText += notes;
299 mText += "</table>"; 327 mText += "</table>";
300 328
301 } 329 }
302 330
303 // at last display it... 331 // at last display it...
304 setText( mText ); 332 setText( mText );
305 333
306} 334}
307 335
308QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones ,bool preferred ) 336QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones ,bool preferred )
309{ 337{
310 ExternalAppHandler* eah = ExternalAppHandler::instance(); 338 ExternalAppHandler* eah = ExternalAppHandler::instance();
311 bool kphoneAvail = eah->isPhoneAppAvailable(); 339 bool kphoneAvail = eah->isPhoneAppAvailable();
312 bool kfaxAvail = eah->isFaxAppAvailable(); 340 bool kfaxAvail = eah->isFaxAppAvailable();
313 bool ksmsAvail = eah->isSMSAppAvailable(); 341 bool ksmsAvail = eah->isSMSAppAvailable();
314 bool kpagerAvail = eah->isPagerAppAvailable(); 342 bool kpagerAvail = eah->isPagerAppAvailable();
315 bool ksipAvail = eah->isSIPAppAvailable(); 343 bool ksipAvail = eah->isSIPAppAvailable();
316 QString dynamicPart; 344 QString dynamicPart;
317 KABC::PhoneNumber::List::ConstIterator phoneIt; 345 KABC::PhoneNumber::List::ConstIterator phoneIt;
318 QString extension; 346 QString extension;
319 int phonetype; 347 int phonetype;
320 QString sms; 348 QString sms;
321 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { 349 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
322 phonetype = (*phoneIt).type(); 350 phonetype = (*phoneIt).type();
323 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) 351 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred )
324 continue; 352 continue;
325 if (ksmsAvail && 353 if (ksmsAvail &&
326 ( 354 (
327 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || 355 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
328 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) 356 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
329 ) 357 )
330 ) 358 )
331 { 359 {
332 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) 360 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
333 .arg( (*phoneIt).number() ); 361 .arg( (*phoneIt).number() );
334 362
335 } 363 }
336 else 364 else
337 sms = ""; 365 sms = "";
338 366
339 extension = QString::null; 367 extension = QString::null;
340 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { 368 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
341 if (kfaxAvail) extension = "faxto:"; 369 if (kfaxAvail) extension = "faxto:";
342 } 370 }
diff --git a/kabc/addresseeview.h b/kabc/addresseeview.h
index 3800512..e977d8f 100644
--- a/kabc/addresseeview.h
+++ b/kabc/addresseeview.h
@@ -1,79 +1,81 @@
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#ifndef KPIM_ADDRESSEEVIEW_H 22#ifndef KPIM_ADDRESSEEVIEW_H
23#define KPIM_ADDRESSEEVIEW_H 23#define KPIM_ADDRESSEEVIEW_H
24 24
25#include <kabc/addressee.h> 25#include <kabc/addressee.h>
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27 27
28//US #include <ktextbrowser.h> 28//US #include <ktextbrowser.h>
29#include <qtextbrowser.h> 29#include <qtextbrowser.h>
30 30
31namespace KPIM { 31namespace KABC {
32 32
33//US class AddresseeView : public KTextBrowser 33//US class AddresseeView : public KTextBrowser
34class AddresseeView : public QTextBrowser 34class AddresseeView : public QTextBrowser
35{ 35{
36
36 public: 37 public:
37 AddresseeView( QWidget *parent = 0, const char *name = 0 ); 38 AddresseeView( QWidget *parent = 0, const char *name = 0 );
38 39
39 /** 40 /**
40 Sets the addressee object. The addressee is displayed immediately. 41 Sets the addressee object. The addressee is displayed immediately.
41 42
42 @param addr The addressee object. 43 @param addr The addressee object.
43 */ 44 */
44 void setAddressee( const KABC::Addressee& addr ); 45 void setAddressee( const KABC::Addressee& addr );
45 void setSource(const QString& n); 46 void setSource(const QString& n);
46 /** 47 /**
47 Returns the current addressee object. 48 Returns the current addressee object.
48 */ 49 */
49 //KABC::Addressee addressee() const; 50 //KABC::Addressee addressee() const;
51 void printMe();
50 52
51 private: 53 private:
52 //KABC::Addressee mAddressee; 54 //KABC::Addressee mAddressee;
53 QString mText; 55 QString mText;
54 QString getPhoneNumbers( KABC::PhoneNumber::List phones, bool preferred ); 56 QString getPhoneNumbers( KABC::PhoneNumber::List phones, bool preferred );
55 void addTag(const QString & tag,const QString & text); 57 void addTag(const QString & tag,const QString & text);
56 //class AddresseeViewPrivate; 58 //class AddresseeViewPrivate;
57 //AddresseeViewPrivate *d; 59 //AddresseeViewPrivate *d;
58}; 60};
59class AddresseeChooser : public KDialogBase 61class AddresseeChooser : public KDialogBase
60{ 62{
61 Q_OBJECT 63 Q_OBJECT
62 64
63 public: 65 public:
64 AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 ); 66 AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 );
65 67
66 int executeD( bool local ); 68 int executeD( bool local );
67 69
68 private: 70 private:
69 int mSyncResult; 71 int mSyncResult;
70 72
71 private slots: 73 private slots:
72 void slot_remote(); 74 void slot_remote();
73 void slot_local(); 75 void slot_local();
74 76
75}; 77};
76 78
77} 79}
78 80
79#endif 81#endif
diff --git a/kaddressbook/details/detailsviewcontainer.cpp b/kaddressbook/details/detailsviewcontainer.cpp
index 229cce0..cee5886 100644
--- a/kaddressbook/details/detailsviewcontainer.cpp
+++ b/kaddressbook/details/detailsviewcontainer.cpp
@@ -1,160 +1,164 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> 3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcombobox.h> 24#include <qcombobox.h>
25#include <qframe.h> 25#include <qframe.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qwidgetstack.h> 28#include <qwidgetstack.h>
29 29
30#include <kapplication.h> 30#include <kapplication.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kdialog.h> 32#include <kdialog.h>
33 33
34#include "look_basic.h" 34#include "look_basic.h"
35//#include "look_details.h" 35//#include "look_details.h"
36#include "look_html.h" 36#include "look_html.h"
37 37
38#ifdef KAB_EMBEDDED 38#ifdef KAB_EMBEDDED
39#include "kabprefs.h" 39#include "kabprefs.h"
40#endif //KAB_EMBEDDED 40#endif //KAB_EMBEDDED
41 41
42 42
43#include "detailsviewcontainer.h" 43#include "detailsviewcontainer.h"
44 44
45ViewContainer::ViewContainer( QWidget *parent, const char* name ) 45ViewContainer::ViewContainer( QWidget *parent, const char* name )
46 : QWidget( parent, name ), mCurrentLook( 0 ) 46 : QWidget( parent, name ), mCurrentLook( 0 )
47{ 47{
48 QBoxLayout *topLayout = new QVBoxLayout( this ); 48 QBoxLayout *topLayout = new QVBoxLayout( this );
49 //topLayout->setMargin( KDialog::marginHint() ); 49 //topLayout->setMargin( KDialog::marginHint() );
50 //topLayout->setSpacing( KDialog::spacingHint() ); 50 //topLayout->setSpacing( KDialog::spacingHint() );
51 topLayout->setMargin( 0 ); 51 topLayout->setMargin( 0 );
52 topLayout->setSpacing( 0 ); 52 topLayout->setSpacing( 0 );
53 53
54 QBoxLayout *styleLayout = new QHBoxLayout( topLayout ); 54 QBoxLayout *styleLayout = new QHBoxLayout( topLayout );
55 55
56 QLabel *label = new QLabel( i18n("Style:"), this ); 56 QLabel *label = new QLabel( i18n("Style:"), this );
57 styleLayout->addWidget( label ); 57 styleLayout->addWidget( label );
58 58
59 mStyleCombo = new QComboBox( this ); 59 mStyleCombo = new QComboBox( this );
60 styleLayout->addWidget( mStyleCombo ); 60 styleLayout->addWidget( mStyleCombo );
61 61
62 QFrame *frameRuler = new QFrame( this ); 62 QFrame *frameRuler = new QFrame( this );
63//US frameRuler->setFrameShape( QFrame::HLine ); 63//US frameRuler->setFrameShape( QFrame::HLine );
64//US frameRuler->setFrameShadow( QFrame::Sunken ); 64//US frameRuler->setFrameShadow( QFrame::Sunken );
65//US topLayout->addWidget( frameRuler ); 65//US topLayout->addWidget( frameRuler );
66 66
67 mDetailsStack = new QWidgetStack( this ); 67 mDetailsStack = new QWidgetStack( this );
68 topLayout->addWidget( mDetailsStack, 1 ); 68 topLayout->addWidget( mDetailsStack, 1 );
69 69
70 registerLooks(); 70 registerLooks();
71 71
72#if 1 72#if 1
73 // Hide detailed view selection combo box, because we currently have 73 // Hide detailed view selection combo box, because we currently have
74 // only one. Reenable it when there are more detailed views. 74 // only one. Reenable it when there are more detailed views.
75 label->hide(); 75 label->hide();
76 mStyleCombo->hide(); 76 mStyleCombo->hide();
77 frameRuler->hide(); 77 frameRuler->hide();
78#endif 78#endif
79} 79}
80 80
81void ViewContainer::printView()
82{
83 mCurrentLook->printView();
84}
81KABBasicLook *ViewContainer::currentLook() 85KABBasicLook *ViewContainer::currentLook()
82{ 86{
83 return mCurrentLook; 87 return mCurrentLook;
84} 88}
85 89
86void ViewContainer::registerLooks() 90void ViewContainer::registerLooks()
87{ 91{
88 mLookFactories.append( new KABHtmlViewFactory( mDetailsStack ) ); 92 mLookFactories.append( new KABHtmlViewFactory( mDetailsStack ) );
89// mLookFactories.append( new KABDetailedViewFactory( mDetailsStack ) ); 93// mLookFactories.append( new KABDetailedViewFactory( mDetailsStack ) );
90 mStyleCombo->clear(); 94 mStyleCombo->clear();
91 95
92 for ( uint i = 0; i < mLookFactories.count(); ++i ) 96 for ( uint i = 0; i < mLookFactories.count(); ++i )
93 mStyleCombo->insertItem( mLookFactories.at( i )->description() ); 97 mStyleCombo->insertItem( mLookFactories.at( i )->description() );
94 98
95 if ( !mLookFactories.isEmpty() ) 99 if ( !mLookFactories.isEmpty() )
96 slotStyleSelected( 0 ); 100 slotStyleSelected( 0 );
97} 101}
98 102
99void ViewContainer::slotStyleSelected( int index ) 103void ViewContainer::slotStyleSelected( int index )
100{ 104{
101#ifndef KAB_EMBEDDED 105#ifndef KAB_EMBEDDED
102 KConfig *config = kapp->config(); 106 KConfig *config = kapp->config();
103#else //KAB_EMBEDDED 107#else //KAB_EMBEDDED
104 //US I hope I got the same config object as above expected. 108 //US I hope I got the same config object as above expected.
105 KConfig *config = KABPrefs::instance()->getConfig(); 109 KConfig *config = KABPrefs::instance()->getConfig();
106#endif //KAB_EMBEDDED 110#endif //KAB_EMBEDDED
107 KABC::Addressee addr; 111 KABC::Addressee addr;
108 112
109 if ( index >= 0 && index < mStyleCombo->count() ) { 113 if ( index >= 0 && index < mStyleCombo->count() ) {
110 if ( mCurrentLook != 0 ) { 114 if ( mCurrentLook != 0 ) {
111 mCurrentLook->saveSettings( config ); 115 mCurrentLook->saveSettings( config );
112 addr = mCurrentLook->addressee(); 116 addr = mCurrentLook->addressee();
113 117
114 delete mCurrentLook; 118 delete mCurrentLook;
115 mCurrentLook = 0; 119 mCurrentLook = 0;
116 } 120 }
117 121
118 KABLookFactory *factory = mLookFactories.at( index ); 122 KABLookFactory *factory = mLookFactories.at( index );
119 123
120 mCurrentLook = factory->create(); 124 mCurrentLook = factory->create();
121 mDetailsStack->raiseWidget( mCurrentLook ); 125 mDetailsStack->raiseWidget( mCurrentLook );
122 126
123 connect( mCurrentLook, SIGNAL( sendEmail( const QString& ) ), this, 127 connect( mCurrentLook, SIGNAL( sendEmail( const QString& ) ), this,
124 SIGNAL( sendEmail( const QString& ) ) ); 128 SIGNAL( sendEmail( const QString& ) ) );
125 connect( mCurrentLook, SIGNAL( browse( const QString& ) ), this, 129 connect( mCurrentLook, SIGNAL( browse( const QString& ) ), this,
126 SIGNAL( browse( const QString& ) ) ); 130 SIGNAL( browse( const QString& ) ) );
127 } 131 }
128 132
129 mCurrentLook->restoreSettings( config ); 133 mCurrentLook->restoreSettings( config );
130 mCurrentLook->setAddressee( addr ); 134 mCurrentLook->setAddressee( addr );
131} 135}
132 136
133void ViewContainer::setAddressee( const KABC::Addressee& addressee ) 137void ViewContainer::setAddressee( const KABC::Addressee& addressee )
134{ 138{
135 if ( mCurrentLook != 0 ) { 139 if ( mCurrentLook != 0 ) {
136 mCurrentAddressee = addressee; 140 mCurrentAddressee = addressee;
137 mCurrentLook->setAddressee( mCurrentAddressee ); 141 mCurrentLook->setAddressee( mCurrentAddressee );
138 142
139 } 143 }
140} 144}
141 145
142KABC::Addressee ViewContainer::addressee() 146KABC::Addressee ViewContainer::addressee()
143{ 147{
144 static KABC::Addressee empty; // do not use! 148 static KABC::Addressee empty; // do not use!
145 149
146 if ( !mCurrentLook ) 150 if ( !mCurrentLook )
147 return empty; 151 return empty;
148 else 152 else
149 return mCurrentLook->addressee(); 153 return mCurrentLook->addressee();
150} 154}
151 155
152void ViewContainer::setReadOnly( bool state ) 156void ViewContainer::setReadOnly( bool state )
153{ 157{
154 if ( mCurrentLook ) 158 if ( mCurrentLook )
155 mCurrentLook->setReadOnly( state ); 159 mCurrentLook->setReadOnly( state );
156} 160}
157 161
158#ifndef KAB_EMBEDDED 162#ifndef KAB_EMBEDDED
159#include "detailsviewcontainer.moc" 163#include "detailsviewcontainer.moc"
160#endif //KAB_EMBEDDED 164#endif //KAB_EMBEDDED
diff --git a/kaddressbook/details/detailsviewcontainer.h b/kaddressbook/details/detailsviewcontainer.h
index 667f0cb..9684736 100644
--- a/kaddressbook/details/detailsviewcontainer.h
+++ b/kaddressbook/details/detailsviewcontainer.h
@@ -1,102 +1,103 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> 3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef DETAILSVIEWCONTAINER_H 24#ifndef DETAILSVIEWCONTAINER_H
25#define DETAILSVIEWCONTAINER_H 25#define DETAILSVIEWCONTAINER_H
26 26
27#include <qptrlist.h> 27#include <qptrlist.h>
28 28
29#include "look_basic.h" 29#include "look_basic.h"
30 30
31class QComboBox; 31class QComboBox;
32class QWidgetStack; 32class QWidgetStack;
33 33
34class ViewContainer : public QWidget 34class ViewContainer : public QWidget
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 37
38 public: 38 public:
39 ViewContainer( QWidget *parent = 0, const char* name = 0 ); 39 ViewContainer( QWidget *parent = 0, const char* name = 0 );
40 40
41 /** 41 /**
42 Return the look currently selected. If there is none, it 42 Return the look currently selected. If there is none, it
43 returns zero. Do not use this pointer to store a reference 43 returns zero. Do not use this pointer to store a reference
44 to a look, the user might select another one (e.g., create 44 to a look, the user might select another one (e.g., create
45 a new object) at any time. 45 a new object) at any time.
46 */ 46 */
47 KABBasicLook *currentLook(); 47 KABBasicLook *currentLook();
48 /** 48 /**
49 Return the contact currently displayed. 49 Return the contact currently displayed.
50 */ 50 */
51 KABC::Addressee addressee(); 51 KABC::Addressee addressee();
52 52
53 public slots: 53 public slots:
54 void printView();
54 /** 55 /**
55 Set the contact currently displayed. 56 Set the contact currently displayed.
56 */ 57 */
57 void setAddressee( const KABC::Addressee& addressee ); 58 void setAddressee( const KABC::Addressee& addressee );
58 59
59 /** 60 /**
60 Set read-write state. 61 Set read-write state.
61 */ 62 */
62 void setReadOnly( bool state ); 63 void setReadOnly( bool state );
63 64
64 signals: 65 signals:
65 /** 66 /**
66 The contact has been changed. 67 The contact has been changed.
67 */ 68 */
68 void addresseeChanged(); 69 void addresseeChanged();
69 70
70 /** 71 /**
71 The user acticated the email address displayed. This may happen 72 The user acticated the email address displayed. This may happen
72 by, for example, clicking on the displayed mailto-URL. 73 by, for example, clicking on the displayed mailto-URL.
73 */ 74 */
74 void sendEmail( const QString& ); 75 void sendEmail( const QString& );
75 76
76 /** 77 /**
77 The user activated one of the displayed HTTP URLs. For example 78 The user activated one of the displayed HTTP URLs. For example
78 by clicking on the displayed homepage address. 79 by clicking on the displayed homepage address.
79 */ 80 */
80 void browse( const QString& ); 81 void browse( const QString& );
81 82
82 protected: 83 protected:
83 /** 84 /**
84 A style has been selected. Overloaded from base class. 85 A style has been selected. Overloaded from base class.
85 */ 86 */
86 void slotStyleSelected( int ); 87 void slotStyleSelected( int );
87 88
88 /** 89 /**
89 Register the available looks. 90 Register the available looks.
90 */ 91 */
91 void registerLooks(); 92 void registerLooks();
92 93
93 private: 94 private:
94 KABC::Addressee mCurrentAddressee; 95 KABC::Addressee mCurrentAddressee;
95 KABBasicLook *mCurrentLook; 96 KABBasicLook *mCurrentLook;
96 QPtrList<KABLookFactory> mLookFactories; 97 QPtrList<KABLookFactory> mLookFactories;
97 98
98 QComboBox *mStyleCombo; 99 QComboBox *mStyleCombo;
99 QWidgetStack *mDetailsStack; 100 QWidgetStack *mDetailsStack;
100}; 101};
101 102
102#endif 103#endif
diff --git a/kaddressbook/details/look_basic.h b/kaddressbook/details/look_basic.h
index 7e8baff..a65c99c 100644
--- a/kaddressbook/details/look_basic.h
+++ b/kaddressbook/details/look_basic.h
@@ -1,134 +1,136 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> 3 Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef LOOK_KABBASIC_H 24#ifndef LOOK_KABBASIC_H
25#define LOOK_KABBASIC_H 25#define LOOK_KABBASIC_H
26 26
27#include <kabc/addressbook.h> 27#include <kabc/addressbook.h>
28#include <qvbox.h> 28#include <qvbox.h>
29 29
30class KConfig; 30class KConfig;
31 31
32/** 32/**
33 This is a pure virtual base class that defines the 33 This is a pure virtual base class that defines the
34 interface for how to display and change entries of 34 interface for how to display and change entries of
35 the KDE addressbook. 35 the KDE addressbook.
36 36
37 This basic widget does not show anything in its client space. 37 This basic widget does not show anything in its client space.
38 Derive it and implement its look and how the user may edit the 38 Derive it and implement its look and how the user may edit the
39 entry. 39 entry.
40 40
41 The paintEvent() has to paint the whole widget, since repaint() 41 The paintEvent() has to paint the whole widget, since repaint()
42 calls will not delete the widgets background. 42 calls will not delete the widgets background.
43 */ 43 */
44class KABBasicLook : public QVBox 44class KABBasicLook : public QVBox
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 47
48 public: 48 public:
49 /** 49 /**
50 The constructor. 50 The constructor.
51 */ 51 */
52 KABBasicLook( QWidget *parent = 0, const char *name = 0 ); 52 KABBasicLook( QWidget *parent = 0, const char *name = 0 );
53 53
54 /** 54 /**
55 Set the entry. It will be displayed automatically. 55 Set the entry. It will be displayed automatically.
56 */ 56 */
57 virtual void setAddressee( const KABC::Addressee& addressee ); 57 virtual void setAddressee( const KABC::Addressee& addressee );
58 58
59 /** 59 /**
60 Get the current entry. 60 Get the current entry.
61 */ 61 */
62 virtual KABC::Addressee addressee(); 62 virtual KABC::Addressee addressee();
63 63
64 /** 64 /**
65 Configure the view from the configuration file. 65 Configure the view from the configuration file.
66 */ 66 */
67 virtual void restoreSettings( KConfig* ); 67 virtual void restoreSettings( KConfig* );
68 68
69 /** 69 /**
70 Save the view settings to the configuration file. 70 Save the view settings to the configuration file.
71 */ 71 */
72 virtual void saveSettings( KConfig* ); 72 virtual void saveSettings( KConfig* );
73 73
74 /** 74 /**
75 Retrieve read-write state. 75 Retrieve read-write state.
76 */ 76 */
77 bool isReadOnly() const; 77 bool isReadOnly() const;
78 void printView(){ emit printMyView();}
78 79
79 signals: 80 signals:
81 void printMyView();
80 /** 82 /**
81 This signal is emitted when the user changed the entry. 83 This signal is emitted when the user changed the entry.
82 */ 84 */
83 void entryChanged(); 85 void entryChanged();
84 86
85 /** 87 /**
86 This signal indicates that the entry needs to be changed 88 This signal indicates that the entry needs to be changed
87 immidiately in the database. This might be due to changes in 89 immidiately in the database. This might be due to changes in
88 values that are available in menus. 90 values that are available in menus.
89 */ 91 */
90 void saveMe(); 92 void saveMe();
91 93
92 /** 94 /**
93 The user acticated the email address displayed. This may happen 95 The user acticated the email address displayed. This may happen
94 by, for example, clicking on the displayed mailto-URL. 96 by, for example, clicking on the displayed mailto-URL.
95 */ 97 */
96 void sendEmail( const QString &email ); 98 void sendEmail( const QString &email );
97 99
98 /** 100 /**
99 The user activated one of the displayed HTTP URLs. For example 101 The user activated one of the displayed HTTP URLs. For example
100 by clicking on the displayed homepage address. 102 by clicking on the displayed homepage address.
101 */ 103 */
102 void browse( const QString &url ); 104 void browse( const QString &url );
103 105
104 public slots: 106 public slots:
105 /** 107 /**
106 Set read-write state. 108 Set read-write state.
107 */ 109 */
108 virtual void setReadOnly( bool state ); 110 virtual void setReadOnly( bool state );
109 111
110 private: 112 private:
111 KABC::Addressee mAddressee; 113 KABC::Addressee mAddressee;
112 bool mReadOnly; 114 bool mReadOnly;
113}; 115};
114 116
115class KABLookFactory 117class KABLookFactory
116{ 118{
117 public: 119 public:
118 KABLookFactory( QWidget *parent = 0, const char *name = 0 ); 120 KABLookFactory( QWidget *parent = 0, const char *name = 0 );
119 virtual ~KABLookFactory(); 121 virtual ~KABLookFactory();
120 122
121 virtual KABBasicLook *create() = 0; 123 virtual KABBasicLook *create() = 0;
122 124
123 /** 125 /**
124 Overload this method to provide a one-liner description 126 Overload this method to provide a one-liner description
125 for your look. 127 for your look.
126 */ 128 */
127 virtual QString description() = 0; 129 virtual QString description() = 0;
128 130
129 protected: 131 protected:
130 QWidget *mParent; 132 QWidget *mParent;
131 const char* mName; 133 const char* mName;
132}; 134};
133 135
134#endif 136#endif
diff --git a/kaddressbook/details/look_html.cpp b/kaddressbook/details/look_html.cpp
index 64987b8..bb30650 100644
--- a/kaddressbook/details/look_html.cpp
+++ b/kaddressbook/details/look_html.cpp
@@ -1,48 +1,56 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <addresseeview.h> 24#include <addresseeview.h>
25 25
26#include "look_html.h" 26#include "look_html.h"
27#include <qscrollview.h> 27#include <qscrollview.h>
28#include "kabprefs.h" 28#include "kabprefs.h"
29#include <kabc/addresseeview.h>
29KABHtmlView::KABHtmlView( QWidget *parent, const char *name ) 30KABHtmlView::KABHtmlView( QWidget *parent, const char *name )
30 : KABBasicLook( parent, name ) 31 : KABBasicLook( parent, name )
31{ 32{
32 mView = new KPIM::AddresseeView( this ); 33 mView = new KABC::AddresseeView( this );
33 mView->setFont( KABPrefs::instance()->mDetailsFont ); 34 mView->setFont( KABPrefs::instance()->mDetailsFont );
35 connect(this, SIGNAL(printMyView()),
36 this , SLOT(printMe()));
34} 37}
35 38
36KABHtmlView::~KABHtmlView() 39KABHtmlView::~KABHtmlView()
37{ 40{
38} 41}
42void KABHtmlView::printMe()
43{
44 mView->printMe();
45
46}
39 47
40void KABHtmlView::setAddressee( const KABC::Addressee &addr ) 48void KABHtmlView::setAddressee( const KABC::Addressee &addr )
41{ 49{
42 mView->setFont( KABPrefs::instance()->mDetailsFont ); 50 mView->setFont( KABPrefs::instance()->mDetailsFont );
43 mView->setAddressee( addr ); 51 mView->setAddressee( addr );
44} 52}
45 53
46#ifndef KAB_EMBEDDED 54#ifndef KAB_EMBEDDED
47#include "look_html.moc" 55#include "look_html.moc"
48#endif //KAB_EMBEDDED 56#endif //KAB_EMBEDDED
diff --git a/kaddressbook/details/look_html.h b/kaddressbook/details/look_html.h
index 68a02d9..57eb56f 100644
--- a/kaddressbook/details/look_html.h
+++ b/kaddressbook/details/look_html.h
@@ -1,75 +1,77 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef LOOK_HTML_H 24#ifndef LOOK_HTML_H
25#define LOOK_HTML_H 25#define LOOK_HTML_H
26 26
27#include <klocale.h> 27#include <klocale.h>
28 28
29#include "look_basic.h" 29#include "look_basic.h"
30 30
31namespace KABC { class Addressee; } 31namespace KABC { class Addressee; }
32namespace KPIM { class AddresseeView; } 32namespace KABC { class AddresseeView; }
33 33
34class KABHtmlView : public KABBasicLook 34class KABHtmlView : public KABBasicLook
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 37
38 public: 38 public:
39 /** 39 /**
40 The constructor. 40 The constructor.
41 */ 41 */
42 KABHtmlView( QWidget *parent = 0, const char* name = 0 ); 42 KABHtmlView( QWidget *parent = 0, const char* name = 0 );
43 43
44 /** 44 /**
45 The virtual destructor. 45 The virtual destructor.
46 */ 46 */
47 virtual ~KABHtmlView(); 47 virtual ~KABHtmlView();
48 48
49 /** 49 /**
50 Set the addressee. 50 Set the addressee.
51 */ 51 */
52 void setAddressee( const KABC::Addressee& ); 52 void setAddressee( const KABC::Addressee& );
53 public slots:
54 void printMe();
53 55
54 private: 56 private:
55 KPIM::AddresseeView *mView; 57 KABC::AddresseeView *mView;
56}; 58};
57 59
58class KABHtmlViewFactory : public KABLookFactory 60class KABHtmlViewFactory : public KABLookFactory
59{ 61{
60 public: 62 public:
61 KABHtmlViewFactory( QWidget *parent = 0, const char *name = 0 ) 63 KABHtmlViewFactory( QWidget *parent = 0, const char *name = 0 )
62 : KABLookFactory( parent, name ) {} 64 : KABLookFactory( parent, name ) {}
63 65
64 KABBasicLook *create() 66 KABBasicLook *create()
65 { 67 {
66 return new KABHtmlView( mParent, mName ); 68 return new KABHtmlView( mParent, mName );
67 } 69 }
68 70
69 QString description() 71 QString description()
70 { 72 {
71 return i18n( "HTML table style." ); 73 return i18n( "HTML table style." );
72 } 74 }
73}; 75};
74 76
75#endif 77#endif
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 4098dda..e61f65f 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1752,518 +1752,517 @@ void KABCore::initGUI()
1752// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1752// QBoxLayout *topLayout = (QBoxLayout*)layout();
1753 1753
1754// QWidget *mainBox = new QWidget( this ); 1754// QWidget *mainBox = new QWidget( this );
1755// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1755// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1756 1756
1757#ifdef DESKTOP_VERSION 1757#ifdef DESKTOP_VERSION
1758 topLayout = new QHBoxLayout( this ); 1758 topLayout = new QHBoxLayout( this );
1759 1759
1760 1760
1761 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1761 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1762 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1762 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1763 1763
1764 topLayout->addWidget(mMiniSplitter ); 1764 topLayout->addWidget(mMiniSplitter );
1765 1765
1766 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1766 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1767 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1767 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1768 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1768 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1769 mDetails = new ViewContainer( mMiniSplitter ); 1769 mDetails = new ViewContainer( mMiniSplitter );
1770 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1770 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1771#else 1771#else
1772 if ( QApplication::desktop()->width() > 480 ) { 1772 if ( QApplication::desktop()->width() > 480 ) {
1773 topLayout = new QHBoxLayout( this ); 1773 topLayout = new QHBoxLayout( this );
1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1776 } else { 1776 } else {
1777 1777
1778 topLayout = new QHBoxLayout( this ); 1778 topLayout = new QHBoxLayout( this );
1779 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1779 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1780 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1780 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1781 } 1781 }
1782 1782
1783 topLayout->addWidget(mMiniSplitter ); 1783 topLayout->addWidget(mMiniSplitter );
1784 mViewManager = new ViewManager( this, mMiniSplitter ); 1784 mViewManager = new ViewManager( this, mMiniSplitter );
1785 mDetails = new ViewContainer( mMiniSplitter ); 1785 mDetails = new ViewContainer( mMiniSplitter );
1786 1786
1787 1787
1788 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1788 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1789#endif 1789#endif
1790 //eh->hide(); 1790 //eh->hide();
1791 // topLayout->addWidget(mExtensionManager ); 1791 // topLayout->addWidget(mExtensionManager );
1792 1792
1793 1793
1794/*US 1794/*US
1795#ifndef KAB_NOSPLITTER 1795#ifndef KAB_NOSPLITTER
1796 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1796 QHBoxLayout *topLayout = new QHBoxLayout( this );
1797//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1797//US topLayout->setSpacing( KDialogBase::spacingHint() );
1798 topLayout->setSpacing( 10 ); 1798 topLayout->setSpacing( 10 );
1799 1799
1800 mDetailsSplitter = new QSplitter( this ); 1800 mDetailsSplitter = new QSplitter( this );
1801 1801
1802 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1802 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1803 1803
1804 mViewManager = new ViewManager( this, viewSpace ); 1804 mViewManager = new ViewManager( this, viewSpace );
1805 viewSpace->setStretchFactor( mViewManager, 1 ); 1805 viewSpace->setStretchFactor( mViewManager, 1 );
1806 1806
1807 mDetails = new ViewContainer( mDetailsSplitter ); 1807 mDetails = new ViewContainer( mDetailsSplitter );
1808 1808
1809 topLayout->addWidget( mDetailsSplitter ); 1809 topLayout->addWidget( mDetailsSplitter );
1810 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1810 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1811#else //KAB_NOSPLITTER 1811#else //KAB_NOSPLITTER
1812 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1812 QHBoxLayout *topLayout = new QHBoxLayout( this );
1813//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1813//US topLayout->setSpacing( KDialogBase::spacingHint() );
1814 topLayout->setSpacing( 10 ); 1814 topLayout->setSpacing( 10 );
1815 1815
1816// mDetailsSplitter = new QSplitter( this ); 1816// mDetailsSplitter = new QSplitter( this );
1817 1817
1818 QVBox *viewSpace = new QVBox( this ); 1818 QVBox *viewSpace = new QVBox( this );
1819 1819
1820 mViewManager = new ViewManager( this, viewSpace ); 1820 mViewManager = new ViewManager( this, viewSpace );
1821 viewSpace->setStretchFactor( mViewManager, 1 ); 1821 viewSpace->setStretchFactor( mViewManager, 1 );
1822 1822
1823 mDetails = new ViewContainer( this ); 1823 mDetails = new ViewContainer( this );
1824 1824
1825 topLayout->addWidget( viewSpace ); 1825 topLayout->addWidget( viewSpace );
1826// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1826// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1827 topLayout->addWidget( mDetails ); 1827 topLayout->addWidget( mDetails );
1828#endif //KAB_NOSPLITTER 1828#endif //KAB_NOSPLITTER
1829*/ 1829*/
1830 1830
1831 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1831 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1832 syncManager->setBlockSave(false); 1832 syncManager->setBlockSave(false);
1833 1833
1834 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1834 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1835 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1835 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1836 QString sync_file = sentSyncFile(); 1836 QString sync_file = sentSyncFile();
1837 qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1837 qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1838 syncManager->setDefaultFileName( sync_file ); 1838 syncManager->setDefaultFileName( sync_file );
1839 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1839 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1840 1840
1841#endif //KAB_EMBEDDED 1841#endif //KAB_EMBEDDED
1842 initActions(); 1842 initActions();
1843 1843
1844#ifdef KAB_EMBEDDED 1844#ifdef KAB_EMBEDDED
1845 addActionsManually(); 1845 addActionsManually();
1846 //US make sure the export and import menues are initialized before creating the xxPortManager. 1846 //US make sure the export and import menues are initialized before creating the xxPortManager.
1847 mXXPortManager = new XXPortManager( this, this ); 1847 mXXPortManager = new XXPortManager( this, this );
1848 1848
1849 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1849 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1850 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1850 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1851 // mActionQuit->plug ( mMainWindow->toolBar()); 1851 // mActionQuit->plug ( mMainWindow->toolBar());
1852 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1852 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1853 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1853 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1854 // mIncSearchWidget->hide(); 1854 // mIncSearchWidget->hide();
1855 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1855 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1856 SLOT( incrementalSearch( const QString& ) ) ); 1856 SLOT( incrementalSearch( const QString& ) ) );
1857 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1857 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1858 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1858 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1859 1859
1860 mJumpButtonBar = new JumpButtonBar( this, this ); 1860 mJumpButtonBar = new JumpButtonBar( this, this );
1861 1861
1862 topLayout->addWidget( mJumpButtonBar ); 1862 topLayout->addWidget( mJumpButtonBar );
1863//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1863//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1864 1864
1865// mMainWindow->getIconToolBar()->raise(); 1865// mMainWindow->getIconToolBar()->raise();
1866 1866
1867#endif //KAB_EMBEDDED 1867#endif //KAB_EMBEDDED
1868 1868
1869} 1869}
1870void KABCore::initActions() 1870void KABCore::initActions()
1871{ 1871{
1872//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1872//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1873 1873
1874#ifndef KAB_EMBEDDED 1874#ifndef KAB_EMBEDDED
1875 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1875 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1876 SLOT( clipboardDataChanged() ) ); 1876 SLOT( clipboardDataChanged() ) );
1877#endif //KAB_EMBEDDED 1877#endif //KAB_EMBEDDED
1878 1878
1879 // file menu 1879 // file menu
1880 if ( mIsPart ) { 1880
1881 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1882 SLOT( sendMail() ), actionCollection(),
1883 "kaddressbook_mail" );
1884 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1885 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1886
1887 } else {
1888 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1881 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1889 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1882 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1890 } 1883 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1884 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1885
1891 1886
1887 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1888 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1892 1889
1893 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1890 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1894 SLOT( save() ), actionCollection(), "file_sync" ); 1891 SLOT( save() ), actionCollection(), "file_sync" );
1895 1892
1896 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1893 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1897 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1894 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1898 1895
1899 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1896 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1900 this, SLOT( mailVCard() ), 1897 this, SLOT( mailVCard() ),
1901 actionCollection(), "file_mail_vcard"); 1898 actionCollection(), "file_mail_vcard");
1902 1899
1903 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1900 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1904 SLOT( export2phone() ), actionCollection(), 1901 SLOT( export2phone() ), actionCollection(),
1905 "kaddressbook_ex2phone" ); 1902 "kaddressbook_ex2phone" );
1906 1903
1907 mActionBeamVCard = 0; 1904 mActionBeamVCard = 0;
1908 mActionBeam = 0; 1905 mActionBeam = 0;
1909 1906
1910#ifndef DESKTOP_VERSION 1907#ifndef DESKTOP_VERSION
1911 if ( Ir::supported() ) { 1908 if ( Ir::supported() ) {
1912 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1909 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1913 SLOT( beamVCard() ), actionCollection(), 1910 SLOT( beamVCard() ), actionCollection(),
1914 "kaddressbook_beam_vcard" ); 1911 "kaddressbook_beam_vcard" );
1915 1912
1916 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1913 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1917 SLOT( beamMySelf() ), actionCollection(), 1914 SLOT( beamMySelf() ), actionCollection(),
1918 "kaddressbook_beam_myself" ); 1915 "kaddressbook_beam_myself" );
1919 } 1916 }
1920#endif 1917#endif
1921 1918
1922 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1919 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1923 this, SLOT( editContact2() ), 1920 this, SLOT( editContact2() ),
1924 actionCollection(), "file_properties" ); 1921 actionCollection(), "file_properties" );
1925 1922
1926#ifdef KAB_EMBEDDED 1923#ifdef KAB_EMBEDDED
1927 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1924 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1928 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1925 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1929 mMainWindow, SLOT( exit() ), 1926 mMainWindow, SLOT( exit() ),
1930 actionCollection(), "quit" ); 1927 actionCollection(), "quit" );
1931#endif //KAB_EMBEDDED 1928#endif //KAB_EMBEDDED
1932 1929
1933 // edit menu 1930 // edit menu
1934 if ( mIsPart ) { 1931 if ( mIsPart ) {
1935 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1932 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1936 SLOT( copyContacts() ), actionCollection(), 1933 SLOT( copyContacts() ), actionCollection(),
1937 "kaddressbook_copy" ); 1934 "kaddressbook_copy" );
1938 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1935 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1939 SLOT( cutContacts() ), actionCollection(), 1936 SLOT( cutContacts() ), actionCollection(),
1940 "kaddressbook_cut" ); 1937 "kaddressbook_cut" );
1941 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1938 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1942 SLOT( pasteContacts() ), actionCollection(), 1939 SLOT( pasteContacts() ), actionCollection(),
1943 "kaddressbook_paste" ); 1940 "kaddressbook_paste" );
1944 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1941 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1945 SLOT( selectAllContacts() ), actionCollection(), 1942 SLOT( selectAllContacts() ), actionCollection(),
1946 "kaddressbook_select_all" ); 1943 "kaddressbook_select_all" );
1947 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1944 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1948 SLOT( undo() ), actionCollection(), 1945 SLOT( undo() ), actionCollection(),
1949 "kaddressbook_undo" ); 1946 "kaddressbook_undo" );
1950 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1947 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1951 this, SLOT( redo() ), actionCollection(), 1948 this, SLOT( redo() ), actionCollection(),
1952 "kaddressbook_redo" ); 1949 "kaddressbook_redo" );
1953 } else { 1950 } else {
1954 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1951 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1955 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1952 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1956 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1953 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1957 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1954 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1958 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1955 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1959 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1956 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1960 } 1957 }
1961 1958
1962 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1959 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1963 Key_Delete, this, SLOT( deleteContacts() ), 1960 Key_Delete, this, SLOT( deleteContacts() ),
1964 actionCollection(), "edit_delete" ); 1961 actionCollection(), "edit_delete" );
1965 1962
1966 mActionUndo->setEnabled( false ); 1963 mActionUndo->setEnabled( false );
1967 mActionRedo->setEnabled( false ); 1964 mActionRedo->setEnabled( false );
1968 1965
1969 // settings menu 1966 // settings menu
1970#ifdef KAB_EMBEDDED 1967#ifdef KAB_EMBEDDED
1971//US special menuentry to configure the addressbook resources. On KDE 1968//US special menuentry to configure the addressbook resources. On KDE
1972// you do that through the control center !!! 1969// you do that through the control center !!!
1973 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1970 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1974 SLOT( configureResources() ), actionCollection(), 1971 SLOT( configureResources() ), actionCollection(),
1975 "kaddressbook_configure_resources" ); 1972 "kaddressbook_configure_resources" );
1976#endif //KAB_EMBEDDED 1973#endif //KAB_EMBEDDED
1977 1974
1978 if ( mIsPart ) { 1975 if ( mIsPart ) {
1979 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1976 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1980 SLOT( openConfigDialog() ), actionCollection(), 1977 SLOT( openConfigDialog() ), actionCollection(),
1981 "kaddressbook_configure" ); 1978 "kaddressbook_configure" );
1982 1979
1983 //US not implemented yet 1980 //US not implemented yet
1984 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1981 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1985 // this, SLOT( configureKeyBindings() ), actionCollection(), 1982 // this, SLOT( configureKeyBindings() ), actionCollection(),
1986 // "kaddressbook_configure_shortcuts" ); 1983 // "kaddressbook_configure_shortcuts" );
1987#ifdef KAB_EMBEDDED 1984#ifdef KAB_EMBEDDED
1988 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1985 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1989 mActionConfigureToolbars->setEnabled( false ); 1986 mActionConfigureToolbars->setEnabled( false );
1990#endif //KAB_EMBEDDED 1987#endif //KAB_EMBEDDED
1991 1988
1992 } else { 1989 } else {
1993 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1990 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1994 1991
1995 //US not implemented yet 1992 //US not implemented yet
1996 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1993 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1997 } 1994 }
1998 1995
1999 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1996 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2000 actionCollection(), "options_show_jump_bar" ); 1997 actionCollection(), "options_show_jump_bar" );
2001 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1998 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
2002 1999
2003 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2000 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2004 actionCollection(), "options_show_details" ); 2001 actionCollection(), "options_show_details" );
2005 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2002 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2006 2003
2007 2004
2008 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2005 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2009 SLOT( toggleBeamReceive() ), actionCollection(), 2006 SLOT( toggleBeamReceive() ), actionCollection(),
2010 "kaddressbook_beam_rec" ); 2007 "kaddressbook_beam_rec" );
2011 2008
2012 2009
2013 // misc 2010 // misc
2014 // only enable LDAP lookup if we can handle the protocol 2011 // only enable LDAP lookup if we can handle the protocol
2015#ifndef KAB_EMBEDDED 2012#ifndef KAB_EMBEDDED
2016 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2013 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2017 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2014 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2018 this, SLOT( openLDAPDialog() ), actionCollection(), 2015 this, SLOT( openLDAPDialog() ), actionCollection(),
2019 "ldap_lookup" ); 2016 "ldap_lookup" );
2020 } 2017 }
2021#else //KAB_EMBEDDED 2018#else //KAB_EMBEDDED
2022 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2019 //qDebug("KABCore::initActions() LDAP has to be implemented");
2023#endif //KAB_EMBEDDED 2020#endif //KAB_EMBEDDED
2024 2021
2025 2022
2026 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2023 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2027 SLOT( setWhoAmI() ), actionCollection(), 2024 SLOT( setWhoAmI() ), actionCollection(),
2028 "set_personal" ); 2025 "set_personal" );
2029 2026
2030 2027
2031 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 2028 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
2032 SLOT( setCategories() ), actionCollection(), 2029 SLOT( setCategories() ), actionCollection(),
2033 "edit_set_categories" ); 2030 "edit_set_categories" );
2034 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 2031 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this,
2035 SLOT( editCategories() ), actionCollection(), 2032 SLOT( editCategories() ), actionCollection(),
2036 "edit__categories" ); 2033 "edit__categories" );
2037 2034
2038 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2035 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2039 SLOT( removeVoice() ), actionCollection(), 2036 SLOT( removeVoice() ), actionCollection(),
2040 "remove_voice" ); 2037 "remove_voice" );
2041 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2038 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2042 SLOT( setFormattedName() ), actionCollection(), 2039 SLOT( setFormattedName() ), actionCollection(),
2043 "set_formatted" ); 2040 "set_formatted" );
2044 2041
2045 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2042 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2046 SLOT( manageCategories() ), actionCollection(), 2043 SLOT( manageCategories() ), actionCollection(),
2047 "remove_voice" ); 2044 "remove_voice" );
2048 2045
2049 2046
2050 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2047 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2051 SLOT( importFromOL() ), actionCollection(), 2048 SLOT( importFromOL() ), actionCollection(),
2052 "import_OL" ); 2049 "import_OL" );
2053#ifdef KAB_EMBEDDED 2050#ifdef KAB_EMBEDDED
2054 mActionLicence = new KAction( i18n( "Licence" ), 0, 2051 mActionLicence = new KAction( i18n( "Licence" ), 0,
2055 this, SLOT( showLicence() ), actionCollection(), 2052 this, SLOT( showLicence() ), actionCollection(),
2056 "licence_about_data" ); 2053 "licence_about_data" );
2057 mActionFaq = new KAction( i18n( "Faq" ), 0, 2054 mActionFaq = new KAction( i18n( "Faq" ), 0,
2058 this, SLOT( faq() ), actionCollection(), 2055 this, SLOT( faq() ), actionCollection(),
2059 "faq_about_data" ); 2056 "faq_about_data" );
2060 mActionWN = new KAction( i18n( "What's New?" ), 0, 2057 mActionWN = new KAction( i18n( "What's New?" ), 0,
2061 this, SLOT( whatsnew() ), actionCollection(), 2058 this, SLOT( whatsnew() ), actionCollection(),
2062 "wn" ); 2059 "wn" );
2063 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2060 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2064 this, SLOT( synchowto() ), actionCollection(), 2061 this, SLOT( synchowto() ), actionCollection(),
2065 "sync" ); 2062 "sync" );
2066 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2063 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2067 this, SLOT( kdesynchowto() ), actionCollection(), 2064 this, SLOT( kdesynchowto() ), actionCollection(),
2068 "kdesync" ); 2065 "kdesync" );
2069 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2066 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2070 this, SLOT( multisynchowto() ), actionCollection(), 2067 this, SLOT( multisynchowto() ), actionCollection(),
2071 "multisync" ); 2068 "multisync" );
2072 2069
2073 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2070 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2074 this, SLOT( createAboutData() ), actionCollection(), 2071 this, SLOT( createAboutData() ), actionCollection(),
2075 "kaddressbook_about_data" ); 2072 "kaddressbook_about_data" );
2076#endif //KAB_EMBEDDED 2073#endif //KAB_EMBEDDED
2077 2074
2078 clipboardDataChanged(); 2075 clipboardDataChanged();
2079 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2076 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2080 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2077 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2081} 2078}
2082 2079
2083//US we need this function, to plug all actions into the correct menues. 2080//US we need this function, to plug all actions into the correct menues.
2084// KDE uses a XML format to plug the actions, but we work her without this overhead. 2081// KDE uses a XML format to plug the actions, but we work her without this overhead.
2085void KABCore::addActionsManually() 2082void KABCore::addActionsManually()
2086{ 2083{
2087//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2084//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2088 2085
2089#ifdef KAB_EMBEDDED 2086#ifdef KAB_EMBEDDED
2090 QPopupMenu *fileMenu = new QPopupMenu( this ); 2087 QPopupMenu *fileMenu = new QPopupMenu( this );
2091 QPopupMenu *editMenu = new QPopupMenu( this ); 2088 QPopupMenu *editMenu = new QPopupMenu( this );
2092 QPopupMenu *helpMenu = new QPopupMenu( this ); 2089 QPopupMenu *helpMenu = new QPopupMenu( this );
2093 2090
2094 KToolBar* tb = mMainWindow->toolBar(); 2091 KToolBar* tb = mMainWindow->toolBar();
2095 2092
2096#ifndef DESKTOP_VERSION 2093#ifndef DESKTOP_VERSION
2097 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 2094 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
2098#endif 2095#endif
2099 QMenuBar* mb = mMainWindow->menuBar(); 2096 QMenuBar* mb = mMainWindow->menuBar();
2100 2097
2101 //US setup menubar. 2098 //US setup menubar.
2102 //Disable the following block if you do not want to have a menubar. 2099 //Disable the following block if you do not want to have a menubar.
2103 mb->insertItem( i18n("&File"), fileMenu ); 2100 mb->insertItem( i18n("&File"), fileMenu );
2104 mb->insertItem( i18n("&Edit"), editMenu ); 2101 mb->insertItem( i18n("&Edit"), editMenu );
2105 mb->insertItem( i18n("&View"), viewMenu ); 2102 mb->insertItem( i18n("&View"), viewMenu );
2106 mb->insertItem( i18n("&Settings"), settingsMenu ); 2103 mb->insertItem( i18n("&Settings"), settingsMenu );
2107 mb->insertItem( i18n("Synchronize"), syncMenu ); 2104 mb->insertItem( i18n("Synchronize"), syncMenu );
2108 //mb->insertItem( i18n("&Change"), changeMenu ); 2105 //mb->insertItem( i18n("&Change"), changeMenu );
2109 mb->insertItem( i18n("&Help"), helpMenu ); 2106 mb->insertItem( i18n("&Help"), helpMenu );
2110 mIncSearchWidget = new IncSearchWidget( tb ); 2107 mIncSearchWidget = new IncSearchWidget( tb );
2111 // tb->insertWidget(-1, 0, mIncSearchWidget); 2108 // tb->insertWidget(-1, 0, mIncSearchWidget);
2112#ifndef DESKTOP_VERSION 2109#ifndef DESKTOP_VERSION
2113 } else { 2110 } else {
2114 //US setup toolbar 2111 //US setup toolbar
2115 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2112 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2116 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2113 QPopupMenu *popupBarTB = new QPopupMenu( this );
2117 menuBarTB->insertItem( "ME", popupBarTB); 2114 menuBarTB->insertItem( "ME", popupBarTB);
2118 tb->insertWidget(-1, 0, menuBarTB); 2115 tb->insertWidget(-1, 0, menuBarTB);
2119 mIncSearchWidget = new IncSearchWidget( tb ); 2116 mIncSearchWidget = new IncSearchWidget( tb );
2120 2117
2121 tb->enableMoving(false); 2118 tb->enableMoving(false);
2122 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2119 popupBarTB->insertItem( i18n("&File"), fileMenu );
2123 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2120 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2124 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2121 popupBarTB->insertItem( i18n("&View"), viewMenu );
2125 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2122 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2126 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2123 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2127 mViewManager->getFilterAction()->plug ( popupBarTB); 2124 mViewManager->getFilterAction()->plug ( popupBarTB);
2128 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2125 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2129 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2126 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2130 if (QApplication::desktop()->width() > 320 ) { 2127 if (QApplication::desktop()->width() > 320 ) {
2131 // mViewManager->getFilterAction()->plug ( tb); 2128 // mViewManager->getFilterAction()->plug ( tb);
2132 } 2129 }
2133 } 2130 }
2134#endif 2131#endif
2135 // mActionQuit->plug ( mMainWindow->toolBar()); 2132 // mActionQuit->plug ( mMainWindow->toolBar());
2136 2133
2137 2134
2138 2135
2139 //US Now connect the actions with the menue entries. 2136 //US Now connect the actions with the menue entries.
2140#ifdef DESKTOP_VERSION 2137#ifdef DESKTOP_VERSION
2141 mActionPrint->plug( fileMenu ); 2138 mActionPrint->plug( fileMenu );
2139 mActionPrintDetails->plug( fileMenu );
2140 fileMenu->insertSeparator();
2142#endif 2141#endif
2143 mActionMail->plug( fileMenu ); 2142 mActionMail->plug( fileMenu );
2144 fileMenu->insertSeparator(); 2143 fileMenu->insertSeparator();
2145 2144
2146 mActionNewContact->plug( fileMenu ); 2145 mActionNewContact->plug( fileMenu );
2147 mActionNewContact->plug( tb ); 2146 mActionNewContact->plug( tb );
2148 2147
2149 mActionEditAddressee->plug( fileMenu ); 2148 mActionEditAddressee->plug( fileMenu );
2150 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2149 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2151 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2150 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2152 mActionEditAddressee->plug( tb ); 2151 mActionEditAddressee->plug( tb );
2153 2152
2154 fileMenu->insertSeparator(); 2153 fileMenu->insertSeparator();
2155 mActionSave->plug( fileMenu ); 2154 mActionSave->plug( fileMenu );
2156 fileMenu->insertItem( "&Import", ImportMenu ); 2155 fileMenu->insertItem( "&Import", ImportMenu );
2157 fileMenu->insertItem( "&Export", ExportMenu ); 2156 fileMenu->insertItem( "&Export", ExportMenu );
2158 fileMenu->insertItem( i18n("&Change"), changeMenu ); 2157 fileMenu->insertItem( i18n("&Change"), changeMenu );
2159#ifndef DESKTOP_VERSION 2158#ifndef DESKTOP_VERSION
2160 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu ); 2159 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu );
2161#endif 2160#endif
2162#if 0 2161#if 0
2163 // PENDING fix MailVCard 2162 // PENDING fix MailVCard
2164 fileMenu->insertSeparator(); 2163 fileMenu->insertSeparator();
2165 mActionMailVCard->plug( fileMenu ); 2164 mActionMailVCard->plug( fileMenu );
2166#endif 2165#endif
2167#ifndef DESKTOP_VERSION 2166#ifndef DESKTOP_VERSION
2168 if ( Ir::supported() ) mActionBR->plug( beamMenu ); 2167 if ( Ir::supported() ) mActionBR->plug( beamMenu );
2169 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu ); 2168 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu );
2170 if ( Ir::supported() ) mActionBeam->plug( beamMenu ); 2169 if ( Ir::supported() ) mActionBeam->plug( beamMenu );
2171#endif 2170#endif
2172 fileMenu->insertSeparator(); 2171 fileMenu->insertSeparator();
2173 mActionQuit->plug( fileMenu ); 2172 mActionQuit->plug( fileMenu );
2174#ifdef _WIN32_ 2173#ifdef _WIN32_
2175 mActionImportOL->plug( ImportMenu ); 2174 mActionImportOL->plug( ImportMenu );
2176#endif 2175#endif
2177 // edit menu 2176 // edit menu
2178 mActionUndo->plug( editMenu ); 2177 mActionUndo->plug( editMenu );
2179 mActionRedo->plug( editMenu ); 2178 mActionRedo->plug( editMenu );
2180 editMenu->insertSeparator(); 2179 editMenu->insertSeparator();
2181 mActionCut->plug( editMenu ); 2180 mActionCut->plug( editMenu );
2182 mActionCopy->plug( editMenu ); 2181 mActionCopy->plug( editMenu );
2183 mActionPaste->plug( editMenu ); 2182 mActionPaste->plug( editMenu );
2184 mActionDelete->plug( editMenu ); 2183 mActionDelete->plug( editMenu );
2185 editMenu->insertSeparator(); 2184 editMenu->insertSeparator();
2186 mActionSelectAll->plug( editMenu ); 2185 mActionSelectAll->plug( editMenu );
2187 2186
2188 mActionSetFormattedName->plug( changeMenu ); 2187 mActionSetFormattedName->plug( changeMenu );
2189 mActionRemoveVoice->plug( changeMenu ); 2188 mActionRemoveVoice->plug( changeMenu );
2190 // settings menu 2189 // settings menu
2191//US special menuentry to configure the addressbook resources. On KDE 2190//US special menuentry to configure the addressbook resources. On KDE
2192// you do that through the control center !!! 2191// you do that through the control center !!!
2193 mActionConfigResources->plug( settingsMenu ); 2192 mActionConfigResources->plug( settingsMenu );
2194 settingsMenu->insertSeparator(); 2193 settingsMenu->insertSeparator();
2195 2194
2196 mActionConfigKAddressbook->plug( settingsMenu ); 2195 mActionConfigKAddressbook->plug( settingsMenu );
2197 2196
2198 if ( mIsPart ) { 2197 if ( mIsPart ) {
2199 //US not implemented yet 2198 //US not implemented yet
2200 //mActionConfigShortcuts->plug( settingsMenu ); 2199 //mActionConfigShortcuts->plug( settingsMenu );
2201 //mActionConfigureToolbars->plug( settingsMenu ); 2200 //mActionConfigureToolbars->plug( settingsMenu );
2202 2201
2203 } else { 2202 } else {
2204 //US not implemented yet 2203 //US not implemented yet
2205 //mActionKeyBindings->plug( settingsMenu ); 2204 //mActionKeyBindings->plug( settingsMenu );
2206 } 2205 }
2207 2206
2208 settingsMenu->insertSeparator(); 2207 settingsMenu->insertSeparator();
2209 2208
2210 mActionJumpBar->plug( settingsMenu ); 2209 mActionJumpBar->plug( settingsMenu );
2211 mActionDetails->plug( settingsMenu ); 2210 mActionDetails->plug( settingsMenu );
2212 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2211 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2213 mActionDetails->plug( tb ); 2212 mActionDetails->plug( tb );
2214 settingsMenu->insertSeparator(); 2213 settingsMenu->insertSeparator();
2215#ifndef DESKTOP_VERSION 2214#ifndef DESKTOP_VERSION
2216 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2215 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2217#endif 2216#endif
2218 settingsMenu->insertSeparator(); 2217 settingsMenu->insertSeparator();
2219 2218
2220 mActionWhoAmI->plug( settingsMenu ); 2219 mActionWhoAmI->plug( settingsMenu );
2221 mActionEditCategories->plug( settingsMenu ); 2220 mActionEditCategories->plug( settingsMenu );
2222 mActionEditCategories->plug( changeMenu ); 2221 mActionEditCategories->plug( changeMenu );
2223 mActionCategories->plug( changeMenu ); 2222 mActionCategories->plug( changeMenu );
2224 mActionManageCategories->plug( changeMenu ); 2223 mActionManageCategories->plug( changeMenu );
2225 2224
2226 mActionCategories->plug( settingsMenu ); 2225 mActionCategories->plug( settingsMenu );
2227 mActionManageCategories->plug( settingsMenu ); 2226 mActionManageCategories->plug( settingsMenu );
2228 2227
2229 2228
2230 mActionWN->plug( helpMenu ); 2229 mActionWN->plug( helpMenu );
2231 mActionSyncHowto->plug( helpMenu ); 2230 mActionSyncHowto->plug( helpMenu );
2232 mActionKdeSyncHowto->plug( helpMenu ); 2231 mActionKdeSyncHowto->plug( helpMenu );
2233 mActionMultiSyncHowto->plug( helpMenu ); 2232 mActionMultiSyncHowto->plug( helpMenu );
2234 mActionFaq->plug( helpMenu ); 2233 mActionFaq->plug( helpMenu );
2235 mActionLicence->plug( helpMenu ); 2234 mActionLicence->plug( helpMenu );
2236 mActionAboutKAddressbook->plug( helpMenu ); 2235 mActionAboutKAddressbook->plug( helpMenu );
2237 2236
2238 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2237 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2239 2238
2240 mActionSave->plug( tb ); 2239 mActionSave->plug( tb );
2241 mViewManager->getFilterAction()->plug ( tb); 2240 mViewManager->getFilterAction()->plug ( tb);
2242 //LR hide filteraction on started in 480x640 2241 //LR hide filteraction on started in 480x640
2243 if (QApplication::desktop()->width() == 480 ) { 2242 if (QApplication::desktop()->width() == 480 ) {
2244 mViewManager->getFilterAction()->setComboWidth( 0 ); 2243 mViewManager->getFilterAction()->setComboWidth( 0 );
2245 } 2244 }
2246 mActionUndo->plug( tb ); 2245 mActionUndo->plug( tb );
2247 mActionDelete->plug( tb ); 2246 mActionDelete->plug( tb );
2248 mActionRedo->plug( tb ); 2247 mActionRedo->plug( tb );
2249 } else { 2248 } else {
2250 mActionSave->plug( tb ); 2249 mActionSave->plug( tb );
2251 tb->enableMoving(false); 2250 tb->enableMoving(false);
2252 } 2251 }
2253 //mActionQuit->plug ( tb ); 2252 //mActionQuit->plug ( tb );
2254 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2253 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2255 2254
2256 //US link the searchwidget first to this. 2255 //US link the searchwidget first to this.
2257 // The real linkage to the toolbar happens later. 2256 // The real linkage to the toolbar happens later.
2258//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2257//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2259//US tb->insertItem( mIncSearchWidget ); 2258//US tb->insertItem( mIncSearchWidget );
2260/*US 2259/*US
2261 mIncSearchWidget = new IncSearchWidget( tb ); 2260 mIncSearchWidget = new IncSearchWidget( tb );
2262 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2261 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2263 SLOT( incrementalSearch( const QString& ) ) ); 2262 SLOT( incrementalSearch( const QString& ) ) );
2264 2263
2265 mJumpButtonBar = new JumpButtonBar( this, this ); 2264 mJumpButtonBar = new JumpButtonBar( this, this );
2266 2265
2267//US topLayout->addWidget( mJumpButtonBar ); 2266//US topLayout->addWidget( mJumpButtonBar );
2268 this->layout()->add( mJumpButtonBar ); 2267 this->layout()->add( mJumpButtonBar );
2269*/ 2268*/
@@ -2643,257 +2642,257 @@ void KABCore::faq()
2643#include <libkcal/syncdefines.h> 2642#include <libkcal/syncdefines.h>
2644 2643
2645KABC::Addressee KABCore::getLastSyncAddressee() 2644KABC::Addressee KABCore::getLastSyncAddressee()
2646{ 2645{
2647 Addressee lse; 2646 Addressee lse;
2648 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2647 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2649 2648
2650 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2649 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2651 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2650 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2652 if (lse.isEmpty()) { 2651 if (lse.isEmpty()) {
2653 qDebug("Creating new last-syncAddressee "); 2652 qDebug("Creating new last-syncAddressee ");
2654 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2653 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2655 QString sum = ""; 2654 QString sum = "";
2656 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2655 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2657 sum = "E: "; 2656 sum = "E: ";
2658 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2657 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2659 lse.setRevision( mLastAddressbookSync ); 2658 lse.setRevision( mLastAddressbookSync );
2660 lse.setCategories( i18n("SyncEvent") ); 2659 lse.setCategories( i18n("SyncEvent") );
2661 mAddressBook->insertAddressee( lse ); 2660 mAddressBook->insertAddressee( lse );
2662 } 2661 }
2663 return lse; 2662 return lse;
2664} 2663}
2665int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2664int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2666{ 2665{
2667 2666
2668 //void setZaurusId(int id); 2667 //void setZaurusId(int id);
2669 // int zaurusId() const; 2668 // int zaurusId() const;
2670 // void setZaurusUid(int id); 2669 // void setZaurusUid(int id);
2671 // int zaurusUid() const; 2670 // int zaurusUid() const;
2672 // void setZaurusStat(int id); 2671 // void setZaurusStat(int id);
2673 // int zaurusStat() const; 2672 // int zaurusStat() const;
2674 // 0 equal 2673 // 0 equal
2675 // 1 take local 2674 // 1 take local
2676 // 2 take remote 2675 // 2 take remote
2677 // 3 cancel 2676 // 3 cancel
2678 QDateTime lastSync = mLastAddressbookSync; 2677 QDateTime lastSync = mLastAddressbookSync;
2679 QDateTime localMod = local->revision(); 2678 QDateTime localMod = local->revision();
2680 QDateTime remoteMod = remote->revision(); 2679 QDateTime remoteMod = remote->revision();
2681 2680
2682 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2681 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2683 2682
2684 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2683 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2685 bool remCh, locCh; 2684 bool remCh, locCh;
2686 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2685 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2687 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2686 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2688 locCh = ( localMod > mLastAddressbookSync ); 2687 locCh = ( localMod > mLastAddressbookSync );
2689 if ( !remCh && ! locCh ) { 2688 if ( !remCh && ! locCh ) {
2690 //qDebug("both not changed "); 2689 //qDebug("both not changed ");
2691 lastSync = localMod.addDays(1); 2690 lastSync = localMod.addDays(1);
2692 if ( mode <= SYNC_PREF_ASK ) 2691 if ( mode <= SYNC_PREF_ASK )
2693 return 0; 2692 return 0;
2694 } else { 2693 } else {
2695 if ( locCh ) { 2694 if ( locCh ) {
2696 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2695 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2697 lastSync = localMod.addDays( -1 ); 2696 lastSync = localMod.addDays( -1 );
2698 if ( !remCh ) 2697 if ( !remCh )
2699 remoteMod =( lastSync.addDays( -1 ) ); 2698 remoteMod =( lastSync.addDays( -1 ) );
2700 } else { 2699 } else {
2701 //qDebug(" not loc changed "); 2700 //qDebug(" not loc changed ");
2702 lastSync = localMod.addDays( 1 ); 2701 lastSync = localMod.addDays( 1 );
2703 if ( remCh ) { 2702 if ( remCh ) {
2704 //qDebug("rem changed "); 2703 //qDebug("rem changed ");
2705 remoteMod =( lastSync.addDays( 1 ) ); 2704 remoteMod =( lastSync.addDays( 1 ) );
2706 } 2705 }
2707 2706
2708 } 2707 }
2709 } 2708 }
2710 full = true; 2709 full = true;
2711 if ( mode < SYNC_PREF_ASK ) 2710 if ( mode < SYNC_PREF_ASK )
2712 mode = SYNC_PREF_ASK; 2711 mode = SYNC_PREF_ASK;
2713 } else { 2712 } else {
2714 if ( localMod == remoteMod ) 2713 if ( localMod == remoteMod )
2715 return 0; 2714 return 0;
2716 2715
2717 } 2716 }
2718 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec()); 2717 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec());
2719 //qDebug("lastsync %s ", lastSync.toString().latin1() ); 2718 //qDebug("lastsync %s ", lastSync.toString().latin1() );
2720 //full = true; //debug only 2719 //full = true; //debug only
2721 if ( full ) { 2720 if ( full ) {
2722 bool equ = ( (*local) == (*remote) ); 2721 bool equ = ( (*local) == (*remote) );
2723 if ( equ ) { 2722 if ( equ ) {
2724 //qDebug("equal "); 2723 //qDebug("equal ");
2725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2724 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2726 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2725 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2727 } 2726 }
2728 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2727 if ( mode < SYNC_PREF_FORCE_LOCAL )
2729 return 0; 2728 return 0;
2730 2729
2731 }//else //debug only 2730 }//else //debug only
2732 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2731 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2733 } 2732 }
2734 int result; 2733 int result;
2735 bool localIsNew; 2734 bool localIsNew;
2736 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2735 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2737 2736
2738 if ( full && mode < SYNC_PREF_NEWEST ) 2737 if ( full && mode < SYNC_PREF_NEWEST )
2739 mode = SYNC_PREF_ASK; 2738 mode = SYNC_PREF_ASK;
2740 2739
2741 switch( mode ) { 2740 switch( mode ) {
2742 case SYNC_PREF_LOCAL: 2741 case SYNC_PREF_LOCAL:
2743 if ( lastSync > remoteMod ) 2742 if ( lastSync > remoteMod )
2744 return 1; 2743 return 1;
2745 if ( lastSync > localMod ) 2744 if ( lastSync > localMod )
2746 return 2; 2745 return 2;
2747 return 1; 2746 return 1;
2748 break; 2747 break;
2749 case SYNC_PREF_REMOTE: 2748 case SYNC_PREF_REMOTE:
2750 if ( lastSync > remoteMod ) 2749 if ( lastSync > remoteMod )
2751 return 1; 2750 return 1;
2752 if ( lastSync > localMod ) 2751 if ( lastSync > localMod )
2753 return 2; 2752 return 2;
2754 return 2; 2753 return 2;
2755 break; 2754 break;
2756 case SYNC_PREF_NEWEST: 2755 case SYNC_PREF_NEWEST:
2757 if ( localMod > remoteMod ) 2756 if ( localMod > remoteMod )
2758 return 1; 2757 return 1;
2759 else 2758 else
2760 return 2; 2759 return 2;
2761 break; 2760 break;
2762 case SYNC_PREF_ASK: 2761 case SYNC_PREF_ASK:
2763 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2762 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2764 if ( lastSync > remoteMod ) 2763 if ( lastSync > remoteMod )
2765 return 1; 2764 return 1;
2766 if ( lastSync > localMod ) 2765 if ( lastSync > localMod )
2767 return 2; 2766 return 2;
2768 localIsNew = localMod >= remoteMod; 2767 localIsNew = localMod >= remoteMod;
2769 //qDebug("conflict! ************************************** "); 2768 //qDebug("conflict! ************************************** ");
2770 { 2769 {
2771 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2770 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2772 result = acd.executeD(localIsNew); 2771 result = acd.executeD(localIsNew);
2773 return result; 2772 return result;
2774 } 2773 }
2775 break; 2774 break;
2776 case SYNC_PREF_FORCE_LOCAL: 2775 case SYNC_PREF_FORCE_LOCAL:
2777 return 1; 2776 return 1;
2778 break; 2777 break;
2779 case SYNC_PREF_FORCE_REMOTE: 2778 case SYNC_PREF_FORCE_REMOTE:
2780 return 2; 2779 return 2;
2781 break; 2780 break;
2782 2781
2783 default: 2782 default:
2784 // SYNC_PREF_TAKE_BOTH not implemented 2783 // SYNC_PREF_TAKE_BOTH not implemented
2785 break; 2784 break;
2786 } 2785 }
2787 return 0; 2786 return 0;
2788} 2787}
2789 2788
2790 2789
2791bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2790bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2792{ 2791{
2793 bool syncOK = true; 2792 bool syncOK = true;
2794 int addedAddressee = 0; 2793 int addedAddressee = 0;
2795 int addedAddresseeR = 0; 2794 int addedAddresseeR = 0;
2796 int deletedAddresseeR = 0; 2795 int deletedAddresseeR = 0;
2797 int deletedAddresseeL = 0; 2796 int deletedAddresseeL = 0;
2798 int changedLocal = 0; 2797 int changedLocal = 0;
2799 int changedRemote = 0; 2798 int changedRemote = 0;
2800 2799
2801 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2800 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2802 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2801 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2803 2802
2804 //QPtrList<Addressee> el = local->rawAddressees(); 2803 //QPtrList<Addressee> el = local->rawAddressees();
2805 Addressee addresseeR; 2804 Addressee addresseeR;
2806 QString uid; 2805 QString uid;
2807 int take; 2806 int take;
2808 Addressee addresseeL; 2807 Addressee addresseeL;
2809 Addressee addresseeRSync; 2808 Addressee addresseeRSync;
2810 Addressee addresseeLSync; 2809 Addressee addresseeLSync;
2811 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2810 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2812 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2811 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2813 bool fullDateRange = false; 2812 bool fullDateRange = false;
2814 local->resetTempSyncStat(); 2813 local->resetTempSyncStat();
2815 mLastAddressbookSync = QDateTime::currentDateTime(); 2814 mLastAddressbookSync = QDateTime::currentDateTime();
2816 if ( syncManager->syncWithDesktop() ) { 2815 if ( syncManager->syncWithDesktop() ) {
2817 // remote->removeSyncInfo( QString());//remove all info 2816 // remote->removeSyncInfo( QString());//remove all info
2818 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2817 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2819 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2818 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2820 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2819 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2821 } else { 2820 } else {
2822 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 2821 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
2823 } 2822 }
2824 } 2823 }
2825 QDateTime modifiedCalendar = mLastAddressbookSync; 2824 QDateTime modifiedCalendar = mLastAddressbookSync;
2826 addresseeLSync = getLastSyncAddressee(); 2825 addresseeLSync = getLastSyncAddressee();
2827 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2826 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2828 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2827 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2829 if ( !addresseeR.isEmpty() ) { 2828 if ( !addresseeR.isEmpty() ) {
2830 addresseeRSync = addresseeR; 2829 addresseeRSync = addresseeR;
2831 remote->removeAddressee(addresseeR ); 2830 remote->removeAddressee(addresseeR );
2832 2831
2833 } else { 2832 } else {
2834 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2833 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2835 addresseeRSync = addresseeLSync ; 2834 addresseeRSync = addresseeLSync ;
2836 } else { 2835 } else {
2837 //qDebug("FULLDATE 1"); 2836 //qDebug("FULLDATE 1");
2838 fullDateRange = true; 2837 fullDateRange = true;
2839 Addressee newAdd; 2838 Addressee newAdd;
2840 addresseeRSync = newAdd; 2839 addresseeRSync = newAdd;
2841 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2840 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2842 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2841 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2843 addresseeRSync.setRevision( mLastAddressbookSync ); 2842 addresseeRSync.setRevision( mLastAddressbookSync );
2844 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2843 addresseeRSync.setCategories( i18n("SyncAddressee") );
2845 } 2844 }
2846 } 2845 }
2847 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2846 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2848 // qDebug("FULLDATE 2"); 2847 // qDebug("FULLDATE 2");
2849 fullDateRange = true; 2848 fullDateRange = true;
2850 } 2849 }
2851 if ( ! fullDateRange ) { 2850 if ( ! fullDateRange ) {
2852 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2851 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2853 2852
2854 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2853 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2855 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2854 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2856 fullDateRange = true; 2855 fullDateRange = true;
2857 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2856 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2858 } 2857 }
2859 } 2858 }
2860 // fullDateRange = true; // debug only! 2859 // fullDateRange = true; // debug only!
2861 if ( fullDateRange ) 2860 if ( fullDateRange )
2862 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2861 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2863 else 2862 else
2864 mLastAddressbookSync = addresseeLSync.revision(); 2863 mLastAddressbookSync = addresseeLSync.revision();
2865 // for resyncing if own file has changed 2864 // for resyncing if own file has changed
2866 // PENDING fixme later when implemented 2865 // PENDING fixme later when implemented
2867#if 0 2866#if 0
2868 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2867 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2869 mLastAddressbookSync = loadedFileVersion; 2868 mLastAddressbookSync = loadedFileVersion;
2870 qDebug("setting mLastAddressbookSync "); 2869 qDebug("setting mLastAddressbookSync ");
2871 } 2870 }
2872#endif 2871#endif
2873 2872
2874 2873
2875 // ********** setting filters **************** 2874 // ********** setting filters ****************
2876 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB ); 2875 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB );
2877 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB ); 2876 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB );
2878 2877
2879 //qDebug("*************************** "); 2878 //qDebug("*************************** ");
2880 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2879 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2881 QStringList er = remote->uidList(); 2880 QStringList er = remote->uidList();
2882 Addressee inR ;//= er.first(); 2881 Addressee inR ;//= er.first();
2883 Addressee inL; 2882 Addressee inL;
2884 2883
2885 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 2884 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
2886 2885
2887 int modulo = (er.count()/10)+1; 2886 int modulo = (er.count()/10)+1;
2888 int incCounter = 0; 2887 int incCounter = 0;
2889 while ( incCounter < er.count()) { 2888 while ( incCounter < er.count()) {
2890 if (syncManager->isProgressBarCanceled()) 2889 if (syncManager->isProgressBarCanceled())
2891 return false; 2890 return false;
2892 if ( incCounter % modulo == 0 ) 2891 if ( incCounter % modulo == 0 )
2893 syncManager->showProgressBar(incCounter); 2892 syncManager->showProgressBar(incCounter);
2894 2893
2895 uid = er[ incCounter ]; 2894 uid = er[ incCounter ];
2896 bool skipIncidence = false; 2895 bool skipIncidence = false;
2897 if ( uid.left(19) == QString("last-syncAddressee-") ) 2896 if ( uid.left(19) == QString("last-syncAddressee-") )
2898 skipIncidence = true; 2897 skipIncidence = true;
2899 QString idS,OidS; 2898 QString idS,OidS;
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 0d5891e..ecfe6e9 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -305,214 +305,215 @@ class KABCore : public QWidget, public KSyncInterface
305 /** 305 /**
306 Redos the last command that was undone, using the redo stack. 306 Redos the last command that was undone, using the redo stack.
307 */ 307 */
308 void redo(); 308 void redo();
309 309
310 /** 310 /**
311 Shows the edit dialog for the given uid. If the uid is QString::null, 311 Shows the edit dialog for the given uid. If the uid is QString::null,
312 the method will try to find a selected addressee in the view. 312 the method will try to find a selected addressee in the view.
313 */ 313 */
314 void editContact( const QString &uid /*US = QString::null*/ ); 314 void editContact( const QString &uid /*US = QString::null*/ );
315//US added a second method without defaultparameter 315//US added a second method without defaultparameter
316 void editContact2(); 316 void editContact2();
317 317
318 /** 318 /**
319 Shows or edits the detail view for the given uid. If the uid is QString::null, 319 Shows or edits the detail view for the given uid. If the uid is QString::null,
320 the method will try to find a selected addressee in the view. 320 the method will try to find a selected addressee in the view.
321 */ 321 */
322 void executeContact( const QString &uid /*US = QString::null*/ ); 322 void executeContact( const QString &uid /*US = QString::null*/ );
323 323
324 /** 324 /**
325 Launches the configuration dialog. 325 Launches the configuration dialog.
326 */ 326 */
327 void openConfigDialog(); 327 void openConfigDialog();
328 328
329 /** 329 /**
330 Launches the ldap search dialog. 330 Launches the ldap search dialog.
331 */ 331 */
332 void openLDAPDialog(); 332 void openLDAPDialog();
333 333
334 /** 334 /**
335 Creates a KAddressBookPrinter, which will display the print 335 Creates a KAddressBookPrinter, which will display the print
336 dialog and do the printing. 336 dialog and do the printing.
337 */ 337 */
338 void print(); 338 void print();
339 339
340 /** 340 /**
341 Registers a new GUI client, so plugins can register its actions. 341 Registers a new GUI client, so plugins can register its actions.
342 */ 342 */
343 void addGUIClient( KXMLGUIClient *client ); 343 void addGUIClient( KXMLGUIClient *client );
344 344
345 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid); 345 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid);
346 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid); 346 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid);
347 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid); 347 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid);
348 348
349 349
350 signals: 350 signals:
351 void contactSelected( const QString &name ); 351 void contactSelected( const QString &name );
352 void contactSelected( const QPixmap &pixmap ); 352 void contactSelected( const QPixmap &pixmap );
353 public slots: 353 public slots:
354 void recieve(QString cmsg ); 354 void recieve(QString cmsg );
355 void getFile( bool success ); 355 void getFile( bool success );
356 void syncFileRequest(); 356 void syncFileRequest();
357 void setDetailsVisible( bool visible ); 357 void setDetailsVisible( bool visible );
358 void setDetailsToState(); 358 void setDetailsToState();
359 359
360 void saveSettings(); 360 void saveSettings();
361 361
362 private slots: 362 private slots:
363 void updateToolBar(); 363 void updateToolBar();
364 void updateMainWindow(); 364 void updateMainWindow();
365 void receive( const QCString& cmsg, const QByteArray& data ); 365 void receive( const QCString& cmsg, const QByteArray& data );
366 void toggleBeamReceive( ); 366 void toggleBeamReceive( );
367 void disableBR(bool); 367 void disableBR(bool);
368 void setJumpButtonBarVisible( bool visible ); 368 void setJumpButtonBarVisible( bool visible );
369 void setCaptionBack(); 369 void setCaptionBack();
370 void importFromOL(); 370 void importFromOL();
371 void extensionModified( const KABC::Addressee::List &list ); 371 void extensionModified( const KABC::Addressee::List &list );
372 void extensionChanged( int id ); 372 void extensionChanged( int id );
373 void clipboardDataChanged(); 373 void clipboardDataChanged();
374 void updateActionMenu(); 374 void updateActionMenu();
375 void configureKeyBindings(); 375 void configureKeyBindings();
376 void removeVoice(); 376 void removeVoice();
377 void setFormattedName(); 377 void setFormattedName();
378#ifdef KAB_EMBEDDED 378#ifdef KAB_EMBEDDED
379 void configureResources(); 379 void configureResources();
380#endif //KAB_EMBEDDED 380#endif //KAB_EMBEDDED
381 381
382 void slotEditorDestroyed( const QString &uid ); 382 void slotEditorDestroyed( const QString &uid );
383 void configurationChanged(); 383 void configurationChanged();
384 void addressBookChanged(); 384 void addressBookChanged();
385 385
386 private: 386 private:
387 void resizeEvent(QResizeEvent* e ); 387 void resizeEvent(QResizeEvent* e );
388 bool mBRdisabled; 388 bool mBRdisabled;
389#ifndef DESKTOP_VERSION 389#ifndef DESKTOP_VERSION
390 QCopChannel* infrared; 390 QCopChannel* infrared;
391#endif 391#endif
392 QTimer *mMessageTimer; 392 QTimer *mMessageTimer;
393 void initGUI(); 393 void initGUI();
394 void initActions(); 394 void initActions();
395 QString getPhoneFile(); 395 QString getPhoneFile();
396 396
397 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, 397 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent,
398 const char *name = 0 ); 398 const char *name = 0 );
399 399
400 KXMLGUIClient *mGUIClient; 400 KXMLGUIClient *mGUIClient;
401 401
402 KABC::AddressBook *mAddressBook; 402 KABC::AddressBook *mAddressBook;
403 403
404 ViewManager *mViewManager; 404 ViewManager *mViewManager;
405 // QSplitter *mDetailsSplitter; 405 // QSplitter *mDetailsSplitter;
406 KDGanttMinimizeSplitter *mExtensionBarSplitter; 406 KDGanttMinimizeSplitter *mExtensionBarSplitter;
407 ViewContainer *mDetails; 407 ViewContainer *mDetails;
408 KDGanttMinimizeSplitter* mMiniSplitter; 408 KDGanttMinimizeSplitter* mMiniSplitter;
409 XXPortManager *mXXPortManager; 409 XXPortManager *mXXPortManager;
410 JumpButtonBar *mJumpButtonBar; 410 JumpButtonBar *mJumpButtonBar;
411 IncSearchWidget *mIncSearchWidget; 411 IncSearchWidget *mIncSearchWidget;
412 ExtensionManager *mExtensionManager; 412 ExtensionManager *mExtensionManager;
413 413
414 KCMultiDialog *mConfigureDialog; 414 KCMultiDialog *mConfigureDialog;
415 415
416#ifndef KAB_EMBEDDED 416#ifndef KAB_EMBEDDED
417 LDAPSearchDialog *mLdapSearchDialog; 417 LDAPSearchDialog *mLdapSearchDialog;
418#endif //KAB_EMBEDDED 418#endif //KAB_EMBEDDED
419 // QDict<AddresseeEditorDialog> mEditorDict; 419 // QDict<AddresseeEditorDialog> mEditorDict;
420 AddresseeEditorDialog *mEditorDialog; 420 AddresseeEditorDialog *mEditorDialog;
421 bool mReadWrite; 421 bool mReadWrite;
422 bool mModified; 422 bool mModified;
423 bool mIsPart; 423 bool mIsPart;
424 bool mMultipleViewsAtOnce; 424 bool mMultipleViewsAtOnce;
425 425
426 426
427 //US file menu 427 //US file menu
428 KAction *mActionMail; 428 KAction *mActionMail;
429 KAction *mActionBeam; 429 KAction *mActionBeam;
430 KToggleAction *mActionBR; 430 KToggleAction *mActionBR;
431 KAction *mActionExport2phone; 431 KAction *mActionExport2phone;
432 KAction* mActionPrint; 432 KAction* mActionPrint;
433 KAction* mActionPrintDetails;
433 KAction* mActionNewContact; 434 KAction* mActionNewContact;
434 KAction *mActionSave; 435 KAction *mActionSave;
435 KAction *mActionEditAddressee; 436 KAction *mActionEditAddressee;
436 KAction *mActionMailVCard; 437 KAction *mActionMailVCard;
437 KAction *mActionBeamVCard; 438 KAction *mActionBeamVCard;
438 439
439 KAction *mActionQuit; 440 KAction *mActionQuit;
440 441
441 //US edit menu 442 //US edit menu
442 KAction *mActionCopy; 443 KAction *mActionCopy;
443 KAction *mActionCut; 444 KAction *mActionCut;
444 KAction *mActionPaste; 445 KAction *mActionPaste;
445 KAction *mActionSelectAll; 446 KAction *mActionSelectAll;
446 KAction *mActionUndo; 447 KAction *mActionUndo;
447 KAction *mActionRedo; 448 KAction *mActionRedo;
448 KAction *mActionDelete; 449 KAction *mActionDelete;
449 450
450 //US settings menu 451 //US settings menu
451 KAction *mActionConfigResources; 452 KAction *mActionConfigResources;
452 KAction *mActionConfigKAddressbook; 453 KAction *mActionConfigKAddressbook;
453 KAction *mActionConfigShortcuts; 454 KAction *mActionConfigShortcuts;
454 KAction *mActionConfigureToolbars; 455 KAction *mActionConfigureToolbars;
455 KAction *mActionKeyBindings; 456 KAction *mActionKeyBindings;
456 KToggleAction *mActionJumpBar; 457 KToggleAction *mActionJumpBar;
457 KToggleAction *mActionDetails; 458 KToggleAction *mActionDetails;
458 KAction *mActionWhoAmI; 459 KAction *mActionWhoAmI;
459 KAction *mActionCategories; 460 KAction *mActionCategories;
460 KAction *mActionEditCategories; 461 KAction *mActionEditCategories;
461 KAction *mActionManageCategories; 462 KAction *mActionManageCategories;
462 KAction *mActionAboutKAddressbook; 463 KAction *mActionAboutKAddressbook;
463 KAction *mActionLicence; 464 KAction *mActionLicence;
464 KAction *mActionFaq; 465 KAction *mActionFaq;
465 KAction *mActionWN; 466 KAction *mActionWN;
466 KAction *mActionSyncHowto; 467 KAction *mActionSyncHowto;
467 KAction *mActionKdeSyncHowto; 468 KAction *mActionKdeSyncHowto;
468 KAction *mActionMultiSyncHowto; 469 KAction *mActionMultiSyncHowto;
469 470
470 KAction *mActionDeleteView; 471 KAction *mActionDeleteView;
471 472
472 QPopupMenu *viewMenu; 473 QPopupMenu *viewMenu;
473 QPopupMenu *filterMenu; 474 QPopupMenu *filterMenu;
474 QPopupMenu *settingsMenu; 475 QPopupMenu *settingsMenu;
475 QPopupMenu *changeMenu; 476 QPopupMenu *changeMenu;
476 QPopupMenu *beamMenu; 477 QPopupMenu *beamMenu;
477//US QAction *mActionSave; 478//US QAction *mActionSave;
478 QPopupMenu *ImportMenu; 479 QPopupMenu *ImportMenu;
479 QPopupMenu *ExportMenu; 480 QPopupMenu *ExportMenu;
480 //LR additional methods 481 //LR additional methods
481 KAction *mActionRemoveVoice; 482 KAction *mActionRemoveVoice;
482 KAction *mActionSetFormattedName; 483 KAction *mActionSetFormattedName;
483 KAction * mActionImportOL; 484 KAction * mActionImportOL;
484 485
485#ifndef KAB_EMBEDDED 486#ifndef KAB_EMBEDDED
486 KAddressBookService *mAddressBookService; 487 KAddressBookService *mAddressBookService;
487#endif //KAB_EMBEDDED 488#endif //KAB_EMBEDDED
488 489
489 class KABCorePrivate; 490 class KABCorePrivate;
490 KABCorePrivate *d; 491 KABCorePrivate *d;
491 //US bool mBlockSaveFlag; 492 //US bool mBlockSaveFlag;
492 493
493#ifdef KAB_EMBEDDED 494#ifdef KAB_EMBEDDED
494 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 495 KAddressBookMain *mMainWindow; // should be the same like mGUIClient
495#endif //KAB_EMBEDDED 496#endif //KAB_EMBEDDED
496 497
497 //this are the overwritten callbackmethods from the syncinterface 498 //this are the overwritten callbackmethods from the syncinterface
498 virtual bool sync(KSyncManager* manager, QString filename, int mode); 499 virtual bool sync(KSyncManager* manager, QString filename, int mode);
499 virtual bool syncExternal(KSyncManager* manager, QString resource); 500 virtual bool syncExternal(KSyncManager* manager, QString resource);
500 virtual void removeSyncInfo( QString syncProfile); 501 virtual void removeSyncInfo( QString syncProfile);
501 bool syncPhone(); 502 bool syncPhone();
502 void message( QString m ); 503 void message( QString m );
503 504
504 // LR ******************************* 505 // LR *******************************
505 // sync stuff! 506 // sync stuff!
506 QString sentSyncFile(); 507 QString sentSyncFile();
507 QPopupMenu *syncMenu; 508 QPopupMenu *syncMenu;
508 KSyncManager* syncManager; 509 KSyncManager* syncManager;
509 int mGlobalSyncMode; 510 int mGlobalSyncMode;
510 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); 511 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode);
511 KABC::Addressee getLastSyncAddressee(); 512 KABC::Addressee getLastSyncAddressee();
512 QDateTime mLastAddressbookSync; 513 QDateTime mLastAddressbookSync;
513 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ); 514 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full );
514 // ********************* 515 // *********************
515 516
516}; 517};
517 518
518#endif 519#endif
diff --git a/kaddressbook/kaddressbookview.h b/kaddressbook/kaddressbookview.h
index 8646136..8f31910 100644
--- a/kaddressbook/kaddressbookview.h
+++ b/kaddressbook/kaddressbookview.h
@@ -1,301 +1,310 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef KADDRESSBOOKVIEW_H 24#ifndef KADDRESSBOOKVIEW_H
25#define KADDRESSBOOKVIEW_H 25#define KADDRESSBOOKVIEW_H
26 26
27#ifndef KAB_EMBEDDED 27#ifndef KAB_EMBEDDED
28#include <klibloader.h> 28#include <klibloader.h>
29#endif //KAB_EMBEDDED 29#endif //KAB_EMBEDDED
30 30
31class KConfig; 31class KConfig;
32class QDropEvent; 32class QDropEvent;
33 33
34#include <qstringlist.h> 34#include <qstringlist.h>
35#include <kabc/field.h> 35#include <kabc/field.h>
36#include <qwidget.h> 36#include <qwidget.h>
37 37
38#include "viewconfigurewidget.h" 38#include "viewconfigurewidget.h"
39#include "filter.h" 39#include "filter.h"
40 40
41#ifdef DESKTOP_VERSION
42#include <qpaintdevicemetrics.h>
43#include <qprinter.h>
44#include <qpainter.h>
45#endif
46
41namespace KABC { class AddressBook; } 47namespace KABC { class AddressBook; }
42 48
43/** 49/**
44 Base class for all views in kaddressbook. This class implements 50 Base class for all views in kaddressbook. This class implements
45 all the common methods needed to provide a view to the user. 51 all the common methods needed to provide a view to the user.
46 52
47 To implement a specific view (table, card, etc), just inherit from 53 To implement a specific view (table, card, etc), just inherit from
48 this class and implement all the pure virtuals. 54 this class and implement all the pure virtuals.
49 55
50 @author Mike Pilone <mpilone@slac.com> 56 @author Mike Pilone <mpilone@slac.com>
51 */ 57 */
52class KAddressBookView : public QWidget 58class KAddressBookView : public QWidget
53{ 59{
54 Q_OBJECT 60 Q_OBJECT
55 61
56 public: 62 public:
57 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 }; 63 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 };
58 64
59 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name ); 65 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name );
60 virtual ~KAddressBookView(); 66 virtual ~KAddressBookView();
61 67
62 /** 68 /**
63 Must be overloaded in subclasses. Should return a list of 69 Must be overloaded in subclasses. Should return a list of
64 all the uids of selected contacts. 70 all the uids of selected contacts.
65 */ 71 */
66 virtual QStringList selectedUids() = 0; 72 virtual QStringList selectedUids() = 0;
67 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0; 73 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0;
68 virtual void scrollUP() = 0; 74 virtual void scrollUP() = 0;
69 virtual void scrollDOWN() = 0; 75 virtual void scrollDOWN() = 0;
70 virtual void setFocusAV() = 0; 76 virtual void setFocusAV() = 0;
71 77
72 /** 78 /**
73 Called whenever this view should read the config. This can be used 79 Called whenever this view should read the config. This can be used
74 as a sign that the config has changed, therefore the view should 80 as a sign that the config has changed, therefore the view should
75 assume the worst and rebuild itself if necessary. For example, 81 assume the worst and rebuild itself if necessary. For example,
76 in a table view this method may be called when the user adds or 82 in a table view this method may be called when the user adds or
77 removes columns from the view. 83 removes columns from the view.
78 84
79 If overloaded in the subclass, do not forget to call super class's 85 If overloaded in the subclass, do not forget to call super class's
80 method. 86 method.
81 87
82 @param config The KConfig object to read from. The group will already 88 @param config The KConfig object to read from. The group will already
83 be set, so do not change the group. 89 be set, so do not change the group.
84 */ 90 */
85 virtual void readConfig( KConfig *config ); 91 virtual void readConfig( KConfig *config );
86 92
87 /** 93 /**
88 Called whenever this view should write the config. The view should not 94 Called whenever this view should write the config. The view should not
89 write out information handled by the application, such as which fields 95 write out information handled by the application, such as which fields
90 are visible. The view should only write out information specific 96 are visible. The view should only write out information specific
91 to itself (i.e.: All information in the ViewConfigWidget) 97 to itself (i.e.: All information in the ViewConfigWidget)
92 98
93 If overloaded in the subclass, do not forget to call the super class's 99 If overloaded in the subclass, do not forget to call the super class's
94 method. 100 method.
95 101
96 @param config The KConfig object to read from. The group will already 102 @param config The KConfig object to read from. The group will already
97 be set, so do not change the group. 103 be set, so do not change the group.
98 */ 104 */
99 virtual void writeConfig( KConfig *config ); 105 virtual void writeConfig( KConfig *config );
100 106
101 /** 107 /**
102 Returns a QString with all the selected email addresses concatenated 108 Returns a QString with all the selected email addresses concatenated
103 together with a ',' seperator. 109 together with a ',' seperator.
104 */ 110 */
105 virtual QString selectedEmails(); 111 virtual QString selectedEmails();
106 112
107 /** 113 /**
108 Return the type of the view: Icon, Table, etc. Please make sure that 114 Return the type of the view: Icon, Table, etc. Please make sure that
109 this is the same value that ViewWrapper::type() will return for your 115 this is the same value that ViewWrapper::type() will return for your
110 view. 116 view.
111 */ 117 */
112 virtual QString type() const = 0; 118 virtual QString type() const = 0;
113 119
114 /** 120 /**
115 Returns a list of the fields that should be displayed. The list 121 Returns a list of the fields that should be displayed. The list
116 is composed of the fields proper names (ie: Home Address), so 122 is composed of the fields proper names (ie: Home Address), so
117 the view may need to translate them in order to get the 123 the view may need to translate them in order to get the
118 value from the addressee. 124 value from the addressee.
119 125
120 This list is generated from the config file, so it is advisable to call 126 This list is generated from the config file, so it is advisable to call
121 this method whenever a readConfig() is called in order to get the newest 127 this method whenever a readConfig() is called in order to get the newest
122 list of fields. 128 list of fields.
123 */ 129 */
124 KABC::Field::List fields() const; 130 KABC::Field::List fields() const;
125 131
126 KABC::Field::List allFields() const; 132 KABC::Field::List allFields() const;
127 133
128 /** 134 /**
129 Sets the active filter. This filter will be used for filtering 135 Sets the active filter. This filter will be used for filtering
130 the list of addressees to display. The view will <b>not</b> 136 the list of addressees to display. The view will <b>not</b>
131 automatically refresh itself, so in most cases you will want to call 137 automatically refresh itself, so in most cases you will want to call
132 KAddressBookView::refresh() after this method. 138 KAddressBookView::refresh() after this method.
133 */ 139 */
134 void setFilter( const Filter& ); 140 void setFilter( const Filter& );
135 141
136 /** 142 /**
137 @return The default filter type selection. If the selection 143 @return The default filter type selection. If the selection
138 is SpecificFilter, the name of the filter can be retrieved with 144 is SpecificFilter, the name of the filter can be retrieved with
139 defaultFilterName() 145 defaultFilterName()
140 */ 146 */
141 DefaultFilterType defaultFilterType() const; 147 DefaultFilterType defaultFilterType() const;
142 148
143 /** 149 /**
144 @return The name of the default filter. This string is 150 @return The name of the default filter. This string is
145 only valid if defaultFilterType() is returning SpecificFilter. 151 only valid if defaultFilterType() is returning SpecificFilter.
146 */ 152 */
147 const QString &defaultFilterName() const; 153 const QString &defaultFilterName() const;
148 154
149 /** 155 /**
150 @return The address book. 156 @return The address book.
151 */ 157 */
152 KABC::AddressBook *addressBook() const; 158 KABC::AddressBook *addressBook() const;
159 void printMyView() { emit printView() ;}
153 160
154 public slots: 161 public slots:
155 /** 162 /**
156 Must be overloaded in subclasses to refresh the view. 163 Must be overloaded in subclasses to refresh the view.
157 Refreshing includes updating the view to ensure that only items 164 Refreshing includes updating the view to ensure that only items
158 in the document are visible. If <i>uid</i> is valid, only the 165 in the document are visible. If <i>uid</i> is valid, only the
159 addressee with uid needs to be refreshed. This is an optimization 166 addressee with uid needs to be refreshed. This is an optimization
160 only. 167 only.
161 */ 168 */
162 virtual void refresh( QString uid = QString::null ) = 0; 169 virtual void refresh( QString uid = QString::null ) = 0;
163 170
164 /** 171 /**
165 This method must be overloaded in subclasses. Select (highlight) 172 This method must be overloaded in subclasses. Select (highlight)
166 the addressee matching <i>uid</i>. If uid 173 the addressee matching <i>uid</i>. If uid
167 is equal to QString::null, then all addressees should be selected. 174 is equal to QString::null, then all addressees should be selected.
168 */ 175 */
169#ifndef KAB_EMBEDDED 176#ifndef KAB_EMBEDDED
170//MOC_SKIP_BEGIN 177//MOC_SKIP_BEGIN
171 virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0; 178 virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0;
172//MOC_SKIP_END 179//MOC_SKIP_END
173#else //KAB_EMBEDDED 180#else //KAB_EMBEDDED
174 //US my moc can not handle the default parameters. Is this a problem ??? 181 //US my moc can not handle the default parameters. Is this a problem ???
175 virtual void setSelected( QString uid, bool selected) = 0; 182 virtual void setSelected( QString uid, bool selected) = 0;
176#endif //KAB_EMBEDDED 183#endif //KAB_EMBEDDED
177 184
178 signals: 185 signals:
186
187 void printView();
179 /** 188 /**
180 This signal should be emitted by a subclass whenever an addressee 189 This signal should be emitted by a subclass whenever an addressee
181 is modified. 190 is modified.
182 */ 191 */
183 void modified(); 192 void modified();
184 193
185 /** 194 /**
186 This signal should be emitted by a subclass whenever an addressee 195 This signal should be emitted by a subclass whenever an addressee
187 is selected. Selected means that the addressee was given the focus. 196 is selected. Selected means that the addressee was given the focus.
188 Some widgets may call this 'highlighted'. The view is responsible for 197 Some widgets may call this 'highlighted'. The view is responsible for
189 emitting this signal multiple times if multiple items are selected, 198 emitting this signal multiple times if multiple items are selected,
190 with the last item selected being the last emit. 199 with the last item selected being the last emit.
191 200
192 @param uid The uid of the selected addressee. 201 @param uid The uid of the selected addressee.
193 202
194 @see KListView 203 @see KListView
195 */ 204 */
196 void selected( const QString &uid ); 205 void selected( const QString &uid );
197 void deleteRequest(); 206 void deleteRequest();
198 /** 207 /**
199 This signal should be emitted by a subclass whenever an addressee 208 This signal should be emitted by a subclass whenever an addressee
200 is executed. This is defined by the KDE system wide config, but it 209 is executed. This is defined by the KDE system wide config, but it
201 either means single or doubleclicked. 210 either means single or doubleclicked.
202 211
203 @param ui The uid of the selected addressee 212 @param ui The uid of the selected addressee
204 213
205 @see KListView 214 @see KListView
206 */ 215 */
207 void executed( const QString &uid ); 216 void executed( const QString &uid );
208 217
209 /** 218 /**
210 This signal is emitted whenever a user attempts to start a drag 219 This signal is emitted whenever a user attempts to start a drag
211 in the view. The slot connected to this signal would usually want 220 in the view. The slot connected to this signal would usually want
212 to create a QDragObject. 221 to create a QDragObject.
213 */ 222 */
214 void startDrag(); 223 void startDrag();
215 224
216 /** 225 /**
217 This signal is emitted whenever the user drops something on the 226 This signal is emitted whenever the user drops something on the
218 view. The individual view should handle checking if the item is 227 view. The individual view should handle checking if the item is
219 droppable (ie: if it is a vcard). 228 droppable (ie: if it is a vcard).
220 */ 229 */
221 void dropped( QDropEvent* ); 230 void dropped( QDropEvent* );
222 231
223 protected: 232 protected:
224 /** 233 /**
225 Returns a list of the addressees that should be displayed. This method 234 Returns a list of the addressees that should be displayed. This method
226 should always be used by the subclass to get a list of addressees. This 235 should always be used by the subclass to get a list of addressees. This
227 method internally takes many factors into account, including the current 236 method internally takes many factors into account, including the current
228 filter. 237 filter.
229 */ 238 */
230 KABC::Addressee::List addressees(); 239 KABC::Addressee::List addressees();
231 240
232 /** 241 /**
233 This method returns the widget that should be used as the parent for 242 This method returns the widget that should be used as the parent for
234 all view components. By using this widget as the parent and not 243 all view components. By using this widget as the parent and not
235 'this', the view subclass has the option of placing other widgets 244 'this', the view subclass has the option of placing other widgets
236 around the view (ie: search fields, etc). Do not delete this widget! 245 around the view (ie: search fields, etc). Do not delete this widget!
237 */ 246 */
238 QWidget *viewWidget(); 247 QWidget *viewWidget();
239 248
240 private: 249 private:
241 void initGUI(); 250 void initGUI();
242 251
243 DefaultFilterType mDefaultFilterType; 252 DefaultFilterType mDefaultFilterType;
244 Filter mFilter; 253 Filter mFilter;
245 QString mDefaultFilterName; 254 QString mDefaultFilterName;
246 KABC::AddressBook *mAddressBook; 255 KABC::AddressBook *mAddressBook;
247 KABC::Field::List mFieldList; 256 KABC::Field::List mFieldList;
248 257
249 QWidget *mViewWidget; 258 QWidget *mViewWidget;
250}; 259};
251 260
252#ifndef KAB_EMBEDDED 261#ifndef KAB_EMBEDDED
253//MOC_SKIP_BEGIN 262//MOC_SKIP_BEGIN
254class ViewFactory : public KLibFactory 263class ViewFactory : public KLibFactory
255//MOC_SKIP_END 264//MOC_SKIP_END
256#else //KAB_EMBEDDED 265#else //KAB_EMBEDDED
257class ViewFactory 266class ViewFactory
258#endif //KAB_EMBEDDED 267#endif //KAB_EMBEDDED
259{ 268{
260 269
261 public: 270 public:
262 virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, 271 virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent,
263 const char *name = 0 ) = 0; 272 const char *name = 0 ) = 0;
264 273
265 /** 274 /**
266 @return The type of the view. This is normally a small one word 275 @return The type of the view. This is normally a small one word
267 string (ie: Table, Icon, Tree, etc). 276 string (ie: Table, Icon, Tree, etc).
268 */ 277 */
269 virtual QString type() const = 0; 278 virtual QString type() const = 0;
270 279
271 /** 280 /**
272 @return The description of the view. This should be a 3 to 281 @return The description of the view. This should be a 3 to
273 4 line string (don't actually use return characters in the string) 282 4 line string (don't actually use return characters in the string)
274 describing the features offered by the view. 283 describing the features offered by the view.
275 */ 284 */
276 virtual QString description() const = 0; 285 virtual QString description() const = 0;
277 286
278 /** 287 /**
279 Creates a config dialog for the view type. The default 288 Creates a config dialog for the view type. The default
280 implementation will return a ViewConfigDialog. This default 289 implementation will return a ViewConfigDialog. This default
281 dialog will allow the user to set the visible fields only. If 290 dialog will allow the user to set the visible fields only. If
282 you need more config options (as most views will), this method 291 you need more config options (as most views will), this method
283 can be overloaded to return your sublcass of ViewConfigDialog. 292 can be overloaded to return your sublcass of ViewConfigDialog.
284 If this method is over loaded the base classes method should 293 If this method is over loaded the base classes method should
285 <B>not</B> be called. 294 <B>not</B> be called.
286 */ 295 */
287 virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, 296 virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab,
288 QWidget *parent, 297 QWidget *parent,
289 const char *name = 0 ); 298 const char *name = 0 );
290 299
291 protected: 300 protected:
292 virtual QObject* createObject( QObject*, const char*, const char*, 301 virtual QObject* createObject( QObject*, const char*, const char*,
293 const QStringList & ) 302 const QStringList & )
294 { 303 {
295 return 0; 304 return 0;
296 } 305 }
297 306
298}; 307};
299 308
300 309
301#endif 310#endif
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.cpp b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
index 8bf9bb0..3ad2f74 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.cpp
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
@@ -32,257 +32,257 @@
32#include <qlabel.h> 32#include <qlabel.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qvbox.h> 34#include <qvbox.h>
35 35
36#include <kconfig.h> 36#include <kconfig.h>
37#include <kdebug.h> 37#include <kdebug.h>
38#include <kdialog.h> 38#include <kdialog.h>
39#include <klistview.h> 39#include <klistview.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <kglobal.h> 41#include <kglobal.h>
42#include <kmessagebox.h> 42#include <kmessagebox.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <ktrader.h> 46#include <ktrader.h>
47#else // KAB_EMBEDDED 47#else // KAB_EMBEDDED
48#include <mergewidget.h> 48#include <mergewidget.h>
49#include <distributionlistwidget.h> 49#include <distributionlistwidget.h>
50#endif // KAB_EMBEDDED 50#endif // KAB_EMBEDDED
51 51
52#include "addresseewidget.h" 52#include "addresseewidget.h"
53#include "extensionconfigdialog.h" 53#include "extensionconfigdialog.h"
54#include "extensionwidget.h" 54#include "extensionwidget.h"
55#include "kabprefs.h" 55#include "kabprefs.h"
56 56
57#include "kabconfigwidget.h" 57#include "kabconfigwidget.h"
58 58
59class ExtensionItem : public QCheckListItem 59class ExtensionItem : public QCheckListItem
60{ 60{
61 public: 61 public:
62 62
63#ifndef KAB_EMBEDDED 63#ifndef KAB_EMBEDDED
64 ExtensionItem( QListView *parent, const QString &text ); 64 ExtensionItem( QListView *parent, const QString &text );
65 void setService( const KService::Ptr &ptr ); 65 void setService( const KService::Ptr &ptr );
66#else //KAB_EMBEDDED 66#else //KAB_EMBEDDED
67 ExtensionItem( QListView *parent, const QString &text, const QString &name, const QString &comment ); 67 ExtensionItem( QListView *parent, const QString &text, const QString &name, const QString &comment );
68 void setFactory( ExtensionFactory* fac ); 68 void setFactory( ExtensionFactory* fac );
69#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
70 70
71 bool configWidgetAvailable() const; 71 bool configWidgetAvailable() const;
72 ExtensionFactory *factory() const; 72 ExtensionFactory *factory() const;
73 73
74 virtual QString text( int column ) const; 74 virtual QString text( int column ) const;
75 75
76 private: 76 private:
77#ifndef KAB_EMBEDDED 77#ifndef KAB_EMBEDDED
78 KService::Ptr mPtr; 78 KService::Ptr mPtr;
79#else //KAB_EMBEDDED 79#else //KAB_EMBEDDED
80 ExtensionFactory* mFactory; 80 ExtensionFactory* mFactory;
81 QString mName; 81 QString mName;
82 QString mComment; 82 QString mComment;
83 83
84#endif //KAB_EMBEDDED 84#endif //KAB_EMBEDDED
85 85
86}; 86};
87 87
88KABConfigWidget::KABConfigWidget( KABPrefs* prefs, QWidget *parent, const char *name ) 88KABConfigWidget::KABConfigWidget( KABPrefs* prefs, QWidget *parent, const char *name )
89 : KPrefsWidget( prefs, parent, name ) 89 : KPrefsWidget( prefs, parent, name )
90{ 90{
91 QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 91 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
92 KDialog::spacingHint() ); 92 KDialog::spacingHint() );
93 93
94 QTabWidget *tabWidget = new QTabWidget( this ); 94 QTabWidget *tabWidget = new QTabWidget( this );
95 topLayout->addWidget( tabWidget ); 95 topLayout->addWidget( tabWidget );
96 96
97 // General page 97 // General page
98 QWidget *generalPage = new QWidget( this ); 98 QWidget *generalPage = new QWidget( this );
99 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(), 99 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(),
100 KDialog::spacingHintSmall() ); 100 KDialog::spacingHintSmall() );
101 101
102 102
103 QWidget *hBox = new QWidget( generalPage, "qhbox" ); 103 QWidget *hBox = new QWidget( generalPage, "qhbox" );
104 QHBoxLayout *hboxLayout = new QHBoxLayout( hBox); 104 QHBoxLayout *hboxLayout = new QHBoxLayout( hBox);
105 KPrefsWidFont *detailsFont = 105 KPrefsWidFont *detailsFont =
106 addWidFont(i18n("phone:123"),i18n("Details view font"), 106 addWidFont(i18n("phone:123"),i18n("Details view font"),
107 &(KABPrefs::instance()->mDetailsFont),hBox); 107 &(KABPrefs::instance()->mDetailsFont),hBox);
108 hboxLayout->addWidget(detailsFont->label()); 108 hboxLayout->addWidget(detailsFont->label());
109 hboxLayout->addWidget(detailsFont->preview()); 109 hboxLayout->addWidget(detailsFont->preview());
110 hboxLayout->addWidget(detailsFont->button()); 110 hboxLayout->addWidget(detailsFont->button());
111 hboxLayout->setMargin(KDialog::marginHintSmall() ); 111 hboxLayout->setMargin(KDialog::marginHintSmall() );
112 hboxLayout->setSpacing(KDialog::spacingHintSmall()); 112 hboxLayout->setSpacing(KDialog::spacingHintSmall());
113 //hBox->setBackgroundColor( black); 113 //hBox->setBackgroundColor( black);
114 layout->addWidget( hBox ); 114 layout->addWidget( hBox );
115 115
116 //general groupbox 116 //general groupbox
117 QWidget *vBox = new QWidget( generalPage, "qvbox" ); 117 QWidget *vBox = new QWidget( generalPage, "qvbox" );
118 QVBoxLayout *boxLayout = new QVBoxLayout( vBox ); 118 QVBoxLayout *boxLayout = new QVBoxLayout( vBox );
119 boxLayout->setAlignment( Qt::AlignTop ); 119 boxLayout->setAlignment( Qt::AlignTop );
120 boxLayout->setMargin(KDialog::marginHintSmall() ); 120 boxLayout->setMargin(KDialog::marginHintSmall() );
121 boxLayout->setSpacing( KDialog::spacingHintSmall() ); 121 boxLayout->setSpacing( KDialog::spacingHintSmall() );
122 mMenuBarBox = new QCheckBox( i18n( "Full Menu bar (restart)" ), vBox, "mremenuturn" ); 122 mMenuBarBox = new QCheckBox( i18n( "Full Menu bar (restart)" ), vBox, "mremenuturn" );
123 boxLayout->addWidget( mMenuBarBox ); 123 boxLayout->addWidget( mMenuBarBox );
124 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" ); 124 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" );
125 boxLayout->addWidget( mSearchReturnBox ); 125 boxLayout->addWidget( mSearchReturnBox );
126 mViewsSingleClickBox = new QCheckBox( i18n( "Honor KDE single click" ), vBox, "msingle" ); 126 mViewsSingleClickBox = new QCheckBox( i18n( "Honor KDE single click" ), vBox, "msingle" );
127 boxLayout->addWidget( mViewsSingleClickBox ); 127 boxLayout->addWidget( mViewsSingleClickBox );
128 128
129 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), vBox, "mparse" ); 129 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), vBox, "mparse" );
130 boxLayout->addWidget( mNameParsing ); 130 boxLayout->addWidget( mNameParsing );
131 131
132 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" ); 132 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" );
133 boxLayout->addWidget( mMultipleViewsAtOnce ); 133 boxLayout->addWidget( mMultipleViewsAtOnce );
134 134
135 mAskForQuit = new QCheckBox( i18n( "Ask for quit when closing Ka/Pi" ), vBox, "mquit" ); 135 mAskForQuit = new QCheckBox( i18n( "Ask for quit when closing Ka/Pi" ), vBox, "mquit" );
136 boxLayout->addWidget( mAskForQuit ); 136 boxLayout->addWidget( mAskForQuit );
137 137
138 layout->addWidget( vBox ); 138 layout->addWidget( vBox );
139 139
140 tabWidget->addTab( generalPage, i18n( "General" ) ); 140 tabWidget->addTab( generalPage, i18n( "General" ) );
141 141
142 // Extension page 142 // Extension page
143 QWidget *extensionPage = new QWidget( this ); 143 QWidget *extensionPage = new QWidget( this );
144 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(), 144 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(),
145 KDialog::spacingHintSmall() ); 145 KDialog::spacingHintSmall() );
146 146
147 //extensions groupbox 147 //extensions groupbox
148 148
149 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage ); 149 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage );
150 boxLayout = new QVBoxLayout( groupBox->layout() ); 150 boxLayout = new QVBoxLayout( groupBox->layout() );
151 boxLayout->setAlignment( Qt::AlignTop ); 151 boxLayout->setAlignment( Qt::AlignTop );
152 boxLayout->setMargin(KDialog::marginHintSmall()); 152 boxLayout->setMargin(KDialog::marginHintSmall());
153 boxLayout->setSpacing(KDialog::spacingHintSmall()); 153 boxLayout->setSpacing(KDialog::spacingHintSmall());
154 groupBox->layout()->setMargin(1) ; 154 groupBox->layout()->setMargin(1) ;
155 groupBox->layout()->setSpacing(0); 155 groupBox->layout()->setSpacing(0);
156 mExtensionView = new KListView( groupBox ); 156 mExtensionView = new KListView( groupBox );
157 mExtensionView->setAllColumnsShowFocus( true ); 157 mExtensionView->setAllColumnsShowFocus( true );
158 mExtensionView->addColumn( i18n( "Name" ) ); 158 mExtensionView->addColumn( i18n( "Name" ) );
159 mExtensionView->addColumn( i18n( "Description" ) ); 159 mExtensionView->addColumn( i18n( "Description" ) );
160 mExtensionView->setMaximumHeight(80); 160 //mExtensionView->setMaximumHeight(80);
161 161
162 boxLayout->addWidget( mExtensionView ); 162 boxLayout->addWidget( mExtensionView );
163 163
164 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox ); 164 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox );
165 mConfigureButton->setEnabled( false ); 165 mConfigureButton->setEnabled( false );
166 boxLayout->addWidget( mConfigureButton ); 166 boxLayout->addWidget( mConfigureButton );
167 167
168 extensionLayout->addWidget( groupBox ); 168 extensionLayout->addWidget( groupBox );
169 169
170 connect( mMenuBarBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 170 connect( mMenuBarBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
171 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 171 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
172 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 172 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
173 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 173 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
174 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 174 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
175 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 175 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
176 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ), 176 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ),
177 SLOT( selectionChanged( QListViewItem* ) ) ); 177 SLOT( selectionChanged( QListViewItem* ) ) );
178 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ), 178 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ),
179 SLOT( itemClicked( QListViewItem* ) ) ); 179 SLOT( itemClicked( QListViewItem* ) ) );
180 connect( mConfigureButton, SIGNAL( clicked() ), 180 connect( mConfigureButton, SIGNAL( clicked() ),
181 SLOT( configureExtension() ) ); 181 SLOT( configureExtension() ) );
182 182
183 tabWidget->addTab( extensionPage, i18n( "Extensions" ) ); 183 tabWidget->addTab( extensionPage, i18n( "Extensions" ) );
184 184
185 // Addressee page 185 // Addressee page
186 mAddresseeWidget = new AddresseeWidget( this ); 186 mAddresseeWidget = new AddresseeWidget( this );
187 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) ); 187 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) );
188 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) ); 188 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) );
189 189
190} 190}
191 191
192void KABConfigWidget::usrReadConfig() 192void KABConfigWidget::usrReadConfig()
193{ 193{
194 KABPrefs* prefs = KABPrefs::instance(); 194 KABPrefs* prefs = KABPrefs::instance();
195 195
196 bool blocked = signalsBlocked(); 196 bool blocked = signalsBlocked();
197 blockSignals( true ); 197 blockSignals( true );
198 mMenuBarBox->setChecked( prefs->mFullMenuBarVisible); 198 mMenuBarBox->setChecked( prefs->mFullMenuBarVisible);
199 mNameParsing->setChecked( prefs->mAutomaticNameParsing ); 199 mNameParsing->setChecked( prefs->mAutomaticNameParsing );
200 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick ); 200 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick );
201 mSearchReturnBox->setChecked( prefs->mSearchWithReturn ); 201 mSearchReturnBox->setChecked( prefs->mSearchWithReturn );
202 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce ); 202 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce );
203 mAskForQuit->setChecked( prefs->mAskForQuit ); 203 mAskForQuit->setChecked( prefs->mAskForQuit );
204 204
205 mAddresseeWidget->restoreSettings(); 205 mAddresseeWidget->restoreSettings();
206 206
207 restoreExtensionSettings(); 207 restoreExtensionSettings();
208 208
209 blockSignals( blocked ); 209 blockSignals( blocked );
210 210
211} 211}
212 212
213void KABConfigWidget::usrWriteConfig() 213void KABConfigWidget::usrWriteConfig()
214{ 214{
215 KABPrefs* prefs = KABPrefs::instance(); 215 KABPrefs* prefs = KABPrefs::instance();
216 prefs->mFullMenuBarVisible = mMenuBarBox->isChecked(); 216 prefs->mFullMenuBarVisible = mMenuBarBox->isChecked();
217 prefs->mAutomaticNameParsing = mNameParsing->isChecked(); 217 prefs->mAutomaticNameParsing = mNameParsing->isChecked();
218 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked(); 218 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked();
219 prefs->mSearchWithReturn = mSearchReturnBox->isChecked(); 219 prefs->mSearchWithReturn = mSearchReturnBox->isChecked();
220 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked(); 220 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked();
221 prefs->mAskForQuit = mAskForQuit->isChecked(); 221 prefs->mAskForQuit = mAskForQuit->isChecked();
222 222
223 mAddresseeWidget->saveSettings(); 223 mAddresseeWidget->saveSettings();
224 224
225 saveExtensionSettings(); 225 saveExtensionSettings();
226 226
227} 227}
228 228
229void KABConfigWidget::restoreExtensionSettings() 229void KABConfigWidget::restoreExtensionSettings()
230{ 230{
231 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions; 231 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
232 232
233 mExtensionView->clear(); 233 mExtensionView->clear();
234 234
235#ifndef KAB_EMBEDDED 235#ifndef KAB_EMBEDDED
236 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" ); 236 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
237 KTrader::OfferList::ConstIterator it; 237 KTrader::OfferList::ConstIterator it;
238 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 238 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
239 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) ) 239 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
240 continue; 240 continue;
241 241
242 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() ); 242 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() );
243 item->setService( *it ); 243 item->setService( *it );
244 if ( activeExtensions.contains( item->factory()->identifier() ) ) 244 if ( activeExtensions.contains( item->factory()->identifier() ) )
245 item->setOn( true ); 245 item->setOn( true );
246 } 246 }
247#else //KAB_EMBEDDED 247#else //KAB_EMBEDDED
248 ExtensionFactory *extensionFactory = new MergeFactory(); 248 ExtensionFactory *extensionFactory = new MergeFactory();
249 249
250 ExtensionItem *item = new ExtensionItem( mExtensionView, "Merge", "Merge", "Merge contacts"); 250 ExtensionItem *item = new ExtensionItem( mExtensionView, "Merge", "Merge", "Merge contacts");
251 251
252 item->setFactory( extensionFactory ); 252 item->setFactory( extensionFactory );
253 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 253 if ( activeExtensions.contains( extensionFactory->identifier() ) )
254 item->setOn( true ); 254 item->setOn( true );
255 255
256 256
257 257
258 extensionFactory = new DistributionListFactory(); 258 extensionFactory = new DistributionListFactory();
259 259
260 item = new ExtensionItem( mExtensionView, "Distribution List", "Distribution List", "Manage Distribution Lists"); 260 item = new ExtensionItem( mExtensionView, "Distribution List", "Distribution List", "Manage Distribution Lists");
261 261
262 item->setFactory( extensionFactory ); 262 item->setFactory( extensionFactory );
263 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 263 if ( activeExtensions.contains( extensionFactory->identifier() ) )
264 item->setOn( true ); 264 item->setOn( true );
265 265
266 266
267#endif //KAB_EMBEDDED 267#endif //KAB_EMBEDDED
268 268
269} 269}
270 270
271void KABConfigWidget::saveExtensionSettings() 271void KABConfigWidget::saveExtensionSettings()
272{ 272{
273 QStringList activeExtensions; 273 QStringList activeExtensions;
274 274
275 QPtrList<QListViewItem> list; 275 QPtrList<QListViewItem> list;
276 QListViewItemIterator it( mExtensionView ); 276 QListViewItemIterator it( mExtensionView );
277 while ( it.current() ) { 277 while ( it.current() ) {
278 ExtensionItem *item = static_cast<ExtensionItem*>( it.current() ); 278 ExtensionItem *item = static_cast<ExtensionItem*>( it.current() );
279 if ( item ) { 279 if ( item ) {
280 if ( item->isOn() ) 280 if ( item->isOn() )
281 activeExtensions.append( item->factory()->identifier() ); 281 activeExtensions.append( item->factory()->identifier() );
282 } 282 }
283 ++it; 283 ++it;
284 } 284 }
285 285
286 KABPrefs::instance()->mActiveExtensions = activeExtensions; 286 KABPrefs::instance()->mActiveExtensions = activeExtensions;
287} 287}
288 288
diff --git a/kaddressbook/mainembedded.cpp b/kaddressbook/mainembedded.cpp
index 771bec9..1e03dba 100644
--- a/kaddressbook/mainembedded.cpp
+++ b/kaddressbook/mainembedded.cpp
@@ -1,99 +1,100 @@
1#ifndef DESKTOP_VERSION 1#ifndef DESKTOP_VERSION
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qcopchannel_qws.h> 3#include <qcopchannel_qws.h>
4#include <stdlib.h> 4#include <stdlib.h>
5#else 5#else
6#include <qapplication.h> 6#include <qapplication.h>
7#include <qwindowsstyle.h> 7#include <qwindowsstyle.h>
8#include <qplatinumstyle.h> 8#include <qplatinumstyle.h>
9#include <qmainwindow.h> 9#include <qmainwindow.h>
10#endif 10#endif
11 11
12#include <qtextcodec.h> 12#include <qtextcodec.h>
13#include <kstandarddirs.h> 13#include <kstandarddirs.h>
14#include <qregexp.h> 14#include <qregexp.h>
15#include <kglobal.h> 15#include <kglobal.h>
16#include <stdio.h> 16#include <stdio.h>
17#include <qdir.h> 17#include <qdir.h>
18#include "kabprefs.h" 18#include "kabprefs.h"
19#include "kaddressbookmain.h" 19#include "kaddressbookmain.h"
20#include "externalapphandler.h" 20#include "externalapphandler.h"
21#include <libkdepim/kpimglobalprefs.h> 21#include <libkdepim/kpimglobalprefs.h>
22void dumpMissing(); 22void dumpMissing();
23int main( int argc, char **argv ) 23int main( int argc, char **argv )
24{ 24{
25#ifndef DESKTOP_VERSION 25#ifndef DESKTOP_VERSION
26 QPEApplication a( argc, argv ); 26 QPEApplication a( argc, argv );
27 a.setKeepRunning (); 27 a.setKeepRunning ();
28#else 28#else
29 QApplication a( argc, argv ); 29 QApplication a( argc, argv );
30 QApplication::setStyle( new QPlatinumStyle ()); 30 QApplication::setStyle( new QPlatinumStyle ());
31 QString hdir = QDir::homeDirPath(); 31 QString hdir = QDir::homeDirPath();
32 // there is a bug when creating dirs for WIN 98 32 // there is a bug when creating dirs for WIN 98
33 // it is difficult to fix, because we have no WIN 98 runnung 33 // it is difficult to fix, because we have no WIN 98 runnung
34 // such that we try it to create the dirs at startup here 34 // such that we try it to create the dirs at startup here
35 if ( hdir == "C:\\" ) { // win 98 or ME 35 if ( hdir == "C:\\" ) { // win 98 or ME
36 QDir app_dir; 36 QDir app_dir;
37 if ( !app_dir.exists("C:\\kdepim") ) 37 if ( !app_dir.exists("C:\\kdepim") )
38 app_dir.mkdir ("C:\\kdepim"); 38 app_dir.mkdir ("C:\\kdepim");
39 if ( !app_dir.exists("C:\\kdepim\\apps") ) 39 if ( !app_dir.exists("C:\\kdepim\\apps") )
40 app_dir.mkdir ("C:\\kdepim\\apps"); 40 app_dir.mkdir ("C:\\kdepim\\apps");
41 if ( !app_dir.exists("C:\\kdepim\\config") ) 41 if ( !app_dir.exists("C:\\kdepim\\config") )
42 app_dir.mkdir ("C:\\kdepim\\config"); 42 app_dir.mkdir ("C:\\kdepim\\config");
43 if ( !app_dir.exists("C:\\kdepim\\apps\\kaddressbook") ) 43 if ( !app_dir.exists("C:\\kdepim\\apps\\kaddressbook") )
44 app_dir.mkdir ("C:\\kdepim\\apps\\kaddressbook"); 44 app_dir.mkdir ("C:\\kdepim\\apps\\kaddressbook");
45 } 45 }
46#endif 46#endif
47 47
48 bool exitHelp = false; 48 bool exitHelp = false;
49 if ( argc > 1 ) { 49 if ( argc > 1 ) {
50 QString command = argv[1]; 50 QString command = argv[1];
51 if ( command == "-help" ){ 51 if ( command == "-help" ){
52 printf("KA/E command line commands:\n"); 52 printf("KA/E command line commands:\n");
53 printf(" no command: Start KA/E in usual way\n"); 53 printf(" no command: Start KA/E in usual way\n");
54 printf(" -help: This output\n"); 54 printf(" -help: This output\n");
55 printf(" KA/E is exiting now. Bye!\n"); 55 printf(" KA/E is exiting now. Bye!\n");
56 exitHelp = true; 56 exitHelp = true;
57 } 57 }
58 } 58 }
59 if ( ! exitHelp ) { 59 if ( ! exitHelp ) {
60 60
61 KGlobal::setAppName( "kaddressbook" ); 61 KGlobal::setAppName( "kaddressbook" );
62#ifndef DESKTOP_VERSION 62#ifndef DESKTOP_VERSION
63 if ( QApplication::desktop()->width() > 320 ) 63 if ( QApplication::desktop()->width() > 320 )
64 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/"); 64 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/");
65 else 65 else
66 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/"); 66 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/");
67#else 67#else
68 QString fileName ; 68 QString fileName ;
69 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/"; 69 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/";
70 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 70 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
71 QApplication::addLibraryPath ( qApp->applicationDirPath () ); 71 QApplication::addLibraryPath ( qApp->applicationDirPath () );
72 72
73#endif 73#endif
74 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook"))); 74 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook")));
75 // init language 75 // init language
76 KPimGlobalPrefs::instance()->setGlobalConfig(); 76 KPimGlobalPrefs::instance()->setGlobalConfig();
77 KAddressBookMain m ; 77 KAddressBookMain m ;
78//US MainWindow m; 78//US MainWindow m;
79#ifndef DESKTOP_VERSION
79 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 80 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
80 81#endif
81 82
82 83
83#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
84 a.showMainWidget( &m ); 85 a.showMainWidget( &m );
85 86
86#else 87#else
87 a.setMainWidget( &m ); 88 a.setMainWidget( &m );
88 m.resize (640, 480 ); 89 m.resize (640, 480 );
89 m.show(); 90 m.show();
90#endif 91#endif
91 a.exec(); 92 a.exec();
92 93
93 dumpMissing(); 94 dumpMissing();
94 95
95 KPimGlobalPrefs::instance()->writeConfig(); 96 KPimGlobalPrefs::instance()->writeConfig();
96 } 97 }
97 qDebug("KA: Bye! "); 98 qDebug("KA: Bye! ");
98} 99}
99 100
diff --git a/kaddressbook/viewmanager.h b/kaddressbook/viewmanager.h
index 272e1b0..dff9998 100644
--- a/kaddressbook/viewmanager.h
+++ b/kaddressbook/viewmanager.h
@@ -1,159 +1,160 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef VIEWMANAGER_H 24#ifndef VIEWMANAGER_H
25#define VIEWMANAGER_H 25#define VIEWMANAGER_H
26 26
27#include <qwidget.h> 27#include <qwidget.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <kaddressbookview.h> 29#include <kaddressbookview.h>
30#include <qdict.h> 30#include <qdict.h>
31#include "filter.h" 31#include "filter.h"
32 32
33class KAction; 33class KAction;
34class KSelectAction; 34class KSelectAction;
35 35
36class KABCore; 36class KABCore;
37class QWidgetStack; 37class QWidgetStack;
38class QDropEvent; 38class QDropEvent;
39 39
40namespace KABC { class AddressBook; } 40namespace KABC { class AddressBook; }
41 41
42/** 42/**
43 The view manager manages the views and everything related to them. The 43 The view manager manages the views and everything related to them. The
44 manager will load the views at startup and display a view when told to 44 manager will load the views at startup and display a view when told to
45 make one active. 45 make one active.
46 46
47 The view manager will also create and manage all dialogs directly related to 47 The view manager will also create and manage all dialogs directly related to
48 views (ie: AddView, ConfigureView, DeleteView, etc). 48 views (ie: AddView, ConfigureView, DeleteView, etc).
49 */ 49 */
50class ViewManager : public QWidget 50class ViewManager : public QWidget
51{ 51{
52 Q_OBJECT 52 Q_OBJECT
53 public: 53 public:
54 ViewManager( KABCore *core, QWidget *parent, const char *name = 0 ); 54 ViewManager( KABCore *core, QWidget *parent, const char *name = 0 );
55 ~ViewManager(); 55 ~ViewManager();
56 56
57 void restoreSettings(); 57 void restoreSettings();
58 void saveSettings(); 58 void saveSettings();
59 void doSearch( const QString& s ,KABC::Field *field ); 59 void doSearch( const QString& s ,KABC::Field *field );
60 60
61 void unloadViews(); 61 void unloadViews();
62 KSelectAction * getFilterAction() { return mActionSelectFilter; } 62 KSelectAction * getFilterAction() { return mActionSelectFilter; }
63 Filter getFilterByName( const QString &name ) const; 63 Filter getFilterByName( const QString &name ) const;
64 64
65 QStringList selectedUids() const; 65 QStringList selectedUids() const;
66 QStringList selectedEmails() const; 66 QStringList selectedEmails() const;
67 KABC::Addressee::List selectedAddressees() const; 67 KABC::Addressee::List selectedAddressees() const;
68 void setListSelected(QStringList); 68 void setListSelected(QStringList);
69 void setFocusAV(); 69 void setFocusAV();
70 70
71 public slots: 71 public slots:
72 void printView() { if (mActiveView) mActiveView->printMyView() ;}
72 void scrollUP(); 73 void scrollUP();
73 void scrollDOWN(); 74 void scrollDOWN();
74 75
75//US void setSelected( const QString &uid = QString::null, bool selected = true ); 76//US void setSelected( const QString &uid = QString::null, bool selected = true );
76 void setSelected( const QString &uid, bool); 77 void setSelected( const QString &uid, bool);
77//US added another method with no parameter, since my moc compiler does not support default parameters. 78//US added another method with no parameter, since my moc compiler does not support default parameters.
78 void setSelected(); 79 void setSelected();
79 80
80 81
81 82
82//US added another method with no parameter, since my moc compiler does not support default parameters. 83//US added another method with no parameter, since my moc compiler does not support default parameters.
83 void refreshView(); 84 void refreshView();
84 void refreshView( const QString &uid); 85 void refreshView( const QString &uid);
85 86
86 void editView(); 87 void editView();
87 void deleteView(); 88 void deleteView();
88 void addView(); 89 void addView();
89 90
90 protected slots: 91 protected slots:
91 /** 92 /**
92 Called whenever the user drops something in the active view. 93 Called whenever the user drops something in the active view.
93 This method will try to decode what was dropped, and if it was 94 This method will try to decode what was dropped, and if it was
94 a valid addressee, add it to the addressbook. 95 a valid addressee, add it to the addressbook.
95 */ 96 */
96 void dropped( QDropEvent* ); 97 void dropped( QDropEvent* );
97 98
98 /** 99 /**
99 Called whenever the user attempts to start a drag in the view. 100 Called whenever the user attempts to start a drag in the view.
100 This method will convert all the selected addressees into text (vcard) 101 This method will convert all the selected addressees into text (vcard)
101 and create a drag object. 102 and create a drag object.
102 */ 103 */
103 void startDrag(); 104 void startDrag();
104 105
105 signals: 106 signals:
106 /** 107 /**
107 Emitted whenever the user selects an entry in the view. 108 Emitted whenever the user selects an entry in the view.
108 */ 109 */
109 void selected( const QString &uid ); 110 void selected( const QString &uid );
110 void deleteRequest( ); 111 void deleteRequest( );
111 112
112 /** 113 /**
113 Emitted whenever the user activates an entry in the view. 114 Emitted whenever the user activates an entry in the view.
114 */ 115 */
115 void executed( const QString &uid ); 116 void executed( const QString &uid );
116 117
117 /** 118 /**
118 Emitted whenever the address book is modified in some way. 119 Emitted whenever the address book is modified in some way.
119 */ 120 */
120 void modified(); 121 void modified();
121 122
122 /** 123 /**
123 Emitted whenever a url is dragged on a view. 124 Emitted whenever a url is dragged on a view.
124 */ 125 */
125 void urlDropped( const KURL& ); 126 void urlDropped( const KURL& );
126 127
127 private slots: 128 private slots:
128 void setActiveView( const QString &name ); 129 void setActiveView( const QString &name );
129 void setActiveFilter( int index ); 130 void setActiveFilter( int index );
130 void configureFilters(); 131 void configureFilters();
131 132
132 private: 133 private:
133 void createViewFactories(); 134 void createViewFactories();
134 QStringList filterNames() const; 135 QStringList filterNames() const;
135 int filterPosition( const QString &name ) const; 136 int filterPosition( const QString &name ) const;
136 QStringList viewNames() const; 137 QStringList viewNames() const;
137 int viewPosition( const QString &name ) const; 138 int viewPosition( const QString &name ) const;
138 void initActions(); 139 void initActions();
139 void initGUI(); 140 void initGUI();
140 141
141 KABCore *mCore; 142 KABCore *mCore;
142 143
143 Filter mCurrentFilter; 144 Filter mCurrentFilter;
144 Filter::List mFilterList; 145 Filter::List mFilterList;
145 146
146 QDict<KAddressBookView> mViewDict; 147 QDict<KAddressBookView> mViewDict;
147 QDict<ViewFactory> mViewFactoryDict; 148 QDict<ViewFactory> mViewFactoryDict;
148 QStringList mViewNameList; 149 QStringList mViewNameList;
149 150
150 QWidgetStack *mViewWidgetStack; 151 QWidgetStack *mViewWidgetStack;
151 KAddressBookView *mActiveView; 152 KAddressBookView *mActiveView;
152 153
153 KAction *mActionDeleteView; 154 KAction *mActionDeleteView;
154 KSelectAction *mActionSelectFilter; 155 KSelectAction *mActionSelectFilter;
155 KSelectAction *mActionSelectView; 156 KSelectAction *mActionSelectView;
156 157
157}; 158};
158 159
159#endif 160#endif
diff --git a/kaddressbook/views/contactlistview.cpp b/kaddressbook/views/contactlistview.cpp
index 23b091c..e75810e 100644
--- a/kaddressbook/views/contactlistview.cpp
+++ b/kaddressbook/views/contactlistview.cpp
@@ -152,222 +152,249 @@ void DynamicTip::maybeTip( const QPoint &pos )
152 ishidden = !ishidden; 152 ishidden = !ishidden;
153 153
154} 154}
155 155
156/////////////////////////// 156///////////////////////////
157// ContactListViewItem Methods 157// ContactListViewItem Methods
158 158
159ContactListViewItem::ContactListViewItem(const KABC::Addressee &a, 159ContactListViewItem::ContactListViewItem(const KABC::Addressee &a,
160 ContactListView *parent, 160 ContactListView *parent,
161 KABC::AddressBook *doc, 161 KABC::AddressBook *doc,
162 const KABC::Field::List &fields ) 162 const KABC::Field::List &fields )
163 : KListViewItem(parent), mAddressee(a), mFields( fields ), 163 : KListViewItem(parent), mAddressee(a), mFields( fields ),
164 parentListView( parent ), mDocument(doc) 164 parentListView( parent ), mDocument(doc)
165{ 165{
166 refresh(); 166 refresh();
167} 167}
168 168
169QString ContactListViewItem::key(int column, bool ascending) const 169QString ContactListViewItem::key(int column, bool ascending) const
170{ 170{
171#ifndef DESKTOP_VERSION 171#ifndef DESKTOP_VERSION
172 int lan = KGlobal::locale()->language(); 172 int lan = KGlobal::locale()->language();
173 //qDebug("language %d ", lan); 173 //qDebug("language %d ", lan);
174 if ( lan == 1 ) { //GERMAN 174 if ( lan == 1 ) { //GERMAN
175 QString ret = QListViewItem::key(column, ascending).lower().utf8(); 175 QString ret = QListViewItem::key(column, ascending).lower().utf8();
176 int start = -1; 176 int start = -1;
177 while ( (start = ret.find( 'ä', start+1)) > 0 ) { 177 while ( (start = ret.find( 'ä', start+1)) > 0 ) {
178 ret.at(start-1) = 'a'; 178 ret.at(start-1) = 'a';
179 } 179 }
180 start = -1; 180 start = -1;
181 while ( (start = ret.find( 'ö', start+1)) > 0 ) { 181 while ( (start = ret.find( 'ö', start+1)) > 0 ) {
182 ret.at(start-1) = 'o'; 182 ret.at(start-1) = 'o';
183 } 183 }
184 start = -1; 184 start = -1;
185 while ( (start = ret.find( 'ü', start+1)) > 0 ) { 185 while ( (start = ret.find( 'ü', start+1)) > 0 ) {
186 ret.at(start-1) = 'o'; 186 ret.at(start-1) = 'o';
187 } 187 }
188 start = -1; 188 start = -1;
189 while ( (start = ret.find( 'ß', start+1)) > 0 ) { 189 while ( (start = ret.find( 'ß', start+1)) > 0 ) {
190 ret.at(start-1) = 's'; 190 ret.at(start-1) = 's';
191 } 191 }
192 //qDebug("conv string %s ", ret.latin1()); 192 //qDebug("conv string %s ", ret.latin1());
193 193
194 return ret; 194 return ret;
195 195
196 } 196 }
197 else 197 else
198#endif 198#endif
199 return QListViewItem::key(column, ascending).lower(); 199 return QListViewItem::key(column, ascending).lower();
200} 200}
201 201
202void ContactListViewItem::paintCell(QPainter * p, 202void ContactListViewItem::paintCell(QPainter * p,
203 const QColorGroup & cg, 203 const QColorGroup & cg,
204 int column, 204 int column,
205 int width, 205 int width,
206 int align) 206 int align)
207{ 207{
208 KListViewItem::paintCell(p, cg, column, width, align); 208 KListViewItem::paintCell(p, cg, column, width, align);
209 209
210 if ( !p ) 210 if ( !p )
211 return; 211 return;
212 212
213 if (parentListView->singleLine()) { 213 if (parentListView->singleLine()) {
214 p->setPen( parentListView->alternateColor() ); 214 p->setPen( parentListView->alternateColor() );
215 p->drawLine( 0, height() - 1, width, height() - 1 ); 215 p->drawLine( 0, height() - 1, width, height() - 1 );
216 } 216 }
217} 217}
218 218
219 219
220ContactListView *ContactListViewItem::parent() 220ContactListView *ContactListViewItem::parent()
221{ 221{
222 return parentListView; 222 return parentListView;
223} 223}
224 224
225 225
226void ContactListViewItem::refresh() 226void ContactListViewItem::refresh()
227{ 227{
228 // Update our addressee, since it may have changed else were 228 // Update our addressee, since it may have changed else were
229 mAddressee = mDocument->findByUid(mAddressee.uid()); 229 mAddressee = mDocument->findByUid(mAddressee.uid());
230 if (mAddressee.isEmpty()) 230 if (mAddressee.isEmpty())
231 return; 231 return;
232 232
233 int i = 0; 233 int i = 0;
234 KABC::Field::List::ConstIterator it; 234 KABC::Field::List::ConstIterator it;
235 for( it = mFields.begin(); it != mFields.end(); ++it ) { 235 for( it = mFields.begin(); it != mFields.end(); ++it ) {
236 setText( i++, (*it)->value( mAddressee ) ); 236 setText( i++, (*it)->value( mAddressee ) );
237 } 237 }
238} 238}
239 239
240/////////////////////////////// 240///////////////////////////////
241// ContactListView 241// ContactListView
242 242
243ContactListView::ContactListView(KAddressBookTableView *view, 243ContactListView::ContactListView(KAddressBookTableView *view,
244 KABC::AddressBook* /* doc */, 244 KABC::AddressBook* /* doc */,
245 QWidget *parent, 245 QWidget *parent,
246 const char *name ) 246 const char *name )
247 : KListView( parent, name ), 247 : KListView( parent, name ),
248 pabWidget( view ), 248 pabWidget( view ),
249 oldColumn( 0 ) 249 oldColumn( 0 )
250{ 250{
251 mABackground = true; 251 mABackground = true;
252 mSingleLine = false; 252 mSingleLine = false;
253 mToolTips = true; 253 mToolTips = true;
254#ifndef KAB_EMBEDDED 254#ifndef KAB_EMBEDDED
255 mAlternateColor = KGlobalSettings::alternateBackgroundColor(); 255 mAlternateColor = KGlobalSettings::alternateBackgroundColor();
256#else //KAB_EMBEDDED 256#else //KAB_EMBEDDED
257 mAlternateColor = QColor(240, 240, 240); 257 mAlternateColor = QColor(240, 240, 240);
258#endif //KAB_EMBEDDED 258#endif //KAB_EMBEDDED
259 259
260 setAlternateBackgroundEnabled(mABackground); 260 setAlternateBackgroundEnabled(mABackground);
261 setAcceptDrops( true ); 261 setAcceptDrops( true );
262 viewport()->setAcceptDrops( true ); 262 viewport()->setAcceptDrops( true );
263 setAllColumnsShowFocus( true ); 263 setAllColumnsShowFocus( true );
264 setShowSortIndicator(true); 264 setShowSortIndicator(true);
265 265
266 setSelectionModeExt( KListView::Extended ); 266 setSelectionModeExt( KListView::Extended );
267 setDropVisualizer(false); 267 setDropVisualizer(false);
268 // setFrameStyle(QFrame::NoFrame); 268 // setFrameStyle(QFrame::NoFrame);
269 //setLineWidth ( 0 ); 269 //setLineWidth ( 0 );
270 //setMidLineWidth ( 0 ); 270 //setMidLineWidth ( 0 );
271 //setMargin ( 0 ); 271 //setMargin ( 0 );
272#ifndef KAB_EMBEDDED 272#ifndef KAB_EMBEDDED
273 connect(this, SIGNAL(dropped(QDropEvent*)), 273 connect(this, SIGNAL(dropped(QDropEvent*)),
274 this, SLOT(itemDropped(QDropEvent*))); 274 this, SLOT(itemDropped(QDropEvent*)));
275#endif //KAB_EMBEDDED 275#endif //KAB_EMBEDDED
276 276
277 277
278 new DynamicTip( this ); 278 new DynamicTip( this );
279} 279}
280void ContactListView::printMe()
281{
282#ifdef DESKTOP_VERSION
283 QPrinter printer;
284 if (!printer.setup() )
285 return;
286 QPainter p;
287 p.begin ( &printer );
288 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
289 float dx, dy;
290 int wid = (m.width() * 9)/10;
291 dx = (float) wid/(float)contentsWidth ();
292 dy = (float)(m.height()) / (float)contentsHeight ();
293 float scale;
294 // scale to fit the width or height of the paper
295 if ( dx < dy )
296 scale = dx;
297 else
298 scale = dy;
299 p.translate( m.width()/10,0 );
300 p.scale( scale, scale );
301 qDebug("scale %f ", scale);
302 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
303 p.end();
304 qDebug("Why does it not print??? ");
305#endif
306}
280 307
281void ContactListView::setAlternateColor(const QColor &m_AlternateColor) 308void ContactListView::setAlternateColor(const QColor &m_AlternateColor)
282{ 309{
283 mAlternateColor = m_AlternateColor; 310 mAlternateColor = m_AlternateColor;
284} 311}
285 312
286void ContactListView::paintEmptyArea( QPainter * p, const QRect & rect ) 313void ContactListView::paintEmptyArea( QPainter * p, const QRect & rect )
287{ 314{
288 QBrush b = palette().brush(QPalette::Active, QColorGroup::Base); 315 QBrush b = palette().brush(QPalette::Active, QColorGroup::Base);
289 316
290 // Get the brush, which will have the background pixmap if there is one. 317 // Get the brush, which will have the background pixmap if there is one.
291 if (b.pixmap()) 318 if (b.pixmap())
292 { 319 {
293 p->drawTiledPixmap( rect.left(), rect.top(), rect.width(), rect.height(), 320 p->drawTiledPixmap( rect.left(), rect.top(), rect.width(), rect.height(),
294 *(b.pixmap()), 321 *(b.pixmap()),
295 rect.left() + contentsX(), 322 rect.left() + contentsX(),
296 rect.top() + contentsY() ); 323 rect.top() + contentsY() );
297 } 324 }
298 325
299 else 326 else
300 { 327 {
301 // Do a normal paint 328 // Do a normal paint
302 KListView::paintEmptyArea(p, rect); 329 KListView::paintEmptyArea(p, rect);
303 } 330 }
304} 331}
305 332
306void ContactListView::contentsMousePressEvent(QMouseEvent* e) 333void ContactListView::contentsMousePressEvent(QMouseEvent* e)
307{ 334{
308 presspos = e->pos(); 335 presspos = e->pos();
309 KListView::contentsMousePressEvent(e); 336 KListView::contentsMousePressEvent(e);
310} 337}
311 338
312 339
313// To initiate a drag operation 340// To initiate a drag operation
314void ContactListView::contentsMouseMoveEvent( QMouseEvent *e ) 341void ContactListView::contentsMouseMoveEvent( QMouseEvent *e )
315{ 342{
316 if ((e->state() & LeftButton) && (e->pos() - presspos).manhattanLength() > 4 ) { 343 if ((e->state() & LeftButton) && (e->pos() - presspos).manhattanLength() > 4 ) {
317 emit startAddresseeDrag(); 344 emit startAddresseeDrag();
318 } 345 }
319 else 346 else
320 KListView::contentsMouseMoveEvent( e ); 347 KListView::contentsMouseMoveEvent( e );
321} 348}
322 349
323bool ContactListView::acceptDrag(QDropEvent *e) const 350bool ContactListView::acceptDrag(QDropEvent *e) const
324{ 351{
325#ifndef KAB_EMBEDDED 352#ifndef KAB_EMBEDDED
326 return QTextDrag::canDecode(e); 353 return QTextDrag::canDecode(e);
327#else //KAB_EMBEDDED 354#else //KAB_EMBEDDED
328qDebug("ContactListView::acceptDrag has to be fixed"); 355qDebug("ContactListView::acceptDrag has to be fixed");
329 return false; 356 return false;
330#endif //KAB_EMBEDDED 357#endif //KAB_EMBEDDED
331} 358}
332 359
333void ContactListView::itemDropped(QDropEvent *e) 360void ContactListView::itemDropped(QDropEvent *e)
334{ 361{
335 contentsDropEvent(e); 362 contentsDropEvent(e);
336} 363}
337 364
338void ContactListView::contentsDropEvent( QDropEvent *e ) 365void ContactListView::contentsDropEvent( QDropEvent *e )
339{ 366{
340 emit addresseeDropped(e); 367 emit addresseeDropped(e);
341} 368}
342 369
343void ContactListView::setAlternateBackgroundEnabled(bool enabled) 370void ContactListView::setAlternateBackgroundEnabled(bool enabled)
344{ 371{
345 mABackground = enabled; 372 mABackground = enabled;
346 373
347 if (mABackground) 374 if (mABackground)
348 { 375 {
349 setAlternateBackground(mAlternateColor); 376 setAlternateBackground(mAlternateColor);
350 } 377 }
351 else 378 else
352 { 379 {
353 setAlternateBackground(QColor()); 380 setAlternateBackground(QColor());
354 } 381 }
355} 382}
356 383
357void ContactListView::setBackgroundPixmap(const QString &filename) 384void ContactListView::setBackgroundPixmap(const QString &filename)
358{ 385{
359 if (filename.isEmpty()) 386 if (filename.isEmpty())
360 { 387 {
361 unsetPalette(); 388 unsetPalette();
362 } 389 }
363 else 390 else
364 { 391 {
365 qDebug("ContactListView::setBackgroundPixmap has to be verified"); 392 qDebug("ContactListView::setBackgroundPixmap has to be verified");
366//US setPaletteBackgroundPixmap(QPixmap(filename)); 393//US setPaletteBackgroundPixmap(QPixmap(filename));
367 KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename)); 394 KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename));
368 } 395 }
369 396
370} 397}
371#ifndef KAB_EMBEDDED 398#ifndef KAB_EMBEDDED
372#include "contactlistview.moc" 399#include "contactlistview.moc"
373#endif //KAB_EMBEDDED 400#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/contactlistview.h b/kaddressbook/views/contactlistview.h
index fad7f38..9d1a672 100644
--- a/kaddressbook/views/contactlistview.h
+++ b/kaddressbook/views/contactlistview.h
@@ -1,129 +1,130 @@
1#ifndef CONTACTLISTVIEW_H 1#ifndef CONTACTLISTVIEW_H
2#define CONTACTLISTVIEW_H 2#define CONTACTLISTVIEW_H
3 3
4#include <qcolor.h> 4#include <qcolor.h>
5#include <qpixmap.h> 5#include <qpixmap.h>
6#include <qtooltip.h> 6#include <qtooltip.h>
7#include <qstring.h> 7#include <qstring.h>
8 8
9#include <klistview.h> 9#include <klistview.h>
10 10
11#include <kabc/field.h> 11#include <kabc/field.h>
12#include <kabc/addressee.h> 12#include <kabc/addressee.h>
13#include <kabc/addressbook.h> 13#include <kabc/addressbook.h>
14 14
15 15
16class QDropEvent; 16class QDropEvent;
17class KAddressBookTableView; 17class KAddressBookTableView;
18class ContactListView; 18class ContactListView;
19 19
20/** The whole tooltip design needs a lot of work. Currently it is 20/** The whole tooltip design needs a lot of work. Currently it is
21* hacked together to function. 21* hacked together to function.
22*/ 22*/
23class DynamicTip : public QToolTip 23class DynamicTip : public QToolTip
24{ 24{
25 public: 25 public:
26 DynamicTip( ContactListView * parent ); 26 DynamicTip( ContactListView * parent );
27 27
28 protected: 28 protected:
29 void maybeTip( const QPoint & ); 29 void maybeTip( const QPoint & );
30 30
31 private: 31 private:
32}; 32};
33 33
34class ContactListViewItem : public KListViewItem 34class ContactListViewItem : public KListViewItem
35{ 35{
36 36
37public: 37public:
38 ContactListViewItem(const KABC::Addressee &a, ContactListView* parent, 38 ContactListViewItem(const KABC::Addressee &a, ContactListView* parent,
39 KABC::AddressBook *doc, const KABC::Field::List &fields ); 39 KABC::AddressBook *doc, const KABC::Field::List &fields );
40 const KABC::Addressee &addressee() const { return mAddressee; } 40 const KABC::Addressee &addressee() const { return mAddressee; }
41 virtual void refresh(); 41 virtual void refresh();
42 virtual ContactListView* parent(); 42 virtual ContactListView* parent();
43 virtual QString key ( int, bool ) const; 43 virtual QString key ( int, bool ) const;
44 44
45 /** Adds the border around the cell if the user wants it. 45 /** Adds the border around the cell if the user wants it.
46 * This is how the single line config option is implemented. 46 * This is how the single line config option is implemented.
47 */ 47 */
48 virtual void paintCell(QPainter * p, const QColorGroup & cg, 48 virtual void paintCell(QPainter * p, const QColorGroup & cg,
49 int column, int width, int align ); 49 int column, int width, int align );
50 50
51private: 51private:
52 KABC::Addressee mAddressee; 52 KABC::Addressee mAddressee;
53 KABC::Field::List mFields; 53 KABC::Field::List mFields;
54 ContactListView *parentListView; 54 ContactListView *parentListView;
55 KABC::AddressBook *mDocument; 55 KABC::AddressBook *mDocument;
56}; 56};
57 57
58 58
59///////////////////////////////////////////// 59/////////////////////////////////////////////
60// ContactListView 60// ContactListView
61 61
62class ContactListView : public KListView 62class ContactListView : public KListView
63{ 63{
64 Q_OBJECT 64 Q_OBJECT
65 65
66public: 66public:
67 ContactListView(KAddressBookTableView *view, 67 ContactListView(KAddressBookTableView *view,
68 KABC::AddressBook *doc, 68 KABC::AddressBook *doc,
69 QWidget *parent, 69 QWidget *parent,
70 const char *name = 0L ); 70 const char *name = 0L );
71 virtual ~ContactListView() {} 71 virtual ~ContactListView() {}
72 //void resort(); 72 //void resort();
73 73
74 /** Returns true if tooltips should be displayed, false otherwise 74 /** Returns true if tooltips should be displayed, false otherwise
75 */ 75 */
76 bool tooltips() const { return mToolTips; } 76 bool tooltips() const { return mToolTips; }
77 void setToolTipsEnabled(bool enabled) { mToolTips = enabled; } 77 void setToolTipsEnabled(bool enabled) { mToolTips = enabled; }
78 78
79 bool alternateBackground() const { return mABackground; } 79 bool alternateBackground() const { return mABackground; }
80 void setAlternateBackgroundEnabled(bool enabled); 80 void setAlternateBackgroundEnabled(bool enabled);
81 81
82 bool singleLine() const { return mSingleLine; } 82 bool singleLine() const { return mSingleLine; }
83 void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; } 83 void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; }
84 84
85 const QColor &alternateColor() const { return mAlternateColor; } 85 const QColor &alternateColor() const { return mAlternateColor; }
86 void setAlternateColor(const QColor &mAlternateColor); 86 void setAlternateColor(const QColor &mAlternateColor);
87 87
88 /** Sets the background pixmap to <i>filename</i>. If the 88 /** Sets the background pixmap to <i>filename</i>. If the
89 * QString is empty (QString::isEmpty()), then the background 89 * QString is empty (QString::isEmpty()), then the background
90 * pixmap will be disabled. 90 * pixmap will be disabled.
91 */ 91 */
92 void setBackgroundPixmap(const QString &filename); 92 void setBackgroundPixmap(const QString &filename);
93 93
94protected: 94protected:
95 /** Paints the background pixmap in the empty area. This method is needed 95 /** Paints the background pixmap in the empty area. This method is needed
96 * since Qt::FixedPixmap will not scroll with the list view. 96 * since Qt::FixedPixmap will not scroll with the list view.
97 */ 97 */
98 virtual void paintEmptyArea( QPainter * p, const QRect & rect ); 98 virtual void paintEmptyArea( QPainter * p, const QRect & rect );
99 virtual void contentsMousePressEvent(QMouseEvent*); 99 virtual void contentsMousePressEvent(QMouseEvent*);
100 void contentsMouseMoveEvent( QMouseEvent *e ); 100 void contentsMouseMoveEvent( QMouseEvent *e );
101 void contentsDropEvent( QDropEvent *e ); 101 void contentsDropEvent( QDropEvent *e );
102 virtual bool acceptDrag(QDropEvent *e) const; 102 virtual bool acceptDrag(QDropEvent *e) const;
103 103
104protected slots: 104protected slots:
105 void itemDropped(QDropEvent *e); 105 void itemDropped(QDropEvent *e);
106 106
107public slots: 107public slots:
108 void printMe();
108 109
109signals: 110signals:
110 void startAddresseeDrag(); 111 void startAddresseeDrag();
111 void addresseeDropped(QDropEvent *); 112 void addresseeDropped(QDropEvent *);
112 113
113private: 114private:
114 KAddressBookTableView *pabWidget; 115 KAddressBookTableView *pabWidget;
115 int oldColumn; 116 int oldColumn;
116 int column; 117 int column;
117 bool ascending; 118 bool ascending;
118 119
119 bool mABackground; 120 bool mABackground;
120 bool mSingleLine; 121 bool mSingleLine;
121 bool mToolTips; 122 bool mToolTips;
122 123
123 QColor mAlternateColor; 124 QColor mAlternateColor;
124 125
125 QPoint presspos; 126 QPoint presspos;
126}; 127};
127 128
128 129
129#endif 130#endif
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp
index 2d7ed08..107be59 100644
--- a/kaddressbook/views/kaddressbookcardview.cpp
+++ b/kaddressbook/views/kaddressbookcardview.cpp
@@ -1,294 +1,323 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qdragobject.h> 24#include <qdragobject.h>
25#include <qevent.h> 25#include <qevent.h>
26#include <qiconview.h> 26#include <qiconview.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qregexp.h> 29#include <qregexp.h>
30#include <qapplication.h> 30#include <qapplication.h>
31 31
32#include <kabc/addressbook.h> 32#include <kabc/addressbook.h>
33#include <kabc/addressee.h> 33#include <kabc/addressee.h>
34#include <kconfig.h> 34#include <kconfig.h>
35#include <kdebug.h> 35#include <kdebug.h>
36#include <klocale.h> 36#include <klocale.h>
37 37
38#include "kabprefs.h" 38#include "kabprefs.h"
39#include "viewmanager.h" 39#include "viewmanager.h"
40 40
41
41#include "kaddressbookcardview.h" 42#include "kaddressbookcardview.h"
42 43
43#ifndef KAB_EMBEDDED 44#ifndef KAB_EMBEDDED
44extern "C" { 45extern "C" {
45 void *init_libkaddrbk_cardview() 46 void *init_libkaddrbk_cardview()
46 { 47 {
47 return ( new CardViewFactory ); 48 return ( new CardViewFactory );
48 } 49 }
49} 50}
50#endif //KAB_EMBEDDED 51#endif //KAB_EMBEDDED
51 52
52//////////////////////////////// 53////////////////////////////////
53// AddresseeCardViewItem (internal class) 54// AddresseeCardViewItem (internal class)
54class AddresseeCardViewItem : public CardViewItem 55class AddresseeCardViewItem : public CardViewItem
55{ 56{
56 public: 57 public:
57 AddresseeCardViewItem(const KABC::Field::List &fields, 58 AddresseeCardViewItem(const KABC::Field::List &fields,
58 bool showEmptyFields, 59 bool showEmptyFields,
59 KABC::AddressBook *doc, const KABC::Addressee &a, 60 KABC::AddressBook *doc, const KABC::Addressee &a,
60 CardView *parent) 61 CardView *parent)
61 : CardViewItem(parent, a.formattedName()), 62 : CardViewItem(parent, a.formattedName()),
62 mFields( fields ), mShowEmptyFields(showEmptyFields), 63 mFields( fields ), mShowEmptyFields(showEmptyFields),
63 mDocument(doc), mAddressee(a) 64 mDocument(doc), mAddressee(a)
64 { 65 {
65 if ( mFields.isEmpty() ) { 66 if ( mFields.isEmpty() ) {
66 mFields = KABC::Field::defaultFields(); 67 mFields = KABC::Field::defaultFields();
67 } 68 }
68 refresh(); 69 refresh();
69 } 70 }
70 71
71 const KABC::Addressee &addressee() const { return mAddressee; } 72 const KABC::Addressee &addressee() const { return mAddressee; }
72 73
73 void refresh() 74 void refresh()
74 { 75 {
75 // Update our addressee, since it may have changed elsewhere 76 // Update our addressee, since it may have changed elsewhere
76 mAddressee = mDocument->findByUid(mAddressee.uid()); 77 mAddressee = mDocument->findByUid(mAddressee.uid());
77 78
78 if (!mAddressee.isEmpty()) 79 if (!mAddressee.isEmpty())
79 { 80 {
80 clearFields(); 81 clearFields();
81 82
82 // Try all the selected fields until we find one with text. 83 // Try all the selected fields until we find one with text.
83 // This will limit the number of unlabeled icons in the view 84 // This will limit the number of unlabeled icons in the view
84 KABC::Field::List::Iterator iter; 85 KABC::Field::List::Iterator iter;
85 for (iter = mFields.begin(); iter != mFields.end(); ++iter) 86 for (iter = mFields.begin(); iter != mFields.end(); ++iter)
86 { 87 {
87 // insert empty fields or not? not doing so saves a bit of memory and CPU 88 // insert empty fields or not? not doing so saves a bit of memory and CPU
88 // (during geometry calculations), but prevents having equally 89 // (during geometry calculations), but prevents having equally
89 // wide label columns in all cards, unless CardViewItem/CardView search 90 // wide label columns in all cards, unless CardViewItem/CardView search
90 // globally for the widest label. (anders) 91 // globally for the widest label. (anders)
91 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty()) 92 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty())
92 insertField((*iter)->label(), (*iter)->value( mAddressee )); 93 insertField((*iter)->label(), (*iter)->value( mAddressee ));
93 } 94 }
94 95
95 // We might want to make this the first field. hmm... -mpilone 96 // We might want to make this the first field. hmm... -mpilone
96 setCaption( mAddressee.realName() ); 97 setCaption( mAddressee.realName() );
97 } 98 }
98 } 99 }
99 100
100 private: 101 private:
101 KABC::Field::List mFields; 102 KABC::Field::List mFields;
102 bool mShowEmptyFields; 103 bool mShowEmptyFields;
103 KABC::AddressBook *mDocument; 104 KABC::AddressBook *mDocument;
104 KABC::Addressee mAddressee; 105 KABC::Addressee mAddressee;
105}; 106};
106 107
107/////////////////////////////// 108///////////////////////////////
108// AddresseeCardView 109// AddresseeCardView
109 110
110AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name) 111AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name)
111 : CardView(parent, name) 112 : CardView(parent, name)
112{ 113{
113 setAcceptDrops(true); 114 setAcceptDrops(true);
114} 115}
115 116
116AddresseeCardView::~AddresseeCardView() 117AddresseeCardView::~AddresseeCardView()
117{ 118{
118} 119}
120void AddresseeCardView::printMe()
121{
122#ifdef DESKTOP_VERSION
123 QPrinter printer;
124 if (!printer.setup() )
125 return;
126 QPainter p;
127 p.begin ( &printer );
128 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
129 float dx, dy;
130 int wid = (m.width() * 9)/10;
131 dx = (float) wid/(float)contentsWidth ();
132 dy = (float)(m.height()) / (float)contentsHeight ();
133 float scale;
134 // scale to fit the width or height of the paper
135 if ( dx < dy )
136 scale = dx;
137 else
138 scale = dy;
139 p.translate( m.width()/10,0 );
140 p.scale( scale, scale );
141 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
142 p.end();
143 repaint();
144#endif
145}
119 146
120 147
121void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e) 148void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e)
122{ 149{
123#ifndef KAB_EMBEDDED 150#ifndef KAB_EMBEDDED
124 if (QTextDrag::canDecode(e)) 151 if (QTextDrag::canDecode(e))
125 e->accept(); 152 e->accept();
126#else //KAB_EMBEDDED 153#else //KAB_EMBEDDED
127qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented"); 154qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented");
128#endif //KAB_EMBEDDED 155#endif //KAB_EMBEDDED
129} 156}
130 157
131void AddresseeCardView::dropEvent(QDropEvent *e) 158void AddresseeCardView::dropEvent(QDropEvent *e)
132{ 159{
133 emit addresseeDropped(e); 160 emit addresseeDropped(e);
134} 161}
135 162
136void AddresseeCardView::startDrag() 163void AddresseeCardView::startDrag()
137{ 164{
138 emit startAddresseeDrag(); 165 emit startAddresseeDrag();
139} 166}
140 167
141 168
142/////////////////////////////// 169///////////////////////////////
143// KAddressBookCardView 170// KAddressBookCardView
144 171
145KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, 172KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab,
146 QWidget *parent, const char *name ) 173 QWidget *parent, const char *name )
147 : KAddressBookView( ab, parent, name ) 174 : KAddressBookView( ab, parent, name )
148{ 175{
149 mShowEmptyFields = false; 176 mShowEmptyFields = false;
150 177
151 // Init the GUI 178 // Init the GUI
152 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 179 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
153 180
154 mCardView = new AddresseeCardView(viewWidget(), "mCardView"); 181 mCardView = new AddresseeCardView(viewWidget(), "mCardView");
155 mCardView->setSelectionMode(CardView::Extended); 182 mCardView->setSelectionMode(CardView::Extended);
156 layout->addWidget(mCardView); 183 layout->addWidget(mCardView);
157 184
158 // Connect up the signals 185 // Connect up the signals
159 connect(mCardView, SIGNAL(executed(CardViewItem *)), 186 connect(mCardView, SIGNAL(executed(CardViewItem *)),
160 this, SLOT(addresseeExecuted(CardViewItem *))); 187 this, SLOT(addresseeExecuted(CardViewItem *)));
161 connect(mCardView, SIGNAL(selectionChanged()), 188 connect(mCardView, SIGNAL(selectionChanged()),
162 this, SLOT(addresseeSelected())); 189 this, SLOT(addresseeSelected()));
163 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), 190 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)),
164 this, SIGNAL(dropped(QDropEvent*))); 191 this, SIGNAL(dropped(QDropEvent*)));
165 connect(mCardView, SIGNAL(startAddresseeDrag()), 192 connect(mCardView, SIGNAL(startAddresseeDrag()),
166 this, SIGNAL(startDrag())); 193 this, SIGNAL(startDrag()));
194 connect(this, SIGNAL(printView()),
195 mCardView , SLOT(printMe()));
167} 196}
168 197
169KAddressBookCardView::~KAddressBookCardView() 198KAddressBookCardView::~KAddressBookCardView()
170{ 199{
171} 200}
172void KAddressBookCardView::setFocusAV() 201void KAddressBookCardView::setFocusAV()
173{ 202{
174 if ( mCardView ) 203 if ( mCardView )
175 mCardView->setFocus(); 204 mCardView->setFocus();
176 205
177} 206}
178void KAddressBookCardView::scrollUP() 207void KAddressBookCardView::scrollUP()
179{ 208{
180 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 209 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
181 QApplication::postEvent( mCardView, ev ); 210 QApplication::postEvent( mCardView, ev );
182 211
183} 212}
184void KAddressBookCardView::scrollDOWN() 213void KAddressBookCardView::scrollDOWN()
185{ 214{
186 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 215 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
187 QApplication::postEvent( mCardView, ev ); 216 QApplication::postEvent( mCardView, ev );
188} 217}
189void KAddressBookCardView::readConfig(KConfig *config) 218void KAddressBookCardView::readConfig(KConfig *config)
190{ 219{
191 KAddressBookView::readConfig(config); 220 KAddressBookView::readConfig(config);
192 221
193 // costum colors? 222 // costum colors?
194 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 223 if ( config->readBoolEntry( "EnableCustomColors", false ) )
195 { 224 {
196 QPalette p( mCardView->palette() ); 225 QPalette p( mCardView->palette() );
197 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 226 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
198 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 227 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
199 c = p.color(QPalette::Normal, QColorGroup::Text ); 228 c = p.color(QPalette::Normal, QColorGroup::Text );
200 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 229 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
201 c = p.color(QPalette::Normal, QColorGroup::Button ); 230 c = p.color(QPalette::Normal, QColorGroup::Button );
202 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 231 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
203 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 232 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
204 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 233 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
205 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 234 c = p.color(QPalette::Normal, QColorGroup::Highlight );
206 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 235 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
207 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 236 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
208 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 237 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
209 mCardView->viewport()->setPalette( p ); 238 mCardView->viewport()->setPalette( p );
210 } 239 }
211 else 240 else
212 { 241 {
213 // needed if turned off during a session. 242 // needed if turned off during a session.
214 mCardView->viewport()->setPalette( mCardView->palette() ); 243 mCardView->viewport()->setPalette( mCardView->palette() );
215 } 244 }
216 245
217 //custom fonts? 246 //custom fonts?
218 QFont f( font() ); 247 QFont f( font() );
219 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 248 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
220 { 249 {
221 mCardView->setFont( config->readFontEntry( "TextFont", &f) ); 250 mCardView->setFont( config->readFontEntry( "TextFont", &f) );
222 f.setBold( true ); 251 f.setBold( true );
223 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 252 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
224 } 253 }
225 else 254 else
226 { 255 {
227 mCardView->setFont( f ); 256 mCardView->setFont( f );
228 f.setBold( true ); 257 f.setBold( true );
229 mCardView->setHeaderFont( f ); 258 mCardView->setHeaderFont( f );
230 } 259 }
231 260
232 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true)); 261 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true));
233 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators", 262 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators",
234 true)); 263 true));
235 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); 264 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false));
236 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false); 265 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false);
237 266
238 mCardView->setShowEmptyFields( mShowEmptyFields ); 267 mCardView->setShowEmptyFields( mShowEmptyFields );
239 268
240 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) ); 269 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) );
241 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) ); 270 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) );
242 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) ); 271 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) );
243 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) ); 272 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) );
244 273
245#if 0 274#if 0
246 // LR KABPrefs::instance()->mHonorSingleClick is handled and fixed in cardviews contentsMouseDoubleClickEven 275 // LR KABPrefs::instance()->mHonorSingleClick is handled and fixed in cardviews contentsMouseDoubleClickEven
247 disconnect(mCardView, SIGNAL(executed(CardViewItem *)), 276 disconnect(mCardView, SIGNAL(executed(CardViewItem *)),
248 this, SLOT(addresseeExecuted(CardViewItem *))); 277 this, SLOT(addresseeExecuted(CardViewItem *)));
249 278
250 if (KABPrefs::instance()->mHonorSingleClick) 279 if (KABPrefs::instance()->mHonorSingleClick)
251 connect(mCardView, SIGNAL(executed(CardViewItem *)), 280 connect(mCardView, SIGNAL(executed(CardViewItem *)),
252 this, SLOT(addresseeExecuted(CardViewItem *))); 281 this, SLOT(addresseeExecuted(CardViewItem *)));
253 else 282 else
254 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), 283 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)),
255 this, SLOT(addresseeExecuted(CardViewItem *))); 284 this, SLOT(addresseeExecuted(CardViewItem *)));
256#endif 285#endif
257 286
258 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), 287 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)),
259 this, SLOT(addresseeExecuted(CardViewItem *))); 288 this, SLOT(addresseeExecuted(CardViewItem *)));
260} 289}
261 290
262void KAddressBookCardView::writeConfig( KConfig *config ) 291void KAddressBookCardView::writeConfig( KConfig *config )
263{ 292{
264 config->writeEntry( "ItemWidth", mCardView->itemWidth() ); 293 config->writeEntry( "ItemWidth", mCardView->itemWidth() );
265 KAddressBookView::writeConfig( config ); 294 KAddressBookView::writeConfig( config );
266} 295}
267void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field ) 296void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field )
268{ 297{
269 mCardView->clear(); 298 mCardView->clear();
270 if ( s.isEmpty() || s == "*" ) { 299 if ( s.isEmpty() || s == "*" ) {
271 refresh(); 300 refresh();
272 return; 301 return;
273 } 302 }
274 QString pattern = s.lower()+"*"; 303 QString pattern = s.lower()+"*";
275 QRegExp re; 304 QRegExp re;
276 re.setWildcard(true); // most people understand these better. 305 re.setWildcard(true); // most people understand these better.
277 re.setCaseSensitive(false); 306 re.setCaseSensitive(false);
278 re.setPattern( pattern ); 307 re.setPattern( pattern );
279 if (!re.isValid()) 308 if (!re.isValid())
280 return; 309 return;
281 mCardView->viewport()->setUpdatesEnabled( false ); 310 mCardView->viewport()->setUpdatesEnabled( false );
282 KABC::Addressee::List addresseeList = addressees(); 311 KABC::Addressee::List addresseeList = addressees();
283 KABC::Addressee::List::Iterator it; 312 KABC::Addressee::List::Iterator it;
284 if ( field ) { 313 if ( field ) {
285 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 314 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
286 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 315 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
287 continue; 316 continue;
288#if QT_VERSION >= 300 317#if QT_VERSION >= 300
289 if (re.search(field->value( *it ).lower()) != -1) 318 if (re.search(field->value( *it ).lower()) != -1)
290#else 319#else
291 if (re.match(field->value( *it ).lower()) != -1) 320 if (re.match(field->value( *it ).lower()) != -1)
292#endif 321#endif
293 new AddresseeCardViewItem(fields(), mShowEmptyFields, 322 new AddresseeCardViewItem(fields(), mShowEmptyFields,
294 addressBook(), *it, mCardView); 323 addressBook(), *it, mCardView);
diff --git a/kaddressbook/views/kaddressbookcardview.h b/kaddressbook/views/kaddressbookcardview.h
index 8f22d54..2a71f7e 100644
--- a/kaddressbook/views/kaddressbookcardview.h
+++ b/kaddressbook/views/kaddressbookcardview.h
@@ -1,120 +1,122 @@
1#ifndef KADDRESSBOOKCARDVIEW_H 1#ifndef KADDRESSBOOKCARDVIEW_H
2#define KADDRESSBOOKCARDVIEW_H 2#define KADDRESSBOOKCARDVIEW_H
3 3
4/* 4/*
5 This file is part of KAddressBook. 5 This file is part of KAddressBook.
6 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 6 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or 10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version. 11 (at your option) any later version.
12 12
13 This program is distributed in the hope that it will be useful, 13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details. 16 GNU General Public License for more details.
17 17
18 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 21
22 As a special exception, permission is given to link this program 22 As a special exception, permission is given to link this program
23 with any edition of Qt, and distribute the resulting executable, 23 with any edition of Qt, and distribute the resulting executable,
24 without including the source code for Qt in the source distribution. 24 without including the source code for Qt in the source distribution.
25*/ 25*/
26 26
27#include <qstring.h> 27#include <qstring.h>
28#ifndef KAB_EMBEDDED 28#ifndef KAB_EMBEDDED
29#include <kiconview.h> 29#include <kiconview.h>
30#else //KAB_EMBEDDED 30#else //KAB_EMBEDDED
31#include <klocale.h> 31#include <klocale.h>
32#endif //KAB_EMBEDDED 32#endif //KAB_EMBEDDED
33 33
34#include "cardview.h" 34#include "cardview.h"
35#include "kaddressbookview.h" 35#include "kaddressbookview.h"
36#include "configurecardviewdialog.h" 36#include "configurecardviewdialog.h"
37 37
38class QDragEnterEvent; 38class QDragEnterEvent;
39class QDragEntryEvent; 39class QDragEntryEvent;
40class QDropEvent; 40class QDropEvent;
41class KConfig; 41class KConfig;
42class AddresseeCardView; 42class AddresseeCardView;
43 43
44/** 44/**
45 This view uses the CardView class to create a card view. At some 45 This view uses the CardView class to create a card view. At some
46 point in the future I think this will be the default view of 46 point in the future I think this will be the default view of
47 KAddressBook. 47 KAddressBook.
48 */ 48 */
49class KAddressBookCardView : public KAddressBookView 49class KAddressBookCardView : public KAddressBookView
50{ 50{
51 Q_OBJECT 51 Q_OBJECT
52 52
53 public: 53 public:
54 KAddressBookCardView( KABC::AddressBook *ab, QWidget *parent, 54 KAddressBookCardView( KABC::AddressBook *ab, QWidget *parent,
55 const char *name = 0 ); 55 const char *name = 0 );
56 virtual ~KAddressBookCardView(); 56 virtual ~KAddressBookCardView();
57 void doSearch( const QString& s,KABC::Field *field ); 57 void doSearch( const QString& s,KABC::Field *field );
58 virtual QStringList selectedUids(); 58 virtual QStringList selectedUids();
59 virtual QString type() const { return "Card"; } 59 virtual QString type() const { return "Card"; }
60 60
61 virtual void readConfig(KConfig *config); 61 virtual void readConfig(KConfig *config);
62 virtual void writeConfig(KConfig *); 62 virtual void writeConfig(KConfig *);
63 virtual void scrollUP(); 63 virtual void scrollUP();
64 virtual void scrollDOWN(); 64 virtual void scrollDOWN();
65 virtual void setFocusAV(); 65 virtual void setFocusAV();
66 66
67 public slots: 67 public slots:
68 void refresh(QString uid = QString::null); 68 void refresh(QString uid = QString::null);
69 void setSelected(QString uid/*US = QString::null*/, bool selected/*US = true*/); 69 void setSelected(QString uid/*US = QString::null*/, bool selected/*US = true*/);
70//US added an additional method without parameter 70//US added an additional method without parameter
71 void setSelected(); 71 void setSelected();
72 72
73 protected slots: 73 protected slots:
74 void addresseeExecuted(CardViewItem *item); 74 void addresseeExecuted(CardViewItem *item);
75 void addresseeSelected(); 75 void addresseeSelected();
76 76
77 private: 77 private:
78 AddresseeCardView *mCardView; 78 AddresseeCardView *mCardView;
79 bool mShowEmptyFields; 79 bool mShowEmptyFields;
80}; 80};
81 81
82class AddresseeCardView : public CardView 82class AddresseeCardView : public CardView
83{ 83{
84 Q_OBJECT 84 Q_OBJECT
85 public: 85 public:
86 AddresseeCardView(QWidget *parent, const char *name = 0); 86 AddresseeCardView(QWidget *parent, const char *name = 0);
87 ~AddresseeCardView(); 87 ~AddresseeCardView();
88public slots:
89 void printMe();
88 90
89 signals: 91 signals:
90 void startAddresseeDrag(); 92 void startAddresseeDrag();
91 void addresseeDropped(QDropEvent *); 93 void addresseeDropped(QDropEvent *);
92 94
93 protected: 95 protected:
94 virtual void dragEnterEvent(QDragEnterEvent *); 96 virtual void dragEnterEvent(QDragEnterEvent *);
95 virtual void dropEvent(QDropEvent *); 97 virtual void dropEvent(QDropEvent *);
96 virtual void startDrag(); 98 virtual void startDrag();
97}; 99};
98 100
99 101
100class CardViewFactory : public ViewFactory 102class CardViewFactory : public ViewFactory
101{ 103{
102 public: 104 public:
103 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name ) 105 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name )
104 { 106 {
105 return new KAddressBookCardView( ab, parent, name ); 107 return new KAddressBookCardView( ab, parent, name );
106 } 108 }
107 109
108 QString type() const { return "Card"; } 110 QString type() const { return "Card"; }
109 111
110 QString description() const { return i18n( "Rolodex style cards represent contacts." ); } 112 QString description() const { return i18n( "Rolodex style cards represent contacts." ); }
111 113
112 ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, QWidget *parent, 114 ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, QWidget *parent,
113 const char *name = 0 ) 115 const char *name = 0 )
114 { 116 {
115 return new ConfigureCardViewWidget( ab, parent, name ); 117 return new ConfigureCardViewWidget( ab, parent, name );
116 } 118 }
117}; 119};
118 120
119 121
120#endif 122#endif
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 61703ee..ecd6f05 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -1,219 +1,221 @@
1// $Id$ 1// $Id$
2 2
3#include <qvbox.h> 3#include <qvbox.h>
4#include <qlistbox.h> 4#include <qlistbox.h>
5#include <qwidget.h> 5#include <qwidget.h>
6#include <qfile.h> 6#include <qfile.h>
7#include <qimage.h> 7#include <qimage.h>
8#include <qcombobox.h> 8#include <qcombobox.h>
9#include <qapplication.h> 9#include <qapplication.h>
10#include <qdragobject.h> 10#include <qdragobject.h>
11#include <qevent.h> 11#include <qevent.h>
12#include <qurl.h> 12#include <qurl.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14 14
15#include <kabc/addressbook.h> 15#include <kabc/addressbook.h>
16#include <kapplication.h> 16#include <kapplication.h>
17#include <kconfig.h> 17#include <kconfig.h>
18#include <kcolorbutton.h> 18#include <kcolorbutton.h>
19#include <kdebug.h> 19#include <kdebug.h>
20#include <kglobal.h> 20#include <kglobal.h>
21#include <kiconloader.h> 21#include <kiconloader.h>
22#include <klineedit.h> 22#include <klineedit.h>
23#include <klocale.h> 23#include <klocale.h>
24#include <kmessagebox.h> 24#include <kmessagebox.h>
25#include <kurl.h> 25#include <kurl.h>
26#include <kurlrequester.h> 26#include <kurlrequester.h>
27 27
28//US#include "configuretableviewdialog.h" 28//US#include "configuretableviewdialog.h"
29#include "contactlistview.h" 29#include "contactlistview.h"
30#include "kabprefs.h" 30#include "kabprefs.h"
31#include "undocmds.h" 31#include "undocmds.h"
32#include "viewmanager.h" 32#include "viewmanager.h"
33 33
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qheader.h> 35#include <qheader.h>
36#include <qregexp.h> 36#include <qregexp.h>
37 37
38#include "kaddressbooktableview.h" 38#include "kaddressbooktableview.h"
39 39
40 40
41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, 41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab,
42 QWidget *parent, const char *name ) 42 QWidget *parent, const char *name )
43 : KAddressBookView( ab, parent, name ) 43 : KAddressBookView( ab, parent, name )
44{ 44{
45 mainLayout = new QVBoxLayout( viewWidget(), 2 ); 45 mainLayout = new QVBoxLayout( viewWidget(), 2 );
46 46
47 // The list view will be created when the config is read. 47 // The list view will be created when the config is read.
48 mListView = 0; 48 mListView = 0;
49} 49}
50 50
51KAddressBookTableView::~KAddressBookTableView() 51KAddressBookTableView::~KAddressBookTableView()
52{ 52{
53} 53}
54void KAddressBookTableView::setFocusAV() 54void KAddressBookTableView::setFocusAV()
55{ 55{
56 if ( mListView ) 56 if ( mListView )
57 mListView->setFocus(); 57 mListView->setFocus();
58 58
59} 59}
60void KAddressBookTableView::scrollUP() 60void KAddressBookTableView::scrollUP()
61{ 61{
62 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 62 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
63 QApplication::postEvent( mListView, ev ); 63 QApplication::postEvent( mListView, ev );
64} 64}
65void KAddressBookTableView::scrollDOWN() 65void KAddressBookTableView::scrollDOWN()
66{ 66{
67 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 67 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
68 QApplication::postEvent( mListView, ev ); 68 QApplication::postEvent( mListView, ev );
69} 69}
70void KAddressBookTableView::reconstructListView() 70void KAddressBookTableView::reconstructListView()
71{ 71{
72 if (mListView) 72 if (mListView)
73 { 73 {
74 disconnect(mListView, SIGNAL(selectionChanged()), 74 disconnect(mListView, SIGNAL(selectionChanged()),
75 this, SLOT(addresseeSelected())); 75 this, SLOT(addresseeSelected()));
76 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 76 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
77 this, SLOT(addresseeExecuted(QListViewItem*))); 77 this, SLOT(addresseeExecuted(QListViewItem*)));
78 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 78 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
79 this, SLOT(addresseeExecuted(QListViewItem*))); 79 this, SLOT(addresseeExecuted(QListViewItem*)));
80 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 80 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
81 SIGNAL(startDrag())); 81 SIGNAL(startDrag()));
82 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 82 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
83 this, SLOT(addresseeExecuted(QListViewItem*))); 83 this, SLOT(addresseeExecuted(QListViewItem*)));
84 84
85 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 85 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
86 SIGNAL(dropped(QDropEvent*))); 86 SIGNAL(dropped(QDropEvent*)));
87 delete mListView; 87 delete mListView;
88 } 88 }
89 89
90 mListView = new ContactListView( this, addressBook(), viewWidget() ); 90 mListView = new ContactListView( this, addressBook(), viewWidget() );
91 91
92 connect(this, SIGNAL(printView()),
93 mListView , SLOT(printMe()));
92 //US set singleClick manually, because it is no global configparameter in embedded space 94 //US set singleClick manually, because it is no global configparameter in embedded space
93 mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick); 95 mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick);
94 96
95 // Add the columns 97 // Add the columns
96 KABC::Field::List fieldList = fields(); 98 KABC::Field::List fieldList = fields();
97 KABC::Field::List::ConstIterator it; 99 KABC::Field::List::ConstIterator it;
98 100
99 int c = 0; 101 int c = 0;
100 for( it = fieldList.begin(); it != fieldList.end(); ++it ) { 102 for( it = fieldList.begin(); it != fieldList.end(); ++it ) {
101 mListView->addColumn( (*it)->label() ); 103 mListView->addColumn( (*it)->label() );
102 mListView->setColumnWidthMode(c++, QListView::Manual); 104 mListView->setColumnWidthMode(c++, QListView::Manual);
103//US 105//US
104 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); 106 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1());
105 } 107 }
106 108
107 connect(mListView, SIGNAL(selectionChanged()), 109 connect(mListView, SIGNAL(selectionChanged()),
108 this, SLOT(addresseeSelected())); 110 this, SLOT(addresseeSelected()));
109 connect(mListView, SIGNAL(startAddresseeDrag()), this, 111 connect(mListView, SIGNAL(startAddresseeDrag()), this,
110 SIGNAL(startDrag())); 112 SIGNAL(startDrag()));
111 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 113 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
112 SIGNAL(dropped(QDropEvent*))); 114 SIGNAL(dropped(QDropEvent*)));
113 115
114 if (KABPrefs::instance()->mHonorSingleClick) { 116 if (KABPrefs::instance()->mHonorSingleClick) {
115 // qDebug("KAddressBookTableView::reconstructListView single"); 117 // qDebug("KAddressBookTableView::reconstructListView single");
116 connect(mListView, SIGNAL(executed(QListViewItem*)), 118 connect(mListView, SIGNAL(executed(QListViewItem*)),
117 this, SLOT(addresseeExecuted(QListViewItem*))); 119 this, SLOT(addresseeExecuted(QListViewItem*)));
118 } else { 120 } else {
119 // qDebug("KAddressBookTableView::reconstructListView double"); 121 // qDebug("KAddressBookTableView::reconstructListView double");
120 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 122 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
121 this, SLOT(addresseeExecuted(QListViewItem*))); 123 this, SLOT(addresseeExecuted(QListViewItem*)));
122 } 124 }
123 connect(mListView, SIGNAL(returnPressed(QListViewItem*)), 125 connect(mListView, SIGNAL(returnPressed(QListViewItem*)),
124 this, SLOT(addresseeExecuted(QListViewItem*))); 126 this, SLOT(addresseeExecuted(QListViewItem*)));
125 connect(mListView, SIGNAL(signalDelete()), 127 connect(mListView, SIGNAL(signalDelete()),
126 this, SLOT(addresseeDeleted())); 128 this, SLOT(addresseeDeleted()));
127 129
128//US performceimprovement. Refresh is done from the outside 130//US performceimprovement. Refresh is done from the outside
129//US refresh(); 131//US refresh();
130 132
131 mListView->setSorting( 0, true ); 133 mListView->setSorting( 0, true );
132 mainLayout->addWidget( mListView ); 134 mainLayout->addWidget( mListView );
133 mainLayout->activate(); 135 mainLayout->activate();
134 mListView->show(); 136 mListView->show();
135} 137}
136 138
137void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) 139void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field )
138{ 140{
139 mListView->clear(); 141 mListView->clear();
140 if ( s.isEmpty() || s == "*" ) { 142 if ( s.isEmpty() || s == "*" ) {
141 refresh(); 143 refresh();
142 return; 144 return;
143 } 145 }
144 QString pattern = s.lower()+"*"; 146 QString pattern = s.lower()+"*";
145 QRegExp re; 147 QRegExp re;
146 re.setWildcard(true); // most people understand these better. 148 re.setWildcard(true); // most people understand these better.
147 re.setCaseSensitive(false); 149 re.setCaseSensitive(false);
148 re.setPattern( pattern ); 150 re.setPattern( pattern );
149 if (!re.isValid()) 151 if (!re.isValid())
150 return; 152 return;
151 KABC::Addressee::List addresseeList = addressees(); 153 KABC::Addressee::List addresseeList = addressees();
152 KABC::Addressee::List::Iterator it; 154 KABC::Addressee::List::Iterator it;
153 if ( field ) { 155 if ( field ) {
154 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 156 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
155 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 157 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
156 continue; 158 continue;
157#if QT_VERSION >= 300 159#if QT_VERSION >= 300
158 if (re.search(field->value( *it ).lower()) != -1) 160 if (re.search(field->value( *it ).lower()) != -1)
159#else 161#else
160 if (re.match(field->value( *it ).lower()) != -1) 162 if (re.match(field->value( *it ).lower()) != -1)
161#endif 163#endif
162 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 164 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
163 165
164 } 166 }
165 } else { 167 } else {
166 KABC::Field::List fieldList = allFields(); 168 KABC::Field::List fieldList = allFields();
167 KABC::Field::List::ConstIterator fieldIt; 169 KABC::Field::List::ConstIterator fieldIt;
168 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 170 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
169 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 171 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
170 continue; 172 continue;
171 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 173 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
172#if QT_VERSION >= 300 174#if QT_VERSION >= 300
173 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 175 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
174#else 176#else
175 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 177 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
176#endif 178#endif
177 { 179 {
178 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 180 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
179 break; 181 break;
180 } 182 }
181 } 183 }
182 } 184 }
183 } 185 }
184 // Sometimes the background pixmap gets messed up when we add lots 186 // Sometimes the background pixmap gets messed up when we add lots
185 // of items. 187 // of items.
186 mListView->repaint(); 188 mListView->repaint();
187 if ( mListView->firstChild() ) { 189 if ( mListView->firstChild() ) {
188 mListView->setCurrentItem ( mListView->firstChild() ); 190 mListView->setCurrentItem ( mListView->firstChild() );
189 mListView->setSelected ( mListView->firstChild(), true ); 191 mListView->setSelected ( mListView->firstChild(), true );
190 } 192 }
191 else 193 else
192 emit selected(QString::null); 194 emit selected(QString::null);
193 195
194} 196}
195void KAddressBookTableView::writeConfig(KConfig *config) 197void KAddressBookTableView::writeConfig(KConfig *config)
196{ 198{
197 KAddressBookView::writeConfig(config); 199 KAddressBookView::writeConfig(config);
198 200
199 mListView->saveLayout(config, config->group()); 201 mListView->saveLayout(config, config->group());
200} 202}
201 203
202void KAddressBookTableView::readConfig(KConfig *config) 204void KAddressBookTableView::readConfig(KConfig *config)
203{ 205{
204 KAddressBookView::readConfig( config ); 206 KAddressBookView::readConfig( config );
205 // The config could have changed the fields, so we need to reconstruct 207 // The config could have changed the fields, so we need to reconstruct
206 // the listview. 208 // the listview.
207 reconstructListView(); 209 reconstructListView();
208 210
209 // costum colors? 211 // costum colors?
210 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 212 if ( config->readBoolEntry( "EnableCustomColors", false ) )
211 { 213 {
212 QPalette p( mListView->palette() ); 214 QPalette p( mListView->palette() );
213 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 215 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
214 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 216 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
215 c = p.color(QPalette::Normal, QColorGroup::Text ); 217 c = p.color(QPalette::Normal, QColorGroup::Text );
216 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 218 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
217 c = p.color(QPalette::Normal, QColorGroup::Button ); 219 c = p.color(QPalette::Normal, QColorGroup::Button );
218 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 220 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
219 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 221 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
diff --git a/kaddressbook/xxportmanager.cpp b/kaddressbook/xxportmanager.cpp
index 8d40ffe..89a2626 100644
--- a/kaddressbook/xxportmanager.cpp
+++ b/kaddressbook/xxportmanager.cpp
@@ -103,140 +103,140 @@ void XXPortManager::importVCard( const KURL &url, bool showPreview )
103} 103}
104 104
105void XXPortManager::importVCard( const QString &vCard, bool showPreview ) 105void XXPortManager::importVCard( const QString &vCard, bool showPreview )
106{ 106{
107 importData = vCard; 107 importData = vCard;
108 mShowPreview = showPreview; 108 mShowPreview = showPreview;
109 slotImport( "vcard", "<empty>" ); 109 slotImport( "vcard", "<empty>" );
110 mShowPreview = false; 110 mShowPreview = false;
111 importData = ""; 111 importData = "";
112} 112}
113 113
114void XXPortManager::slotImport( const QString &identifier, const QString &data ) 114void XXPortManager::slotImport( const QString &identifier, const QString &data )
115{ 115{
116 XXPortObject *obj = mXXPortObjects[ identifier ]; 116 XXPortObject *obj = mXXPortObjects[ identifier ];
117 if ( !obj ) { 117 if ( !obj ) {
118 KMessageBox::error( mCore, i18n( "<qt>No import plugin available for <b>%1</b>.</qt>" ).arg( identifier ) ); 118 KMessageBox::error( mCore, i18n( "<qt>No import plugin available for <b>%1</b>.</qt>" ).arg( identifier ) );
119 return; 119 return;
120 } 120 }
121 121
122 KABC::Resource *resource = mCore->requestResource( mCore ); 122 KABC::Resource *resource = mCore->requestResource( mCore );
123 if ( !resource ) 123 if ( !resource )
124 return; 124 return;
125 125
126 KABC::AddresseeList list = obj->importContacts( data ); 126 KABC::AddresseeList list = obj->importContacts( data );
127 KABC::AddresseeList::Iterator it; 127 KABC::AddresseeList::Iterator it;
128 bool imported = false; 128 bool imported = false;
129 for ( it = list.begin(); it != list.end(); ++it ) { 129 for ( it = list.begin(); it != list.end(); ++it ) {
130 if ( mShowPreview ) { 130 if ( mShowPreview ) {
131 PreviewDialog dlg( *it, mCore ); 131 PreviewDialog dlg( *it, mCore );
132 if ( !dlg.exec() ) 132 if ( !dlg.exec() )
133 continue; 133 continue;
134 } 134 }
135 135
136 (*it).setResource( resource ); 136 (*it).setResource( resource );
137 // We use a PwNewCommand so the user can undo it. 137 // We use a PwNewCommand so the user can undo it.
138 PwNewCommand *command = new PwNewCommand( mCore->addressBook(), *it ); 138 PwNewCommand *command = new PwNewCommand( mCore->addressBook(), *it );
139 UndoStack::instance()->push( command ); 139 UndoStack::instance()->push( command );
140 RedoStack::instance()->clear(); 140 RedoStack::instance()->clear();
141 imported = true; 141 imported = true;
142 } 142 }
143 143
144 if ( imported ) { 144 if ( imported ) {
145 KMessageBox::information( mCore, i18n( "contacts successfully imported." ) ); 145 KMessageBox::information( mCore, i18n( "contacts successfully imported." ) );
146 146
147 emit modified(); 147 emit modified();
148 } 148 }
149} 149}
150 150
151void XXPortManager::slotExport( const QString &identifier, const QString &data ) 151void XXPortManager::slotExport( const QString &identifier, const QString &data )
152{ 152{
153 XXPortObject *obj = mXXPortObjects[ identifier ]; 153 XXPortObject *obj = mXXPortObjects[ identifier ];
154 if ( !obj ) { 154 if ( !obj ) {
155 KMessageBox::error( mCore, i18n( "<qt>No export plugin available for <b>%1</b>.</qt>" ).arg( identifier ) ); 155 KMessageBox::error( mCore, i18n( "<qt>No export plugin available for <b>%1</b>.</qt>" ).arg( identifier ) );
156 return; 156 return;
157 } 157 }
158 158
159 KABC::AddresseeList addrList; 159 KABC::AddresseeList addrList;
160 XXPortSelectDialog dlg( mCore, obj->requiresSorting(), mCore ); 160 XXPortSelectDialog dlg( mCore, obj->requiresSorting(), mCore );
161 if ( dlg.exec() ) 161 if ( dlg.exec() )
162 addrList = dlg.contacts(); 162 addrList = dlg.contacts();
163 else 163 else
164 return; 164 return;
165 if ( !obj->exportContacts( addrList, data ) ) 165 if ( !obj->exportContacts( addrList, data ) )
166 KMessageBox::error( mCore, i18n( "Unable to export contacts." ) ); 166 KMessageBox::error( mCore, i18n( "Unable to export contacts." ) );
167 else 167 else
168 KMessageBox::information( mCore, i18n( "contacts successfully exported." ) ); 168 KMessageBox::information( mCore, i18n( "contacts successfully exported." ) );
169} 169}
170 170
171void XXPortManager::loadPlugins() 171void XXPortManager::loadPlugins()
172{ 172{
173 mXXPortObjects.clear(); 173 mXXPortObjects.clear();
174 174
175#ifndef KAB_EMBEDDED 175#ifndef KAB_EMBEDDED
176 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/XXPort" ); 176 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/XXPort" );
177 KTrader::OfferList::ConstIterator it; 177 KTrader::OfferList::ConstIterator it;
178 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 178 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
179 if ( !(*it)->hasServiceType( "KAddressBook/XXPort" ) ) 179 if ( !(*it)->hasServiceType( "KAddressBook/XXPort" ) )
180 continue; 180 continue;
181 181
182 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 182 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
183 if ( !factory ) { 183 if ( !factory ) {
184 kdDebug(5720) << "XXPortManager::loadExtensions(): Factory creation failed" << endl; 184 kdDebug(5720) << "XXPortManager::loadExtensions(): Factory creation failed" << endl;
185 continue; 185 continue;
186 } 186 }
187 187
188 XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory ); 188 XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
189 189
190 if ( !xxportFactory ) { 190 if ( !xxportFactory ) {
191 kdDebug(5720) << "XXPortManager::loadExtensions(): Cast failed" << endl; 191 kdDebug(5720) << "XXPortManager::loadExtensions(): Cast failed" << endl;
192 continue; 192 continue;
193 } 193 }
194 194
195#else //KAB_EMBEDDED 195#else //KAB_EMBEDDED
196 QList<XXPortFactory> factorylist; 196 QList<XXPortFactory> factorylist;
197 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_csv_xxport())); 197 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_csv_xxport()));
198 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_kde2_xxport())); 198 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_kde2_xxport()));
199 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_vcard_xxport())); 199 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_vcard_xxport()));
200 //US factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_opie_xxport())); 200 //US factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_opie_xxport()));
201 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_qtopia_xxport())); 201 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_qtopia_xxport()));
202 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_sharpdtm_xxport())); 202 factorylist.append(static_cast<XXPortFactory*>(init_microkaddrbk_sharpdtm_xxport()));
203 203
204 QListIterator<XXPortFactory> it(factorylist); 204 QListIterator<XXPortFactory> it(factorylist);
205 for ( ; it.current(); ++it ) 205 for ( ; it.current(); ++it )
206 { 206 {
207 XXPortFactory *xxportFactory = it.current(); 207 XXPortFactory *xxportFactory = it.current();
208#endif //KAB_EMBEDDED 208#endif //KAB_EMBEDDED
209 209
210 XXPortObject *obj = xxportFactory->xxportObject( mCore->addressBook(), mCore ); 210 XXPortObject *obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
211 if ( obj ) { 211 if ( obj ) {
212 mCore->addGUIClient( obj ); 212 mCore->addGUIClient( obj );
213 mXXPortObjects.insert( obj->identifier(), obj ); 213 mXXPortObjects.insert( obj->identifier(), obj );
214 connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ), 214 connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
215 this, SLOT( slotExport( const QString&, const QString& ) ) ); 215 this, SLOT( slotExport( const QString&, const QString& ) ) );
216 connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ), 216 connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
217 this, SLOT( slotImport( const QString&, const QString& ) ) ); 217 this, SLOT( slotImport( const QString&, const QString& ) ) );
218 } 218 }
219 } 219 }
220} 220}
221 221
222 222
223PreviewDialog::PreviewDialog( const KABC::Addressee &addr, QWidget *parent, 223PreviewDialog::PreviewDialog( const KABC::Addressee &addr, QWidget *parent,
224 const char *name ) 224 const char *name )
225 : KDialogBase( Plain, i18n( "Contact Preview" ), Ok | Cancel, Ok, parent, 225 : KDialogBase( Plain, i18n( "Contact Preview" ), Ok | Cancel, Ok, parent,
226 name, true, true ) 226 name, true, true )
227{ 227{
228 QWidget *page = plainPage(); 228 QWidget *page = plainPage();
229 QVBoxLayout *layout = new QVBoxLayout( page, marginHint(), spacingHint() ); 229 QVBoxLayout *layout = new QVBoxLayout( page, marginHint(), spacingHint() );
230 230
231 KPIM::AddresseeView *view = new KPIM::AddresseeView( page ); 231 KABC::AddresseeView *view = new KABC::AddresseeView( page );
232 view->setAddressee( addr ); 232 view->setAddressee( addr );
233 233
234 layout->addWidget( view ); 234 layout->addWidget( view );
235 235
236 resize( 400, 300 ); 236 resize( 400, 300 );
237} 237}
238 238
239#ifndef KAB_EMBEDDED 239#ifndef KAB_EMBEDDED
240#include "xxportmanager.moc" 240#include "xxportmanager.moc"
241#endif //KAB_EMBEDDED 241#endif //KAB_EMBEDDED
242 242
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index cee0466..5de667e 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,218 +1,218 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qcstring.h> 20#include <qcstring.h>
21#include <qwhatsthis.h> 21#include <qwhatsthis.h>
22#include <qdialog.h> 22#include <qdialog.h>
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kapplication.h> 28#include <kapplication.h>
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30#include <libkcal/todo.h> 30#include <libkcal/todo.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <krun.h> 33#include <krun.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include <kprocess.h> 35#include <kprocess.h>
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38#include <kabc/stdaddressbook.h> 38#include <kabc/stdaddressbook.h>
39 39
40#ifndef KORG_NODCOP 40#ifndef KORG_NODCOP
41#include <dcopclient.h> 41#include <dcopclient.h>
42#include "korganizer.h" 42#include "korganizer.h"
43#include "koprefs.h" 43#include "koprefs.h"
44#include "actionmanager.h" 44#include "actionmanager.h"
45#endif 45#endif
46 46
47#include "koeventviewer.h" 47#include "koeventviewer.h"
48//#ifndef KORG_NOKABC 48//#ifndef KORG_NOKABC
49//#include <kabc/stdaddressbook.h> 49//#include <kabc/stdaddressbook.h>
50//#define size count 50//#define size count
51//#endif 51//#endif
52 52
53#ifdef DESKTOP_VERSION 53#ifdef DESKTOP_VERSION
54#include <kabc/addresseedialog.h> 54#include <kabc/addresseedialog.h>
55#include <kabc/addresseeview.h> 55#include <kabc/addresseeview.h>
56#else //DESKTOP_VERSION 56#else //DESKTOP_VERSION
57#include <externalapphandler.h> 57#include <externalapphandler.h>
58#include <qtopia/qcopenvelope_qws.h> 58#include <qtopia/qcopenvelope_qws.h>
59#endif //DESKTOP_VERSION 59#endif //DESKTOP_VERSION
60 60
61KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 61KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
62 : QTextBrowser(parent,name) 62 : QTextBrowser(parent,name)
63{ 63{
64 mSyncMode = false; 64 mSyncMode = false;
65 mColorMode = 0; 65 mColorMode = 0;
66} 66}
67 67
68KOEventViewer::~KOEventViewer() 68KOEventViewer::~KOEventViewer()
69{ 69{
70} 70}
71 71
72void KOEventViewer::setSource(const QString& n) 72void KOEventViewer::setSource(const QString& n)
73{ 73{
74 74
75 if ( n.left(3) == "uid" ) 75 if ( n.left(3) == "uid" )
76#ifdef DESKTOP_VERSION 76#ifdef DESKTOP_VERSION
77 { 77 {
78 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 78 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
79 KABC::AddressBook::Iterator it; 79 KABC::AddressBook::Iterator it;
80 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 80 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
81 // LR I do not understand, why the uid string is different on zaurus and desktop 81 // LR I do not understand, why the uid string is different on zaurus and desktop
82 QString uid = "uid://"+(*it).uid(); 82 QString uid = "uid://"+(*it).uid();
83 83
84 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 84 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
85 if (n == uid ) { 85 if (n == uid ) {
86 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 86 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
87 QDialog dia( this,"dia123", true ); 87 QDialog dia( this,"dia123", true );
88 dia.setCaption( i18n("Details of attendee") ); 88 dia.setCaption( i18n("Details of attendee") );
89 QVBoxLayout lay ( &dia ); 89 QVBoxLayout lay ( &dia );
90 KPIM::AddresseeView av ( &dia ); 90 KABC::AddresseeView av ( &dia );
91 av.setAddressee( (*it) ); 91 av.setAddressee( (*it) );
92 lay.addWidget( &av ); 92 lay.addWidget( &av );
93 if ( QApplication::desktop()->width() < 480 ) 93 if ( QApplication::desktop()->width() < 480 )
94 dia.resize( 220, 240); 94 dia.resize( 220, 240);
95 else { 95 else {
96 dia.resize( 400,400); 96 dia.resize( 400,400);
97 } 97 }
98 dia.exec(); 98 dia.exec();
99 break; 99 break;
100 } 100 }
101 } 101 }
102 return; 102 return;
103 } 103 }
104#else 104#else
105 { 105 {
106 if ( "uid:organizer" == n ) { 106 if ( "uid:organizer" == n ) {
107 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 107 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
108 return; 108 return;
109 } 109 }
110 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 110 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
111 if (attendees.count()) { 111 if (attendees.count()) {
112 Attendee *a; 112 Attendee *a;
113 for(a=attendees.first();a;a=attendees.next()) { 113 for(a=attendees.first();a;a=attendees.next()) {
114 if ( "uid:"+a->uid() == n ) { 114 if ( "uid:"+a->uid() == n ) {
115 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 115 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
116 return; 116 return;
117 } 117 }
118 } 118 }
119 } 119 }
120 return; 120 return;
121 } 121 }
122 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 122 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
123 // the result should now arrive through method insertAttendees 123 // the result should now arrive through method insertAttendees
124 //QString uid = "uid:"+(*it).uid(); 124 //QString uid = "uid:"+(*it).uid();
125#endif 125#endif
126 if ( n.left(6) == "mailto" ) { 126 if ( n.left(6) == "mailto" ) {
127 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 127 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
128#ifndef DESKTOP_VERSION 128#ifndef DESKTOP_VERSION
129 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 129 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
130 e << n.mid(7); 130 e << n.mid(7);
131#endif 131#endif
132 132
133 } 133 }
134 134
135 135
136#ifndef KORG_NODCOP 136#ifndef KORG_NODCOP
137 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 137 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
138 QString tmpStr; 138 QString tmpStr;
139 if (n.startsWith("mailto:")) { 139 if (n.startsWith("mailto:")) {
140 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 140 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
141 //emit showIncidence(n); 141 //emit showIncidence(n);
142 return; 142 return;
143 } else if (n.startsWith("uid:")) { 143 } else if (n.startsWith("uid:")) {
144 DCOPClient *client = KApplication::kApplication()->dcopClient(); 144 DCOPClient *client = KApplication::kApplication()->dcopClient();
145 const QByteArray noParamData; 145 const QByteArray noParamData;
146 const QByteArray paramData; 146 const QByteArray paramData;
147 QByteArray replyData; 147 QByteArray replyData;
148 QCString replyTypeStr; 148 QCString replyTypeStr;
149#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 149#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
150 bool foundAbbrowser = PING_ABBROWSER; 150 bool foundAbbrowser = PING_ABBROWSER;
151 151
152 if (foundAbbrowser) { 152 if (foundAbbrowser) {
153 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 153 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
154 //client->send("kaddressbook","KAddressBookIface", 154 //client->send("kaddressbook","KAddressBookIface",
155 QDataStream arg(paramData, IO_WriteOnly); 155 QDataStream arg(paramData, IO_WriteOnly);
156 arg << n.mid(6); 156 arg << n.mid(6);
157 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 157 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
158 return; 158 return;
159 } else { 159 } else {
160 /* 160 /*
161 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 161 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
162 We start it without its main interface 162 We start it without its main interface
163 */ 163 */
164 KIconLoader* iconLoader = new KIconLoader(); 164 KIconLoader* iconLoader = new KIconLoader();
165 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 165 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
166 ActionManager::setStartedKAddressBook(true); 166 ActionManager::setStartedKAddressBook(true);
167 tmpStr = "kaddressbook --editor-only --uid "; 167 tmpStr = "kaddressbook --editor-only --uid ";
168 tmpStr += KProcess::quote(n.mid(6)); 168 tmpStr += KProcess::quote(n.mid(6));
169 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 169 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
170 return; 170 return;
171 } 171 }
172 } else { 172 } else {
173 //QTextBrowser::setSource(n); 173 //QTextBrowser::setSource(n);
174 } 174 }
175#endif 175#endif
176} 176}
177 177
178void KOEventViewer::addTag(const QString & tag,const QString & text) 178void KOEventViewer::addTag(const QString & tag,const QString & text)
179{ 179{
180 int number=text.contains("\n"); 180 int number=text.contains("\n");
181 QString str = "<" + tag + ">"; 181 QString str = "<" + tag + ">";
182 QString tmpText=text; 182 QString tmpText=text;
183 QString tmpStr=str; 183 QString tmpStr=str;
184 if(number !=-1) 184 if(number !=-1)
185 { 185 {
186 if (number > 0) { 186 if (number > 0) {
187 int pos=0; 187 int pos=0;
188 QString tmp; 188 QString tmp;
189 for(int i=0;i<=number;i++) { 189 for(int i=0;i<=number;i++) {
190 pos=tmpText.find("\n"); 190 pos=tmpText.find("\n");
191 tmp=tmpText.left(pos); 191 tmp=tmpText.left(pos);
192 tmpText=tmpText.right(tmpText.length()-pos-1); 192 tmpText=tmpText.right(tmpText.length()-pos-1);
193 tmpStr+=tmp+"<br>"; 193 tmpStr+=tmp+"<br>";
194 } 194 }
195 } 195 }
196 else tmpStr += tmpText; 196 else tmpStr += tmpText;
197 tmpStr+="</" + tag + ">"; 197 tmpStr+="</" + tag + ">";
198 mText.append(tmpStr); 198 mText.append(tmpStr);
199 } 199 }
200 else 200 else
201 { 201 {
202 str += text + "</" + tag + ">"; 202 str += text + "</" + tag + ">";
203 mText.append(str); 203 mText.append(str);
204 } 204 }
205} 205}
206 206
207void KOEventViewer::setColorMode( int m ) 207void KOEventViewer::setColorMode( int m )
208{ 208{
209 mColorMode = m; 209 mColorMode = m;
210} 210}
211void KOEventViewer::appendEvent(Event *event, int mode ) 211void KOEventViewer::appendEvent(Event *event, int mode )
212{ 212{
213 mMailSubject = ""; 213 mMailSubject = "";
214 mCurrentIncidence = event; 214 mCurrentIncidence = event;
215 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 215 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
216 topLevelWidget()->setCaption(i18n("Event Viewer")); 216 topLevelWidget()->setCaption(i18n("Event Viewer"));
217 if ( mode == 0 ) { 217 if ( mode == 0 ) {
218 addTag("h2",event->summary()); 218 addTag("h2",event->summary());
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index 219f7c3..7166a01 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -1,256 +1,272 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qtextcodec.h> 22#include <qtextcodec.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qlabel.h> 24#include <qlabel.h>
25 25
26#include <qapplication.h> 26#include <qapplication.h>
27 27#ifdef DESKTOP_VERSION
28#include <qpaintdevicemetrics.h>
29#endif
28#include <kglobal.h> 30#include <kglobal.h>
29#include <klocale.h> 31#include <klocale.h>
30#include <kdebug.h> 32#include <kdebug.h>
31#include <kiconloader.h> 33#include <kiconloader.h>
32#include <kmessagebox.h> 34#include <kmessagebox.h>
33 35
34#include <libkcal/calendar.h> 36#include <libkcal/calendar.h>
35 37
36#ifndef KORG_NOPRINTER 38#ifndef KORG_NOPRINTER
37#include "calprinter.h" 39#include "calprinter.h"
38#endif 40#endif
39#include "koglobals.h" 41#include "koglobals.h"
40#include "koprefs.h" 42#include "koprefs.h"
41#include "koeventviewerdialog.h" 43#include "koeventviewerdialog.h"
42#include <qstylesheet.h> 44#include <qstylesheet.h>
43#include "kowhatsnextview.h" 45#include "kowhatsnextview.h"
44using namespace KOrg; 46using namespace KOrg;
45 47
46void WhatsNextTextBrowser::setSource(const QString& n) 48void WhatsNextTextBrowser::setSource(const QString& n)
47{ 49{
48 50
49 if (n.startsWith("event:")) { 51 if (n.startsWith("event:")) {
50 emit showIncidence(n); 52 emit showIncidence(n);
51 return; 53 return;
52 } else if (n.startsWith("todo:")) { 54 } else if (n.startsWith("todo:")) {
53 emit showIncidence(n); 55 emit showIncidence(n);
54 return; 56 return;
55 } else { 57 } else {
56 QTextBrowser::setSource(n); 58 QTextBrowser::setSource(n);
57 } 59 }
58} 60}
61void WhatsNextTextBrowser::printMe()
62{
63#ifdef DESKTOP_VERSION
64 QPrinter printer;
65 if (!printer.setup() )
66 return;
67 QPainter p;
68 p.begin ( &printer );
69 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
70 float dx, dy;
71 int wid = (m.width() * 9)/10;
72 dx = (float) wid/(float)contentsWidth ();
73 dy = (float)(m.height()) / (float)contentsHeight ();
74 float scale;
75 // scale to fit the width or height of the paper
76 if ( dx < dy )
77 scale = dx;
78 else
79 scale = dy;
80 p.translate( m.width()/10,0 );
81 p.scale( scale, scale );
82 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
83 p.end();
84#endif
85}
59 86
60KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent, 87KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent,
61 const char *name) 88 const char *name)
62 : KOrg::BaseView(calendar, parent, name) 89 : KOrg::BaseView(calendar, parent, name)
63{ 90{
64 // mDateLabel = 91 // mDateLabel =
65 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this); 92 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this);
66 // mDateLabel->setMargin(2); 93 // mDateLabel->setMargin(2);
67 // mDateLabel->setAlignment(AlignCenter); 94 // mDateLabel->setAlignment(AlignCenter);
68 setFont( KOPrefs::instance()->mWhatsNextFont ); 95 setFont( KOPrefs::instance()->mWhatsNextFont );
69 mView = new WhatsNextTextBrowser(this); 96 mView = new WhatsNextTextBrowser(this);
70 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &))); 97 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &)));
71 QStyleSheet* stsh = mView->styleSheet(); 98 QStyleSheet* stsh = mView->styleSheet();
72 QStyleSheetItem * style ; 99 QStyleSheetItem * style ;
73 style = stsh->item ("h2" ); 100 style = stsh->item ("h2" );
74 if ( style ) { 101 if ( style ) {
75 style->setMargin(QStyleSheetItem::MarginAll,0); 102 style->setMargin(QStyleSheetItem::MarginAll,0);
76 } 103 }
77 style = stsh->item ("h3" ); 104 style = stsh->item ("h3" );
78 if ( style ) { 105 if ( style ) {
79 style->setMargin(QStyleSheetItem::MarginAll,0); 106 style->setMargin(QStyleSheetItem::MarginAll,0);
80 } 107 }
81 mEventViewer = 0; 108 mEventViewer = 0;
82 109
83 QBoxLayout *topLayout = new QVBoxLayout(this); 110 QBoxLayout *topLayout = new QVBoxLayout(this);
84 // topLayout->addWidget(mDateLabel); 111 // topLayout->addWidget(mDateLabel);
85 topLayout->addWidget(mView); 112 topLayout->addWidget(mView);
86 mTimer = new QTimer( this ); 113 mTimer = new QTimer( this );
87 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView())); 114 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView()));
88 115
89 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 116 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
90 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 117 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
91} 118}
92 119
93KOWhatsNextView::~KOWhatsNextView() 120KOWhatsNextView::~KOWhatsNextView()
94{ 121{
95} 122}
96 123
97int KOWhatsNextView::maxDatesHint() 124int KOWhatsNextView::maxDatesHint()
98{ 125{
99 return 0; 126 return 0;
100} 127}
101 128
102int KOWhatsNextView::currentDateCount() 129int KOWhatsNextView::currentDateCount()
103{ 130{
104 return 0; 131 return 0;
105} 132}
106 133
107QPtrList<Incidence> KOWhatsNextView::selectedIncidences() 134QPtrList<Incidence> KOWhatsNextView::selectedIncidences()
108{ 135{
109 QPtrList<Incidence> eventList; 136 QPtrList<Incidence> eventList;
110 137
111 return eventList; 138 return eventList;
112} 139}
113 140
114void KOWhatsNextView::printMe() 141void KOWhatsNextView::printMe()
115{ 142{
116#ifdef DESKTOP_VERSION 143#ifdef DESKTOP_VERSION
117 QPrinter printer; 144 mView->printMe();
118 if (!printer.setup() )
119 return;
120 QTextBrowser tb;
121 tb.setFixedSize( 600, 4000 );
122 QPainter::redirect ( tb.viewport(), &printer );
123 updateView();
124 tb.setText( mText );
125 tb.show();
126 tb.repaint();
127 tb.hide();
128 KMessageBox::information( this, i18n("Printing What's Next View!\n\nPlease close after\nprinting is finished."));
129#endif 145#endif
130} 146}
131void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd, 147void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd,
132 const QDate &td) 148 const QDate &td)
133{ 149{
134#ifndef KORG_NOPRINTER 150#ifndef KORG_NOPRINTER
135 calPrinter->preview(CalPrinter::Day, fd, td); 151 calPrinter->preview(CalPrinter::Day, fd, td);
136#endif 152#endif
137} 153}
138void KOWhatsNextView::updateConfig() 154void KOWhatsNextView::updateConfig()
139{ 155{
140 setFont( KOPrefs::instance()->mWhatsNextFont ); 156 setFont( KOPrefs::instance()->mWhatsNextFont );
141 updateView(); 157 updateView();
142 158
143} 159}
144void KOWhatsNextView::showEvent ( QShowEvent * e ) 160void KOWhatsNextView::showEvent ( QShowEvent * e )
145{ 161{
146 //qDebug("KOWhatsNextView::showEvent "); 162 //qDebug("KOWhatsNextView::showEvent ");
147 restartTimer(); 163 restartTimer();
148 QWidget::showEvent ( e ); 164 QWidget::showEvent ( e );
149} 165}
150void KOWhatsNextView::hideEvent ( QHideEvent * e) 166void KOWhatsNextView::hideEvent ( QHideEvent * e)
151{ 167{
152 //qDebug(" KOWhatsNextView::hideEvent"); 168 //qDebug(" KOWhatsNextView::hideEvent");
153 mTimer->stop(); 169 mTimer->stop();
154 QWidget::hideEvent ( e ); 170 QWidget::hideEvent ( e );
155} 171}
156void KOWhatsNextView::restartTimer() 172void KOWhatsNextView::restartTimer()
157{ 173{
158 //qDebug("KOWhatsNextView::restartTimer() "); 174 //qDebug("KOWhatsNextView::restartTimer() ");
159 mTimer->start( 300000 ); 175 mTimer->start( 300000 );
160 //mTimer->start( 5000 ); 176 //mTimer->start( 5000 );
161} 177}
162void KOWhatsNextView::updateView() 178void KOWhatsNextView::updateView()
163{ 179{
164 if ( mTimer->isActive() ) 180 if ( mTimer->isActive() )
165 restartTimer(); 181 restartTimer();
166 //qDebug("KOWhatsNextView::updateView() "); 182 //qDebug("KOWhatsNextView::updateView() ");
167 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate())); 183 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate()));
168 KIconLoader kil("korganizer"); 184 KIconLoader kil("korganizer");
169 QString ipath;// = new QString(); 185 QString ipath;// = new QString();
170 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath); 186 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath);
171 //<big><big><strong>" + date + "</strong></big></big>\n"; 187 //<big><big><strong>" + date + "</strong></big></big>\n";
172 mText = "<table width=\"100%\">\n"; 188 mText = "<table width=\"100%\">\n";
173 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 189 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
174#ifdef DESKTOP_VERSION 190#ifdef DESKTOP_VERSION
175 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; 191 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>";
176#else 192#else
177 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 193 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
178#endif 194#endif
179 // mText += "<img src=\""; 195 // mText += "<img src=\"";
180 // mText += ipath; 196 // mText += ipath;
181 // mText += "\">"; 197 // mText += "\">";
182 mEventDate = QDate::currentDate(); 198 mEventDate = QDate::currentDate();
183#ifdef DESKTOP_VERSION 199#ifdef DESKTOP_VERSION
184 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>"; 200 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>";
185#else 201#else
186 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>"; 202 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>";
187#endif 203#endif
188 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 204 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
189 int iii; 205 int iii;
190 mTodos.clear(); 206 mTodos.clear();
191 QPtrList<Event> events; 207 QPtrList<Event> events;
192 QPtrList<Todo> todos = calendar()->todos(); 208 QPtrList<Todo> todos = calendar()->todos();
193 Todo * todo; 209 Todo * todo;
194 //mText += "<h2>" + i18n("Events: ") + "</h2>\n"; 210 //mText += "<h2>" + i18n("Events: ") + "</h2>\n";
195 int daysToShow = KOPrefs::instance()->mWhatsNextDays ; 211 int daysToShow = KOPrefs::instance()->mWhatsNextDays ;
196 bool itemAdded = false; 212 bool itemAdded = false;
197 for ( iii = 0; iii < daysToShow; ++iii ) { 213 for ( iii = 0; iii < daysToShow; ++iii ) {
198 QString date; 214 QString date;
199 itemAdded = false; 215 itemAdded = false;
200 events = calendar()->events( mEventDate, true ); 216 events = calendar()->events( mEventDate, true );
201 217
202 if ( iii == 0 ) { // today !!! 218 if ( iii == 0 ) { // today !!!
203 todo = todos.first(); 219 todo = todos.first();
204 while(todo) { 220 while(todo) {
205 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) { 221 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) {
206 if ( ! itemAdded ) { 222 if ( ! itemAdded ) {
207 appendDay ( iii, mEventDate ); 223 appendDay ( iii, mEventDate );
208 //itemAdded = true; 224 //itemAdded = true;
209 225
210 } //bool reply=false, bool notRed = true, bool appendTable = false); 226 } //bool reply=false, bool notRed = true, bool appendTable = false);
211 appendEvent(todo, false, false, !itemAdded ); 227 appendEvent(todo, false, false, !itemAdded );
212 itemAdded = true; 228 itemAdded = true;
213 } 229 }
214 todo = todos.next(); 230 todo = todos.next();
215 } 231 }
216 } 232 }
217 233
218 234
219 if (events.count() > 0) { 235 if (events.count() > 0) {
220 // mText += "<p></p>"; 236 // mText += "<p></p>";
221 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 237 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
222 // mText += "<h2>"; 238 // mText += "<h2>";
223 //mText += " <img src=\""; 239 //mText += " <img src=\"";
224 //mText += ipath; 240 //mText += ipath;
225 //mText += "\">"; 241 //mText += "\">";
226 if ( ! itemAdded ) { 242 if ( ! itemAdded ) {
227 appendDay ( iii, mEventDate ); 243 appendDay ( iii, mEventDate );
228 244
229 } 245 }
230 // for first day (iii == 0) 246 // for first day (iii == 0)
231 // we may have syncevents, or events in the past, which maybe should not be diaplayed 247 // we may have syncevents, or events in the past, which maybe should not be diaplayed
232 // for that reason we cannot append <table> in appendDay () for iii == 0 248 // for that reason we cannot append <table> in appendDay () for iii == 0
233 // we must append it in the first successful call of appendEvent() 249 // we must append it in the first successful call of appendEvent()
234 Event *ev = events.first(); 250 Event *ev = events.first();
235 while(ev) { 251 while(ev) {
236 //qDebug("+++++event append %s", ev->summary().latin1()); 252 //qDebug("+++++event append %s", ev->summary().latin1());
237 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 253 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
238 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) ) 254 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) )
239 itemAdded = true; 255 itemAdded = true;
240 } 256 }
241 ev = events.next(); 257 ev = events.next();
242 } 258 }
243 259
244 //mText += "</table>\n"; 260 //mText += "</table>\n";
245 } 261 }
246 262
247 todo = todos.first(); 263 todo = todos.first();
248 while(todo) { 264 while(todo) {
249 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 265 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
250 if ( ! itemAdded ) { 266 if ( ! itemAdded ) {
251 appendDay ( iii, mEventDate ); 267 appendDay ( iii, mEventDate );
252 //itemAdded = true; 268 //itemAdded = true;
253 } 269 }
254 appendEvent(todo, false , iii!= 0,!itemAdded); 270 appendEvent(todo, false , iii!= 0,!itemAdded);
255 itemAdded = true; 271 itemAdded = true;
256 } 272 }
diff --git a/korganizer/kowhatsnextview.h b/korganizer/kowhatsnextview.h
index 0231cf2..715037f 100644
--- a/korganizer/kowhatsnextview.h
+++ b/korganizer/kowhatsnextview.h
@@ -1,99 +1,100 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOWHATSNEXTVIEW_H 19#ifndef KOWHATSNEXTVIEW_H
20#define KOWHATSNEXTVIEW_H 20#define KOWHATSNEXTVIEW_H
21 21
22#include <qtextbrowser.h> 22#include <qtextbrowser.h>
23#include <qtimer.h> 23#include <qtimer.h>
24 24
25#include <korganizer/baseview.h> 25#include <korganizer/baseview.h>
26 26
27class QListView; 27class QListView;
28class QLabel; 28class QLabel;
29 29
30class KOEventViewerDialog; 30class KOEventViewerDialog;
31 31
32#include <qpainter.h> 32#include <qpainter.h>
33#include <qwidget.h> 33#include <qwidget.h>
34class WhatsNextTextBrowser : public QTextBrowser { 34class WhatsNextTextBrowser : public QTextBrowser {
35 Q_OBJECT 35 Q_OBJECT
36 public: 36 public:
37 WhatsNextTextBrowser(QWidget *parent) : QTextBrowser(parent) {} 37 WhatsNextTextBrowser(QWidget *parent) : QTextBrowser(parent) {};
38 38
39 void setSource(const QString &); 39 void setSource(const QString &);
40 void printMe();
40 41
41 signals: 42 signals:
42 void showIncidence(const QString &uid); 43 void showIncidence(const QString &uid);
43}; 44};
44 45
45 46
46/** 47/**
47 This class provides a view of the next events and todos 48 This class provides a view of the next events and todos
48*/ 49*/
49class KOWhatsNextView : public KOrg::BaseView 50class KOWhatsNextView : public KOrg::BaseView
50{ 51{
51 Q_OBJECT 52 Q_OBJECT
52 public: 53 public:
53 KOWhatsNextView(Calendar *calendar, QWidget *parent = 0, 54 KOWhatsNextView(Calendar *calendar, QWidget *parent = 0,
54 const char *name = 0); 55 const char *name = 0);
55 ~KOWhatsNextView(); 56 ~KOWhatsNextView();
56 57
57 virtual int maxDatesHint(); 58 virtual int maxDatesHint();
58 virtual int currentDateCount(); 59 virtual int currentDateCount();
59 void setEventViewer(KOEventViewerDialog* v ); 60 void setEventViewer(KOEventViewerDialog* v );
60 virtual QPtrList<Incidence> selectedIncidences(); 61 virtual QPtrList<Incidence> selectedIncidences();
61 DateList selectedDates() 62 DateList selectedDates()
62 {DateList q; 63 {DateList q;
63 return q;} 64 return q;}
64 virtual void printPreview(CalPrinter *calPrinter, 65 virtual void printPreview(CalPrinter *calPrinter,
65 const QDate &, const QDate &); 66 const QDate &, const QDate &);
66 67
67 public slots: 68 public slots:
68 virtual void updateView(); 69 virtual void updateView();
69 void printMe(); 70 void printMe();
70 virtual void showDates(const QDate &start, const QDate &end); 71 virtual void showDates(const QDate &start, const QDate &end);
71 virtual void showEvents(QPtrList<Event> eventList); 72 virtual void showEvents(QPtrList<Event> eventList);
72 void updateConfig(); 73 void updateConfig();
73 void changeEventDisplay(Event *, int); 74 void changeEventDisplay(Event *, int);
74 75
75 protected: 76 protected:
76 bool appendEvent(Incidence *, bool reply=false, bool notRed = true, bool appendTable = false); 77 bool appendEvent(Incidence *, bool reply=false, bool notRed = true, bool appendTable = false);
77 bool appendTodo(Incidence *, QString ind = "", bool isSub = false ); 78 bool appendTodo(Incidence *, QString ind = "", bool isSub = false );
78 void appendDay( int i, QDate date ); 79 void appendDay( int i, QDate date );
79 QDate mEventDate; 80 QDate mEventDate;
80 virtual void showEvent ( QShowEvent * ); 81 virtual void showEvent ( QShowEvent * );
81 virtual void hideEvent ( QHideEvent * ); 82 virtual void hideEvent ( QHideEvent * );
82 83
83 private slots: 84 private slots:
84 void showIncidence(const QString &); 85 void showIncidence(const QString &);
85 void restartTimer(); 86 void restartTimer();
86 87
87 88
88 private: 89 private:
89 //void createEventViewer(); 90 //void createEventViewer();
90 QTimer* mTimer; 91 QTimer* mTimer;
91 QTextBrowser *mView; 92 WhatsNextTextBrowser *mView;
92 QString mText; 93 QString mText;
93 // QLabel *mDateLabel; 94 // QLabel *mDateLabel;
94 KOEventViewerDialog *mEventViewer; 95 KOEventViewerDialog *mEventViewer;
95 96
96 QValueList<Incidence *> mTodos; 97 QValueList<Incidence *> mTodos;
97}; 98};
98 99
99#endif 100#endif