107 lines
3.2 KiB
C++
107 lines
3.2 KiB
C++
#include <QtGui>
|
|
#include "window_deckeditor.h"
|
|
#include "carddatabase.h"
|
|
#include "carddatabasemodel.h"
|
|
#include "decklistmodel.h"
|
|
#include "cardinfowidget.h"
|
|
|
|
WndDeckEditor::WndDeckEditor(CardDatabase *_db, QWidget *parent)
|
|
: QMainWindow(parent), db(_db)
|
|
{
|
|
databaseModel = new CardDatabaseModel(db);
|
|
databaseView = new QTreeView();
|
|
databaseView->setModel(databaseModel);
|
|
databaseView->setSortingEnabled(true);
|
|
connect(databaseView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(updateCardInfoLeft(const QModelIndex &, const QModelIndex &)));
|
|
|
|
deckModel = new DeckListModel(db, this);
|
|
deckView = new QTreeView();
|
|
deckView->setModel(deckModel);
|
|
connect(deckView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(updateCardInfoRight(const QModelIndex &, const QModelIndex &)));
|
|
|
|
cardInfo = new CardInfoWidget(db);
|
|
|
|
QVBoxLayout *middleFrame = new QVBoxLayout;
|
|
middleFrame->addWidget(cardInfo);
|
|
middleFrame->addStretch();
|
|
|
|
QHBoxLayout *mainLayout = new QHBoxLayout;
|
|
mainLayout->addWidget(databaseView);
|
|
mainLayout->addLayout(middleFrame);
|
|
mainLayout->addWidget(deckView);
|
|
|
|
QWidget *centralWidget = new QWidget;
|
|
centralWidget->setLayout(mainLayout);
|
|
setCentralWidget(centralWidget);
|
|
|
|
setWindowTitle(tr("Card database"));
|
|
|
|
aNewDeck = new QAction(tr("&New deck"), this);
|
|
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
|
aLoadDeck = new QAction(tr("&Load deck..."), this);
|
|
aLoadDeck->setShortcut(tr("Ctrl+L"));
|
|
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
|
|
aSaveDeck = new QAction(tr("&Save deck"), this);
|
|
aSaveDeck->setShortcut(tr("Ctrl+S"));
|
|
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
|
aSaveDeckAs = new QAction(tr("&Save deck as..."), this);
|
|
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
|
|
|
deckMenu = menuBar()->addMenu(tr("Deck"));
|
|
deckMenu->addAction(aNewDeck);
|
|
deckMenu->addAction(aLoadDeck);
|
|
deckMenu->addAction(aSaveDeck);
|
|
deckMenu->addAction(aSaveDeckAs);
|
|
}
|
|
|
|
WndDeckEditor::~WndDeckEditor()
|
|
{
|
|
|
|
}
|
|
|
|
void WndDeckEditor::updateCardInfoLeft(const QModelIndex ¤t, const QModelIndex &previous)
|
|
{
|
|
Q_UNUSED(previous);
|
|
cardInfo->setCard(current.sibling(current.row(), 0).data().toString());
|
|
}
|
|
|
|
void WndDeckEditor::updateCardInfoRight(const QModelIndex ¤t, const QModelIndex &previous)
|
|
{
|
|
Q_UNUSED(previous);
|
|
cardInfo->setCard(current.sibling(current.row(), 1).data().toString());
|
|
}
|
|
|
|
void WndDeckEditor::actNewDeck()
|
|
{
|
|
deckModel->cleanList();
|
|
lastFileName = QString();
|
|
}
|
|
|
|
void WndDeckEditor::actLoadDeck()
|
|
{
|
|
QString fileName = QFileDialog::getOpenFileName(this, tr("Load deck"), QString(), tr("Deck files (*.dec)"));
|
|
if (fileName.isEmpty())
|
|
return;
|
|
|
|
if (deckModel->loadFromFile(fileName))
|
|
lastFileName = fileName;
|
|
}
|
|
|
|
void WndDeckEditor::actSaveDeck()
|
|
{
|
|
if (lastFileName.isEmpty())
|
|
actSaveDeckAs();
|
|
else
|
|
deckModel->saveToFile(lastFileName);
|
|
}
|
|
|
|
void WndDeckEditor::actSaveDeckAs()
|
|
{
|
|
QString fileName = QFileDialog::getSaveFileName(this, tr("Save deck as"), QString(), tr("Deck files (*.dec)"));
|
|
if (fileName.isEmpty())
|
|
return;
|
|
if (!fileName.endsWith(".dec"))
|
|
fileName.append(".dec");
|
|
if (deckModel->saveToFile(fileName))
|
|
lastFileName = fileName;
|
|
}
|