mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-06-29 01:54:20 +03:00
made MultiWorldList not require dirs
This commit is contained in:
parent
b0a600b720
commit
b13cfd9d6a
3 changed files with 8 additions and 16 deletions
|
|
@ -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());
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue