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"
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) {
m_dirs.append(dir);
for (BaseInstance* inst : m_instances) {
m_dirs.append(dynamic_cast<MinecraftInstance*>(inst)->worldDir());
}
for (QDir dir : m_dirs) {
@ -277,7 +277,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const
return QVariant::fromValue<void*>((void*)&instanceWorld);
}
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: {
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 };
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;

View file

@ -339,19 +339,15 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
// Create the all worlds widget
{
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();
allWorldsPage = new MultiWorldListPage(allWorlds);
ui->horizontalLayout->addWidget(allWorldsPage);
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(allWorldsPage, &MultiWorldListPage::worldJoined, this, &MainWindow::worldJoined);
@ -880,12 +876,8 @@ void MainWindow::toggleAllWorldsScreen(bool toggled)
{
if (toggled) {
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();
auto newAllWorldsPage = new MultiWorldListPage(allWorlds);
ui->horizontalLayout->replaceWidget(allWorldsPage, newAllWorldsPage);