Full-text search: Set group for ArticleView::showDefinition() when view article

This commit is contained in:
Abs62 2014-04-22 22:45:42 +04:00
parent c2cdf9b177
commit 503650d617
3 changed files with 29 additions and 20 deletions

View file

@ -279,7 +279,7 @@ void ArticleView::showDefinition( QString const & word, unsigned group,
} }
void ArticleView::showDefinition( QString const & word, QStringList const & dictIDs, void ArticleView::showDefinition( QString const & word, QStringList const & dictIDs,
QRegExp const & searchRegExp ) QRegExp const & searchRegExp, unsigned group )
{ {
if( dictIDs.isEmpty() ) if( dictIDs.isEmpty() )
return; return;
@ -301,6 +301,7 @@ void ArticleView::showDefinition( QString const & word, QStringList const & dict
req.addQueryItem( "matchcase", "1" ); req.addQueryItem( "matchcase", "1" );
if( searchRegExp.patternSyntax() == QRegExp::WildcardUnix ) if( searchRegExp.patternSyntax() == QRegExp::WildcardUnix )
req.addQueryItem( "wildcards", "1" ); req.addQueryItem( "wildcards", "1" );
req.addQueryItem( "group", QString::number( group ) );
// Update both histories (pages history and headwords history) // Update both histories (pages history and headwords history)
saveHistoryUserData(); saveHistoryUserData();
@ -925,11 +926,7 @@ void ArticleView::openLink( QUrl const & url, QUrl const & ref,
QStringList dictsList = ref.queryItemValue( "dictionaries" ) QStringList dictsList = ref.queryItemValue( "dictionaries" )
.split( ",", QString::SkipEmptyParts ); .split( ",", QString::SkipEmptyParts );
QRegExp regexp( ref.queryItemValue( "regexp" ), showDefinition( url.path(), dictsList, QRegExp(), getGroup( ref ) );
ref.hasQueryItem( "matchcase" ) ? Qt::CaseSensitive : Qt::CaseInsensitive,
ref.hasQueryItem( "wildcards" ) ? QRegExp::WildcardUnix : QRegExp::RegExp2 );
showDefinition( url.path(), dictsList, regexp );
} }
else else
showDefinition( url.path(), showDefinition( url.path(),
@ -951,11 +948,7 @@ void ArticleView::openLink( QUrl const & url, QUrl const & ref,
QStringList dictsList = ref.queryItemValue( "dictionaries" ) QStringList dictsList = ref.queryItemValue( "dictionaries" )
.split( ",", QString::SkipEmptyParts ); .split( ",", QString::SkipEmptyParts );
QRegExp regexp( ref.queryItemValue( "regexp" ), showDefinition( url.path().mid( 1 ), dictsList, QRegExp(), getGroup( ref ) );
ref.hasQueryItem( "matchcase" ) ? Qt::CaseSensitive : Qt::CaseInsensitive,
ref.hasQueryItem( "wildcards" ) ? QRegExp::WildcardUnix : QRegExp::RegExp2 );
showDefinition( url.path().mid( 1 ), dictsList, regexp );
return; return;
} }
@ -1955,7 +1948,18 @@ void ArticleView::doubleClicked()
getCurrentArticle(), Contexts() ); getCurrentArticle(), Contexts() );
} }
else else
showDefinition( selectedText, getGroup( ui.definition->url() ), getCurrentArticle() ); {
QUrl const & ref = ui.definition->url();
if( ref.hasQueryItem( "dictionaries" ) )
{
QStringList dictsList = ref.queryItemValue( "dictionaries" )
.split( ",", QString::SkipEmptyParts );
showDefinition( selectedText, dictsList, QRegExp(), getGroup( ref ) );
}
else
showDefinition( selectedText, getGroup( ref ), getCurrentArticle() );
}
} }
} }
} }
@ -2119,6 +2123,16 @@ void ArticleView::highlightFTSResults()
{ {
closeSearch(); closeSearch();
const QUrl & url = ui.definition->url();
QRegExp regexp( url.queryItemValue( "regexp" ),
url.hasQueryItem( "matchcase" ) ? Qt::CaseSensitive : Qt::CaseInsensitive,
url.hasQueryItem( "wildcards" ) ? QRegExp::WildcardUnix : QRegExp::RegExp2 );
if( regexp.pattern().isEmpty() )
return;
regexp.setMinimal( true );
// Clear any current selection // Clear any current selection
if ( ui.definition->selectedText().size() ) if ( ui.definition->selectedText().size() )
{ {
@ -2126,12 +2140,6 @@ void ArticleView::highlightFTSResults()
evaluateJavaScript( "window.getSelection().removeAllRanges();_=0;" ); evaluateJavaScript( "window.getSelection().removeAllRanges();_=0;" );
} }
const QUrl & url = ui.definition->url();
QRegExp regexp( url.queryItemValue( "regexp" ),
url.hasQueryItem( "matchcase" ) ? Qt::CaseSensitive : Qt::CaseInsensitive,
url.hasQueryItem( "wildcards" ) ? QRegExp::WildcardUnix : QRegExp::RegExp2 );
regexp.setMinimal( true );
QString pageText = ui.definition->page()->currentFrame()->toPlainText(); QString pageText = ui.definition->page()->currentFrame()->toPlainText();
int pos = 0; int pos = 0;

View file

@ -97,7 +97,7 @@ public:
Contexts const & contexts = Contexts() ); Contexts const & contexts = Contexts() );
void showDefinition( QString const & word, QStringList const & dictIDs, void showDefinition( QString const & word, QStringList const & dictIDs,
QRegExp const & searchRegExp ); QRegExp const & searchRegExp, unsigned group );
/// Clears the view and sets the application-global waiting cursor, /// Clears the view and sets the application-global waiting cursor,
/// which will be restored when some article loads eventually. /// which will be restored when some article loads eventually.

View file

@ -2638,7 +2638,8 @@ void MainWindow::showTranslationFor( QString const & inWord,
navPronounce->setEnabled( false ); navPronounce->setEnabled( false );
view->showDefinition( inWord, dictIDs, searchRegExp ); view->showDefinition( inWord, dictIDs, searchRegExp,
groupInstances[ groupList->currentIndex() ].id );
updatePronounceAvailability(); updatePronounceAvailability();
updateFoundInDictsList(); updateFoundInDictsList();