remote deck loading finished
This commit is contained in:
parent
cf21528a69
commit
4fac0e5b5a
14 changed files with 220 additions and 184 deletions
|
@ -25,7 +25,7 @@ HEADERS += src/counter.h \
|
||||||
src/gameview.h \
|
src/gameview.h \
|
||||||
src/deck_picturecacher.h \
|
src/deck_picturecacher.h \
|
||||||
src/decklistmodel.h \
|
src/decklistmodel.h \
|
||||||
src/dlg_startgame.h \
|
src/dlg_load_remote_deck.h \
|
||||||
src/cardinfowidget.h \
|
src/cardinfowidget.h \
|
||||||
src/messagelogwidget.h \
|
src/messagelogwidget.h \
|
||||||
src/zoneviewzone.h \
|
src/zoneviewzone.h \
|
||||||
|
@ -47,6 +47,7 @@ HEADERS += src/counter.h \
|
||||||
src/tab_game.h \
|
src/tab_game.h \
|
||||||
src/tab_deck_storage.h \
|
src/tab_deck_storage.h \
|
||||||
src/tab_supervisor.h \
|
src/tab_supervisor.h \
|
||||||
|
src/remotedecklist_treewidget.h \
|
||||||
src/deckview.h \
|
src/deckview.h \
|
||||||
../common/decklist.h \
|
../common/decklist.h \
|
||||||
../common/protocol.h \
|
../common/protocol.h \
|
||||||
|
@ -72,7 +73,7 @@ SOURCES += src/counter.cpp \
|
||||||
src/gameview.cpp \
|
src/gameview.cpp \
|
||||||
src/deck_picturecacher.cpp \
|
src/deck_picturecacher.cpp \
|
||||||
src/decklistmodel.cpp \
|
src/decklistmodel.cpp \
|
||||||
src/dlg_startgame.cpp \
|
src/dlg_load_remote_deck.cpp \
|
||||||
src/cardinfowidget.cpp \
|
src/cardinfowidget.cpp \
|
||||||
src/messagelogwidget.cpp \
|
src/messagelogwidget.cpp \
|
||||||
src/zoneviewzone.cpp \
|
src/zoneviewzone.cpp \
|
||||||
|
@ -94,6 +95,7 @@ SOURCES += src/counter.cpp \
|
||||||
src/tab_game.cpp \
|
src/tab_game.cpp \
|
||||||
src/tab_deck_storage.cpp \
|
src/tab_deck_storage.cpp \
|
||||||
src/tab_supervisor.cpp \
|
src/tab_supervisor.cpp \
|
||||||
|
src/remotedecklist_treewidget.cpp \
|
||||||
src/deckview.cpp \
|
src/deckview.cpp \
|
||||||
../common/decklist.cpp \
|
../common/decklist.cpp \
|
||||||
../common/protocol.cpp \
|
../common/protocol.cpp \
|
||||||
|
|
52
cockatrice/src/dlg_load_remote_deck.cpp
Normal file
52
cockatrice/src/dlg_load_remote_deck.cpp
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include "remotedecklist_treewidget.h"
|
||||||
|
#include "dlg_load_remote_deck.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
DlgLoadRemoteDeck::DlgLoadRemoteDeck(Client *_client, QWidget *parent)
|
||||||
|
: QDialog(parent), client(_client)
|
||||||
|
{
|
||||||
|
dirView = new RemoteDeckList_TreeWidget(client);
|
||||||
|
|
||||||
|
okButton = new QPushButton(tr("O&K"));
|
||||||
|
okButton->setDefault(true);
|
||||||
|
okButton->setAutoDefault(true);
|
||||||
|
okButton->setEnabled(false);
|
||||||
|
cancelButton = new QPushButton(tr("&Cancel"));
|
||||||
|
|
||||||
|
QHBoxLayout *buttonLayout = new QHBoxLayout;
|
||||||
|
buttonLayout->addStretch();
|
||||||
|
buttonLayout->addWidget(okButton);
|
||||||
|
buttonLayout->addWidget(cancelButton);
|
||||||
|
|
||||||
|
QVBoxLayout *mainLayout = new QVBoxLayout;
|
||||||
|
mainLayout->addWidget(dirView);
|
||||||
|
mainLayout->addLayout(buttonLayout);
|
||||||
|
|
||||||
|
setLayout(mainLayout);
|
||||||
|
|
||||||
|
setWindowTitle(tr("Load deck"));
|
||||||
|
setMinimumWidth(sizeHint().width());
|
||||||
|
resize(300, 500);
|
||||||
|
|
||||||
|
connect(dirView, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
|
||||||
|
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
|
||||||
|
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void DlgLoadRemoteDeck::currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem * /*previous*/)
|
||||||
|
{
|
||||||
|
if (!current)
|
||||||
|
okButton->setEnabled(false);
|
||||||
|
else if (current->type() == TWIDeckType)
|
||||||
|
okButton->setEnabled(true);
|
||||||
|
else
|
||||||
|
okButton->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DlgLoadRemoteDeck::getDeckId() const
|
||||||
|
{
|
||||||
|
return dirView->currentItem()->data(1, Qt::DisplayRole).toInt();
|
||||||
|
}
|
24
cockatrice/src/dlg_load_remote_deck.h
Normal file
24
cockatrice/src/dlg_load_remote_deck.h
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef DLG_STARTGAME_H
|
||||||
|
#define DLG_STARTGAME_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
class RemoteDeckList_TreeWidget;
|
||||||
|
class QTreeWidgetItem;
|
||||||
|
class Client;
|
||||||
|
class QPushButton;
|
||||||
|
|
||||||
|
class DlgLoadRemoteDeck: public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
Client *client;
|
||||||
|
RemoteDeckList_TreeWidget *dirView;
|
||||||
|
QPushButton *okButton, *cancelButton;
|
||||||
|
private slots:
|
||||||
|
void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||||
|
public:
|
||||||
|
DlgLoadRemoteDeck(Client *_client, QWidget *parent = 0);
|
||||||
|
int getDeckId() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,65 +0,0 @@
|
||||||
#include <QtGui>
|
|
||||||
#include <QFileDialog>
|
|
||||||
#include "dlg_startgame.h"
|
|
||||||
#include "decklistmodel.h"
|
|
||||||
#include "carddatabase.h"
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
DlgStartGame::DlgStartGame(QWidget *parent)
|
|
||||||
: QDialog(parent)
|
|
||||||
{
|
|
||||||
deckView = new QTreeView;
|
|
||||||
deckModel = new DeckListModel(this);
|
|
||||||
deckView->setModel(deckModel);
|
|
||||||
deckView->setUniformRowHeights(true);
|
|
||||||
|
|
||||||
loadButton = new QPushButton(tr("&Load..."));
|
|
||||||
okButton = new QPushButton(tr("&OK"));
|
|
||||||
okButton->setDefault(true);
|
|
||||||
|
|
||||||
QHBoxLayout *buttonLayout = new QHBoxLayout;
|
|
||||||
buttonLayout->addWidget(loadButton);
|
|
||||||
buttonLayout->addStretch();
|
|
||||||
buttonLayout->addWidget(okButton);
|
|
||||||
|
|
||||||
QVBoxLayout *mainLayout = new QVBoxLayout;
|
|
||||||
mainLayout->addWidget(deckView);
|
|
||||||
mainLayout->addLayout(buttonLayout);
|
|
||||||
|
|
||||||
setLayout(mainLayout);
|
|
||||||
|
|
||||||
setWindowTitle(tr("Start game"));
|
|
||||||
setMinimumWidth(sizeHint().width());
|
|
||||||
resize(300, 500);
|
|
||||||
|
|
||||||
connect(loadButton, SIGNAL(clicked()), this, SLOT(actLoad()));
|
|
||||||
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void DlgStartGame::actLoad()
|
|
||||||
{
|
|
||||||
// if (!deckModel->getDeckList()->loadDialog(this))
|
|
||||||
// return;
|
|
||||||
|
|
||||||
deckView->reset();
|
|
||||||
deckModel->sort(1);
|
|
||||||
deckView->expandAll();
|
|
||||||
deckView->resizeColumnToContents(0);
|
|
||||||
|
|
||||||
emit newDeckLoaded(getDeckList());
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList DlgStartGame::getDeckList() const
|
|
||||||
{
|
|
||||||
QStringList result;
|
|
||||||
DeckList *deckList = deckModel->getDeckList();
|
|
||||||
for (int i = 0; i < deckList->getRoot()->size(); i++) {
|
|
||||||
InnerDecklistNode *node = dynamic_cast<InnerDecklistNode *>(deckList->getRoot()->at(i));
|
|
||||||
for (int j = 0; j < node->size(); j++) {
|
|
||||||
DecklistCardNode *card = dynamic_cast<DecklistCardNode *>(node->at(j));
|
|
||||||
for (int k = 0; k < card->getNumber(); k++)
|
|
||||||
result << QString("%1%2").arg(node->getName() == "side" ? "SB: " : "").arg(card->getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
#ifndef DLG_STARTGAME_H
|
|
||||||
#define DLG_STARTGAME_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
|
|
||||||
class QTreeView;
|
|
||||||
class QPushButton;
|
|
||||||
class CardDatabase;
|
|
||||||
class DeckListModel;
|
|
||||||
|
|
||||||
class DlgStartGame: public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
DlgStartGame(QWidget *parent = 0);
|
|
||||||
QStringList getDeckList() const;
|
|
||||||
signals:
|
|
||||||
void newDeckLoaded(const QStringList &cards);
|
|
||||||
private slots:
|
|
||||||
void actLoad();
|
|
||||||
private:
|
|
||||||
QTreeView *deckView;
|
|
||||||
DeckListModel *deckModel;
|
|
||||||
|
|
||||||
QPushButton *loadButton, *okButton;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include "tablezone.h"
|
#include "tablezone.h"
|
||||||
#include "handzone.h"
|
#include "handzone.h"
|
||||||
#include "carddatabase.h"
|
#include "carddatabase.h"
|
||||||
#include "dlg_startgame.h"
|
|
||||||
#include "counter.h"
|
#include "counter.h"
|
||||||
#include "gamescene.h"
|
#include "gamescene.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
@ -80,10 +79,6 @@ Game::Game(Client *_client, GameScene *_scene, QMenuBar *menuBar, QObject *paren
|
||||||
connect(i.key(), SIGNAL(triggered()), this, SLOT(cardMenuAction()));
|
connect(i.key(), SIGNAL(triggered()), this, SLOT(cardMenuAction()));
|
||||||
}
|
}
|
||||||
|
|
||||||
dlgStartGame = new DlgStartGame;
|
|
||||||
connect(dlgStartGame, SIGNAL(newDeckLoaded(const QStringList &)), client, SLOT(submitDeck(const QStringList &)));
|
|
||||||
connect(dlgStartGame, SIGNAL(finished(int)), this, SLOT(readyStart()));
|
|
||||||
|
|
||||||
retranslateUi();
|
retranslateUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,7 +254,7 @@ void Game::readyStart()
|
||||||
|
|
||||||
void Game::restartGameDialog()
|
void Game::restartGameDialog()
|
||||||
{
|
{
|
||||||
dlgStartGame->show();
|
// dlgStartGame->show();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
void Game::gameEvent(const ServerEventData &msg)
|
void Game::gameEvent(const ServerEventData &msg)
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
class GameScene;
|
class GameScene;
|
||||||
class Player;
|
class Player;
|
||||||
class CardDatabase;
|
class CardDatabase;
|
||||||
class DlgStartGame;
|
|
||||||
class CardItem;
|
class CardItem;
|
||||||
class QMenuBar;
|
class QMenuBar;
|
||||||
class CardZone;
|
class CardZone;
|
||||||
|
@ -28,7 +27,6 @@ private:
|
||||||
QAction *aTap, *aUntap, *aDoesntUntap, *aFlip, *aAddCounter, *aRemoveCounter, *aSetCounters,
|
QAction *aTap, *aUntap, *aDoesntUntap, *aFlip, *aAddCounter, *aRemoveCounter, *aSetCounters,
|
||||||
*aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile,
|
*aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile,
|
||||||
*aNextPhase, *aNextTurn, *aRemoveLocalArrows;
|
*aNextPhase, *aNextTurn, *aRemoveLocalArrows;
|
||||||
DlgStartGame *dlgStartGame;
|
|
||||||
|
|
||||||
Client *client;
|
Client *client;
|
||||||
GameScene *scene;
|
GameScene *scene;
|
||||||
|
|
82
cockatrice/src/remotedecklist_treewidget.cpp
Normal file
82
cockatrice/src/remotedecklist_treewidget.cpp
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
#include <QFileIconProvider>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include "remotedecklist_treewidget.h"
|
||||||
|
#include "protocol_items.h"
|
||||||
|
#include "client.h"
|
||||||
|
|
||||||
|
RemoteDeckList_TreeWidget::RemoteDeckList_TreeWidget(Client *_client, QWidget *parent)
|
||||||
|
: QTreeWidget(parent), client(_client)
|
||||||
|
{
|
||||||
|
header()->setResizeMode(QHeaderView::ResizeToContents);
|
||||||
|
setColumnCount(3);
|
||||||
|
|
||||||
|
refreshTree();
|
||||||
|
retranslateUi();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteDeckList_TreeWidget::retranslateUi()
|
||||||
|
{
|
||||||
|
headerItem()->setText(0, tr("Name"));
|
||||||
|
headerItem()->setText(1, tr("ID"));
|
||||||
|
headerItem()->setText(2, tr("Upload time"));
|
||||||
|
headerItem()->setTextAlignment(1, Qt::AlignRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteDeckList_TreeWidget::addFileToTree(DeckList_File *file, QTreeWidgetItem *parent)
|
||||||
|
{
|
||||||
|
QFileIconProvider fip;
|
||||||
|
QTreeWidgetItem *newDeck = new QTreeWidgetItem(TWIDeckType);
|
||||||
|
newDeck->setIcon(0, fip.icon(QFileIconProvider::File));
|
||||||
|
newDeck->setData(0, Qt::DisplayRole, file->getName());
|
||||||
|
newDeck->setData(1, Qt::DisplayRole, file->getId());
|
||||||
|
newDeck->setTextAlignment(1, Qt::AlignRight);
|
||||||
|
newDeck->setData(2, Qt::DisplayRole, file->getUploadTime());
|
||||||
|
|
||||||
|
parent->addChild(newDeck);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteDeckList_TreeWidget::addFolderToTree(DeckList_Directory *folder, QTreeWidgetItem *parent)
|
||||||
|
{
|
||||||
|
QFileIconProvider fip;
|
||||||
|
QTreeWidgetItem *newItem = new QTreeWidgetItem(TWIFolderType);
|
||||||
|
newItem->setIcon(0, fip.icon(QFileIconProvider::Folder));
|
||||||
|
newItem->setText(0, parent ? folder->getName() : "/");
|
||||||
|
if (parent) {
|
||||||
|
parent->addChild(newItem);
|
||||||
|
|
||||||
|
QString path = parent->data(0, Qt::UserRole).toString();
|
||||||
|
if (path.isEmpty())
|
||||||
|
newItem->setData(0, Qt::UserRole, folder->getName());
|
||||||
|
else
|
||||||
|
newItem->setData(0, Qt::UserRole, path + "/" + folder->getName());
|
||||||
|
} else {
|
||||||
|
addTopLevelItem(newItem);
|
||||||
|
newItem->setData(0, Qt::UserRole, QString());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < folder->size(); ++i) {
|
||||||
|
DeckList_Directory *subFolder = dynamic_cast<DeckList_Directory *>(folder->at(i));
|
||||||
|
if (subFolder)
|
||||||
|
addFolderToTree(subFolder, newItem);
|
||||||
|
else
|
||||||
|
addFileToTree(dynamic_cast<DeckList_File *>(folder->at(i)), newItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteDeckList_TreeWidget::refreshTree()
|
||||||
|
{
|
||||||
|
Command_DeckList *command = new Command_DeckList;
|
||||||
|
connect(command, SIGNAL(finished(ProtocolResponse *)), this, SLOT(deckListFinished(ProtocolResponse *)));
|
||||||
|
client->sendCommand(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteDeckList_TreeWidget::deckListFinished(ProtocolResponse *r)
|
||||||
|
{
|
||||||
|
Response_DeckList *resp = qobject_cast<Response_DeckList *>(r);
|
||||||
|
if (!resp)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clear();
|
||||||
|
addFolderToTree(resp->getRoot(), 0);
|
||||||
|
expandAll();
|
||||||
|
}
|
27
cockatrice/src/remotedecklist_treewidget.h
Normal file
27
cockatrice/src/remotedecklist_treewidget.h
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef REMOTEDECKLIST_TREEWIDGET_H
|
||||||
|
#define REMOTEDECKLIST_TREEWIDGET_H
|
||||||
|
|
||||||
|
#include <QTreeWidget>
|
||||||
|
|
||||||
|
class ProtocolResponse;
|
||||||
|
class Client;
|
||||||
|
class DeckList_File;
|
||||||
|
class DeckList_Directory;
|
||||||
|
|
||||||
|
enum { TWIFolderType = QTreeWidgetItem::UserType + 1, TWIDeckType = QTreeWidgetItem::UserType + 2 };
|
||||||
|
|
||||||
|
class RemoteDeckList_TreeWidget : public QTreeWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
Client *client;
|
||||||
|
private slots:
|
||||||
|
void deckListFinished(ProtocolResponse *r);
|
||||||
|
public:
|
||||||
|
RemoteDeckList_TreeWidget(Client *_client, QWidget *parent = 0);
|
||||||
|
void retranslateUi();
|
||||||
|
void addFileToTree(DeckList_File *file, QTreeWidgetItem *parent);
|
||||||
|
void addFolderToTree(DeckList_Directory *folder, QTreeWidgetItem *parent);
|
||||||
|
void refreshTree();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,12 +1,11 @@
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "tab_deck_storage.h"
|
#include "tab_deck_storage.h"
|
||||||
|
#include "remotedecklist_treewidget.h"
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "decklist.h"
|
#include "decklist.h"
|
||||||
#include "protocol_items.h"
|
#include "protocol_items.h"
|
||||||
|
|
||||||
enum { TWIFolderType = QTreeWidgetItem::UserType + 1, TWIDeckType = QTreeWidgetItem::UserType + 2 };
|
|
||||||
|
|
||||||
TabDeckStorage::TabDeckStorage(Client *_client)
|
TabDeckStorage::TabDeckStorage(Client *_client)
|
||||||
: QWidget(), client(_client)
|
: QWidget(), client(_client)
|
||||||
{
|
{
|
||||||
|
@ -47,9 +46,7 @@ TabDeckStorage::TabDeckStorage(Client *_client)
|
||||||
rightToolBarLayout->addWidget(rightToolBar);
|
rightToolBarLayout->addWidget(rightToolBar);
|
||||||
rightToolBarLayout->addStretch();
|
rightToolBarLayout->addStretch();
|
||||||
|
|
||||||
serverDirView = new QTreeWidget;
|
serverDirView = new RemoteDeckList_TreeWidget(client);
|
||||||
serverDirView->header()->setResizeMode(QHeaderView::ResizeToContents);
|
|
||||||
serverDirView->setColumnCount(3);
|
|
||||||
|
|
||||||
QVBoxLayout *rightVbox = new QVBoxLayout;
|
QVBoxLayout *rightVbox = new QVBoxLayout;
|
||||||
rightVbox->addWidget(serverDirView);
|
rightVbox->addWidget(serverDirView);
|
||||||
|
@ -81,8 +78,6 @@ TabDeckStorage::TabDeckStorage(Client *_client)
|
||||||
|
|
||||||
retranslateUi();
|
retranslateUi();
|
||||||
setLayout(hbox);
|
setLayout(hbox);
|
||||||
|
|
||||||
refreshServerList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckStorage::retranslateUi()
|
void TabDeckStorage::retranslateUi()
|
||||||
|
@ -94,71 +89,8 @@ void TabDeckStorage::retranslateUi()
|
||||||
aDownload->setText(tr("Download deck"));
|
aDownload->setText(tr("Download deck"));
|
||||||
aNewFolder->setText(tr("New folder"));
|
aNewFolder->setText(tr("New folder"));
|
||||||
aDelete->setText(tr("Delete"));
|
aDelete->setText(tr("Delete"));
|
||||||
|
|
||||||
QTreeWidgetItem *header = serverDirView->headerItem();
|
serverDirView->retranslateUi();
|
||||||
header->setText(0, tr("Name"));
|
|
||||||
header->setText(1, tr("ID"));
|
|
||||||
header->setText(2, tr("Upload time"));
|
|
||||||
header->setTextAlignment(1, Qt::AlignRight);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabDeckStorage::refreshServerList()
|
|
||||||
{
|
|
||||||
Command_DeckList *command = new Command_DeckList;
|
|
||||||
connect(command, SIGNAL(finished(ProtocolResponse *)), this, SLOT(deckListFinished(ProtocolResponse *)));
|
|
||||||
client->sendCommand(command);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabDeckStorage::addFileToTree(DeckList_File *file, QTreeWidgetItem *parent)
|
|
||||||
{
|
|
||||||
QFileIconProvider fip;
|
|
||||||
QTreeWidgetItem *newDeck = new QTreeWidgetItem(TWIDeckType);
|
|
||||||
newDeck->setIcon(0, fip.icon(QFileIconProvider::File));
|
|
||||||
newDeck->setData(0, Qt::DisplayRole, file->getName());
|
|
||||||
newDeck->setData(1, Qt::DisplayRole, file->getId());
|
|
||||||
newDeck->setTextAlignment(1, Qt::AlignRight);
|
|
||||||
newDeck->setData(2, Qt::DisplayRole, file->getUploadTime());
|
|
||||||
|
|
||||||
parent->addChild(newDeck);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabDeckStorage::populateDeckList(DeckList_Directory *folder, QTreeWidgetItem *parent)
|
|
||||||
{
|
|
||||||
QFileIconProvider fip;
|
|
||||||
QTreeWidgetItem *newItem = new QTreeWidgetItem(TWIFolderType);
|
|
||||||
newItem->setIcon(0, fip.icon(QFileIconProvider::Folder));
|
|
||||||
newItem->setText(0, parent ? folder->getName() : "/");
|
|
||||||
if (parent) {
|
|
||||||
parent->addChild(newItem);
|
|
||||||
|
|
||||||
QString path = parent->data(0, Qt::UserRole).toString();
|
|
||||||
if (path.isEmpty())
|
|
||||||
newItem->setData(0, Qt::UserRole, folder->getName());
|
|
||||||
else
|
|
||||||
newItem->setData(0, Qt::UserRole, path + "/" + folder->getName());
|
|
||||||
} else {
|
|
||||||
serverDirView->addTopLevelItem(newItem);
|
|
||||||
newItem->setData(0, Qt::UserRole, QString());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < folder->size(); ++i) {
|
|
||||||
DeckList_Directory *subFolder = dynamic_cast<DeckList_Directory *>(folder->at(i));
|
|
||||||
if (subFolder)
|
|
||||||
populateDeckList(subFolder, newItem);
|
|
||||||
else
|
|
||||||
addFileToTree(dynamic_cast<DeckList_File *>(folder->at(i)), newItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabDeckStorage::deckListFinished(ProtocolResponse *r)
|
|
||||||
{
|
|
||||||
Response_DeckList *resp = qobject_cast<Response_DeckList *>(r);
|
|
||||||
if (!resp)
|
|
||||||
return;
|
|
||||||
|
|
||||||
serverDirView->clear();
|
|
||||||
populateDeckList(resp->getRoot(), 0);
|
|
||||||
serverDirView->expandAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckStorage::actUpload()
|
void TabDeckStorage::actUpload()
|
||||||
|
@ -194,7 +126,7 @@ void TabDeckStorage::uploadFinished(ProtocolResponse *r)
|
||||||
QTreeWidgetItemIterator it(serverDirView);
|
QTreeWidgetItemIterator it(serverDirView);
|
||||||
while (*it) {
|
while (*it) {
|
||||||
if ((*it)->data(0, Qt::UserRole) == cmd->getPath()) {
|
if ((*it)->data(0, Qt::UserRole) == cmd->getPath()) {
|
||||||
addFileToTree(resp->getFile(), *it);
|
serverDirView->addFileToTree(resp->getFile(), *it);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
++it;
|
++it;
|
||||||
|
|
|
@ -13,6 +13,7 @@ class QTreeWidget;
|
||||||
class QTreeWidgetItem;
|
class QTreeWidgetItem;
|
||||||
class QGroupBox;
|
class QGroupBox;
|
||||||
class ProtocolResponse;
|
class ProtocolResponse;
|
||||||
|
class RemoteDeckList_TreeWidget;
|
||||||
|
|
||||||
class TabDeckStorage : public QWidget {
|
class TabDeckStorage : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -22,16 +23,11 @@ private:
|
||||||
QFileSystemModel *localDirModel;
|
QFileSystemModel *localDirModel;
|
||||||
QSortFilterProxyModel *sortFilter;
|
QSortFilterProxyModel *sortFilter;
|
||||||
QToolBar *leftToolBar, *rightToolBar;
|
QToolBar *leftToolBar, *rightToolBar;
|
||||||
QTreeWidget *serverDirView;
|
RemoteDeckList_TreeWidget *serverDirView;
|
||||||
QGroupBox *leftGroupBox, *rightGroupBox;
|
QGroupBox *leftGroupBox, *rightGroupBox;
|
||||||
|
|
||||||
QAction *aUpload, *aDownload, *aNewFolder, *aDelete;
|
QAction *aUpload, *aDownload, *aNewFolder, *aDelete;
|
||||||
void addFileToTree(DeckList_File *file, QTreeWidgetItem *parent);
|
|
||||||
void populateDeckList(DeckList_Directory *folder, QTreeWidgetItem *parent);
|
|
||||||
void refreshServerList();
|
|
||||||
private slots:
|
private slots:
|
||||||
void deckListFinished(ProtocolResponse *r);
|
|
||||||
|
|
||||||
void actUpload();
|
void actUpload();
|
||||||
void uploadFinished(ProtocolResponse *r);
|
void uploadFinished(ProtocolResponse *r);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "decklist.h"
|
#include "decklist.h"
|
||||||
#include "deck_picturecacher.h"
|
#include "deck_picturecacher.h"
|
||||||
#include "protocol_items.h"
|
#include "protocol_items.h"
|
||||||
|
#include "dlg_load_remote_deck.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
TabGame::TabGame(Client *_client, int _gameId)
|
TabGame::TabGame(Client *_client, int _gameId)
|
||||||
|
@ -26,10 +27,12 @@ TabGame::TabGame(Client *_client, int _gameId)
|
||||||
|
|
||||||
loadLocalButton = new QPushButton;
|
loadLocalButton = new QPushButton;
|
||||||
loadRemoteButton = new QPushButton;
|
loadRemoteButton = new QPushButton;
|
||||||
|
readyStartButton = new QPushButton;
|
||||||
|
|
||||||
QHBoxLayout *buttonHBox = new QHBoxLayout;
|
QHBoxLayout *buttonHBox = new QHBoxLayout;
|
||||||
buttonHBox->addWidget(loadLocalButton);
|
buttonHBox->addWidget(loadLocalButton);
|
||||||
buttonHBox->addWidget(loadRemoteButton);
|
buttonHBox->addWidget(loadRemoteButton);
|
||||||
|
buttonHBox->addWidget(readyStartButton);
|
||||||
buttonHBox->addStretch();
|
buttonHBox->addStretch();
|
||||||
deckView = new DeckView;
|
deckView = new DeckView;
|
||||||
QVBoxLayout *deckViewLayout = new QVBoxLayout;
|
QVBoxLayout *deckViewLayout = new QVBoxLayout;
|
||||||
|
@ -66,6 +69,7 @@ TabGame::TabGame(Client *_client, int _gameId)
|
||||||
|
|
||||||
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(sayEdit, SIGNAL(returnPressed()), this, SLOT(actSay()));
|
connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(actSay()));
|
||||||
|
|
||||||
|
@ -93,6 +97,7 @@ void TabGame::retranslateUi()
|
||||||
{
|
{
|
||||||
loadLocalButton->setText(tr("Load &local deck"));
|
loadLocalButton->setText(tr("Load &local deck"));
|
||||||
loadRemoteButton->setText(tr("Load deck from &server"));
|
loadRemoteButton->setText(tr("Load deck from &server"));
|
||||||
|
readyStartButton->setText(tr("&Start game"));
|
||||||
sayLabel->setText(tr("&Say:"));
|
sayLabel->setText(tr("&Say:"));
|
||||||
cardInfo->retranslateUi();
|
cardInfo->retranslateUi();
|
||||||
// if (game)
|
// if (game)
|
||||||
|
@ -132,7 +137,12 @@ void TabGame::loadLocalDeck()
|
||||||
|
|
||||||
void TabGame::loadRemoteDeck()
|
void TabGame::loadRemoteDeck()
|
||||||
{
|
{
|
||||||
|
DlgLoadRemoteDeck dlg(client);
|
||||||
|
if (dlg.exec()) {
|
||||||
|
Command_DeckSelect *cmd = new Command_DeckSelect(gameId, 0, dlg.getDeckId());
|
||||||
|
connect(cmd, SIGNAL(finished(ProtocolResponse *)), this, SLOT(deckSelectFinished(ProtocolResponse *)));
|
||||||
|
client->sendCommand(cmd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabGame::deckSelectFinished(ProtocolResponse *r)
|
void TabGame::deckSelectFinished(ProtocolResponse *r)
|
||||||
|
@ -146,3 +156,8 @@ void TabGame::deckSelectFinished(ProtocolResponse *r)
|
||||||
Deck_PictureCacher::cachePictures(resp->getDeck(), this);
|
Deck_PictureCacher::cachePictures(resp->getDeck(), this);
|
||||||
deckView->setDeck(resp->getDeck());
|
deckView->setDeck(resp->getDeck());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabGame::readyStart()
|
||||||
|
{
|
||||||
|
client->sendCommand(new Command_ReadyStart(gameId));
|
||||||
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ private:
|
||||||
Client *client;
|
Client *client;
|
||||||
int gameId;
|
int gameId;
|
||||||
|
|
||||||
QPushButton *loadLocalButton, *loadRemoteButton;
|
QPushButton *loadLocalButton, *loadRemoteButton, *readyStartButton;
|
||||||
CardInfoWidget *cardInfo;
|
CardInfoWidget *cardInfo;
|
||||||
MessageLogWidget *messageLog;
|
MessageLogWidget *messageLog;
|
||||||
QLabel *sayLabel;
|
QLabel *sayLabel;
|
||||||
|
@ -41,6 +41,7 @@ private:
|
||||||
private slots:
|
private slots:
|
||||||
void loadLocalDeck();
|
void loadLocalDeck();
|
||||||
void loadRemoteDeck();
|
void loadRemoteDeck();
|
||||||
|
void readyStart();
|
||||||
void deckSelectFinished(ProtocolResponse *r);
|
void deckSelectFinished(ProtocolResponse *r);
|
||||||
public:
|
public:
|
||||||
TabGame(Client *_client, int _gameId);
|
TabGame(Client *_client, int _gameId);
|
||||||
|
|
|
@ -257,7 +257,11 @@ public:
|
||||||
GameEvent(const QString &_eventName, int _gameId, int _playerId);
|
GameEvent(const QString &_eventName, int _gameId, int _playerId);
|
||||||
int getGameId() const { return gameId; }
|
int getGameId() const { return gameId; }
|
||||||
int getPlayerId() const { return playerId; }
|
int getPlayerId() const { return playerId; }
|
||||||
void setGameId(int _gameId) { gameId = _gameId; }
|
void setGameId(int _gameId)
|
||||||
|
{
|
||||||
|
gameId = _gameId;
|
||||||
|
setParameter("game_id", gameId);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ChatEvent : public ProtocolItem {
|
class ChatEvent : public ProtocolItem {
|
||||||
|
|
Loading…
Reference in a new issue