diff -r b04270301d3b -r 64a47b97e1e1 logsui/logsengine/src/logsmatchesmodel.cpp --- a/logsui/logsengine/src/logsmatchesmodel.cpp Wed Jun 23 18:13:05 2010 +0300 +++ b/logsui/logsengine/src/logsmatchesmodel.cpp Tue Jul 06 14:16:36 2010 +0300 @@ -165,7 +165,8 @@ } const LogsMatchesModelItemContainer& matchItem = static_cast( item ); - LogsMessage* logsMessage = new LogsMessage(matchItem.contact(), matchItem.number(),matchItem.contactName()); + LogsMessage* logsMessage = new LogsMessage( + matchItem.contact(), matchItem.number(),matchItem.contactNameSimple()); if (!logsMessage->isMessagingAllowed()) { delete logsMessage; logsMessage = 0; @@ -298,6 +299,39 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsMatchesModel::eventsResetted() +{ + LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::eventsResetted()" ); + + QMap unusedEvents = mSearchEvents; + for ( int i = 0; i < mParentModel.rowCount(); ++i ){ + LogsEvent* event = qVariantValue( + mParentModel.data( mParentModel.index(i, 0), LogsModel::RoleFullEvent ) ); + if ( event ){ + QObject* key = mSearchEvents.key(event); + if ( key ){ + unusedEvents.remove(key); + } else { + addEventForSearching(i, *event); + } + } + } + + QMap::iterator unusedIt; + for (unusedIt = unusedEvents.begin(); unusedIt != unusedEvents.end(); ++unusedIt){ + mLogsCntFinder->deleteEntry(*unusedIt.key()); + mSearchEvents.remove(unusedIt.key()); + } + + forceSearchQuery(); + + LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::eventsResetted()" ); +} + +// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // @@ -315,7 +349,7 @@ this, SLOT(eventsAdded(const QModelIndex&,int,int))); connect( &mParentModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)), this, SLOT(eventsRemoved(const QModelIndex&,int,int))); - connect( &mParentModel, SIGNAL(modelReset()), this, SLOT(doModelReset())); + connect( &mParentModel, SIGNAL(modelReset()), this, SLOT(eventsResetted())); readEvents(0, mParentModel.rowCount()); mIconManager = new LogsThumbIconManager(); connect(mIconManager, SIGNAL(contactIconReady(int)), @@ -373,11 +407,7 @@ LogsEvent* event = qVariantValue( mParentModel.data( mParentModel.index(i, 0), LogsModel::RoleFullEvent ) ); if ( event ){ - QObject* entryHandle = new QObject(this); - LogsCntEntry* entry = new LogsCntEntry(*entryHandle, 0); - updateSearchEntry(*entry, *event); - mLogsCntFinder->insertEntry(i, entry); - mSearchEvents.insert(entryHandle, event); + addEventForSearching(i, *event); } } } @@ -447,10 +477,12 @@ // void LogsMatchesModel::doModelReset() { + LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::doModelReset()" ); qDeleteAll(mMatches); mMatches.clear(); mResultCount = 0; reset(); + LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::doModelReset()" ); } // ----------------------------------------------------------------------------- @@ -512,6 +544,19 @@ // // ----------------------------------------------------------------------------- // +void LogsMatchesModel::addEventForSearching(int index, LogsEvent& event) +{ + QObject* entryHandle = new QObject(this); + LogsCntEntry* entry = new LogsCntEntry(*entryHandle, 0); + updateSearchEntry(*entry, event); + mLogsCntFinder->insertEntry(index, entry); + mSearchEvents.insert(entryHandle, &event); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// LogsMatchesModelItemContainer::LogsMatchesModelItemContainer( LogsAbstractModel& parentModel, LogsThumbIconManager& thumbIconManager, @@ -594,6 +639,15 @@ // // ----------------------------------------------------------------------------- // +QString LogsMatchesModelItemContainer::contactNameSimple() const +{ + return mContactNameSimple; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// bool LogsMatchesModelItemContainer::isNull() const { return ( !mEvent && !mContactId ); @@ -651,7 +705,7 @@ if ( mEvent ){ mFormattedCallerId = getFormattedCallerId(entry); } else if ( mContactId > 0 ){ - getFormattedContactInfo(entry, mContactName, mContactNumber); + getFormattedContactInfo(entry, mContactName, mContactNameSimple, mContactNumber); mAvatarPath.clear(); mAvatarPath = entry.avatarPath(); } @@ -690,15 +744,17 @@ // void LogsMatchesModelItemContainer::getFormattedContactInfo( const LogsCntEntry& entry, - QString& contactName, + QString& contactName, + QString& contactNameSimple, QString& contactNumber ) const { contactName.clear(); - getFormattedName(contactName, entry.firstName()); - getFormattedName(contactName, entry.lastName()); + getFormattedName(contactName, contactNameSimple, entry.firstName()); + getFormattedName(contactName, contactNameSimple, entry.lastName()); contactName = contactName.trimmed(); + contactNameSimple = contactNameSimple.trimmed(); contactNumber = entry.phoneNumber().text(); } @@ -706,13 +762,31 @@ // // ----------------------------------------------------------------------------- // -void LogsMatchesModelItemContainer::getFormattedName(QString& formattedName, - const QList& list) const +void LogsMatchesModelItemContainer::getFormattedName( + QString& formattedName, const QList& list) const { foreach( LogsCntText name, list ) { if ( name.text().length() > 0 ) { - formattedName.append(name.richText()); + formattedName.append(name.richText()); formattedName.append(" "); } } } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsMatchesModelItemContainer::getFormattedName( + QString& formattedName, QString& formattedNameSimple, + const QList& list) const +{ + foreach( LogsCntText name, list ) { + if ( name.text().length() > 0 ) { + formattedName.append(name.richText()); + formattedName.append(" "); + formattedNameSimple.append(name.text()); + formattedNameSimple.append(" "); + } + } +}