diff --git a/ChangeLog b/ChangeLog index 900adaca..175bd776 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24504,3 +24504,5 @@ event of the appended log. 2023-12-01 Fred Gleason * Optimized the handling of cart numbers when searching for carts. +2023-12-01 Fred Gleason + * Added support for subclauses in the cart library search filter. diff --git a/lib/rdcartfilter.cpp b/lib/rdcartfilter.cpp index c5697f46..69caf1ab 100644 --- a/lib/rdcartfilter.cpp +++ b/lib/rdcartfilter.cpp @@ -588,13 +588,14 @@ void RDCartFilter::resizeEvent(QResizeEvent *e) } -QString RDCartFilter::phraseFilter(const QString &phrase, bool incl_cuts) +QString RDCartFilter::phraseFilter(QString phrase, bool incl_cuts) { QString sql=""; QList cart_numbers; + QStringList clauses; bool ok=false; - if(phrase.isEmpty()) { + if(phrase.trimmed().isEmpty()) { sql=" "; } else { @@ -610,35 +611,46 @@ QString RDCartFilter::phraseFilter(const QString &phrase, bool incl_cuts) i--; } } + phrase=words.join(" ").trimmed(); - sql+=" ("; - if(words.size()>0) { - QString search=RDEscapeString(words.join(" ")); - sql+=QString("(`CART`.`TITLE` like '%")+search+"%')||"+ - "(`CART`.`ARTIST` like '%"+search+"%')||"+ - "(`CART`.`CLIENT` like '%"+search+"%')||"+ - "(`CART`.`AGENCY` like '%"+search+"%')||"+ - "(`CART`.`ALBUM` like '%"+search+"%')||"+ - "(`CART`.`LABEL` like '%"+search+"%')||"+ - "(`CART`.`PUBLISHER` like '%"+search+"%')||"+ - "(`CART`.`COMPOSER` like '%"+search+"%')||"+ - "(`CART`.`CONDUCTOR` like '%"+search+"%')||"+ - "(`CART`.`SONG_ID` like '%"+search+"%')||"+ - "(`CART`.`USER_DEFINED` like '%"+search+"%')||"; - if(incl_cuts) { - sql+=QString("(`CUTS`.`ISCI` like '%")+search+"%')||"+ - "(`CUTS`.`ISRC` like '%"+search+"%')||"+ - "(`CUTS`.`DESCRIPTION` like '%"+search+"%')||"+ - "(`CUTS`.`OUTCUE` like '%"+search+"%')||"; + // + // Generate Clauses + // + QString accum; + for(int i=0;i