Hi,

really sorry it took so long, finally we are at it.

> 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/

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 ;) ).

Thanks,
-- 
Pino Toscano

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Okular-devel mailing list
Okular-devel@kde.org
https://mail.kde.org/mailman/listinfo/okular-devel

Reply via email to