summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp1
-rw-r--r--kaddressbook/views/kaddressbookcardview.cpp2
-rw-r--r--kaddressbook/views/kaddressbookiconview.cpp7
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp2
-rw-r--r--korganizer/mainwindow.cpp3
5 files changed, 12 insertions, 3 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index ed5e9c2..dc3cda1 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -1,995 +1,996 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library 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 GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28/*US 28/*US
29 29
30#include <qfile.h> 30#include <qfile.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qtimer.h> 32#include <qtimer.h>
33 33
34#include <kapplication.h> 34#include <kapplication.h>
35#include <kinstance.h> 35#include <kinstance.h>
36#include <kstandarddirs.h> 36#include <kstandarddirs.h>
37 37
38#include "errorhandler.h" 38#include "errorhandler.h"
39*/ 39*/
40#include <qptrlist.h> 40#include <qptrlist.h>
41#include <qtextstream.h> 41#include <qtextstream.h>
42#include <qfile.h> 42#include <qfile.h>
43 43
44#include <kglobal.h> 44#include <kglobal.h>
45#include <klocale.h> 45#include <klocale.h>
46#include <kmessagebox.h> 46#include <kmessagebox.h>
47#include <kdebug.h> 47#include <kdebug.h>
48#include <libkcal/syncdefines.h> 48#include <libkcal/syncdefines.h>
49#include "addressbook.h" 49#include "addressbook.h"
50#include "resource.h" 50#include "resource.h"
51#include "vcardconverter.h" 51#include "vcardconverter.h"
52#include "vcardparser/vcardtool.h" 52#include "vcardparser/vcardtool.h"
53 53
54//US #include "addressbook.moc" 54//US #include "addressbook.moc"
55 55
56using namespace KABC; 56using namespace KABC;
57 57
58struct AddressBook::AddressBookData 58struct AddressBook::AddressBookData
59{ 59{
60 Addressee::List mAddressees; 60 Addressee::List mAddressees;
61 Addressee::List mRemovedAddressees; 61 Addressee::List mRemovedAddressees;
62 Field::List mAllFields; 62 Field::List mAllFields;
63 KConfig *mConfig; 63 KConfig *mConfig;
64 KRES::Manager<Resource> *mManager; 64 KRES::Manager<Resource> *mManager;
65//US ErrorHandler *mErrorHandler; 65//US ErrorHandler *mErrorHandler;
66}; 66};
67 67
68struct AddressBook::Iterator::IteratorData 68struct AddressBook::Iterator::IteratorData
69{ 69{
70 Addressee::List::Iterator mIt; 70 Addressee::List::Iterator mIt;
71}; 71};
72 72
73struct AddressBook::ConstIterator::ConstIteratorData 73struct AddressBook::ConstIterator::ConstIteratorData
74{ 74{
75 Addressee::List::ConstIterator mIt; 75 Addressee::List::ConstIterator mIt;
76}; 76};
77 77
78AddressBook::Iterator::Iterator() 78AddressBook::Iterator::Iterator()
79{ 79{
80 d = new IteratorData; 80 d = new IteratorData;
81} 81}
82 82
83AddressBook::Iterator::Iterator( const AddressBook::Iterator &i ) 83AddressBook::Iterator::Iterator( const AddressBook::Iterator &i )
84{ 84{
85 d = new IteratorData; 85 d = new IteratorData;
86 d->mIt = i.d->mIt; 86 d->mIt = i.d->mIt;
87} 87}
88 88
89AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i ) 89AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i )
90{ 90{
91 if( this == &i ) return *this; // guard against self assignment 91 if( this == &i ) return *this; // guard against self assignment
92 delete d; // delete the old data the Iterator was completely constructed before 92 delete d; // delete the old data the Iterator was completely constructed before
93 d = new IteratorData; 93 d = new IteratorData;
94 d->mIt = i.d->mIt; 94 d->mIt = i.d->mIt;
95 return *this; 95 return *this;
96} 96}
97 97
98AddressBook::Iterator::~Iterator() 98AddressBook::Iterator::~Iterator()
99{ 99{
100 delete d; 100 delete d;
101} 101}
102 102
103const Addressee &AddressBook::Iterator::operator*() const 103const Addressee &AddressBook::Iterator::operator*() const
104{ 104{
105 return *(d->mIt); 105 return *(d->mIt);
106} 106}
107 107
108Addressee &AddressBook::Iterator::operator*() 108Addressee &AddressBook::Iterator::operator*()
109{ 109{
110 return *(d->mIt); 110 return *(d->mIt);
111} 111}
112 112
113Addressee *AddressBook::Iterator::operator->() 113Addressee *AddressBook::Iterator::operator->()
114{ 114{
115 return &(*(d->mIt)); 115 return &(*(d->mIt));
116} 116}
117 117
118AddressBook::Iterator &AddressBook::Iterator::operator++() 118AddressBook::Iterator &AddressBook::Iterator::operator++()
119{ 119{
120 (d->mIt)++; 120 (d->mIt)++;
121 return *this; 121 return *this;
122} 122}
123 123
124AddressBook::Iterator &AddressBook::Iterator::operator++(int) 124AddressBook::Iterator &AddressBook::Iterator::operator++(int)
125{ 125{
126 (d->mIt)++; 126 (d->mIt)++;
127 return *this; 127 return *this;
128} 128}
129 129
130AddressBook::Iterator &AddressBook::Iterator::operator--() 130AddressBook::Iterator &AddressBook::Iterator::operator--()
131{ 131{
132 (d->mIt)--; 132 (d->mIt)--;
133 return *this; 133 return *this;
134} 134}
135 135
136AddressBook::Iterator &AddressBook::Iterator::operator--(int) 136AddressBook::Iterator &AddressBook::Iterator::operator--(int)
137{ 137{
138 (d->mIt)--; 138 (d->mIt)--;
139 return *this; 139 return *this;
140} 140}
141 141
142bool AddressBook::Iterator::operator==( const Iterator &it ) 142bool AddressBook::Iterator::operator==( const Iterator &it )
143{ 143{
144 return ( d->mIt == it.d->mIt ); 144 return ( d->mIt == it.d->mIt );
145} 145}
146 146
147bool AddressBook::Iterator::operator!=( const Iterator &it ) 147bool AddressBook::Iterator::operator!=( const Iterator &it )
148{ 148{
149 return ( d->mIt != it.d->mIt ); 149 return ( d->mIt != it.d->mIt );
150} 150}
151 151
152 152
153AddressBook::ConstIterator::ConstIterator() 153AddressBook::ConstIterator::ConstIterator()
154{ 154{
155 d = new ConstIteratorData; 155 d = new ConstIteratorData;
156} 156}
157 157
158AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i ) 158AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i )
159{ 159{
160 d = new ConstIteratorData; 160 d = new ConstIteratorData;
161 d->mIt = i.d->mIt; 161 d->mIt = i.d->mIt;
162} 162}
163 163
164AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i ) 164AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i )
165{ 165{
166 if( this == &i ) return *this; // guard for self assignment 166 if( this == &i ) return *this; // guard for self assignment
167 delete d; // delete the old data because the Iterator was really constructed before 167 delete d; // delete the old data because the Iterator was really constructed before
168 d = new ConstIteratorData; 168 d = new ConstIteratorData;
169 d->mIt = i.d->mIt; 169 d->mIt = i.d->mIt;
170 return *this; 170 return *this;
171} 171}
172 172
173AddressBook::ConstIterator::~ConstIterator() 173AddressBook::ConstIterator::~ConstIterator()
174{ 174{
175 delete d; 175 delete d;
176} 176}
177 177
178const Addressee &AddressBook::ConstIterator::operator*() const 178const Addressee &AddressBook::ConstIterator::operator*() const
179{ 179{
180 return *(d->mIt); 180 return *(d->mIt);
181} 181}
182 182
183const Addressee* AddressBook::ConstIterator::operator->() const 183const Addressee* AddressBook::ConstIterator::operator->() const
184{ 184{
185 return &(*(d->mIt)); 185 return &(*(d->mIt));
186} 186}
187 187
188AddressBook::ConstIterator &AddressBook::ConstIterator::operator++() 188AddressBook::ConstIterator &AddressBook::ConstIterator::operator++()
189{ 189{
190 (d->mIt)++; 190 (d->mIt)++;
191 return *this; 191 return *this;
192} 192}
193 193
194AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int) 194AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int)
195{ 195{
196 (d->mIt)++; 196 (d->mIt)++;
197 return *this; 197 return *this;
198} 198}
199 199
200AddressBook::ConstIterator &AddressBook::ConstIterator::operator--() 200AddressBook::ConstIterator &AddressBook::ConstIterator::operator--()
201{ 201{
202 (d->mIt)--; 202 (d->mIt)--;
203 return *this; 203 return *this;
204} 204}
205 205
206AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int) 206AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int)
207{ 207{
208 (d->mIt)--; 208 (d->mIt)--;
209 return *this; 209 return *this;
210} 210}
211 211
212bool AddressBook::ConstIterator::operator==( const ConstIterator &it ) 212bool AddressBook::ConstIterator::operator==( const ConstIterator &it )
213{ 213{
214 return ( d->mIt == it.d->mIt ); 214 return ( d->mIt == it.d->mIt );
215} 215}
216 216
217bool AddressBook::ConstIterator::operator!=( const ConstIterator &it ) 217bool AddressBook::ConstIterator::operator!=( const ConstIterator &it )
218{ 218{
219 return ( d->mIt != it.d->mIt ); 219 return ( d->mIt != it.d->mIt );
220} 220}
221 221
222 222
223AddressBook::AddressBook() 223AddressBook::AddressBook()
224{ 224{
225 init(0, "contact"); 225 init(0, "contact");
226} 226}
227 227
228AddressBook::AddressBook( const QString &config ) 228AddressBook::AddressBook( const QString &config )
229{ 229{
230 init(config, "contact"); 230 init(config, "contact");
231} 231}
232 232
233AddressBook::AddressBook( const QString &config, const QString &family ) 233AddressBook::AddressBook( const QString &config, const QString &family )
234{ 234{
235 init(config, family); 235 init(config, family);
236 236
237} 237}
238 238
239// the default family is "contact" 239// the default family is "contact"
240void AddressBook::init(const QString &config, const QString &family ) 240void AddressBook::init(const QString &config, const QString &family )
241{ 241{
242 blockLSEchange = false; 242 blockLSEchange = false;
243 d = new AddressBookData; 243 d = new AddressBookData;
244 QString fami = family; 244 QString fami = family;
245 if (config != 0) { 245 if (config != 0) {
246 if ( family == "syncContact" ) { 246 if ( family == "syncContact" ) {
247 qDebug("creating sync config "); 247 qDebug("creating sync config ");
248 fami = "contact"; 248 fami = "contact";
249 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") ); 249 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") );
250 con->setGroup( "General" ); 250 con->setGroup( "General" );
251 con->writeEntry( "ResourceKeys", QString("sync") ); 251 con->writeEntry( "ResourceKeys", QString("sync") );
252 con->writeEntry( "Standard", QString("sync") ); 252 con->writeEntry( "Standard", QString("sync") );
253 con->setGroup( "Resource_sync" ); 253 con->setGroup( "Resource_sync" );
254 con->writeEntry( "FileName", config ); 254 con->writeEntry( "FileName", config );
255 con->writeEntry( "FileFormat", QString("vcard") ); 255 con->writeEntry( "FileFormat", QString("vcard") );
256 con->writeEntry( "ResourceIdentifier", QString("sync") ); 256 con->writeEntry( "ResourceIdentifier", QString("sync") );
257 con->writeEntry( "ResourceName", QString("sync_res") ); 257 con->writeEntry( "ResourceName", QString("sync_res") );
258 if ( config.right(4) == ".xml" ) 258 if ( config.right(4) == ".xml" )
259 con->writeEntry( "ResourceType", QString("qtopia") ); 259 con->writeEntry( "ResourceType", QString("qtopia") );
260 else if ( config == "sharp" ) { 260 else if ( config == "sharp" ) {
261 con->writeEntry( "ResourceType", QString("sharp") ); 261 con->writeEntry( "ResourceType", QString("sharp") );
262 } else { 262 } else {
263 con->writeEntry( "ResourceType", QString("file") ); 263 con->writeEntry( "ResourceType", QString("file") );
264 } 264 }
265 //con->sync(); 265 //con->sync();
266 d->mConfig = con; 266 d->mConfig = con;
267 } 267 }
268 else 268 else
269 d->mConfig = new KConfig( locateLocal("config", config) ); 269 d->mConfig = new KConfig( locateLocal("config", config) );
270// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 270// qDebug("AddressBook::init 1 config=%s",config.latin1() );
271 } 271 }
272 else { 272 else {
273 d->mConfig = 0; 273 d->mConfig = 0;
274// qDebug("AddressBook::init 1 config=0"); 274// qDebug("AddressBook::init 1 config=0");
275 } 275 }
276 276
277//US d->mErrorHandler = 0; 277//US d->mErrorHandler = 0;
278 d->mManager = new KRES::Manager<Resource>( fami, false ); 278 d->mManager = new KRES::Manager<Resource>( fami, false );
279 d->mManager->readConfig( d->mConfig ); 279 d->mManager->readConfig( d->mConfig );
280 if ( family == "syncContact" ) { 280 if ( family == "syncContact" ) {
281 KRES::Manager<Resource> *manager = d->mManager; 281 KRES::Manager<Resource> *manager = d->mManager;
282 KRES::Manager<Resource>::ActiveIterator it; 282 KRES::Manager<Resource>::ActiveIterator it;
283 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 283 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
284 (*it)->setAddressBook( this ); 284 (*it)->setAddressBook( this );
285 if ( !(*it)->open() ) 285 if ( !(*it)->open() )
286 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 286 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
287 } 287 }
288 Resource *res = standardResource(); 288 Resource *res = standardResource();
289 if ( !res ) { 289 if ( !res ) {
290 qDebug("ERROR: no standard resource"); 290 qDebug("ERROR: no standard resource");
291 res = manager->createResource( "file" ); 291 res = manager->createResource( "file" );
292 if ( res ) 292 if ( res )
293 { 293 {
294 addResource( res ); 294 addResource( res );
295 } 295 }
296 else 296 else
297 qDebug(" No resource available!!!"); 297 qDebug(" No resource available!!!");
298 } 298 }
299 setStandardResource( res ); 299 setStandardResource( res );
300 manager->writeConfig(); 300 manager->writeConfig();
301 } 301 }
302 addCustomField( i18n( "Department" ), KABC::Field::Organization, 302 addCustomField( i18n( "Department" ), KABC::Field::Organization,
303 "X-Department", "KADDRESSBOOK" ); 303 "X-Department", "KADDRESSBOOK" );
304 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 304 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
305 "X-Profession", "KADDRESSBOOK" ); 305 "X-Profession", "KADDRESSBOOK" );
306 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 306 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
307 "X-AssistantsName", "KADDRESSBOOK" ); 307 "X-AssistantsName", "KADDRESSBOOK" );
308 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 308 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
309 "X-ManagersName", "KADDRESSBOOK" ); 309 "X-ManagersName", "KADDRESSBOOK" );
310 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 310 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
311 "X-SpousesName", "KADDRESSBOOK" ); 311 "X-SpousesName", "KADDRESSBOOK" );
312 addCustomField( i18n( "Office" ), KABC::Field::Personal, 312 addCustomField( i18n( "Office" ), KABC::Field::Personal,
313 "X-Office", "KADDRESSBOOK" ); 313 "X-Office", "KADDRESSBOOK" );
314 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 314 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
315 "X-IMAddress", "KADDRESSBOOK" ); 315 "X-IMAddress", "KADDRESSBOOK" );
316 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 316 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
317 "X-Anniversary", "KADDRESSBOOK" ); 317 "X-Anniversary", "KADDRESSBOOK" );
318 318
319 //US added this field to become compatible with Opie/qtopia addressbook 319 //US added this field to become compatible with Opie/qtopia addressbook
320 // values can be "female" or "male" or "". An empty field represents undefined. 320 // values can be "female" or "male" or "". An empty field represents undefined.
321 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 321 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
322 "X-Gender", "KADDRESSBOOK" ); 322 "X-Gender", "KADDRESSBOOK" );
323 addCustomField( i18n( "Children" ), KABC::Field::Personal, 323 addCustomField( i18n( "Children" ), KABC::Field::Personal,
324 "X-Children", "KADDRESSBOOK" ); 324 "X-Children", "KADDRESSBOOK" );
325 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 325 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
326 "X-FreeBusyUrl", "KADDRESSBOOK" ); 326 "X-FreeBusyUrl", "KADDRESSBOOK" );
327 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 327 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
328 "X-ExternalID", "KADDRESSBOOK" ); 328 "X-ExternalID", "KADDRESSBOOK" );
329} 329}
330 330
331AddressBook::~AddressBook() 331AddressBook::~AddressBook()
332{ 332{
333 delete d->mConfig; d->mConfig = 0; 333 delete d->mConfig; d->mConfig = 0;
334 delete d->mManager; d->mManager = 0; 334 delete d->mManager; d->mManager = 0;
335//US delete d->mErrorHandler; d->mErrorHandler = 0; 335//US delete d->mErrorHandler; d->mErrorHandler = 0;
336 delete d; d = 0; 336 delete d; d = 0;
337} 337}
338 338
339bool AddressBook::load() 339bool AddressBook::load()
340{ 340{
341 341
342 342
343 clear(); 343 clear();
344 344
345 KRES::Manager<Resource>::ActiveIterator it; 345 KRES::Manager<Resource>::ActiveIterator it;
346 bool ok = true; 346 bool ok = true;
347 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 347 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
348 if ( !(*it)->load() ) { 348 if ( !(*it)->load() ) {
349 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 349 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
350 ok = false; 350 ok = false;
351 } 351 }
352 352
353 // mark all addressees as unchanged 353 // mark all addressees as unchanged
354 Addressee::List::Iterator addrIt; 354 Addressee::List::Iterator addrIt;
355 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) { 355 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
356 (*addrIt).setChanged( false ); 356 (*addrIt).setChanged( false );
357 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" ); 357 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
358 if ( !id.isEmpty() ) { 358 if ( !id.isEmpty() ) {
359 //qDebug("setId aa %s ", id.latin1()); 359 //qDebug("setId aa %s ", id.latin1());
360 (*addrIt).setIDStr(id ); 360 (*addrIt).setIDStr(id );
361 } 361 }
362 } 362 }
363 blockLSEchange = true; 363 blockLSEchange = true;
364 return ok; 364 return ok;
365} 365}
366 366
367bool AddressBook::save( Ticket *ticket ) 367bool AddressBook::save( Ticket *ticket )
368{ 368{
369 kdDebug(5700) << "AddressBook::save()"<< endl; 369 kdDebug(5700) << "AddressBook::save()"<< endl;
370 370
371 if ( ticket->resource() ) { 371 if ( ticket->resource() ) {
372 deleteRemovedAddressees(); 372 deleteRemovedAddressees();
373 return ticket->resource()->save( ticket ); 373 return ticket->resource()->save( ticket );
374 } 374 }
375 375
376 return false; 376 return false;
377} 377}
378void AddressBook::export2File( QString fileName ) 378void AddressBook::export2File( QString fileName )
379{ 379{
380 380
381 QFile outFile( fileName ); 381 QFile outFile( fileName );
382 if ( !outFile.open( IO_WriteOnly ) ) { 382 if ( !outFile.open( IO_WriteOnly ) ) {
383 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); 383 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" );
384 KMessageBox::error( 0, text.arg( fileName ) ); 384 KMessageBox::error( 0, text.arg( fileName ) );
385 return ; 385 return ;
386 } 386 }
387 QTextStream t( &outFile ); 387 QTextStream t( &outFile );
388 t.setEncoding( QTextStream::UnicodeUTF8 ); 388 t.setEncoding( QTextStream::UnicodeUTF8 );
389 Iterator it; 389 Iterator it;
390 KABC::VCardConverter::Version version; 390 KABC::VCardConverter::Version version;
391 version = KABC::VCardConverter::v3_0; 391 version = KABC::VCardConverter::v3_0;
392 for ( it = begin(); it != end(); ++it ) { 392 for ( it = begin(); it != end(); ++it ) {
393 if ( !(*it).IDStr().isEmpty() ) { 393 if ( !(*it).IDStr().isEmpty() ) {
394 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() ); 394 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() );
395 } 395 }
396 KABC::VCardConverter converter; 396 KABC::VCardConverter converter;
397 QString vcard; 397 QString vcard;
398 //Resource *resource() const; 398 //Resource *resource() const;
399 converter.addresseeToVCard( *it, vcard, version ); 399 converter.addresseeToVCard( *it, vcard, version );
400 t << vcard << "\r\n"; 400 t << vcard << "\r\n";
401 } 401 }
402 t << "\r\n\r\n";
402 outFile.close(); 403 outFile.close();
403} 404}
404void AddressBook::importFromFile( QString fileName ) 405void AddressBook::importFromFile( QString fileName )
405{ 406{
406 407
407 KABC::Addressee::List list; 408 KABC::Addressee::List list;
408 QFile file( fileName ); 409 QFile file( fileName );
409 410
410 file.open( IO_ReadOnly ); 411 file.open( IO_ReadOnly );
411 QByteArray rawData = file.readAll(); 412 QByteArray rawData = file.readAll();
412 file.close(); 413 file.close();
413 414
414 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 415 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
415 KABC::VCardTool tool; 416 KABC::VCardTool tool;
416 list = tool.parseVCards( data ); 417 list = tool.parseVCards( data );
417 KABC::Addressee::List::Iterator it; 418 KABC::Addressee::List::Iterator it;
418 for ( it = list.begin(); it != list.end(); ++it ) { 419 for ( it = list.begin(); it != list.end(); ++it ) {
419 (*it).setResource( 0 ); 420 (*it).setResource( 0 );
420 insertAddressee( (*it), false, true ); 421 insertAddressee( (*it), false, true );
421 } 422 }
422 423
423} 424}
424 425
425bool AddressBook::saveAB() 426bool AddressBook::saveAB()
426{ 427{
427 bool ok = true; 428 bool ok = true;
428 429
429 deleteRemovedAddressees(); 430 deleteRemovedAddressees();
430 Iterator ait; 431 Iterator ait;
431 for ( ait = begin(); ait != end(); ++ait ) { 432 for ( ait = begin(); ait != end(); ++ait ) {
432 if ( !(*ait).IDStr().isEmpty() ) { 433 if ( !(*ait).IDStr().isEmpty() ) {
433 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() ); 434 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
434 } 435 }
435 } 436 }
436 KRES::Manager<Resource>::ActiveIterator it; 437 KRES::Manager<Resource>::ActiveIterator it;
437 KRES::Manager<Resource> *manager = d->mManager; 438 KRES::Manager<Resource> *manager = d->mManager;
438 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 439 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
439 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 440 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
440 Ticket *ticket = requestSaveTicket( *it ); 441 Ticket *ticket = requestSaveTicket( *it );
441// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 442// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
442 if ( !ticket ) { 443 if ( !ticket ) {
443 error( i18n( "Unable to save to resource '%1'. It is locked." ) 444 error( i18n( "Unable to save to resource '%1'. It is locked." )
444 .arg( (*it)->resourceName() ) ); 445 .arg( (*it)->resourceName() ) );
445 return false; 446 return false;
446 } 447 }
447 448
448 //if ( !save( ticket ) ) 449 //if ( !save( ticket ) )
449 if ( ticket->resource() ) { 450 if ( ticket->resource() ) {
450 if ( ! ticket->resource()->save( ticket ) ) 451 if ( ! ticket->resource()->save( ticket ) )
451 ok = false; 452 ok = false;
452 } else 453 } else
453 ok = false; 454 ok = false;
454 455
455 } 456 }
456 } 457 }
457 return ok; 458 return ok;
458} 459}
459 460
460AddressBook::Iterator AddressBook::begin() 461AddressBook::Iterator AddressBook::begin()
461{ 462{
462 Iterator it = Iterator(); 463 Iterator it = Iterator();
463 it.d->mIt = d->mAddressees.begin(); 464 it.d->mIt = d->mAddressees.begin();
464 return it; 465 return it;
465} 466}
466 467
467AddressBook::ConstIterator AddressBook::begin() const 468AddressBook::ConstIterator AddressBook::begin() const
468{ 469{
469 ConstIterator it = ConstIterator(); 470 ConstIterator it = ConstIterator();
470 it.d->mIt = d->mAddressees.begin(); 471 it.d->mIt = d->mAddressees.begin();
471 return it; 472 return it;
472} 473}
473 474
474AddressBook::Iterator AddressBook::end() 475AddressBook::Iterator AddressBook::end()
475{ 476{
476 Iterator it = Iterator(); 477 Iterator it = Iterator();
477 it.d->mIt = d->mAddressees.end(); 478 it.d->mIt = d->mAddressees.end();
478 return it; 479 return it;
479} 480}
480 481
481AddressBook::ConstIterator AddressBook::end() const 482AddressBook::ConstIterator AddressBook::end() const
482{ 483{
483 ConstIterator it = ConstIterator(); 484 ConstIterator it = ConstIterator();
484 it.d->mIt = d->mAddressees.end(); 485 it.d->mIt = d->mAddressees.end();
485 return it; 486 return it;
486} 487}
487 488
488void AddressBook::clear() 489void AddressBook::clear()
489{ 490{
490 d->mAddressees.clear(); 491 d->mAddressees.clear();
491} 492}
492 493
493Ticket *AddressBook::requestSaveTicket( Resource *resource ) 494Ticket *AddressBook::requestSaveTicket( Resource *resource )
494{ 495{
495 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 496 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
496 497
497 if ( !resource ) 498 if ( !resource )
498 { 499 {
499 qDebug("AddressBook::requestSaveTicket no resource" ); 500 qDebug("AddressBook::requestSaveTicket no resource" );
500 resource = standardResource(); 501 resource = standardResource();
501 } 502 }
502 503
503 KRES::Manager<Resource>::ActiveIterator it; 504 KRES::Manager<Resource>::ActiveIterator it;
504 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 505 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
505 if ( (*it) == resource ) { 506 if ( (*it) == resource ) {
506 if ( (*it)->readOnly() || !(*it)->isOpen() ) 507 if ( (*it)->readOnly() || !(*it)->isOpen() )
507 return 0; 508 return 0;
508 else 509 else
509 return (*it)->requestSaveTicket(); 510 return (*it)->requestSaveTicket();
510 } 511 }
511 } 512 }
512 513
513 return 0; 514 return 0;
514} 515}
515 516
516void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeResource ) 517void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeResource )
517{ 518{
518 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { 519 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) {
519 //qDebug("block insert "); 520 //qDebug("block insert ");
520 return; 521 return;
521 } 522 }
522 //qDebug("inserting.... %s ",a.uid().latin1() ); 523 //qDebug("inserting.... %s ",a.uid().latin1() );
523 bool found = false; 524 bool found = false;
524 Addressee::List::Iterator it; 525 Addressee::List::Iterator it;
525 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 526 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
526 if ( a.uid() == (*it).uid() ) { 527 if ( a.uid() == (*it).uid() ) {
527 528
528 bool changed = false; 529 bool changed = false;
529 Addressee addr = a; 530 Addressee addr = a;
530 if ( addr != (*it) ) 531 if ( addr != (*it) )
531 changed = true; 532 changed = true;
532 533
533 if ( takeResource ) { 534 if ( takeResource ) {
534 Resource * res = (*it).resource(); 535 Resource * res = (*it).resource();
535 (*it) = a; 536 (*it) = a;
536 (*it).setResource( res ); 537 (*it).setResource( res );
537 } else { 538 } else {
538 (*it) = a; 539 (*it) = a;
539 if ( (*it).resource() == 0 ) 540 if ( (*it).resource() == 0 )
540 (*it).setResource( standardResource() ); 541 (*it).setResource( standardResource() );
541 } 542 }
542 if ( changed ) { 543 if ( changed ) {
543 if ( setRev ) { 544 if ( setRev ) {
544 545
545 // get rid of micro seconds 546 // get rid of micro seconds
546 QDateTime dt = QDateTime::currentDateTime(); 547 QDateTime dt = QDateTime::currentDateTime();
547 QTime t = dt.time(); 548 QTime t = dt.time();
548 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 549 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
549 (*it).setRevision( dt ); 550 (*it).setRevision( dt );
550 } 551 }
551 (*it).setChanged( true ); 552 (*it).setChanged( true );
552 } 553 }
553 554
554 found = true; 555 found = true;
555 } else { 556 } else {
556 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 557 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
557 QString name = (*it).uid().mid( 19 ); 558 QString name = (*it).uid().mid( 19 );
558 Addressee b = a; 559 Addressee b = a;
559 QString id = b.getID( name ); 560 QString id = b.getID( name );
560 if ( ! id.isEmpty() ) { 561 if ( ! id.isEmpty() ) {
561 QString des = (*it).note(); 562 QString des = (*it).note();
562 int startN; 563 int startN;
563 if( (startN = des.find( id ) ) >= 0 ) { 564 if( (startN = des.find( id ) ) >= 0 ) {
564 int endN = des.find( ",", startN+1 ); 565 int endN = des.find( ",", startN+1 );
565 des = des.left( startN ) + des.mid( endN+1 ); 566 des = des.left( startN ) + des.mid( endN+1 );
566 (*it).setNote( des ); 567 (*it).setNote( des );
567 } 568 }
568 } 569 }
569 } 570 }
570 } 571 }
571 } 572 }
572 if ( found ) 573 if ( found )
573 return; 574 return;
574 d->mAddressees.append( a ); 575 d->mAddressees.append( a );
575 Addressee& addr = d->mAddressees.last(); 576 Addressee& addr = d->mAddressees.last();
576 if ( addr.resource() == 0 ) 577 if ( addr.resource() == 0 )
577 addr.setResource( standardResource() ); 578 addr.setResource( standardResource() );
578 579
579 addr.setChanged( true ); 580 addr.setChanged( true );
580} 581}
581 582
582void AddressBook::removeAddressee( const Addressee &a ) 583void AddressBook::removeAddressee( const Addressee &a )
583{ 584{
584 Iterator it; 585 Iterator it;
585 Iterator it2; 586 Iterator it2;
586 bool found = false; 587 bool found = false;
587 for ( it = begin(); it != end(); ++it ) { 588 for ( it = begin(); it != end(); ++it ) {
588 if ( a.uid() == (*it).uid() ) { 589 if ( a.uid() == (*it).uid() ) {
589 found = true; 590 found = true;
590 it2 = it; 591 it2 = it;
591 } else { 592 } else {
592 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 593 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
593 QString name = (*it).uid().mid( 19 ); 594 QString name = (*it).uid().mid( 19 );
594 Addressee b = a; 595 Addressee b = a;
595 QString id = b.getID( name ); 596 QString id = b.getID( name );
596 if ( ! id.isEmpty() ) { 597 if ( ! id.isEmpty() ) {
597 QString des = (*it).note(); 598 QString des = (*it).note();
598 if( des.find( id ) < 0 ) { 599 if( des.find( id ) < 0 ) {
599 des += id + ","; 600 des += id + ",";
600 (*it).setNote( des ); 601 (*it).setNote( des );
601 } 602 }
602 } 603 }
603 } 604 }
604 605
605 } 606 }
606 } 607 }
607 608
608 if ( found ) 609 if ( found )
609 removeAddressee( it2 ); 610 removeAddressee( it2 );
610 611
611} 612}
612 613
613void AddressBook::removeSyncAddressees( bool removeDeleted ) 614void AddressBook::removeSyncAddressees( bool removeDeleted )
614{ 615{
615 Iterator it = begin(); 616 Iterator it = begin();
616 Iterator it2 ; 617 Iterator it2 ;
617 QDateTime dt ( QDate( 2004,1,1) ); 618 QDateTime dt ( QDate( 2004,1,1) );
618 while ( it != end() ) { 619 while ( it != end() ) {
619 (*it).setRevision( dt ); 620 (*it).setRevision( dt );
620 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); 621 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
621 (*it).setIDStr(""); 622 (*it).setIDStr("");
622 if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { 623 if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
623 it2 = it; 624 it2 = it;
624 //qDebug("removing %s ",(*it).uid().latin1() ); 625 //qDebug("removing %s ",(*it).uid().latin1() );
625 ++it; 626 ++it;
626 removeAddressee( it2 ); 627 removeAddressee( it2 );
627 } else { 628 } else {
628 //qDebug("skipping %s ",(*it).uid().latin1() ); 629 //qDebug("skipping %s ",(*it).uid().latin1() );
629 ++it; 630 ++it;
630 } 631 }
631 } 632 }
632 deleteRemovedAddressees(); 633 deleteRemovedAddressees();
633} 634}
634 635
635void AddressBook::removeAddressee( const Iterator &it ) 636void AddressBook::removeAddressee( const Iterator &it )
636{ 637{
637 d->mRemovedAddressees.append( (*it) ); 638 d->mRemovedAddressees.append( (*it) );
638 d->mAddressees.remove( it.d->mIt ); 639 d->mAddressees.remove( it.d->mIt );
639} 640}
640 641
641AddressBook::Iterator AddressBook::find( const Addressee &a ) 642AddressBook::Iterator AddressBook::find( const Addressee &a )
642{ 643{
643 Iterator it; 644 Iterator it;
644 for ( it = begin(); it != end(); ++it ) { 645 for ( it = begin(); it != end(); ++it ) {
645 if ( a.uid() == (*it).uid() ) { 646 if ( a.uid() == (*it).uid() ) {
646 return it; 647 return it;
647 } 648 }
648 } 649 }
649 return end(); 650 return end();
650} 651}
651 652
652Addressee AddressBook::findByUid( const QString &uid ) 653Addressee AddressBook::findByUid( const QString &uid )
653{ 654{
654 Iterator it; 655 Iterator it;
655 for ( it = begin(); it != end(); ++it ) { 656 for ( it = begin(); it != end(); ++it ) {
656 if ( uid == (*it).uid() ) { 657 if ( uid == (*it).uid() ) {
657 return *it; 658 return *it;
658 } 659 }
659 } 660 }
660 return Addressee(); 661 return Addressee();
661} 662}
662void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) 663void AddressBook::preExternSync( AddressBook* aBook, const QString& csd )
663{ 664{
664 //qDebug("AddressBook::preExternSync "); 665 //qDebug("AddressBook::preExternSync ");
665 AddressBook::Iterator it; 666 AddressBook::Iterator it;
666 for ( it = begin(); it != end(); ++it ) { 667 for ( it = begin(); it != end(); ++it ) {
667 (*it).setID( csd, (*it).externalUID() ); 668 (*it).setID( csd, (*it).externalUID() );
668 (*it).computeCsum( csd ); 669 (*it).computeCsum( csd );
669 } 670 }
670 mergeAB( aBook ,csd ); 671 mergeAB( aBook ,csd );
671} 672}
672void AddressBook::postExternSync( AddressBook* aBook , const QString& csd) 673void AddressBook::postExternSync( AddressBook* aBook , const QString& csd)
673{ 674{
674 //qDebug("AddressBook::postExternSync "); 675 //qDebug("AddressBook::postExternSync ");
675 AddressBook::Iterator it; 676 AddressBook::Iterator it;
676 for ( it = begin(); it != end(); ++it ) { 677 for ( it = begin(); it != end(); ++it ) {
677 // qDebug("check uid %s ", (*it).uid().latin1() ); 678 // qDebug("check uid %s ", (*it).uid().latin1() );
678 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || 679 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
679 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) { 680 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) {
680 Addressee ad = aBook->findByUid( ( (*it).uid() )); 681 Addressee ad = aBook->findByUid( ( (*it).uid() ));
681 if ( ad.isEmpty() ) { 682 if ( ad.isEmpty() ) {
682 qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1()); 683 qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1());
683 } else { 684 } else {
684 (*it).computeCsum( csd ); 685 (*it).computeCsum( csd );
685 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) 686 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
686 ad.setID( csd, (*it).externalUID() ); 687 ad.setID( csd, (*it).externalUID() );
687 ad.setCsum( csd, (*it).getCsum( csd ) ); 688 ad.setCsum( csd, (*it).getCsum( csd ) );
688 aBook->insertAddressee( ad ); 689 aBook->insertAddressee( ad );
689 } 690 }
690 } 691 }
691 } 692 }
692} 693}
693 694
694bool AddressBook::containsExternalUid( const QString& uid ) 695bool AddressBook::containsExternalUid( const QString& uid )
695{ 696{
696 Iterator it; 697 Iterator it;
697 for ( it = begin(); it != end(); ++it ) { 698 for ( it = begin(); it != end(); ++it ) {
698 if ( uid == (*it).externalUID( ) ) 699 if ( uid == (*it).externalUID( ) )
699 return true; 700 return true;
700 } 701 }
701 return false; 702 return false;
702} 703}
703Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) 704Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
704{ 705{
705 Iterator it; 706 Iterator it;
706 for ( it = begin(); it != end(); ++it ) { 707 for ( it = begin(); it != end(); ++it ) {
707 if ( uid == (*it).getID( profile ) ) 708 if ( uid == (*it).getID( profile ) )
708 return (*it); 709 return (*it);
709 } 710 }
710 return Addressee(); 711 return Addressee();
711} 712}
712void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) 713void AddressBook::mergeAB( AddressBook *aBook, const QString& profile )
713{ 714{
714 Iterator it; 715 Iterator it;
715 Addressee ad; 716 Addressee ad;
716 for ( it = begin(); it != end(); ++it ) { 717 for ( it = begin(); it != end(); ++it ) {
717 ad = aBook->findByExternUid( (*it).externalUID(), profile ); 718 ad = aBook->findByExternUid( (*it).externalUID(), profile );
718 if ( !ad.isEmpty() ) { 719 if ( !ad.isEmpty() ) {
719 (*it).mergeContact( ad ); 720 (*it).mergeContact( ad );
720 } 721 }
721 } 722 }
722#if 0 723#if 0
723 // test only 724 // test only
724 for ( it = begin(); it != end(); ++it ) { 725 for ( it = begin(); it != end(); ++it ) {
725 726
726 qDebug("uid %s ", (*it).uid().latin1()); 727 qDebug("uid %s ", (*it).uid().latin1());
727 } 728 }
728#endif 729#endif
729} 730}
730 731
731#if 0 732#if 0
732Addressee::List AddressBook::getExternLastSyncAddressees() 733Addressee::List AddressBook::getExternLastSyncAddressees()
733{ 734{
734 Addressee::List results; 735 Addressee::List results;
735 736
736 Iterator it; 737 Iterator it;
737 for ( it = begin(); it != end(); ++it ) { 738 for ( it = begin(); it != end(); ++it ) {
738 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { 739 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
739 if ( (*it).familyName().left(4) == "!E: " ) 740 if ( (*it).familyName().left(4) == "!E: " )
740 results.append( *it ); 741 results.append( *it );
741 } 742 }
742 } 743 }
743 744
744 return results; 745 return results;
745} 746}
746#endif 747#endif
747void AddressBook::resetTempSyncStat() 748void AddressBook::resetTempSyncStat()
748{ 749{
749 Iterator it; 750 Iterator it;
750 for ( it = begin(); it != end(); ++it ) { 751 for ( it = begin(); it != end(); ++it ) {
751 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 752 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
752 } 753 }
753 754
754} 755}
755 756
756QStringList AddressBook:: uidList() 757QStringList AddressBook:: uidList()
757{ 758{
758 QStringList results; 759 QStringList results;
759 Iterator it; 760 Iterator it;
760 for ( it = begin(); it != end(); ++it ) { 761 for ( it = begin(); it != end(); ++it ) {
761 results.append( (*it).uid() ); 762 results.append( (*it).uid() );
762 } 763 }
763 return results; 764 return results;
764} 765}
765 766
766 767
767Addressee::List AddressBook::allAddressees() 768Addressee::List AddressBook::allAddressees()
768{ 769{
769 return d->mAddressees; 770 return d->mAddressees;
770 771
771} 772}
772 773
773Addressee::List AddressBook::findByName( const QString &name ) 774Addressee::List AddressBook::findByName( const QString &name )
774{ 775{
775 Addressee::List results; 776 Addressee::List results;
776 777
777 Iterator it; 778 Iterator it;
778 for ( it = begin(); it != end(); ++it ) { 779 for ( it = begin(); it != end(); ++it ) {
779 if ( name == (*it).realName() ) { 780 if ( name == (*it).realName() ) {
780 results.append( *it ); 781 results.append( *it );
781 } 782 }
782 } 783 }
783 784
784 return results; 785 return results;
785} 786}
786 787
787Addressee::List AddressBook::findByEmail( const QString &email ) 788Addressee::List AddressBook::findByEmail( const QString &email )
788{ 789{
789 Addressee::List results; 790 Addressee::List results;
790 QStringList mailList; 791 QStringList mailList;
791 792
792 Iterator it; 793 Iterator it;
793 for ( it = begin(); it != end(); ++it ) { 794 for ( it = begin(); it != end(); ++it ) {
794 mailList = (*it).emails(); 795 mailList = (*it).emails();
795 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 796 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
796 if ( email == (*ite) ) { 797 if ( email == (*ite) ) {
797 results.append( *it ); 798 results.append( *it );
798 } 799 }
799 } 800 }
800 } 801 }
801 802
802 return results; 803 return results;
803} 804}
804 805
805Addressee::List AddressBook::findByCategory( const QString &category ) 806Addressee::List AddressBook::findByCategory( const QString &category )
806{ 807{
807 Addressee::List results; 808 Addressee::List results;
808 809
809 Iterator it; 810 Iterator it;
810 for ( it = begin(); it != end(); ++it ) { 811 for ( it = begin(); it != end(); ++it ) {
811 if ( (*it).hasCategory( category) ) { 812 if ( (*it).hasCategory( category) ) {
812 results.append( *it ); 813 results.append( *it );
813 } 814 }
814 } 815 }
815 816
816 return results; 817 return results;
817} 818}
818 819
819void AddressBook::dump() const 820void AddressBook::dump() const
820{ 821{
821 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl; 822 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl;
822 823
823 ConstIterator it; 824 ConstIterator it;
824 for( it = begin(); it != end(); ++it ) { 825 for( it = begin(); it != end(); ++it ) {
825 (*it).dump(); 826 (*it).dump();
826 } 827 }
827 828
828 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl; 829 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl;
829} 830}
830 831
831QString AddressBook::identifier() 832QString AddressBook::identifier()
832{ 833{
833 QStringList identifier; 834 QStringList identifier;
834 835
835 836
836 KRES::Manager<Resource>::ActiveIterator it; 837 KRES::Manager<Resource>::ActiveIterator it;
837 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 838 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
838 if ( !(*it)->identifier().isEmpty() ) 839 if ( !(*it)->identifier().isEmpty() )
839 identifier.append( (*it)->identifier() ); 840 identifier.append( (*it)->identifier() );
840 } 841 }
841 842
842 return identifier.join( ":" ); 843 return identifier.join( ":" );
843} 844}
844 845
845Field::List AddressBook::fields( int category ) 846Field::List AddressBook::fields( int category )
846{ 847{
847 if ( d->mAllFields.isEmpty() ) { 848 if ( d->mAllFields.isEmpty() ) {
848 d->mAllFields = Field::allFields(); 849 d->mAllFields = Field::allFields();
849 } 850 }
850 851
851 if ( category == Field::All ) return d->mAllFields; 852 if ( category == Field::All ) return d->mAllFields;
852 853
853 Field::List result; 854 Field::List result;
854 Field::List::ConstIterator it; 855 Field::List::ConstIterator it;
855 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { 856 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) {
856 if ( (*it)->category() & category ) result.append( *it ); 857 if ( (*it)->category() & category ) result.append( *it );
857 } 858 }
858 859
859 return result; 860 return result;
860} 861}
861 862
862bool AddressBook::addCustomField( const QString &label, int category, 863bool AddressBook::addCustomField( const QString &label, int category,
863 const QString &key, const QString &app ) 864 const QString &key, const QString &app )
864{ 865{
865 if ( d->mAllFields.isEmpty() ) { 866 if ( d->mAllFields.isEmpty() ) {
866 d->mAllFields = Field::allFields(); 867 d->mAllFields = Field::allFields();
867 } 868 }
868//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app; 869//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app;
869 QString a = app.isNull() ? KGlobal::getAppName() : app; 870 QString a = app.isNull() ? KGlobal::getAppName() : app;
870 871
871 QString k = key.isNull() ? label : key; 872 QString k = key.isNull() ? label : key;
872 873
873 Field *field = Field::createCustomField( label, category, k, a ); 874 Field *field = Field::createCustomField( label, category, k, a );
874 875
875 if ( !field ) return false; 876 if ( !field ) return false;
876 877
877 d->mAllFields.append( field ); 878 d->mAllFields.append( field );
878 879
879 return true; 880 return true;
880} 881}
881 882
882QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab ) 883QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab )
883{ 884{
884 if (!ab.d) return s; 885 if (!ab.d) return s;
885 886
886 return s << ab.d->mAddressees; 887 return s << ab.d->mAddressees;
887} 888}
888 889
889QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) 890QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab )
890{ 891{
891 if (!ab.d) return s; 892 if (!ab.d) return s;
892 893
893 s >> ab.d->mAddressees; 894 s >> ab.d->mAddressees;
894 895
895 return s; 896 return s;
896} 897}
897 898
898bool AddressBook::addResource( Resource *resource ) 899bool AddressBook::addResource( Resource *resource )
899{ 900{
900 if ( !resource->open() ) { 901 if ( !resource->open() ) {
901 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; 902 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl;
902 return false; 903 return false;
903 } 904 }
904 905
905 resource->setAddressBook( this ); 906 resource->setAddressBook( this );
906 907
907 d->mManager->add( resource ); 908 d->mManager->add( resource );
908 return true; 909 return true;
909} 910}
910 911
911bool AddressBook::removeResource( Resource *resource ) 912bool AddressBook::removeResource( Resource *resource )
912{ 913{
913 resource->close(); 914 resource->close();
914 915
915 if ( resource == standardResource() ) 916 if ( resource == standardResource() )
916 d->mManager->setStandardResource( 0 ); 917 d->mManager->setStandardResource( 0 );
917 918
918 resource->setAddressBook( 0 ); 919 resource->setAddressBook( 0 );
919 920
920 d->mManager->remove( resource ); 921 d->mManager->remove( resource );
921 return true; 922 return true;
922} 923}
923 924
924QPtrList<Resource> AddressBook::resources() 925QPtrList<Resource> AddressBook::resources()
925{ 926{
926 QPtrList<Resource> list; 927 QPtrList<Resource> list;
927 928
928// qDebug("AddressBook::resources() 1"); 929// qDebug("AddressBook::resources() 1");
929 930
930 KRES::Manager<Resource>::ActiveIterator it; 931 KRES::Manager<Resource>::ActiveIterator it;
931 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 932 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
932 list.append( *it ); 933 list.append( *it );
933 934
934 return list; 935 return list;
935} 936}
936 937
937/*US 938/*US
938void AddressBook::setErrorHandler( ErrorHandler *handler ) 939void AddressBook::setErrorHandler( ErrorHandler *handler )
939{ 940{
940 delete d->mErrorHandler; 941 delete d->mErrorHandler;
941 d->mErrorHandler = handler; 942 d->mErrorHandler = handler;
942} 943}
943*/ 944*/
944 945
945void AddressBook::error( const QString& msg ) 946void AddressBook::error( const QString& msg )
946{ 947{
947/*US 948/*US
948 if ( !d->mErrorHandler ) // create default error handler 949 if ( !d->mErrorHandler ) // create default error handler
949 d->mErrorHandler = new ConsoleErrorHandler; 950 d->mErrorHandler = new ConsoleErrorHandler;
950 951
951 if ( d->mErrorHandler ) 952 if ( d->mErrorHandler )
952 d->mErrorHandler->error( msg ); 953 d->mErrorHandler->error( msg );
953 else 954 else
954 kdError(5700) << "no error handler defined" << endl; 955 kdError(5700) << "no error handler defined" << endl;
955*/ 956*/
956 kdDebug(5700) << "msg" << endl; 957 kdDebug(5700) << "msg" << endl;
957 qDebug(msg); 958 qDebug(msg);
958} 959}
959 960
960void AddressBook::deleteRemovedAddressees() 961void AddressBook::deleteRemovedAddressees()
961{ 962{
962 Addressee::List::Iterator it; 963 Addressee::List::Iterator it;
963 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) { 964 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) {
964 Resource *resource = (*it).resource(); 965 Resource *resource = (*it).resource();
965 if ( resource && !resource->readOnly() && resource->isOpen() ) 966 if ( resource && !resource->readOnly() && resource->isOpen() )
966 resource->removeAddressee( *it ); 967 resource->removeAddressee( *it );
967 } 968 }
968 969
969 d->mRemovedAddressees.clear(); 970 d->mRemovedAddressees.clear();
970} 971}
971 972
972void AddressBook::setStandardResource( Resource *resource ) 973void AddressBook::setStandardResource( Resource *resource )
973{ 974{
974// qDebug("AddressBook::setStandardResource 1"); 975// qDebug("AddressBook::setStandardResource 1");
975 d->mManager->setStandardResource( resource ); 976 d->mManager->setStandardResource( resource );
976} 977}
977 978
978Resource *AddressBook::standardResource() 979Resource *AddressBook::standardResource()
979{ 980{
980 return d->mManager->standardResource(); 981 return d->mManager->standardResource();
981} 982}
982 983
983KRES::Manager<Resource> *AddressBook::resourceManager() 984KRES::Manager<Resource> *AddressBook::resourceManager()
984{ 985{
985 return d->mManager; 986 return d->mManager;
986} 987}
987 988
988void AddressBook::cleanUp() 989void AddressBook::cleanUp()
989{ 990{
990 KRES::Manager<Resource>::ActiveIterator it; 991 KRES::Manager<Resource>::ActiveIterator it;
991 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 992 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
992 if ( !(*it)->readOnly() && (*it)->isOpen() ) 993 if ( !(*it)->readOnly() && (*it)->isOpen() )
993 (*it)->cleanUp(); 994 (*it)->cleanUp();
994 } 995 }
995} 996}
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp
index 8d0fca1..4babf67 100644
--- a/kaddressbook/views/kaddressbookcardview.cpp
+++ b/kaddressbook/views/kaddressbookcardview.cpp
@@ -1,446 +1,448 @@
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 30
31#include <kabc/addressbook.h> 31#include <kabc/addressbook.h>
32#include <kabc/addressee.h> 32#include <kabc/addressee.h>
33#include <kconfig.h> 33#include <kconfig.h>
34#include <kdebug.h> 34#include <kdebug.h>
35#include <klocale.h> 35#include <klocale.h>
36 36
37#include "kabprefs.h" 37#include "kabprefs.h"
38#include "viewmanager.h" 38#include "viewmanager.h"
39 39
40#include "kaddressbookcardview.h" 40#include "kaddressbookcardview.h"
41 41
42#ifndef KAB_EMBEDDED 42#ifndef KAB_EMBEDDED
43extern "C" { 43extern "C" {
44 void *init_libkaddrbk_cardview() 44 void *init_libkaddrbk_cardview()
45 { 45 {
46 return ( new CardViewFactory ); 46 return ( new CardViewFactory );
47 } 47 }
48} 48}
49#endif //KAB_EMBEDDED 49#endif //KAB_EMBEDDED
50 50
51//////////////////////////////// 51////////////////////////////////
52// AddresseeCardViewItem (internal class) 52// AddresseeCardViewItem (internal class)
53class AddresseeCardViewItem : public CardViewItem 53class AddresseeCardViewItem : public CardViewItem
54{ 54{
55 public: 55 public:
56 AddresseeCardViewItem(const KABC::Field::List &fields, 56 AddresseeCardViewItem(const KABC::Field::List &fields,
57 bool showEmptyFields, 57 bool showEmptyFields,
58 KABC::AddressBook *doc, const KABC::Addressee &a, 58 KABC::AddressBook *doc, const KABC::Addressee &a,
59 CardView *parent) 59 CardView *parent)
60 : CardViewItem(parent, a.formattedName()), 60 : CardViewItem(parent, a.formattedName()),
61 mFields( fields ), mShowEmptyFields(showEmptyFields), 61 mFields( fields ), mShowEmptyFields(showEmptyFields),
62 mDocument(doc), mAddressee(a) 62 mDocument(doc), mAddressee(a)
63 { 63 {
64 if ( mFields.isEmpty() ) { 64 if ( mFields.isEmpty() ) {
65 mFields = KABC::Field::defaultFields(); 65 mFields = KABC::Field::defaultFields();
66 } 66 }
67 refresh(); 67 refresh();
68 } 68 }
69 69
70 const KABC::Addressee &addressee() const { return mAddressee; } 70 const KABC::Addressee &addressee() const { return mAddressee; }
71 71
72 void refresh() 72 void refresh()
73 { 73 {
74 // Update our addressee, since it may have changed elsewhere 74 // Update our addressee, since it may have changed elsewhere
75 mAddressee = mDocument->findByUid(mAddressee.uid()); 75 mAddressee = mDocument->findByUid(mAddressee.uid());
76 76
77 if (!mAddressee.isEmpty()) 77 if (!mAddressee.isEmpty())
78 { 78 {
79 clearFields(); 79 clearFields();
80 80
81 // Try all the selected fields until we find one with text. 81 // Try all the selected fields until we find one with text.
82 // This will limit the number of unlabeled icons in the view 82 // This will limit the number of unlabeled icons in the view
83 KABC::Field::List::Iterator iter; 83 KABC::Field::List::Iterator iter;
84 for (iter = mFields.begin(); iter != mFields.end(); ++iter) 84 for (iter = mFields.begin(); iter != mFields.end(); ++iter)
85 { 85 {
86 // insert empty fields or not? not doing so saves a bit of memory and CPU 86 // insert empty fields or not? not doing so saves a bit of memory and CPU
87 // (during geometry calculations), but prevents having equally 87 // (during geometry calculations), but prevents having equally
88 // wide label columns in all cards, unless CardViewItem/CardView search 88 // wide label columns in all cards, unless CardViewItem/CardView search
89 // globally for the widest label. (anders) 89 // globally for the widest label. (anders)
90 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty()) 90 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty())
91 insertField((*iter)->label(), (*iter)->value( mAddressee )); 91 insertField((*iter)->label(), (*iter)->value( mAddressee ));
92 } 92 }
93 93
94 // We might want to make this the first field. hmm... -mpilone 94 // We might want to make this the first field. hmm... -mpilone
95 setCaption( mAddressee.realName() ); 95 setCaption( mAddressee.realName() );
96 } 96 }
97 } 97 }
98 98
99 private: 99 private:
100 KABC::Field::List mFields; 100 KABC::Field::List mFields;
101 bool mShowEmptyFields; 101 bool mShowEmptyFields;
102 KABC::AddressBook *mDocument; 102 KABC::AddressBook *mDocument;
103 KABC::Addressee mAddressee; 103 KABC::Addressee mAddressee;
104}; 104};
105 105
106/////////////////////////////// 106///////////////////////////////
107// AddresseeCardView 107// AddresseeCardView
108 108
109AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name) 109AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name)
110 : CardView(parent, name) 110 : CardView(parent, name)
111{ 111{
112 setAcceptDrops(true); 112 setAcceptDrops(true);
113} 113}
114 114
115AddresseeCardView::~AddresseeCardView() 115AddresseeCardView::~AddresseeCardView()
116{ 116{
117} 117}
118 118
119 119
120void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e) 120void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e)
121{ 121{
122#ifndef KAB_EMBEDDED 122#ifndef KAB_EMBEDDED
123 if (QTextDrag::canDecode(e)) 123 if (QTextDrag::canDecode(e))
124 e->accept(); 124 e->accept();
125#else //KAB_EMBEDDED 125#else //KAB_EMBEDDED
126qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented"); 126qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented");
127#endif //KAB_EMBEDDED 127#endif //KAB_EMBEDDED
128} 128}
129 129
130void AddresseeCardView::dropEvent(QDropEvent *e) 130void AddresseeCardView::dropEvent(QDropEvent *e)
131{ 131{
132 emit addresseeDropped(e); 132 emit addresseeDropped(e);
133} 133}
134 134
135void AddresseeCardView::startDrag() 135void AddresseeCardView::startDrag()
136{ 136{
137 emit startAddresseeDrag(); 137 emit startAddresseeDrag();
138} 138}
139 139
140 140
141/////////////////////////////// 141///////////////////////////////
142// KAddressBookCardView 142// KAddressBookCardView
143 143
144KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, 144KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab,
145 QWidget *parent, const char *name ) 145 QWidget *parent, const char *name )
146 : KAddressBookView( ab, parent, name ) 146 : KAddressBookView( ab, parent, name )
147{ 147{
148 mShowEmptyFields = false; 148 mShowEmptyFields = false;
149 149
150 // Init the GUI 150 // Init the GUI
151 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 151 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
152 152
153 mCardView = new AddresseeCardView(viewWidget(), "mCardView"); 153 mCardView = new AddresseeCardView(viewWidget(), "mCardView");
154 mCardView->setSelectionMode(CardView::Extended); 154 mCardView->setSelectionMode(CardView::Extended);
155 layout->addWidget(mCardView); 155 layout->addWidget(mCardView);
156 156
157 // Connect up the signals 157 // Connect up the signals
158 connect(mCardView, SIGNAL(executed(CardViewItem *)), 158 connect(mCardView, SIGNAL(executed(CardViewItem *)),
159 this, SLOT(addresseeExecuted(CardViewItem *))); 159 this, SLOT(addresseeExecuted(CardViewItem *)));
160 connect(mCardView, SIGNAL(selectionChanged()), 160 connect(mCardView, SIGNAL(selectionChanged()),
161 this, SLOT(addresseeSelected())); 161 this, SLOT(addresseeSelected()));
162 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), 162 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)),
163 this, SIGNAL(dropped(QDropEvent*))); 163 this, SIGNAL(dropped(QDropEvent*)));
164 connect(mCardView, SIGNAL(startAddresseeDrag()), 164 connect(mCardView, SIGNAL(startAddresseeDrag()),
165 this, SIGNAL(startDrag())); 165 this, SIGNAL(startDrag()));
166} 166}
167 167
168KAddressBookCardView::~KAddressBookCardView() 168KAddressBookCardView::~KAddressBookCardView()
169{ 169{
170} 170}
171 171
172void KAddressBookCardView::readConfig(KConfig *config) 172void KAddressBookCardView::readConfig(KConfig *config)
173{ 173{
174 KAddressBookView::readConfig(config); 174 KAddressBookView::readConfig(config);
175 175
176 // costum colors? 176 // costum colors?
177 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 177 if ( config->readBoolEntry( "EnableCustomColors", false ) )
178 { 178 {
179 QPalette p( mCardView->palette() ); 179 QPalette p( mCardView->palette() );
180 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 180 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
181 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 181 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
182 c = p.color(QPalette::Normal, QColorGroup::Text ); 182 c = p.color(QPalette::Normal, QColorGroup::Text );
183 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 183 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
184 c = p.color(QPalette::Normal, QColorGroup::Button ); 184 c = p.color(QPalette::Normal, QColorGroup::Button );
185 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 185 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
186 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 186 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
187 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 187 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
188 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 188 c = p.color(QPalette::Normal, QColorGroup::Highlight );
189 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 189 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
190 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 190 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
191 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 191 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
192 mCardView->viewport()->setPalette( p ); 192 mCardView->viewport()->setPalette( p );
193 } 193 }
194 else 194 else
195 { 195 {
196 // needed if turned off during a session. 196 // needed if turned off during a session.
197 mCardView->viewport()->setPalette( mCardView->palette() ); 197 mCardView->viewport()->setPalette( mCardView->palette() );
198 } 198 }
199 199
200 //custom fonts? 200 //custom fonts?
201 QFont f( font() ); 201 QFont f( font() );
202 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 202 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
203 { 203 {
204 mCardView->setFont( config->readFontEntry( "TextFont", &f) ); 204 mCardView->setFont( config->readFontEntry( "TextFont", &f) );
205 f.setBold( true ); 205 f.setBold( true );
206 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 206 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
207 } 207 }
208 else 208 else
209 { 209 {
210 mCardView->setFont( f ); 210 mCardView->setFont( f );
211 f.setBold( true ); 211 f.setBold( true );
212 mCardView->setHeaderFont( f ); 212 mCardView->setHeaderFont( f );
213 } 213 }
214 214
215 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true)); 215 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true));
216 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators", 216 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators",
217 true)); 217 true));
218 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); 218 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false));
219 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false); 219 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false);
220 220
221 mCardView->setShowEmptyFields( mShowEmptyFields ); 221 mCardView->setShowEmptyFields( mShowEmptyFields );
222 222
223 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) ); 223 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) );
224 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) ); 224 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) );
225 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) ); 225 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) );
226 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) ); 226 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) );
227 227
228 disconnect(mCardView, SIGNAL(executed(CardViewItem *)), 228 disconnect(mCardView, SIGNAL(executed(CardViewItem *)),
229 this, SLOT(addresseeExecuted(CardViewItem *))); 229 this, SLOT(addresseeExecuted(CardViewItem *)));
230 230
231 if (KABPrefs::instance()->mHonorSingleClick) 231 if (KABPrefs::instance()->mHonorSingleClick)
232 connect(mCardView, SIGNAL(executed(CardViewItem *)), 232 connect(mCardView, SIGNAL(executed(CardViewItem *)),
233 this, SLOT(addresseeExecuted(CardViewItem *))); 233 this, SLOT(addresseeExecuted(CardViewItem *)));
234 else 234 else
235 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), 235 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)),
236 this, SLOT(addresseeExecuted(CardViewItem *))); 236 this, SLOT(addresseeExecuted(CardViewItem *)));
237 237
238} 238}
239 239
240void KAddressBookCardView::writeConfig( KConfig *config ) 240void KAddressBookCardView::writeConfig( KConfig *config )
241{ 241{
242 config->writeEntry( "ItemWidth", mCardView->itemWidth() ); 242 config->writeEntry( "ItemWidth", mCardView->itemWidth() );
243 KAddressBookView::writeConfig( config ); 243 KAddressBookView::writeConfig( config );
244} 244}
245void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field ) 245void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field )
246{ 246{
247 mCardView->clear(); 247 mCardView->clear();
248 if ( s.isEmpty() || s == "*" ) { 248 if ( s.isEmpty() || s == "*" ) {
249 refresh(); 249 refresh();
250 return; 250 return;
251 } 251 }
252 QString pattern = s.lower()+"*"; 252 QString pattern = s.lower()+"*";
253 QRegExp re; 253 QRegExp re;
254 re.setWildcard(true); // most people understand these better. 254 re.setWildcard(true); // most people understand these better.
255 re.setCaseSensitive(false); 255 re.setCaseSensitive(false);
256 re.setPattern( pattern ); 256 re.setPattern( pattern );
257 if (!re.isValid()) 257 if (!re.isValid())
258 return; 258 return;
259 mCardView->viewport()->setUpdatesEnabled( false ); 259 mCardView->viewport()->setUpdatesEnabled( false );
260 KABC::Addressee::List addresseeList = addressees(); 260 KABC::Addressee::List addresseeList = addressees();
261 KABC::Addressee::List::Iterator it; 261 KABC::Addressee::List::Iterator it;
262 if ( field ) { 262 if ( field ) {
263 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 263 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
264#if QT_VERSION >= 300 264#if QT_VERSION >= 300
265 if (re.search(field->value( *it ).lower()) != -1) 265 if (re.search(field->value( *it ).lower()) != -1)
266#else 266#else
267 if (re.match(field->value( *it ).lower()) != -1) 267 if (re.match(field->value( *it ).lower()) != -1)
268#endif 268#endif
269 new AddresseeCardViewItem(fields(), mShowEmptyFields, 269 new AddresseeCardViewItem(fields(), mShowEmptyFields,
270 addressBook(), *it, mCardView); 270 addressBook(), *it, mCardView);
271 271
272 } 272 }
273 } else { 273 } else {
274 KABC::Field::List fieldList = fields(); 274 KABC::Field::List fieldList = fields();
275 KABC::Field::List::ConstIterator fieldIt; 275 KABC::Field::List::ConstIterator fieldIt;
276 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 276 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
277 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 277 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
278#if QT_VERSION >= 300 278#if QT_VERSION >= 300
279 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 279 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
280#else 280#else
281 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 281 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
282#endif 282#endif
283 { 283 {
284 new AddresseeCardViewItem(fields(), mShowEmptyFields, 284 new AddresseeCardViewItem(fields(), mShowEmptyFields,
285 addressBook(), *it, mCardView); 285 addressBook(), *it, mCardView);
286 continue; 286 continue;
287 } 287 }
288 } 288 }
289 } 289 }
290 } 290 }
291 mCardView->viewport()->setUpdatesEnabled( true ); 291 mCardView->viewport()->setUpdatesEnabled( true );
292 mCardView->viewport()->update(); 292 mCardView->viewport()->update();
293 // by default nothing is selected 293 // by default nothing is selected
294 emit selected(QString::null); 294 emit selected(QString::null);
295} 295}
296QStringList KAddressBookCardView::selectedUids() 296QStringList KAddressBookCardView::selectedUids()
297{ 297{
298 QStringList uidList; 298 QStringList uidList;
299 CardViewItem *item; 299 CardViewItem *item;
300 AddresseeCardViewItem *aItem; 300 AddresseeCardViewItem *aItem;
301 301
302 for (item = mCardView->firstItem(); item; item = item->nextItem()) 302 for (item = mCardView->firstItem(); item; item = item->nextItem())
303 { 303 {
304 if (item->isSelected()) 304 if (item->isSelected())
305 { 305 {
306#ifndef KAB_EMBEDDED 306#ifndef KAB_EMBEDDED
307 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 307 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
308#else //KAB_EMBEDDED 308#else //KAB_EMBEDDED
309 aItem = (AddresseeCardViewItem*)(item); 309 aItem = (AddresseeCardViewItem*)(item);
310#endif //KAB_EMBEDDED 310#endif //KAB_EMBEDDED
311 if (aItem) 311 if (aItem)
312 uidList << aItem->addressee().uid(); 312 uidList << aItem->addressee().uid();
313 } 313 }
314 } 314 }
315 315
316 return uidList; 316 return uidList;
317} 317}
318 318
319void KAddressBookCardView::refresh(QString uid) 319void KAddressBookCardView::refresh(QString uid)
320{ 320{
321 CardViewItem *item; 321 CardViewItem *item;
322 AddresseeCardViewItem *aItem; 322 AddresseeCardViewItem *aItem;
323 323
324 if (uid.isNull()) 324 if (uid.isNull())
325 { 325 {
326 // Rebuild the view 326 // Rebuild the view
327 mCardView->viewport()->setUpdatesEnabled( false ); 327 mCardView->viewport()->setUpdatesEnabled( false );
328 mCardView->clear(); 328 mCardView->clear();
329 329
330 KABC::Addressee::List addresseeList = addressees(); 330 KABC::Addressee::List addresseeList = addressees();
331 KABC::Addressee::List::Iterator iter; 331 KABC::Addressee::List::Iterator iter;
332 for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter) 332 for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter)
333 { 333 {
334 if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") )
335 continue;
334 aItem = new AddresseeCardViewItem(fields(), mShowEmptyFields, 336 aItem = new AddresseeCardViewItem(fields(), mShowEmptyFields,
335 addressBook(), *iter, mCardView); 337 addressBook(), *iter, mCardView);
336 } 338 }
337 mCardView->viewport()->setUpdatesEnabled( true ); 339 mCardView->viewport()->setUpdatesEnabled( true );
338 mCardView->viewport()->update(); 340 mCardView->viewport()->update();
339 341
340 // by default nothing is selected 342 // by default nothing is selected
341 emit selected(QString::null); 343 emit selected(QString::null);
342 } 344 }
343 else 345 else
344 { 346 {
345 // Try to find the one to refresh 347 // Try to find the one to refresh
346 bool found = false; 348 bool found = false;
347 for (item = mCardView->firstItem(); item && !found; 349 for (item = mCardView->firstItem(); item && !found;
348 item = item->nextItem()) 350 item = item->nextItem())
349 { 351 {
350#ifndef KAB_EMBEDDED 352#ifndef KAB_EMBEDDED
351 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 353 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
352#else //KAB_EMBEDDED 354#else //KAB_EMBEDDED
353 aItem = (AddresseeCardViewItem*)(item); 355 aItem = (AddresseeCardViewItem*)(item);
354#endif //KAB_EMBEDDED 356#endif //KAB_EMBEDDED
355 357
356 if ((aItem) && (aItem->addressee().uid() == uid)) 358 if ((aItem) && (aItem->addressee().uid() == uid))
357 { 359 {
358 aItem->refresh(); 360 aItem->refresh();
359 found = true; 361 found = true;
360 } 362 }
361 } 363 }
362 } 364 }
363} 365}
364 366
365void KAddressBookCardView::setSelected(QString uid, bool selected) 367void KAddressBookCardView::setSelected(QString uid, bool selected)
366{ 368{
367 CardViewItem *item; 369 CardViewItem *item;
368 AddresseeCardViewItem *aItem; 370 AddresseeCardViewItem *aItem;
369 371
370 if (uid.isNull()) 372 if (uid.isNull())
371 { 373 {
372 mCardView->selectAll(selected); 374 mCardView->selectAll(selected);
373 } 375 }
374 else 376 else
375 { 377 {
376 bool found = false; 378 bool found = false;
377 for (item = mCardView->firstItem(); item && !found; 379 for (item = mCardView->firstItem(); item && !found;
378 item = item->nextItem()) 380 item = item->nextItem())
379 { 381 {
380#ifndef KAB_EMBEDDED 382#ifndef KAB_EMBEDDED
381 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 383 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
382#else //KAB_EMBEDDED 384#else //KAB_EMBEDDED
383 aItem = (AddresseeCardViewItem*)(item); 385 aItem = (AddresseeCardViewItem*)(item);
384#endif //KAB_EMBEDDED 386#endif //KAB_EMBEDDED
385 387
386 if ((aItem) && (aItem->addressee().uid() == uid)) 388 if ((aItem) && (aItem->addressee().uid() == uid))
387 { 389 {
388 mCardView->setSelected(aItem, selected); 390 mCardView->setSelected(aItem, selected);
389 mCardView->ensureItemVisible(item); 391 mCardView->ensureItemVisible(item);
390 found = true; 392 found = true;
391 } 393 }
392 } 394 }
393 } 395 }
394} 396}
395 397
396//US added an additional method without parameter 398//US added an additional method without parameter
397void KAddressBookCardView::setSelected() 399void KAddressBookCardView::setSelected()
398{ 400{
399 setSelected(QString::null, true); 401 setSelected(QString::null, true);
400} 402}
401 403
402void KAddressBookCardView::addresseeExecuted(CardViewItem *item) 404void KAddressBookCardView::addresseeExecuted(CardViewItem *item)
403{ 405{
404#ifndef KAB_EMBEDDED 406#ifndef KAB_EMBEDDED
405 AddresseeCardViewItem *aItem = dynamic_cast<AddresseeCardViewItem*>(item); 407 AddresseeCardViewItem *aItem = dynamic_cast<AddresseeCardViewItem*>(item);
406#else //KAB_EMBEDDED 408#else //KAB_EMBEDDED
407 AddresseeCardViewItem *aItem = (AddresseeCardViewItem*)(item); 409 AddresseeCardViewItem *aItem = (AddresseeCardViewItem*)(item);
408#endif //KAB_EMBEDDED 410#endif //KAB_EMBEDDED
409 if (aItem) 411 if (aItem)
410 { 412 {
411 //kdDebug()<<"... even has a valid item:)"<<endl; 413 //kdDebug()<<"... even has a valid item:)"<<endl;
412 emit executed(aItem->addressee().uid()); 414 emit executed(aItem->addressee().uid());
413 } 415 }
414} 416}
415 417
416void KAddressBookCardView::addresseeSelected() 418void KAddressBookCardView::addresseeSelected()
417{ 419{
418 CardViewItem *item; 420 CardViewItem *item;
419 AddresseeCardViewItem *aItem; 421 AddresseeCardViewItem *aItem;
420 422
421 bool found = false; 423 bool found = false;
422 for (item = mCardView->firstItem(); item && !found; 424 for (item = mCardView->firstItem(); item && !found;
423 item = item->nextItem()) 425 item = item->nextItem())
424 { 426 {
425 if (item->isSelected()) 427 if (item->isSelected())
426 { 428 {
427#ifndef KAB_EMBEDDED 429#ifndef KAB_EMBEDDED
428 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 430 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
429#else //KAB_EMBEDDED 431#else //KAB_EMBEDDED
430 aItem = (AddresseeCardViewItem*)(item); 432 aItem = (AddresseeCardViewItem*)(item);
431#endif //KAB_EMBEDDED 433#endif //KAB_EMBEDDED
432 if ( aItem ) 434 if ( aItem )
433 { 435 {
434 emit selected(aItem->addressee().uid()); 436 emit selected(aItem->addressee().uid());
435 found = true; 437 found = true;
436 } 438 }
437 } 439 }
438 } 440 }
439 441
440 if (!found) 442 if (!found)
441 emit selected(QString::null); 443 emit selected(QString::null);
442 444
443} 445}
444#ifndef KAB_EMBEDDED 446#ifndef KAB_EMBEDDED
445#include "kaddressbookcardview.moc" 447#include "kaddressbookcardview.moc"
446#endif //KAB_EMBEDDED 448#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/kaddressbookiconview.cpp b/kaddressbook/views/kaddressbookiconview.cpp
index 0ffc674..fdc0db9 100644
--- a/kaddressbook/views/kaddressbookiconview.cpp
+++ b/kaddressbook/views/kaddressbookiconview.cpp
@@ -1,426 +1,429 @@
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 KAB_EMBEDDED 24#ifndef KAB_EMBEDDED
25#include <qiconview.h> 25#include <qiconview.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27 27
28#include <kabc/addressee.h> 28#include <kabc/addressee.h>
29#include <kconfig.h> 29#include <kconfig.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kglobal.h> 31#include <kglobal.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35#else //KAB_EMBEDDED 35#else //KAB_EMBEDDED
36#endif //KAB_EMBEDDED 36#endif //KAB_EMBEDDED
37 37
38#include <kabc/addressbook.h> 38#include <kabc/addressbook.h>
39#include "kabprefs.h" 39#include "kabprefs.h"
40#include "viewmanager.h" 40#include "viewmanager.h"
41#include "kaddressbookiconview.h" 41#include "kaddressbookiconview.h"
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qregexp.h> 43#include <qregexp.h>
44#include <kglobal.h> 44#include <kglobal.h>
45/*US transfered to the headerfile 45/*US transfered to the headerfile
46class IconViewFactory : public ViewFactory 46class IconViewFactory : public ViewFactory
47{ 47{
48 public: 48 public:
49 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name ) 49 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name )
50 { 50 {
51 return new KAddressBookIconView( ab, parent, name ); 51 return new KAddressBookIconView( ab, parent, name );
52 } 52 }
53 53
54 QString type() const { return "Icon"; } 54 QString type() const { return "Icon"; }
55 55
56 QString description() const { return i18n( "Icons represent contacts. Very simple view." ); } 56 QString description() const { return i18n( "Icons represent contacts. Very simple view." ); }
57}; 57};
58 58
59*/ 59*/
60 60
61extern "C" { 61extern "C" {
62 void *init_libkaddrbk_iconview() 62 void *init_libkaddrbk_iconview()
63 { 63 {
64 return ( new IconViewFactory ); 64 return ( new IconViewFactory );
65 } 65 }
66} 66}
67 67
68//////////////////////////////// 68////////////////////////////////
69// AddresseeIconView (internal class) 69// AddresseeIconView (internal class)
70#ifndef KAB_EMBEDDED 70#ifndef KAB_EMBEDDED
71AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name) 71AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name)
72 : KIconView(parent, name) 72 : KIconView(parent, name)
73#else //KAB_EMBEDDED 73#else //KAB_EMBEDDED
74AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name) 74AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name)
75 : QIconView(parent, name) 75 : QIconView(parent, name)
76#endif //KAB_EMBEDDED 76#endif //KAB_EMBEDDED
77 77
78{ 78{
79 setSelectionMode( QIconView::Extended ); 79 setSelectionMode( QIconView::Extended );
80 setResizeMode( QIconView::Adjust ); 80 setResizeMode( QIconView::Adjust );
81 setWordWrapIconText( true ); 81 setWordWrapIconText( true );
82 setGridX( 100 ); 82 setGridX( 100 );
83 setItemsMovable(false); 83 setItemsMovable(false);
84 setSorting(true, true); 84 setSorting(true, true);
85 85
86 86
87//US ??? setMode( KIconView::Select ); 87//US ??? setMode( KIconView::Select );
88 88
89#ifndef KAB_EMBEDDED 89#ifndef KAB_EMBEDDED
90 90
91 connect(this, SIGNAL(dropped(QDropEvent*, const QValueList<QIconDragItem>&)), 91 connect(this, SIGNAL(dropped(QDropEvent*, const QValueList<QIconDragItem>&)),
92 this, SLOT(itemDropped(QDropEvent*, const QValueList<QIconDragItem>&))); 92 this, SLOT(itemDropped(QDropEvent*, const QValueList<QIconDragItem>&)));
93#endif //KAB_EMBEDDED 93#endif //KAB_EMBEDDED
94} 94}
95 95
96AddresseeIconView::~AddresseeIconView() 96AddresseeIconView::~AddresseeIconView()
97{ 97{
98} 98}
99 99
100 100
101void AddresseeIconView::itemDropped(QDropEvent *e, 101void AddresseeIconView::itemDropped(QDropEvent *e,
102 const QValueList<QIconDragItem> &) 102 const QValueList<QIconDragItem> &)
103{ 103{
104 emit addresseeDropped(e); 104 emit addresseeDropped(e);
105} 105}
106 106
107QDragObject *AddresseeIconView::dragObject() 107QDragObject *AddresseeIconView::dragObject()
108{ 108{
109 emit startAddresseeDrag(); 109 emit startAddresseeDrag();
110 110
111 // We never want IconView to start the drag 111 // We never want IconView to start the drag
112 return 0; 112 return 0;
113} 113}
114//////////////////////////////// 114////////////////////////////////
115// AddresseeIconViewItem (internal class) 115// AddresseeIconViewItem (internal class)
116#ifndef KAB_EMBEDDED 116#ifndef KAB_EMBEDDED
117class AddresseeIconViewItem : public KIconViewItem 117class AddresseeIconViewItem : public KIconViewItem
118#else //KAB_EMBEDDED 118#else //KAB_EMBEDDED
119class AddresseeIconViewItem : public QIconViewItem 119class AddresseeIconViewItem : public QIconViewItem
120#endif //KAB_EMBEDDED 120#endif //KAB_EMBEDDED
121{ 121{
122 public: 122 public:
123#ifndef KAB_EMBEDDED 123#ifndef KAB_EMBEDDED
124 AddresseeIconViewItem(const KABC::Field::List &fields, 124 AddresseeIconViewItem(const KABC::Field::List &fields,
125 KABC::AddressBook *doc, const KABC::Addressee &a, 125 KABC::AddressBook *doc, const KABC::Addressee &a,
126 QIconView *parent) 126 QIconView *parent)
127 : KIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a) 127 : KIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a)
128#else //KAB_EMBEDDED 128#else //KAB_EMBEDDED
129 AddresseeIconViewItem(const KABC::Field::List &fields, 129 AddresseeIconViewItem(const KABC::Field::List &fields,
130 KABC::AddressBook *doc, const KABC::Addressee &a, 130 KABC::AddressBook *doc, const KABC::Addressee &a,
131 QIconView *parent) 131 QIconView *parent)
132 : QIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a) 132 : QIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a)
133#endif //KAB_EMBEDDED 133#endif //KAB_EMBEDDED
134 { 134 {
135 if ( mFields.isEmpty() ) { 135 if ( mFields.isEmpty() ) {
136 mFields = KABC::Field::defaultFields(); 136 mFields = KABC::Field::defaultFields();
137 } 137 }
138 refresh(); 138 refresh();
139 } 139 }
140 140
141 const KABC::Addressee &addressee() const { return mAddressee; } 141 const KABC::Addressee &addressee() const { return mAddressee; }
142 142
143 void refresh() 143 void refresh()
144 { 144 {
145 // Update our addressee, since it may have changed elsewhere 145 // Update our addressee, since it may have changed elsewhere
146 mAddressee = mDocument->findByUid(mAddressee.uid()); 146 mAddressee = mDocument->findByUid(mAddressee.uid());
147 147
148 if (!mAddressee.isEmpty()) 148 if (!mAddressee.isEmpty())
149 setText( mAddressee.givenName() + " " + mAddressee.familyName() ); 149 setText( mAddressee.givenName() + " " + mAddressee.familyName() );
150 150
151 QPixmap icon; 151 QPixmap icon;
152 QPixmap defaultIcon( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop, 128 ) ); 152 QPixmap defaultIcon( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop, 128 ) );
153 KABC::Picture pic = mAddressee.photo(); 153 KABC::Picture pic = mAddressee.photo();
154 if ( pic.data().isNull() ) 154 if ( pic.data().isNull() )
155 pic = mAddressee.logo(); 155 pic = mAddressee.logo();
156 156
157 if ( pic.isIntern() && !pic.data().isNull() ) { 157 if ( pic.isIntern() && !pic.data().isNull() ) {
158 QImage img = pic.data(); 158 QImage img = pic.data();
159#ifndef KAB_EMBEDDED 159#ifndef KAB_EMBEDDED
160 if ( img.width() > img.height() ) 160 if ( img.width() > img.height() )
161 icon = img.scaleWidth( 32 ); 161 icon = img.scaleWidth( 32 );
162 else 162 else
163 icon = img.scaleHeight( 32 ); 163 icon = img.scaleHeight( 32 );
164#else //KAB_EMBEDDED 164#else //KAB_EMBEDDED
165 qDebug("AddresseeIconViewItem::refresh - scale here dependend of the displaysize and the right factor"); 165 qDebug("AddresseeIconViewItem::refresh - scale here dependend of the displaysize and the right factor");
166 icon.convertFromImage(img.smoothScale(32, 32)); 166 icon.convertFromImage(img.smoothScale(32, 32));
167#endif //KAB_EMBEDDED 167#endif //KAB_EMBEDDED
168 168
169 } else 169 } else
170 icon = defaultIcon; 170 icon = defaultIcon;
171 171
172 setPixmap( icon ); 172 setPixmap( icon );
173 } 173 }
174 174
175 private: 175 private:
176 KABC::Field::List mFields; 176 KABC::Field::List mFields;
177 KABC::AddressBook *mDocument; 177 KABC::AddressBook *mDocument;
178 KABC::Addressee mAddressee; 178 KABC::Addressee mAddressee;
179}; 179};
180 180
181/////////////////////////////// 181///////////////////////////////
182// KAddressBookView 182// KAddressBookView
183 183
184KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab, 184KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab,
185 QWidget *parent, const char *name) 185 QWidget *parent, const char *name)
186 : KAddressBookView( ab, parent, name ) 186 : KAddressBookView( ab, parent, name )
187{ 187{
188 // Init the GUI 188 // Init the GUI
189 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 189 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
190 190
191 mIconView = new AddresseeIconView(viewWidget(), "mIconView"); 191 mIconView = new AddresseeIconView(viewWidget(), "mIconView");
192 layout->addWidget(mIconView); 192 layout->addWidget(mIconView);
193 193
194 // Connect up the signals 194 // Connect up the signals
195 195
196//US method executed is part of KIconView 196//US method executed is part of KIconView
197//US connect(mIconView, SIGNAL(executed(QIconViewItem *)), 197//US connect(mIconView, SIGNAL(executed(QIconViewItem *)),
198//US this, SLOT(addresseeExecuted(QIconViewItem *))); 198//US this, SLOT(addresseeExecuted(QIconViewItem *)));
199 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 199 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
200 this, SLOT(addresseeExecuted(QIconViewItem *))); 200 this, SLOT(addresseeExecuted(QIconViewItem *)));
201 201
202 connect(mIconView, SIGNAL(selectionChanged()), 202 connect(mIconView, SIGNAL(selectionChanged()),
203 this, SLOT(addresseeSelected())); 203 this, SLOT(addresseeSelected()));
204 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)), 204 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)),
205 this, SIGNAL(dropped(QDropEvent*))); 205 this, SIGNAL(dropped(QDropEvent*)));
206 connect(mIconView, SIGNAL(startAddresseeDrag()), 206 connect(mIconView, SIGNAL(startAddresseeDrag()),
207 this, SIGNAL(startDrag())); 207 this, SIGNAL(startDrag()));
208} 208}
209 209
210KAddressBookIconView::~KAddressBookIconView() 210KAddressBookIconView::~KAddressBookIconView()
211{ 211{
212} 212}
213 213
214void KAddressBookIconView::readConfig(KConfig *config) 214void KAddressBookIconView::readConfig(KConfig *config)
215{ 215{
216 KAddressBookView::readConfig(config); 216 KAddressBookView::readConfig(config);
217 217
218//US method executed is part of KIconView 218//US method executed is part of KIconView
219//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)), 219//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)),
220//US this, SLOT(addresseeExecuted(QIconViewItem *))); 220//US this, SLOT(addresseeExecuted(QIconViewItem *)));
221 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 221 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
222 this, SLOT(addresseeExecuted(QIconViewItem *))); 222 this, SLOT(addresseeExecuted(QIconViewItem *)));
223 223
224//US method executed is part of KIconView. Use selectionChanged instead 224//US method executed is part of KIconView. Use selectionChanged instead
225/*US 225/*US
226 if (KABPrefs::instance()->mHonorSingleClick) 226 if (KABPrefs::instance()->mHonorSingleClick)
227 connect(mIconView, SIGNAL(executed(QIconViewItem *)), 227 connect(mIconView, SIGNAL(executed(QIconViewItem *)),
228 this, SLOT(addresseeExecuted(QIconViewItem *))); 228 this, SLOT(addresseeExecuted(QIconViewItem *)));
229 else 229 else
230 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)), 230 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)),
231 this, SLOT(addresseeExecuted(QIconViewItem *))); 231 this, SLOT(addresseeExecuted(QIconViewItem *)));
232*/ 232*/
233 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 233 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
234 this, SLOT(addresseeExecuted(QIconViewItem *))); 234 this, SLOT(addresseeExecuted(QIconViewItem *)));
235 235
236} 236}
237void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field ) 237void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field )
238{ 238{
239 mIconView->clear(); 239 mIconView->clear();
240 mIconList.clear(); 240 mIconList.clear();
241 if ( s.isEmpty() || s == "*" ) { 241 if ( s.isEmpty() || s == "*" ) {
242 refresh(); 242 refresh();
243 return; 243 return;
244 } 244 }
245 QString pattern = s.lower()+"*"; 245 QString pattern = s.lower()+"*";
246 QRegExp re; 246 QRegExp re;
247 re.setWildcard(true); // most people understand these better. 247 re.setWildcard(true); // most people understand these better.
248 re.setCaseSensitive(false); 248 re.setCaseSensitive(false);
249 re.setPattern( pattern ); 249 re.setPattern( pattern );
250 if (!re.isValid()) 250 if (!re.isValid())
251 return; 251 return;
252 KABC::Addressee::List addresseeList = addressees(); 252 KABC::Addressee::List addresseeList = addressees();
253 KABC::Addressee::List::Iterator it; 253 KABC::Addressee::List::Iterator it;
254 if ( field ) { 254 if ( field ) {
255 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 255 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
256#if QT_VERSION >= 300 256#if QT_VERSION >= 300
257 if (re.search(field->value( *it ).lower()) != -1) 257 if (re.search(field->value( *it ).lower()) != -1)
258#else 258#else
259 if (re.match(field->value( *it ).lower()) != -1) 259 if (re.match(field->value( *it ).lower()) != -1)
260#endif 260#endif
261 mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); 261 mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView ));
262 262
263 263
264 } 264 }
265 } else { 265 } else {
266 KABC::Field::List fieldList = fields(); 266 KABC::Field::List fieldList = fields();
267 KABC::Field::List::ConstIterator fieldIt; 267 KABC::Field::List::ConstIterator fieldIt;
268 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 268 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
269 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 269 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
270#if QT_VERSION >= 300 270#if QT_VERSION >= 300
271 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 271 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
272#else 272#else
273 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 273 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
274#endif 274#endif
275 { 275 {
276 mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); 276 mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView ));
277 continue; 277 continue;
278 } 278 }
279 } 279 }
280 } 280 }
281 } 281 }
282 mIconView->arrangeItemsInGrid( true ); 282 mIconView->arrangeItemsInGrid( true );
283} 283}
284QStringList KAddressBookIconView::selectedUids() 284QStringList KAddressBookIconView::selectedUids()
285{ 285{
286 QStringList uidList; 286 QStringList uidList;
287 QIconViewItem *item; 287 QIconViewItem *item;
288 AddresseeIconViewItem *aItem; 288 AddresseeIconViewItem *aItem;
289 289
290 for (item = mIconView->firstItem(); item; item = item->nextItem()) 290 for (item = mIconView->firstItem(); item; item = item->nextItem())
291 { 291 {
292 if (item->isSelected()) 292 if (item->isSelected())
293 { 293 {
294#ifndef KAB_EMBEDDED 294#ifndef KAB_EMBEDDED
295 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 295 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
296#else //KAB_EMBEDDED 296#else //KAB_EMBEDDED
297 aItem = (AddresseeIconViewItem*)(item); 297 aItem = (AddresseeIconViewItem*)(item);
298#endif //KAB_EMBEDDED 298#endif //KAB_EMBEDDED
299 if (aItem) 299 if (aItem)
300 uidList << aItem->addressee().uid(); 300 uidList << aItem->addressee().uid();
301 } 301 }
302 } 302 }
303 303
304 return uidList; 304 return uidList;
305} 305}
306 306
307void KAddressBookIconView::refresh(QString uid) 307void KAddressBookIconView::refresh(QString uid)
308{ 308{
309 QIconViewItem *item; 309 QIconViewItem *item;
310 AddresseeIconViewItem *aItem; 310 AddresseeIconViewItem *aItem;
311 311
312 if ( uid.isNull() ) { 312 if ( uid.isNull() ) {
313 // Rebuild the view 313 // Rebuild the view
314 mIconView->clear(); 314 mIconView->clear();
315 mIconList.clear(); 315 mIconList.clear();
316 316
317 KABC::Addressee::List addresseeList = addressees(); 317 KABC::Addressee::List addresseeList = addressees();
318 KABC::Addressee::List::Iterator iter; 318 KABC::Addressee::List::Iterator iter;
319 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) 319 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) {
320 aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView ); 320 if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") )
321 continue;
322 aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView );
323 }
321 324
322 mIconView->arrangeItemsInGrid( true ); 325 mIconView->arrangeItemsInGrid( true );
323 326
324 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) 327 for ( item = mIconView->firstItem(); item; item = item->nextItem() )
325 { 328 {
326#ifndef KAB_EMBEDDED 329#ifndef KAB_EMBEDDED
327 AddresseeIconViewItem* aivi = dynamic_cast<AddresseeIconViewItem*>( item ); 330 AddresseeIconViewItem* aivi = dynamic_cast<AddresseeIconViewItem*>( item );
328#else //KAB_EMBEDDED 331#else //KAB_EMBEDDED
329 AddresseeIconViewItem* aivi = (AddresseeIconViewItem*)( item ); 332 AddresseeIconViewItem* aivi = (AddresseeIconViewItem*)( item );
330#endif //KAB_EMBEDDED 333#endif //KAB_EMBEDDED
331 mIconList.append( aivi ); 334 mIconList.append( aivi );
332 } 335 }
333 336
334 } else { 337 } else {
335 // Try to find the one to refresh 338 // Try to find the one to refresh
336 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) { 339 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) {
337#ifndef KAB_EMBEDDED 340#ifndef KAB_EMBEDDED
338 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 341 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
339#else //KAB_EMBEDDED 342#else //KAB_EMBEDDED
340 aItem = (AddresseeIconViewItem*)(item); 343 aItem = (AddresseeIconViewItem*)(item);
341#endif //KAB_EMBEDDED 344#endif //KAB_EMBEDDED
342 if ((aItem) && (aItem->addressee().uid() == uid)) { 345 if ((aItem) && (aItem->addressee().uid() == uid)) {
343 aItem->refresh(); 346 aItem->refresh();
344 mIconView->arrangeItemsInGrid( true ); 347 mIconView->arrangeItemsInGrid( true );
345 return; 348 return;
346 } 349 }
347 } 350 }
348 refresh( QString::null ); 351 refresh( QString::null );
349 } 352 }
350} 353}
351 354
352void KAddressBookIconView::setSelected(QString uid, bool selected) 355void KAddressBookIconView::setSelected(QString uid, bool selected)
353{ 356{
354 QIconViewItem *item; 357 QIconViewItem *item;
355 AddresseeIconViewItem *aItem; 358 AddresseeIconViewItem *aItem;
356 359
357 if (uid.isNull()) 360 if (uid.isNull())
358 { 361 {
359 mIconView->selectAll(selected); 362 mIconView->selectAll(selected);
360 } 363 }
361 else 364 else
362 { 365 {
363 bool found = false; 366 bool found = false;
364 for (item = mIconView->firstItem(); item && !found; 367 for (item = mIconView->firstItem(); item && !found;
365 item = item->nextItem()) 368 item = item->nextItem())
366 { 369 {
367#ifndef KAB_EMBEDDED 370#ifndef KAB_EMBEDDED
368 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 371 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
369#else //KAB_EMBEDDED 372#else //KAB_EMBEDDED
370 aItem = (AddresseeIconViewItem*)(item); 373 aItem = (AddresseeIconViewItem*)(item);
371#endif //KAB_EMBEDDED 374#endif //KAB_EMBEDDED
372 375
373 if ((aItem) && (aItem->addressee().uid() == uid)) 376 if ((aItem) && (aItem->addressee().uid() == uid))
374 { 377 {
375 mIconView->setSelected(aItem, selected); 378 mIconView->setSelected(aItem, selected);
376 mIconView->ensureItemVisible( aItem ); 379 mIconView->ensureItemVisible( aItem );
377 found = true; 380 found = true;
378 } 381 }
379 } 382 }
380 } 383 }
381} 384}
382 385
383void KAddressBookIconView::addresseeExecuted(QIconViewItem *item) 386void KAddressBookIconView::addresseeExecuted(QIconViewItem *item)
384{ 387{
385#ifndef KAB_EMBEDDED 388#ifndef KAB_EMBEDDED
386 AddresseeIconViewItem *aItem = dynamic_cast<AddresseeIconViewItem*>(item); 389 AddresseeIconViewItem *aItem = dynamic_cast<AddresseeIconViewItem*>(item);
387#else //KAB_EMBEDDED 390#else //KAB_EMBEDDED
388 AddresseeIconViewItem *aItem = (AddresseeIconViewItem*)(item); 391 AddresseeIconViewItem *aItem = (AddresseeIconViewItem*)(item);
389#endif //KAB_EMBEDDED 392#endif //KAB_EMBEDDED
390 393
391 if (aItem) { 394 if (aItem) {
392 emit executed(aItem->addressee().uid()); 395 emit executed(aItem->addressee().uid());
393 } 396 }
394} 397}
395 398
396void KAddressBookIconView::addresseeSelected() 399void KAddressBookIconView::addresseeSelected()
397{ 400{
398 QIconViewItem *item; 401 QIconViewItem *item;
399 AddresseeIconViewItem *aItem; 402 AddresseeIconViewItem *aItem;
400 403
401 bool found = false; 404 bool found = false;
402 for (item = mIconView->firstItem(); item && !found; 405 for (item = mIconView->firstItem(); item && !found;
403 item = item->nextItem()) 406 item = item->nextItem())
404 { 407 {
405 if (item->isSelected()) 408 if (item->isSelected())
406 { 409 {
407#ifndef KAB_EMBEDDED 410#ifndef KAB_EMBEDDED
408 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 411 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
409#else //KAB_EMBEDDED 412#else //KAB_EMBEDDED
410 aItem = (AddresseeIconViewItem*)(item); 413 aItem = (AddresseeIconViewItem*)(item);
411#endif //KAB_EMBEDDED 414#endif //KAB_EMBEDDED
412 if (aItem) 415 if (aItem)
413 { 416 {
414 emit selected(aItem->addressee().uid()); 417 emit selected(aItem->addressee().uid());
415 found = true; 418 found = true;
416 } 419 }
417 } 420 }
418 } 421 }
419 422
420 if (!found) 423 if (!found)
421 emit selected(QString::null); 424 emit selected(QString::null);
422} 425}
423 426
424#ifndef KAB_EMBEDDED 427#ifndef KAB_EMBEDDED
425#include "kaddressbookiconview.moc" 428#include "kaddressbookiconview.moc"
426#endif //KAB_EMBEDDED 429#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 1dc9198..fbfddba 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -1,443 +1,445 @@
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}
54 54
55void KAddressBookTableView::reconstructListView() 55void KAddressBookTableView::reconstructListView()
56{ 56{
57 if (mListView) 57 if (mListView)
58 { 58 {
59 disconnect(mListView, SIGNAL(selectionChanged()), 59 disconnect(mListView, SIGNAL(selectionChanged()),
60 this, SLOT(addresseeSelected())); 60 this, SLOT(addresseeSelected()));
61 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 61 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
62 this, SLOT(addresseeExecuted(QListViewItem*))); 62 this, SLOT(addresseeExecuted(QListViewItem*)));
63 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 63 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
64 this, SLOT(addresseeExecuted(QListViewItem*))); 64 this, SLOT(addresseeExecuted(QListViewItem*)));
65 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 65 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
66 SIGNAL(startDrag())); 66 SIGNAL(startDrag()));
67 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 67 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
68 this, SLOT(addresseeExecuted(QListViewItem*))); 68 this, SLOT(addresseeExecuted(QListViewItem*)));
69 69
70 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 70 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
71 SIGNAL(dropped(QDropEvent*))); 71 SIGNAL(dropped(QDropEvent*)));
72 delete mListView; 72 delete mListView;
73 } 73 }
74 74
75 mListView = new ContactListView( this, addressBook(), viewWidget() ); 75 mListView = new ContactListView( this, addressBook(), viewWidget() );
76 76
77 // Add the columns 77 // Add the columns
78 KABC::Field::List fieldList = fields(); 78 KABC::Field::List fieldList = fields();
79 KABC::Field::List::ConstIterator it; 79 KABC::Field::List::ConstIterator it;
80 80
81 int c = 0; 81 int c = 0;
82 for( it = fieldList.begin(); it != fieldList.end(); ++it ) { 82 for( it = fieldList.begin(); it != fieldList.end(); ++it ) {
83 mListView->addColumn( (*it)->label() ); 83 mListView->addColumn( (*it)->label() );
84 mListView->setColumnWidthMode(c++, QListView::Manual); 84 mListView->setColumnWidthMode(c++, QListView::Manual);
85//US 85//US
86 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); 86 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1());
87 } 87 }
88 88
89 connect(mListView, SIGNAL(selectionChanged()), 89 connect(mListView, SIGNAL(selectionChanged()),
90 this, SLOT(addresseeSelected())); 90 this, SLOT(addresseeSelected()));
91 connect(mListView, SIGNAL(startAddresseeDrag()), this, 91 connect(mListView, SIGNAL(startAddresseeDrag()), this,
92 SIGNAL(startDrag())); 92 SIGNAL(startDrag()));
93 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 93 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
94 SIGNAL(dropped(QDropEvent*))); 94 SIGNAL(dropped(QDropEvent*)));
95 95
96 if (KABPrefs::instance()->mHonorSingleClick) 96 if (KABPrefs::instance()->mHonorSingleClick)
97 connect(mListView, SIGNAL(executed(QListViewItem*)), 97 connect(mListView, SIGNAL(executed(QListViewItem*)),
98 this, SLOT(addresseeExecuted(QListViewItem*))); 98 this, SLOT(addresseeExecuted(QListViewItem*)));
99 else 99 else
100 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 100 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
101 this, SLOT(addresseeExecuted(QListViewItem*))); 101 this, SLOT(addresseeExecuted(QListViewItem*)));
102 connect(mListView, SIGNAL(returnPressed(QListViewItem*)), 102 connect(mListView, SIGNAL(returnPressed(QListViewItem*)),
103 this, SLOT(addresseeExecuted(QListViewItem*))); 103 this, SLOT(addresseeExecuted(QListViewItem*)));
104 connect(mListView, SIGNAL(signalDelete()), 104 connect(mListView, SIGNAL(signalDelete()),
105 this, SLOT(addresseeDeleted())); 105 this, SLOT(addresseeDeleted()));
106 106
107//US performceimprovement. Refresh is done from the outside 107//US performceimprovement. Refresh is done from the outside
108//US refresh(); 108//US refresh();
109 109
110 mListView->setSorting( 0, true ); 110 mListView->setSorting( 0, true );
111 mainLayout->addWidget( mListView ); 111 mainLayout->addWidget( mListView );
112 mainLayout->activate(); 112 mainLayout->activate();
113 mListView->show(); 113 mListView->show();
114} 114}
115 115
116void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) 116void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field )
117{ 117{
118 mListView->clear(); 118 mListView->clear();
119 if ( s.isEmpty() || s == "*" ) { 119 if ( s.isEmpty() || s == "*" ) {
120 refresh(); 120 refresh();
121 return; 121 return;
122 } 122 }
123 QString pattern = s.lower()+"*"; 123 QString pattern = s.lower()+"*";
124 QRegExp re; 124 QRegExp re;
125 re.setWildcard(true); // most people understand these better. 125 re.setWildcard(true); // most people understand these better.
126 re.setCaseSensitive(false); 126 re.setCaseSensitive(false);
127 re.setPattern( pattern ); 127 re.setPattern( pattern );
128 if (!re.isValid()) 128 if (!re.isValid())
129 return; 129 return;
130 KABC::Addressee::List addresseeList = addressees(); 130 KABC::Addressee::List addresseeList = addressees();
131 KABC::Addressee::List::Iterator it; 131 KABC::Addressee::List::Iterator it;
132 if ( field ) { 132 if ( field ) {
133 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 133 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
134#if QT_VERSION >= 300 134#if QT_VERSION >= 300
135 if (re.search(field->value( *it ).lower()) != -1) 135 if (re.search(field->value( *it ).lower()) != -1)
136#else 136#else
137 if (re.match(field->value( *it ).lower()) != -1) 137 if (re.match(field->value( *it ).lower()) != -1)
138#endif 138#endif
139 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 139 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
140 140
141 } 141 }
142 } else { 142 } else {
143 KABC::Field::List fieldList = fields(); 143 KABC::Field::List fieldList = fields();
144 KABC::Field::List::ConstIterator fieldIt; 144 KABC::Field::List::ConstIterator fieldIt;
145 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 145 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
146 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 146 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
147#if QT_VERSION >= 300 147#if QT_VERSION >= 300
148 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 148 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
149#else 149#else
150 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 150 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
151#endif 151#endif
152 { 152 {
153 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 153 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
154 break; 154 break;
155 } 155 }
156 } 156 }
157 } 157 }
158 } 158 }
159 // Sometimes the background pixmap gets messed up when we add lots 159 // Sometimes the background pixmap gets messed up when we add lots
160 // of items. 160 // of items.
161 mListView->repaint(); 161 mListView->repaint();
162 emit selected(QString::null); 162 emit selected(QString::null);
163 163
164} 164}
165void KAddressBookTableView::writeConfig(KConfig *config) 165void KAddressBookTableView::writeConfig(KConfig *config)
166{ 166{
167 KAddressBookView::writeConfig(config); 167 KAddressBookView::writeConfig(config);
168 168
169 mListView->saveLayout(config, config->group()); 169 mListView->saveLayout(config, config->group());
170} 170}
171 171
172void KAddressBookTableView::readConfig(KConfig *config) 172void KAddressBookTableView::readConfig(KConfig *config)
173{ 173{
174 KAddressBookView::readConfig( config ); 174 KAddressBookView::readConfig( config );
175 // The config could have changed the fields, so we need to reconstruct 175 // The config could have changed the fields, so we need to reconstruct
176 // the listview. 176 // the listview.
177 reconstructListView(); 177 reconstructListView();
178 178
179 // costum colors? 179 // costum colors?
180 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 180 if ( config->readBoolEntry( "EnableCustomColors", false ) )
181 { 181 {
182 QPalette p( mListView->palette() ); 182 QPalette p( mListView->palette() );
183 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 183 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
184 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 184 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
185 c = p.color(QPalette::Normal, QColorGroup::Text ); 185 c = p.color(QPalette::Normal, QColorGroup::Text );
186 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 186 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
187 c = p.color(QPalette::Normal, QColorGroup::Button ); 187 c = p.color(QPalette::Normal, QColorGroup::Button );
188 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 188 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
189 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 189 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
190 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 190 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
191 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 191 c = p.color(QPalette::Normal, QColorGroup::Highlight );
192 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 192 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
193 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 193 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
194 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 194 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
195#ifndef KAB_EMBEDDED 195#ifndef KAB_EMBEDDED
196 c = KGlobalSettings::alternateBackgroundColor(); 196 c = KGlobalSettings::alternateBackgroundColor();
197#else //KAB_EMBEDDED 197#else //KAB_EMBEDDED
198 c = QColor(240, 240, 240); 198 c = QColor(240, 240, 240);
199#endif //KAB_EMBEDDED 199#endif //KAB_EMBEDDED
200 c = config->readColorEntry ("AlternatingBackgroundColor", &c); 200 c = config->readColorEntry ("AlternatingBackgroundColor", &c);
201 mListView->setAlternateColor(c); 201 mListView->setAlternateColor(c);
202 202
203 203
204 //US mListView->viewport()->setPalette( p ); 204 //US mListView->viewport()->setPalette( p );
205 mListView->setPalette( p ); 205 mListView->setPalette( p );
206 } 206 }
207 else 207 else
208 { 208 {
209 // needed if turned off during a session. 209 // needed if turned off during a session.
210 //US mListView->viewport()->setPalette( mListView->palette() ); 210 //US mListView->viewport()->setPalette( mListView->palette() );
211 mListView->setPalette( mListView->palette() ); 211 mListView->setPalette( mListView->palette() );
212 } 212 }
213 213
214 //custom fonts? 214 //custom fonts?
215 QFont f( font() ); 215 QFont f( font() );
216 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 216 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
217 { 217 {
218 mListView->setFont( config->readFontEntry( "TextFont", &f) ); 218 mListView->setFont( config->readFontEntry( "TextFont", &f) );
219 f.setBold( true ); 219 f.setBold( true );
220 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 220 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
221 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) ); 221 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) );
222 } 222 }
223 else 223 else
224 { 224 {
225 mListView->setFont( f ); 225 mListView->setFont( f );
226 f.setBold( true ); 226 f.setBold( true );
227 //US mListView->setHeaderFont( f ); 227 //US mListView->setHeaderFont( f );
228 mListView->header()->setFont( f ); 228 mListView->header()->setFont( f );
229 } 229 }
230 230
231 231
232 232
233 233
234 234
235 // Set the list view options 235 // Set the list view options
236 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", 236 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground",
237 true)); 237 true));
238 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); 238 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false));
239 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); 239 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true));
240 240
241 if (config->readBoolEntry("Background", false)) 241 if (config->readBoolEntry("Background", false))
242 mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); 242 mListView->setBackgroundPixmap(config->readEntry("BackgroundName"));
243 243
244 // Restore the layout of the listview 244 // Restore the layout of the listview
245 mListView->restoreLayout(config, config->group()); 245 mListView->restoreLayout(config, config->group());
246} 246}
247 247
248void KAddressBookTableView::refresh(QString uid) 248void KAddressBookTableView::refresh(QString uid)
249{ 249{
250 // For now just repopulate. In reality this method should 250 // For now just repopulate. In reality this method should
251 // check the value of uid, and if valid iterate through 251 // check the value of uid, and if valid iterate through
252 // the listview to find the entry, then tell it to refresh. 252 // the listview to find the entry, then tell it to refresh.
253 253
254 if (uid.isNull()) { 254 if (uid.isNull()) {
255 // Clear the list view 255 // Clear the list view
256 QString currentUID, nextUID; 256 QString currentUID, nextUID;
257#ifndef KAB_EMBEDDED 257#ifndef KAB_EMBEDDED
258 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); 258 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() );
259#else //KAB_EMBEDDED 259#else //KAB_EMBEDDED
260 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); 260 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() );
261#endif //KAB_EMBEDDED 261#endif //KAB_EMBEDDED
262 262
263 if ( currentItem ) { 263 if ( currentItem ) {
264#ifndef KAB_EMBEDDED 264#ifndef KAB_EMBEDDED
265 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); 265 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() );
266#else //KAB_EMBEDDED 266#else //KAB_EMBEDDED
267 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); 267 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() );
268#endif //KAB_EMBEDDED 268#endif //KAB_EMBEDDED
269 if ( nextItem ) 269 if ( nextItem )
270 nextUID = nextItem->addressee().uid(); 270 nextUID = nextItem->addressee().uid();
271 currentUID = currentItem->addressee().uid(); 271 currentUID = currentItem->addressee().uid();
272 } 272 }
273 273
274 mListView->clear(); 274 mListView->clear();
275 275
276 currentItem = 0; 276 currentItem = 0;
277 KABC::Addressee::List addresseeList = addressees(); 277 KABC::Addressee::List addresseeList = addressees();
278 KABC::Addressee::List::Iterator it; 278 KABC::Addressee::List::Iterator it;
279 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 279 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
280 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
281 continue;
280 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 282 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
281 if ( (*it).uid() == currentUID ) 283 if ( (*it).uid() == currentUID )
282 currentItem = item; 284 currentItem = item;
283 else if ( (*it).uid() == nextUID && !currentItem ) 285 else if ( (*it).uid() == nextUID && !currentItem )
284 currentItem = item; 286 currentItem = item;
285 } 287 }
286 288
287 // Sometimes the background pixmap gets messed up when we add lots 289 // Sometimes the background pixmap gets messed up when we add lots
288 // of items. 290 // of items.
289 mListView->repaint(); 291 mListView->repaint();
290 292
291 if ( currentItem ) { 293 if ( currentItem ) {
292 mListView->setCurrentItem( currentItem ); 294 mListView->setCurrentItem( currentItem );
293 mListView->ensureItemVisible( currentItem ); 295 mListView->ensureItemVisible( currentItem );
294 } 296 }
295 } else { 297 } else {
296 // Only need to update on entry. Iterate through and try to find it 298 // Only need to update on entry. Iterate through and try to find it
297 ContactListViewItem *ceItem; 299 ContactListViewItem *ceItem;
298 QListViewItemIterator it( mListView ); 300 QListViewItemIterator it( mListView );
299 while ( it.current() ) { 301 while ( it.current() ) {
300#ifndef KAB_EMBEDDED 302#ifndef KAB_EMBEDDED
301 ceItem = dynamic_cast<ContactListViewItem*>( it.current() ); 303 ceItem = dynamic_cast<ContactListViewItem*>( it.current() );
302#else //KAB_EMBEDDED 304#else //KAB_EMBEDDED
303 ceItem = (ContactListViewItem*)( it.current() ); 305 ceItem = (ContactListViewItem*)( it.current() );
304#endif //KAB_EMBEDDED 306#endif //KAB_EMBEDDED
305 307
306 if ( ceItem && ceItem->addressee().uid() == uid ) { 308 if ( ceItem && ceItem->addressee().uid() == uid ) {
307 ceItem->refresh(); 309 ceItem->refresh();
308 return; 310 return;
309 } 311 }
310 ++it; 312 ++it;
311 } 313 }
312 314
313 refresh( QString::null ); 315 refresh( QString::null );
314 } 316 }
315} 317}
316 318
317QStringList KAddressBookTableView::selectedUids() 319QStringList KAddressBookTableView::selectedUids()
318{ 320{
319 QStringList uidList; 321 QStringList uidList;
320 QListViewItem *item; 322 QListViewItem *item;
321 ContactListViewItem *ceItem; 323 ContactListViewItem *ceItem;
322 324
323 for(item = mListView->firstChild(); item; item = item->itemBelow()) 325 for(item = mListView->firstChild(); item; item = item->itemBelow())
324 { 326 {
325 if (mListView->isSelected( item )) 327 if (mListView->isSelected( item ))
326 { 328 {
327#ifndef KAB_EMBEDDED 329#ifndef KAB_EMBEDDED
328 ceItem = dynamic_cast<ContactListViewItem*>(item); 330 ceItem = dynamic_cast<ContactListViewItem*>(item);
329#else //KAB_EMBEDDED 331#else //KAB_EMBEDDED
330 ceItem = (ContactListViewItem*)(item); 332 ceItem = (ContactListViewItem*)(item);
331#endif //KAB_EMBEDDED 333#endif //KAB_EMBEDDED
332 334
333 if (ceItem != 0L) 335 if (ceItem != 0L)
334 uidList << ceItem->addressee().uid(); 336 uidList << ceItem->addressee().uid();
335 } 337 }
336 } 338 }
337 if ( uidList.count() == 0 ) 339 if ( uidList.count() == 0 )
338 if ( mListView->currentItem() ) { 340 if ( mListView->currentItem() ) {
339 ceItem = (ContactListViewItem*)(mListView->currentItem()) ; 341 ceItem = (ContactListViewItem*)(mListView->currentItem()) ;
340 uidList << ceItem->addressee().uid(); 342 uidList << ceItem->addressee().uid();
341 } 343 }
342 344
343 return uidList; 345 return uidList;
344} 346}
345 347
346void KAddressBookTableView::setSelected(QString uid, bool selected) 348void KAddressBookTableView::setSelected(QString uid, bool selected)
347{ 349{
348 QListViewItem *item; 350 QListViewItem *item;
349 ContactListViewItem *ceItem; 351 ContactListViewItem *ceItem;
350 352
351 if (uid.isNull()) 353 if (uid.isNull())
352 { 354 {
353 mListView->selectAll(selected); 355 mListView->selectAll(selected);
354 } 356 }
355 else 357 else
356 { 358 {
357 for(item = mListView->firstChild(); item; item = item->itemBelow()) 359 for(item = mListView->firstChild(); item; item = item->itemBelow())
358 { 360 {
359#ifndef KAB_EMBEDDED 361#ifndef KAB_EMBEDDED
360 ceItem = dynamic_cast<ContactListViewItem*>(item); 362 ceItem = dynamic_cast<ContactListViewItem*>(item);
361#else //KAB_EMBEDDED 363#else //KAB_EMBEDDED
362 ceItem = (ContactListViewItem*)(item); 364 ceItem = (ContactListViewItem*)(item);
363#endif //KAB_EMBEDDED 365#endif //KAB_EMBEDDED
364 366
365 367
366 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid)) 368 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid))
367 { 369 {
368 mListView->setSelected(item, selected); 370 mListView->setSelected(item, selected);
369 371
370 if (selected) 372 if (selected)
371 mListView->ensureItemVisible(item); 373 mListView->ensureItemVisible(item);
372 } 374 }
373 } 375 }
374 } 376 }
375} 377}
376 378
377void KAddressBookTableView::addresseeSelected() 379void KAddressBookTableView::addresseeSelected()
378{ 380{
379 // We need to try to find the first selected item. This might not be the 381 // We need to try to find the first selected item. This might not be the
380 // last selected item, but when QListView is in multiselection mode, 382 // last selected item, but when QListView is in multiselection mode,
381 // there is no way to figure out which one was 383 // there is no way to figure out which one was
382 // selected last. 384 // selected last.
383 QListViewItem *item; 385 QListViewItem *item;
384 bool found =false; 386 bool found =false;
385 for (item = mListView->firstChild(); item && !found; 387 for (item = mListView->firstChild(); item && !found;
386 item = item->nextSibling()) 388 item = item->nextSibling())
387 { 389 {
388 if (item->isSelected()) 390 if (item->isSelected())
389 { 391 {
390 found = true; 392 found = true;
391#ifndef KAB_EMBEDDED 393#ifndef KAB_EMBEDDED
392 ContactListViewItem *ceItem 394 ContactListViewItem *ceItem
393 = dynamic_cast<ContactListViewItem*>(item); 395 = dynamic_cast<ContactListViewItem*>(item);
394#else //KAB_EMBEDDED 396#else //KAB_EMBEDDED
395 ContactListViewItem *ceItem 397 ContactListViewItem *ceItem
396 = (ContactListViewItem*)(item); 398 = (ContactListViewItem*)(item);
397#endif //KAB_EMBEDDED 399#endif //KAB_EMBEDDED
398 400
399 if ( ceItem ) emit selected(ceItem->addressee().uid()); 401 if ( ceItem ) emit selected(ceItem->addressee().uid());
400 } 402 }
401 } 403 }
402 404
403 if (!found) 405 if (!found)
404 emit selected(QString::null); 406 emit selected(QString::null);
405} 407}
406 408
407void KAddressBookTableView::addresseeExecuted(QListViewItem *item) 409void KAddressBookTableView::addresseeExecuted(QListViewItem *item)
408{ 410{
409 if (item) 411 if (item)
410 { 412 {
411#ifndef KAB_EMBEDDED 413#ifndef KAB_EMBEDDED
412 ContactListViewItem *ceItem 414 ContactListViewItem *ceItem
413 = dynamic_cast<ContactListViewItem*>(item); 415 = dynamic_cast<ContactListViewItem*>(item);
414#else //KAB_EMBEDDED 416#else //KAB_EMBEDDED
415 ContactListViewItem *ceItem 417 ContactListViewItem *ceItem
416 = (ContactListViewItem*)(item); 418 = (ContactListViewItem*)(item);
417#endif //KAB_EMBEDDED 419#endif //KAB_EMBEDDED
418 420
419 if (ceItem) 421 if (ceItem)
420 { 422 {
421 emit executed(ceItem->addressee().uid()); 423 emit executed(ceItem->addressee().uid());
422 } 424 }
423 } 425 }
424 else 426 else
425 { 427 {
426 emit executed(QString::null); 428 emit executed(QString::null);
427 } 429 }
428} 430}
429 431
430void KAddressBookTableView::addresseeDeleted() 432void KAddressBookTableView::addresseeDeleted()
431{ 433{
432 434
433 emit deleteRequest(); 435 emit deleteRequest();
434 436
435} 437}
436 438
437 439
438 440
439 441
440 442
441#ifndef KAB_EMBEDDED 443#ifndef KAB_EMBEDDED
442#include "kaddressbooktableview.moc" 444#include "kaddressbooktableview.moc"
443#endif //KAB_EMBEDDED 445#endif //KAB_EMBEDDED
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index f7766f8..c7ce8cb 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,1027 +1,1028 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "simplealarmclient.h" 62#include "simplealarmclient.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#include "koimportoldialog.h" 69#include "koimportoldialog.h"
70#endif 70#endif
71#include "mainwindow.h" 71#include "mainwindow.h"
72 72
73class KOex2phonePrefs : public QDialog 73class KOex2phonePrefs : public QDialog
74{ 74{
75 public: 75 public:
76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
77 QDialog( parent, name, true ) 77 QDialog( parent, name, true )
78 { 78 {
79 setCaption( i18n("Export to phone options") ); 79 setCaption( i18n("Export to phone options") );
80 QVBoxLayout* lay = new QVBoxLayout( this ); 80 QVBoxLayout* lay = new QVBoxLayout( this );
81 lay->setSpacing( 3 ); 81 lay->setSpacing( 3 );
82 lay->setMargin( 3 ); 82 lay->setMargin( 3 );
83 QLabel *lab; 83 QLabel *lab;
84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
85 lab->setAlignment (AlignHCenter ); 85 lab->setAlignment (AlignHCenter );
86 QHBox* temphb; 86 QHBox* temphb;
87 temphb = new QHBox( this ); 87 temphb = new QHBox( this );
88 new QLabel( i18n("I/O device: "), temphb ); 88 new QLabel( i18n("I/O device: "), temphb );
89 mPhoneDevice = new QLineEdit( temphb); 89 mPhoneDevice = new QLineEdit( temphb);
90 lay->addWidget( temphb ); 90 lay->addWidget( temphb );
91 temphb = new QHBox( this ); 91 temphb = new QHBox( this );
92 new QLabel( i18n("Connection: "), temphb ); 92 new QLabel( i18n("Connection: "), temphb );
93 mPhoneConnection = new QLineEdit( temphb); 93 mPhoneConnection = new QLineEdit( temphb);
94 lay->addWidget( temphb ); 94 lay->addWidget( temphb );
95 temphb = new QHBox( this ); 95 temphb = new QHBox( this );
96 new QLabel( i18n("Model(opt.): "), temphb ); 96 new QLabel( i18n("Model(opt.): "), temphb );
97 mPhoneModel = new QLineEdit( temphb); 97 mPhoneModel = new QLineEdit( temphb);
98 lay->addWidget( temphb ); 98 lay->addWidget( temphb );
99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
100 mWriteBackFuture->setChecked( true ); 100 mWriteBackFuture->setChecked( true );
101 lay->addWidget( mWriteBackFuture ); 101 lay->addWidget( mWriteBackFuture );
102 temphb = new QHBox( this ); 102 temphb = new QHBox( this );
103 new QLabel( i18n("Max. weeks in future: ") , temphb ); 103 new QLabel( i18n("Max. weeks in future: ") , temphb );
104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
105 mWriteBackFutureWeeks->setValue( 8 ); 105 mWriteBackFutureWeeks->setValue( 8 );
106 lay->addWidget( temphb ); 106 lay->addWidget( temphb );
107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
108 lab->setAlignment (AlignHCenter ); 108 lab->setAlignment (AlignHCenter );
109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
110 lay->addWidget( ok ); 110 lay->addWidget( ok );
111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
112 lay->addWidget( cancel ); 112 lay->addWidget( cancel );
113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
115 resize( 220, 240 ); 115 resize( 220, 240 );
116 116
117 } 117 }
118 118
119public: 119public:
120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
121 QCheckBox* mWriteBackFuture; 121 QCheckBox* mWriteBackFuture;
122 QSpinBox* mWriteBackFutureWeeks; 122 QSpinBox* mWriteBackFutureWeeks;
123}; 123};
124 124
125int globalFlagBlockStartup; 125int globalFlagBlockStartup;
126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
127 QMainWindow( parent, name ) 127 QMainWindow( parent, name )
128{ 128{
129 129
130#ifdef DESKTOP_VERSION 130#ifdef DESKTOP_VERSION
131 setFont( QFont("Arial"), 14 ); 131 setFont( QFont("Arial"), 14 );
132#endif 132#endif
133 mServerSocket = 0; 133 mServerSocket = 0;
134 mClosed = false; 134 mClosed = false;
135 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 135 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
136 QString confFile = locateLocal("config","korganizerrc"); 136 QString confFile = locateLocal("config","korganizerrc");
137 QFileInfo finf ( confFile ); 137 QFileInfo finf ( confFile );
138 bool showWarning = !finf.exists(); 138 bool showWarning = !finf.exists();
139 setIcon(SmallIcon( "ko24" ) ); 139 setIcon(SmallIcon( "ko24" ) );
140 mBlockAtStartup = true; 140 mBlockAtStartup = true;
141 mFlagKeyPressed = false; 141 mFlagKeyPressed = false;
142 setCaption("KOrganizer/Pi"); 142 setCaption("KOrganizer/Pi");
143 KOPrefs *p = KOPrefs::instance(); 143 KOPrefs *p = KOPrefs::instance();
144 KPimGlobalPrefs::instance()->setGlobalConfig(); 144 KPimGlobalPrefs::instance()->setGlobalConfig();
145 if ( p->mHourSize > 18 ) 145 if ( p->mHourSize > 18 )
146 p->mHourSize = 18; 146 p->mHourSize = 18;
147 QMainWindow::ToolBarDock tbd; 147 QMainWindow::ToolBarDock tbd;
148 if ( p->mToolBarHor ) { 148 if ( p->mToolBarHor ) {
149 if ( p->mToolBarUp ) 149 if ( p->mToolBarUp )
150 tbd = Bottom; 150 tbd = Bottom;
151 else 151 else
152 tbd = Top; 152 tbd = Top;
153 } 153 }
154 else { 154 else {
155 if ( p->mToolBarUp ) 155 if ( p->mToolBarUp )
156 tbd = Right; 156 tbd = Right;
157 else 157 else
158 tbd = Left; 158 tbd = Left;
159 } 159 }
160 if ( KOPrefs::instance()->mUseAppColors ) 160 if ( KOPrefs::instance()->mUseAppColors )
161 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 161 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
162 globalFlagBlockStartup = 1; 162 globalFlagBlockStartup = 1;
163 iconToolBar = new QPEToolBar( this ); 163 iconToolBar = new QPEToolBar( this );
164 addToolBar (iconToolBar , tbd ); 164 addToolBar (iconToolBar , tbd );
165 mCalendarModifiedFlag = false; 165 mCalendarModifiedFlag = false;
166 166
167 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 167 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
168 splash->setAlignment ( AlignCenter ); 168 splash->setAlignment ( AlignCenter );
169 setCentralWidget( splash ); 169 setCentralWidget( splash );
170#ifndef DESKTOP_VERSION 170#ifndef DESKTOP_VERSION
171 showMaximized(); 171 showMaximized();
172#endif 172#endif
173 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 173 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
174 setDefaultPreferences(); 174 setDefaultPreferences();
175 mCalendar = new CalendarLocal(); 175 mCalendar = new CalendarLocal();
176 mView = new CalendarView( mCalendar, this,"mCalendar " ); 176 mView = new CalendarView( mCalendar, this,"mCalendar " );
177 mView->hide(); 177 mView->hide();
178 //mView->resize(splash->size() ); 178 //mView->resize(splash->size() );
179 initActions(); 179 initActions();
180 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 180 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
181 mSyncManager->setBlockSave(false); 181 mSyncManager->setBlockSave(false);
182 mView->setSyncManager(mSyncManager); 182 mView->setSyncManager(mSyncManager);
183#ifndef DESKTOP_VERSION 183#ifndef DESKTOP_VERSION
184 iconToolBar->show(); 184 iconToolBar->show();
185 qApp->processEvents(); 185 qApp->processEvents();
186#endif 186#endif
187 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 187 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
188 int vh = height() ; 188 int vh = height() ;
189 int vw = width(); 189 int vw = width();
190 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 190 //qDebug("Toolbar hei %d ",iconToolBar->height() );
191 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 191 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
192 vh -= iconToolBar->height(); 192 vh -= iconToolBar->height();
193 } else { 193 } else {
194 vw -= iconToolBar->height(); 194 vw -= iconToolBar->height();
195 } 195 }
196 //mView->setMaximumSize( splash->size() ); 196 //mView->setMaximumSize( splash->size() );
197 //mView->resize( splash->size() ); 197 //mView->resize( splash->size() );
198 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 198 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
199 mView->readSettings(); 199 mView->readSettings();
200 bool newFile = false; 200 bool newFile = false;
201 if( !QFile::exists( defaultFileName() ) ) { 201 if( !QFile::exists( defaultFileName() ) ) {
202 QFileInfo finfo ( defaultFileName() ); 202 QFileInfo finfo ( defaultFileName() );
203 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 203 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
204 qDebug("oldfile %s ", oldFile.latin1()); 204 qDebug("oldfile %s ", oldFile.latin1());
205 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 205 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
206 finfo.setFile( oldFile ); 206 finfo.setFile( oldFile );
207 if (finfo.exists() ) { 207 if (finfo.exists() ) {
208 KMessageBox::information( this, message); 208 KMessageBox::information( this, message);
209 mView->openCalendar( oldFile ); 209 mView->openCalendar( oldFile );
210 qApp->processEvents(); 210 qApp->processEvents();
211 } else { 211 } else {
212 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 212 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
213 finfo.setFile( oldFile ); 213 finfo.setFile( oldFile );
214 if (finfo.exists() ) { 214 if (finfo.exists() ) {
215 KMessageBox::information( this, message); 215 KMessageBox::information( this, message);
216 mView->openCalendar( oldFile ); 216 mView->openCalendar( oldFile );
217 qApp->processEvents(); 217 qApp->processEvents();
218 } 218 }
219 } 219 }
220 mView->saveCalendar( defaultFileName() ); 220 mView->saveCalendar( defaultFileName() );
221 newFile = true; 221 newFile = true;
222 } 222 }
223 223
224 QTime neededSaveTime = QDateTime::currentDateTime().time(); 224 QTime neededSaveTime = QDateTime::currentDateTime().time();
225 mView->openCalendar( defaultFileName() ); 225 mView->openCalendar( defaultFileName() );
226 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 226 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
227 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 227 qDebug("KO: Calendar loading time: %d ms",msNeeded );
228 228
229 if ( KOPrefs::instance()->mLanguageChanged ) { 229 if ( KOPrefs::instance()->mLanguageChanged ) {
230 KOPrefs::instance()->setCategoryDefaults(); 230 KOPrefs::instance()->setCategoryDefaults();
231 int count = mView->addCategories(); 231 int count = mView->addCategories();
232 KOPrefs::instance()->mLanguageChanged = false; 232 KOPrefs::instance()->mLanguageChanged = false;
233 } 233 }
234 processIncidenceSelection( 0 ); 234 processIncidenceSelection( 0 );
235 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 235 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
236 SLOT( processIncidenceSelection( Incidence * ) ) ); 236 SLOT( processIncidenceSelection( Incidence * ) ) );
237 connect( mView, SIGNAL( modifiedChanged( bool ) ), 237 connect( mView, SIGNAL( modifiedChanged( bool ) ),
238 SLOT( slotModifiedChanged( bool ) ) ); 238 SLOT( slotModifiedChanged( bool ) ) );
239 239
240 240
241 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 241 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
242 mView->setModified( false ); 242 mView->setModified( false );
243 mBlockAtStartup = false; 243 mBlockAtStartup = false;
244 mView->setModified( false ); 244 mView->setModified( false );
245 setCentralWidget( mView ); 245 setCentralWidget( mView );
246 globalFlagBlockStartup = 0; 246 globalFlagBlockStartup = 0;
247 mView->show(); 247 mView->show();
248 delete splash; 248 delete splash;
249 if ( newFile ) 249 if ( newFile )
250 mView->updateConfig(); 250 mView->updateConfig();
251 // qApp->processEvents(); 251 // qApp->processEvents();
252 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 252 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
253 //fillSyncMenu(); 253 //fillSyncMenu();
254 254
255 255
256 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 256 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
257 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 257 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
258 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 258 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
259 mSyncManager->setDefaultFileName( defaultFileName()); 259 mSyncManager->setDefaultFileName( defaultFileName());
260 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
260 mSyncManager->fillSyncMenu(); 261 mSyncManager->fillSyncMenu();
261 262
262 263
263 264
264 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 265 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
265 if ( showWarning ) { 266 if ( showWarning ) {
266 KMessageBox::information( this, 267 KMessageBox::information( this,
267 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 268 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
268 qApp->processEvents(); 269 qApp->processEvents();
269 mView->dialogManager()->showSyncOptions(); 270 mView->dialogManager()->showSyncOptions();
270 } 271 }
271 272
272 //US listen for result adressed from Ka/Pi 273 //US listen for result adressed from Ka/Pi
273#ifndef DESKTOP_VERSION 274#ifndef DESKTOP_VERSION
274 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 275 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
275#endif 276#endif
276} 277}
277MainWindow::~MainWindow() 278MainWindow::~MainWindow()
278{ 279{
279 //qDebug("MainWindow::~MainWindow() "); 280 //qDebug("MainWindow::~MainWindow() ");
280 //save toolbar location 281 //save toolbar location
281 delete mServerSocket; 282 delete mServerSocket;
282 delete mCalendar; 283 delete mCalendar;
283 delete KOPrefs::instance(); 284 delete KOPrefs::instance();
284 delete KIncidenceFormatter::instance(); 285 delete KIncidenceFormatter::instance();
285 286
286 287
287} 288}
288void MainWindow::showMaximized () 289void MainWindow::showMaximized ()
289{ 290{
290#ifndef DESKTOP_VERSION 291#ifndef DESKTOP_VERSION
291 if ( ! globalFlagBlockStartup ) 292 if ( ! globalFlagBlockStartup )
292 if ( mClosed ) 293 if ( mClosed )
293 mView->goToday(); 294 mView->goToday();
294#endif 295#endif
295 QWidget::showMaximized () ; 296 QWidget::showMaximized () ;
296 mClosed = false; 297 mClosed = false;
297} 298}
298void MainWindow::closeEvent( QCloseEvent* ce ) 299void MainWindow::closeEvent( QCloseEvent* ce )
299{ 300{
300 301
301 302
302 303
303 if ( ! KOPrefs::instance()->mAskForQuit ) { 304 if ( ! KOPrefs::instance()->mAskForQuit ) {
304 saveOnClose(); 305 saveOnClose();
305 mClosed = true; 306 mClosed = true;
306 ce->accept(); 307 ce->accept();
307 return; 308 return;
308 309
309 } 310 }
310 311
311 switch( QMessageBox::information( this, "KO/Pi", 312 switch( QMessageBox::information( this, "KO/Pi",
312 i18n("Do you really want\nto close KO/Pi?"), 313 i18n("Do you really want\nto close KO/Pi?"),
313 i18n("Close"), i18n("No"), 314 i18n("Close"), i18n("No"),
314 0, 0 ) ) { 315 0, 0 ) ) {
315 case 0: 316 case 0:
316 saveOnClose(); 317 saveOnClose();
317 mClosed = true; 318 mClosed = true;
318 ce->accept(); 319 ce->accept();
319 break; 320 break;
320 case 1: 321 case 1:
321 ce->ignore(); 322 ce->ignore();
322 break; 323 break;
323 case 2: 324 case 2:
324 325
325 default: 326 default:
326 break; 327 break;
327 } 328 }
328 329
329 330
330} 331}
331 332
332void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 333void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
333{ 334{
334 QDataStream stream( data, IO_ReadOnly ); 335 QDataStream stream( data, IO_ReadOnly );
335 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 336 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
336 //QString datamess; 337 //QString datamess;
337 //qDebug("message "); 338 //qDebug("message ");
338 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 339 qDebug("KO: QCOP message received: %s ", cmsg.data() );
339 340
340 if ( cmsg == "-writeFile" ) { 341 if ( cmsg == "-writeFile" ) {
341 // I made from the "-writeFile" an "-writeAlarm" 342 // I made from the "-writeFile" an "-writeAlarm"
342 mView->viewManager()->showWhatsNextView(); 343 mView->viewManager()->showWhatsNextView();
343 mCalendar->checkAlarmForIncidence( 0, true); 344 mCalendar->checkAlarmForIncidence( 0, true);
344 showMaximized(); 345 showMaximized();
345 raise(); 346 raise();
346 return; 347 return;
347 } 348 }
348 349
349 if ( cmsg == "-writeFile" ) { 350 if ( cmsg == "-writeFile" ) {
350 // I made from the "-writeFile" an "-writeAlarm" 351 // I made from the "-writeFile" an "-writeAlarm"
351 mView->viewManager()->showWhatsNextView(); 352 mView->viewManager()->showWhatsNextView();
352 mCalendar->checkAlarmForIncidence( 0, true); 353 mCalendar->checkAlarmForIncidence( 0, true);
353 showMaximized(); 354 showMaximized();
354 raise(); 355 raise();
355 return; 356 return;
356 357
357 } 358 }
358 if ( cmsg == "-writeFileSilent" ) { 359 if ( cmsg == "-writeFileSilent" ) {
359 // I made from the "-writeFile" an "-writeAlarm" 360 // I made from the "-writeFile" an "-writeAlarm"
360 // mView->viewManager()->showWhatsNextView(); 361 // mView->viewManager()->showWhatsNextView();
361 mCalendar->checkAlarmForIncidence( 0, true); 362 mCalendar->checkAlarmForIncidence( 0, true);
362 //showMaximized(); 363 //showMaximized();
363 //raise(); 364 //raise();
364 hide(); 365 hide();
365 return; 366 return;
366 } 367 }
367 if ( cmsg == "-newCountdown" ) { 368 if ( cmsg == "-newCountdown" ) {
368 qDebug("newCountdown "); 369 qDebug("newCountdown ");
369 370
370 } 371 }
371 QString msg ; 372 QString msg ;
372 QString allmsg = cmsg; 373 QString allmsg = cmsg;
373 while ( allmsg.length() > 0 ) { 374 while ( allmsg.length() > 0 ) {
374 int nextC = allmsg.find( "-", 1 ); 375 int nextC = allmsg.find( "-", 1 );
375 if ( nextC == -1 ) { 376 if ( nextC == -1 ) {
376 msg = allmsg; 377 msg = allmsg;
377 allmsg = ""; 378 allmsg = "";
378 } else{ 379 } else{
379 msg = allmsg.left( nextC ); 380 msg = allmsg.left( nextC );
380 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 381 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
381 } 382 }
382 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 383 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
383 if ( msg == "-newEvent" ) { 384 if ( msg == "-newEvent" ) {
384 mView->newEvent(); 385 mView->newEvent();
385 } 386 }
386 if ( msg == "-newTodo" ) { 387 if ( msg == "-newTodo" ) {
387 mView->newTodo(); 388 mView->newTodo();
388 389
389 } 390 }
390 if ( msg == "-showWN" ) { 391 if ( msg == "-showWN" ) {
391 mView->viewManager()->showWhatsNextView(); 392 mView->viewManager()->showWhatsNextView();
392 } 393 }
393 if ( msg == "-showTodo" ) { 394 if ( msg == "-showTodo" ) {
394 mView->viewManager()->showTodoView(); 395 mView->viewManager()->showTodoView();
395 } 396 }
396 if ( msg == "-showList" ) { 397 if ( msg == "-showList" ) {
397 mView->viewManager()->showListView(); 398 mView->viewManager()->showListView();
398 } 399 }
399 else if ( msg == "-showDay" ) { 400 else if ( msg == "-showDay" ) {
400 mView->viewManager()->showDayView(); 401 mView->viewManager()->showDayView();
401 } 402 }
402 else if ( msg == "-showWWeek" ) { 403 else if ( msg == "-showWWeek" ) {
403 mView->viewManager()->showWorkWeekView(); 404 mView->viewManager()->showWorkWeekView();
404 } 405 }
405 else if ( msg == "-ringSync" ) { 406 else if ( msg == "-ringSync" ) {
406 mSyncManager->multiSync( false ); 407 mSyncManager->multiSync( false );
407 } 408 }
408 else if ( msg == "-showWeek" ) { 409 else if ( msg == "-showWeek" ) {
409 mView->viewManager()->showWeekView(); 410 mView->viewManager()->showWeekView();
410 } 411 }
411 else if ( msg == "-showTodo" ) { 412 else if ( msg == "-showTodo" ) {
412 mView->viewManager()->showTodoView(); 413 mView->viewManager()->showTodoView();
413 } 414 }
414 else if ( msg == "-showJournal" ) { 415 else if ( msg == "-showJournal" ) {
415 mView->dateNavigator()->selectDates( 1 ); 416 mView->dateNavigator()->selectDates( 1 );
416 mView->dateNavigator()->selectToday(); 417 mView->dateNavigator()->selectToday();
417 mView->viewManager()->showJournalView(); 418 mView->viewManager()->showJournalView();
418 } 419 }
419 else if ( msg == "-showKO" ) { 420 else if ( msg == "-showKO" ) {
420 mView->viewManager()->showNextXView(); 421 mView->viewManager()->showNextXView();
421 } 422 }
422 else if ( msg == "-showWNext" || msg == "nextView()" ) { 423 else if ( msg == "-showWNext" || msg == "nextView()" ) {
423 mView->viewManager()->showWhatsNextView(); 424 mView->viewManager()->showWhatsNextView();
424 } 425 }
425 else if ( msg == "-showNextXView" ) { 426 else if ( msg == "-showNextXView" ) {
426 mView->viewManager()->showNextXView(); 427 mView->viewManager()->showNextXView();
427 } 428 }
428 429
429 430
430 } 431 }
431 432
432 showMaximized(); 433 showMaximized();
433 raise(); 434 raise();
434} 435}
435 436
436QPixmap MainWindow::loadPixmap( QString name ) 437QPixmap MainWindow::loadPixmap( QString name )
437{ 438{
438 return SmallIcon( name ); 439 return SmallIcon( name );
439 440
440} 441}
441void MainWindow::initActions() 442void MainWindow::initActions()
442{ 443{
443 //KOPrefs::instance()->mShowFullMenu 444 //KOPrefs::instance()->mShowFullMenu
444 iconToolBar->clear(); 445 iconToolBar->clear();
445 KOPrefs *p = KOPrefs::instance(); 446 KOPrefs *p = KOPrefs::instance();
446 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 447 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
447 448
448 QPopupMenu *viewMenu = new QPopupMenu( this ); 449 QPopupMenu *viewMenu = new QPopupMenu( this );
449 QPopupMenu *actionMenu = new QPopupMenu( this ); 450 QPopupMenu *actionMenu = new QPopupMenu( this );
450 QPopupMenu *importMenu = new QPopupMenu( this ); 451 QPopupMenu *importMenu = new QPopupMenu( this );
451 selectFilterMenu = new QPopupMenu( this ); 452 selectFilterMenu = new QPopupMenu( this );
452 selectFilterMenu->setCheckable( true ); 453 selectFilterMenu->setCheckable( true );
453 syncMenu = new QPopupMenu( this ); 454 syncMenu = new QPopupMenu( this );
454 configureAgendaMenu = new QPopupMenu( this ); 455 configureAgendaMenu = new QPopupMenu( this );
455 configureToolBarMenu = new QPopupMenu( this ); 456 configureToolBarMenu = new QPopupMenu( this );
456 QPopupMenu *helpMenu = new QPopupMenu( this ); 457 QPopupMenu *helpMenu = new QPopupMenu( this );
457 if ( KOPrefs::instance()->mShowFullMenu ) { 458 if ( KOPrefs::instance()->mShowFullMenu ) {
458 QMenuBar *menuBar1; 459 QMenuBar *menuBar1;
459 menuBar1 = menuBar(); 460 menuBar1 = menuBar();
460 menuBar1->insertItem( i18n("File"), importMenu ); 461 menuBar1->insertItem( i18n("File"), importMenu );
461 menuBar1->insertItem( i18n("View"), viewMenu ); 462 menuBar1->insertItem( i18n("View"), viewMenu );
462 menuBar1->insertItem( i18n("Actions"), actionMenu ); 463 menuBar1->insertItem( i18n("Actions"), actionMenu );
463 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 464 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
464 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 465 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
465 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 466 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
466 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 467 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
467 menuBar1->insertItem( i18n("Help"), helpMenu ); 468 menuBar1->insertItem( i18n("Help"), helpMenu );
468 } else { 469 } else {
469 QPEMenuBar *menuBar1; 470 QPEMenuBar *menuBar1;
470 menuBar1 = new QPEMenuBar( iconToolBar ); 471 menuBar1 = new QPEMenuBar( iconToolBar );
471 QPopupMenu *menuBar = new QPopupMenu( this ); 472 QPopupMenu *menuBar = new QPopupMenu( this );
472 menuBar1->insertItem( i18n("ME"), menuBar); 473 menuBar1->insertItem( i18n("ME"), menuBar);
473 menuBar->insertItem( i18n("File"), importMenu ); 474 menuBar->insertItem( i18n("File"), importMenu );
474 menuBar->insertItem( i18n("View"), viewMenu ); 475 menuBar->insertItem( i18n("View"), viewMenu );
475 menuBar->insertItem( i18n("Actions"), actionMenu ); 476 menuBar->insertItem( i18n("Actions"), actionMenu );
476 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 477 menuBar->insertItem( i18n("Synchronize"), syncMenu );
477 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 478 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
478 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 479 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
479 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 480 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
480 menuBar->insertItem( i18n("Help"), helpMenu ); 481 menuBar->insertItem( i18n("Help"), helpMenu );
481 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 482 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
482 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 483 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
483 } 484 }
484 connect ( syncMenu, SIGNAL( activated ( int ) ), this, SLOT (slotSyncMenu( int ) ) ); 485 connect ( syncMenu, SIGNAL( activated ( int ) ), this, SLOT (slotSyncMenu( int ) ) );
485 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 486 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
486 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) ); 487 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) );
487 488
488 // ****************** 489 // ******************
489 QAction *action; 490 QAction *action;
490 QIconSet icon; 491 QIconSet icon;
491 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 492 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
492 configureToolBarMenu->setCheckable( true ); 493 configureToolBarMenu->setCheckable( true );
493 494
494 QString pathString = ""; 495 QString pathString = "";
495 if ( !p->mToolBarMiniIcons ) { 496 if ( !p->mToolBarMiniIcons ) {
496 if ( QApplication::desktop()->width() < 480 ) 497 if ( QApplication::desktop()->width() < 480 )
497 pathString += "icons16/"; 498 pathString += "icons16/";
498 } else 499 } else
499 pathString += "iconsmini/"; 500 pathString += "iconsmini/";
500 configureAgendaMenu->setCheckable( true ); 501 configureAgendaMenu->setCheckable( true );
501 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 ); 502 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 );
502 configureAgendaMenu->insertSeparator(); 503 configureAgendaMenu->insertSeparator();
503 configureAgendaMenu->insertItem(i18n("Tiny"), 4 ); 504 configureAgendaMenu->insertItem(i18n("Tiny"), 4 );
504 configureAgendaMenu->insertItem(i18n("Small"), 6 ); 505 configureAgendaMenu->insertItem(i18n("Small"), 6 );
505 configureAgendaMenu->insertItem(i18n("Medium"), 8 ); 506 configureAgendaMenu->insertItem(i18n("Medium"), 8 );
506 configureAgendaMenu->insertItem(i18n("Normal"), 10 ); 507 configureAgendaMenu->insertItem(i18n("Normal"), 10 );
507 configureAgendaMenu->insertItem(i18n("Large"), 12 ); 508 configureAgendaMenu->insertItem(i18n("Large"), 12 );
508 configureAgendaMenu->insertItem(i18n("Big"), 14 ); 509 configureAgendaMenu->insertItem(i18n("Big"), 14 );
509 configureAgendaMenu->insertItem(i18n("Bigger"), 16 ); 510 configureAgendaMenu->insertItem(i18n("Bigger"), 16 );
510 configureAgendaMenu->insertItem(i18n("Biggest"), 18 ); 511 configureAgendaMenu->insertItem(i18n("Biggest"), 18 );
511 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 512 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
512 513
513 icon = loadPixmap( pathString + "configure" ); 514 icon = loadPixmap( pathString + "configure" );
514 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 515 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
515 action->addTo( actionMenu ); 516 action->addTo( actionMenu );
516 connect( action, SIGNAL( activated() ), 517 connect( action, SIGNAL( activated() ),
517 mView, SLOT( edit_options() ) ); 518 mView, SLOT( edit_options() ) );
518 actionMenu->insertSeparator(); 519 actionMenu->insertSeparator();
519 icon = loadPixmap( pathString + "newevent" ); 520 icon = loadPixmap( pathString + "newevent" );
520 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 521 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
521 configureToolBarMenu->insertSeparator(); 522 configureToolBarMenu->insertSeparator();
522 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 523 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
523 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 524 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
524 ne_action->addTo( actionMenu ); 525 ne_action->addTo( actionMenu );
525 connect( ne_action, SIGNAL( activated() ), 526 connect( ne_action, SIGNAL( activated() ),
526 mView, SLOT( newEvent() ) ); 527 mView, SLOT( newEvent() ) );
527 icon = loadPixmap( pathString + "newtodo" ); 528 icon = loadPixmap( pathString + "newtodo" );
528 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 529 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
529 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 530 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
530 nt_action->addTo( actionMenu ); 531 nt_action->addTo( actionMenu );
531 connect( nt_action, SIGNAL( activated() ), 532 connect( nt_action, SIGNAL( activated() ),
532 mView, SLOT( newTodo() ) ); 533 mView, SLOT( newTodo() ) );
533 icon = loadPixmap( pathString + "navi" ); 534 icon = loadPixmap( pathString + "navi" );
534 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 535 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
535 action->addTo( viewMenu ); 536 action->addTo( viewMenu );
536 connect( action, SIGNAL( activated() ), 537 connect( action, SIGNAL( activated() ),
537 mView, SLOT( toggleDateNavigatorWidget() ) ); 538 mView, SLOT( toggleDateNavigatorWidget() ) );
538 icon = loadPixmap( pathString + "filter" ); 539 icon = loadPixmap( pathString + "filter" );
539 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 540 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
540 action->addTo( viewMenu ); 541 action->addTo( viewMenu );
541 connect( action, SIGNAL( activated() ), 542 connect( action, SIGNAL( activated() ),
542 mView, SLOT( toggleFilter() ) ); 543 mView, SLOT( toggleFilter() ) );
543 544
544 545
545 viewMenu->insertSeparator(); 546 viewMenu->insertSeparator();
546 icon = loadPixmap( pathString + "picker" ); 547 icon = loadPixmap( pathString + "picker" );
547 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 548 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
548 action->addTo( viewMenu ); 549 action->addTo( viewMenu );
549 connect( action, SIGNAL( activated() ), 550 connect( action, SIGNAL( activated() ),
550 mView, SLOT( showDatePicker() ) ); 551 mView, SLOT( showDatePicker() ) );
551 action->addTo( iconToolBar ); 552 action->addTo( iconToolBar );
552 viewMenu->insertSeparator(); 553 viewMenu->insertSeparator();
553 icon = loadPixmap( pathString + "list" ); 554 icon = loadPixmap( pathString + "list" );
554 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 555 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
555 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 556 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
556 showlist_action->addTo( viewMenu ); 557 showlist_action->addTo( viewMenu );
557 connect( showlist_action, SIGNAL( activated() ), 558 connect( showlist_action, SIGNAL( activated() ),
558 mView->viewManager(), SLOT( showListView() ) ); 559 mView->viewManager(), SLOT( showListView() ) );
559 560
560 561
561 icon = loadPixmap( pathString + "day" ); 562 icon = loadPixmap( pathString + "day" );
562 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 563 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
563 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 564 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
564 day1_action->addTo( viewMenu ); 565 day1_action->addTo( viewMenu );
565 // action->addTo( toolBar ); 566 // action->addTo( toolBar );
566 connect( day1_action, SIGNAL( activated() ), 567 connect( day1_action, SIGNAL( activated() ),
567 mView->viewManager(), SLOT( showDayView() ) ); 568 mView->viewManager(), SLOT( showDayView() ) );
568 569
569 icon = loadPixmap( pathString + "workweek" ); 570 icon = loadPixmap( pathString + "workweek" );
570 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 571 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
571 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 572 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
572 day5_action->addTo( viewMenu ); 573 day5_action->addTo( viewMenu );
573 connect( day5_action, SIGNAL( activated() ), 574 connect( day5_action, SIGNAL( activated() ),
574 mView->viewManager(), SLOT( showWorkWeekView() ) ); 575 mView->viewManager(), SLOT( showWorkWeekView() ) );
575 576
576 icon = loadPixmap( pathString + "week" ); 577 icon = loadPixmap( pathString + "week" );
577 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 578 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
578 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 579 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
579 day7_action->addTo( viewMenu ); 580 day7_action->addTo( viewMenu );
580 connect( day7_action, SIGNAL( activated() ), 581 connect( day7_action, SIGNAL( activated() ),
581 mView->viewManager(), SLOT( showWeekView() ) ); 582 mView->viewManager(), SLOT( showWeekView() ) );
582 583
583 icon = loadPixmap( pathString + "month" ); 584 icon = loadPixmap( pathString + "month" );
584 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 585 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
585 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 586 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
586 month_action->addTo( viewMenu ); 587 month_action->addTo( viewMenu );
587 connect( month_action, SIGNAL( activated() ), 588 connect( month_action, SIGNAL( activated() ),
588 mView->viewManager(), SLOT( showMonthView() ) ); 589 mView->viewManager(), SLOT( showMonthView() ) );
589 590
590 icon = loadPixmap( pathString + "todo" ); 591 icon = loadPixmap( pathString + "todo" );
591 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 592 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
592 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 593 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
593 todoview_action->addTo( viewMenu ); 594 todoview_action->addTo( viewMenu );
594 connect( todoview_action, SIGNAL( activated() ), 595 connect( todoview_action, SIGNAL( activated() ),
595 mView->viewManager(), SLOT( showTodoView() ) ); 596 mView->viewManager(), SLOT( showTodoView() ) );
596 597
597 icon = loadPixmap( pathString + "journal" ); 598 icon = loadPixmap( pathString + "journal" );
598 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 599 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
599 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 600 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
600 viewjournal_action->addTo( viewMenu ); 601 viewjournal_action->addTo( viewMenu );
601 connect( viewjournal_action, SIGNAL( activated() ), 602 connect( viewjournal_action, SIGNAL( activated() ),
602 mView->viewManager(), SLOT( showJournalView() ) ); 603 mView->viewManager(), SLOT( showJournalView() ) );
603 604
604 icon = loadPixmap( pathString + "xdays" ); 605 icon = loadPixmap( pathString + "xdays" );
605 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 ); 606 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 );
606 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 607 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
607 xdays_action->addTo( viewMenu ); 608 xdays_action->addTo( viewMenu );
608 connect( xdays_action, SIGNAL( activated() ), 609 connect( xdays_action, SIGNAL( activated() ),
609 mView->viewManager(), SLOT( showNextXView() ) ); 610 mView->viewManager(), SLOT( showNextXView() ) );
610 611
611 icon = loadPixmap( pathString + "whatsnext" ); 612 icon = loadPixmap( pathString + "whatsnext" );
612 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 ); 613 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 );
613 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 614 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
614 whatsnext_action->addTo( viewMenu ); 615 whatsnext_action->addTo( viewMenu );
615 connect( whatsnext_action, SIGNAL( activated() ), 616 connect( whatsnext_action, SIGNAL( activated() ),
616 mView->viewManager(), SLOT( showWhatsNextView() ) ); 617 mView->viewManager(), SLOT( showWhatsNextView() ) );
617 618
618#if 0 619#if 0
619 action = new QAction( "view_timespan", "Time Span", 0, this ); 620 action = new QAction( "view_timespan", "Time Span", 0, this );
620 action->addTo( viewMenu ); 621 action->addTo( viewMenu );
621 connect( action, SIGNAL( activated() ), 622 connect( action, SIGNAL( activated() ),
622 mView->viewManager(), SLOT( showTimeSpanView() ) ); 623 mView->viewManager(), SLOT( showTimeSpanView() ) );
623#endif 624#endif
624 625
625 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 626 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
626 this ); 627 this );
627 mNewSubTodoAction->addTo( actionMenu ); 628 mNewSubTodoAction->addTo( actionMenu );
628 connect( mNewSubTodoAction, SIGNAL( activated() ), 629 connect( mNewSubTodoAction, SIGNAL( activated() ),
629 mView, SLOT( newSubTodo() ) ); 630 mView, SLOT( newSubTodo() ) );
630 631
631 actionMenu->insertSeparator(); 632 actionMenu->insertSeparator();
632 633
633 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 634 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
634 mShowAction->addTo( actionMenu ); 635 mShowAction->addTo( actionMenu );
635 connect( mShowAction, SIGNAL( activated() ), 636 connect( mShowAction, SIGNAL( activated() ),
636 mView, SLOT( showIncidence() ) ); 637 mView, SLOT( showIncidence() ) );
637 638
638 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 639 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
639 mEditAction->addTo( actionMenu ); 640 mEditAction->addTo( actionMenu );
640 connect( mEditAction, SIGNAL( activated() ), 641 connect( mEditAction, SIGNAL( activated() ),
641 mView, SLOT( editIncidence() ) ); 642 mView, SLOT( editIncidence() ) );
642 643
643 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 644 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
644 mDeleteAction->addTo( actionMenu ); 645 mDeleteAction->addTo( actionMenu );
645 connect( mDeleteAction, SIGNAL( activated() ), 646 connect( mDeleteAction, SIGNAL( activated() ),
646 mView, SLOT( deleteIncidence() ) ); 647 mView, SLOT( deleteIncidence() ) );
647 648
648 649
649 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 650 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
650 mCloneAction->addTo( actionMenu ); 651 mCloneAction->addTo( actionMenu );
651 connect( mCloneAction, SIGNAL( activated() ), 652 connect( mCloneAction, SIGNAL( activated() ),
652 mView, SLOT( cloneIncidence() ) ); 653 mView, SLOT( cloneIncidence() ) );
653 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 654 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
654 mMoveAction->addTo( actionMenu ); 655 mMoveAction->addTo( actionMenu );
655 connect( mMoveAction, SIGNAL( activated() ), 656 connect( mMoveAction, SIGNAL( activated() ),
656 mView, SLOT( moveIncidence() ) ); 657 mView, SLOT( moveIncidence() ) );
657 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 658 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
658 mBeamAction->addTo( actionMenu ); 659 mBeamAction->addTo( actionMenu );
659 connect( mBeamAction, SIGNAL( activated() ), 660 connect( mBeamAction, SIGNAL( activated() ),
660 mView, SLOT( beamIncidence() ) ); 661 mView, SLOT( beamIncidence() ) );
661 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 662 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
662 mCancelAction->addTo( actionMenu ); 663 mCancelAction->addTo( actionMenu );
663 connect( mCancelAction, SIGNAL( activated() ), 664 connect( mCancelAction, SIGNAL( activated() ),
664 mView, SLOT( toggleCancelIncidence() ) ); 665 mView, SLOT( toggleCancelIncidence() ) );
665 666
666 actionMenu->insertSeparator(); 667 actionMenu->insertSeparator();
667 668
668 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 669 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
669 this ); 670 this );
670 action->addTo( actionMenu ); 671 action->addTo( actionMenu );
671 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 672 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
672 673
673 icon = loadPixmap( pathString + "search" ); 674 icon = loadPixmap( pathString + "search" );
674 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 675 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
675 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4); 676 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4);
676 search_action->addTo( actionMenu ); 677 search_action->addTo( actionMenu );
677 connect( search_action, SIGNAL( activated() ), 678 connect( search_action, SIGNAL( activated() ),
678 mView->dialogManager(), SLOT( showSearchDialog() ) ); 679 mView->dialogManager(), SLOT( showSearchDialog() ) );
679 680
680 icon = loadPixmap( pathString + "today" ); 681 icon = loadPixmap( pathString + "today" );
681 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 682 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
682 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 683 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
683 today_action->addTo( actionMenu ); 684 today_action->addTo( actionMenu );
684 connect( today_action, SIGNAL( activated() ), 685 connect( today_action, SIGNAL( activated() ),
685 mView, SLOT( goToday() ) ); 686 mView, SLOT( goToday() ) );
686 687
687 if ( KOPrefs::instance()->mShowFullMenu ) { 688 if ( KOPrefs::instance()->mShowFullMenu ) {
688 actionMenu->insertSeparator(); 689 actionMenu->insertSeparator();
689 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 690 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
690 691
691 } 692 }
692 // actionMenu->insertSeparator(); 693 // actionMenu->insertSeparator();
693 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 694 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
694 this ); 695 this );
695 action->addTo( importMenu ); 696 action->addTo( importMenu );
696 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 697 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
697 action = new QAction( "import_quick", i18n("Import last file"), 0, 698 action = new QAction( "import_quick", i18n("Import last file"), 0,
698 this ); 699 this );
699 action->addTo( importMenu ); 700 action->addTo( importMenu );
700 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 701 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
701 importMenu->insertSeparator(); 702 importMenu->insertSeparator();
702 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 703 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
703 this ); 704 this );
704 action->addTo( importMenu ); 705 action->addTo( importMenu );
705 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 706 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
706#ifndef DESKTOP_VERSION 707#ifndef DESKTOP_VERSION
707 importMenu->insertSeparator(); 708 importMenu->insertSeparator();
708 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 709 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
709 this ); 710 this );
710 action->addTo( importMenu ); 711 action->addTo( importMenu );
711 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 712 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
712#else 713#else
713#ifdef _WIN32_ 714#ifdef _WIN32_
714 importMenu->insertSeparator(); 715 importMenu->insertSeparator();
715 action = new QAction( "import_ol", i18n("Import from OL"), 0, 716 action = new QAction( "import_ol", i18n("Import from OL"), 0,
716 this ); 717 this );
717 action->addTo( importMenu ); 718 action->addTo( importMenu );
718 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 719 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
719#endif 720#endif
720#endif 721#endif
721 722
722 importMenu->insertSeparator(); 723 importMenu->insertSeparator();
723 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 724 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
724 this ); 725 this );
725 action->addTo( importMenu ); 726 action->addTo( importMenu );
726 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 727 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
727 728
728 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 729 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
729 this ); 730 this );
730 action->addTo( importMenu ); 731 action->addTo( importMenu );
731 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 732 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
732 733
733 importMenu->insertSeparator(); 734 importMenu->insertSeparator();
734 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 735 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
735 this ); 736 this );
736 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 737 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
737 738
738 739
739 //LR 740 //LR
740 QPopupMenu *ex2phone = new QPopupMenu( this ); 741 QPopupMenu *ex2phone = new QPopupMenu( this );
741 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 742 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
742 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 743 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
743 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 744 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
744 importMenu->insertItem( i18n("Export to phone"), ex2phone ); 745 importMenu->insertItem( i18n("Export to phone"), ex2phone );
745 746
746 importMenu->insertSeparator(); 747 importMenu->insertSeparator();
747 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 748 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
748 this ); 749 this );
749 action->addTo( importMenu ); 750 action->addTo( importMenu );
750 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 751 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
751#ifndef DESKTOP_VERSION 752#ifndef DESKTOP_VERSION
752 importMenu->insertSeparator(); 753 importMenu->insertSeparator();
753 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 754 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
754 this ); 755 this );
755 action->addTo( importMenu ); 756 action->addTo( importMenu );
756 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 757 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
757 758
758 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 759 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
759 this ); 760 this );
760 action->addTo( importMenu ); 761 action->addTo( importMenu );
761 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 762 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
762#else 763#else
763 importMenu->insertSeparator(); 764 importMenu->insertSeparator();
764 icon = loadPixmap( pathString + "print" ); 765 icon = loadPixmap( pathString + "print" );
765 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 766 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
766 action->addTo( importMenu ); 767 action->addTo( importMenu );
767 connect( action, SIGNAL( activated() ), 768 connect( action, SIGNAL( activated() ),
768 this, SLOT( printCal() ) ); 769 this, SLOT( printCal() ) );
769 770
770 icon = loadPixmap( pathString + "print" ); 771 icon = loadPixmap( pathString + "print" );
771 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 772 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
772 action->addTo( importMenu ); 773 action->addTo( importMenu );
773 connect( action, SIGNAL( activated() ), 774 connect( action, SIGNAL( activated() ),
774 this, SLOT( printSel() ) ); 775 this, SLOT( printSel() ) );
775#endif 776#endif
776 importMenu->insertSeparator(); 777 importMenu->insertSeparator();
777 action = new QAction( "beam all", i18n("Save"), 0, 778 action = new QAction( "beam all", i18n("Save"), 0,
778 this ); 779 this );
779 action->addTo( importMenu ); 780 action->addTo( importMenu );
780 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 781 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
781 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 782 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
782 this ); 783 this );
783 action->addTo( importMenu ); 784 action->addTo( importMenu );
784 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 785 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
785 786
786 //menuBar->insertItem( "Configure",configureMenu ); 787 //menuBar->insertItem( "Configure",configureMenu );
787 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 788 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
788 icon = loadPixmap( "korganizer/korganizer" ); 789 icon = loadPixmap( "korganizer/korganizer" );
789 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 790 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
790 action->addTo( helpMenu ); 791 action->addTo( helpMenu );
791 connect( action, SIGNAL( activated() ), 792 connect( action, SIGNAL( activated() ),
792 SLOT( keyBindings() ) ); 793 SLOT( keyBindings() ) );
793 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 794 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
794 action->addTo( helpMenu ); 795 action->addTo( helpMenu );
795 connect( action, SIGNAL( activated() ), 796 connect( action, SIGNAL( activated() ),
796 SLOT( features() ) ); 797 SLOT( features() ) );
797 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 798 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
798 action->addTo( helpMenu ); 799 action->addTo( helpMenu );
799 connect( action, SIGNAL( activated() ), 800 connect( action, SIGNAL( activated() ),
800 SLOT( aboutAutoSaving() ) ); 801 SLOT( aboutAutoSaving() ) );
801 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 802 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
802 action->addTo( helpMenu ); 803 action->addTo( helpMenu );
803 connect( action, SIGNAL( activated() ), 804 connect( action, SIGNAL( activated() ),
804 SLOT( aboutKnownBugs() ) ); 805 SLOT( aboutKnownBugs() ) );
805 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 806 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
806 action->addTo( helpMenu ); 807 action->addTo( helpMenu );
807 connect( action, SIGNAL( activated() ), 808 connect( action, SIGNAL( activated() ),
808 SLOT( usertrans() ) ); 809 SLOT( usertrans() ) );
809 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 810 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
810 action->addTo( helpMenu ); 811 action->addTo( helpMenu );
811 connect( action, SIGNAL( activated() ), 812 connect( action, SIGNAL( activated() ),
812 SLOT( synchowto() ) ); 813 SLOT( synchowto() ) );
813 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 814 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
814 action->addTo( helpMenu ); 815 action->addTo( helpMenu );
815 connect( action, SIGNAL( activated() ), 816 connect( action, SIGNAL( activated() ),
816 SLOT( whatsNew() ) ); 817 SLOT( whatsNew() ) );
817 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 818 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
818 action->addTo( helpMenu ); 819 action->addTo( helpMenu );
819 connect( action, SIGNAL( activated() ), 820 connect( action, SIGNAL( activated() ),
820 SLOT( faq() ) ); 821 SLOT( faq() ) );
821 822
822 823
823 action = new QAction( "about", i18n("About..."), 0, this ); 824 action = new QAction( "about", i18n("About..."), 0, this );
824 action->addTo( helpMenu ); 825 action->addTo( helpMenu );
825 connect( action, SIGNAL( activated() ), 826 connect( action, SIGNAL( activated() ),
826 SLOT( about() ) ); 827 SLOT( about() ) );
827 action = new QAction( "licence", i18n("Licence..."), 0, this ); 828 action = new QAction( "licence", i18n("Licence..."), 0, this );
828 action->addTo( helpMenu ); 829 action->addTo( helpMenu );
829 connect( action, SIGNAL( activated() ), 830 connect( action, SIGNAL( activated() ),
830 SLOT( licence() ) ); 831 SLOT( licence() ) );
831 //menuBar->insertSeparator(); 832 //menuBar->insertSeparator();
832 833
833 // ****************************************************** 834 // ******************************************************
834 // menubar icons 835 // menubar icons
835 836
836 837
837 iconToolBar->setHorizontalStretchable (true ); 838 iconToolBar->setHorizontalStretchable (true );
838 //menuBar->insertItem( iconToolBar ); 839 //menuBar->insertItem( iconToolBar );
839 //xdays_action 840 //xdays_action
840 if (p-> mShowIconNewEvent) 841 if (p-> mShowIconNewEvent)
841 ne_action->addTo( iconToolBar ); 842 ne_action->addTo( iconToolBar );
842 if (p->mShowIconNewTodo ) 843 if (p->mShowIconNewTodo )
843 nt_action->addTo( iconToolBar ); 844 nt_action->addTo( iconToolBar );
844 if (p-> mShowIconSearch) 845 if (p-> mShowIconSearch)
845 search_action->addTo( iconToolBar ); 846 search_action->addTo( iconToolBar );
846 if (p-> mShowIconNext) 847 if (p-> mShowIconNext)
847 whatsnext_action->addTo( iconToolBar ); 848 whatsnext_action->addTo( iconToolBar );
848 if (p-> mShowIconNextDays) 849 if (p-> mShowIconNextDays)
849 xdays_action->addTo( iconToolBar ); 850 xdays_action->addTo( iconToolBar );
850 if (p-> mShowIconList) 851 if (p-> mShowIconList)
851 showlist_action->addTo( iconToolBar ); 852 showlist_action->addTo( iconToolBar );
852 if (p-> mShowIconDay1) 853 if (p-> mShowIconDay1)
853 day1_action->addTo( iconToolBar ); 854 day1_action->addTo( iconToolBar );
854 if (p-> mShowIconDay5) 855 if (p-> mShowIconDay5)
855 day5_action->addTo( iconToolBar ); 856 day5_action->addTo( iconToolBar );
856 if (p-> mShowIconDay7) 857 if (p-> mShowIconDay7)
857 day7_action->addTo( iconToolBar ); 858 day7_action->addTo( iconToolBar );
858 if (p-> mShowIconMonth) 859 if (p-> mShowIconMonth)
859 month_action->addTo( iconToolBar ); 860 month_action->addTo( iconToolBar );
860 if (p-> mShowIconTodoview) 861 if (p-> mShowIconTodoview)
861 todoview_action->addTo( iconToolBar ); 862 todoview_action->addTo( iconToolBar );
862 if (p-> mShowIconJournal) 863 if (p-> mShowIconJournal)
863 viewjournal_action->addTo( iconToolBar ); 864 viewjournal_action->addTo( iconToolBar );
864 icon = loadPixmap( pathString + "2leftarrowB" ); 865 icon = loadPixmap( pathString + "2leftarrowB" );
865 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 866 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
866 if (p-> mShowIconBackFast) { 867 if (p-> mShowIconBackFast) {
867 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 868 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
868 connect( action, SIGNAL( activated() ), 869 connect( action, SIGNAL( activated() ),
869 mView, SLOT( goPreviousMonth() ) ); 870 mView, SLOT( goPreviousMonth() ) );
870 action->addTo( iconToolBar ); 871 action->addTo( iconToolBar );
871 } 872 }
872 icon = loadPixmap( pathString + "1leftarrowB" ); 873 icon = loadPixmap( pathString + "1leftarrowB" );
873 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 874 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
874 if (p-> mShowIconBack) { 875 if (p-> mShowIconBack) {
875 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 876 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
876 connect( action, SIGNAL( activated() ), 877 connect( action, SIGNAL( activated() ),
877 mView, SLOT( goPrevious() ) ); 878 mView, SLOT( goPrevious() ) );
878 action->addTo( iconToolBar ); 879 action->addTo( iconToolBar );
879 } 880 }
880 if (p-> mShowIconToday) 881 if (p-> mShowIconToday)
881 today_action->addTo( iconToolBar ); 882 today_action->addTo( iconToolBar );
882 icon = loadPixmap( pathString + "1rightarrowB" ); 883 icon = loadPixmap( pathString + "1rightarrowB" );
883 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 884 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
884 if (p-> mShowIconForward) { 885 if (p-> mShowIconForward) {
885 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 886 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
886 connect( action, SIGNAL( activated() ), 887 connect( action, SIGNAL( activated() ),
887 mView, SLOT( goNext() ) ); 888 mView, SLOT( goNext() ) );
888 action->addTo( iconToolBar ); 889 action->addTo( iconToolBar );
889 } 890 }
890 icon = loadPixmap( pathString + "2rightarrowB" ); 891 icon = loadPixmap( pathString + "2rightarrowB" );
891 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 892 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
892 if (p-> mShowIconForwardFast) { 893 if (p-> mShowIconForwardFast) {
893 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 894 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
894 connect( action, SIGNAL( activated() ), 895 connect( action, SIGNAL( activated() ),
895 mView, SLOT( goNextMonth() ) ); 896 mView, SLOT( goNextMonth() ) );
896 action->addTo( iconToolBar ); 897 action->addTo( iconToolBar );
897 } 898 }
898 899
899 900
900 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 901 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
901 902
902 if (p-> mShowIconNewEvent) 903 if (p-> mShowIconNewEvent)
903 configureToolBarMenu->setItemChecked( 10, true ); 904 configureToolBarMenu->setItemChecked( 10, true );
904 if (p->mShowIconNewTodo ) 905 if (p->mShowIconNewTodo )
905 configureToolBarMenu->setItemChecked( 20, true ); 906 configureToolBarMenu->setItemChecked( 20, true );
906 if (p-> mShowIconSearch) 907 if (p-> mShowIconSearch)
907 configureToolBarMenu->setItemChecked( 120, true ); 908 configureToolBarMenu->setItemChecked( 120, true );
908 if (p-> mShowIconList) 909 if (p-> mShowIconList)
909 configureToolBarMenu->setItemChecked( 30, true ); 910 configureToolBarMenu->setItemChecked( 30, true );
910 if (p-> mShowIconDay1) 911 if (p-> mShowIconDay1)
911 configureToolBarMenu->setItemChecked( 40, true ); 912 configureToolBarMenu->setItemChecked( 40, true );
912 if (p-> mShowIconDay5) 913 if (p-> mShowIconDay5)
913 configureToolBarMenu->setItemChecked( 50, true ); 914 configureToolBarMenu->setItemChecked( 50, true );
914 if (p-> mShowIconDay7) 915 if (p-> mShowIconDay7)
915 configureToolBarMenu->setItemChecked( 60, true ); 916 configureToolBarMenu->setItemChecked( 60, true );
916 if (p-> mShowIconMonth) 917 if (p-> mShowIconMonth)
917 configureToolBarMenu->setItemChecked( 70, true ); 918 configureToolBarMenu->setItemChecked( 70, true );
918 if (p-> mShowIconTodoview) 919 if (p-> mShowIconTodoview)
919 configureToolBarMenu->setItemChecked( 80, true ); 920 configureToolBarMenu->setItemChecked( 80, true );
920 if (p-> mShowIconBackFast) 921 if (p-> mShowIconBackFast)
921 configureToolBarMenu->setItemChecked( 200, true ); 922 configureToolBarMenu->setItemChecked( 200, true );
922 if (p-> mShowIconBack) 923 if (p-> mShowIconBack)
923 configureToolBarMenu->setItemChecked( 210, true ); 924 configureToolBarMenu->setItemChecked( 210, true );
924 if (p-> mShowIconToday) 925 if (p-> mShowIconToday)
925 configureToolBarMenu->setItemChecked( 130, true ); 926 configureToolBarMenu->setItemChecked( 130, true );
926 if (p-> mShowIconForward) 927 if (p-> mShowIconForward)
927 configureToolBarMenu->setItemChecked( 220, true ); 928 configureToolBarMenu->setItemChecked( 220, true );
928 if (p-> mShowIconForwardFast) 929 if (p-> mShowIconForwardFast)
929 configureToolBarMenu->setItemChecked( 230, true ); 930 configureToolBarMenu->setItemChecked( 230, true );
930 if (p-> mShowIconNextDays) 931 if (p-> mShowIconNextDays)
931 configureToolBarMenu->setItemChecked( 100, true ); 932 configureToolBarMenu->setItemChecked( 100, true );
932 if (p-> mShowIconNext) 933 if (p-> mShowIconNext)
933 configureToolBarMenu->setItemChecked( 110, true ); 934 configureToolBarMenu->setItemChecked( 110, true );
934 if (p-> mShowIconJournal) 935 if (p-> mShowIconJournal)
935 configureToolBarMenu->setItemChecked( 90, true ); 936 configureToolBarMenu->setItemChecked( 90, true );
936 if (p-> mShowIconWhatsThis) 937 if (p-> mShowIconWhatsThis)
937 configureToolBarMenu->setItemChecked( 300, true ); 938 configureToolBarMenu->setItemChecked( 300, true );
938 939
939 QLabel* dummy = new QLabel( iconToolBar ); 940 QLabel* dummy = new QLabel( iconToolBar );
940 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 941 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
941 if (!p-> mShowIconStretch) 942 if (!p-> mShowIconStretch)
942 iconToolBar->setStretchableWidget ( dummy ) ; 943 iconToolBar->setStretchableWidget ( dummy ) ;
943 else 944 else
944 configureToolBarMenu->setItemChecked( 5, true ); 945 configureToolBarMenu->setItemChecked( 5, true );
945 if (p-> mShowIconWhatsThis) 946 if (p-> mShowIconWhatsThis)
946 QWhatsThis::whatsThisButton ( iconToolBar ); 947 QWhatsThis::whatsThisButton ( iconToolBar );
947 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 948 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
948 configureAgenda( p->mHourSize ); 949 configureAgenda( p->mHourSize );
949 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 950 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
950} 951}
951 952
952void MainWindow::exportToPhone( int mode ) 953void MainWindow::exportToPhone( int mode )
953{ 954{
954 955
955 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 956 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
956 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 957 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
957 KOex2phonePrefs ex2phone; 958 KOex2phonePrefs ex2phone;
958 959
959 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 960 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
960 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 961 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
961 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 962 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
962 if ( mode == 1 ) 963 if ( mode == 1 )
963 ex2phone.setCaption(i18n("Export complete calendar")); 964 ex2phone.setCaption(i18n("Export complete calendar"));
964 if ( mode == 2 ) 965 if ( mode == 2 )
965 ex2phone.setCaption(i18n("Export filtered calendar")); 966 ex2phone.setCaption(i18n("Export filtered calendar"));
966 967
967 if ( !ex2phone.exec() ) { 968 if ( !ex2phone.exec() ) {
968 return; 969 return;
969 } 970 }
970 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 971 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
971 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 972 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
972 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 973 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
973 974
974 int inFuture = 0; 975 int inFuture = 0;
975 if ( ex2phone.mWriteBackFuture->isChecked() ) 976 if ( ex2phone.mWriteBackFuture->isChecked() )
976 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 977 inFuture = ex2phone.mWriteBackFutureWeeks->value();
977 QPtrList<Incidence> delSel; 978 QPtrList<Incidence> delSel;
978 if ( mode == 1 ) 979 if ( mode == 1 )
979 delSel = mCalendar->rawIncidences(); 980 delSel = mCalendar->rawIncidences();
980 if ( mode == 2 ) 981 if ( mode == 2 )
981 delSel = mCalendar->incidences(); 982 delSel = mCalendar->incidences();
982 CalendarLocal* cal = new CalendarLocal(); 983 CalendarLocal* cal = new CalendarLocal();
983 cal->setLocalTime(); 984 cal->setLocalTime();
984 Incidence *incidence = delSel.first(); 985 Incidence *incidence = delSel.first();
985 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 986 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
986 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 987 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
987 while ( incidence ) { 988 while ( incidence ) {
988 if ( incidence->type() != "Journal" ) { 989 if ( incidence->type() != "Journal" ) {
989 bool add = true; 990 bool add = true;
990 if ( inFuture ) { 991 if ( inFuture ) {
991 QDateTime dt; 992 QDateTime dt;
992 if ( incidence->type() == "Todo" ) { 993 if ( incidence->type() == "Todo" ) {
993 Todo * t = (Todo*)incidence; 994 Todo * t = (Todo*)incidence;
994 if ( t->hasDueDate() ) 995 if ( t->hasDueDate() )
995 dt = t->dtDue(); 996 dt = t->dtDue();
996 else 997 else
997 dt = cur.addSecs( 62 ); 998 dt = cur.addSecs( 62 );
998 } 999 }
999 else { 1000 else {
1000 bool ok; 1001 bool ok;
1001 dt = incidence->getNextOccurence( cur, &ok ); 1002 dt = incidence->getNextOccurence( cur, &ok );
1002 if ( !ok ) 1003 if ( !ok )
1003 dt = cur.addSecs( -62 ); 1004 dt = cur.addSecs( -62 );
1004 } 1005 }
1005 if ( dt < cur || dt > end ) { 1006 if ( dt < cur || dt > end ) {
1006 add = false; 1007 add = false;
1007 } 1008 }
1008 } 1009 }
1009 if ( add ) { 1010 if ( add ) {
1010 Incidence *in = incidence->clone(); 1011 Incidence *in = incidence->clone();
1011 cal->addIncidence( in ); 1012 cal->addIncidence( in );
1012 } 1013 }
1013 } 1014 }
1014 incidence = delSel.next(); 1015 incidence = delSel.next();
1015 } 1016 }
1016 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1017 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1017 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1018 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1018 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1019 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1019 1020
1020 setCaption( i18n("Writing to phone...")); 1021 setCaption( i18n("Writing to phone..."));
1021 if ( PhoneFormat::writeToPhone( cal ) ) 1022 if ( PhoneFormat::writeToPhone( cal ) )
1022 setCaption( i18n("Export to phone successful!")); 1023 setCaption( i18n("Export to phone successful!"));
1023 else 1024 else
1024 setCaption( i18n("Error exporting to phone!")); 1025 setCaption( i18n("Error exporting to phone!"));
1025 delete cal; 1026 delete cal;
1026} 1027}
1027 1028