summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp11
1 files changed, 10 insertions, 1 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
@@ -549,32 +549,34 @@ void AbTable::load( const QString &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) );
@@ -784,43 +786,50 @@ 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));
+ 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 )
{