-rw-r--r-- | core/pim/addressbook/TODO | 8 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 30 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.h | 5 | ||||
-rw-r--r-- | core/pim/addressbook/contacteditor.cpp | 2 | ||||
-rw-r--r-- | core/pim/addressbook/version.h | 2 |
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 @@ | |||
1 | Stuff todo until OPIE 1.0 : | 1 | Stuff todo until OPIE 1.0 : |
2 | =========================== | 2 | =========================== |
3 | 3 | ||
4 | Feature requests: | 4 | Feature 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 | ||
17 | Known Bugs: | 17 | Known Bugs: |
18 | ----------- | 18 | ----------- |
19 | 19 | ||
20 | Bugs but not in addressbook: | ||
21 | ----------------------------- | ||
22 | - VCARD: If umlaut (äöüß) in address, the parser gets confused.. | ||
23 | |||
24 | |||
25 | Urgent: | 20 | Urgent: |
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 | ||
31 | Important: | 26 | Important: |
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 | ||
36 | Less important: | 31 | Less 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 | ||
46 | ContactEditor: | 41 | ContactEditor: |
47 | - Redesign of Contacteditor | 42 | - Redesign of Contacteditor |
48 | 43 | ||
49 | Should be Fixed (not absolute sure, need further validation): | 44 | Should be Fixed (not absolute sure, need further validation): |
50 | ------------------------------------------------------------- | 45 | ------------------------------------------------------------- |
51 | 46 | ||
52 | 47 | ||
53 | Fixed/Ready: | 48 | Fixed/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 | ||
327 | void AddressbookWindow::importvCard() { | 333 | void 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 | } |
340 | void 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 | ||
335 | void AddressbookWindow::setDocument( const QString &filename ) | 365 | void 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 | ||
34 | class ContactEditor; | 34 | class ContactEditor; |
35 | class AbLabel; | 35 | class AbLabel; |
36 | class AbTable; | 36 | class AbTable; |
37 | class QPEToolBar; | 37 | class QPEToolBar; |
38 | class QPopupMenu; | 38 | class QPopupMenu; |
39 | class QToolButton; | 39 | class QToolButton; |
40 | class QDialog; | 40 | class QDialog; |
41 | class Ir; | 41 | class Ir; |
42 | class QAction; | 42 | class QAction; |
43 | class LetterPicker; | 43 | class LetterPicker; |
44 | 44 | ||
45 | class AddressbookWindow: public QMainWindow | 45 | class AddressbookWindow: public QMainWindow |
46 | { | 46 | { |
47 | Q_OBJECT | 47 | Q_OBJECT |
48 | public: | 48 | public: |
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 | ||
54 | protected: | 54 | protected: |
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 | ||
62 | public slots: | 62 | public 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 | ||
71 | private slots: | 71 | private 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 | ||
101 | private: | 102 | private: |
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 | ||
1255 | void ContactEditor::setEntry( const OContact &entry ) { | 1255 | void 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 |