void UserContextMenu::gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer) { const Response_GetGamesOfUser &response = resp.GetExtension(Response_GetGamesOfUser::ext); const Command_GetGamesOfUser &cmd = commandContainer.session_command(0).GetExtension(Command_GetGamesOfUser::ext); QMap<int, GameTypeMap> gameTypeMap; QMap<int, QString> roomMap; const int roomListSize = response.room_list_size(); for (int i = 0; i < roomListSize; ++i) { const ServerInfo_Room &roomInfo = response.room_list(i); roomMap.insert(roomInfo.room_id(), QString::fromStdString(roomInfo.name())); GameTypeMap tempMap; const int gameTypeListSize = roomInfo.gametype_list_size(); for (int j = 0; j < gameTypeListSize; ++j) { const ServerInfo_GameType &gameTypeInfo = roomInfo.gametype_list(j); tempMap.insert(gameTypeInfo.game_type_id(), QString::fromStdString(gameTypeInfo.description())); } gameTypeMap.insert(roomInfo.room_id(), tempMap); } GameSelector *selector = new GameSelector(client, tabSupervisor, 0, roomMap, gameTypeMap, false, false); const int gameListSize = response.game_list_size(); for (int i = 0; i < gameListSize; ++i) selector->processGameInfo(response.game_list(i)); selector->setWindowTitle(tr("%1's games").arg(QString::fromStdString(cmd.user_name()))); selector->setMinimumWidth(800); selector->setAttribute(Qt::WA_DeleteOnClose); selector->show(); }
void UserInfoBox::processResponse(const Response &r) { const Response_GetUserInfo &response = r.GetExtension(Response_GetUserInfo::ext); updateInfo(response.user_info()); setFixedSize(sizeHint()); show(); }
void RoomSelector::joinFinished(const Response &r, const CommandContainer & /*commandContainer*/, const QVariant &extraData) { if (r.response_code() != Response::RespOk) return; const Response_JoinRoom &resp = r.GetExtension(Response_JoinRoom::ext); emit roomJoined(resp.room_info(), extraData.toBool()); }
void UserContextMenu::banUser_processUserInfoResponse(const Response &r) { const Response_GetUserInfo &response = r.GetExtension(Response_GetUserInfo::ext); // The dialog needs to be non-modal in order to not block the event queue of the client. BanDialog *dlg = new BanDialog(response.user_info(), static_cast<QWidget *>(parent())); connect(dlg, SIGNAL(accepted()), this, SLOT(banUser_dialogFinished())); dlg->show(); }
void TabDeckStorage::uploadFinished(const Response &r, const CommandContainer &commandContainer) { if (r.response_code() != Response::RespOk) return; const Response_DeckUpload &resp = r.GetExtension(Response_DeckUpload::ext); const Command_DeckUpload &cmd = commandContainer.session_command(0).GetExtension(Command_DeckUpload::ext); serverDirView->addFileToTree(resp.new_file(), serverDirView->getNodeByPath(QString::fromStdString(cmd.path()))); }
void TabDeckStorage::downloadFinished(const Response &r, const CommandContainer &/*commandContainer*/, const QVariant &extraData) { if (r.response_code() != Response::RespOk) return; const Response_DeckDownload &resp = r.GetExtension(Response_DeckDownload::ext); QString filePath = extraData.toString(); DeckLoader deck(QString::fromStdString(resp.deck())); deck.saveToFile(filePath, DeckLoader::CockatriceFormat); }
void TabReplays::openRemoteReplayFinished(const Response &r) { if (r.response_code() != Response::RespOk) return; const Response_ReplayDownload &resp = r.GetExtension(Response_ReplayDownload::ext); GameReplay *replay = new GameReplay; replay->ParseFromString(resp.replay_data()); emit openReplay(replay); }
void RemoteReplayList_TreeModel::replayListFinished(const Response &r) { const Response_ReplayList &resp = r.GetExtension(Response_ReplayList::ext); beginResetModel(); clearTree(); for (int i = 0; i < resp.match_list_size(); ++i) replayMatches.append(new MatchNode(resp.match_list(i))); endResetModel(); emit treeRefreshed(); }
void TabDeckStorage::openRemoteDeckFinished(const Response &r, const CommandContainer &commandContainer) { if (r.response_code() != Response::RespOk) return; const Response_DeckDownload &resp = r.GetExtension(Response_DeckDownload::ext); const Command_DeckDownload &cmd = commandContainer.session_command(0).GetExtension(Command_DeckDownload::ext); DeckLoader loader; if (!loader.loadFromRemote(QString::fromStdString(resp.deck()), cmd.deck_id())) return; emit openDeckEditor(&loader); }
void TabReplays::downloadFinished(const Response &r, const CommandContainer & /* commandContainer */, const QVariant &extraData) { if (r.response_code() != Response::RespOk) return; const Response_ReplayDownload &resp = r.GetExtension(Response_ReplayDownload::ext); QString filePath = extraData.toString(); const std::string &data = resp.replay_data(); QFile f(filePath); f.open(QIODevice::WriteOnly); f.write((const char *) data.data(), data.size()); f.close(); }
void TabUserLists::processListUsersResponse(const Response &response) { const Response_ListUsers &resp = response.GetExtension(Response_ListUsers::ext); const int userListSize = resp.user_list_size(); for (int i = 0; i < userListSize; ++i) { const ServerInfo_User &info = resp.user_list(i); const QString userName = QString::fromStdString(info.name()); allUsersList->processUserInfo(info, true); ignoreList->setUserOnline(userName, true); buddyList->setUserOnline(userName, true); } allUsersList->sortItems(); ignoreList->sortItems(); buddyList->sortItems(); }
void RemoteClient::registerResponse(const Response &response) { const Response_Register &resp = response.GetExtension(Response_Register::ext); switch(response.response_code()) { case Response::RespRegistrationAccepted: emit registerAccepted(); doLogin(); break; case Response::RespRegistrationAcceptedNeedsActivation: emit registerAcceptedNeedsActivate(); doLogin(); break; default: emit registerError(response.response_code(), QString::fromStdString(resp.denied_reason_str()), resp.denied_end_time()); setStatus(StatusDisconnecting); doDisconnectFromServer(); break; } }
void RemoteClient::loginResponse(const Response &response) { const Response_Login &resp = response.GetExtension(Response_Login::ext); if (response.response_code() == Response::RespOk) { setStatus(StatusLoggedIn); emit userInfoChanged(resp.user_info()); QList<ServerInfo_User> buddyList; for (int i = resp.buddy_list_size() - 1; i >= 0; --i) buddyList.append(resp.buddy_list(i)); emit buddyListReceived(buddyList); QList<ServerInfo_User> ignoreList; for (int i = resp.ignore_list_size() - 1; i >= 0; --i) ignoreList.append(resp.ignore_list(i)); emit ignoreListReceived(ignoreList); } else { emit loginError(response.response_code(), QString::fromStdString(resp.denied_reason_str()), resp.denied_end_time()); setStatus(StatusDisconnecting); } }
void TabServer::joinRoomFinished(const Response &r, const CommandContainer & /*commandContainer*/, const QVariant &extraData) { switch (r.response_code()) { case Response::RespOk: break; case Response::RespNameNotFound: QMessageBox::critical(this, tr("Error"), tr("Failed to join the room: it doesn't exists on the server.")); return; case Response::RespContextError: QMessageBox::critical(this, tr("Error"), tr("The server thinks you are in the room but Cockatrice is unable to display it. Try restarting Cockatrice.")); return; case Response::RespUserLevelTooLow: QMessageBox::critical(this, tr("Error"), tr("You do not have the required permission to join this room.")); return; default: QMessageBox::critical(this, tr("Error"), tr("Failed to join the room due to an unknown error: %1.").arg(r.response_code())); return; } const Response_JoinRoom &resp = r.GetExtension(Response_JoinRoom::ext); emit roomJoined(resp.room_info(), extraData.toBool()); }
void UserInfoBox::actEditInternal(const Response &r) { const Response_GetUserInfo &response = r.GetExtension(Response_GetUserInfo::ext); const ServerInfo_User &user = response.user_info(); QString email = QString::fromStdString(user.email()); QString country = QString::fromStdString(user.country()); QString realName = QString::fromStdString(user.real_name()); DlgEditUser dlg(this, email, country, realName); if(!dlg.exec()) return; Command_AccountEdit cmd; cmd.set_real_name(dlg.getRealName().toStdString()); cmd.set_email(dlg.getEmail().toStdString()); cmd.set_gender((ServerInfo_User_Gender) dlg.getGender()); cmd.set_country(dlg.getCountry().toStdString()); PendingCommand *pend = client->prepareSessionCommand(cmd); connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(processEditResponse(const Response &))); client->sendCommand(pend); }
void TabLog::viewLogHistory_processResponse(const Response &resp) { const Response_ViewLogHistory &response = resp.GetExtension(Response_ViewLogHistory::ext); if (resp.response_code() != Response::RespOk) { QMessageBox::critical(static_cast<QWidget *>(parent()), tr("Message History"), tr("Failed to collect message history information.")); return; } if (response.log_message_size() == 0) { QMessageBox::information(static_cast<QWidget *>(parent()), tr("Message History"), tr("There are no messages for the selected filters.")); return; } int roomCounter = 0, gameCounter = 0, chatCounter = 0; roomTable->setRowCount(roomCounter); gameTable->setRowCount(gameCounter); chatTable->setRowCount(chatCounter); for (int i = 0; i < response.log_message_size(); ++i) { ServerInfo_ChatMessage message = response.log_message(i); if (QString::fromStdString(message.target_type()) == "room") { roomTable->insertRow(roomCounter); roomTable->setItem(roomCounter, 0, new QTableWidgetItem(QString::fromStdString(message.time()))); roomTable->setItem(roomCounter, 1, new QTableWidgetItem(QString::fromStdString(message.sender_name()))); roomTable->setItem(roomCounter, 2, new QTableWidgetItem(QString::fromStdString(message.sender_ip()))); roomTable->setItem(roomCounter, 3, new QTableWidgetItem(QString::fromStdString(message.message()))); roomTable->setItem(roomCounter, 4, new QTableWidgetItem(QString::fromStdString(message.target_id()))); roomTable->setItem(roomCounter, 5, new QTableWidgetItem(QString::fromStdString(message.target_name()))); ++roomCounter; } if (QString::fromStdString(message.target_type()) == "game") { gameTable->insertRow(gameCounter); gameTable->setItem(gameCounter, 0, new QTableWidgetItem(QString::fromStdString(message.time()))); gameTable->setItem(gameCounter, 1, new QTableWidgetItem(QString::fromStdString(message.sender_name()))); gameTable->setItem(gameCounter, 2, new QTableWidgetItem(QString::fromStdString(message.sender_ip()))); gameTable->setItem(gameCounter, 3, new QTableWidgetItem(QString::fromStdString(message.message()))); gameTable->setItem(gameCounter, 4, new QTableWidgetItem(QString::fromStdString(message.target_id()))); gameTable->setItem(gameCounter, 5, new QTableWidgetItem(QString::fromStdString(message.target_name()))); ++gameCounter; } if (QString::fromStdString(message.target_type()) == "chat") { chatTable->insertRow(chatCounter); chatTable->setItem(chatCounter, 0, new QTableWidgetItem(QString::fromStdString(message.time()))); chatTable->setItem(chatCounter, 1, new QTableWidgetItem(QString::fromStdString(message.sender_name()))); chatTable->setItem(chatCounter, 2, new QTableWidgetItem(QString::fromStdString(message.sender_ip()))); chatTable->setItem(chatCounter, 3, new QTableWidgetItem(QString::fromStdString(message.message()))); chatTable->setItem(chatCounter, 4, new QTableWidgetItem(QString::fromStdString(message.target_id()))); chatTable->setItem(chatCounter, 5, new QTableWidgetItem(QString::fromStdString(message.target_name()))); ++chatCounter; } } if (roomCounter) { roomTable->show(); roomTable->resizeColumnsToContents(); } else { roomTable->hide(); } if (gameCounter) { gameTable->resizeColumnsToContents(); gameTable->show(); } else { gameTable->hide(); } if (chatCounter) { chatTable->resizeColumnsToContents(); chatTable->show(); } else { chatTable->hide(); } }