mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-18 16:32:16 -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();
|
||||
}
|
||||
QWidget::mousePressEvent(event);
|
||||
QStringList knownTags = parent->parent->parent->tagFilterWidget->getAllKnownTags();
|
||||
QStringList knownTags = parent->parent->visualDeckStorageWidget->tagFilterWidget->getAllKnownTags();
|
||||
QStringList activeTags = parent->deckLoader->getTags();
|
||||
|
||||
bool canAddTags = true;
|
||||
|
|
|
|||
|
|
@ -9,15 +9,17 @@
|
|||
#include <QSet>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
DeckPreviewWidget::DeckPreviewWidget(VisualDeckStorageWidget *_parent, const QString &_filePath)
|
||||
: QWidget(_parent), parent(_parent), filePath(_filePath)
|
||||
DeckPreviewWidget::DeckPreviewWidget(QWidget *_parent,
|
||||
VisualDeckStorageWidget *_visualDeckStorageWidget,
|
||||
const QString &_filePath)
|
||||
: QWidget(_parent), visualDeckStorageWidget(_visualDeckStorageWidget), filePath(_filePath)
|
||||
{
|
||||
layout = new QVBoxLayout(this);
|
||||
setLayout(layout);
|
||||
|
||||
deckLoader = new DeckLoader();
|
||||
connect(deckLoader, &DeckLoader::loadFinished, this, &DeckPreviewWidget::initializeUi);
|
||||
connect(deckLoader, &DeckLoader::loadFinished, parent->tagFilterWidget,
|
||||
connect(deckLoader, &DeckLoader::loadFinished, visualDeckStorageWidget->tagFilterWidget,
|
||||
&VisualDeckStorageTagFilterWidget::refreshTags);
|
||||
deckLoader->loadFromFileAsync(filePath, DeckLoader::getFormatFromName(filePath), false);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,10 +16,12 @@ class DeckPreviewWidget final : public QWidget
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DeckPreviewWidget(VisualDeckStorageWidget *_parent, const QString &_filePath);
|
||||
explicit DeckPreviewWidget(QWidget *_parent,
|
||||
VisualDeckStorageWidget *_visualDeckStorageWidget,
|
||||
const QString &_filePath);
|
||||
QString getColorIdentity();
|
||||
|
||||
VisualDeckStorageWidget *parent;
|
||||
VisualDeckStorageWidget *visualDeckStorageWidget;
|
||||
QVBoxLayout *layout;
|
||||
QString filePath;
|
||||
DeckLoader *deckLoader;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ void VisualDeckStorageFolderDisplayWidget::createWidgetsForFiles()
|
|||
{
|
||||
QList<DeckPreviewWidget *> allDecks;
|
||||
for (const QString &file : getAllFiles()) {
|
||||
auto *display = new DeckPreviewWidget(visualDeckStorageWidget, file);
|
||||
auto *display = new DeckPreviewWidget(flowWidget, visualDeckStorageWidget, file);
|
||||
|
||||
connect(display, &DeckPreviewWidget::deckPreviewClicked, visualDeckStorageWidget,
|
||||
&VisualDeckStorageWidget::deckPreviewClickedEvent);
|
||||
|
|
@ -108,7 +108,6 @@ bool VisualDeckStorageFolderDisplayWidget::checkVisibility()
|
|||
if (flowWidget) {
|
||||
// Iterate through all DeckPreviewWidgets
|
||||
for (DeckPreviewWidget *display : flowWidget->findChildren<DeckPreviewWidget *>()) {
|
||||
// Get tags from each DeckPreviewWidget
|
||||
if (display->checkVisibility()) {
|
||||
atLeastOneWidgetVisible = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,10 @@ public:
|
|||
QStringList gatherAllTagsFromFlowWidget() const;
|
||||
[[nodiscard]] QStringList getAllFiles() const;
|
||||
[[nodiscard]] QStringList getAllSubFolders() const;
|
||||
FlowWidget *getFlowWidget() const
|
||||
{
|
||||
return flowWidget;
|
||||
};
|
||||
|
||||
public slots:
|
||||
void updateVisibility();
|
||||
|
|
|
|||
|
|
@ -63,7 +63,23 @@ void VisualDeckStorageSortWidget::updateSortOrder()
|
|||
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
|
||||
std::sort(widgets.begin(), widgets.end(), [this](DeckPreviewWidget *widget1, DeckPreviewWidget *widget2) {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include <QWidget>
|
||||
|
||||
class VisualDeckStorageWidget;
|
||||
class VisualDeckStorageFolderDisplayWidget;
|
||||
class VisualDeckStorageSortWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -16,8 +17,9 @@ public:
|
|||
explicit VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent);
|
||||
void retranslateUi();
|
||||
void updateSortOrder();
|
||||
void sortFolder(VisualDeckStorageFolderDisplayWidget *folderWidget);
|
||||
QString getSearchText();
|
||||
QList<DeckPreviewWidget *> &filterFiles(QList<DeckPreviewWidget *> &widgets);
|
||||
QList<DeckPreviewWidget *> filterFiles(QList<DeckPreviewWidget *> widgets);
|
||||
|
||||
signals:
|
||||
void sortOrderChanged();
|
||||
|
|
|
|||
|
|
@ -74,11 +74,6 @@ void VisualDeckStorageWidget::retranslateUi()
|
|||
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)
|
||||
{
|
||||
emit deckPreviewClicked(event, instance);
|
||||
|
|
@ -96,6 +91,18 @@ void VisualDeckStorageWidget::refreshBannerCards()
|
|||
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()
|
||||
{
|
||||
if (folderWidget) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue