Blob Blame History Raw
From 6c49cfdfd97faa146ce7b0d8e95ce2bf596f2b0d Mon Sep 17 00:00:00 2001
From: Stefano Pettini <stefano.pettini@gmail.com>
Date: Sun, 19 Jun 2016 00:13:13 +0200
Subject: [PATCH 25/26] Handle numeric fields properly in filter creation
 dialogs

Every numeric field, like length, disc number and track number, were
not properly parsed by the filter dialog or by the dynamic playlist
dialog into the textual query string used to then apply the filter.

The bug was due to what sounds like an "optimization" that swapped the
first and second value of a "between" condition, to make sure the
smaller value was always the first value and the larger always the
second. The problem was that this was applied also to non-between
conditions, actually swapping the lenth or disc number with 0, making
0 appear in the textual representation of the condition.

The fix makes sure that "optimization" is applied only in case of
actual "between" conditions, leaving the values "unoptimized" for any
other kind of condition (=, <, > and similar).

REVIEW: 128245
BUG: 341661
---
 src/widgets/MetaQueryWidget.cpp | 6 +++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/widgets/MetaQueryWidget.cpp b/src/widgets/MetaQueryWidget.cpp
index abce6b7..40f15d6 100644
--- a/src/widgets/MetaQueryWidget.cpp
+++ b/src/widgets/MetaQueryWidget.cpp
@@ -1081,7 +1081,11 @@ QString MetaQueryWidget::Filter::toString( bool invert ) const
     }
     else if( isNumeric() )
     {
-        if (numValue < numValue2) // two values are only used for "between". We want to order them by size
+        if ( condition != Between )
+        {
+            strValue1 = QString::number( numValue );
+        }
+        else if (numValue < numValue2) // two values are only used for "between". We want to order them by size
         {
             strValue1 = QString::number( numValue );
             strValue2 = QString::number( numValue2 );
-- 
2.7.4