diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui index a884c26c..1aacb64f 100644 --- a/src/gui/qt/gamelobbydialog.ui +++ b/src/gui/qt/gamelobbydialog.ui @@ -595,6 +595,9 @@ 0 + + Qt::CustomContextMenu + Qt::ScrollBarAlwaysOff diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index a6fa4180..b4d19b60 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -154,6 +154,11 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) nickListOpenPlayerStats2 = new QAction(QIcon(":/gfx/view-statistics.png"), tr("Show player stats"), nickListContextMenu); connectedPlayersListPlayerInfoSubMenu->addAction(nickListOpenPlayerStats2); + gameListContextMenu = new QMenu(); + gameListReportBadGameNameAction = new QAction(QIcon(":/gfx/emblem-important.png"), tr("Report inappropriate game name"), gameListContextMenu); + gameListContextMenu->addAction(gameListReportBadGameNameAction); + + connect( pushButton_CreateGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( pushButton_JoinGame, SIGNAL( clicked() ), this, SLOT( joinGame() ) ); connect( pushButton_joinAnyGame, SIGNAL( clicked() ), this, SLOT( joinAnyGame() ) ); @@ -175,11 +180,13 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) connect( comboBox_nickListFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(changeNickListFilter(int))); connect( treeView_NickList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showNickListContextMenu(QPoint) ) ); connect( treeWidget_connectedPlayers, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showConnectedPlayersContextMenu(QPoint) ) ); + connect( treeView_GameList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showGameListContextMenu(QPoint) ) ); connect( nickListInviteAction, SIGNAL(triggered()), this, SLOT( invitePlayerToCurrentGame() )); connect( nickListIgnorePlayerAction, SIGNAL(triggered()), this, SLOT( putPlayerOnIgnoreList() )); connect( nickListOpenPlayerStats1, SIGNAL(triggered()), this, SLOT( openPlayerStats1() )); connect( nickListOpenPlayerStats2, SIGNAL(triggered()), this, SLOT( openPlayerStats2() )); connect( lineEdit_searchForPlayers, SIGNAL(textChanged(QString)),this, SLOT(searchForPlayerRegExpChanged())); + connect( gameListReportBadGameNameAction, SIGNAL(triggered()), this, SLOT( reportBadGameName())); lineEdit_searchForPlayers->installEventFilter(this); lineEdit_ChatInput->installEventFilter(this); @@ -1579,6 +1586,16 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p) } } +void gameLobbyDialogImpl::showGameListContextMenu(QPoint p) +{ + if(myGameListModel->rowCount() && myGameListSelectionModel->currentIndex().isValid()) { + //popup a little more to the right to avaoid double click action + QPoint tempPoint = p; + tempPoint.setX(p.x()+5); + gameListContextMenu->popup(treeView_GameList->mapToGlobal(tempPoint)); + } +} + void gameLobbyDialogImpl::invitePlayerToCurrentGame() { if(myNickListSelectionModel->currentIndex().isValid()) { @@ -2019,3 +2036,20 @@ void gameLobbyDialogImpl::closeAllChildDialogs() waitStartGameMsgBox->hide(); waitRejoinStartGameMsgBox->hide(); } + +void gameLobbyDialogImpl::reportBadGameName() +{ + assert(mySession); + QItemSelectionModel *selection = treeView_GameList->selectionModel(); + if (!inGame && selection->hasSelection()) { + unsigned gameId = selection->selectedRows().first().data(Qt::UserRole).toUInt(); + GameInfo info(mySession->getClientGameInfo(gameId)); + + int ret = QMessageBox::question(this, tr("PokerTH - Question"), + tr("Are you sure you want to report the game name:\n\"%1\" as inappropriate?").arg(QString::fromUtf8(info.name.c_str())), QMessageBox::Yes | QMessageBox::No); + + if(ret == QMessageBox::Yes) { +// mySession->reportBadGameName(gameId); TODO + } + } +} diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h index f78c325f..161ca1d5 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h @@ -131,6 +131,7 @@ public slots: void registeredUserMode(); void guestUserMode(); void showNickListContextMenu(QPoint); + void showGameListContextMenu(QPoint); void showConnectedPlayersContextMenu(QPoint); void invitePlayerToCurrentGame(); void showInfoMsgBox(); @@ -146,6 +147,7 @@ public slots: void openPlayerStats2(); QString getFullCountryString(QString); void closeAllChildDialogs(); + void reportBadGameName(); private: @@ -180,6 +182,8 @@ private: QStandardItemModel *myGameListModel; QItemSelectionModel *myGameListSelectionModel; MyGameListSortFilterProxyModel *myGameListSortFilterProxyModel; + QMenu *gameListContextMenu; + QAction *gameListReportBadGameNameAction; QMenu *nickListContextMenu; QAction *nickListInviteAction; QAction *nickListIgnorePlayerAction; diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index b2203fe3..6c22bb06 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -1073,6 +1073,18 @@ void startWindowImpl::networkMessage(unsigned msgId) msgText = tr("An error occurred while reporting the avatar."); } break; + case MSG_NET_GAMENAME_REPORT_ACCEPTED: { + msgText = tr("The game name report was accepted by the server. Thank you."); + } + break; + case MSG_NET_GAMENAME_REPORT_DUP: { + msgText = tr("This game name was already reported by another player."); + } + break; + case MSG_NET_GAMENAME_REPORT_REJECTED: { + msgText = tr("An error occurred while reporting the game name."); + } + break; default: ; break; diff --git a/src/net/socket_msg.h b/src/net/socket_msg.h index 5982fe26..dc84a101 100644 --- a/src/net/socket_msg.h +++ b/src/net/socket_msg.h @@ -157,6 +157,9 @@ #define MSG_NET_AVATAR_REPORT_ACCEPTED MSG_NET_LIMIT_GAME + 1 #define MSG_NET_AVATAR_REPORT_DUP MSG_NET_LIMIT_GAME + 2 #define MSG_NET_AVATAR_REPORT_REJECTED MSG_NET_LIMIT_GAME + 3 +#define MSG_NET_GAMENAME_REPORT_ACCEPTED MSG_NET_LIMIT_GAME + 4 +#define MSG_NET_GAMENAME_REPORT_DUP MSG_NET_LIMIT_GAME + 5 +#define MSG_NET_GAMENAME_REPORT_REJECTED MSG_NET_LIMIT_GAME + 6 #endif