Add sorting by name for lobby
This commit is contained in:
parent
a4e448576b
commit
39f9d1043e
@ -8,6 +8,7 @@
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QListWidget>
|
||||
#include <QTreeWidget>
|
||||
#include <QLabel>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QLineEdit>
|
||||
@ -64,7 +65,7 @@ private:
|
||||
QLabel *ui_version;
|
||||
AOButton *ui_about;
|
||||
|
||||
QListWidget *ui_server_list;
|
||||
QTreeWidget *ui_server_list;
|
||||
|
||||
QLabel *ui_player_count;
|
||||
AOTextArea *ui_description;
|
||||
@ -79,7 +80,7 @@ private:
|
||||
QProgressBar *ui_progress_bar;
|
||||
AOButton *ui_cancel;
|
||||
|
||||
QModelIndex last_model;
|
||||
int last_index;
|
||||
|
||||
void set_size_and_pos(QWidget *p_widget, QString p_identifier);
|
||||
|
||||
@ -94,8 +95,8 @@ private slots:
|
||||
void on_connect_pressed();
|
||||
void on_connect_released();
|
||||
void on_about_clicked();
|
||||
void on_server_list_clicked(QModelIndex p_model);
|
||||
void on_server_list_doubleclicked(QModelIndex p_model);
|
||||
void on_server_list_clicked(QTreeWidgetItem* p_item, int column);
|
||||
void on_server_list_doubleclicked(QTreeWidgetItem* p_item, int column);
|
||||
void on_chatfield_return_pressed();
|
||||
};
|
||||
|
||||
|
@ -20,7 +20,11 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow()
|
||||
ui_connect = new AOButton(this, ao_app);
|
||||
ui_version = new QLabel(this);
|
||||
ui_about = new AOButton(this, ao_app);
|
||||
ui_server_list = new QListWidget(this);
|
||||
|
||||
ui_server_list = new QTreeWidget(this);
|
||||
ui_server_list->setHeaderLabels({"#", "Name"});//, "Players"});
|
||||
ui_server_list->hideColumn(0);
|
||||
|
||||
ui_player_count = new QLabel(this);
|
||||
ui_description = new AOTextArea(this);
|
||||
ui_description->setOpenExternalLinks(true);
|
||||
@ -47,8 +51,8 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow()
|
||||
connect(ui_connect, SIGNAL(pressed()), this, SLOT(on_connect_pressed()));
|
||||
connect(ui_connect, SIGNAL(released()), this, SLOT(on_connect_released()));
|
||||
connect(ui_about, SIGNAL(clicked()), this, SLOT(on_about_clicked()));
|
||||
connect(ui_server_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_server_list_clicked(QModelIndex)));
|
||||
connect(ui_server_list, SIGNAL(activated(QModelIndex)), this, SLOT(on_server_list_doubleclicked(QModelIndex)));
|
||||
connect(ui_server_list, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(on_server_list_clicked(QTreeWidgetItem*, int)));
|
||||
connect(ui_server_list, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(on_server_list_doubleclicked(QTreeWidgetItem*, int)));
|
||||
connect(ui_chatmessage, SIGNAL(returnPressed()), this, SLOT(on_chatfield_return_pressed()));
|
||||
connect(ui_cancel, SIGNAL(clicked()), ao_app, SLOT(loading_cancelled()));
|
||||
|
||||
@ -252,7 +256,7 @@ QString Lobby::get_chatlog()
|
||||
|
||||
int Lobby::get_selected_server()
|
||||
{
|
||||
return ui_server_list->currentRow();
|
||||
return ui_server_list->currentItem()->text(0).toInt();
|
||||
}
|
||||
|
||||
void Lobby::set_loading_value(int p_value)
|
||||
@ -310,7 +314,7 @@ void Lobby::on_add_to_fav_released()
|
||||
if (!public_servers_selected)
|
||||
return;
|
||||
|
||||
ao_app->add_favorite_server(ui_server_list->currentRow());
|
||||
ao_app->add_favorite_server(get_selected_server());
|
||||
}
|
||||
|
||||
void Lobby::on_connect_pressed()
|
||||
@ -355,32 +359,33 @@ void Lobby::on_about_clicked()
|
||||
}
|
||||
|
||||
//clicked on an item in the serverlist
|
||||
void Lobby::on_server_list_clicked(QModelIndex p_model)
|
||||
void Lobby::on_server_list_clicked(QTreeWidgetItem* p_item, int column)
|
||||
{
|
||||
if (p_model != last_model)
|
||||
column = 0;
|
||||
if (p_item->text(column).toInt() != last_index)
|
||||
{
|
||||
server_type f_server;
|
||||
last_model = p_model;
|
||||
int n_server = p_model.row();
|
||||
server_type f_server;
|
||||
int n_server = p_item->text(column).toInt();
|
||||
last_index = n_server;
|
||||
|
||||
if (n_server < 0)
|
||||
return;
|
||||
|
||||
if (public_servers_selected)
|
||||
{
|
||||
QVector<server_type> f_server_list = ao_app->get_server_list();
|
||||
|
||||
if (n_server >= f_server_list.size())
|
||||
if (n_server < 0)
|
||||
return;
|
||||
|
||||
f_server = f_server_list.at(p_model.row());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (n_server >= ao_app->get_favorite_list().size())
|
||||
return;
|
||||
if (public_servers_selected)
|
||||
{
|
||||
QVector<server_type> f_server_list = ao_app->get_server_list();
|
||||
|
||||
f_server = ao_app->get_favorite_list().at(p_model.row());
|
||||
if (n_server >= f_server_list.size())
|
||||
return;
|
||||
|
||||
f_server = f_server_list.at(n_server);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (n_server >= ao_app->get_favorite_list().size())
|
||||
return;
|
||||
|
||||
f_server = ao_app->get_favorite_list().at(n_server);
|
||||
}
|
||||
|
||||
ui_description->clear();
|
||||
@ -398,9 +403,9 @@ void Lobby::on_server_list_clicked(QModelIndex p_model)
|
||||
}
|
||||
|
||||
//doubleclicked on an item in the serverlist so we'll connect right away
|
||||
void Lobby::on_server_list_doubleclicked(QModelIndex p_model)
|
||||
void Lobby::on_server_list_doubleclicked(QTreeWidgetItem* p_item, int column)
|
||||
{
|
||||
on_server_list_clicked(p_model);
|
||||
on_server_list_clicked(p_item, column);
|
||||
on_connect_released();
|
||||
}
|
||||
|
||||
@ -427,22 +432,36 @@ void Lobby::list_servers()
|
||||
ui_favorites->set_image("favorites");
|
||||
ui_public_servers->set_image("publicservers_selected");
|
||||
|
||||
ui_server_list->setSortingEnabled(false);
|
||||
ui_server_list->clear();
|
||||
|
||||
int i = 0;
|
||||
for (server_type i_server : ao_app->get_server_list())
|
||||
{
|
||||
ui_server_list->addItem(i_server.name);
|
||||
QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_server_list);
|
||||
treeItem->setText(0, QString::number(i));
|
||||
treeItem->setText(1, i_server.name);
|
||||
// treeItem->setText(2, "-");
|
||||
i++;
|
||||
}
|
||||
ui_server_list->setSortingEnabled(true);
|
||||
}
|
||||
|
||||
void Lobby::list_favorites()
|
||||
{
|
||||
ui_server_list->setSortingEnabled(false);
|
||||
ui_server_list->clear();
|
||||
|
||||
int i = 0;
|
||||
for (server_type i_server : ao_app->get_favorite_list())
|
||||
{
|
||||
ui_server_list->addItem(i_server.name);
|
||||
QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_server_list);
|
||||
treeItem->setText(0, QString(i));
|
||||
treeItem->setText(1, i_server.name);
|
||||
// treeItem->setText(2, "-");
|
||||
i++;
|
||||
}
|
||||
ui_server_list->setSortingEnabled(true);
|
||||
}
|
||||
|
||||
void Lobby::append_chatmessage(QString f_name, QString f_message)
|
||||
|
Loading…
Reference in New Issue
Block a user