Merge pull request #2103 from Cockatrice/space

More screen space
This commit is contained in:
mlowe 2016-07-22 15:07:54 +02:00 committed by GitHub
commit f87f677cad

View file

@ -71,14 +71,14 @@
#include "get_pb_extension.h" #include "get_pb_extension.h"
ToggleButton::ToggleButton(QWidget *parent) ToggleButton::ToggleButton(QWidget *parent)
: QPushButton(parent), state(false) : QPushButton(parent), state(false)
{ {
} }
void ToggleButton::paintEvent(QPaintEvent *event) void ToggleButton::paintEvent(QPaintEvent *event)
{ {
QPushButton::paintEvent(event); QPushButton::paintEvent(event);
QPainter painter(this); QPainter painter(this);
QPen pen; QPen pen;
pen.setWidth(3); pen.setWidth(3);
@ -96,7 +96,7 @@ void ToggleButton::setState(bool _state)
} }
DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
: QWidget(0), parentGame(parent), playerId(_playerId) : QWidget(0), parentGame(parent), playerId(_playerId)
{ {
loadLocalButton = new QPushButton; loadLocalButton = new QPushButton;
loadRemoteButton = new QPushButton; loadRemoteButton = new QPushButton;
@ -104,28 +104,30 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
readyStartButton->setEnabled(false); readyStartButton->setEnabled(false);
sideboardLockButton = new ToggleButton; sideboardLockButton = new ToggleButton;
sideboardLockButton->setEnabled(false); sideboardLockButton->setEnabled(false);
connect(loadLocalButton, SIGNAL(clicked()), this, SLOT(loadLocalDeck())); connect(loadLocalButton, SIGNAL(clicked()), this, SLOT(loadLocalDeck()));
connect(loadRemoteButton, SIGNAL(clicked()), this, SLOT(loadRemoteDeck())); connect(loadRemoteButton, SIGNAL(clicked()), this, SLOT(loadRemoteDeck()));
connect(readyStartButton, SIGNAL(clicked()), this, SLOT(readyStart())); connect(readyStartButton, SIGNAL(clicked()), this, SLOT(readyStart()));
connect(sideboardLockButton, SIGNAL(clicked()), this, SLOT(sideboardLockButtonClicked())); connect(sideboardLockButton, SIGNAL(clicked()), this, SLOT(sideboardLockButtonClicked()));
connect(sideboardLockButton, SIGNAL(stateChanged()), this, SLOT(updateSideboardLockButtonText())); connect(sideboardLockButton, SIGNAL(stateChanged()), this, SLOT(updateSideboardLockButtonText()));
QHBoxLayout *buttonHBox = new QHBoxLayout; QHBoxLayout *buttonHBox = new QHBoxLayout;
buttonHBox->addWidget(loadLocalButton); buttonHBox->addWidget(loadLocalButton);
buttonHBox->addWidget(loadRemoteButton); buttonHBox->addWidget(loadRemoteButton);
buttonHBox->addWidget(readyStartButton); buttonHBox->addWidget(readyStartButton);
buttonHBox->addWidget(sideboardLockButton); buttonHBox->addWidget(sideboardLockButton);
buttonHBox->setContentsMargins(0, 0, 0, 0);
buttonHBox->addStretch(); buttonHBox->addStretch();
deckView = new DeckView; deckView = new DeckView;
connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SIGNAL(newCardAdded(AbstractCardItem *))); connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SIGNAL(newCardAdded(AbstractCardItem *)));
connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged())); connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged()));
QVBoxLayout *deckViewLayout = new QVBoxLayout; QVBoxLayout *deckViewLayout = new QVBoxLayout;
deckViewLayout->addLayout(buttonHBox); deckViewLayout->addLayout(buttonHBox);
deckViewLayout->addWidget(deckView); deckViewLayout->addWidget(deckView);
deckViewLayout->setContentsMargins(0, 0, 0, 0);
setLayout(deckViewLayout); setLayout(deckViewLayout);
retranslateUi(); retranslateUi();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts(); refreshShortcuts();
@ -133,8 +135,8 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
void DeckViewContainer::retranslateUi() void DeckViewContainer::retranslateUi()
{ {
loadLocalButton->setText(tr("Load local deck")); loadLocalButton->setText(tr("Load deck..."));
loadRemoteButton->setText(tr("Load deck from server")); loadRemoteButton->setText(tr("Load remote deck..."));
readyStartButton->setText(tr("Ready to s&tart")); readyStartButton->setText(tr("Ready to s&tart"));
updateSideboardLockButtonText(); updateSideboardLockButtonText();
} }
@ -225,7 +227,7 @@ void DeckViewContainer::loadLocalDeck()
QMessageBox::critical(this, tr("Error"), tr("The selected file could not be loaded.")); QMessageBox::critical(this, tr("Error"), tr("The selected file could not be loaded."));
return; return;
} }
Command_DeckSelect cmd; Command_DeckSelect cmd;
cmd.set_deck(deck.writeToString_Native().toStdString()); cmd.set_deck(deck.writeToString_Native().toStdString());
PendingCommand *pend = parentGame->prepareGameCommand(cmd); PendingCommand *pend = parentGame->prepareGameCommand(cmd);
@ -264,7 +266,7 @@ void DeckViewContainer::sideboardLockButtonClicked()
{ {
Command_SetSideboardLock cmd; Command_SetSideboardLock cmd;
cmd.set_locked(sideboardLockButton->getState()); cmd.set_locked(sideboardLockButton->getState());
parentGame->sendGameCommand(cmd, playerId); parentGame->sendGameCommand(cmd, playerId);
} }
@ -301,20 +303,20 @@ void DeckViewContainer::setDeck(const DeckLoader &deck)
} }
TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
: Tab(_tabSupervisor), : Tab(_tabSupervisor),
secondsElapsed(0), secondsElapsed(0),
hostId(-1), hostId(-1),
localPlayerId(-1), localPlayerId(-1),
spectator(true), spectator(true),
gameStateKnown(false), gameStateKnown(false),
resuming(false), resuming(false),
currentPhase(-1), currentPhase(-1),
activeCard(0), activeCard(0),
gameClosed(false), gameClosed(false),
replay(_replay), replay(_replay),
currentReplayStep(0), currentReplayStep(0),
sayLabel(0), sayLabel(0),
sayEdit(0) sayEdit(0)
{ {
// THIS CTOR IS USED ON REPLAY // THIS CTOR IS USED ON REPLAY
gameInfo.CopyFrom(replay->game_info()); gameInfo.CopyFrom(replay->game_info());
@ -367,20 +369,20 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
} }
TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, const Event_GameJoined &event, const QMap<int, QString> &_roomGameTypes) TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, const Event_GameJoined &event, const QMap<int, QString> &_roomGameTypes)
: Tab(_tabSupervisor), : Tab(_tabSupervisor),
clients(_clients), clients(_clients),
gameInfo(event.game_info()), gameInfo(event.game_info()),
roomGameTypes(_roomGameTypes), roomGameTypes(_roomGameTypes),
hostId(event.host_id()), hostId(event.host_id()),
localPlayerId(event.player_id()), localPlayerId(event.player_id()),
spectator(event.spectator()), spectator(event.spectator()),
gameStateKnown(false), gameStateKnown(false),
resuming(event.resuming()), resuming(event.resuming()),
currentPhase(-1), currentPhase(-1),
activeCard(0), activeCard(0),
gameClosed(false), gameClosed(false),
replay(0), replay(0),
replayDock(0) replayDock(0)
{ {
// THIS CTOR IS USED ON GAMES // THIS CTOR IS USED ON GAMES
gameInfo.set_started(false); gameInfo.set_started(false);
@ -398,6 +400,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
mainWidget = new QStackedWidget(this); mainWidget = new QStackedWidget(this);
mainWidget->addWidget(deckViewContainerWidget); mainWidget->addWidget(deckViewContainerWidget);
mainWidget->addWidget(gamePlayAreaWidget); mainWidget->addWidget(gamePlayAreaWidget);
mainWidget->setContentsMargins(0,0,0,0);
setCentralWidget(mainWidget); setCentralWidget(mainWidget);
createMenuItems(); createMenuItems();
@ -434,7 +437,7 @@ TabGame::~TabGame()
while (i.hasNext()) while (i.hasNext())
delete i.next().value(); delete i.next().value();
players.clear(); players.clear();
emit gameClosing(this); emit gameClosing(this);
} }
@ -453,7 +456,7 @@ void TabGame::retranslateUi()
phaseActions[i]->setText(phasesToolbar->getLongPhaseName(i)); phaseActions[i]->setText(phasesToolbar->getLongPhaseName(i));
phasesMenu->setTitle(tr("&Phases")); phasesMenu->setTitle(tr("&Phases"));
} }
gameMenu->setTitle(tr("&Game")); gameMenu->setTitle(tr("&Game"));
if (aNextPhase) { if (aNextPhase) {
aNextPhase->setText(tr("Next &phase")); aNextPhase->setText(tr("Next &phase"));
@ -500,7 +503,7 @@ void TabGame::retranslateUi()
aPlayerListDockFloating->setText(tr("Floating")); aPlayerListDockFloating->setText(tr("Floating"));
if(replayDock) if(replayDock)
{ {
replayDockMenu->setTitle(tr("Replay Timeline")); replayDockMenu->setTitle(tr("Replay Timeline"));
aReplayDockVisible->setText(tr("Visible")); aReplayDockVisible->setText(tr("Visible"));
aReplayDockFloating->setText(tr("Floating")); aReplayDockFloating->setText(tr("Floating"));
@ -516,7 +519,7 @@ void TabGame::retranslateUi()
QMapIterator<int, DeckViewContainer *> j(deckViewContainers); QMapIterator<int, DeckViewContainer *> j(deckViewContainers);
while (j.hasNext()) while (j.hasNext())
j.next().value()->retranslateUi(); j.next().value()->retranslateUi();
scene->retranslateUi(); scene->retranslateUi();
} }
@ -543,7 +546,7 @@ void TabGame::replayStartButtonClicked()
replayStartButton->setEnabled(false); replayStartButton->setEnabled(false);
replayPauseButton->setEnabled(true); replayPauseButton->setEnabled(true);
replayFastForwardButton->setEnabled(true); replayFastForwardButton->setEnabled(true);
timelineWidget->startReplay(); timelineWidget->startReplay();
} }
@ -552,7 +555,7 @@ void TabGame::replayPauseButtonClicked()
replayStartButton->setEnabled(true); replayStartButton->setEnabled(true);
replayPauseButton->setEnabled(false); replayPauseButton->setEnabled(false);
replayFastForwardButton->setEnabled(false); replayFastForwardButton->setEnabled(false);
timelineWidget->stopReplay(); timelineWidget->stopReplay();
} }
@ -568,7 +571,7 @@ void TabGame::incrementGameTime()
seconds -= minutes * 60; seconds -= minutes * 60;
int hours = minutes / 60; int hours = minutes / 60;
minutes -= hours * 60; minutes -= hours * 60;
timeElapsedLabel->setText(QString::number(hours).rightJustified(2, '0') + ":" + QString::number(minutes).rightJustified(2, '0') + ":" + QString::number(seconds).rightJustified(2, '0')); timeElapsedLabel->setText(QString::number(hours).rightJustified(2, '0') + ":" + QString::number(minutes).rightJustified(2, '0') + ":" + QString::number(seconds).rightJustified(2, '0'));
} }
@ -597,9 +600,9 @@ void TabGame::actLeaveGame()
{ {
if (!gameClosed) { if (!gameClosed) {
if (!spectator) if (!spectator)
if (QMessageBox::question(this, tr("Leave game"), tr("Are you sure you want to leave this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes) if (QMessageBox::question(this, tr("Leave game"), tr("Are you sure you want to leave this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes)
return; return;
if (!replay) if (!replay)
sendGameCommand(Command_LeaveGame()); sendGameCommand(Command_LeaveGame());
} }
@ -689,11 +692,11 @@ Player *TabGame::addPlayer(int playerId, const ServerInfo_User &info)
connect(newPlayer, SIGNAL(newCardAdded(AbstractCardItem *)), this, SLOT(newCardAdded(AbstractCardItem *))); connect(newPlayer, SIGNAL(newCardAdded(AbstractCardItem *)), this, SLOT(newCardAdded(AbstractCardItem *)));
messageLog->connectToPlayer(newPlayer); messageLog->connectToPlayer(newPlayer);
if (local && !spectator) { if (local && !spectator) {
if (clients.size() == 1) if (clients.size() == 1)
newPlayer->setShortcutsActive(); newPlayer->setShortcutsActive();
DeckViewContainer *deckView = new DeckViewContainer(playerId, this); DeckViewContainer *deckView = new DeckViewContainer(playerId, this);
connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SLOT(newCardAdded(AbstractCardItem *))); connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SLOT(newCardAdded(AbstractCardItem *)));
deckViewContainers.insert(playerId, deckView); deckViewContainers.insert(playerId, deckView);
@ -701,7 +704,7 @@ Player *TabGame::addPlayer(int playerId, const ServerInfo_User &info)
} }
gameMenu->insertMenu(playersSeparator, newPlayer->getPlayerMenu()); gameMenu->insertMenu(playersSeparator, newPlayer->getPlayerMenu());
players.insert(playerId, newPlayer); players.insert(playerId, newPlayer);
emit playerAdded(newPlayer); emit playerAdded(newPlayer);
return newPlayer; return newPlayer;
@ -727,9 +730,9 @@ void TabGame::processGameEventContainer(const GameEventContainer &cont, Abstract
} }
} else { } else {
if ((clients.size() > 1) && (playerId != -1)) if ((clients.size() > 1) && (playerId != -1))
if (clients.at(playerId) != client) if (clients.at(playerId) != client)
continue; continue;
switch (eventType) { switch (eventType) {
case GameEvent::GAME_STATE_CHANGED: eventGameStateChanged(event.GetExtension(Event_GameStateChanged::ext), playerId, context); break; case GameEvent::GAME_STATE_CHANGED: eventGameStateChanged(event.GetExtension(Event_GameStateChanged::ext), playerId, context); break;
case GameEvent::PLAYER_PROPERTIES_CHANGED: eventPlayerPropertiesChanged(event.GetExtension(Event_PlayerPropertiesChanged::ext), playerId, context); break; case GameEvent::PLAYER_PROPERTIES_CHANGED: eventPlayerPropertiesChanged(event.GetExtension(Event_PlayerPropertiesChanged::ext), playerId, context); break;
@ -740,7 +743,7 @@ void TabGame::processGameEventContainer(const GameEventContainer &cont, Abstract
case GameEvent::GAME_CLOSED: eventGameClosed(event.GetExtension(Event_GameClosed::ext), playerId, context); break; case GameEvent::GAME_CLOSED: eventGameClosed(event.GetExtension(Event_GameClosed::ext), playerId, context); break;
case GameEvent::SET_ACTIVE_PLAYER: eventSetActivePlayer(event.GetExtension(Event_SetActivePlayer::ext), playerId, context); break; case GameEvent::SET_ACTIVE_PLAYER: eventSetActivePlayer(event.GetExtension(Event_SetActivePlayer::ext), playerId, context); break;
case GameEvent::SET_ACTIVE_PHASE: eventSetActivePhase(event.GetExtension(Event_SetActivePhase::ext), playerId, context); break; case GameEvent::SET_ACTIVE_PHASE: eventSetActivePhase(event.GetExtension(Event_SetActivePhase::ext), playerId, context); break;
default: { default: {
Player *player = players.value(playerId, 0); Player *player = players.value(playerId, 0);
if (!player) { if (!player) {
@ -791,9 +794,9 @@ void TabGame::sendGameCommand(const google::protobuf::Message &command, int play
} }
void TabGame::commandFinished(const Response &response) void TabGame::commandFinished(const Response &response)
{ {
if (response.response_code() == Response::RespChatFlood) if (response.response_code() == Response::RespChatFlood)
messageLog->appendMessage(tr("You are flooding the game. Please wait a couple of seconds.")); messageLog->appendMessage(tr("You are flooding the game. Please wait a couple of seconds."));
} }
PendingCommand *TabGame::prepareGameCommand(const ::google::protobuf::Message &cmd) PendingCommand *TabGame::prepareGameCommand(const ::google::protobuf::Message &cmd)
@ -847,7 +850,7 @@ void TabGame::stopGame()
{ {
currentPhase = -1; currentPhase = -1;
activePlayer = -1; activePlayer = -1;
QMapIterator<int, DeckViewContainer *> i(deckViewContainers); QMapIterator<int, DeckViewContainer *> i(deckViewContainers);
while (i.hasNext()) { while (i.hasNext()) {
i.next(); i.next();
@ -865,7 +868,7 @@ void TabGame::closeGame()
{ {
gameInfo.set_started(false); gameInfo.set_started(false);
gameClosed = true; gameClosed = true;
gameMenu->clear(); gameMenu->clear();
gameMenu->addAction(aLeaveGame); gameMenu->addAction(aLeaveGame);
} }
@ -884,7 +887,7 @@ void TabGame::eventSpectatorLeave(const Event_Leave & /*event*/, int eventPlayer
messageLog->logLeaveSpectator(QString::fromStdString(spectators.value(eventPlayerId).name())); messageLog->logLeaveSpectator(QString::fromStdString(spectators.value(eventPlayerId).name()));
playerListWidget->removePlayer(eventPlayerId); playerListWidget->removePlayer(eventPlayerId);
spectators.remove(eventPlayerId); spectators.remove(eventPlayerId);
emitUserEvent(); emitUserEvent();
} }
@ -935,9 +938,9 @@ void TabGame::eventGameStateChanged(const Event_GameStateChanged &event, int /*e
player->processCardAttachment(playerInfo); player->processCardAttachment(playerInfo);
} }
} }
secondsElapsed = event.seconds_elapsed(); secondsElapsed = event.seconds_elapsed();
if (event.game_started() && !gameInfo.started()) { if (event.game_started() && !gameInfo.started()) {
startGame(!gameStateKnown); startGame(!gameStateKnown);
if (gameStateKnown) if (gameStateKnown)
@ -959,7 +962,7 @@ void TabGame::eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &
return; return;
const ServerInfo_PlayerProperties &prop = event.player_properties(); const ServerInfo_PlayerProperties &prop = event.player_properties();
playerListWidget->updatePlayerProperties(prop, eventPlayerId); playerListWidget->updatePlayerProperties(prop, eventPlayerId);
const GameEventContext::ContextType contextType = static_cast<const GameEventContext::ContextType>(getPbExtension(context)); const GameEventContext::ContextType contextType = static_cast<const GameEventContext::ContextType>(getPbExtension(context));
switch (contextType) { switch (contextType) {
case GameEventContext::READY_START: { case GameEventContext::READY_START: {
@ -975,18 +978,18 @@ void TabGame::eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &
case GameEventContext::CONCEDE: { case GameEventContext::CONCEDE: {
messageLog->logConcede(player); messageLog->logConcede(player);
player->setConceded(true); player->setConceded(true);
QMapIterator<int, Player *> playerIterator(players); QMapIterator<int, Player *> playerIterator(players);
while (playerIterator.hasNext()) while (playerIterator.hasNext())
playerIterator.next().value()->updateZones(); playerIterator.next().value()->updateZones();
break; break;
} }
case GameEventContext::DECK_SELECT: { case GameEventContext::DECK_SELECT: {
Context_DeckSelect deckSelect = context.GetExtension(Context_DeckSelect::ext); Context_DeckSelect deckSelect = context.GetExtension(Context_DeckSelect::ext);
messageLog->logDeckSelect(player, messageLog->logDeckSelect(player,
QString::fromStdString(deckSelect.deck_hash()), QString::fromStdString(deckSelect.deck_hash()),
deckSelect.sideboard_size()); deckSelect.sideboard_size());
break; break;
} }
case GameEventContext::SET_SIDEBOARD_LOCK: { case GameEventContext::SET_SIDEBOARD_LOCK: {
@ -1015,7 +1018,7 @@ void TabGame::eventJoin(const Event_Join &event, int /*eventPlayerId*/, const Ga
if (players.contains(playerId)) if (players.contains(playerId))
return; return;
if (playerInfo.spectator()) { if (playerInfo.spectator()) {
spectators.insert(playerId, playerInfo.user_info()); spectators.insert(playerId, playerInfo.user_info());
messageLog->logJoinSpectator(playerName); messageLog->logJoinSpectator(playerName);
@ -1032,7 +1035,7 @@ void TabGame::eventLeave(const Event_Leave & /*event*/, int eventPlayerId, const
Player *player = players.value(eventPlayerId, 0); Player *player = players.value(eventPlayerId, 0);
if (!player) if (!player)
return; return;
QString playerName = "@" + player->getName(); QString playerName = "@" + player->getName();
if(sayEdit && autocompleteUserList.removeOne(playerName)) if(sayEdit && autocompleteUserList.removeOne(playerName))
sayEdit->setCompletionList(autocompleteUserList); sayEdit->setCompletionList(autocompleteUserList);
@ -1043,12 +1046,12 @@ void TabGame::eventLeave(const Event_Leave & /*event*/, int eventPlayerId, const
emit playerRemoved(player); emit playerRemoved(player);
player->clear(); player->clear();
player->deleteLater(); player->deleteLater();
// Rearrange all remaining zones so that attachment relationship updates take place // Rearrange all remaining zones so that attachment relationship updates take place
QMapIterator<int, Player *> playerIterator(players); QMapIterator<int, Player *> playerIterator(players);
while (playerIterator.hasNext()) while (playerIterator.hasNext())
playerIterator.next().value()->updateZones(); playerIterator.next().value()->updateZones();
emitUserEvent(); emitUserEvent();
} }
@ -1143,11 +1146,11 @@ CardItem *TabGame::getCard(int playerId, const QString &zoneName, int cardId) co
Player *player = players.value(playerId, 0); Player *player = players.value(playerId, 0);
if (!player) if (!player)
return 0; return 0;
CardZone *zone = player->getZones().value(zoneName, 0); CardZone *zone = player->getZones().value(zoneName, 0);
if (!zone) if (!zone)
return 0; return 0;
return zone->getCard(cardId, QString()); return zone->getCard(cardId, QString());
} }
@ -1156,7 +1159,7 @@ QString TabGame::getTabText() const
QString gameTypeInfo; QString gameTypeInfo;
if (gameTypes.size() != 0) { if (gameTypes.size() != 0) {
gameTypeInfo = gameTypes.at(0); gameTypeInfo = gameTypes.at(0);
if (gameTypes.size() > 1) if (gameTypes.size() > 1)
gameTypeInfo.append("..."); gameTypeInfo.append("...");
} }
@ -1185,16 +1188,16 @@ Player *TabGame::getActiveLocalPlayer() const
{ {
Player *active = players.value(activePlayer, 0); Player *active = players.value(activePlayer, 0);
if (active) if (active)
if (active->getLocal()) if (active->getLocal())
return active; return active;
QMapIterator<int, Player *> playerIterator(players); QMapIterator<int, Player *> playerIterator(players);
while (playerIterator.hasNext()) { while (playerIterator.hasNext()) {
Player *temp = playerIterator.next().value(); Player *temp = playerIterator.next().value();
if (temp->getLocal()) if (temp->getLocal())
return temp; return temp;
} }
return 0; return 0;
} }
@ -1450,6 +1453,7 @@ void TabGame::createPlayAreaWidget(bool bReplay)
gameView = new GameView(scene); gameView = new GameView(scene);
gamePlayAreaVBox = new QVBoxLayout; gamePlayAreaVBox = new QVBoxLayout;
gamePlayAreaVBox->setContentsMargins(0,0,0,0);
gamePlayAreaVBox->addWidget(gameView); gamePlayAreaVBox->addWidget(gameView);
gamePlayAreaWidget = new QWidget; gamePlayAreaWidget = new QWidget;
@ -1507,6 +1511,7 @@ void TabGame::createDeckViewContainerWidget(bool bReplay)
deckViewContainerWidget = new QWidget(); deckViewContainerWidget = new QWidget();
deckViewContainerWidget->setObjectName("deckViewContainerWidget"); deckViewContainerWidget->setObjectName("deckViewContainerWidget");
deckViewContainerLayout = new QVBoxLayout; deckViewContainerLayout = new QVBoxLayout;
deckViewContainerLayout->setContentsMargins(0,0,0,0);
deckViewContainerWidget->setLayout(deckViewContainerLayout); deckViewContainerWidget->setLayout(deckViewContainerLayout);
} }
@ -1551,7 +1556,7 @@ void TabGame::createPlayerListDock(bool bReplay)
playerListDock->setWidget(playerListWidget); playerListDock->setWidget(playerListWidget);
playerListDock->setFloating(false); playerListDock->setFloating(false);
playerListDock->installEventFilter(this); playerListDock->installEventFilter(this);
connect(playerListDock, SIGNAL(topLevelChanged(bool)), this, SLOT(dockTopLevelChanged(bool))); connect(playerListDock, SIGNAL(topLevelChanged(bool)), this, SLOT(dockTopLevelChanged(bool)));
} }
@ -1573,7 +1578,7 @@ void TabGame::createMessageDock(bool bReplay)
gameTimer = new QTimer(this); gameTimer = new QTimer(this);
gameTimer->setInterval(1000); gameTimer->setInterval(1000);
connect(gameTimer, SIGNAL(timeout()), this, SLOT(incrementGameTime())); connect(gameTimer, SIGNAL(timeout()), this, SLOT(incrementGameTime()));
gameTimer->start(); gameTimer->start();
sayLabel = new QLabel; sayLabel = new QLabel;
sayEdit = new LineEditCompleter; sayEdit = new LineEditCompleter;
@ -1616,7 +1621,7 @@ void TabGame::createMessageDock(bool bReplay)
messageLayoutDock->setWidget(messageLogLayoutWidget); messageLayoutDock->setWidget(messageLogLayoutWidget);
messageLayoutDock->setFloating(false); messageLayoutDock->setFloating(false);
messageLayoutDock->installEventFilter(this); messageLayoutDock->installEventFilter(this);
connect(messageLayoutDock, SIGNAL(topLevelChanged(bool)), this, SLOT(dockTopLevelChanged(bool))); connect(messageLayoutDock, SIGNAL(topLevelChanged(bool)), this, SLOT(dockTopLevelChanged(bool)));
} }
@ -1639,7 +1644,7 @@ bool TabGame::eventFilter(QObject * o, QEvent * e)
aReplayDockVisible->setChecked(false); aReplayDockVisible->setChecked(false);
aReplayDockFloating->setEnabled(false); aReplayDockFloating->setEnabled(false);
} }
} }
if( o == this && e->type() == QEvent::Hide){ if( o == this && e->type() == QEvent::Hide){
if(replay) if(replay)