confirmation message box
This commit is contained in:
parent
13b6a360d2
commit
9a277ccccf
4 changed files with 62 additions and 14 deletions
|
@ -182,5 +182,6 @@ bool DeckListModel::insertRows(int row, int count, const QModelIndex &parent)
|
||||||
void DeckListModel::cleanList()
|
void DeckListModel::cleanList()
|
||||||
{
|
{
|
||||||
deckList->cleanList();
|
deckList->cleanList();
|
||||||
|
deckList->initZones();
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,24 +79,31 @@ WndDeckEditor::WndDeckEditor(CardDatabase *_db, QWidget *parent)
|
||||||
centralWidget->setLayout(mainLayout);
|
centralWidget->setLayout(mainLayout);
|
||||||
setCentralWidget(centralWidget);
|
setCentralWidget(centralWidget);
|
||||||
|
|
||||||
setWindowTitle(tr("Card database"));
|
setWindowTitle(tr("Deck editor [*]"));
|
||||||
|
|
||||||
aNewDeck = new QAction(tr("&New deck"), this);
|
aNewDeck = new QAction(tr("&New deck"), this);
|
||||||
|
aNewDeck->setShortcuts(QKeySequence::New);
|
||||||
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
||||||
aLoadDeck = new QAction(tr("&Load deck..."), this);
|
aLoadDeck = new QAction(tr("&Load deck..."), this);
|
||||||
aLoadDeck->setShortcut(tr("Ctrl+L"));
|
aLoadDeck->setShortcuts(QKeySequence::Open);
|
||||||
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
|
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
|
||||||
aSaveDeck = new QAction(tr("&Save deck"), this);
|
aSaveDeck = new QAction(tr("&Save deck"), this);
|
||||||
aSaveDeck->setShortcut(tr("Ctrl+S"));
|
aSaveDeck->setShortcuts(QKeySequence::Save);
|
||||||
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
||||||
aSaveDeckAs = new QAction(tr("&Save deck as..."), this);
|
aSaveDeckAs = new QAction(tr("&Save deck as..."), this);
|
||||||
|
aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
|
||||||
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
||||||
|
aClose = new QAction(tr("&Close"), this);
|
||||||
|
aClose->setShortcut(tr("Ctrl+Q"));
|
||||||
|
connect(aClose, SIGNAL(triggered()), this, SLOT(close()));
|
||||||
|
|
||||||
deckMenu = menuBar()->addMenu(tr("&Deck"));
|
deckMenu = menuBar()->addMenu(tr("&Deck"));
|
||||||
deckMenu->addAction(aNewDeck);
|
deckMenu->addAction(aNewDeck);
|
||||||
deckMenu->addAction(aLoadDeck);
|
deckMenu->addAction(aLoadDeck);
|
||||||
deckMenu->addAction(aSaveDeck);
|
deckMenu->addAction(aSaveDeck);
|
||||||
deckMenu->addAction(aSaveDeckAs);
|
deckMenu->addAction(aSaveDeckAs);
|
||||||
|
deckMenu->addSeparator();
|
||||||
|
deckMenu->addAction(aClose);
|
||||||
|
|
||||||
aAddCard = new QAction(tr("Add card to &maindeck"), this);
|
aAddCard = new QAction(tr("Add card to &maindeck"), this);
|
||||||
connect(aAddCard, SIGNAL(triggered()), this, SLOT(actAddCard()));
|
connect(aAddCard, SIGNAL(triggered()), this, SLOT(actAddCard()));
|
||||||
|
@ -144,8 +151,33 @@ void WndDeckEditor::updateSearch(const QString &search)
|
||||||
databaseView->selectionModel()->setCurrentIndex(matches[0], QItemSelectionModel::SelectCurrent);
|
databaseView->selectionModel()->setCurrentIndex(matches[0], QItemSelectionModel::SelectCurrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool WndDeckEditor::confirmClose()
|
||||||
|
{
|
||||||
|
if (isWindowModified()) {
|
||||||
|
QMessageBox::StandardButton ret = QMessageBox::warning(this, tr("Are you sure?"),
|
||||||
|
tr("The decklist has been modified.\nDo you want to save the changes?"),
|
||||||
|
QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||||
|
if (ret == QMessageBox::Save)
|
||||||
|
return actSaveDeck();
|
||||||
|
else if (ret == QMessageBox::Cancel)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WndDeckEditor::closeEvent(QCloseEvent *event)
|
||||||
|
{
|
||||||
|
if (confirmClose())
|
||||||
|
event->accept();
|
||||||
|
else
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actNewDeck()
|
void WndDeckEditor::actNewDeck()
|
||||||
{
|
{
|
||||||
|
if (!confirmClose())
|
||||||
|
return;
|
||||||
|
|
||||||
deckModel->cleanList();
|
deckModel->cleanList();
|
||||||
nameEdit->setText(QString());
|
nameEdit->setText(QString());
|
||||||
commentsEdit->setText(QString());
|
commentsEdit->setText(QString());
|
||||||
|
@ -154,6 +186,9 @@ void WndDeckEditor::actNewDeck()
|
||||||
|
|
||||||
void WndDeckEditor::actLoadDeck()
|
void WndDeckEditor::actLoadDeck()
|
||||||
{
|
{
|
||||||
|
if (!confirmClose())
|
||||||
|
return;
|
||||||
|
|
||||||
DeckList *l = deckModel->getDeckList();
|
DeckList *l = deckModel->getDeckList();
|
||||||
if (l->loadDialog(this)) {
|
if (l->loadDialog(this)) {
|
||||||
lastFileName = l->getLastFileName();
|
lastFileName = l->getLastFileName();
|
||||||
|
@ -164,22 +199,27 @@ void WndDeckEditor::actLoadDeck()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actSaveDeck()
|
bool WndDeckEditor::actSaveDeck()
|
||||||
{
|
{
|
||||||
if (lastFileName.isEmpty())
|
if (lastFileName.isEmpty())
|
||||||
actSaveDeckAs();
|
return actSaveDeckAs();
|
||||||
else
|
else if (deckModel->getDeckList()->saveToFile(lastFileName, lastFileFormat)) {
|
||||||
deckModel->getDeckList()->saveToFile(lastFileName, lastFileFormat);
|
setWindowModified(false);
|
||||||
;
|
return true;
|
||||||
|
} else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actSaveDeckAs()
|
bool WndDeckEditor::actSaveDeckAs()
|
||||||
{
|
{
|
||||||
DeckList *l = deckModel->getDeckList();
|
DeckList *l = deckModel->getDeckList();
|
||||||
if (l->saveDialog(this)) {
|
if (l->saveDialog(this)) {
|
||||||
lastFileName = l->getLastFileName();
|
lastFileName = l->getLastFileName();
|
||||||
lastFileFormat = l->getLastFileFormat();
|
lastFileFormat = l->getLastFileFormat();
|
||||||
}
|
setWindowModified(false);
|
||||||
|
return true;
|
||||||
|
} else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::addCardHelper(int baseRow)
|
void WndDeckEditor::addCardHelper(int baseRow)
|
||||||
|
@ -200,6 +240,7 @@ void WndDeckEditor::addCardHelper(int baseRow)
|
||||||
const int count = deckModel->data(numberIndex, Qt::EditRole).toInt();
|
const int count = deckModel->data(numberIndex, Qt::EditRole).toInt();
|
||||||
deckModel->setData(numberIndex, count + 1, Qt::EditRole);
|
deckModel->setData(numberIndex, count + 1, Qt::EditRole);
|
||||||
}
|
}
|
||||||
|
setWindowModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actAddCard()
|
void WndDeckEditor::actAddCard()
|
||||||
|
@ -218,6 +259,7 @@ void WndDeckEditor::actRemoveCard()
|
||||||
if (!currentIndex.isValid())
|
if (!currentIndex.isValid())
|
||||||
return;
|
return;
|
||||||
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
||||||
|
setWindowModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actIncrement()
|
void WndDeckEditor::actIncrement()
|
||||||
|
@ -228,6 +270,7 @@ void WndDeckEditor::actIncrement()
|
||||||
const QModelIndex numberIndex = currentIndex.sibling(currentIndex.row(), 0);
|
const QModelIndex numberIndex = currentIndex.sibling(currentIndex.row(), 0);
|
||||||
const int count = deckModel->data(numberIndex, Qt::EditRole).toInt();
|
const int count = deckModel->data(numberIndex, Qt::EditRole).toInt();
|
||||||
deckModel->setData(numberIndex, count + 1, Qt::EditRole);
|
deckModel->setData(numberIndex, count + 1, Qt::EditRole);
|
||||||
|
setWindowModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WndDeckEditor::actDecrement()
|
void WndDeckEditor::actDecrement()
|
||||||
|
@ -241,4 +284,5 @@ void WndDeckEditor::actDecrement()
|
||||||
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
||||||
else
|
else
|
||||||
deckModel->setData(numberIndex, count - 1, Qt::EditRole);
|
deckModel->setData(numberIndex, count - 1, Qt::EditRole);
|
||||||
|
setWindowModified(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ private slots:
|
||||||
|
|
||||||
void actNewDeck();
|
void actNewDeck();
|
||||||
void actLoadDeck();
|
void actLoadDeck();
|
||||||
void actSaveDeck();
|
bool actSaveDeck();
|
||||||
void actSaveDeckAs();
|
bool actSaveDeckAs();
|
||||||
|
|
||||||
void actAddCard();
|
void actAddCard();
|
||||||
void actAddCardToSideboard();
|
void actAddCardToSideboard();
|
||||||
|
@ -32,6 +32,7 @@ private slots:
|
||||||
void actDecrement();
|
void actDecrement();
|
||||||
private:
|
private:
|
||||||
void addCardHelper(int baseRow);
|
void addCardHelper(int baseRow);
|
||||||
|
bool confirmClose();
|
||||||
|
|
||||||
QString lastFileName;
|
QString lastFileName;
|
||||||
DeckList::FileFormat lastFileFormat;
|
DeckList::FileFormat lastFileFormat;
|
||||||
|
@ -45,11 +46,13 @@ private:
|
||||||
QLineEdit *searchEdit, *nameEdit, *commentsEdit;
|
QLineEdit *searchEdit, *nameEdit, *commentsEdit;
|
||||||
|
|
||||||
QMenu *deckMenu;
|
QMenu *deckMenu;
|
||||||
QAction *aNewDeck, *aLoadDeck, *aSaveDeck, *aSaveDeckAs;
|
QAction *aNewDeck, *aLoadDeck, *aSaveDeck, *aSaveDeckAs, *aClose;
|
||||||
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement;
|
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement;
|
||||||
public:
|
public:
|
||||||
WndDeckEditor(CardDatabase *_db, QWidget *parent = 0);
|
WndDeckEditor(CardDatabase *_db, QWidget *parent = 0);
|
||||||
~WndDeckEditor();
|
~WndDeckEditor();
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -208,7 +208,7 @@ void MainWindow::createMenus()
|
||||||
gameMenu->addAction(aDeckEditor);
|
gameMenu->addAction(aDeckEditor);
|
||||||
gameMenu->addSeparator();
|
gameMenu->addSeparator();
|
||||||
gameMenu->addAction(aExit);
|
gameMenu->addAction(aExit);
|
||||||
|
|
||||||
actionsMenu = menuBar()->addMenu(tr("&Actions"));
|
actionsMenu = menuBar()->addMenu(tr("&Actions"));
|
||||||
|
|
||||||
cardMenu = menuBar()->addMenu(tr("&Card"));
|
cardMenu = menuBar()->addMenu(tr("&Card"));
|
||||||
|
|
Loading…
Reference in a new issue