Commit 0bb4ef8b authored by unknown's avatar unknown
Browse files

added deck hashing

parent 963e8f0d
...@@ -72,6 +72,7 @@ ...@@ -72,6 +72,7 @@
<file>resources/countries/fi.svg</file> <file>resources/countries/fi.svg</file>
<file>resources/countries/fr.svg</file> <file>resources/countries/fr.svg</file>
<file>resources/countries/gr.svg</file> <file>resources/countries/gr.svg</file>
<file>resources/countries/gt.svg</file>
<file>resources/countries/hu.svg</file> <file>resources/countries/hu.svg</file>
<file>resources/countries/ie.svg</file> <file>resources/countries/ie.svg</file>
<file>resources/countries/il.svg</file> <file>resources/countries/il.svg</file>
......
...@@ -17,6 +17,7 @@ DeckListModel::DeckListModel(QObject *parent) ...@@ -17,6 +17,7 @@ DeckListModel::DeckListModel(QObject *parent)
{ {
deckList = new DeckList; deckList = new DeckList;
connect(deckList, SIGNAL(deckLoaded()), this, SLOT(rebuildTree())); connect(deckList, SIGNAL(deckLoaded()), this, SLOT(rebuildTree()));
connect(deckList, SIGNAL(deckHashChanged()), this, SIGNAL(deckHashChanged()));
root = new InnerDecklistNode; root = new InnerDecklistNode;
} }
...@@ -194,6 +195,7 @@ bool DeckListModel::setData(const QModelIndex &index, const QVariant &value, int ...@@ -194,6 +195,7 @@ bool DeckListModel::setData(const QModelIndex &index, const QVariant &value, int
default: return false; default: return false;
} }
emitRecursiveUpdates(index); emitRecursiveUpdates(index);
deckList->updateDeckHash();
return true; return true;
} }
...@@ -310,6 +312,8 @@ void DeckListModel::setDeckList(DeckList *_deck) ...@@ -310,6 +312,8 @@ void DeckListModel::setDeckList(DeckList *_deck)
{ {
delete deckList; delete deckList;
deckList = _deck; deckList = _deck;
connect(deckList, SIGNAL(deckLoaded()), this, SLOT(rebuildTree()));
connect(deckList, SIGNAL(deckHashChanged()), this, SIGNAL(deckHashChanged()));
rebuildTree(); rebuildTree();
} }
......
...@@ -30,6 +30,8 @@ private slots: ...@@ -30,6 +30,8 @@ private slots:
void rebuildTree(); void rebuildTree();
public slots: public slots:
void printDeckList(QPrinter *printer); void printDeckList(QPrinter *printer);
signals:
void deckHashChanged();
public: public:
DeckListModel(QObject *parent = 0); DeckListModel(QObject *parent = 0);
~DeckListModel(); ~DeckListModel();
......
...@@ -58,19 +58,12 @@ void MessageLogWidget::logLeaveSpectator(QString name) ...@@ -58,19 +58,12 @@ void MessageLogWidget::logLeaveSpectator(QString name)
appendHtml(tr("%1 is not watching the game any more.").arg(sanitizeHtml(name))); appendHtml(tr("%1 is not watching the game any more.").arg(sanitizeHtml(name)));
} }
void MessageLogWidget::logDeckSelect(Player *player, int deckId) void MessageLogWidget::logDeckSelect(Player *player, QString deckHash)
{ {
if (deckId == -1) {
if (isFemale(player)) if (isFemale(player))
appendHtml(tr("%1 has loaded a local deck.", "female").arg(sanitizeHtml(player->getName()))); appendHtml(tr("%1 has loaded a deck (%2).", "female").arg(sanitizeHtml(player->getName())).arg(deckHash));
else else
appendHtml(tr("%1 has loaded a local deck.", "male").arg(sanitizeHtml(player->getName()))); appendHtml(tr("%1 has loaded a deck (%2).", "male").arg(sanitizeHtml(player->getName())).arg(deckHash));
} else {
if (isFemale(player))
appendHtml(tr("%1 has loaded deck #%2.", "female").arg(sanitizeHtml(player->getName())).arg(deckId));
else
appendHtml(tr("%1 has loaded deck #%2.", "male").arg(sanitizeHtml(player->getName())).arg(deckId));
}
} }
void MessageLogWidget::logReadyStart(Player *player) void MessageLogWidget::logReadyStart(Player *player)
......
...@@ -46,7 +46,7 @@ public slots: ...@@ -46,7 +46,7 @@ public slots:
void logGameClosed(); void logGameClosed();
void logJoinSpectator(QString name); void logJoinSpectator(QString name);
void logLeaveSpectator(QString name); void logLeaveSpectator(QString name);
void logDeckSelect(Player *player, int deckId); void logDeckSelect(Player *player, QString deckHash);
void logReadyStart(Player *player); void logReadyStart(Player *player);
void logNotReadyStart(Player *player); void logNotReadyStart(Player *player);
void logConcede(Player *player); void logConcede(Player *player);
......
...@@ -98,15 +98,7 @@ void PlayerListWidget::updatePlayerProperties(ServerInfo_PlayerProperties *prop) ...@@ -98,15 +98,7 @@ void PlayerListWidget::updatePlayerProperties(ServerInfo_PlayerProperties *prop)
player->setIcon(4, QIcon(CountryPixmapGenerator::generatePixmap(12, prop->getUserInfo()->getCountry()))); player->setIcon(4, QIcon(CountryPixmapGenerator::generatePixmap(12, prop->getUserInfo()->getCountry())));
player->setData(4, Qt::UserRole, prop->getUserInfo()->getName()); player->setData(4, Qt::UserRole, prop->getUserInfo()->getName());
player->setData(4, Qt::UserRole + 1, prop->getPlayerId()); player->setData(4, Qt::UserRole + 1, prop->getPlayerId());
player->setText(5, prop->getDeckHash());
QString deckText;
if (!prop->getSpectator())
switch (prop->getDeckId()) {
case -2: deckText = QString(); break;
case -1: deckText = tr("local deck"); break;
default: deckText = tr("deck #%1").arg(prop->getDeckId());
}
player->setText(5, deckText);
} }
void PlayerListWidget::removePlayer(int playerId) void PlayerListWidget::removePlayer(int playerId)
......
...@@ -620,7 +620,7 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event, ...@@ -620,7 +620,7 @@ void TabGame::eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event,
break; break;
} }
case ItemId_Context_DeckSelect: messageLog->logDeckSelect(player, static_cast<Context_DeckSelect *>(context)->getDeckId()); break; case ItemId_Context_DeckSelect: messageLog->logDeckSelect(player, static_cast<Context_DeckSelect *>(context)->getDeckHash()); break;
default: ; default: ;
} }
} }
......
...@@ -99,6 +99,7 @@ WndDeckEditor::WndDeckEditor(QWidget *parent) ...@@ -99,6 +99,7 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
middleFrame->addLayout(verticalToolBarLayout); middleFrame->addLayout(verticalToolBarLayout);
deckModel = new DeckListModel(this); deckModel = new DeckListModel(this);
connect(deckModel, SIGNAL(deckHashChanged()), this, SLOT(updateHash()));
deckView = new QTreeView(); deckView = new QTreeView();
deckView->setModel(deckModel); deckView->setModel(deckModel);
deckView->setUniformRowHeights(true); deckView->setUniformRowHeights(true);
...@@ -114,6 +115,8 @@ WndDeckEditor::WndDeckEditor(QWidget *parent) ...@@ -114,6 +115,8 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
commentsEdit->setMaximumHeight(70); commentsEdit->setMaximumHeight(70);
commentsLabel->setBuddy(commentsEdit); commentsLabel->setBuddy(commentsEdit);
connect(commentsEdit, SIGNAL(textChanged()), this, SLOT(updateComments())); connect(commentsEdit, SIGNAL(textChanged()), this, SLOT(updateComments()));
QLabel *hashLabel1 = new QLabel(tr("Hash:"));
hashLabel = new QLabel;
QGridLayout *grid = new QGridLayout; QGridLayout *grid = new QGridLayout;
grid->addWidget(nameLabel, 0, 0); grid->addWidget(nameLabel, 0, 0);
...@@ -122,6 +125,9 @@ WndDeckEditor::WndDeckEditor(QWidget *parent) ...@@ -122,6 +125,9 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
grid->addWidget(commentsLabel, 1, 0); grid->addWidget(commentsLabel, 1, 0);
grid->addWidget(commentsEdit, 1, 1); grid->addWidget(commentsEdit, 1, 1);
grid->addWidget(hashLabel1, 2, 0);
grid->addWidget(hashLabel, 2, 1);
// Update price // Update price
aUpdatePrices = new QAction(tr("&Update prices"), this); aUpdatePrices = new QAction(tr("&Update prices"), this);
aUpdatePrices->setShortcut(tr("Ctrl+U")); aUpdatePrices->setShortcut(tr("Ctrl+U"));
...@@ -140,10 +146,9 @@ WndDeckEditor::WndDeckEditor(QWidget *parent) ...@@ -140,10 +146,9 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
deckToolbarLayout->addWidget(deckToolBar); deckToolbarLayout->addWidget(deckToolBar);
deckToolbarLayout->addStretch(); deckToolbarLayout->addStretch();
QVBoxLayout *rightFrame = new QVBoxLayout; QVBoxLayout *rightFrame = new QVBoxLayout;
rightFrame->addLayout(grid); rightFrame->addLayout(grid);
rightFrame->addWidget(deckView); rightFrame->addWidget(deckView, 10);
rightFrame->addLayout(deckToolbarLayout); rightFrame->addLayout(deckToolbarLayout);
QHBoxLayout *mainLayout = new QHBoxLayout; QHBoxLayout *mainLayout = new QHBoxLayout;
...@@ -230,6 +235,7 @@ WndDeckEditor::WndDeckEditor(QWidget *parent) ...@@ -230,6 +235,7 @@ WndDeckEditor::WndDeckEditor(QWidget *parent)
verticalToolBar->addAction(aRemoveCard); verticalToolBar->addAction(aRemoveCard);
verticalToolBar->addAction(aIncrement); verticalToolBar->addAction(aIncrement);
verticalToolBar->addAction(aDecrement); verticalToolBar->addAction(aDecrement);
verticalToolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
dlgCardSearch = new DlgCardSearch(this); dlgCardSearch = new DlgCardSearch(this);
...@@ -273,6 +279,11 @@ void WndDeckEditor::updateSearch(const QString &search) ...@@ -273,6 +279,11 @@ void WndDeckEditor::updateSearch(const QString &search)
databaseView->selectionModel()->setCurrentIndex(databaseDisplayModel->index(0, 0), QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); databaseView->selectionModel()->setCurrentIndex(databaseDisplayModel->index(0, 0), QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
} }
void WndDeckEditor::updateHash()
{
hashLabel->setText(deckModel->getDeckList()->getDeckHash());
}
bool WndDeckEditor::confirmClose() bool WndDeckEditor::confirmClose()
{ {
if (isWindowModified()) { if (isWindowModified()) {
...@@ -305,6 +316,7 @@ void WndDeckEditor::actNewDeck() ...@@ -305,6 +316,7 @@ void WndDeckEditor::actNewDeck()
nameEdit->setText(QString()); nameEdit->setText(QString());
commentsEdit->setText(QString()); commentsEdit->setText(QString());
lastFileName = QString(); lastFileName = QString();
setWindowModified(false);
} }
void WndDeckEditor::actLoadDeck() void WndDeckEditor::actLoadDeck()
...@@ -506,6 +518,7 @@ void WndDeckEditor::setDeck(DeckList *_deck, const QString &_lastFileName, DeckL ...@@ -506,6 +518,7 @@ void WndDeckEditor::setDeck(DeckList *_deck, const QString &_lastFileName, DeckL
lastFileFormat = _lastFileFormat; lastFileFormat = _lastFileFormat;
nameEdit->setText(_deck->getName()); nameEdit->setText(_deck->getName());
commentsEdit->setText(_deck->getComments()); commentsEdit->setText(_deck->getComments());
updateHash();
deckModel->sort(1); deckModel->sort(1);
deckView->expandAll(); deckView->expandAll();
setWindowModified(false); setWindowModified(false);
......
...@@ -14,6 +14,7 @@ class QTableView; ...@@ -14,6 +14,7 @@ class QTableView;
class CardInfoWidget; class CardInfoWidget;
class QTextEdit; class QTextEdit;
class DlgCardSearch; class DlgCardSearch;
class QLabel;
class SearchLineEdit : public QLineEdit { class SearchLineEdit : public QLineEdit {
private: private:
...@@ -30,6 +31,7 @@ class WndDeckEditor : public QMainWindow { ...@@ -30,6 +31,7 @@ class WndDeckEditor : public QMainWindow {
private slots: private slots:
void updateName(const QString &name); void updateName(const QString &name);
void updateComments(); void updateComments();
void updateHash();
void updateCardInfoLeft(const QModelIndex &current, const QModelIndex &previous); void updateCardInfoLeft(const QModelIndex &current, const QModelIndex &previous);
void updateCardInfoRight(const QModelIndex &current, const QModelIndex &previous); void updateCardInfoRight(const QModelIndex &current, const QModelIndex &previous);
void updateSearch(const QString &search); void updateSearch(const QString &search);
...@@ -72,6 +74,7 @@ private: ...@@ -72,6 +74,7 @@ private:
SearchLineEdit *searchEdit; SearchLineEdit *searchEdit;
QLineEdit *nameEdit; QLineEdit *nameEdit;
QTextEdit *commentsEdit; QTextEdit *commentsEdit;
QLabel *hashLabel;
DlgCardSearch *dlgCardSearch; DlgCardSearch *dlgCardSearch;
QMenu *deckMenu, *dbMenu; QMenu *deckMenu, *dbMenu;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment