* Fixed mismatched delete/delete[] in torrent::Bitfield::resize.

* Added 'view_sort_current', changed 'view_sort' to sort according to
what was defined by the former option.

* 'view_sort_*' now takes a list of sorting options which are applied
in order.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@673 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2006-04-24 23:22:57 +00:00
parent 598455a5df
commit 19179bd160
8 changed files with 115 additions and 95 deletions
+26 -22
View File
@@ -183,26 +183,24 @@ apply_tos(const std::string& arg) {
}
void
apply_view_add(Control* control, const std::string& arg) {
// Restrict the range of characters.
control->view_manager()->insert(rak::trim(arg));
}
void
apply_view_sort(Control* control, const std::string& arg) {
apply_view_sort_current(Control* control, const std::string& arg) {
rak::split_iterator_t<std::string> itr = rak::split_iterator(arg, ',');
std::string name = rak::trim(*itr);
++itr;
std::string sort = rak::trim(*itr);
++itr;
if (name.empty())
throw torrent::input_error("First argument must be a string.");
if (name.empty() || sort.empty() || itr != rak::split_iterator(arg))
throw torrent::input_error("Invalid number of arguments.");
core::ViewManager::sort_args sortArgs;
control->view_manager()->sort(name, sort);
while (++itr != rak::split_iterator(arg)) {
sortArgs.push_back(rak::trim(*itr));
if (sortArgs.back().empty())
throw torrent::input_error("One of the arguments is empty.");
}
control->view_manager()->set_sort_current(name, sortArgs);
}
void
@@ -210,15 +208,20 @@ apply_view_sort_new(Control* control, const std::string& arg) {
rak::split_iterator_t<std::string> itr = rak::split_iterator(arg, ',');
std::string name = rak::trim(*itr);
++itr;
std::string sort = rak::trim(*itr);
++itr;
if (name.empty())
throw torrent::input_error("First argument must be a string.");
if (name.empty() || sort.empty() || itr != rak::split_iterator(arg))
throw torrent::input_error("Invalid number of arguments.");
core::ViewManager::sort_args sortArgs;
control->view_manager()->set_sort_new(name, sort);
while (++itr != rak::split_iterator(arg)) {
sortArgs.push_back(rak::trim(*itr));
if (sortArgs.back().empty())
throw torrent::input_error("One of the arguments is empty.");
}
control->view_manager()->set_sort_new(name, sortArgs);
}
void
@@ -271,9 +274,10 @@ initialize_option_handler(Control* c) {
variables->insert("try_import", new utils::VariableStringSlot(rak::value_fn(std::string()),
rak::mem_fn(control->variable(), &utils::VariableMap::process_file_nothrow)));
variables->insert("view_add", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::bind_ptr_fn(&apply_view_add, c)));
variables->insert("view_sort", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::bind_ptr_fn(&apply_view_sort, c)));
variables->insert("view_add", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::mem_fn(c->view_manager(), &core::ViewManager::insert_throw)));
variables->insert("view_sort", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::mem_fn(c->view_manager(), &core::ViewManager::sort)));
variables->insert("view_sort_new", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::bind_ptr_fn(&apply_view_sort_new, c)));
variables->insert("view_sort_current", new utils::VariableStringSlot(rak::value_fn(std::string()), rak::bind_ptr_fn(&apply_view_sort_current, c)));
variables->insert("schedule", new utils::VariableStringSlot(rak::value_fn(std::string()),
rak::mem_fn<const std::string&>(c->command_scheduler(), &CommandScheduler::parse)));