Browse Source

Track settings changed event in TransferListModel

adaptive-webui-19844
Vladimir Golovnev (Glassez) 5 years ago
parent
commit
666e733a4a
No known key found for this signature in database
GPG Key ID: 52A2C7DEE2DFA6F7
  1. 29
      src/gui/transferlistmodel.cpp
  2. 10
      src/gui/transferlistmodel.h

29
src/gui/transferlistmodel.cpp

@ -105,6 +105,9 @@ TransferListModel::TransferListModel(QObject *parent)
{BitTorrent::TorrentState::Error, getColorByState(BitTorrent::TorrentState::Error)} {BitTorrent::TorrentState::Error, getColorByState(BitTorrent::TorrentState::Error)}
} }
{ {
configure();
connect(Preferences::instance(), &Preferences::changed, this, &TransferListModel::configure);
// Load the torrents // Load the torrents
using namespace BitTorrent; using namespace BitTorrent;
for (TorrentHandle *const torrent : asConst(Session::instance()->torrents())) 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 QString TransferListModel::displayValue(const BitTorrent::TorrentHandle *torrent, const int column) const
{ {
const bool isHideState = (Preferences::instance()->getHideZeroComboValues() == 0) bool hideValues = false;
|| (torrent->state() == BitTorrent::TorrentState::PausedDownloading); // paused torrents only if (m_hideZeroValuesMode == HideZeroValuesMode::Always)
const bool hideValues = Preferences::instance()->getHideZeroValues() && isHideState; hideValues = true;
else if (m_hideZeroValuesMode != HideZeroValuesMode::Never)
hideValues = (torrent->state() == BitTorrent::TorrentState::PausedDownloading);
const auto availabilityString = [hideValues](const qreal value) -> QString 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) void TransferListModel::setStateForeground(const BitTorrent::TorrentState state, const QColor &color)
{ {
m_stateForegroundColors[state] = color; m_stateForegroundColors[state] = color;

10
src/gui/transferlistmodel.h

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

Loading…
Cancel
Save