diff --git a/src/gui/qt/chattools/chattools.cpp b/src/gui/qt/chattools/chattools.cpp index 0e50a4be..061b77ed 100644 --- a/src/gui/qt/chattools/chattools.cpp +++ b/src/gui/qt/chattools/chattools.cpp @@ -28,8 +28,8 @@ using namespace std; ChatTools::ChatTools(QLineEdit* l, ConfigFile *c, ChatType ct, QTextBrowser *b, QStandardItemModel *m, gameLobbyDialogImpl *lo) : nickAutoCompletitionCounter(0), myLineEdit(l), myNickListModel(m), myNickStringList(NULL), myTextBrowser(b), myChatType(ct), myConfig(c), myNick(""), myLobby(lo) { - myNick = QString::fromUtf8(myConfig->readConfigString("MyName").c_str()); - ignoreList = myConfig->readConfigStringList("PlayerIgnoreList"); + myNick = QString::fromUtf8(myConfig->readConfigString("MyName").c_str()); + ignoreList = myConfig->readConfigStringList("PlayerIgnoreList"); } @@ -40,141 +40,146 @@ ChatTools::~ChatTools() void ChatTools::sendMessage() { - if(myLineEdit->text().size() && mySession) { - fillChatLinesHistory(myLineEdit->text()); - QString chatText(myLineEdit->text()); - if(myChatType == INGAME_CHAT) { - mySession->sendGameChatMessage(chatText.toUtf8().constData()); - } else { - // Parse user name for private messages. - if(chatText.indexOf(QString("/msg ")) == 0) { - chatText.remove(0, 5); - unsigned playerId = parsePrivateMessageTarget(chatText); - if (playerId) - mySession->sendPrivateChatMessage(playerId, chatText.toUtf8().constData()); - } else { - mySession->sendLobbyChatMessage(chatText.toUtf8().constData()); - } - } - myLineEdit->setText(""); - } + if(myLineEdit->text().size() && mySession) { + fillChatLinesHistory(myLineEdit->text()); + QString chatText(myLineEdit->text()); + if(myChatType == INGAME_CHAT) { + mySession->sendGameChatMessage(chatText.toUtf8().constData()); + } else { + // Parse user name for private messages. + if(chatText.indexOf(QString("/msg ")) == 0) { + chatText.remove(0, 5); + unsigned playerId = parsePrivateMessageTarget(chatText); + if (playerId) + mySession->sendPrivateChatMessage(playerId, chatText.toUtf8().constData()); + } else { + mySession->sendLobbyChatMessage(chatText.toUtf8().constData()); + } + } + myLineEdit->setText(""); + } } -void ChatTools::receiveMessage(QString playerName, QString message) +void ChatTools::receiveMessage(QString playerName, QString message, bool pm) { - if(myTextBrowser) { + if(myTextBrowser) { - message = message.replace("<","<"); - message = message.replace(">",">"); + message = message.replace("<","<"); + message = message.replace(">",">"); - //refresh myNick if it was changed during runtime - myNick = QString::fromUtf8(myConfig->readConfigString("MyName").c_str()); + //refresh myNick if it was changed during runtime + myNick = QString::fromUtf8(myConfig->readConfigString("MyName").c_str()); - QString tempMsg; + QString tempMsg; - if(myChatType == INET_LOBBY_CHAT && playerName == "(chat bot)" && message.startsWith(myNick)) { + if(myChatType == INET_LOBBY_CHAT && playerName == "(chat bot)" && message.startsWith(myNick)) { - tempMsg = QString(""+message+""); - //play beep sound only in INET-lobby-chat - if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { - myLobby->getMyW()->getMySDLPlayer()->playSound("lobbychatnotify",0); - } - } else if(message.contains(myNick, Qt::CaseInsensitive)) { + tempMsg = QString(""+message+""); + //play beep sound only in INET-lobby-chat + if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { + myLobby->getMyW()->getMySDLPlayer()->playSound("lobbychatnotify",0); + } + } else if(message.contains(myNick, Qt::CaseInsensitive)) { - switch (myChatType) { - case INET_LOBBY_CHAT: { - tempMsg = QString("palette().link().color().name()+";\">"+message+""); - //play beep sound only in INET-lobby-chat - // TODO dont play when message is from yourself - if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { - myLobby->getMyW()->getMySDLPlayer()->playSound("lobbychatnotify",0); - } - } - break; - case LAN_LOBBY_CHAT: - tempMsg = QString(""+message+""); - break; - case INGAME_CHAT: - tempMsg = QString("getChatTextNickNotifyColor()+";\">"+message+""); - break; - default: - tempMsg = message; - } - } else if(playerName == myNick) { - switch (myChatType) { - case INET_LOBBY_CHAT: - tempMsg = QString("palette().link().color().name()+";\">"+message+""); - break; - case LAN_LOBBY_CHAT: - tempMsg = QString(""+message+""); - break; - case INGAME_CHAT: - tempMsg = QString("getChatLogTextColor()+";\">"+message+""); - break; - default: - tempMsg = message; - } - } else { - switch (myChatType) { - case INET_LOBBY_CHAT: - tempMsg = QString("palette().text().color().name()+";\">"+message+""); - break; - case LAN_LOBBY_CHAT: - tempMsg = QString(""+message+""); - break; - case INGAME_CHAT: - tempMsg = QString("getChatLogTextColor()+";\">"+message+""); - break; - default: - tempMsg = message; - } + switch (myChatType) { + case INET_LOBBY_CHAT: { + tempMsg = QString("palette().link().color().name()+";\">"+message+""); + //play beep sound only in INET-lobby-chat + // TODO dont play when message is from yourself + if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { + myLobby->getMyW()->getMySDLPlayer()->playSound("lobbychatnotify",0); + } + } + break; + case LAN_LOBBY_CHAT: + tempMsg = QString(""+message+""); + break; + case INGAME_CHAT: + tempMsg = QString("getChatTextNickNotifyColor()+";\">"+message+""); + break; + default: + tempMsg = message; + } + } else if(playerName == myNick) { + switch (myChatType) { + case INET_LOBBY_CHAT: + tempMsg = QString("palette().link().color().name()+";\">"+message+""); + break; + case LAN_LOBBY_CHAT: + tempMsg = QString(""+message+""); + break; + case INGAME_CHAT: + tempMsg = QString("getChatLogTextColor()+";\">"+message+""); + break; + default: + tempMsg = message; + } + } else { + switch (myChatType) { + case INET_LOBBY_CHAT: + tempMsg = QString("palette().text().color().name()+";\">"+message+""); + break; + case LAN_LOBBY_CHAT: + tempMsg = QString(""+message+""); + break; + case INGAME_CHAT: + tempMsg = QString("getChatLogTextColor()+";\">"+message+""); + break; + default: + tempMsg = message; + } - } + } - bool nickFoundOnIgnoreList = false; - list::iterator it1; - for(it1=ignoreList.begin(); it1 != ignoreList.end(); ++it1) { + bool nickFoundOnIgnoreList = false; + list::iterator it1; + for(it1=ignoreList.begin(); it1 != ignoreList.end(); ++it1) { - if(playerName == QString::fromUtf8(it1->c_str())) { - nickFoundOnIgnoreList = true; - } - } + if(playerName == QString::fromUtf8(it1->c_str())) { + nickFoundOnIgnoreList = true; + } + } - if(!nickFoundOnIgnoreList) { + if(!nickFoundOnIgnoreList) { - if(message.indexOf(QString("/me "))==0) { - myTextBrowser->append(tempMsg.replace("/me ","*"+playerName+" ")+""); - } else { - myTextBrowser->append(playerName + ": " + tempMsg); - } - } - } + if(message.indexOf(QString("/me "))==0) { + myTextBrowser->append(tempMsg.replace("/me ","*"+playerName+" ")+""); + } + else if(pm == true) { + myTextBrowser->append(""+playerName+"(pm): " + tempMsg+""); + } + else { + myTextBrowser->append(playerName + ": " + tempMsg); + } + } + } } void ChatTools::privateMessage(QString playerName, QString message) { - receiveMessage(playerName, "->" + message); + bool pm=true; + receiveMessage(playerName, message, pm); } void ChatTools::clearChat() { - if(myTextBrowser) - myTextBrowser->clear(); + if(myTextBrowser) + myTextBrowser->clear(); } void ChatTools::checkInputLength(QString string) { - if(string.toUtf8().length() > 120) myLineEdit->setMaxLength(string.length()); + if(string.toUtf8().length() > 120) myLineEdit->setMaxLength(string.length()); } void ChatTools::fillChatLinesHistory(QString fillString) { - chatLinesHistory << fillString; - if(chatLinesHistory.size() > 50) chatLinesHistory.removeFirst(); + chatLinesHistory << fillString; + if(chatLinesHistory.size() > 50) chatLinesHistory.removeFirst(); } @@ -182,114 +187,114 @@ void ChatTools::fillChatLinesHistory(QString fillString) void ChatTools::showChatHistoryIndex(int index) { - if(index <= chatLinesHistory.size()) { + if(index <= chatLinesHistory.size()) { - // cout << chatLinesHistory.size() << " : " << index << endl; - if(index > 0) - myLineEdit->setText(chatLinesHistory.at(chatLinesHistory.size()-(index))); - else - myLineEdit->setText(""); - } + // cout << chatLinesHistory.size() << " : " << index << endl; + if(index > 0) + myLineEdit->setText(chatLinesHistory.at(chatLinesHistory.size()-(index))); + else + myLineEdit->setText(""); + } } void ChatTools::nickAutoCompletition() { - QString myChatString = myLineEdit->text(); - QStringList myChatStringList = myChatString.split(" "); + QString myChatString = myLineEdit->text(); + QStringList myChatStringList = myChatString.split(" "); - QStringList matchStringList; + QStringList matchStringList; - if(nickAutoCompletitionCounter == 0) { + if(nickAutoCompletitionCounter == 0) { - if(myNickListModel) { - int it = 0; - while (myNickListModel->item(it)) { - QString text = myNickListModel->item(it, 0)->data(Qt::DisplayRole).toString(); - if(text.startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "") { - matchStringList << text; - } - ++it; - } - } + if(myNickListModel) { + int it = 0; + while (myNickListModel->item(it)) { + QString text = myNickListModel->item(it, 0)->data(Qt::DisplayRole).toString(); + if(text.startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "") { + matchStringList << text; + } + ++it; + } + } - if(!myNickStringList.isEmpty()) { + if(!myNickStringList.isEmpty()) { - QStringListIterator it(myNickStringList); - while (it.hasNext()) { - QString next = it.next(); - if (next.startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "") - matchStringList << next; - } - } - } + QStringListIterator it(myNickStringList); + while (it.hasNext()) { + QString next = it.next(); + if (next.startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "") + matchStringList << next; + } + } + } - if(!matchStringList.isEmpty() || nickAutoCompletitionCounter > 0) { + if(!matchStringList.isEmpty() || nickAutoCompletitionCounter > 0) { - myChatStringList.removeLast(); + myChatStringList.removeLast(); - // cout << nickAutoCompletitionCounter << endl; + // cout << nickAutoCompletitionCounter << endl; - if(nickAutoCompletitionCounter == 0) { - //first one - lastChatString = myChatStringList.join(" "); - lastMatchStringList = matchStringList; - } + if(nickAutoCompletitionCounter == 0) { + //first one + lastChatString = myChatStringList.join(" "); + lastMatchStringList = matchStringList; + } - if(nickAutoCompletitionCounter == lastMatchStringList.size()) nickAutoCompletitionCounter = 0; + if(nickAutoCompletitionCounter == lastMatchStringList.size()) nickAutoCompletitionCounter = 0; - // cout << nickAutoCompletitionCounter << "\n"; + // cout << nickAutoCompletitionCounter << "\n"; - if(lastChatString == "") - myLineEdit->setText(lastMatchStringList.at(nickAutoCompletitionCounter)+": "); - else - myLineEdit->setText(lastChatString+" "+lastMatchStringList.at(nickAutoCompletitionCounter)+" "); + if(lastChatString == "") + myLineEdit->setText(lastMatchStringList.at(nickAutoCompletitionCounter)+": "); + else + myLineEdit->setText(lastChatString+" "+lastMatchStringList.at(nickAutoCompletitionCounter)+" "); - nickAutoCompletitionCounter++; - } + nickAutoCompletitionCounter++; + } } void ChatTools::setChatTextEdited() { - nickAutoCompletitionCounter = 0; + nickAutoCompletitionCounter = 0; } void ChatTools::refreshIgnoreList() { - ignoreList = myConfig->readConfigStringList("PlayerIgnoreList"); + ignoreList = myConfig->readConfigStringList("PlayerIgnoreList"); } unsigned ChatTools::parsePrivateMessageTarget(QString &chatText) { - QString playerName; - int endPosName = -1; - // Target player is either in the format "this is a user" or singlename. - if (chatText.startsWith('"')) { - chatText.remove(0, 1); - endPosName = chatText.indexOf('"'); - } else { - endPosName = chatText.indexOf(' '); - } - if (endPosName > 0) { - playerName = chatText.left(endPosName); - chatText.remove(0, endPosName + 1); - } - chatText = chatText.trimmed(); - unsigned playerId = 0; - if (!playerName.isEmpty() && !chatText.isEmpty()) { - if(myNickListModel) { - int it = 0; - while (myNickListModel->item(it)) { - QString text = myNickListModel->item(it, 0)->data(Qt::DisplayRole).toString(); - if(text == playerName) { - playerId = myNickListModel->item(it, 0)->data(Qt::UserRole).toUInt(); - break; - } - ++it; - } - } - } - return playerId; + QString playerName; + int endPosName = -1; + // Target player is either in the format "this is a user" or singlename. + if (chatText.startsWith('"')) { + chatText.remove(0, 1); + endPosName = chatText.indexOf('"'); + } else { + endPosName = chatText.indexOf(' '); + } + if (endPosName > 0) { + playerName = chatText.left(endPosName); + chatText.remove(0, endPosName + 1); + } + chatText = chatText.trimmed(); + unsigned playerId = 0; + if (!playerName.isEmpty() && !chatText.isEmpty()) { + if(myNickListModel) { + int it = 0; + while (myNickListModel->item(it)) { + QString text = myNickListModel->item(it, 0)->data(Qt::DisplayRole).toString(); + if(text == playerName) { + playerId = myNickListModel->item(it, 0)->data(Qt::UserRole).toUInt(); + break; + } + ++it; + } + } + } + return playerId; } diff --git a/src/gui/qt/chattools/chattools.h b/src/gui/qt/chattools/chattools.h index ea3f75c4..3f0a4f79 100644 --- a/src/gui/qt/chattools/chattools.h +++ b/src/gui/qt/chattools/chattools.h @@ -46,7 +46,7 @@ public: public slots: void sendMessage(); - void receiveMessage(QString playerName, QString message); + void receiveMessage(QString playerName, QString message, bool pm=false); void privateMessage(QString playerName, QString message); void clearChat(); void checkInputLength(QString string); diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index 887989d6..15eacfab 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -1554,7 +1554,7 @@ p, li { white-space: pre-wrap; } - 0 + 1 @@ -1844,7 +1844,7 @@ p, li { white-space: pre-wrap; } - + Qt::Vertical @@ -1857,6 +1857,13 @@ p, li { white-space: pre-wrap; } + + + + Automatically leave the table after the game finished + + + diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index c5ea2343..3e114f31 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -234,7 +234,8 @@ void settingsDialogImpl::prepareDialog() lineEdit_InternetGamePassword->setText(QString::fromUtf8(myConfig->readConfigString("InternetGamePassword").c_str())); } checkBox_UseLobbyChat->setChecked(myConfig->readConfigInt("UseLobbyChat")); - comboBox_internetGameType->setCurrentIndex(myConfig->readConfigInt("InternetGameType")); + checkBox_InetGane_AutoLeaveTheTableAfterGameFinished->setChecked(myConfig->readConfigInt("NetAutoLeaveGameAfterFinish")); + comboBox_internetGameType->setCurrentIndex(myConfig->readConfigInt("InternetGameType")); lineEdit_internetGameName->setText(QString::fromUtf8(myConfig->readConfigString("InternetGameName").c_str())); std::list playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList"); @@ -596,7 +597,8 @@ void settingsDialogImpl::isAccepted() myConfig->writeConfigInt("UseInternetGamePassword", checkBox_UseInternetGamePassword->isChecked()); myConfig->writeConfigString("InternetGamePassword", lineEdit_InternetGamePassword->text().toUtf8().constData()); myConfig->writeConfigInt("UseLobbyChat", checkBox_UseLobbyChat->isChecked()); - myConfig->writeConfigInt("InternetGameType", comboBox_internetGameType->currentIndex()); + myConfig->writeConfigInt("NetAutoLeaveGameAfterFinish", checkBox_InetGane_AutoLeaveTheTableAfterGameFinished->isChecked()); + myConfig->writeConfigInt("InternetGameType", comboBox_internetGameType->currentIndex()); myConfig->writeConfigString("InternetGameName", lineEdit_internetGameName->text().toUtf8().constData()); int k; diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 5a691c07..a43477d9 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -691,7 +691,7 @@ void startWindowImpl::networkError(int errorID, int /*osErrorID*/) case ERR_SOCK_RECV_FAILED: // Sometimes windows reports recv failed on close. case ERR_SOCK_CONN_RESET: { QMessageBox::warning(this, tr("Network Error"), - tr("Connection was closed by the server."), + tr("The connection to the server was lost."), QMessageBox::Close); } break; @@ -917,7 +917,7 @@ void startWindowImpl::networkError(int errorID, int /*osErrorID*/) myGameLobbyDialog->reject(); myConnectToServerDialog->reject(); myStartNetworkGameDialog->reject(); - myGuiInterface->getMyW()->close(); + myGuiInterface->getMyW()->close(); } void startWindowImpl::networkNotification(int notificationId)