diff -r 76d2cf7a585e -r 90fe74753f71 logsui/logscntfinder/src/logscntentry.cpp --- a/logsui/logscntfinder/src/logscntentry.cpp Mon Aug 23 18:14:51 2010 +0300 +++ b/logsui/logscntfinder/src/logscntentry.cpp Fri Sep 03 14:26:05 2010 +0300 @@ -272,37 +272,56 @@ { LogsPredictiveTranslator* translator = LogsPredictiveTranslator::instance(); - QMutableListIterator names( nameArray ); - bool hasSeparators = translator->hasPatternSeparators( pattern ); + QMutableListIterator names( nameArray ); + QString modifiedPattern = pattern; + modifiedPattern = translator->trimPattern( modifiedPattern, true ); + + bool hasSeparators = translator->hasPatternSeparators( modifiedPattern ); //simple while( names.hasNext() ) { LogsCntText& nameItem = names.next(); //must use non-optimized version with whole pattern - nameItem.mHighlights = startsWith( nameItem, pattern, false ); + nameItem.mHighlights = startsWith( nameItem, modifiedPattern ); + } + + if ( hasSeparators ) { + //complex + QListIterator patternArray( translator->patternTokens( modifiedPattern ) ); + while( patternArray.hasNext() ) { + QString patternItem = patternArray.next(); + doSetHighlights( patternItem, names ); + translator->trimPattern( patternItem ); + doSetHighlights( patternItem, names ); + } } - //complex - QListIterator patternArray( translator->patternTokens( pattern ) ); - while( hasSeparators && patternArray.hasNext() ) { - QString patternItem = patternArray.next(); - names.toFront(); - while( names.hasNext() ) { - LogsCntText& nameItem = names.next(); - int matchSize = startsWith( nameItem, patternItem, !hasSeparators ); - nameItem.mHighlights = matchSize > nameItem.mHighlights ? - matchSize : nameItem.mHighlights; - } - } } +// ----------------------------------------------------------------------------- +// LogsCntEntry::doSetHighlights() +// ----------------------------------------------------------------------------- +// +void LogsCntEntry::doSetHighlights( const QString& patternItem, + QMutableListIterator& names ) + +{ + names.toFront(); + while( names.hasNext() ) { + LogsCntText& nameItem = names.next(); + int matchSize = startsWith( nameItem, patternItem ); + nameItem.mHighlights = matchSize > nameItem.mHighlights ? + matchSize : nameItem.mHighlights; + } + +} // ----------------------------------------------------------------------------- // LogsCntEntry::startsWith() // ----------------------------------------------------------------------------- // int LogsCntEntry::startsWith( const LogsCntText& nameItem, - const QString& pattern, bool optimize ) const + const QString& pattern ) const { LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" ) //assumed that text has found based on pattern, thus only checking with @@ -313,12 +332,7 @@ if ( text.isEmpty() || matchCount > text.length() ) { matchCount = 0; } else { - if ( !optimize ) { - matchCount = text.startsWith( pattern ) ? matchCount : 0; - } else { - matchCount = *text.data() == *pattern.data() ? - matchCount : 0; - } + matchCount = text.startsWith( pattern ) ? matchCount : 0; } LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" ) return matchCount; @@ -346,13 +360,24 @@ if ( pattern.length() > 0 ) { LogsPredictiveTranslator* translator = LogsPredictiveTranslator::instance(); + QString modifiedPattern = pattern; + modifiedPattern = translator->trimPattern( modifiedPattern, true ); + //direct match with phone number is enough match = ( type() == EntryTypeHistory && mPhoneNumber.mTranslatedText.startsWith( pattern ) ) || - doSimpleMatch( pattern ); + doSimpleMatch( modifiedPattern ); - match = !match && translator->hasPatternSeparators( pattern ) ? - doComplexMatch( translator->patternTokens( pattern) ) : match; + if (!match && translator->hasPatternSeparators( modifiedPattern ) ) { + QStringList patternArray = translator->patternTokens( modifiedPattern ); + match = doComplexMatch( patternArray ); + if (!match ) { + for(int i=0;itrimPattern( patternArray[i] ); + } + match = doComplexMatch( patternArray ); + } + } } return match; @@ -380,7 +405,7 @@ // LogsCntEntry::doComplexMatch() // ----------------------------------------------------------------------------- // -bool LogsCntEntry::doComplexMatch( QStringList patternArray ) const +bool LogsCntEntry::doComplexMatch( const QStringList& patternArray ) const { const bool zero = false;