summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp19
-rw-r--r--kaddressbook/xxportselectdialog.cpp9
-rw-r--r--kaddressbook/xxportselectdialog.h1
-rw-r--r--version2
4 files changed, 23 insertions, 8 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index c339244..755da11 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,373 +1,374 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/*s 24/*s
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include "kabcore.h" 31#include "kabcore.h"
32 32
33#include <stdaddressbook.h> 33#include <stdaddressbook.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kfiledialog.h> 35#include <kfiledialog.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qlabel.h> 37#include <qlabel.h>
38#include <qregexp.h> 38#include <qregexp.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qprogressbar.h> 42#include <qprogressbar.h>
43#include <libkdepim/phoneaccess.h> 43#include <libkdepim/phoneaccess.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <qclipboard.h> 46#include <qclipboard.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qapplicaton.h> 49#include <qapplicaton.h>
50#include <qprogressbar.h> 50#include <qprogressbar.h>
51#include <qlayout.h> 51#include <qlayout.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qvbox.h> 53#include <qvbox.h>
54#include <kabc/addresseelist.h> 54#include <kabc/addresseelist.h>
55#include <kabc/errorhandler.h> 55#include <kabc/errorhandler.h>
56#include <kabc/resource.h> 56#include <kabc/resource.h>
57#include <kabc/vcardconverter.h> 57#include <kabc/vcardconverter.h>
58#include <kapplication.h> 58#include <kapplication.h>
59#include <kactionclasses.h> 59#include <kactionclasses.h>
60#include <kcmultidialog.h> 60#include <kcmultidialog.h>
61#include <kdebug.h> 61#include <kdebug.h>
62#include <kdeversion.h> 62#include <kdeversion.h>
63#include <kkeydialog.h> 63#include <kkeydialog.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kprinter.h> 65#include <kprinter.h>
66#include <kprotocolinfo.h> 66#include <kprotocolinfo.h>
67#include <kresources/selectdialog.h> 67#include <kresources/selectdialog.h>
68#include <kstandarddirs.h> 68#include <kstandarddirs.h>
69#include <ktempfile.h> 69#include <ktempfile.h>
70#include <kxmlguiclient.h> 70#include <kxmlguiclient.h>
71#include <kaboutdata.h> 71#include <kaboutdata.h>
72#include <libkdepim/categoryselectdialog.h> 72#include <libkdepim/categoryselectdialog.h>
73 73
74#include "addresseeutil.h" 74#include "addresseeutil.h"
75#include "addresseeeditordialog.h" 75#include "addresseeeditordialog.h"
76#include "extensionmanager.h" 76#include "extensionmanager.h"
77#include "kstdaction.h" 77#include "kstdaction.h"
78#include "kaddressbookservice.h" 78#include "kaddressbookservice.h"
79#include "ldapsearchdialog.h" 79#include "ldapsearchdialog.h"
80#include "printing/printingwizard.h" 80#include "printing/printingwizard.h"
81#else // KAB_EMBEDDED 81#else // KAB_EMBEDDED
82 82
83#include <kapplication.h> 83#include <kapplication.h>
84#include "KDGanttMinimizeSplitter.h" 84#include "KDGanttMinimizeSplitter.h"
85#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
86#include "kactioncollection.h" 86#include "kactioncollection.h"
87#include "addresseedialog.h" 87#include "addresseedialog.h"
88//US 88//US
89#include <addresseeview.h> 89#include <addresseeview.h>
90 90
91#include <qapp.h> 91#include <qapp.h>
92#include <qmenubar.h> 92#include <qmenubar.h>
93//#include <qtoolbar.h> 93//#include <qtoolbar.h>
94#include <qmessagebox.h> 94#include <qmessagebox.h>
95#include <kdebug.h> 95#include <kdebug.h>
96#include <kiconloader.h> // needed for SmallIcon 96#include <kiconloader.h> // needed for SmallIcon
97#include <kresources/kcmkresources.h> 97#include <kresources/kcmkresources.h>
98#include <ktoolbar.h> 98#include <ktoolbar.h>
99 99
100 100
101//#include <qlabel.h> 101//#include <qlabel.h>
102 102
103 103
104#ifndef DESKTOP_VERSION 104#ifndef DESKTOP_VERSION
105#include <qpe/ir.h> 105#include <qpe/ir.h>
106#include <qpe/qpemenubar.h> 106#include <qpe/qpemenubar.h>
107#include <qtopia/qcopenvelope_qws.h> 107#include <qtopia/qcopenvelope_qws.h>
108#else 108#else
109 109
110#include <qmenubar.h> 110#include <qmenubar.h>
111#endif 111#endif
112 112
113#endif // KAB_EMBEDDED 113#endif // KAB_EMBEDDED
114#include "kcmconfigs/kcmkabconfig.h" 114#include "kcmconfigs/kcmkabconfig.h"
115#include "kcmconfigs/kcmkdepimconfig.h" 115#include "kcmconfigs/kcmkdepimconfig.h"
116#include "kpimglobalprefs.h" 116#include "kpimglobalprefs.h"
117#include "externalapphandler.h" 117#include "externalapphandler.h"
118#include "xxportselectdialog.h"
118 119
119 120
120#include <kresources/selectdialog.h> 121#include <kresources/selectdialog.h>
121#include <kmessagebox.h> 122#include <kmessagebox.h>
122 123
123#include <picture.h> 124#include <picture.h>
124#include <resource.h> 125#include <resource.h>
125 126
126//US#include <qsplitter.h> 127//US#include <qsplitter.h>
127#include <qmap.h> 128#include <qmap.h>
128#include <qdir.h> 129#include <qdir.h>
129#include <qfile.h> 130#include <qfile.h>
130#include <qvbox.h> 131#include <qvbox.h>
131#include <qlayout.h> 132#include <qlayout.h>
132#include <qclipboard.h> 133#include <qclipboard.h>
133#include <qtextstream.h> 134#include <qtextstream.h>
134#include <qradiobutton.h> 135#include <qradiobutton.h>
135#include <qbuttongroup.h> 136#include <qbuttongroup.h>
136 137
137#include <libkdepim/categoryselectdialog.h> 138#include <libkdepim/categoryselectdialog.h>
138#include <libkdepim/categoryeditdialog.h> 139#include <libkdepim/categoryeditdialog.h>
139#include <kabc/vcardconverter.h> 140#include <kabc/vcardconverter.h>
140 141
141 142
142#include "addresseeutil.h" 143#include "addresseeutil.h"
143#include "undocmds.h" 144#include "undocmds.h"
144#include "addresseeeditordialog.h" 145#include "addresseeeditordialog.h"
145#include "viewmanager.h" 146#include "viewmanager.h"
146#include "details/detailsviewcontainer.h" 147#include "details/detailsviewcontainer.h"
147#include "kabprefs.h" 148#include "kabprefs.h"
148#include "xxportmanager.h" 149#include "xxportmanager.h"
149#include "incsearchwidget.h" 150#include "incsearchwidget.h"
150#include "jumpbuttonbar.h" 151#include "jumpbuttonbar.h"
151#include "extensionmanager.h" 152#include "extensionmanager.h"
152#include "addresseeconfig.h" 153#include "addresseeconfig.h"
153#include <kcmultidialog.h> 154#include <kcmultidialog.h>
154 155
155#ifdef _WIN32_ 156#ifdef _WIN32_
156 157
157#include "kaimportoldialog.h" 158#include "kaimportoldialog.h"
158#else 159#else
159#include <unistd.h> 160#include <unistd.h>
160#endif 161#endif
161// sync includes 162// sync includes
162#include <libkdepim/ksyncprofile.h> 163#include <libkdepim/ksyncprofile.h>
163#include <libkdepim/ksyncprefsdialog.h> 164#include <libkdepim/ksyncprefsdialog.h>
164 165
165 166
166class KABCatPrefs : public QDialog 167class KABCatPrefs : public QDialog
167{ 168{
168 public: 169 public:
169 KABCatPrefs( QWidget *parent=0, const char *name=0 ) : 170 KABCatPrefs( QWidget *parent=0, const char *name=0 ) :
170 QDialog( parent, name, true ) 171 QDialog( parent, name, true )
171 { 172 {
172 setCaption( i18n("Manage new Categories") ); 173 setCaption( i18n("Manage new Categories") );
173 QVBoxLayout* lay = new QVBoxLayout( this ); 174 QVBoxLayout* lay = new QVBoxLayout( this );
174 lay->setSpacing( 3 ); 175 lay->setSpacing( 3 );
175 lay->setMargin( 3 ); 176 lay->setMargin( 3 );
176 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 177 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
177 lay->addWidget( lab ); 178 lay->addWidget( lab );
178 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 179 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
179 lay->addWidget( format ); 180 lay->addWidget( format );
180 format->setExclusive ( true ) ; 181 format->setExclusive ( true ) ;
181 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 182 addCatBut = new QRadioButton(i18n("Add to category list"), format );
182 new QRadioButton(i18n("Remove from addressees"), format ); 183 new QRadioButton(i18n("Remove from addressees"), format );
183 addCatBut->setChecked( true ); 184 addCatBut->setChecked( true );
184 QPushButton * ok = new QPushButton( i18n("OK"), this ); 185 QPushButton * ok = new QPushButton( i18n("OK"), this );
185 lay->addWidget( ok ); 186 lay->addWidget( ok );
186 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 187 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
187 lay->addWidget( cancel ); 188 lay->addWidget( cancel );
188 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 189 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
189 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 190 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
190 resize( 200, 200 ); 191 resize( 200, 200 );
191 } 192 }
192 193
193 bool addCat() { return addCatBut->isChecked(); } 194 bool addCat() { return addCatBut->isChecked(); }
194private: 195private:
195 QRadioButton* addCatBut; 196 QRadioButton* addCatBut;
196}; 197};
197 198
198 199
199 200
200class KAex2phonePrefs : public QDialog 201class KAex2phonePrefs : public QDialog
201{ 202{
202 public: 203 public:
203 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 204 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
204 QDialog( parent, name, true ) 205 QDialog( parent, name, true )
205 { 206 {
206 setCaption( i18n("Export to phone options") ); 207 setCaption( i18n("Export to phone options") );
207 QVBoxLayout* lay = new QVBoxLayout( this ); 208 QVBoxLayout* lay = new QVBoxLayout( this );
208 lay->setSpacing( 3 ); 209 lay->setSpacing( 3 );
209 lay->setMargin( 3 ); 210 lay->setMargin( 3 );
210 QLabel *lab; 211 QLabel *lab;
211 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 212 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
212 lab->setAlignment (AlignHCenter ); 213 lab->setAlignment (AlignHCenter );
213 QHBox* temphb; 214 QHBox* temphb;
214 temphb = new QHBox( this ); 215 temphb = new QHBox( this );
215 new QLabel( i18n("I/O device: "), temphb ); 216 new QLabel( i18n("I/O device: "), temphb );
216 mPhoneDevice = new QLineEdit( temphb); 217 mPhoneDevice = new QLineEdit( temphb);
217 lay->addWidget( temphb ); 218 lay->addWidget( temphb );
218 temphb = new QHBox( this ); 219 temphb = new QHBox( this );
219 new QLabel( i18n("Connection: "), temphb ); 220 new QLabel( i18n("Connection: "), temphb );
220 mPhoneConnection = new QLineEdit( temphb); 221 mPhoneConnection = new QLineEdit( temphb);
221 lay->addWidget( temphb ); 222 lay->addWidget( temphb );
222 temphb = new QHBox( this ); 223 temphb = new QHBox( this );
223 new QLabel( i18n("Model(opt.): "), temphb ); 224 new QLabel( i18n("Model(opt.): "), temphb );
224 mPhoneModel = new QLineEdit( temphb); 225 mPhoneModel = new QLineEdit( temphb);
225 lay->addWidget( temphb ); 226 lay->addWidget( temphb );
226 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 227 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
227 // lay->addWidget( mWriteToSim ); 228 // lay->addWidget( mWriteToSim );
228 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 229 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
229 lab->setAlignment (AlignHCenter ); 230 lab->setAlignment (AlignHCenter );
230 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 231 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
231 lay->addWidget( ok ); 232 lay->addWidget( ok );
232 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 233 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
233 lay->addWidget( cancel ); 234 lay->addWidget( cancel );
234 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 235 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
235 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 236 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
236 resize( 220, 240 ); 237 resize( 220, 240 );
237 238
238 } 239 }
239 240
240public: 241public:
241 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 242 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
242 QCheckBox* mWriteToSim; 243 QCheckBox* mWriteToSim;
243}; 244};
244 245
245 246
246bool pasteWithNewUid = true; 247bool pasteWithNewUid = true;
247 248
248#ifdef KAB_EMBEDDED 249#ifdef KAB_EMBEDDED
249KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 250KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
250 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 251 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
251 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 252 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
252 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 253 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
253#else //KAB_EMBEDDED 254#else //KAB_EMBEDDED
254KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 255KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
255 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 256 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
256 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 257 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
257 mReadWrite( readWrite ), mModified( false ) 258 mReadWrite( readWrite ), mModified( false )
258#endif //KAB_EMBEDDED 259#endif //KAB_EMBEDDED
259{ 260{
260 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 261 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
261 // syncManager->setBlockSave(false); 262 // syncManager->setBlockSave(false);
262 mExtensionBarSplitter = 0; 263 mExtensionBarSplitter = 0;
263 mIsPart = !parent->inherits( "KAddressBookMain" ); 264 mIsPart = !parent->inherits( "KAddressBookMain" );
264 mAddressBook = KABC::StdAddressBook::self(); 265 mAddressBook = KABC::StdAddressBook::self();
265 KABC::StdAddressBook::setAutomaticSave( false ); 266 KABC::StdAddressBook::setAutomaticSave( false );
266 267
267#ifndef KAB_EMBEDDED 268#ifndef KAB_EMBEDDED
268 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 269 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
269#endif //KAB_EMBEDDED 270#endif //KAB_EMBEDDED
270 271
271 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 272 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
272 SLOT( addressBookChanged() ) ); 273 SLOT( addressBookChanged() ) );
273 274
274#if 0 275#if 0
275 // LP moved to addressbook init method 276 // LP moved to addressbook init method
276 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 277 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
277 "X-Department", "KADDRESSBOOK" ); 278 "X-Department", "KADDRESSBOOK" );
278 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 279 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
279 "X-Profession", "KADDRESSBOOK" ); 280 "X-Profession", "KADDRESSBOOK" );
280 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 281 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
281 "X-AssistantsName", "KADDRESSBOOK" ); 282 "X-AssistantsName", "KADDRESSBOOK" );
282 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 283 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
283 "X-ManagersName", "KADDRESSBOOK" ); 284 "X-ManagersName", "KADDRESSBOOK" );
284 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 285 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
285 "X-SpousesName", "KADDRESSBOOK" ); 286 "X-SpousesName", "KADDRESSBOOK" );
286 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 287 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
287 "X-Office", "KADDRESSBOOK" ); 288 "X-Office", "KADDRESSBOOK" );
288 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 289 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
289 "X-IMAddress", "KADDRESSBOOK" ); 290 "X-IMAddress", "KADDRESSBOOK" );
290 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 291 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
291 "X-Anniversary", "KADDRESSBOOK" ); 292 "X-Anniversary", "KADDRESSBOOK" );
292 293
293 //US added this field to become compatible with Opie/qtopia addressbook 294 //US added this field to become compatible with Opie/qtopia addressbook
294 // values can be "female" or "male" or "". An empty field represents undefined. 295 // values can be "female" or "male" or "". An empty field represents undefined.
295 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 296 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
296 "X-Gender", "KADDRESSBOOK" ); 297 "X-Gender", "KADDRESSBOOK" );
297 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 298 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
298 "X-Children", "KADDRESSBOOK" ); 299 "X-Children", "KADDRESSBOOK" );
299 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 300 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
300 "X-FreeBusyUrl", "KADDRESSBOOK" ); 301 "X-FreeBusyUrl", "KADDRESSBOOK" );
301#endif 302#endif
302 initGUI(); 303 initGUI();
303 304
304 mIncSearchWidget->setFocus(); 305 mIncSearchWidget->setFocus();
305 306
306 307
307 connect( mViewManager, SIGNAL( selected( const QString& ) ), 308 connect( mViewManager, SIGNAL( selected( const QString& ) ),
308 SLOT( setContactSelected( const QString& ) ) ); 309 SLOT( setContactSelected( const QString& ) ) );
309 connect( mViewManager, SIGNAL( executed( const QString& ) ), 310 connect( mViewManager, SIGNAL( executed( const QString& ) ),
310 SLOT( executeContact( const QString& ) ) ); 311 SLOT( executeContact( const QString& ) ) );
311 312
312 connect( mViewManager, SIGNAL( deleteRequest( ) ), 313 connect( mViewManager, SIGNAL( deleteRequest( ) ),
313 SLOT( deleteContacts( ) ) ); 314 SLOT( deleteContacts( ) ) );
314 connect( mViewManager, SIGNAL( modified() ), 315 connect( mViewManager, SIGNAL( modified() ),
315 SLOT( setModified() ) ); 316 SLOT( setModified() ) );
316 317
317 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 318 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
318 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 319 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
319 320
320 connect( mXXPortManager, SIGNAL( modified() ), 321 connect( mXXPortManager, SIGNAL( modified() ),
321 SLOT( setModified() ) ); 322 SLOT( setModified() ) );
322 323
323 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 324 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
324 SLOT( incrementalSearch( const QString& ) ) ); 325 SLOT( incrementalSearch( const QString& ) ) );
325 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 326 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
326 mJumpButtonBar, SLOT( recreateButtons() ) ); 327 mJumpButtonBar, SLOT( recreateButtons() ) );
327 328
328 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 329 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
329 SLOT( sendMail( const QString& ) ) ); 330 SLOT( sendMail( const QString& ) ) );
330 331
331 332
332 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 333 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
333 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&))); 334 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
334 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 335 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
335 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle())); 336 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle()));
336 337
337 338
338#ifndef KAB_EMBEDDED 339#ifndef KAB_EMBEDDED
339 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 340 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
340 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 341 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
341 342
342 connect( mDetails, SIGNAL( browse( const QString& ) ), 343 connect( mDetails, SIGNAL( browse( const QString& ) ),
343 SLOT( browse( const QString& ) ) ); 344 SLOT( browse( const QString& ) ) );
344 345
345 346
346 mAddressBookService = new KAddressBookService( this ); 347 mAddressBookService = new KAddressBookService( this );
347 348
348#endif //KAB_EMBEDDED 349#endif //KAB_EMBEDDED
349 350
350 mMessageTimer = new QTimer( this ); 351 mMessageTimer = new QTimer( this );
351 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) ); 352 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) );
352 mEditorDialog = 0; 353 mEditorDialog = 0;
353 createAddresseeEditorDialog( this ); 354 createAddresseeEditorDialog( this );
354 setModified( false ); 355 setModified( false );
355 mBRdisabled = false; 356 mBRdisabled = false;
356#ifndef DESKTOP_VERSION 357#ifndef DESKTOP_VERSION
357 infrared = 0; 358 infrared = 0;
358#endif 359#endif
359 //toggleBeamReceive( ); 360 //toggleBeamReceive( );
360 361
361 // we have a toolbar repainting error on the Zaurus when starting KA/Pi 362 // we have a toolbar repainting error on the Zaurus when starting KA/Pi
362 QTimer::singleShot( 1, this , SLOT ( updateToolBar())); 363 QTimer::singleShot( 1, this , SLOT ( updateToolBar()));
363} 364}
364 365
365void KABCore::updateToolBar() 366void KABCore::updateToolBar()
366{ 367{
367 mMainWindow->toolBar()->repaint(); 368 mMainWindow->toolBar()->repaint();
368} 369}
369KABCore::~KABCore() 370KABCore::~KABCore()
370{ 371{
371 // save(); 372 // save();
372 //saveSettings(); 373 //saveSettings();
373 //KABPrefs::instance()->writeConfig(); 374 //KABPrefs::instance()->writeConfig();
@@ -425,636 +426,640 @@ void KABCore::disableBR(bool b)
425 if ( mBRdisabled ) { 426 if ( mBRdisabled ) {
426 mBRdisabled = false; 427 mBRdisabled = false;
427 //toggleBeamReceive( ); 428 //toggleBeamReceive( );
428 } 429 }
429 } 430 }
430#endif 431#endif
431 432
432} 433}
433void KABCore::recieve( QString fn ) 434void KABCore::recieve( QString fn )
434{ 435{
435 //qDebug("KABCore::recieve "); 436 //qDebug("KABCore::recieve ");
436 int count = mAddressBook->importFromFile( fn, true ); 437 int count = mAddressBook->importFromFile( fn, true );
437 if ( count ) 438 if ( count )
438 setModified( true ); 439 setModified( true );
439 mViewManager->refreshView(); 440 mViewManager->refreshView();
440 message(i18n("%1 contact(s) received!").arg( count )); 441 message(i18n("%1 contact(s) received!").arg( count ));
441 topLevelWidget()->showMaximized(); 442 topLevelWidget()->showMaximized();
442 topLevelWidget()->raise(); 443 topLevelWidget()->raise();
443} 444}
444void KABCore::restoreSettings() 445void KABCore::restoreSettings()
445{ 446{
446 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 447 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
447 448
448 bool state; 449 bool state;
449 450
450 if (mMultipleViewsAtOnce) 451 if (mMultipleViewsAtOnce)
451 state = KABPrefs::instance()->mDetailsPageVisible; 452 state = KABPrefs::instance()->mDetailsPageVisible;
452 else 453 else
453 state = false; 454 state = false;
454 455
455 mActionDetails->setChecked( state ); 456 mActionDetails->setChecked( state );
456 setDetailsVisible( state ); 457 setDetailsVisible( state );
457 458
458 state = KABPrefs::instance()->mJumpButtonBarVisible; 459 state = KABPrefs::instance()->mJumpButtonBarVisible;
459 460
460 mActionJumpBar->setChecked( state ); 461 mActionJumpBar->setChecked( state );
461 setJumpButtonBarVisible( state ); 462 setJumpButtonBarVisible( state );
462/*US 463/*US
463 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 464 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
464 if ( splitterSize.count() == 0 ) { 465 if ( splitterSize.count() == 0 ) {
465 splitterSize.append( width() / 2 ); 466 splitterSize.append( width() / 2 );
466 splitterSize.append( width() / 2 ); 467 splitterSize.append( width() / 2 );
467 } 468 }
468 mMiniSplitter->setSizes( splitterSize ); 469 mMiniSplitter->setSizes( splitterSize );
469 if ( mExtensionBarSplitter ) { 470 if ( mExtensionBarSplitter ) {
470 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 471 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
471 if ( splitterSize.count() == 0 ) { 472 if ( splitterSize.count() == 0 ) {
472 splitterSize.append( width() / 2 ); 473 splitterSize.append( width() / 2 );
473 splitterSize.append( width() / 2 ); 474 splitterSize.append( width() / 2 );
474 } 475 }
475 mExtensionBarSplitter->setSizes( splitterSize ); 476 mExtensionBarSplitter->setSizes( splitterSize );
476 477
477 } 478 }
478*/ 479*/
479 mViewManager->restoreSettings(); 480 mViewManager->restoreSettings();
480 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 481 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
481 mExtensionManager->restoreSettings(); 482 mExtensionManager->restoreSettings();
482#ifdef DESKTOP_VERSION 483#ifdef DESKTOP_VERSION
483 int wid = width(); 484 int wid = width();
484 if ( wid < 10 ) 485 if ( wid < 10 )
485 wid = 400; 486 wid = 400;
486#else 487#else
487 int wid = QApplication::desktop()->width(); 488 int wid = QApplication::desktop()->width();
488 if ( wid < 640 ) 489 if ( wid < 640 )
489 wid = QApplication::desktop()->height(); 490 wid = QApplication::desktop()->height();
490#endif 491#endif
491 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 492 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
492 if ( true /*splitterSize.count() == 0*/ ) { 493 if ( true /*splitterSize.count() == 0*/ ) {
493 splitterSize.append( wid / 2 ); 494 splitterSize.append( wid / 2 );
494 splitterSize.append( wid / 2 ); 495 splitterSize.append( wid / 2 );
495 } 496 }
496 mMiniSplitter->setSizes( splitterSize ); 497 mMiniSplitter->setSizes( splitterSize );
497 if ( mExtensionBarSplitter ) { 498 if ( mExtensionBarSplitter ) {
498 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 499 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
499 if ( true /*splitterSize.count() == 0*/ ) { 500 if ( true /*splitterSize.count() == 0*/ ) {
500 splitterSize.append( wid / 2 ); 501 splitterSize.append( wid / 2 );
501 splitterSize.append( wid / 2 ); 502 splitterSize.append( wid / 2 );
502 } 503 }
503 mExtensionBarSplitter->setSizes( splitterSize ); 504 mExtensionBarSplitter->setSizes( splitterSize );
504 505
505 } 506 }
506 507
507 508
508} 509}
509 510
510void KABCore::saveSettings() 511void KABCore::saveSettings()
511{ 512{
512 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 513 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
513 if ( mExtensionBarSplitter ) 514 if ( mExtensionBarSplitter )
514 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 515 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
515 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 516 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
516 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 517 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
517#ifndef KAB_EMBEDDED 518#ifndef KAB_EMBEDDED
518 519
519 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 520 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
520 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 521 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
521#endif //KAB_EMBEDDED 522#endif //KAB_EMBEDDED
522 mExtensionManager->saveSettings(); 523 mExtensionManager->saveSettings();
523 mViewManager->saveSettings(); 524 mViewManager->saveSettings();
524 525
525 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 526 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
526} 527}
527 528
528KABC::AddressBook *KABCore::addressBook() const 529KABC::AddressBook *KABCore::addressBook() const
529{ 530{
530 return mAddressBook; 531 return mAddressBook;
531} 532}
532 533
533KConfig *KABCore::config() 534KConfig *KABCore::config()
534{ 535{
535#ifndef KAB_EMBEDDED 536#ifndef KAB_EMBEDDED
536 return KABPrefs::instance()->config(); 537 return KABPrefs::instance()->config();
537#else //KAB_EMBEDDED 538#else //KAB_EMBEDDED
538 return KABPrefs::instance()->getConfig(); 539 return KABPrefs::instance()->getConfig();
539#endif //KAB_EMBEDDED 540#endif //KAB_EMBEDDED
540} 541}
541 542
542KActionCollection *KABCore::actionCollection() const 543KActionCollection *KABCore::actionCollection() const
543{ 544{
544 return mGUIClient->actionCollection(); 545 return mGUIClient->actionCollection();
545} 546}
546 547
547KABC::Field *KABCore::currentSearchField() const 548KABC::Field *KABCore::currentSearchField() const
548{ 549{
549 if (mIncSearchWidget) 550 if (mIncSearchWidget)
550 return mIncSearchWidget->currentField(); 551 return mIncSearchWidget->currentField();
551 else 552 else
552 return 0; 553 return 0;
553} 554}
554 555
555QStringList KABCore::selectedUIDs() const 556QStringList KABCore::selectedUIDs() const
556{ 557{
557 return mViewManager->selectedUids(); 558 return mViewManager->selectedUids();
558} 559}
559 560
560KABC::Resource *KABCore::requestResource( QWidget *parent ) 561KABC::Resource *KABCore::requestResource( QWidget *parent )
561{ 562{
562 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 563 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
563 564
564 QPtrList<KRES::Resource> kresResources; 565 QPtrList<KRES::Resource> kresResources;
565 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 566 QPtrListIterator<KABC::Resource> resIt( kabcResources );
566 KABC::Resource *resource; 567 KABC::Resource *resource;
567 while ( ( resource = resIt.current() ) != 0 ) { 568 while ( ( resource = resIt.current() ) != 0 ) {
568 ++resIt; 569 ++resIt;
569 if ( !resource->readOnly() ) { 570 if ( !resource->readOnly() ) {
570 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 571 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
571 if ( res ) 572 if ( res )
572 kresResources.append( res ); 573 kresResources.append( res );
573 } 574 }
574 } 575 }
575 576
576 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 577 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
577 return static_cast<KABC::Resource*>( res ); 578 return static_cast<KABC::Resource*>( res );
578} 579}
579 580
580#ifndef KAB_EMBEDDED 581#ifndef KAB_EMBEDDED
581KAboutData *KABCore::createAboutData() 582KAboutData *KABCore::createAboutData()
582#else //KAB_EMBEDDED 583#else //KAB_EMBEDDED
583void KABCore::createAboutData() 584void KABCore::createAboutData()
584#endif //KAB_EMBEDDED 585#endif //KAB_EMBEDDED
585{ 586{
586#ifndef KAB_EMBEDDED 587#ifndef KAB_EMBEDDED
587 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 588 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
588 "3.1", I18N_NOOP( "The KDE Address Book" ), 589 "3.1", I18N_NOOP( "The KDE Address Book" ),
589 KAboutData::License_GPL_V2, 590 KAboutData::License_GPL_V2,
590 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 591 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
591 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 592 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
592 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 593 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
593 about->addAuthor( "Cornelius Schumacher", 594 about->addAuthor( "Cornelius Schumacher",
594 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 595 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
595 "schumacher@kde.org" ); 596 "schumacher@kde.org" );
596 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 597 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
597 "mpilone@slac.com" ); 598 "mpilone@slac.com" );
598 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 599 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
599 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 600 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
600 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 601 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
601 "michel@klaralvdalens-datakonsult.se" ); 602 "michel@klaralvdalens-datakonsult.se" );
602 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 603 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
603 "hansen@kde.org" ); 604 "hansen@kde.org" );
604 605
605 return about; 606 return about;
606#endif //KAB_EMBEDDED 607#endif //KAB_EMBEDDED
607 608
608 QString version; 609 QString version;
609#include <../version> 610#include <../version>
610 QMessageBox::about( this, "About KAddressbook/Pi", 611 QMessageBox::about( this, "About KAddressbook/Pi",
611 "KAddressbook/Platform-independent\n" 612 "KAddressbook/Platform-independent\n"
612 "(KA/Pi) " +version + " - " + 613 "(KA/Pi) " +version + " - " +
613#ifdef DESKTOP_VERSION 614#ifdef DESKTOP_VERSION
614 "Desktop Edition\n" 615 "Desktop Edition\n"
615#else 616#else
616 "PDA-Edition\n" 617 "PDA-Edition\n"
617 "for: Zaurus 5500 / 7x0 / 8x0\n" 618 "for: Zaurus 5500 / 7x0 / 8x0\n"
618#endif 619#endif
619 620
620 "(c) 2004 Ulf Schenk\n" 621 "(c) 2004 Ulf Schenk\n"
621 "(c) 2004 Lutz Rogowski\n" 622 "(c) 2004 Lutz Rogowski\n"
622 "(c) 1997-2003, The KDE PIM Team\n" 623 "(c) 1997-2003, The KDE PIM Team\n"
623 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 624 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
624 "Don Sanders Original author\n" 625 "Don Sanders Original author\n"
625 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 626 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
626 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 627 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
627 "Greg Stern DCOP interface\n" 628 "Greg Stern DCOP interface\n"
628 "Mark Westcot Contact pinning\n" 629 "Mark Westcot Contact pinning\n"
629 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 630 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
630 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 631 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
631#ifdef _WIN32_ 632#ifdef _WIN32_
632 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 633 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
633#endif 634#endif
634 ); 635 );
635} 636}
636 637
637void KABCore::setContactSelected( const QString &uid ) 638void KABCore::setContactSelected( const QString &uid )
638{ 639{
639 KABC::Addressee addr = mAddressBook->findByUid( uid ); 640 KABC::Addressee addr = mAddressBook->findByUid( uid );
640 if ( !mDetails->isHidden() ) 641 if ( !mDetails->isHidden() )
641 mDetails->setAddressee( addr ); 642 mDetails->setAddressee( addr );
642 643
643 if ( !addr.isEmpty() ) { 644 if ( !addr.isEmpty() ) {
644 emit contactSelected( addr.formattedName() ); 645 emit contactSelected( addr.formattedName() );
645 KABC::Picture pic = addr.photo(); 646 KABC::Picture pic = addr.photo();
646 if ( pic.isIntern() ) { 647 if ( pic.isIntern() ) {
647//US emit contactSelected( pic.data() ); 648//US emit contactSelected( pic.data() );
648//US instead use: 649//US instead use:
649 QPixmap px; 650 QPixmap px;
650 if (pic.data().isNull() != true) 651 if (pic.data().isNull() != true)
651 { 652 {
652 px.convertFromImage(pic.data()); 653 px.convertFromImage(pic.data());
653 } 654 }
654 655
655 emit contactSelected( px ); 656 emit contactSelected( px );
656 } 657 }
657 } 658 }
658 659
659 660
660 mExtensionManager->setSelectionChanged(); 661 mExtensionManager->setSelectionChanged();
661 662
662 // update the actions 663 // update the actions
663 bool selected = !uid.isEmpty(); 664 bool selected = !uid.isEmpty();
664 665
665 if ( mReadWrite ) { 666 if ( mReadWrite ) {
666 mActionCut->setEnabled( selected ); 667 mActionCut->setEnabled( selected );
667 mActionPaste->setEnabled( selected ); 668 mActionPaste->setEnabled( selected );
668 } 669 }
669 670
670 mActionCopy->setEnabled( selected ); 671 mActionCopy->setEnabled( selected );
671 mActionDelete->setEnabled( selected ); 672 mActionDelete->setEnabled( selected );
672 mActionEditAddressee->setEnabled( selected ); 673 mActionEditAddressee->setEnabled( selected );
673 mActionMail->setEnabled( selected ); 674 mActionMail->setEnabled( selected );
674 mActionMailVCard->setEnabled( selected ); 675 mActionMailVCard->setEnabled( selected );
675 //if (mActionBeam) 676 //if (mActionBeam)
676 //mActionBeam->setEnabled( selected ); 677 //mActionBeam->setEnabled( selected );
677 678
678 if (mActionBeamVCard) 679 if (mActionBeamVCard)
679 mActionBeamVCard->setEnabled( selected ); 680 mActionBeamVCard->setEnabled( selected );
680 681
681 mActionExport2phone->setEnabled( selected );
682 mActionWhoAmI->setEnabled( selected ); 682 mActionWhoAmI->setEnabled( selected );
683 mActionCategories->setEnabled( selected ); 683 mActionCategories->setEnabled( selected );
684} 684}
685 685
686void KABCore::sendMail() 686void KABCore::sendMail()
687{ 687{
688 sendMail( mViewManager->selectedEmails().join( ", " ) ); 688 sendMail( mViewManager->selectedEmails().join( ", " ) );
689} 689}
690 690
691void KABCore::sendMail( const QString& emaillist ) 691void KABCore::sendMail( const QString& emaillist )
692{ 692{
693 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 693 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
694 if (emaillist.contains(",") > 0) 694 if (emaillist.contains(",") > 0)
695 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 695 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
696 else 696 else
697 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 697 ExternalAppHandler::instance()->mailToOneContact( emaillist );
698} 698}
699 699
700 700
701 701
702void KABCore::mailVCard() 702void KABCore::mailVCard()
703{ 703{
704 QStringList uids = mViewManager->selectedUids(); 704 QStringList uids = mViewManager->selectedUids();
705 if ( !uids.isEmpty() ) 705 if ( !uids.isEmpty() )
706 mailVCard( uids ); 706 mailVCard( uids );
707} 707}
708 708
709void KABCore::mailVCard( const QStringList& uids ) 709void KABCore::mailVCard( const QStringList& uids )
710{ 710{
711 QStringList urls; 711 QStringList urls;
712 712
713// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 713// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
714 714
715 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 715 QString dirName = "/tmp/" + KApplication::randomString( 8 );
716 716
717 717
718 718
719 QDir().mkdir( dirName, true ); 719 QDir().mkdir( dirName, true );
720 720
721 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 721 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
722 KABC::Addressee a = mAddressBook->findByUid( *it ); 722 KABC::Addressee a = mAddressBook->findByUid( *it );
723 723
724 if ( a.isEmpty() ) 724 if ( a.isEmpty() )
725 continue; 725 continue;
726 726
727 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 727 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
728 728
729 QString fileName = dirName + "/" + name; 729 QString fileName = dirName + "/" + name;
730 730
731 QFile outFile(fileName); 731 QFile outFile(fileName);
732 732
733 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 733 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
734 KABC::VCardConverter converter; 734 KABC::VCardConverter converter;
735 QString vcard; 735 QString vcard;
736 736
737 converter.addresseeToVCard( a, vcard ); 737 converter.addresseeToVCard( a, vcard );
738 738
739 QTextStream t( &outFile ); // use a text stream 739 QTextStream t( &outFile ); // use a text stream
740 t.setEncoding( QTextStream::UnicodeUTF8 ); 740 t.setEncoding( QTextStream::UnicodeUTF8 );
741 t << vcard; 741 t << vcard;
742 742
743 outFile.close(); 743 outFile.close();
744 744
745 urls.append( fileName ); 745 urls.append( fileName );
746 } 746 }
747 } 747 }
748 748
749 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 749 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
750 750
751 751
752/*US 752/*US
753 kapp->invokeMailer( QString::null, QString::null, QString::null, 753 kapp->invokeMailer( QString::null, QString::null, QString::null,
754 QString::null, // subject 754 QString::null, // subject
755 QString::null, // body 755 QString::null, // body
756 QString::null, 756 QString::null,
757 urls ); // attachments 757 urls ); // attachments
758*/ 758*/
759 759
760} 760}
761 761
762/** 762/**
763 Beams the "WhoAmI contact. 763 Beams the "WhoAmI contact.
764*/ 764*/
765void KABCore::beamMySelf() 765void KABCore::beamMySelf()
766{ 766{
767 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 767 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
768 if (!a.isEmpty()) 768 if (!a.isEmpty())
769 { 769 {
770 QStringList uids; 770 QStringList uids;
771 uids << a.uid(); 771 uids << a.uid();
772 772
773 beamVCard(uids); 773 beamVCard(uids);
774 } else { 774 } else {
775 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 775 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
776 776
777 777
778 } 778 }
779} 779}
780 780
781void KABCore::export2phone() 781void KABCore::export2phone()
782{ 782{
783 783 QStringList uids;
784 XXPortSelectDialog dlg( this, false, this );
785 if ( dlg.exec() )
786 uids = dlg.uids();
787 else
788 return;
789 if ( uids.isEmpty() )
790 return;
791 // qDebug("count %d ", uids.count());
792
784 KAex2phonePrefs ex2phone; 793 KAex2phonePrefs ex2phone;
785 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 794 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
786 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 795 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
787 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 796 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
788 797
789 if ( !ex2phone.exec() ) { 798 if ( !ex2phone.exec() ) {
790 return; 799 return;
791 } 800 }
792 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 801 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
793 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 802 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
794 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 803 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
795 804
796 805
797 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 806 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
798 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 807 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
799 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 808 KPimGlobalPrefs::instance()->mEx2PhoneModel );
800 809
801 QStringList uids = mViewManager->selectedUids();
802 if ( uids.isEmpty() )
803 return;
804
805 QString fileName = getPhoneFile(); 810 QString fileName = getPhoneFile();
806 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) ) 811 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) )
807 return; 812 return;
808 813
809 message(i18n("Exporting to phone...")); 814 message(i18n("Exporting to phone..."));
810 QTimer::singleShot( 1, this , SLOT ( writeToPhone())); 815 QTimer::singleShot( 1, this , SLOT ( writeToPhone()));
811 816
812} 817}
813QString KABCore::getPhoneFile() 818QString KABCore::getPhoneFile()
814{ 819{
815#ifdef DESKTOP_VERSION 820#ifdef DESKTOP_VERSION
816 return locateLocal("tmp", "phonefile.vcf"); 821 return locateLocal("tmp", "phonefile.vcf");
817#else 822#else
818 return "/tmp/phonefile.vcf"; 823 return "/tmp/phonefile.vcf";
819#endif 824#endif
820 825
821} 826}
822void KABCore::writeToPhone( ) 827void KABCore::writeToPhone( )
823{ 828{
824 if ( PhoneAccess::writeToPhone( getPhoneFile() ) ) 829 if ( PhoneAccess::writeToPhone( getPhoneFile() ) )
825 message(i18n("Export to phone finished!")); 830 message(i18n("Export to phone finished!"));
826 else 831 else
827 qDebug(i18n("Error exporting to phone")); 832 qDebug(i18n("Error exporting to phone"));
828} 833}
829void KABCore::beamVCard() 834void KABCore::beamVCard()
830{ 835{
831 QStringList uids = mViewManager->selectedUids(); 836 QStringList uids = mViewManager->selectedUids();
832 if ( !uids.isEmpty() ) 837 if ( !uids.isEmpty() )
833 beamVCard( uids ); 838 beamVCard( uids );
834} 839}
835 840
836 841
837void KABCore::beamVCard(const QStringList& uids) 842void KABCore::beamVCard(const QStringList& uids)
838{ 843{
839 844
840 // LR: we should use the /tmp dir on the Zaurus, 845 // LR: we should use the /tmp dir on the Zaurus,
841 // because: /tmp = RAM, (HOME)/kdepim = flash memory 846 // because: /tmp = RAM, (HOME)/kdepim = flash memory
842 847
843#ifdef DESKTOP_VERSION 848#ifdef DESKTOP_VERSION
844 QString fileName = locateLocal("tmp", "kapibeamfile.vcf"); 849 QString fileName = locateLocal("tmp", "kapibeamfile.vcf");
845#else 850#else
846 QString fileName = "/tmp/kapibeamfile.vcf"; 851 QString fileName = "/tmp/kapibeamfile.vcf";
847#endif 852#endif
848 853
849 KABC::VCardConverter converter; 854 KABC::VCardConverter converter;
850 QString description; 855 QString description;
851 QString datastream; 856 QString datastream;
852 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 857 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
853 KABC::Addressee a = mAddressBook->findByUid( *it ); 858 KABC::Addressee a = mAddressBook->findByUid( *it );
854 859
855 if ( a.isEmpty() ) 860 if ( a.isEmpty() )
856 continue; 861 continue;
857 862
858 if (description.isEmpty()) 863 if (description.isEmpty())
859 description = a.formattedName(); 864 description = a.formattedName();
860 865
861 QString vcard; 866 QString vcard;
862 converter.addresseeToVCard( a, vcard ); 867 converter.addresseeToVCard( a, vcard );
863 int start = 0; 868 int start = 0;
864 int next; 869 int next;
865 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 870 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
866 int semi = vcard.find(";", next); 871 int semi = vcard.find(";", next);
867 int dopp = vcard.find(":", next); 872 int dopp = vcard.find(":", next);
868 int sep; 873 int sep;
869 if ( semi < dopp && semi >= 0 ) 874 if ( semi < dopp && semi >= 0 )
870 sep = semi ; 875 sep = semi ;
871 else 876 else
872 sep = dopp; 877 sep = dopp;
873 datastream +=vcard.mid( start, next - start); 878 datastream +=vcard.mid( start, next - start);
874 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 879 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
875 start = sep; 880 start = sep;
876 } 881 }
877 datastream += vcard.mid( start,vcard.length() ); 882 datastream += vcard.mid( start,vcard.length() );
878 } 883 }
879#ifndef DESKTOP_VERSION 884#ifndef DESKTOP_VERSION
880 QFile outFile(fileName); 885 QFile outFile(fileName);
881 if ( outFile.open(IO_WriteOnly) ) { 886 if ( outFile.open(IO_WriteOnly) ) {
882 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 887 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
883 QTextStream t( &outFile ); // use a text stream 888 QTextStream t( &outFile ); // use a text stream
884 //t.setEncoding( QTextStream::UnicodeUTF8 ); 889 //t.setEncoding( QTextStream::UnicodeUTF8 );
885 t.setEncoding( QTextStream::Latin1 ); 890 t.setEncoding( QTextStream::Latin1 );
886 t <<datastream.latin1(); 891 t <<datastream.latin1();
887 outFile.close(); 892 outFile.close();
888 Ir *ir = new Ir( this ); 893 Ir *ir = new Ir( this );
889 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 894 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
890 ir->send( fileName, description, "text/x-vCard" ); 895 ir->send( fileName, description, "text/x-vCard" );
891 } else { 896 } else {
892 qDebug("Error open temp beam file "); 897 qDebug("Error open temp beam file ");
893 return; 898 return;
894 } 899 }
895#endif 900#endif
896 901
897} 902}
898 903
899void KABCore::beamDone( Ir *ir ) 904void KABCore::beamDone( Ir *ir )
900{ 905{
901#ifndef DESKTOP_VERSION 906#ifndef DESKTOP_VERSION
902 delete ir; 907 delete ir;
903#endif 908#endif
904 topLevelWidget()->raise(); 909 topLevelWidget()->raise();
905 message( i18n("Beaming finished!") ); 910 message( i18n("Beaming finished!") );
906} 911}
907 912
908 913
909void KABCore::browse( const QString& url ) 914void KABCore::browse( const QString& url )
910{ 915{
911#ifndef KAB_EMBEDDED 916#ifndef KAB_EMBEDDED
912 kapp->invokeBrowser( url ); 917 kapp->invokeBrowser( url );
913#else //KAB_EMBEDDED 918#else //KAB_EMBEDDED
914 qDebug("KABCore::browse must be fixed"); 919 qDebug("KABCore::browse must be fixed");
915#endif //KAB_EMBEDDED 920#endif //KAB_EMBEDDED
916} 921}
917 922
918void KABCore::selectAllContacts() 923void KABCore::selectAllContacts()
919{ 924{
920 mViewManager->setSelected( QString::null, true ); 925 mViewManager->setSelected( QString::null, true );
921} 926}
922 927
923void KABCore::deleteContacts() 928void KABCore::deleteContacts()
924{ 929{
925 QStringList uidList = mViewManager->selectedUids(); 930 QStringList uidList = mViewManager->selectedUids();
926 deleteContacts( uidList ); 931 deleteContacts( uidList );
927} 932}
928 933
929void KABCore::deleteContacts( const QStringList &uids ) 934void KABCore::deleteContacts( const QStringList &uids )
930{ 935{
931 if ( uids.count() > 0 ) { 936 if ( uids.count() > 0 ) {
932 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 937 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
933 UndoStack::instance()->push( command ); 938 UndoStack::instance()->push( command );
934 RedoStack::instance()->clear(); 939 RedoStack::instance()->clear();
935 940
936 // now if we deleted anything, refresh 941 // now if we deleted anything, refresh
937 setContactSelected( QString::null ); 942 setContactSelected( QString::null );
938 setModified( true ); 943 setModified( true );
939 } 944 }
940} 945}
941 946
942void KABCore::copyContacts() 947void KABCore::copyContacts()
943{ 948{
944 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 949 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
945 950
946 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 951 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
947 952
948 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 953 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
949 954
950 QClipboard *cb = QApplication::clipboard(); 955 QClipboard *cb = QApplication::clipboard();
951 cb->setText( clipText ); 956 cb->setText( clipText );
952} 957}
953 958
954void KABCore::cutContacts() 959void KABCore::cutContacts()
955{ 960{
956 QStringList uidList = mViewManager->selectedUids(); 961 QStringList uidList = mViewManager->selectedUids();
957 962
958//US if ( uidList.size() > 0 ) { 963//US if ( uidList.size() > 0 ) {
959 if ( uidList.count() > 0 ) { 964 if ( uidList.count() > 0 ) {
960 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 965 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
961 UndoStack::instance()->push( command ); 966 UndoStack::instance()->push( command );
962 RedoStack::instance()->clear(); 967 RedoStack::instance()->clear();
963 968
964 setModified( true ); 969 setModified( true );
965 } 970 }
966} 971}
967 972
968void KABCore::pasteContacts() 973void KABCore::pasteContacts()
969{ 974{
970 QClipboard *cb = QApplication::clipboard(); 975 QClipboard *cb = QApplication::clipboard();
971 976
972 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 977 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
973 978
974 pasteContacts( list ); 979 pasteContacts( list );
975} 980}
976 981
977void KABCore::pasteContacts( KABC::Addressee::List &list ) 982void KABCore::pasteContacts( KABC::Addressee::List &list )
978{ 983{
979 KABC::Resource *resource = requestResource( this ); 984 KABC::Resource *resource = requestResource( this );
980 KABC::Addressee::List::Iterator it; 985 KABC::Addressee::List::Iterator it;
981 for ( it = list.begin(); it != list.end(); ++it ) 986 for ( it = list.begin(); it != list.end(); ++it )
982 (*it).setResource( resource ); 987 (*it).setResource( resource );
983 988
984 PwPasteCommand *command = new PwPasteCommand( this, list ); 989 PwPasteCommand *command = new PwPasteCommand( this, list );
985 UndoStack::instance()->push( command ); 990 UndoStack::instance()->push( command );
986 RedoStack::instance()->clear(); 991 RedoStack::instance()->clear();
987 992
988 setModified( true ); 993 setModified( true );
989} 994}
990 995
991void KABCore::setWhoAmI() 996void KABCore::setWhoAmI()
992{ 997{
993 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 998 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
994 999
995 if ( addrList.count() > 1 ) { 1000 if ( addrList.count() > 1 ) {
996 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1001 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
997 return; 1002 return;
998 } 1003 }
999 1004
1000 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1005 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1001 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1006 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
1002 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1007 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1003} 1008}
1004void KABCore::editCategories() 1009void KABCore::editCategories()
1005{ 1010{
1006 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1011 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1007 dlg.exec(); 1012 dlg.exec();
1008} 1013}
1009void KABCore::setCategories() 1014void KABCore::setCategories()
1010{ 1015{
1011 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1016 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1012 if ( !dlg.exec() ) { 1017 if ( !dlg.exec() ) {
1013 message( i18n("Setting categories cancelled") ); 1018 message( i18n("Setting categories cancelled") );
1014 return; 1019 return;
1015 } 1020 }
1016 bool merge = false; 1021 bool merge = false;
1017 QString msg = i18n( "Merge with existing categories?" ); 1022 QString msg = i18n( "Merge with existing categories?" );
1018 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 1023 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
1019 merge = true; 1024 merge = true;
1020 1025
1021 message( i18n("Setting categories ... please wait!") ); 1026 message( i18n("Setting categories ... please wait!") );
1022 QStringList categories = dlg.selectedCategories(); 1027 QStringList categories = dlg.selectedCategories();
1023 1028
1024 QStringList uids = mViewManager->selectedUids(); 1029 QStringList uids = mViewManager->selectedUids();
1025 QStringList::Iterator it; 1030 QStringList::Iterator it;
1026 for ( it = uids.begin(); it != uids.end(); ++it ) { 1031 for ( it = uids.begin(); it != uids.end(); ++it ) {
1027 KABC::Addressee addr = mAddressBook->findByUid( *it ); 1032 KABC::Addressee addr = mAddressBook->findByUid( *it );
1028 if ( !addr.isEmpty() ) { 1033 if ( !addr.isEmpty() ) {
1029 if ( !merge ) 1034 if ( !merge )
1030 addr.setCategories( categories ); 1035 addr.setCategories( categories );
1031 else { 1036 else {
1032 QStringList addrCategories = addr.categories(); 1037 QStringList addrCategories = addr.categories();
1033 QStringList::Iterator catIt; 1038 QStringList::Iterator catIt;
1034 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1039 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1035 if ( !addrCategories.contains( *catIt ) ) 1040 if ( !addrCategories.contains( *catIt ) )
1036 addrCategories.append( *catIt ); 1041 addrCategories.append( *catIt );
1037 } 1042 }
1038 addr.setCategories( addrCategories ); 1043 addr.setCategories( addrCategories );
1039 } 1044 }
1040 mAddressBook->insertAddressee( addr ); 1045 mAddressBook->insertAddressee( addr );
1041 } 1046 }
1042 } 1047 }
1043 1048
1044 if ( uids.count() > 0 ) 1049 if ( uids.count() > 0 )
1045 setModified( true ); 1050 setModified( true );
1046 message( i18n("Setting categories completed!") ); 1051 message( i18n("Setting categories completed!") );
1047} 1052}
1048 1053
1049void KABCore::setSearchFields( const KABC::Field::List &fields ) 1054void KABCore::setSearchFields( const KABC::Field::List &fields )
1050{ 1055{
1051 mIncSearchWidget->setFields( fields ); 1056 mIncSearchWidget->setFields( fields );
1052} 1057}
1053 1058
1054void KABCore::incrementalSearch( const QString& text ) 1059void KABCore::incrementalSearch( const QString& text )
1055{ 1060{
1056 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1061 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1057} 1062}
1058 1063
1059void KABCore::setModified() 1064void KABCore::setModified()
1060{ 1065{
@@ -1546,513 +1551,513 @@ void KABCore::configurationChanged()
1546{ 1551{
1547 mExtensionManager->reconfigure(); 1552 mExtensionManager->reconfigure();
1548} 1553}
1549 1554
1550void KABCore::addressBookChanged() 1555void KABCore::addressBookChanged()
1551{ 1556{
1552/*US 1557/*US
1553 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1558 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1554 while ( it.current() ) { 1559 while ( it.current() ) {
1555 if ( it.current()->dirty() ) { 1560 if ( it.current()->dirty() ) {
1556 QString text = i18n( "Data has been changed externally. Unsaved " 1561 QString text = i18n( "Data has been changed externally. Unsaved "
1557 "changes will be lost." ); 1562 "changes will be lost." );
1558 KMessageBox::information( this, text ); 1563 KMessageBox::information( this, text );
1559 } 1564 }
1560 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1565 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1561 ++it; 1566 ++it;
1562 } 1567 }
1563*/ 1568*/
1564 if (mEditorDialog) 1569 if (mEditorDialog)
1565 { 1570 {
1566 if (mEditorDialog->dirty()) 1571 if (mEditorDialog->dirty())
1567 { 1572 {
1568 QString text = i18n( "Data has been changed externally. Unsaved " 1573 QString text = i18n( "Data has been changed externally. Unsaved "
1569 "changes will be lost." ); 1574 "changes will be lost." );
1570 KMessageBox::information( this, text ); 1575 KMessageBox::information( this, text );
1571 } 1576 }
1572 QString currentuid = mEditorDialog->addressee().uid(); 1577 QString currentuid = mEditorDialog->addressee().uid();
1573 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1578 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1574 } 1579 }
1575 mViewManager->refreshView(); 1580 mViewManager->refreshView();
1576// mDetails->refreshView(); 1581// mDetails->refreshView();
1577 1582
1578 1583
1579} 1584}
1580 1585
1581AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1586AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1582 const char *name ) 1587 const char *name )
1583{ 1588{
1584 1589
1585 if ( mEditorDialog == 0 ) { 1590 if ( mEditorDialog == 0 ) {
1586 mEditorDialog = new AddresseeEditorDialog( this, parent, 1591 mEditorDialog = new AddresseeEditorDialog( this, parent,
1587 name ? name : "editorDialog" ); 1592 name ? name : "editorDialog" );
1588 1593
1589 1594
1590 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1595 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1591 SLOT( contactModified( const KABC::Addressee& ) ) ); 1596 SLOT( contactModified( const KABC::Addressee& ) ) );
1592 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1597 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1593 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1598 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1594 } 1599 }
1595 1600
1596 return mEditorDialog; 1601 return mEditorDialog;
1597} 1602}
1598 1603
1599void KABCore::slotEditorDestroyed( const QString &uid ) 1604void KABCore::slotEditorDestroyed( const QString &uid )
1600{ 1605{
1601 //mEditorDict.remove( uid ); 1606 //mEditorDict.remove( uid );
1602} 1607}
1603 1608
1604void KABCore::initGUI() 1609void KABCore::initGUI()
1605{ 1610{
1606#ifndef KAB_EMBEDDED 1611#ifndef KAB_EMBEDDED
1607 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1612 QHBoxLayout *topLayout = new QHBoxLayout( this );
1608 topLayout->setSpacing( KDialogBase::spacingHint() ); 1613 topLayout->setSpacing( KDialogBase::spacingHint() );
1609 1614
1610 mExtensionBarSplitter = new QSplitter( this ); 1615 mExtensionBarSplitter = new QSplitter( this );
1611 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1616 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1612 1617
1613 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1618 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1614 1619
1615 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1620 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1616 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1621 mIncSearchWidget = new IncSearchWidget( viewSpace );
1617 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1622 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1618 SLOT( incrementalSearch( const QString& ) ) ); 1623 SLOT( incrementalSearch( const QString& ) ) );
1619 1624
1620 mViewManager = new ViewManager( this, viewSpace ); 1625 mViewManager = new ViewManager( this, viewSpace );
1621 viewSpace->setStretchFactor( mViewManager, 1 ); 1626 viewSpace->setStretchFactor( mViewManager, 1 );
1622 1627
1623 mDetails = new ViewContainer( mDetailsSplitter ); 1628 mDetails = new ViewContainer( mDetailsSplitter );
1624 1629
1625 mJumpButtonBar = new JumpButtonBar( this, this ); 1630 mJumpButtonBar = new JumpButtonBar( this, this );
1626 1631
1627 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1632 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1628 1633
1629 topLayout->addWidget( mExtensionBarSplitter ); 1634 topLayout->addWidget( mExtensionBarSplitter );
1630 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1635 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1631 topLayout->addWidget( mJumpButtonBar ); 1636 topLayout->addWidget( mJumpButtonBar );
1632 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1637 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1633 1638
1634 mXXPortManager = new XXPortManager( this, this ); 1639 mXXPortManager = new XXPortManager( this, this );
1635 1640
1636#else //KAB_EMBEDDED 1641#else //KAB_EMBEDDED
1637 //US initialize viewMenu before settingup viewmanager. 1642 //US initialize viewMenu before settingup viewmanager.
1638 // Viewmanager needs this menu to plugin submenues. 1643 // Viewmanager needs this menu to plugin submenues.
1639 viewMenu = new QPopupMenu( this ); 1644 viewMenu = new QPopupMenu( this );
1640 settingsMenu = new QPopupMenu( this ); 1645 settingsMenu = new QPopupMenu( this );
1641 //filterMenu = new QPopupMenu( this ); 1646 //filterMenu = new QPopupMenu( this );
1642 ImportMenu = new QPopupMenu( this ); 1647 ImportMenu = new QPopupMenu( this );
1643 ExportMenu = new QPopupMenu( this ); 1648 ExportMenu = new QPopupMenu( this );
1644 syncMenu = new QPopupMenu( this ); 1649 syncMenu = new QPopupMenu( this );
1645 changeMenu= new QPopupMenu( this ); 1650 changeMenu= new QPopupMenu( this );
1646 1651
1647//US since we have no splitter for the embedded system, setup 1652//US since we have no splitter for the embedded system, setup
1648// a layout with two frames. One left and one right. 1653// a layout with two frames. One left and one right.
1649 1654
1650 QBoxLayout *topLayout; 1655 QBoxLayout *topLayout;
1651 1656
1652 // = new QHBoxLayout( this ); 1657 // = new QHBoxLayout( this );
1653// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1658// QBoxLayout *topLayout = (QBoxLayout*)layout();
1654 1659
1655// QWidget *mainBox = new QWidget( this ); 1660// QWidget *mainBox = new QWidget( this );
1656// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1661// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1657 1662
1658#ifdef DESKTOP_VERSION 1663#ifdef DESKTOP_VERSION
1659 topLayout = new QHBoxLayout( this ); 1664 topLayout = new QHBoxLayout( this );
1660 1665
1661 1666
1662 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1667 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1663 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1668 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1664 1669
1665 topLayout->addWidget(mMiniSplitter ); 1670 topLayout->addWidget(mMiniSplitter );
1666 1671
1667 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1672 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1668 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1673 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1669 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1674 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1670 mDetails = new ViewContainer( mMiniSplitter ); 1675 mDetails = new ViewContainer( mMiniSplitter );
1671 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1676 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1672#else 1677#else
1673 if ( QApplication::desktop()->width() > 480 ) { 1678 if ( QApplication::desktop()->width() > 480 ) {
1674 topLayout = new QHBoxLayout( this ); 1679 topLayout = new QHBoxLayout( this );
1675 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1680 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1676 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1681 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1677 } else { 1682 } else {
1678 1683
1679 topLayout = new QHBoxLayout( this ); 1684 topLayout = new QHBoxLayout( this );
1680 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1685 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1681 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1686 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1682 } 1687 }
1683 1688
1684 topLayout->addWidget(mMiniSplitter ); 1689 topLayout->addWidget(mMiniSplitter );
1685 mViewManager = new ViewManager( this, mMiniSplitter ); 1690 mViewManager = new ViewManager( this, mMiniSplitter );
1686 mDetails = new ViewContainer( mMiniSplitter ); 1691 mDetails = new ViewContainer( mMiniSplitter );
1687 1692
1688 1693
1689 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1694 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1690#endif 1695#endif
1691 //eh->hide(); 1696 //eh->hide();
1692 // topLayout->addWidget(mExtensionManager ); 1697 // topLayout->addWidget(mExtensionManager );
1693 1698
1694 1699
1695/*US 1700/*US
1696#ifndef KAB_NOSPLITTER 1701#ifndef KAB_NOSPLITTER
1697 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1702 QHBoxLayout *topLayout = new QHBoxLayout( this );
1698//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1703//US topLayout->setSpacing( KDialogBase::spacingHint() );
1699 topLayout->setSpacing( 10 ); 1704 topLayout->setSpacing( 10 );
1700 1705
1701 mDetailsSplitter = new QSplitter( this ); 1706 mDetailsSplitter = new QSplitter( this );
1702 1707
1703 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1708 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1704 1709
1705 mViewManager = new ViewManager( this, viewSpace ); 1710 mViewManager = new ViewManager( this, viewSpace );
1706 viewSpace->setStretchFactor( mViewManager, 1 ); 1711 viewSpace->setStretchFactor( mViewManager, 1 );
1707 1712
1708 mDetails = new ViewContainer( mDetailsSplitter ); 1713 mDetails = new ViewContainer( mDetailsSplitter );
1709 1714
1710 topLayout->addWidget( mDetailsSplitter ); 1715 topLayout->addWidget( mDetailsSplitter );
1711 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1716 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1712#else //KAB_NOSPLITTER 1717#else //KAB_NOSPLITTER
1713 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1718 QHBoxLayout *topLayout = new QHBoxLayout( this );
1714//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1719//US topLayout->setSpacing( KDialogBase::spacingHint() );
1715 topLayout->setSpacing( 10 ); 1720 topLayout->setSpacing( 10 );
1716 1721
1717// mDetailsSplitter = new QSplitter( this ); 1722// mDetailsSplitter = new QSplitter( this );
1718 1723
1719 QVBox *viewSpace = new QVBox( this ); 1724 QVBox *viewSpace = new QVBox( this );
1720 1725
1721 mViewManager = new ViewManager( this, viewSpace ); 1726 mViewManager = new ViewManager( this, viewSpace );
1722 viewSpace->setStretchFactor( mViewManager, 1 ); 1727 viewSpace->setStretchFactor( mViewManager, 1 );
1723 1728
1724 mDetails = new ViewContainer( this ); 1729 mDetails = new ViewContainer( this );
1725 1730
1726 topLayout->addWidget( viewSpace ); 1731 topLayout->addWidget( viewSpace );
1727// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1732// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1728 topLayout->addWidget( mDetails ); 1733 topLayout->addWidget( mDetails );
1729#endif //KAB_NOSPLITTER 1734#endif //KAB_NOSPLITTER
1730*/ 1735*/
1731 1736
1732 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1737 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1733 syncManager->setBlockSave(false); 1738 syncManager->setBlockSave(false);
1734 1739
1735 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1740 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1736 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1741 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1737 syncManager->setDefaultFileName( sentSyncFile()); 1742 syncManager->setDefaultFileName( sentSyncFile());
1738 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1743 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1739 1744
1740#endif //KAB_EMBEDDED 1745#endif //KAB_EMBEDDED
1741 initActions(); 1746 initActions();
1742 1747
1743#ifdef KAB_EMBEDDED 1748#ifdef KAB_EMBEDDED
1744 addActionsManually(); 1749 addActionsManually();
1745 //US make sure the export and import menues are initialized before creating the xxPortManager. 1750 //US make sure the export and import menues are initialized before creating the xxPortManager.
1746 mXXPortManager = new XXPortManager( this, this ); 1751 mXXPortManager = new XXPortManager( this, this );
1747 1752
1748 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1753 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1749 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1754 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1750 // mActionQuit->plug ( mMainWindow->toolBar()); 1755 // mActionQuit->plug ( mMainWindow->toolBar());
1751 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1756 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1752 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1757 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1753 // mIncSearchWidget->hide(); 1758 // mIncSearchWidget->hide();
1754 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1759 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1755 SLOT( incrementalSearch( const QString& ) ) ); 1760 SLOT( incrementalSearch( const QString& ) ) );
1756 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1761 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1757 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1762 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1758 1763
1759 mJumpButtonBar = new JumpButtonBar( this, this ); 1764 mJumpButtonBar = new JumpButtonBar( this, this );
1760 1765
1761 topLayout->addWidget( mJumpButtonBar ); 1766 topLayout->addWidget( mJumpButtonBar );
1762//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1767//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1763 1768
1764// mMainWindow->getIconToolBar()->raise(); 1769// mMainWindow->getIconToolBar()->raise();
1765 1770
1766#endif //KAB_EMBEDDED 1771#endif //KAB_EMBEDDED
1767 1772
1768} 1773}
1769void KABCore::initActions() 1774void KABCore::initActions()
1770{ 1775{
1771//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1776//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1772 1777
1773#ifndef KAB_EMBEDDED 1778#ifndef KAB_EMBEDDED
1774 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1779 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1775 SLOT( clipboardDataChanged() ) ); 1780 SLOT( clipboardDataChanged() ) );
1776#endif //KAB_EMBEDDED 1781#endif //KAB_EMBEDDED
1777 1782
1778 // file menu 1783 // file menu
1779 if ( mIsPart ) { 1784 if ( mIsPart ) {
1780 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1785 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1781 SLOT( sendMail() ), actionCollection(), 1786 SLOT( sendMail() ), actionCollection(),
1782 "kaddressbook_mail" ); 1787 "kaddressbook_mail" );
1783 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1788 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1784 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1789 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1785 1790
1786 } else { 1791 } else {
1787 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1792 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1788 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1793 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1789 } 1794 }
1790 1795
1791 1796
1792 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1797 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1793 SLOT( save() ), actionCollection(), "file_sync" ); 1798 SLOT( save() ), actionCollection(), "file_sync" );
1794 1799
1795 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1800 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1796 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1801 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1797 1802
1798 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1803 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1799 this, SLOT( mailVCard() ), 1804 this, SLOT( mailVCard() ),
1800 actionCollection(), "file_mail_vcard"); 1805 actionCollection(), "file_mail_vcard");
1801 1806
1802 mActionExport2phone = new KAction( i18n( "Selected to phone" ), "ex2phone", 0, this, 1807 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1803 SLOT( export2phone() ), actionCollection(), 1808 SLOT( export2phone() ), actionCollection(),
1804 "kaddressbook_ex2phone" ); 1809 "kaddressbook_ex2phone" );
1805 1810
1806 mActionBeamVCard = 0; 1811 mActionBeamVCard = 0;
1807 mActionBeam = 0; 1812 mActionBeam = 0;
1808 1813
1809#ifndef DESKTOP_VERSION 1814#ifndef DESKTOP_VERSION
1810 if ( Ir::supported() ) { 1815 if ( Ir::supported() ) {
1811 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this, 1816 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this,
1812 SLOT( beamVCard() ), actionCollection(), 1817 SLOT( beamVCard() ), actionCollection(),
1813 "kaddressbook_beam_vcard" ); 1818 "kaddressbook_beam_vcard" );
1814 1819
1815 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1820 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1816 SLOT( beamMySelf() ), actionCollection(), 1821 SLOT( beamMySelf() ), actionCollection(),
1817 "kaddressbook_beam_myself" ); 1822 "kaddressbook_beam_myself" );
1818 } 1823 }
1819#endif 1824#endif
1820 1825
1821 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1826 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1822 this, SLOT( editContact2() ), 1827 this, SLOT( editContact2() ),
1823 actionCollection(), "file_properties" ); 1828 actionCollection(), "file_properties" );
1824 1829
1825#ifdef KAB_EMBEDDED 1830#ifdef KAB_EMBEDDED
1826 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1831 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1827 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1832 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1828 mMainWindow, SLOT( exit() ), 1833 mMainWindow, SLOT( exit() ),
1829 actionCollection(), "quit" ); 1834 actionCollection(), "quit" );
1830#endif //KAB_EMBEDDED 1835#endif //KAB_EMBEDDED
1831 1836
1832 // edit menu 1837 // edit menu
1833 if ( mIsPart ) { 1838 if ( mIsPart ) {
1834 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1839 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1835 SLOT( copyContacts() ), actionCollection(), 1840 SLOT( copyContacts() ), actionCollection(),
1836 "kaddressbook_copy" ); 1841 "kaddressbook_copy" );
1837 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1842 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1838 SLOT( cutContacts() ), actionCollection(), 1843 SLOT( cutContacts() ), actionCollection(),
1839 "kaddressbook_cut" ); 1844 "kaddressbook_cut" );
1840 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1845 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1841 SLOT( pasteContacts() ), actionCollection(), 1846 SLOT( pasteContacts() ), actionCollection(),
1842 "kaddressbook_paste" ); 1847 "kaddressbook_paste" );
1843 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1848 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1844 SLOT( selectAllContacts() ), actionCollection(), 1849 SLOT( selectAllContacts() ), actionCollection(),
1845 "kaddressbook_select_all" ); 1850 "kaddressbook_select_all" );
1846 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1851 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1847 SLOT( undo() ), actionCollection(), 1852 SLOT( undo() ), actionCollection(),
1848 "kaddressbook_undo" ); 1853 "kaddressbook_undo" );
1849 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1854 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1850 this, SLOT( redo() ), actionCollection(), 1855 this, SLOT( redo() ), actionCollection(),
1851 "kaddressbook_redo" ); 1856 "kaddressbook_redo" );
1852 } else { 1857 } else {
1853 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1858 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1854 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1859 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1855 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1860 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1856 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1861 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1857 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1862 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1858 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1863 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1859 } 1864 }
1860 1865
1861 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1866 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1862 Key_Delete, this, SLOT( deleteContacts() ), 1867 Key_Delete, this, SLOT( deleteContacts() ),
1863 actionCollection(), "edit_delete" ); 1868 actionCollection(), "edit_delete" );
1864 1869
1865 mActionUndo->setEnabled( false ); 1870 mActionUndo->setEnabled( false );
1866 mActionRedo->setEnabled( false ); 1871 mActionRedo->setEnabled( false );
1867 1872
1868 // settings menu 1873 // settings menu
1869#ifdef KAB_EMBEDDED 1874#ifdef KAB_EMBEDDED
1870//US special menuentry to configure the addressbook resources. On KDE 1875//US special menuentry to configure the addressbook resources. On KDE
1871// you do that through the control center !!! 1876// you do that through the control center !!!
1872 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1877 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1873 SLOT( configureResources() ), actionCollection(), 1878 SLOT( configureResources() ), actionCollection(),
1874 "kaddressbook_configure_resources" ); 1879 "kaddressbook_configure_resources" );
1875#endif //KAB_EMBEDDED 1880#endif //KAB_EMBEDDED
1876 1881
1877 if ( mIsPart ) { 1882 if ( mIsPart ) {
1878 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1883 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1879 SLOT( openConfigDialog() ), actionCollection(), 1884 SLOT( openConfigDialog() ), actionCollection(),
1880 "kaddressbook_configure" ); 1885 "kaddressbook_configure" );
1881 1886
1882 //US not implemented yet 1887 //US not implemented yet
1883 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1888 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1884 // this, SLOT( configureKeyBindings() ), actionCollection(), 1889 // this, SLOT( configureKeyBindings() ), actionCollection(),
1885 // "kaddressbook_configure_shortcuts" ); 1890 // "kaddressbook_configure_shortcuts" );
1886#ifdef KAB_EMBEDDED 1891#ifdef KAB_EMBEDDED
1887 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1892 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1888 mActionConfigureToolbars->setEnabled( false ); 1893 mActionConfigureToolbars->setEnabled( false );
1889#endif //KAB_EMBEDDED 1894#endif //KAB_EMBEDDED
1890 1895
1891 } else { 1896 } else {
1892 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1897 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1893 1898
1894 //US not implemented yet 1899 //US not implemented yet
1895 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1900 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1896 } 1901 }
1897 1902
1898 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1903 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1899 actionCollection(), "options_show_jump_bar" ); 1904 actionCollection(), "options_show_jump_bar" );
1900 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1905 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1901 1906
1902 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1907 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1903 actionCollection(), "options_show_details" ); 1908 actionCollection(), "options_show_details" );
1904 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1909 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1905 1910
1906 1911
1907 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 1912 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
1908 SLOT( toggleBeamReceive() ), actionCollection(), 1913 SLOT( toggleBeamReceive() ), actionCollection(),
1909 "kaddressbook_beam_rec" ); 1914 "kaddressbook_beam_rec" );
1910 1915
1911 1916
1912 // misc 1917 // misc
1913 // only enable LDAP lookup if we can handle the protocol 1918 // only enable LDAP lookup if we can handle the protocol
1914#ifndef KAB_EMBEDDED 1919#ifndef KAB_EMBEDDED
1915 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1920 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1916 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1921 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1917 this, SLOT( openLDAPDialog() ), actionCollection(), 1922 this, SLOT( openLDAPDialog() ), actionCollection(),
1918 "ldap_lookup" ); 1923 "ldap_lookup" );
1919 } 1924 }
1920#else //KAB_EMBEDDED 1925#else //KAB_EMBEDDED
1921 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1926 //qDebug("KABCore::initActions() LDAP has to be implemented");
1922#endif //KAB_EMBEDDED 1927#endif //KAB_EMBEDDED
1923 1928
1924 1929
1925 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1930 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1926 SLOT( setWhoAmI() ), actionCollection(), 1931 SLOT( setWhoAmI() ), actionCollection(),
1927 "set_personal" ); 1932 "set_personal" );
1928 1933
1929 1934
1930 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1935 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1931 SLOT( setCategories() ), actionCollection(), 1936 SLOT( setCategories() ), actionCollection(),
1932 "edit_set_categories" ); 1937 "edit_set_categories" );
1933 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 1938 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this,
1934 SLOT( editCategories() ), actionCollection(), 1939 SLOT( editCategories() ), actionCollection(),
1935 "edit__categories" ); 1940 "edit__categories" );
1936 1941
1937 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1942 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1938 SLOT( removeVoice() ), actionCollection(), 1943 SLOT( removeVoice() ), actionCollection(),
1939 "remove_voice" ); 1944 "remove_voice" );
1940 1945
1941 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 1946 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
1942 SLOT( manageCategories() ), actionCollection(), 1947 SLOT( manageCategories() ), actionCollection(),
1943 "remove_voice" ); 1948 "remove_voice" );
1944 1949
1945 1950
1946 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 1951 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
1947 SLOT( importFromOL() ), actionCollection(), 1952 SLOT( importFromOL() ), actionCollection(),
1948 "import_OL" ); 1953 "import_OL" );
1949#ifdef KAB_EMBEDDED 1954#ifdef KAB_EMBEDDED
1950 mActionLicence = new KAction( i18n( "Licence" ), 0, 1955 mActionLicence = new KAction( i18n( "Licence" ), 0,
1951 this, SLOT( showLicence() ), actionCollection(), 1956 this, SLOT( showLicence() ), actionCollection(),
1952 "licence_about_data" ); 1957 "licence_about_data" );
1953 mActionFaq = new KAction( i18n( "Faq" ), 0, 1958 mActionFaq = new KAction( i18n( "Faq" ), 0,
1954 this, SLOT( faq() ), actionCollection(), 1959 this, SLOT( faq() ), actionCollection(),
1955 "faq_about_data" ); 1960 "faq_about_data" );
1956 mActionWN = new KAction( i18n( "What's New?" ), 0, 1961 mActionWN = new KAction( i18n( "What's New?" ), 0,
1957 this, SLOT( whatsnew() ), actionCollection(), 1962 this, SLOT( whatsnew() ), actionCollection(),
1958 "wn" ); 1963 "wn" );
1959 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 1964 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
1960 this, SLOT( synchowto() ), actionCollection(), 1965 this, SLOT( synchowto() ), actionCollection(),
1961 "sync" ); 1966 "sync" );
1962 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 1967 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
1963 this, SLOT( kdesynchowto() ), actionCollection(), 1968 this, SLOT( kdesynchowto() ), actionCollection(),
1964 "kdesync" ); 1969 "kdesync" );
1965 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 1970 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
1966 this, SLOT( multisynchowto() ), actionCollection(), 1971 this, SLOT( multisynchowto() ), actionCollection(),
1967 "multisync" ); 1972 "multisync" );
1968 1973
1969 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1974 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1970 this, SLOT( createAboutData() ), actionCollection(), 1975 this, SLOT( createAboutData() ), actionCollection(),
1971 "kaddressbook_about_data" ); 1976 "kaddressbook_about_data" );
1972#endif //KAB_EMBEDDED 1977#endif //KAB_EMBEDDED
1973 1978
1974 clipboardDataChanged(); 1979 clipboardDataChanged();
1975 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1980 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1976 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1981 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1977} 1982}
1978 1983
1979//US we need this function, to plug all actions into the correct menues. 1984//US we need this function, to plug all actions into the correct menues.
1980// KDE uses a XML format to plug the actions, but we work her without this overhead. 1985// KDE uses a XML format to plug the actions, but we work her without this overhead.
1981void KABCore::addActionsManually() 1986void KABCore::addActionsManually()
1982{ 1987{
1983//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1988//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1984 1989
1985#ifdef KAB_EMBEDDED 1990#ifdef KAB_EMBEDDED
1986 QPopupMenu *fileMenu = new QPopupMenu( this ); 1991 QPopupMenu *fileMenu = new QPopupMenu( this );
1987 QPopupMenu *editMenu = new QPopupMenu( this ); 1992 QPopupMenu *editMenu = new QPopupMenu( this );
1988 QPopupMenu *helpMenu = new QPopupMenu( this ); 1993 QPopupMenu *helpMenu = new QPopupMenu( this );
1989 1994
1990 KToolBar* tb = mMainWindow->toolBar(); 1995 KToolBar* tb = mMainWindow->toolBar();
1991 1996
1992#ifndef DESKTOP_VERSION 1997#ifndef DESKTOP_VERSION
1993 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 1998 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
1994#endif 1999#endif
1995 QMenuBar* mb = mMainWindow->menuBar(); 2000 QMenuBar* mb = mMainWindow->menuBar();
1996 2001
1997 //US setup menubar. 2002 //US setup menubar.
1998 //Disable the following block if you do not want to have a menubar. 2003 //Disable the following block if you do not want to have a menubar.
1999 mb->insertItem( i18n("&File"), fileMenu ); 2004 mb->insertItem( i18n("&File"), fileMenu );
2000 mb->insertItem( i18n("&Edit"), editMenu ); 2005 mb->insertItem( i18n("&Edit"), editMenu );
2001 mb->insertItem( i18n("&View"), viewMenu ); 2006 mb->insertItem( i18n("&View"), viewMenu );
2002 mb->insertItem( i18n("&Settings"), settingsMenu ); 2007 mb->insertItem( i18n("&Settings"), settingsMenu );
2003 mb->insertItem( i18n("Synchronize"), syncMenu ); 2008 mb->insertItem( i18n("Synchronize"), syncMenu );
2004 mb->insertItem( i18n("&Change selected"), changeMenu ); 2009 mb->insertItem( i18n("&Change selected"), changeMenu );
2005 mb->insertItem( i18n("&Help"), helpMenu ); 2010 mb->insertItem( i18n("&Help"), helpMenu );
2006 mIncSearchWidget = new IncSearchWidget( tb ); 2011 mIncSearchWidget = new IncSearchWidget( tb );
2007 // tb->insertWidget(-1, 0, mIncSearchWidget); 2012 // tb->insertWidget(-1, 0, mIncSearchWidget);
2008#ifndef DESKTOP_VERSION 2013#ifndef DESKTOP_VERSION
2009 } else { 2014 } else {
2010 //US setup toolbar 2015 //US setup toolbar
2011 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2016 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2012 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2017 QPopupMenu *popupBarTB = new QPopupMenu( this );
2013 menuBarTB->insertItem( "ME", popupBarTB); 2018 menuBarTB->insertItem( "ME", popupBarTB);
2014 tb->insertWidget(-1, 0, menuBarTB); 2019 tb->insertWidget(-1, 0, menuBarTB);
2015 mIncSearchWidget = new IncSearchWidget( tb ); 2020 mIncSearchWidget = new IncSearchWidget( tb );
2016 2021
2017 tb->enableMoving(false); 2022 tb->enableMoving(false);
2018 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2023 popupBarTB->insertItem( i18n("&File"), fileMenu );
2019 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2024 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2020 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2025 popupBarTB->insertItem( i18n("&View"), viewMenu );
2021 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2026 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2022 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2027 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2023 mViewManager->getFilterAction()->plug ( popupBarTB); 2028 mViewManager->getFilterAction()->plug ( popupBarTB);
2024 popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2029 popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2025 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2030 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2026 if (QApplication::desktop()->width() > 320 ) { 2031 if (QApplication::desktop()->width() > 320 ) {
2027 // mViewManager->getFilterAction()->plug ( tb); 2032 // mViewManager->getFilterAction()->plug ( tb);
2028 } 2033 }
2029 } 2034 }
2030#endif 2035#endif
2031 // mActionQuit->plug ( mMainWindow->toolBar()); 2036 // mActionQuit->plug ( mMainWindow->toolBar());
2032 2037
2033 2038
2034 2039
2035 //US Now connect the actions with the menue entries. 2040 //US Now connect the actions with the menue entries.
2036 mActionPrint->plug( fileMenu ); 2041 mActionPrint->plug( fileMenu );
2037 mActionMail->plug( fileMenu ); 2042 mActionMail->plug( fileMenu );
2038 fileMenu->insertSeparator(); 2043 fileMenu->insertSeparator();
2039 2044
2040 mActionNewContact->plug( fileMenu ); 2045 mActionNewContact->plug( fileMenu );
2041 mActionNewContact->plug( tb ); 2046 mActionNewContact->plug( tb );
2042 2047
2043 mActionEditAddressee->plug( fileMenu ); 2048 mActionEditAddressee->plug( fileMenu );
2044 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2049 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2045 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2050 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2046 mActionEditAddressee->plug( tb ); 2051 mActionEditAddressee->plug( tb );
2047 2052
2048 fileMenu->insertSeparator(); 2053 fileMenu->insertSeparator();
2049 mActionSave->plug( fileMenu ); 2054 mActionSave->plug( fileMenu );
2050 fileMenu->insertItem( "&Import", ImportMenu ); 2055 fileMenu->insertItem( "&Import", ImportMenu );
2051 fileMenu->insertItem( "&Export", ExportMenu ); 2056 fileMenu->insertItem( "&Export", ExportMenu );
2052 fileMenu->insertSeparator(); 2057 fileMenu->insertSeparator();
2053 mActionMailVCard->plug( fileMenu ); 2058 mActionMailVCard->plug( fileMenu );
2054#ifndef DESKTOP_VERSION 2059#ifndef DESKTOP_VERSION
2055 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 2060 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
2056 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 2061 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
2057#endif 2062#endif
2058 fileMenu->insertSeparator(); 2063 fileMenu->insertSeparator();
diff --git a/kaddressbook/xxportselectdialog.cpp b/kaddressbook/xxportselectdialog.cpp
index 41c999b..be254c0 100644
--- a/kaddressbook/xxportselectdialog.cpp
+++ b/kaddressbook/xxportselectdialog.cpp
@@ -1,279 +1,288 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Anders Lund <anders.lund@lund.tdcadsl.dk> 3 Copyright (c) 2002 Anders Lund <anders.lund@lund.tdcadsl.dk>
4 Tobias Koenig <tokoe@kde.org> 4 Tobias Koenig <tokoe@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25/* 25/*
26Enhanced Version of the file for platform independent KDE tools. 26Enhanced Version of the file for platform independent KDE tools.
27Copyright (c) 2004 Ulf Schenk 27Copyright (c) 2004 Ulf Schenk
28 28
29$Id$ 29$Id$
30*/ 30*/
31 31
32#include <kabc/addressbook.h> 32#include <kabc/addressbook.h>
33#include <kapplication.h> 33#include <kapplication.h>
34#include <kcombobox.h> 34#include <kcombobox.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kglobal.h> 36#include <kglobal.h>
37 37
38#include <qbuttongroup.h> 38#include <qbuttongroup.h>
39#include <qcombobox.h> 39#include <qcombobox.h>
40#include <qheader.h> 40#include <qheader.h>
41#include <qlabel.h> 41#include <qlabel.h>
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qlistview.h> 43#include <qlistview.h>
44#include <qpushbutton.h> 44#include <qpushbutton.h>
45#include <qradiobutton.h> 45#include <qradiobutton.h>
46#include <qstringlist.h> 46#include <qstringlist.h>
47#include <qwhatsthis.h> 47#include <qwhatsthis.h>
48 48
49#include "kabcore.h" 49#include "kabcore.h"
50#include "kabprefs.h" 50#include "kabprefs.h"
51 51
52#include "xxportselectdialog.h" 52#include "xxportselectdialog.h"
53 53
54XXPortSelectDialog::XXPortSelectDialog( KABCore *core, bool sort, 54XXPortSelectDialog::XXPortSelectDialog( KABCore *core, bool sort,
55 QWidget* parent, const char* name ) 55 QWidget* parent, const char* name )
56 : KDialogBase( Plain, i18n( "Choose which contacts to export" ), Help | Ok | Cancel, 56 : KDialogBase( Plain, i18n( "Choose which contacts to export" ), Help | Ok | Cancel,
57 Ok, parent, name, true, true ), mCore( core ), 57 Ok, parent, name, true, true ), mCore( core ),
58 mUseSorting( sort ) 58 mUseSorting( sort )
59{ 59{
60 initGUI(); 60 initGUI();
61 61
62 connect( mFiltersCombo, SIGNAL( activated( int ) ), 62 connect( mFiltersCombo, SIGNAL( activated( int ) ),
63 SLOT( filterChanged( int ) ) ); 63 SLOT( filterChanged( int ) ) );
64 connect( mCategoriesView, SIGNAL( clicked( QListViewItem* ) ), 64 connect( mCategoriesView, SIGNAL( clicked( QListViewItem* ) ),
65 SLOT( categoryClicked( QListViewItem* ) ) ); 65 SLOT( categoryClicked( QListViewItem* ) ) );
66 66
67 // setup filters 67 // setup filters
68#ifndef KAB_EMBEDDED 68#ifndef KAB_EMBEDDED
69 mFilters = Filter::restore( kapp->config(), "Filter" ); 69 mFilters = Filter::restore( kapp->config(), "Filter" );
70 Filter::List::iterator filterIt; 70 Filter::List::iterator filterIt;
71#else //KAB_EMBEDDED 71#else //KAB_EMBEDDED
72 mFilters = Filter::restore( KGlobal::config(), "Filter" ); 72 mFilters = Filter::restore( KGlobal::config(), "Filter" );
73 Filter::List::Iterator filterIt; 73 Filter::List::Iterator filterIt;
74#endif //KAB_EMBEDDED 74#endif //KAB_EMBEDDED
75 QStringList filters; 75 QStringList filters;
76 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt ) 76 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
77 filters.append( (*filterIt).name() ); 77 filters.append( (*filterIt).name() );
78 78
79 mFiltersCombo->insertStringList( filters ); 79 mFiltersCombo->insertStringList( filters );
80 mUseFilters->setEnabled( filters.count() > 0 ); 80 mUseFilters->setEnabled( filters.count() > 0 );
81 81
82 // setup categories 82 // setup categories
83 QStringList categories = KABPrefs::instance()->mCustomCategories; 83 QStringList categories = KABPrefs::instance()->mCustomCategories;
84 QStringList::Iterator it; 84 QStringList::Iterator it;
85 for ( it = categories.begin(); it != categories.end(); ++it ) 85 for ( it = categories.begin(); it != categories.end(); ++it )
86 new QCheckListItem( mCategoriesView, *it, QCheckListItem::CheckBox ); 86 new QCheckListItem( mCategoriesView, *it, QCheckListItem::CheckBox );
87 mUseCategories->setEnabled( categories.count() > 0 ); 87 mUseCategories->setEnabled( categories.count() > 0 );
88 88
89 int count = mCore->selectedUIDs().count(); 89 int count = mCore->selectedUIDs().count();
90 mUseSelection->setEnabled( count != 0 ); 90 mUseSelection->setEnabled( count != 0 );
91 mUseSelection->setChecked( count > 1 ); 91 mUseSelection->setChecked( count > 1 );
92 92
93 mSortTypeCombo->insertItem( i18n( "Ascending" ) ); 93 mSortTypeCombo->insertItem( i18n( "Ascending" ) );
94 mSortTypeCombo->insertItem( i18n( "Descending" ) ); 94 mSortTypeCombo->insertItem( i18n( "Descending" ) );
95 95
96 mFields = mCore->addressBook()->fields( KABC::Field::All ); 96 mFields = mCore->addressBook()->fields( KABC::Field::All );
97 KABC::Field::List::Iterator fieldIt; 97 KABC::Field::List::Iterator fieldIt;
98 for ( fieldIt = mFields.begin(); fieldIt != mFields.end(); ++fieldIt ) 98 for ( fieldIt = mFields.begin(); fieldIt != mFields.end(); ++fieldIt )
99 mFieldCombo->insertItem( (*fieldIt)->label() ); 99 mFieldCombo->insertItem( (*fieldIt)->label() );
100} 100}
101 101
102QStringList XXPortSelectDialog::uids()
103{
104 QStringList uidlist;
105 KABC::AddresseeList list = contacts();
106 KABC::Addressee::List::Iterator it;
107 for ( it = list.begin(); it != list.end(); ++it )
108 uidlist.append((*it).uid());
109 return uidlist;
110}
102KABC::AddresseeList XXPortSelectDialog::contacts() 111KABC::AddresseeList XXPortSelectDialog::contacts()
103{ 112{
104 QStringList selection = mCore->selectedUIDs(); 113 QStringList selection = mCore->selectedUIDs();
105 114
106 KABC::AddresseeList list; 115 KABC::AddresseeList list;
107 if ( mUseSelection->isChecked() ) { 116 if ( mUseSelection->isChecked() ) {
108 QStringList::Iterator it; 117 QStringList::Iterator it;
109 for ( it = selection.begin(); it != selection.end(); ++it ) { 118 for ( it = selection.begin(); it != selection.end(); ++it ) {
110 KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); 119 KABC::Addressee addr = mCore->addressBook()->findByUid( *it );
111 if ( !addr.isEmpty() ) 120 if ( !addr.isEmpty() )
112 list.append( addr ); 121 list.append( addr );
113 } 122 }
114 } else if ( mUseFilters->isChecked() ) { 123 } else if ( mUseFilters->isChecked() ) {
115 // find contacts that can pass selected filter 124 // find contacts that can pass selected filter
116 Filter::List::Iterator filterIt; 125 Filter::List::Iterator filterIt;
117 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt ) 126 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
118 if ( (*filterIt).name() == mFiltersCombo->currentText() ) 127 if ( (*filterIt).name() == mFiltersCombo->currentText() )
119 break; 128 break;
120 129
121 KABC::AddressBook::Iterator it; 130 KABC::AddressBook::Iterator it;
122 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) { 131 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
123 if ( (*filterIt).filterAddressee( *it ) ) 132 if ( (*filterIt).filterAddressee( *it ) )
124 list.append( *it ); 133 list.append( *it );
125 } 134 }
126 } else if ( mUseCategories->isChecked() ) { 135 } else if ( mUseCategories->isChecked() ) {
127 QStringList categorieList = categories(); 136 QStringList categorieList = categories();
128 KABC::AddressBook::Iterator it; 137 KABC::AddressBook::Iterator it;
129 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) { 138 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
130 QStringList tmp( (*it).categories() ); 139 QStringList tmp( (*it).categories() );
131 QStringList::Iterator tmpIt; 140 QStringList::Iterator tmpIt;
132 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt ) 141 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt )
133 if ( categorieList.contains( *tmpIt ) ) { 142 if ( categorieList.contains( *tmpIt ) ) {
134 list.append( *it ); 143 list.append( *it );
135 break; 144 break;
136 } 145 }
137 } 146 }
138 } else { 147 } else {
139 // create a string list of all entries: 148 // create a string list of all entries:
140 KABC::AddressBook::Iterator it; 149 KABC::AddressBook::Iterator it;
141 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) 150 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it )
142 list.append( *it ); 151 list.append( *it );
143 } 152 }
144 153
145 if ( mUseSorting ) { 154 if ( mUseSorting ) {
146 list.setReverseSorting( mSortTypeCombo->currentItem() == 1 ); 155 list.setReverseSorting( mSortTypeCombo->currentItem() == 1 );
147 uint pos = mFieldCombo->currentItem(); 156 uint pos = mFieldCombo->currentItem();
148 if ( pos < mFields.count() ) 157 if ( pos < mFields.count() )
149 list.sortByField( mFields[ pos ] ); 158 list.sortByField( mFields[ pos ] );
150 } 159 }
151 160
152 return list; 161 return list;
153} 162}
154 163
155QStringList XXPortSelectDialog::categories() const 164QStringList XXPortSelectDialog::categories() const
156{ 165{
157 QStringList list; 166 QStringList list;
158 167
159 QListViewItemIterator it( mCategoriesView ); 168 QListViewItemIterator it( mCategoriesView );
160 for ( ; it.current(); ++it ) { 169 for ( ; it.current(); ++it ) {
161 QCheckListItem* qcli = static_cast<QCheckListItem*>(it.current()); 170 QCheckListItem* qcli = static_cast<QCheckListItem*>(it.current());
162 if ( qcli->isOn() ) 171 if ( qcli->isOn() )
163 list.append( it.current()->text( 0 ) ); 172 list.append( it.current()->text( 0 ) );
164 } 173 }
165 174
166 return list; 175 return list;
167} 176}
168 177
169void XXPortSelectDialog::filterChanged( int ) 178void XXPortSelectDialog::filterChanged( int )
170{ 179{
171 mUseFilters->setChecked( true ); 180 mUseFilters->setChecked( true );
172} 181}
173 182
174void XXPortSelectDialog::categoryClicked( QListViewItem *i ) 183void XXPortSelectDialog::categoryClicked( QListViewItem *i )
175{ 184{
176 QCheckListItem *qcli = static_cast<QCheckListItem*>( i ); 185 QCheckListItem *qcli = static_cast<QCheckListItem*>( i );
177 if ( qcli->isOn() ) 186 if ( qcli->isOn() )
178 mUseCategories->setChecked( true ); 187 mUseCategories->setChecked( true );
179} 188}
180 189
181void XXPortSelectDialog::slotHelp() 190void XXPortSelectDialog::slotHelp()
182{ 191{
183#ifndef KAB_EMBEDDED 192#ifndef KAB_EMBEDDED
184 kapp->invokeHelp( "import-and-export" ); 193 kapp->invokeHelp( "import-and-export" );
185#else //KAB_EMBEDDED 194#else //KAB_EMBEDDED
186 qDebug("XXPortSelectDialog::slotHelp is not implemented yet"); 195 qDebug("XXPortSelectDialog::slotHelp is not implemented yet");
187#endif //KAB_EMBEDDED 196#endif //KAB_EMBEDDED
188 197
189} 198}
190 199
191void XXPortSelectDialog::initGUI() 200void XXPortSelectDialog::initGUI()
192{ 201{
193 QFrame *page = plainPage(); 202 QFrame *page = plainPage();
194 203
195 QVBoxLayout *topLayout = new QVBoxLayout( page, KDialog::marginHint(), 204 QVBoxLayout *topLayout = new QVBoxLayout( page, KDialog::marginHint(),
196 KDialog::spacingHint() ); 205 KDialog::spacingHint() );
197 206
198 QLabel *label = new QLabel( i18n( "Which contacts do you want to export?" ), page ); 207 QLabel *label = new QLabel( i18n( "Which contacts do you want to export?" ), page );
199 topLayout->addWidget( label ); 208 topLayout->addWidget( label );
200 209
201 mButtonGroup = new QButtonGroup( i18n( "Contact Selection" ), page ); 210 mButtonGroup = new QButtonGroup( i18n( "Contact Selection" ), page );
202 mButtonGroup->setColumnLayout( 0, Qt::Vertical ); 211 mButtonGroup->setColumnLayout( 0, Qt::Vertical );
203 mButtonGroup->layout()->setSpacing( KDialog::spacingHint() ); 212 mButtonGroup->layout()->setSpacing( KDialog::spacingHint() );
204 mButtonGroup->layout()->setMargin( KDialog::marginHint() ); 213 mButtonGroup->layout()->setMargin( KDialog::marginHint() );
205 214
206 QGridLayout *groupLayout = new QGridLayout( mButtonGroup->layout() ); 215 QGridLayout *groupLayout = new QGridLayout( mButtonGroup->layout() );
207 groupLayout->setAlignment( Qt::AlignTop ); 216 groupLayout->setAlignment( Qt::AlignTop );
208 217
209 mUseWholeBook = new QRadioButton( i18n( "&All" ), mButtonGroup ); 218 mUseWholeBook = new QRadioButton( i18n( "&All" ), mButtonGroup );
210 mUseWholeBook->setChecked( true ); 219 mUseWholeBook->setChecked( true );
211 QWhatsThis::add( mUseWholeBook, i18n( "Export the entire address book" ) ); 220 QWhatsThis::add( mUseWholeBook, i18n( "Export the entire address book" ) );
212 groupLayout->addWidget( mUseWholeBook, 0, 0 ); 221 groupLayout->addWidget( mUseWholeBook, 0, 0 );
213 222
214 mUseSelection = new QRadioButton( i18n( "&Selected" ), mButtonGroup ); 223 mUseSelection = new QRadioButton( i18n( "&Selected" ), mButtonGroup );
215 QWhatsThis::add( mUseSelection, i18n( "Only export contacts selected in KAddressBook.\n" 224 QWhatsThis::add( mUseSelection, i18n( "Only export contacts selected in KAddressBook.\n"
216 "This option is disabled if no contacts are selected." ) ); 225 "This option is disabled if no contacts are selected." ) );
217 groupLayout->addWidget( mUseSelection, 1, 0 ); 226 groupLayout->addWidget( mUseSelection, 1, 0 );
218 227
219 mUseFilters = new QRadioButton( i18n( "By matching &filter" ), mButtonGroup ); 228 mUseFilters = new QRadioButton( i18n( "By matching &filter" ), mButtonGroup );
220 QWhatsThis::add( mUseFilters, i18n( "Only export contacts matching the selected filter.\n" 229 QWhatsThis::add( mUseFilters, i18n( "Only export contacts matching the selected filter.\n"
221 "This option is disabled if you haven't defined any filters" ) ); 230 "This option is disabled if you haven't defined any filters" ) );
222 groupLayout->addWidget( mUseFilters, 2, 0 ); 231 groupLayout->addWidget( mUseFilters, 2, 0 );
223 232
224 mUseCategories = new QRadioButton( i18n( "By Cate&gories" ), mButtonGroup ); 233 mUseCategories = new QRadioButton( i18n( "By Cate&gories" ), mButtonGroup );
225 QWhatsThis::add( mUseCategories, i18n( "Only export contacts who are members of a category that is checked on the list to the left.\n" 234 QWhatsThis::add( mUseCategories, i18n( "Only export contacts who are members of a category that is checked on the list to the left.\n"
226 "This option is disabled if you have no categories." ) ); 235 "This option is disabled if you have no categories." ) );
227 groupLayout->addWidget( mUseCategories, 3, 0 ); 236 groupLayout->addWidget( mUseCategories, 3, 0 );
228 237
229 mFiltersCombo = new QComboBox( false, mButtonGroup ); 238 mFiltersCombo = new QComboBox( false, mButtonGroup );
230 QWhatsThis::add( mFiltersCombo, i18n( "Select a filter to decide which contacts to export." ) ); 239 QWhatsThis::add( mFiltersCombo, i18n( "Select a filter to decide which contacts to export." ) );
231 groupLayout->addWidget( mFiltersCombo, 2, 1 ); 240 groupLayout->addWidget( mFiltersCombo, 2, 1 );
232 241
233 mCategoriesView = new QListView( mButtonGroup ); 242 mCategoriesView = new QListView( mButtonGroup );
234 mCategoriesView->addColumn( "" ); 243 mCategoriesView->addColumn( "" );
235 mCategoriesView->header()->hide(); 244 mCategoriesView->header()->hide();
236 QWhatsThis::add( mCategoriesView, i18n( "Check the categories whose members you want to export." ) ); 245 QWhatsThis::add( mCategoriesView, i18n( "Check the categories whose members you want to export." ) );
237 groupLayout->addWidget( mCategoriesView, 3, 1 ); 246 groupLayout->addWidget( mCategoriesView, 3, 1 );
238 247
239 topLayout->addWidget( mButtonGroup ); 248 topLayout->addWidget( mButtonGroup );
240 249
241 QButtonGroup *sortingGroup = new QButtonGroup( i18n( "Sorting" ), page ); 250 QButtonGroup *sortingGroup = new QButtonGroup( i18n( "Sorting" ), page );
242 sortingGroup->setColumnLayout( 0, Qt::Vertical ); 251 sortingGroup->setColumnLayout( 0, Qt::Vertical );
243 QGridLayout *sortLayout = new QGridLayout( sortingGroup->layout(), 2, 2, 252 QGridLayout *sortLayout = new QGridLayout( sortingGroup->layout(), 2, 2,
244 KDialog::spacingHint() ); 253 KDialog::spacingHint() );
245 sortLayout->setAlignment( Qt::AlignTop ); 254 sortLayout->setAlignment( Qt::AlignTop );
246 255
247 label = new QLabel( i18n( "Criterion:" ), sortingGroup ); 256 label = new QLabel( i18n( "Criterion:" ), sortingGroup );
248 sortLayout->addWidget( label, 0, 0 ); 257 sortLayout->addWidget( label, 0, 0 );
249 258
250#ifndef KAB_EMBEDDED 259#ifndef KAB_EMBEDDED
251 mFieldCombo = new KComboBox( false, sortingGroup ); 260 mFieldCombo = new KComboBox( false, sortingGroup );
252#else //KAB_EMBEDDED 261#else //KAB_EMBEDDED
253 //US Combobox is not editable anyway 262 //US Combobox is not editable anyway
254 mFieldCombo = new KComboBox( sortingGroup ); 263 mFieldCombo = new KComboBox( sortingGroup );
255#endif //KAB_EMBEDDED 264#endif //KAB_EMBEDDED
256 sortLayout->addWidget( mFieldCombo, 0, 1 ); 265 sortLayout->addWidget( mFieldCombo, 0, 1 );
257 266
258 label = new QLabel( i18n( "Order:" ), sortingGroup ); 267 label = new QLabel( i18n( "Order:" ), sortingGroup );
259 sortLayout->addWidget( label, 1, 0 ); 268 sortLayout->addWidget( label, 1, 0 );
260 269
261#ifndef KAB_EMBEDDED 270#ifndef KAB_EMBEDDED
262 mSortTypeCombo = new KComboBox( false, sortingGroup ); 271 mSortTypeCombo = new KComboBox( false, sortingGroup );
263#else //KAB_EMBEDDED 272#else //KAB_EMBEDDED
264 //US Combobox is not editable anyway 273 //US Combobox is not editable anyway
265 mSortTypeCombo = new KComboBox( sortingGroup ); 274 mSortTypeCombo = new KComboBox( sortingGroup );
266#endif //KAB_EMBEDDED 275#endif //KAB_EMBEDDED
267 sortLayout->addWidget( mSortTypeCombo, 1, 1 ); 276 sortLayout->addWidget( mSortTypeCombo, 1, 1 );
268 277
269 topLayout->addWidget( sortingGroup ); 278 topLayout->addWidget( sortingGroup );
270 279
271 if ( !mUseSorting ) 280 if ( !mUseSorting )
272 sortingGroup->hide(); 281 sortingGroup->hide();
273} 282}
274 283
275#ifndef KAB_EMBEDDED 284#ifndef KAB_EMBEDDED
276#include "xxportselectdialog.moc" 285#include "xxportselectdialog.moc"
277#endif //KAB_EMBEDDED 286#endif //KAB_EMBEDDED
278 287
279 288
diff --git a/kaddressbook/xxportselectdialog.h b/kaddressbook/xxportselectdialog.h
index 8d56f66..3bb696f 100644
--- a/kaddressbook/xxportselectdialog.h
+++ b/kaddressbook/xxportselectdialog.h
@@ -1,81 +1,82 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Anders Lund <anders.lund@lund.tdcadsl.dk> 3 Copyright (c) 2002 Anders Lund <anders.lund@lund.tdcadsl.dk>
4 Tobias Koenig <tokoe@kde.org> 4 Tobias Koenig <tokoe@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef XXPORTSELECTDIALOG_H 24#ifndef XXPORTSELECTDIALOG_H
25#define XXPORTSELECTDIALOG_H 25#define XXPORTSELECTDIALOG_H
26 26
27#include <kabc/addresseelist.h> 27#include <kabc/addresseelist.h>
28#include <kabc/field.h> 28#include <kabc/field.h>
29#include <kdialogbase.h> 29#include <kdialogbase.h>
30 30
31#include "filter.h" 31#include "filter.h"
32 32
33class QButtonGroup; 33class QButtonGroup;
34class QComboBox; 34class QComboBox;
35class QListView; 35class QListView;
36class QListViewItem; 36class QListViewItem;
37class QRadioButton; 37class QRadioButton;
38 38
39class KABCore; 39class KABCore;
40class KComboBox; 40class KComboBox;
41 41
42class XXPortSelectDialog : public KDialogBase 42class XXPortSelectDialog : public KDialogBase
43{ 43{
44 Q_OBJECT 44 Q_OBJECT
45 45
46 public: 46 public:
47 XXPortSelectDialog( KABCore *core, bool sort, QWidget* parent, 47 XXPortSelectDialog( KABCore *core, bool sort, QWidget* parent,
48 const char* name = 0 ); 48 const char* name = 0 );
49 49
50 KABC::AddresseeList contacts(); 50 KABC::AddresseeList contacts();
51 QStringList uids();
51 52
52 private slots: 53 private slots:
53 void filterChanged( int ); 54 void filterChanged( int );
54 void categoryClicked( QListViewItem * i ); 55 void categoryClicked( QListViewItem * i );
55 56
56 protected slots: 57 protected slots:
57 void slotHelp(); 58 void slotHelp();
58 59
59 private: 60 private:
60 void initGUI(); 61 void initGUI();
61 QStringList categories() const; 62 QStringList categories() const;
62 63
63 QButtonGroup* mButtonGroup; 64 QButtonGroup* mButtonGroup;
64 QRadioButton* mUseCategories; 65 QRadioButton* mUseCategories;
65 QRadioButton* mUseFilters; 66 QRadioButton* mUseFilters;
66 QRadioButton* mUseWholeBook; 67 QRadioButton* mUseWholeBook;
67 QRadioButton* mUseSelection; 68 QRadioButton* mUseSelection;
68 QComboBox* mFiltersCombo; 69 QComboBox* mFiltersCombo;
69 QListView* mCategoriesView; 70 QListView* mCategoriesView;
70 71
71 KComboBox *mFieldCombo; 72 KComboBox *mFieldCombo;
72 KComboBox *mSortTypeCombo; 73 KComboBox *mSortTypeCombo;
73 74
74 KABCore *mCore; 75 KABCore *mCore;
75 KABC::AddresseeList mAddresseeList; 76 KABC::AddresseeList mAddresseeList;
76 Filter::List mFilters; 77 Filter::List mFilters;
77 KABC::Field::List mFields; 78 KABC::Field::List mFields;
78 bool mUseSorting; 79 bool mUseSorting;
79}; 80};
80 81
81#endif 82#endif
diff --git a/version b/version
index 4368d49..c4fe6e2 100644
--- a/version
+++ b/version
@@ -1 +1 @@
version = "1.9.12"; version = "1.9.13";