mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-15 06:52:15 -07:00
Address comments.
This commit is contained in:
parent
579a361b1a
commit
74ca3cc214
8 changed files with 79 additions and 104 deletions
|
|
@ -305,7 +305,7 @@ void TabDeckEditorVisual::loadLayout()
|
|||
databaseDisplayDockWidget->setMinimumSize(100, 100);
|
||||
databaseDisplayDockWidget->setMaximumSize(1400, 5000);
|
||||
|
||||
QTimer::singleShot(100, this, SLOT(freeDocksSize()));
|
||||
QTimer::singleShot(100, this, &TabDeckEditorVisual::freeDocksSize);
|
||||
}
|
||||
|
||||
void TabDeckEditorVisual::retranslateUi()
|
||||
|
|
@ -457,6 +457,7 @@ void TabDeckEditorVisual::dockTopLevelChanged(bool topLevel)
|
|||
|
||||
if (o == deckAnalyticsDock) {
|
||||
aDeckAnalyticsDockFloating->setChecked(topLevel);
|
||||
return;
|
||||
}
|
||||
|
||||
if (o == printingSelectorDockWidget) {
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
|
||||
AbstractTabDeckEditor *_deckEditor,
|
||||
DeckListModel *model,
|
||||
CardDatabaseModel *card_database_model,
|
||||
CardDatabaseDisplayModel *card_database_display_model)
|
||||
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(model), cardDatabaseModel(card_database_model),
|
||||
cardDatabaseDisplayModel(card_database_display_model)
|
||||
DeckListModel *_deckModel,
|
||||
CardDatabaseModel *_cardDatabaseModel,
|
||||
CardDatabaseDisplayModel *_cardDatabaseDisplayModel)
|
||||
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), cardDatabaseModel(_cardDatabaseModel),
|
||||
cardDatabaseDisplayModel(_cardDatabaseDisplayModel)
|
||||
{
|
||||
this->setTabsClosable(true); // Enable tab closing
|
||||
connect(this, &QTabWidget::tabCloseRequested, this, &TabDeckEditorVisualTabWidget::handleTabClose);
|
||||
|
|
@ -28,7 +28,7 @@ TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
|
|||
&AbstractTabDeckEditor::actAddCard);
|
||||
|
||||
visualDatabaseDisplay =
|
||||
new VisualDatabaseDisplayWidget(this, deckEditor, cardDatabaseModel, cardDatabaseDisplayModel);
|
||||
new VisualDatabaseDisplayWidget(this, deckEditor, _cardDatabaseModel, _cardDatabaseDisplayModel);
|
||||
visualDatabaseDisplay->setObjectName("visualDatabaseView");
|
||||
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardHoveredDatabaseDisplay, this,
|
||||
&TabDeckEditorVisualTabWidget::onCardChangedDatabaseDisplay);
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@ class TabDeckEditorVisualTabWidget : public QTabWidget
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit TabDeckEditorVisualTabWidget(QWidget *parent = nullptr,
|
||||
AbstractTabDeckEditor *deckEditor = nullptr,
|
||||
DeckListModel *deckModel = nullptr,
|
||||
CardDatabaseModel *card_database_model = nullptr,
|
||||
CardDatabaseDisplayModel *card_database_display_model = nullptr);
|
||||
explicit TabDeckEditorVisualTabWidget(QWidget *parent,
|
||||
AbstractTabDeckEditor *_deckEditor,
|
||||
DeckListModel *_deckModel,
|
||||
CardDatabaseModel *_cardDatabaseModel,
|
||||
CardDatabaseDisplayModel *_cardDatabaseDisplayModel);
|
||||
|
||||
// Utility functions
|
||||
void addNewTab(QWidget *widget, const QString &title);
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ void FlatCardGroupDisplayWidget::updateCardDisplays()
|
|||
for (CardInfoPictureWithTextOverlayWidget *widget : existingWidgets) {
|
||||
if (!usedWidgets.contains(widget)) {
|
||||
flowWidget->layout()->removeWidget(widget);
|
||||
delete widget;
|
||||
widget->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -96,28 +96,30 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
|
|||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
if (displayType == "overlap") {
|
||||
auto *display_widget = new OverlappedCardGroupDisplayWidget(
|
||||
cardGroupContainer, deckListModel, zoneName, cardGroup, activeGroupCriteria, activeSortCriteria,
|
||||
subBannerOpacity, cardSizeWidget);
|
||||
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)),
|
||||
this, SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
||||
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
||||
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
|
||||
&CardGroupDisplayWidget::onActiveSortCriteriaChanged);
|
||||
cardGroupLayout->addWidget(display_widget);
|
||||
} else if (displayType == "flat") {
|
||||
auto *display_widget = new FlatCardGroupDisplayWidget(
|
||||
cardGroupContainer, deckListModel, zoneName, cardGroup, activeGroupCriteria, activeSortCriteria,
|
||||
subBannerOpacity, cardSizeWidget);
|
||||
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)),
|
||||
this, SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
||||
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
||||
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
|
||||
&CardGroupDisplayWidget::onActiveSortCriteriaChanged);
|
||||
cardGroupLayout->addWidget(display_widget);
|
||||
}
|
||||
if (found) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (displayType == "overlap") {
|
||||
auto *display_widget = new OverlappedCardGroupDisplayWidget(
|
||||
cardGroupContainer, deckListModel, zoneName, cardGroup, activeGroupCriteria, activeSortCriteria,
|
||||
subBannerOpacity, cardSizeWidget);
|
||||
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)), this,
|
||||
SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
||||
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
||||
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
|
||||
&CardGroupDisplayWidget::onActiveSortCriteriaChanged);
|
||||
cardGroupLayout->addWidget(display_widget);
|
||||
} else if (displayType == "flat") {
|
||||
auto *display_widget = new FlatCardGroupDisplayWidget(cardGroupContainer, deckListModel, zoneName,
|
||||
cardGroup, activeGroupCriteria, activeSortCriteria,
|
||||
subBannerOpacity, cardSizeWidget);
|
||||
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)), this,
|
||||
SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
||||
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
||||
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
|
||||
&CardGroupDisplayWidget::onActiveSortCriteriaChanged);
|
||||
cardGroupLayout->addWidget(display_widget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +135,6 @@ void DeckCardZoneDisplayWidget::deleteCardGroupIfItDoesNotExist()
|
|||
if (!validGroups.contains(cardGroupDisplayWidget->cardGroupCategory)) {
|
||||
cardGroupLayout->removeWidget(cardGroupDisplayWidget);
|
||||
cardGroupDisplayWidget->deleteLater(); // Properly delete the widget after the event loop cycles
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,11 +123,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
|||
groupAndSortContainer->setLayout(groupAndSortLayout);
|
||||
|
||||
groupByComboBox = new QComboBox();
|
||||
QStringList groupProperties;
|
||||
groupProperties << "maintype"
|
||||
<< "colors"
|
||||
<< "cmc"
|
||||
<< "name";
|
||||
QStringList groupProperties = {"maintype", "colors", "cmc", "name"};
|
||||
groupByComboBox->addItems(groupProperties);
|
||||
groupByComboBox->setMinimumWidth(300);
|
||||
connect(groupByComboBox, QOverload<const QString &>::of(&QComboBox::currentTextChanged), this,
|
||||
|
|
@ -137,6 +133,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
|||
sortCriteriaButton = new SettingsButtonWidget(this);
|
||||
|
||||
sortLabel = new QLabel(sortCriteriaButton);
|
||||
sortLabel->setWordWrap(true);
|
||||
|
||||
QStringList sortProperties = {"colors", "cmc", "name", "maintype"};
|
||||
sortByListWidget = new QListWidget();
|
||||
|
|
@ -151,7 +148,6 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
|||
|
||||
connect(sortByListWidget->model(), &QAbstractItemModel::rowsMoved, this,
|
||||
&VisualDeckEditorWidget::actChangeActiveSortCriteria);
|
||||
// connect(sortByListWidget, &QListWidget::itemChanged, this, &VisualDeckEditorWidget::actChangeActiveSortCriteria);
|
||||
actChangeActiveSortCriteria();
|
||||
|
||||
sortByListWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||
|
|
@ -193,7 +189,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
|||
|
||||
void VisualDeckEditorWidget::retranslateUi()
|
||||
{
|
||||
sortLabel->setText(tr("Click and drag to change\nthe sort order within the groups"));
|
||||
sortLabel->setText(tr("Click and drag to change the sort order within the groups"));
|
||||
searchPushButton->setText(tr("Quick search and add card"));
|
||||
displayTypeButton->setText(tr("Flat Layout"));
|
||||
}
|
||||
|
|
@ -206,12 +202,19 @@ void VisualDeckEditorWidget::updateZoneWidgets()
|
|||
|
||||
void VisualDeckEditorWidget::updateDisplayType()
|
||||
{
|
||||
if (displayTypeButton->text() == tr("Overlap Layout")) {
|
||||
emit displayTypeChanged("flat");
|
||||
displayTypeButton->setText("Flat Layout");
|
||||
} else {
|
||||
emit displayTypeChanged("overlap");
|
||||
displayTypeButton->setText(tr("Overlap Layout"));
|
||||
// Toggle the display type
|
||||
currentDisplayType = (currentDisplayType == DisplayType::Overlap) ? DisplayType::Flat : DisplayType::Overlap;
|
||||
|
||||
// Update UI and emit signal
|
||||
switch (currentDisplayType) {
|
||||
case DisplayType::Flat:
|
||||
emit displayTypeChanged("flat");
|
||||
displayTypeButton->setText(tr("Flat Layout"));
|
||||
break;
|
||||
case DisplayType::Overlap:
|
||||
emit displayTypeChanged("overlap");
|
||||
displayTypeButton->setText(tr("Overlap Layout"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -224,23 +227,24 @@ void VisualDeckEditorWidget::addZoneIfDoesNotExist()
|
|||
for (DeckCardZoneDisplayWidget *displayWidget : cardZoneDisplayWidgets) {
|
||||
if (displayWidget->zoneName == zone) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
DeckCardZoneDisplayWidget *zoneDisplayWidget = new DeckCardZoneDisplayWidget(
|
||||
zoneContainer, deckListModel, zone, activeGroupCriteria, activeSortCriteria, 20, 10, cardSizeWidget);
|
||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover);
|
||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this,
|
||||
&VisualDeckEditorWidget::onCardClick);
|
||||
connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged);
|
||||
connect(this, &VisualDeckEditorWidget::activeGroupCriteriaChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::onActiveGroupCriteriaChanged);
|
||||
connect(this, &VisualDeckEditorWidget::displayTypeChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::refreshDisplayType);
|
||||
zoneContainerLayout->addWidget(zoneDisplayWidget);
|
||||
if (found) {
|
||||
continue;
|
||||
}
|
||||
DeckCardZoneDisplayWidget *zoneDisplayWidget = new DeckCardZoneDisplayWidget(
|
||||
zoneContainer, deckListModel, zone, activeGroupCriteria, activeSortCriteria, 20, 10, cardSizeWidget);
|
||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover);
|
||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this, &VisualDeckEditorWidget::onCardClick);
|
||||
connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged);
|
||||
connect(this, &VisualDeckEditorWidget::activeGroupCriteriaChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::onActiveGroupCriteriaChanged);
|
||||
connect(this, &VisualDeckEditorWidget::displayTypeChanged, zoneDisplayWidget,
|
||||
&DeckCardZoneDisplayWidget::refreshDisplayType);
|
||||
zoneContainerLayout->addWidget(zoneDisplayWidget);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -251,9 +255,9 @@ void VisualDeckEditorWidget::deleteZoneIfDoesNotExist()
|
|||
for (DeckCardZoneDisplayWidget *displayWidget : cardZoneDisplayWidgets) {
|
||||
bool found = false;
|
||||
for (const QString &zone : *deckListModel->getZones()) {
|
||||
|
||||
if (displayWidget->zoneName == zone) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -291,49 +295,13 @@ void VisualDeckEditorWidget::actChangeActiveSortCriteria()
|
|||
void VisualDeckEditorWidget::decklistDataChanged(QModelIndex topLeft, QModelIndex bottomRight)
|
||||
{
|
||||
// Might use these at some point.
|
||||
(void)topLeft;
|
||||
(void)bottomRight;
|
||||
Q_UNUSED(topLeft);
|
||||
Q_UNUSED(bottomRight);
|
||||
// Necessary to delay this in this manner else the updateDisplay will nuke widgets while their onClick event
|
||||
// hasn't returned yet. Interval of 0 means QT will schedule this after the current event loop has finished.
|
||||
updateZoneWidgets();
|
||||
}
|
||||
|
||||
/*void VisualDeckEditorWidget::sortCards()
|
||||
{
|
||||
QStringList sortCriteria;
|
||||
sortCriteria.append(activeSortCriteria);
|
||||
this->sortCardList(sortCriteria, Qt::SortOrder::AscendingOrder);
|
||||
QString lastSortCriteriaValue = "";
|
||||
overlapCategories = new QWidget(scrollArea);
|
||||
overlapCategoriesLayout = new QVBoxLayout(overlapCategories);
|
||||
OverlapWidget *printings_group_widget = new OverlapWidget(80, 1, 1, Qt::Vertical, overlapCategories);
|
||||
overlap_control_widget->connectOverlapWidget(printings_group_widget);
|
||||
for (int i = 0; i < cards->size(); i++) {
|
||||
CardInfoPtr info = cards->at(i);
|
||||
if (info) {
|
||||
if (info->getProperty(activeSortCriteria) != lastSortCriteriaValue) {
|
||||
printings_group_widget->adjustMaxColumnsAndRows();
|
||||
lastSortCriteriaValue = info->getProperty(activeSortCriteria);
|
||||
printings_group_widget = new OverlapWidget(80, 1, 1, Qt::Vertical, overlapCategories);
|
||||
overlapCategoriesLayout->addWidget(printings_group_widget);
|
||||
overlap_control_widget->connectOverlapWidget(printings_group_widget);
|
||||
}
|
||||
CardInfoPictureWithTextOverlayWidget* display = new
|
||||
CardInfoPictureWithTextOverlayWidget(printings_group_widget, true);
|
||||
|
||||
display->setCard(info);
|
||||
printings_group_widget->addWidget(display);
|
||||
update();
|
||||
} else {
|
||||
qDebug() << "Card not found in database!";
|
||||
}
|
||||
}
|
||||
printings_group_widget->adjustMaxColumnsAndRows();
|
||||
|
||||
scrollArea->setWidget(overlapCategories);
|
||||
update();
|
||||
}*/
|
||||
|
||||
void VisualDeckEditorWidget::onHover(CardInfoPtr hoveredCard)
|
||||
{
|
||||
emit activeCardChanged(hoveredCard);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,12 @@
|
|||
#include <QWidget>
|
||||
#include <qscrollarea.h>
|
||||
|
||||
enum class DisplayType
|
||||
{
|
||||
Flat,
|
||||
Overlap
|
||||
};
|
||||
|
||||
class VisualDeckEditorWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -62,6 +68,7 @@ private:
|
|||
CardCompleterProxyModel *proxyModel;
|
||||
QCompleter *completer;
|
||||
QPushButton *searchPushButton;
|
||||
DisplayType currentDisplayType = DisplayType::Overlap;
|
||||
QPushButton *displayTypeButton;
|
||||
QWidget *groupAndSortContainer;
|
||||
QHBoxLayout *groupAndSortLayout;
|
||||
|
|
|
|||
|
|
@ -66,8 +66,6 @@ void CardSearchModel::updateSearchResults(const QString &query)
|
|||
|
||||
emit dataChanged(index(0, 0), index(rowCount() - 1, 0));
|
||||
emit layoutChanged();
|
||||
for (SearchResult &result : searchResults) {
|
||||
qDebug() << result.card->getName();
|
||||
}
|
||||
|
||||
endResetModel();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue