summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO8
-rw-r--r--core/pim/addressbook/addressbook.cpp30
-rw-r--r--core/pim/addressbook/addressbook.h5
-rw-r--r--core/pim/addressbook/contacteditor.cpp2
-rw-r--r--core/pim/addressbook/version.h2
5 files changed, 38 insertions, 9 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index da9b9c2..a3cffa7 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -1,56 +1,51 @@
1Stuff todo until OPIE 1.0 : 1Stuff todo until OPIE 1.0 :
2=========================== 2===========================
3 3
4Feature requests: 4Feature requests:
5----------------- 5-----------------
6- Dial by mobile phone by tapping the number.. 6- Dial by mobile phone by tapping the number..
7 (Maybe using gsmtool. And we may 7 (Maybe using gsmtool. And we may
8 add a library class for this) 8 add a library class for this)
9- dial with dtmfdial in case it's installed and there's no mobile 9- dial with dtmfdial in case it's installed and there's no mobile
10- 3rd column for 2. Contact 10- 3rd column for 2. Contact
11- Implementing additional Views (Phonebook, ...) 11- Implementing additional Views (Phonebook, ...)
12- Birthday & Anniversary Reminder 12- Birthday & Anniversary Reminder
13- Beaming of multiple contacts (current list/ by search or by category) 13- Beaming of multiple contacts (current list/ by search or by category)
14- Configure the letter-picker: lastname/fullname search 14- Configure the letter-picker: lastname/fullname search
15- User center of the joypad to switch back from card to listview ! 15- Optionally put scrollbars left.
16 16
17Known Bugs: 17Known Bugs:
18----------- 18-----------
19 19
20Bugs but not in addressbook:
21-----------------------------
22- VCARD: If umlaut (äöüß) in address, the parser gets confused..
23
24
25Urgent: 20Urgent:
26-------- 21--------
27- Category is on the wrong position after changing to personal and back to normal 22- Category is on the wrong position after changing to personal and back to normal
28 ( Temporarily workaround: Category is never deactivated.. :S ) 23 ( Temporarily workaround: Category is never deactivated.. :S )
29 24
30 25
31Important: 26Important:
32---------- 27----------
33 28
34- "What's this" should be added (Deleyed after Feature Freeze) 29- "What's this" should be added (Deleyed after Feature Freeze)
35 30
36Less important: 31Less important:
37--------------- 32---------------
38- Reload if contacts were changed externally 33- Reload if contacts were changed externally
39- The picker (alphabetical sort widget) should be 34- The picker (alphabetical sort widget) should be
40 placed verticaly or horizontally (configurable) 35 placed verticaly or horizontally (configurable)
41- Find a smart solution for activating/deactivating the "send email" event 36- Find a smart solution for activating/deactivating the "send email" event
42- If new contact is added (contacteditor closed): focus (table, card) to 37- If new contact is added (contacteditor closed): focus (table, card) to
43 this entry ! 38 this entry !
44- After search (Started with Return): KeyFocus should be on Tabelle 39- After search (Started with Return): KeyFocus should be on Tabelle
45 40
46ContactEditor: 41ContactEditor:
47- Redesign of Contacteditor 42- Redesign of Contacteditor
48 43
49Should be Fixed (not absolute sure, need further validation): 44Should be Fixed (not absolute sure, need further validation):
50------------------------------------------------------------- 45-------------------------------------------------------------
51 46
52 47
53Fixed/Ready: 48Fixed/Ready:
54------- 49-------
55- Syncing: abtable not reloaded after sync. 50- Syncing: abtable not reloaded after sync.
56- Find widget should be replaced by something like 51- Find widget should be replaced by something like
@@ -85,32 +80,33 @@ Fixed/Ready:
85- Personal Details: Anniversary zeigt Fantasie-Werte 80- Personal Details: Anniversary zeigt Fantasie-Werte
86- Unfiled shown just in Category "All" and "Unfiled". 81- Unfiled shown just in Category "All" and "Unfiled".
87- After finising search and after Edit: Clear Picker 82- After finising search and after Edit: Clear Picker
88- After Edit: Table position back to edited entry. 83- After Edit: Table position back to edited entry.
89- Optimize Table Update... 84- Optimize Table Update...
90- Change MyDialog to Config 85- Change MyDialog to Config
91- Store position and state of toolbar 86- Store position and state of toolbar
92- Searchwidget closed: Selected user is jumping 87- Searchwidget closed: Selected user is jumping
93- Wenn suchen beendet, dann dauert das Tabellenupdate (was überhaupt überflüssig ist) 88- Wenn suchen beendet, dann dauert das Tabellenupdate (was überhaupt überflüssig ist)
94 zu lange.. 89 zu lange..
95- VCARD: Import of Anniversary does not work correctly (currently disabled) 90- VCARD: Import of Anniversary does not work correctly (currently disabled)
96- Name order selected in "contacteditor" not used in list view. 91- Name order selected in "contacteditor" not used in list view.
97- OK-Key does not switch from Detailview (ablable) to Listview 92- OK-Key does not switch from Detailview (ablable) to Listview
98- Receiving of beams should open a dialog 93- Receiving of beams should open a dialog
99- Fix start of opie-mail 94- Fix start of opie-mail
100- Implement Button Pics 95- Implement Button Pics
101- Add a dialog to accept and optionally edit received contacts by IRDA. 96- Add a dialog to accept and optionally edit received contacts by IRDA.
102- Language not English (tested with german opie-translation): 97- Language not English (tested with german opie-translation):
103 1. Configure nicht übersetzt (alles leer). 98 1. Configure nicht übersetzt (alles leer).
104 2. Contacteditor nur teilweise übersetzt. 99 2. Contacteditor nur teilweise übersetzt.
105 3. Kategorie-Picker geht nicht. 100 3. Kategorie-Picker geht nicht.
106- Plugin for Today for Birthdays and Anniversaries 101- Plugin for Today for Birthdays and Anniversaries
107- Implement a picker/combo for the default email. 102- Implement a picker/combo for the default email.
108- Overview window cleanup needed.. 103- Overview window cleanup needed..
109- Store last settings of combo-boxes 104- Store last settings of combo-boxes
110- Personal and Business Web-page is not editable 105- Personal and Business Web-page is not editable
111- Default Email-button: A lot of problems: 106- Default Email-button: A lot of problems:
112 If on second tab: The combo chooser is on the top left of the screen ! :( 107 If on second tab: The combo chooser is on the top left of the screen ! :(
113- Default Email-Button: Sometimes not hiding the textfields completely 108- Default Email-Button: Sometimes not hiding the textfields completely
114- Fix handling of 3 Firstnames 109- Fix handling of 3 Firstnames
115- Cursor-UP/Down: Should additionally scroll cardview if it is too large 110- Cursor-UP/Down: Should additionally scroll cardview if it is too large
116 (behaviour should be selectable by configuration) 111 (behaviour should be selectable by configuration)
112- User center of the joypad to switch back from card to listview !
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index a5bf19b..89a3312 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -180,64 +180,70 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
180 connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); 180 connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) );
181 a->addTo( searchBar ); 181 a->addTo( searchBar );
182 182
183 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 183 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
184 connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) ); 184 connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) );
185 a->addTo( searchBar ); 185 a->addTo( searchBar );
186 186
187 a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ), 187 a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ),
188 QString::null, 0, this, 0 ); 188 QString::null, 0, this, 0 );
189 //a->setEnabled( FALSE ); we got support for it now :) zecke 189 //a->setEnabled( FALSE ); we got support for it now :) zecke
190 actionMail = a; 190 actionMail = a;
191 connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) ); 191 connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) );
192 a->addTo( edit ); 192 a->addTo( edit );
193 a->addTo( listTools ); 193 a->addTo( listTools );
194 194
195 if ( Ir::supported() ) { 195 if ( Ir::supported() ) {
196 a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null, 196 a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null,
197 0, this, 0 ); 197 0, this, 0 );
198 actionBeam = a; 198 actionBeam = a;
199 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); 199 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) );
200 a->addTo( edit ); 200 a->addTo( edit );
201 a->addTo( listTools ); 201 a->addTo( listTools );
202 } 202 }
203 203
204 edit->insertSeparator(); 204 edit->insertSeparator();
205 205
206 a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null, 206 a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null,
207 0, this, 0); 207 0, this, 0);
208 actionPersonal = a; 208 actionPersonal = a;
209 connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) ); 209 connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) );
210 a->addTo( edit ); 210 a->addTo( edit );
211 211
212 a = new QAction( tr("Export vCard"), Resource::loadPixmap( "addressbook/fileexport"), QString::null,
213 0, this, 0);
214 actionPersonal = a;
215 connect( a, SIGNAL( activated() ), this, SLOT( exportvCard() ) );
216 a->addTo( edit );
217
212 edit->insertSeparator(); 218 edit->insertSeparator();
213 219
214 a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ), 220 a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ),
215 QString::null, 0, this, 0 , TRUE ); 221 QString::null, 0, this, 0 , TRUE );
216 actionPersonal = a; 222 actionPersonal = a;
217 connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) ); 223 connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) );
218 a->addTo( edit ); 224 a->addTo( edit );
219 225
220 226
221#ifdef __DEBUG_RELEASE 227#ifdef __DEBUG_RELEASE
222 // Remove this function for public Release ! This is only 228 // Remove this function for public Release ! This is only
223 // for debug purposes .. 229 // for debug purposes ..
224 a = new QAction( tr( "Save all Data"), QString::null, 0, 0 ); 230 a = new QAction( tr( "Save all Data"), QString::null, 0, 0 );
225 connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) ); 231 connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) );
226 a->addTo( edit ); 232 a->addTo( edit );
227#endif 233#endif
228 a = new QAction( tr( "Config" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 234 a = new QAction( tr( "Config" ), Resource::loadPixmap( "SettingsIcon" ), QString::null,
229 0, this, 0 ); 235 0, this, 0 );
230 connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) ); 236 connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) );
231 a->addTo( edit ); 237 a->addTo( edit );
232 238
233 // Create Views 239 // Create Views
234 listContainer = new QWidget( this ); 240 listContainer = new QWidget( this );
235 QVBoxLayout *vb = new QVBoxLayout( listContainer ); 241 QVBoxLayout *vb = new QVBoxLayout( listContainer );
236 242
237 m_abView = new AbView( listContainer, m_config.orderList() ); 243 m_abView = new AbView( listContainer, m_config.orderList() );
238 vb->addWidget( m_abView ); 244 vb->addWidget( m_abView );
239 // abList->setHScrollBarMode( QScrollView::AlwaysOff ); 245 // abList->setHScrollBarMode( QScrollView::AlwaysOff );
240 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ), 246 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ),
241 this, SLOT( slotViewSwitched( int ) ) ); 247 this, SLOT( slotViewSwitched( int ) ) );
242 248
243 249
@@ -302,64 +308,88 @@ void AddressbookWindow::slotSetFont( int size )
302 308
303 switch (size) { 309 switch (size) {
304 case 0: 310 case 0:
305 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); 311 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) );
306 currentFont = new QFont (m_abView->font()); 312 currentFont = new QFont (m_abView->font());
307 // abList->resizeRows(currentFont->pixelSize() + 7); :SX 313 // abList->resizeRows(currentFont->pixelSize() + 7); :SX
308 // abList->resizeRows(); 314 // abList->resizeRows();
309 break; 315 break;
310 case 1: 316 case 1:
311 m_abView->setFont( *defaultFont ); 317 m_abView->setFont( *defaultFont );
312 currentFont = new QFont (m_abView->font()); 318 currentFont = new QFont (m_abView->font());
313 // // abList->resizeRows(currentFont->pixelSize() + 7); 319 // // abList->resizeRows(currentFont->pixelSize() + 7);
314 // abList->resizeRows(); 320 // abList->resizeRows();
315 break; 321 break;
316 case 2: 322 case 2:
317 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); 323 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) );
318 currentFont = new QFont (m_abView->font()); 324 currentFont = new QFont (m_abView->font());
319 // //abList->resizeRows(currentFont->pixelSize() + 7); 325 // //abList->resizeRows(currentFont->pixelSize() + 7);
320 // abList->resizeRows(); 326 // abList->resizeRows();
321 break; 327 break;
322 } 328 }
323} 329}
324 330
325 331
326 332
327void AddressbookWindow::importvCard() { 333void AddressbookWindow::importvCard() {
328 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); 334 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this );
329 if(!str.isEmpty() ){ 335 if(!str.isEmpty() ){
330 setDocument((const QString&) str ); 336 setDocument((const QString&) str );
331 } 337 }
332 338
333} 339}
340void AddressbookWindow::exportvCard()
341{
342 qWarning(" void AddressbookWindow::exportvCard()");
343 QString filename = OFileDialog::getSaveFileName( 1,"/home/"); //,"", "*", this );
344 if( !filename.isEmpty() && ( filename[filename.length()-1] != '/' ) ){
345 qWarning(" Save to file %s, (%d)", filename.latin1(), filename.length()-1 );
346 OContact curCont = m_abView->currentEntry();
347 if ( !curCont.isEmpty() ){
348 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
349 filename );
350 OContactAccess* access = new OContactAccess ( "addressbook_exp", QString::null , vcard_backend, true );
351 if ( access ){
352 access->add( curCont );
353 access->save();
354 }
355 delete access;
356 }else
357 QMessageBox::critical( 0, "Export VCard",
358 QString( tr( "You have to select a contact !") ) );
359
360 }else
361 QMessageBox::critical( 0, "Export VCard",
362 QString( tr( "You have to set a filename !") ) );
363}
334 364
335void AddressbookWindow::setDocument( const QString &filename ) 365void AddressbookWindow::setDocument( const QString &filename )
336{ 366{
337 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() ); 367 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() );
338 368
339 if ( filename.find(".vcf") != int(filename.length()) - 4 ){ 369 if ( filename.find(".vcf") != int(filename.length()) - 4 ){
340 370
341 371
342 372
343 switch( QMessageBox::information( this, tr ( "Right file type ?" ), 373 switch( QMessageBox::information( this, tr ( "Right file type ?" ),
344 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ), 374 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ),
345 tr( "&Yes" ), tr( "&No" ), QString::null, 375 tr( "&Yes" ), tr( "&No" ), QString::null,
346 0, // Enter == button 0 376 0, // Enter == button 0
347 2 ) ) { // Escape == button 2 377 2 ) ) { // Escape == button 2
348 case 0: 378 case 0:
349 qWarning("YES clicked"); 379 qWarning("YES clicked");
350 break; 380 break;
351 case 1: 381 case 1:
352 qWarning("NO clicked"); 382 qWarning("NO clicked");
353 return; 383 return;
354 break; 384 break;
355 } 385 }
356 } 386 }
357 387
358 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 388 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
359 filename ); 389 filename );
360 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 390 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
361 OContactAccess::List allList = access->allRecords(); 391 OContactAccess::List allList = access->allRecords();
362 qWarning( "Found number of contacts in File: %d", allList.count() ); 392 qWarning( "Found number of contacts in File: %d", allList.count() );
363 393
364 if ( !allList.count() ) { 394 if ( !allList.count() ) {
365 QMessageBox::information( this, "Import VCard", 395 QMessageBox::information( this, "Import VCard",
diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h
index 69fe2f8..f7a560a 100644
--- a/core/pim/addressbook/addressbook.h
+++ b/core/pim/addressbook/addressbook.h
@@ -1,104 +1,105 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef Addressbook_H 20#ifndef Addressbook_H
21#define Addressbook_H 21#define Addressbook_H
22 22
23// Remove this for OPIE releae 1.0 ! 23// Remove this for OPIE releae 1.0 !
24#define __DEBUG_RELEASE 24// #define __DEBUG_RELEASE
25 25
26#include <qmainwindow.h> 26#include <qmainwindow.h>
27#include <qvaluelist.h> 27#include <qvaluelist.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qlineedit.h> 29#include <qlineedit.h>
30#include "ofloatbar.h" 30#include "ofloatbar.h"
31#include "abview.h" 31#include "abview.h"
32#include "abconfig.h" 32#include "abconfig.h"
33 33
34class ContactEditor; 34class ContactEditor;
35class AbLabel; 35class AbLabel;
36class AbTable; 36class AbTable;
37class QPEToolBar; 37class QPEToolBar;
38class QPopupMenu; 38class QPopupMenu;
39class QToolButton; 39class QToolButton;
40class QDialog; 40class QDialog;
41class Ir; 41class Ir;
42class QAction; 42class QAction;
43class LetterPicker; 43class LetterPicker;
44 44
45class AddressbookWindow: public QMainWindow 45class AddressbookWindow: public QMainWindow
46{ 46{
47 Q_OBJECT 47 Q_OBJECT
48public: 48public:
49 enum EntryMode { NewEntry=0, EditEntry }; 49 enum EntryMode { NewEntry=0, EditEntry };
50 50
51 AddressbookWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); 51 AddressbookWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
52 ~AddressbookWindow(); 52 ~AddressbookWindow();
53 53
54protected: 54protected:
55 void resizeEvent( QResizeEvent * e ); 55 void resizeEvent( QResizeEvent * e );
56 56
57 void editPersonal(); 57 void editPersonal();
58 void editEntry( EntryMode ); 58 void editEntry( EntryMode );
59 void closeEvent( QCloseEvent *e ); 59 void closeEvent( QCloseEvent *e );
60 bool save(); 60 bool save();
61 61
62public slots: 62public slots:
63 void flush(); 63 void flush();
64 void reload(); 64 void reload();
65 void appMessage(const QCString &, const QByteArray &); 65 void appMessage(const QCString &, const QByteArray &);
66 void setDocument( const QString & ); 66 void setDocument( const QString & );
67#ifdef __DEBUG_RELEASE 67#ifdef __DEBUG_RELEASE
68 void slotSave(); 68 // void slotSave();
69#endif 69#endif
70 70
71private slots: 71private slots:
72 void importvCard(); 72 void importvCard();
73 void exportvCard();
73 void slotListNew(); 74 void slotListNew();
74 /* void slotListView(); */ 75 /* void slotListView(); */
75 void slotListDelete(); 76 void slotListDelete();
76 void slotViewBack(); 77 void slotViewBack();
77 void slotViewEdit(); 78 void slotViewEdit();
78 void slotPersonalView(); 79 void slotPersonalView();
79 void listIsEmpty( bool ); 80 void listIsEmpty( bool );
80 /* void slotSettings(); */ 81 /* void slotSettings(); */
81 void writeMail(); 82 void writeMail();
82 void slotBeam(); 83 void slotBeam();
83 void beamDone( Ir * ); 84 void beamDone( Ir * );
84 void slotSetCategory( int ); 85 void slotSetCategory( int );
85 void slotSetLetter( char ); 86 void slotSetLetter( char );
86 void slotUpdateToolbar(); 87 void slotUpdateToolbar();
87 void slotSetFont(int); 88 void slotSetFont(int);
88 89
89 void slotFindOpen(); 90 void slotFindOpen();
90 void slotFindClose(); 91 void slotFindClose();
91 void slotFind(); 92 void slotFind();
92 void slotNotFound(); 93 void slotNotFound();
93 void slotWrapAround(); 94 void slotWrapAround();
94 95
95 void slotViewSwitched( int ); 96 void slotViewSwitched( int );
96 void slotListView(); 97 void slotListView();
97 void slotCardView(); 98 void slotCardView();
98 99
99 void slotConfig(); 100 void slotConfig();
100 101
101private: 102private:
102 void populateCategories(); 103 void populateCategories();
103 104
104 QPopupMenu *catMenu; 105 QPopupMenu *catMenu;
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index df97b85..f33ee0a 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -1227,65 +1227,67 @@ void ContactEditor::cleanupFields() {
1227 1227
1228 QListIterator<QLineEdit> itLV( listValue ); 1228 QListIterator<QLineEdit> itLV( listValue );
1229 for ( ; itLV.current(); ++itLV ) { 1229 for ( ; itLV.current(); ++itLV ) {
1230 (*itLV)->setText( "" ); 1230 (*itLV)->setText( "" );
1231 } 1231 }
1232 1232
1233 txtFirstName->setText(""); 1233 txtFirstName->setText("");
1234 txtMiddleName->setText(""); 1234 txtMiddleName->setText("");
1235 txtLastName->setText(""); 1235 txtLastName->setText("");
1236 txtSuffix->setText(""); 1236 txtSuffix->setText("");
1237 txtNote->setText(""); 1237 txtNote->setText("");
1238 txtFullName->setText(""); 1238 txtFullName->setText("");
1239 txtJobTitle->setText(""); 1239 txtJobTitle->setText("");
1240 txtOrganization->setText(""); 1240 txtOrganization->setText("");
1241 txtChooserField1->setText(""); 1241 txtChooserField1->setText("");
1242 txtChooserField2->setText(""); 1242 txtChooserField2->setText("");
1243 txtChooserField3->setText(""); 1243 txtChooserField3->setText("");
1244 txtAddress->setText(""); 1244 txtAddress->setText("");
1245 txtCity->setText(""); 1245 txtCity->setText("");
1246 txtState->setText(""); 1246 txtState->setText("");
1247 txtZip->setText(""); 1247 txtZip->setText("");
1248 QLineEdit *txtTmp = cmbCountry->lineEdit(); 1248 QLineEdit *txtTmp = cmbCountry->lineEdit();
1249 txtTmp->setText(""); 1249 txtTmp->setText("");
1250 txtTmp = cmbFileAs->lineEdit(); 1250 txtTmp = cmbFileAs->lineEdit();
1251 txtTmp->setText(""); 1251 txtTmp->setText("");
1252 1252
1253} 1253}
1254 1254
1255void ContactEditor::setEntry( const OContact &entry ) { 1255void ContactEditor::setEntry( const OContact &entry ) {
1256 1256
1257 initializing = true; 1257 initializing = true;
1258 1258
1259 // Cleanup and activate the general Page ..
1259 cleanupFields(); 1260 cleanupFields();
1261 tabMain->setCurrentPage( 0 );
1260 1262
1261 ent = entry; 1263 ent = entry;
1262 1264
1263 emails = QStringList(ent.emailList()); 1265 emails = QStringList(ent.emailList());
1264 defaultEmail = ent.defaultEmail(); 1266 defaultEmail = ent.defaultEmail();
1265 if (defaultEmail.isEmpty()) defaultEmail = emails[0]; 1267 if (defaultEmail.isEmpty()) defaultEmail = emails[0];
1266 qDebug("default email=%s",defaultEmail.latin1()); 1268 qDebug("default email=%s",defaultEmail.latin1());
1267 1269
1268 txtFirstName->setText( ent.firstName() ); 1270 txtFirstName->setText( ent.firstName() );
1269 txtMiddleName->setText( ent.middleName() ); 1271 txtMiddleName->setText( ent.middleName() );
1270 txtLastName->setText( ent.lastName() ); 1272 txtLastName->setText( ent.lastName() );
1271 txtSuffix->setText( ent.suffix() ); 1273 txtSuffix->setText( ent.suffix() );
1272 1274
1273 // QString *tmpString = new QString; 1275 // QString *tmpString = new QString;
1274 // *tmpString = ent.firstName() + " " + ent.middleName() + 1276 // *tmpString = ent.firstName() + " " + ent.middleName() +
1275 // + " " + ent.lastName() + " " + ent.suffix(); 1277 // + " " + ent.lastName() + " " + ent.suffix();
1276 //txtFullName->setText( tmpString->simplifyWhiteSpace() ); 1278 //txtFullName->setText( tmpString->simplifyWhiteSpace() );
1277 1279
1278 if ( !ent.isEmpty() ){ 1280 if ( !ent.isEmpty() ){
1279 // Lastnames with multiple words need to be protected by a comma ! 1281 // Lastnames with multiple words need to be protected by a comma !
1280 if ( ent.lastName().contains( ' ', TRUE ) ) 1282 if ( ent.lastName().contains( ' ', TRUE ) )
1281 txtFullName->setText( ent.lastName() + ", " + ent.firstName() + " " + ent.middleName() ); 1283 txtFullName->setText( ent.lastName() + ", " + ent.firstName() + " " + ent.middleName() );
1282 else 1284 else
1283 txtFullName->setText( ent.firstName() + " " + ent.middleName() + " " + ent.lastName() ); 1285 txtFullName->setText( ent.firstName() + " " + ent.middleName() + " " + ent.lastName() );
1284 } 1286 }
1285 1287
1286 cmbFileAs->setEditText( ent.fileAs() ); 1288 cmbFileAs->setEditText( ent.fileAs() );
1287 1289
1288 //if (hasTitle) 1290 //if (hasTitle)
1289 txtJobTitle->setText( ent.jobTitle() ); 1291 txtJobTitle->setText( ent.jobTitle() );
1290 1292
1291 //if (hasCompany) 1293 //if (hasCompany)
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index d590a86..c0465b5 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -1,10 +1,10 @@
1#ifndef _VERSION_H_ 1#ifndef _VERSION_H_
2#define _VERSION_H_ 2#define _VERSION_H_
3 3
4#define MAINVERSION "0" 4#define MAINVERSION "0"
5#define SUBVERSION "9" 5#define SUBVERSION "9"
6#define PATCHVERSION "3" 6#define PATCHVERSION "4"
7 7
8#define APPNAME "OPIE_ADDRESSBOOK" 8#define APPNAME "OPIE_ADDRESSBOOK"
9 9
10#endif 10#endif