diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp
index de5845fe3..074c10efa 100644
--- a/src/base/preferences.cpp
+++ b/src/base/preferences.cpp
@@ -186,6 +186,19 @@ void Preferences::setAlternatingRowColors(const bool b)
setValue(u"Preferences/General/AlternatingRowColors"_s, b);
}
+bool Preferences::useColorCodedProgressBar() const
+{
+ return value(u"Preferences/General/ColorCodedProgressBar"_s, true);
+}
+
+void Preferences::setColorCodedProgressBar(const bool b)
+{
+ if (b == useColorCodedProgressBar())
+ return;
+
+ setValue(u"Preferences/General/ColorCodedProgressBar"_s, b);
+}
+
bool Preferences::getHideZeroValues() const
{
return value(u"Preferences/General/HideZeroValues"_s, false);
diff --git a/src/base/preferences.h b/src/base/preferences.h
index bfe53d150..6133bf80d 100644
--- a/src/base/preferences.h
+++ b/src/base/preferences.h
@@ -113,6 +113,8 @@ public:
void showSpeedInTitleBar(bool show);
bool useAlternatingRowColors() const;
void setAlternatingRowColors(bool b);
+ bool useColorCodedProgressBar() const;
+ void setColorCodedProgressBar(bool b);
bool getHideZeroValues() const;
void setHideZeroValues(bool b);
int getHideZeroComboValues() const;
diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp
index 2d184daea..7d85bc680 100644
--- a/src/gui/optionsdialog.cpp
+++ b/src/gui/optionsdialog.cpp
@@ -261,6 +261,7 @@ void OptionsDialog::loadBehaviorTabOptions()
m_ui->confirmDeletion->setChecked(pref->confirmTorrentDeletion());
m_ui->checkAltRowColors->setChecked(pref->useAlternatingRowColors());
+ m_ui->colorCodedProgressBar->setChecked(pref->useColorCodedProgressBar());
m_ui->checkHideZero->setChecked(pref->getHideZeroValues());
m_ui->comboHideZero->setCurrentIndex(pref->getHideZeroComboValues());
m_ui->comboHideZero->setEnabled(m_ui->checkHideZero->isChecked());
@@ -389,6 +390,7 @@ void OptionsDialog::loadBehaviorTabOptions()
connect(m_ui->confirmDeletion, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkAltRowColors, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
+ connect(m_ui->colorCodedProgressBar, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkHideZero, &QAbstractButton::toggled, m_ui->comboHideZero, &QWidget::setEnabled);
connect(m_ui->checkHideZero, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->comboHideZero, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton);
@@ -483,6 +485,7 @@ void OptionsDialog::saveBehaviorTabOptions() const
pref->setConfirmTorrentDeletion(m_ui->confirmDeletion->isChecked());
pref->setAlternatingRowColors(m_ui->checkAltRowColors->isChecked());
+ pref->setColorCodedProgressBar(m_ui->colorCodedProgressBar->isChecked());
pref->setHideZeroValues(m_ui->checkHideZero->isChecked());
pref->setHideZeroComboValues(m_ui->comboHideZero->currentIndex());
diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui
index 188a9c564..b66be9a2e 100644
--- a/src/gui/optionsdialog.ui
+++ b/src/gui/optionsdialog.ui
@@ -297,6 +297,16 @@
+ -
+
+
+ Use color-coded progress bar
+
+
+ true
+
+
+
-
-
diff --git a/src/gui/transferlistdelegate.cpp b/src/gui/transferlistdelegate.cpp
index ba890599c..c8598ddbe 100644
--- a/src/gui/transferlistdelegate.cpp
+++ b/src/gui/transferlistdelegate.cpp
@@ -31,6 +31,7 @@
#include
#include "transferlistmodel.h"
+#include "base/preferences.h"
TransferListDelegate::TransferListDelegate(QObject *parent)
: QStyledItemDelegate {parent}
@@ -90,7 +91,12 @@ void TransferListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
QStyleOptionViewItem customOption {option};
customOption.state.setFlag(QStyle::State_Enabled, isEnableState(torrentState));
- const QColor color = index.data(Qt::ForegroundRole).value();
+ QColor color = {};
+
+ if (Preferences::instance()->useColorCodedProgressBar())
+ {
+ color = index.data(Qt::ForegroundRole).value();
+ }
m_progressBarPainter.paint(painter, customOption, index.data().toString(), progress, color);
}