mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-20 09:22:15 -07:00
Make the view display options functional.
This commit is contained in:
parent
5a416ce6e6
commit
03b2253541
9 changed files with 143 additions and 4 deletions
|
|
@ -24,19 +24,22 @@ PrintingSelector::PrintingSelector(QWidget *parent,
|
||||||
layout->addWidget(viewOptionsToolbar);
|
layout->addWidget(viewOptionsToolbar);
|
||||||
|
|
||||||
sortToolBar = new PrintingSelectorCardSortingWidget(this);
|
sortToolBar = new PrintingSelectorCardSortingWidget(this);
|
||||||
|
sortToolBar->setVisible(SettingsCache::instance().getPrintingSelectorSortOptionsVisible());
|
||||||
layout->addWidget(sortToolBar);
|
layout->addWidget(sortToolBar);
|
||||||
|
|
||||||
// Add the search bar
|
|
||||||
searchBar = new PrintingSelectorCardSearchWidget(this);
|
searchBar = new PrintingSelectorCardSearchWidget(this);
|
||||||
|
searchBar->setVisible(SettingsCache::instance().getPrintingSelectorSearchBarVisible());
|
||||||
layout->addWidget(searchBar);
|
layout->addWidget(searchBar);
|
||||||
|
|
||||||
flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
|
flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
|
||||||
layout->addWidget(flowWidget);
|
layout->addWidget(flowWidget);
|
||||||
|
|
||||||
cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getPrintingSelectorCardSize());
|
cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getPrintingSelectorCardSize());
|
||||||
|
cardSizeWidget->setVisible(SettingsCache::instance().getPrintingSelectorCardSizeSliderVisible());
|
||||||
layout->addWidget(cardSizeWidget);
|
layout->addWidget(cardSizeWidget);
|
||||||
|
|
||||||
cardSelectionBar = new PrintingSelectorCardSelectionWidget(this);
|
cardSelectionBar = new PrintingSelectorCardSelectionWidget(this);
|
||||||
|
cardSelectionBar->setVisible(SettingsCache::instance().getPrintingSelectorNavigationButtonsVisible());
|
||||||
layout->addWidget(cardSelectionBar);
|
layout->addWidget(cardSelectionBar);
|
||||||
|
|
||||||
connect(deckModel, &DeckListModel::dataChanged, this, [this]() {
|
connect(deckModel, &DeckListModel::dataChanged, this, [this]() {
|
||||||
|
|
@ -166,3 +169,23 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
currentIndex = 0;
|
currentIndex = 0;
|
||||||
widgetLoadingBufferTimer->start(0); // Process as soon as possible
|
widgetLoadingBufferTimer->start(0); // Process as soon as possible
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrintingSelector::toggleVisibilitySortOptions(bool _state)
|
||||||
|
{
|
||||||
|
sortToolBar->setVisible(_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintingSelector::toggleVisibilitySearchBar(bool _state)
|
||||||
|
{
|
||||||
|
searchBar->setVisible(_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintingSelector::toggleVisibilityCardSizeSlider(bool _state)
|
||||||
|
{
|
||||||
|
cardSizeWidget->setVisible(_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintingSelector::toggleVisibilityNavigationButtons(bool _state)
|
||||||
|
{
|
||||||
|
cardSelectionBar->setVisible(_state);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ public slots:
|
||||||
void updateDisplay();
|
void updateDisplay();
|
||||||
void selectPreviousCard();
|
void selectPreviousCard();
|
||||||
void selectNextCard();
|
void selectNextCard();
|
||||||
|
void toggleVisibilitySortOptions(bool _state);
|
||||||
|
void toggleVisibilitySearchBar(bool _state);
|
||||||
|
void toggleVisibilityCardSizeSlider(bool _state);
|
||||||
|
void toggleVisibilityNavigationButtons(bool _state);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ PrintingSelectorViewOptionsToolbarWidget::PrintingSelectorViewOptionsToolbarWidg
|
||||||
connect(collapseButton, &QPushButton::clicked, this, &PrintingSelectorViewOptionsToolbarWidget::collapse);
|
connect(collapseButton, &QPushButton::clicked, this, &PrintingSelectorViewOptionsToolbarWidget::collapse);
|
||||||
expandedLayout->addWidget(collapseButton, 0, Qt::AlignLeft);
|
expandedLayout->addWidget(collapseButton, 0, Qt::AlignLeft);
|
||||||
|
|
||||||
viewOptions = new PrintingSelectorViewOptionsWidget(expandedWidget);
|
viewOptions = new PrintingSelectorViewOptionsWidget(expandedWidget, printingSelector);
|
||||||
expandedLayout->addWidget(viewOptions);
|
expandedLayout->addWidget(viewOptions);
|
||||||
|
|
||||||
expandedWidget->setLayout(expandedLayout);
|
expandedWidget->setLayout(expandedLayout);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#include "printing_selector_view_options_widget.h"
|
#include "printing_selector_view_options_widget.h"
|
||||||
|
|
||||||
PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *parent) : QWidget(parent)
|
#include "../../../../settings/cache_settings.h"
|
||||||
|
|
||||||
|
PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *parent,
|
||||||
|
PrintingSelector *_printingSelector)
|
||||||
|
: QWidget(parent), printingSelector(_printingSelector)
|
||||||
{
|
{
|
||||||
layout = new QHBoxLayout(this);
|
layout = new QHBoxLayout(this);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
@ -9,12 +13,32 @@ PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *pa
|
||||||
|
|
||||||
sortCheckBox = new QCheckBox(flowWidget);
|
sortCheckBox = new QCheckBox(flowWidget);
|
||||||
sortCheckBox->setText(tr("Display Sorting Options"));
|
sortCheckBox->setText(tr("Display Sorting Options"));
|
||||||
|
sortCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorSortOptionsVisible());
|
||||||
|
connect(sortCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector,
|
||||||
|
&PrintingSelector::toggleVisibilitySortOptions);
|
||||||
|
connect(sortCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
|
&SettingsCache::setPrintingSelectorSortOptionsVisible);
|
||||||
searchCheckBox = new QCheckBox(flowWidget);
|
searchCheckBox = new QCheckBox(flowWidget);
|
||||||
searchCheckBox->setText(tr("Display Search Bar"));
|
searchCheckBox->setText(tr("Display Search Bar"));
|
||||||
|
searchCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorSearchBarVisible());
|
||||||
|
connect(searchCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector,
|
||||||
|
&PrintingSelector::toggleVisibilitySearchBar);
|
||||||
|
connect(searchCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
|
&SettingsCache::setPrintingSelectorSearchBarVisible);
|
||||||
cardSizeCheckBox = new QCheckBox(flowWidget);
|
cardSizeCheckBox = new QCheckBox(flowWidget);
|
||||||
cardSizeCheckBox->setText(tr("Display Card Size Slider"));
|
cardSizeCheckBox->setText(tr("Display Card Size Slider"));
|
||||||
|
cardSizeCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorCardSizeSliderVisible());
|
||||||
|
connect(cardSizeCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector,
|
||||||
|
&PrintingSelector::toggleVisibilityCardSizeSlider);
|
||||||
|
connect(cardSizeCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
|
&SettingsCache::setPrintingSelectorCardSizeSliderVisible);
|
||||||
navigationCheckBox = new QCheckBox(flowWidget);
|
navigationCheckBox = new QCheckBox(flowWidget);
|
||||||
navigationCheckBox->setText(tr("Display Navigation Buttons"));
|
navigationCheckBox->setText(tr("Display Navigation Buttons"));
|
||||||
|
navigationCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorNavigationButtonsVisible());
|
||||||
|
connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector,
|
||||||
|
&PrintingSelector::toggleVisibilityNavigationButtons);
|
||||||
|
connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
|
&SettingsCache::setPrintingSelectorNavigationButtonsVisible);
|
||||||
|
|
||||||
flowWidget->addWidget(sortCheckBox);
|
flowWidget->addWidget(sortCheckBox);
|
||||||
flowWidget->addWidget(searchCheckBox);
|
flowWidget->addWidget(searchCheckBox);
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#define PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H
|
#define PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H
|
||||||
|
|
||||||
#include "../general/layout_containers/flow_widget.h"
|
#include "../general/layout_containers/flow_widget.h"
|
||||||
|
#include "printing_selector.h"
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
|
@ -12,11 +13,12 @@ class PrintingSelectorViewOptionsWidget : public QWidget
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PrintingSelectorViewOptionsWidget(QWidget *parent);
|
explicit PrintingSelectorViewOptionsWidget(QWidget *parent, PrintingSelector *_printingSelector);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHBoxLayout *layout;
|
QHBoxLayout *layout;
|
||||||
FlowWidget *flowWidget;
|
FlowWidget *flowWidget;
|
||||||
|
PrintingSelector *printingSelector;
|
||||||
QCheckBox *sortCheckBox;
|
QCheckBox *sortCheckBox;
|
||||||
QCheckBox *searchCheckBox;
|
QCheckBox *searchCheckBox;
|
||||||
QCheckBox *cardSizeCheckBox;
|
QCheckBox *cardSizeCheckBox;
|
||||||
|
|
|
||||||
|
|
@ -247,6 +247,12 @@ SettingsCache::SettingsCache()
|
||||||
bumpSetsWithCardsInDeckToTop = settings->value("cards/bumpsetswithcardsindecktotop", true).toBool();
|
bumpSetsWithCardsInDeckToTop = settings->value("cards/bumpsetswithcardsindecktotop", true).toBool();
|
||||||
printingSelectorSortOrder = settings->value("cards/printingselectorsortorder", 1).toInt();
|
printingSelectorSortOrder = settings->value("cards/printingselectorsortorder", 1).toInt();
|
||||||
printingSelectorCardSize = settings->value("cards/printingselectorcardsize", 100).toInt();
|
printingSelectorCardSize = settings->value("cards/printingselectorcardsize", 100).toInt();
|
||||||
|
printingSelectorSortOptionsVisible = settings->value("cards/printingselectorsortoptionsvisible", true).toBool();
|
||||||
|
printingSelectorSearchBarVisible = settings->value("cards/printingselectorcardsearchbarvisible", true).toBool();
|
||||||
|
printingSelectorCardSizeSliderVisible =
|
||||||
|
settings->value("cards/printingselectorcardsizeslidervisible", true).toBool();
|
||||||
|
printingSelectorNavigationButtonsVisible =
|
||||||
|
settings->value("cards/printingselectornavigationbuttonsvisible", true).toBool();
|
||||||
horizontalHand = settings->value("hand/horizontal", true).toBool();
|
horizontalHand = settings->value("hand/horizontal", true).toBool();
|
||||||
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
|
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
|
||||||
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt();
|
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt();
|
||||||
|
|
@ -560,6 +566,34 @@ void SettingsCache::setPrintingSelectorCardSize(int _printingSelectorCardSize)
|
||||||
emit printingSelectorCardSizeChanged();
|
emit printingSelectorCardSizeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T _sortOptionsVisible)
|
||||||
|
{
|
||||||
|
printingSelectorSortOptionsVisible = _sortOptionsVisible;
|
||||||
|
settings->setValue("cards/printingselectorsortoptionsvisible", printingSelectorSortOptionsVisible);
|
||||||
|
emit printingSelectorSortOptionsVisibleChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T _searchBarVisible)
|
||||||
|
{
|
||||||
|
printingSelectorSearchBarVisible = _searchBarVisible;
|
||||||
|
settings->setValue("cards/printingselectorsearchbarvisible", printingSelectorSearchBarVisible);
|
||||||
|
emit printingSelectorSearchBarVisibleChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T _cardSizeSliderVisible)
|
||||||
|
{
|
||||||
|
printingSelectorCardSizeSliderVisible = _cardSizeSliderVisible;
|
||||||
|
settings->setValue("cards/printingselectorcardsizeslidervisible", printingSelectorCardSizeSliderVisible);
|
||||||
|
emit printingSelectorCardSizeSliderVisibleChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible)
|
||||||
|
{
|
||||||
|
printingSelectorNavigationButtonsVisible = _navigationButtonsVisible;
|
||||||
|
settings->setValue("cards/printingselectornavigationbuttonsvisible", printingSelectorNavigationButtonsVisible);
|
||||||
|
emit printingSelectorNavigationButtonsVisibleChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
|
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
|
||||||
{
|
{
|
||||||
horizontalHand = static_cast<bool>(_horizontalHand);
|
horizontalHand = static_cast<bool>(_horizontalHand);
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,10 @@ signals:
|
||||||
void bumpSetsWithCardsInDeckToTopChanged();
|
void bumpSetsWithCardsInDeckToTopChanged();
|
||||||
void printingSelectorSortOrderChanged();
|
void printingSelectorSortOrderChanged();
|
||||||
void printingSelectorCardSizeChanged();
|
void printingSelectorCardSizeChanged();
|
||||||
|
void printingSelectorSortOptionsVisibleChanged();
|
||||||
|
void printingSelectorSearchBarVisibleChanged();
|
||||||
|
void printingSelectorCardSizeSliderVisibleChanged();
|
||||||
|
void printingSelectorNavigationButtonsVisibleChanged();
|
||||||
void horizontalHandChanged();
|
void horizontalHandChanged();
|
||||||
void handJustificationChanged();
|
void handJustificationChanged();
|
||||||
void invertVerticalCoordinateChanged();
|
void invertVerticalCoordinateChanged();
|
||||||
|
|
@ -107,6 +111,10 @@ private:
|
||||||
bool bumpSetsWithCardsInDeckToTop;
|
bool bumpSetsWithCardsInDeckToTop;
|
||||||
int printingSelectorSortOrder;
|
int printingSelectorSortOrder;
|
||||||
int printingSelectorCardSize;
|
int printingSelectorCardSize;
|
||||||
|
bool printingSelectorSortOptionsVisible;
|
||||||
|
bool printingSelectorSearchBarVisible;
|
||||||
|
bool printingSelectorCardSizeSliderVisible;
|
||||||
|
bool printingSelectorNavigationButtonsVisible;
|
||||||
bool horizontalHand;
|
bool horizontalHand;
|
||||||
bool invertVerticalCoordinate;
|
bool invertVerticalCoordinate;
|
||||||
int minPlayersForMultiColumnLayout;
|
int minPlayersForMultiColumnLayout;
|
||||||
|
|
@ -323,6 +331,22 @@ public:
|
||||||
{
|
{
|
||||||
return printingSelectorCardSize;
|
return printingSelectorCardSize;
|
||||||
}
|
}
|
||||||
|
bool getPrintingSelectorSortOptionsVisible() const
|
||||||
|
{
|
||||||
|
return printingSelectorSortOptionsVisible;
|
||||||
|
}
|
||||||
|
bool getPrintingSelectorSearchBarVisible() const
|
||||||
|
{
|
||||||
|
return printingSelectorSearchBarVisible;
|
||||||
|
}
|
||||||
|
bool getPrintingSelectorCardSizeSliderVisible() const
|
||||||
|
{
|
||||||
|
return printingSelectorCardSizeSliderVisible;
|
||||||
|
}
|
||||||
|
bool getPrintingSelectorNavigationButtonsVisible() const
|
||||||
|
{
|
||||||
|
return printingSelectorNavigationButtonsVisible;
|
||||||
|
}
|
||||||
bool getHorizontalHand() const
|
bool getHorizontalHand() const
|
||||||
{
|
{
|
||||||
return horizontalHand;
|
return horizontalHand;
|
||||||
|
|
@ -606,6 +630,10 @@ public slots:
|
||||||
void setBumpSetsWithCardsInDeckToTop(QT_STATE_CHANGED_T _bumpSetsWithCardsInDeckToTop);
|
void setBumpSetsWithCardsInDeckToTop(QT_STATE_CHANGED_T _bumpSetsWithCardsInDeckToTop);
|
||||||
void setPrintingSelectorSortOrder(int _printingSelectorSortOrder);
|
void setPrintingSelectorSortOrder(int _printingSelectorSortOrder);
|
||||||
void setPrintingSelectorCardSize(int _printingSelectorCardSize);
|
void setPrintingSelectorCardSize(int _printingSelectorCardSize);
|
||||||
|
void setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T _sortOptionsVisible);
|
||||||
|
void setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T _searchBarVisible);
|
||||||
|
void setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T _cardSizeSliderVisible);
|
||||||
|
void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible);
|
||||||
void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand);
|
void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand);
|
||||||
void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate);
|
void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate);
|
||||||
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);
|
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);
|
||||||
|
|
|
||||||
|
|
@ -169,6 +169,18 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd
|
||||||
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
|
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T /* _sortOptionsVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T /* _searchBarVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T /* _cardSizeSliderVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
|
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,18 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd
|
||||||
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
|
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T /* _sortOptionsVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T /* _searchBarVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T /* _cardSizeSliderVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */)
|
||||||
|
{
|
||||||
|
}
|
||||||
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
|
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue