mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-08 11:03:25 -08:00
[App] First-run tutorial
Took 5 minutes Took 3 minutes Took 2 minutes
This commit is contained in:
parent
46bdb6df32
commit
f4a1e9ff53
33 changed files with 1787 additions and 11 deletions
|
|
@ -23,6 +23,11 @@ public:
|
|||
void initialize();
|
||||
void retranslateUi();
|
||||
|
||||
SettingsButtonWidget *getSetFilterWidget()
|
||||
{
|
||||
return quickFilterSetWidget;
|
||||
}
|
||||
|
||||
private:
|
||||
VisualDatabaseDisplayWidget *visualDatabaseDisplay;
|
||||
DeckListModel *deckListModel;
|
||||
|
|
|
|||
|
|
@ -6,13 +6,14 @@
|
|||
#include "../../pixel_map_generator.h"
|
||||
#include "../cards/card_info_picture_with_text_overlay_widget.h"
|
||||
#include "../deck_editor/card_database_view.h"
|
||||
#include "../deck_editor/deck_state_manager.h"
|
||||
#include "../general/tutorial/tutorial_controller.h"
|
||||
#include "../quick_settings/settings_button_widget.h"
|
||||
#include "../tabs/visual_deck_editor/tab_deck_editor_visual.h"
|
||||
#include "../utility/custom_line_edit.h"
|
||||
#include "visual_database_display_color_filter_widget.h"
|
||||
#include "visual_database_display_filter_save_load_widget.h"
|
||||
#include "visual_database_display_main_type_filter_widget.h"
|
||||
#include "visual_database_display_name_filter_widget.h"
|
||||
#include "visual_database_display_set_filter_widget.h"
|
||||
#include "visual_database_display_sub_type_filter_widget.h"
|
||||
|
||||
#include <QHeaderView>
|
||||
#include <QScrollBar>
|
||||
|
|
@ -21,6 +22,7 @@
|
|||
#include <libcockatrice/card/database/card_database.h>
|
||||
#include <libcockatrice/card/database/card_database_manager.h>
|
||||
#include <libcockatrice/settings/cards_display_settings.h>
|
||||
#include <libcockatrice/utility/qt_utils.h>
|
||||
#include <utility>
|
||||
|
||||
VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
||||
|
|
@ -136,6 +138,87 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
|||
retranslateUi();
|
||||
}
|
||||
|
||||
TutorialSequence VisualDatabaseDisplayWidget::addTutorialSteps()
|
||||
{
|
||||
auto sequence = TutorialSequence();
|
||||
sequence.addStep({colorFilterWidget, "Filter the database by colors with these controls"});
|
||||
TutorialStep displayModeStep;
|
||||
displayModeStep.targetWidget = displayModeButton;
|
||||
displayModeStep.text = tr("You can change back to the old table display-style with this button.");
|
||||
displayModeStep.allowClickThrough = true;
|
||||
sequence.addStep(displayModeStep);
|
||||
sequence.addStep({filterContainer, "Use these controls for quick access to common filters."});
|
||||
|
||||
TutorialStep setFilterStep;
|
||||
setFilterStep.targetWidget = filterContainer->getSetFilterWidget();
|
||||
setFilterStep.text = tr("Let's try it out now by selecting a set filter!");
|
||||
setFilterStep.allowClickThrough = true;
|
||||
setFilterStep.requiresInteraction = true;
|
||||
setFilterStep.autoAdvanceOnValid = true;
|
||||
setFilterStep.validationTiming = ValidationTiming::OnSignal;
|
||||
setFilterStep.signalSource = filterModel;
|
||||
setFilterStep.signalName = SIGNAL(layoutChanged());
|
||||
setFilterStep.validator = [] { return true; };
|
||||
sequence.addStep(setFilterStep);
|
||||
|
||||
TutorialStep explorationStep;
|
||||
explorationStep.targetWidget = this;
|
||||
explorationStep.text = tr(
|
||||
"Try it out!\n\nWe've cleared the previous deck. Add 5 different new cards to the deck by clicking on them!");
|
||||
explorationStep.allowClickThrough = true;
|
||||
explorationStep.requiresInteraction = true;
|
||||
explorationStep.autoAdvanceOnValid = true;
|
||||
explorationStep.validationTiming = ValidationTiming::OnSignal;
|
||||
if (QtUtils::findParentOfType<TabDeckEditorVisual>(this)) {
|
||||
explorationStep.onEnter = [this] {
|
||||
QtUtils::findParentOfType<TabDeckEditorVisual>(this)->deckStateManager->clearDeck();
|
||||
};
|
||||
explorationStep.signalSource =
|
||||
QtUtils::findParentOfType<TabDeckEditorVisual>(this)->deckStateManager->getModel();
|
||||
explorationStep.signalName = SIGNAL(cardNodesChanged());
|
||||
explorationStep.validator = [this] {
|
||||
if (QtUtils::findParentOfType<TabDeckEditorVisual>(this)) {
|
||||
return QtUtils::findParentOfType<TabDeckEditorVisual>(this)
|
||||
->deckStateManager->getModel()
|
||||
->getDeckList()
|
||||
->getCardList()
|
||||
.size() >= 5;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
sequence.addStep(explorationStep);
|
||||
|
||||
TutorialStep conclusionStep;
|
||||
conclusionStep.targetWidget = this;
|
||||
conclusionStep.text = tr(
|
||||
"Great!\n\nLet's look at them in the deck view before we conclude this tutorial with the analytics widgets.");
|
||||
conclusionStep.onExit = [this]() {
|
||||
auto tabWidget = QtUtils::findParentOfType<TabDeckEditorVisualTabWidget>(this);
|
||||
if (tabWidget) {
|
||||
tabWidget->setCurrentWidget(tabWidget->visualDeckView);
|
||||
}
|
||||
};
|
||||
|
||||
sequence.addStep(conclusionStep);
|
||||
|
||||
/*sequence.addStep(
|
||||
{quickFilterSaveLoadWidget, "This button will let you save and load all currently applied filters to files."});
|
||||
sequence.addStep({quickFilterNameWidget,
|
||||
"This button will let you apply name filters. Optionally, you can import every card in "
|
||||
"your deck as a name filter and then save this as a filter using the save/load button "
|
||||
"to make your own quick access collections!"});
|
||||
sequence.addStep({mainTypeFilterWidget, "Use these buttons to quickly filter by card types."});
|
||||
sequence.addStep({quickFilterSubTypeWidget, "This button will let you apply filters for card sub-types."});
|
||||
sequence.addStep(
|
||||
{quickFilterSetWidget,
|
||||
"This button will let you apply filters for card sets. You can also filter to the X most recent sets. "
|
||||
"Filtering to a set will display all printings of a card within that set."});*/
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
||||
void VisualDatabaseDisplayWidget::initialize()
|
||||
{
|
||||
databaseLoadIndicator->setVisible(false);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "../cards/card_size_widget.h"
|
||||
#include "../general/layout_containers/flow_widget.h"
|
||||
#include "../general/layout_containers/overlap_control_widget.h"
|
||||
#include "../general/tutorial/tutorial_controller.h"
|
||||
#include "../utility/custom_line_edit.h"
|
||||
#include "visual_database_display_color_filter_widget.h"
|
||||
#include "visual_database_display_filter_toolbar_widget.h"
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
#include <libcockatrice/models/deck_list/deck_list_model.h>
|
||||
#include <qscrollarea.h>
|
||||
|
||||
class TutorialController;
|
||||
inline Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display");
|
||||
|
||||
class VisualDatabaseDisplayWidget : public QWidget
|
||||
|
|
@ -67,6 +69,7 @@ public:
|
|||
bool isVisualDisplayMode() const;
|
||||
|
||||
public slots:
|
||||
TutorialSequence addTutorialSteps();
|
||||
void onSearchModelChanged();
|
||||
|
||||
signals:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue