made MultiWorldList not require dirs

This commit is contained in:
Ice Yeti 2026-06-06 13:13:27 -04:00
parent b0a600b720
commit b13cfd9d6a
3 changed files with 8 additions and 16 deletions

View file

@ -48,10 +48,10 @@
#include "MinecraftInstance.h" #include "MinecraftInstance.h"
MultiWorldList::MultiWorldList(const QList<QString>& dirs, const QList<BaseInstance*>& instances) : QAbstractListModel(), m_instances(instances) MultiWorldList::MultiWorldList(const QList<BaseInstance*>& instances) : QAbstractListModel(), m_instances(instances)
{ {
for (QString dir : dirs) { for (BaseInstance* inst : m_instances) {
m_dirs.append(dir); m_dirs.append(dynamic_cast<MinecraftInstance*>(inst)->worldDir());
} }
for (QDir dir : m_dirs) { for (QDir dir : m_dirs) {
@ -277,7 +277,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const
return QVariant::fromValue<void*>((void*)&instanceWorld); return QVariant::fromValue<void*>((void*)&instanceWorld);
} }
case FolderRole: { case FolderRole: {
return QDir::toNativeSeparators(QDir(instanceWorld.world.canonicalFilePath()).absoluteFilePath(instanceWorld.world.folderName())); //test if canonical file path works iy return QDir::toNativeSeparators(QDir(dynamic_cast<MinecraftInstance*>(instanceWorld.instance)->worldDir()).absoluteFilePath(instanceWorld.world.folderName())); //test if canonical file path works iy
} }
case SeedRole: { case SeedRole: {
return QVariant::fromValue<qlonglong>(instanceWorld.world.seed()); return QVariant::fromValue<qlonglong>(instanceWorld.world.seed());

View file

@ -37,7 +37,7 @@ class MultiWorldList : public QAbstractListModel {
enum Roles { ObjectRole = Qt::UserRole + 1, FolderRole, SeedRole, NameRole, InstanceRole, GameModeRole, LastPlayedRole, SizeRole, IconFileRole }; enum Roles { ObjectRole = Qt::UserRole + 1, FolderRole, SeedRole, NameRole, InstanceRole, GameModeRole, LastPlayedRole, SizeRole, IconFileRole };
MultiWorldList(const QList<QString>& dirs, const QList<BaseInstance*>& instances); MultiWorldList(const QList<BaseInstance*>& instances);
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;

View file

@ -339,19 +339,15 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
// Create the all worlds widget // Create the all worlds widget
{ {
QList<BaseInstance*> allInstances = APPLICATION->instances()->getAllInstances(); QList<BaseInstance*> allInstances = APPLICATION->instances()->getAllInstances();
QList<QString> dirs;
for (BaseInstance* inst : allInstances) {
dirs.append(dynamic_cast<MinecraftInstance*>(inst)->worldDir());
}
allWorlds = new MultiWorldList(dirs, allInstances); allWorlds = new MultiWorldList(allInstances);
allWorlds->update(); allWorlds->update();
allWorldsPage = new MultiWorldListPage(allWorlds); allWorldsPage = new MultiWorldListPage(allWorlds);
ui->horizontalLayout->addWidget(allWorldsPage); ui->horizontalLayout->addWidget(allWorldsPage);
allWorldsPage->setVisible(false); allWorldsPage->setVisible(false);
ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toString().toUtf8())); //fix instance toolbar checkbox independent of all worlds screen showing iy ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toString().toUtf8()));
connect(ui->actionAllWorlds, &QAction::toggled, this, &MainWindow::onAllWorldsToggled); connect(ui->actionAllWorlds, &QAction::toggled, this, &MainWindow::onAllWorldsToggled);
connect(allWorldsPage, &MultiWorldListPage::worldJoined, this, &MainWindow::worldJoined); connect(allWorldsPage, &MultiWorldListPage::worldJoined, this, &MainWindow::worldJoined);
@ -880,12 +876,8 @@ void MainWindow::toggleAllWorldsScreen(bool toggled)
{ {
if (toggled) { if (toggled) {
QList<BaseInstance*> allInstances = APPLICATION->instances()->getAllInstances(); QList<BaseInstance*> allInstances = APPLICATION->instances()->getAllInstances();
QList<QString> dirs;
for (BaseInstance* inst : allInstances) {
dirs.append(dynamic_cast<MinecraftInstance*>(inst)->worldDir());
}
allWorlds = new MultiWorldList(dirs, allInstances); allWorlds = new MultiWorldList(allInstances);
allWorlds->update(); allWorlds->update();
auto newAllWorldsPage = new MultiWorldListPage(allWorlds); auto newAllWorldsPage = new MultiWorldListPage(allWorlds);
ui->horizontalLayout->replaceWidget(allWorldsPage, newAllWorldsPage); ui->horizontalLayout->replaceWidget(allWorldsPage, newAllWorldsPage);