mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 08:52:15 -07:00
Sort correctly.
This commit is contained in:
parent
bbfdbe78d5
commit
08e743470d
8 changed files with 47 additions and 15 deletions
|
|
@ -39,7 +39,7 @@ void DeckPreviewTagAdditionWidget::mousePressEvent(QMouseEvent *event)
|
||||||
emit tagClicked();
|
emit tagClicked();
|
||||||
}
|
}
|
||||||
QWidget::mousePressEvent(event);
|
QWidget::mousePressEvent(event);
|
||||||
QStringList knownTags = parent->parent->parent->tagFilterWidget->getAllKnownTags();
|
QStringList knownTags = parent->parent->visualDeckStorageWidget->tagFilterWidget->getAllKnownTags();
|
||||||
QStringList activeTags = parent->deckLoader->getTags();
|
QStringList activeTags = parent->deckLoader->getTags();
|
||||||
|
|
||||||
bool canAddTags = true;
|
bool canAddTags = true;
|
||||||
|
|
|
||||||
|
|
@ -9,15 +9,17 @@
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
DeckPreviewWidget::DeckPreviewWidget(VisualDeckStorageWidget *_parent, const QString &_filePath)
|
DeckPreviewWidget::DeckPreviewWidget(QWidget *_parent,
|
||||||
: QWidget(_parent), parent(_parent), filePath(_filePath)
|
VisualDeckStorageWidget *_visualDeckStorageWidget,
|
||||||
|
const QString &_filePath)
|
||||||
|
: QWidget(_parent), visualDeckStorageWidget(_visualDeckStorageWidget), filePath(_filePath)
|
||||||
{
|
{
|
||||||
layout = new QVBoxLayout(this);
|
layout = new QVBoxLayout(this);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
||||||
deckLoader = new DeckLoader();
|
deckLoader = new DeckLoader();
|
||||||
connect(deckLoader, &DeckLoader::loadFinished, this, &DeckPreviewWidget::initializeUi);
|
connect(deckLoader, &DeckLoader::loadFinished, this, &DeckPreviewWidget::initializeUi);
|
||||||
connect(deckLoader, &DeckLoader::loadFinished, parent->tagFilterWidget,
|
connect(deckLoader, &DeckLoader::loadFinished, visualDeckStorageWidget->tagFilterWidget,
|
||||||
&VisualDeckStorageTagFilterWidget::refreshTags);
|
&VisualDeckStorageTagFilterWidget::refreshTags);
|
||||||
deckLoader->loadFromFileAsync(filePath, DeckLoader::getFormatFromName(filePath), false);
|
deckLoader->loadFromFileAsync(filePath, DeckLoader::getFormatFromName(filePath), false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,12 @@ class DeckPreviewWidget final : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DeckPreviewWidget(VisualDeckStorageWidget *_parent, const QString &_filePath);
|
explicit DeckPreviewWidget(QWidget *_parent,
|
||||||
|
VisualDeckStorageWidget *_visualDeckStorageWidget,
|
||||||
|
const QString &_filePath);
|
||||||
QString getColorIdentity();
|
QString getColorIdentity();
|
||||||
|
|
||||||
VisualDeckStorageWidget *parent;
|
VisualDeckStorageWidget *visualDeckStorageWidget;
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
QString filePath;
|
QString filePath;
|
||||||
DeckLoader *deckLoader;
|
DeckLoader *deckLoader;
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ void VisualDeckStorageFolderDisplayWidget::createWidgetsForFiles()
|
||||||
{
|
{
|
||||||
QList<DeckPreviewWidget *> allDecks;
|
QList<DeckPreviewWidget *> allDecks;
|
||||||
for (const QString &file : getAllFiles()) {
|
for (const QString &file : getAllFiles()) {
|
||||||
auto *display = new DeckPreviewWidget(visualDeckStorageWidget, file);
|
auto *display = new DeckPreviewWidget(flowWidget, visualDeckStorageWidget, file);
|
||||||
|
|
||||||
connect(display, &DeckPreviewWidget::deckPreviewClicked, visualDeckStorageWidget,
|
connect(display, &DeckPreviewWidget::deckPreviewClicked, visualDeckStorageWidget,
|
||||||
&VisualDeckStorageWidget::deckPreviewClickedEvent);
|
&VisualDeckStorageWidget::deckPreviewClickedEvent);
|
||||||
|
|
@ -108,7 +108,6 @@ bool VisualDeckStorageFolderDisplayWidget::checkVisibility()
|
||||||
if (flowWidget) {
|
if (flowWidget) {
|
||||||
// Iterate through all DeckPreviewWidgets
|
// Iterate through all DeckPreviewWidgets
|
||||||
for (DeckPreviewWidget *display : flowWidget->findChildren<DeckPreviewWidget *>()) {
|
for (DeckPreviewWidget *display : flowWidget->findChildren<DeckPreviewWidget *>()) {
|
||||||
// Get tags from each DeckPreviewWidget
|
|
||||||
if (display->checkVisibility()) {
|
if (display->checkVisibility()) {
|
||||||
atLeastOneWidgetVisible = true;
|
atLeastOneWidgetVisible = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,10 @@ public:
|
||||||
QStringList gatherAllTagsFromFlowWidget() const;
|
QStringList gatherAllTagsFromFlowWidget() const;
|
||||||
[[nodiscard]] QStringList getAllFiles() const;
|
[[nodiscard]] QStringList getAllFiles() const;
|
||||||
[[nodiscard]] QStringList getAllSubFolders() const;
|
[[nodiscard]] QStringList getAllSubFolders() const;
|
||||||
|
FlowWidget *getFlowWidget() const
|
||||||
|
{
|
||||||
|
return flowWidget;
|
||||||
|
};
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateVisibility();
|
void updateVisibility();
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,23 @@ void VisualDeckStorageSortWidget::updateSortOrder()
|
||||||
emit sortOrderChanged();
|
emit sortOrderChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<DeckPreviewWidget *> &VisualDeckStorageSortWidget::filterFiles(QList<DeckPreviewWidget *> &widgets)
|
void VisualDeckStorageSortWidget::sortFolder(VisualDeckStorageFolderDisplayWidget *folderWidget)
|
||||||
|
{
|
||||||
|
auto children = folderWidget->getFlowWidget()->findChildren<QWidget *>(Qt::FindChildOption::FindDirectChildrenOnly);
|
||||||
|
for (auto widget : children) {
|
||||||
|
auto deckPreviewWidgets =
|
||||||
|
widget->findChildren<DeckPreviewWidget *>(Qt::FindChildOption::FindDirectChildrenOnly);
|
||||||
|
auto newOrder = filterFiles(deckPreviewWidgets);
|
||||||
|
for (DeckPreviewWidget *previewWidget : newOrder) {
|
||||||
|
folderWidget->getFlowWidget()->removeWidget(previewWidget);
|
||||||
|
}
|
||||||
|
for (DeckPreviewWidget *previewWidget : newOrder) {
|
||||||
|
folderWidget->getFlowWidget()->addWidget(previewWidget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<DeckPreviewWidget *> VisualDeckStorageSortWidget::filterFiles(QList<DeckPreviewWidget *> widgets)
|
||||||
{
|
{
|
||||||
// Sort the widgets list based on the current sort order
|
// Sort the widgets list based on the current sort order
|
||||||
std::sort(widgets.begin(), widgets.end(), [this](DeckPreviewWidget *widget1, DeckPreviewWidget *widget2) {
|
std::sort(widgets.begin(), widgets.end(), [this](DeckPreviewWidget *widget1, DeckPreviewWidget *widget2) {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
class VisualDeckStorageWidget;
|
class VisualDeckStorageWidget;
|
||||||
|
class VisualDeckStorageFolderDisplayWidget;
|
||||||
class VisualDeckStorageSortWidget : public QWidget
|
class VisualDeckStorageSortWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -16,8 +17,9 @@ public:
|
||||||
explicit VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent);
|
explicit VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent);
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
void updateSortOrder();
|
void updateSortOrder();
|
||||||
|
void sortFolder(VisualDeckStorageFolderDisplayWidget *folderWidget);
|
||||||
QString getSearchText();
|
QString getSearchText();
|
||||||
QList<DeckPreviewWidget *> &filterFiles(QList<DeckPreviewWidget *> &widgets);
|
QList<DeckPreviewWidget *> filterFiles(QList<DeckPreviewWidget *> widgets);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sortOrderChanged();
|
void sortOrderChanged();
|
||||||
|
|
|
||||||
|
|
@ -74,11 +74,6 @@ void VisualDeckStorageWidget::retranslateUi()
|
||||||
databaseLoadIndicator->setText(tr("Loading database ..."));
|
databaseLoadIndicator->setText(tr("Loading database ..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDeckStorageWidget::updateSortOrder()
|
|
||||||
{
|
|
||||||
refreshBannerCards(); // Refresh the banner cards with the new sort order
|
|
||||||
}
|
|
||||||
|
|
||||||
void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
|
void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
|
||||||
{
|
{
|
||||||
emit deckPreviewClicked(event, instance);
|
emit deckPreviewClicked(event, instance);
|
||||||
|
|
@ -96,6 +91,18 @@ void VisualDeckStorageWidget::refreshBannerCards()
|
||||||
scrollArea->setWidget(folderWidget);
|
scrollArea->setWidget(folderWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualDeckStorageWidget::updateSortOrder()
|
||||||
|
{
|
||||||
|
if (folderWidget) {
|
||||||
|
qDebug() << "Updating sort order";
|
||||||
|
sortWidget->sortFolder(folderWidget);
|
||||||
|
for (VisualDeckStorageFolderDisplayWidget *subFolderWidget :
|
||||||
|
folderWidget->findChildren<VisualDeckStorageFolderDisplayWidget *>()) {
|
||||||
|
sortWidget->sortFolder(subFolderWidget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void VisualDeckStorageWidget::updateTagFilter()
|
void VisualDeckStorageWidget::updateTagFilter()
|
||||||
{
|
{
|
||||||
if (folderWidget) {
|
if (folderWidget) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue