Disable saving of decks when the deck is empty (#3384)
* Disable saving of decks when the deck is empty * Replace tabs with spaces to conform with coding conventions * Remove whitespace at end of line to satisfy the CI robot overlords * Improve logic to check if deck is empty, fix functionality when a deck is loaded * Fix code style issues * Disable more menus when the deck is empty * Streamline code for disabling save menus when the deck is empty * Fix save-disabling when loading a deck from the clipboard * Enable saving deck directly after loading deck
This commit is contained in:
parent
70005a6f1d
commit
eb4b1e74f1
2 changed files with 28 additions and 2 deletions
|
@ -337,6 +337,8 @@ void TabDeckEditor::createMenus()
|
||||||
connect(aResetLayout, SIGNAL(triggered()), this, SLOT(restartLayout()));
|
connect(aResetLayout, SIGNAL(triggered()), this, SLOT(restartLayout()));
|
||||||
viewMenu->addAction(aResetLayout);
|
viewMenu->addAction(aResetLayout);
|
||||||
|
|
||||||
|
setSaveStatus(false);
|
||||||
|
|
||||||
addTabMenu(viewMenu);
|
addTabMenu(viewMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -673,12 +675,14 @@ void TabDeckEditor::updateName(const QString &name)
|
||||||
{
|
{
|
||||||
deckModel->getDeckList()->setName(name);
|
deckModel->getDeckList()->setName(name);
|
||||||
setModified(true);
|
setModified(true);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::updateComments()
|
void TabDeckEditor::updateComments()
|
||||||
{
|
{
|
||||||
deckModel->getDeckList()->setComments(commentsEdit->toPlainText());
|
deckModel->getDeckList()->setComments(commentsEdit->toPlainText());
|
||||||
setModified(true);
|
setModified(true);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::updateCardInfoLeft(const QModelIndex ¤t, const QModelIndex & /*previous*/)
|
void TabDeckEditor::updateCardInfoLeft(const QModelIndex ¤t, const QModelIndex & /*previous*/)
|
||||||
|
@ -739,6 +743,7 @@ void TabDeckEditor::actNewDeck()
|
||||||
commentsEdit->setText(QString());
|
commentsEdit->setText(QString());
|
||||||
hashLabel->setText(QString());
|
hashLabel->setText(QString());
|
||||||
setModified(false);
|
setModified(false);
|
||||||
|
setSaveStatus(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actLoadDeck()
|
void TabDeckEditor::actLoadDeck()
|
||||||
|
@ -753,10 +758,12 @@ void TabDeckEditor::actLoadDeck()
|
||||||
DeckLoader::FileFormat fmt = DeckLoader::getFormatFromName(fileName);
|
DeckLoader::FileFormat fmt = DeckLoader::getFormatFromName(fileName);
|
||||||
|
|
||||||
auto *l = new DeckLoader;
|
auto *l = new DeckLoader;
|
||||||
if (l->loadFromFile(fileName, fmt))
|
if (l->loadFromFile(fileName, fmt)) {
|
||||||
|
setSaveStatus(false);
|
||||||
setDeck(l);
|
setDeck(l);
|
||||||
else
|
} else
|
||||||
delete l;
|
delete l;
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::saveDeckRemoteFinished(const Response &response)
|
void TabDeckEditor::saveDeckRemoteFinished(const Response &response)
|
||||||
|
@ -829,6 +836,7 @@ void TabDeckEditor::actLoadDeckFromClipboard()
|
||||||
|
|
||||||
setDeck(dlg.getDeckList());
|
setDeck(dlg.getDeckList());
|
||||||
setModified(true);
|
setModified(true);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actSaveDeckToClipboard()
|
void TabDeckEditor::actSaveDeckToClipboard()
|
||||||
|
@ -967,6 +975,7 @@ void TabDeckEditor::actSwapCard()
|
||||||
recursiveExpand(newCardIndex);
|
recursiveExpand(newCardIndex);
|
||||||
|
|
||||||
setModified(true);
|
setModified(true);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actAddCard()
|
void TabDeckEditor::actAddCard()
|
||||||
|
@ -975,11 +984,13 @@ void TabDeckEditor::actAddCard()
|
||||||
actAddCardToSideboard();
|
actAddCardToSideboard();
|
||||||
else
|
else
|
||||||
addCardHelper(DECK_ZONE_MAIN);
|
addCardHelper(DECK_ZONE_MAIN);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actAddCardToSideboard()
|
void TabDeckEditor::actAddCardToSideboard()
|
||||||
{
|
{
|
||||||
addCardHelper(DECK_ZONE_SIDE);
|
addCardHelper(DECK_ZONE_SIDE);
|
||||||
|
setSaveStatus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actRemoveCard()
|
void TabDeckEditor::actRemoveCard()
|
||||||
|
@ -988,6 +999,9 @@ void TabDeckEditor::actRemoveCard()
|
||||||
if (!currentIndex.isValid() || deckModel->hasChildren(currentIndex))
|
if (!currentIndex.isValid() || deckModel->hasChildren(currentIndex))
|
||||||
return;
|
return;
|
||||||
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
|
||||||
|
|
||||||
|
DeckLoader *const deck = deckModel->getDeckList();
|
||||||
|
setSaveStatus(!deck->isEmpty());
|
||||||
setModified(true);
|
setModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1187,3 +1201,14 @@ void TabDeckEditor::saveDbHeaderState()
|
||||||
{
|
{
|
||||||
settingsCache->layouts().setDeckEditorDbHeaderState(databaseView->header()->saveState());
|
settingsCache->layouts().setDeckEditorDbHeaderState(databaseView->header()->saveState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::setSaveStatus(bool newStatus)
|
||||||
|
{
|
||||||
|
aSaveDeck->setEnabled(newStatus);
|
||||||
|
aSaveDeckAs->setEnabled(newStatus);
|
||||||
|
aSaveDeckToClipboard->setEnabled(newStatus);
|
||||||
|
aSaveDeckToClipboardRaw->setEnabled(newStatus);
|
||||||
|
saveDeckToClipboardMenu->setEnabled(newStatus);
|
||||||
|
aPrintDeck->setEnabled(newStatus);
|
||||||
|
analyzeDeckMenu->setEnabled(newStatus);
|
||||||
|
}
|
||||||
|
|
|
@ -95,6 +95,7 @@ private slots:
|
||||||
void dockFloatingTriggered();
|
void dockFloatingTriggered();
|
||||||
void dockTopLevelChanged(bool topLevel);
|
void dockTopLevelChanged(bool topLevel);
|
||||||
void saveDbHeaderState();
|
void saveDbHeaderState();
|
||||||
|
void setSaveStatus(bool newStatus);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CardInfoPtr currentCardInfo() const;
|
CardInfoPtr currentCardInfo() const;
|
||||||
|
|
Loading…
Reference in a new issue