Smarter rooms (#2484)

* Added VIP only room

* Added DONATOR room.

* Extended Room to include privilege level.

* Updated room join logic

* Updated server tab permissions column display based on perm+privlevel definitions

* Fixed new client -> old server blank permissions column on server tab

Added the ability for registered user - VIP/DONATOR/PRIVILEGED room.
This commit is contained in:
woogerboy21 2017-03-22 21:45:16 -04:00 committed by Zach H
parent 317ac05919
commit 2f23a9cb2f
12 changed files with 79 additions and 33 deletions

View file

@ -71,7 +71,7 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
const int roomListSize = event.room_list_size();
for (int i = 0; i < roomListSize; ++i) {
const ServerInfo_Room &room = event.room_list(i);
for (int j = 0; j < roomList->topLevelItemCount(); ++j) {
QTreeWidgetItem *twi = roomList->topLevelItem(j);
if (twi->data(0, Qt::UserRole).toInt() == room.room_id()) {
@ -80,7 +80,7 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
if (room.has_description())
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
if (room.has_permissionlevel())
twi->setData(2, Qt::DisplayRole, QString::fromStdString(room.permissionlevel()).toLower());
twi->setData(2, Qt::DisplayRole, getRoomPermissionDisplay(room));
if (room.has_player_count())
twi->setData(3, Qt::DisplayRole, room.player_count());
if (room.has_game_count())
@ -95,7 +95,7 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
if (room.has_description())
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
if (room.has_permissionlevel())
twi->setData(2, Qt::DisplayRole, QString::fromStdString(room.permissionlevel()).toLower());
twi->setData(2, Qt::DisplayRole, getRoomPermissionDisplay(room));
twi->setData(3, Qt::DisplayRole, room.player_count());
twi->setData(4, Qt::DisplayRole, room.game_count());
twi->setTextAlignment(2, Qt::AlignRight);
@ -109,6 +109,24 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
}
}
QString RoomSelector::getRoomPermissionDisplay(const ServerInfo_Room & room)
{
/*
* A room can have a permission level and a privilege level. How ever we want to display only the necessary information
* on the server tab needed to inform users of required permissions to enter a room. If the room has a privilege level
* the server tab will display the privilege level in the "permissions" column in the row however if the room contains
* a permissions level for the room the permissions level defined for the room will be displayed.
*/
QString roomPermissionDisplay = QString::fromStdString(room.privilegelevel()).toLower();
if (QString::fromStdString(room.permissionlevel()).toLower() != "none")
roomPermissionDisplay = QString::fromStdString(room.permissionlevel()).toLower();
if (roomPermissionDisplay == "") // catch all for misconfigured .ini room definitions
roomPermissionDisplay = "none";
return roomPermissionDisplay;
}
void RoomSelector::joinClicked()
{
QTreeWidgetItem *twi = roomList->currentItem();