Only show folders that really are worlds

This commit is contained in:
Jan Dalheimer 2014-02-16 12:08:39 +01:00
parent f5273ae2b1
commit f26b7dedad
3 changed files with 34 additions and 9 deletions

View file

@ -1,10 +1,16 @@
#include "BaseExternalTool.h"
#include <QProcess>
#include <QDir>
#include <QInputDialog>
#ifdef Q_OS_WIN
#include <windows.h>
#endif
#include "BaseInstance.h"
#include "MultiMC.h"
BaseExternalTool::BaseExternalTool(BaseInstance *instance, QObject *parent)
: QObject(parent), m_instance(instance)
{
@ -24,6 +30,30 @@ qint64 BaseExternalTool::pid(QProcess *process)
#endif
}
QString BaseExternalTool::getSave() const
{
QDir saves(m_instance->minecraftRoot() + "/saves");
QStringList worlds = saves.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
QMutableListIterator<QString> it(worlds);
while (it.hasNext())
{
it.next();
if (!QDir(saves.absoluteFilePath(it.value())).exists("level.dat"))
{
it.remove();
}
}
bool ok = true;
const QString save = QInputDialog::getItem(
MMC->activeWindow(), tr("MCEdit"), tr("Choose which world to open:"),
worlds, 0, false, &ok);
if (ok)
{
return saves.absoluteFilePath(save);
}
return QString();
}
BaseDetachedTool::BaseDetachedTool(BaseInstance *instance, QObject *parent)
: BaseExternalTool(instance, parent)