Moved the password icon to the room name.

Also added a dark mode lock icon as well (and fixed a small bug
preventing the lock icon from showing up)
This commit is contained in:
James Rowe 2018-04-09 10:18:12 -06:00
parent aa391ed60d
commit 3be7aa2cfc
4 changed files with 17 additions and 31 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

View file

@ -1,6 +1,7 @@
<RCC>
<qresource prefix="icons/qdarkstyle">
<file alias="index.theme">icons/index.theme</file>
<file alias="16x16/lock.png">icons/16x16/lock.png</file>
</qresource>
<qresource prefix="qss_icons">
<file>rc/up_arrow_disabled.png</file>

View file

@ -119,8 +119,8 @@ void Lobby::OnJoinRoom(const QModelIndex& index) {
}
// Get a password to pass if the room is password protected
QModelIndex password_index = proxy->index(index.row(), Column::PASSWORD);
bool has_password = proxy->data(password_index, LobbyItemPassword::PasswordRole).toBool();
QModelIndex password_index = proxy->index(index.row(), Column::ROOM_NAME);
bool has_password = proxy->data(password_index, LobbyItemName::PasswordRole).toBool();
const std::string password = has_password ? PasswordPrompt().toStdString() : "";
if (has_password && password.empty()) {
return;
@ -161,7 +161,7 @@ void Lobby::OnStateChanged(const Network::RoomMember::State& state) {
void Lobby::ResetModel() {
model->clear();
model->insertColumns(0, Column::TOTAL);
model->setHeaderData(Column::PASSWORD, Qt::Horizontal, tr("Password"), Qt::DisplayRole);
model->setHeaderData(Column::EXPAND, Qt::Horizontal, "", Qt::DisplayRole);
model->setHeaderData(Column::ROOM_NAME, Qt::Horizontal, tr("Room Name"), Qt::DisplayRole);
model->setHeaderData(Column::GAME_NAME, Qt::Horizontal, tr("Preferred Game"), Qt::DisplayRole);
model->setHeaderData(Column::HOST, Qt::Horizontal, tr("Host"), Qt::DisplayRole);
@ -200,10 +200,10 @@ void Lobby::OnRefreshLobby() {
members.append(var);
}
auto first_item = new LobbyItemPassword(room.has_password);
auto first_item = new LobbyItem();
auto row = QList<QStandardItem*>({
first_item,
new LobbyItemName(QString::fromStdString(room.name)),
new LobbyItemName(room.has_password, QString::fromStdString(room.name)),
new LobbyItemGame(room.preferred_game_id, QString::fromStdString(room.preferred_game),
smdh_icon),
new LobbyItemHost(QString::fromStdString(room.owner), QString::fromStdString(room.ip),

View file

@ -12,7 +12,7 @@
namespace Column {
enum List {
PASSWORD,
EXPAND,
ROOM_NAME,
GAME_NAME,
HOST,
@ -28,43 +28,28 @@ public:
virtual ~LobbyItem() override {}
};
class LobbyItemPassword : public LobbyItem {
class LobbyItemName : public LobbyItem {
public:
static const int PasswordRole = Qt::UserRole + 1;
static const int NameRole = Qt::UserRole + 1;
static const int PasswordRole = Qt::UserRole + 2;
LobbyItemPassword() = default;
explicit LobbyItemPassword(const bool has_password) : LobbyItem() {
LobbyItemName() = default;
explicit LobbyItemName(bool has_password, QString name) : LobbyItem() {
setData(name, NameRole);
setData(has_password, PasswordRole);
}
QVariant data(int role) const override {
if (role != Qt::DecorationRole) {
return LobbyItem::data(role);
}
if (role == Qt::DecorationRole) {
bool has_password = data(PasswordRole).toBool();
return has_password ? QIcon(":/icons/lock.png") : QIcon();
return has_password ? QIcon::fromTheme("lock").pixmap(16) : QIcon();
}
bool operator<(const QStandardItem& other) const override {
return data(PasswordRole).toBool() < other.data(PasswordRole).toBool();
}
};
class LobbyItemName : public LobbyItem {
public:
static const int NameRole = Qt::UserRole + 1;
LobbyItemName() = default;
explicit LobbyItemName(QString name) : LobbyItem() {
setData(name, NameRole);
}
QVariant data(int role) const override {
if (role != Qt::DisplayRole) {
return LobbyItem::data(role);
}
return data(NameRole).toString();
}
bool operator<(const QStandardItem& other) const override {
return data(NameRole).toString().localeAwareCompare(other.data(NameRole).toString()) < 0;
}