show number of torrents in each category in the top filter in client_test
This commit is contained in:
parent
3857d4b984
commit
b4ccc228bc
|
@ -210,8 +210,42 @@ typedef std::multimap<std::string, libtorrent::torrent_handle> handles_t;
|
||||||
|
|
||||||
using libtorrent::torrent_status;
|
using libtorrent::torrent_status;
|
||||||
|
|
||||||
bool show_torrent(libtorrent::torrent_status const& st, int torrent_filter)
|
bool show_torrent(libtorrent::torrent_status const& st, int torrent_filter, int* counters)
|
||||||
{
|
{
|
||||||
|
++counters[torrents_all];
|
||||||
|
|
||||||
|
if (!st.paused
|
||||||
|
&& st.state != torrent_status::seeding
|
||||||
|
&& st.state != torrent_status::finished)
|
||||||
|
{
|
||||||
|
++counters[torrents_downloading];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!st.paused) ++counters[torrents_not_paused];
|
||||||
|
|
||||||
|
if (!st.paused
|
||||||
|
&& (st.state == torrent_status::seeding
|
||||||
|
|| st.state == torrent_status::finished))
|
||||||
|
{
|
||||||
|
++counters[torrents_seeding];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (st.paused && st.auto_managed)
|
||||||
|
{
|
||||||
|
++counters[torrents_queued];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (st.paused && !st.auto_managed)
|
||||||
|
{
|
||||||
|
++counters[torrents_stopped];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (st.state == torrent_status::checking_files
|
||||||
|
|| st.state == torrent_status::queued_for_checking)
|
||||||
|
{
|
||||||
|
++counters[torrents_checking];
|
||||||
|
}
|
||||||
|
|
||||||
switch (torrent_filter)
|
switch (torrent_filter)
|
||||||
{
|
{
|
||||||
case torrents_all: return true;
|
case torrents_all: return true;
|
||||||
|
@ -911,6 +945,7 @@ int main(int argc, char* argv[])
|
||||||
// monitor when they're not in the directory anymore.
|
// monitor when they're not in the directory anymore.
|
||||||
std::vector<torrent_status> handles;
|
std::vector<torrent_status> handles;
|
||||||
handles_t files;
|
handles_t files;
|
||||||
|
int counters[torrents_max];
|
||||||
|
|
||||||
session ses(fingerprint("LT", LIBTORRENT_VERSION_MAJOR, LIBTORRENT_VERSION_MINOR, 0, 0)
|
session ses(fingerprint("LT", LIBTORRENT_VERSION_MAJOR, LIBTORRENT_VERSION_MINOR, 0, 0)
|
||||||
, session::add_default_plugins
|
, session::add_default_plugins
|
||||||
|
@ -1191,7 +1226,8 @@ int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
|
||||||
handles.clear();
|
handles.clear();
|
||||||
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter));
|
memset(counters, 0, sizeof(counters));
|
||||||
|
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter, (int*)counters));
|
||||||
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
||||||
|
|
||||||
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
||||||
|
@ -1221,7 +1257,8 @@ int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
--torrent_filter;
|
--torrent_filter;
|
||||||
handles.clear();
|
handles.clear();
|
||||||
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter));
|
memset(counters, 0, sizeof(counters));
|
||||||
|
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter, (int*)counters));
|
||||||
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
||||||
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
||||||
}
|
}
|
||||||
|
@ -1233,7 +1270,8 @@ int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
++torrent_filter;
|
++torrent_filter;
|
||||||
handles.clear();
|
handles.clear();
|
||||||
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter));
|
memset(counters, 0, sizeof(counters));
|
||||||
|
ses.get_torrent_status(&handles, boost::bind(&show_torrent, _1, torrent_filter, (int*)counters));
|
||||||
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
if (active_torrent >= handles.size()) active_torrent = handles.size() - 1;
|
||||||
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
std::sort(handles.begin(), handles.end(), &compare_torrent);
|
||||||
}
|
}
|
||||||
|
@ -1420,11 +1458,10 @@ int main(int argc, char* argv[])
|
||||||
char const* filter_names[] = { "all", "downloading", "non-paused", "seeding", "queued", "stopped", "checking"};
|
char const* filter_names[] = { "all", "downloading", "non-paused", "seeding", "queued", "stopped", "checking"};
|
||||||
for (int i = 0; i < sizeof(filter_names)/sizeof(filter_names[0]); ++i)
|
for (int i = 0; i < sizeof(filter_names)/sizeof(filter_names[0]); ++i)
|
||||||
{
|
{
|
||||||
out += '[';
|
char filter[200];
|
||||||
if (torrent_filter == i) out += esc("7");
|
snprintf(filter, sizeof(filter), "%s[%s (%d)]%s", torrent_filter == i?esc("7"):""
|
||||||
out += filter_names[i];
|
, filter_names[i], counters[i], torrent_filter == i?esc("0"):"");
|
||||||
if (torrent_filter == i) out += esc("0");
|
out += filter;
|
||||||
out += ']';
|
|
||||||
}
|
}
|
||||||
out += '\n';
|
out += '\n';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue