summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-07-04 12:40:46 (UTC)
committer zautrix <zautrix>2004-07-04 12:40:46 (UTC)
commitdeb87bff56cd9cbb41e352c2ccfa97be142d6e48 (patch) (unidiff)
treed711d6085e4143e1731da440732e823e69c092a3
parent4a947dbc08cc7640dda4f8a89ddb3c80ecc5f9ea (diff)
downloadkdepimpi-deb87bff56cd9cbb41e352c2ccfa97be142d6e48.zip
kdepimpi-deb87bff56cd9cbb41e352c2ccfa97be142d6e48.tar.gz
kdepimpi-deb87bff56cd9cbb41e352c2ccfa97be142d6e48.tar.bz2
Make sorting in KM working
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp7
-rw-r--r--kmicromail/composemail.cpp24
-rw-r--r--kmicromail/mailistviewitem.cpp77
-rw-r--r--kmicromail/mailistviewitem.h7
-rw-r--r--kmicromail/mainwindow.cpp10
-rw-r--r--kmicromail/opiemail.cpp2
6 files changed, 80 insertions, 47 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index a6d722d..68d3d2d 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,1606 +1,1609 @@
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 "kabcore.h" 24#include "kabcore.h"
25 25
26#include <stdaddressbook.h> 26#include <stdaddressbook.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#ifndef KAB_EMBEDDED 29#ifndef KAB_EMBEDDED
30#include <qclipboard.h> 30#include <qclipboard.h>
31#include <qdir.h> 31#include <qdir.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qapplicaton.h> 33#include <qapplicaton.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qregexp.h> 35#include <qregexp.h>
36#include <qvbox.h> 36#include <qvbox.h>
37#include <kabc/addresseelist.h> 37#include <kabc/addresseelist.h>
38#include <kabc/errorhandler.h> 38#include <kabc/errorhandler.h>
39#include <kabc/resource.h> 39#include <kabc/resource.h>
40#include <kabc/vcardconverter.h> 40#include <kabc/vcardconverter.h>
41#include <kapplication.h> 41#include <kapplication.h>
42#include <kactionclasses.h> 42#include <kactionclasses.h>
43#include <kcmultidialog.h> 43#include <kcmultidialog.h>
44#include <kdebug.h> 44#include <kdebug.h>
45#include <kdeversion.h> 45#include <kdeversion.h>
46#include <kkeydialog.h> 46#include <kkeydialog.h>
47#include <kmessagebox.h> 47#include <kmessagebox.h>
48#include <kprinter.h> 48#include <kprinter.h>
49#include <kprotocolinfo.h> 49#include <kprotocolinfo.h>
50#include <kresources/selectdialog.h> 50#include <kresources/selectdialog.h>
51#include <kstandarddirs.h> 51#include <kstandarddirs.h>
52#include <ktempfile.h> 52#include <ktempfile.h>
53#include <kxmlguiclient.h> 53#include <kxmlguiclient.h>
54#include <kaboutdata.h> 54#include <kaboutdata.h>
55#include <libkdepim/categoryselectdialog.h> 55#include <libkdepim/categoryselectdialog.h>
56 56
57#include "addresseeutil.h" 57#include "addresseeutil.h"
58#include "addresseeeditordialog.h" 58#include "addresseeeditordialog.h"
59#include "extensionmanager.h" 59#include "extensionmanager.h"
60#include "kstdaction.h" 60#include "kstdaction.h"
61#include "kaddressbookservice.h" 61#include "kaddressbookservice.h"
62#include "ldapsearchdialog.h" 62#include "ldapsearchdialog.h"
63#include "printing/printingwizard.h" 63#include "printing/printingwizard.h"
64#else // KAB_EMBEDDED 64#else // KAB_EMBEDDED
65 65
66#include "KDGanttMinimizeSplitter.h" 66#include "KDGanttMinimizeSplitter.h"
67#include "kaddressbookmain.h" 67#include "kaddressbookmain.h"
68#include "kactioncollection.h" 68#include "kactioncollection.h"
69#include <qapp.h> 69#include <qapp.h>
70#include <qmenubar.h> 70#include <qmenubar.h>
71//#include <qtoolbar.h> 71//#include <qtoolbar.h>
72#include <qmessagebox.h> 72#include <qmessagebox.h>
73#include <kdebug.h> 73#include <kdebug.h>
74#include <kiconloader.h> // needed for SmallIcon 74#include <kiconloader.h> // needed for SmallIcon
75#include <kresources/kcmkresources.h> 75#include <kresources/kcmkresources.h>
76#include <ktoolbar.h> 76#include <ktoolbar.h>
77 77
78#include <kcmkabconfig.h> 78#include <kcmkabconfig.h>
79 79
80//US#include <qpe/resource.h> // needed for Resource::loadPixmap 80//US#include <qpe/resource.h> // needed for Resource::loadPixmap
81//#include <qlabel.h> 81//#include <qlabel.h>
82#endif // KAB_EMBEDDED 82#endif // KAB_EMBEDDED
83#include <kcmkabconfig.h> 83#include <kcmkabconfig.h>
84 84
85 85
86#include <kresources/selectdialog.h> 86#include <kresources/selectdialog.h>
87#include <kmessagebox.h> 87#include <kmessagebox.h>
88 88
89#include <picture.h> 89#include <picture.h>
90#include <resource.h> 90#include <resource.h>
91 91
92//US#include <qsplitter.h> 92//US#include <qsplitter.h>
93#include <qvbox.h> 93#include <qvbox.h>
94#include <qlayout.h> 94#include <qlayout.h>
95#include <qclipboard.h> 95#include <qclipboard.h>
96 96
97#include <libkdepim/categoryselectdialog.h> 97#include <libkdepim/categoryselectdialog.h>
98 98
99#include "addresseeutil.h" 99#include "addresseeutil.h"
100#include "undocmds.h" 100#include "undocmds.h"
101#include "addresseeeditordialog.h" 101#include "addresseeeditordialog.h"
102#include "viewmanager.h" 102#include "viewmanager.h"
103#include "details/detailsviewcontainer.h" 103#include "details/detailsviewcontainer.h"
104#include "kabprefs.h" 104#include "kabprefs.h"
105#include "xxportmanager.h" 105#include "xxportmanager.h"
106#include "incsearchwidget.h" 106#include "incsearchwidget.h"
107#include "jumpbuttonbar.h" 107#include "jumpbuttonbar.h"
108#include "extensionmanager.h" 108#include "extensionmanager.h"
109#include "addresseeconfig.h" 109#include "addresseeconfig.h"
110#include <kcmultidialog.h> 110#include <kcmultidialog.h>
111 111
112 112
113#ifdef KAB_EMBEDDED 113#ifdef KAB_EMBEDDED
114KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 114KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
115 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 115 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
116 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 116 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
117 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 117 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
118#else //KAB_EMBEDDED 118#else //KAB_EMBEDDED
119KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 119KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
120 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 120 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
121 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 121 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
122 mReadWrite( readWrite ), mModified( false ) 122 mReadWrite( readWrite ), mModified( false )
123#endif //KAB_EMBEDDED 123#endif //KAB_EMBEDDED
124{ 124{
125#ifdef KAB_EMBEDDED 125#ifdef KAB_EMBEDDED
126 //US we define here our own global actioncollection. 126 //US we define here our own global actioncollection.
127 //mActionCollection = new KActionCollection(this); 127 //mActionCollection = new KActionCollection(this);
128#endif //KAB_EMBEDDED 128#endif //KAB_EMBEDDED
129 mExtensionBarSplitter = 0; 129 mExtensionBarSplitter = 0;
130 mIsPart = !parent->inherits( "KAddressBookMain" ); 130 mIsPart = !parent->inherits( "KAddressBookMain" );
131 131
132 mAddressBook = KABC::StdAddressBook::self(); 132 mAddressBook = KABC::StdAddressBook::self();
133 KABC::StdAddressBook::setAutomaticSave( true ); 133 KABC::StdAddressBook::setAutomaticSave( true );
134 134
135#ifndef KAB_EMBEDDED 135#ifndef KAB_EMBEDDED
136 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 136 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
137#endif //KAB_EMBEDDED 137#endif //KAB_EMBEDDED
138 138
139 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 139 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
140 SLOT( addressBookChanged() ) ); 140 SLOT( addressBookChanged() ) );
141 141
142 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 142 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
143 "X-Department", "KADDRESSBOOK" ); 143 "X-Department", "KADDRESSBOOK" );
144 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 144 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
145 "X-Profession", "KADDRESSBOOK" ); 145 "X-Profession", "KADDRESSBOOK" );
146 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 146 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
147 "X-AssistantsName", "KADDRESSBOOK" ); 147 "X-AssistantsName", "KADDRESSBOOK" );
148 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 148 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
149 "X-ManagersName", "KADDRESSBOOK" ); 149 "X-ManagersName", "KADDRESSBOOK" );
150 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 150 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
151 "X-SpousesName", "KADDRESSBOOK" ); 151 "X-SpousesName", "KADDRESSBOOK" );
152 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 152 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
153 "X-Office", "KADDRESSBOOK" ); 153 "X-Office", "KADDRESSBOOK" );
154 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 154 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
155 "X-IMAddress", "KADDRESSBOOK" ); 155 "X-IMAddress", "KADDRESSBOOK" );
156 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 156 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
157 "X-Anniversary", "KADDRESSBOOK" ); 157 "X-Anniversary", "KADDRESSBOOK" );
158 158
159//US added this field to become compatible with Opie addressbook 159//US added this field to become compatible with Opie addressbook
160 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 160 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
161 "X-Gender", "KADDRESSBOOK" ); 161 "X-Gender", "KADDRESSBOOK" );
162 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 162 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
163 "X-Children", "KADDRESSBOOK" ); 163 "X-Children", "KADDRESSBOOK" );
164 164
165 initGUI(); 165 initGUI();
166 166
167 mIncSearchWidget->setFocus(); 167 mIncSearchWidget->setFocus();
168 168
169 169
170 connect( mViewManager, SIGNAL( selected( const QString& ) ), 170 connect( mViewManager, SIGNAL( selected( const QString& ) ),
171 SLOT( setContactSelected( const QString& ) ) ); 171 SLOT( setContactSelected( const QString& ) ) );
172 connect( mViewManager, SIGNAL( executed( const QString& ) ), 172 connect( mViewManager, SIGNAL( executed( const QString& ) ),
173 SLOT( editContact( const QString& ) ) ); 173 SLOT( editContact( const QString& ) ) );
174 connect( mViewManager, SIGNAL( deleteRequest( ) ), 174 connect( mViewManager, SIGNAL( deleteRequest( ) ),
175 SLOT( deleteContacts( ) ) ); 175 SLOT( deleteContacts( ) ) );
176 connect( mViewManager, SIGNAL( modified() ), 176 connect( mViewManager, SIGNAL( modified() ),
177 SLOT( setModified() ) ); 177 SLOT( setModified() ) );
178 178
179 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 179 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
180 180
181 connect( mXXPortManager, SIGNAL( modified() ), 181 connect( mXXPortManager, SIGNAL( modified() ),
182 SLOT( setModified() ) ); 182 SLOT( setModified() ) );
183 183
184 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 184 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
185 SLOT( incrementalSearch( const QString& ) ) ); 185 SLOT( incrementalSearch( const QString& ) ) );
186 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 186 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
187 mJumpButtonBar, SLOT( recreateButtons() ) ); 187 mJumpButtonBar, SLOT( recreateButtons() ) );
188 188
189#ifndef KAB_EMBEDDED 189#ifndef KAB_EMBEDDED
190 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 190 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
191 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 191 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
192 192
193 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 193 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
194 SLOT( sendMail( const QString& ) ) ); 194 SLOT( sendMail( const QString& ) ) );
195 connect( mDetails, SIGNAL( browse( const QString& ) ), 195 connect( mDetails, SIGNAL( browse( const QString& ) ),
196 SLOT( browse( const QString& ) ) ); 196 SLOT( browse( const QString& ) ) );
197 197
198 mAddressBookService = new KAddressBookService( this ); 198 mAddressBookService = new KAddressBookService( this );
199 199
200#endif //KAB_EMBEDDED 200#endif //KAB_EMBEDDED
201 201
202 setModified( false ); 202 setModified( false );
203} 203}
204 204
205KABCore::~KABCore() 205KABCore::~KABCore()
206{ 206{
207 // save(); 207 // save();
208 //saveSettings(); 208 //saveSettings();
209 //KABPrefs::instance()->writeConfig(); 209 //KABPrefs::instance()->writeConfig();
210 delete AddresseeConfig::instance(); 210 delete AddresseeConfig::instance();
211 mAddressBook = 0; 211 mAddressBook = 0;
212 KABC::StdAddressBook::close(); 212 KABC::StdAddressBook::close();
213 213
214#ifdef KAB_EMBEDDED 214#ifdef KAB_EMBEDDED
215 //US we define here our own global actioncollection. 215 //US we define here our own global actioncollection.
216 // delete mActionCollection; 216 // delete mActionCollection;
217#endif //KAB_EMBEDDED 217#endif //KAB_EMBEDDED
218 218
219} 219}
220 220
221void KABCore::restoreSettings() 221void KABCore::restoreSettings()
222{ 222{
223 bool state = KABPrefs::instance()->mJumpButtonBarVisible; 223 bool state = KABPrefs::instance()->mJumpButtonBarVisible;
224 224
225 mActionJumpBar->setChecked( state ); 225 mActionJumpBar->setChecked( state );
226 setJumpButtonBarVisible( state ); 226 setJumpButtonBarVisible( state );
227 227
228 state = KABPrefs::instance()->mDetailsPageVisible; 228 state = KABPrefs::instance()->mDetailsPageVisible;
229 229
230 mActionDetails->setChecked( state ); 230 mActionDetails->setChecked( state );
231 setDetailsVisible( state ); 231 setDetailsVisible( state );
232 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 232 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
233 if ( splitterSize.count() == 0 ) { 233 if ( splitterSize.count() == 0 ) {
234 splitterSize.append( width() / 2 ); 234 splitterSize.append( width() / 2 );
235 splitterSize.append( width() / 2 ); 235 splitterSize.append( width() / 2 );
236 } 236 }
237 mMiniSplitter->setSizes( splitterSize ); 237 mMiniSplitter->setSizes( splitterSize );
238 if ( mExtensionBarSplitter ) { 238 if ( mExtensionBarSplitter ) {
239 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 239 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
240 if ( splitterSize.count() == 0 ) { 240 if ( splitterSize.count() == 0 ) {
241 splitterSize.append( width() / 2 ); 241 splitterSize.append( width() / 2 );
242 splitterSize.append( width() / 2 ); 242 splitterSize.append( width() / 2 );
243 } 243 }
244 mExtensionBarSplitter->setSizes( splitterSize ); 244 mExtensionBarSplitter->setSizes( splitterSize );
245 245
246 } 246 }
247#ifndef KAB_EMBEDDED 247#ifndef KAB_EMBEDDED
248 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter; 248 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter;
249 if ( splitterSize.count() == 0 ) { 249 if ( splitterSize.count() == 0 ) {
250 splitterSize.append( width() / 2 ); 250 splitterSize.append( width() / 2 );
251 splitterSize.append( width() / 2 ); 251 splitterSize.append( width() / 2 );
252 } 252 }
253 mExtensionBarSplitter->setSizes( splitterSize ); 253 mExtensionBarSplitter->setSizes( splitterSize );
254 254
255 splitterSize = KABPrefs::instance()->mDetailsSplitter; 255 splitterSize = KABPrefs::instance()->mDetailsSplitter;
256 if ( splitterSize.count() == 0 ) { 256 if ( splitterSize.count() == 0 ) {
257 splitterSize.append( height() / 2 ); 257 splitterSize.append( height() / 2 );
258 splitterSize.append( height() / 2 ); 258 splitterSize.append( height() / 2 );
259 } 259 }
260 mDetailsSplitter->setSizes( splitterSize ); 260 mDetailsSplitter->setSizes( splitterSize );
261 261
262 mExtensionManager->restoreSettings(); 262 mExtensionManager->restoreSettings();
263 263
264#endif //KAB_EMBEDDED 264#endif //KAB_EMBEDDED
265 265
266 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 266 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
267 267
268 mViewManager->restoreSettings(); 268 mViewManager->restoreSettings();
269 mExtensionManager->restoreSettings(); 269 mExtensionManager->restoreSettings();
270} 270}
271 271
272void KABCore::saveSettings() 272void KABCore::saveSettings()
273{ 273{
274 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 274 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
275 if ( mExtensionBarSplitter ) 275 if ( mExtensionBarSplitter )
276 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 276 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
277 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 277 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
278 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 278 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
279#ifndef KAB_EMBEDDED 279#ifndef KAB_EMBEDDED
280 280
281 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 281 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
282 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 282 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
283#endif //KAB_EMBEDDED 283#endif //KAB_EMBEDDED
284 mExtensionManager->saveSettings(); 284 mExtensionManager->saveSettings();
285 mViewManager->saveSettings(); 285 mViewManager->saveSettings();
286 286
287 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 287 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
288 288
289} 289}
290 290
291KABC::AddressBook *KABCore::addressBook() const 291KABC::AddressBook *KABCore::addressBook() const
292{ 292{
293 return mAddressBook; 293 return mAddressBook;
294} 294}
295 295
296KConfig *KABCore::config() 296KConfig *KABCore::config()
297{ 297{
298#ifndef KAB_EMBEDDED 298#ifndef KAB_EMBEDDED
299 return KABPrefs::instance()->config(); 299 return KABPrefs::instance()->config();
300#else //KAB_EMBEDDED 300#else //KAB_EMBEDDED
301 return KABPrefs::instance()->getConfig(); 301 return KABPrefs::instance()->getConfig();
302#endif //KAB_EMBEDDED 302#endif //KAB_EMBEDDED
303} 303}
304 304
305KActionCollection *KABCore::actionCollection() const 305KActionCollection *KABCore::actionCollection() const
306{ 306{
307 return mGUIClient->actionCollection(); 307 return mGUIClient->actionCollection();
308} 308}
309 309
310KABC::Field *KABCore::currentSearchField() const 310KABC::Field *KABCore::currentSearchField() const
311{ 311{
312 if (mIncSearchWidget) 312 if (mIncSearchWidget)
313 return mIncSearchWidget->currentField(); 313 return mIncSearchWidget->currentField();
314 else 314 else
315 return 0; 315 return 0;
316} 316}
317 317
318QStringList KABCore::selectedUIDs() const 318QStringList KABCore::selectedUIDs() const
319{ 319{
320 return mViewManager->selectedUids(); 320 return mViewManager->selectedUids();
321} 321}
322 322
323KABC::Resource *KABCore::requestResource( QWidget *parent ) 323KABC::Resource *KABCore::requestResource( QWidget *parent )
324{ 324{
325 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 325 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
326 326
327 QPtrList<KRES::Resource> kresResources; 327 QPtrList<KRES::Resource> kresResources;
328 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 328 QPtrListIterator<KABC::Resource> resIt( kabcResources );
329 KABC::Resource *resource; 329 KABC::Resource *resource;
330 while ( ( resource = resIt.current() ) != 0 ) { 330 while ( ( resource = resIt.current() ) != 0 ) {
331 ++resIt; 331 ++resIt;
332 if ( !resource->readOnly() ) { 332 if ( !resource->readOnly() ) {
333 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 333 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
334 if ( res ) 334 if ( res )
335 kresResources.append( res ); 335 kresResources.append( res );
336 } 336 }
337 } 337 }
338 338
339 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 339 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
340 return static_cast<KABC::Resource*>( res ); 340 return static_cast<KABC::Resource*>( res );
341} 341}
342 342
343#ifndef KAB_EMBEDDED 343#ifndef KAB_EMBEDDED
344KAboutData *KABCore::createAboutData() 344KAboutData *KABCore::createAboutData()
345#else //KAB_EMBEDDED 345#else //KAB_EMBEDDED
346void KABCore::createAboutData() 346void KABCore::createAboutData()
347#endif //KAB_EMBEDDED 347#endif //KAB_EMBEDDED
348{ 348{
349#ifndef KAB_EMBEDDED 349#ifndef KAB_EMBEDDED
350 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 350 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
351 "3.1", I18N_NOOP( "The KDE Address Book" ), 351 "3.1", I18N_NOOP( "The KDE Address Book" ),
352 KAboutData::License_GPL_V2, 352 KAboutData::License_GPL_V2,
353 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 353 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
354 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 354 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
355 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 355 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
356 about->addAuthor( "Cornelius Schumacher", 356 about->addAuthor( "Cornelius Schumacher",
357 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 357 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
358 "schumacher@kde.org" ); 358 "schumacher@kde.org" );
359 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 359 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
360 "mpilone@slac.com" ); 360 "mpilone@slac.com" );
361 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 361 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
362 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 362 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
363 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 363 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
364 "michel@klaralvdalens-datakonsult.se" ); 364 "michel@klaralvdalens-datakonsult.se" );
365 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 365 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
366 "hansen@kde.org" ); 366 "hansen@kde.org" );
367 367
368 return about; 368 return about;
369#endif //KAB_EMBEDDED 369#endif //KAB_EMBEDDED
370 370
371 QString version; 371 QString version;
372#include <../version> 372#include <../version>
373 QMessageBox::about( this, "About KAddressbook/Pi", 373 QMessageBox::about( this, "About KAddressbook/Pi",
374 "KAddressbook/Platform-independent\n" 374 "KAddressbook/Platform-independent\n"
375 "(KA/Pi) " +version + " - " + 375 "(KA/Pi) " +version + " - " +
376#ifdef DESKTOP_VERSION 376#ifdef DESKTOP_VERSION
377 "Desktop Edition\n" 377 "Desktop Edition\n"
378#else 378#else
379 "PDA-Edition\n" 379 "PDA-Edition\n"
380 "for: Zaurus 5500 / 7x0 / 8x0\n" 380 "for: Zaurus 5500 / 7x0 / 8x0\n"
381#endif 381#endif
382 382
383 "(c) 2004 Ulf Schenk\n" 383 "(c) 2004 Ulf Schenk\n"
384 "(c) 1997-2003, The KDE PIM Team\n" 384 "(c) 1997-2003, The KDE PIM Team\n"
385 "Tobias Koenig Current maintainer tokoe@kde.org\n" 385 "Tobias Koenig Current maintainer tokoe@kde.org\n"
386 "Don Sanders Original author\n" 386 "Don Sanders Original author\n"
387 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n" 387 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n"
388 "Mike Pilone GUI and framework redesign mpilone@slac.com\n" 388 "Mike Pilone GUI and framework redesign mpilone@slac.com\n"
389 "Greg Stern DCOP interface\n" 389 "Greg Stern DCOP interface\n"
390 "Mark Westcot Contact pinning\n" 390 "Mark Westcot Contact pinning\n"
391 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 391 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
392 "Steffen Hansen LDAP Lookup hansen@kde.org\n" ); 392 "Steffen Hansen LDAP Lookup hansen@kde.org\n" );
393} 393}
394 394
395void KABCore::setContactSelected( const QString &uid ) 395void KABCore::setContactSelected( const QString &uid )
396{ 396{
397 KABC::Addressee addr = mAddressBook->findByUid( uid ); 397 KABC::Addressee addr = mAddressBook->findByUid( uid );
398 if ( !mDetails->isHidden() ) 398 if ( !mDetails->isHidden() )
399 mDetails->setAddressee( addr ); 399 mDetails->setAddressee( addr );
400 400
401 if ( !addr.isEmpty() ) { 401 if ( !addr.isEmpty() ) {
402 emit contactSelected( addr.formattedName() ); 402 emit contactSelected( addr.formattedName() );
403 KABC::Picture pic = addr.photo(); 403 KABC::Picture pic = addr.photo();
404 if ( pic.isIntern() ) { 404 if ( pic.isIntern() ) {
405//US emit contactSelected( pic.data() ); 405//US emit contactSelected( pic.data() );
406//US instead use: 406//US instead use:
407 QPixmap px; 407 QPixmap px;
408 if (pic.data().isNull() != true) 408 if (pic.data().isNull() != true)
409 { 409 {
410 px.convertFromImage(pic.data()); 410 px.convertFromImage(pic.data());
411 } 411 }
412 412
413 emit contactSelected( px ); 413 emit contactSelected( px );
414 } 414 }
415 } 415 }
416 416
417 417
418 mExtensionManager->setSelectionChanged(); 418 mExtensionManager->setSelectionChanged();
419 419
420 // update the actions 420 // update the actions
421 bool selected = !uid.isEmpty(); 421 bool selected = !uid.isEmpty();
422 422
423 if ( mReadWrite ) { 423 if ( mReadWrite ) {
424 mActionCut->setEnabled( selected ); 424 mActionCut->setEnabled( selected );
425 mActionPaste->setEnabled( selected ); 425 mActionPaste->setEnabled( selected );
426 } 426 }
427 427
428 mActionCopy->setEnabled( selected ); 428 mActionCopy->setEnabled( selected );
429 mActionDelete->setEnabled( selected ); 429 mActionDelete->setEnabled( selected );
430 mActionEditAddressee->setEnabled( selected ); 430 mActionEditAddressee->setEnabled( selected );
431 mActionMail->setEnabled( selected ); 431 mActionMail->setEnabled( selected );
432 mActionMailVCard->setEnabled( selected ); 432 mActionMailVCard->setEnabled( selected );
433 mActionWhoAmI->setEnabled( selected ); 433 mActionWhoAmI->setEnabled( selected );
434 mActionCategories->setEnabled( selected ); 434 mActionCategories->setEnabled( selected );
435} 435}
436 436
437void KABCore::sendMail() 437void KABCore::sendMail()
438{ 438{
439#ifndef KAB_EMBEDDED 439#ifndef KAB_EMBEDDED
440 sendMail( mViewManager->selectedEmails().join( ", " ) ); 440 sendMail( mViewManager->selectedEmails().join( ", " ) );
441#else //KAB_EMBEDDED 441#else //KAB_EMBEDDED
442 qDebug("KABCore::sendMail() ust be fixed"); 442 qDebug("KABCore::sendMail() ust be fixed");
443#endif //KAB_EMBEDDED 443#endif //KAB_EMBEDDED
444} 444}
445 445
446void KABCore::sendMail( const QString& email ) 446void KABCore::sendMail( const QString& email )
447{ 447{
448#ifndef KAB_EMBEDDED 448#ifndef KAB_EMBEDDED
449 kapp->invokeMailer( email, "" ); 449 kapp->invokeMailer( email, "" );
450#else //KAB_EMBEDDED 450#else //KAB_EMBEDDED
451 qDebug("KABCore::sendMail(const QString& email) ust be fixed"); 451 qDebug("KABCore::sendMail(const QString& email) ust be fixed");
452#endif //KAB_EMBEDDED 452#endif //KAB_EMBEDDED
453} 453}
454 454
455void KABCore::mailVCard() 455void KABCore::mailVCard()
456{ 456{
457#ifndef KAB_EMBEDDED 457#ifndef KAB_EMBEDDED
458 QStringList uids = mViewManager->selectedUids(); 458 QStringList uids = mViewManager->selectedUids();
459 if ( !uids.isEmpty() ) 459 if ( !uids.isEmpty() )
460 mailVCard( uids ); 460 mailVCard( uids );
461#else //KAB_EMBEDDED 461#else //KAB_EMBEDDED
462 qDebug("KABCore::mailVCard() must be fixed"); 462 qDebug("KABCore::mailVCard() must be fixed");
463#endif //KAB_EMBEDDED 463#endif //KAB_EMBEDDED
464} 464}
465 465
466void KABCore::mailVCard( const QStringList& uids ) 466void KABCore::mailVCard( const QStringList& uids )
467{ 467{
468#ifndef KAB_EMBEDDED 468#ifndef KAB_EMBEDDED
469 QStringList urls; 469 QStringList urls;
470 470
471 // Create a temp dir, so that we can put the files in it with proper names 471 // Create a temp dir, so that we can put the files in it with proper names
472 KTempFile tempDir; 472 KTempFile tempDir;
473 if ( tempDir.status() != 0 ) { 473 if ( tempDir.status() != 0 ) {
474 kdWarning() << strerror( tempDir.status() ) << endl; 474 kdWarning() << strerror( tempDir.status() ) << endl;
475 return; 475 return;
476 } 476 }
477 477
478 QString dirName = tempDir.name(); 478 QString dirName = tempDir.name();
479 tempDir.unlink(); 479 tempDir.unlink();
480 QDir().mkdir( dirName, true ); 480 QDir().mkdir( dirName, true );
481 481
482 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 482 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
483 KABC::Addressee a = mAddressBook->findByUid( *it ); 483 KABC::Addressee a = mAddressBook->findByUid( *it );
484 484
485 if ( a.isEmpty() ) 485 if ( a.isEmpty() )
486 continue; 486 continue;
487 487
488 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 488 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
489 489
490 QString fileName = dirName + "/" + name; 490 QString fileName = dirName + "/" + name;
491 491
492 QFile outFile(fileName); 492 QFile outFile(fileName);
493 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 493 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
494 KABC::VCardConverter converter; 494 KABC::VCardConverter converter;
495 QString vcard; 495 QString vcard;
496 496
497 converter.addresseeToVCard( a, vcard ); 497 converter.addresseeToVCard( a, vcard );
498 498
499 QTextStream t( &outFile ); // use a text stream 499 QTextStream t( &outFile ); // use a text stream
500 t.setEncoding( QTextStream::UnicodeUTF8 ); 500 t.setEncoding( QTextStream::UnicodeUTF8 );
501 t << vcard; 501 t << vcard;
502 502
503 outFile.close(); 503 outFile.close();
504 504
505 urls.append( fileName ); 505 urls.append( fileName );
506 } 506 }
507 } 507 }
508 508
509 kapp->invokeMailer( QString::null, QString::null, QString::null, 509 kapp->invokeMailer( QString::null, QString::null, QString::null,
510 QString::null, // subject 510 QString::null, // subject
511 QString::null, // body 511 QString::null, // body
512 QString::null, 512 QString::null,
513 urls ); // attachments 513 urls ); // attachments
514#else //KAB_EMBEDDED 514#else //KAB_EMBEDDED
515 qDebug("KABCore::mailVCard( must be fixed"); 515 qDebug("KABCore::mailVCard( must be fixed");
516#endif //KAB_EMBEDDED 516#endif //KAB_EMBEDDED
517 517
518} 518}
519 519
520void KABCore::browse( const QString& url ) 520void KABCore::browse( const QString& url )
521{ 521{
522#ifndef KAB_EMBEDDED 522#ifndef KAB_EMBEDDED
523 kapp->invokeBrowser( url ); 523 kapp->invokeBrowser( url );
524#else //KAB_EMBEDDED 524#else //KAB_EMBEDDED
525 qDebug("KABCore::browse must be fixed"); 525 qDebug("KABCore::browse must be fixed");
526#endif //KAB_EMBEDDED 526#endif //KAB_EMBEDDED
527} 527}
528 528
529void KABCore::selectAllContacts() 529void KABCore::selectAllContacts()
530{ 530{
531 mViewManager->setSelected( QString::null, true ); 531 mViewManager->setSelected( QString::null, true );
532} 532}
533 533
534void KABCore::deleteContacts() 534void KABCore::deleteContacts()
535{ 535{
536 QStringList uidList = mViewManager->selectedUids(); 536 QStringList uidList = mViewManager->selectedUids();
537 deleteContacts( uidList ); 537 deleteContacts( uidList );
538} 538}
539 539
540void KABCore::deleteContacts( const QStringList &uids ) 540void KABCore::deleteContacts( const QStringList &uids )
541{ 541{
542 if ( uids.count() > 0 ) { 542 if ( uids.count() > 0 ) {
543 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 543 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
544 UndoStack::instance()->push( command ); 544 UndoStack::instance()->push( command );
545 RedoStack::instance()->clear(); 545 RedoStack::instance()->clear();
546 546
547 // now if we deleted anything, refresh 547 // now if we deleted anything, refresh
548 setContactSelected( QString::null ); 548 setContactSelected( QString::null );
549 setModified( true ); 549 setModified( true );
550 } 550 }
551} 551}
552 552
553void KABCore::copyContacts() 553void KABCore::copyContacts()
554{ 554{
555 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 555 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
556 556
557 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 557 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
558 558
559 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 559 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
560 560
561 QClipboard *cb = QApplication::clipboard(); 561 QClipboard *cb = QApplication::clipboard();
562 cb->setText( clipText ); 562 cb->setText( clipText );
563} 563}
564 564
565void KABCore::cutContacts() 565void KABCore::cutContacts()
566{ 566{
567 QStringList uidList = mViewManager->selectedUids(); 567 QStringList uidList = mViewManager->selectedUids();
568 568
569//US if ( uidList.size() > 0 ) { 569//US if ( uidList.size() > 0 ) {
570 if ( uidList.count() > 0 ) { 570 if ( uidList.count() > 0 ) {
571 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 571 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
572 UndoStack::instance()->push( command ); 572 UndoStack::instance()->push( command );
573 RedoStack::instance()->clear(); 573 RedoStack::instance()->clear();
574 574
575 setModified( true ); 575 setModified( true );
576 } 576 }
577} 577}
578 578
579void KABCore::pasteContacts() 579void KABCore::pasteContacts()
580{ 580{
581 QClipboard *cb = QApplication::clipboard(); 581 QClipboard *cb = QApplication::clipboard();
582 582
583 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 583 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
584 584
585 pasteContacts( list ); 585 pasteContacts( list );
586} 586}
587 587
588void KABCore::pasteContacts( KABC::Addressee::List &list ) 588void KABCore::pasteContacts( KABC::Addressee::List &list )
589{ 589{
590 KABC::Resource *resource = requestResource( this ); 590 KABC::Resource *resource = requestResource( this );
591 KABC::Addressee::List::Iterator it; 591 KABC::Addressee::List::Iterator it;
592 for ( it = list.begin(); it != list.end(); ++it ) 592 for ( it = list.begin(); it != list.end(); ++it )
593 (*it).setResource( resource ); 593 (*it).setResource( resource );
594 594
595 PwPasteCommand *command = new PwPasteCommand( this, list ); 595 PwPasteCommand *command = new PwPasteCommand( this, list );
596 UndoStack::instance()->push( command ); 596 UndoStack::instance()->push( command );
597 RedoStack::instance()->clear(); 597 RedoStack::instance()->clear();
598 598
599 setModified( true ); 599 setModified( true );
600} 600}
601 601
602void KABCore::setWhoAmI() 602void KABCore::setWhoAmI()
603{ 603{
604 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 604 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
605 605
606 if ( addrList.count() > 1 ) { 606 if ( addrList.count() > 1 ) {
607 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 607 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
608 return; 608 return;
609 } 609 }
610 610
611 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 611 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
612 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 612 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
613 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 613 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
614} 614}
615 615
616void KABCore::setCategories() 616void KABCore::setCategories()
617{ 617{
618 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 618 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
619 if ( !dlg.exec() ) 619 if ( !dlg.exec() )
620 return; 620 return;
621 621
622 bool merge = false; 622 bool merge = false;
623 QString msg = i18n( "Merge with existing categories?" ); 623 QString msg = i18n( "Merge with existing categories?" );
624 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 624 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
625 merge = true; 625 merge = true;
626 626
627 QStringList categories = dlg.selectedCategories(); 627 QStringList categories = dlg.selectedCategories();
628 628
629 QStringList uids = mViewManager->selectedUids(); 629 QStringList uids = mViewManager->selectedUids();
630 QStringList::Iterator it; 630 QStringList::Iterator it;
631 for ( it = uids.begin(); it != uids.end(); ++it ) { 631 for ( it = uids.begin(); it != uids.end(); ++it ) {
632 KABC::Addressee addr = mAddressBook->findByUid( *it ); 632 KABC::Addressee addr = mAddressBook->findByUid( *it );
633 if ( !addr.isEmpty() ) { 633 if ( !addr.isEmpty() ) {
634 if ( !merge ) 634 if ( !merge )
635 addr.setCategories( categories ); 635 addr.setCategories( categories );
636 else { 636 else {
637 QStringList addrCategories = addr.categories(); 637 QStringList addrCategories = addr.categories();
638 QStringList::Iterator catIt; 638 QStringList::Iterator catIt;
639 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 639 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
640 if ( !addrCategories.contains( *catIt ) ) 640 if ( !addrCategories.contains( *catIt ) )
641 addrCategories.append( *catIt ); 641 addrCategories.append( *catIt );
642 } 642 }
643 addr.setCategories( addrCategories ); 643 addr.setCategories( addrCategories );
644 } 644 }
645 645
646 mAddressBook->insertAddressee( addr ); 646 mAddressBook->insertAddressee( addr );
647 } 647 }
648 } 648 }
649 649
650 if ( uids.count() > 0 ) 650 if ( uids.count() > 0 )
651 setModified( true ); 651 setModified( true );
652} 652}
653 653
654void KABCore::setSearchFields( const KABC::Field::List &fields ) 654void KABCore::setSearchFields( const KABC::Field::List &fields )
655{ 655{
656 mIncSearchWidget->setFields( fields ); 656 mIncSearchWidget->setFields( fields );
657} 657}
658 658
659void KABCore::incrementalSearch( const QString& text ) 659void KABCore::incrementalSearch( const QString& text )
660{ 660{
661 mViewManager->setSelected( QString::null, false ); 661 mViewManager->setSelected( QString::null, false );
662 662
663 if ( !text.isEmpty() ) { 663 if ( !text.isEmpty() ) {
664 KABC::Field *field = mIncSearchWidget->currentField(); 664 KABC::Field *field = mIncSearchWidget->currentField();
665 665
666 QString pattern = text.lower(); 666 QString pattern = text.lower();
667 667
668#if KDE_VERSION >= 319 668#if KDE_VERSION >= 319
669 KABC::AddresseeList list( mAddressBook->allAddressees() ); 669 KABC::AddresseeList list( mAddressBook->allAddressees() );
670 if ( field ) { 670 if ( field ) {
671 list.sortByField( field ); 671 list.sortByField( field );
672 KABC::AddresseeList::Iterator it; 672 KABC::AddresseeList::Iterator it;
673 for ( it = list.begin(); it != list.end(); ++it ) { 673 for ( it = list.begin(); it != list.end(); ++it ) {
674 if ( field->value( *it ).lower().startsWith( pattern ) ) { 674 if ( field->value( *it ).lower().startsWith( pattern ) ) {
675 mViewManager->setSelected( (*it).uid(), true ); 675 mViewManager->setSelected( (*it).uid(), true );
676 return; 676 return;
677 } 677 }
678 } 678 }
679 } else { 679 } else {
680 KABC::AddresseeList::Iterator it; 680 KABC::AddresseeList::Iterator it;
681 for ( it = list.begin(); it != list.end(); ++it ) { 681 for ( it = list.begin(); it != list.end(); ++it ) {
682 KABC::Field::List fieldList = mIncSearchWidget->fields(); 682 KABC::Field::List fieldList = mIncSearchWidget->fields();
683 KABC::Field::List::ConstIterator fieldIt; 683 KABC::Field::List::ConstIterator fieldIt;
684 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 684 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
685 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 685 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
686 mViewManager->setSelected( (*it).uid(), true ); 686 mViewManager->setSelected( (*it).uid(), true );
687 return; 687 return;
688 } 688 }
689 } 689 }
690 } 690 }
691 } 691 }
692#else 692#else
693 KABC::AddressBook::Iterator it; 693 KABC::AddressBook::Iterator it;
694 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 694 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
695 if ( field ) { 695 if ( field ) {
696 if ( field->value( *it ).lower().startsWith( pattern ) ) { 696 if ( field->value( *it ).lower().startsWith( pattern ) ) {
697 mViewManager->setSelected( (*it).uid(), true ); 697 mViewManager->setSelected( (*it).uid(), true );
698 return; 698 return;
699 } 699 }
700 } else { 700 } else {
701 KABC::Field::List fieldList = mIncSearchWidget->fields(); 701 KABC::Field::List fieldList = mIncSearchWidget->fields();
702 KABC::Field::List::ConstIterator fieldIt; 702 KABC::Field::List::ConstIterator fieldIt;
703 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 703 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
704 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 704 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
705 mViewManager->setSelected( (*it).uid(), true ); 705 mViewManager->setSelected( (*it).uid(), true );
706 return; 706 return;
707 } 707 }
708 } 708 }
709 } 709 }
710 } 710 }
711#endif 711#endif
712 } 712 }
713} 713}
714 714
715void KABCore::setModified() 715void KABCore::setModified()
716{ 716{
717 setModified( true ); 717 setModified( true );
718} 718}
719 719
720void KABCore::setModifiedWOrefresh() 720void KABCore::setModifiedWOrefresh()
721{ 721{
722 // qDebug("KABCore::setModifiedWOrefresh() "); 722 // qDebug("KABCore::setModifiedWOrefresh() ");
723 mModified = true; 723 mModified = true;
724 mActionSave->setEnabled( mModified ); 724 mActionSave->setEnabled( mModified );
725#ifdef DESKTOP_VERSION 725#ifdef DESKTOP_VERSION
726 mDetails->refreshView(); 726 mDetails->refreshView();
727#endif 727#endif
728 728
729} 729}
730void KABCore::setModified( bool modified ) 730void KABCore::setModified( bool modified )
731{ 731{
732 mModified = modified; 732 mModified = modified;
733 mActionSave->setEnabled( mModified ); 733 mActionSave->setEnabled( mModified );
734 734
735 if ( modified ) 735 if ( modified )
736 mJumpButtonBar->recreateButtons(); 736 mJumpButtonBar->recreateButtons();
737 737
738 mViewManager->refreshView(); 738 mViewManager->refreshView();
739 mDetails->refreshView(); 739 mDetails->refreshView();
740 740
741} 741}
742 742
743bool KABCore::modified() const 743bool KABCore::modified() const
744{ 744{
745 return mModified; 745 return mModified;
746} 746}
747 747
748void KABCore::contactModified( const KABC::Addressee &addr ) 748void KABCore::contactModified( const KABC::Addressee &addr )
749{ 749{
750 750
751 Command *command = 0; 751 Command *command = 0;
752 QString uid; 752 QString uid;
753 753
754 // check if it exists already 754 // check if it exists already
755 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 755 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
756 if ( origAddr.isEmpty() ) 756 if ( origAddr.isEmpty() )
757 command = new PwNewCommand( mAddressBook, addr ); 757 command = new PwNewCommand( mAddressBook, addr );
758 else { 758 else {
759 command = new PwEditCommand( mAddressBook, origAddr, addr ); 759 command = new PwEditCommand( mAddressBook, origAddr, addr );
760 uid = addr.uid(); 760 uid = addr.uid();
761 } 761 }
762 762
763 UndoStack::instance()->push( command ); 763 UndoStack::instance()->push( command );
764 RedoStack::instance()->clear(); 764 RedoStack::instance()->clear();
765 765
766 setModified( true ); 766 setModified( true );
767} 767}
768 768
769void KABCore::newContact() 769void KABCore::newContact()
770{ 770{
771 AddresseeEditorDialog *dialog = 0; 771 AddresseeEditorDialog *dialog = 0;
772 772
773 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 773 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
774 774
775 QPtrList<KRES::Resource> kresResources; 775 QPtrList<KRES::Resource> kresResources;
776 QPtrListIterator<KABC::Resource> it( kabcResources ); 776 QPtrListIterator<KABC::Resource> it( kabcResources );
777 KABC::Resource *resource; 777 KABC::Resource *resource;
778 while ( ( resource = it.current() ) != 0 ) { 778 while ( ( resource = it.current() ) != 0 ) {
779 ++it; 779 ++it;
780 if ( !resource->readOnly() ) { 780 if ( !resource->readOnly() ) {
781 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 781 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
782 if ( res ) 782 if ( res )
783 kresResources.append( res ); 783 kresResources.append( res );
784 } 784 }
785 } 785 }
786 786
787 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 787 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
788 resource = static_cast<KABC::Resource*>( res ); 788 resource = static_cast<KABC::Resource*>( res );
789 789
790 if ( resource ) { 790 if ( resource ) {
791 KABC::Addressee addr; 791 KABC::Addressee addr;
792 addr.setResource( resource ); 792 addr.setResource( resource );
793 dialog = createAddresseeEditorDialog( this ); 793 dialog = createAddresseeEditorDialog( this );
794 dialog->setAddressee( addr ); 794 dialog->setAddressee( addr );
795 795
796 } else 796 } else
797 return; 797 return;
798 798
799 mEditorDict.insert( dialog->addressee().uid(), dialog ); 799 mEditorDict.insert( dialog->addressee().uid(), dialog );
800 800
801 dialog->show(); 801 dialog->show();
802 802
803} 803}
804 804
805void KABCore::addEmail( QString aStr ) 805void KABCore::addEmail( QString aStr )
806{ 806{
807#ifndef KAB_EMBEDDED 807#ifndef KAB_EMBEDDED
808 QString fullName, email; 808 QString fullName, email;
809 809
810 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 810 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
811 811
812 // Try to lookup the addressee matching the email address 812 // Try to lookup the addressee matching the email address
813 bool found = false; 813 bool found = false;
814 QStringList emailList; 814 QStringList emailList;
815 KABC::AddressBook::Iterator it; 815 KABC::AddressBook::Iterator it;
816 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 816 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
817 emailList = (*it).emails(); 817 emailList = (*it).emails();
818 if ( emailList.contains( email ) > 0 ) { 818 if ( emailList.contains( email ) > 0 ) {
819 found = true; 819 found = true;
820 (*it).setNameFromString( fullName ); 820 (*it).setNameFromString( fullName );
821 editContact( (*it).uid() ); 821 editContact( (*it).uid() );
822 } 822 }
823 } 823 }
824 824
825 if ( !found ) { 825 if ( !found ) {
826 KABC::Addressee addr; 826 KABC::Addressee addr;
827 addr.setNameFromString( fullName ); 827 addr.setNameFromString( fullName );
828 addr.insertEmail( email, true ); 828 addr.insertEmail( email, true );
829 829
830 mAddressBook->insertAddressee( addr ); 830 mAddressBook->insertAddressee( addr );
831 mViewManager->refreshView( addr.uid() ); 831 mViewManager->refreshView( addr.uid() );
832 editContact( addr.uid() ); 832 editContact( addr.uid() );
833 } 833 }
834#else //KAB_EMBEDDED 834#else //KAB_EMBEDDED
835 qDebug("KABCore::addEmail finsih method"); 835 qDebug("KABCore::addEmail finsih method");
836#endif //KAB_EMBEDDED 836#endif //KAB_EMBEDDED
837} 837}
838 838
839void KABCore::importVCard( const KURL &url, bool showPreview ) 839void KABCore::importVCard( const KURL &url, bool showPreview )
840{ 840{
841 mXXPortManager->importVCard( url, showPreview ); 841 mXXPortManager->importVCard( url, showPreview );
842} 842}
843 843
844void KABCore::importVCard( const QString &vCard, bool showPreview ) 844void KABCore::importVCard( const QString &vCard, bool showPreview )
845{ 845{
846 mXXPortManager->importVCard( vCard, showPreview ); 846 mXXPortManager->importVCard( vCard, showPreview );
847} 847}
848 848
849//US added a second method without defaultparameter 849//US added a second method without defaultparameter
850void KABCore::editContact2() { 850void KABCore::editContact2() {
851 editContact( QString::null ); 851 editContact( QString::null );
852} 852}
853 853
854void KABCore::editContact( const QString &uid ) 854void KABCore::editContact( const QString &uid )
855{ 855{
856 856
857 if ( mExtensionManager->isQuickEditVisible() ) 857 if ( mExtensionManager->isQuickEditVisible() )
858 return; 858 return;
859 859
860 // First, locate the contact entry 860 // First, locate the contact entry
861 QString localUID = uid; 861 QString localUID = uid;
862 if ( localUID.isNull() ) { 862 if ( localUID.isNull() ) {
863 QStringList uidList = mViewManager->selectedUids(); 863 QStringList uidList = mViewManager->selectedUids();
864 if ( uidList.count() > 0 ) 864 if ( uidList.count() > 0 )
865 localUID = *( uidList.at( 0 ) ); 865 localUID = *( uidList.at( 0 ) );
866 } 866 }
867 867
868 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 868 KABC::Addressee addr = mAddressBook->findByUid( localUID );
869 if ( !addr.isEmpty() ) { 869 if ( !addr.isEmpty() ) {
870 AddresseeEditorDialog *dialog = mEditorDict.find( addr.uid() ); 870 AddresseeEditorDialog *dialog = mEditorDict.find( addr.uid() );
871 if ( !dialog ) { 871 if ( !dialog ) {
872 dialog = createAddresseeEditorDialog( this ); 872 dialog = createAddresseeEditorDialog( this );
873 873
874 mEditorDict.insert( addr.uid(), dialog ); 874 mEditorDict.insert( addr.uid(), dialog );
875 875
876 dialog->setAddressee( addr ); 876 dialog->setAddressee( addr );
877 } 877 }
878 878
879 dialog->raise(); 879 dialog->raise();
880 dialog->show(); 880 dialog->show();
881 } 881 }
882} 882}
883 883
884void KABCore::save() 884void KABCore::save()
885{ 885{
886 if ( !mModified ) 886 if ( !mModified )
887 return; 887 return;
888 QString text = i18n( "There was an error while attempting to save\n the " 888 QString text = i18n( "There was an error while attempting to save\n the "
889 "address book. Please check that some \nother application is " 889 "address book. Please check that some \nother application is "
890 "not using it. " ); 890 "not using it. " );
891 statusMessage(i18n("Saving addressbook ... ")); 891 statusMessage(i18n("Saving addressbook ... "));
892#ifndef KAB_EMBEDDED 892#ifndef KAB_EMBEDDED
893 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 893 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
894 if ( !b || !b->save() ) { 894 if ( !b || !b->save() ) {
895 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 895 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
896 } 896 }
897#else //KAB_EMBEDDED 897#else //KAB_EMBEDDED
898 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 898 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
899 if ( !b || !b->save() ) { 899 if ( !b || !b->save() ) {
900 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 900 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
901 } 901 }
902#endif //KAB_EMBEDDED 902#endif //KAB_EMBEDDED
903 903
904 statusMessage(i18n("Addressbook saved!")); 904 statusMessage(i18n("Addressbook saved!"));
905 setModified( false ); 905 setModified( false );
906} 906}
907 907
908void KABCore::statusMessage(QString mess , int time ) 908void KABCore::statusMessage(QString mess , int time )
909{ 909{
910 //topLevelWidget()->setCaption( mess ); 910 //topLevelWidget()->setCaption( mess );
911 // pending setting timer to revome message 911 // pending setting timer to revome message
912} 912}
913void KABCore::undo() 913void KABCore::undo()
914{ 914{
915 UndoStack::instance()->undo(); 915 UndoStack::instance()->undo();
916 916
917 // Refresh the view 917 // Refresh the view
918 mViewManager->refreshView(); 918 mViewManager->refreshView();
919} 919}
920 920
921void KABCore::redo() 921void KABCore::redo()
922{ 922{
923 RedoStack::instance()->redo(); 923 RedoStack::instance()->redo();
924 924
925 // Refresh the view 925 // Refresh the view
926 mViewManager->refreshView(); 926 mViewManager->refreshView();
927} 927}
928 928
929void KABCore::setJumpButtonBarVisible( bool visible ) 929void KABCore::setJumpButtonBarVisible( bool visible )
930{ 930{
931 if ( visible ) 931 if ( visible )
932 mJumpButtonBar->show(); 932 mJumpButtonBar->show();
933 else 933 else
934 mJumpButtonBar->hide(); 934 mJumpButtonBar->hide();
935} 935}
936void KABCore::setDetailsToState() 936void KABCore::setDetailsToState()
937{ 937{
938 setDetailsVisible( mActionDetails->isChecked() ); 938 setDetailsVisible( mActionDetails->isChecked() );
939} 939}
940 940
941void KABCore::setDetailsVisible( bool visible ) 941void KABCore::setDetailsVisible( bool visible )
942{ 942{
943 if ( visible ) 943 if ( visible )
944 mDetails->show(); 944 mDetails->show();
945 else 945 else
946 mDetails->hide(); 946 mDetails->hide();
947} 947}
948 948
949void KABCore::extensionModified( const KABC::Addressee::List &list ) 949void KABCore::extensionModified( const KABC::Addressee::List &list )
950{ 950{
951 951
952 if ( list.count() != 0 ) { 952 if ( list.count() != 0 ) {
953 KABC::Addressee::List::ConstIterator it; 953 KABC::Addressee::List::ConstIterator it;
954 for ( it = list.begin(); it != list.end(); ++it ) 954 for ( it = list.begin(); it != list.end(); ++it )
955 mAddressBook->insertAddressee( *it ); 955 mAddressBook->insertAddressee( *it );
956 if ( list.count() > 1 ) 956 if ( list.count() > 1 )
957 setModified(); 957 setModified();
958 else 958 else
959 setModifiedWOrefresh(); 959 setModifiedWOrefresh();
960 } 960 }
961 if ( list.count() == 0 ) 961 if ( list.count() == 0 )
962 mViewManager->refreshView(); 962 mViewManager->refreshView();
963 else 963 else
964 mViewManager->refreshView( list[ 0 ].uid() ); 964 mViewManager->refreshView( list[ 0 ].uid() );
965 965
966 966
967 967
968} 968}
969 969
970QString KABCore::getNameByPhone( const QString &phone ) 970QString KABCore::getNameByPhone( const QString &phone )
971{ 971{
972#ifndef KAB_EMBEDDED 972#ifndef KAB_EMBEDDED
973 QRegExp r( "[/*/-/ ]" ); 973 QRegExp r( "[/*/-/ ]" );
974 QString localPhone( phone ); 974 QString localPhone( phone );
975 975
976 bool found = false; 976 bool found = false;
977 QString ownerName = ""; 977 QString ownerName = "";
978 KABC::AddressBook::Iterator iter; 978 KABC::AddressBook::Iterator iter;
979 KABC::PhoneNumber::List::Iterator phoneIter; 979 KABC::PhoneNumber::List::Iterator phoneIter;
980 KABC::PhoneNumber::List phoneList; 980 KABC::PhoneNumber::List phoneList;
981 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 981 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
982 phoneList = (*iter).phoneNumbers(); 982 phoneList = (*iter).phoneNumbers();
983 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 983 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
984 ++phoneIter) { 984 ++phoneIter) {
985 // Get rid of separator chars so just the numbers are compared. 985 // Get rid of separator chars so just the numbers are compared.
986 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 986 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
987 ownerName = (*iter).formattedName(); 987 ownerName = (*iter).formattedName();
988 found = true; 988 found = true;
989 } 989 }
990 } 990 }
991 } 991 }
992 992
993 return ownerName; 993 return ownerName;
994#else //KAB_EMBEDDED 994#else //KAB_EMBEDDED
995 qDebug("KABCore::getNameByPhone finsih method"); 995 qDebug("KABCore::getNameByPhone finsih method");
996 return ""; 996 return "";
997#endif //KAB_EMBEDDED 997#endif //KAB_EMBEDDED
998 998
999} 999}
1000 1000
1001void KABCore::openConfigDialog() 1001void KABCore::openConfigDialog()
1002{ 1002{
1003 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1003 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1004 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1004 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1005 ConfigureDialog->addModule(kabcfg ); 1005 ConfigureDialog->addModule(kabcfg );
1006 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1006 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1007 this, SLOT( configurationChanged() ) ); 1007 this, SLOT( configurationChanged() ) );
1008 connect( ConfigureDialog, SIGNAL( okClicked() ), 1008 connect( ConfigureDialog, SIGNAL( okClicked() ),
1009 this, SLOT( configurationChanged() ) ); 1009 this, SLOT( configurationChanged() ) );
1010 saveSettings(); 1010 saveSettings();
1011 ConfigureDialog->showMaximized(); 1011 ConfigureDialog->showMaximized();
1012 ConfigureDialog->exec(); 1012 if ( ConfigureDialog->exec() )
1013 KMessageBox::information( this, i18n("If you configured \nExtensions,\nplease restart!\n") );
1013 delete ConfigureDialog; 1014 delete ConfigureDialog;
1014} 1015}
1015 1016
1016void KABCore::openLDAPDialog() 1017void KABCore::openLDAPDialog()
1017{ 1018{
1018#ifndef KAB_EMBEDDED 1019#ifndef KAB_EMBEDDED
1019 if ( !mLdapSearchDialog ) { 1020 if ( !mLdapSearchDialog ) {
1020 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1021 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1021 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1022 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1022 SLOT( refreshView() ) ); 1023 SLOT( refreshView() ) );
1023 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1024 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1024 SLOT( setModified() ) ); 1025 SLOT( setModified() ) );
1025 } else 1026 } else
1026 mLdapSearchDialog->restoreSettings(); 1027 mLdapSearchDialog->restoreSettings();
1027 1028
1028 if ( mLdapSearchDialog->isOK() ) 1029 if ( mLdapSearchDialog->isOK() )
1029 mLdapSearchDialog->exec(); 1030 mLdapSearchDialog->exec();
1030#else //KAB_EMBEDDED 1031#else //KAB_EMBEDDED
1031 qDebug("KABCore::openLDAPDialog() finsih method"); 1032 qDebug("KABCore::openLDAPDialog() finsih method");
1032#endif //KAB_EMBEDDED 1033#endif //KAB_EMBEDDED
1033} 1034}
1034 1035
1035void KABCore::print() 1036void KABCore::print()
1036{ 1037{
1037#ifndef KAB_EMBEDDED 1038#ifndef KAB_EMBEDDED
1038 KPrinter printer; 1039 KPrinter printer;
1039 if ( !printer.setup( this ) ) 1040 if ( !printer.setup( this ) )
1040 return; 1041 return;
1041 1042
1042 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1043 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1043 mViewManager->selectedUids(), this ); 1044 mViewManager->selectedUids(), this );
1044 1045
1045 wizard.exec(); 1046 wizard.exec();
1046#else //KAB_EMBEDDED 1047#else //KAB_EMBEDDED
1047 qDebug("KABCore::print() finsih method"); 1048 qDebug("KABCore::print() finsih method");
1048#endif //KAB_EMBEDDED 1049#endif //KAB_EMBEDDED
1049 1050
1050} 1051}
1051 1052
1052 1053
1053void KABCore::addGUIClient( KXMLGUIClient *client ) 1054void KABCore::addGUIClient( KXMLGUIClient *client )
1054{ 1055{
1055 if ( mGUIClient ) 1056 if ( mGUIClient )
1056 mGUIClient->insertChildClient( client ); 1057 mGUIClient->insertChildClient( client );
1057 else 1058 else
1058 KMessageBox::error( this, "no KXMLGUICLient"); 1059 KMessageBox::error( this, "no KXMLGUICLient");
1059} 1060}
1060 1061
1061 1062
1062void KABCore::configurationChanged() 1063void KABCore::configurationChanged()
1063{ 1064{
1064 mExtensionManager->reconfigure(); 1065 mExtensionManager->reconfigure();
1065} 1066}
1066 1067
1067void KABCore::addressBookChanged() 1068void KABCore::addressBookChanged()
1068{ 1069{
1069#ifndef KAB_EMBEDDED 1070#ifndef KAB_EMBEDDED
1070 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1071 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1071 while ( it.current() ) { 1072 while ( it.current() ) {
1072 if ( it.current()->dirty() ) { 1073 if ( it.current()->dirty() ) {
1073 QString text = i18n( "Data has been changed externally. Unsaved " 1074 QString text = i18n( "Data has been changed externally. Unsaved "
1074 "changes will be lost." ); 1075 "changes will be lost." );
1075 KMessageBox::information( this, text ); 1076 KMessageBox::information( this, text );
1076 } 1077 }
1077 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1078 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1078 ++it; 1079 ++it;
1079 } 1080 }
1080 1081
1081 mViewManager->refreshView(); 1082 mViewManager->refreshView();
1082#else //KAB_EMBEDDED 1083#else //KAB_EMBEDDED
1083 qDebug("KABCore::addressBookChanged() finsih method"); 1084 qDebug("KABCore::addressBookChanged() finsih method");
1084#endif //KAB_EMBEDDED 1085#endif //KAB_EMBEDDED
1085} 1086}
1086 1087
1087AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1088AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1088 const char *name ) 1089 const char *name )
1089{ 1090{
1090 AddresseeEditorDialog *dialog = new AddresseeEditorDialog( this, parent, 1091 AddresseeEditorDialog *dialog = new AddresseeEditorDialog( this, parent,
1091 name ? name : "editorDialog" ); 1092 name ? name : "editorDialog" );
1092 1093
1093//US 1094//US
1094 dialog->setMaximumSize( 640, 480 ); 1095 dialog->setMaximumSize( 640, 480 );
1095 dialog->showMaximized(); 1096 dialog->showMaximized();
1096 1097
1097 connect( dialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1098 connect( dialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1098 SLOT( contactModified( const KABC::Addressee& ) ) ); 1099 SLOT( contactModified( const KABC::Addressee& ) ) );
1099 connect( dialog, SIGNAL( editorDestroyed( const QString& ) ), 1100 connect( dialog, SIGNAL( editorDestroyed( const QString& ) ),
1100 SLOT( slotEditorDestroyed( const QString& ) ) ); 1101 SLOT( slotEditorDestroyed( const QString& ) ) );
1101 1102
1102 return dialog; 1103 return dialog;
1103} 1104}
1104 1105
1105void KABCore::slotEditorDestroyed( const QString &uid ) 1106void KABCore::slotEditorDestroyed( const QString &uid )
1106{ 1107{
1107 mEditorDict.remove( uid ); 1108 mEditorDict.remove( uid );
1108} 1109}
1109 1110
1110void KABCore::initGUI() 1111void KABCore::initGUI()
1111{ 1112{
1112#ifndef KAB_EMBEDDED 1113#ifndef KAB_EMBEDDED
1113 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1114 QHBoxLayout *topLayout = new QHBoxLayout( this );
1114 topLayout->setSpacing( KDialogBase::spacingHint() ); 1115 topLayout->setSpacing( KDialogBase::spacingHint() );
1115 1116
1116 mExtensionBarSplitter = new QSplitter( this ); 1117 mExtensionBarSplitter = new QSplitter( this );
1117 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1118 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1118 1119
1119 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1120 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1120 1121
1121 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1122 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1122 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1123 mIncSearchWidget = new IncSearchWidget( viewSpace );
1123 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1124 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1124 SLOT( incrementalSearch( const QString& ) ) ); 1125 SLOT( incrementalSearch( const QString& ) ) );
1125 1126
1126 mViewManager = new ViewManager( this, viewSpace ); 1127 mViewManager = new ViewManager( this, viewSpace );
1127 viewSpace->setStretchFactor( mViewManager, 1 ); 1128 viewSpace->setStretchFactor( mViewManager, 1 );
1128 1129
1129 mDetails = new ViewContainer( mDetailsSplitter ); 1130 mDetails = new ViewContainer( mDetailsSplitter );
1130 1131
1131 mJumpButtonBar = new JumpButtonBar( this, this ); 1132 mJumpButtonBar = new JumpButtonBar( this, this );
1132 1133
1133 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1134 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1134 1135
1135 topLayout->addWidget( mExtensionBarSplitter ); 1136 topLayout->addWidget( mExtensionBarSplitter );
1136 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1137 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1137 topLayout->addWidget( mJumpButtonBar ); 1138 topLayout->addWidget( mJumpButtonBar );
1138 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1139 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1139 1140
1140 mXXPortManager = new XXPortManager( this, this ); 1141 mXXPortManager = new XXPortManager( this, this );
1141 1142
1142#else //KAB_EMBEDDED 1143#else //KAB_EMBEDDED
1143 //US initialize viewMenu before settingup viewmanager. 1144 //US initialize viewMenu before settingup viewmanager.
1144 // Viewmanager needs this menu to plugin submenues. 1145 // Viewmanager needs this menu to plugin submenues.
1145 viewMenu = new QPopupMenu( this ); 1146 viewMenu = new QPopupMenu( this );
1146 settingsMenu = new QPopupMenu( this ); 1147 settingsMenu = new QPopupMenu( this );
1147 //filterMenu = new QPopupMenu( this ); 1148 //filterMenu = new QPopupMenu( this );
1148 ImportMenu = new QPopupMenu( this ); 1149 ImportMenu = new QPopupMenu( this );
1149 ExportMenu = new QPopupMenu( this ); 1150 ExportMenu = new QPopupMenu( this );
1150 1151
1151 1152
1152//US since we have no splitter for the embedded system, setup 1153//US since we have no splitter for the embedded system, setup
1153// a layout with two frames. One left and one right. 1154// a layout with two frames. One left and one right.
1154 1155
1155 QBoxLayout *topLayout; 1156 QBoxLayout *topLayout;
1156 1157
1157 // = new QHBoxLayout( this ); 1158 // = new QHBoxLayout( this );
1158// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1159// QBoxLayout *topLayout = (QBoxLayout*)layout();
1159 1160
1160// QWidget *mainBox = new QWidget( this ); 1161// QWidget *mainBox = new QWidget( this );
1161// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1162// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1162 1163
1163#ifdef DESKTOP_VERSION 1164#ifdef DESKTOP_VERSION
1164 topLayout = new QHBoxLayout( this ); 1165 topLayout = new QHBoxLayout( this );
1165 1166
1166 1167
1167 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1168 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1168 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1169 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1169 1170
1170 topLayout->addWidget(mMiniSplitter ); 1171 topLayout->addWidget(mMiniSplitter );
1171 1172
1172 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1173 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1173 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1174 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1174 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1175 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1175 mDetails = new ViewContainer( mMiniSplitter ); 1176 mDetails = new ViewContainer( mMiniSplitter );
1176 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1177 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1177#else 1178#else
1178 if ( QApplication::desktop()->width() > 480 ) { 1179 if ( QApplication::desktop()->width() > 480 ) {
1179 topLayout = new QHBoxLayout( this ); 1180 topLayout = new QHBoxLayout( this );
1180 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1181 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1181 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1182 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1182 } else { 1183 } else {
1183 1184
1184 topLayout = new QVBoxLayout( this ); 1185 topLayout = new QVBoxLayout( this );
1185 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1186 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1186 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1187 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1187 } 1188 }
1188 1189
1189 topLayout->addWidget(mMiniSplitter ); 1190 topLayout->addWidget(mMiniSplitter );
1190 mViewManager = new ViewManager( this, mMiniSplitter ); 1191 mViewManager = new ViewManager( this, mMiniSplitter );
1191 mDetails = new ViewContainer( mMiniSplitter ); 1192 mDetails = new ViewContainer( mMiniSplitter );
1192 1193
1193 1194
1194 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1195 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1195#endif 1196#endif
1196 //eh->hide(); 1197 //eh->hide();
1197 // topLayout->addWidget(mExtensionManager ); 1198 // topLayout->addWidget(mExtensionManager );
1198 1199
1199 1200
1200/*US 1201/*US
1201#ifndef KAB_NOSPLITTER 1202#ifndef KAB_NOSPLITTER
1202 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1203 QHBoxLayout *topLayout = new QHBoxLayout( this );
1203//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1204//US topLayout->setSpacing( KDialogBase::spacingHint() );
1204 topLayout->setSpacing( 10 ); 1205 topLayout->setSpacing( 10 );
1205 1206
1206 mDetailsSplitter = new QSplitter( this ); 1207 mDetailsSplitter = new QSplitter( this );
1207 1208
1208 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1209 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1209 1210
1210 mViewManager = new ViewManager( this, viewSpace ); 1211 mViewManager = new ViewManager( this, viewSpace );
1211 viewSpace->setStretchFactor( mViewManager, 1 ); 1212 viewSpace->setStretchFactor( mViewManager, 1 );
1212 1213
1213 mDetails = new ViewContainer( mDetailsSplitter ); 1214 mDetails = new ViewContainer( mDetailsSplitter );
1214 1215
1215 topLayout->addWidget( mDetailsSplitter ); 1216 topLayout->addWidget( mDetailsSplitter );
1216 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1217 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1217#else //KAB_NOSPLITTER 1218#else //KAB_NOSPLITTER
1218 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1219 QHBoxLayout *topLayout = new QHBoxLayout( this );
1219//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1220//US topLayout->setSpacing( KDialogBase::spacingHint() );
1220 topLayout->setSpacing( 10 ); 1221 topLayout->setSpacing( 10 );
1221 1222
1222// mDetailsSplitter = new QSplitter( this ); 1223// mDetailsSplitter = new QSplitter( this );
1223 1224
1224 QVBox *viewSpace = new QVBox( this ); 1225 QVBox *viewSpace = new QVBox( this );
1225 1226
1226 mViewManager = new ViewManager( this, viewSpace ); 1227 mViewManager = new ViewManager( this, viewSpace );
1227 viewSpace->setStretchFactor( mViewManager, 1 ); 1228 viewSpace->setStretchFactor( mViewManager, 1 );
1228 1229
1229 mDetails = new ViewContainer( this ); 1230 mDetails = new ViewContainer( this );
1230 1231
1231 topLayout->addWidget( viewSpace ); 1232 topLayout->addWidget( viewSpace );
1232// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1233// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1233 topLayout->addWidget( mDetails ); 1234 topLayout->addWidget( mDetails );
1234#endif //KAB_NOSPLITTER 1235#endif //KAB_NOSPLITTER
1235*/ 1236*/
1236 1237
1237 1238
1238#endif //KAB_EMBEDDED 1239#endif //KAB_EMBEDDED
1239 initActions(); 1240 initActions();
1240 1241
1241#ifdef KAB_EMBEDDED 1242#ifdef KAB_EMBEDDED
1242 addActionsManually(); 1243 addActionsManually();
1243 //US make sure the export and import menues are initialized before creating the xxPortManager. 1244 //US make sure the export and import menues are initialized before creating the xxPortManager.
1244 mXXPortManager = new XXPortManager( this, this ); 1245 mXXPortManager = new XXPortManager( this, this );
1245 1246
1246 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1247 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1247 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1248 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1248 // mActionQuit->plug ( mMainWindow->toolBar()); 1249 // mActionQuit->plug ( mMainWindow->toolBar());
1249 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1250 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1250 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1251 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1251 // mIncSearchWidget->hide(); 1252 // mIncSearchWidget->hide();
1252 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1253 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1253 SLOT( incrementalSearch( const QString& ) ) ); 1254 SLOT( incrementalSearch( const QString& ) ) );
1254 1255
1255 1256
1256 mJumpButtonBar = new JumpButtonBar( this, this ); 1257 mJumpButtonBar = new JumpButtonBar( this, this );
1257 1258
1258 topLayout->addWidget( mJumpButtonBar ); 1259 topLayout->addWidget( mJumpButtonBar );
1259//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1260//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1260 1261
1261// mMainWindow->getIconToolBar()->raise(); 1262// mMainWindow->getIconToolBar()->raise();
1262 1263
1263#endif //KAB_EMBEDDED 1264#endif //KAB_EMBEDDED
1264 1265
1265} 1266}
1266void KABCore::initActions() 1267void KABCore::initActions()
1267{ 1268{
1268//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1269//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1269 1270
1270#ifndef KAB_EMBEDDED 1271#ifndef KAB_EMBEDDED
1271 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1272 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1272 SLOT( clipboardDataChanged() ) ); 1273 SLOT( clipboardDataChanged() ) );
1273#endif //KAB_EMBEDDED 1274#endif //KAB_EMBEDDED
1274 1275
1275 // file menu 1276 // file menu
1276 if ( mIsPart ) { 1277 if ( mIsPart ) {
1277 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1278 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1278 SLOT( sendMail() ), actionCollection(), 1279 SLOT( sendMail() ), actionCollection(),
1279 "kaddressbook_mail" ); 1280 "kaddressbook_mail" );
1280 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1281 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1281 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1282 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1282 1283
1283 } else { 1284 } else {
1284 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1285 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1285 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1286 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1286 } 1287 }
1287 1288
1288 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1289 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1289 SLOT( save() ), actionCollection(), "file_sync" ); 1290 SLOT( save() ), actionCollection(), "file_sync" );
1290 1291
1291 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1292 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1292 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1293 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1293 1294
1294 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1295 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1295 this, SLOT( mailVCard() ), 1296 this, SLOT( mailVCard() ),
1296 actionCollection(), "file_mail_vcard"); 1297 actionCollection(), "file_mail_vcard");
1297 1298
1298 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1299 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1299 this, SLOT( editContact2() ), 1300 this, SLOT( editContact2() ),
1300 actionCollection(), "file_properties" ); 1301 actionCollection(), "file_properties" );
1301 1302
1302#ifdef KAB_EMBEDDED 1303#ifdef KAB_EMBEDDED
1303 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1304 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1304 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1305 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1305 mMainWindow, SLOT( exit() ), 1306 mMainWindow, SLOT( exit() ),
1306 actionCollection(), "quit" ); 1307 actionCollection(), "quit" );
1307#endif //KAB_EMBEDDED 1308#endif //KAB_EMBEDDED
1308 1309
1309 // edit menu 1310 // edit menu
1310 if ( mIsPart ) { 1311 if ( mIsPart ) {
1311 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1312 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1312 SLOT( copyContacts() ), actionCollection(), 1313 SLOT( copyContacts() ), actionCollection(),
1313 "kaddressbook_copy" ); 1314 "kaddressbook_copy" );
1314 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1315 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1315 SLOT( cutContacts() ), actionCollection(), 1316 SLOT( cutContacts() ), actionCollection(),
1316 "kaddressbook_cut" ); 1317 "kaddressbook_cut" );
1317 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1318 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1318 SLOT( pasteContacts() ), actionCollection(), 1319 SLOT( pasteContacts() ), actionCollection(),
1319 "kaddressbook_paste" ); 1320 "kaddressbook_paste" );
1320 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1321 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1321 SLOT( selectAllContacts() ), actionCollection(), 1322 SLOT( selectAllContacts() ), actionCollection(),
1322 "kaddressbook_select_all" ); 1323 "kaddressbook_select_all" );
1323 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1324 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1324 SLOT( undo() ), actionCollection(), 1325 SLOT( undo() ), actionCollection(),
1325 "kaddressbook_undo" ); 1326 "kaddressbook_undo" );
1326 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1327 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1327 this, SLOT( redo() ), actionCollection(), 1328 this, SLOT( redo() ), actionCollection(),
1328 "kaddressbook_redo" ); 1329 "kaddressbook_redo" );
1329 } else { 1330 } else {
1330 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1331 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1331 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1332 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1332 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1333 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1333 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1334 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1334 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1335 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1335 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1336 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1336 } 1337 }
1337 1338
1338 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1339 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1339 Key_Delete, this, SLOT( deleteContacts() ), 1340 Key_Delete, this, SLOT( deleteContacts() ),
1340 actionCollection(), "edit_delete" ); 1341 actionCollection(), "edit_delete" );
1341 1342
1342 mActionUndo->setEnabled( false ); 1343 mActionUndo->setEnabled( false );
1343 mActionRedo->setEnabled( false ); 1344 mActionRedo->setEnabled( false );
1344 1345
1345 // settings menu 1346 // settings menu
1346#ifdef KAB_EMBEDDED 1347#ifdef KAB_EMBEDDED
1347//US special menuentry to configure the addressbook resources. On KDE 1348//US special menuentry to configure the addressbook resources. On KDE
1348// you do that through the control center !!! 1349// you do that through the control center !!!
1349 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1350 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1350 SLOT( configureResources() ), actionCollection(), 1351 SLOT( configureResources() ), actionCollection(),
1351 "kaddressbook_configure_resources" ); 1352 "kaddressbook_configure_resources" );
1352#endif //KAB_EMBEDDED 1353#endif //KAB_EMBEDDED
1353 1354
1354 if ( mIsPart ) { 1355 if ( mIsPart ) {
1355 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1356 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1356 SLOT( openConfigDialog() ), actionCollection(), 1357 SLOT( openConfigDialog() ), actionCollection(),
1357 "kaddressbook_configure" ); 1358 "kaddressbook_configure" );
1358 1359
1359 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1360 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1360 this, SLOT( configureKeyBindings() ), actionCollection(), 1361 this, SLOT( configureKeyBindings() ), actionCollection(),
1361 "kaddressbook_configure_shortcuts" ); 1362 "kaddressbook_configure_shortcuts" );
1362#ifdef KAB_EMBEDDED 1363#ifdef KAB_EMBEDDED
1363 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1364 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1365 mActionConfigureToolbars->setEnabled( false );
1364#endif //KAB_EMBEDDED 1366#endif //KAB_EMBEDDED
1365 1367
1366 } else { 1368 } else {
1367 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1369 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1368 1370
1369 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1371 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1370 } 1372 }
1371 1373
1372 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1374 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1373 actionCollection(), "options_show_jump_bar" ); 1375 actionCollection(), "options_show_jump_bar" );
1374 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1376 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1375 1377
1376 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0, 1378 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0,
1377 actionCollection(), "options_show_details" ); 1379 actionCollection(), "options_show_details" );
1378 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1380 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1379 1381
1380 // misc 1382 // misc
1381 // only enable LDAP lookup if we can handle the protocol 1383 // only enable LDAP lookup if we can handle the protocol
1382#ifndef KAB_EMBEDDED 1384#ifndef KAB_EMBEDDED
1383 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1385 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1384 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1386 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1385 this, SLOT( openLDAPDialog() ), actionCollection(), 1387 this, SLOT( openLDAPDialog() ), actionCollection(),
1386 "ldap_lookup" ); 1388 "ldap_lookup" );
1387 } 1389 }
1388#else //KAB_EMBEDDED 1390#else //KAB_EMBEDDED
1389 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1391 //qDebug("KABCore::initActions() LDAP has to be implemented");
1390#endif //KAB_EMBEDDED 1392#endif //KAB_EMBEDDED
1391 1393
1392 1394
1393 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1395 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1394 SLOT( setWhoAmI() ), actionCollection(), 1396 SLOT( setWhoAmI() ), actionCollection(),
1395 "set_personal" ); 1397 "set_personal" );
1396 1398
1397 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1399 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1398 SLOT( setCategories() ), actionCollection(), 1400 SLOT( setCategories() ), actionCollection(),
1399 "edit_set_categories" ); 1401 "edit_set_categories" );
1400 1402
1401#ifdef KAB_EMBEDDED 1403#ifdef KAB_EMBEDDED
1402 1404
1403 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1405 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1404 this, SLOT( createAboutData() ), actionCollection(), 1406 this, SLOT( createAboutData() ), actionCollection(),
1405 "kaddressbook_about_data" ); 1407 "kaddressbook_about_data" );
1406#endif //KAB_EMBEDDED 1408#endif //KAB_EMBEDDED
1407 1409
1408 clipboardDataChanged(); 1410 clipboardDataChanged();
1409 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1411 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1410 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1412 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1411} 1413}
1412 1414
1413//US we need this function, to plug all actions into the correct menues. 1415//US we need this function, to plug all actions into the correct menues.
1414// KDE uses a XML format to plug the actions, but we work her without this overhead. 1416// KDE uses a XML format to plug the actions, but we work her without this overhead.
1415void KABCore::addActionsManually() 1417void KABCore::addActionsManually()
1416{ 1418{
1417//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1419//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1418 1420
1419#ifdef KAB_EMBEDDED 1421#ifdef KAB_EMBEDDED
1420 QPopupMenu *fileMenu = new QPopupMenu( this ); 1422 QPopupMenu *fileMenu = new QPopupMenu( this );
1421 QPopupMenu *editMenu = new QPopupMenu( this ); 1423 QPopupMenu *editMenu = new QPopupMenu( this );
1422 QPopupMenu *helpMenu = new QPopupMenu( this ); 1424 QPopupMenu *helpMenu = new QPopupMenu( this );
1423 1425
1424 KToolBar* tb = mMainWindow->toolBar(); 1426 KToolBar* tb = mMainWindow->toolBar();
1425 1427
1426#ifdef DESKTOP_VERSION 1428#ifdef DESKTOP_VERSION
1427 QMenuBar* mb = mMainWindow->menuBar(); 1429 QMenuBar* mb = mMainWindow->menuBar();
1428 1430
1429 //US setup menubar. 1431 //US setup menubar.
1430 //Disable the following block if you do not want to have a menubar. 1432 //Disable the following block if you do not want to have a menubar.
1431 mb->insertItem( "&File", fileMenu ); 1433 mb->insertItem( "&File", fileMenu );
1432 mb->insertItem( "&Edit", editMenu ); 1434 mb->insertItem( "&Edit", editMenu );
1433 mb->insertItem( "&View", viewMenu ); 1435 mb->insertItem( "&View", viewMenu );
1434 mb->insertItem( "&Settings", settingsMenu ); 1436 mb->insertItem( "&Settings", settingsMenu );
1435 mb->insertItem( "&Help", helpMenu ); 1437 mb->insertItem( "&Help", helpMenu );
1436 mIncSearchWidget = new IncSearchWidget( tb ); 1438 mIncSearchWidget = new IncSearchWidget( tb );
1437 // tb->insertWidget(-1, 0, mIncSearchWidget); 1439 // tb->insertWidget(-1, 0, mIncSearchWidget);
1438 1440
1439#else 1441#else
1440 //US setup toolbar 1442 //US setup toolbar
1441 QMenuBar *menuBarTB = new QMenuBar( tb ); 1443 QMenuBar *menuBarTB = new QMenuBar( tb );
1442 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1444 QPopupMenu *popupBarTB = new QPopupMenu( this );
1443 menuBarTB->insertItem( "ME", popupBarTB); 1445 menuBarTB->insertItem( "ME", popupBarTB);
1444 tb->insertWidget(-1, 0, menuBarTB); 1446 tb->insertWidget(-1, 0, menuBarTB);
1445 mIncSearchWidget = new IncSearchWidget( tb ); 1447 mIncSearchWidget = new IncSearchWidget( tb );
1446 1448
1447 tb->enableMoving(false); 1449 tb->enableMoving(false);
1448 popupBarTB->insertItem( "&File", fileMenu ); 1450 popupBarTB->insertItem( "&File", fileMenu );
1449 popupBarTB->insertItem( "&Edit", editMenu ); 1451 popupBarTB->insertItem( "&Edit", editMenu );
1450 popupBarTB->insertItem( "&View", viewMenu ); 1452 popupBarTB->insertItem( "&View", viewMenu );
1451 popupBarTB->insertItem( "&Settings", settingsMenu ); 1453 popupBarTB->insertItem( "&Settings", settingsMenu );
1452 mViewManager->getFilterAction()->plug ( popupBarTB); 1454 mViewManager->getFilterAction()->plug ( popupBarTB);
1453 popupBarTB->insertItem( "&Help", helpMenu ); 1455 popupBarTB->insertItem( "&Help", helpMenu );
1454 if (QApplication::desktop()->width() > 320 ) { 1456 if (QApplication::desktop()->width() > 320 ) {
1455 // mViewManager->getFilterAction()->plug ( tb); 1457 // mViewManager->getFilterAction()->plug ( tb);
1456 } 1458 }
1457#endif 1459#endif
1458 // mActionQuit->plug ( mMainWindow->toolBar()); 1460 // mActionQuit->plug ( mMainWindow->toolBar());
1459 1461
1460 1462
1461 1463
1462 //US Now connect the actions with the menue entries. 1464 //US Now connect the actions with the menue entries.
1463 mActionPrint->plug( fileMenu ); 1465 mActionPrint->plug( fileMenu );
1464 mActionMail->plug( fileMenu ); 1466 mActionMail->plug( fileMenu );
1465 fileMenu->insertSeparator(); 1467 fileMenu->insertSeparator();
1466 1468
1467 mActionNewContact->plug( fileMenu ); 1469 mActionNewContact->plug( fileMenu );
1468 mActionNewContact->plug( tb ); 1470 mActionNewContact->plug( tb );
1469 1471
1470 mActionEditAddressee->plug( fileMenu ); 1472 mActionEditAddressee->plug( fileMenu );
1471 fileMenu->insertSeparator(); 1473 fileMenu->insertSeparator();
1472 mActionSave->plug( fileMenu ); 1474 mActionSave->plug( fileMenu );
1473 fileMenu->insertItem( "&Import", ImportMenu ); 1475 fileMenu->insertItem( "&Import", ImportMenu );
1474 fileMenu->insertItem( "&Emport", ExportMenu ); 1476 fileMenu->insertItem( "&Emport", ExportMenu );
1475 fileMenu->insertSeparator(); 1477 fileMenu->insertSeparator();
1476 mActionMailVCard->plug( fileMenu ); 1478 mActionMailVCard->plug( fileMenu );
1477 fileMenu->insertSeparator(); 1479 fileMenu->insertSeparator();
1478 mActionQuit->plug( fileMenu ); 1480 mActionQuit->plug( fileMenu );
1479 1481
1480 1482
1481 // edit menu 1483 // edit menu
1482 mActionUndo->plug( editMenu ); 1484 mActionUndo->plug( editMenu );
1483 mActionRedo->plug( editMenu ); 1485 mActionRedo->plug( editMenu );
1484 editMenu->insertSeparator(); 1486 editMenu->insertSeparator();
1485 mActionCut->plug( editMenu ); 1487 mActionCut->plug( editMenu );
1486 mActionCopy->plug( editMenu ); 1488 mActionCopy->plug( editMenu );
1487 mActionPaste->plug( editMenu ); 1489 mActionPaste->plug( editMenu );
1488 mActionDelete->plug( editMenu ); 1490 mActionDelete->plug( editMenu );
1489 editMenu->insertSeparator(); 1491 editMenu->insertSeparator();
1490 mActionSelectAll->plug( editMenu ); 1492 mActionSelectAll->plug( editMenu );
1491 1493
1492 1494
1493 // settings menu 1495 // settings menu
1494//US special menuentry to configure the addressbook resources. On KDE 1496//US special menuentry to configure the addressbook resources. On KDE
1495// you do that through the control center !!! 1497// you do that through the control center !!!
1496 mActionConfigResources->plug( settingsMenu ); 1498 mActionConfigResources->plug( settingsMenu );
1497 settingsMenu->insertSeparator(); 1499 settingsMenu->insertSeparator();
1498 1500
1499 mActionConfigKAddressbook->plug( settingsMenu ); 1501 mActionConfigKAddressbook->plug( settingsMenu );
1500 1502
1501 if ( mIsPart ) { 1503 if ( mIsPart ) {
1502 mActionConfigShortcuts->plug( settingsMenu ); 1504 mActionConfigShortcuts->plug( settingsMenu );
1503 mActionConfigureToolbars->plug( settingsMenu ); 1505 mActionConfigureToolbars->plug( settingsMenu );
1504 1506
1505 } else { 1507 } else {
1506 mActionKeyBindings->plug( settingsMenu ); 1508 mActionKeyBindings->plug( settingsMenu );
1507 } 1509 }
1508 1510
1509 settingsMenu->insertSeparator(); 1511 settingsMenu->insertSeparator();
1510 1512
1511 mActionJumpBar->plug( settingsMenu ); 1513 mActionJumpBar->plug( settingsMenu );
1512 mActionDetails->plug( settingsMenu ); 1514 mActionDetails->plug( settingsMenu );
1513 settingsMenu->insertSeparator(); 1515 settingsMenu->insertSeparator();
1514 1516
1515 mActionWhoAmI->plug( settingsMenu ); 1517 mActionWhoAmI->plug( settingsMenu );
1516 mActionCategories->plug( settingsMenu ); 1518 mActionCategories->plug( settingsMenu );
1517 1519
1518 mActionAboutKAddressbook->plug( helpMenu ); 1520 mActionAboutKAddressbook->plug( helpMenu );
1519 1521
1520 1522
1521 if (QApplication::desktop()->width() > 320 ) { 1523 if (QApplication::desktop()->width() > 320 ) {
1522 1524
1523 mActionEditAddressee->plug( tb ); 1525 mActionEditAddressee->plug( tb );
1524 mActionSave->plug( tb ); 1526 mActionSave->plug( tb );
1525 mViewManager->getFilterAction()->plug ( tb); 1527 mViewManager->getFilterAction()->plug ( tb);
1526 if (QApplication::desktop()->width() > 480 ) { 1528 if (QApplication::desktop()->width() > 480 ) {
1527 mActionUndo->plug( tb ); 1529 mActionUndo->plug( tb );
1528 mActionDelete->plug( tb ); 1530 mActionDelete->plug( tb );
1529 mActionRedo->plug( tb ); 1531 mActionRedo->plug( tb );
1530 } 1532 }
1531 } 1533 }
1532 //mActionQuit->plug ( tb ); 1534 //mActionQuit->plug ( tb );
1533 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1535 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1534 1536
1535 //US link the searchwidget first to this. 1537 //US link the searchwidget first to this.
1536 // The real linkage to the toolbar happens later. 1538 // The real linkage to the toolbar happens later.
1537//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 1539//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
1538//US tb->insertItem( mIncSearchWidget ); 1540//US tb->insertItem( mIncSearchWidget );
1539/*US 1541/*US
1540 mIncSearchWidget = new IncSearchWidget( tb ); 1542 mIncSearchWidget = new IncSearchWidget( tb );
1541 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1543 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1542 SLOT( incrementalSearch( const QString& ) ) ); 1544 SLOT( incrementalSearch( const QString& ) ) );
1543 1545
1544 mJumpButtonBar = new JumpButtonBar( this, this ); 1546 mJumpButtonBar = new JumpButtonBar( this, this );
1545 1547
1546//US topLayout->addWidget( mJumpButtonBar ); 1548//US topLayout->addWidget( mJumpButtonBar );
1547 this->layout()->add( mJumpButtonBar ); 1549 this->layout()->add( mJumpButtonBar );
1548*/ 1550*/
1549 1551
1550#endif //KAB_EMBEDDED 1552#endif //KAB_EMBEDDED
1551} 1553}
1552 1554
1553 1555
1554 1556
1555void KABCore::clipboardDataChanged() 1557void KABCore::clipboardDataChanged()
1556{ 1558{
1557 1559
1558 if ( mReadWrite ) 1560 if ( mReadWrite )
1559 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 1561 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
1560 1562
1561} 1563}
1562 1564
1563void KABCore::updateActionMenu() 1565void KABCore::updateActionMenu()
1564{ 1566{
1565 UndoStack *undo = UndoStack::instance(); 1567 UndoStack *undo = UndoStack::instance();
1566 RedoStack *redo = RedoStack::instance(); 1568 RedoStack *redo = RedoStack::instance();
1567 1569
1568 if ( undo->isEmpty() ) 1570 if ( undo->isEmpty() )
1569 mActionUndo->setText( i18n( "Undo" ) ); 1571 mActionUndo->setText( i18n( "Undo" ) );
1570 else 1572 else
1571 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 1573 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
1572 1574
1573 mActionUndo->setEnabled( !undo->isEmpty() ); 1575 mActionUndo->setEnabled( !undo->isEmpty() );
1574 1576
1575 if ( !redo->top() ) 1577 if ( !redo->top() )
1576 mActionRedo->setText( i18n( "Redo" ) ); 1578 mActionRedo->setText( i18n( "Redo" ) );
1577 else 1579 else
1578 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 1580 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
1579 1581
1580 mActionRedo->setEnabled( !redo->isEmpty() ); 1582 mActionRedo->setEnabled( !redo->isEmpty() );
1581} 1583}
1582 1584
1583void KABCore::configureKeyBindings() 1585void KABCore::configureKeyBindings()
1584{ 1586{
1585#ifndef KAB_EMBEDDED 1587#ifndef KAB_EMBEDDED
1586 KKeyDialog::configure( actionCollection(), true ); 1588 KKeyDialog::configure( actionCollection(), true );
1587#else //KAB_EMBEDDED 1589#else //KAB_EMBEDDED
1588 qDebug("KABCore::configureKeyBindings() not implemented"); 1590 qDebug("KABCore::configureKeyBindings() not implemented");
1589#endif //KAB_EMBEDDED 1591#endif //KAB_EMBEDDED
1590} 1592}
1591 1593
1592#ifdef KAB_EMBEDDED 1594#ifdef KAB_EMBEDDED
1593void KABCore::configureResources() 1595void KABCore::configureResources()
1594{ 1596{
1595 KRES::KCMKResources dlg( this, "" , 0 ); 1597 KRES::KCMKResources dlg( this, "" , 0 );
1596 1598
1597 if ( !dlg.exec() ) 1599 if ( !dlg.exec() )
1598 return; 1600 return;
1601 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
1599} 1602}
1600#endif //KAB_EMBEDDED 1603#endif //KAB_EMBEDDED
1601 1604
1602 1605
1603 1606
1604#ifndef KAB_EMBEDDED 1607#ifndef KAB_EMBEDDED
1605#include "kabcore.moc" 1608#include "kabcore.moc"
1606#endif //KAB_EMBEDDED 1609#endif //KAB_EMBEDDED
diff --git a/kmicromail/composemail.cpp b/kmicromail/composemail.cpp
index ca4f247..c1b58a4 100644
--- a/kmicromail/composemail.cpp
+++ b/kmicromail/composemail.cpp
@@ -1,363 +1,363 @@
1 1
2#include "composemail.h" 2#include "composemail.h"
3 3
4#include <libmailwrapper/smtpwrapper.h> 4#include <libmailwrapper/smtpwrapper.h>
5#include <libmailwrapper/storemail.h> 5#include <libmailwrapper/storemail.h>
6#include <libmailwrapper/abstractmail.h> 6#include <libmailwrapper/abstractmail.h>
7#include <libmailwrapper/mailtypes.h> 7#include <libmailwrapper/mailtypes.h>
8 8
9/* OPIE */ 9/* OPIE */
10//#include <opie2/ofiledialog.h> 10//#include <opie2/ofiledialog.h>
11//#include <opie2/odebug.h> 11//#include <opie2/odebug.h>
12#include <kfiledialog.h> 12#include <kfiledialog.h>
13//#include <qpe/resource.h> 13//#include <qpe/resource.h>
14#include <qpe/config.h> 14#include <qpe/config.h>
15#include <qpe/global.h> 15#include <qpe/global.h>
16//#include <qpe/contact.h> 16//#include <qpe/contact.h>
17 17
18 18
19#include <qcombobox.h> 19#include <qcombobox.h>
20#include <qcheckbox.h> 20#include <qcheckbox.h>
21#include <qtimer.h> 21#include <qtimer.h>
22#include <qmessagebox.h> 22#include <qmessagebox.h>
23#include <qpushbutton.h> 23#include <qpushbutton.h>
24#include <qmultilineedit.h> 24#include <qmultilineedit.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qtabwidget.h> 26#include <qtabwidget.h>
27#include <qlistview.h> 27#include <qlistview.h>
28#include <kabc/addresseedialog.h> 28#include <kabc/addresseedialog.h>
29#include <kabc/stdaddressbook.h> 29#include <kabc/stdaddressbook.h>
30#include <kabc/addressee.h> 30#include <kabc/addressee.h>
31 31
32 32
33 33
34//using namespace Opie::Core; 34//using namespace Opie::Core;
35//using namespace Opie::Ui; 35//using namespace Opie::Ui;
36ComposeMail::ComposeMail( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags ) 36ComposeMail::ComposeMail( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags )
37 : ComposeMailUI( parent, name, modal, flags ) 37 : ComposeMailUI( parent, name, modal, flags )
38{ 38{
39 39
40 settings = s; 40 settings = s;
41 m_replyid = ""; 41 m_replyid = "";
42 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( ); 42 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( );
43 QStringList mails = con.emails(); 43 QStringList mails = con.emails();
44 QString defmail = con.preferredEmail(); 44 QString defmail = con.preferredEmail();
45 if ( mails.count() == 0) 45 if ( mails.count() == 0)
46 QMessageBox::information( parentWidget(), tr( "Hint" ), 46 QMessageBox::information( 0, tr( "Hint" ),
47 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!" ), 47 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
48 tr( "Ok" ) ); 48 tr( "Ok" ) );
49 if (defmail.length()!=0) { 49 if (defmail.length()!=0) {
50 fromBox->insertItem(defmail); 50 fromBox->insertItem(defmail);
51 } 51 }
52 QStringList::ConstIterator sit = mails.begin(); 52 QStringList::ConstIterator sit = mails.begin();
53 for (;sit!=mails.end();++sit) { 53 for (;sit!=mails.end();++sit) {
54 if ( (*sit)==defmail) 54 if ( (*sit)==defmail)
55 continue; 55 continue;
56 fromBox->insertItem((*sit)); 56 fromBox->insertItem((*sit));
57 } 57 }
58 senderNameEdit->setText(con.formattedName()); 58 senderNameEdit->setText(con.formattedName());
59 Config cfg( "mail" ); 59 Config cfg( "mail" );
60 cfg.setGroup( "Compose" ); 60 cfg.setGroup( "Compose" );
61 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) ); 61 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) );
62 62
63 attList->addColumn( tr( "Name" ) ); 63 attList->addColumn( tr( "Name" ) );
64 attList->addColumn( tr( "Size" ) ); 64 attList->addColumn( tr( "Size" ) );
65 65
66 QList<Account> accounts = settings->getAccounts(); 66 QList<Account> accounts = settings->getAccounts();
67 67
68 Account *it; 68 Account *it;
69 for ( it = accounts.first(); it; it = accounts.next() ) { 69 for ( it = accounts.first(); it; it = accounts.next() ) {
70 if ( it->getType()==MAILLIB::A_SMTP ) { 70 if ( it->getType()==MAILLIB::A_SMTP ) {
71 SMTPaccount *smtp = static_cast<SMTPaccount *>(it); 71 SMTPaccount *smtp = static_cast<SMTPaccount *>(it);
72 smtpAccountBox->insertItem( smtp->getAccountName() ); 72 smtpAccountBox->insertItem( smtp->getAccountName() );
73 smtpAccounts.append( smtp ); 73 smtpAccounts.append( smtp );
74 } 74 }
75 } 75 }
76 if ( smtpAccounts.count() > 0 ) {
77 fillValues( smtpAccountBox->currentItem() );
78 } else {
79 QMessageBox::information( parentWidget(), tr( "Problem" ),
80 tr( "Please create an SMTP account first.\nThe SMTP is needed for sending mail." ),
81 tr( "Ok" ) );
82 return;
83 }
84 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) ); 76 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) );
85 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) ); 77 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) );
86 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) ); 78 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) );
87 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) ); 79 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) );
88 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) ); 80 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) );
89 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) ); 81 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) );
90 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) ); 82 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) );
91 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) ); 83 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) );
92 mMail = 0; 84 mMail = 0;
93 warnAttach = true; 85 warnAttach = true;
86 if ( smtpAccounts.count() > 0 ) {
87 fillValues( smtpAccountBox->currentItem() );
88 } else {
89 QMessageBox::information( 0, tr( "Problem" ),
90 tr( "Please create an SMTP account first.\nThe SMTP is needed for sending mail.\n" ),
91 tr( "Ok" ) );
92 return;
93 }
94} 94}
95void ComposeMail::saveAsDraft() 95void ComposeMail::saveAsDraft()
96{ 96{
97 97
98 Opie::Core::OSmartPointer<Mail> mail= new Mail(); 98 Opie::Core::OSmartPointer<Mail> mail= new Mail();
99 mail->setMail(fromBox->currentText()); 99 mail->setMail(fromBox->currentText());
100 mail->setTo( toLine->text() ); 100 mail->setTo( toLine->text() );
101 mail->setName(senderNameEdit->text()); 101 mail->setName(senderNameEdit->text());
102 mail->setCC( ccLine->text() ); 102 mail->setCC( ccLine->text() );
103 mail->setBCC( bccLine->text() ); 103 mail->setBCC( bccLine->text() );
104 mail->setReply( replyLine->text() ); 104 mail->setReply( replyLine->text() );
105 mail->setSubject( subjectLine->text() ); 105 mail->setSubject( subjectLine->text() );
106 if (!m_replyid.isEmpty()) { 106 if (!m_replyid.isEmpty()) {
107 QStringList ids; 107 QStringList ids;
108 ids.append(m_replyid); 108 ids.append(m_replyid);
109 mail->setInreply(ids); 109 mail->setInreply(ids);
110 } 110 }
111 QString txt = message->text(); 111 QString txt = message->text();
112 if ( !sigMultiLine->text().isEmpty() ) { 112 if ( !sigMultiLine->text().isEmpty() ) {
113 txt.append( "\n--\n" ); 113 txt.append( "\n--\n" );
114 txt.append( sigMultiLine->text() ); 114 txt.append( sigMultiLine->text() );
115 } 115 }
116 mail->setMessage( txt ); 116 mail->setMessage( txt );
117 117
118 /* only use the default drafts folder name! */ 118 /* only use the default drafts folder name! */
119 Storemail wrapper(AbstractMail::draftFolder()); 119 Storemail wrapper(AbstractMail::draftFolder());
120 wrapper.storeMail(mail); 120 wrapper.storeMail(mail);
121 121
122 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 122 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
123 /* attachments we will ignore! */ 123 /* attachments we will ignore! */
124 if ( it != 0 ) { 124 if ( it != 0 ) {
125 if ( warnAttach ) 125 if ( warnAttach )
126 QMessageBox::warning(0,tr("Store message"), 126 QMessageBox::warning(0,tr("Store message"),
127 tr("<center>Attachments will not be stored in \"Draft\" folder</center>")); 127 tr("<center>Attachments will not be stored in \"Draft\" folder</center>"));
128 warnAttach = false; 128 warnAttach = false;
129 } 129 }
130 setStatus( tr("Mail saved as draft!") ); 130 setStatus( tr("Mail saved as draft!") );
131} 131}
132void ComposeMail::clearStatus() 132void ComposeMail::clearStatus()
133{ 133{
134 topLevelWidget()->setCaption( tr("Compose mail") ); 134 topLevelWidget()->setCaption( tr("Compose mail") );
135} 135}
136void ComposeMail::setStatus( QString status ) 136void ComposeMail::setStatus( QString status )
137{ 137{
138 topLevelWidget()->setCaption( status ); 138 topLevelWidget()->setCaption( status );
139 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ; 139 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ;
140} 140}
141void ComposeMail::pickAddress( QLineEdit *line ) 141void ComposeMail::pickAddress( QLineEdit *line )
142{ 142{
143 //qDebug(" ComposeMail::pickAddress "); 143 //qDebug(" ComposeMail::pickAddress ");
144 QString names ;//= AddressPicker::getNames(); 144 QString names ;//= AddressPicker::getNames();
145 145
146 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 146 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
147 uint i=0; 147 uint i=0;
148 for (i=0; i < list.count(); i++) { 148 for (i=0; i < list.count(); i++) {
149 if ( !list[i].preferredEmail().isEmpty()) { 149 if ( !list[i].preferredEmail().isEmpty()) {
150 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">"; 150 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">";
151 if ( i < list.count() -1 ) 151 if ( i < list.count() -1 )
152 names+= ","; 152 names+= ",";
153 } 153 }
154 } 154 }
155 155
156 156
157 if ( line->text().isEmpty() ) { 157 if ( line->text().isEmpty() ) {
158 line->setText( names ); 158 line->setText( names );
159 } else if ( !names.isEmpty() ) { 159 } else if ( !names.isEmpty() ) {
160 line->setText( line->text() + ", " + names ); 160 line->setText( line->text() + ", " + names );
161 } 161 }
162} 162}
163 163
164 164
165void ComposeMail::setTo( const QString & to ) 165void ComposeMail::setTo( const QString & to )
166{ 166{
167 toLine->setText( to ); 167 toLine->setText( to );
168} 168}
169 169
170void ComposeMail::setSubject( const QString & subject ) 170void ComposeMail::setSubject( const QString & subject )
171{ 171{
172 subjectLine->setText( subject ); 172 subjectLine->setText( subject );
173} 173}
174 174
175void ComposeMail::setInReplyTo( const QString & messageId ) 175void ComposeMail::setInReplyTo( const QString & messageId )
176{ 176{
177 m_replyid = messageId; 177 m_replyid = messageId;
178} 178}
179 179
180void ComposeMail::setMessage( const QString & text ) 180void ComposeMail::setMessage( const QString & text )
181{ 181{
182 message->setText( text ); 182 message->setText( text );
183} 183}
184 184
185 185
186void ComposeMail::pickAddressTo() 186void ComposeMail::pickAddressTo()
187{ 187{
188 pickAddress( toLine ); 188 pickAddress( toLine );
189} 189}
190 190
191void ComposeMail::pickAddressCC() 191void ComposeMail::pickAddressCC()
192{ 192{
193 pickAddress( ccLine ); 193 pickAddress( ccLine );
194} 194}
195 195
196void ComposeMail::pickAddressBCC() 196void ComposeMail::pickAddressBCC()
197{ 197{
198 pickAddress( bccLine ); 198 pickAddress( bccLine );
199} 199}
200 200
201void ComposeMail::pickAddressReply() 201void ComposeMail::pickAddressReply()
202{ 202{
203 pickAddress( replyLine ); 203 pickAddress( replyLine );
204} 204}
205 205
206void ComposeMail::fillValues( int ) 206void ComposeMail::fillValues( int )
207{ 207{
208#if 0 208#if 0
209 SMTPaccount *smtp = smtpAccounts.at( current ); 209 SMTPaccount *smtp = smtpAccounts.at( current );
210 ccLine->clear(); 210 ccLine->clear();
211 if ( smtp->getUseCC() ) { 211 if ( smtp->getUseCC() ) {
212 ccLine->setText( smtp->getCC() ); 212 ccLine->setText( smtp->getCC() );
213 } 213 }
214 bccLine->clear(); 214 bccLine->clear();
215 if ( smtp->getUseBCC() ) { 215 if ( smtp->getUseBCC() ) {
216 bccLine->setText( smtp->getBCC() ); 216 bccLine->setText( smtp->getBCC() );
217 } 217 }
218 replyLine->clear(); 218 replyLine->clear();
219 if ( smtp->getUseReply() ) { 219 if ( smtp->getUseReply() ) {
220 replyLine->setText( smtp->getReply() ); 220 replyLine->setText( smtp->getReply() );
221 } 221 }
222 sigMultiLine->setText( smtp->getSignature() ); 222 sigMultiLine->setText( smtp->getSignature() );
223#endif 223#endif
224} 224}
225 225
226void ComposeMail::slotAdjustColumns() 226void ComposeMail::slotAdjustColumns()
227{ 227{
228 int currPage = tabWidget->currentPageIndex(); 228 int currPage = tabWidget->currentPageIndex();
229 229
230 tabWidget->showPage( attachTab ); 230 tabWidget->showPage( attachTab );
231 attList->setColumnWidth( 0, attList->visibleWidth() - 80 ); 231 attList->setColumnWidth( 0, attList->visibleWidth() - 80 );
232 attList->setColumnWidth( 1, 80 ); 232 attList->setColumnWidth( 1, 80 );
233 233
234 tabWidget->setCurrentPage( currPage ); 234 tabWidget->setCurrentPage( currPage );
235} 235}
236 236
237void ComposeMail::addAttachment() 237void ComposeMail::addAttachment()
238{ 238{
239 QString lnk = KFileDialog::getOpenFileName( "", "Add Attachment", this ); 239 QString lnk = KFileDialog::getOpenFileName( "", "Add Attachment", this );
240 if ( !lnk.isEmpty() ) { 240 if ( !lnk.isEmpty() ) {
241 Attachment *att = new Attachment( lnk ); 241 Attachment *att = new Attachment( lnk );
242 (void) new AttachViewItem( attList, att ); 242 (void) new AttachViewItem( attList, att );
243 } 243 }
244} 244}
245 245
246void ComposeMail::removeAttachment() 246void ComposeMail::removeAttachment()
247{ 247{
248 if ( !attList->currentItem() ) { 248 if ( !attList->currentItem() ) {
249 QMessageBox::information( this, tr( "Error" ), 249 QMessageBox::information( this, tr( "Error" ),
250 tr( "<p>Please select a File.</p>" ), 250 tr( "<p>Please select a File.</p>" ),
251 tr( "Ok" ) ); 251 tr( "Ok" ) );
252 } else { 252 } else {
253 attList->takeItem( attList->currentItem() ); 253 attList->takeItem( attList->currentItem() );
254 } 254 }
255} 255}
256 256
257void ComposeMail::accept() 257void ComposeMail::accept()
258{ 258{
259 if (! checkBoxLater->isChecked() ) { 259 if (! checkBoxLater->isChecked() ) {
260 int yesno = QMessageBox::warning(0,tr("Stop editing message"), 260 int yesno = QMessageBox::warning(0,tr("Stop editing message"),
261 tr("Send this message?"), 261 tr("Send this message?"),
262 tr("Yes"), 262 tr("Yes"),
263 tr("Cancel")); 263 tr("Cancel"));
264 264
265 if (yesno == 1) { 265 if (yesno == 1) {
266 return; 266 return;
267 } 267 }
268 } 268 }
269#if 0 269#if 0
270 odebug << "Sending Mail with " 270 odebug << "Sending Mail with "
271 << smtpAccounts.at( smtpAccountBox->currentItem() )->getAccountName() << oendl; 271 << smtpAccounts.at( smtpAccountBox->currentItem() )->getAccountName() << oendl;
272#endif 272#endif
273 Opie::Core::OSmartPointer<Mail> mail=new Mail; 273 Opie::Core::OSmartPointer<Mail> mail=new Mail;
274 274
275 SMTPaccount *smtp = smtpAccounts.at( smtpAccountBox->currentItem() ); 275 SMTPaccount *smtp = smtpAccounts.at( smtpAccountBox->currentItem() );
276 mail->setMail(fromBox->currentText()); 276 mail->setMail(fromBox->currentText());
277 277
278 if ( !toLine->text().isEmpty() ) { 278 if ( !toLine->text().isEmpty() ) {
279 mail->setTo( toLine->text() ); 279 mail->setTo( toLine->text() );
280 } else { 280 } else {
281 QMessageBox::warning(0,tr("Sending mail"), 281 QMessageBox::warning(0,tr("Sending mail"),
282 tr("No Receiver spezified" ) ); 282 tr("No Receiver spezified" ) );
283 return; 283 return;
284 } 284 }
285 285
286 mail->setName(senderNameEdit->text()); 286 mail->setName(senderNameEdit->text());
287 mail->setCC( ccLine->text() ); 287 mail->setCC( ccLine->text() );
288 mail->setBCC( bccLine->text() ); 288 mail->setBCC( bccLine->text() );
289 mail->setReply( replyLine->text() ); 289 mail->setReply( replyLine->text() );
290 mail->setSubject( subjectLine->text() ); 290 mail->setSubject( subjectLine->text() );
291 if (!m_replyid.isEmpty()) { 291 if (!m_replyid.isEmpty()) {
292 QStringList ids; 292 QStringList ids;
293 ids.append(m_replyid); 293 ids.append(m_replyid);
294 mail->setInreply(ids); 294 mail->setInreply(ids);
295 } 295 }
296 QString txt = message->text(); 296 QString txt = message->text();
297 if ( !sigMultiLine->text().isEmpty() ) { 297 if ( !sigMultiLine->text().isEmpty() ) {
298 txt.append( "\n--\n" ); 298 txt.append( "\n--\n" );
299 txt.append( sigMultiLine->text() ); 299 txt.append( sigMultiLine->text() );
300 } 300 }
301 mail->setMessage( txt ); 301 mail->setMessage( txt );
302 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 302 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
303 while ( it != 0 ) { 303 while ( it != 0 ) {
304 mail->addAttachment( it->getAttachment() ); 304 mail->addAttachment( it->getAttachment() );
305 it = (AttachViewItem *) it->nextSibling(); 305 it = (AttachViewItem *) it->nextSibling();
306 } 306 }
307 307
308 SMTPwrapper wrapper( smtp ); 308 SMTPwrapper wrapper( smtp );
309 if ( wrapper.sendMail( mail,checkBoxLater->isChecked() ) ) 309 if ( wrapper.sendMail( mail,checkBoxLater->isChecked() ) )
310 setStatus( tr ("Mail sent")); 310 setStatus( tr ("Mail sent"));
311 else { 311 else {
312 setStatus( tr ("Error: Something went wrong. Nothing sent")); 312 setStatus( tr ("Error: Something went wrong. Nothing sent"));
313 return; 313 return;
314 } 314 }
315 315
316 316
317 QDialog::accept(); 317 QDialog::accept();
318} 318}
319 319
320void ComposeMail::reject() 320void ComposeMail::reject()
321{ 321{
322 //qDebug("ComposeMail::reject() "); 322 //qDebug("ComposeMail::reject() ");
323 int yesno = QMessageBox::warning(0,tr("Stop editing message"), 323 int yesno = QMessageBox::warning(0,tr("Store message?"),
324 tr("Store message into drafts?"), 324 tr("Store message into drafts?\n"),
325 tr("Yes"), 325 tr("Yes"),
326 tr("No")); 326 tr("No"));
327 327
328 //qDebug("button %d ", yesno); 328 //qDebug("button %d ", yesno);
329 if (yesno == 0) { 329 if (yesno == 0) {
330 saveAsDraft(); 330 saveAsDraft();
331 } 331 }
332 if (yesno == 2) { 332 if (yesno == 2) {
333 qDebug("return "); 333 qDebug("return ");
334 return; 334 return;
335 } 335 }
336 QDialog::reject(); 336 QDialog::reject();
337} 337}
338 338
339ComposeMail::~ComposeMail() 339ComposeMail::~ComposeMail()
340{ 340{
341} 341}
342 342
343void ComposeMail::reEditMail(const RecMailP&current) 343void ComposeMail::reEditMail(const RecMailP&current)
344{ 344{
345 RecMailP data = current; 345 RecMailP data = current;
346 message->setText(data->Wrapper()->fetchBody(current)->Bodytext()); 346 message->setText(data->Wrapper()->fetchBody(current)->Bodytext());
347 subjectLine->setText( data->getSubject()); 347 subjectLine->setText( data->getSubject());
348 toLine->setText(data->To().join(",")); 348 toLine->setText(data->To().join(","));
349 ccLine->setText(data->CC().join(",")); 349 ccLine->setText(data->CC().join(","));
350 bccLine->setText(data->Bcc().join(",")); 350 bccLine->setText(data->Bcc().join(","));
351 replyLine->setText(data->Replyto()); 351 replyLine->setText(data->Replyto());
352} 352}
353 353
354AttachViewItem::AttachViewItem( QListView *parent, Attachment *att ) 354AttachViewItem::AttachViewItem( QListView *parent, Attachment *att )
355 : QListViewItem( parent ) 355 : QListViewItem( parent )
356{ 356{
357 attachment = att; 357 attachment = att;
358 if ( !attachment->getPixmap().isNull() ) 358 if ( !attachment->getPixmap().isNull() )
359 setPixmap( 0,attachment->getPixmap() ); 359 setPixmap( 0,attachment->getPixmap() );
360 setText( 0, att->getName().isEmpty() ? att->getFileName() : att->getName() ); 360 setText( 0, att->getName().isEmpty() ? att->getFileName() : att->getName() );
361 setText( 1, QString::number( att->getSize() ) ); 361 setText( 1, QString::number( att->getSize() ) );
362} 362}
363 363
diff --git a/kmicromail/mailistviewitem.cpp b/kmicromail/mailistviewitem.cpp
index b9b4cd9..1ca0ada 100644
--- a/kmicromail/mailistviewitem.cpp
+++ b/kmicromail/mailistviewitem.cpp
@@ -1,115 +1,142 @@
1#include "mailistviewitem.h" 1#include "mailistviewitem.h"
2#include <libmailwrapper/abstractmail.h> 2#include <libmailwrapper/abstractmail.h>
3#include <qtextstream.h> 3#include <qtextstream.h>
4#include <kiconloader.h> 4#include <kiconloader.h>
5//#include <qpe/resource.h> 5//#include <qpe/resource.h>
6 6
7MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item ) 7MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item )
8 :QListViewItem(parent,item),mail_data() 8 :QListViewItem(parent,item),mail_data()
9{ 9{
10} 10}
11 11
12void MailListViewItem::showEntry() 12void MailListViewItem::showEntry()
13{ 13{
14 if ( mail_data->getFlags().testBit( FLAG_ANSWERED ) == true) { 14 if ( mail_data->getFlags().testBit( FLAG_ANSWERED ) == true) {
15 setPixmap( 0, SmallIcon ( "kmmsgreplied") ); 15 setPixmap( 0, SmallIcon ( "kmmsgreplied") );
16 } else if ( mail_data->getFlags().testBit( FLAG_SEEN ) == true ) { 16 } else if ( mail_data->getFlags().testBit( FLAG_SEEN ) == true ) {
17 /* I think it looks nicer if there are not such a log of icons but only on mails 17 /* I think it looks nicer if there are not such a log of icons but only on mails
18 replied or new - Alwin*/ 18 replied or new - Alwin*/
19 //setPixmap( 0,SmallIcon ("kmmsgunseen") ); 19 //setPixmap( 0,SmallIcon ("kmmsgunseen") );
20 } else { 20 } else {
21 setPixmap( 0,SmallIcon ( "kmmsgnew") ); 21 setPixmap( 0,SmallIcon ( "kmmsgnew") );
22 } 22 }
23 double s = mail_data->Msgsize(); 23 double s = mail_data->Msgsize();
24 int w; 24 int w = 0;
25 w=0; 25 s/=1024;
26 26 if (s>999.0) {
27 while (s>1024) { 27 s/=1024.0;
28 s/=1024;
29 ++w; 28 ++w;
30 if (w>=2) break;
31 } 29 }
32 30 QString fsort;
33 QString q=""; 31 fsort.sprintf( "%.2f", s );
34 QString fsize=""; 32 QString fsize = QString::number( s, 'f', 2 );
35 switch(w) { 33 // 1.23
36 case 1: 34 // 11.23
37 q="k"; 35 // 111.23
36 // 999.23 maxlen
37 switch(fsize.length() ) {
38 case 4:
39 fsort = "00" + fsize ;
38 break; 40 break;
39 case 2: 41 case 5:
40 q="M"; 42 fsort = "0" + fsize ;
41 break; 43 break;
42 default: 44 default:
43 break; 45 fsort = fsize ;
46 break;
47
44 } 48 }
45 49 if ( w == 0 ) {
46 { 50 setText(3, fsize + "kB" );
47 QTextOStream o(&fsize); 51 mKeyMap.insert(3, "k" + fsort);
48 if (w>0) o.precision(2); else o.precision(0); 52 //setText(3, "kB" + fsort ); // test only
49 o.setf(QTextStream::fixed); 53 } else {
50 o << s << " " << q << "Byte"; 54 //setText(3, fsize + "MB");
55 mKeyMap.insert(4, "M" +fsort );
51 } 56 }
52
53 setText(1,mail_data->getSubject()); 57 setText(1,mail_data->getSubject());
54 setText(2,mail_data->getFrom()); 58 setText(2,mail_data->getFrom());
55 setText(3,fsize); 59
56 QString date = mail_data->getDate(); 60 QString date = mail_data->getDate();
57 61
58 int kom = date.find( ",")+2; 62 int kom = date.find( ",")+2;
59 if ( kom == 1 ) 63 if ( kom == 1 )
60 kom = 0; 64 kom = 0;
61 if ( date.mid(kom,1) == " ") 65 if ( date.mid(kom,1) == " ")
62 ++kom; 66 ++kom;
63 if ( date.mid(kom+1,1) == " " ) 67 if ( date.mid(kom+1,1) == " " )
64 date = "0" + date.mid( kom ); 68 date = "0" + date.mid( kom );
65 else if ( kom ) 69 else if ( kom )
66 date = date.mid( kom ); 70 date = date.mid( kom );
67 if ( kom || date.mid(2,1 ) == " ") { 71 if ( kom || date.mid(2,1 ) == " ") {
68 QString mon = date.mid(3,3); 72 QString mon = date.mid(3,3);
69 QString so = 00; 73 QString so = 00;
70 if ( mon == "Jan" ) 74 if ( mon == "Jan" )
71 so = "01"; 75 so = "01";
72 else if ( mon == "Feb" ) 76 else if ( mon == "Feb" )
73 so = "02"; 77 so = "02";
74 else if ( mon == "Mar" ) 78 else if ( mon == "Mar" )
75 so = "03"; 79 so = "03";
76 else if ( mon == "Apr" ) 80 else if ( mon == "Apr" )
77 so = "04"; 81 so = "04";
78 else if ( mon == "May" ) 82 else if ( mon == "May" )
79 so = "05"; 83 so = "05";
80 else if ( mon == "Jun" ) 84 else if ( mon == "Jun" )
81 so = "06"; 85 so = "06";
82 else if ( mon == "Jul" ) 86 else if ( mon == "Jul" )
83 so = "07"; 87 so = "07";
84 else if ( mon == "Aug" ) 88 else if ( mon == "Aug" )
85 so = "08"; 89 so = "08";
86 else if ( mon == "Sep" ) 90 else if ( mon == "Sep" )
87 so = "09"; 91 so = "09";
88 else if ( mon == "Oct" ) 92 else if ( mon == "Oct" )
89 so = "10"; 93 so = "10";
90 else if ( mon == "Nov" ) 94 else if ( mon == "Nov" )
91 so = "11"; 95 so = "11";
92 else if ( mon == "Dec" ) 96 else if ( mon == "Dec" )
93 so = "12"; 97 so = "12";
94 date = date.mid(7,4)+"-"+so+"-"+date.left(2)+" "+date.mid(12,14); 98 date = date.mid(7,4)+so+date.left(2)+date.mid(12,14);
95 } 99 }
96 // if ( date.left(1) != "1" || date.left(1) != "2" ) 100 // if ( date.left(1) != "1" || date.left(1) != "2" )
97 // date = date.mid(5); 101 // date = date.mid(5);
98 setText(4,date); 102 mKeyMap.insert(4,date);
103 setText(4,mail_data->getDate());
99} 104}
100 105
101void MailListViewItem::storeData(const RecMailP&data) 106void MailListViewItem::storeData(const RecMailP&data)
102{ 107{
103 mail_data = data; 108 mail_data = data;
104} 109}
110void MailListViewItem::setSortKey(int column,const QString &key)
111{
112 mKeyMap.insert(column,key);
113}
114QString MailListViewItem::key(int column, bool) const
115{
116 // to make is fast, we use here special cases
117 if ( column == 3 || column == 4 ) {
118 return *mKeyMap.find(column);
119 }
120 if ( column == 1 ) {
121 if ( text(1).left(4).lower() == "re: " )
122 return text(1).mid(4);
123
124 }
125 return text(column);
126 /*
127 QMap<int,QString>::ConstIterator it = mKeyMap.find(column);
128 if (it == mKeyMap.end()) return text(column);
129 else return *it;
130 */
131}
105 132
106const RecMailP& MailListViewItem::data()const 133const RecMailP& MailListViewItem::data()const
107{ 134{
108 return mail_data; 135 return mail_data;
109} 136}
110 137
111MAILLIB::ATYPE MailListViewItem::wrapperType() 138MAILLIB::ATYPE MailListViewItem::wrapperType()
112{ 139{
113 if (!mail_data->Wrapper()) return MAILLIB::A_UNDEFINED; 140 if (!mail_data->Wrapper()) return MAILLIB::A_UNDEFINED;
114 return mail_data->Wrapper()->getType(); 141 return mail_data->Wrapper()->getType();
115} 142}
diff --git a/kmicromail/mailistviewitem.h b/kmicromail/mailistviewitem.h
index d953d83..cf8040b 100644
--- a/kmicromail/mailistviewitem.h
+++ b/kmicromail/mailistviewitem.h
@@ -1,23 +1,26 @@
1#ifndef __MAILLISTVIEWITEM_H 1#ifndef __MAILLISTVIEWITEM_H
2#define __MAILLISTVIEWITEM_H 2#define __MAILLISTVIEWITEM_H
3 3
4#include <qlistview.h> 4#include <qlistview.h>
5#include <libmailwrapper/mailtypes.h> 5#include <libmailwrapper/mailtypes.h>
6#include <libmailwrapper/maildefines.h> 6#include <libmailwrapper/maildefines.h>
7 7
8class MailListViewItem:public QListViewItem 8class MailListViewItem:public QListViewItem
9{ 9{
10public: 10public:
11 MailListViewItem(QListView * parent, MailListViewItem * after ); 11 MailListViewItem(QListView * parent, MailListViewItem * after );
12 virtual ~MailListViewItem(){} 12 virtual ~MailListViewItem(){}
13 13
14 void storeData(const RecMailP&data); 14 void storeData(const RecMailP&data);
15 const RecMailP&data()const; 15 const RecMailP&data()const;
16 void showEntry(); 16 void showEntry();
17 MAILLIB::ATYPE wrapperType(); 17 MAILLIB::ATYPE wrapperType();
18 18 QString key(int column, bool) const;
19 void setSortKey(int column,const QString &key);
19protected: 20protected:
20 RecMailP mail_data; 21 RecMailP mail_data;
22 private:
23 QMap<int,QString> mKeyMap;
21}; 24};
22 25
23#endif 26#endif
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index 78377ea..ddc7b3e 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,232 +1,232 @@
1#include <qlabel.h> 1#include <qlabel.h>
2#include <qvbox.h> 2#include <qvbox.h>
3#include <qheader.h> 3#include <qheader.h>
4#include <qtimer.h> 4#include <qtimer.h>
5#include <qlayout.h> 5#include <qlayout.h>
6#include <kdialog.h> 6#include <kdialog.h>
7#include <kiconloader.h> 7#include <kiconloader.h>
8 8
9#ifndef DESKTOP_VERSION 9#ifndef DESKTOP_VERSION
10#include <qpe/qpeapplication.h> 10#include <qpe/qpeapplication.h>
11#endif 11#endif
12#include "defines.h" 12#include "defines.h"
13#include "mainwindow.h" 13#include "mainwindow.h"
14#include <KDGanttMinimizeSplitter.h> 14#include <KDGanttMinimizeSplitter.h>
15 15
16 16
17#include <kabc/stdaddressbook.h> 17#include <kabc/stdaddressbook.h>
18 18
19MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 19MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
20 : QMainWindow( parent, name, flags ) 20 : QMainWindow( parent, name, flags )
21{ 21{
22 setCaption( tr( "KMicroMail" ) ); 22 setCaption( tr( "KMicroMail" ) );
23 setToolBarsMovable( false ); 23 setToolBarsMovable( false );
24 KABC::StdAddressBook::self(); 24 KABC::StdAddressBook::self();
25 toolBar = new QToolBar( this ); 25 toolBar = new QToolBar( this );
26 menuBar = new QMenuBar( toolBar ); 26 menuBar = new QMenuBar( toolBar );
27 mailMenu = new QPopupMenu( menuBar ); 27 mailMenu = new QPopupMenu( menuBar );
28 menuBar->insertItem( tr( "Mail" ), mailMenu ); 28 menuBar->insertItem( tr( "Mail" ), mailMenu );
29 settingsMenu = new QPopupMenu( menuBar ); 29 settingsMenu = new QPopupMenu( menuBar );
30 menuBar->insertItem( tr( "Settings" ), settingsMenu ); 30 menuBar->insertItem( tr( "Settings" ), settingsMenu );
31 31
32 addToolBar( toolBar ); 32 addToolBar( toolBar );
33 toolBar->setHorizontalStretchable( true ); 33 toolBar->setHorizontalStretchable( true );
34 34
35 QLabel *spacer = new QLabel( toolBar ); 35 QLabel *spacer = new QLabel( toolBar );
36 spacer->setBackgroundMode( QWidget::PaletteButton ); 36 spacer->setBackgroundMode( QWidget::PaletteButton );
37 toolBar->setStretchableWidget( spacer ); 37 toolBar->setStretchableWidget( spacer );
38 38
39 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"), 39 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"),
40 0, 0, this ); 40 0, 0, this );
41 composeMail->addTo( toolBar ); 41 composeMail->addTo( toolBar );
42 composeMail->addTo( mailMenu ); 42 composeMail->addTo( mailMenu );
43 43
44 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") , 44 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") ,
45 0, 0, this ); 45 0, 0, this );
46 sendQueued->addTo( toolBar ); 46 sendQueued->addTo( toolBar );
47 sendQueued->addTo( mailMenu ); 47 sendQueued->addTo( mailMenu );
48 48
49 /* 49 /*
50 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, 50 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC,
51 0, 0, this ); 51 0, 0, this );
52 syncFolders->addTo( toolBar ); 52 syncFolders->addTo( toolBar );
53 syncFolders->addTo( mailMenu ); 53 syncFolders->addTo( mailMenu );
54 */ 54 */
55 55
56 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") , 56 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") ,
57 0, 0, this, 0, true ); 57 0, 0, this, 0, true );
58 showFolders->addTo( toolBar ); 58 showFolders->addTo( toolBar );
59 showFolders->addTo( mailMenu ); 59 showFolders->addTo( mailMenu );
60 showFolders->setOn( true ); 60 showFolders->setOn( true );
61 connect(showFolders, SIGNAL( toggled(bool) ), 61 connect(showFolders, SIGNAL( toggled(bool) ),
62 SLOT( slotShowFolders(bool) ) ); 62 SLOT( slotShowFolders(bool) ) );
63 63
64 /* 64 /*
65 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ), 65 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ),
66 0, 0, this ); 66 0, 0, this );
67 searchMails->addTo( toolBar ); 67 searchMails->addTo( toolBar );
68 searchMails->addTo( mailMenu ); 68 searchMails->addTo( mailMenu );
69 */ 69 */
70 70
71 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this); 71 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this);
72 deleteMails->addTo( toolBar ); 72 deleteMails->addTo( toolBar );
73 deleteMails->addTo( mailMenu ); 73 deleteMails->addTo( mailMenu );
74 connect( deleteMails, SIGNAL( activated() ), 74 connect( deleteMails, SIGNAL( activated() ),
75 SLOT( slotDeleteMail() ) ); 75 SLOT( slotDeleteMail() ) );
76 76
77 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") , 77 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") ,
78 0, 0, this ); 78 0, 0, this );
79 editSettings->addTo( settingsMenu ); 79 editSettings->addTo( settingsMenu );
80 connect( editSettings, SIGNAL( activated() ), 80 connect( editSettings, SIGNAL( activated() ),
81 SLOT( slotEditSettings() ) ); 81 SLOT( slotEditSettings() ) );
82 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") , 82 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") ,
83 0, 0, this ); 83 0, 0, this );
84 editAccounts->addTo( settingsMenu ); 84 editAccounts->addTo( settingsMenu );
85 85
86 //setCentralWidget( view ); 86 //setCentralWidget( view );
87 87
88 QVBox* wrapperBox = new QVBox( this ); 88 QVBox* wrapperBox = new QVBox( this );
89 setCentralWidget( wrapperBox ); 89 setCentralWidget( wrapperBox );
90 90
91 // QWidget *view = new QWidget( wrapperBox ); 91 // QWidget *view = new QWidget( wrapperBox );
92 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 92 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
93 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 93 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
94 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 94 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
95 95
96 folderView = new AccountView( split ); 96 folderView = new AccountView( split );
97 folderView->header()->hide(); 97 folderView->header()->hide();
98 folderView->setRootIsDecorated( true ); 98 folderView->setRootIsDecorated( false );
99 folderView->addColumn( tr( "Mailbox" ) ); 99 folderView->addColumn( tr( "Mailbox" ) );
100 100
101 //layout->addWidget( folderView ); 101 //layout->addWidget( folderView );
102 102
103 mailView = new QListView( split ); 103 mailView = new QListView( split );
104 mailView->addColumn( tr( "" ) ); 104 mailView->addColumn( tr( " " ) );
105 mailView->addColumn( tr( "Subject" ),QListView::Manual ); 105 mailView->addColumn( tr( "Subject" ),QListView::Manual );
106 mailView->addColumn( tr( "Sender" ),QListView::Manual ); 106 mailView->addColumn( tr( "Sender" ),QListView::Manual );
107 mailView->addColumn( tr( "Size" ),QListView::Manual); 107 mailView->addColumn( tr( "Size" ),QListView::Manual);
108 mailView->addColumn( tr( "Date" )); 108 mailView->addColumn( tr( "Date" ),QListView::Manual);
109 mailView->setAllColumnsShowFocus(true); 109 mailView->setAllColumnsShowFocus(true);
110 //mailView->setSorting(-1); 110 //mailView->setSorting(-1);
111 111 mailView->setRootIsDecorated( false );
112 statusWidget = new StatusWidget( wrapperBox ); 112 statusWidget = new StatusWidget( wrapperBox );
113 statusWidget->hide(); 113 statusWidget->hide();
114 114
115 //layout->addWidget( mailView ); 115 //layout->addWidget( mailView );
116 //layout->setStretchFactor( folderView, 1 ); 116 //layout->setStretchFactor( folderView, 1 );
117 //layout->setStretchFactor( mailView, 2 ); 117 //layout->setStretchFactor( mailView, 2 );
118 118
119 slotAdjustLayout(); 119 slotAdjustLayout();
120#ifndef DESKTOP_VERSION 120#ifndef DESKTOP_VERSION
121 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 121 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
122 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 122 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
123#endif 123#endif
124 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 124 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
125 SLOT( mailLeftClicked(QListViewItem*) ) ); 125 SLOT( mailLeftClicked(QListViewItem*) ) );
126 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 126 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
127 SLOT( mailLeftClicked(QListViewItem*) ) ); 127 SLOT( mailLeftClicked(QListViewItem*) ) );
128 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 128 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
129 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 129 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
130 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 130 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
131 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 131 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
132 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 132 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
133 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 133 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
134// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 134// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
135 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 135 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
136 mailView->setMultiSelection ( true ); 136 mailView->setMultiSelection ( true );
137 //mailView->setSelectionMode( QListView::Extended ); 137 //mailView->setSelectionMode( QListView::Extended );
138 QValueList<int> list; 138 QValueList<int> list;
139 int fw = 100; 139 int fw = 100;
140 if ( QApplication::desktop()->width() > 320 ) 140 if ( QApplication::desktop()->width() > 320 )
141 fw = 50; 141 fw = 50;
142 list.append( fw ); 142 list.append( fw );
143 list.append( 100 ); 143 list.append( 100 );
144 split->setSizes( list ); 144 split->setSizes( list );
145 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 145 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
146 mailView->setShowSortIndicator ( true ); 146 mailView->setShowSortIndicator ( true );
147} 147}
148 148
149MainWindow::~MainWindow() 149MainWindow::~MainWindow()
150{ 150{
151} 151}
152 152
153void MainWindow::appMessage(const QCString &, const QByteArray &) 153void MainWindow::appMessage(const QCString &, const QByteArray &)
154{ 154{
155 qDebug("appMessage implemented by subclass"); 155 qDebug("appMessage implemented by subclass");
156} 156}
157 157
158void MainWindow::slotAdjustLayout() { 158void MainWindow::slotAdjustLayout() {
159 159
160 /* 160 /*
161 QWidget *d = QApplication::desktop(); 161 QWidget *d = QApplication::desktop();
162 162
163 if ( d->width() < d->height() ) { 163 if ( d->width() < d->height() ) {
164 layout->setDirection( QBoxLayout::TopToBottom ); 164 layout->setDirection( QBoxLayout::TopToBottom );
165 } else { 165 } else {
166 layout->setDirection( QBoxLayout::LeftToRight ); 166 layout->setDirection( QBoxLayout::LeftToRight );
167 } 167 }
168 */ 168 */
169} 169}
170 170
171void MainWindow::slotAdjustColumns() 171void MainWindow::slotAdjustColumns()
172{ 172{
173 bool hidden = folderView->isHidden(); 173 bool hidden = folderView->isHidden();
174 if ( hidden ) folderView->show(); 174 if ( hidden ) folderView->show();
175 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 175 folderView->setColumnWidth( 0, folderView->visibleWidth() );
176 if ( hidden ) folderView->hide(); 176 if ( hidden ) folderView->hide();
177 177
178 mailView->setColumnWidth( 0, 10 ); 178 mailView->setColumnWidth( 0, 10 );
179 mailView->setColumnWidth( 1, mailView->visibleWidth() - 130 ); 179 mailView->setColumnWidth( 1, 80 );
180 mailView->setColumnWidth( 2, 80 ); 180 mailView->setColumnWidth( 2, 80 );
181 mailView->setColumnWidth( 3, 50 ); 181 mailView->setColumnWidth( 3, 50 );
182 mailView->setColumnWidth( 4, 50 ); 182 mailView->setColumnWidth( 4, 50 );
183} 183}
184 184
185void MainWindow::slotEditSettings() 185void MainWindow::slotEditSettings()
186{ 186{
187} 187}
188 188
189void MainWindow::slotShowFolders( bool ) 189void MainWindow::slotShowFolders( bool )
190{ 190{
191 qDebug("not implemented: "); 191 qDebug("not implemented: ");
192} 192}
193 193
194void MainWindow::refreshMailView(const QValueList<RecMailP>&) 194void MainWindow::refreshMailView(const QValueList<RecMailP>&)
195{ 195{
196 qDebug("not implemented: "); 196 qDebug("not implemented: ");
197} 197}
198 198
199void MainWindow::mailLeftClicked(QListViewItem * ) 199void MainWindow::mailLeftClicked(QListViewItem * )
200{ 200{
201 qDebug("not implemented: "); 201 qDebug("not implemented: ");
202} 202}
203 203
204void MainWindow::displayMail() 204void MainWindow::displayMail()
205{ 205{
206 qDebug("not implemented: "); 206 qDebug("not implemented: ");
207} 207}
208 208
209void MainWindow::slotDeleteMail() 209void MainWindow::slotDeleteMail()
210{ 210{
211 qDebug("not implemented: "); 211 qDebug("not implemented: ");
212} 212}
213 213
214void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) 214void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
215{ 215{
216 qDebug("not implemented: "); 216 qDebug("not implemented: ");
217} 217}
218 218
219void MainWindow::slotSendQueued() 219void MainWindow::slotSendQueued()
220{ 220{
221 qDebug("not implemented: "); 221 qDebug("not implemented: ");
222} 222}
223 223
224void MainWindow::slotEditAccounts() 224void MainWindow::slotEditAccounts()
225{ 225{
226 qDebug("not implemented: "); 226 qDebug("not implemented: ");
227} 227}
228 228
229void MainWindow::slotComposeMail() 229void MainWindow::slotComposeMail()
230{ 230{
231 qDebug("not implemented: "); 231 qDebug("not implemented: ");
232} 232}
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index b1992ec..bdbd93a 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -1,363 +1,363 @@
1 1
2#include "settingsdialog.h" 2#include "settingsdialog.h"
3#include "opiemail.h" 3#include "opiemail.h"
4#include "editaccounts.h" 4#include "editaccounts.h"
5#include "composemail.h" 5#include "composemail.h"
6#include "mailistviewitem.h" 6#include "mailistviewitem.h"
7#include "viewmail.h" 7#include "viewmail.h"
8#include "selectstore.h" 8#include "selectstore.h"
9#include "selectsmtp.h" 9#include "selectsmtp.h"
10 10
11#include <qmessagebox.h> 11#include <qmessagebox.h>
12 12
13#include <qpe/qpeapplication.h> 13#include <qpe/qpeapplication.h>
14#include <libmailwrapper/smtpwrapper.h> 14#include <libmailwrapper/smtpwrapper.h>
15#include <libmailwrapper/mailtypes.h> 15#include <libmailwrapper/mailtypes.h>
16#include <libmailwrapper/abstractmail.h> 16#include <libmailwrapper/abstractmail.h>
17/* OPIE */ 17/* OPIE */
18//#include <qpe/resource.h> 18//#include <qpe/resource.h>
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20 20
21/* QT */ 21/* QT */
22 22
23using namespace Opie::Core; 23using namespace Opie::Core;
24 24
25OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags ) 25OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags )
26 : MainWindow( parent, name, WStyle_ContextHelp ) 26 : MainWindow( parent, name, WStyle_ContextHelp )
27{ 27{
28 settings = new Settings(); 28 settings = new Settings();
29 29
30 folderView->populate( settings->getAccounts() ); 30 folderView->populate( settings->getAccounts() );
31 31
32} 32}
33 33
34OpieMail::~OpieMail() 34OpieMail::~OpieMail()
35{ 35{
36 if (settings) delete settings; 36 if (settings) delete settings;
37} 37}
38 38
39void OpieMail::appMessage(const QCString &msg, const QByteArray &data) 39void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
40{ 40{
41 41
42} 42}
43#include <stdlib.h> 43#include <stdlib.h>
44void OpieMail::message(const QCString &msg, const QByteArray &data) 44void OpieMail::message(const QCString &msg, const QByteArray &data)
45{ 45{
46 // copied from old mail2 46 // copied from old mail2
47 static int ii = 0; 47 static int ii = 0;
48 48
49 // block second call 49 // block second call
50 if ( ii < 2 ) { 50 if ( ii < 2 ) {
51 ++ii; 51 ++ii;
52 if ( ii > 1 ) { 52 if ( ii > 1 ) {
53 qDebug("qcop call blocked "); 53 qDebug("qcop call blocked ");
54 return; 54 return;
55 } 55 }
56 } 56 }
57 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this); 57 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this);
58 if (msg == "writeMail(QString,QString)") 58 if (msg == "writeMail(QString,QString)")
59 { 59 {
60 QDataStream stream(data,IO_ReadOnly); 60 QDataStream stream(data,IO_ReadOnly);
61 QString name, email; 61 QString name, email;
62 stream >> name >> email; 62 stream >> name >> email;
63 // removing the whitespaces at beginning and end is needed! 63 // removing the whitespaces at beginning and end is needed!
64 slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace()); 64 slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace());
65 } 65 }
66 else if (msg == "newMail()") 66 else if (msg == "newMail()")
67 { 67 {
68 slotComposeMail(); 68 slotComposeMail();
69 } 69 }
70 else if (msg == "newMail(QString)") 70 else if (msg == "newMail(QString)")
71 { 71 {
72 QDataStream stream(data,IO_ReadOnly); 72 QDataStream stream(data,IO_ReadOnly);
73 QString nameemail; 73 QString nameemail;
74 stream >> nameemail; 74 stream >> nameemail;
75 // the format is 75 // the format is
76 // NAME <EMAIL>:SUBJECT 76 // NAME <EMAIL>:SUBJECT
77 //qDebug("message %s ", nameemail.latin1()); 77 //qDebug("message %s ", nameemail.latin1());
78 78
79 slotwriteMail2( nameemail ); 79 slotwriteMail2( nameemail );
80 } 80 }
81} 81}
82void OpieMail::slotwriteMail2(const QString& namemail ) 82void OpieMail::slotwriteMail2(const QString& namemail )
83{ 83{
84 // qDebug("OpieMail::slotwriteMail2 "); 84 // qDebug("OpieMail::slotwriteMail2 ");
85 qApp->processEvents(); 85 qApp->processEvents();
86 ComposeMail compose( settings, this, 0, true ); 86 ComposeMail compose( settings, this, 0, true );
87 if ( !namemail.isEmpty() ) { 87 if ( !namemail.isEmpty() ) {
88 QString to = namemail; 88 QString to = namemail;
89 if ( namemail.find( " <") > 1 ) { 89 if ( namemail.find( " <") > 1 ) {
90 to = "\"" +to.replace( QRegExp( " <"), "\" <") ; 90 to = "\"" +to.replace( QRegExp( " <"), "\" <") ;
91 } else 91 } else
92 if ( namemail.find( "<") > 1 ) { 92 if ( namemail.find( "<") > 1 ) {
93 to = "\"" +to.replace( QRegExp( "<"), "\" <") ; 93 to = "\"" +to.replace( QRegExp( "<"), "\" <") ;
94 } 94 }
95 int sub = to.find( ">:"); 95 int sub = to.find( ">:");
96 if ( sub > 0 ) { 96 if ( sub > 0 ) {
97 compose.setTo( to.left(sub+1) ); 97 compose.setTo( to.left(sub+1) );
98 compose.setSubject( to.mid(sub+2) ); 98 compose.setSubject( to.mid(sub+2) );
99 } else 99 } else
100 compose.setTo( to ); 100 compose.setTo( to );
101 } 101 }
102 compose.slotAdjustColumns(); 102 compose.slotAdjustColumns();
103 compose.showMaximized(); 103 compose.showMaximized();
104 compose.exec(); 104 compose.exec();
105 //qDebug("retttich "); 105 //qDebug("retttich ");
106} 106}
107void OpieMail::slotwriteMail(const QString&name,const QString&email) 107void OpieMail::slotwriteMail(const QString&name,const QString&email)
108{ 108{
109 // qDebug("OpieMail::slotwriteMail "); 109 // qDebug("OpieMail::slotwriteMail ");
110 ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp ); 110 ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp );
111 if (!email.isEmpty()) 111 if (!email.isEmpty())
112 { 112 {
113 if (!name.isEmpty()) 113 if (!name.isEmpty())
114 { 114 {
115 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">"); 115 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">");
116 } 116 }
117 else 117 else
118 { 118 {
119 compose.setTo(email); 119 compose.setTo(email);
120 } 120 }
121 } 121 }
122 compose.slotAdjustColumns(); 122 compose.slotAdjustColumns();
123 compose.showMaximized(); 123 compose.showMaximized();
124 compose.exec(); 124 compose.exec();
125} 125}
126 126
127void OpieMail::slotComposeMail() 127void OpieMail::slotComposeMail()
128{ 128{
129 slotwriteMail2( QString () ); 129 slotwriteMail2( QString () );
130 //slotwriteMail(0l,0l); 130 //slotwriteMail(0l,0l);
131} 131}
132 132
133void OpieMail::slotSendQueued() 133void OpieMail::slotSendQueued()
134{ 134{
135 SMTPaccount *smtp = 0; 135 SMTPaccount *smtp = 0;
136 136
137 QList<Account> list = settings->getAccounts(); 137 QList<Account> list = settings->getAccounts();
138 QList<SMTPaccount> smtpList; 138 QList<SMTPaccount> smtpList;
139 smtpList.setAutoDelete(false); 139 smtpList.setAutoDelete(false);
140 Account *it; 140 Account *it;
141 for ( it = list.first(); it; it = list.next() ) 141 for ( it = list.first(); it; it = list.next() )
142 { 142 {
143 if ( it->getType() == MAILLIB::A_SMTP ) 143 if ( it->getType() == MAILLIB::A_SMTP )
144 { 144 {
145 smtp = static_cast<SMTPaccount *>(it); 145 smtp = static_cast<SMTPaccount *>(it);
146 smtpList.append(smtp); 146 smtpList.append(smtp);
147 } 147 }
148 } 148 }
149 if (smtpList.count()==0) 149 if (smtpList.count()==0)
150 { 150 {
151 QMessageBox::information(0,tr("Info"),tr("Define a smtp account first")); 151 QMessageBox::information(0,tr("Info"),tr("Define a smtp account first!\n"));
152 return; 152 return;
153 } 153 }
154 if (smtpList.count()==1) 154 if (smtpList.count()==1)
155 { 155 {
156 smtp = smtpList.at(0); 156 smtp = smtpList.at(0);
157 } 157 }
158 else 158 else
159 { 159 {
160 smtp = 0; 160 smtp = 0;
161 selectsmtp selsmtp; 161 selectsmtp selsmtp;
162 selsmtp.setSelectionlist(&smtpList); 162 selsmtp.setSelectionlist(&smtpList);
163 selsmtp.showMaximized(); 163 selsmtp.showMaximized();
164 if ( selsmtp.exec() == QDialog::Accepted ) 164 if ( selsmtp.exec() == QDialog::Accepted )
165 { 165 {
166 smtp = selsmtp.selected_smtp(); 166 smtp = selsmtp.selected_smtp();
167 } 167 }
168 } 168 }
169 if (smtp) 169 if (smtp)
170 { 170 {
171 SMTPwrapper * wrap = new SMTPwrapper(smtp); 171 SMTPwrapper * wrap = new SMTPwrapper(smtp);
172 if ( wrap->flushOutbox() ) 172 if ( wrap->flushOutbox() )
173 { 173 {
174 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed")); 174 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed"));
175 } 175 }
176 delete wrap; 176 delete wrap;
177 } 177 }
178} 178}
179 179
180void OpieMail::slotSearchMails() 180void OpieMail::slotSearchMails()
181{ 181{
182 qDebug("OpieMail::slotSearchMails():not implemented "); 182 qDebug("OpieMail::slotSearchMails():not implemented ");
183} 183}
184 184
185void OpieMail::slotEditSettings() 185void OpieMail::slotEditSettings()
186{ 186{
187 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp ); 187 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp );
188 settingsDialog.showMaximized(); 188 settingsDialog.showMaximized();
189 settingsDialog.exec(); 189 settingsDialog.exec();
190} 190}
191 191
192void OpieMail::slotEditAccounts() 192void OpieMail::slotEditAccounts()
193{ 193{
194 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp ); 194 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp );
195 eaDialog.slotAdjustColumns(); 195 eaDialog.slotAdjustColumns();
196 eaDialog.showMaximized(); 196 eaDialog.showMaximized();
197 eaDialog.exec(); 197 eaDialog.exec();
198 if ( settings ) delete settings; 198 if ( settings ) delete settings;
199 settings = new Settings(); 199 settings = new Settings();
200 200
201 folderView->populate( settings->getAccounts() ); 201 folderView->populate( settings->getAccounts() );
202} 202}
203 203
204void OpieMail::displayMail() 204void OpieMail::displayMail()
205{ 205{
206 QListViewItem*item = mailView->currentItem(); 206 QListViewItem*item = mailView->currentItem();
207 if (!item) return; 207 if (!item) return;
208 RecMailP mail = ((MailListViewItem*)item)->data(); 208 RecMailP mail = ((MailListViewItem*)item)->data();
209 RecBodyP body = folderView->fetchBody(mail); 209 RecBodyP body = folderView->fetchBody(mail);
210 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp ); 210 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp );
211 readMail.setBody( body ); 211 readMail.setBody( body );
212 readMail.setMail( mail ); 212 readMail.setMail( mail );
213 readMail.showMaximized(); 213 readMail.showMaximized();
214 readMail.exec(); 214 readMail.exec();
215 215
216 if ( readMail.deleted ) 216 if ( readMail.deleted )
217 { 217 {
218 folderView->refreshCurrent(); 218 folderView->refreshCurrent();
219 } 219 }
220 else 220 else
221 { 221 {
222 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() ); 222 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
223 } 223 }
224} 224}
225 225
226void OpieMail::slotDeleteMail() 226void OpieMail::slotDeleteMail()
227{ 227{
228 if (!mailView->currentItem()) return; 228 if (!mailView->currentItem()) return;
229 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 229 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
230 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 230 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
231 { 231 {
232 mail->Wrapper()->deleteMail( mail ); 232 mail->Wrapper()->deleteMail( mail );
233 folderView->refreshCurrent(); 233 folderView->refreshCurrent();
234 } 234 }
235} 235}
236void OpieMail::slotDeleteAllMail() 236void OpieMail::slotDeleteAllMail()
237{ 237{
238 if (!mailView->currentItem()) return; 238 if (!mailView->currentItem()) return;
239 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 239 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
240 if ( QMessageBox::warning(this, tr("Delete All Mails"), tr("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 240 if ( QMessageBox::warning(this, tr("Delete All Mails"), tr("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
241 { 241 {
242 MailListViewItem* item = (MailListViewItem*)mailView->firstChild (); 242 MailListViewItem* item = (MailListViewItem*)mailView->firstChild ();
243 while ( item ) { 243 while ( item ) {
244 if ( item->isSelected() ) { 244 if ( item->isSelected() ) {
245 RecMailP mail = item->data(); 245 RecMailP mail = item->data();
246 mail->Wrapper()->deleteMail( mail ); 246 mail->Wrapper()->deleteMail( mail );
247 } 247 }
248 item = (MailListViewItem*)item->nextSibling(); 248 item = (MailListViewItem*)item->nextSibling();
249 } 249 }
250 folderView->refreshCurrent(); 250 folderView->refreshCurrent();
251 } 251 }
252} 252}
253void OpieMail::clearSelection() 253void OpieMail::clearSelection()
254{ 254{
255 mailView->clearSelection(); 255 mailView->clearSelection();
256 256
257} 257}
258 258
259void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int ) 259void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
260{ 260{
261 if (!mailView->currentItem()) return; 261 if (!mailView->currentItem()) return;
262 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType(); 262 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType();
263 /* just the RIGHT button - or hold on pda */ 263 /* just the RIGHT button - or hold on pda */
264 if (button!=2) {return;} 264 if (button!=2) {return;}
265 if (!item) return; 265 if (!item) return;
266 QPopupMenu *m = new QPopupMenu(0); 266 QPopupMenu *m = new QPopupMenu(0);
267 if (m) 267 if (m)
268 { 268 {
269 if (mailtype==MAILLIB::A_NNTP) { 269 if (mailtype==MAILLIB::A_NNTP) {
270 m->insertItem(tr("Read this posting"),this,SLOT(displayMail())); 270 m->insertItem(tr("Read this posting"),this,SLOT(displayMail()));
271// m->insertItem(tr("Copy this posting"),this,SLOT(slotMoveCopyMail())); 271// m->insertItem(tr("Copy this posting"),this,SLOT(slotMoveCopyMail()));
272 } else { 272 } else {
273 if (folderView->currentisDraft()) { 273 if (folderView->currentisDraft()) {
274 m->insertItem(tr("Edit this mail"),this,SLOT(reEditMail())); 274 m->insertItem(tr("Edit this mail"),this,SLOT(reEditMail()));
275 } 275 }
276 m->insertItem(tr("Read this mail"),this,SLOT(displayMail())); 276 m->insertItem(tr("Read this mail"),this,SLOT(displayMail()));
277 m->insertItem(tr("Copy/Move this mail"),this,SLOT(slotMoveCopyMail())); 277 m->insertItem(tr("Copy/Move this mail"),this,SLOT(slotMoveCopyMail()));
278 m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail())); 278 m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail()));
279 m->insertSeparator(); 279 m->insertSeparator();
280 m->insertItem(tr("Delete all selected mails"),this,SLOT(slotDeleteAllMail())); 280 m->insertItem(tr("Delete all selected mails"),this,SLOT(slotDeleteAllMail()));
281 m->insertItem(tr("Clear selection"),this,SLOT(clearSelection())); 281 m->insertItem(tr("Clear selection"),this,SLOT(clearSelection()));
282 } 282 }
283 m->setFocus(); 283 m->setFocus();
284 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); 284 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
285 delete m; 285 delete m;
286 } 286 }
287} 287}
288 288
289void OpieMail::slotShowFolders( bool show ) 289void OpieMail::slotShowFolders( bool show )
290{ 290{
291 if ( show && folderView->isHidden() ) 291 if ( show && folderView->isHidden() )
292 { 292 {
293 folderView->show(); 293 folderView->show();
294 } 294 }
295 else if ( !show && !folderView->isHidden() ) 295 else if ( !show && !folderView->isHidden() )
296 { 296 {
297 folderView->hide(); 297 folderView->hide();
298 } 298 }
299} 299}
300 300
301void OpieMail::refreshMailView(const QValueList<RecMailP>&list) 301void OpieMail::refreshMailView(const QValueList<RecMailP>&list)
302{ 302{
303 MailListViewItem*item = 0; 303 MailListViewItem*item = 0;
304 mailView->clear(); 304 mailView->clear();
305 305
306 QValueList<RecMailP>::ConstIterator it; 306 QValueList<RecMailP>::ConstIterator it;
307 for (it = list.begin(); it != list.end();++it) 307 for (it = list.begin(); it != list.end();++it)
308 { 308 {
309 item = new MailListViewItem(mailView,item); 309 item = new MailListViewItem(mailView,item);
310 item->storeData((*it)); 310 item->storeData((*it));
311 item->showEntry(); 311 item->showEntry();
312 } 312 }
313} 313}
314 314
315void OpieMail::mailLeftClicked( QListViewItem *item ) 315void OpieMail::mailLeftClicked( QListViewItem *item )
316{ 316{
317 mailView->clearSelection(); 317 mailView->clearSelection();
318 /* just LEFT button - or tap with stylus on pda */ 318 /* just LEFT button - or tap with stylus on pda */
319 //if (button!=1) return; 319 //if (button!=1) return;
320 if (!item) return; 320 if (!item) return;
321 if (folderView->currentisDraft()) { 321 if (folderView->currentisDraft()) {
322 reEditMail(); 322 reEditMail();
323 } else { 323 } else {
324 displayMail(); 324 displayMail();
325 } 325 }
326} 326}
327 327
328void OpieMail::slotMoveCopyMail() 328void OpieMail::slotMoveCopyMail()
329{ 329{
330 if (!mailView->currentItem()) return; 330 if (!mailView->currentItem()) return;
331 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 331 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
332 AbstractMail*targetMail = 0; 332 AbstractMail*targetMail = 0;
333 QString targetFolder = ""; 333 QString targetFolder = "";
334 Selectstore sels; 334 Selectstore sels;
335 folderView->setupFolderselect(&sels); 335 folderView->setupFolderselect(&sels);
336 if (!sels.exec()) return; 336 if (!sels.exec()) return;
337 targetMail = sels.currentMail(); 337 targetMail = sels.currentMail();
338 targetFolder = sels.currentFolder(); 338 targetFolder = sels.currentFolder();
339 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) || 339 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) ||
340 targetFolder.isEmpty()) 340 targetFolder.isEmpty())
341 { 341 {
342 return; 342 return;
343 } 343 }
344 if (sels.newFolder() && !targetMail->createMbox(targetFolder)) 344 if (sels.newFolder() && !targetMail->createMbox(targetFolder))
345 { 345 {
346 QMessageBox::critical(0,tr("Error creating new Folder"), 346 QMessageBox::critical(0,tr("Error creating new Folder"),
347 tr("<center>Error while creating<br>new folder - breaking.</center>")); 347 tr("<center>Error while creating<br>new folder - breaking.</center>"));
348 return; 348 return;
349 } 349 }
350 mail->Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails()); 350 mail->Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails());
351 folderView->refreshCurrent(); 351 folderView->refreshCurrent();
352} 352}
353 353
354void OpieMail::reEditMail() 354void OpieMail::reEditMail()
355{ 355{
356 if (!mailView->currentItem()) return; 356 if (!mailView->currentItem()) return;
357 357
358 ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp ); 358 ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp );
359 compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data()); 359 compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data());
360 compose.slotAdjustColumns(); 360 compose.slotAdjustColumns();
361 compose.showMaximized(); 361 compose.showMaximized();
362 compose.exec(); 362 compose.exec();
363} 363}