diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/lock.png b/dist/qt_themes/qdarkstyle/icons/16x16/lock.png new file mode 100644 index 000000000..c750a39e8 Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/16x16/lock.png differ diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc index efbd0b9dc..54a96b680 100644 --- a/dist/qt_themes/qdarkstyle/style.qrc +++ b/dist/qt_themes/qdarkstyle/style.qrc @@ -1,6 +1,7 @@ icons/index.theme + icons/16x16/lock.png rc/up_arrow_disabled.png diff --git a/src/citra_qt/multiplayer/lobby.cpp b/src/citra_qt/multiplayer/lobby.cpp index 91ba080fb..6780ac430 100644 --- a/src/citra_qt/multiplayer/lobby.cpp +++ b/src/citra_qt/multiplayer/lobby.cpp @@ -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({ 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), diff --git a/src/citra_qt/multiplayer/lobby_p.h b/src/citra_qt/multiplayer/lobby_p.h index a177bc66d..fa8580349 100644 --- a/src/citra_qt/multiplayer/lobby_p.h +++ b/src/citra_qt/multiplayer/lobby_p.h @@ -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::fromTheme("lock").pixmap(16) : QIcon(); } - bool has_password = data(PasswordRole).toBool(); - return has_password ? QIcon(":/icons/lock.png") : 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; }