mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-17 07:52:16 -07:00
Implement separate comboBoxes for sorting and grouping.
This commit is contained in:
parent
f66961e488
commit
34287b0714
6 changed files with 121 additions and 41 deletions
|
|
@ -9,11 +9,12 @@
|
||||||
DeckCardZoneDisplayWidget::DeckCardZoneDisplayWidget(QWidget *parent,
|
DeckCardZoneDisplayWidget::DeckCardZoneDisplayWidget(QWidget *parent,
|
||||||
DeckListModel *_deckListModel,
|
DeckListModel *_deckListModel,
|
||||||
QString _zoneName,
|
QString _zoneName,
|
||||||
|
QString _activeGroupCriteria,
|
||||||
QString _activeSortCriteria,
|
QString _activeSortCriteria,
|
||||||
int bannerOpacity,
|
int bannerOpacity,
|
||||||
int subBannerOpacity)
|
int subBannerOpacity)
|
||||||
: QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), activeSortCriteria(_activeSortCriteria),
|
: QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), activeGroupCriteria(_activeGroupCriteria),
|
||||||
bannerOpacity(bannerOpacity), subBannerOpacity(subBannerOpacity)
|
activeSortCriteria(_activeSortCriteria), bannerOpacity(bannerOpacity), subBannerOpacity(subBannerOpacity)
|
||||||
{
|
{
|
||||||
layout = new QVBoxLayout(this);
|
layout = new QVBoxLayout(this);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
@ -61,7 +62,7 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
|
||||||
QList<OverlappedCardGroupDisplayWidget *> cardGroupsDisplayWidgets =
|
QList<OverlappedCardGroupDisplayWidget *> cardGroupsDisplayWidgets =
|
||||||
cardGroupContainer->findChildren<OverlappedCardGroupDisplayWidget *>();
|
cardGroupContainer->findChildren<OverlappedCardGroupDisplayWidget *>();
|
||||||
|
|
||||||
QList<QString> cardGroups = getSortCriteriaValueList();
|
QList<QString> cardGroups = getGroupCriteriaValueList();
|
||||||
|
|
||||||
for (QString cardGroup : cardGroups) {
|
for (QString cardGroup : cardGroups) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
@ -72,11 +73,13 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
OverlappedCardGroupDisplayWidget *display_widget = new OverlappedCardGroupDisplayWidget(
|
OverlappedCardGroupDisplayWidget *display_widget = new OverlappedCardGroupDisplayWidget(cardGroupContainer, deckListModel, zoneName, cardGroup,
|
||||||
this, deckListModel, zoneName, cardGroup, activeSortCriteria, subBannerOpacity);
|
activeGroupCriteria, activeSortCriteria, subBannerOpacity);
|
||||||
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)), this,
|
connect(display_widget, SIGNAL(cardClicked(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)), this,
|
||||||
SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
SLOT(onClick(QMouseEvent *, CardInfoPictureWithTextOverlayWidget *)));
|
||||||
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
connect(display_widget, SIGNAL(cardHovered(CardInfoPtr)), this, SLOT(onHover(CardInfoPtr)));
|
||||||
|
connect(this, &DeckCardZoneDisplayWidget::activeSortCriteriaChanged, display_widget,
|
||||||
|
&OverlappedCardGroupDisplayWidget::onActiveSortCriteriaChanged);
|
||||||
cardGroupLayout->addWidget(display_widget);
|
cardGroupLayout->addWidget(display_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -85,37 +88,59 @@ void DeckCardZoneDisplayWidget::addCardGroupIfItDoesNotExist()
|
||||||
void DeckCardZoneDisplayWidget::deleteCardGroupIfItDoesNotExist()
|
void DeckCardZoneDisplayWidget::deleteCardGroupIfItDoesNotExist()
|
||||||
{
|
{
|
||||||
QList<OverlappedCardGroupDisplayWidget *> cardGroupsDisplayWidgets =
|
QList<OverlappedCardGroupDisplayWidget *> cardGroupsDisplayWidgets =
|
||||||
cardGroupLayout->findChildren<OverlappedCardGroupDisplayWidget *>();
|
cardGroupContainer->findChildren<OverlappedCardGroupDisplayWidget *>();
|
||||||
|
|
||||||
|
QList<QString> validGroups = getGroupCriteriaValueList();
|
||||||
|
|
||||||
|
qDebug() << "DeckCardZoneDisplayWidget: Checking for obsolete card groups.";
|
||||||
|
qDebug() << "Valid groups (should remain):" << validGroups;
|
||||||
|
|
||||||
for (OverlappedCardGroupDisplayWidget *cardGroupDisplayWidget : cardGroupsDisplayWidgets) {
|
for (OverlappedCardGroupDisplayWidget *cardGroupDisplayWidget : cardGroupsDisplayWidgets) {
|
||||||
bool found = false;
|
qDebug() << "Checking group:" << cardGroupDisplayWidget->cardGroupCategory;
|
||||||
for (QString cardGroup : getSortCriteriaValueList()) {
|
|
||||||
if (cardGroupDisplayWidget->cardGroupCategory == cardGroup) {
|
if (!validGroups.contains(cardGroupDisplayWidget->cardGroupCategory)) {
|
||||||
found = true;
|
qDebug() << "Deleting group:" << cardGroupDisplayWidget->cardGroupCategory;
|
||||||
|
cardGroupLayout->removeWidget(cardGroupDisplayWidget);
|
||||||
|
cardGroupDisplayWidget->deleteLater(); // Properly delete the widget after the event loop cycles
|
||||||
|
} else {
|
||||||
|
qDebug() << "Keeping group:" << cardGroupDisplayWidget->cardGroupCategory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
qDebug() << "Finished checking for obsolete card groups.";
|
||||||
cardGroupLayout->removeWidget(cardGroupDisplayWidget);
|
}
|
||||||
}
|
|
||||||
}
|
void DeckCardZoneDisplayWidget::onActiveGroupCriteriaChanged(QString _activeGroupCriteria)
|
||||||
|
{
|
||||||
|
activeGroupCriteria = _activeGroupCriteria;
|
||||||
|
qDebug() << "DeckCardZoneDisplayWidget says: We group by " << activeGroupCriteria << " and display cards";
|
||||||
|
displayCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged(QString _activeSortCriteria)
|
void DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged(QString _activeSortCriteria)
|
||||||
{
|
{
|
||||||
activeSortCriteria = _activeSortCriteria;
|
activeSortCriteria = _activeSortCriteria;
|
||||||
|
qDebug() << "DeckCardZoneDisplayWidget says: we sort by" << activeSortCriteria << " and emit a signal";
|
||||||
|
emit activeSortCriteriaChanged(activeSortCriteria);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> DeckCardZoneDisplayWidget::getSortCriteriaValueList()
|
QList<QString> DeckCardZoneDisplayWidget::getGroupCriteriaValueList()
|
||||||
{
|
{
|
||||||
QList<QString> sortCriteriaValues;
|
QList<QString> groupCriteriaValues;
|
||||||
|
|
||||||
QList<CardInfoPtr> *cardsInZone = deckListModel->getCardsAsCardInfoPtrsForZone(zoneName);
|
QList<CardInfoPtr> *cardsInZone = deckListModel->getCardsAsCardInfoPtrsForZone(zoneName);
|
||||||
|
|
||||||
for (CardInfoPtr cardInZone : *cardsInZone) {
|
for (CardInfoPtr cardInZone : *cardsInZone) {
|
||||||
sortCriteriaValues.append(cardInZone->getProperty(activeSortCriteria));
|
groupCriteriaValues.append(cardInZone->getProperty(activeGroupCriteria));
|
||||||
}
|
}
|
||||||
|
|
||||||
sortCriteriaValues.removeDuplicates();
|
groupCriteriaValues.removeDuplicates();
|
||||||
sortCriteriaValues.sort();
|
groupCriteriaValues.sort();
|
||||||
return sortCriteriaValues;
|
|
||||||
|
qDebug() << "These are the group by criteria values";
|
||||||
|
for (QString groupCriteria : groupCriteriaValues) {
|
||||||
|
qDebug() << groupCriteria;
|
||||||
|
}
|
||||||
|
|
||||||
|
return groupCriteriaValues;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ public:
|
||||||
DeckCardZoneDisplayWidget(QWidget *parent,
|
DeckCardZoneDisplayWidget(QWidget *parent,
|
||||||
DeckListModel *deckListModel,
|
DeckListModel *deckListModel,
|
||||||
QString zoneName,
|
QString zoneName,
|
||||||
|
QString activeGroupCriteria,
|
||||||
QString activeSortCriteria,
|
QString activeSortCriteria,
|
||||||
int bannerOpacity,
|
int bannerOpacity,
|
||||||
int subBannerOpacity);
|
int subBannerOpacity);
|
||||||
|
|
@ -32,14 +33,17 @@ public slots:
|
||||||
void displayCards();
|
void displayCards();
|
||||||
void addCardGroupIfItDoesNotExist();
|
void addCardGroupIfItDoesNotExist();
|
||||||
void deleteCardGroupIfItDoesNotExist();
|
void deleteCardGroupIfItDoesNotExist();
|
||||||
|
void onActiveGroupCriteriaChanged(QString activeGroupCriteria);
|
||||||
void onActiveSortCriteriaChanged(QString activeSortCriteria);
|
void onActiveSortCriteriaChanged(QString activeSortCriteria);
|
||||||
QList<QString> getSortCriteriaValueList();
|
QList<QString> getGroupCriteriaValueList();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card, QString zoneName);
|
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card, QString zoneName);
|
||||||
void cardHovered(CardInfoPtr card);
|
void cardHovered(CardInfoPtr card);
|
||||||
|
void activeSortCriteriaChanged(QString activeSortCriteria);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QString activeGroupCriteria;
|
||||||
QString activeSortCriteria;
|
QString activeSortCriteria;
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
BannerWidget *banner;
|
BannerWidget *banner;
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,11 @@ OverlappedCardGroupDisplayWidget::OverlappedCardGroupDisplayWidget(QWidget *pare
|
||||||
DeckListModel *_deckListModel,
|
DeckListModel *_deckListModel,
|
||||||
QString _zoneName,
|
QString _zoneName,
|
||||||
QString _cardGroupCategory,
|
QString _cardGroupCategory,
|
||||||
|
QString _activeGroupCriteria,
|
||||||
QString _activeSortCriteria,
|
QString _activeSortCriteria,
|
||||||
int bannerOpacity)
|
int bannerOpacity)
|
||||||
: QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), cardGroupCategory(_cardGroupCategory),
|
: QWidget(parent), deckListModel(_deckListModel), zoneName(_zoneName), cardGroupCategory(_cardGroupCategory),
|
||||||
activeSortCriteria(_activeSortCriteria)
|
activeGroupCriteria(_activeGroupCriteria), activeSortCriteria(_activeSortCriteria)
|
||||||
{
|
{
|
||||||
layout = new QVBoxLayout(this);
|
layout = new QVBoxLayout(this);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
@ -52,6 +53,7 @@ void OverlappedCardGroupDisplayWidget::updateCardDisplays()
|
||||||
widgetMap[widget->getInfo()->getName()].append(widget);
|
widgetMap[widget->getInfo()->getName()].append(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove excess widgets
|
||||||
for (auto it = widgetMap.begin(); it != widgetMap.end(); ++it) {
|
for (auto it = widgetMap.begin(); it != widgetMap.end(); ++it) {
|
||||||
QString name = it.key();
|
QString name = it.key();
|
||||||
QList<CardInfoPictureWithTextOverlayWidget *> &widgets = it.value();
|
QList<CardInfoPictureWithTextOverlayWidget *> &widgets = it.value();
|
||||||
|
|
@ -59,34 +61,45 @@ void OverlappedCardGroupDisplayWidget::updateCardDisplays()
|
||||||
int neededCount = requiredCounts.value(name, 0);
|
int neededCount = requiredCounts.value(name, 0);
|
||||||
while (widgets.size() > neededCount) {
|
while (widgets.size() > neededCount) {
|
||||||
CardInfoPictureWithTextOverlayWidget *widgetToRemove = widgets.takeLast();
|
CardInfoPictureWithTextOverlayWidget *widgetToRemove = widgets.takeLast();
|
||||||
overlapWidget->removeWidget(widgetToRemove);
|
overlapWidget->layout()->removeWidget(widgetToRemove); // Remove from layout
|
||||||
delete widgetToRemove;
|
delete widgetToRemove;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto it = requiredCounts.begin(); it != requiredCounts.end(); ++it) {
|
// Add missing widgets and reorder existing ones
|
||||||
QString name = it.key();
|
QList<CardInfoPictureWithTextOverlayWidget *> sortedWidgets;
|
||||||
int missingCount = it.value() - widgetMap[name].size();
|
for (const CardInfoPtr &card : cardsInZone) {
|
||||||
|
QString name = card->getName();
|
||||||
|
|
||||||
for (int i = 0; i < missingCount; ++i) {
|
if (!widgetMap[name].isEmpty()) {
|
||||||
|
// Use existing widget
|
||||||
|
CardInfoPictureWithTextOverlayWidget *widget = widgetMap[name].takeFirst();
|
||||||
|
sortedWidgets.append(widget);
|
||||||
|
} else {
|
||||||
|
// Create new widget if needed
|
||||||
auto *display = new CardInfoPictureWithTextOverlayWidget(overlapWidget, true);
|
auto *display = new CardInfoPictureWithTextOverlayWidget(overlapWidget, true);
|
||||||
|
display->setCard(card);
|
||||||
auto cardIt = std::find_if(cardsInZone.begin(), cardsInZone.end(),
|
|
||||||
[&](const CardInfoPtr &c) { return c->getName() == name; });
|
|
||||||
|
|
||||||
if (cardIt != cardsInZone.end()) {
|
|
||||||
display->setCard(*cardIt);
|
|
||||||
}
|
|
||||||
|
|
||||||
connect(display, &CardInfoPictureWithTextOverlayWidget::imageClicked, this,
|
connect(display, &CardInfoPictureWithTextOverlayWidget::imageClicked, this,
|
||||||
&OverlappedCardGroupDisplayWidget::onClick);
|
&OverlappedCardGroupDisplayWidget::onClick);
|
||||||
connect(display, &CardInfoPictureWithTextOverlayWidget::hoveredOnCard, this,
|
connect(display, &CardInfoPictureWithTextOverlayWidget::hoveredOnCard, this,
|
||||||
&OverlappedCardGroupDisplayWidget::onHover);
|
&OverlappedCardGroupDisplayWidget::onHover);
|
||||||
|
|
||||||
|
sortedWidgets.append(display);
|
||||||
overlapWidget->addWidget(display);
|
overlapWidget->addWidget(display);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// **Reorder Widgets in Layout**
|
||||||
|
for (CardInfoPictureWithTextOverlayWidget *widget : sortedWidgets) {
|
||||||
|
overlapWidget->removeWidget(widget);
|
||||||
|
overlapWidget->addWidget(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (CardInfoPictureWithTextOverlayWidget *widget : sortedWidgets) {
|
||||||
|
widget->raise();
|
||||||
|
}
|
||||||
|
|
||||||
overlapWidget->adjustMaxColumnsAndRows();
|
overlapWidget->adjustMaxColumnsAndRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,7 +114,7 @@ QList<CardInfoPtr> OverlappedCardGroupDisplayWidget::getCardsMatchingGroup(QList
|
||||||
for (int i = 0; i < cardsToSort->size(); ++i) {
|
for (int i = 0; i < cardsToSort->size(); ++i) {
|
||||||
CardInfoPtr info = cardsToSort->at(i);
|
CardInfoPtr info = cardsToSort->at(i);
|
||||||
if (info) {
|
if (info) {
|
||||||
if (info->getProperty(activeSortCriteria) == cardGroupCategory) {
|
if (info->getProperty(activeGroupCriteria) == cardGroupCategory) {
|
||||||
activeList.append(info);
|
activeList.append(info);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -120,6 +133,15 @@ void OverlappedCardGroupDisplayWidget::sortCardList(QList<CardInfoPtr> *cardsToS
|
||||||
std::sort(cardsToSort->begin(), cardsToSort->end(), comparator);
|
std::sort(cardsToSort->begin(), cardsToSort->end(), comparator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OverlappedCardGroupDisplayWidget::onActiveSortCriteriaChanged(QString _activeSortCriteria)
|
||||||
|
{
|
||||||
|
if (activeSortCriteria != _activeSortCriteria) {
|
||||||
|
activeSortCriteria = _activeSortCriteria;
|
||||||
|
qDebug() << "OverlappedCardGroupDisplayWidget changed the sort criteria to " << activeSortCriteria;
|
||||||
|
updateCardDisplays(); // Refresh display with new sorting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OverlappedCardGroupDisplayWidget::onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card)
|
void OverlappedCardGroupDisplayWidget::onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card)
|
||||||
{
|
{
|
||||||
emit cardClicked(event, card);
|
emit cardClicked(event, card);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ public:
|
||||||
DeckListModel *deckListModel,
|
DeckListModel *deckListModel,
|
||||||
QString zoneName,
|
QString zoneName,
|
||||||
QString cardGroupCategory,
|
QString cardGroupCategory,
|
||||||
|
QString activeGroupCriteria,
|
||||||
QString activeSortCriteria,
|
QString activeSortCriteria,
|
||||||
int bannerOpacity);
|
int bannerOpacity);
|
||||||
|
|
||||||
|
|
@ -29,6 +30,7 @@ public:
|
||||||
DeckListModel *deckListModel;
|
DeckListModel *deckListModel;
|
||||||
QString zoneName;
|
QString zoneName;
|
||||||
QString cardGroupCategory;
|
QString cardGroupCategory;
|
||||||
|
QString activeGroupCriteria;
|
||||||
QString activeSortCriteria;
|
QString activeSortCriteria;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
@ -36,6 +38,7 @@ public slots:
|
||||||
void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card);
|
void onClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card);
|
||||||
void onHover(CardInfoPtr card);
|
void onHover(CardInfoPtr card);
|
||||||
void updateCardDisplays();
|
void updateCardDisplays();
|
||||||
|
void onActiveSortCriteriaChanged(QString activeSortCriteria);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card);
|
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *card);
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,23 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
||||||
mainLayout = new QVBoxLayout();
|
mainLayout = new QVBoxLayout();
|
||||||
this->setLayout(mainLayout);
|
this->setLayout(mainLayout);
|
||||||
|
|
||||||
sortByComboBox = new QComboBox();
|
groupByComboBox = new QComboBox();
|
||||||
QStringList sortProperties;
|
QStringList groupProperties;
|
||||||
sortProperties << "maintype"
|
groupProperties << "maintype"
|
||||||
<< "colors"
|
<< "colors"
|
||||||
<< "cmc"
|
<< "cmc"
|
||||||
<< "name";
|
<< "name";
|
||||||
|
groupByComboBox->addItems(groupProperties);
|
||||||
|
connect(groupByComboBox, QOverload<const QString &>::of(&QComboBox::currentTextChanged), this,
|
||||||
|
&VisualDeckEditorWidget::actChangeActiveGroupCriteria);
|
||||||
|
actChangeActiveGroupCriteria();
|
||||||
|
|
||||||
|
sortByComboBox = new QComboBox();
|
||||||
|
QStringList sortProperties;
|
||||||
|
sortProperties << "name"
|
||||||
|
<< "cmc"
|
||||||
|
<< "colors"
|
||||||
|
<< "maintype";
|
||||||
sortByComboBox->addItems(sortProperties);
|
sortByComboBox->addItems(sortProperties);
|
||||||
connect(sortByComboBox, QOverload<const QString &>::of(&QComboBox::currentTextChanged), this,
|
connect(sortByComboBox, QOverload<const QString &>::of(&QComboBox::currentTextChanged), this,
|
||||||
&VisualDeckEditorWidget::actChangeActiveSortCriteria);
|
&VisualDeckEditorWidget::actChangeActiveSortCriteria);
|
||||||
|
|
@ -56,6 +67,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_
|
||||||
|
|
||||||
overlapControlWidget = new OverlapControlWidget(80, 1, 1, Qt::Vertical, this);
|
overlapControlWidget = new OverlapControlWidget(80, 1, 1, Qt::Vertical, this);
|
||||||
|
|
||||||
|
mainLayout->addWidget(groupByComboBox);
|
||||||
mainLayout->addWidget(sortByComboBox);
|
mainLayout->addWidget(sortByComboBox);
|
||||||
mainLayout->addWidget(scrollArea);
|
mainLayout->addWidget(scrollArea);
|
||||||
mainLayout->addWidget(overlapControlWidget);
|
mainLayout->addWidget(overlapControlWidget);
|
||||||
|
|
@ -80,13 +92,15 @@ void VisualDeckEditorWidget::addZoneIfDoesNotExist()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
DeckCardZoneDisplayWidget *zoneDisplayWidget =
|
DeckCardZoneDisplayWidget *zoneDisplayWidget = new DeckCardZoneDisplayWidget(
|
||||||
new DeckCardZoneDisplayWidget(zoneContainer, deckListModel, zone, activeSortCriteria, 20, 10);
|
zoneContainer, deckListModel, zone, activeGroupCriteria, activeSortCriteria, 20, 10);
|
||||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover);
|
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardHovered, this, &VisualDeckEditorWidget::onHover);
|
||||||
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this,
|
connect(zoneDisplayWidget, &DeckCardZoneDisplayWidget::cardClicked, this,
|
||||||
&VisualDeckEditorWidget::onCardClick);
|
&VisualDeckEditorWidget::onCardClick);
|
||||||
connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget,
|
connect(this, &VisualDeckEditorWidget::activeSortCriteriaChanged, zoneDisplayWidget,
|
||||||
&DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged);
|
&DeckCardZoneDisplayWidget::onActiveSortCriteriaChanged);
|
||||||
|
connect(this, &VisualDeckEditorWidget::activeGroupCriteriaChanged, zoneDisplayWidget,
|
||||||
|
&DeckCardZoneDisplayWidget::onActiveGroupCriteriaChanged);
|
||||||
zoneContainerLayout->addWidget(zoneDisplayWidget);
|
zoneContainerLayout->addWidget(zoneDisplayWidget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -117,9 +131,17 @@ void VisualDeckEditorWidget::resizeEvent(QResizeEvent *event)
|
||||||
zoneContainer->setMaximumWidth(scrollArea->viewport()->width());
|
zoneContainer->setMaximumWidth(scrollArea->viewport()->width());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualDeckEditorWidget::actChangeActiveGroupCriteria()
|
||||||
|
{
|
||||||
|
activeGroupCriteria = groupByComboBox->currentText();
|
||||||
|
qDebug() << "VDE says we group by " << activeGroupCriteria;
|
||||||
|
emit activeGroupCriteriaChanged(activeGroupCriteria);
|
||||||
|
}
|
||||||
|
|
||||||
void VisualDeckEditorWidget::actChangeActiveSortCriteria()
|
void VisualDeckEditorWidget::actChangeActiveSortCriteria()
|
||||||
{
|
{
|
||||||
activeSortCriteria = sortByComboBox->currentText();
|
activeSortCriteria = sortByComboBox->currentText();
|
||||||
|
qDebug() << "VDE says we sort by " << activeSortCriteria;
|
||||||
emit activeSortCriteriaChanged(activeSortCriteria);
|
emit activeSortCriteriaChanged(activeSortCriteria);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,19 +28,23 @@ public slots:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void activeCardChanged(CardInfoPtr activeCard);
|
void activeCardChanged(CardInfoPtr activeCard);
|
||||||
|
void activeGroupCriteriaChanged(QString activeGroupCriteria);
|
||||||
void activeSortCriteriaChanged(QString activeSortCriteria);
|
void activeSortCriteriaChanged(QString activeSortCriteria);
|
||||||
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName);
|
void cardClicked(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void onHover(CardInfoPtr hoveredCard);
|
void onHover(CardInfoPtr hoveredCard);
|
||||||
void onCardClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName);
|
void onCardClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName);
|
||||||
|
void actChangeActiveGroupCriteria();
|
||||||
void actChangeActiveSortCriteria();
|
void actChangeActiveSortCriteria();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DeckListModel *deckListModel;
|
DeckListModel *deckListModel;
|
||||||
QVBoxLayout *mainLayout;
|
QVBoxLayout *mainLayout;
|
||||||
|
QComboBox *groupByComboBox;
|
||||||
|
QString activeGroupCriteria = "maintype";
|
||||||
QComboBox *sortByComboBox;
|
QComboBox *sortByComboBox;
|
||||||
QString activeSortCriteria = "maintype";
|
QString activeSortCriteria = "name";
|
||||||
QScrollArea *scrollArea;
|
QScrollArea *scrollArea;
|
||||||
QWidget *zoneContainer;
|
QWidget *zoneContainer;
|
||||||
QVBoxLayout *zoneContainerLayout;
|
QVBoxLayout *zoneContainerLayout;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue