summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO16
-rw-r--r--core/pim/addressbook/abtable.cpp40
-rw-r--r--core/pim/addressbook/abview.cpp48
-rw-r--r--core/pim/addressbook/contacteditor.cpp75
-rw-r--r--core/pim/addressbook/contacteditor.h5
-rw-r--r--core/pim/addressbook/ocontactfields.cpp101
-rw-r--r--core/pim/addressbook/ocontactfields.h34
-rw-r--r--core/pim/addressbook/version.h4
8 files changed, 251 insertions, 72 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index 76247c1..c600d20 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -7,14 +7,15 @@ Feature requests:
(Maybe using gsmtool. And we may
add a library class for this)
-- dial with dtmfdial incase it's installed and there's no mobile
+- dial with dtmfdial in case it's installed and there's no mobile
- 3rd column for 2. Contact
- Implementing additional Views (Phonebook, ...)
- Birthday & Anniversary Reminder
-- Plugin for Today for Birthdays and Anniversaries
- Beaming of multiple contacts (current list/ by search or by category)
+- Configure the letter-picker: lastname/fullname search
Known Bugs:
-----------
-
+- Email-button: A lot of problems.. :(
+- Default Email-Button: Sometimes not hiding the textfields completely
Bugs but not in addressbook:
@@ -30,5 +31,4 @@ ContactEditor:
- Contact-Editor is temporarely reenabled. Wait for replacement.
- Redesign of Contacteditor
-- Store last settings of combo-boxes
- Category is on the wrong position after changing to personal and back to normal
( Temporarily workaround: Category is never deactivated.. :S )
@@ -41,5 +41,4 @@ Important:
- If new contact is added (contacteditor closed): focus (table, card) to
this entry !
-- Implement a picker/combo for the default email.
- After search (Started with Return): KeyFocus should be on Tabelle
@@ -49,5 +48,4 @@ Less important:
---------------
- Reload if contacts were changed externally
-- Overview window cleanup needed..
- The picker (alphabetical sort widget) should be
placed verticaly or horizontally (configurable)
@@ -58,5 +56,5 @@ Should be Fixed (not absolute sure, need further validation):
-Fixed:
+Fixed/Ready:
-------
- Syncing: abtable not reloaded after sync.
@@ -111,2 +109,6 @@ Fixed:
2. Contacteditor nur teilweise übersetzt.
3. Kategorie-Picker geht nicht.
+- Plugin for Today for Birthdays and Anniversaries
+- Implement a picker/combo for the default email.
+- Overview window cleanup needed..
+- Store last settings of combo-boxes
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index 00335ae..aec390d 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -127,5 +127,5 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name
countNested( 0 )
{
- qWarning("C'tor start");
+ // qWarning("C'tor start");
setSelectionMode( NoSelection );
@@ -136,5 +136,5 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name
contactList.clear();
- qWarning("C'tor end");
+ // qWarning("C'tor end");
}
@@ -158,5 +158,5 @@ void AbTable::init()
void AbTable::setContacts( const OContactAccess::List& viewList )
{
- qWarning("AbTable::setContacts()");
+ // qWarning("AbTable::setContacts()");
clear();
@@ -184,5 +184,5 @@ void AbTable::setContacts( const OContactAccess::List& viewList )
bool AbTable::selectContact( int UID )
{
- qWarning( "AbTable::selectContact( %d )", UID );
+ // qWarning( "AbTable::selectContact( %d )", UID );
int rows = numRows();
AbTableItem *abi;
@@ -214,5 +214,5 @@ bool AbTable::selectContact( int UID )
void AbTable::insertIntoTable( const OContact& cnt, int row )
{
- qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
+ // qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
QString strName,
strContact;
@@ -255,5 +255,5 @@ void AbTable::columnClicked( int col )
void AbTable::resort()
{
- qWarning( "void AbTable::resort()" );
+ // qWarning( "void AbTable::resort()" );
setPaintingEnabled( FALSE );
if ( sorting() ) {
@@ -269,5 +269,5 @@ void AbTable::resort()
OContact AbTable::currentEntry()
{
- qWarning( "OContact AbTable::currentEntry()" );
+ // qWarning( "OContact AbTable::currentEntry()" );
OContact cnt;
AbTableItem *abItem;
@@ -287,5 +287,5 @@ int AbTable::currentEntry_UID()
void AbTable::clear()
{
- qWarning( "void AbTable::clear()" );
+ // qWarning( "void AbTable::clear()" );
contactList.clear();
@@ -305,5 +305,5 @@ void AbTable::clear()
void AbTable::refresh()
{
- qWarning( "void AbTable::refresh()" );
+ // qWarning( "void AbTable::refresh()" );
int rows = numRows();
QString value;
@@ -327,5 +327,5 @@ void AbTable::keyPressEvent( QKeyEvent *e )
moveTo( key );
- qWarning("Received key ..");
+ // qWarning("Received key ..");
switch( e->key() ) {
case Qt::Key_Space:
@@ -412,5 +412,5 @@ void AbTable::resizeRows() {
void AbTable::realignTable()
{
- qWarning( "void AbTable::realignTable()" );
+ // qWarning( "void AbTable::realignTable()" );
setPaintingEnabled( FALSE );
@@ -462,5 +462,5 @@ void QTable::paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch )
void AbTable::fitColumns()
{
- qWarning( "void AbTable::fitColumns()" );
+ // qWarning( "void AbTable::fitColumns()" );
int contentsWidth = visibleWidth() / 2; // :SX Why too low
// Fix to better value
@@ -474,5 +474,5 @@ void AbTable::fitColumns()
}
- qWarning("Width: %d", contentsWidth);
+ // qWarning("Width: %d", contentsWidth);
setColumnWidth( 0, contentsWidth );
@@ -486,5 +486,5 @@ void AbTable::fitColumns()
void AbTable::show()
{
- qWarning( "void AbTable::show()" );
+ // qWarning( "void AbTable::show()" );
realignTable();
QTable::show();
@@ -508,9 +508,9 @@ void AbTable::setChoiceNames( const QStringList& list)
void AbTable::itemClicked(int,int col)
{
- qWarning( "AbTable::itemClicked(int, col:%d)", col);
+ // qWarning( "AbTable::itemClicked(int, col:%d)", col);
if ( col == 2 ) {
return;
} else {
- qWarning ("Emitting signalSwitch()");
+ // qWarning ("Emitting signalSwitch()");
emit signalSwitch();
}
@@ -549,5 +549,5 @@ QStringList AbTable::choiceSelection(int /*index*/) const
void AbTable::updateVisible()
{
- qWarning("void AbTable::updateVisible()");
+ // qWarning("void AbTable::updateVisible()");
int visible,
@@ -587,5 +587,5 @@ void AbTable::updateVisible()
void AbTable::setPaintingEnabled( bool e )
{
- qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
+ // qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
if ( e ) {
@@ -603,9 +603,9 @@ void AbTable::setPaintingEnabled( bool e )
setUpdatesEnabled( false );
}
- qWarning("OUT void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
+ // qWarning("OUT void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
}
void AbTable::viewportPaintEvent( QPaintEvent* e ) {
- qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting);
+ // qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting);
if ( enablePainting )
QTable::viewportPaintEvent( e );
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 93e57ca..7da0992 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -96,5 +96,5 @@ AbView::~AbView()
void AbView::setView( Views view )
{
- qWarning("AbView::setView( Views view )");
+ // qWarning("AbView::setView( Views view )");
m_curr_View = view;
load();
@@ -103,5 +103,5 @@ void AbView::setView( Views view )
void AbView::addEntry( const OContact &newContact )
{
- qWarning("abview:AddContact");
+ // qWarning("abview:AddContact");
m_contactdb->add ( newContact );
load();
@@ -110,5 +110,5 @@ void AbView::addEntry( const OContact &newContact )
void AbView::removeEntry( const int UID )
{
- qWarning("abview:RemoveContact");
+ // qWarning("abview:RemoveContact");
m_contactdb->remove( UID );
load();
@@ -117,5 +117,5 @@ void AbView::removeEntry( const int UID )
void AbView::replaceEntry( const OContact &contact )
{
- qWarning("abview:ReplaceContact");
+ // qWarning("abview:ReplaceContact");
m_contactdb->replace( contact );
load();
@@ -141,5 +141,5 @@ OContact AbView::currentEntry()
bool AbView::save()
{
- qWarning("abView:Save data");
+ // qWarning("abView:Save data");
return m_contactdb->save();
@@ -148,5 +148,5 @@ bool AbView::save()
void AbView::load()
{
- qWarning("abView:Load data");
+ // qWarning("abView:Load data");
// Letter Search is stopped at this place
@@ -161,5 +161,5 @@ void AbView::load()
}
- qWarning ("Number of contacts: %d", m_list.count());
+ // qWarning ("Number of contacts: %d", m_list.count());
updateView( true );
@@ -169,5 +169,5 @@ void AbView::load()
void AbView::reload()
{
- qWarning( "void AbView::reload()" );
+ // qWarning( "void AbView::reload()" );
m_contactdb->reload();
@@ -182,5 +182,5 @@ void AbView::clear()
void AbView::setShowByCategory( const QString& cat )
{
- qWarning("AbView::setShowCategory( const QString& cat )");
+ // qWarning("AbView::setShowCategory( const QString& cat )");
int intCat = 0;
@@ -194,5 +194,5 @@ void AbView::setShowByCategory( const QString& cat )
// Just do anything if we really change the category
if ( intCat != m_curr_category ){
- qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category);
+ // qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category);
m_curr_category = intCat;
@@ -206,7 +206,7 @@ void AbView::setShowByCategory( const QString& cat )
void AbView::setShowToView( Views view )
{
- qWarning("void AbView::setShowToView( View %d )", view);
+ // qWarning("void AbView::setShowToView( View %d )", view);
- qWarning ("Change the View (Category is: %d)", m_curr_category);
+ // qWarning ("Change the View (Category is: %d)", m_curr_category);
if ( m_curr_View != view ){
@@ -221,5 +221,5 @@ void AbView::setShowToView( Views view )
void AbView::setShowByLetter( char c )
{
- qWarning("void AbView::setShowByLetter( %c )", c );
+ // qWarning("void AbView::setShowByLetter( %c )", c );
OContact query;
if ( c == 0 ){
@@ -255,5 +255,5 @@ QString AbView::showCategory() const
void AbView::showPersonal( bool personal )
{
- qWarning ("void AbView::showPersonal( %d )", personal);
+ // qWarning ("void AbView::showPersonal( %d )", personal);
if ( personal ){
@@ -304,5 +304,5 @@ void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
bool , QString cat )
{
- qWarning( "void AbView::slotDoFind" );
+ // qWarning( "void AbView::slotDoFind" );
// We reloading the data: Deselect Letterpicker
@@ -318,5 +318,5 @@ void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
}
- qWarning ("Find in Category %d", category);
+ // qWarning ("Find in Category %d", category);
QRegExp r( str );
@@ -327,5 +327,5 @@ void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
m_list = m_contactdb->matchRegexp( r );
- qWarning( "found: %d", m_list.count() );
+ // qWarning( "found: %d", m_list.count() );
if ( m_list.count() == 0 ){
emit signalNotFound();
@@ -350,5 +350,5 @@ void AbView::offSearch()
void AbView::slotSwitch(){
- qWarning("AbView::slotSwitch()");
+ // qWarning("AbView::slotSwitch()");
m_prev_View = m_curr_View;
@@ -378,5 +378,5 @@ void AbView::clearForCategory()
for ( it = allList.begin(); it != allList.end(); ++it ){
if ( !contactCompare( *it, m_curr_category ) ){
- qWarning("Removing %d", (*it).uid());
+ // qWarning("Removing %d", (*it).uid());
m_list.remove( (*it).uid() );
}
@@ -388,5 +388,5 @@ void AbView::clearForCategory()
bool AbView::contactCompare( const OContact &cnt, int category )
{
- qWarning ("bool AbView::contactCompare( const OContact &cnt, %d )", category);
+ // qWarning ("bool AbView::contactCompare( const OContact &cnt, %d )", category);
bool returnMe;
@@ -394,5 +394,5 @@ bool AbView::contactCompare( const OContact &cnt, int category )
cats = cnt.categories();
- qWarning ("Number of categories: %d", cats.count() );
+ // qWarning ("Number of categories: %d", cats.count() );
returnMe = false;
@@ -403,5 +403,5 @@ bool AbView::contactCompare( const OContact &cnt, int category )
int i;
for ( i = 0; i < int(cats.count()); i++ ) {
- qWarning("Comparing %d with %d",cats[i],category );
+ // qWarning("Comparing %d with %d",cats[i],category );
if ( cats[i] == category ) {
returnMe = true;
@@ -410,5 +410,5 @@ bool AbView::contactCompare( const OContact &cnt, int category )
}
}
- qWarning ("Return: %d", returnMe);
+ // qWarning ("Return: %d", returnMe);
return returnMe;
}
@@ -423,5 +423,5 @@ void AbView::updateListinViews()
void AbView::updateView( bool newdata )
{
- qWarning("AbView::updateView()");
+ // qWarning("AbView::updateView()");
if ( m_viewStack -> visibleWidget() ){
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index d14ac51..d830ad3 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -68,12 +68,18 @@ ContactEditor::ContactEditor( const OContact &entry,
WFlags fl )
: QDialog( parent, name, TRUE, fl ),
- m_personalView ( false )
-
+ defaultEmailChooserPosition( -1 ),
+ m_personalView ( false ),
+ cmbDefaultEmail( 0 ),
+ initializing ( false )
{
+ initializing = true;
+
init();
setEntry( entry );
- cmbDefaultEmail = 0;
- defaultEmailChooserPosition = -1;
+// cmbDefaultEmail = 0;
+// defaultEmailChooserPosition = -1;
+
+ initializing = false;
}
@@ -82,4 +88,5 @@ ContactEditor::~ContactEditor() {
void ContactEditor::init() {
+ qWarning("init() START");
useFullName = true;
@@ -601,7 +608,7 @@ void ContactEditor::init() {
cmbChooserField4->insertStringList( trlChooserNames );
- cmbChooserField1->setCurrentItem( 0 );
- cmbChooserField2->setCurrentItem( 1 );
- cmbChooserField3->setCurrentItem( 2 );
+ cmbChooserField1->setCurrentItem( 0 );
+ cmbChooserField2->setCurrentItem( 1 );
+ cmbChooserField3->setCurrentItem( 2 );
connect( btnFullName, SIGNAL(clicked()), this, SLOT(slotName()) );
@@ -643,4 +650,6 @@ void ContactEditor::init() {
setPersonalView ( m_personalView );
+
+ qWarning("init() END");
}
@@ -693,13 +702,16 @@ void ContactEditor::populateDefaultEmailCmb(){
bool ContactEditor::cmbChooserChange( int index, QLineEdit *inputWid, int widgetPos ) {
QString type = slChooserNames[index];
- qWarning("ContactEditor::cmbChooserChange -> Type: %s", type.latin1() );
+ qWarning("ContactEditor::cmbChooserChange -> Type: %s, WidgetPos: %d", type.latin1(), widgetPos );
+
+ if ( !initializing )
+ contactfields.setFieldOrder( widgetPos-1, index );
// Create and connect combobox for selecting the default email
if ( type == "Default Email"){
- qWarning("Choosing default-email ");
+ qWarning("Choosing default-email (defaultEmailChooserPosition= %d) ", defaultEmailChooserPosition);
// More than one defaul-email chooser is not allowed !
if ( ( defaultEmailChooserPosition != -1 ) &&
- defaultEmailChooserPosition != widgetPos ){
+ defaultEmailChooserPosition != widgetPos && !initializing){
chooserError( widgetPos );
return true;
@@ -711,5 +723,11 @@ bool ContactEditor::cmbChooserChange( int index, QLineEdit *inputWid, int widget
}
cmbDefaultEmail = new QComboBox(inputWid->parentWidget());
- cmbDefaultEmail->setGeometry(inputWid->frameGeometry());
+ cmbDefaultEmail->setGeometry(inputWid->frameGeometry()); /* :SX */
+
+ QRect rect = inputWid->frameGeometry();
+ qWarning("Geometrie: X=%d, Y=%d, Left=%d, Top=%d, Right=%d, Bottom=%d",
+ rect.x(), rect.y(), rect.left(), rect.top(), rect.right(), rect.bottom());
+ QPoint pnt = inputWid->pos();
+ qWarning("Position : X=%d, Y=%d", pnt.x(), pnt.y() );
connect( cmbDefaultEmail,SIGNAL( activated(int) ),
@@ -945,4 +963,9 @@ void ContactEditor::slotCmbChooser4Change( int index ) {
void ContactEditor::slotAddressTypeChange( int index ) {
+
+ if ( !initializing )
+ contactfields.setFieldOrder( 4, index );
+
+
if ( index == 0 ) {
@@ -1277,10 +1300,10 @@ void ContactEditor::cleanupFields() {
void ContactEditor::setEntry( const OContact &entry ) {
+ initializing = true;
+
cleanupFields();
ent = entry;
-
-
emails = QStringList(ent.emailList());
defaultEmail = ent.defaultEmail();
@@ -1456,12 +1479,30 @@ void ContactEditor::setEntry( const OContact &entry ) {
txtNote->setText( ent.notes() );
+ slotAddressTypeChange( cmbAddress->currentItem() );
+
+ // Calling "show()" to arrange all widgets. Otherwise we will get
+ // a wrong position of the textfields and are unable to put our
+ // default-email combo over it.. This is very ugly !
+ // Does anybody has a better solution ?
+ // Basically we should rethink the strategy to hide
+ // a textfield with overwriting.. (se)
+ show();
+
+ // Get combo-settings from contact and set preset..
+ contactfields.loadFromRecord( ent );
+ cmbChooserField1->setCurrentItem( contactfields.getFieldOrder(0, 0) );
+ cmbChooserField2->setCurrentItem( contactfields.getFieldOrder(1, 1) );
+ cmbChooserField3->setCurrentItem( contactfields.getFieldOrder(2, 2) );
+ cmbChooserField4->setCurrentItem( contactfields.getFieldOrder(3, 5) );
+ cmbAddress->setCurrentItem( contactfields.getFieldOrder(4, 1) );
slotCmbChooser1Change( cmbChooserField1->currentItem() );
slotCmbChooser2Change( cmbChooserField2->currentItem() );
slotCmbChooser3Change( cmbChooserField3->currentItem() );
-
+ slotCmbChooser4Change( cmbChooserField4->currentItem() );
slotAddressTypeChange( cmbAddress->currentItem() );
- // loadFields(); :SX
updateDatePicker();
+
+ initializing = false;
}
void ContactEditor::updateDatePicker()
@@ -1484,5 +1525,7 @@ void ContactEditor::updateDatePicker()
void ContactEditor::saveEntry() {
-
+ // Store current combo into contact
+ contactfields.saveToRecord( ent );
+
if ( useFullName ) {
txtFirstName->setText( parseName( txtFullName->text(), NAME_F ) );
diff --git a/core/pim/addressbook/contacteditor.h b/core/pim/addressbook/contacteditor.h
index 4fa48d1..95f9f2d 100644
--- a/core/pim/addressbook/contacteditor.h
+++ b/core/pim/addressbook/contacteditor.h
@@ -31,4 +31,6 @@
#include <qstringlist.h>
+#include "ocontactfields.h"
+
const int NAME_LF = 0;
const int NAME_LFM = 1;
@@ -109,4 +111,5 @@ class ContactEditor : public QDialog {
void chooserChange( const QString&, int , QLineEdit*, int );
bool cmbChooserChange( int , QLineEdit*, int );
+ OContactFields contactfields;
bool useFullName;
@@ -177,4 +180,6 @@ class ContactEditor : public QDialog {
DateBookMonth* anniversaryPicker;
QToolButton* anniversaryButton;
+
+ bool initializing;
};
diff --git a/core/pim/addressbook/ocontactfields.cpp b/core/pim/addressbook/ocontactfields.cpp
index 0da6a4f..75a7641 100644
--- a/core/pim/addressbook/ocontactfields.cpp
+++ b/core/pim/addressbook/ocontactfields.cpp
@@ -7,4 +7,6 @@
// We should use our own enum in the future ..
#include <qpe/recordfields.h>
+#include <qpe/config.h>
+#include <opie/ocontact.h>
/*!
@@ -200,5 +202,5 @@ QMap<int, QString> OContactFields::idToTrFields()
{
QMap<int, QString> ret_map;
-
+
ret_map.insert( Qtopia::Title, QObject::tr( "Name Title") );
ret_map.insert( Qtopia::FirstName, QObject::tr( "First Name" ) );
@@ -255,5 +257,5 @@ QMap<int, QString> OContactFields::idToTrFields()
// other
ret_map.insert( Qtopia::Notes, QObject::tr( "Notes" ) );
-
+
return ret_map;
@@ -269,6 +271,99 @@ QMap<QString, int> OContactFields::trFieldsToId()
for( it = idtostr.begin(); it != idtostr.end(); ++it )
ret_map.insert( *it, it.key() );
-
+
return ret_map;
}
+
+OContactFields::OContactFields():
+ fieldOrder( DEFAULT_FIELD_ORDER ),
+ changedFieldOrder( false )
+{
+ // Get the global field order from the config file and
+ // use it as a start pattern
+ Config cfg ( "AddressBook" );
+ cfg.setGroup( "ContactFieldOrder" );
+ globalFieldOrder = cfg.readEntry( "General", DEFAULT_FIELD_ORDER );
+}
+
+OContactFields::~OContactFields(){
+
+ // We will store the fieldorder into the config file
+ // to reuse it for the future..
+ if ( changedFieldOrder ){
+ Config cfg ( "AddressBook" );
+ cfg.setGroup( "ContactFieldOrder" );
+ cfg.writeEntry( "General", globalFieldOrder );
+ }
+}
+
+
+
+void OContactFields::saveToRecord( OContact &cnt ){
+
+ qDebug("ocontactfields saveToRecord: >%s<",fieldOrder.latin1());
+
+ // Store fieldorder into this contact.
+ cnt.setCustomField( CONTACT_FIELD_ORDER_NAME, fieldOrder );
+
+ globalFieldOrder = fieldOrder;
+ changedFieldOrder = true;
+
+}
+
+void OContactFields::loadFromRecord( const OContact &cnt ){
+ qDebug("ocontactfields loadFromRecord");
+ qDebug("loading >%s<",cnt.fullName().latin1());
+
+ // Get fieldorder for this contact. If none is defined,
+ // we will use the global one from the config file..
+
+ fieldOrder = cnt.customField( CONTACT_FIELD_ORDER_NAME );
+
+ qDebug("fieldOrder from contact>%s<",fieldOrder.latin1());
+
+ if (fieldOrder.isEmpty()){
+ fieldOrder = globalFieldOrder;
+ }
+
+
+ qDebug("effective fieldOrder in loadFromRecord >%s<",fieldOrder.latin1());
+}
+
+void OContactFields::setFieldOrder( int num, int index ){
+ qDebug("qcontactfields setfieldorder pos %i -> %i",num,index);
+
+ fieldOrder[num] = QString::number( index )[0];
+
+ // We will store this new fieldorder globally to
+ // remember it for contacts which have none
+ globalFieldOrder = fieldOrder;
+ changedFieldOrder = true;
+
+ qDebug("fieldOrder >%s<",fieldOrder.latin1());
+}
+
+int OContactFields::getFieldOrder( int num, int defIndex ){
+ qDebug("ocontactfields getFieldOrder");
+ qDebug("fieldOrder >%s<",fieldOrder.latin1());
+
+ // Get index of combo as char..
+ QChar poschar = fieldOrder[num];
+
+ bool ok;
+ int ret = 0;
+ // Convert char to number..
+ if ( !( poschar == QChar::null ) )
+ ret = QString( poschar ).toInt(&ok, 10);
+ else
+ ok = false;
+
+ // Return default value if index for
+ // num was not set or if anything else happened..
+ if ( !ok ) ret = defIndex;
+
+ qDebug("returning >%i<",ret);
+
+ return ret;
+
+}
diff --git a/core/pim/addressbook/ocontactfields.h b/core/pim/addressbook/ocontactfields.h
index 796bc0a..bf3a7f5 100644
--- a/core/pim/addressbook/ocontactfields.h
+++ b/core/pim/addressbook/ocontactfields.h
@@ -6,8 +6,42 @@ class QStringList;
#include <qmap.h>
#include <qstring.h>
+#include <opie/ocontact.h>
+#define CONTACT_FIELD_ORDER_NAME "opie-contactfield-order"
+#define DEFAULT_FIELD_ORDER "__________"
+
class OContactFields{
public:
+ OContactFields();
+ ~OContactFields();
+ /** Set the index for combo boxes.
+ * Sets the <b>index</b> of combo <b>num</b>.
+ * @param num selects the number of the combo
+ * @param index sets the index in the combo
+ */
+ void setFieldOrder( int num, int index );
+
+ /** Get the index for combo boxes.
+ * Returns the index of combo <b>num</b> or defindex
+ * if none was defined..
+ * @param num Selects the number of the combo
+ * @param defIndex will be returned if none was defined (either
+ * globally in the config file, nor by the contact which was used
+ * by loadFromRecord() )
+ */
+ int getFieldOrder( int num, int defIndex);
+
+ /** Store fieldorder to contact. */
+ void saveToRecord( OContact& );
+ /** Get Fieldorder from contact. */
+ void loadFromRecord( const OContact& );
+
+ private:
+ QString fieldOrder;
+ QString globalFieldOrder;
+ bool changedFieldOrder;
+
+ public:
static QStringList trphonefields( bool sorted = true );
static QStringList untrphonefields( bool sorted = true );
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index b740326..e716fe4 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -3,6 +3,6 @@
#define MAINVERSION "0"
-#define SUBVERSION "1"
-#define PATCHVERSION "1"
+#define SUBVERSION "2"
+#define PATCHVERSION "0"
#define APPNAME "OPIE_ADDRESSBOOK"