MP Lobby: removed manual player list sorting
It didn't make much sense to have these since there's really no situation you'd want
the "default" sorting order, which is however the server decided to send the list.
(cherry-picked from commit e754e64987
)
This commit is contained in:
parent
29632aeb75
commit
2873ad1c7e
7 changed files with 12 additions and 122 deletions
|
@ -176,64 +176,6 @@
|
|||
#enddef
|
||||
|
||||
#define _GUI_PLAYER_TREE_AREA
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
border = "top"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
vertical_grow = true
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
border = "all"
|
||||
border_size = 5
|
||||
|
||||
[label]
|
||||
definition = "default_small"
|
||||
label = _ "Sort players:"
|
||||
[/label]
|
||||
[/column]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
border = "left,right"
|
||||
border_size = 5
|
||||
|
||||
[toggle_button]
|
||||
id = "player_list_sort_relation"
|
||||
definition = "icon"
|
||||
icon = "lobby/sort-friend-off.png"
|
||||
tooltip = _ "Friends first, ignored people last"
|
||||
[/toggle_button]
|
||||
[/column]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
border = "left,right"
|
||||
border_size = 5
|
||||
|
||||
[toggle_button]
|
||||
id = "player_list_sort_name"
|
||||
definition = "icon"
|
||||
icon = "lobby/sort-az-off.png"
|
||||
tooltip = _ "Alphabetically"
|
||||
[/toggle_button]
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
grow_factor = 1
|
||||
|
||||
|
|
|
@ -146,6 +146,11 @@ void user_info::update_relation()
|
|||
}
|
||||
}
|
||||
|
||||
bool user_info::operator<(const user_info& b) const
|
||||
{
|
||||
return relation < b.relation || (relation == b.relation && translation::icompare(name, b.name) < 0);
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
const std::string& spaced_em_dash()
|
||||
|
|
|
@ -122,7 +122,7 @@ struct user_info
|
|||
SEL_GAME
|
||||
};
|
||||
|
||||
bool operator>(const user_info& b) const;
|
||||
bool operator<(const user_info& b) const;
|
||||
|
||||
std::string name;
|
||||
int game_id;
|
||||
|
|
|
@ -44,7 +44,6 @@ lobby_info::lobby_info(const config& game_config, const std::vector<std::string>
|
|||
, games_by_id_()
|
||||
, games_()
|
||||
, users_()
|
||||
, users_sorted_()
|
||||
, whispers_()
|
||||
, game_filters_()
|
||||
, game_filter_invert_(false)
|
||||
|
@ -208,12 +207,7 @@ void lobby_info::process_userlist()
|
|||
users_.emplace_back(c);
|
||||
}
|
||||
|
||||
users_sorted_.reserve(users_.size());
|
||||
users_sorted_.clear();
|
||||
|
||||
for(auto& u : users_) {
|
||||
users_sorted_.push_back(&u);
|
||||
}
|
||||
std::stable_sort(users_.begin(), users_.end());
|
||||
|
||||
for(auto& ui : users_) {
|
||||
if(ui.game_id == 0) {
|
||||
|
@ -373,16 +367,4 @@ void lobby_info::update_user_statuses(int game_id, const room_info* room)
|
|||
}
|
||||
}
|
||||
|
||||
void lobby_info::sort_users(bool by_name, bool by_relation)
|
||||
{
|
||||
std::sort(users_sorted_.begin(), users_sorted_.end(), [&](const user_info* u1, const user_info* u2) {
|
||||
if(by_name && by_relation) {
|
||||
return u1->relation < u2->relation ||
|
||||
(u1->relation == u2->relation && translation::icompare(u1->name, u2->name) < 0);
|
||||
}
|
||||
|
||||
return (by_name && translation::icompare(u1->name, u2->name) < 0) || (by_relation && u1->relation < u2->relation);
|
||||
});
|
||||
}
|
||||
|
||||
} // end namespace mp
|
||||
|
|
|
@ -90,15 +90,6 @@ public:
|
|||
/** Const overload of @ref get_game_by_id. */
|
||||
const game_info* get_game_by_id(int id) const;
|
||||
|
||||
/**
|
||||
* Sorts the user list by the given parameters.
|
||||
*
|
||||
* @param by_name Whether to sort users alphabetically by name.
|
||||
* @param by_relation Whether to sort users by their relation to each other (ie,
|
||||
* display friends before blocked users).
|
||||
*/
|
||||
void sort_users(bool by_name, bool by_relation);
|
||||
|
||||
/** Open a new chat room with the given name. */
|
||||
void open_room(const std::string& name);
|
||||
|
||||
|
@ -144,9 +135,9 @@ public:
|
|||
return users_;
|
||||
}
|
||||
|
||||
const std::vector<user_info*>& users_sorted() const
|
||||
std::vector<user_info>& users()
|
||||
{
|
||||
return users_sorted_;
|
||||
return users_;
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -167,7 +158,6 @@ private:
|
|||
std::vector<game_info*> games_;
|
||||
|
||||
std::vector<user_info> users_;
|
||||
std::vector<user_info*> users_sorted_;
|
||||
|
||||
std::map<std::string, chat_session> whispers_;
|
||||
|
||||
|
|
|
@ -110,18 +110,9 @@ void player_list::init(window& w)
|
|||
#endif
|
||||
other_games.init(w, _("Other Games"));
|
||||
|
||||
sort_by_name = find_widget<toggle_button>(&w, "player_list_sort_name", false, true);
|
||||
sort_by_relation = find_widget<toggle_button>(&w, "player_list_sort_relation", false, true);
|
||||
|
||||
tree = find_widget<tree_view>(&w, "player_tree", false, true);
|
||||
}
|
||||
|
||||
void player_list::update_sort_icons()
|
||||
{
|
||||
sort_by_name->set_icon_name(sort_by_name->get_value() ? "lobby/sort-az.png" : "lobby/sort-az-off.png");
|
||||
sort_by_relation->set_icon_name(sort_by_relation->get_value() ? "lobby/sort-friend.png" : "lobby/sort-friend-off.png");
|
||||
}
|
||||
|
||||
bool mp_lobby::logout_prompt()
|
||||
{
|
||||
return show_prompt(_("Do you really want to log out?"));
|
||||
|
@ -564,8 +555,6 @@ void mp_lobby::update_playerlist()
|
|||
SCOPE_LB;
|
||||
DBG_LB << "Playerlist update: " << lobby_info_.users().size() << "\n";
|
||||
lobby_info_.update_user_statuses(selected_game_id_, chatbox_->active_window_room());
|
||||
lobby_info_.sort_users(player_list_.sort_by_name->get_value_bool(),
|
||||
player_list_.sort_by_relation->get_value_bool());
|
||||
|
||||
#ifdef ENABLE_ROOM_MEMBER_TREE
|
||||
bool lobby = false;
|
||||
|
@ -592,8 +581,7 @@ void mp_lobby::update_playerlist()
|
|||
player_list_.other_games.tree->clear();
|
||||
player_list_.other_rooms.tree->clear();
|
||||
|
||||
for(auto userptr : lobby_info_.users_sorted()) {
|
||||
mp::user_info& user = *userptr;
|
||||
for(auto& user : lobby_info_.users()) {
|
||||
sub_player_list* target_list(nullptr);
|
||||
|
||||
std::string name = user.name;
|
||||
|
@ -680,7 +668,7 @@ void mp_lobby::update_playerlist()
|
|||
tree_view_node& player = target_list->tree->add_child("player", tree_group_item);
|
||||
|
||||
connect_signal_mouse_left_double_click(find_widget<toggle_panel>(&player, "tree_view_node_label", false),
|
||||
std::bind(&mp_lobby::user_dialog_callback, this, userptr));
|
||||
std::bind(&mp_lobby::user_dialog_callback, this, &user));
|
||||
}
|
||||
|
||||
player_list_.active_game.update_player_count_label();
|
||||
|
@ -738,15 +726,6 @@ void mp_lobby::pre_show(window& window)
|
|||
std::bind(&mp_lobby::gamelist_change_callback, this));
|
||||
|
||||
player_list_.init(window);
|
||||
player_list_.sort_by_name->set_value(preferences::playerlist_sort_name());
|
||||
player_list_.sort_by_relation->set_value(preferences::playerlist_sort_relation());
|
||||
player_list_.update_sort_icons();
|
||||
|
||||
connect_signal_notify_modified(*player_list_.sort_by_name,
|
||||
std::bind(&mp_lobby::player_filter_callback, this));
|
||||
|
||||
connect_signal_notify_modified(*player_list_.sort_by_relation,
|
||||
std::bind(&mp_lobby::player_filter_callback, this));
|
||||
|
||||
window.set_enter_disabled(true);
|
||||
|
||||
|
@ -1119,11 +1098,6 @@ void mp_lobby::gamelist_change_callback()
|
|||
|
||||
void mp_lobby::player_filter_callback()
|
||||
{
|
||||
player_list_.update_sort_icons();
|
||||
|
||||
preferences::set_playerlist_sort_relation(player_list_.sort_by_relation->get_value_bool());
|
||||
preferences::set_playerlist_sort_name(player_list_.sort_by_name->get_value_bool());
|
||||
|
||||
player_list_dirty_ = true;
|
||||
// get_window()->invalidate_layout();
|
||||
}
|
||||
|
|
|
@ -55,15 +55,12 @@ struct sub_player_list
|
|||
struct player_list
|
||||
{
|
||||
void init(window& w);
|
||||
void update_sort_icons();
|
||||
|
||||
sub_player_list active_game;
|
||||
sub_player_list active_room;
|
||||
sub_player_list other_rooms;
|
||||
sub_player_list other_games;
|
||||
|
||||
toggle_button* sort_by_name;
|
||||
toggle_button* sort_by_relation;
|
||||
|
||||
tree_view* tree;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue