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:
Lee Tran 2018-09-21 09:46:31 -05:00 committed by Zach H
parent 70005a6f1d
commit eb4b1e74f1
2 changed files with 28 additions and 2 deletions

View file

@ -337,6 +337,8 @@ void TabDeckEditor::createMenus()
connect(aResetLayout, SIGNAL(triggered()), this, SLOT(restartLayout()));
viewMenu->addAction(aResetLayout);
setSaveStatus(false);
addTabMenu(viewMenu);
}
@ -673,12 +675,14 @@ void TabDeckEditor::updateName(const QString &name)
{
deckModel->getDeckList()->setName(name);
setModified(true);
setSaveStatus(true);
}
void TabDeckEditor::updateComments()
{
deckModel->getDeckList()->setComments(commentsEdit->toPlainText());
setModified(true);
setSaveStatus(true);
}
void TabDeckEditor::updateCardInfoLeft(const QModelIndex &current, const QModelIndex & /*previous*/)
@ -739,6 +743,7 @@ void TabDeckEditor::actNewDeck()
commentsEdit->setText(QString());
hashLabel->setText(QString());
setModified(false);
setSaveStatus(false);
}
void TabDeckEditor::actLoadDeck()
@ -753,10 +758,12 @@ void TabDeckEditor::actLoadDeck()
DeckLoader::FileFormat fmt = DeckLoader::getFormatFromName(fileName);
auto *l = new DeckLoader;
if (l->loadFromFile(fileName, fmt))
if (l->loadFromFile(fileName, fmt)) {
setSaveStatus(false);
setDeck(l);
else
} else
delete l;
setSaveStatus(true);
}
void TabDeckEditor::saveDeckRemoteFinished(const Response &response)
@ -829,6 +836,7 @@ void TabDeckEditor::actLoadDeckFromClipboard()
setDeck(dlg.getDeckList());
setModified(true);
setSaveStatus(true);
}
void TabDeckEditor::actSaveDeckToClipboard()
@ -967,6 +975,7 @@ void TabDeckEditor::actSwapCard()
recursiveExpand(newCardIndex);
setModified(true);
setSaveStatus(true);
}
void TabDeckEditor::actAddCard()
@ -975,11 +984,13 @@ void TabDeckEditor::actAddCard()
actAddCardToSideboard();
else
addCardHelper(DECK_ZONE_MAIN);
setSaveStatus(true);
}
void TabDeckEditor::actAddCardToSideboard()
{
addCardHelper(DECK_ZONE_SIDE);
setSaveStatus(true);
}
void TabDeckEditor::actRemoveCard()
@ -988,6 +999,9 @@ void TabDeckEditor::actRemoveCard()
if (!currentIndex.isValid() || deckModel->hasChildren(currentIndex))
return;
deckModel->removeRow(currentIndex.row(), currentIndex.parent());
DeckLoader *const deck = deckModel->getDeckList();
setSaveStatus(!deck->isEmpty());
setModified(true);
}
@ -1187,3 +1201,14 @@ void TabDeckEditor::saveDbHeaderState()
{
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);
}

View file

@ -95,6 +95,7 @@ private slots:
void dockFloatingTriggered();
void dockTopLevelChanged(bool topLevel);
void saveDbHeaderState();
void setSaveStatus(bool newStatus);
private:
CardInfoPtr currentCardInfo() const;