summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2005-01-17 18:22:47 (UTC)
committer zautrix <zautrix>2005-01-17 18:22:47 (UTC)
commit32479683283fc9f20d369ac9671ba0f8a33d3381 (patch) (unidiff)
tree0d764657db915bd2d2bf2fb751800eb14515626b /kaddressbook
parent11e05160cda1571a208edbabc71f6d94e394d829 (diff)
downloadkdepimpi-32479683283fc9f20d369ac9671ba0f8a33d3381.zip
kdepimpi-32479683283fc9f20d369ac9671ba0f8a33d3381.tar.gz
kdepimpi-32479683283fc9f20d369ac9671ba0f8a33d3381.tar.bz2
fast set formatted name
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/imagewidget.cpp25
-rw-r--r--kaddressbook/kabcore.cpp52
-rw-r--r--kaddressbook/xxportselectdialog.cpp48
-rw-r--r--kaddressbook/xxportselectdialog.h1
4 files changed, 87 insertions, 39 deletions
diff --git a/kaddressbook/imagewidget.cpp b/kaddressbook/imagewidget.cpp
index 9ee4eac..1e9743c 100644
--- a/kaddressbook/imagewidget.cpp
+++ b/kaddressbook/imagewidget.cpp
@@ -1,211 +1,210 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <kabc/picture.h> 24#include <kabc/picture.h>
25 25
26#ifndef KAB_EMBEDDED 26#ifndef KAB_EMBEDDED
27#include <kaccelmanager.h> 27#include <kaccelmanager.h>
28#include <kio/netaccess.h> 28#include <kio/netaccess.h>
29#include <kimageio.h> 29#include <kimageio.h>
30#endif //KAB_EMBEDDED 30#endif //KAB_EMBEDDED
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kdialog.h> 33#include <kdialog.h>
34#include <kiconloader.h> 34#include <kiconloader.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kurlrequester.h> 36#include <kurlrequester.h>
37#include <kurl.h> 37#include <kurl.h>
38 38
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qgroupbox.h> 40#include <qgroupbox.h>
41#include <qlabel.h> 41#include <qlabel.h>
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qpixmap.h> 43#include <qpixmap.h>
44#include <qpushbutton.h> 44#include <qpushbutton.h>
45#include <qapplication.h> 45#include <qapplication.h>
46 46
47#include "imagewidget.h" 47#include "imagewidget.h"
48 48
49ImageWidget::ImageWidget( QWidget *parent, const char *name ) 49ImageWidget::ImageWidget( QWidget *parent, const char *name )
50 : QWidget( parent, name ) 50 : QWidget( parent, name )
51{ 51{
52 QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(), 52 QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(),
53 KDialog::spacingHint() ); 53 KDialog::spacingHint() );
54 54
55 QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this ); 55 QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this );
56 QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 4, 2, 56 QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 3, 2,
57 KDialog::spacingHint() ); 57 KDialog::spacingHint() );
58 boxLayout->setRowStretch( 2, 1 ); 58 boxLayout->setRowStretch( 2, 1 );
59 59
60 mPhotoLabel = new QLabel( photoBox ); 60 mPhotoLabel = new QLabel( photoBox );
61 int fac = 9; 61 int fac = 9;
62 if ( QApplication::desktop()->width() > 320 ) 62 if ( QApplication::desktop()->width() > 320 )
63 fac = 6; 63 fac = 6;
64 mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac ); 64 mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac );
65 mPhotoLabel->setScaledContents( true ); 65 mPhotoLabel->setScaledContents( true );
66 mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 66 mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken );
67 boxLayout->addMultiCellWidget( mPhotoLabel, 0, 3, 0, 0 ); 67 boxLayout->addMultiCellWidget( mPhotoLabel, 0, 3, 0, 0 );
68 68
69 mPhotoUrl = new KURLRequester( photoBox ); 69 mPhotoUrl = new KURLRequester( photoBox );
70#ifndef KAB_EMBEDDED 70#ifndef KAB_EMBEDDED
71 mPhotoUrl->setFilter( KImageIO::pattern() ); 71 mPhotoUrl->setFilter( KImageIO::pattern() );
72#else //KAB_EMBEDDED 72#else //KAB_EMBEDDED
73//US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???"); 73//US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???");
74#endif //KAB_EMBEDDED 74#endif //KAB_EMBEDDED
75 75
76 76
77 boxLayout->addWidget( mPhotoUrl, 0, 1 ); 77 boxLayout->addWidget( mPhotoUrl, 0, 1 );
78 78 QHBox *hb1 = new QHBox ( photoBox );
79 mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), photoBox ); 79 mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), hb1 );
80 mUsePhotoUrl->setEnabled( false ); 80 mUsePhotoUrl->setEnabled( false );
81 boxLayout->addWidget( mUsePhotoUrl, 1, 1 ); 81 boxLayout->addWidget( hb1, 1, 1 );
82 82
83 QPushButton * pb = new QPushButton( i18n( "Remove" ), photoBox ); 83 QPushButton * pb = new QPushButton( i18n( "Remove" ), hb1 );
84 connect( pb, SIGNAL( clicked() ),this, SLOT( removePhoto() ) ); 84 connect( pb, SIGNAL( clicked() ),this, SLOT( removePhoto() ) );
85 boxLayout->addWidget( pb, 2, 1 ); 85 boxLayout->addWidget( new QLabel( photoBox ), 2, 1 );
86 boxLayout->addWidget( new QLabel( photoBox ), 3, 1 );
87 86
88 topLayout->addWidget( photoBox, 0, 0 ); 87 topLayout->addWidget( photoBox, 0, 0 );
89 88
90 QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this ); 89 QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this );
91 boxLayout = new QGridLayout( logoBox->layout(), 4, 2, KDialog::spacingHint() ); 90 boxLayout = new QGridLayout( logoBox->layout(), 3, 2, KDialog::spacingHint() );
92 boxLayout->setRowStretch( 2, 1 ); 91 boxLayout->setRowStretch( 2, 1 );
93 92
94 mLogoLabel = new QLabel( logoBox ); 93 mLogoLabel = new QLabel( logoBox );
95 mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac ); 94 mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac );
96 mLogoLabel->setScaledContents( true ); 95 mLogoLabel->setScaledContents( true );
97 mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 96 mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken );
98 boxLayout->addMultiCellWidget( mLogoLabel, 0, 3, 0, 0 ); 97 boxLayout->addMultiCellWidget( mLogoLabel, 0, 3, 0, 0 );
99 98
100 mLogoUrl = new KURLRequester( logoBox ); 99 mLogoUrl = new KURLRequester( logoBox );
101#ifndef KAB_EMBEDDED 100#ifndef KAB_EMBEDDED
102 mLogoUrl->setFilter( KImageIO::pattern() ); 101 mLogoUrl->setFilter( KImageIO::pattern() );
103#else //KAB_EMBEDDED 102#else //KAB_EMBEDDED
104//US qDebug("ImageWidget::ImageWidget KImageIO not defined 2"); 103//US qDebug("ImageWidget::ImageWidget KImageIO not defined 2");
105#endif //KAB_EMBEDDED 104#endif //KAB_EMBEDDED
106 boxLayout->addWidget( mLogoUrl, 0, 1 ); 105 boxLayout->addWidget( mLogoUrl, 0, 1 );
107 106
108 mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), logoBox ); 107 QHBox *hb2 = new QHBox ( logoBox );
108 mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), hb2 );
109 mUseLogoUrl->setEnabled( false ); 109 mUseLogoUrl->setEnabled( false );
110 boxLayout->addWidget( mUseLogoUrl, 1, 1 ); 110 boxLayout->addWidget( hb2, 1, 1 );
111 111
112 pb = new QPushButton( i18n( "Remove" ), logoBox ); 112 pb = new QPushButton( i18n( "Remove" ), hb2 );
113 connect( pb, SIGNAL( clicked() ),this, SLOT( removeLogo() ) ); 113 connect( pb, SIGNAL( clicked() ),this, SLOT( removeLogo() ) );
114 boxLayout->addWidget( pb, 2, 1 ); 114 boxLayout->addWidget( new QLabel( logoBox ), 2, 1 );
115 boxLayout->addWidget( new QLabel( logoBox ), 3, 1 );
116 topLayout->addWidget( logoBox, 1, 0 ); 115 topLayout->addWidget( logoBox, 1, 0 );
117 116
118 connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ), 117 connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ),
119 SIGNAL( changed() ) ); 118 SIGNAL( changed() ) );
120 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 119 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
121 SLOT( loadPhoto() ) ); 120 SLOT( loadPhoto() ) );
122 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 121 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
123 SIGNAL( changed() ) ); 122 SIGNAL( changed() ) );
124 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 123 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
125 SLOT( updateGUI() ) ); 124 SLOT( updateGUI() ) );
126 connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ), 125 connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ),
127 SIGNAL( changed() ) ); 126 SIGNAL( changed() ) );
128 127
129 connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ), 128 connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ),
130 SIGNAL( changed() ) ); 129 SIGNAL( changed() ) );
131 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 130 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
132 SLOT( loadLogo() ) ); 131 SLOT( loadLogo() ) );
133 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 132 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
134 SIGNAL( changed() ) ); 133 SIGNAL( changed() ) );
135 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 134 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
136 SLOT( updateGUI() ) ); 135 SLOT( updateGUI() ) );
137 connect( mUseLogoUrl, SIGNAL( toggled( bool ) ), 136 connect( mUseLogoUrl, SIGNAL( toggled( bool ) ),
138 SIGNAL( changed() ) ); 137 SIGNAL( changed() ) );
139 138
140#ifndef KAB_EMBEDDED 139#ifndef KAB_EMBEDDED
141 KAcceleratorManager::manage( this ); 140 KAcceleratorManager::manage( this );
142#endif //KAB_EMBEDDED 141#endif //KAB_EMBEDDED
143 142
144} 143}
145 144
146ImageWidget::~ImageWidget() 145ImageWidget::~ImageWidget()
147{ 146{
148} 147}
149 148
150void ImageWidget::setPhoto( const KABC::Picture &photo ) 149void ImageWidget::setPhoto( const KABC::Picture &photo )
151{ 150{
152 bool blocked = signalsBlocked(); 151 bool blocked = signalsBlocked();
153 blockSignals( true ); 152 blockSignals( true );
154 153
155 if ( photo.isIntern() ) { 154 if ( photo.isIntern() ) {
156//US 155//US
157//US mPhotoLabel->setPixmap( photo.data() ); 156//US mPhotoLabel->setPixmap( photo.data() );
158 if (photo.data().isNull() != true) 157 if (photo.data().isNull() != true)
159 { 158 {
160 QPixmap pm; 159 QPixmap pm;
161 pm.convertFromImage(photo.data()); 160 pm.convertFromImage(photo.data());
162 161
163 mPhotoLabel->setPixmap( pm ); 162 mPhotoLabel->setPixmap( pm );
164 } 163 }
165 164
166 mUsePhotoUrl->setChecked( false ); 165 mUsePhotoUrl->setChecked( false );
167 } else { 166 } else {
168 mPhotoUrl->setURL( photo.url() ); 167 mPhotoUrl->setURL( photo.url() );
169 if ( !photo.url().isEmpty() ) 168 if ( !photo.url().isEmpty() )
170 mUsePhotoUrl->setChecked( true ); 169 mUsePhotoUrl->setChecked( true );
171 loadPhoto(); 170 loadPhoto();
172 } 171 }
173 172
174 blockSignals( blocked ); 173 blockSignals( blocked );
175} 174}
176 175
177KABC::Picture ImageWidget::photo() const 176KABC::Picture ImageWidget::photo() const
178{ 177{
179 KABC::Picture photo; 178 KABC::Picture photo;
180 179
181 if ( mUsePhotoUrl->isChecked() ) 180 if ( mUsePhotoUrl->isChecked() )
182 photo.setUrl( mPhotoUrl->url() ); 181 photo.setUrl( mPhotoUrl->url() );
183 else { 182 else {
184 QPixmap *px = mPhotoLabel->pixmap(); 183 QPixmap *px = mPhotoLabel->pixmap();
185 if ( px ) { 184 if ( px ) {
186#ifndef KAB_EMBEDDED 185#ifndef KAB_EMBEDDED
187 if ( px->height() > px->width() ) 186 if ( px->height() > px->width() )
188 photo.setData( px->convertToImage().scaleHeight( 140 ) ); 187 photo.setData( px->convertToImage().scaleHeight( 140 ) );
189 else 188 else
190 photo.setData( px->convertToImage().scaleWidth( 100 ) ); 189 photo.setData( px->convertToImage().scaleWidth( 100 ) );
191#else //KAB_EMBEDDED 190#else //KAB_EMBEDDED
192//US add teh nullcheck 191//US add teh nullcheck
193 if (px->isNull() != true ) 192 if (px->isNull() != true )
194 photo.setData( px->convertToImage() ); 193 photo.setData( px->convertToImage() );
195#endif //KAB_EMBEDDED 194#endif //KAB_EMBEDDED
196 195
197 photo.setType( "PNG" ); 196 photo.setType( "PNG" );
198 } 197 }
199 } 198 }
200 199
201 return photo; 200 return photo;
202} 201}
203 202
204void ImageWidget::setLogo( const KABC::Picture &logo ) 203void ImageWidget::setLogo( const KABC::Picture &logo )
205{ 204{
206 bool blocked = signalsBlocked(); 205 bool blocked = signalsBlocked();
207 blockSignals( true ); 206 blockSignals( true );
208 207
209 if ( logo.isIntern() ) { 208 if ( logo.isIntern() ) {
210//US 209//US
211//US mLogoLabel->setPixmap( logo.data() ); 210//US mLogoLabel->setPixmap( logo.data() );
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 9526f23..d393660 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -132,193 +132,194 @@ $Id$
132#include <qlayout.h> 132#include <qlayout.h>
133#include <qclipboard.h> 133#include <qclipboard.h>
134#include <qtextstream.h> 134#include <qtextstream.h>
135#include <qradiobutton.h> 135#include <qradiobutton.h>
136#include <qbuttongroup.h> 136#include <qbuttongroup.h>
137 137
138#include <libkdepim/categoryselectdialog.h> 138#include <libkdepim/categoryselectdialog.h>
139#include <libkdepim/categoryeditdialog.h> 139#include <libkdepim/categoryeditdialog.h>
140#include <kabc/vcardconverter.h> 140#include <kabc/vcardconverter.h>
141 141
142 142
143#include "addresseeutil.h" 143#include "addresseeutil.h"
144#include "undocmds.h" 144#include "undocmds.h"
145#include "addresseeeditordialog.h" 145#include "addresseeeditordialog.h"
146#include "viewmanager.h" 146#include "viewmanager.h"
147#include "details/detailsviewcontainer.h" 147#include "details/detailsviewcontainer.h"
148#include "kabprefs.h" 148#include "kabprefs.h"
149#include "xxportmanager.h" 149#include "xxportmanager.h"
150#include "incsearchwidget.h" 150#include "incsearchwidget.h"
151#include "jumpbuttonbar.h" 151#include "jumpbuttonbar.h"
152#include "extensionmanager.h" 152#include "extensionmanager.h"
153#include "addresseeconfig.h" 153#include "addresseeconfig.h"
154#include "nameeditdialog.h" 154#include "nameeditdialog.h"
155#include <kcmultidialog.h> 155#include <kcmultidialog.h>
156 156
157#ifdef _WIN32_ 157#ifdef _WIN32_
158 158
159#include "kaimportoldialog.h" 159#include "kaimportoldialog.h"
160#else 160#else
161#include <unistd.h> 161#include <unistd.h>
162#endif 162#endif
163// sync includes 163// sync includes
164#include <libkdepim/ksyncprofile.h> 164#include <libkdepim/ksyncprofile.h>
165#include <libkdepim/ksyncprefsdialog.h> 165#include <libkdepim/ksyncprefsdialog.h>
166 166
167 167
168class KABCatPrefs : public QDialog 168class KABCatPrefs : public QDialog
169{ 169{
170 public: 170 public:
171 KABCatPrefs( QWidget *parent=0, const char *name=0 ) : 171 KABCatPrefs( QWidget *parent=0, const char *name=0 ) :
172 QDialog( parent, name, true ) 172 QDialog( parent, name, true )
173 { 173 {
174 setCaption( i18n("Manage new Categories") ); 174 setCaption( i18n("Manage new Categories") );
175 QVBoxLayout* lay = new QVBoxLayout( this ); 175 QVBoxLayout* lay = new QVBoxLayout( this );
176 lay->setSpacing( 3 ); 176 lay->setSpacing( 3 );
177 lay->setMargin( 3 ); 177 lay->setMargin( 3 );
178 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 ); 178 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 );
179 lay->addWidget( lab ); 179 lay->addWidget( lab );
180 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 180 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
181 lay->addWidget( format ); 181 lay->addWidget( format );
182 format->setExclusive ( true ) ; 182 format->setExclusive ( true ) ;
183 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 183 addCatBut = new QRadioButton(i18n("Add to category list"), format );
184 new QRadioButton(i18n("Remove from addressees"), format ); 184 new QRadioButton(i18n("Remove from addressees"), format );
185 addCatBut->setChecked( true ); 185 addCatBut->setChecked( true );
186 QPushButton * ok = new QPushButton( i18n("OK"), this ); 186 QPushButton * ok = new QPushButton( i18n("OK"), this );
187 lay->addWidget( ok ); 187 lay->addWidget( ok );
188 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 188 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
189 lay->addWidget( cancel ); 189 lay->addWidget( cancel );
190 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 190 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
191 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 191 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
192 resize( 200, 200 ); 192 resize( 200, 200 );
193 } 193 }
194 194
195 bool addCat() { return addCatBut->isChecked(); } 195 bool addCat() { return addCatBut->isChecked(); }
196private: 196private:
197 QRadioButton* addCatBut; 197 QRadioButton* addCatBut;
198}; 198};
199 199
200class KABFormatPrefs : public QDialog 200class KABFormatPrefs : public QDialog
201{ 201{
202 public: 202 public:
203 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) : 203 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) :
204 QDialog( parent, name, true ) 204 QDialog( parent, name, true )
205 { 205 {
206 setCaption( i18n("Set formatted name") ); 206 setCaption( i18n("Set formatted name") );
207 QVBoxLayout* lay = new QVBoxLayout( this ); 207 QVBoxLayout* lay = new QVBoxLayout( this );
208 lay->setSpacing( 3 ); 208 lay->setSpacing( 3 );
209 lay->setMargin( 3 ); 209 lay->setMargin( 3 );
210 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this ); 210 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this );
211 lay->addWidget( lab ); 211 lay->addWidget( lab );
212 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this ); 212 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this );
213 lay->addWidget( format ); 213 lay->addWidget( format );
214 format->setExclusive ( true ) ; 214 format->setExclusive ( true ) ;
215 simple = new QRadioButton(i18n("Simple: James Bond"), format ); 215 simple = new QRadioButton(i18n("Simple: James Bond"), format );
216 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format ); 216 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format );
217 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format ); 217 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format );
218 company = new QRadioButton(i18n("Organization: MI6"), format ); 218 company = new QRadioButton(i18n("Organization: MI6"), format );
219 simple->setChecked( true ); 219 simple->setChecked( true );
220 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this); 220 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this);
221 lay->addWidget( setCompany ); 221 lay->addWidget( setCompany );
222 QPushButton * ok = new QPushButton( i18n("Select contact list"), this ); 222 QPushButton * ok = new QPushButton( i18n("Select contact list"), this );
223 lay->addWidget( ok ); 223 lay->addWidget( ok );
224 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 224 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
225 lay->addWidget( cancel ); 225 lay->addWidget( cancel );
226 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 226 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
227 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 227 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
228 resize( 200, 200 ); 228 //resize( 200, 200 );
229
229 } 230 }
230public: 231public:
231 QRadioButton* simple, *full, *reverse, *company; 232 QRadioButton* simple, *full, *reverse, *company;
232 QCheckBox* setCompany; 233 QCheckBox* setCompany;
233}; 234};
234 235
235 236
236 237
237class KAex2phonePrefs : public QDialog 238class KAex2phonePrefs : public QDialog
238{ 239{
239 public: 240 public:
240 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 241 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
241 QDialog( parent, name, true ) 242 QDialog( parent, name, true )
242 { 243 {
243 setCaption( i18n("Export to phone options") ); 244 setCaption( i18n("Export to phone options") );
244 QVBoxLayout* lay = new QVBoxLayout( this ); 245 QVBoxLayout* lay = new QVBoxLayout( this );
245 lay->setSpacing( 3 ); 246 lay->setSpacing( 3 );
246 lay->setMargin( 3 ); 247 lay->setMargin( 3 );
247 QLabel *lab; 248 QLabel *lab;
248 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 249 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
249 lab->setAlignment (AlignHCenter ); 250 lab->setAlignment (AlignHCenter );
250 QHBox* temphb; 251 QHBox* temphb;
251 temphb = new QHBox( this ); 252 temphb = new QHBox( this );
252 new QLabel( i18n("I/O device: "), temphb ); 253 new QLabel( i18n("I/O device: "), temphb );
253 mPhoneDevice = new QLineEdit( temphb); 254 mPhoneDevice = new QLineEdit( temphb);
254 lay->addWidget( temphb ); 255 lay->addWidget( temphb );
255 temphb = new QHBox( this ); 256 temphb = new QHBox( this );
256 new QLabel( i18n("Connection: "), temphb ); 257 new QLabel( i18n("Connection: "), temphb );
257 mPhoneConnection = new QLineEdit( temphb); 258 mPhoneConnection = new QLineEdit( temphb);
258 lay->addWidget( temphb ); 259 lay->addWidget( temphb );
259 temphb = new QHBox( this ); 260 temphb = new QHBox( this );
260 new QLabel( i18n("Model(opt.): "), temphb ); 261 new QLabel( i18n("Model(opt.): "), temphb );
261 mPhoneModel = new QLineEdit( temphb); 262 mPhoneModel = new QLineEdit( temphb);
262 lay->addWidget( temphb ); 263 lay->addWidget( temphb );
263 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 264 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
264 // lay->addWidget( mWriteToSim ); 265 // lay->addWidget( mWriteToSim );
265 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 266 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
266 lab->setAlignment (AlignHCenter); 267 lab->setAlignment (AlignHCenter);
267 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 268 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
268 lay->addWidget( ok ); 269 lay->addWidget( ok );
269 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 270 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
270 lay->addWidget( cancel ); 271 lay->addWidget( cancel );
271 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 272 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
272 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 273 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
273 resize( 220, 240 ); 274 resize( 220, 240 );
274 275
275 } 276 }
276 277
277public: 278public:
278 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 279 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
279 QCheckBox* mWriteToSim; 280 QCheckBox* mWriteToSim;
280}; 281};
281 282
282 283
283bool pasteWithNewUid = true; 284bool pasteWithNewUid = true;
284 285
285#ifdef KAB_EMBEDDED 286#ifdef KAB_EMBEDDED
286KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 287KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
287 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 288 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
288 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 289 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
289 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 290 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
290#else //KAB_EMBEDDED 291#else //KAB_EMBEDDED
291KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 292KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
292 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 293 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
293 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 294 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
294 mReadWrite( readWrite ), mModified( false ) 295 mReadWrite( readWrite ), mModified( false )
295#endif //KAB_EMBEDDED 296#endif //KAB_EMBEDDED
296{ 297{
297 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 298 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
298 // syncManager->setBlockSave(false); 299 // syncManager->setBlockSave(false);
299 mMiniSplitter = 0; 300 mMiniSplitter = 0;
300 mExtensionBarSplitter = 0; 301 mExtensionBarSplitter = 0;
301 mIsPart = !parent->inherits( "KAddressBookMain" ); 302 mIsPart = !parent->inherits( "KAddressBookMain" );
302 mAddressBook = KABC::StdAddressBook::self(); 303 mAddressBook = KABC::StdAddressBook::self();
303 KABC::StdAddressBook::setAutomaticSave( false ); 304 KABC::StdAddressBook::setAutomaticSave( false );
304 305
305#ifndef KAB_EMBEDDED 306#ifndef KAB_EMBEDDED
306 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 307 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
307#endif //KAB_EMBEDDED 308#endif //KAB_EMBEDDED
308 309
309 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 310 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
310 SLOT( addressBookChanged() ) ); 311 SLOT( addressBookChanged() ) );
311 312
312#if 0 313#if 0
313 // LP moved to addressbook init method 314 // LP moved to addressbook init method
314 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 315 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
315 "X-Department", "KADDRESSBOOK" ); 316 "X-Department", "KADDRESSBOOK" );
316 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 317 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
317 "X-Profession", "KADDRESSBOOK" ); 318 "X-Profession", "KADDRESSBOOK" );
318 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 319 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
319 "X-AssistantsName", "KADDRESSBOOK" ); 320 "X-AssistantsName", "KADDRESSBOOK" );
320 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 321 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
321 "X-ManagersName", "KADDRESSBOOK" ); 322 "X-ManagersName", "KADDRESSBOOK" );
322 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 323 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
323 "X-SpousesName", "KADDRESSBOOK" ); 324 "X-SpousesName", "KADDRESSBOOK" );
324 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 325 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
@@ -1280,193 +1281,194 @@ void KABCore::addEmail( QString aStr )
1280#endif //KAB_EMBEDDED 1281#endif //KAB_EMBEDDED
1281} 1282}
1282 1283
1283void KABCore::importVCard( const KURL &url, bool showPreview ) 1284void KABCore::importVCard( const KURL &url, bool showPreview )
1284{ 1285{
1285 mXXPortManager->importVCard( url, showPreview ); 1286 mXXPortManager->importVCard( url, showPreview );
1286} 1287}
1287void KABCore::importFromOL() 1288void KABCore::importFromOL()
1288{ 1289{
1289#ifdef _WIN32_ 1290#ifdef _WIN32_
1290 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1291 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1291 idgl->exec(); 1292 idgl->exec();
1292 KABC::Addressee::List list = idgl->getAddressList(); 1293 KABC::Addressee::List list = idgl->getAddressList();
1293 if ( list.count() > 0 ) { 1294 if ( list.count() > 0 ) {
1294 KABC::Addressee::List listNew; 1295 KABC::Addressee::List listNew;
1295 KABC::Addressee::List listExisting; 1296 KABC::Addressee::List listExisting;
1296 KABC::Addressee::List::Iterator it; 1297 KABC::Addressee::List::Iterator it;
1297 KABC::AddressBook::Iterator iter; 1298 KABC::AddressBook::Iterator iter;
1298 for ( it = list.begin(); it != list.end(); ++it ) { 1299 for ( it = list.begin(); it != list.end(); ++it ) {
1299 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1300 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1300 listNew.append( (*it) ); 1301 listNew.append( (*it) );
1301 else 1302 else
1302 listExisting.append( (*it) ); 1303 listExisting.append( (*it) );
1303 } 1304 }
1304 if ( listExisting.count() > 0 ) 1305 if ( listExisting.count() > 0 )
1305 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1306 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1306 if ( listNew.count() > 0 ) { 1307 if ( listNew.count() > 0 ) {
1307 pasteWithNewUid = false; 1308 pasteWithNewUid = false;
1308 pasteContacts( listNew ); 1309 pasteContacts( listNew );
1309 pasteWithNewUid = true; 1310 pasteWithNewUid = true;
1310 } 1311 }
1311 } 1312 }
1312 delete idgl; 1313 delete idgl;
1313#endif 1314#endif
1314} 1315}
1315 1316
1316void KABCore::importVCard( const QString &vCard, bool showPreview ) 1317void KABCore::importVCard( const QString &vCard, bool showPreview )
1317{ 1318{
1318 mXXPortManager->importVCard( vCard, showPreview ); 1319 mXXPortManager->importVCard( vCard, showPreview );
1319} 1320}
1320 1321
1321//US added a second method without defaultparameter 1322//US added a second method without defaultparameter
1322void KABCore::editContact2() { 1323void KABCore::editContact2() {
1323 editContact( QString::null ); 1324 editContact( QString::null );
1324} 1325}
1325 1326
1326void KABCore::editContact( const QString &uid ) 1327void KABCore::editContact( const QString &uid )
1327{ 1328{
1328 1329
1329 if ( mExtensionManager->isQuickEditVisible() ) 1330 if ( mExtensionManager->isQuickEditVisible() )
1330 return; 1331 return;
1331 1332
1332 // First, locate the contact entry 1333 // First, locate the contact entry
1333 QString localUID = uid; 1334 QString localUID = uid;
1334 if ( localUID.isNull() ) { 1335 if ( localUID.isNull() ) {
1335 QStringList uidList = mViewManager->selectedUids(); 1336 QStringList uidList = mViewManager->selectedUids();
1336 if ( uidList.count() > 0 ) 1337 if ( uidList.count() > 0 )
1337 localUID = *( uidList.at( 0 ) ); 1338 localUID = *( uidList.at( 0 ) );
1338 } 1339 }
1339 1340
1340 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1341 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1341 if ( !addr.isEmpty() ) { 1342 if ( !addr.isEmpty() ) {
1342 mEditorDialog->setAddressee( addr ); 1343 mEditorDialog->setAddressee( addr );
1343 KApplication::execDialog ( mEditorDialog ); 1344 KApplication::execDialog ( mEditorDialog );
1344 } 1345 }
1345} 1346}
1346 1347
1347/** 1348/**
1348 Shows or edits the detail view for the given uid. If the uid is QString::null, 1349 Shows or edits the detail view for the given uid. If the uid is QString::null,
1349 the method will try to find a selected addressee in the view. 1350 the method will try to find a selected addressee in the view.
1350 */ 1351 */
1351void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1352void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1352{ 1353{
1353 if ( mMultipleViewsAtOnce ) 1354 if ( mMultipleViewsAtOnce )
1354 { 1355 {
1355 editContact( uid ); 1356 editContact( uid );
1356 } 1357 }
1357 else 1358 else
1358 { 1359 {
1359 setDetailsVisible( true ); 1360 setDetailsVisible( true );
1360 mActionDetails->setChecked(true); 1361 mActionDetails->setChecked(true);
1361 } 1362 }
1362 1363
1363} 1364}
1364 1365
1365void KABCore::save() 1366void KABCore::save()
1366{ 1367{
1367 if (syncManager->blockSave()) 1368 if (syncManager->blockSave())
1368 return; 1369 return;
1369 if ( !mModified ) 1370 if ( !mModified )
1370 return; 1371 return;
1371 1372
1372 syncManager->setBlockSave(true); 1373 syncManager->setBlockSave(true);
1373 QString text = i18n( "There was an error while attempting to save\n the " 1374 QString text = i18n( "There was an error while attempting to save\n the "
1374 "address book. Please check that some \nother application is " 1375 "address book. Please check that some \nother application is "
1375 "not using it. " ); 1376 "not using it. " );
1376 message(i18n("Saving addressbook ... ")); 1377 message(i18n("Saving ... please wait! "));
1378 qApp->processEvents();
1377#ifndef KAB_EMBEDDED 1379#ifndef KAB_EMBEDDED
1378 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1380 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1379 if ( !b || !b->save() ) { 1381 if ( !b || !b->save() ) {
1380 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1382 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1381 } 1383 }
1382#else //KAB_EMBEDDED 1384#else //KAB_EMBEDDED
1383 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1385 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1384 if ( !b || !b->save() ) { 1386 if ( !b || !b->save() ) {
1385 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1387 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1386 } 1388 }
1387#endif //KAB_EMBEDDED 1389#endif //KAB_EMBEDDED
1388 1390
1389 message(i18n("Addressbook saved!")); 1391 message(i18n("Addressbook saved!"));
1390 setModified( false ); 1392 setModified( false );
1391 syncManager->setBlockSave(false); 1393 syncManager->setBlockSave(false);
1392} 1394}
1393 1395
1394 1396
1395void KABCore::undo() 1397void KABCore::undo()
1396{ 1398{
1397 UndoStack::instance()->undo(); 1399 UndoStack::instance()->undo();
1398 1400
1399 // Refresh the view 1401 // Refresh the view
1400 mViewManager->refreshView(); 1402 mViewManager->refreshView();
1401} 1403}
1402 1404
1403void KABCore::redo() 1405void KABCore::redo()
1404{ 1406{
1405 RedoStack::instance()->redo(); 1407 RedoStack::instance()->redo();
1406 1408
1407 // Refresh the view 1409 // Refresh the view
1408 mViewManager->refreshView(); 1410 mViewManager->refreshView();
1409} 1411}
1410 1412
1411void KABCore::setJumpButtonBarVisible( bool visible ) 1413void KABCore::setJumpButtonBarVisible( bool visible )
1412{ 1414{
1413 if (mMultipleViewsAtOnce) 1415 if (mMultipleViewsAtOnce)
1414 { 1416 {
1415 if ( visible ) 1417 if ( visible )
1416 mJumpButtonBar->show(); 1418 mJumpButtonBar->show();
1417 else 1419 else
1418 mJumpButtonBar->hide(); 1420 mJumpButtonBar->hide();
1419 } 1421 }
1420 else 1422 else
1421 { 1423 {
1422 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1424 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1423 if (mViewManager->isVisible()) 1425 if (mViewManager->isVisible())
1424 { 1426 {
1425 if ( visible ) 1427 if ( visible )
1426 mJumpButtonBar->show(); 1428 mJumpButtonBar->show();
1427 else 1429 else
1428 mJumpButtonBar->hide(); 1430 mJumpButtonBar->hide();
1429 } 1431 }
1430 else 1432 else
1431 { 1433 {
1432 mJumpButtonBar->hide(); 1434 mJumpButtonBar->hide();
1433 } 1435 }
1434 } 1436 }
1435} 1437}
1436 1438
1437 1439
1438void KABCore::setDetailsToState() 1440void KABCore::setDetailsToState()
1439{ 1441{
1440 setDetailsVisible( mActionDetails->isChecked() ); 1442 setDetailsVisible( mActionDetails->isChecked() );
1441} 1443}
1442void KABCore::setDetailsToggle() 1444void KABCore::setDetailsToggle()
1443{ 1445{
1444 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1446 mActionDetails->setChecked( !mActionDetails->isChecked() );
1445 setDetailsToState(); 1447 setDetailsToState();
1446} 1448}
1447 1449
1448 1450
1449 1451
1450void KABCore::setDetailsVisible( bool visible ) 1452void KABCore::setDetailsVisible( bool visible )
1451{ 1453{
1452 if (visible && mDetails->isHidden()) 1454 if (visible && mDetails->isHidden())
1453 { 1455 {
1454 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1456 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1455 if ( addrList.count() > 0 ) 1457 if ( addrList.count() > 0 )
1456 mDetails->setAddressee( addrList[ 0 ] ); 1458 mDetails->setAddressee( addrList[ 0 ] );
1457 } 1459 }
1458 1460
1459 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1461 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1460 // the listview and the detailview. We do that by changing the splitbar size. 1462 // the listview and the detailview. We do that by changing the splitbar size.
1461 if (mMultipleViewsAtOnce) 1463 if (mMultipleViewsAtOnce)
1462 { 1464 {
1463 if ( visible ) 1465 if ( visible )
1464 mDetails->show(); 1466 mDetails->show();
1465 else 1467 else
1466 mDetails->hide(); 1468 mDetails->hide();
1467 } 1469 }
1468 else 1470 else
1469 { 1471 {
1470 if ( visible ) { 1472 if ( visible ) {
1471 mViewManager->hide(); 1473 mViewManager->hide();
1472 mDetails->show(); 1474 mDetails->show();
@@ -2270,217 +2272,223 @@ void KABCore::addActionsManually()
2270*/ 2272*/
2271 2273
2272#endif //KAB_EMBEDDED 2274#endif //KAB_EMBEDDED
2273 2275
2274 mActionExport2phone->plug( ExportMenu ); 2276 mActionExport2phone->plug( ExportMenu );
2275 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2277 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2276 syncManager->fillSyncMenu(); 2278 syncManager->fillSyncMenu();
2277 2279
2278} 2280}
2279void KABCore::showLicence() 2281void KABCore::showLicence()
2280{ 2282{
2281 KApplication::showLicence(); 2283 KApplication::showLicence();
2282} 2284}
2283 2285
2284void KABCore::manageCategories( ) 2286void KABCore::manageCategories( )
2285{ 2287{
2286 KABCatPrefs* cp = new KABCatPrefs(); 2288 KABCatPrefs* cp = new KABCatPrefs();
2287 cp->show(); 2289 cp->show();
2288 int w =cp->sizeHint().width() ; 2290 int w =cp->sizeHint().width() ;
2289 int h = cp->sizeHint().height() ; 2291 int h = cp->sizeHint().height() ;
2290 int dw = QApplication::desktop()->width(); 2292 int dw = QApplication::desktop()->width();
2291 int dh = QApplication::desktop()->height(); 2293 int dh = QApplication::desktop()->height();
2292 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2294 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2293 if ( !cp->exec() ) { 2295 if ( !cp->exec() ) {
2294 delete cp; 2296 delete cp;
2295 return; 2297 return;
2296 } 2298 }
2297 int count = 0; 2299 int count = 0;
2298 message( i18n("Please wait, processing categories...")); 2300 message( i18n("Please wait, processing categories..."));
2299 if ( cp->addCat() ) { 2301 if ( cp->addCat() ) {
2300 KABC::AddressBook::Iterator it; 2302 KABC::AddressBook::Iterator it;
2301 QStringList catList = KABPrefs::instance()->mCustomCategories; 2303 QStringList catList = KABPrefs::instance()->mCustomCategories;
2302 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2304 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2303 QStringList catIncList = (*it).categories(); 2305 QStringList catIncList = (*it).categories();
2304 int i; 2306 int i;
2305 for( i = 0; i< catIncList.count(); ++i ) { 2307 for( i = 0; i< catIncList.count(); ++i ) {
2306 if ( !catList.contains (catIncList[i])) { 2308 if ( !catList.contains (catIncList[i])) {
2307 catList.append( catIncList[i] ); 2309 catList.append( catIncList[i] );
2308 //qDebug("add cat %s ", catIncList[i].latin1()); 2310 //qDebug("add cat %s ", catIncList[i].latin1());
2309 ++count; 2311 ++count;
2310 } 2312 }
2311 } 2313 }
2312 } 2314 }
2313 catList.sort(); 2315 catList.sort();
2314 KABPrefs::instance()->mCustomCategories = catList; 2316 KABPrefs::instance()->mCustomCategories = catList;
2315 KABPrefs::instance()->writeConfig(); 2317 KABPrefs::instance()->writeConfig();
2316 message(QString::number( count )+ i18n(" categories added to list! ")); 2318 message(QString::number( count )+ i18n(" categories added to list! "));
2317 } else { 2319 } else {
2318 QStringList catList = KABPrefs::instance()->mCustomCategories; 2320 QStringList catList = KABPrefs::instance()->mCustomCategories;
2319 QStringList catIncList; 2321 QStringList catIncList;
2320 QStringList newCatList; 2322 QStringList newCatList;
2321 KABC::AddressBook::Iterator it; 2323 KABC::AddressBook::Iterator it;
2322 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2324 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2323 QStringList catIncList = (*it).categories(); 2325 QStringList catIncList = (*it).categories();
2324 int i; 2326 int i;
2325 if ( catIncList.count() ) { 2327 if ( catIncList.count() ) {
2326 newCatList.clear(); 2328 newCatList.clear();
2327 for( i = 0; i< catIncList.count(); ++i ) { 2329 for( i = 0; i< catIncList.count(); ++i ) {
2328 if ( catList.contains (catIncList[i])) { 2330 if ( catList.contains (catIncList[i])) {
2329 newCatList.append( catIncList[i] ); 2331 newCatList.append( catIncList[i] );
2330 } 2332 }
2331 } 2333 }
2332 newCatList.sort(); 2334 newCatList.sort();
2333 (*it).setCategories( newCatList ); 2335 (*it).setCategories( newCatList );
2334 mAddressBook->insertAddressee( (*it) ); 2336 mAddressBook->insertAddressee( (*it) );
2335 } 2337 }
2336 } 2338 }
2337 setModified( true ); 2339 setModified( true );
2338 mViewManager->refreshView(); 2340 mViewManager->refreshView();
2339 message( i18n("Removing categories done!")); 2341 message( i18n("Removing categories done!"));
2340 } 2342 }
2341 delete cp; 2343 delete cp;
2342} 2344}
2343void KABCore::removeVoice() 2345void KABCore::removeVoice()
2344{ 2346{
2345 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2347 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2346 return; 2348 return;
2347 KABC::Addressee::List list; 2349 KABC::Addressee::List list;
2348 XXPortSelectDialog dlg( this, false, this ); 2350 XXPortSelectDialog dlg( this, false, this );
2349 if ( dlg.exec() ) 2351 if ( dlg.exec() )
2350 list = dlg.contacts(); 2352 list = dlg.contacts();
2351 else 2353 else
2352 return; 2354 return;
2353 KABC::Addressee::List::Iterator it; 2355 KABC::Addressee::List::Iterator it;
2354 for ( it = list.begin(); it != list.end(); ++it ) { 2356 for ( it = list.begin(); it != list.end(); ++it ) {
2355 if ( (*it).removeVoice() ) 2357 if ( (*it).removeVoice() )
2356 addrModified((*it), false ); 2358 addrModified((*it), false );
2357 } 2359 }
2358} 2360}
2359 2361
2360void KABCore::setFormattedName() 2362void KABCore::setFormattedName()
2361{ 2363{
2362 KABFormatPrefs setpref; 2364 KABFormatPrefs setpref;
2363 if ( !setpref.exec() ) { 2365 if ( !setpref.exec() ) {
2364 return; 2366 return;
2365 } 2367 }
2366 KABC::Addressee::List list;
2367 XXPortSelectDialog dlg( this, false, this ); 2368 XXPortSelectDialog dlg( this, false, this );
2368 if ( dlg.exec() ) 2369 if ( !dlg.exec() )
2369 list = dlg.contacts();
2370 else
2371 return; 2370 return;
2372 KABC::Addressee::List::Iterator it; 2371 mAddressBook->setUntagged();
2373 for ( it = list.begin(); it != list.end(); ++it ) { 2372 dlg.tagSelected();
2374 QString fName; 2373 int count = 0;
2375 if ( setpref.simple->isChecked() ) 2374 KABC::AddressBook::Iterator it;
2376 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName ); 2375 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2377 else if ( setpref.full->isChecked() ) 2376 if ( (*it).tagged() ) {
2378 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName ); 2377 message(i18n("Changing contact #%1").arg( ++count ) );
2379 else if ( setpref.reverse->isChecked() ) 2378 qApp->processEvents();
2380 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName ); 2379 QString fName;
2381 else 2380 if ( setpref.simple->isChecked() )
2382 fName = (*it).organization(); 2381 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName );
2383 if ( setpref.setCompany->isChecked() ) 2382 else if ( setpref.full->isChecked() )
2384 if ( fName.isEmpty() || fName =="," ) 2383 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName );
2384 else if ( setpref.reverse->isChecked() )
2385 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName );
2386 else
2385 fName = (*it).organization(); 2387 fName = (*it).organization();
2386 (*it).setFormattedName( fName ); 2388 if ( setpref.setCompany->isChecked() )
2387 addrModified((*it),false ); 2389 if ( fName.isEmpty() || fName =="," )
2390 fName = (*it).organization();
2391 (*it).setFormattedName( fName );
2392 }
2388 } 2393 }
2394 message(i18n("Refreshing view...") );
2395 mViewManager->refreshView( "" );
2389 Addressee add; 2396 Addressee add;
2390 mDetails->setAddressee( add ); 2397 mDetails->setAddressee( add );
2398 message(i18n("Setting formatted name completed!") );
2391} 2399}
2392 2400
2393void KABCore::clipboardDataChanged() 2401void KABCore::clipboardDataChanged()
2394{ 2402{
2395 2403
2396 if ( mReadWrite ) 2404 if ( mReadWrite )
2397 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2405 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2398 2406
2399} 2407}
2400 2408
2401void KABCore::updateActionMenu() 2409void KABCore::updateActionMenu()
2402{ 2410{
2403 UndoStack *undo = UndoStack::instance(); 2411 UndoStack *undo = UndoStack::instance();
2404 RedoStack *redo = RedoStack::instance(); 2412 RedoStack *redo = RedoStack::instance();
2405 2413
2406 if ( undo->isEmpty() ) 2414 if ( undo->isEmpty() )
2407 mActionUndo->setText( i18n( "Undo" ) ); 2415 mActionUndo->setText( i18n( "Undo" ) );
2408 else 2416 else
2409 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2417 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2410 2418
2411 mActionUndo->setEnabled( !undo->isEmpty() ); 2419 mActionUndo->setEnabled( !undo->isEmpty() );
2412 2420
2413 if ( !redo->top() ) 2421 if ( !redo->top() )
2414 mActionRedo->setText( i18n( "Redo" ) ); 2422 mActionRedo->setText( i18n( "Redo" ) );
2415 else 2423 else
2416 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2424 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2417 2425
2418 mActionRedo->setEnabled( !redo->isEmpty() ); 2426 mActionRedo->setEnabled( !redo->isEmpty() );
2419} 2427}
2420 2428
2421void KABCore::configureKeyBindings() 2429void KABCore::configureKeyBindings()
2422{ 2430{
2423#ifndef KAB_EMBEDDED 2431#ifndef KAB_EMBEDDED
2424 KKeyDialog::configure( actionCollection(), true ); 2432 KKeyDialog::configure( actionCollection(), true );
2425#else //KAB_EMBEDDED 2433#else //KAB_EMBEDDED
2426 qDebug("KABCore::configureKeyBindings() not implemented"); 2434 qDebug("KABCore::configureKeyBindings() not implemented");
2427#endif //KAB_EMBEDDED 2435#endif //KAB_EMBEDDED
2428} 2436}
2429 2437
2430#ifdef KAB_EMBEDDED 2438#ifdef KAB_EMBEDDED
2431void KABCore::configureResources() 2439void KABCore::configureResources()
2432{ 2440{
2433 KRES::KCMKResources dlg( this, "" , 0 ); 2441 KRES::KCMKResources dlg( this, "" , 0 );
2434 2442
2435 if ( !dlg.exec() ) 2443 if ( !dlg.exec() )
2436 return; 2444 return;
2437 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2445 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2438} 2446}
2439#endif //KAB_EMBEDDED 2447#endif //KAB_EMBEDDED
2440 2448
2441 2449
2442/* this method will be called through the QCop interface from Ko/Pi to select addresses 2450/* this method will be called through the QCop interface from Ko/Pi to select addresses
2443 * for the attendees list of an event. 2451 * for the attendees list of an event.
2444 */ 2452 */
2445void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2453void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2446{ 2454{
2447 QStringList nameList; 2455 QStringList nameList;
2448 QStringList emailList; 2456 QStringList emailList;
2449 QStringList uidList; 2457 QStringList uidList;
2450 2458
2451 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2459 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2452 uint i=0; 2460 uint i=0;
2453 for (i=0; i < list.count(); i++) 2461 for (i=0; i < list.count(); i++)
2454 { 2462 {
2455 nameList.append(list[i].realName()); 2463 nameList.append(list[i].realName());
2456 emailList.append(list[i].preferredEmail()); 2464 emailList.append(list[i].preferredEmail());
2457 uidList.append(list[i].uid()); 2465 uidList.append(list[i].uid());
2458 } 2466 }
2459 2467
2460 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2468 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2461 2469
2462} 2470}
2463 2471
2464/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2472/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2465 * to put them into the calendar. 2473 * to put them into the calendar.
2466 */ 2474 */
2467void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2475void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2468{ 2476{
2469 // qDebug("KABCore::requestForBirthdayList"); 2477 // qDebug("KABCore::requestForBirthdayList");
2470 QStringList birthdayList; 2478 QStringList birthdayList;
2471 QStringList anniversaryList; 2479 QStringList anniversaryList;
2472 QStringList realNameList; 2480 QStringList realNameList;
2473 QStringList preferredEmailList; 2481 QStringList preferredEmailList;
2474 QStringList assembledNameList; 2482 QStringList assembledNameList;
2475 QStringList uidList; 2483 QStringList uidList;
2476 2484
2477 KABC::AddressBook::Iterator it; 2485 KABC::AddressBook::Iterator it;
2478 2486
2479 int count = 0; 2487 int count = 0;
2480 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2488 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2481 ++count; 2489 ++count;
2482 } 2490 }
2483 QProgressBar bar(count,0 ); 2491 QProgressBar bar(count,0 );
2484 int w = 300; 2492 int w = 300;
2485 if ( QApplication::desktop()->width() < 320 ) 2493 if ( QApplication::desktop()->width() < 320 )
2486 w = 220; 2494 w = 220;
@@ -3113,164 +3121,164 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
3113 AddressBook abLocal(filename,"syncContact"); 3121 AddressBook abLocal(filename,"syncContact");
3114 bool syncOK = false; 3122 bool syncOK = false;
3115 if ( abLocal.load() ) { 3123 if ( abLocal.load() ) {
3116 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); 3124 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode );
3117 bool external = false; 3125 bool external = false;
3118 bool isXML = false; 3126 bool isXML = false;
3119 if ( filename.right(4) == ".xml") { 3127 if ( filename.right(4) == ".xml") {
3120 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3128 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3121 isXML = true; 3129 isXML = true;
3122 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3130 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3123 } else { 3131 } else {
3124 external = !manager->mIsKapiFile; 3132 external = !manager->mIsKapiFile;
3125 if ( external ) { 3133 if ( external ) {
3126 qDebug("Setting vcf mode to external "); 3134 qDebug("Setting vcf mode to external ");
3127 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3135 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3128 AddressBook::Iterator it; 3136 AddressBook::Iterator it;
3129 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3137 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3130 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 3138 (*it).setID( mCurrentSyncDevice, (*it).uid() );
3131 (*it).computeCsum( mCurrentSyncDevice ); 3139 (*it).computeCsum( mCurrentSyncDevice );
3132 } 3140 }
3133 } 3141 }
3134 } 3142 }
3135 //AddressBook::Iterator it; 3143 //AddressBook::Iterator it;
3136 //QStringList vcards; 3144 //QStringList vcards;
3137 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3145 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3138 // qDebug("Name %s ", (*it).familyName().latin1()); 3146 // qDebug("Name %s ", (*it).familyName().latin1());
3139 //} 3147 //}
3140 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 3148 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
3141 if ( syncOK ) { 3149 if ( syncOK ) {
3142 if ( syncManager->mWriteBackFile ) 3150 if ( syncManager->mWriteBackFile )
3143 { 3151 {
3144 if ( external ) 3152 if ( external )
3145 abLocal.removeSyncAddressees( !isXML); 3153 abLocal.removeSyncAddressees( !isXML);
3146 qDebug("Saving remote AB "); 3154 qDebug("Saving remote AB ");
3147 if ( ! abLocal.saveAB()) 3155 if ( ! abLocal.saveAB())
3148 qDebug("Error writing back AB to file "); 3156 qDebug("Error writing back AB to file ");
3149 if ( external ) { 3157 if ( external ) {
3150 // afterwrite processing 3158 // afterwrite processing
3151 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); 3159 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
3152 } 3160 }
3153 } 3161 }
3154 } 3162 }
3155 setModified(); 3163 setModified();
3156 3164
3157 } 3165 }
3158 abLocal.removeResources(); 3166 abLocal.removeResources();
3159 if ( syncOK ) 3167 if ( syncOK )
3160 mViewManager->refreshView(); 3168 mViewManager->refreshView();
3161 return syncOK; 3169 return syncOK;
3162 3170
3163} 3171}
3164void KABCore::removeSyncInfo( QString syncProfile) 3172void KABCore::removeSyncInfo( QString syncProfile)
3165{ 3173{
3166 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 3174 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1());
3167 mAddressBook->removeSyncInfo( syncProfile ); 3175 mAddressBook->removeSyncInfo( syncProfile );
3168 setModified(); 3176 setModified();
3169} 3177}
3170 3178
3171 3179
3172//this is a overwritten callbackmethods from the syncinterface 3180//this is a overwritten callbackmethods from the syncinterface
3173bool KABCore::syncExternal(KSyncManager* manager, QString resource) 3181bool KABCore::syncExternal(KSyncManager* manager, QString resource)
3174{ 3182{
3175 if ( resource == "phone" ) 3183 if ( resource == "phone" )
3176 return syncPhone(); 3184 return syncPhone();
3177 disableBR( true ); 3185 disableBR( true );
3178 if ( manager != syncManager ) 3186 if ( manager != syncManager )
3179 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); 3187 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager ");
3180 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3188 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3181 3189
3182 AddressBook abLocal( resource,"syncContact"); 3190 AddressBook abLocal( resource,"syncContact");
3183 bool syncOK = false; 3191 bool syncOK = false;
3184 if ( abLocal.load() ) { 3192 if ( abLocal.load() ) {
3185 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3193 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
3186 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3194 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3187 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 3195 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
3188 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3196 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3189 if ( syncOK ) { 3197 if ( syncOK ) {
3190 if ( syncManager->mWriteBackFile ) { 3198 if ( syncManager->mWriteBackFile ) {
3191 abLocal.removeSyncAddressees( false ); 3199 abLocal.removeSyncAddressees( false );
3192 abLocal.saveAB(); 3200 abLocal.saveAB();
3193 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3201 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3194 } 3202 }
3195 } else 3203 } else
3196 message( i18n("Sync cancelled or failed.") ); 3204 message( i18n("Sync cancelled or failed.") );
3197 setModified(); 3205 setModified();
3198 } 3206 }
3199 abLocal.removeResources(); 3207 abLocal.removeResources();
3200 if ( syncOK ) 3208 if ( syncOK )
3201 mViewManager->refreshView(); 3209 mViewManager->refreshView();
3202 disableBR( false ); 3210 disableBR( false );
3203 return syncOK; 3211 return syncOK;
3204 3212
3205} 3213}
3206void KABCore::message( QString m ) 3214void KABCore::message( QString m )
3207{ 3215{
3208 topLevelWidget()->setCaption( m ); 3216 topLevelWidget()->setCaption( m );
3209 mMessageTimer->start( 15000, true ); 3217 mMessageTimer->start( 20000, true );
3210} 3218}
3211bool KABCore::syncPhone() 3219bool KABCore::syncPhone()
3212{ 3220{
3213 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 3221 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
3214 QString fileName = getPhoneFile(); 3222 QString fileName = getPhoneFile();
3215 if ( !PhoneAccess::readFromPhone( fileName) ) { 3223 if ( !PhoneAccess::readFromPhone( fileName) ) {
3216 message(i18n("Phone access failed!")); 3224 message(i18n("Phone access failed!"));
3217 return false; 3225 return false;
3218 } 3226 }
3219 AddressBook abLocal( fileName,"syncContact"); 3227 AddressBook abLocal( fileName,"syncContact");
3220 bool syncOK = false; 3228 bool syncOK = false;
3221 { 3229 {
3222 abLocal.importFromFile( fileName ); 3230 abLocal.importFromFile( fileName );
3223 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3231 qDebug("AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
3224 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3232 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3225 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 3233 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
3226 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3234 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3227 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3235 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3228 if ( syncOK ) { 3236 if ( syncOK ) {
3229 if ( syncManager->mWriteBackFile ) { 3237 if ( syncManager->mWriteBackFile ) {
3230 abLocal.removeSyncAddressees( true ); 3238 abLocal.removeSyncAddressees( true );
3231 abLocal.saveABphone( fileName ); 3239 abLocal.saveABphone( fileName );
3232 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 3240 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
3233 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 3241 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
3234 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3242 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3235 } 3243 }
3236 } 3244 }
3237 setModified(); 3245 setModified();
3238 } 3246 }
3239 abLocal.removeResources(); 3247 abLocal.removeResources();
3240 if ( syncOK ) 3248 if ( syncOK )
3241 mViewManager->refreshView(); 3249 mViewManager->refreshView();
3242 return syncOK; 3250 return syncOK;
3243} 3251}
3244void KABCore::getFile( bool success ) 3252void KABCore::getFile( bool success )
3245{ 3253{
3246 if ( ! success ) { 3254 if ( ! success ) {
3247 message( i18n("Error receiving file. Nothing changed!") ); 3255 message( i18n("Error receiving file. Nothing changed!") );
3248 return; 3256 return;
3249 } 3257 }
3250 int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); 3258 int count = mAddressBook->importFromFile( sentSyncFile() , false, true );
3251 if ( count ) 3259 if ( count )
3252 setModified( true ); 3260 setModified( true );
3253 message( i18n("Pi-Sync successful!") ); 3261 message( i18n("Pi-Sync successful!") );
3254 mViewManager->refreshView(); 3262 mViewManager->refreshView();
3255} 3263}
3256void KABCore::syncFileRequest() 3264void KABCore::syncFileRequest()
3257{ 3265{
3258 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { 3266 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) {
3259 syncManager->slotSyncMenu( 999 ); 3267 syncManager->slotSyncMenu( 999 );
3260 } 3268 }
3261 mAddressBook->export2File( sentSyncFile() ); 3269 mAddressBook->export2File( sentSyncFile() );
3262} 3270}
3263QString KABCore::sentSyncFile() 3271QString KABCore::sentSyncFile()
3264{ 3272{
3265#ifdef DESKTOP_VERSION 3273#ifdef DESKTOP_VERSION
3266 return locateLocal( "tmp", "copysyncab.vcf" ); 3274 return locateLocal( "tmp", "copysyncab.vcf" );
3267#else 3275#else
3268 return QString( "/tmp/copysyncab.vcf" ); 3276 return QString( "/tmp/copysyncab.vcf" );
3269#endif 3277#endif
3270} 3278}
3271 3279
3272void KABCore::setCaptionBack() 3280void KABCore::setCaptionBack()
3273{ 3281{
3274 mMessageTimer->stop(); 3282 mMessageTimer->stop();
3275 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") ); 3283 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") );
3276} 3284}
diff --git a/kaddressbook/xxportselectdialog.cpp b/kaddressbook/xxportselectdialog.cpp
index 6282453..e7bc8c0 100644
--- a/kaddressbook/xxportselectdialog.cpp
+++ b/kaddressbook/xxportselectdialog.cpp
@@ -1,294 +1,334 @@
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 <qapplication.h> 38#include <qapplication.h>
39#include <qbuttongroup.h> 39#include <qbuttongroup.h>
40#include <qcombobox.h> 40#include <qcombobox.h>
41#include <qheader.h> 41#include <qheader.h>
42#include <qlabel.h> 42#include <qlabel.h>
43#include <qlayout.h> 43#include <qlayout.h>
44#include <qlistview.h> 44#include <qlistview.h>
45#include <qpushbutton.h> 45#include <qpushbutton.h>
46#include <qradiobutton.h> 46#include <qradiobutton.h>
47#include <qstringlist.h> 47#include <qstringlist.h>
48#include <qwhatsthis.h> 48#include <qwhatsthis.h>
49 49
50#include "kabcore.h" 50#include "kabcore.h"
51#include "kabprefs.h" 51#include "kabprefs.h"
52 52
53#include "xxportselectdialog.h" 53#include "xxportselectdialog.h"
54 54
55XXPortSelectDialog::XXPortSelectDialog( KABCore *core, bool sort, 55XXPortSelectDialog::XXPortSelectDialog( KABCore *core, bool sort,
56 QWidget* parent, const char* name ) 56 QWidget* parent, const char* name )
57 : KDialogBase( Plain, i18n( "Choose which contacts to select" ), Help | Ok | Cancel, 57 : KDialogBase( Plain, i18n( "Choose contact selection" ), Help | Ok | Cancel,
58 Ok, parent, name, true, true ), mCore( core ), 58 Ok, parent, name, true, true ), mCore( core ),
59 mUseSorting( sort ) 59 mUseSorting( sort )
60{ 60{
61 initGUI(); 61 initGUI();
62 62
63 connect( mFiltersCombo, SIGNAL( activated( int ) ), 63 connect( mFiltersCombo, SIGNAL( activated( int ) ),
64 SLOT( filterChanged( int ) ) ); 64 SLOT( filterChanged( int ) ) );
65 connect( mCategoriesView, SIGNAL( clicked( QListViewItem* ) ), 65 connect( mCategoriesView, SIGNAL( clicked( QListViewItem* ) ),
66 SLOT( categoryClicked( QListViewItem* ) ) ); 66 SLOT( categoryClicked( QListViewItem* ) ) );
67 67
68 // setup filters 68 // setup filters
69#ifndef KAB_EMBEDDED 69#ifndef KAB_EMBEDDED
70 mFilters = Filter::restore( kapp->config(), "Filter" ); 70 mFilters = Filter::restore( kapp->config(), "Filter" );
71 Filter::List::iterator filterIt; 71 Filter::List::iterator filterIt;
72#else //KAB_EMBEDDED 72#else //KAB_EMBEDDED
73 mFilters = Filter::restore( KGlobal::config(), "Filter" ); 73 mFilters = Filter::restore( KGlobal::config(), "Filter" );
74 Filter::List::Iterator filterIt; 74 Filter::List::Iterator filterIt;
75#endif //KAB_EMBEDDED 75#endif //KAB_EMBEDDED
76 QStringList filters; 76 QStringList filters;
77 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt ) 77 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
78 filters.append( (*filterIt).name() ); 78 filters.append( (*filterIt).name() );
79 79
80 mFiltersCombo->insertStringList( filters ); 80 mFiltersCombo->insertStringList( filters );
81 mUseFilters->setEnabled( filters.count() > 0 ); 81 mUseFilters->setEnabled( filters.count() > 0 );
82 82
83 // setup categories 83 // setup categories
84 QStringList categories = KABPrefs::instance()->mCustomCategories; 84 QStringList categories = KABPrefs::instance()->mCustomCategories;
85 QStringList::Iterator it; 85 QStringList::Iterator it;
86 for ( it = categories.begin(); it != categories.end(); ++it ) 86 for ( it = categories.begin(); it != categories.end(); ++it )
87 new QCheckListItem( mCategoriesView, *it, QCheckListItem::CheckBox ); 87 new QCheckListItem( mCategoriesView, *it, QCheckListItem::CheckBox );
88 mUseCategories->setEnabled( categories.count() > 0 ); 88 mUseCategories->setEnabled( categories.count() > 0 );
89 89
90 int count = mCore->selectedUIDs().count(); 90 int count = mCore->selectedUIDs().count();
91 mUseSelection->setEnabled( count != 0 ); 91 mUseSelection->setEnabled( count != 0 );
92 mUseSelection->setChecked( count > 1 ); 92 mUseSelection->setChecked( count > 1 );
93 93
94 mSortTypeCombo->insertItem( i18n( "Ascending" ) ); 94 mSortTypeCombo->insertItem( i18n( "Ascending" ) );
95 mSortTypeCombo->insertItem( i18n( "Descending" ) ); 95 mSortTypeCombo->insertItem( i18n( "Descending" ) );
96 96
97 mFields = mCore->addressBook()->fields( KABC::Field::All ); 97 mFields = mCore->addressBook()->fields( KABC::Field::All );
98 KABC::Field::List::Iterator fieldIt; 98 KABC::Field::List::Iterator fieldIt;
99 for ( fieldIt = mFields.begin(); fieldIt != mFields.end(); ++fieldIt ) 99 for ( fieldIt = mFields.begin(); fieldIt != mFields.end(); ++fieldIt )
100 mFieldCombo->insertItem( (*fieldIt)->label() ); 100 mFieldCombo->insertItem( (*fieldIt)->label() );
101} 101}
102 102
103QStringList XXPortSelectDialog::uids() 103QStringList XXPortSelectDialog::uids()
104{ 104{
105 QStringList uidlist; 105 QStringList uidlist;
106 KABC::AddresseeList list = contacts(); 106 KABC::AddresseeList list = contacts();
107 KABC::Addressee::List::Iterator it; 107 KABC::Addressee::List::Iterator it;
108 for ( it = list.begin(); it != list.end(); ++it ) 108 for ( it = list.begin(); it != list.end(); ++it )
109 uidlist.append((*it).uid()); 109 uidlist.append((*it).uid());
110 return uidlist; 110 return uidlist;
111} 111}
112void XXPortSelectDialog::tagSelected()
113{
114 if ( mUseSelection->isChecked() ) {
115
116 QStringList selection = mCore->selectedUIDs();
117 KABC::AddressBook::Iterator it;
118 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
119 if ( selection.findIndex((*it).uid()) >= 0 )
120 (*it).setTagged( true );
121 }
122 } else if ( mUseFilters->isChecked() ) {
123 // find contacts that can pass selected filter
124 Filter::List::Iterator filterIt;
125 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
126 if ( (*filterIt).name() == mFiltersCombo->currentText() )
127 break;
128 KABC::AddressBook::Iterator it;
129 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
130 if ( (*filterIt).filterAddressee( *it ) )
131 (*it).setTagged( true );
132 }
133 } else if ( mUseCategories->isChecked() ) {
134 QStringList categorieList = categories();
135 KABC::AddressBook::Iterator it;
136 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
137 QStringList tmp( (*it).categories() );
138 QStringList::Iterator tmpIt;
139 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt )
140 if ( categorieList.contains( *tmpIt ) ) {
141 (*it).setTagged( true );
142 break;
143 }
144 }
145 } else {
146 // create a string list of all entries:
147 KABC::AddressBook::Iterator it;
148 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it )
149 (*it).setTagged( true );
150 }
151}
112KABC::AddresseeList XXPortSelectDialog::contacts() 152KABC::AddresseeList XXPortSelectDialog::contacts()
113{ 153{
114 QStringList selection = mCore->selectedUIDs();
115 154
116 KABC::AddresseeList list; 155 KABC::AddresseeList list;
117 if ( mUseSelection->isChecked() ) { 156 if ( mUseSelection->isChecked() ) {
118 QStringList::Iterator it; 157 QStringList::Iterator it;
158 QStringList selection = mCore->selectedUIDs();
119 for ( it = selection.begin(); it != selection.end(); ++it ) { 159 for ( it = selection.begin(); it != selection.end(); ++it ) {
120 KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); 160 KABC::Addressee addr = mCore->addressBook()->findByUid( *it );
121 if ( !addr.isEmpty() ) 161 if ( !addr.isEmpty() )
122 list.append( addr ); 162 list.append( addr );
123 } 163 }
124 } else if ( mUseFilters->isChecked() ) { 164 } else if ( mUseFilters->isChecked() ) {
125 // find contacts that can pass selected filter 165 // find contacts that can pass selected filter
126 Filter::List::Iterator filterIt; 166 Filter::List::Iterator filterIt;
127 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt ) 167 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
128 if ( (*filterIt).name() == mFiltersCombo->currentText() ) 168 if ( (*filterIt).name() == mFiltersCombo->currentText() )
129 break; 169 break;
130 170
131 KABC::AddressBook::Iterator it; 171 KABC::AddressBook::Iterator it;
132 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) { 172 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
133 if ( (*filterIt).filterAddressee( *it ) ) 173 if ( (*filterIt).filterAddressee( *it ) )
134 list.append( *it ); 174 list.append( *it );
135 } 175 }
136 } else if ( mUseCategories->isChecked() ) { 176 } else if ( mUseCategories->isChecked() ) {
137 QStringList categorieList = categories(); 177 QStringList categorieList = categories();
138 KABC::AddressBook::Iterator it; 178 KABC::AddressBook::Iterator it;
139 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) { 179 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) {
140 QStringList tmp( (*it).categories() ); 180 QStringList tmp( (*it).categories() );
141 QStringList::Iterator tmpIt; 181 QStringList::Iterator tmpIt;
142 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt ) 182 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt )
143 if ( categorieList.contains( *tmpIt ) ) { 183 if ( categorieList.contains( *tmpIt ) ) {
144 list.append( *it ); 184 list.append( *it );
145 break; 185 break;
146 } 186 }
147 } 187 }
148 } else { 188 } else {
149 // create a string list of all entries: 189 // create a string list of all entries:
150 KABC::AddressBook::Iterator it; 190 KABC::AddressBook::Iterator it;
151 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it ) 191 for ( it = mCore->addressBook()->begin(); it != mCore->addressBook()->end(); ++it )
152 list.append( *it ); 192 list.append( *it );
153 } 193 }
154 194
155 if ( mUseSorting ) { 195 if ( mUseSorting ) {
156 list.setReverseSorting( mSortTypeCombo->currentItem() == 1 ); 196 list.setReverseSorting( mSortTypeCombo->currentItem() == 1 );
157 uint pos = mFieldCombo->currentItem(); 197 uint pos = mFieldCombo->currentItem();
158 if ( pos < mFields.count() ) 198 if ( pos < mFields.count() )
159 list.sortByField( mFields[ pos ] ); 199 list.sortByField( mFields[ pos ] );
160 } 200 }
161 201
162 return list; 202 return list;
163} 203}
164 204
165QStringList XXPortSelectDialog::categories() const 205QStringList XXPortSelectDialog::categories() const
166{ 206{
167 QStringList list; 207 QStringList list;
168 208
169 QListViewItemIterator it( mCategoriesView ); 209 QListViewItemIterator it( mCategoriesView );
170 for ( ; it.current(); ++it ) { 210 for ( ; it.current(); ++it ) {
171 QCheckListItem* qcli = static_cast<QCheckListItem*>(it.current()); 211 QCheckListItem* qcli = static_cast<QCheckListItem*>(it.current());
172 if ( qcli->isOn() ) 212 if ( qcli->isOn() )
173 list.append( it.current()->text( 0 ) ); 213 list.append( it.current()->text( 0 ) );
174 } 214 }
175 215
176 return list; 216 return list;
177} 217}
178 218
179void XXPortSelectDialog::filterChanged( int ) 219void XXPortSelectDialog::filterChanged( int )
180{ 220{
181 mUseFilters->setChecked( true ); 221 mUseFilters->setChecked( true );
182} 222}
183 223
184void XXPortSelectDialog::categoryClicked( QListViewItem *i ) 224void XXPortSelectDialog::categoryClicked( QListViewItem *i )
185{ 225{
186 QCheckListItem *qcli = static_cast<QCheckListItem*>( i ); 226 QCheckListItem *qcli = static_cast<QCheckListItem*>( i );
187 if ( qcli->isOn() ) 227 if ( qcli->isOn() )
188 mUseCategories->setChecked( true ); 228 mUseCategories->setChecked( true );
189} 229}
190 230
191void XXPortSelectDialog::slotHelp() 231void XXPortSelectDialog::slotHelp()
192{ 232{
193#ifndef KAB_EMBEDDED 233#ifndef KAB_EMBEDDED
194 kapp->invokeHelp( "import-and-export" ); 234 kapp->invokeHelp( "import-and-export" );
195#else //KAB_EMBEDDED 235#else //KAB_EMBEDDED
196 qDebug("XXPortSelectDialog::slotHelp is not implemented yet"); 236 qDebug("XXPortSelectDialog::slotHelp is not implemented yet");
197#endif //KAB_EMBEDDED 237#endif //KAB_EMBEDDED
198 238
199} 239}
200 240
201void XXPortSelectDialog::initGUI() 241void XXPortSelectDialog::initGUI()
202{ 242{
203 QFrame *page = plainPage(); 243 QFrame *page = plainPage();
204 244
205 QVBoxLayout *topLayout = new QVBoxLayout( page, KDialog::marginHint(), 245 QVBoxLayout *topLayout = new QVBoxLayout( page, KDialog::marginHint(),
206 KDialog::spacingHint() ); 246 KDialog::spacingHint() );
207 247
208 QLabel *label = new QLabel( i18n( "Which contacts do you want to select?" ), page ); 248 QLabel *label = new QLabel( i18n( "Which contacts do you want to select?" ), page );
209 topLayout->addWidget( label ); 249 topLayout->addWidget( label );
210 250
211 mButtonGroup = new QButtonGroup( i18n( "Contact Selection" ), page ); 251 mButtonGroup = new QButtonGroup( i18n( "Contact Selection" ), page );
212 mButtonGroup->setColumnLayout( 0, Qt::Vertical ); 252 mButtonGroup->setColumnLayout( 0, Qt::Vertical );
213 mButtonGroup->layout()->setSpacing( KDialog::spacingHint() ); 253 mButtonGroup->layout()->setSpacing( KDialog::spacingHint() );
214 mButtonGroup->layout()->setMargin( KDialog::marginHint() ); 254 mButtonGroup->layout()->setMargin( KDialog::marginHint() );
215 255
216 QGridLayout *groupLayout = new QGridLayout( mButtonGroup->layout() ); 256 QGridLayout *groupLayout = new QGridLayout( mButtonGroup->layout() );
217 groupLayout->setAlignment( Qt::AlignTop ); 257 groupLayout->setAlignment( Qt::AlignTop );
218 258
219 mUseWholeBook = new QRadioButton( i18n( "&All" ), mButtonGroup ); 259 mUseWholeBook = new QRadioButton( i18n( "&All" ), mButtonGroup );
220 mUseWholeBook->setChecked( true ); 260 mUseWholeBook->setChecked( true );
221 QWhatsThis::add( mUseWholeBook, i18n( "Select the entire address book" ) ); 261 QWhatsThis::add( mUseWholeBook, i18n( "Select the entire address book" ) );
222 groupLayout->addWidget( mUseWholeBook, 0, 0 ); 262 groupLayout->addWidget( mUseWholeBook, 0, 0 );
223 263
224 mUseSelection = new QRadioButton( i18n( "&Selected" ), mButtonGroup ); 264 mUseSelection = new QRadioButton( i18n( "&Selected" ), mButtonGroup );
225 QWhatsThis::add( mUseSelection, i18n( "Only contacts selected in KAddressBook.\n" 265 QWhatsThis::add( mUseSelection, i18n( "Only contacts selected in KAddressBook.\n"
226 "This option is disabled if no contacts are selected." ) ); 266 "This option is disabled if no contacts are selected." ) );
227 groupLayout->addWidget( mUseSelection, 1, 0 ); 267 groupLayout->addWidget( mUseSelection, 1, 0 );
228 268
229 mUseFilters = new QRadioButton( i18n( "By matching &filter" ), mButtonGroup ); 269 mUseFilters = new QRadioButton( i18n( "By matching &filter" ), mButtonGroup );
230 QWhatsThis::add( mUseFilters, i18n( "Only contacts matching the selected filter.\n" 270 QWhatsThis::add( mUseFilters, i18n( "Only contacts matching the selected filter.\n"
231 "This option is disabled if you haven't defined any filters" ) ); 271 "This option is disabled if you haven't defined any filters" ) );
232 groupLayout->addWidget( mUseFilters, 2, 0 ); 272 groupLayout->addWidget( mUseFilters, 2, 0 );
233 273
234 mUseCategories = new QRadioButton( i18n( "By Cate&gories" ), mButtonGroup ); 274 mUseCategories = new QRadioButton( i18n( "By Cate&gories" ), mButtonGroup );
235 QWhatsThis::add( mUseCategories, i18n( "Only contacts who are members of a category that is checked on the list to the left.\n" 275 QWhatsThis::add( mUseCategories, i18n( "Only contacts who are members of a category that is checked on the list to the left.\n"
236 "This option is disabled if you have no categories." ) ); 276 "This option is disabled if you have no categories." ) );
237 groupLayout->addWidget( mUseCategories, 3, 0 ); 277 groupLayout->addWidget( mUseCategories, 3, 0 );
238 278
239 mFiltersCombo = new QComboBox( false, mButtonGroup ); 279 mFiltersCombo = new QComboBox( false, mButtonGroup );
240 QWhatsThis::add( mFiltersCombo, i18n( "Select a filter to decide which contacts to select." ) ); 280 QWhatsThis::add( mFiltersCombo, i18n( "Select a filter to decide which contacts to select." ) );
241 groupLayout->addWidget( mFiltersCombo, 2, 1 ); 281 groupLayout->addWidget( mFiltersCombo, 2, 1 );
242 282
243 mCategoriesView = new QListView( mButtonGroup ); 283 mCategoriesView = new QListView( mButtonGroup );
244 mCategoriesView->addColumn( "" ); 284 mCategoriesView->addColumn( "" );
245 mCategoriesView->header()->hide(); 285 mCategoriesView->header()->hide();
246 QWhatsThis::add( mCategoriesView, i18n( "Check the categories whose members you want to select." ) ); 286 QWhatsThis::add( mCategoriesView, i18n( "Check the categories whose members you want to select." ) );
247 groupLayout->addWidget( mCategoriesView, 3, 1 ); 287 groupLayout->addWidget( mCategoriesView, 3, 1 );
248 288
249 // if (QApplication::desktop()->height() == 480 ) 289 if (QApplication::desktop()->height() == 480 )
250 // mCategoriesView->setMaximumHeight( 240 ); 290 mCategoriesView->setMaximumHeight( 240 );
251 topLayout->addWidget( mButtonGroup ); 291 topLayout->addWidget( mButtonGroup );
252 292
253 QButtonGroup *sortingGroup = new QButtonGroup( i18n( "Sorting" ), page ); 293 QButtonGroup *sortingGroup = new QButtonGroup( i18n( "Sorting" ), page );
254 sortingGroup->setColumnLayout( 0, Qt::Vertical ); 294 sortingGroup->setColumnLayout( 0, Qt::Vertical );
255 QGridLayout *sortLayout = new QGridLayout( sortingGroup->layout(), 2, 2, 295 QGridLayout *sortLayout = new QGridLayout( sortingGroup->layout(), 2, 2,
256 KDialog::spacingHint() ); 296 KDialog::spacingHint() );
257 sortLayout->setAlignment( Qt::AlignTop ); 297 sortLayout->setAlignment( Qt::AlignTop );
258 298
259 label = new QLabel( i18n( "Criterion:" ), sortingGroup ); 299 label = new QLabel( i18n( "Criterion:" ), sortingGroup );
260 sortLayout->addWidget( label, 0, 0 ); 300 sortLayout->addWidget( label, 0, 0 );
261 301
262#ifndef KAB_EMBEDDED 302#ifndef KAB_EMBEDDED
263 mFieldCombo = new KComboBox( false, sortingGroup ); 303 mFieldCombo = new KComboBox( false, sortingGroup );
264#else //KAB_EMBEDDED 304#else //KAB_EMBEDDED
265 //US Combobox is not editable anyway 305 //US Combobox is not editable anyway
266 mFieldCombo = new KComboBox( sortingGroup ); 306 mFieldCombo = new KComboBox( sortingGroup );
267#endif //KAB_EMBEDDED 307#endif //KAB_EMBEDDED
268 sortLayout->addWidget( mFieldCombo, 0, 1 ); 308 sortLayout->addWidget( mFieldCombo, 0, 1 );
269 309
270 label = new QLabel( i18n( "Order:" ), sortingGroup ); 310 label = new QLabel( i18n( "Order:" ), sortingGroup );
271 sortLayout->addWidget( label, 1, 0 ); 311 sortLayout->addWidget( label, 1, 0 );
272 312
273#ifndef KAB_EMBEDDED 313#ifndef KAB_EMBEDDED
274 mSortTypeCombo = new KComboBox( false, sortingGroup ); 314 mSortTypeCombo = new KComboBox( false, sortingGroup );
275#else //KAB_EMBEDDED 315#else //KAB_EMBEDDED
276 //US Combobox is not editable anyway 316 //US Combobox is not editable anyway
277 mSortTypeCombo = new KComboBox( sortingGroup ); 317 mSortTypeCombo = new KComboBox( sortingGroup );
278#endif //KAB_EMBEDDED 318#endif //KAB_EMBEDDED
279 sortLayout->addWidget( mSortTypeCombo, 1, 1 ); 319 sortLayout->addWidget( mSortTypeCombo, 1, 1 );
280 320
281 topLayout->addWidget( sortingGroup ); 321 topLayout->addWidget( sortingGroup );
282 322
283 if ( !mUseSorting ) 323 if ( !mUseSorting )
284 sortingGroup->hide(); 324 sortingGroup->hide();
285#ifndef DESKTOP_VERSION 325#ifndef DESKTOP_VERSION
286 hideButtons(); 326 hideButtons();
287#endif 327#endif
288} 328}
289 329
290#ifndef KAB_EMBEDDED 330#ifndef KAB_EMBEDDED
291#include "xxportselectdialog.moc" 331#include "xxportselectdialog.moc"
292#endif //KAB_EMBEDDED 332#endif //KAB_EMBEDDED
293 333
294 334
diff --git a/kaddressbook/xxportselectdialog.h b/kaddressbook/xxportselectdialog.h
index 3bb696f..28b1fef 100644
--- a/kaddressbook/xxportselectdialog.h
+++ b/kaddressbook/xxportselectdialog.h
@@ -1,82 +1,83 @@
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 void tagSelected();
51 QStringList uids(); 52 QStringList uids();
52 53
53 private slots: 54 private slots:
54 void filterChanged( int ); 55 void filterChanged( int );
55 void categoryClicked( QListViewItem * i ); 56 void categoryClicked( QListViewItem * i );
56 57
57 protected slots: 58 protected slots:
58 void slotHelp(); 59 void slotHelp();
59 60
60 private: 61 private:
61 void initGUI(); 62 void initGUI();
62 QStringList categories() const; 63 QStringList categories() const;
63 64
64 QButtonGroup* mButtonGroup; 65 QButtonGroup* mButtonGroup;
65 QRadioButton* mUseCategories; 66 QRadioButton* mUseCategories;
66 QRadioButton* mUseFilters; 67 QRadioButton* mUseFilters;
67 QRadioButton* mUseWholeBook; 68 QRadioButton* mUseWholeBook;
68 QRadioButton* mUseSelection; 69 QRadioButton* mUseSelection;
69 QComboBox* mFiltersCombo; 70 QComboBox* mFiltersCombo;
70 QListView* mCategoriesView; 71 QListView* mCategoriesView;
71 72
72 KComboBox *mFieldCombo; 73 KComboBox *mFieldCombo;
73 KComboBox *mSortTypeCombo; 74 KComboBox *mSortTypeCombo;
74 75
75 KABCore *mCore; 76 KABCore *mCore;
76 KABC::AddresseeList mAddresseeList; 77 KABC::AddresseeList mAddresseeList;
77 Filter::List mFilters; 78 Filter::List mFilters;
78 KABC::Field::List mFields; 79 KABC::Field::List mFields;
79 bool mUseSorting; 80 bool mUseSorting;
80}; 81};
81 82
82#endif 83#endif