Merge pull request #11914 from glassez/fix-hide-zeroes

Fix hide zero values
This commit is contained in:
Vladimir Golovnev 2020-01-24 19:03:54 +03:00 committed by GitHub
commit 07c22f8c87
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 3 deletions

View file

@ -105,6 +105,9 @@ TransferListModel::TransferListModel(QObject *parent)
{BitTorrent::TorrentState::Error, getColorByState(BitTorrent::TorrentState::Error)}
}
{
configure();
connect(Preferences::instance(), &Preferences::changed, this, &TransferListModel::configure);
// Load the torrents
using namespace BitTorrent;
for (TorrentHandle *const torrent : asConst(Session::instance()->torrents()))
@ -205,9 +208,11 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation,
QString TransferListModel::displayValue(const BitTorrent::TorrentHandle *torrent, const int column) const
{
const bool isHideState = (Preferences::instance()->getHideZeroComboValues() == 1)
&& (torrent->state() == BitTorrent::TorrentState::PausedDownloading); // paused torrents only
const bool hideValues = Preferences::instance()->getHideZeroValues() && isHideState;
bool hideValues = false;
if (m_hideZeroValuesMode == HideZeroValuesMode::Always)
hideValues = true;
else if (m_hideZeroValuesMode != HideZeroValuesMode::Never)
hideValues = (torrent->state() == BitTorrent::TorrentState::PausedDownloading);
const auto availabilityString = [hideValues](const qreal value) -> QString
{
@ -575,6 +580,24 @@ void TransferListModel::handleTorrentsUpdated(const QVector<BitTorrent::TorrentH
}
}
void TransferListModel::configure()
{
const Preferences *pref = Preferences::instance();
HideZeroValuesMode hideZeroValuesMode = HideZeroValuesMode::Never;
if (pref->getHideZeroValues()) {
if (pref->getHideZeroComboValues() == 1)
hideZeroValuesMode = HideZeroValuesMode::Paused;
else
hideZeroValuesMode = HideZeroValuesMode::Always;
}
if (m_hideZeroValuesMode != hideZeroValuesMode) {
m_hideZeroValuesMode = hideZeroValuesMode;
emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1)));
}
}
void TransferListModel::setStateForeground(const BitTorrent::TorrentState state, const QColor &color)
{
m_stateForegroundColors[state] = color;

View file

@ -111,6 +111,7 @@ private slots:
void handleTorrentsUpdated(const QVector<BitTorrent::TorrentHandle *> &torrents);
private:
void configure();
QString displayValue(const BitTorrent::TorrentHandle *torrent, int column) const;
QVariant internalValue(const BitTorrent::TorrentHandle *torrent, int column, bool alt = false) const;
@ -119,6 +120,15 @@ private:
const QHash<BitTorrent::TorrentState, QString> m_statusStrings;
// row text colors
QHash<BitTorrent::TorrentState, QColor> m_stateForegroundColors;
enum class HideZeroValuesMode
{
Never,
Paused,
Always
};
HideZeroValuesMode m_hideZeroValuesMode = HideZeroValuesMode::Never;
};
#endif // TRANSFERLISTMODEL_H