Conflicts:
	ts/pokerth_gd.ts
This commit is contained in:
GunChleoc
2013-12-19 10:41:29 +00:00
418 changed files with 116202 additions and 77310 deletions
+25
View File
@@ -1,3 +1,28 @@
2013-12-01 version 1.1 beta4
- Updated several translations
- New icon for spectator list on table (#217)
- Display the number of spectators next to the spectator icon (#206)
- BUGFIX: Correct sound is now played when joining a game (#230)
- BUGFIX: No longer beep if ignored player uses nickname in chat (#221)
2013-11-02 version 1.1 beta3
- New option to allow/disallow spectators when creating a game (#215)
2013-10-12 version 1.1 beta2
- BUGFIX: Now you are able to click the menu buttons during a local game again (#203)
- BUGFIX: Idle players are shown correctly if they join YOUR game (#198)
- Updating websocket++ to latest github release (0.3 alpha4)
2013-10-06 version 1.1 beta1
- New web-based spectator mode on http://www.pokerth.net/live (#37)
- Show list of spectators in the lobby and on the game table (#196)
- Support for WebSocket connections was integrated in the server
- Added option to disable emoticons in the chat (#172)
- Avatars are no longer displayed for players which are on the ignore list (#187)
- BUGFIX: context menu in connected player list was fixed (#183)
- BUGFIX: "display idle players" in the lobby was fixed (#136)
- translation updates
2013-04-07 version 1.0.1 2013-04-07 version 1.0.1
- New Galician (gl) translation - New Galician (gl) translation
- Client settings dialog option for connecting to a private, password protected server (#178) - Client settings dialog option for connecting to a private, password protected server (#178)
+19 -19
View File
@@ -13,32 +13,31 @@ OBJECTS_DIR = obj
TEMPLATE = app TEMPLATE = app
INCLUDEPATH += src/ \ INCLUDEPATH += src/ \
src/chatcleaner/ \ src/chatcleaner/ \
src/third_party/asn1/ \
src/net/ src/net/
DEPENDPATH += src/ \ DEPENDPATH += src/ \
src/chatcleaner/ \ src/chatcleaner/ \
src/third_party/asn1/ \
src/net/ src/net/
SOURCES += chatcleaner.cpp \ SOURCES += src/chatcleaner/chatcleaner.cpp \
cleanerserver.cpp \ src/chatcleaner/cleanerserver.cpp \
messagefilter.cpp \ src/chatcleaner/messagefilter.cpp \
badwordcheck.cpp \ src/chatcleaner/badwordcheck.cpp \
textfloodcheck.cpp \ src/chatcleaner/textfloodcheck.cpp \
cleanerconfig.cpp \ src/chatcleaner/cleanerconfig.cpp \
capsfloodcheck.cpp \ src/chatcleaner/capsfloodcheck.cpp \
letterrepeatingcheck.cpp \ src/chatcleaner/letterrepeatingcheck.cpp \
urlcheck.cpp src/chatcleaner/urlcheck.cpp
HEADERS += cleanerserver.h \ HEADERS += src/chatcleaner/cleanerserver.h \
messagefilter.h \ src/chatcleaner/messagefilter.h \
badwordcheck.h \ src/chatcleaner/badwordcheck.h \
textfloodcheck.h \ src/chatcleaner/textfloodcheck.h \
cleanerconfig.h \ src/chatcleaner/cleanerconfig.h \
capsfloodcheck.h \ src/chatcleaner/capsfloodcheck.h \
letterrepeatingcheck.h \ src/chatcleaner/letterrepeatingcheck.h \
urlcheck.h src/chatcleaner/urlcheck.h
LIBPATH += lib LIBPATH += lib
LIBS += -lpokerth_lib \ LIBS += -lpokerth_lib \
-lpokerth_protocol \ -lpokerth_protocol \
-lprotobuf \
-ltinyxml -ltinyxml
win32 { win32 {
@@ -61,4 +60,5 @@ mac {
QMAKE_CXXFLAGS -= -std=gnu++0x QMAKE_CXXFLAGS -= -std=gnu++0x
LIBPATH += /Developer/SDKs/MacOSX10.5.sdk/usr/lib LIBPATH += /Developer/SDKs/MacOSX10.5.sdk/usr/lib
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /usr/local/include
} }
+91
View File
@@ -0,0 +1,91 @@
/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
* *
* Additional permission under GNU AGPL version 3 section 7 *
* *
* If you modify this program, or any covered work, by linking or *
* combining it with the OpenSSL project's OpenSSL library (or a *
* modified version of that library), containing parts covered by the *
* terms of the OpenSSL or SSLeay licenses, the authors of PokerTH *
* (Felix Hammer, Florian Thauer, Lothar May) grant you additional *
* permission to convey the resulting work. *
* Corresponding Source for a non-source form of such a combination *
* shall include the source code for the parts of OpenSSL used as well *
* as that of the covered work. *
*****************************************************************************/
option java_package = "de.chatcleaner.protocol";
option java_outer_classname = "ProtoBuf";
option optimize_for = LITE_RUNTIME;
message CleanerInitMessage {
required uint32 requestedVersion = 1;
required string clientSecret = 2;
}
message CleanerInitAckMessage {
required uint32 serverVersion = 1;
required string serverSecret = 2;
}
enum CleanerChatType {
cleanerChatTypeLobby = 0;
cleanerChatTypeGame = 1;
}
message CleanerChatRequestMessage {
required uint32 requestId = 1;
required CleanerChatType cleanerChatType = 2;
optional uint32 gameId = 3 [default = 0];
required uint32 playerId = 4;
required string playerName = 5;
required string chatMessage = 6;
}
message CleanerChatReplyMessage {
required uint32 requestId = 1;
required CleanerChatType cleanerChatType = 2;
optional uint32 gameId = 3 [default = 0];
required uint32 playerId = 4;
enum CleanerActionType {
cleanerActionNone = 0;
cleanerActionWarning = 1;
cleanerActionKick = 2;
cleanerActionBan = 3;
cleanerActionMute = 4;
}
required CleanerActionType cleanerActionType = 5;
optional string cleanerText = 6 [default = ""];
}
// The main message type (it is prefixed by 4 bytes length of the message).
message ChatCleanerMessage {
enum ChatCleanerMessageType {
Type_CleanerInitMessage = 1;
Type_CleanerInitAckMessage = 2;
Type_CleanerChatRequestMessage = 3;
Type_CleanerChatReplyMessage = 4;
}
required ChatCleanerMessageType messageType = 1;
optional CleanerInitMessage cleanerInitMessage = 2;
optional CleanerInitAckMessage cleanerInitAckMessage = 3;
optional CleanerChatRequestMessage cleanerChatRequestMessage = 4;
optional CleanerChatReplyMessage cleanerChatReplyMessage = 5;
}
+2 -2
View File
@@ -41,13 +41,13 @@ unix : !mac {
QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib
INCLUDEPATH += $${PREFIX}/include INCLUDEPATH += $${PREFIX}/include
LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS)
BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt
BOOST_SYS = boost_system boost_system-mt BOOST_SYS = boost_system boost_system-mt
# #
# searching in $PREFIX/lib and $PREFIX/lib64 # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS)
# to override the default '/usr' pass PREFIX # to override the default '/usr' pass PREFIX
# variable to qmake. # variable to qmake.
# #
Binary file not shown.
+40
View File
@@ -0,0 +1,40 @@
Qt
http://qt-project.org/doc/qt-5.0/qtdoc/opensourcelicense.html
http://qt-project.org/doc/qt-5.0/qtdoc/3rdparty.html
Boost
http://www.boost.org/users/license.html
libprotobuf
http://code.google.com/p/protobuf/
websocket++
https://github.com/zaphoyd/websocketpp/blob/master/COPYING
libcurl
http://curl.haxx.se/docs/copyright.html
libgsasl
http://www.gnu.org/software/gsasl/
tinyxml
http://www.grinninglizard.com/tinyxmldocs/
OpenSSL
http://www.openssl.org/source/license.html
libgcrypt
http://www.gnupg.org/
SDL
http://www.libsdl.org/license.php
SDL_mixer
http://www.libsdl.org/projects/SDL_mixer/
sqlite3
http://www.sqlite.org/copyright.html
Due to dependencies of these libs, PokerTH may link to additional libs not listed here. If you think acknowledgement for a certain lib is missing, please contact us.
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@ on your Linux system.
3. Within /opt/mingw, run 3. Within /opt/mingw, run
make gcc make gcc
make qt make qt5
make boost make boost
make curl make curl
make libgsasl make libgsasl
-76
View File
@@ -1,76 +0,0 @@
/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
CHATCLEANER-PROTOCOL DEFINITIONS
IMPLICIT TAGS
EXTENSIBILITY IMPLIED ::=
BEGIN
ChatCleanerMessage ::= CHOICE {
cleanerInitMessage CleanerInitMessage,
cleanerInitAckMessage CleanerInitAckMessage,
cleanerChatRequestMessage CleanerChatRequestMessage,
cleanerChatReplyMessage CleanerChatReplyMessage
}
CleanerInitMessage ::= [APPLICATION 0] SEQUENCE {
requestedVersion INTEGER(0..65535),
clientSecret UTF8String (SIZE(1..32))
}
CleanerInitAckMessage ::= [APPLICATION 1] SEQUENCE {
serverVersion INTEGER(0..65535),
serverSecret UTF8String (SIZE(1..32))
}
CleanerChatType ::= CHOICE {
cleanerChatTypeLobby [0] CleanerChatTypeLobby,
cleanerChatTypeGame [1] CleanerChatTypeGame
}
CleanerChatTypeLobby ::= SEQUENCE {
}
CleanerChatTypeGame ::= SEQUENCE {
gameId INTEGER(1..4294967295)
}
CleanerChatRequestMessage ::= [APPLICATION 2] SEQUENCE {
requestId INTEGER(1..4294967295),
cleanerChatType CleanerChatType,
playerId INTEGER(1..4294967295),
playerName UTF8String (SIZE(1..32)),
chatMessage UTF8String (SIZE(1..128))
}
CleanerChatReplyMessage ::= [APPLICATION 3] SEQUENCE {
requestId INTEGER(1..4294967295),
cleanerChatType CleanerChatType,
playerId INTEGER(1..4294967295),
cleanerActionType ENUMERATED {
cleanerActionNone (0),
cleanerActionWarning (1),
cleanerActionKick (2),
cleanerActionBan (3),
cleanerActionMute (4)
},
cleanerText UTF8String (SIZE(1..128)) OPTIONAL
}
END
-848
View File
@@ -1,848 +0,0 @@
/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
/* This file is now deprecated! google protocol buffers are used instead.
* Please refer to pokerth.proto. */
POKERTH-PROTOCOL DEFINITIONS
IMPLICIT TAGS
EXTENSIBILITY IMPLIED ::=
BEGIN
PokerTHMessage ::= CHOICE {
announceMessage AnnounceMessage,
initMessage InitMessage,
authMessage AuthMessage,
initAckMessage InitAckMessage,
avatarRequestMessage AvatarRequestMessage,
avatarReplyMessage AvatarReplyMessage,
playerListMessage PlayerListMessage,
gameListMessage GameListMessage,
playerInfoRequestMessage PlayerInfoRequestMessage,
playerInfoReplyMessage PlayerInfoReplyMessage,
subscriptionRequestMessage SubscriptionRequestMessage,
joinGameRequestMessage JoinGameRequestMessage,
joinGameReplyMessage JoinGameReplyMessage,
gamePlayerMessage GamePlayerMessage,
kickPlayerRequestMessage KickPlayerRequestMessage,
leaveGameRequestMessage LeaveGameRequestMessage,
invitePlayerToGameMessage InvitePlayerToGameMessage,
inviteNotifyMessage InviteNotifyMessage,
rejectGameInvitationMessage RejectGameInvitationMessage,
rejectInvNotifyMessage RejectInvNotifyMessage,
startEventMessage StartEventMessage,
startEventAckMessage StartEventAckMessage,
gameStartMessage GameStartMessage,
handStartMessage HandStartMessage,
playersTurnMessage PlayersTurnMessage,
myActionRequestMessage MyActionRequestMessage,
yourActionRejectedMessage YourActionRejectedMessage,
playersActionDoneMessage PlayersActionDoneMessage,
dealFlopCardsMessage DealFlopCardsMessage,
dealTurnCardMessage DealTurnCardMessage,
dealRiverCardMessage DealRiverCardMessage,
allInShowCardsMessage AllInShowCardsMessage,
endOfHandMessage EndOfHandMessage,
showMyCardsRequestMessage ShowMyCardsRequestMessage,
afterHandShowCardsMessage AfterHandShowCardsMessage,
endOfGameMessage EndOfGameMessage,
playerIdChangedMessage PlayerIdChangedMessage,
askKickPlayerMessage AskKickPlayerMessage,
askKickDeniedMessage AskKickDeniedMessage,
startKickPetitionMessage StartKickPetitionMessage,
voteKickRequestMessage VoteKickRequestMessage,
voteKickReplyMessage VoteKickReplyMessage,
kickPetitionUpdateMessage KickPetitionUpdateMessage,
endKickPetitionMessage EndKickPetitionMessage,
statisticsMessage StatisticsMessage,
chatRequestMessage ChatRequestMessage,
chatMessage ChatMessage,
chatRejectMessage ChatRejectMessage,
dialogMessage DialogMessage,
timeoutWarningMessage TimeoutWarningMessage,
resetTimeoutMessage ResetTimeoutMessage,
reportAvatarMessage ReportAvatarMessage,
reportAvatarAckMessage ReportAvatarAckMessage,
reportGameMessage ReportGameMessage,
reportGameAckMessage ReportGameAckMessage,
errorMessage ErrorMessage
}
AnnounceMessage ::= [APPLICATION 0] SEQUENCE {
protocolVersion Version,
latestGameVersion Version,
latestBetaRevision INTEGER(0..65535),
serverType ENUMERATED {
serverTypeLAN (0),
serverTypeInternetNoAuth (1),
serverTypeInternetAuth (2)
},
numPlayersOnServer INTEGER(0..65535)
}
-- buildId contains a constant build id (specific for Windows/Linux/Mac builds)
InitMessage ::= [APPLICATION 1] SEQUENCE {
requestedVersion Version,
buildId INTEGER,
myLastSessionId Guid OPTIONAL,
authServerPassword UTF8String (SIZE(1..64)) OPTIONAL,
login CHOICE {
guestLogin [0] GuestLogin,
authenticatedLogin [1] AuthenticatedLogin,
unauthenticatedLogin [2] UnauthenticatedLogin
}
}
Version ::= SEQUENCE {
major INTEGER(0..65535),
minor INTEGER(0..65535)
}
GuestLogin ::= SEQUENCE {
nickName UTF8String (SIZE(1..64))
}
-- Login data is according to SCRAM SHA-1
AuthenticatedLogin ::= SEQUENCE {
clientUserData OCTET STRING (SIZE(1..256)),
avatar AvatarHash OPTIONAL
}
UnauthenticatedLogin ::= SEQUENCE {
nickName UTF8String (SIZE(1..64)),
avatar AvatarHash OPTIONAL
}
AuthMessage ::= [APPLICATION 2] CHOICE {
authServerChallenge [0] AuthServerChallenge,
authClientResponse [1] AuthClientResponse,
authServerVerification [2] AuthServerVerification
}
AuthServerChallenge ::= SEQUENCE {
serverChallenge OCTET STRING (SIZE(1..256))
}
AuthClientResponse ::= SEQUENCE {
clientResponse OCTET STRING (SIZE(1..256))
}
AuthServerVerification ::= SEQUENCE {
serverVerification OCTET STRING (SIZE(1..256))
}
InitAckMessage ::= [APPLICATION 3] SEQUENCE {
yourSessionId Guid,
yourPlayerId NonZeroId,
yourAvatar AvatarHash OPTIONAL,
rejoinGameId NonZeroId OPTIONAL
}
AvatarRequestMessage ::= [APPLICATION 4] SEQUENCE {
requestId NonZeroId,
avatar AvatarHash
}
AvatarReplyMessage ::= [APPLICATION 5] SEQUENCE {
requestId NonZeroId,
avatarResult CHOICE {
avatarHeader [0] AvatarHeader,
avatarData [1] AvatarData,
avatarEnd [2] AvatarEnd,
unknownAvatar [3] UnknownAvatar
}
}
AvatarHeader ::= SEQUENCE {
avatarType NetAvatarType,
avatarSize INTEGER(32..30720)
}
AvatarData ::= SEQUENCE {
avatarBlock OCTET STRING (SIZE(1..256))
}
AvatarEnd ::= SEQUENCE {
}
UnknownAvatar ::= SEQUENCE {
}
AvatarHash ::= OCTET STRING (SIZE(16)) -- md5 hash value
NetAvatarType ::= ENUMERATED {
avatarImagePng (1),
avatarImageJpg (2),
avatarImageGif (3)
}
PlayerListMessage ::= [APPLICATION 6] SEQUENCE {
playerId NonZeroId,
playerListNotification ENUMERATED {
playerListNew (0),
playerListLeft (1)
}
}
GameListMessage ::= [APPLICATION 7] SEQUENCE {
gameId NonZeroId,
gameListNotification CHOICE {
gameListNew [0] GameListNew,
gameListUpdate [1] GameListUpdate,
gameListPlayerJoined [2] GameListPlayerJoined,
gameListPlayerLeft [3] GameListPlayerLeft,
gameListAdminChanged [4] GameListAdminChanged
}
}
GameListNew ::= SEQUENCE {
gameMode NetGameMode,
isPrivate BOOLEAN,
playerIds SEQUENCE SIZE(0..10) OF NonZeroId,
adminPlayerId NonZeroId,
gameInfo NetGameInfo
}
GameListUpdate ::= SEQUENCE {
gameMode NetGameMode
}
GameListPlayerJoined ::= SEQUENCE {
playerId NonZeroId
}
GameListPlayerLeft ::= SEQUENCE {
playerId NonZeroId
}
GameListAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
NetGameMode ::= ENUMERATED {
gameCreated (1),
gameStarted (2),
gameClosed (3)
}
PlayerInfoRequestMessage ::= [APPLICATION 8] SEQUENCE {
playerId NonZeroId
}
PlayerInfoReplyMessage ::= [APPLICATION 9] SEQUENCE {
playerId NonZeroId,
playerInfoResult CHOICE {
playerInfoData [0] PlayerInfoData,
unknownPlayerInfo [1] UnknownPlayerInfo
}
}
PlayerInfoRights ::= ENUMERATED {
playerRightsGuest (1),
playerRightsNormal (2),
playerRightsAdmin (3)
}
PlayerInfoData ::= SEQUENCE {
playerName UTF8String (SIZE(1..32)),
isHuman BOOLEAN,
playerRights PlayerInfoRights,
countryCode UTF8String (SIZE(2)) OPTIONAL,
avatarData SEQUENCE {
avatarType NetAvatarType,
avatar AvatarHash
} OPTIONAL
}
UnknownPlayerInfo ::= SEQUENCE {
}
-- The following request will not be confirmed by the server. It is used,
-- optionally, to reduce server traffic. The server might ignore it.
SubscriptionRequestMessage ::= [APPLICATION 10] SEQUENCE {
subscriptionAction ENUMERATED {
unsubscribeGameList (1),
resubscribeGameList (2)
}
}
JoinGameRequestMessage ::= [APPLICATION 11] SEQUENCE {
joinGameAction CHOICE {
joinExistingGame [0] JoinExistingGame,
joinNewGame [1] JoinNewGame,
rejoinExistingGame [2] RejoinExistingGame
},
autoLeave BOOLEAN
}
JoinExistingGame ::= SEQUENCE {
gameId NonZeroId,
password UTF8String (SIZE(1..64)) OPTIONAL
}
JoinNewGame ::= SEQUENCE {
gameInfo NetGameInfo,
password UTF8String (SIZE(1..64)) OPTIONAL
}
RejoinExistingGame ::= SEQUENCE {
gameId NonZeroId
}
JoinGameReplyMessage ::= [APPLICATION 12] SEQUENCE {
gameId NonZeroId,
joinGameResult CHOICE {
joinGameAck [0] JoinGameAck,
joinGameFailed [1] JoinGameFailed
}
}
JoinGameAck ::= SEQUENCE {
areYouGameAdmin BOOLEAN,
gameInfo NetGameInfo
}
JoinGameFailed ::= SEQUENCE {
joinGameFailureReason ENUMERATED {
invalidGame (1),
gameIsFull (2),
gameIsRunning (3),
invalidPassword (4),
notAllowedAsGuest (5),
notInvited (6),
gameNameInUse (7),
badGameName (8),
invalidSettings (9),
ipAddressBlocked (10),
rejoinFailed (11)
}
}
NetGameInfo ::= SEQUENCE {
gameName UTF8String (SIZE(1..64)),
netGameType ENUMERATED {
normalGame (1),
registeredOnlyGame (2),
inviteOnlyGame (3),
rankingGame (4)
},
maxNumPlayers INTEGER(2..10),
raiseIntervalMode CHOICE {
raiseEveryHands [0] INTEGER(1..1000),
raiseEveryMinutes [1] INTEGER(1..1000)
},
endRaiseMode ENUMERATED {
doubleBlinds (1),
raiseByEndValue (2),
keepLastBlind (3)
},
proposedGuiSpeed INTEGER(1..11),
delayBetweenHands INTEGER(5..20), -- These are seconds
playerActionTimeout INTEGER(0..60), -- These are seconds
firstSmallBlind INTEGER(1..20000),
endRaiseSmallBlindValue InitialAmountOfMoney,
startMoney InitialNonZeroAmountOfMoney,
manualBlinds SEQUENCE SIZE(0..30) OF InitialNonZeroAmountOfMoney
}
GamePlayerMessage ::= [APPLICATION 13] SEQUENCE {
gameId NonZeroId,
gamePlayerNotification CHOICE {
gamePlayerJoined [0] GamePlayerJoined,
gamePlayerLeft [1] GamePlayerLeft,
gameAdminChanged [2] GameAdminChanged,
removedFromGame [3] RemovedFromGame
}
}
GamePlayerJoined ::= SEQUENCE {
playerId NonZeroId,
isGameAdmin BOOLEAN
}
GamePlayerLeft ::= SEQUENCE {
playerId NonZeroId,
gamePlayerLeftReason ENUMERATED {
leftOnRequest (0),
leftKicked (1),
leftError (2)
}
}
GameAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
RemovedFromGame ::= SEQUENCE {
removedFromGameReason ENUMERATED {
removedOnRequest (0), -- No error, client wished to leave.
kickedFromGame (1),
gameIsFull (2),
gameIsRunning (3),
gameTimeout (4),
removedStartFailed (5)
}
}
KickPlayerRequestMessage ::= [APPLICATION 14] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
LeaveGameRequestMessage ::= [APPLICATION 15] SEQUENCE {
gameId NonZeroId
}
InvitePlayerToGameMessage ::= [APPLICATION 16] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
InviteNotifyMessage ::= [APPLICATION 17] SEQUENCE {
gameId NonZeroId,
playerIdWho NonZeroId,
playerIdByWhom NonZeroId
}
RejectGameInvReason ::= ENUMERATED {
no (0),
busy (1)
}
RejectGameInvitationMessage ::= [APPLICATION 18] SEQUENCE {
gameId NonZeroId,
myRejectReason RejectGameInvReason
}
RejectInvNotifyMessage ::= [APPLICATION 19] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
playerRejectReason RejectGameInvReason
}
StartEventMessage ::= [APPLICATION 20] SEQUENCE {
gameId NonZeroId,
startEventType CHOICE {
startEvent [0] StartEvent,
rejoinEvent [1] RejoinEvent
}
}
StartEvent ::= SEQUENCE {
fillWithComputerPlayers BOOLEAN
}
RejoinEvent ::= SEQUENCE {
}
StartEventAckMessage ::= [APPLICATION 21] SEQUENCE {
gameId NonZeroId
}
RejoinPlayerData ::= SEQUENCE {
playerId NonZeroId,
playerMoney AmountOfMoney
}
GameStartModeInitial ::= SEQUENCE {
playerSeats SEQUENCE SIZE(2..10) OF NonZeroId
}
GameStartModeRejoin ::= SEQUENCE {
handNum NonZeroId,
rejoinPlayerData SEQUENCE SIZE(2..10) OF RejoinPlayerData
}
GameStartMessage ::= [APPLICATION 22] SEQUENCE {
gameId NonZeroId,
startDealerPlayerId NonZeroId,
gameStartMode CHOICE {
gameStartModeInitial [0] GameStartModeInitial,
gameStartModeRejoin [1] GameStartModeRejoin
}
}
PlainCards ::= SEQUENCE {
plainCard1 Card,
plainCard2 Card
}
EncryptedCards ::= SEQUENCE {
cardData OCTET STRING (SIZE(16..64))
}
HandStartMessage ::= [APPLICATION 23] SEQUENCE {
gameId NonZeroId,
yourCards CHOICE {
plainCards [0] PlainCards,
encryptedCards [1] EncryptedCards
},
smallBlind INTEGER(1..100000000),
seatStates SEQUENCE SIZE(2..10) OF NetPlayerState
}
PlayersTurnMessage ::= [APPLICATION 24] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
gameState NetGameState
}
MyActionRequestMessage ::= [APPLICATION 25] SEQUENCE {
gameId NonZeroId,
handNum NonZeroId,
gameState NetGameState,
myAction NetPlayerAction,
myRelativeBet AmountOfMoney
}
YourActionRejectedMessage ::= [APPLICATION 26] SEQUENCE {
gameId NonZeroId,
gameState NetGameState,
yourAction NetPlayerAction,
yourRelativeBet AmountOfMoney,
rejectionReason ENUMERATED {
rejectedInvalidGameState (1),
rejectedNotYourTurn (2),
rejectedActionNotAllowed (3)
}
}
PlayersActionDoneMessage ::= [APPLICATION 27] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
gameState NetGameState,
playerAction NetPlayerAction,
totalPlayerBet AmountOfMoney,
playerMoney AmountOfMoney,
highestSet AmountOfMoney,
minimumRaise AmountOfMoney
}
DealFlopCardsMessage ::= [APPLICATION 28] SEQUENCE {
gameId NonZeroId,
flopCard1 Card,
flopCard2 Card,
flopCard3 Card
}
DealTurnCardMessage ::= [APPLICATION 29] SEQUENCE {
gameId NonZeroId,
turnCard Card
}
DealRiverCardMessage ::= [APPLICATION 30] SEQUENCE {
gameId NonZeroId,
riverCard Card
}
AllInShowCardsMessage ::= [APPLICATION 31] SEQUENCE {
gameId NonZeroId,
playersAllIn SEQUENCE SIZE(1..10) OF PlayerAllIn
}
PlayerAllIn ::= SEQUENCE {
playerId NonZeroId,
allInCard1 Card,
allInCard2 Card
}
EndOfHandMessage ::= [APPLICATION 32] SEQUENCE {
gameId NonZeroId,
endOfHandType CHOICE {
endOfHandShowCards [0] EndOfHandShowCards,
endOfHandHideCards [1] EndOfHandHideCards
}
}
EndOfHandShowCards ::= SEQUENCE {
playerResults SEQUENCE SIZE(1..10) OF PlayerResult
}
PlayerResult ::= SEQUENCE {
playerId NonZeroId,
resultCard1 Card,
resultCard2 Card,
bestHandPosition SEQUENCE SIZE(5) OF INTEGER, -- TODO size restrictions
moneyWon AmountOfMoney,
playerMoney AmountOfMoney,
cardsValue INTEGER OPTIONAL
}
EndOfHandHideCards ::= SEQUENCE {
playerId NonZeroId,
moneyWon AmountOfMoney,
playerMoney AmountOfMoney
}
ShowMyCardsRequestMessage ::= [APPLICATION 33] SEQUENCE {
}
AfterHandShowCardsMessage ::= [APPLICATION 34] SEQUENCE {
playerResult PlayerResult
}
EndOfGameMessage ::= [APPLICATION 35] SEQUENCE {
gameId NonZeroId,
winnerPlayerId NonZeroId
}
PlayerIdChangedMessage ::= [APPLICATION 36] SEQUENCE {
oldPlayerId NonZeroId,
newPlayerId NonZeroId
}
AskKickPlayerMessage ::= [APPLICATION 64] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
AskKickDeniedMessage ::= [APPLICATION 65] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
kickDeniedReason ENUMERATED {
kickDeniedInvalidGameState (0),
kickDeniedNotPossible (1),
kickDeniedTryAgainLater (2),
kickDeniedAlreadyInProgress (3),
kickDeniedInvalidPlayerId (4)
}
}
StartKickPetitionMessage ::= [APPLICATION 66] SEQUENCE {
gameId NonZeroId,
petitionId NonZeroId,
proposingPlayerId NonZeroId,
kickPlayerId NonZeroId,
kickTimeoutSec INTEGER(1..120),
numVotesNeededToKick INTEGER(1..9)
}
VoteKickRequestMessage ::= [APPLICATION 67] SEQUENCE {
gameId NonZeroId,
petitionId NonZeroId,
voteKick BOOLEAN
}
VoteKickReplyMessage ::= [APPLICATION 68] SEQUENCE {
gameId NonZeroId,
petitionId NonZeroId,
voteKickReplyType CHOICE {
voteKickAck [0] VoteKickAck,
voteKickDenied [1] VoteKickDenied
}
}
VoteKickAck ::= SEQUENCE {
}
VoteKickDenied ::= SEQUENCE {
voteKickDeniedReason ENUMERATED {
voteKickDeniedInvalid (0),
voteKickDeniedAlreadyVoted (1)
}
}
KickPetitionUpdateMessage ::= [APPLICATION 69] SEQUENCE {
gameId NonZeroId,
petitionId NonZeroId,
numVotesAgainstKicking INTEGER(0..9),
numVotesInFavourOfKicking INTEGER(1..9),
numVotesNeededToKick INTEGER(1..9)
}
EndKickPetitionMessage ::= [APPLICATION 70] SEQUENCE {
gameId NonZeroId,
petitionId NonZeroId,
numVotesAgainstKicking INTEGER(0..9),
numVotesInFavourOfKicking INTEGER(1..9),
resultPlayerKicked BOOLEAN,
petitionEndReason ENUMERATED {
petitionEndEnoughVotes (0),
petitionEndTooFewPlayers (1),
petitionEndPlayerLeft (2),
petitionEndTimeout (3)
}
}
StatisticsMessage ::= [APPLICATION 128] SEQUENCE {
statisticsData SEQUENCE SIZE(1..32) OF StatisticsData
}
StatisticsData ::= SEQUENCE {
statisticsType ENUMERATED {
statNumberOfPlayers (1)
},
statisticsValue INTEGER
}
ChatRequestMessage ::= [APPLICATION 129] SEQUENCE {
chatRequestType CHOICE {
chatRequestTypeLobby [0] ChatRequestTypeLobby,
chatRequestTypeGame [1] ChatRequestTypeGame,
chatRequestTypePrivate [2] ChatRequestTypePrivate
},
chatText UTF8String (SIZE(1..128))
}
ChatRequestTypeLobby ::= SEQUENCE {
}
ChatRequestTypeGame ::= SEQUENCE {
gameId NonZeroId
}
ChatRequestTypePrivate ::= SEQUENCE {
targetPlayerId NonZeroId
}
ChatMessage ::= [APPLICATION 130] SEQUENCE {
chatType CHOICE {
chatTypeLobby [0] ChatTypeLobby,
chatTypeGame [1] ChatTypeGame,
chatTypeBot [2] ChatTypeBot,
chatTypeBroadcast [3] ChatTypeBroadcast,
chatTypePrivate [4] ChatTypePrivate
},
chatText UTF8String (SIZE(1..128))
}
ChatTypeLobby ::= SEQUENCE {
playerId NonZeroId
}
ChatTypeGame ::= SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
ChatTypeBroadcast ::= SEQUENCE {
}
ChatTypeBot ::= SEQUENCE {
}
ChatTypePrivate ::= SEQUENCE {
playerId NonZeroId
}
ChatRejectMessage ::= [APPLICATION 131] SEQUENCE {
chatText UTF8String (SIZE(1..128))
}
DialogMessage ::= [APPLICATION 132] SEQUENCE {
notificationText UTF8String (SIZE(1..128))
}
TimeoutWarningMessage ::= [APPLICATION 133] SEQUENCE {
timeoutReason ENUMERATED {
timeoutNoDataReceived (0),
timeoutInactiveGame (1),
timeoutKickAfterAutofold (2)
},
remainingSeconds INTEGER
}
ResetTimeoutMessage ::= [APPLICATION 134] SEQUENCE {
}
ReportAvatarMessage ::= [APPLICATION 135] SEQUENCE {
reportedPlayerId NonZeroId,
reportedAvatar AvatarHash
}
ReportAvatarAckMessage ::= [APPLICATION 136] SEQUENCE {
reportedPlayerId NonZeroId,
reportAvatarResult ENUMERATED {
avatarReportAccepted (0),
avatarReportDuplicate (1),
avatarReportInvalid (2)
}
}
ReportGameMessage ::= [APPLICATION 137] SEQUENCE {
reportedGameId NonZeroId
}
ReportGameAckMessage ::= [APPLICATION 138] SEQUENCE {
reportedGameId NonZeroId,
reportGameResult ENUMERATED {
gameReportAccepted (0),
gameReportDuplicate (1),
gameReportInvalid (2)
}
}
ErrorMessage ::= [APPLICATION 255] SEQUENCE {
errorReason ENUMERATED {
errorReserved (0),
errorInitVersionNotSupported (1),
errorInitServerFull (2),
errorInitAuthFailure (3),
errorInitPlayerNameInUse (4),
errorInitInvalidPlayerName (5),
errorInitServerMaintenance (6),
errorInitBlocked (7),
errorAvatarTooLarge (8),
errorInvalidPacket (256),
errorInvalidState (257),
errorKickedFromServer (258),
errorBannedFromServer (259),
errorBlockedByServer (260),
errorSessionTimeout (261)
}
}
NetGameState ::= ENUMERATED {
statePreflop (0),
stateFlop (1),
stateTurn (2),
stateRiver (3),
statePreflopSmallBlind (4),
statePreflopBigBlind (5)
}
NetPlayerAction ::= ENUMERATED {
actionNone (0),
actionFold (1),
actionCheck (2),
actionCall (3),
actionBet (4),
actionRaise (5),
actionAllIn (6)
}
NetPlayerState ::= ENUMERATED {
playerStateNormal (0),
playerStateSessionInactive (1),
playerStateNoMoney (2)
}
NonZeroId ::= INTEGER(1..4294967295)
Id ::= INTEGER(0..4294967295)
Guid ::= OCTET STRING (SIZE(16))
Card ::= INTEGER(0..51)
AmountOfMoney ::= INTEGER(0..10000000)
InitialAmountOfMoney ::= INTEGER(0..1000000)
InitialNonZeroAmountOfMoney ::= INTEGER(1..1000000)
END
+2 -2
View File
@@ -42,14 +42,14 @@ unix : !mac {
QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib
INCLUDEPATH += $${PREFIX}/include INCLUDEPATH += $${PREFIX}/include
LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS)
BOOST_THREAD = boost_thread boost_thread-mt BOOST_THREAD = boost_thread boost_thread-mt
BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt
BOOST_SYS = boost_system boost_system-mt BOOST_SYS = boost_system boost_system-mt
# #
# searching in $PREFIX/lib and $PREFIX/lib64 # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS)
# to override the default '/usr' pass PREFIX # to override the default '/usr' pass PREFIX
# variable to qmake. # variable to qmake.
# #
+42 -15
View File
@@ -9,8 +9,8 @@
# of binary-size if you leave Qt out. # of binary-size if you leave Qt out.
# (see http://trolltech.com/developer/downloads/qt/mac) # (see http://trolltech.com/developer/downloads/qt/mac)
QT_FW_PATH="/Library/Frameworks" QT_FW_PATH="/Developer/Qt5/5/clang_64/lib"
QT_PLUGIN_PATH="/Developer/Applications/Qt/plugins" QT_PLUGIN_PATH="/Developer/Qt5/5/clang_64/plugins"
SDL_FW_PATH="/Library/Frameworks" SDL_FW_PATH="/Library/Frameworks"
APPLICATION="./pokerth.app" APPLICATION="./pokerth.app"
BINARY="$APPLICATION/Contents/MacOs/pokerth" BINARY="$APPLICATION/Contents/MacOs/pokerth"
@@ -27,6 +27,7 @@ mkdir $BINARY_FW_PATH
BINARY_PLUGIN_PATH="$APPLICATION/Contents/plugins" BINARY_PLUGIN_PATH="$APPLICATION/Contents/plugins"
mkdir -p $BINARY_PLUGIN_PATH/imageformats mkdir -p $BINARY_PLUGIN_PATH/imageformats
mkdir -p $BINARY_PLUGIN_PATH/sqldrivers mkdir -p $BINARY_PLUGIN_PATH/sqldrivers
mkdir -p $BINARY_PLUGIN_PATH/platforms
# integrate SDL-frameworks into binary # integrate SDL-frameworks into binary
cp -R $SDL_FW_PATH/SDL.framework $BINARY_FW_PATH cp -R $SDL_FW_PATH/SDL.framework $BINARY_FW_PATH
@@ -38,55 +39,81 @@ if [ "$1" != "--without-qt" ] ; then
cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats
cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats
cp $QT_PLUGIN_PATH/sqldrivers/libqsqlite.dylib $BINARY_PLUGIN_PATH/sqldrivers cp $QT_PLUGIN_PATH/sqldrivers/libqsqlite.dylib $BINARY_PLUGIN_PATH/sqldrivers
cp $QT_PLUGIN_PATH/platforms/libqcocoa.dylib $BINARY_PLUGIN_PATH/platforms
cp -R $QT_FW_PATH/QtCore.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtCore.framework $BINARY_FW_PATH
cp -R $QT_FW_PATH/QtGui.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtGui.framework $BINARY_FW_PATH
cp -R $QT_FW_PATH/QtWidgets.framework $BINARY_FW_PATH
cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH
cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH
cp -R $QT_FW_PATH/QtPrintSupport.framework $BINARY_FW_PATH
# remove debug versions # remove debug versions
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug
rm -rf $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.dSYM
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/Versions/4/QtCore_debug rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/Versions/5/QtCore_debug
rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug
rm -rf $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.dSYM
rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/Versions/4/QtGui_debug rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/Versions/5/QtGui_debug
rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/QtWidgets_debug
rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/QtWidgets_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets_debug
rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug
rm -rf $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.dSYM
rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/Versions/4/QtSql_debug rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/Versions/5/QtSql_debug
rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug
rm -rf $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.dSYM
rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork_debug rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork_debug
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug.prl
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport_debug
# redirect binary to use integrated frameworks # redirect binary to use integrated frameworks
QTCORE="QtCore.framework/Versions/4.0/QtCore" QTCORE="QtCore.framework/Versions/5/QtCore"
QTGUI="QtGui.framework/Versions/4.0/QtGui" QTGUI="QtGui.framework/Versions/5/QtGui"
QTSQL="QtSql.framework/Versions/4.0/QtSql" QTWIDGETS="QtWidgets.framework/Versions/5/QtWidgets"
QTNETWORK="QtNetwork.framework/Versions/4.0/QtNetwork" QTSQL="QtSql.framework/Versions/5/QtSql"
QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork"
QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport"
install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE
install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI
install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS
install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL
install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTNETWORK install_name_tool -id @executable_path/../Frameworks/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK
install_name_tool -id @executable_path/../Frameworks/$QTPRINT $BINARY_FW_PATH/$QTPRINT
QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2) QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2)
QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2) QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2)
QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2)
QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2) QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2)
QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2) QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2)
QTPRINT_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtPrintSupport | cut -d"(" -f1 | cut -f2)
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY
install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY
install_name_tool -change $QTNETWORK_LINK @executable_path/../Frameworks/$QTNETWORK $BINARY install_name_tool -change $QTNETWORK_LINK @executable_path/../Frameworks/$QTNETWORK $BINARY
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
install_name_tool -change $QTPRINT_LINK @executable_path/../Frameworks/$QTPRINT $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2) QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2)
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTWIDGETS
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTPRINT
QTGUI_LINK=$(otool -L $BINARY_FW_PATH/$QTWIDGETS | grep QtGui | cut -d"(" -f1 | cut -f2)
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTWIDGETS
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTPRINT
QTWIDGETS_LINK=$(otool -L $BINARY_FW_PATH/$QTPRINT | grep QtWidgets | cut -d"(" -f1 | cut -f2)
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTPRINT
fi fi
+30
View File
@@ -6,3 +6,33 @@ SUBDIRS = pokerth_protocol.pro pokerth_db.pro pokerth_lib.pro pokerth_game.pro
SUBDIRS += pokerth_server.pro chatcleaner.pro SUBDIRS += pokerth_server.pro chatcleaner.pro
} }
CONFIG += ordered CONFIG += ordered
OTHER_FILES += \
android/src/org/kde/necessitas/ministro/IMinistro.aidl \
android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \
android/src/org/qtproject/qt5/android/bindings/QtActivity.java \
android/src/org/qtproject/qt5/android/bindings/QtApplication.java \
android/res/values-pl/strings.xml \
android/res/values-es/strings.xml \
android/res/values-it/strings.xml \
android/res/values-ru/strings.xml \
android/res/values-et/strings.xml \
android/res/values-rs/strings.xml \
android/res/values-ja/strings.xml \
android/res/values-fa/strings.xml \
android/res/values-ro/strings.xml \
android/res/values-zh-rTW/strings.xml \
android/res/values-nl/strings.xml \
android/res/values-zh-rCN/strings.xml \
android/res/values-pt-rBR/strings.xml \
android/res/values-el/strings.xml \
android/res/layout/splash.xml \
android/res/values-fr/strings.xml \
android/res/values-id/strings.xml \
android/res/values-ms/strings.xml \
android/res/values-de/strings.xml \
android/res/values-nb/strings.xml \
android/res/values/strings.xml \
android/res/values/libs.xml \
android/version.xml \
android/AndroidManifest.xml
+8 -2
View File
@@ -110,6 +110,7 @@ message NetGameInfo {
required uint32 firstSmallBlind = 12; required uint32 firstSmallBlind = 12;
required uint32 startMoney = 13; required uint32 startMoney = 13;
repeated uint32 manualBlinds = 14 [packed = true]; repeated uint32 manualBlinds = 14 [packed = true];
optional bool allowSpectators = 15 [default = true];
} }
// Message Part containing player result. // Message Part containing player result.
@@ -223,6 +224,7 @@ message GameListNewMessage {
repeated uint32 playerIds = 4 [packed = true]; repeated uint32 playerIds = 4 [packed = true];
required uint32 adminPlayerId = 5; required uint32 adminPlayerId = 5;
required NetGameInfo gameInfo = 6; required NetGameInfo gameInfo = 6;
repeated uint32 spectatorIds = 7 [packed = true];
} }
message GameListUpdateMessage { message GameListUpdateMessage {
@@ -288,8 +290,8 @@ message SubscriptionRequestMessage {
message JoinExistingGameMessage { message JoinExistingGameMessage {
required uint32 gameId = 1; required uint32 gameId = 1;
optional string password = 2; optional string password = 2;
optional bool autoLeave = 3; optional bool autoLeave = 3 [default = false];
optional bool spectateOnly = 4; optional bool spectateOnly = 4 [default = false];
} }
message JoinNewGameMessage { message JoinNewGameMessage {
@@ -307,6 +309,7 @@ message JoinGameAckMessage {
required uint32 gameId = 1; required uint32 gameId = 1;
required bool areYouGameAdmin = 2; required bool areYouGameAdmin = 2;
required NetGameInfo gameInfo = 3; required NetGameInfo gameInfo = 3;
optional bool spectateOnly = 4;
} }
message JoinGameFailedMessage { message JoinGameFailedMessage {
@@ -323,6 +326,7 @@ message JoinGameFailedMessage {
invalidSettings = 9; invalidSettings = 9;
ipAddressBlocked = 10; ipAddressBlocked = 10;
rejoinFailed = 11; rejoinFailed = 11;
noSpectatorsAllowed = 12;
} }
required JoinGameFailureReason joinGameFailureReason = 2; required JoinGameFailureReason joinGameFailureReason = 2;
} }
@@ -369,6 +373,7 @@ message RemovedFromGameMessage {
gameIsRunning = 3; gameIsRunning = 3;
gameTimeout = 4; gameTimeout = 4;
removedStartFailed = 5; removedStartFailed = 5;
gameClosed = 6;
} }
required RemovedFromGameReason removedFromGameReason = 2; required RemovedFromGameReason removedFromGameReason = 2;
} }
@@ -449,6 +454,7 @@ message HandStartMessage {
optional bytes encryptedCards = 3; optional bytes encryptedCards = 3;
required uint32 smallBlind = 4; required uint32 smallBlind = 4;
repeated NetPlayerState seatStates = 5; repeated NetPlayerState seatStates = 5;
optional uint32 dealerPlayerId = 6;
} }
message PlayersTurnMessage { message PlayersTurnMessage {
+1
View File
@@ -67,4 +67,5 @@ mac{
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers
INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers
INCLUDEPATH += /usr/local/include
} }
+12 -10
View File
@@ -18,6 +18,7 @@ CONFIG += qt \
warn_on warn_on
include(src/third_party/qtsingleapplication/qtsingleapplication.pri) include(src/third_party/qtsingleapplication/qtsingleapplication.pri)
QT += sql QT += sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
UI_DIR = uics UI_DIR = uics
MOC_DIR = mocs MOC_DIR = mocs
OBJECTS_DIR = obj OBJECTS_DIR = obj
@@ -42,7 +43,6 @@ INCLUDEPATH += . \
src/engine/local_engine \ src/engine/local_engine \
src/engine/network_engine \ src/engine/network_engine \
src/config \ src/config \
src/third_party/asn1 \
src/gui/qt \ src/gui/qt \
src/gui/qt/connecttoserverdialog \ src/gui/qt/connecttoserverdialog \
src/core \ src/core \
@@ -200,7 +200,6 @@ HEADERS += src/engine/game.h \
src/gui/generic/serverguiwrapper.h \ src/gui/generic/serverguiwrapper.h \
src/gui/qt/gametable/mychancelabel.h \ src/gui/qt/gametable/mychancelabel.h \
src/gui/qt/serverlistdialog/serverlistdialogimpl.h \ src/gui/qt/serverlistdialog/serverlistdialogimpl.h \
src/gui/qt/gametable/mymenubar.h \
src/gui/qt/gametable/mytimeoutlabel.h \ src/gui/qt/gametable/mytimeoutlabel.h \
src/gui/qt/gametable/mynamelabel.h \ src/gui/qt/gametable/mynamelabel.h \
src/gui/qt/settingsdialog/mystylelistitem.h \ src/gui/qt/settingsdialog/mystylelistitem.h \
@@ -277,7 +276,6 @@ SOURCES += src/pokerth.cpp \
src/core/common/loghelper_client.cpp \ src/core/common/loghelper_client.cpp \
src/gui/qt/gametable/mychancelabel.cpp \ src/gui/qt/gametable/mychancelabel.cpp \
src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp \ src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp \
src/gui/qt/gametable/mymenubar.cpp \
src/gui/qt/gametable/mytimeoutlabel.cpp \ src/gui/qt/gametable/mytimeoutlabel.cpp \
src/gui/qt/gametable/mynamelabel.cpp \ src/gui/qt/gametable/mynamelabel.cpp \
src/gui/qt/settingsdialog/mystylelistitem.cpp \ src/gui/qt/settingsdialog/mystylelistitem.cpp \
@@ -318,6 +316,7 @@ TRANSLATIONS = ts/pokerth_af.ts \
ts/pokerth_sv.ts \ ts/pokerth_sv.ts \
ts/pokerth_ta.ts \ ts/pokerth_ta.ts \
ts/pokerth_tr.ts \ ts/pokerth_tr.ts \
ts/pokerth_vi.ts \
ts/pokerth_START_HERE.ts ts/pokerth_START_HERE.ts
LIBS += -lpokerth_lib \ LIBS += -lpokerth_lib \
@@ -358,12 +357,12 @@ win32 {
-lcrypto \ -lcrypto \
-lssh2 \ -lssh2 \
-lgnutls \ -lgnutls \
-lnettle \
-lhogweed \ -lhogweed \
-lgmp \ -lgmp \
-lgcrypt \ -lgcrypt \
-lgpg-error \ -lgpg-error \
-lgsasl \ -lgsasl \
-lnettle \
-lidn \ -lidn \
-lintl \ -lintl \
-lprotobuf -lprotobuf
@@ -404,15 +403,16 @@ unix:!mac {
# QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections # QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
# QMAKE_LFLAGS += -Wl,--gc-sections # QMAKE_LFLAGS += -Wl,--gc-sections
INCLUDEPATH += $${PREFIX}/include INCLUDEPATH += $${PREFIX}/include
LIBPATH += lib QMAKE_LIBDIR += lib
!android{ !android{
LIBPATH += $${PREFIX}/lib /opt/gsasl/lib LIBPATH += $${PREFIX}/lib /opt/gsasl/lib
LIB_DIRS = $${PREFIX}/lib \ LIB_DIRS = $${PREFIX}/lib \
$${PREFIX}/lib64 $${PREFIX}/lib64 \
$$system(qmake -query QT_INSTALL_LIBS)
} }
android{ android{
LIBPATH += $${PREFIX}/lib/armv5 LIBPATH += $${PREFIX}/lib/armv7
LIB_DIRS = $${PREFIX}/lib/armv5 LIB_DIRS = $${PREFIX}/lib/armv7
} }
BOOST_FS = boost_filesystem \ BOOST_FS = boost_filesystem \
boost_filesystem-mt boost_filesystem-mt
@@ -427,7 +427,7 @@ unix:!mac {
BOOST_RANDOM = boost_random \ BOOST_RANDOM = boost_random \
boost_random-mt boost_random-mt
# searching in $PREFIX/lib and $PREFIX/lib64 # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS)
# to override the default '/usr' pass PREFIX # to override the default '/usr' pass PREFIX
# variable to qmake. # variable to qmake.
for(dir, LIB_DIRS):exists($$dir) { for(dir, LIB_DIRS):exists($$dir) {
@@ -596,6 +596,7 @@ mac {
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers
INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers
INCLUDEPATH += /usr/local/include
} }
OTHER_FILES += docs/infomessage-id-desc.txt OTHER_FILES += docs/infomessage-id-desc.txt
official_server { official_server {
@@ -634,7 +635,8 @@ gui_800x480 {
android{ android{
# Use old boost::filesystem, because the new version requires std::wstring. # Use old boost::filesystem, because the new version requires std::wstring.
DEFINES += BOOST_FILESYSTEM_VERSION=2 DEFINES += BOOST_FILESYSTEM_VERSION=3
DEFINES += TIXML_USE_STL
# sqlite3 is included directly. # sqlite3 is included directly.
INCLUDEPATH += src/third_party/sqlite3 INCLUDEPATH += src/third_party/sqlite3
+20 -9
View File
@@ -27,8 +27,8 @@ INCLUDEPATH += . \
src/engine/local_engine \ src/engine/local_engine \
src/engine/network_engine \ src/engine/network_engine \
src/config \ src/config \
src/third_party/asn1 \ src/core \
src/core src/third_party/websocketpp
DEPENDPATH += . \ DEPENDPATH += . \
src \ src \
@@ -42,7 +42,7 @@ DEPENDPATH += . \
src/core/common \ src/core/common \
src/engine/local_engine \ src/engine/local_engine \
src/engine/network_engine \ src/engine/network_engine \
src/net/common \ src/net/common
# Input # Input
HEADERS += \ HEADERS += \
@@ -75,7 +75,9 @@ HEADERS += \
src/net/senderhelper.h \ src/net/senderhelper.h \
src/net/sendercallback.h \ src/net/sendercallback.h \
src/net/serverexception.h \ src/net/serverexception.h \
src/net/serveracceptinterface.h \
src/net/serveraccepthelper.h \ src/net/serveraccepthelper.h \
src/net/serveracceptwebhelper.h \
src/net/servergame.h \ src/net/servergame.h \
src/net/servergamestate.h \ src/net/servergamestate.h \
src/net/serverlobbythread.h \ src/net/serverlobbythread.h \
@@ -100,7 +102,6 @@ HEADERS += \
src/net/uploadhelper.h \ src/net/uploadhelper.h \
src/net/downloaderthread.h \ src/net/downloaderthread.h \
src/net/downloadhelper.h \ src/net/downloadhelper.h \
src/net/internalchatcleanerpacket.h \
src/engine/local_engine/cardsvalue.h \ src/engine/local_engine/cardsvalue.h \
src/engine/local_engine/localboard.h \ src/engine/local_engine/localboard.h \
src/engine/local_engine/localenginefactory.h \ src/engine/local_engine/localenginefactory.h \
@@ -129,9 +130,15 @@ HEADERS += \
src/gui/qttoolsinterface.h \ src/gui/qttoolsinterface.h \
src/gui/generic/serverguiwrapper.h \ src/gui/generic/serverguiwrapper.h \
src/net/receivebuffer.h \ src/net/receivebuffer.h \
src/net/asioreceivebuffer.h \
src/net/webreceivebuffer.h \
src/net/sendbuffer.h \ src/net/sendbuffer.h \
src/net/asiosendbuffer.h \
src/net/websendbuffer.h \
src/net/servermanagerfactory.h \ src/net/servermanagerfactory.h \
src/net/uploadcallback.h src/net/uploadcallback.h \
src/net/websocket_defs.h \
src/net/websocketdata.h
SOURCES += \ SOURCES += \
src/engine/game.cpp \ src/engine/game.cpp \
@@ -180,7 +187,8 @@ SOURCES += \
src/net/common/senderhelper.cpp \ src/net/common/senderhelper.cpp \
src/net/common/sendercallback.cpp \ src/net/common/sendercallback.cpp \
src/net/common/serverexception.cpp \ src/net/common/serverexception.cpp \
src/net/common/serveraccepthelper.cpp \ src/net/common/serveracceptinterface.cpp \
src/net/common/serveracceptwebhelper.cpp \
src/net/common/servergame.cpp \ src/net/common/servergame.cpp \
src/net/common/servergamestate.cpp \ src/net/common/servergamestate.cpp \
src/net/common/serverlobbythread.cpp \ src/net/common/serverlobbythread.cpp \
@@ -201,11 +209,14 @@ SOURCES += \
src/net/common/transferhelper.cpp \ src/net/common/transferhelper.cpp \
src/net/common/uploaderthread.cpp \ src/net/common/uploaderthread.cpp \
src/net/common/uploadhelper.cpp \ src/net/common/uploadhelper.cpp \
src/net/common/internalchatcleanerpacket.cpp \
src/gui/generic/serverguiwrapper.cpp \ src/gui/generic/serverguiwrapper.cpp \
src/gui/qttoolsinterface.cpp \ src/gui/qttoolsinterface.cpp \
src/net/common/sendbuffer.cpp \ src/net/common/sendbuffer.cpp \
src/net/common/asiosendbuffer.cpp \
src/net/common/websendbuffer.cpp \
src/net/common/receivebuffer.cpp \ src/net/common/receivebuffer.cpp \
src/net/common/asioreceivebuffer.cpp \
src/net/common/webreceivebuffer.cpp \
src/net/common/uploadcallback.cpp src/net/common/uploadcallback.cpp
!android:!android_test{ !android:!android_test{
@@ -250,12 +261,12 @@ mac{
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers
INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers
INCLUDEPATH += /opt/local/include INCLUDEPATH += /usr/local/include
} }
android{ android{
# Use old boost::filesystem, because the new version requires std::wstring. # Use old boost::filesystem, because the new version requires std::wstring.
DEFINES += BOOST_FILESYSTEM_VERSION=2 DEFINES += BOOST_FILESYSTEM_VERSION=3
# sqlite3 is included directly. # sqlite3 is included directly.
INCLUDEPATH += src/third_party/sqlite3 INCLUDEPATH += src/third_party/sqlite3
SOURCES += src/third_party/sqlite3/sqlite3.c SOURCES += src/third_party/sqlite3/sqlite3.c
+9 -80
View File
@@ -18,89 +18,16 @@ QT -= core \
# PRECOMPILED_HEADER = src/pch_lib.h # PRECOMPILED_HEADER = src/pch_lib.h
INCLUDEPATH += . \ INCLUDEPATH += . \
src \ src
src/third_party/asn1
DEPENDPATH += . \ DEPENDPATH += . \
src \ src
src/third_party/asn1
# Input # Input
HEADERS += src/third_party/asn1/asn_application.h \
src/third_party/asn1/asn_codecs.h \ HEADERS += src/third_party/protobuf/pokerth.pb.h \
src/third_party/asn1/asn_codecs_prim.h \ src/third_party/protobuf/chatcleaner.pb.h
src/third_party/asn1/asn_internal.h \ SOURCES += src/third_party/protobuf/pokerth.pb.cc \
src/third_party/asn1/asn_SEQUENCE_OF.h \ src/third_party/protobuf/chatcleaner.pb.cc
src/third_party/asn1/asn_SET_OF.h \
src/third_party/asn1/asn_system.h \
src/third_party/asn1/ber_decoder.h \
src/third_party/asn1/ber_tlv_length.h \
src/third_party/asn1/ber_tlv_tag.h \
src/third_party/asn1/BIT_STRING.h \
src/third_party/asn1/BOOLEAN.h \
src/third_party/asn1/constraints.h \
src/third_party/asn1/constr_CHOICE.h \
src/third_party/asn1/constr_SEQUENCE.h \
src/third_party/asn1/constr_SEQUENCE_OF.h \
src/third_party/asn1/constr_SET_OF.h \
src/third_party/asn1/constr_TYPE.h \
src/third_party/asn1/der_encoder.h \
src/third_party/asn1/INTEGER.h \
src/third_party/asn1/NativeEnumerated.h \
src/third_party/asn1/NativeInteger.h \
src/third_party/asn1/OCTET_STRING.h \
src/third_party/asn1/per_decoder.h \
src/third_party/asn1/per_encoder.h \
src/third_party/asn1/per_opentype.h \
src/third_party/asn1/per_support.h \
src/third_party/asn1/UTF8String.h \
src/third_party/asn1/xer_decoder.h \
src/third_party/asn1/xer_encoder.h \
src/third_party/asn1/xer_support.h \
src/third_party/asn1/ChatCleanerMessage.h \
src/third_party/asn1/CleanerChatTypeLobby.h \
src/third_party/asn1/CleanerChatTypeGame.h \
src/third_party/asn1/CleanerChatType.h \
src/third_party/asn1/CleanerInitMessage.h \
src/third_party/asn1/CleanerInitAckMessage.h \
src/third_party/asn1/CleanerChatRequestMessage.h \
src/third_party/asn1/CleanerChatReplyMessage.h
HEADERS += src/third_party/protobuf/pokerth.pb.h
SOURCES += src/third_party/asn1/ChatCleanerMessage.c \
src/third_party/asn1/CleanerChatTypeLobby.c \
src/third_party/asn1/CleanerChatTypeGame.c \
src/third_party/asn1/CleanerChatType.c \
src/third_party/asn1/CleanerInitMessage.c \
src/third_party/asn1/CleanerInitAckMessage.c \
src/third_party/asn1/CleanerChatRequestMessage.c \
src/third_party/asn1/CleanerChatReplyMessage.c \
src/third_party/asn1/xer_support.c \
src/third_party/asn1/xer_encoder.c \
src/third_party/asn1/xer_decoder.c \
src/third_party/asn1/UTF8String.c \
src/third_party/asn1/per_support.c \
src/third_party/asn1/per_opentype.c \
src/third_party/asn1/per_encoder.c \
src/third_party/asn1/per_decoder.c \
src/third_party/asn1/OCTET_STRING.c \
src/third_party/asn1/NativeInteger.c \
src/third_party/asn1/NativeEnumerated.c \
src/third_party/asn1/INTEGER.c \
src/third_party/asn1/der_encoder.c \
src/third_party/asn1/constraints.c \
src/third_party/asn1/constr_TYPE.c \
src/third_party/asn1/constr_SET_OF.c \
src/third_party/asn1/constr_SEQUENCE_OF.c \
src/third_party/asn1/constr_SEQUENCE.c \
src/third_party/asn1/constr_CHOICE.c \
src/third_party/asn1/BOOLEAN.c \
src/third_party/asn1/BIT_STRING.c \
src/third_party/asn1/ber_tlv_tag.c \
src/third_party/asn1/ber_tlv_length.c \
src/third_party/asn1/ber_decoder.c \
src/third_party/asn1/asn_SET_OF.c \
src/third_party/asn1/asn_SEQUENCE_OF.c \
src/third_party/asn1/asn_codecs_prim.c
SOURCES += src/third_party/protobuf/pokerth.pb.cc
win32 { win32 {
DEFINES += CURL_STATICLIB DEFINES += CURL_STATICLIB
DEFINES += _WIN32_WINNT=0x0501 DEFINES += _WIN32_WINNT=0x0501
@@ -108,6 +35,7 @@ win32 {
unix : !mac { unix : !mac {
INCLUDEPATH += $${PREFIX}/include INCLUDEPATH += $${PREFIX}/include
system(protoc pokerth.proto --cpp_out=src/third_party/protobuf) system(protoc pokerth.proto --cpp_out=src/third_party/protobuf)
system(protoc chatcleaner.proto --cpp_out=src/third_party/protobuf)
system(protoc pokerth.proto --java_out=tests/src) system(protoc pokerth.proto --java_out=tests/src)
} }
mac { mac {
@@ -123,4 +51,5 @@ mac {
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers
INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers
INCLUDEPATH += /usr/local/include
} }
+4 -4
View File
@@ -30,7 +30,6 @@ INCLUDEPATH += . \
src/engine/local_engine \ src/engine/local_engine \
src/engine/network_engine \ src/engine/network_engine \
src/config \ src/config \
src/third_party/asn1 \
src/core \ src/core \
DEPENDPATH += . \ DEPENDPATH += . \
@@ -131,7 +130,7 @@ win32 {
debug:LIBPATH += debug/lib debug:LIBPATH += debug/lib
release:LIBPATH += release/lib release:LIBPATH += release/lib
LIBS += -lssl -lcrypto -lssh2 -lgnutls -lnettle -lhogweed -lgmp -lgcrypt -lgpg-error -lgsasl -lidn -lintl -lprotobuf -ltinyxml -lsqlite3 -lntlm LIBS += -lssl -lcrypto -lssh2 -lgnutls -lhogweed -lgmp -lgcrypt -lgpg-error -lgsasl -lnettle -lidn -lintl -lprotobuf -ltinyxml -lsqlite3 -lntlm
LIBS += -lboost_thread_win32-mt LIBS += -lboost_thread_win32-mt
LIBS += -lboost_filesystem-mt LIBS += -lboost_filesystem-mt
LIBS += -lboost_regex-mt LIBS += -lboost_regex-mt
@@ -176,7 +175,7 @@ unix : !mac {
LIBPATH += lib $${PREFIX}/lib /opt/gsasl/lib LIBPATH += lib $${PREFIX}/lib /opt/gsasl/lib
INCLUDEPATH += $${PREFIX}/include INCLUDEPATH += $${PREFIX}/include
LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS)
BOOST_FS = boost_filesystem boost_filesystem-mt BOOST_FS = boost_filesystem boost_filesystem-mt
BOOST_THREAD = boost_thread boost_thread-mt BOOST_THREAD = boost_thread boost_thread-mt
BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt
@@ -186,7 +185,7 @@ unix : !mac {
BOOST_RANDOM = boost_random boost_random-mt BOOST_RANDOM = boost_random boost_random-mt
# #
# searching in $PREFIX/lib and $PREFIX/lib64 # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS)
# to override the default '/usr' pass PREFIX # to override the default '/usr' pass PREFIX
# variable to qmake. # variable to qmake.
# #
@@ -316,6 +315,7 @@ mac {
RC_FILE = pokerth.icns RC_FILE = pokerth.icns
LIBPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/lib LIBPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/lib
INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/
INCLUDEPATH += /usr/local/include
} }
official_server { official_server {
+2 -2
View File
@@ -29,6 +29,8 @@
* as that of the covered work. * * as that of the covered work. *
*****************************************************************************/ *****************************************************************************/
#include "cleanerconfig.h" #include "cleanerconfig.h"
#include <QtCore>
#include <tinyxml.h> #include <tinyxml.h>
#define MODUS 0711 #define MODUS 0711
@@ -46,8 +48,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <QtCore>
using namespace std; using namespace std;
+79 -70
View File
@@ -32,9 +32,10 @@
#include <QtNetwork> #include <QtNetwork>
#include <QtCore> #include <QtCore>
#include <QtEndian>
#include <cstdlib> #include <cstdlib>
#include <string> #include <string>
#include <third_party/asn1/ChatCleanerMessage.h> #include <third_party/protobuf/chatcleaner.pb.h>
#include "messagefilter.h" #include "messagefilter.h"
#include "cleanerconfig.h" #include "cleanerconfig.h"
@@ -82,6 +83,9 @@ void CleanerServer::newCon()
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead()));
connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
blockConnection = true; blockConnection = true;
#if QT_VERSION >= 0x050100
tcpServer->pauseAccepting();
#endif
} }
} }
@@ -91,23 +95,38 @@ void CleanerServer::onRead()
bool error = bytesRead < 1; bool error = bytesRead < 1;
if (!error) { if (!error) {
m_recvBufUsed += bytesRead; m_recvBufUsed += bytesRead;
bool valid;
asn_dec_rval_t retVal;
do { do {
// Try to decode the packets. valid = false;
InternalChatCleanerPacket recvMsg; if (m_recvBufUsed >= CLEANER_NET_HEADER_SIZE) {
retVal = ber_decode(0, &asn_DEF_ChatCleanerMessage, (void **)recvMsg.GetMsgPtr(), m_recvBuf, m_recvBufUsed); // Read the size of the packet (first 4 bytes in network byte order).
if(retVal.code == RC_OK) { uint32_t nativeVal;
if (retVal.consumed < m_recvBufUsed) { memcpy(&nativeVal, &m_recvBuf[0], sizeof(uint32_t));
m_recvBufUsed -= retVal.consumed; size_t packetSize = qFromBigEndian(nativeVal);
memmove(m_recvBuf, m_recvBuf + retVal.consumed, m_recvBufUsed); if (packetSize > MAX_CLEANER_PACKET_SIZE) {
} else
m_recvBufUsed = 0; m_recvBufUsed = 0;
qDebug() << "Invalid packet size: " << packetSize;
// Handle the packets. } else if (m_recvBufUsed >= packetSize + CLEANER_NET_HEADER_SIZE) {
error = handleMessage(recvMsg); try {
// Try to decode the packet.
boost::shared_ptr<ChatCleanerMessage> recvMsg(ChatCleanerMessage::default_instance().New());
if (recvMsg->ParseFromArray(&m_recvBuf[CLEANER_NET_HEADER_SIZE], static_cast<int>(packetSize))) {
m_recvBufUsed -= (packetSize + CLEANER_NET_HEADER_SIZE);
if (m_recvBufUsed) {
memmove(m_recvBuf, m_recvBuf + packetSize + CLEANER_NET_HEADER_SIZE, m_recvBufUsed);
} }
} while (!error && retVal.code == RC_OK); }
// Handle the packet.
error = handleMessage(*recvMsg);
valid = true;
} catch (const exception &e) {
// Reset buffer on error.
m_recvBufUsed = 0;
qDebug() << "Exception while decoding packet: " << e.what();
}
}
}
} while (valid && !error);
} }
if (error) { if (error) {
@@ -128,71 +147,58 @@ void CleanerServer::onRead()
tcpSocket->write(checkMessage.toAscii().data(), checkMessage.length());*/ tcpSocket->write(checkMessage.toAscii().data(), checkMessage.length());*/
} }
bool CleanerServer::handleMessage(InternalChatCleanerPacket &msg) bool CleanerServer::handleMessage(ChatCleanerMessage &msg)
{ {
bool error = true; bool error = true;
if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerInitMessage) { if (msg.messagetype() == ChatCleanerMessage::Type_CleanerInitMessage) {
CleanerInitMessage_t *netInit = &msg.GetMsg()->choice.cleanerInitMessage; const CleanerInitMessage &netInit = msg.cleanerinitmessage();
if (netInit->requestedVersion == CLEANER_PROTOCOL_VERSION) { if (netInit.requestedversion() == CLEANER_PROTOCOL_VERSION) {
string tmpClientSecret((const char *)netInit->clientSecret.buf, netInit->clientSecret.size); if (clientSecret == QString::fromStdString(netInit.clientsecret())) {
if (clientSecret == QString::fromStdString(tmpClientSecret)) {
error = false; error = false;
InternalChatCleanerPacket tmpAck; boost::shared_ptr<ChatCleanerMessage> tmpAck(ChatCleanerMessage::default_instance().New());
tmpAck.GetMsg()->present = ChatCleanerMessage_PR_cleanerInitAckMessage; tmpAck->set_messagetype(ChatCleanerMessage::Type_CleanerInitAckMessage);
CleanerInitAckMessage_t *netAck = &tmpAck.GetMsg()->choice.cleanerInitAckMessage; CleanerInitAckMessage *netAck = tmpAck->mutable_cleanerinitackmessage();
netAck->serverVersion = CLEANER_PROTOCOL_VERSION; netAck->set_serverversion(CLEANER_PROTOCOL_VERSION);
string tmpServerSecret(serverSecret.toStdString()); netAck->set_serversecret(serverSecret.toStdString());
OCTET_STRING_fromBuf(&netAck->serverSecret, sendMessageToClient(*tmpAck);
tmpServerSecret.c_str(),
tmpServerSecret.length());
sendMessageToClient(tmpAck);
} else } else
qDebug() << "Invalid client secret."; qDebug() << "Invalid client secret.";
} else } else
qDebug() << "Invalid client version: " << netInit->requestedVersion; qDebug() << "Invalid client version: " << netInit.requestedversion();
} else if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerChatRequestMessage) { } else if (msg.messagetype() == ChatCleanerMessage::Type_CleanerChatRequestMessage) {
error = false; error = false;
CleanerChatRequestMessage_t *netRequest = &msg.GetMsg()->choice.cleanerChatRequestMessage; const CleanerChatRequestMessage &netRequest = msg.cleanerchatrequestmessage();
unsigned playerId = netRequest->playerId; unsigned playerId = netRequest.playerid();
QString nick(QString::fromUtf8( QString nick(QString::fromUtf8(netRequest.playername().c_str()));
string((const char *)netRequest->playerName.buf, netRequest->playerName.size).c_str())); QString message(QString::fromUtf8(netRequest.chatmessage().c_str()));
QString message(QString::fromUtf8( unsigned gameId = netRequest.gameid();
string((const char *)netRequest->chatMessage.buf, netRequest->chatMessage.size).c_str()));
unsigned gameId = 0;
if (netRequest->cleanerChatType.present == CleanerChatType_PR_cleanerChatTypeGame) {
gameId = netRequest->cleanerChatType.choice.cleanerChatTypeGame.gameId;
}
QStringList checkreturn = myMessageFilter->check(gameId, playerId, nick, message); QStringList checkreturn = myMessageFilter->check(gameId, playerId, nick, message);
QString checkAction = checkreturn.at(0); QString checkAction = checkreturn.at(0);
QString checkMessage = checkreturn.at(1); QString checkMessage = checkreturn.at(1);
if (!checkAction.isEmpty()) { if (!checkAction.isEmpty()) {
InternalChatCleanerPacket tmpReply; boost::shared_ptr<ChatCleanerMessage> tmpReply(ChatCleanerMessage::default_instance().New());
tmpReply.GetMsg()->present = ChatCleanerMessage_PR_cleanerChatReplyMessage; tmpReply->set_messagetype(ChatCleanerMessage::Type_CleanerChatReplyMessage);
CleanerChatReplyMessage_t *netReply = &tmpReply.GetMsg()->choice.cleanerChatReplyMessage; CleanerChatReplyMessage *netReply = tmpReply->mutable_cleanerchatreplymessage();
netReply->requestId = netRequest->requestId; netReply->set_requestid(netRequest.requestid());
netReply->cleanerChatType = netRequest->cleanerChatType; netReply->set_gameid(netRequest.gameid());
netReply->playerId = netRequest->playerId; netReply->set_cleanerchattype(netRequest.cleanerchattype());
netReply->set_playerid(netRequest.playerid());
if(checkAction == "warn") { if(checkAction == "warn") {
netReply->cleanerActionType = cleanerActionType_cleanerActionWarning; netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionWarning);
} else if (checkAction == "kick") { } else if (checkAction == "kick") {
netReply->cleanerActionType = cleanerActionType_cleanerActionKick; netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionKick);
} else if (checkAction == "kickban") { } else if (checkAction == "kickban") {
netReply->cleanerActionType = cleanerActionType_cleanerActionBan; netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionBan);
} else if (checkAction == "mute") { } else if (checkAction == "mute") {
netReply->cleanerActionType = cleanerActionType_cleanerActionMute; netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionMute);
} }
string tmpCheck(checkMessage.toUtf8()); netReply->set_cleanertext(checkMessage.toUtf8());
netReply->cleanerText = sendMessageToClient(*tmpReply);
OCTET_STRING_new_fromBuf(
&asn_DEF_OCTET_STRING,
(const char *)tmpCheck.c_str(),
tmpCheck.length());
sendMessageToClient(tmpReply);
} }
} }
return error; return error;
@@ -200,9 +206,13 @@ bool CleanerServer::handleMessage(InternalChatCleanerPacket &msg)
void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state)
{ {
qDebug() << "Socket state changed to: " << state;
qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; if (state == QAbstractSocket::UnconnectedState) {
if(state == QAbstractSocket::UnconnectedState) blockConnection = false; blockConnection = false;
#if QT_VERSION >= 0x050100
tcpServer->resumeAccepting();
#endif
}
} }
void CleanerServer::refreshConfig() void CleanerServer::refreshConfig()
@@ -217,14 +227,13 @@ void CleanerServer::refreshConfig()
myMessageFilter->refreshConfig(); myMessageFilter->refreshConfig();
} }
void CleanerServer::sendMessageToClient(InternalChatCleanerPacket &msg) void CleanerServer::sendMessageToClient(ChatCleanerMessage &msg)
{ {
unsigned char buf[MAX_CLEANER_PACKET_SIZE]; uint32_t packetSize = msg.ByteSize();
asn_enc_rval_t e = der_encode_to_buffer(&asn_DEF_ChatCleanerMessage, msg.GetMsg(), buf, MAX_CLEANER_PACKET_SIZE); google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE];
*((uint32_t *)buf) = qToBigEndian(packetSize);
if (e.encoded == -1) msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]);
qDebug() << "Failed to encode chat cleaner packet: " << msg.GetMsg()->present; tcpSocket->write((const char *)buf, packetSize + CLEANER_NET_HEADER_SIZE);
else delete[] buf;
tcpSocket->write((const char *)buf, e.encoded);
} }
+8 -4
View File
@@ -33,10 +33,14 @@
#include <QtCore> #include <QtCore>
#include <QtNetwork> #include <QtNetwork>
#include <net/internalchatcleanerpacket.h>
#define CLEANER_NET_HEADER_SIZE 4
#define MAX_CLEANER_PACKET_SIZE 512
#define CLEANER_PROTOCOL_VERSION 2
class MessageFilter; class MessageFilter;
class CleanerConfig; class CleanerConfig;
class ChatCleanerMessage;
class CleanerServer: public QObject class CleanerServer: public QObject
{ {
@@ -49,10 +53,10 @@ public:
private slots: private slots:
void newCon(); void newCon();
void onRead(); void onRead();
bool handleMessage(InternalChatCleanerPacket &msg); bool handleMessage(ChatCleanerMessage &msg);
void socketStateChanged(QAbstractSocket::SocketState); void socketStateChanged(QAbstractSocket::SocketState);
void refreshConfig(); void refreshConfig();
void sendMessageToClient(InternalChatCleanerPacket &msg); void sendMessageToClient(ChatCleanerMessage &msg);
private: private:
QTcpServer *tcpServer; QTcpServer *tcpServer;
@@ -66,7 +70,7 @@ private:
QString serverSecret; QString serverSecret;
unsigned char m_recvBuf[2*MAX_CLEANER_PACKET_SIZE]; unsigned char m_recvBuf[2*MAX_CLEANER_PACKET_SIZE];
unsigned m_recvBufUsed; size_t m_recvBufUsed;
int secondsSinceLastConfigChange; int secondsSinceLastConfigChange;
}; };
+2
View File
@@ -33,7 +33,9 @@
#include <QtCore> #include <QtCore>
#include <stdlib.h> #include <stdlib.h>
#ifndef Q_MOC_RUN
#include <third_party/boost/timers.hpp> #include <third_party/boost/timers.hpp>
#endif
class BadWordCheck; class BadWordCheck;
class TextFloodCheck; class TextFloodCheck;
+2
View File
@@ -32,7 +32,9 @@
#define TEXTFLOODCHECK_H #define TEXTFLOODCHECK_H
#include <QtCore> #include <QtCore>
#ifndef Q_MOC_RUN
#include <third_party/boost/timers.hpp> #include <third_party/boost/timers.hpp>
#endif
#include <stdlib.h> #include <stdlib.h>
+9 -2
View File
@@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
myConfigState = OK; myConfigState = OK;
// !!!! Revisionsnummer der Configdefaults !!!!! // !!!! Revisionsnummer der Configdefaults !!!!!
configRev = 98; configRev = 104;
//standard defaults //standard defaults
logOnOffDefault = "1"; logOnOffDefault = "1";
@@ -150,9 +150,9 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
configList.push_back(ConfigInfo("AppDataDir", CONFIG_TYPE_STRING, myQtToolsInterface->getDataPathStdString(myArgv0))); configList.push_back(ConfigInfo("AppDataDir", CONFIG_TYPE_STRING, myQtToolsInterface->getDataPathStdString(myArgv0)));
#endif #endif
configList.push_back(ConfigInfo("Language", CONFIG_TYPE_INT, myQtToolsInterface->getDefaultLanguage())); configList.push_back(ConfigInfo("Language", CONFIG_TYPE_INT, myQtToolsInterface->getDefaultLanguage()));
/*configList.push_back(ConfigInfo("InternetServerAddressIRCChannelUpdateDone", CONFIG_TYPE_INT, "1"));*/ //HACK
configList.push_back(ConfigInfo("ShowLeftToolBox", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowLeftToolBox", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("ShowCountryFlagInAvatar", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowCountryFlagInAvatar", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("ShowPingStateInAvatar", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("ShowRightToolBox", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowRightToolBox", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("ShowFadeOutCardsAnimation", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowFadeOutCardsAnimation", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("ShowFlipCardsAnimation", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowFlipCardsAnimation", CONFIG_TYPE_INT, "1"));
@@ -161,6 +161,8 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
configList.push_back(ConfigInfo("DontTranslateInternationalPokerStringsFromStyle", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("DontTranslateInternationalPokerStringsFromStyle", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("DisableSplashScreenOnStartup", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("DisableSplashScreenOnStartup", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("AccidentallyCallBlocker", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("AccidentallyCallBlocker", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("DontHideAvatarsOfIgnored", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("DisableChatEmoticons", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("AntiPeekMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AntiPeekMode", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("AlternateFKeysUserActionMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AlternateFKeysUserActionMode", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("EnableBetInputFocusSwitch", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("EnableBetInputFocusSwitch", CONFIG_TYPE_INT, "0"));
@@ -218,7 +220,11 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
configList.push_back(ConfigInfo("ServerPassword", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPassword", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerUseIpv6", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUseIpv6", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerUseSctp", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUseSctp", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerUseWebSocket", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234")); configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234"));
configList.push_back(ConfigInfo("ServerWebSocketPort", CONFIG_TYPE_INT, "7233"));
configList.push_back(ConfigInfo("ServerWebSocketResource", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerWebSocketOrigin", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, ""));
@@ -236,6 +242,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
configList.push_back(ConfigInfo("InternetGamePassword", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("InternetGamePassword", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("InternetGameType", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("InternetGameType", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("InternetGameName", CONFIG_TYPE_STRING, "My Online Game")); configList.push_back(ConfigInfo("InternetGameName", CONFIG_TYPE_STRING, "My Online Game"));
configList.push_back(ConfigInfo("InternetGameAllowSpectators", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("UseLobbyChat", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("UseLobbyChat", CONFIG_TYPE_INT, "1"));
configList.push_back(ConfigInfo("UseAdminIRC", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("UseAdminIRC", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("AdminIRCServerAddress", CONFIG_TYPE_STRING, "chat.freenode.net")); configList.push_back(ConfigInfo("AdminIRCServerAddress", CONFIG_TYPE_STRING, "chat.freenode.net"));
+2
View File
@@ -35,7 +35,9 @@
#include <vector> #include <vector>
#include <string> #include <string>
#ifndef Q_MOC_RUN
#include <boost/thread.hpp> #include <boost/thread.hpp>
#endif
enum ConfigState { NONEXISTING, OLD, OK }; enum ConfigState { NONEXISTING, OLD, OK };
enum ConfigType { CONFIG_TYPE_INT, CONFIG_TYPE_STRING, CONFIG_TYPE_INT_LIST, CONFIG_TYPE_STRING_LIST }; enum ConfigType { CONFIG_TYPE_INT, CONFIG_TYPE_STRING, CONFIG_TYPE_INT_LIST, CONFIG_TYPE_STRING_LIST };
-2
View File
@@ -435,7 +435,6 @@ AvatarManager::RemoveOldAvatarCacheEntries()
// Count files and record age. // Count files and record age.
AvatarList removeList; AvatarList removeList;
TimeAvatarMap timeMap; TimeAvatarMap timeMap;
unsigned fileCount = 0;
{ {
AvatarMap::const_iterator i = m_cachedAvatars.begin(); AvatarMap::const_iterator i = m_cachedAvatars.begin();
AvatarMap::const_iterator end = m_cachedAvatars.end(); AvatarMap::const_iterator end = m_cachedAvatars.end();
@@ -448,7 +447,6 @@ AvatarManager::RemoveOldAvatarCacheEntries()
// Only consider files with MD5 as file name. // Only consider files with MD5 as file name.
MD5Buf tmpBuf; MD5Buf tmpBuf;
if (exists(filePath) && tmpBuf.FromString(basename(filePath))) { if (exists(filePath) && tmpBuf.FromString(basename(filePath))) {
++fileCount;
timeMap.insert(TimeAvatarMap::value_type(last_write_time(filePath), i->first)); timeMap.insert(TimeAvatarMap::value_type(last_write_time(filePath), i->first));
keepFile = true; keepFile = true;
} }
+9 -6
View File
@@ -220,8 +220,9 @@ void Game::startHand()
boost::shared_ptr<PlayerInterface> Game::getPlayerByUniqueId(unsigned id) boost::shared_ptr<PlayerInterface> Game::getPlayerByUniqueId(unsigned id)
{ {
boost::shared_ptr<PlayerInterface> tmpPlayer; boost::shared_ptr<PlayerInterface> tmpPlayer;
PlayerListIterator i = getSeatsList()->begin(); PlayerList tmpList = getSeatsList();
PlayerListIterator end = getSeatsList()->end(); PlayerListIterator i = tmpList->begin();
PlayerListIterator end = tmpList->end();
while (i != end) { while (i != end) {
if ((*i)->getMyUniqueID() == id) { if ((*i)->getMyUniqueID() == id) {
tmpPlayer = *i; tmpPlayer = *i;
@@ -235,8 +236,9 @@ boost::shared_ptr<PlayerInterface> Game::getPlayerByUniqueId(unsigned id)
boost::shared_ptr<PlayerInterface> Game::getPlayerByNumber(int number) boost::shared_ptr<PlayerInterface> Game::getPlayerByNumber(int number)
{ {
boost::shared_ptr<PlayerInterface> tmpPlayer; boost::shared_ptr<PlayerInterface> tmpPlayer;
PlayerListIterator i = getSeatsList()->begin(); PlayerList tmpList = getSeatsList();
PlayerListIterator end = getSeatsList()->end(); PlayerListIterator i = tmpList->begin();
PlayerListIterator end = tmpList->end();
while (i != end) { while (i != end) {
if ((*i)->getMyID() == number) { if ((*i)->getMyID() == number) {
tmpPlayer = *i; tmpPlayer = *i;
@@ -258,8 +260,9 @@ boost::shared_ptr<PlayerInterface> Game::getCurrentPlayer()
boost::shared_ptr<PlayerInterface> Game::getPlayerByName(const std::string &name) boost::shared_ptr<PlayerInterface> Game::getPlayerByName(const std::string &name)
{ {
boost::shared_ptr<PlayerInterface> tmpPlayer; boost::shared_ptr<PlayerInterface> tmpPlayer;
PlayerListIterator i = getSeatsList()->begin(); PlayerList tmpList = getSeatsList();
PlayerListIterator end = getSeatsList()->end(); PlayerListIterator i = tmpList->begin();
PlayerListIterator end = tmpList->end();
while (i != end) { while (i != end) {
if ((*i)->getMyName() == name) { if ((*i)->getMyName() == name) {
tmpPlayer = *i; tmpPlayer = *i;
-2
View File
@@ -1142,11 +1142,9 @@ std::string CardsValue::determineHandName(int myCardsValueInt, PlayerList active
// 4.there are still same hands // 4.there are still same hands
if(equal) { if(equal) {
different = false; different = false;
equal = false;
// third kicker? // third kicker?
for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) {
if((*it) == myCardsValueInt) { if((*it) == myCardsValueInt) {
equal = true;
++it; ++it;
} else { } else {
different = true; different = true;
+7 -16
View File
@@ -42,11 +42,11 @@
#define HTML_LOG 0 #define HTML_LOG 0
#define POKERTH_VERSION_MAJOR 1 #define POKERTH_VERSION_MAJOR 1
#define POKERTH_VERSION_MINOR 01 #define POKERTH_VERSION_MINOR 10
#define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR) #define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR)
#define POKERTH_BETA_REVISION 0 #define POKERTH_BETA_REVISION 4
#define POKERTH_BETA_RELEASE_STRING "1.0.1" #define POKERTH_BETA_RELEASE_STRING "1.1 beta4"
#define SQLITE_LOG_VERSION 1 #define SQLITE_LOG_VERSION 1
@@ -64,7 +64,10 @@ enum ServerMode {
enum ServerTransportProtocol { enum ServerTransportProtocol {
TRANSPORT_PROTOCOL_TCP = 1, TRANSPORT_PROTOCOL_TCP = 1,
TRANSPORT_PROTOCOL_SCTP = 2, TRANSPORT_PROTOCOL_SCTP = 2,
TRANSPORT_PROTOCOL_TCP_SCTP = 3 TRANSPORT_PROTOCOL_TCP_SCTP = 3,
TRANSPORT_PROTOCOL_WEBSOCKET = 4,
TRANSPORT_PROTOCOL_TCP_WEBSOCKET = 5,
TRANSPORT_PROTOCOL_TCP_SCTP_WEBSOCKET = 7
}; };
enum GameState { enum GameState {
@@ -176,16 +179,4 @@ enum NetTimeoutReason {
NETWORK_TIMEOUT_KICK_AFTER_AUTOFOLD NETWORK_TIMEOUT_KICK_AFTER_AUTOFOLD
}; };
struct ServerStats {
ServerStats()
: numberOfPlayersOnServer(0), numberOfGamesOpen(0), totalPlayersEverLoggedIn(0),
totalGamesEverCreated(0), maxGamesOpen(0), maxPlayersLoggedIn(0) {}
unsigned numberOfPlayersOnServer;
unsigned numberOfGamesOpen;
unsigned totalPlayersEverLoggedIn;
unsigned totalGamesEverCreated;
unsigned maxGamesOpen;
unsigned maxPlayersLoggedIn;
};
#endif #endif
+11 -7
View File
@@ -35,8 +35,9 @@
#include <list> #include <list>
#include <string> #include <string>
#ifndef Q_MOC_RUN
#include <third_party/boost/timers.hpp> #include <third_party/boost/timers.hpp>
#endif
typedef std::list<unsigned> PlayerIdList; typedef std::list<unsigned> PlayerIdList;
@@ -71,13 +72,14 @@ enum AfterManualBlindsMode {
// For the sake of simplicity, this is a struct. // For the sake of simplicity, this is a struct.
struct GameData { struct GameData {
GameData() : gameType(GAME_TYPE_NORMAL), maxNumberOfPlayers(0), startMoney(0), GameData() : gameType(GAME_TYPE_NORMAL), allowSpectators(true),
firstSmallBlind(0), raiseIntervalMode(RAISE_ON_HANDNUMBER), maxNumberOfPlayers(0), startMoney(0), firstSmallBlind(0),
raiseSmallBlindEveryHandsValue(8), raiseSmallBlindEveryMinutesValue(1), raiseIntervalMode(RAISE_ON_HANDNUMBER), raiseSmallBlindEveryHandsValue(8),
raiseMode(DOUBLE_BLINDS), afterManualBlindsMode(AFTERMB_DOUBLE_BLINDS), raiseSmallBlindEveryMinutesValue(1), raiseMode(DOUBLE_BLINDS),
afterMBAlwaysRaiseValue(0), guiSpeed(4), delayBetweenHandsSec(6), afterManualBlindsMode(AFTERMB_DOUBLE_BLINDS), afterMBAlwaysRaiseValue(0),
playerActionTimeoutSec(20) {} guiSpeed(4), delayBetweenHandsSec(6), playerActionTimeoutSec(20) {}
GameType gameType; GameType gameType;
bool allowSpectators;
int maxNumberOfPlayers; int maxNumberOfPlayers;
int startMoney; int startMoney;
int firstSmallBlind; int firstSmallBlind;
@@ -100,6 +102,8 @@ struct GameInfo {
GameMode mode; GameMode mode;
unsigned adminPlayerId; unsigned adminPlayerId;
PlayerIdList players; PlayerIdList players;
PlayerIdList spectators;
PlayerIdList spectatorsDuringGame;
bool isPasswordProtected; bool isPasswordProtected;
}; };
+20 -20
View File
@@ -58,70 +58,50 @@ void ServerGuiWrapper::setSession(boost::shared_ptr<Session> session)
} }
void ServerGuiWrapper::refreshSet() const {} void ServerGuiWrapper::refreshSet() const {}
void ServerGuiWrapper::refreshCash() const {} void ServerGuiWrapper::refreshCash() const {}
void ServerGuiWrapper::refreshAction(int /*playerID*/, int /*playerAction*/) const {} void ServerGuiWrapper::refreshAction(int /*playerID*/, int /*playerAction*/) const {}
void ServerGuiWrapper::refreshChangePlayer() const {} void ServerGuiWrapper::refreshChangePlayer() const {}
void ServerGuiWrapper::refreshAll() const {} void ServerGuiWrapper::refreshAll() const {}
void ServerGuiWrapper::refreshPot() const {} void ServerGuiWrapper::refreshPot() const {}
void ServerGuiWrapper::refreshGroupbox(int /*playerID*/, int /*status*/) const {} void ServerGuiWrapper::refreshGroupbox(int /*playerID*/, int /*status*/) const {}
void ServerGuiWrapper::refreshPlayerName() const {} void ServerGuiWrapper::refreshPlayerName() const {}
void ServerGuiWrapper::refreshButton() const {} void ServerGuiWrapper::refreshButton() const {}
void ServerGuiWrapper::refreshGameLabels(GameState /*state*/) const {} void ServerGuiWrapper::refreshGameLabels(GameState /*state*/) const {}
void ServerGuiWrapper::setPlayerAvatar(int /*myUniqueID*/, const std::string &/*myAvatar*/) const {}; void ServerGuiWrapper::setPlayerAvatar(int /*myUniqueID*/, const std::string &/*myAvatar*/) const {};
void ServerGuiWrapper::waitForGuiUpdateDone() const {} void ServerGuiWrapper::waitForGuiUpdateDone() const {}
void ServerGuiWrapper::dealBeRoCards(int /*myBeRoID*/) {} void ServerGuiWrapper::dealBeRoCards(int /*myBeRoID*/) {}
void ServerGuiWrapper::dealHoleCards() {} void ServerGuiWrapper::dealHoleCards() {}
void ServerGuiWrapper::dealFlopCards() {} void ServerGuiWrapper::dealFlopCards() {}
void ServerGuiWrapper::dealTurnCard() {} void ServerGuiWrapper::dealTurnCard() {}
void ServerGuiWrapper::dealRiverCard() {} void ServerGuiWrapper::dealRiverCard() {}
void ServerGuiWrapper::nextPlayerAnimation() {} void ServerGuiWrapper::nextPlayerAnimation() {}
void ServerGuiWrapper::beRoAnimation2(int /*myBeRoID*/) {} void ServerGuiWrapper::beRoAnimation2(int /*myBeRoID*/) {}
void ServerGuiWrapper::preflopAnimation1() {} void ServerGuiWrapper::preflopAnimation1() {}
void ServerGuiWrapper::preflopAnimation2() {} void ServerGuiWrapper::preflopAnimation2() {}
void ServerGuiWrapper::flopAnimation1() {} void ServerGuiWrapper::flopAnimation1() {}
void ServerGuiWrapper::flopAnimation2() {} void ServerGuiWrapper::flopAnimation2() {}
void ServerGuiWrapper::turnAnimation1() {} void ServerGuiWrapper::turnAnimation1() {}
void ServerGuiWrapper::turnAnimation2() {} void ServerGuiWrapper::turnAnimation2() {}
void ServerGuiWrapper::riverAnimation1() {} void ServerGuiWrapper::riverAnimation1() {}
void ServerGuiWrapper::riverAnimation2() {} void ServerGuiWrapper::riverAnimation2() {}
void ServerGuiWrapper::postRiverAnimation1() {} void ServerGuiWrapper::postRiverAnimation1() {}
void ServerGuiWrapper::postRiverRunAnimation1() {} void ServerGuiWrapper::postRiverRunAnimation1() {}
void ServerGuiWrapper::flipHolecardsAllIn() {} void ServerGuiWrapper::flipHolecardsAllIn() {}
void ServerGuiWrapper::nextRoundCleanGui() {} void ServerGuiWrapper::nextRoundCleanGui() {}
void ServerGuiWrapper::meInAction() {} void ServerGuiWrapper::meInAction() {}
void ServerGuiWrapper::disableMyButtons() {} void ServerGuiWrapper::disableMyButtons() {}
void ServerGuiWrapper::updateMyButtonsState() {} void ServerGuiWrapper::updateMyButtonsState() {}
void ServerGuiWrapper::startTimeoutAnimation(int /*playerNum*/, int /*timeoutSec*/) {} void ServerGuiWrapper::startTimeoutAnimation(int /*playerNum*/, int /*timeoutSec*/) {}
void ServerGuiWrapper::stopTimeoutAnimation(int /*playerNum*/) {} void ServerGuiWrapper::stopTimeoutAnimation(int /*playerNum*/) {}
void ServerGuiWrapper::startVoteOnKick(unsigned /*playerId*/, unsigned /*voteStarterPlayerId*/, int /*timeoutSec*/, int /*numVotesNeededToKick*/) {} void ServerGuiWrapper::startVoteOnKick(unsigned /*playerId*/, unsigned /*voteStarterPlayerId*/, int /*timeoutSec*/, int /*numVotesNeededToKick*/) {}
void ServerGuiWrapper::changeVoteOnKickButtonsState(bool /*showHide*/) {} void ServerGuiWrapper::changeVoteOnKickButtonsState(bool /*showHide*/) {}
void ServerGuiWrapper::refreshVotesMonitor(int /*currentVotes*/, int /*numVotesNeededToKick*/) {} void ServerGuiWrapper::refreshVotesMonitor(int /*currentVotes*/, int /*numVotesNeededToKick*/) {}
void ServerGuiWrapper::endVoteOnKick() {} void ServerGuiWrapper::endVoteOnKick() {}
void ServerGuiWrapper::logPlayerActionMsg(string /*playerName*/, int /*action*/, int /*setValue*/) {} void ServerGuiWrapper::logPlayerActionMsg(string /*playerName*/, int /*action*/, int /*setValue*/) {}
void ServerGuiWrapper::logNewGameHandMsg(int /*gameID*/, int /*handID*/) {} void ServerGuiWrapper::logNewGameHandMsg(int /*gameID*/, int /*handID*/) {}
void ServerGuiWrapper::logPlayerWinsMsg(std::string /*playerName*/, int /*pot*/, bool /*main*/) {} void ServerGuiWrapper::logPlayerWinsMsg(std::string /*playerName*/, int /*pot*/, bool /*main*/) {}
void ServerGuiWrapper::logPlayerSitsOut(std::string /*playerName*/) {} void ServerGuiWrapper::logPlayerSitsOut(std::string /*playerName*/) {}
void ServerGuiWrapper::logNewBlindsSetsMsg(int /*sbSet*/, int /*bbSet*/, std::string /*sbName*/, std::string /*bbName*/) {} void ServerGuiWrapper::logNewBlindsSetsMsg(int /*sbSet*/, int /*bbSet*/, std::string /*sbName*/, std::string /*bbName*/) {}
void ServerGuiWrapper::logDealBoardCardsMsg(int /*roundID*/, int /*card1*/, int /*card2*/, int /*card3*/, int /*card4*/, int /*card5*/) {} void ServerGuiWrapper::logDealBoardCardsMsg(int /*roundID*/, int /*card1*/, int /*card2*/, int /*card3*/, int /*card4*/, int /*card5*/) {}
void ServerGuiWrapper::logFlipHoleCardsMsg(std::string /*playerName*/, int /*card1*/, int /*card2*/, int /*cardsValueInt*/, std::string /*showHas*/) {} void ServerGuiWrapper::logFlipHoleCardsMsg(std::string /*playerName*/, int /*card1*/, int /*card2*/, int /*cardsValueInt*/, std::string /*showHas*/) {}
void ServerGuiWrapper::logPlayerWinGame(std::string /*playerName*/, int /*gameID*/) {} void ServerGuiWrapper::logPlayerWinGame(std::string /*playerName*/, int /*gameID*/) {}
@@ -176,6 +156,10 @@ void ServerGuiWrapper::SignalNetClientStatsUpdate(const ServerStats &stats)
{ {
if (myClientcb) myClientcb->SignalNetClientStatsUpdate(stats); if (myClientcb) myClientcb->SignalNetClientStatsUpdate(stats);
} }
void ServerGuiWrapper::SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing)
{
if (myClientcb) myClientcb->SignalNetClientPingUpdate(minPing, avgPing, maxPing);
}
void ServerGuiWrapper::SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec) void ServerGuiWrapper::SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec)
{ {
if (myClientcb) myClientcb->SignalNetClientShowTimeoutDialog(reason, remainingSec); if (myClientcb) myClientcb->SignalNetClientShowTimeoutDialog(reason, remainingSec);
@@ -200,6 +184,14 @@ void ServerGuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string
{ {
if (myClientcb) myClientcb->SignalNetClientPlayerLeft(playerId, playerName, removeReason); if (myClientcb) myClientcb->SignalNetClientPlayerLeft(playerId, playerName, removeReason);
} }
void ServerGuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName)
{
if (myClientcb) myClientcb->SignalNetClientSpectatorJoined(playerId, playerName);
}
void ServerGuiWrapper::SignalNetClientSpectatorLeft(unsigned playerId, const string &playerName, int removeReason)
{
if (myClientcb) myClientcb->SignalNetClientSpectatorLeft(playerId, playerName, removeReason);
}
void ServerGuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) void ServerGuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName)
{ {
if (myClientcb) myClientcb->SignalNetClientNewGameAdmin(playerId, playerName); if (myClientcb) myClientcb->SignalNetClientNewGameAdmin(playerId, playerName);
@@ -228,6 +220,14 @@ void ServerGuiWrapper::SignalNetClientGameListPlayerLeft(unsigned gameId, unsign
{ {
if (myClientcb) myClientcb->SignalNetClientGameListPlayerLeft(gameId, playerId); if (myClientcb) myClientcb->SignalNetClientGameListPlayerLeft(gameId, playerId);
} }
void ServerGuiWrapper::SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId)
{
if (myClientcb) myClientcb->SignalNetClientGameListSpectatorJoined(gameId, playerId);
}
void ServerGuiWrapper::SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId)
{
if (myClientcb) myClientcb->SignalNetClientGameListSpectatorLeft(gameId, playerId);
}
void ServerGuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game) void ServerGuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game)
{ {
if (myClientcb) myClientcb->SignalNetClientGameStart(game); if (myClientcb) myClientcb->SignalNetClientGameStart(game);
+5
View File
@@ -126,12 +126,15 @@ public:
void SignalNetClientError(int errorID, int osErrorID); void SignalNetClientError(int errorID, int osErrorID);
void SignalNetClientNotification(int notificationId); void SignalNetClientNotification(int notificationId);
void SignalNetClientStatsUpdate(const ServerStats &stats); void SignalNetClientStatsUpdate(const ServerStats &stats);
void SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing);
void SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec); void SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec);
void SignalNetClientRemovedFromGame(int notificationId); void SignalNetClientRemovedFromGame(int notificationId);
void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin);
void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin);
void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName); void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName);
void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason); void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName);
void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName); void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName);
void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg);
void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg);
@@ -144,6 +147,8 @@ public:
void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId);
void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameStart(boost::shared_ptr<Game> game); void SignalNetClientGameStart(boost::shared_ptr<Game> game);
void SignalNetClientServerListAdd(unsigned serverId); void SignalNetClientServerListAdd(unsigned serverId);
+76 -12
View File
@@ -12,7 +12,16 @@
</rect> </rect>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -102,7 +111,16 @@
<string>Project</string> <string>Project</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -117,8 +135,8 @@
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="openExternalLinks"> <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
@@ -132,7 +150,16 @@ p, li { white-space: pre-wrap; }
<string>Translation</string> <string>Translation</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -144,11 +171,11 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt; &lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;translator name - mail address&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Nimbus Sans L'; font-size:8pt;&quot;&gt;translator name - mail address&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="openExternalLinks"> <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
@@ -162,7 +189,16 @@ p, li { white-space: pre-wrap; }
<string>Thanks to</string> <string>Thanks to</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -174,8 +210,8 @@ p, li { white-space: pre-wrap; }
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="acceptRichText"> <property name="acceptRichText">
<bool>false</bool> <bool>false</bool>
@@ -195,7 +231,16 @@ p, li { white-space: pre-wrap; }
<string>License</string> <string>License</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -213,6 +258,16 @@ p, li { white-space: pre-wrap; }
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>Third party libs</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextBrowser" name="textBrowser_thirdPartyLicenceText"/>
</item>
</layout>
</widget>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
@@ -220,7 +275,16 @@ p, li { white-space: pre-wrap; }
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
+18 -7
View File
@@ -34,10 +34,10 @@
#include <QtCore> #include <QtCore>
#ifdef ANDROID #ifdef ANDROID
#ifndef ANDROID_TEST #ifndef ANDROID_TEST
#include <QPlatformNativeInterface> #include "QtGui/5.2.0/QtGui/qpa/qplatformnativeinterface.h"
#include <jni.h> #include <jni.h>
#endif #endif
#endif #endif
aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c)
@@ -71,8 +71,9 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c)
#ifdef ANDROID #ifdef ANDROID
int api = -2; int api = -2;
#ifndef ANDROID_TEST this->setWindowState(Qt::WindowFullScreen);
JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForWidget("JavaVM", 0); #ifndef ANDROID_TEST
JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForIntegration("JavaVM");
JNIEnv* env; JNIEnv* env;
if (currVM->AttachCurrentThread(&env, NULL)<0) { if (currVM->AttachCurrentThread(&env, NULL)<0) {
qCritical()<<"AttachCurrentThread failed"; qCritical()<<"AttachCurrentThread failed";
@@ -83,7 +84,7 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c)
} }
currVM->DetachCurrentThread(); currVM->DetachCurrentThread();
} }
#endif #endif
label_pokerthVersion->setText(QString(tr("PokerTH %1 for Android (API%2)").arg(POKERTH_BETA_RELEASE_STRING).arg(api))); label_pokerthVersion->setText(QString(tr("PokerTH %1 for Android (API%2)").arg(POKERTH_BETA_RELEASE_STRING).arg(api)));
#else #else
label_pokerthVersion->setText(QString(tr("PokerTH %1").arg(POKERTH_BETA_RELEASE_STRING))); label_pokerthVersion->setText(QString(tr("PokerTH %1").arg(POKERTH_BETA_RELEASE_STRING)));
@@ -131,4 +132,14 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c)
projectText.append("&nbsp;&nbsp;&nbsp;&nbsp;Oskar Lindqvist (<a href=mailto:tranberry@pokerth.net>tranberry@pokerth.net</a>)<br>"); projectText.append("&nbsp;&nbsp;&nbsp;&nbsp;Oskar Lindqvist (<a href=mailto:tranberry@pokerth.net>tranberry@pokerth.net</a>)<br>");
projectText.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- "+tr("initial gui graphics design")+"<br>"); projectText.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- "+tr("initial gui graphics design")+"<br>");
textBrowser_2->setHtml(projectText); textBrowser_2->setHtml(projectText);
QFile file(QDir::toNativeSeparators(myAppDataPath+"misc/third_party_libs.txt"));
QString string;
if(file.exists()) {
if (file.open( QIODevice::ReadOnly)) {
QTextStream stream( &file );
string = stream.readAll();
textBrowser_thirdPartyLicenceText->setPlainText(string);
}
}
} }
@@ -35,7 +35,7 @@
changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent, ConfigFile *c) changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent, ConfigFile *c)
: QDialog(parent), myConfig(c), settingsCorrect(TRUE) : QDialog(parent), myConfig(c), settingsCorrect(true)
{ {
#ifdef __APPLE__ #ifdef __APPLE__
setWindowModality(Qt::ApplicationModal); setWindowModality(Qt::ApplicationModal);
@@ -43,18 +43,18 @@ changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent,
#endif #endif
setupUi(this); setupUi(this);
this->installEventFilter(this); this->installEventFilter(this);
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
connect( pushButton_add, SIGNAL( clicked() ), this, SLOT( addBlindValueToList() ) ); connect( pushButton_add, SIGNAL( clicked() ), this, SLOT( addBlindValueToList() ) );
connect( pushButton_delete, SIGNAL( clicked() ), this, SLOT( removeBlindFromList() ) ); connect( pushButton_delete, SIGNAL( clicked() ), this, SLOT( removeBlindFromList() ) );
connect( spinBox_firstSmallBlind, SIGNAL( valueChanged(int) ), this, SLOT( updateSpinBoxInputMinimum(int) ) ); connect( spinBox_firstSmallBlind, SIGNAL( valueChanged(int) ), this, SLOT( updateSpinBoxInputMinimum(int) ) );
} }
void changeCompleteBlindsDialogImpl::exec() int changeCompleteBlindsDialogImpl::exec()
{ {
return QDialog::exec();
QDialog::exec();
} }
void changeCompleteBlindsDialogImpl::updateSpinBoxInputMinimum(int value) void changeCompleteBlindsDialogImpl::updateSpinBoxInputMinimum(int value)
@@ -88,7 +88,7 @@ void changeCompleteBlindsDialogImpl::sortBlindsList()
int i; int i;
QList<int> tempIntList; QList<int> tempIntList;
QStringList tempStringList; QStringList tempStringList;
bool ok = TRUE; bool ok = true;
for(i=0; i<listWidget_blinds->count(); i++) { for(i=0; i<listWidget_blinds->count(); i++) {
// std::cout << listWidget_blinds->item(i)->text().toInt(&ok,10) << "\n"; // std::cout << listWidget_blinds->item(i)->text().toInt(&ok,10) << "\n";
@@ -48,7 +48,7 @@ class changeCompleteBlindsDialogImpl: public QDialog, public Ui::changeCompleteB
public: public:
changeCompleteBlindsDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); changeCompleteBlindsDialogImpl(QWidget *parent = 0, ConfigFile *c = 0);
void exec(); int exec();
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
public slots: public slots:
@@ -43,6 +43,9 @@ changeContentDialogImpl::changeContentDialogImpl(QWidget *parent, ConfigFile *co
#endif #endif
setupUi(this); setupUi(this);
this->installEventFilter(this); this->installEventFilter(this);
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
switch (myType) { switch (myType) {
case CHANGE_HUMAN_PLAYER_NAME: { case CHANGE_HUMAN_PLAYER_NAME: {
@@ -86,7 +89,6 @@ changeContentDialogImpl::changeContentDialogImpl(QWidget *parent, ConfigFile *co
} }
connect(this, SIGNAL(accepted ()), this, SLOT(saveContent())); connect(this, SIGNAL(accepted ()), this, SLOT(saveContent()));
} }
void changeContentDialogImpl::saveContent() void changeContentDialogImpl::saveContent()
+13 -13
View File
@@ -92,22 +92,11 @@ void ChatTools::receiveMessage(QString playerName, QString message, bool pm)
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("<span style=\"font-weight:bold; color:red;\">"+message+"</span>"); tempMsg = QString("<span style=\"font-weight:bold; color:red;\">"+message+"</span>");
//play beep sound only in INET-lobby-chat
if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) {
myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0);
}
} else if(message.contains(myNick, Qt::CaseInsensitive)) { } else if(message.contains(myNick, Qt::CaseInsensitive)) {
switch (myChatType) { switch (myChatType) {
case INET_LOBBY_CHAT: { case INET_LOBBY_CHAT: {
tempMsg = QString("<span style=\"font-weight:bold; color:"+myLobby->palette().link().color().name()+";\">"+message+"</span>"); tempMsg = QString("<span style=\"font-weight:bold; color:"+myLobby->palette().link().color().name()+";\">"+message+"</span>");
//play beep sound only in INET-lobby-chat
// TODO dont play when message is from yourself
if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) {
myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0);
}
} }
break; break;
case LAN_LOBBY_CHAT: case LAN_LOBBY_CHAT:
@@ -157,17 +146,28 @@ void ChatTools::receiveMessage(QString playerName, QString message, bool pm)
} }
bool nickFoundOnIgnoreList = false; bool nickFoundOnIgnoreList = false;
bool chatBotWarnNickFoundOnIgnoreList = false;
list<std::string>::iterator it1; list<std::string>::iterator it1;
for(it1=ignoreList.begin(); it1 != ignoreList.end(); ++it1) { for(it1=ignoreList.begin(); it1 != ignoreList.end(); ++it1) {
if(playerName == QString::fromUtf8(it1->c_str())) { if(playerName == QString::fromUtf8(it1->c_str())) {
nickFoundOnIgnoreList = true; nickFoundOnIgnoreList = true;
} }
if(myChatType == INET_LOBBY_CHAT && playerName == "(chat bot)" && message.startsWith(QString::fromUtf8(it1->c_str()))) {
chatBotWarnNickFoundOnIgnoreList = true;
}
} }
if(!nickFoundOnIgnoreList) { if(!nickFoundOnIgnoreList && !chatBotWarnNickFoundOnIgnoreList) {
//play beep sound as notification
if(myChatType == INET_LOBBY_CHAT && message.contains(myNick, Qt::CaseInsensitive) && playerName != myNick) {
if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) {
myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0);
}
}
if(!myConfig->readConfigInt("DisableChatEmoticons")) {
tempMsg = checkForEmotes(tempMsg); tempMsg = checkForEmotes(tempMsg);
}
if(message.indexOf(QString("/me "))==0) { if(message.indexOf(QString("/me "))==0) {
myTextBrowser->append(tempMsg.replace("/me ","<i>*"+playerName+" ")+"</i>"); myTextBrowser->append(tempMsg.replace("/me ","<i>*"+playerName+" ")+"</i>");
+1
View File
@@ -33,6 +33,7 @@
#include <string> #include <string>
#include <QtCore> #include <QtCore>
#include <QtWidgets>
#include <QtGui> #include <QtGui>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
@@ -39,14 +39,17 @@ connectToServerDialogImpl::connectToServerDialogImpl(QWidget *parent)
setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog);
#endif #endif
setupUi(this); setupUi(this);
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
} }
void connectToServerDialogImpl::exec() int connectToServerDialogImpl::exec()
{ {
label_actionMessage->setText(""); label_actionMessage->setText("");
progressBar->setValue(0); progressBar->setValue(0);
QDialog::exec(); return QDialog::exec();
} }
void connectToServerDialogImpl::refresh(int actionID) void connectToServerDialogImpl::refresh(int actionID)
@@ -47,7 +47,7 @@ class connectToServerDialogImpl: public QDialog, public Ui::connectToServerDialo
public: public:
connectToServerDialogImpl(QWidget *parent = 0); connectToServerDialogImpl(QWidget *parent = 0);
void exec(); int exec();
public slots: public slots:
+39 -14
View File
@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>303</width> <width>293</width>
<height>390</height> <height>410</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -100,7 +100,16 @@
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -126,14 +135,14 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<widget class="Line" name="line"> <widget class="Line" name="line">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>Maximum number of players:</string> <string>Maximum number of players:</string>
@@ -143,7 +152,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="5" column="1">
<widget class="QSpinBox" name="spinBox_quantityPlayers"> <widget class="QSpinBox" name="spinBox_quantityPlayers">
<property name="minimum"> <property name="minimum">
<number>2</number> <number>2</number>
@@ -156,7 +165,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="6" column="0">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>Start Cash:</string> <string>Start Cash:</string>
@@ -166,7 +175,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="6" column="1">
<widget class="QSpinBox" name="spinBox_startCash"> <widget class="QSpinBox" name="spinBox_startCash">
<property name="suffix"> <property name="suffix">
<string/> <string/>
@@ -188,7 +197,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0" colspan="2"> <item row="7" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_blinds"> <widget class="QGroupBox" name="groupBox_blinds">
<property name="title"> <property name="title">
<string>Blinds</string> <string>Blinds</string>
@@ -217,7 +226,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="7" column="0"> <item row="8" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
@@ -233,7 +242,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="1"> <item row="8" column="1">
<widget class="QSpinBox" name="spinBox_netTimeOutPlayerAction"> <widget class="QSpinBox" name="spinBox_netTimeOutPlayerAction">
<property name="suffix"> <property name="suffix">
<string> s</string> <string> s</string>
@@ -249,7 +258,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0"> <item row="9" column="0">
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_5">
<property name="text"> <property name="text">
<string>Delay between hands:</string> <string>Delay between hands:</string>
@@ -259,7 +268,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="1"> <item row="9" column="1">
<widget class="QSpinBox" name="spinBox_netDelayBetweenHands"> <widget class="QSpinBox" name="spinBox_netDelayBetweenHands">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@@ -281,6 +290,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox_allowSpectators">
<property name="text">
<string>Allow spectators to watch the game</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -289,7 +305,16 @@
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -44,16 +44,16 @@ createInternetGameDialogImpl::createInternetGameDialogImpl(QWidget *parent, Conf
#endif #endif
setupUi(this); setupUi(this);
this->installEventFilter(this); this->installEventFilter(this);
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
spinBox_netDelayBetweenHands->installEventFilter(this); spinBox_netDelayBetweenHands->installEventFilter(this);
spinBox_netTimeOutPlayerAction->installEventFilter(this); spinBox_netTimeOutPlayerAction->installEventFilter(this);
comboBox_gameType->setItemData(0, GAME_TYPE_NORMAL, Qt::UserRole); comboBox_gameType->setItemData(0, GAME_TYPE_NORMAL, Qt::UserRole);
comboBox_gameType->setItemData(1, GAME_TYPE_REGISTERED_ONLY, Qt::UserRole); comboBox_gameType->setItemData(1, GAME_TYPE_REGISTERED_ONLY, Qt::UserRole);
comboBox_gameType->setItemData(2, GAME_TYPE_INVITE_ONLY, Qt::UserRole); comboBox_gameType->setItemData(2, GAME_TYPE_INVITE_ONLY, Qt::UserRole);
comboBox_gameType->setItemData(3, GAME_TYPE_RANKING, Qt::UserRole); comboBox_gameType->setItemData(3, GAME_TYPE_RANKING, Qt::UserRole);
myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl; myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl;
startBlind = new QLabel(tr("<i>First small blind: $%1</i>").arg(RANKING_GAME_START_SBLIND)); startBlind = new QLabel(tr("<i>First small blind: $%1</i>").arg(RANKING_GAME_START_SBLIND));
raiseMode = new QLabel(tr("<i>Double blinds every %1'th hand</i>").arg(RANKING_GAME_RAISE_EVERY_HAND)); raiseMode = new QLabel(tr("<i>Double blinds every %1'th hand</i>").arg(RANKING_GAME_RAISE_EVERY_HAND));
startBlind->hide(); startBlind->hide();
@@ -68,7 +68,6 @@ createInternetGameDialogImpl::createInternetGameDialogImpl(QWidget *parent, Conf
connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) );
connect( checkBox_Password, SIGNAL( toggled(bool) ), this, SLOT( clearGamePassword(bool)) ); connect( checkBox_Password, SIGNAL( toggled(bool) ), this, SLOT( clearGamePassword(bool)) );
connect( comboBox_gameType, SIGNAL(currentIndexChanged(int)), this, SLOT( gameTypeChanged() ) ); connect( comboBox_gameType, SIGNAL(currentIndexChanged(int)), this, SLOT( gameTypeChanged() ) );
} }
@@ -143,7 +142,7 @@ void createInternetGameDialogImpl::callChangeBlindsDialog(bool show)
myChangeCompleteBlindsDialog->exec(); myChangeCompleteBlindsDialog->exec();
if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {} if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {}
else { else {
radioButton_useSavedBlindsSettings->setChecked(TRUE); radioButton_useSavedBlindsSettings->setChecked(true);
} }
} }
@@ -155,57 +154,63 @@ void createInternetGameDialogImpl::gameTypeChanged()
switch (comboBox_gameType->currentIndex()) { switch (comboBox_gameType->currentIndex()) {
case GAME_TYPE_NORMAL-1: { case GAME_TYPE_NORMAL-1: {
checkBox_Password->setDisabled(FALSE); checkBox_Password->setDisabled(false);
spinBox_startCash->setDisabled(FALSE); spinBox_startCash->setDisabled(false);
spinBox_quantityPlayers->setDisabled(FALSE); spinBox_quantityPlayers->setDisabled(false);
spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers"));
spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash"));
radioButton_useSavedBlindsSettings->show(); radioButton_useSavedBlindsSettings->show();
radioButton_changeBlindsSettings->show(); radioButton_changeBlindsSettings->show();
startBlind->hide(); startBlind->hide();
raiseMode->hide(); raiseMode->hide();
checkBox_allowSpectators->setEnabled(true);
checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators"));
} }
break; break;
case GAME_TYPE_REGISTERED_ONLY-1: { case GAME_TYPE_REGISTERED_ONLY-1: {
checkBox_Password->setDisabled(FALSE); checkBox_Password->setDisabled(false);
spinBox_startCash->setDisabled(FALSE); spinBox_startCash->setDisabled(false);
spinBox_quantityPlayers->setDisabled(FALSE); spinBox_quantityPlayers->setDisabled(false);
spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers"));
spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash"));
radioButton_useSavedBlindsSettings->show(); radioButton_useSavedBlindsSettings->show();
radioButton_changeBlindsSettings->show(); radioButton_changeBlindsSettings->show();
startBlind->hide(); startBlind->hide();
raiseMode->hide(); raiseMode->hide();
checkBox_allowSpectators->setEnabled(true);
checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators"));
} }
break; break;
case GAME_TYPE_INVITE_ONLY-1: { case GAME_TYPE_INVITE_ONLY-1: {
checkBox_Password->setChecked(FALSE); checkBox_Password->setChecked(false);
checkBox_Password->setDisabled(TRUE); checkBox_Password->setDisabled(true);
spinBox_startCash->setDisabled(FALSE); spinBox_startCash->setDisabled(false);
spinBox_quantityPlayers->setDisabled(FALSE); spinBox_quantityPlayers->setDisabled(false);
spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers"));
spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash"));
radioButton_useSavedBlindsSettings->show(); radioButton_useSavedBlindsSettings->show();
radioButton_changeBlindsSettings->show(); radioButton_changeBlindsSettings->show();
startBlind->hide(); startBlind->hide();
raiseMode->hide(); raiseMode->hide();
checkBox_allowSpectators->setEnabled(true);
checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators"));
} }
break; break;
case GAME_TYPE_RANKING-1: { case GAME_TYPE_RANKING-1: {
checkBox_Password->setChecked(FALSE); checkBox_Password->setChecked(false);
checkBox_Password->setDisabled(TRUE); checkBox_Password->setDisabled(true);
spinBox_startCash->setValue(RANKING_GAME_START_CASH); spinBox_startCash->setValue(RANKING_GAME_START_CASH);
spinBox_startCash->setDisabled(TRUE); spinBox_startCash->setDisabled(true);
spinBox_quantityPlayers->setValue(RANKING_GAME_NUMBER_OF_PLAYERS); spinBox_quantityPlayers->setValue(RANKING_GAME_NUMBER_OF_PLAYERS);
spinBox_quantityPlayers->setDisabled(TRUE); spinBox_quantityPlayers->setDisabled(true);
radioButton_useSavedBlindsSettings->hide(); radioButton_useSavedBlindsSettings->hide();
radioButton_changeBlindsSettings->hide(); radioButton_changeBlindsSettings->hide();
startBlind->show(); startBlind->show();
raiseMode->show(); raiseMode->show();
checkBox_allowSpectators->setDisabled(true);
checkBox_allowSpectators->setChecked(true);
} }
break; break;
} }
@@ -213,11 +218,11 @@ void createInternetGameDialogImpl::gameTypeChanged()
if(comboBox_gameType->currentIndex() == GAME_TYPE_RANKING-1) { if(comboBox_gameType->currentIndex() == GAME_TYPE_RANKING-1) {
//set static values //set static values
myChangeCompleteBlindsDialog->spinBox_firstSmallBlind->setValue(RANKING_GAME_START_SBLIND); myChangeCompleteBlindsDialog->spinBox_firstSmallBlind->setValue(RANKING_GAME_START_SBLIND);
myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtHands->setChecked(TRUE); myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtHands->setChecked(true);
myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtMinutes->setChecked(FALSE); myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtMinutes->setChecked(false);
myChangeCompleteBlindsDialog->spinBox_raiseSmallBlindEveryHands->setValue(11); myChangeCompleteBlindsDialog->spinBox_raiseSmallBlindEveryHands->setValue(11);
myChangeCompleteBlindsDialog->radioButton_alwaysDoubleBlinds->setChecked(TRUE); myChangeCompleteBlindsDialog->radioButton_alwaysDoubleBlinds->setChecked(true);
myChangeCompleteBlindsDialog->radioButton_manualBlindsOrder->setChecked(FALSE); myChangeCompleteBlindsDialog->radioButton_manualBlindsOrder->setChecked(false);
myChangeCompleteBlindsDialog->listWidget_blinds->clear(); myChangeCompleteBlindsDialog->listWidget_blinds->clear();
} else { } else {
//read config values //read config values
@@ -42,9 +42,10 @@ createNetworkGameDialogImpl::createNetworkGameDialogImpl(QWidget *parent, Config
#endif #endif
setupUi(this); setupUi(this);
this->installEventFilter(this); this->installEventFilter(this);
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl; myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl;
fillFormular(); fillFormular();
connect( radioButton_changeBlindsSettings, SIGNAL( clicked(bool) ), this, SLOT( callChangeBlindsDialog(bool) ) ); connect( radioButton_changeBlindsSettings, SIGNAL( clicked(bool) ), this, SLOT( callChangeBlindsDialog(bool) ) );
@@ -52,14 +53,13 @@ createNetworkGameDialogImpl::createNetworkGameDialogImpl(QWidget *parent, Config
connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) ); connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) );
#endif #endif
connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) );
} }
void createNetworkGameDialogImpl::exec() int createNetworkGameDialogImpl::exec()
{ {
fillFormular(); fillFormular();
QDialog::exec(); return QDialog::exec();
} }
void createNetworkGameDialogImpl::createGame() void createNetworkGameDialogImpl::createGame()
@@ -131,7 +131,7 @@ void createNetworkGameDialogImpl::callChangeBlindsDialog(bool show)
myChangeCompleteBlindsDialog->exec(); myChangeCompleteBlindsDialog->exec();
if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {} if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {}
else { else {
radioButton_useSavedBlindsSettings->setChecked(TRUE); radioButton_useSavedBlindsSettings->setChecked(true);
} }
} }
@@ -51,7 +51,7 @@ class createNetworkGameDialogImpl: public QDialog, public Ui::createNetworkGameD
public: public:
createNetworkGameDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); createNetworkGameDialogImpl(QWidget *parent = 0, ConfigFile *c = 0);
void exec(); int exec();
changeCompleteBlindsDialogImpl* getChangeCompleteBlindsDialog() { changeCompleteBlindsDialogImpl* getChangeCompleteBlindsDialog() {
return myChangeCompleteBlindsDialog; return myChangeCompleteBlindsDialog;
} }
+380 -290
View File
@@ -20,15 +20,24 @@
<string>Internet Game Lobby</string> <string>Internet Game Lobby</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>7</number> <number>7</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>4</number> <number>4</number>
</property> </property>
<property name="margin">
<number>5</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLineEdit" name="lineEdit_searchForPlayers"> <widget class="QLineEdit" name="lineEdit_searchForPlayers">
<property name="sizePolicy"> <property name="sizePolicy">
@@ -88,6 +97,277 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="5" column="0" colspan="3">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="label_connectedPlayersCounter">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_runningGamesCounter">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_openGamesCounter">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_rankings">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_pokerthDotNet">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QTreeView" name="treeView_GameList">
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="indentation">
<number>5</number>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_spectate">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>181</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_CreateGame">
<property name="text">
<string>&amp;Create Game</string>
</property>
<property name="icon">
<iconset resource="resources/pokerth.qrc">
<normaloff>:/gfx/list_add.png</normaloff>:/gfx/list_add.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_JoinGame">
<property name="text">
<string>&amp;Join Game</string>
</property>
<property name="icon">
<iconset resource="resources/pokerth.qrc">
<normaloff>:/gfx/go-next-view.png</normaloff>:/gfx/go-next-view.png</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_lobbyChat">
<property name="minimumSize">
<size>
<width>400</width>
<height>223</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>230</height>
</size>
</property>
<property name="title">
<string>Lobby-Chat</string>
</property>
<layout class="QGridLayout">
<property name="leftMargin">
<number>7</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>7</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTextBrowser" name="textBrowser_ChatDisplay">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit_ChatInput"/>
</item>
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QComboBox" name="comboBox_nickListFilter">
<item>
<property name="text">
<string>Sort alphabetically</string>
</property>
</item>
<item>
<property name="text">
<string>Sort by country</string>
</property>
</item>
<item>
<property name="text">
<string>Display idle players</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0" rowspan="3">
<widget class="QTreeView" name="treeView_NickList">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>165</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>165</width>
<height>16777215</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2" rowspan="5"> <item row="0" column="2" rowspan="5">
<widget class="QGroupBox" name="groupBox_GameInfo"> <widget class="QGroupBox" name="groupBox_GameInfo">
<property name="enabled"> <property name="enabled">
@@ -114,28 +394,56 @@
<property name="title"> <property name="title">
<string>Game Info</string> <string>Game Info</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QGridLayout" name="gridLayout_4">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin"> <property name="leftMargin">
<number>7</number> <number>6</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>2</number> <number>2</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>7</number> <number>6</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>6</number> <number>6</number>
</property> </property>
<item> <property name="horizontalSpacing">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>1</number>
</property>
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget_playerSpectators">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_players">
<attribute name="title">
<string>Players</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTreeWidget" name="treeWidget_connectedPlayers"> <widget class="QTreeWidget" name="treeWidget_connectedPlayers">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>221</width> <width>221</width>
<height>237</height> <height>100</height>
</size> </size>
</property> </property>
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
@@ -153,6 +461,9 @@
<property name="indentation"> <property name="indentation">
<number>15</number> <number>15</number>
</property> </property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column> <column>
<property name="text"> <property name="text">
<string>Connected Players</string> <string>Connected Players</string>
@@ -160,7 +471,45 @@
</column> </column>
</widget> </widget>
</item> </item>
<item> </layout>
</widget>
<widget class="QWidget" name="tab_spectators">
<attribute name="title">
<string>Spectators</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTreeWidget" name="treeWidget_connectedSpectators">
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea_gameInfos"> <widget class="QScrollArea" name="scrollArea_gameInfos">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@@ -176,20 +525,29 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>246</width> <width>250</width>
<height>168</height> <height>200</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout1">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>-1</number> <number>6</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin">
<number>4</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_gameType"> <widget class="QLabel" name="label_gameType">
<property name="text"> <property name="text">
@@ -405,7 +763,7 @@
</widget> </widget>
</widget> </widget>
</item> </item>
<item> <item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QCheckBox" name="checkBox_fillUpWithComputerOpponents"> <widget class="QCheckBox" name="checkBox_fillUpWithComputerOpponents">
@@ -442,7 +800,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item> <item row="3" column="0">
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
@@ -532,7 +890,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item> <item row="4" column="0">
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<property name="spacing"> <property name="spacing">
<number>0</number> <number>0</number>
@@ -587,272 +945,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="QTreeView" name="treeView_GameList">
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="indentation">
<number>5</number>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="pushButton_joinAnyGame">
<property name="text">
<string>Join &amp;any game</string>
</property>
<property name="icon">
<iconset resource="resources/pokerth.qrc">
<normaloff>:/gfx/transform-rotate.png</normaloff>:/gfx/transform-rotate.png</iconset>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>181</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_CreateGame">
<property name="text">
<string>&amp;Create Game</string>
</property>
<property name="icon">
<iconset resource="resources/pokerth.qrc">
<normaloff>:/gfx/list_add.png</normaloff>:/gfx/list_add.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_JoinGame">
<property name="text">
<string>&amp;Join Game</string>
</property>
<property name="icon">
<iconset resource="resources/pokerth.qrc">
<normaloff>:/gfx/go-next-view.png</normaloff>:/gfx/go-next-view.png</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_lobbyChat">
<property name="minimumSize">
<size>
<width>400</width>
<height>223</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>230</height>
</size>
</property>
<property name="title">
<string>Lobby-Chat</string>
</property>
<layout class="QGridLayout">
<property name="leftMargin">
<number>7</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>7</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTextBrowser" name="textBrowser_ChatDisplay">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit_ChatInput"/>
</item>
</layout>
</widget>
</item>
<item row="5" column="0" colspan="3">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="label_connectedPlayersCounter">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_runningGamesCounter">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_openGamesCounter">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_rankings">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_pokerthDotNet">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" rowspan="3">
<widget class="QTreeView" name="treeView_NickList">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>165</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>165</width>
<height>16777215</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QComboBox" name="comboBox_nickListFilter">
<item>
<property name="text">
<string>Sort alphabetically</string>
</property>
</item>
<item>
<property name="text">
<string>Sort by country</string>
</property>
</item>
<item>
<property name="text">
<string>Display idle players</string>
</property>
</item>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
@@ -861,9 +953,7 @@
<tabstop>comboBox_nickListFilter</tabstop> <tabstop>comboBox_nickListFilter</tabstop>
<tabstop>comboBox_gameListFilter</tabstop> <tabstop>comboBox_gameListFilter</tabstop>
<tabstop>treeView_GameList</tabstop> <tabstop>treeView_GameList</tabstop>
<tabstop>pushButton_joinAnyGame</tabstop>
<tabstop>pushButton_CreateGame</tabstop> <tabstop>pushButton_CreateGame</tabstop>
<tabstop>pushButton_JoinGame</tabstop>
<tabstop>textBrowser_ChatDisplay</tabstop> <tabstop>textBrowser_ChatDisplay</tabstop>
<tabstop>lineEdit_ChatInput</tabstop> <tabstop>lineEdit_ChatInput</tabstop>
<tabstop>treeWidget_connectedPlayers</tabstop> <tabstop>treeWidget_connectedPlayers</tabstop>
+159 -151
View File
@@ -53,12 +53,13 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
setWindowModality(Qt::ApplicationModal); setWindowModality(Qt::ApplicationModal);
setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog);
#elif _WIN32 #elif _WIN32
setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint); // setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint);
#endif #endif
setupUi(this); setupUi(this);
myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str());
#ifdef ANDROID
this->setWindowState(Qt::WindowFullScreen);
#endif
//wait start game message //wait start game message
waitStartGameMsgBox = new MyMessageBox(this); waitStartGameMsgBox = new MyMessageBox(this);
waitStartGameMsgBox->setText(tr("Starting game. Please wait ...")); waitStartGameMsgBox->setText(tr("Starting game. Please wait ..."));
@@ -86,17 +87,19 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
//HTML stuff //HTML stuff
QString pokerthDotNet("<a href='http://www.pokerth.net'>http://www.pokerth.net</a>"); QString pokerthDotNet("<a href='http://www.pokerth.net'>http://www.pokerth.net</a>");
QString clickToRanking(QString("<a href='http://online-ranking.pokerth.net'>%1</a>").arg(tr("Click here to view the online rankings"))); QString clickToRanking(QString("<a href='http://online-ranking.pokerth.net'>%1</a>").arg(tr("Click here to view the online rankings")));
QString clickToSpectate(QString("<a href='http://pokerth.net/live'><b>%1</b></a>").arg(tr("Spectate")));
label_pokerthDotNet->setText(pokerthDotNet); label_pokerthDotNet->setText(pokerthDotNet);
label_rankings->setText(clickToRanking); label_rankings->setText(clickToRanking);
label_spectate->setText(clickToSpectate);
waitStartGameMsgBoxTimer = new QTimer(this); waitStartGameMsgBoxTimer = new QTimer(this);
waitStartGameMsgBoxTimer->setSingleShot(TRUE); waitStartGameMsgBoxTimer->setSingleShot(true);
blinkingButtonAnimationTimer = new QTimer(this); blinkingButtonAnimationTimer = new QTimer(this);
blinkingButtonAnimationTimer->setInterval(1000); blinkingButtonAnimationTimer->setInterval(1000);
autoStartTimer = new QTimer(this); autoStartTimer = new QTimer(this);
autoStartTimer->setInterval(1000); autoStartTimer->setInterval(1000);
showInfoMsgBoxTimer = new QTimer(this); showInfoMsgBoxTimer = new QTimer(this);
showInfoMsgBoxTimer->setSingleShot(TRUE); showInfoMsgBoxTimer->setSingleShot(true);
//fetch button colors for blinking //fetch button colors for blinking
groupBox_GameInfo->setEnabled(true); groupBox_GameInfo->setEnabled(true);
@@ -111,12 +114,12 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
//prepare overlay //prepare overlay
autoStartTimerOverlay = new QLabel(scrollArea_gameInfos); autoStartTimerOverlay = new QLabel(scrollArea_gameInfos);
autoStartTimerOverlay->hide(); autoStartTimerOverlay->hide();
autoStartTimerOverlay->setWordWrap(TRUE); autoStartTimerOverlay->setWordWrap(true);
autoStartTimerOverlay->setMaximumWidth(190); autoStartTimerOverlay->setMaximumWidth(190);
autoStartTimerOverlay->setMinimumWidth(190); autoStartTimerOverlay->setMinimumWidth(190);
autoStartTimerOverlay->setTextFormat(Qt::RichText); autoStartTimerOverlay->setTextFormat(Qt::RichText);
autoStartTimerOverlay->setAlignment(Qt::AlignCenter); autoStartTimerOverlay->setAlignment(Qt::AlignCenter);
autoStartTimerOverlay->setAutoFillBackground(TRUE); autoStartTimerOverlay->setAutoFillBackground(true);
autoStartTimerOverlay->setFrameStyle(QFrame::StyledPanel); autoStartTimerOverlay->setFrameStyle(QFrame::StyledPanel);
QPalette p; QPalette p;
p.setColor(QPalette::Background, QColor(255, 255, 255, 210)); p.setColor(QPalette::Background, QColor(255, 255, 255, 210));
@@ -126,9 +129,8 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
myGameListModel = new QStandardItemModel(this); myGameListModel = new QStandardItemModel(this);
myGameListSortFilterProxyModel = new MyGameListSortFilterProxyModel(this); myGameListSortFilterProxyModel = new MyGameListSortFilterProxyModel(this);
myGameListSortFilterProxyModel->setSourceModel(myGameListModel); myGameListSortFilterProxyModel->setSourceModel(myGameListModel);
myGameListSortFilterProxyModel->setDynamicSortFilter(TRUE); myGameListSortFilterProxyModel->setDynamicSortFilter(true);
treeView_GameList->setModel(myGameListSortFilterProxyModel); treeView_GameList->setModel(myGameListSortFilterProxyModel);
myGameListSelectionModel = treeView_GameList->selectionModel(); myGameListSelectionModel = treeView_GameList->selectionModel();
QStringList headerList; QStringList headerList;
@@ -174,12 +176,12 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
treeView_GameList->setStyleSheet("QTreeView {background-color: white; background-image: url(\""+myAppDataPath +"gfx/gui/misc/background_gamelist.png\"); background-attachment: fixed; background-position: top center ; background-repeat: no-repeat;}"); treeView_GameList->setStyleSheet("QTreeView {background-color: white; background-image: url(\""+myAppDataPath +"gfx/gui/misc/background_gamelist.png\"); background-attachment: fixed; background-position: top center ; background-repeat: no-repeat;}");
#endif #endif
treeView_GameList->setAutoFillBackground(TRUE); treeView_GameList->setAutoFillBackground(true);
myNickListModel = new QStandardItemModel(this); myNickListModel = new QStandardItemModel(this);
myNickListSortFilterProxyModel = new MyNickListSortFilterProxyModel(this); myNickListSortFilterProxyModel = new MyNickListSortFilterProxyModel(this);
myNickListSortFilterProxyModel->setSourceModel(myNickListModel); myNickListSortFilterProxyModel->setSourceModel(myNickListModel);
myNickListSortFilterProxyModel->setDynamicSortFilter(TRUE); myNickListSortFilterProxyModel->setDynamicSortFilter(true);
myNickListSortFilterProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); myNickListSortFilterProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
treeView_NickList->setModel(myNickListSortFilterProxyModel); treeView_NickList->setModel(myNickListSortFilterProxyModel);
@@ -197,6 +199,8 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
nickListContextMenu->addAction(nickListInviteAction); nickListContextMenu->addAction(nickListInviteAction);
nickListIgnorePlayerAction = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore player"), nickListContextMenu); nickListIgnorePlayerAction = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore player"), nickListContextMenu);
nickListContextMenu->addAction(nickListIgnorePlayerAction); nickListContextMenu->addAction(nickListIgnorePlayerAction);
nickListUnignorePlayerAction = new QAction(QIcon(":/gfx/dialog_ok_apply.png"), tr("Unignore player"), nickListContextMenu);
nickListContextMenu->addAction(nickListUnignorePlayerAction);
nickListPlayerInfoSubMenu = nickListContextMenu->addMenu(QIcon(":/gfx/dialog-information.png"), tr("Player infos ...")); nickListPlayerInfoSubMenu = nickListContextMenu->addMenu(QIcon(":/gfx/dialog-information.png"), tr("Player infos ..."));
nickListPlayerInGameInfo = new QAction(nickListContextMenu); nickListPlayerInGameInfo = new QAction(nickListContextMenu);
nickListPlayerInfoSubMenu->addAction(nickListPlayerInGameInfo); nickListPlayerInfoSubMenu->addAction(nickListPlayerInGameInfo);
@@ -219,7 +223,6 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
connect( pushButton_CreateGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( pushButton_CreateGame, SIGNAL( clicked() ), this, SLOT( createGame() ) );
connect( pushButton_JoinGame, SIGNAL( clicked() ), this, SLOT( joinGame() ) ); connect( pushButton_JoinGame, SIGNAL( clicked() ), this, SLOT( joinGame() ) );
connect( pushButton_joinAnyGame, SIGNAL( clicked() ), this, SLOT( joinAnyGame() ) );
connect( pushButton_StartGame, SIGNAL( clicked() ), this, SLOT( startGame() ) ); connect( pushButton_StartGame, SIGNAL( clicked() ), this, SLOT( startGame() ) );
connect( pushButton_Kick, SIGNAL( clicked() ), this, SLOT( kickPlayer() ) ); connect( pushButton_Kick, SIGNAL( clicked() ), this, SLOT( kickPlayer() ) );
connect( pushButton_Leave, SIGNAL( clicked() ), this, SLOT( leaveGame() ) ); connect( pushButton_Leave, SIGNAL( clicked() ), this, SLOT( leaveGame() ) );
@@ -241,6 +244,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
connect( treeView_GameList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showGameListContextMenu(QPoint) ) ); connect( treeView_GameList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showGameListContextMenu(QPoint) ) );
connect( nickListInviteAction, SIGNAL(triggered()), this, SLOT( invitePlayerToCurrentGame() )); connect( nickListInviteAction, SIGNAL(triggered()), this, SLOT( invitePlayerToCurrentGame() ));
connect( nickListIgnorePlayerAction, SIGNAL(triggered()), this, SLOT( putPlayerOnIgnoreList() )); connect( nickListIgnorePlayerAction, SIGNAL(triggered()), this, SLOT( putPlayerOnIgnoreList() ));
connect( nickListUnignorePlayerAction, SIGNAL(triggered()), this, SLOT( removePlayerFromIgnoreList() ));
connect( nickListOpenPlayerStats1, SIGNAL(triggered()), this, SLOT( openPlayerStats1() )); connect( nickListOpenPlayerStats1, SIGNAL(triggered()), this, SLOT( openPlayerStats1() ));
connect( connectedPlayersListOpenPlayerStats, SIGNAL(triggered()), this, SLOT( openPlayerStats2() )); connect( connectedPlayersListOpenPlayerStats, SIGNAL(triggered()), this, SLOT( openPlayerStats2() ));
connect( lineEdit_searchForPlayers, SIGNAL(textChanged(QString)),this, SLOT(searchForPlayerRegExpChanged())); connect( lineEdit_searchForPlayers, SIGNAL(textChanged(QString)),this, SLOT(searchForPlayerRegExpChanged()));
@@ -251,12 +255,10 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
lineEdit_searchForPlayers->installEventFilter(this); lineEdit_searchForPlayers->installEventFilter(this);
lineEdit_ChatInput->installEventFilter(this); lineEdit_ChatInput->installEventFilter(this);
this->installEventFilter(this); this->installEventFilter(this);
clearDialog(); clearDialog();
} }
void gameLobbyDialogImpl::exec() int gameLobbyDialogImpl::exec()
{ {
if(myConfig->readConfigInt("UseLobbyChat")) { if(myConfig->readConfigInt("UseLobbyChat")) {
@@ -276,10 +278,11 @@ void gameLobbyDialogImpl::exec()
#ifdef ANDROID #ifdef ANDROID
this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
#endif #endif
QDialog::exec(); int ret = QDialog::exec();
waitStartGameMsgBoxTimer->stop(); waitStartGameMsgBoxTimer->stop();
closeAllChildDialogs(); closeAllChildDialogs();
return ret;
} }
@@ -328,7 +331,7 @@ void gameLobbyDialogImpl::createGame()
gameData.raiseMode = MANUAL_BLINDS_ORDER; gameData.raiseMode = MANUAL_BLINDS_ORDER;
std::list<int> tempBlindList; std::list<int> tempBlindList;
int i; int i;
bool ok = TRUE; bool ok = true;
for(i=0; i<myCreateInternetGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->count(); i++) { for(i=0; i<myCreateInternetGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->count(); i++) {
tempBlindList.push_back(myCreateInternetGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->item(i)->text().toInt(&ok,10)); tempBlindList.push_back(myCreateInternetGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->item(i)->text().toInt(&ok,10));
} }
@@ -350,6 +353,7 @@ void gameLobbyDialogImpl::createGame()
gameData.delayBetweenHandsSec = myCreateInternetGameDialog->spinBox_netDelayBetweenHands->value(); gameData.delayBetweenHandsSec = myCreateInternetGameDialog->spinBox_netDelayBetweenHands->value();
gameData.playerActionTimeoutSec = myCreateInternetGameDialog->spinBox_netTimeOutPlayerAction->value(); gameData.playerActionTimeoutSec = myCreateInternetGameDialog->spinBox_netTimeOutPlayerAction->value();
gameData.gameType = GameType(myCreateInternetGameDialog->comboBox_gameType->itemData(myCreateInternetGameDialog->comboBox_gameType->currentIndex(), Qt::UserRole).toInt()); gameData.gameType = GameType(myCreateInternetGameDialog->comboBox_gameType->itemData(myCreateInternetGameDialog->comboBox_gameType->currentIndex(), Qt::UserRole).toInt());
gameData.allowSpectators = myCreateInternetGameDialog->checkBox_allowSpectators->isChecked();
currentGameName = myCreateInternetGameDialog->lineEdit_gameName->text().simplified(); currentGameName = myCreateInternetGameDialog->lineEdit_gameName->text().simplified();
@@ -376,17 +380,11 @@ void gameLobbyDialogImpl::createGame()
break; break;
} }
showGameDescription(TRUE); showGameDescription(true);
label_SmallBlind->setText(QString("%L1").arg(gameData.firstSmallBlind)); label_SmallBlind->setText(QString("%L1").arg(gameData.firstSmallBlind));
label_StartCash->setText(QString("%L1").arg(gameData.startMoney)); label_StartCash->setText(QString("%L1").arg(gameData.startMoney));
QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem();
header->setText(0, tr("Connected players - max. %1").arg(gameData.maxNumberOfPlayers));
header->setData(0, Qt::UserRole, gameData.maxNumberOfPlayers);
updateDialogBlinds(gameData); updateDialogBlinds(gameData);
label_GameTiming->setText(QString::number(gameData.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(gameData.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); label_GameTiming->setText(QString::number(gameData.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(gameData.delayBetweenHandsSec)+" "+tr("sec (hand delay)"));
mySession->clientCreateGame(gameData, currentGameName.toUtf8().constData(), myCreateInternetGameDialog->lineEdit_Password->text().toUtf8().constData()); mySession->clientCreateGame(gameData, currentGameName.toUtf8().constData(), myCreateInternetGameDialog->lineEdit_Password->text().toUtf8().constData());
@@ -417,37 +415,6 @@ void gameLobbyDialogImpl::joinGame()
} }
} }
void gameLobbyDialogImpl::joinAnyGame()
{
if(comboBox_gameListFilter->currentIndex() != 3 && comboBox_gameListFilter->currentIndex() != 0 && comboBox_gameListFilter->currentIndex() != 5) comboBox_gameListFilter->setCurrentIndex(0);
bool found = FALSE;
int it = 0;
int gameToJoinId = 0;
int mostConnectedPlayers = 0;
while (myGameListModel->item(it)) {
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 4)->data(16) == "nonpriv" && players < maxPlayers) {
if(players > mostConnectedPlayers) {
mostConnectedPlayers = players;
gameToJoinId = it;
}
found = TRUE;
}
it++;
}
if(found) {
treeView_GameList->setCurrentIndex(myGameListSortFilterProxyModel->mapFromSource(myGameListModel->item(gameToJoinId)->index()));
joinGame();
}
}
void gameLobbyDialogImpl::refresh(int actionID) void gameLobbyDialogImpl::refresh(int actionID)
{ {
@@ -478,7 +445,6 @@ void gameLobbyDialogImpl::refresh(int actionID)
treeView_GameList->setColumnWidth(3,25); treeView_GameList->setColumnWidth(3,25);
treeView_GameList->setColumnWidth(4,25); treeView_GameList->setColumnWidth(4,25);
treeView_GameList->setColumnWidth(5,30); treeView_GameList->setColumnWidth(5,30);
#endif #endif
QStringList headerList2; QStringList headerList2;
@@ -550,7 +516,7 @@ void gameLobbyDialogImpl::gameSelected(const QModelIndex &index)
break; break;
} }
showGameDescription(TRUE); showGameDescription(true);
label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind)); label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind));
label_StartCash->setText(QString("%L1").arg(info.data.startMoney)); label_StartCash->setText(QString("%L1").arg(info.data.startMoney));
// label_MaximumNumberOfPlayers->setText(QString::number(info.data.maxNumberOfPlayers));s // label_MaximumNumberOfPlayers->setText(QString::number(info.data.maxNumberOfPlayers));s
@@ -568,9 +534,15 @@ void gameLobbyDialogImpl::gameSelected(const QModelIndex &index)
++i; ++i;
} }
QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); treeWidget_connectedSpectators->clear();
header->setText(0, tr("Connected players - Max. %1").arg(info.data.maxNumberOfPlayers)); PlayerIdList::const_iterator s = info.spectators.begin();
header->setData(0, Qt::UserRole, info.data.maxNumberOfPlayers); PlayerIdList::const_iterator s_end = info.spectators.end();
while (s != s_end) {
PlayerInfo playerInfo(mySession->getClientPlayerInfo(*s));
addConnectedSpectator(*s, QString::fromUtf8(playerInfo.playerName.c_str()));
++s;
}
#ifdef __APPLE__ #ifdef __APPLE__
// Dirty workaround for a Qt redraw bug on Mac OS. // Dirty workaround for a Qt redraw bug on Mac OS.
treeWidget_connectedPlayers->setFocus(); treeWidget_connectedPlayers->setFocus();
@@ -612,6 +584,22 @@ void gameLobbyDialogImpl::updateGameItem(QList <QStandardItem*> itemList, unsign
++i; ++i;
} }
//reset players iterator
i = info.players.begin();
end = info.players.end();
while (i != end) {
//mark players as active
int it1 = 0;
while (myNickListModel->item(it1)) {
if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == *i) {
myNickListModel->item(it1, 0)->setData("active", 34);
break;
}
++it1;
}
++i;
}
QString playerStr; QString playerStr;
playerStr.sprintf("%u/%u", (unsigned)info.players.size(), (unsigned)info.data.maxNumberOfPlayers); playerStr.sprintf("%u/%u", (unsigned)info.players.size(), (unsigned)info.data.maxNumberOfPlayers);
itemList.at(1)->setData(playerStr, Qt::DisplayRole); itemList.at(1)->setData(playerStr, Qt::DisplayRole);
@@ -674,6 +662,22 @@ void gameLobbyDialogImpl::updateGameItem(QList <QStandardItem*> itemList, unsign
treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") ); treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
refreshGameStats(); refreshGameStats();
//mark spactators as active
PlayerIdList::const_iterator s = info.spectators.begin();
PlayerIdList::const_iterator s_end = info.spectators.end();
while (s != s_end) {
int it2 = 0;
while (myNickListModel->item(it2)) {
if (myNickListModel->item(it2, 0)->data(Qt::UserRole) == *s) {
myNickListModel->item(it2, 0)->setData("active", 34);
break;
}
++it2;
}
++s;
}
} }
void gameLobbyDialogImpl::addGame(unsigned gameId) void gameLobbyDialogImpl::addGame(unsigned gameId)
@@ -690,7 +694,6 @@ void gameLobbyDialogImpl::addGame(unsigned gameId)
myGameListModel->appendRow(itemList); myGameListModel->appendRow(itemList);
updateGameItem(itemList, gameId); updateGameItem(itemList, gameId);
} }
void gameLobbyDialogImpl::updateGameMode(unsigned gameId, int /*newMode*/) void gameLobbyDialogImpl::updateGameMode(unsigned gameId, int /*newMode*/)
@@ -743,11 +746,8 @@ void gameLobbyDialogImpl::refreshGameStats()
++it; ++it;
} }
label_openGamesCounter->setText("| "+tr("running games: %1").arg(runningGamesCounter)); label_openGamesCounter->setText(" | "+tr("running games: %1").arg(runningGamesCounter));
label_runningGamesCounter->setText("| "+tr("open games: %1").arg(openGamesCounter)); label_runningGamesCounter->setText(" | "+tr("open games: %1").arg(openGamesCounter));
//refresh joinAnyGameButton state
joinAnyGameButtonRefresh();
} }
@@ -778,14 +778,15 @@ void gameLobbyDialogImpl::gameAddPlayer(unsigned gameId, unsigned playerId)
if (myGameListModel->item(it, 0)->data(Qt::UserRole) == gameId) { if (myGameListModel->item(it, 0)->data(Qt::UserRole) == gameId) {
QList <QStandardItem*> itemList; QList <QStandardItem*> itemList;
itemList << myGameListModel->item(it, 0) << myGameListModel->item(it, 1) << myGameListModel->item(it, 2) << myGameListModel->item(it, 3) << myGameListModel->item(it, 4) << myGameListModel->item(it, 5); itemList << myGameListModel->item(it, 0) << myGameListModel->item(it, 1) << myGameListModel->item(it, 2) << myGameListModel->item(it, 3) << myGameListModel->item(it, 4) << myGameListModel->item(it, 5);
updateGameItem(itemList, gameId); updateGameItem(itemList, gameId);
break; break;
} }
it++; it++;
} }
}
//mark player as active void gameLobbyDialogImpl::gameAddSpectator(unsigned /*gameId*/, unsigned playerId)
{
int it1 = 0; int it1 = 0;
while (myNickListModel->item(it1)) { while (myNickListModel->item(it1)) {
if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) { if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) {
@@ -832,6 +833,19 @@ void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId)
} }
} }
void gameLobbyDialogImpl::gameRemoveSpectator(unsigned, unsigned playerId)
{
//mark spectator as idle again
int it1 = 0;
while (myNickListModel->item(it1)) {
if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) {
myNickListModel->item(it1, 0)->setData("idle", 34);
break;
}
++it1;
}
}
void gameLobbyDialogImpl::updateStats(ServerStats /*stats*/) void gameLobbyDialogImpl::updateStats(ServerStats /*stats*/)
{ {
refreshPlayerStats(); refreshPlayerStats();
@@ -843,11 +857,7 @@ void gameLobbyDialogImpl::clearDialog()
groupBox_GameInfo->setEnabled(false); groupBox_GameInfo->setEnabled(false);
currentGameName = ""; currentGameName = "";
QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); showGameDescription(false);
header->setText(0, tr("Connected players"));
header->setData(0, Qt::UserRole, 0);
showGameDescription(FALSE);
label_typeIcon->setText(" "); label_typeIcon->setText(" ");
label_typeText->setText(" "); label_typeText->setText(" ");
label_SmallBlind->setText(""); label_SmallBlind->setText("");
@@ -863,6 +873,7 @@ void gameLobbyDialogImpl::clearDialog()
myGameListSortFilterProxyModel->clear(); myGameListSortFilterProxyModel->clear();
treeView_GameList->show(); treeView_GameList->show();
treeWidget_connectedPlayers->clear(); treeWidget_connectedPlayers->clear();
treeWidget_connectedSpectators->clear();
pushButton_Leave->hide(); pushButton_Leave->hide();
pushButton_Kick->hide(); pushButton_Kick->hide();
@@ -872,8 +883,6 @@ void gameLobbyDialogImpl::clearDialog()
pushButton_CreateGame->show(); pushButton_CreateGame->show();
pushButton_JoinGame->show(); pushButton_JoinGame->show();
pushButton_JoinGame->setEnabled(false); pushButton_JoinGame->setEnabled(false);
pushButton_joinAnyGame->show();
pushButton_joinAnyGame->setEnabled(false);
QStringList headerList; QStringList headerList;
headerList << tr("Game") << tr("Players") << tr("State") << tr("T") << tr("P") << tr("Time"); headerList << tr("Game") << tr("Players") << tr("State") << tr("T") << tr("P") << tr("Time");
@@ -911,17 +920,18 @@ void gameLobbyDialogImpl::clearDialog()
isGameAdministrator = false; isGameAdministrator = false;
myPlayerId = 0; myPlayerId = 0;
showGameDescription(FALSE); showGameDescription(false);
label_connectedPlayersCounter->setText(tr("connected players: %1").arg(0)); label_connectedPlayersCounter->setText(tr("connected players: %1").arg(0));
label_openGamesCounter->setText("| "+tr("running games: %1").arg(0)); label_openGamesCounter->setText(" | "+tr("running games: %1").arg(0));
label_runningGamesCounter->setText("| "+tr("open games: %1").arg(0)); label_runningGamesCounter->setText(" | "+tr("open games: %1").arg(0));
readDialogSettings(); readDialogSettings();
} }
void gameLobbyDialogImpl::checkPlayerQuantity() void gameLobbyDialogImpl::checkPlayerQuantity()
{ {
tabWidget_playerSpectators->setTabText(0, tr("Players (%1)").arg(treeWidget_connectedPlayers->topLevelItemCount()));
assert(mySession); assert(mySession);
GameInfo info(mySession->getClientGameInfo(mySession->getClientCurrentGameId())); GameInfo info(mySession->getClientGameInfo(mySession->getClientCurrentGameId()));
@@ -935,7 +945,7 @@ void gameLobbyDialogImpl::checkPlayerQuantity()
if (treeWidget_connectedPlayers->topLevelItemCount() >= 2) { if (treeWidget_connectedPlayers->topLevelItemCount() >= 2) {
pushButton_StartGame->setEnabled(true); pushButton_StartGame->setEnabled(true);
if(treeWidget_connectedPlayers->topLevelItemCount() == treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { if(treeWidget_connectedPlayers->topLevelItemCount() == info.data.maxNumberOfPlayers) {
blinkingButtonAnimationTimer->start(); blinkingButtonAnimationTimer->start();
} else { } else {
blinkingButtonAnimationTimer->stop(); blinkingButtonAnimationTimer->stop();
@@ -951,7 +961,7 @@ void gameLobbyDialogImpl::checkPlayerQuantity()
} }
//general actions //general actions
if(treeWidget_connectedPlayers->topLevelItemCount() < treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { if(treeWidget_connectedPlayers->topLevelItemCount() < info.data.maxNumberOfPlayers) {
autoStartTimerOverlay->hide(); autoStartTimerOverlay->hide();
autoStartTimer->stop(); autoStartTimer->stop();
} }
@@ -986,12 +996,9 @@ void gameLobbyDialogImpl::blinkingStartButtonAnimation()
void gameLobbyDialogImpl::joinedNetworkGame(unsigned playerId, QString playerName, bool isGameAdmin) void gameLobbyDialogImpl::joinedNetworkGame(unsigned playerId, QString playerName, bool isGameAdmin)
{ {
// Update dialog // Update dialog
inGame = true; inGame = true;
joinedGameDialogUpdate(); joinedGameDialogUpdate();
myPlayerId = playerId; myPlayerId = playerId;
isGameAdministrator = isGameAdmin; isGameAdministrator = isGameAdmin;
addConnectedPlayer(playerId, playerName, isGameAdmin); addConnectedPlayer(playerId, playerName, isGameAdmin);
@@ -1018,7 +1025,7 @@ void gameLobbyDialogImpl::joinedNetworkGame(unsigned playerId, QString playerNam
void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerName, bool isGameAdmin) void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerName, bool isGameAdmin)
{ {
GameInfo info(mySession->getClientGameInfo(mySession->getClientCurrentGameId()));
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedPlayers, 0); QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedPlayers, 0);
item->setData(0, Qt::UserRole, playerId); item->setData(0, Qt::UserRole, playerId);
item->setData(0, Qt::DisplayRole, playerName); item->setData(0, Qt::DisplayRole, playerName);
@@ -1026,7 +1033,7 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa
if(isGameAdmin) item->setBackground(0, QBrush(QColor(0, 255, 0, 127))); if(isGameAdmin) item->setBackground(0, QBrush(QColor(0, 255, 0, 127)));
if(this->isVisible() && inGame && myConfig->readConfigInt("PlayNetworkGameNotification")) { if(this->isVisible() && inGame && myConfig->readConfigInt("PlayNetworkGameNotification")) {
if(treeWidget_connectedPlayers->topLevelItemCount() < treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { if(treeWidget_connectedPlayers->topLevelItemCount() < info.data.maxNumberOfPlayers) {
myW->getMySoundEventHandler()->playSound("playerconnected", 0); myW->getMySoundEventHandler()->playSound("playerconnected", 0);
} else { } else {
myW->getMySoundEventHandler()->playSound("onlinegameready", 0); myW->getMySoundEventHandler()->playSound("onlinegameready", 0);
@@ -1040,6 +1047,17 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa
refreshConnectedPlayerAvatars(); refreshConnectedPlayerAvatars();
} }
void gameLobbyDialogImpl::addConnectedSpectator(unsigned spectatorId, QString spectatorName)
{
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedSpectators, 0);
item->setData(0, Qt::UserRole, spectatorId);
item->setData(0, Qt::DisplayRole, spectatorName);
tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(treeWidget_connectedSpectators->topLevelItemCount()));
// if (inGame)
// refreshConnectedSpecatatorAvatars();
}
void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName)
{ {
@@ -1074,14 +1092,6 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName)
myNickListModel->item(it1, 0)->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString))); myNickListModel->item(it1, 0)->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString)));
myNickListModel->item(it1, 0)->setToolTip(getFullCountryString(countryString.toUpper())); myNickListModel->item(it1, 0)->setToolTip(getFullCountryString(countryString.toUpper()));
} }
unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId);
if(gameIdOfPlayer) {
myNickListModel->item(it1, 0)->setData("active", 34);
} else {
myNickListModel->item(it1, 0)->setData("idle", 34);
}
break; break;
} }
@@ -1095,7 +1105,6 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName)
void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString) void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString)
{ {
QTreeWidgetItemIterator it(treeWidget_connectedPlayers); QTreeWidgetItemIterator it(treeWidget_connectedPlayers);
while (*it) { while (*it) {
if ((*it)->data(0, Qt::UserRole) == playerId) { if ((*it)->data(0, Qt::UserRole) == playerId) {
@@ -1104,9 +1113,21 @@ void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString)
} }
++it; ++it;
} }
checkPlayerQuantity(); checkPlayerQuantity();
}
void gameLobbyDialogImpl::removeSpectator(unsigned spectatorId, QString)
{
QTreeWidgetItemIterator it(treeWidget_connectedSpectators);
while (*it) {
if ((*it)->data(0, Qt::UserRole) == spectatorId) {
treeWidget_connectedSpectators->takeTopLevelItem(treeWidget_connectedSpectators->indexOfTopLevelItem(*it));
break;
}
++it;
}
tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(treeWidget_connectedSpectators->topLevelItemCount()));
} }
void gameLobbyDialogImpl::playerLeftLobby(unsigned playerId) void gameLobbyDialogImpl::playerLeftLobby(unsigned playerId)
@@ -1138,15 +1159,7 @@ void gameLobbyDialogImpl::playerJoinedLobby(unsigned playerId, QString /*playerN
item->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString))); item->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString)));
item->setToolTip(getFullCountryString(countryString.toUpper())); item->setToolTip(getFullCountryString(countryString.toUpper()));
} }
unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId);
if(gameIdOfPlayer) {
item->setData("active", 34);
} else {
item->setData("idle", 34); item->setData("idle", 34);
}
myNickListModel->appendRow(item); myNickListModel->appendRow(item);
refreshPlayerStats(); refreshPlayerStats();
@@ -1204,7 +1217,6 @@ void gameLobbyDialogImpl::joinedGameDialogUpdate()
treeWidget_connectedPlayers->clear(); treeWidget_connectedPlayers->clear();
pushButton_CreateGame->hide(); pushButton_CreateGame->hide();
pushButton_JoinGame->hide(); pushButton_JoinGame->hide();
pushButton_joinAnyGame->hide();
pushButton_Leave->show(); pushButton_Leave->show();
pushButton_Leave->setEnabled(true); pushButton_Leave->setEnabled(true);
@@ -1237,15 +1249,11 @@ void gameLobbyDialogImpl::joinedGameDialogUpdate()
break; break;
} }
showGameDescription(TRUE); showGameDescription(true);
label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind)); label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind));
label_StartCash->setText(QString("%L1").arg(info.data.startMoney)); label_StartCash->setText(QString("%L1").arg(info.data.startMoney));
updateDialogBlinds(info.data); updateDialogBlinds(info.data);
label_GameTiming->setText(QString::number(info.data.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(info.data.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); label_GameTiming->setText(QString::number(info.data.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(info.data.delayBetweenHandsSec)+" "+tr("sec (hand delay)"));
QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem();
header->setText(0, tr("Connected players - Max. %1").arg(info.data.maxNumberOfPlayers));
header->setData(0, Qt::UserRole, info.data.maxNumberOfPlayers);
} }
void gameLobbyDialogImpl::leftGameDialogUpdate() void gameLobbyDialogImpl::leftGameDialogUpdate()
@@ -1258,11 +1266,7 @@ void gameLobbyDialogImpl::leftGameDialogUpdate()
groupBox_GameInfo->setEnabled(false); groupBox_GameInfo->setEnabled(false);
currentGameName = ""; currentGameName = "";
QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); showGameDescription(false);
header->setText(0, tr("Connected players"));
header->setData(0, Qt::UserRole, 0);
showGameDescription(FALSE);
label_typeIcon->setText(" "); label_typeIcon->setText(" ");
label_typeText->setText(" "); label_typeText->setText(" ");
label_SmallBlind->setText(""); label_SmallBlind->setText("");
@@ -1273,6 +1277,7 @@ void gameLobbyDialogImpl::leftGameDialogUpdate()
label_GameTiming->setText(""); label_GameTiming->setText("");
treeWidget_connectedPlayers->clear(); treeWidget_connectedPlayers->clear();
treeWidget_connectedSpectators->clear();
pushButton_StartGame->hide(); pushButton_StartGame->hide();
pushButton_Leave->hide(); pushButton_Leave->hide();
pushButton_Kick->hide(); pushButton_Kick->hide();
@@ -1281,8 +1286,6 @@ void gameLobbyDialogImpl::leftGameDialogUpdate()
pushButton_CreateGame->show(); pushButton_CreateGame->show();
pushButton_JoinGame->show(); pushButton_JoinGame->show();
pushButton_JoinGame->setEnabled(false); pushButton_JoinGame->setEnabled(false);
pushButton_joinAnyGame->show();
joinAnyGameButtonRefresh();
lineEdit_ChatInput->setFocus(); lineEdit_ChatInput->setFocus();
} }
@@ -1436,6 +1439,7 @@ void gameLobbyDialogImpl::showGameDescription(bool show)
label_gameDesc5->show(); label_gameDesc5->show();
label_gameDesc6->show(); label_gameDesc6->show();
label_gameDesc7->show(); label_gameDesc7->show();
checkPlayerQuantity();
} else { } else {
label_gameType->hide(); label_gameType->hide();
label_gameDesc2->hide(); label_gameDesc2->hide();
@@ -1444,6 +1448,8 @@ void gameLobbyDialogImpl::showGameDescription(bool show)
label_gameDesc5->hide(); label_gameDesc5->hide();
label_gameDesc6->hide(); label_gameDesc6->hide();
label_gameDesc7->hide(); label_gameDesc7->hide();
tabWidget_playerSpectators->setTabText(0, tr("Players (%1)").arg(0));
tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(0));
} }
} }
@@ -1464,26 +1470,6 @@ void gameLobbyDialogImpl::hideWaitStartGameMsgBox()
waitRejoinStartGameMsgBox->hide(); waitRejoinStartGameMsgBox->hide();
} }
void gameLobbyDialogImpl::joinAnyGameButtonRefresh()
{
int openNonPrivateNonFullGamesCounter = 0;
int it = 0;
while (myGameListModel->item(it)) {
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 4)->data(16) == "nonpriv" && players < maxPlayers) {
openNonPrivateNonFullGamesCounter++;
}
++it;
}
if(openNonPrivateNonFullGamesCounter) pushButton_joinAnyGame->setEnabled(TRUE);
else pushButton_joinAnyGame->setEnabled(FALSE);
}
void gameLobbyDialogImpl::reject() void gameLobbyDialogImpl::reject()
{ {
myStartWindow->show(); myStartWindow->show();
@@ -1663,7 +1649,6 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p)
unsigned playerUid = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt(); unsigned playerUid = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt();
if(inGame && mySession->getClientGameInfo(mySession->getClientCurrentGameId()).data.gameType == GAME_TYPE_INVITE_ONLY && playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest) { if(inGame && mySession->getClientGameInfo(mySession->getClientCurrentGameId()).data.gameType == GAME_TYPE_INVITE_ONLY && playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest) {
nickListInviteAction->setEnabled(true); nickListInviteAction->setEnabled(true);
nickListInviteAction->setText(tr("Invite %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str()))); nickListInviteAction->setText(tr("Invite %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str())));
@@ -1672,16 +1657,22 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p)
nickListInviteAction->setEnabled(false); nickListInviteAction->setEnabled(false);
} }
if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest) { if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest && !playerIsOnIgnoreList(playerUid)) {
nickListIgnorePlayerAction->setEnabled(true); nickListIgnorePlayerAction->setEnabled(true);
nickListIgnorePlayerAction->setText(tr("Ignore %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str()))); nickListIgnorePlayerAction->setText(tr("Ignore %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str())));
} else { } else {
nickListIgnorePlayerAction->setEnabled(false); nickListIgnorePlayerAction->setEnabled(false);
nickListIgnorePlayerAction->setText(tr("Ignore player ...")); nickListIgnorePlayerAction->setText(tr("Ignore player ..."));
} }
if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest && playerIsOnIgnoreList(playerUid)) {
nickListUnignorePlayerAction->setEnabled(true);
nickListUnignorePlayerAction->setText(tr("Unignore %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str())));
} else {
nickListUnignorePlayerAction->setEnabled(false);
nickListUnignorePlayerAction->setText(tr("Unignore player ..."));
}
unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerUid); unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerUid);
QString playerInGameInfoString; QString playerInGameInfoString;
if(gameIdOfPlayer) { if(gameIdOfPlayer) {
@@ -1692,8 +1683,11 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p)
nickListPlayerInGameInfo->setText(playerInGameInfoString); nickListPlayerInGameInfo->setText(playerInGameInfoString);
//prevent admin to total kickban himself //prevent admin to total kickban himself
if(playerUid == mySession->getClientUniquePlayerId()) { nickListAdminTotalKickBan->setDisabled(true); } if(playerUid == mySession->getClientUniquePlayerId()) {
else { nickListAdminTotalKickBan->setEnabled(true); } nickListAdminTotalKickBan->setDisabled(true);
} else {
nickListAdminTotalKickBan->setEnabled(true);
}
// check for admin and remove admin actions for non-admins // check for admin and remove admin actions for non-admins
if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) { if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) {
@@ -1713,8 +1707,11 @@ void gameLobbyDialogImpl::showGameListContextMenu(QPoint p)
assert(mySession); assert(mySession);
unsigned selectedGameId = myGameListSelectionModel->selectedRows().first().data(Qt::UserRole).toUInt(); unsigned selectedGameId = myGameListSelectionModel->selectedRows().first().data(Qt::UserRole).toUInt();
if(selectedGameId == mySession->getClientCurrentGameId()) { gameListAdminCloseGame->setDisabled(true); } if(selectedGameId == mySession->getClientCurrentGameId()) {
else { gameListAdminCloseGame->setEnabled(true); } gameListAdminCloseGame->setDisabled(true);
} else {
gameListAdminCloseGame->setEnabled(true);
}
// check for admin and remove admin actions for non-admins // check for admin and remove admin actions for non-admins
if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) { if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) {
@@ -1805,21 +1802,32 @@ bool gameLobbyDialogImpl::playerIsOnIgnoreList(unsigned playerId)
void gameLobbyDialogImpl::putPlayerOnIgnoreList() void gameLobbyDialogImpl::putPlayerOnIgnoreList()
{ {
if(myNickListSelectionModel->currentIndex().isValid()) { if(myNickListSelectionModel->currentIndex().isValid()) {
unsigned playerId = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt(); unsigned playerId = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt();
if(!playerIsOnIgnoreList(playerId)) { if(!playerIsOnIgnoreList(playerId)) {
myMessageDialogImpl dialog(myConfig, this); myMessageDialogImpl dialog(myConfig, this);
if(dialog.exec(INGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { if(dialog.exec(IGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) {
list<std::string> playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList"); list<std::string> playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList");
playerIgnoreList.push_back(QString("%1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())).toUtf8().constData()); playerIgnoreList.push_back(QString("%1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())).toUtf8().constData());
myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList);
myConfig->writeBuffer(); myConfig->writeBuffer();
myChat->refreshIgnoreList();
}
}
}
}
void gameLobbyDialogImpl::removePlayerFromIgnoreList()
{
if(myNickListSelectionModel->currentIndex().isValid()) {
unsigned playerId = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt();
if(playerIsOnIgnoreList(playerId)) {
myMessageDialogImpl dialog(myConfig, this);
if(dialog.exec(UNIGNORE_PLAYER_QUESTION, tr("You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/dialog_ok_apply.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) {
list<std::string> playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList");
playerIgnoreList.remove(QString("%1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())).toUtf8().constData());
myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList);
myConfig->writeBuffer();
myChat->refreshIgnoreList(); myChat->refreshIgnoreList();
} }
} }
@@ -64,7 +64,7 @@ public:
~gameLobbyDialogImpl(); ~gameLobbyDialogImpl();
void exec(); int exec();
ChatTools *getMyChat() { ChatTools *getMyChat() {
return myChat; return myChat;
@@ -84,7 +84,6 @@ public slots:
void createGame(); void createGame();
void joinGame(); void joinGame();
void joinAnyGame();
void gameSelected(const QModelIndex &); void gameSelected(const QModelIndex &);
void updateGameItem(QList <QStandardItem*>, unsigned gameId); void updateGameItem(QList <QStandardItem*>, unsigned gameId);
void addGame(unsigned gameId); void addGame(unsigned gameId);
@@ -131,7 +130,6 @@ public slots:
void showWaitStartGameMsgBox(); void showWaitStartGameMsgBox();
void hideWaitStartGameMsgBox(); void hideWaitStartGameMsgBox();
void stopWaitStartGameMsgBoxTimer(); void stopWaitStartGameMsgBoxTimer();
void joinAnyGameButtonRefresh();
void reject(); void reject();
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
void accept(); void accept();
@@ -151,6 +149,7 @@ public slots:
void chatInfoPlayerInvitation(unsigned gameId, unsigned playerIdWho, unsigned playerIdFrom); void chatInfoPlayerInvitation(unsigned gameId, unsigned playerIdWho, unsigned playerIdFrom);
void chatInfoPlayerRejectedInvitation(unsigned gameId, unsigned playerIdWho, DenyGameInvitationReason reason); void chatInfoPlayerRejectedInvitation(unsigned gameId, unsigned playerIdWho, DenyGameInvitationReason reason);
void putPlayerOnIgnoreList(); void putPlayerOnIgnoreList();
void removePlayerFromIgnoreList();
bool playerIsOnIgnoreList(unsigned playerid); bool playerIsOnIgnoreList(unsigned playerid);
void searchForPlayerRegExpChanged(); void searchForPlayerRegExpChanged();
void showAutoStartTimer(); void showAutoStartTimer();
@@ -162,6 +161,10 @@ public slots:
void reportBadGameName(); void reportBadGameName();
void adminActionCloseGame(); void adminActionCloseGame();
void adminActionTotalKickBan(); void adminActionTotalKickBan();
void addConnectedSpectator(unsigned spectatorId, QString spectatorName);
void removeSpectator(unsigned spectatorId, QString);
void gameAddSpectator(unsigned, unsigned);
void gameRemoveSpectator(unsigned, unsigned);
private: private:
@@ -203,6 +206,7 @@ private:
QMenu *nickListContextMenu; QMenu *nickListContextMenu;
QAction *nickListInviteAction; QAction *nickListInviteAction;
QAction *nickListIgnorePlayerAction; QAction *nickListIgnorePlayerAction;
QAction *nickListUnignorePlayerAction;
QMenu *nickListPlayerInfoSubMenu; QMenu *nickListPlayerInfoSubMenu;
QMenu *nickListAdminSubMenu; QMenu *nickListAdminSubMenu;
QAction *nickListAdminTotalKickBan; QAction *nickListAdminTotalKickBan;
@@ -33,6 +33,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class MyGameListTreeWidget : public QTreeWidget class MyGameListTreeWidget : public QTreeWidget
{ {
+156 -35
View File
@@ -2235,7 +2235,16 @@ p, li { white-space: pre-wrap; }
<string notr="true">QGroupBox {border-style:none;}</string> <string notr="true">QGroupBox {border-style:none;}</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -2306,15 +2315,24 @@ p, li { white-space: pre-wrap; }
</size> </size>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_gameNumber"> <widget class="QLabel" name="label_gameNumber">
<property name="alignment"> <property name="alignment">
@@ -2556,15 +2574,24 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item> <item>
<layout class="QGridLayout" name="grid2"> <layout class="QGridLayout" name="grid2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin">
<number>0</number>
</property>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLabel" name="textLabel_Sets"> <widget class="QLabel" name="textLabel_Sets">
<property name="alignment"> <property name="alignment">
@@ -3532,7 +3559,16 @@ p, li { white-space: pre-wrap; }
<property name="spacing"> <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -3582,7 +3618,16 @@ p, li { white-space: pre-wrap; }
</size> </size>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number> <number>4</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
@@ -3598,7 +3643,16 @@ p, li { white-space: pre-wrap; }
<string>Hands</string> <string>Hands</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -3618,7 +3672,16 @@ p, li { white-space: pre-wrap; }
<string>Chat</string> <string>Chat</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -3650,15 +3713,24 @@ p, li { white-space: pre-wrap; }
<string>Kick</string> <string>Kick</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_100"> <layout class="QGridLayout" name="gridLayout_100">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin">
<number>5</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing"> <property name="spacing">
@@ -3790,12 +3862,21 @@ p, li { white-space: pre-wrap; }
<string>Player info</string> <string>Player info</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout4"> <layout class="QGridLayout" name="gridLayout4">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="margin">
<number>6</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QPlainTextEdit" name="textEdit_tipInput"> <widget class="QPlainTextEdit" name="textEdit_tipInput">
<property name="focusPolicy"> <property name="focusPolicy">
@@ -3868,15 +3949,24 @@ p, li { white-space: pre-wrap; }
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>1</number> <number>1</number>
</property> </property>
<property name="margin">
<number>0</number>
</property>
<item row="1" column="0"> <item row="1" column="0">
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<property name="spacing"> <property name="spacing">
@@ -4026,7 +4116,7 @@ p, li { white-space: pre-wrap; }
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
@@ -4039,7 +4129,7 @@ p, li { white-space: pre-wrap; }
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
@@ -4069,7 +4159,16 @@ p, li { white-space: pre-wrap; }
<property name="spacing"> <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -4119,15 +4218,24 @@ p, li { white-space: pre-wrap; }
</size> </size>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>1</number> <number>1</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin">
<number>4</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="MyRightTabWidget" name="tabWidget_Right"> <widget class="MyRightTabWidget" name="tabWidget_Right">
<property name="focusPolicy"> <property name="focusPolicy">
@@ -4141,7 +4249,16 @@ p, li { white-space: pre-wrap; }
<string>Log</string> <string>Log</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -4251,7 +4368,16 @@ p, li { white-space: pre-wrap; }
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -4457,13 +4583,13 @@ p, li { white-space: pre-wrap; }
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="MyMenuBar" name="menubar"> <widget class="QMenuBar" name="menubar">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1024</width> <width>1024</width>
<height>26</height> <height>19</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuView"> <widget class="QMenu" name="menuView">
@@ -4660,11 +4786,6 @@ p, li { white-space: pre-wrap; }
<extends>QPushButton</extends> <extends>QPushButton</extends>
<header>myactionbutton.h</header> <header>myactionbutton.h</header>
</customwidget> </customwidget>
<customwidget>
<class>MyMenuBar</class>
<extends>QMenuBar</extends>
<header>mymenubar.h</header>
</customwidget>
<customwidget> <customwidget>
<class>MyTimeoutLabel</class> <class>MyTimeoutLabel</class>
<extends>QLabel</extends> <extends>QLabel</extends>
File diff suppressed because it is too large Load Diff
+16
View File
@@ -40,10 +40,16 @@
#include "game_defs.h" #include "game_defs.h"
#include <string> #include <string>
#ifndef Q_MOC_RUN
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#endif
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class guiLog; class guiLog;
class ChatTools; class ChatTools;
@@ -127,6 +133,7 @@ signals:
void signalRefreshPlayerName(); void signalRefreshPlayerName();
void signalRefreshButton(); void signalRefreshButton();
void signalRefreshGameLabels(int); void signalRefreshGameLabels(int);
void signalRefreshSpectatorsDisplay();
void signalSetPlayerAvatar(int, QString); void signalSetPlayerAvatar(int, QString);
void signalGuiUpdateDone(); void signalGuiUpdateDone();
@@ -166,6 +173,9 @@ signals:
void signalChangeVoteOnKickButtonsState(bool showHide); void signalChangeVoteOnKickButtonsState(bool showHide);
void signalEndVoteOnKick(); void signalEndVoteOnKick();
void signalNetClientPlayerLeft(unsigned playerId); void signalNetClientPlayerLeft(unsigned playerId);
void signalNetClientSpectatorLeft(unsigned playerId);
void signalNetClientSpectatorJoined(unsigned playerId);
void signalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing);
public slots: public slots:
@@ -347,6 +357,8 @@ public slots:
void restoreGameTableGeometry(); void restoreGameTableGeometry();
void netClientPlayerLeft(unsigned playerId); void netClientPlayerLeft(unsigned playerId);
void netClientSpectatorLeft(unsigned playerId);
void netClientSpectatorJoined(unsigned playerId);
void registeredUserMode(); void registeredUserMode();
void guestUserMode(); void guestUserMode();
@@ -363,6 +375,8 @@ public slots:
void tabsButtonClicked(); void tabsButtonClicked();
void tabsButtonClose(); void tabsButtonClose();
#endif #endif
void refreshSpectatorsDisplay();
void pingUpdate(unsigned, unsigned, unsigned);
private: private:
@@ -429,6 +443,8 @@ private:
QLabel *playerTipLabelArray[MAX_NUMBER_OF_PLAYERS]; QLabel *playerTipLabelArray[MAX_NUMBER_OF_PLAYERS];
QPixmap flipside; QPixmap flipside;
QLabel *spectatorIcon;
QLabel *spectatorNumberLabel;
// Dialogs // Dialogs
startWindowImpl *myStartWindow; startWindowImpl *myStartWindow;
+11
View File
@@ -58,6 +58,8 @@ guiLog::guiLog(gameTableImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(
connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int))); connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int)));
connect(this, SIGNAL(signalLogPlayerJoinedMsg(QString)), this, SLOT(logPlayerJoinedMsg(QString))); connect(this, SIGNAL(signalLogPlayerJoinedMsg(QString)), this, SLOT(logPlayerJoinedMsg(QString)));
connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString))); connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString)));
connect(this, SIGNAL(signalLogSpectatorLeftMsg(QString, int)), this, SLOT(logSpectatorLeftMsg(QString, int)));
connect(this, SIGNAL(signalLogSpectatorJoinedMsg(QString)), this, SLOT(logSpectatorJoinedMsg(QString)));
connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int))); connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int)));
connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int))); connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int)));
connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand())); connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand()));
@@ -537,6 +539,15 @@ void guiLog::logPlayerJoinedMsg(QString playerName)
#endif #endif
} }
void guiLog::logSpectatorLeftMsg(QString playerName, int wasKicked)
{
// TODO
}
void guiLog::logSpectatorJoinedMsg(QString playerName)
{
// TODO
}
void guiLog::logPlayerWinGame(QString playerName, int gameID) void guiLog::logPlayerWinGame(QString playerName, int gameID)
{ {
+7
View File
@@ -41,6 +41,9 @@
#include <QtCore> #include <QtCore>
#include <QtGui> #include <QtGui>
#include <QtSql> #include <QtSql>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
struct result_struct { struct result_struct {
char **result_Session; char **result_Session;
@@ -75,6 +78,8 @@ public slots:
void logPlayerLeftMsg(QString playerName, int wasKicked); void logPlayerLeftMsg(QString playerName, int wasKicked);
void logPlayerJoinedMsg(QString playerName); void logPlayerJoinedMsg(QString playerName);
void logNewGameAdminMsg(QString playerName); void logNewGameAdminMsg(QString playerName);
void logSpectatorLeftMsg(QString playerName, int wasKicked);
void logSpectatorJoinedMsg(QString playerName);
void logPlayerWinGame(QString playerName, int gameID); void logPlayerWinGame(QString playerName, int gameID);
void flushLogAtGame(int gameID); void flushLogAtGame(int gameID);
void flushLogAtHand(); void flushLogAtHand();
@@ -106,6 +111,8 @@ signals:
void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows"); void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows");
void signalLogPlayerLeftMsg(QString playerName, int wasKicked); void signalLogPlayerLeftMsg(QString playerName, int wasKicked);
void signalLogPlayerJoinedMsg(QString playerName); void signalLogPlayerJoinedMsg(QString playerName);
void signalLogSpectatorLeftMsg(QString playerName, int wasKicked);
void signalLogSpectatorJoinedMsg(QString playerName);
void signalLogNewGameAdminMsg(QString playerName); void signalLogNewGameAdminMsg(QString playerName);
void signalLogPlayerWinGame(QString playerName, int gameID); void signalLogPlayerWinGame(QString playerName, int gameID);
void signalFlushLogAtGame(int gameID); void signalFlushLogAtGame(int gameID);
+3
View File
@@ -33,6 +33,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class GameTableStyleReader; class GameTableStyleReader;
+90 -11
View File
@@ -42,7 +42,7 @@
using namespace std; using namespace std;
MyAvatarLabel::MyAvatarLabel(QGroupBox* parent) MyAvatarLabel::MyAvatarLabel(QGroupBox* parent)
: QLabel(parent), voteRunning(FALSE), transparent(FALSE) : QLabel(parent), voteRunning(false), transparent(false), myUniqueId(0), myPingState(0), myAvgPing(0), myMinPing(0), myMaxPing(0)
{ {
myContextMenu = new QMenu; myContextMenu = new QMenu;
@@ -52,11 +52,14 @@ MyAvatarLabel::MyAvatarLabel(QGroupBox* parent)
myContextMenu->addAction(action_VoteForKick); myContextMenu->addAction(action_VoteForKick);
action_IgnorePlayer = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore Player"), myContextMenu); action_IgnorePlayer = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore Player"), myContextMenu);
myContextMenu->addAction(action_IgnorePlayer); myContextMenu->addAction(action_IgnorePlayer);
action_UnignorePlayer = new QAction(QIcon(":/gfx/dialog_ok_apply.png"), tr("Unignore Player"), myContextMenu);
myContextMenu->addAction(action_UnignorePlayer);
action_ReportBadAvatar = new QAction(QIcon(":/gfx/emblem-important.png"), tr("Report inappropriate avatar"), myContextMenu); action_ReportBadAvatar = new QAction(QIcon(":/gfx/emblem-important.png"), tr("Report inappropriate avatar"), myContextMenu);
myContextMenu->addAction(action_ReportBadAvatar); myContextMenu->addAction(action_ReportBadAvatar);
connect( action_VoteForKick, SIGNAL ( triggered() ), this, SLOT ( sendTriggerVoteOnKickSignal() ) ); connect( action_VoteForKick, SIGNAL ( triggered() ), this, SLOT ( sendTriggerVoteOnKickSignal() ) );
connect( action_IgnorePlayer, SIGNAL ( triggered() ), this, SLOT ( putPlayerOnIgnoreList() ) ); connect( action_IgnorePlayer, SIGNAL ( triggered() ), this, SLOT ( putPlayerOnIgnoreList() ) );
connect( action_UnignorePlayer, SIGNAL ( triggered() ), this, SLOT ( removePlayerFromIgnoreList() ) );
connect( action_ReportBadAvatar, SIGNAL ( triggered() ), this, SLOT ( reportBadAvatar() ) ); connect( action_ReportBadAvatar, SIGNAL ( triggered() ), this, SLOT ( reportBadAvatar() ) );
connect( action_EditTip, SIGNAL( triggered() ), this, SLOT ( startEditTip() ) ); connect( action_EditTip, SIGNAL( triggered() ), this, SLOT ( startEditTip() ) );
} }
@@ -86,12 +89,13 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event )
GameInfo info(myW->getSession()->getClientGameInfo(myW->getSession()->getClientCurrentGameId())); GameInfo info(myW->getSession()->getClientGameInfo(myW->getSession()->getClientCurrentGameId()));
if(activePlayerCounter > 2 && !voteRunning && info.data.gameType != GAME_TYPE_RANKING && !myW->getGuestMode()) { if(activePlayerCounter > 2 && !voteRunning && info.data.gameType != GAME_TYPE_RANKING && !myW->getGuestMode()) {
setVoteOnKickContextMenuEnabled(TRUE); setVoteOnKickContextMenuEnabled(true);
} else { } else {
setVoteOnKickContextMenuEnabled(FALSE); setVoteOnKickContextMenuEnabled(false);
} }
action_IgnorePlayer->setEnabled(true); action_IgnorePlayer->setEnabled(true);
action_UnignorePlayer->setDisabled(true);
action_EditTip->setEnabled(true); action_EditTip->setEnabled(true);
int j=0; int j=0;
for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) { for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) {
@@ -110,9 +114,14 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event )
} }
if(myW->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !((*it_c)->getMyAvatar().empty()) ) { if(myW->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !((*it_c)->getMyAvatar().empty()) ) {
action_ReportBadAvatar->setVisible(TRUE); action_ReportBadAvatar->setVisible(true);
} else { } else {
action_ReportBadAvatar->setVisible(FALSE); action_ReportBadAvatar->setVisible(false);
}
if(playerIsOnIgnoreList(QString::fromUtf8((*it_c)->getMyName().c_str()))) {
action_UnignorePlayer->setEnabled(true);
action_IgnorePlayer->setDisabled(true);
} }
} }
j++; j++;
@@ -214,7 +223,7 @@ void MyAvatarLabel::refreshStars()
for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) {
for(int i=1; i<=5; i++)myW->playerStarsArray[i][seatPlace]->setText(""); for(int i=1; i<=5; i++)myW->playerStarsArray[i][seatPlace]->setText("");
if(myW->myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !myW->getSession()->getClientPlayerInfo((*it_c)->getMyUniqueID()).isGuest && (*it_c)->getMyType() != PLAYER_TYPE_COMPUTER) { if(myW->myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !myW->getSession()->getClientPlayerInfo((*it_c)->getMyUniqueID()).isGuest && (*it_c)->getMyType() != PLAYER_TYPE_COMPUTER) {
if((*it_c)->getMyStayOnTableStatus() == TRUE && (*it_c)->getMyName()!="" && seatPlace!=0) { if((*it_c)->getMyStayOnTableStatus() == true && (*it_c)->getMyName()!="" && seatPlace!=0) {
int playerStars=getPlayerRating(QString::fromUtf8((*it_c)->getMyName().c_str())); int playerStars=getPlayerRating(QString::fromUtf8((*it_c)->getMyName().c_str()));
for(int i=1; i<=5; i++) { for(int i=1; i<=5; i++) {
myW->playerStarsArray[i][seatPlace]->setText("<a style='color: #"+myW->getMyGameTableStyle()->getRatingStarsColor()+"; "+fontFamily+" font-size: "+fontSize+"px; text-decoration: none;' href='"+QString::fromUtf8((*it_c)->getMyName().c_str())+"\""+QString::number(i)+"'>&#9734;</a>"); myW->playerStarsArray[i][seatPlace]->setText("<a style='color: #"+myW->getMyGameTableStyle()->getRatingStarsColor()+"; "+fontFamily+" font-size: "+fontSize+"px; text-decoration: none;' href='"+QString::fromUtf8((*it_c)->getMyName().c_str())+"\""+QString::number(i)+"'>&#9734;</a>");
@@ -234,7 +243,7 @@ void MyAvatarLabel::refreshTooltips()
int seatPlace; int seatPlace;
PlayerList seatsList = currentGame->getSeatsList(); PlayerList seatsList = currentGame->getSeatsList();
for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) {
if((*it_c)->getMyStayOnTableStatus() == TRUE || (*it_c)->getMyActiveStatus()) { if((*it_c)->getMyStayOnTableStatus() == true || (*it_c)->getMyActiveStatus()) {
bool computerPlayer = false; bool computerPlayer = false;
if((*it_c)->getMyType() == PLAYER_TYPE_COMPUTER) { if((*it_c)->getMyType() == PLAYER_TYPE_COMPUTER) {
computerPlayer = true; computerPlayer = true;
@@ -394,7 +403,59 @@ void MyAvatarLabel::paintEvent(QPaintEvent*)
else else
painter.setOpacity(1.0); painter.setOpacity(1.0);
//hide avatar if player is on ignore list
boost::shared_ptr<Session> mySession = myW->myStartWindow->getSession();
if(!playerIsOnIgnoreList(QString::fromUtf8(mySession->getClientPlayerInfo(myUniqueId).playerName.c_str()))) {
painter.drawPixmap(0,0,myPixmap); painter.drawPixmap(0,0,myPixmap);
} else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) {
painter.drawPixmap(0,0,myPixmap);
}
if(myW->getMyConfig()->readConfigInt("ShowPingStateInAvatar")) {
//paint ping state color for network clients
if(mySession->isNetworkClientRunning() && myId == 0) {
QColor pingColor;
if(myAvgPing > 0 && myAvgPing <= 1000) {
pingColor.setNamedColor("green");
}
else if(myAvgPing > 1000 && myAvgPing <= 2000 ) {
pingColor.setNamedColor("yellow");
}
else if(myAvgPing > 2000) {
pingColor.setNamedColor("red");
}
else {
pingColor.setNamedColor("white");
}
QColor pen = pingColor.darker(200);
// pen.setAlpha(130);
painter.setPen(pen);
QColor brush = pingColor;
// brush.setAlpha(130);
painter.setBrush(brush);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(1, 39, 10, 10);
}
}
}
void MyAvatarLabel::refreshPing(unsigned minPing, unsigned avgPing, unsigned maxPing)
{
myMinPing = minPing;
myAvgPing = avgPing;
myMaxPing = maxPing;
this->update();
if(myW->getMyConfig()->readConfigInt("ShowPingStateInAvatar")) {
QString toolTip = "<b>"+tr("Server response times")+"</b>";
toolTip.append("<br>"+tr("Average: ")+QString("%1").arg(myAvgPing)+tr("ms"));
toolTip.append("<br>"+tr("Minimum: ")+QString("%1").arg(myMinPing)+tr("ms"));
toolTip.append("<br>"+tr("Maximum: ")+QString("%1").arg(myMaxPing)+tr("ms"));
this->setToolTip(toolTip);
}
else {
this->setToolTip("");
}
} }
bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName) bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName)
@@ -414,7 +475,6 @@ bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName)
void MyAvatarLabel::putPlayerOnIgnoreList() void MyAvatarLabel::putPlayerOnIgnoreList()
{ {
QStringList list; QStringList list;
PlayerListConstIterator it_c; PlayerListConstIterator it_c;
PlayerList seatList = myW->getSession()->getCurrentGame()->getSeatsList(); PlayerList seatList = myW->getSession()->getCurrentGame()->getSeatsList();
@@ -423,15 +483,34 @@ void MyAvatarLabel::putPlayerOnIgnoreList()
} }
if(!playerIsOnIgnoreList(list.at(myId))) { if(!playerIsOnIgnoreList(list.at(myId))) {
myMessageDialogImpl dialog(myW->getMyConfig(), this); myMessageDialogImpl dialog(myW->getMyConfig(), this);
if(dialog.exec(INGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { if(dialog.exec(IGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) {
std::list<std::string> playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList"); std::list<std::string> playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList");
playerIgnoreList.push_back(list.at(myId).toUtf8().constData()); playerIgnoreList.push_back(list.at(myId).toUtf8().constData());
myW->getMyConfig()->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); myW->getMyConfig()->writeConfigStringList("PlayerIgnoreList", playerIgnoreList);
myW->getMyConfig()->writeBuffer(); myW->getMyConfig()->writeBuffer();
myW->getMyChat()->refreshIgnoreList();
}
}
}
void MyAvatarLabel::removePlayerFromIgnoreList()
{
QStringList list;
PlayerListConstIterator it_c;
PlayerList seatList = myW->getSession()->getCurrentGame()->getSeatsList();
for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) {
list << QString::fromUtf8((*it_c)->getMyName().c_str());
}
if(playerIsOnIgnoreList(list.at(myId))) {
myMessageDialogImpl dialog(myW->getMyConfig(), this);
if(dialog.exec(UNIGNORE_PLAYER_QUESTION, tr("You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/dialog_ok_apply.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) {
std::list<std::string> playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList");
playerIgnoreList.remove(list.at(myId).toUtf8().constData());
myW->getMyConfig()->writeConfigStringList("PlayerIgnoreList", playerIgnoreList);
myW->getMyConfig()->writeBuffer();
myW->getMyChat()->refreshIgnoreList(); myW->getMyChat()->refreshIgnoreList();
} }
} }
+19 -3
View File
@@ -35,6 +35,9 @@
#include "startwindowimpl.h" #include "startwindowimpl.h"
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
class startWindowImpl; class startWindowImpl;
@@ -52,6 +55,9 @@ public:
void setMyId ( int theValue ) { void setMyId ( int theValue ) {
myId = theValue; myId = theValue;
} }
void setMyUniqueId ( int theValue ) {
myUniqueId = theValue;
}
void contextMenuEvent ( QContextMenuEvent * event ); void contextMenuEvent ( QContextMenuEvent * event );
QString getPlayerTip(QString); QString getPlayerTip(QString);
int getPlayerRating(QString); int getPlayerRating(QString);
@@ -65,13 +71,14 @@ public slots:
void setVoteRunning ( bool theValue ) { void setVoteRunning ( bool theValue ) {
voteRunning = theValue; voteRunning = theValue;
} }
void setPixmap ( const QPixmap &, const bool = FALSE); void setPixmap ( const QPixmap &, const bool = false);
void setPixmapAndCountry ( const QPixmap &, QString country, int seatPlace, const bool = FALSE); void setPixmapAndCountry ( const QPixmap &, QString country, int seatPlace, const bool = false);
void setPixmapPath ( const QString theValue) { void setPixmapPath ( const QString theValue) {
myPath = theValue; myPath = theValue;
} }
void paintEvent(QPaintEvent*); void paintEvent(QPaintEvent*);
void putPlayerOnIgnoreList(); void putPlayerOnIgnoreList();
void removePlayerFromIgnoreList();
bool playerIsOnIgnoreList(QString playerName); bool playerIsOnIgnoreList(QString playerName);
void reportBadAvatar(); void reportBadAvatar();
void startEditTip(); void startEditTip();
@@ -80,22 +87,31 @@ public slots:
void setPlayerRating(QString); void setPlayerRating(QString);
void refreshTooltips(); void refreshTooltips();
void refreshStars(); void refreshStars();
void refreshPing(unsigned, unsigned, unsigned);
private: private:
gameTableImpl *myW; gameTableImpl *myW;
QMenu *myContextMenu; QMenu *myContextMenu;
QAction *action_VoteForKick; QAction *action_VoteForKick;
QAction *action_IgnorePlayer; QAction *action_IgnorePlayer;
QAction *action_UnignorePlayer;
QAction *action_ReportBadAvatar; QAction *action_ReportBadAvatar;
QAction *action_EditTip; QAction *action_EditTip;
QPixmap myPixmap; QPixmap myPixmap;
QString myPath; QString myPath;
int myId;
bool myContextMenuEnabled; bool myContextMenuEnabled;
bool voteRunning; bool voteRunning;
bool transparent; bool transparent;
int myId;
int myUniqueId;
unsigned myPingState;
unsigned myAvgPing;
unsigned myMinPing;
unsigned myMaxPing;
}; };
#endif #endif
+25 -25
View File
@@ -36,18 +36,18 @@ MyCardsPixmapLabel::MyCardsPixmapLabel(QGroupBox* parent)
: QLabel(parent), myW(NULL) : QLabel(parent), myW(NULL)
{ {
this->setMouseTracking(TRUE); this->setMouseTracking(true);
fadeOutAction = FALSE; fadeOutAction = false;
flipCardsAction1 = FALSE; flipCardsAction1 = false;
flipCardsAction2 = FALSE; flipCardsAction2 = false;
mousePress = FALSE; mousePress = false;
fastFlipCardsFront = FALSE; fastFlipCardsFront = false;
// rotationIntervall = 0.03; // rotationIntervall = 0.03;
isFlipside = FALSE; isFlipside = false;
fadeOutTimer = new QTimer; fadeOutTimer = new QTimer;
connect(fadeOutTimer, SIGNAL(timeout()), this, SLOT(nextFadeOutFrame())); connect(fadeOutTimer, SIGNAL(timeout()), this, SLOT(nextFadeOutFrame()));
@@ -78,7 +78,7 @@ void MyCardsPixmapLabel::startFadeOut(int speed)
} }
if(speed != 11) { if(speed != 11) {
fadeOutAction = TRUE; fadeOutAction = true;
frameOpacity = 1.0; frameOpacity = 1.0;
fadeOutTimer->start(40); fadeOutTimer->start(40);
} }
@@ -89,7 +89,7 @@ void MyCardsPixmapLabel::stopFadeOut()
{ {
fadeOutTimer->stop(); fadeOutTimer->stop();
fadeOutAction = FALSE; fadeOutAction = false;
frameOpacity = 1.0; frameOpacity = 1.0;
update(); update();
} }
@@ -105,7 +105,7 @@ void MyCardsPixmapLabel::nextFadeOutFrame()
} else { } else {
fadeOutTimer->stop(); fadeOutTimer->stop();
// fadeOutAction = FALSE; // fadeOutAction = false;
} }
} }
@@ -115,8 +115,8 @@ void MyCardsPixmapLabel::startFlipCards(int speed, const QPixmap &frontPix, cons
stopFadeOut(); stopFadeOut();
stopFlipCards = FALSE; stopFlipCards = false;
isFlipside = FALSE; isFlipside = false;
QLabel::setPixmap(frontPix); QLabel::setPixmap(frontPix);
@@ -140,7 +140,7 @@ void MyCardsPixmapLabel::startFlipCards(int speed, const QPixmap &frontPix, cons
} }
if(speed != 11) { if(speed != 11) {
flipCardsAction1 = TRUE; flipCardsAction1 = true;
flipCardsTimer->start(40); flipCardsTimer->start(40);
} }
@@ -150,9 +150,9 @@ void MyCardsPixmapLabel::stopFlipCardsAnimation()
{ {
flipCardsTimer->stop(); flipCardsTimer->stop();
flipCardsAction1 = FALSE; flipCardsAction1 = false;
flipCardsAction2 = FALSE; flipCardsAction2 = false;
stopFlipCards = TRUE; stopFlipCards = true;
update(); update();
} }
@@ -165,15 +165,15 @@ void MyCardsPixmapLabel::nextFlipCardsFrame()
update(); update();
} else { } else {
if(flipCardsAction1) { if(flipCardsAction1) {
flipCardsAction1 = FALSE; flipCardsAction1 = false;
flipCardsAction2 = TRUE; flipCardsAction2 = true;
} else { } else {
//dann front vergrößern //dann front vergrößern
if (frameFlipCardsAction2Size < 0.95 ) { if (frameFlipCardsAction2Size < 0.95 ) {
frameFlipCardsAction2Size += flipCardsScaleIntervall; frameFlipCardsAction2Size += flipCardsScaleIntervall;
update(); update();
} else { } else {
flipCardsAction2 = FALSE; flipCardsAction2 = false;
flipCardsTimer->stop(); flipCardsTimer->stop();
} }
@@ -243,10 +243,10 @@ void MyCardsPixmapLabel::fastFlipCards(bool front)
{ {
if (front) { if (front) {
fastFlipCardsFront = TRUE; fastFlipCardsFront = true;
update(); update();
} else { } else {
fastFlipCardsFront = FALSE; fastFlipCardsFront = false;
update(); update();
} }
} }
@@ -255,8 +255,8 @@ void MyCardsPixmapLabel::mousePressEvent(QMouseEvent * event)
{ {
if (!mousePress && objectName().contains("pixmapLabel_card0")) { if (!mousePress && objectName().contains("pixmapLabel_card0")) {
mousePress = TRUE; mousePress = true;
myW->mouseOverFlipCards(TRUE); myW->mouseOverFlipCards(true);
} }
@@ -267,8 +267,8 @@ void MyCardsPixmapLabel::mouseReleaseEvent(QMouseEvent * event)
{ {
if (mousePress && objectName().contains("pixmapLabel_card0")) { if (mousePress && objectName().contains("pixmapLabel_card0")) {
mousePress = FALSE; mousePress = false;
myW->mouseOverFlipCards(FALSE); myW->mouseOverFlipCards(false);
} }
QLabel::mouseReleaseEvent(event); QLabel::mouseReleaseEvent(event);
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
+3
View File
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
+3
View File
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
class GameTableStyleReader; class GameTableStyleReader;
+3 -1
View File
@@ -33,7 +33,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class MyLeftTabWidget : public QTabWidget class MyLeftTabWidget : public QTabWidget
{ {
+4 -1
View File
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
@@ -51,7 +54,7 @@ public:
public slots: public slots:
void setText ( const QString &, bool = FALSE, bool = FALSE, bool = FALSE); void setText ( const QString &, bool = false, bool = false, bool = false);
private: private:
QString myText; QString myText;
+3
View File
@@ -33,6 +33,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class MyRightTabWidget : public QTabWidget class MyRightTabWidget : public QTabWidget
{ {
+3
View File
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
+4
View File
@@ -32,6 +32,10 @@
#define MYSLIDER_H #define MYSLIDER_H
#include <QtGui> #include <QtGui>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
/* /*
* This QSlider Extension was sponsored by: AZEVEDO Filipe aka Nox P@sNox <pasnox@gmail.com> * This QSlider Extension was sponsored by: AZEVEDO Filipe aka Nox P@sNox <pasnox@gmail.com>
* http://pasnox.tuxfamily.org * http://pasnox.tuxfamily.org
+5 -5
View File
@@ -37,7 +37,7 @@ MyStatusLabel::MyStatusLabel(QGroupBox* parent)
: QLabel(parent), myW(NULL), mousePress(false) : QLabel(parent), myW(NULL), mousePress(false)
{ {
mousePress = FALSE; mousePress = false;
} }
@@ -49,8 +49,8 @@ void MyStatusLabel::mousePressEvent(QMouseEvent * event)
{ {
if (!mousePress && objectName().contains("textLabel_Status0")) { if (!mousePress && objectName().contains("textLabel_Status0")) {
mousePress = TRUE; mousePress = true;
myW->mouseOverFlipCards(TRUE); myW->mouseOverFlipCards(true);
} }
@@ -61,8 +61,8 @@ void MyStatusLabel::mouseReleaseEvent(QMouseEvent * event)
{ {
if (mousePress && objectName().contains("textLabel_Status0")) { if (mousePress && objectName().contains("textLabel_Status0")) {
mousePress = FALSE; mousePress = false;
myW->mouseOverFlipCards(FALSE); myW->mouseOverFlipCards(false);
} }
QLabel::mouseReleaseEvent(event); QLabel::mouseReleaseEvent(event);
+3
View File
@@ -35,6 +35,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
+6 -6
View File
@@ -35,7 +35,7 @@
using namespace std; using namespace std;
MyTimeoutLabel::MyTimeoutLabel(QGroupBox* parent) MyTimeoutLabel::MyTimeoutLabel(QGroupBox* parent)
: QLabel(parent), timeOutAnimation(FALSE), timeOutValue(0), timeOutFrame(0), waitFrames(0), timerIntervall(0), isBeep(0), isBeepPlayed(0) : QLabel(parent), timeOutAnimation(false), timeOutValue(0), timeOutFrame(0), waitFrames(0), timerIntervall(0), isBeep(0), isBeepPlayed(0)
{ {
timeOutAnimationTimer = new QTimer; timeOutAnimationTimer = new QTimer;
@@ -52,7 +52,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep)
{ {
if (secs >= 4) { // smaller timeouts may lead to errors/endless loops below if (secs >= 4) { // smaller timeouts may lead to errors/endless loops below
isBeepPlayed = FALSE; isBeepPlayed = false;
isBeep = beep; isBeep = beep;
timeOutValue = secs; timeOutValue = secs;
@@ -80,7 +80,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep)
realTimer.start(); realTimer.start();
// std::cout << timerIntervall << endl; // std::cout << timerIntervall << endl;
timeOutAnimation = TRUE; timeOutAnimation = true;
timeOutAnimationTimer->start(timerIntervall); timeOutAnimationTimer->start(timerIntervall);
} }
} }
@@ -88,7 +88,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep)
void MyTimeoutLabel::startTimeOutAnimationNow() void MyTimeoutLabel::startTimeOutAnimationNow()
{ {
timeOutAnimation = TRUE; timeOutAnimation = true;
timeOutAnimationTimer->start(83); timeOutAnimationTimer->start(83);
} }
@@ -98,7 +98,7 @@ void MyTimeoutLabel::stopTimeOutAnimation()
// timeOutAnimationKickOnTimer->stop(); // timeOutAnimationKickOnTimer->stop();
timeOutAnimationTimer->stop(); timeOutAnimationTimer->stop();
timeOutAnimation = FALSE; timeOutAnimation = false;
update(); update();
} }
@@ -110,7 +110,7 @@ void MyTimeoutLabel::nextTimeOutAnimationFrame()
//play beep after waitFrames one time //play beep after waitFrames one time
if(isBeep && !isBeepPlayed) { if(isBeep && !isBeepPlayed) {
myW->getMySoundEventHandler()->playSound("yourturn",0); myW->getMySoundEventHandler()->playSound("yourturn",0);
isBeepPlayed = TRUE; isBeepPlayed = true;
} }
//save gfx ressources and never play more the 10 pps //save gfx ressources and never play more the 10 pps
unsigned int realTimerValue = realTimer.elapsed().total_milliseconds(); unsigned int realTimerValue = realTimer.elapsed().total_milliseconds();
+5
View File
@@ -35,7 +35,12 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#ifndef Q_MOC_RUN
#include <third_party/boost/timers.hpp> #include <third_party/boost/timers.hpp>
#endif
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class gameTableImpl; class gameTableImpl;
@@ -33,6 +33,9 @@
#include <QtGui> #include <QtGui>
#include <QtCore> #include <QtCore>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
class StartSplash : public QSplashScreen class StartSplash : public QSplashScreen
+60 -5
View File
@@ -24,7 +24,16 @@
</size> </size>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -139,7 +148,16 @@
<string>Project</string> <string>Project</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -169,7 +187,16 @@ p, li { white-space: pre-wrap; }
<string>Translation</string> <string>Translation</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -199,7 +226,16 @@ p, li { white-space: pre-wrap; }
<string>Thanks to</string> <string>Thanks to</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -226,7 +262,16 @@ p, li { white-space: pre-wrap; }
<string>License</string> <string>License</string>
</attribute> </attribute>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@@ -244,6 +289,16 @@ p, li { white-space: pre-wrap; }
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>Third party libs</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTextBrowser" name="textBrowser_thirdPartyLicenceText"/>
</item>
</layout>
</widget>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
@@ -85,45 +85,45 @@
<number>0</number> <number>0</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>7</number> <number>4</number>
</property> </property>
<item row="0" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_8"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QLabel" name="label_23"> <widget class="QLabel" name="label">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text"> <property name="text">
<string>Default game name:</string> <string>Maximum number of players:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEdit_gameName"> <widget class="QSpinBox" name="spinBox_quantityPlayers">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>400</width> <width>150</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="minimum">
<size> <number>2</number>
<width>16777215</width>
<height>16777215</height>
</size>
</property> </property>
<property name="inputMethodHints"> <property name="maximum">
<set>Qt::ImhNoPredictiveText</set> <number>10</number>
</property> </property>
<property name="maxLength"> <property name="value">
<number>48</number> <number>10</number>
</property> </property>
</widget> </widget>
</item> </item>
@@ -198,7 +198,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="5" column="1"> <item row="7" column="1">
<widget class="QGroupBox" name="groupBox_blinds"> <widget class="QGroupBox" name="groupBox_blinds">
<property name="title"> <property name="title">
<string>Blinds</string> <string>Blinds</string>
@@ -233,7 +233,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="7" column="0">
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>10</number> <number>10</number>
@@ -298,7 +298,103 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="checkBox_Password">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Password:</string>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_Password">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label_23">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Default game name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_gameName">
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNoPredictiveText</set>
</property>
<property name="maxLength">
<number>48</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
@@ -349,93 +445,13 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="checkBox_Password">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Password:</string>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_Password">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <widget class="QCheckBox" name="checkBox_allowSpectators">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>Maximum number of players:</string> <string>Allow spectators to watch the game</string>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QSpinBox" name="spinBox_quantityPlayers">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>2</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>10</number>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -472,7 +488,16 @@
<property name="spacing"> <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>

Some files were not shown because too many files have changed in this diff Show More