summaryrefslogtreecommitdiffstats
path: root/rtorrent-extended/canvas_color.patch
diff options
context:
space:
mode:
Diffstat (limited to 'rtorrent-extended/canvas_color.patch')
-rw-r--r--rtorrent-extended/canvas_color.patch282
1 files changed, 282 insertions, 0 deletions
diff --git a/rtorrent-extended/canvas_color.patch b/rtorrent-extended/canvas_color.patch
new file mode 100644
index 0000000..88423b1
--- /dev/null
+++ b/rtorrent-extended/canvas_color.patch
@@ -0,0 +1,282 @@
+diff --git a/src/command_network.cc b/src/command_network.cc
+index 2494988..7b105ca 100644
+--- a/src/command_network.cc
++++ b/src/command_network.cc
+@@ -560,4 +560,8 @@ initialize_command_network() {
+ // Not really network stuff:
+ ADD_VARIABLE_BOOL ("handshake_log", false);
+ ADD_VARIABLE_STRING("log.tracker", "");
++ ADD_COMMAND_VALUE_TRI("done_fg_color", rak::make_mem_fun(control->ui(), &ui::Root::set_done_fg_color), rak::make_mem_fun(control->ui(), &ui::Root::get_done_fg_color));
++ ADD_COMMAND_VALUE_TRI("done_bg_color", rak::make_mem_fun(control->ui(), &ui::Root::set_done_bg_color), rak::make_mem_fun(control->ui(), &ui::Root::get_done_bg_color));
++ ADD_COMMAND_VALUE_TRI("active_fg_color", rak::make_mem_fun(control->ui(), &ui::Root::set_active_fg_color), rak::make_mem_fun(control->ui(), &ui::Root::get_active_fg_color));
++ ADD_COMMAND_VALUE_TRI("active_bg_color", rak::make_mem_fun(control->ui(), &ui::Root::set_active_bg_color), rak::make_mem_fun(control->ui(), &ui::Root::get_active_bg_color));
+ }
+diff --git a/src/display/canvas.cc b/src/display/canvas.cc
+index 4e621df..0c97eea 100644
+--- a/src/display/canvas.cc
++++ b/src/display/canvas.cc
+@@ -92,6 +92,10 @@ Canvas::initialize() {
+ m_isInitialized = true;
+
+ initscr();
++ start_color();
++ use_default_colors();
++ init_pair(2, -1, -1);
++ init_pair(1, -1, -1);
+ raw();
+ noecho();
+ nodelay(stdscr, TRUE);
+diff --git a/src/display/window_download_list.cc b/src/display/window_download_list.cc
+index 71efec0..06e7cd4 100644
+--- a/src/display/window_download_list.cc
++++ b/src/display/window_download_list.cc
+@@ -37,6 +37,7 @@
+ #include "config.h"
+
+ #include <rak/algorithm.h>
++#include <torrent/rate.h>
+
+ #include "core/download.h"
+ #include "core/view.h"
+@@ -96,12 +97,30 @@ WindowDownloadList::redraw() {
+ char* position;
+ char* last = buffer + m_canvas->width() - 2 + 1;
+
++ if( pos >= m_canvas->height() ) break;
+ position = print_download_title(buffer, last, *range.first);
+- m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
++ m_canvas->print(0, pos, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
++ if( (*range.first)->is_done() ) {
++ if( (*range.first)->download()->up_rate()->rate() != 0 ) {
++ m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 2);
++ } else {
++ m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 2);
++ }
++ } else if( (*range.first)->download()->is_active() ) {
++ if( (*range.first)->download()->down_rate()->rate() != 0 ) {
++ m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 1);
++ } else {
++ m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 1);
++ }
++ }
++ pos++;
+
++ if( pos >= m_canvas->height() ) break;
++
+ position = print_download_info(buffer, last, *range.first);
+ m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
+
++ if( pos >= m_canvas->height() ) break;
+ position = print_download_status(buffer, last, *range.first);
+ m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
+
+@@ -109,4 +128,40 @@ WindowDownloadList::redraw() {
+ }
+ }
+
++void
++WindowDownloadList::set_done_fg_color(int64_t color) {
++ short fg, bg;
++ pair_content(2, &fg, &bg);
++ if( color < 0 ) color = -1;
++ color = color % 8;
++ init_pair(2, (short)color, bg);
++}
++
++void
++WindowDownloadList::set_done_bg_color(int64_t color) {
++ short fg, bg;
++ pair_content(2, &fg, &bg);
++ if( color < 0 ) color = -1;
++ color = color % 8;
++ init_pair(2, fg, (short)color);
++}
++
++void
++WindowDownloadList::set_active_fg_color(int64_t color) {
++ short fg, bg;
++ pair_content(1, &fg, &bg);
++ if( color < 0 ) color = -1;
++ color = color % 8;
++ init_pair(1, (short)color, bg);
++}
++
++void
++WindowDownloadList::set_active_bg_color(int64_t color) {
++ short fg, bg;
++ pair_content(1, &fg, &bg);
++ if( color < 0 ) color = -1;
++ color = color % 8;
++ init_pair(1, fg, (short)color);
++}
++
+ }
+diff --git a/src/display/window_download_list.h b/src/display/window_download_list.h
+index 4ce5ea1..313e87b 100644
+--- a/src/display/window_download_list.h
++++ b/src/display/window_download_list.h
+@@ -59,6 +59,10 @@ public:
+ virtual void redraw();
+
+ void set_view(core::View* l);
++ void set_done_fg_color(int64_t color);
++ void set_done_bg_color(int64_t color);
++ void set_active_fg_color(int64_t color);
++ void set_active_bg_color(int64_t color);
+
+ private:
+ core::View* m_view;
+diff --git a/src/ui/download_list.cc b/src/ui/download_list.cc
+index b7d6983..e72bff6 100644
+--- a/src/ui/download_list.cc
++++ b/src/ui/download_list.cc
+@@ -137,6 +137,11 @@ DownloadList::unfocus_download(core::Download* d) {
+ current_view()->next_focus();
+ }
+
++display::WindowDownloadList*
++DownloadList::current_window_list() {
++ return dynamic_cast<ElementDownloadList*>(m_uiArray[DISPLAY_DOWNLOAD_LIST])->window();
++}
++
+ void
+ DownloadList::activate_display(Display displayType) {
+ if (!is_active())
+diff --git a/src/ui/download_list.h b/src/ui/download_list.h
+index dda1b34..11137fa 100644
+--- a/src/ui/download_list.h
++++ b/src/ui/download_list.h
+@@ -101,6 +101,7 @@ public:
+ void activate_display(Display d);
+
+ core::View* current_view();
++ display::WindowDownloadList* current_window_list();
+ void set_current_view(const std::string& name);
+
+ void slot_open_uri(SlotOpenUri s) { m_slotOpenUri = s; }
+diff --git a/src/ui/element_download_list.h b/src/ui/element_download_list.h
+index ed5de30..7c0fb9d 100644
+--- a/src/ui/element_download_list.h
++++ b/src/ui/element_download_list.h
+@@ -60,6 +60,7 @@ public:
+ void disable();
+
+ core::View* view() { return m_view; }
++ WDownloadList* window() { return m_window; }
+ void set_view(core::View* l);
+
+ void receive_command(const char* cmd);
+diff --git a/src/ui/root.cc b/src/ui/root.cc
+index b01f4ed..d344718 100644
+--- a/src/ui/root.cc
++++ b/src/ui/root.cc
+@@ -44,6 +44,7 @@
+
+ #include "core/manager.h"
+ #include "display/frame.h"
++#include "display/window_download_list.h"
+ #include "display/window_http_queue.h"
+ #include "display/window_title.h"
+ #include "display/window_input.h"
+@@ -65,7 +66,11 @@ Root::Root() :
+ m_windowTitle(NULL),
+ m_windowHttpQueue(NULL),
+ m_windowInput(NULL),
+- m_windowStatusbar(NULL) {
++ m_windowStatusbar(NULL),
++ done_fg_color(-1),
++ done_bg_color(-1),
++ active_fg_color(-1),
++ active_bg_color(-1) {
+ }
+
+ void
+@@ -97,6 +102,10 @@ Root::init(Control* c) {
+ setup_keys();
+
+ m_downloadList->activate(rootFrame->frame(1));
++ m_downloadList->current_window_list()->set_done_fg_color(done_fg_color);
++ m_downloadList->current_window_list()->set_done_bg_color(done_bg_color);
++ m_downloadList->current_window_list()->set_active_fg_color(active_fg_color);
++ m_downloadList->current_window_list()->set_active_bg_color(active_bg_color);
+ }
+
+ void
+@@ -219,6 +228,46 @@ Root::set_up_throttle(unsigned int throttle) {
+ torrent::set_max_unchoked(maxUnchoked);
+ }
+
++int
++Root::get_done_fg_color() {
++ return done_fg_color;
++}
++
++void
++Root::set_done_fg_color(int64_t color) {
++ done_fg_color = color;
++}
++
++int
++Root::get_done_bg_color() {
++ return done_bg_color;
++}
++
++void
++Root::set_done_bg_color(int64_t color) {
++ done_bg_color = color;
++}
++
++int
++Root::get_active_fg_color() {
++ return active_fg_color;
++}
++
++void
++Root::set_active_fg_color(int64_t color) {
++ active_fg_color = color;
++}
++
++int
++Root::get_active_bg_color() {
++ return active_bg_color;
++}
++
++void
++Root::set_active_bg_color(int64_t color) {
++ active_bg_color = color;
++}
++
+ void
+ Root::adjust_down_throttle(int throttle) {
+ set_down_throttle(std::max<int>(torrent::down_throttle_global()->max_rate() / 1024 + throttle, 0));
+diff --git a/src/ui/root.h b/src/ui/root.h
+index e9a7907..4eef1df 100644
+--- a/src/ui/root.h
++++ b/src/ui/root.h
+@@ -83,6 +83,15 @@ public:
+ void set_down_throttle_i64(int64_t throttle) { set_down_throttle(throttle >> 10); }
+ void set_up_throttle_i64(int64_t throttle) { set_up_throttle(throttle >> 10); }
+
++ int get_done_fg_color();
++ void set_done_fg_color(int64_t color);
++ int get_done_bg_color();
++ void set_done_bg_color(int64_t color);
++ int get_active_fg_color();
++ void set_active_fg_color(int64_t color);
++ int get_active_bg_color();
++ void set_active_bg_color(int64_t color);
++
+ void adjust_down_throttle(int throttle);
+ void adjust_up_throttle(int throttle);
+
+@@ -105,6 +114,10 @@ private:
+ WStatusbar* m_windowStatusbar;
+
+ input::Bindings m_bindings;
++ int64_t done_fg_color;
++ int64_t done_bg_color;
++ int64_t active_fg_color;
++ int64_t active_bg_color;
+ };
+
+ }