[Okular-devel] [PATCH] Support regular expressions and case sensitivity in TOC search input
Elvis Stansvik
elvstone at gmail.com
Tue Oct 6 18:53:26 CEST 2009
2009/10/6 Pino Toscano <pino at kde.org>:
> Hi,
>
> really sorry it took so long, finally we are at it.
No problem ;)
>
>> Attached is a patch for review that adds a context submenu to the
>> search line called "Search Options" where you can enable regular
>> expression support and case sensitivity. Also attaching a screen shot
>> to show what it looks like.
>
> Looks nice, just few notes below:
>
>> if ( !d->searchColumns.isEmpty() ) {
>> QList<int>::ConstIterator it = d->searchColumns.constBegin();
>> for ( ; it != d->searchColumns.constEnd(); ++it ) {
>> - if ( *it < columncount &&
>> - index.child( row, *it ).data( Qt::DisplayRole
>> ).toString().indexOf( pattern, 0, d->caseSensitive ) >= 0 )
>> - return true;
>> + if ( *it < columncount ) {
>> + if ( d->regularExpression ) {
>> + return (index.child( row, *it ).data( Qt::DisplayRole
>> ).toString().indexOf( + QRegExp( pattern, d->caseSensitive ))
>> >= 0);
>> + } else {
>> + return (index.child( row, *it ).data( Qt::DisplayRole
>> ).toString().indexOf( + pattern, 0, d->caseSensitive ) >= 0);
>> + }
>> + }
>> }
>> } else {
>> for ( int i = 0; i < columncount; ++i) {
>> - if ( index.child( row, i ).data( Qt::DisplayRole
>> ).toString().indexOf( pattern, 0, d->caseSensitive ) >= 0 )
>> - return true;
>> + if ( d->regularExpression ) {
>> + return (index.child( row, i ).data( Qt::DisplayRole
>> ).toString().indexOf( + QRegExp( pattern, d->caseSensitive ))
>> >= 0);
>> + } else {
>> + return (index.child( row, i ).data( Qt::DisplayRole
>> ).toString().indexOf( + pattern, 0, d->caseSensitive ) >= 0);
>> + }
>> }
>> }
>
> We could simplify (and speedup a bit) this part: instead of checking if it's a
> regular expression search or not (and construct a new QRegExp object each
> time), a QRegExp object could always be constructed once before the loop,
> setting the correct case sensitivity and syntax (regexp or plain) for it.
> Also, instead of using QString::indexOf(QRegExp), please use
> QRegExp::indexIn(); this because the former is highly unsafe, see
> http://labs.trolltech.com/blogs/2008/11/04/910/
I've switched distro to Arch since I made the patch, so I need to fix
up my dev env. But after that I'll fix these issues and post a new
patch. Thanks for the input!
>
> Also, as this class is a fork+adaptation from kdelibs KTreeWidgetSearchLine
> (see kdelibs/kdeui/itemviews/ktreewidgetsearchline.cpp), if you can/want feel
> free to also propose the additions for that class as well, so other KDE
> applications using it can benefit from the additions (and simplify future
> merges from it ;) ).
Yea, I thought about that. I'll try to make a patch against kdelibs
and propose it sometime. Kind of busy with school assignments at the
moment ;)
Elvis
>
> Thanks,
> --
> Pino Toscano
>
> _______________________________________________
> Okular-devel mailing list
> Okular-devel at kde.org
> https://mail.kde.org/mailman/listinfo/okular-devel
>
>
More information about the Okular-devel
mailing list