mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-20 13:23:34 -07:00
Merge 8089b5903b
into 4f94eac235
This commit is contained in:
commit
b65de0b940
2 changed files with 33 additions and 1 deletions
|
@ -57,7 +57,7 @@ namespace
|
|||
TRACKERERROR_ROW,
|
||||
OTHERERROR_ROW,
|
||||
WARNING_ROW,
|
||||
|
||||
ONLY_HTTP_ROW, // Only HTTP special row
|
||||
NUM_SPECIAL_ROWS
|
||||
};
|
||||
|
||||
|
@ -97,12 +97,15 @@ namespace
|
|||
return TrackersFilterWidget::tr("All (%1)", "this is for the tracker filter");
|
||||
case TRACKERLESS_ROW:
|
||||
return TrackersFilterWidget::tr("Trackerless (%1)");
|
||||
case ONLY_HTTP_ROW:
|
||||
return TrackersFilterWidget::tr("Only HTTP (%1)");
|
||||
case TRACKERERROR_ROW:
|
||||
return TrackersFilterWidget::tr("Tracker error (%1)");
|
||||
case OTHERERROR_ROW:
|
||||
return TrackersFilterWidget::tr("Other error (%1)");
|
||||
case WARNING_ROW:
|
||||
return TrackersFilterWidget::tr("Warning (%1)");
|
||||
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
|
@ -141,6 +144,10 @@ TrackersFilterWidget::TrackersFilterWidget(QWidget *parent, TransferListWidget *
|
|||
warningItem->setData(Qt::DisplayRole, formatItemText(WARNING_ROW, 0));
|
||||
warningItem->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"tracker-warning"_s, u"dialog-warning"_s));
|
||||
|
||||
auto *onlyHttpItem = new QListWidgetItem(this);
|
||||
onlyHttpItem->setData(Qt::DisplayRole, formatItemText(ONLY_HTTP_ROW, 0));
|
||||
onlyHttpItem->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"trackers"_s, u"network-server"_s));
|
||||
|
||||
m_trackers[NULL_HOST] = {{}, trackerlessItem};
|
||||
|
||||
handleTorrentsLoaded(BitTorrent::Session::instance()->torrents());
|
||||
|
@ -714,7 +721,27 @@ QSet<BitTorrent::TorrentID> TrackersFilterWidget::getTorrentIDs(const int row) c
|
|||
return {m_trackerErrors.keyBegin(), m_trackerErrors.keyEnd()};
|
||||
case WARNING_ROW:
|
||||
return {m_warnings.keyBegin(), m_warnings.keyEnd()};
|
||||
case ONLY_HTTP_ROW:
|
||||
// Placeholder: implement the "only HTTP" logic later
|
||||
return {}; // TODO: Populate with IDs of torrents having only HTTP trackers
|
||||
default:
|
||||
return m_trackers.value(trackerFromRow(row)).torrents;
|
||||
}
|
||||
|
||||
bool TrackersFilterWidget::isOnlyHttpTrackers(const QList<BitTorrent::TrackerEntryStatus> &trackers)
|
||||
{
|
||||
if (trackers.isEmpty())
|
||||
return false;
|
||||
|
||||
bool anyHttps = false;
|
||||
for (const auto &tracker : trackers) {
|
||||
const QString scheme = QUrl(tracker.url).scheme();
|
||||
if (scheme.compare(u"https", Qt::CaseInsensitive) == 0)
|
||||
anyHttps = true;
|
||||
else if (!scheme.isEmpty() && scheme.compare(u"http", Qt::CaseInsensitive) != 0)
|
||||
return false;
|
||||
}
|
||||
return !anyHttps;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -85,6 +85,9 @@ private:
|
|||
void downloadFavicon(const QString &trackerHost, const QString &faviconURL);
|
||||
void removeTracker(const QString &tracker);
|
||||
|
||||
static bool isOnlyHttpTrackers(const QList<BitTorrent::TrackerEntryStatus> &trackers);
|
||||
QSet<BitTorrent::TorrentID> m_onlyHttpTorrents;
|
||||
|
||||
struct TrackerData
|
||||
{
|
||||
QSet<BitTorrent::TorrentID> torrents;
|
||||
|
@ -99,4 +102,6 @@ private:
|
|||
int m_totalTorrents = 0;
|
||||
bool m_downloadTrackerFavicon = false;
|
||||
QHash<QString, QSet<QString>> m_downloadingFavicons; // <favicon URL, tracker hosts>
|
||||
|
||||
static bool isOnlyHttpTrackers(const QList<BitTorrent::TrackerEntryStatus> &trackers);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue