aboutsummaryrefslogtreecommitdiff
path: root/src/lobby.cpp
diff options
context:
space:
mode:
authorCrystalwarrior <varsash@gmail.com>2020-03-05 21:23:42 +0300
committerCrystalwarrior <varsash@gmail.com>2020-03-05 21:23:42 +0300
commit39f9d1043e7f362275a189d71066ca642753f86f (patch)
treea2c27a4491eb52f459641008efd9622a9b4dbed8 /src/lobby.cpp
parenta4e448576b43b9cf4f984253abb3daf7296aa154 (diff)
Add sorting by name for lobby
Diffstat (limited to 'src/lobby.cpp')
-rw-r--r--src/lobby.cpp75
1 files changed, 47 insertions, 28 deletions
diff --git a/src/lobby.cpp b/src/lobby.cpp
index 7c61aa7e..22033372 100644
--- a/src/lobby.cpp
+++ b/src/lobby.cpp
@@ -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 (n_server < 0)
+ return;
- if (public_servers_selected)
- {
- QVector<server_type> f_server_list = ao_app->get_server_list();
+ if (public_servers_selected)
+ {
+ QVector<server_type> f_server_list = ao_app->get_server_list();
- if (n_server >= f_server_list.size())
- return;
+ if (n_server >= f_server_list.size())
+ return;
- f_server = f_server_list.at(p_model.row());
- }
- else
- {
- if (n_server >= ao_app->get_favorite_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(p_model.row());
+ 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)