The abused progress bars in the fermentables tab now show the stacked colors like I want them.

Sat, 21 May 2022 16:50:12 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 21 May 2022 16:50:12 +0200
changeset 229
815ee118ad49
parent 228
c859e8efa470
child 230
b68c0c61d261

The abused progress bars in the fermentables tab now show the stacked colors like I want them.

src/EditProductTab3.cpp file | annotate | diff | comparison | revisions
src/EditRecipeTab2.cpp file | annotate | diff | comparison | revisions
--- a/src/EditProductTab3.cpp	Sat May 21 13:28:15 2022 +0200
+++ b/src/EditProductTab3.cpp	Sat May 21 16:50:12 2022 +0200
@@ -507,12 +507,21 @@
 
 void EditProduct::ferment_perc_mash_valueChanged(int value)
 {
-    if (value < 90)
+    if (value < 90) {
 	ui->perc_mashShow->setStyleSheet(bar_green);
-    else if (value < 100)
-	ui->perc_mashShow->setStyleSheet(bar_orange);
-    else
-	ui->perc_mashShow->setStyleSheet(bar_red);
+    } else {
+	double s1 = 90.0 / value;
+	if (value < 100) {
+	    ui->perc_mashShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 orange, stop: 1 orange"
+                  ");}").arg(s1 - 0.00001).arg(s1));
+	} else {
+	    double s2 = 100.0 / value;
+	    ui->perc_mashShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 orange, stop: %3 orange, stop: %4 red, stop: 1 red"
+                  ");}").arg(s1 - 0.00003).arg(s1 - 0.00002).arg(s2 - 0.00001).arg(s2));
+	}
+    }
 }
 
 
@@ -520,8 +529,11 @@
 {
     if (value < 20)
 	ui->perc_sugarsShow->setStyleSheet(bar_green);
-    else
-	ui->perc_sugarsShow->setStyleSheet(bar_red);
+    else {
+	double s1 = 20.0 / value;
+        ui->perc_sugarsShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 red, stop: 1 red);}").arg(s1 - 0.00001).arg(s1));
+    }
 }
 
 
@@ -529,19 +541,33 @@
 {
     if (value < 25)
 	ui->perc_caraShow->setStyleSheet(bar_green);
-    else
-	ui->perc_caraShow->setStyleSheet(bar_red);
+    else {
+	double s1 = 25.0 / value;
+    	ui->perc_caraShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 red, stop: 1 red);}").arg(s1 - 0.00001).arg(s1));
+    }
 }
 
 
 void EditProduct::ferment_lintner_valueChanged(int value)
 {
-    if (value < 30)
+    /*
+     * Calculate the color stop positions
+     */
+    if (value < 30) {
 	ui->lintnerShow->setStyleSheet(bar_red);
-    else if (value < 40)
-	ui->lintnerShow->setStyleSheet(bar_orange);
-    else
-	ui->lintnerShow->setStyleSheet(bar_green);
+    } else {
+	double s1 = 30.0 / value;
+	if (value < 40) {
+	    ui->lintnerShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 red, stop: %1 red, stop: %2 orange, stop: 1 orange);}").arg(s1 - 0.00001).arg(s1));
+	} else {
+	    double s2 = 40.0 / value;
+	    ui->lintnerShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+	          "stop: 0 red, stop: %1 red, stop: %2 orange, stop: %3 orange, stop: %4 green, stop: 1 green"
+                  ");}").arg(s1 - 0.00003).arg(s1 - 0.00002).arg(s2 - 0.00001).arg(s2));
+	}
+    }
 }
 
 
--- a/src/EditRecipeTab2.cpp	Sat May 21 13:28:15 2022 +0200
+++ b/src/EditRecipeTab2.cpp	Sat May 21 16:50:12 2022 +0200
@@ -404,41 +404,67 @@
 
 void EditRecipe::ferment_perc_mash_valueChanged(int value)
 {
-    if (value < 90)
-	ui->perc_mashShow->setStyleSheet(bar_green);
-    else if (value < 100)
-	ui->perc_mashShow->setStyleSheet(bar_orange);
-    else
-	ui->perc_mashShow->setStyleSheet(bar_red);
+    if (value < 90) {
+        ui->perc_mashShow->setStyleSheet(bar_green);
+    } else {
+        double s1 = 90.0 / value;
+        if (value < 100) {
+            ui->perc_mashShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 orange, stop: 1 orange"
+                  ");}").arg(s1 - 0.00001).arg(s1));
+        } else {
+            double s2 = 100.0 / value;
+            ui->perc_mashShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 orange, stop: %3 orange, stop: %4 red, stop: 1 red"
+                  ");}").arg(s1 - 0.00003).arg(s1 - 0.00002).arg(s2 - 0.00001).arg(s2));
+        }
+    }
 }
 
 
 void EditRecipe::ferment_perc_sugars_valueChanged(int value)
 {
     if (value < 20)
-	ui->perc_sugarsShow->setStyleSheet(bar_green);
-    else
-	ui->perc_sugarsShow->setStyleSheet(bar_red);
+        ui->perc_sugarsShow->setStyleSheet(bar_green);
+    else {
+        double s1 = 20.0 / value;
+        ui->perc_sugarsShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 red, stop: 1 red);}").arg(s1 - 0.00001).arg(s1));
+    }
 }
 
 
 void EditRecipe::ferment_perc_cara_valueChanged(int value)
 {
     if (value < 25)
-	ui->perc_caraShow->setStyleSheet(bar_green);
-    else
-	ui->perc_caraShow->setStyleSheet(bar_red);
+        ui->perc_caraShow->setStyleSheet(bar_green);
+    else {
+        double s1 = 25.0 / value;
+        ui->perc_caraShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 green, stop: %1 green, stop: %2 red, stop: 1 red);}").arg(s1 - 0.00001).arg(s1));
+    }
 }
 
 
 void EditRecipe::ferment_lintner_valueChanged(int value)
 {
-    if (value < 30)
-	ui->lintnerShow->setStyleSheet(bar_red);
-    else if (value < 40)
-	ui->lintnerShow->setStyleSheet(bar_orange);
-    else
-	ui->lintnerShow->setStyleSheet(bar_green);
+    /*
+     * Calculate the color stop positions
+     */
+    if (value < 30) {
+        ui->lintnerShow->setStyleSheet(bar_red);
+    } else {
+        double s1 = 30.0 / value;
+        if (value < 40) {
+            ui->lintnerShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 red, stop: %1 red, stop: %2 orange, stop: 1 orange);}").arg(s1 - 0.00001).arg(s1));
+        } else {
+            double s2 = 40.0 / value;
+            ui->lintnerShow->setStyleSheet(QString("QProgressBar::chunk {background-color: qlineargradient(x0: 0, x2: 1, "
+                  "stop: 0 red, stop: %1 red, stop: %2 orange, stop: %3 orange, stop: %4 green, stop: 1 green"
+                  ");}").arg(s1 - 0.00003).arg(s1 - 0.00002).arg(s2 - 0.00001).arg(s2));
+        }
+    }
 }
 
 

mercurial