mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-18 07:06:18 +00:00
Adding tracker group cycle.
Adding creation date display. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@468 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -8,9 +8,6 @@ allowed since the tracker set a min interval.
|
|||||||
|
|
||||||
Make accumulate return the value, no refs please...
|
Make accumulate return the value, no refs please...
|
||||||
|
|
||||||
> - listing the total upload / download bandwidth at the bottom of the
|
|
||||||
> screen;
|
|
||||||
|
|
||||||
> - seeing the number of seeds / leechers of a torrent on the main
|
> - seeing the number of seeds / leechers of a torrent on the main
|
||||||
> screen (and the level of distribution between leechers);
|
> screen (and the level of distribution between leechers);
|
||||||
|
|
||||||
@@ -19,12 +16,6 @@ Make accumulate return the value, no refs please...
|
|||||||
> slow or broken or for various reasons you don't want to download it.
|
> slow or broken or for various reasons you don't want to download it.
|
||||||
|
|
||||||
|
|
||||||
Show torrent creation date?
|
|
||||||
|
|
||||||
Recheck hash key.
|
|
||||||
|
|
||||||
Seperate download management from core::management.
|
Seperate download management from core::management.
|
||||||
|
|
||||||
Allow switching/cycling of tracker.
|
Recheck hash key.
|
||||||
|
|
||||||
Remember to add virtual dtor to OptionHandlerBase
|
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ public:
|
|||||||
void start(Download* d);
|
void start(Download* d);
|
||||||
void stop(Download* d);
|
void stop(Download* d);
|
||||||
|
|
||||||
|
void check_hash(Download* d);
|
||||||
|
|
||||||
void set_port_range(int a, int b) { m_portFirst = a; m_portLast = b; }
|
void set_port_range(int a, int b) { m_portFirst = a; m_portLast = b; }
|
||||||
|
|
||||||
void debug_tracker() { m_debugTracker = 0; }
|
void debug_tracker() { m_debugTracker = 0; }
|
||||||
|
|||||||
+17
-1
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <ctime>
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
@@ -68,4 +67,21 @@ print_hhmmss(utils::Timer t) {
|
|||||||
return str.str();
|
return str.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
print_ddmmyyyy(time_t t) {
|
||||||
|
std::tm *u = std::gmtime(&t);
|
||||||
|
|
||||||
|
if (u == NULL)
|
||||||
|
return "inv_time";
|
||||||
|
|
||||||
|
std::stringstream str;
|
||||||
|
str.fill('0');
|
||||||
|
|
||||||
|
str << std::setw(2) << u->tm_mday << '/'
|
||||||
|
<< std::setw(2) << u->tm_mon << '/'
|
||||||
|
<< std::setw(4) << (1900 + u->tm_year);
|
||||||
|
|
||||||
|
return str.str();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#ifndef RTORRENT_DISPLAY_UTILS_H
|
#ifndef RTORRENT_DISPLAY_UTILS_H
|
||||||
#define RTORRENT_DISPLAY_UTILS_H
|
#define RTORRENT_DISPLAY_UTILS_H
|
||||||
|
|
||||||
|
#include <ctime>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace core {
|
namespace core {
|
||||||
@@ -38,6 +39,7 @@ namespace display {
|
|||||||
std::string print_download_status(core::Download* d);
|
std::string print_download_status(core::Download* d);
|
||||||
|
|
||||||
std::string print_hhmmss(utils::Timer t);
|
std::string print_hhmmss(utils::Timer t);
|
||||||
|
std::string print_ddmmyyyy(time_t t);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "utils/parse.h"
|
#include "utils/parse.h"
|
||||||
#include "canvas.h"
|
#include "canvas.h"
|
||||||
|
#include "utils.h"
|
||||||
#include "window_peer_info.h"
|
#include "window_peer_info.h"
|
||||||
|
|
||||||
namespace display {
|
namespace display {
|
||||||
@@ -47,12 +48,14 @@ WindowPeerInfo::redraw() {
|
|||||||
int y = 0;
|
int y = 0;
|
||||||
torrent::Download d = m_download->get_download();
|
torrent::Download d = m_download->get_download();
|
||||||
|
|
||||||
m_canvas->print(0, y++, "Hash: %s", utils::string_to_hex(d.get_hash()).c_str());
|
m_canvas->print(0, y++, "Hash: %s", utils::string_to_hex(d.get_hash()).c_str());
|
||||||
m_canvas->print(0, y++, "Id: %s", utils::escape_string(d.get_id()).c_str());
|
m_canvas->print(0, y++, "Id: %s", utils::escape_string(d.get_id()).c_str());
|
||||||
m_canvas->print(0, y++, "Chunks: %u / %u * %u",
|
m_canvas->print(0, y++, "Chunks: %u / %u * %u",
|
||||||
d.get_chunks_done(),
|
d.get_chunks_done(),
|
||||||
d.get_chunks_total(),
|
d.get_chunks_total(),
|
||||||
d.get_chunks_size());
|
d.get_chunks_size());
|
||||||
|
m_canvas->print(0, y++, "Created: %s",
|
||||||
|
print_ddmmyyyy(static_cast<time_t>(d.get_creation_date())).c_str());
|
||||||
|
|
||||||
y++;
|
y++;
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
// No members with dtor's allowed.
|
// No members with dtor's allowed.
|
||||||
struct OptionHandlerBase {
|
struct OptionHandlerBase {
|
||||||
|
virtual ~OptionHandlerBase() {}
|
||||||
|
|
||||||
virtual void process(const std::string& key, const std::string& arg) = 0;
|
virtual void process(const std::string& key, const std::string& arg) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -267,11 +267,12 @@ Download::bind_keys() {
|
|||||||
(*m_bindings)[KEY_DOWN] = sigc::mem_fun(*this, &Download::receive_next);
|
(*m_bindings)[KEY_DOWN] = sigc::mem_fun(*this, &Download::receive_next);
|
||||||
|
|
||||||
// Key bindings for sub-ui's.
|
// Key bindings for sub-ui's.
|
||||||
m_uiArray[DISPLAY_PEER_LIST]->get_bindings()[KEY_RIGHT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_FILE_LIST);
|
m_uiArray[DISPLAY_PEER_LIST]->get_bindings()[KEY_RIGHT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_FILE_LIST);
|
||||||
m_uiArray[DISPLAY_PEER_INFO]->get_bindings()[' '] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
m_uiArray[DISPLAY_PEER_INFO]->get_bindings()[KEY_LEFT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
||||||
m_uiArray[DISPLAY_FILE_LIST]->get_bindings()[KEY_LEFT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
m_uiArray[DISPLAY_FILE_LIST]->get_bindings()[KEY_LEFT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
||||||
m_uiArray[DISPLAY_TRACKER_LIST]->get_bindings()[' '] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
m_uiArray[DISPLAY_TRACKER_LIST]->get_bindings()[KEY_LEFT] = sigc::bind(sigc::mem_fun(*this, &Download::receive_change), DISPLAY_PEER_LIST);
|
||||||
|
|
||||||
|
// Doesn't belong here.
|
||||||
m_uiArray[DISPLAY_PEER_LIST]->get_bindings()['*'] = sigc::mem_fun(*this, &Download::receive_snub_peer);
|
m_uiArray[DISPLAY_PEER_LIST]->get_bindings()['*'] = sigc::mem_fun(*this, &Download::receive_snub_peer);
|
||||||
m_uiArray[DISPLAY_PEER_INFO]->get_bindings()['*'] = sigc::mem_fun(*this, &Download::receive_snub_peer);
|
m_uiArray[DISPLAY_PEER_INFO]->get_bindings()['*'] = sigc::mem_fun(*this, &Download::receive_snub_peer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ ElementTrackerList::ElementTrackerList(core::Download* d) :
|
|||||||
m_focus(0) {
|
m_focus(0) {
|
||||||
|
|
||||||
m_bindings[KEY_DOWN] = sigc::mem_fun(*this, &ElementTrackerList::receive_next);
|
m_bindings[KEY_DOWN] = sigc::mem_fun(*this, &ElementTrackerList::receive_next);
|
||||||
m_bindings[KEY_UP] = sigc::mem_fun(*this, &ElementTrackerList::receive_prev);
|
m_bindings[KEY_UP] = sigc::mem_fun(*this, &ElementTrackerList::receive_prev);
|
||||||
|
m_bindings[' '] = sigc::mem_fun(*this, &ElementTrackerList::receive_cycle_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -88,4 +89,17 @@ ElementTrackerList::receive_prev() {
|
|||||||
m_window->mark_dirty();
|
m_window->mark_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ElementTrackerList::receive_cycle_group() {
|
||||||
|
if (m_window == NULL)
|
||||||
|
throw std::logic_error("ui::ElementTrackerList::receive_group_cycle(...) called on a disabled object");
|
||||||
|
|
||||||
|
if (m_focus >= m_download->get_download().get_tracker_size())
|
||||||
|
throw std::logic_error("ui::ElementTrackerList::receive_group_cycle(...) called with an invalid focus");
|
||||||
|
|
||||||
|
m_download->get_download().cycle_tracker_group(m_download->get_download().get_tracker(m_focus).get_group());
|
||||||
|
|
||||||
|
m_window->mark_dirty();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ private:
|
|||||||
void receive_next();
|
void receive_next();
|
||||||
void receive_prev();
|
void receive_prev();
|
||||||
|
|
||||||
|
void receive_cycle_group();
|
||||||
|
|
||||||
core::Download* m_download;
|
core::Download* m_download;
|
||||||
WTrackerList* m_window;
|
WTrackerList* m_window;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user