From ff477d3f7af8196738623e5ac1334b12dbff7691 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Thu, 26 May 2011 05:12:47 +0000 Subject: [PATCH] * Using the new rlookup commands for views. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1232 e378c898-3ddf-0310-93e7-cc216c733640 --- src/core/view.cc | 14 ++++---------- src/core/view.h | 2 -- src/core/view_manager.cc | 2 ++ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/core/view.cc b/src/core/view.cc index 441b84bd..bd365501 100644 --- a/src/core/view.cc +++ b/src/core/view.cc @@ -40,11 +40,12 @@ #include #include #include -#include #include #include #include +#include "rpc/parse_commands.h" +#include "rpc/object_storage.h" #include "control.h" #include "download.h" #include "download_list.h" @@ -322,19 +323,12 @@ View::filter_download(core::Download* download) { void View::set_filter_on_event(const std::string& event) { - if (std::find(m_events.begin(), m_events.end(), event) != m_events.end()) - return; - - rpc::commands.call_catch("method.set_key", rpc::make_target(), rpc::create_object_list(event, "!view." + m_name, "view.filter_download=" + m_name)); - m_events.push_back(event); + control->object_storage()->set_str_multi_key(event, "!view." + m_name, "view.filter_download=" + m_name); } void View::clear_filter_on() { - // Don't clear insert and erase as these are required to keep the - // View up-to-date with the available downloads. - for (event_list_type::const_iterator itr = m_events.begin(); itr != m_events.end(); itr++) - rpc::commands.call_catch("method.set_key", rpc::make_target(), rpc::create_object_list(*itr, "!view." + m_name)); + control->object_storage()->rlookup_clear("!view." + m_name); } inline void diff --git a/src/core/view.h b/src/core/view.h index 032767e0..23f8d2ad 100644 --- a/src/core/view.h +++ b/src/core/view.h @@ -65,7 +65,6 @@ class Download; class View : private std::vector { public: typedef std::vector base_type; - typedef std::vector event_list_type; typedef sigc::signal0 signal_type; using base_type::iterator; @@ -172,7 +171,6 @@ private: torrent::Object m_sortCurrent; torrent::Object m_filter; - event_list_type m_events; std::string m_eventAdded; std::string m_eventRemoved; diff --git a/src/core/view_manager.cc b/src/core/view_manager.cc index 91298e68..24e2d8be 100644 --- a/src/core/view_manager.cc +++ b/src/core/view_manager.cc @@ -115,6 +115,8 @@ ViewManager::set_filter_on(const std::string& name, const filter_args& args) { (*viewItr)->clear_filter_on(); + // TODO: Ensure the filter keys are rlookup. + for (filter_args::const_iterator itr = args.begin(); itr != args.end(); ++itr) (*viewItr)->set_filter_on_event(*itr); }