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()));
|
||||
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 ¤t, 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);
|
||||
}
|
||||
|
|
|
@ -95,6 +95,7 @@ private slots:
|
|||
void dockFloatingTriggered();
|
||||
void dockTopLevelChanged(bool topLevel);
|
||||
void saveDbHeaderState();
|
||||
void setSaveStatus(bool newStatus);
|
||||
|
||||
private:
|
||||
CardInfoPtr currentCardInfo() const;
|
||||
|
|
Loading…
Reference in a new issue