-rw-r--r-- | core/pim/addressbook/abtable.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index e9e6a0b..3fa1a7c 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -541,48 +541,50 @@ bool AbTable::save( const QString &fn ) void AbTable::load( const QString &fn ) { setSorting( false ); loadFile( fn, false ); // merge in the journal if ( QFile::exists( journalFileName() ) ) { loadFile( journalFileName(), true ); save( fn ); } setSorting( true ); resort(); } void AbTable::loadFile( const QString &strFile, bool journalFile ) { // QTime t; // t.start(); QFile f( strFile ); if ( !f.open(IO_ReadOnly) ) return; QList<Contact> list; list.setAutoDelete( TRUE ); QByteArray ba = f.readAll(); f.close(); + if (ba.isEmpty() ) + return; char *uc = ba.data();//(QChar *)data.unicode(); int len = ba.size();//data.length(); bool foundAction = false; Contact::journal_action action; bool foundKey = false; int journalKey = 0; const int JOURNALACTION = Qtopia::Notes + 1; const int JOURNALROW = JOURNALACTION + 1; // ********************************** // CHANGE THE SIZE OF THE DICT IF YOU ADD ANY MORE FIELDS!!!! // ********************************** QAsciiDict<int> dict( 47 ); dict.setAutoDelete( TRUE ); dict.insert( "Uid", new int(Qtopia::AddressUid) ); dict.insert( "Title", new int(Qtopia::Title) ); dict.insert( "FirstName", new int(Qtopia::FirstName) ); dict.insert( "MiddleName", new int(Qtopia::MiddleName) ); dict.insert( "LastName", new int(Qtopia::LastName) ); dict.insert( "Suffix", new int(Qtopia::Suffix) ); dict.insert( "FileAs", new int(Qtopia::FileAs) ); dict.insert( "Categories", new int(Qtopia::AddressCategory) ); dict.insert( "DefaultEmail", new int(Qtopia::DefaultEmail) ); @@ -776,59 +778,66 @@ void AbTable::insertIntoTable( const Contact &cnt, int row ) //### cannot do this; table only has two columns at this point // setItem( row, 2, new AbPickItem( this ) ); // resort at some point? } void AbTable::internalAddEntries( QList<Contact> &list ) { setUpdatesEnabled( FALSE ); setNumRows( list.count() ); int row = 0; Contact *it; for ( it = list.first(); it; it = list.next() ) insertIntoTable( *it, row++ ); resort(); setUpdatesEnabled( TRUE ); } void AbTable::journalFreeReplace( const Contact &cnt, int row ) { QString strName, strContact; - AbTableItem *ati; + AbTableItem *ati = 0l; strName = findContactName( cnt ); strContact = findContactContact( cnt ); ati = static_cast<AbTableItem*>(item(row, 0)); - contactList.remove( ati ); - ati->setItem( strName, strContact ); - contactList.insert( ati, cnt ); - - ati = static_cast<AbTableItem*>(item(row, 1)); - ati->setItem( strContact, strName ); + if ( ati != 0 ) { + contactList.remove( ati ); + ati->setItem( strName, strContact ); + contactList.insert( ati, cnt ); + + ati = static_cast<AbTableItem*>(item(row, 1)); + ati->setItem( strContact, strName ); + }else{ + int myrows = numRows(); + setNumRows( myrows + 1 ); + insertIntoTable( cnt, myrows ); + // gets deleted when returning + } } void AbTable::journalFreeRemove( int row ) { AbTableItem *ati; ati = static_cast<AbTableItem*>(item(row, 0)); if ( !ati ) return; contactList.remove( ati ); realignTable( row ); } #if QT_VERSION <= 230 #ifndef SINGLE_APP void QTable::paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch ) { // Region of the rect we should draw QRegion reg( QRect( cx, cy, cw, ch ) ); // Subtract the table from it reg = reg.subtract( QRect( QPoint( 0, 0 ), tableSize() ) ); // And draw the rectangles (transformed as needed) QArray<QRect> r = reg.rects(); for (unsigned int i=0; i<r.count(); i++) p->fillRect( r[i], colorGroup().brush( QColorGroup::Base ) ); @@ -1062,49 +1071,49 @@ void AbTable::updateVisible() hide = true; } else { // do some comparing if ( !hide ) { hide = true; totalCats = int(cats.count()); for ( it = 0; it < totalCats; it++ ) { if ( cats[it] == id ) { hide = false; break; } } } } } if ( showChar != '\0' ) { tmpStr = fileAsName.left(1); tmpStr = tmpStr.lower(); if ( tmpStr != QString(QChar(showChar)) && showChar != '#' ) { hide = true; } if ( showChar == '#' ) { if (tmpStr == "a") hide = true; - + if (tmpStr == "b") hide = true; if (tmpStr == "c") hide = true; if (tmpStr == "d") hide = true; if (tmpStr == "e") hide = true; if (tmpStr == "f") hide = true; if (tmpStr == "g") hide = true; if (tmpStr == "h") hide = true; if (tmpStr == "i") hide = true; |