summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseeview.cpp66
-rw-r--r--kabc/addresseeview.h18
-rw-r--r--kaddressbook/kabcore.cpp7
3 files changed, 89 insertions, 2 deletions
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp
index b4717d7..487e8a5 100644
--- a/kabc/addresseeview.cpp
+++ b/kabc/addresseeview.cpp
@@ -1,161 +1,166 @@
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>
34#include <qlabel.h>
35#include <qwidget.h>
36#include <qlayout.h>
33#include <qapplication.h> 37#include <qapplication.h>
38#include <qpushbutton.h>
34 39
35 40
36#include "externalapphandler.h" 41#include "externalapphandler.h"
37#include "addresseeview.h" 42#include "addresseeview.h"
38 43
39 44
40//US #ifndef DESKTOP_VERSION 45//US #ifndef DESKTOP_VERSION
41//US #include <qtopia/qcopenvelope_qws.h> 46//US #include <qtopia/qcopenvelope_qws.h>
42//US #include <qpe/qpeapplication.h> 47//US #include <qpe/qpeapplication.h>
43//US #endif 48//US #endif
44 49
45//US static int kphoneInstalled = 0; 50//US static int kphoneInstalled = 0;
46 51
47using namespace KPIM; 52using namespace KPIM;
48 53
49AddresseeView::AddresseeView( QWidget *parent, const char *name ) 54AddresseeView::AddresseeView( QWidget *parent, const char *name )
50//US : KTextBrowser( parent, name ) 55//US : KTextBrowser( parent, name )
51 : QTextBrowser( parent, name ) 56 : QTextBrowser( parent, name )
52 57
53 58
54{ 59{
55//US setWrapPolicy( QTextEdit::AtWordBoundary ); 60//US setWrapPolicy( QTextEdit::AtWordBoundary );
56 setLinkUnderline( false ); 61 setLinkUnderline( false );
57 // setVScrollBarMode( QScrollView::AlwaysOff ); 62 // setVScrollBarMode( QScrollView::AlwaysOff );
58 //setHScrollBarMode( QScrollView::AlwaysOff ); 63 //setHScrollBarMode( QScrollView::AlwaysOff );
59 64
60//US QStyleSheet *sheet = styleSheet(); 65//US QStyleSheet *sheet = styleSheet();
61//US QStyleSheetItem *link = sheet->item( "a" ); 66//US QStyleSheetItem *link = sheet->item( "a" );
62//US link->setColor( KGlobalSettings::linkColor() ); 67//US link->setColor( KGlobalSettings::linkColor() );
63 68
64} 69}
65 70
66void AddresseeView::setSource(const QString& n) 71void AddresseeView::setSource(const QString& n)
67{ 72{
68 //qDebug("********AddresseeView::setSource %s", n.latin1()); 73 //qDebug("********AddresseeView::setSource %s", n.latin1());
69 74
70 if ( n.left( 6 ) == "mailto" ) 75 if ( n.left( 6 ) == "mailto" )
71 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); 76 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) );
72 else if ( n.left( 7 ) == "phoneto" ) 77 else if ( n.left( 7 ) == "phoneto" )
73 ExternalAppHandler::instance()->callByPhone( n.mid(8) ); 78 ExternalAppHandler::instance()->callByPhone( n.mid(8) );
74 else if ( n.left( 5 ) == "faxto" ) 79 else if ( n.left( 5 ) == "faxto" )
75 ExternalAppHandler::instance()->callByFax( n.mid(6) ); 80 ExternalAppHandler::instance()->callByFax( n.mid(6) );
76 else if ( n.left( 5 ) == "smsto" ) 81 else if ( n.left( 5 ) == "smsto" )
77 ExternalAppHandler::instance()->callBySMS( n.mid(6) ); 82 ExternalAppHandler::instance()->callBySMS( n.mid(6) );
78 else if ( n.left( 7 ) == "pagerto" ) 83 else if ( n.left( 7 ) == "pagerto" )
79 ExternalAppHandler::instance()->callByPager( n.mid(8) ); 84 ExternalAppHandler::instance()->callByPager( n.mid(8) );
80 else if ( n.left( 5 ) == "sipto" ) 85 else if ( n.left( 5 ) == "sipto" )
81 ExternalAppHandler::instance()->callBySIP( n.mid(6) ); 86 ExternalAppHandler::instance()->callBySIP( n.mid(6) );
82 87
83} 88}
84void AddresseeView::setAddressee( const KABC::Addressee& addr ) 89void AddresseeView::setAddressee( const KABC::Addressee& addr )
85{ 90{
86 ExternalAppHandler* eah = ExternalAppHandler::instance(); 91 ExternalAppHandler* eah = ExternalAppHandler::instance();
87 bool kemailAvail = eah->isEmailAppAvailable(); 92 bool kemailAvail = eah->isEmailAppAvailable();
88 bool kphoneAvail = eah->isPhoneAppAvailable(); 93 bool kphoneAvail = eah->isPhoneAppAvailable();
89 bool kfaxAvail = eah->isFaxAppAvailable(); 94 bool kfaxAvail = eah->isFaxAppAvailable();
90 bool ksmsAvail = eah->isSMSAppAvailable(); 95 bool ksmsAvail = eah->isSMSAppAvailable();
91 bool kpagerAvail = eah->isPagerAppAvailable(); 96 bool kpagerAvail = eah->isPagerAppAvailable();
92 bool ksipAvail = eah->isSIPAppAvailable(); 97 bool ksipAvail = eah->isSIPAppAvailable();
93 98
94 99
95 mAddressee = addr; 100 mAddressee = addr;
96 // clear view 101 // clear view
97 setText( QString::null ); 102 setText( QString::null );
98 103
99 if ( mAddressee.isEmpty() ) 104 if ( mAddressee.isEmpty() )
100 return; 105 return;
101 106
102 QString name = ( mAddressee.assembledName().isEmpty() ? 107 QString name = ( mAddressee.assembledName().isEmpty() ?
103 mAddressee.formattedName() : mAddressee.assembledName() ); 108 mAddressee.formattedName() : mAddressee.assembledName() );
104 109
105 QString dynamicPart; 110 QString dynamicPart;
106 111
107 QStringList emails = mAddressee.emails(); 112 QStringList emails = mAddressee.emails();
108 QStringList::ConstIterator emailIt; 113 QStringList::ConstIterator emailIt;
109 QString type = i18n( "Email" ); 114 QString type = i18n( "Email" );
110 emailIt = emails.begin(); 115 emailIt = emails.begin();
111 if ( emailIt != emails.end() ) { 116 if ( emailIt != emails.end() ) {
112 if ( kemailAvail ) { 117 if ( kemailAvail ) {
113 dynamicPart += QString( 118 dynamicPart += QString(
114 "<tr><td align=\"right\"><b>%1</b></td>" 119 "<tr><td align=\"right\"><b>%1</b></td>"
115 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 120 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
116 .arg( type ) 121 .arg( type )
117 .arg( name ) 122 .arg( name )
118 .arg( *emailIt ) 123 .arg( *emailIt )
119 .arg( *emailIt ); 124 .arg( *emailIt );
120 ++emailIt; 125 ++emailIt;
121 } else { 126 } else {
122 dynamicPart += QString( 127 dynamicPart += QString(
123 "<tr><td align=\"right\"><b>%1</b></td>" 128 "<tr><td align=\"right\"><b>%1</b></td>"
124 "<td align=\"left\">%2</td></tr>" ) 129 "<td align=\"left\">%2</td></tr>" )
125 .arg( type ) 130 .arg( type )
126 .arg( *emailIt ); 131 .arg( *emailIt );
127 ++emailIt; 132 ++emailIt;
128 } 133 }
129 } 134 }
130 if ( mAddressee.birthday().date().isValid() ) { 135 if ( mAddressee.birthday().date().isValid() ) {
131 dynamicPart += QString( 136 dynamicPart += QString(
132 "<tr><td align=\"right\"><b>%1</b></td>" 137 "<tr><td align=\"right\"><b>%1</b></td>"
133 "<td align=\"left\">%2</td></tr>" ) 138 "<td align=\"left\">%2</td></tr>" )
134 .arg( i18n ("Birthday") ) 139 .arg( i18n ("Birthday") )
135 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); 140 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) );
136 } 141 }
137 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); 142 KABC::PhoneNumber::List phones = mAddressee.phoneNumbers();
138 KABC::PhoneNumber::List::ConstIterator phoneIt; 143 KABC::PhoneNumber::List::ConstIterator phoneIt;
139 QString extension; 144 QString extension;
140 int phonetype; 145 int phonetype;
141 QString sms; 146 QString sms;
142 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { 147 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
143 phonetype = (*phoneIt).type(); 148 phonetype = (*phoneIt).type();
144 if (ksmsAvail && 149 if (ksmsAvail &&
145 ( 150 (
146 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || 151 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
147 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) 152 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
148 ) 153 )
149 ) 154 )
150 { 155 {
151 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) 156 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
152 .arg( (*phoneIt).number() ); 157 .arg( (*phoneIt).number() );
153 158
154 } 159 }
155 else 160 else
156 sms = ""; 161 sms = "";
157 162
158 extension = QString::null; 163 extension = QString::null;
159 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { 164 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
160 if (kfaxAvail) extension = "faxto:"; 165 if (kfaxAvail) extension = "faxto:";
161 } 166 }
@@ -274,128 +279,189 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr )
274 mText = ""; 279 mText = "";
275 QString picString = ""; 280 QString picString = "";
276 KABC::Picture picture = mAddressee.photo(); 281 KABC::Picture picture = mAddressee.photo();
277 bool picAvailintern = false; 282 bool picAvailintern = false;
278 bool picAvailUrl = false; 283 bool picAvailUrl = false;
279 if (! picture.undefined() ) { 284 if (! picture.undefined() ) {
280 picAvailintern = (picture.isIntern() && !picture.data().isNull()); 285 picAvailintern = (picture.isIntern() && !picture.data().isNull());
281 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); 286 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() );
282 } 287 }
283 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { 288 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) {
284 if ( picAvailintern ) { 289 if ( picAvailintern ) {
285 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); 290 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() );
286 } else { 291 } else {
287 if ( picAvailUrl ) { 292 if ( picAvailUrl ) {
288 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() )); 293 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", QPixmap( picture.url() ));
289 } else { 294 } else {
290 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) ); 295 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", KGlobal::iconLoader()->loadIcon( "package_toys", KIcon::Desktop, 128 ) );
291 } 296 }
292 } 297 }
293 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; 298 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">";
294 mText = QString::fromLatin1( 299 mText = QString::fromLatin1(
295 "<html>" 300 "<html>"
296 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color 301 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
297 "<table>" 302 "<table>"
298 "<tr>" 303 "<tr>"
299 "<td rowspan=\"3\" align=\"right\" valign=\"top\">" 304 "<td rowspan=\"3\" align=\"right\" valign=\"top\">"
300 "%3" 305 "%3"
301 "</td>" 306 "</td>"
302 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name 307 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name
303 "</tr>" 308 "</tr>"
304 "%5" // role 309 "%5" // role
305 "%6" // organization 310 "%6" // organization
306 "<td colspan=\"2\">&nbsp;</td>" 311 "<td colspan=\"2\">&nbsp;</td>"
307 "%7" // dynamic part 312 "%7" // dynamic part
308 "%8" // notes 313 "%8" // notes
309 "</table>" 314 "</table>"
310 "</body>" 315 "</body>"
311 "</html>") 316 "</html>")
312//US 317//US
313 .arg( /*KGlobalSettings::textColor().name()*/ "black" ) 318 .arg( /*KGlobalSettings::textColor().name()*/ "black" )
314//US 319//US
315 .arg( /*KGlobalSettings::baseColor().name()*/ "white" ) 320 .arg( /*KGlobalSettings::baseColor().name()*/ "white" )
316 .arg( picString ) 321 .arg( picString )
317 .arg( name ) 322 .arg( name )
318 .arg( aRole ) 323 .arg( aRole )
319 .arg( aOrga ) 324 .arg( aOrga )
320 .arg( dynamicPart ) 325 .arg( dynamicPart )
321 .arg( notes ); 326 .arg( notes );
322 327
323 } else { // no picture! 328 } else { // no picture!
324 329
325mText = "<table width=\"100%\">\n"; 330mText = "<table width=\"100%\">\n";
326 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 331 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
327#ifdef DESKTOP_VERSION 332#ifdef DESKTOP_VERSION
328 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; 333 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>";
329#else 334#else
330 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>"; 335 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>";
331#endif 336#endif
332 337
333#ifdef DESKTOP_VERSION 338#ifdef DESKTOP_VERSION
334 mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>"; 339 mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>";
335#else 340#else
336 mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>"; 341 mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>";
337#endif 342#endif
338 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 343 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
339 344
340 mText += "<table><td colspan=\"2\">&nbsp;</td>"; 345 mText += "<table><td colspan=\"2\">&nbsp;</td>";
341 /* 346 /*
342 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" 347 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>"
343 "<td align=\"left\"><b>%2</b></td></tr>" ) 348 "<td align=\"left\"><b>%2</b></td></tr>" )
344 .arg( i18n(" ") ) 349 .arg( i18n(" ") )
345 .arg( name ); 350 .arg( name );
346 */ 351 */
347 if ( ! mAddressee.role().isEmpty() ) 352 if ( ! mAddressee.role().isEmpty() )
348 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 353 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
349 "<td align=\"left\">%2</td></tr>" ) 354 "<td align=\"left\">%2</td></tr>" )
350 .arg( i18n(" ") ) 355 .arg( i18n(" ") )
351 .arg( mAddressee.role()); 356 .arg( mAddressee.role());
352 if ( ! mAddressee.organization().isEmpty() ) 357 if ( ! mAddressee.organization().isEmpty() )
353 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 358 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
354 "<td align=\"left\">%2</td></tr>" ) 359 "<td align=\"left\">%2</td></tr>" )
355 .arg( i18n(" ") ) 360 .arg( i18n(" ") )
356 .arg( mAddressee.organization()); 361 .arg( mAddressee.organization());
357 mText += dynamicPart; 362 mText += dynamicPart;
358 mText += notes; 363 mText += notes;
359 mText += "</table>"; 364 mText += "</table>";
360 365
361 } 366 }
362 367
363 // at last display it... 368 // at last display it...
364 setText( mText ); 369 setText( mText );
365 370
366} 371}
367 372
368KABC::Addressee AddresseeView::addressee() const 373KABC::Addressee AddresseeView::addressee() const
369{ 374{
370 return mAddressee; 375 return mAddressee;
371} 376}
372void AddresseeView::addTag(const QString & tag,const QString & text) 377void AddresseeView::addTag(const QString & tag,const QString & text)
373{ 378{
374 if ( text.isEmpty() ) 379 if ( text.isEmpty() )
375 return; 380 return;
376 int number=text.contains("\n"); 381 int number=text.contains("\n");
377 QString str = "<" + tag + ">"; 382 QString str = "<" + tag + ">";
378 QString tmpText=text; 383 QString tmpText=text;
379 QString tmpStr=str; 384 QString tmpStr=str;
380 if(number !=-1) 385 if(number !=-1)
381 { 386 {
382 if (number > 0) { 387 if (number > 0) {
383 int pos=0; 388 int pos=0;
384 QString tmp; 389 QString tmp;
385 for(int i=0;i<=number;i++) { 390 for(int i=0;i<=number;i++) {
386 pos=tmpText.find("\n"); 391 pos=tmpText.find("\n");
387 tmp=tmpText.left(pos); 392 tmp=tmpText.left(pos);
388 tmpText=tmpText.right(tmpText.length()-pos-1); 393 tmpText=tmpText.right(tmpText.length()-pos-1);
389 tmpStr+=tmp+"<br>"; 394 tmpStr+=tmp+"<br>";
390 } 395 }
391 } 396 }
392 else tmpStr += tmpText; 397 else tmpStr += tmpText;
393 tmpStr+="</" + tag + ">"; 398 tmpStr+="</" + tag + ">";
394 mText.append(tmpStr); 399 mText.append(tmpStr);
395 } 400 }
396 else 401 else
397 { 402 {
398 str += text + "</" + tag + ">"; 403 str += text + "</" + tag + ">";
399 mText.append(str); 404 mText.append(str);
400 } 405 }
401} 406}
407
408AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name,
409 true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false)
410{
411 findButton( Close )->setText( i18n("Cancel Sync"));
412 findButton( Ok )->setText( i18n("Remote"));
413 findButton( User1 )->setText( i18n("Local"));
414 QWidget* topframe = new QWidget( this );
415 //QVBox* topframe = new QVBox( this );
416 setMainWidget( topframe );
417 QBoxLayout* bl;
418 if ( QApplication::desktop()->width() < 640 ) {
419 bl = new QVBoxLayout( topframe );
420
421 } else {
422 bl = new QHBoxLayout( topframe );
423
424 }
425 QVBox* subframe = new QVBox( topframe );
426 bl->addWidget(subframe );
427 QLabel* lab = new QLabel( i18n("Local Addressee"), subframe );
428 AddresseeView * av = new AddresseeView( subframe );
429 av->setAddressee( loc );
430 subframe = new QVBox( topframe );
431 bl->addWidget(subframe );
432 lab = new QLabel( i18n("Remote Addressee"), subframe );
433 av = new AddresseeView( subframe );
434 av->setAddressee( rem );
435
436 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
437 SLOT(slot_remote()));
438 QObject::connect(this,SIGNAL(user1Clicked()),
439 SLOT(slot_local()));
440#ifndef DESKTOP_VERSION
441 showMaximized();
442#else
443 resize ( 640, 400 );
444#endif
445}
446
447int AddresseeChooser::executeD( bool local )
448{
449 mSyncResult = 3;
450 if ( local )
451 findButton( User1 )->setFocus();
452 else
453 findButton( Ok )->setFocus();
454 exec();
455 qDebug("returning %d ",mSyncResult );
456 return mSyncResult;
457}
458void AddresseeChooser::slot_remote()
459{
460 mSyncResult = 2;
461 accept();
462}
463void AddresseeChooser::slot_local()
464{
465 mSyncResult = 1;
466 accept();
467}
diff --git a/kabc/addresseeview.h b/kabc/addresseeview.h
index 1865fc4..689d997 100644
--- a/kabc/addresseeview.h
+++ b/kabc/addresseeview.h
@@ -1,60 +1,78 @@
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 27
27//US #include <ktextbrowser.h> 28//US #include <ktextbrowser.h>
28#include <qtextbrowser.h> 29#include <qtextbrowser.h>
29 30
30namespace KPIM { 31namespace KPIM {
31 32
32//US class AddresseeView : public KTextBrowser 33//US class AddresseeView : public KTextBrowser
33class AddresseeView : public QTextBrowser 34class AddresseeView : public QTextBrowser
34{ 35{
35 public: 36 public:
36 AddresseeView( QWidget *parent = 0, const char *name = 0 ); 37 AddresseeView( QWidget *parent = 0, const char *name = 0 );
37 38
38 /** 39 /**
39 Sets the addressee object. The addressee is displayed immediately. 40 Sets the addressee object. The addressee is displayed immediately.
40 41
41 @param addr The addressee object. 42 @param addr The addressee object.
42 */ 43 */
43 void setAddressee( const KABC::Addressee& addr ); 44 void setAddressee( const KABC::Addressee& addr );
44 void setSource(const QString& n); 45 void setSource(const QString& n);
45 /** 46 /**
46 Returns the current addressee object. 47 Returns the current addressee object.
47 */ 48 */
48 KABC::Addressee addressee() const; 49 KABC::Addressee addressee() const;
49 50
50 private: 51 private:
51 KABC::Addressee mAddressee; 52 KABC::Addressee mAddressee;
52 QString mText; 53 QString mText;
53 void addTag(const QString & tag,const QString & text); 54 void addTag(const QString & tag,const QString & text);
54 class AddresseeViewPrivate; 55 class AddresseeViewPrivate;
55 AddresseeViewPrivate *d; 56 AddresseeViewPrivate *d;
56}; 57};
58class AddresseeChooser : public KDialogBase
59{
60 Q_OBJECT
61
62 public:
63 AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 );
64
65 int executeD( bool local );
66
67 private:
68 int mSyncResult;
69
70 private slots:
71 void slot_remote();
72 void slot_local();
73
74};
57 75
58} 76}
59 77
60#endif 78#endif
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 74c10d2..b1a951c 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2527,329 +2527,332 @@ KABC::Addressee KABCore::getLastSyncAddressee()
2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2528 QString sum = ""; 2528 QString sum = "";
2529 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 2529 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
2530 sum = "E: "; 2530 sum = "E: ";
2531 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2531 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2532 lse.setRevision( mLastAddressbookSync ); 2532 lse.setRevision( mLastAddressbookSync );
2533 lse.setCategories( i18n("SyncEvent") ); 2533 lse.setCategories( i18n("SyncEvent") );
2534 mAddressBook->insertAddressee( lse ); 2534 mAddressBook->insertAddressee( lse );
2535 } 2535 }
2536 return lse; 2536 return lse;
2537} 2537}
2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2539{ 2539{
2540 2540
2541 //void setZaurusId(int id); 2541 //void setZaurusId(int id);
2542 // int zaurusId() const; 2542 // int zaurusId() const;
2543 // void setZaurusUid(int id); 2543 // void setZaurusUid(int id);
2544 // int zaurusUid() const; 2544 // int zaurusUid() const;
2545 // void setZaurusStat(int id); 2545 // void setZaurusStat(int id);
2546 // int zaurusStat() const; 2546 // int zaurusStat() const;
2547 // 0 equal 2547 // 0 equal
2548 // 1 take local 2548 // 1 take local
2549 // 2 take remote 2549 // 2 take remote
2550 // 3 cancel 2550 // 3 cancel
2551 QDateTime lastSync = mLastAddressbookSync; 2551 QDateTime lastSync = mLastAddressbookSync;
2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2553 bool remCh, locCh; 2553 bool remCh, locCh;
2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2555 //if ( remCh ) 2555 //if ( remCh )
2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2557 locCh = ( local->revision() > mLastAddressbookSync ); 2557 locCh = ( local->revision() > mLastAddressbookSync );
2558 if ( !remCh && ! locCh ) { 2558 if ( !remCh && ! locCh ) {
2559 //qDebug("both not changed "); 2559 //qDebug("both not changed ");
2560 lastSync = local->revision().addDays(1); 2560 lastSync = local->revision().addDays(1);
2561 } else { 2561 } else {
2562 if ( locCh ) { 2562 if ( locCh ) {
2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1()); 2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1());
2564 lastSync = local->revision().addDays( -1 ); 2564 lastSync = local->revision().addDays( -1 );
2565 if ( !remCh ) 2565 if ( !remCh )
2566 remote->setRevision( lastSync.addDays( -1 ) ); 2566 remote->setRevision( lastSync.addDays( -1 ) );
2567 } else { 2567 } else {
2568 //qDebug(" not loc changed "); 2568 //qDebug(" not loc changed ");
2569 lastSync = local->revision().addDays( 1 ); 2569 lastSync = local->revision().addDays( 1 );
2570 if ( remCh ) 2570 if ( remCh )
2571 remote->setRevision( lastSync.addDays( 1 ) ); 2571 remote->setRevision( lastSync.addDays( 1 ) );
2572 2572
2573 } 2573 }
2574 } 2574 }
2575 full = true; 2575 full = true;
2576 if ( mode < SYNC_PREF_ASK ) 2576 if ( mode < SYNC_PREF_ASK )
2577 mode = SYNC_PREF_ASK; 2577 mode = SYNC_PREF_ASK;
2578 } else { 2578 } else {
2579 if ( local->revision() == remote->revision() ) 2579 if ( local->revision() == remote->revision() )
2580 return 0; 2580 return 0;
2581 2581
2582 } 2582 }
2583 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 2583 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
2584 2584
2585 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 2585 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
2586 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 2586 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
2587 //full = true; //debug only 2587 //full = true; //debug only
2588 if ( full ) { 2588 if ( full ) {
2589 bool equ = ( (*local) == (*remote) ); 2589 bool equ = ( (*local) == (*remote) );
2590 if ( equ ) { 2590 if ( equ ) {
2591 //qDebug("equal "); 2591 //qDebug("equal ");
2592 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2592 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2593 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2593 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2594 } 2594 }
2595 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2595 if ( mode < SYNC_PREF_FORCE_LOCAL )
2596 return 0; 2596 return 0;
2597 2597
2598 }//else //debug only 2598 }//else //debug only
2599 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2599 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2600 } 2600 }
2601 int result; 2601 int result;
2602 bool localIsNew; 2602 bool localIsNew;
2603 //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() ); 2603 //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() );
2604 2604
2605 if ( full && mode < SYNC_PREF_NEWEST ) 2605 if ( full && mode < SYNC_PREF_NEWEST )
2606 mode = SYNC_PREF_ASK; 2606 mode = SYNC_PREF_ASK;
2607 2607
2608 switch( mode ) { 2608 switch( mode ) {
2609 case SYNC_PREF_LOCAL: 2609 case SYNC_PREF_LOCAL:
2610 if ( lastSync > remote->revision() ) 2610 if ( lastSync > remote->revision() )
2611 return 1; 2611 return 1;
2612 if ( lastSync > local->revision() ) 2612 if ( lastSync > local->revision() )
2613 return 2; 2613 return 2;
2614 return 1; 2614 return 1;
2615 break; 2615 break;
2616 case SYNC_PREF_REMOTE: 2616 case SYNC_PREF_REMOTE:
2617 if ( lastSync > remote->revision() ) 2617 if ( lastSync > remote->revision() )
2618 return 1; 2618 return 1;
2619 if ( lastSync > local->revision() ) 2619 if ( lastSync > local->revision() )
2620 return 2; 2620 return 2;
2621 return 2; 2621 return 2;
2622 break; 2622 break;
2623 case SYNC_PREF_NEWEST: 2623 case SYNC_PREF_NEWEST:
2624 if ( local->revision() > remote->revision() ) 2624 if ( local->revision() > remote->revision() )
2625 return 1; 2625 return 1;
2626 else 2626 else
2627 return 2; 2627 return 2;
2628 break; 2628 break;
2629 case SYNC_PREF_ASK: 2629 case SYNC_PREF_ASK:
2630 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() ); 2630 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2631 if ( lastSync > remote->revision() ) 2631 if ( lastSync > remote->revision() )
2632 return 1; 2632 return 1;
2633 if ( lastSync > local->revision() ) 2633 if ( lastSync > local->revision() )
2634 return 2; 2634 return 2;
2635 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() ); 2635 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2636 localIsNew = local->revision() >= remote->revision(); 2636 localIsNew = local->revision() >= remote->revision();
2637#if 0 2637#if 0
2638 if ( localIsNew ) 2638 if ( localIsNew )
2639 getEventViewerDialog()->setColorMode( 1 ); 2639 getEventViewerDialog()->setColorMode( 1 );
2640 else 2640 else
2641 getEventViewerDialog()->setColorMode( 2 ); 2641 getEventViewerDialog()->setColorMode( 2 );
2642 getEventViewerDialog()->setIncidence(local); 2642 getEventViewerDialog()->setIncidence(local);
2643 if ( localIsNew ) 2643 if ( localIsNew )
2644 getEventViewerDialog()->setColorMode( 2 ); 2644 getEventViewerDialog()->setColorMode( 2 );
2645 else 2645 else
2646 getEventViewerDialog()->setColorMode( 1 ); 2646 getEventViewerDialog()->setColorMode( 1 );
2647 getEventViewerDialog()->addIncidence(remote); 2647 getEventViewerDialog()->addIncidence(remote);
2648 getEventViewerDialog()->setColorMode( 0 ); 2648 getEventViewerDialog()->setColorMode( 0 );
2649 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 2649 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
2650 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 2650 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
2651 getEventViewerDialog()->showMe(); 2651 getEventViewerDialog()->showMe();
2652 result = getEventViewerDialog()->executeS( localIsNew ); 2652 result = getEventViewerDialog()->executeS( localIsNew );
2653#endif 2653#endif
2654 qDebug("conflict! ************************************** "); 2654 qDebug("conflict! ************************************** ");
2655 result = 1; 2655 {
2656 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2657 result = acd.executeD(localIsNew);
2656 return result; 2658 return result;
2657 2659 }
2658 break; 2660 break;
2659 case SYNC_PREF_FORCE_LOCAL: 2661 case SYNC_PREF_FORCE_LOCAL:
2660 return 1; 2662 return 1;
2661 break; 2663 break;
2662 case SYNC_PREF_FORCE_REMOTE: 2664 case SYNC_PREF_FORCE_REMOTE:
2663 return 2; 2665 return 2;
2664 break; 2666 break;
2665 2667
2666 default: 2668 default:
2667 // SYNC_PREF_TAKE_BOTH not implemented 2669 // SYNC_PREF_TAKE_BOTH not implemented
2668 break; 2670 break;
2669 } 2671 }
2670 return 0; 2672 return 0;
2671} 2673}
2672bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2674bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2673{ 2675{
2674 bool syncOK = true; 2676 bool syncOK = true;
2675 int addedAddressee = 0; 2677 int addedAddressee = 0;
2676 int addedAddresseeR = 0; 2678 int addedAddresseeR = 0;
2677 int deletedAddresseeR = 0; 2679 int deletedAddresseeR = 0;
2678 int deletedAddresseeL = 0; 2680 int deletedAddresseeL = 0;
2679 int changedLocal = 0; 2681 int changedLocal = 0;
2680 int changedRemote = 0; 2682 int changedRemote = 0;
2681 //QPtrList<Addressee> el = local->rawAddressees(); 2683 //QPtrList<Addressee> el = local->rawAddressees();
2682 Addressee addresseeR; 2684 Addressee addresseeR;
2683 QString uid; 2685 QString uid;
2684 int take; 2686 int take;
2685 Addressee addresseeL; 2687 Addressee addresseeL;
2686 Addressee addresseeRSync; 2688 Addressee addresseeRSync;
2687 Addressee addresseeLSync; 2689 Addressee addresseeLSync;
2688 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2690 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2689 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2691 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2690 bool fullDateRange = false; 2692 bool fullDateRange = false;
2691 local->resetTempSyncStat(); 2693 local->resetTempSyncStat();
2692 mLastAddressbookSync = QDateTime::currentDateTime(); 2694 mLastAddressbookSync = QDateTime::currentDateTime();
2693 QDateTime modifiedCalendar = mLastAddressbookSync;; 2695 QDateTime modifiedCalendar = mLastAddressbookSync;;
2694 addresseeLSync = getLastSyncAddressee(); 2696 addresseeLSync = getLastSyncAddressee();
2695 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2697 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2696 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2698 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2697 if ( !addresseeR.isEmpty() ) { 2699 if ( !addresseeR.isEmpty() ) {
2698 addresseeRSync = addresseeR; 2700 addresseeRSync = addresseeR;
2699 remote->removeAddressee(addresseeR ); 2701 remote->removeAddressee(addresseeR );
2700 2702
2701 } else { 2703 } else {
2702 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2704 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2703 addresseeRSync = addresseeLSync ; 2705 addresseeRSync = addresseeLSync ;
2704 } else { 2706 } else {
2705 qDebug("FULLDATE 1"); 2707 qDebug("FULLDATE 1");
2706 fullDateRange = true; 2708 fullDateRange = true;
2707 Addressee newAdd; 2709 Addressee newAdd;
2708 addresseeRSync = newAdd; 2710 addresseeRSync = newAdd;
2709 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2711 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2710 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2712 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2711 addresseeRSync.setRevision( mLastAddressbookSync ); 2713 addresseeRSync.setRevision( mLastAddressbookSync );
2712 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2714 addresseeRSync.setCategories( i18n("SyncAddressee") );
2713 } 2715 }
2714 } 2716 }
2715 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2717 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2716 qDebug("FULLDATE 2"); 2718 qDebug("FULLDATE 2");
2717 fullDateRange = true; 2719 fullDateRange = true;
2718 } 2720 }
2719 if ( ! fullDateRange ) { 2721 if ( ! fullDateRange ) {
2720 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2722 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2721 2723
2722 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2724 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2723 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2725 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2724 fullDateRange = true; 2726 fullDateRange = true;
2725 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2727 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2726 } 2728 }
2727 } 2729 }
2730 fullDateRange = true; // debug only!
2728 if ( fullDateRange ) 2731 if ( fullDateRange )
2729 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2732 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2730 else 2733 else
2731 mLastAddressbookSync = addresseeLSync.revision(); 2734 mLastAddressbookSync = addresseeLSync.revision();
2732 // for resyncing if own file has changed 2735 // for resyncing if own file has changed
2733 // PENDING fixme later when implemented 2736 // PENDING fixme later when implemented
2734#if 0 2737#if 0
2735 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2738 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2736 mLastAddressbookSync = loadedFileVersion; 2739 mLastAddressbookSync = loadedFileVersion;
2737 qDebug("setting mLastAddressbookSync "); 2740 qDebug("setting mLastAddressbookSync ");
2738 } 2741 }
2739#endif 2742#endif
2740 2743
2741 //qDebug("*************************** "); 2744 //qDebug("*************************** ");
2742 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2745 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2743 QStringList er = remote->uidList(); 2746 QStringList er = remote->uidList();
2744 Addressee inR ;//= er.first(); 2747 Addressee inR ;//= er.first();
2745 Addressee inL; 2748 Addressee inL;
2746 QProgressBar bar( er.count(),0 ); 2749 QProgressBar bar( er.count(),0 );
2747 bar.setCaption (i18n("Syncing - close to abort!") ); 2750 bar.setCaption (i18n("Syncing - close to abort!") );
2748 2751
2749 int w = 300; 2752 int w = 300;
2750 if ( QApplication::desktop()->width() < 320 ) 2753 if ( QApplication::desktop()->width() < 320 )
2751 w = 220; 2754 w = 220;
2752 int h = bar.sizeHint().height() ; 2755 int h = bar.sizeHint().height() ;
2753 int dw = QApplication::desktop()->width(); 2756 int dw = QApplication::desktop()->width();
2754 int dh = QApplication::desktop()->height(); 2757 int dh = QApplication::desktop()->height();
2755 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2758 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2756 bar.show(); 2759 bar.show();
2757 int modulo = (er.count()/10)+1; 2760 int modulo = (er.count()/10)+1;
2758 int incCounter = 0; 2761 int incCounter = 0;
2759 while ( incCounter < er.count()) { 2762 while ( incCounter < er.count()) {
2760 if ( ! bar.isVisible() ) 2763 if ( ! bar.isVisible() )
2761 return false; 2764 return false;
2762 if ( incCounter % modulo == 0 ) 2765 if ( incCounter % modulo == 0 )
2763 bar.setProgress( incCounter ); 2766 bar.setProgress( incCounter );
2764 uid = er[ incCounter ]; 2767 uid = er[ incCounter ];
2765 bool skipIncidence = false; 2768 bool skipIncidence = false;
2766 if ( uid.left(19) == QString("last-syncAddressee-") ) 2769 if ( uid.left(19) == QString("last-syncAddressee-") )
2767 skipIncidence = true; 2770 skipIncidence = true;
2768 QString idS; 2771 QString idS;
2769 qApp->processEvents(); 2772 qApp->processEvents();
2770 if ( !skipIncidence ) { 2773 if ( !skipIncidence ) {
2771 inL = local->findByUid( uid ); 2774 inL = local->findByUid( uid );
2772 inR = remote->findByUid( uid ); 2775 inR = remote->findByUid( uid );
2773 //inL.setResource( 0 ); 2776 //inL.setResource( 0 );
2774 //inR.setResource( 0 ); 2777 //inR.setResource( 0 );
2775 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2778 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2776 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { 2779 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2777 //qDebug("take %d %s ", take, inL.summary().latin1()); 2780 //qDebug("take %d %s ", take, inL.summary().latin1());
2778 if ( take == 3 ) 2781 if ( take == 3 )
2779 return false; 2782 return false;
2780 if ( take == 1 ) {// take local 2783 if ( take == 1 ) {// take local
2781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2784 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2782 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2785 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2783 local->insertAddressee( inL, false ); 2786 local->insertAddressee( inL, false );
2784 } 2787 }
2785 else 2788 else
2786 idS = inR.IDStr(); 2789 idS = inR.IDStr();
2787 remote->removeAddressee( inR ); 2790 remote->removeAddressee( inR );
2788 inR = inL; 2791 inR = inL;
2789 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2792 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2790 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 2793 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
2791 inR.setIDStr( idS ); 2794 inR.setIDStr( idS );
2792 inR.setResource( 0 ); 2795 inR.setResource( 0 );
2793 remote->insertAddressee( inR , false); 2796 remote->insertAddressee( inR , false);
2794 ++changedRemote; 2797 ++changedRemote;
2795 } else { 2798 } else {
2796 idS = inL.IDStr(); 2799 idS = inL.IDStr();
2797 local->removeAddressee( inL ); 2800 local->removeAddressee( inL );
2798 inL = inR; 2801 inL = inR;
2799 inL.setIDStr( idS ); 2802 inL.setIDStr( idS );
2800 inL.setResource( 0 ); 2803 inL.setResource( 0 );
2801 local->insertAddressee( inL , false ); 2804 local->insertAddressee( inL , false );
2802 ++changedLocal; 2805 ++changedLocal;
2803 } 2806 }
2804 } 2807 }
2805 } else { // no conflict 2808 } else { // no conflict
2806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2809 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2807 QString des = addresseeLSync.note(); 2810 QString des = addresseeLSync.note();
2808 QString pref = "a"; 2811 QString pref = "a";
2809 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2812 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2810 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2813 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2811 ++deletedAddresseeR; 2814 ++deletedAddresseeR;
2812 } else { 2815 } else {
2813 inR.setRevision( modifiedCalendar ); 2816 inR.setRevision( modifiedCalendar );
2814 remote->insertAddressee( inR, false ); 2817 remote->insertAddressee( inR, false );
2815 inL = inR; 2818 inL = inR;
2816 inL.setResource( 0 ); 2819 inL.setResource( 0 );
2817 local->insertAddressee( inL , false); 2820 local->insertAddressee( inL , false);
2818 ++addedAddressee; 2821 ++addedAddressee;
2819 } 2822 }
2820 } else { 2823 } else {
2821 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 2824 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
2822 inR.setRevision( modifiedCalendar ); 2825 inR.setRevision( modifiedCalendar );
2823 remote->insertAddressee( inR, false ); 2826 remote->insertAddressee( inR, false );
2824 inR.setResource( 0 ); 2827 inR.setResource( 0 );
2825 local->insertAddressee( inR, false ); 2828 local->insertAddressee( inR, false );
2826 ++addedAddressee; 2829 ++addedAddressee;
2827 } else { 2830 } else {
2828 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 2831 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
2829 remote->removeAddressee( inR ); 2832 remote->removeAddressee( inR );
2830 ++deletedAddresseeR; 2833 ++deletedAddresseeR;
2831 } 2834 }
2832 } 2835 }
2833 } 2836 }
2834 } 2837 }
2835 ++incCounter; 2838 ++incCounter;
2836 } 2839 }
2837 er.clear(); 2840 er.clear();
2838 QStringList el = remote->uidList(); 2841 QStringList el = remote->uidList();
2839 modulo = (el.count()/10)+1; 2842 modulo = (el.count()/10)+1;
2840 bar.setCaption (i18n("Add / remove addressees") ); 2843 bar.setCaption (i18n("Add / remove addressees") );
2841 bar.setTotalSteps ( el.count() ) ; 2844 bar.setTotalSteps ( el.count() ) ;
2842 bar.show(); 2845 bar.show();
2843 incCounter = 0; 2846 incCounter = 0;
2844 while ( incCounter < el.count()) { 2847 while ( incCounter < el.count()) {
2845 2848
2846 qApp->processEvents(); 2849 qApp->processEvents();
2847 if ( ! bar.isVisible() ) 2850 if ( ! bar.isVisible() )
2848 return false; 2851 return false;
2849 if ( incCounter % modulo == 0 ) 2852 if ( incCounter % modulo == 0 )
2850 bar.setProgress( incCounter ); 2853 bar.setProgress( incCounter );
2851 uid = el[ incCounter ]; 2854 uid = el[ incCounter ];
2852 bool skipIncidence = false; 2855 bool skipIncidence = false;
2853 if ( uid.left(19) == QString("last-syncAddressee-") ) 2856 if ( uid.left(19) == QString("last-syncAddressee-") )
2854 skipIncidence = true; 2857 skipIncidence = true;
2855 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2858 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )