Added stuff.
This commit is contained in:
parent
586092cf99
commit
fce0f5df04
@ -15,11 +15,17 @@ TEMPLATE = app
|
||||
SOURCES += main.cpp\
|
||||
gui/mainwindow.cpp \
|
||||
data/instancebase.cpp \
|
||||
util/pathutils.cpp
|
||||
util/pathutils.cpp \
|
||||
data/instancelist.cpp \
|
||||
data/stdinstance.cpp \
|
||||
data/inifile.cpp
|
||||
|
||||
HEADERS += gui/mainwindow.h \
|
||||
data/instancebase.h \
|
||||
util/pathutils.h \
|
||||
data/instancelist.h \
|
||||
data/stdinstance.h \
|
||||
data/inifile.h
|
||||
|
||||
FORMS += gui/mainwindow.ui
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by Qt Creator 2.6.1, 2013-01-09T12:15:16. -->
|
||||
<!-- Written by Qt Creator 2.6.1, 2013-01-14T15:28:18. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
|
22
data/appsettings.cpp
Normal file
22
data/appsettings.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "appsettings.h"
|
||||
|
||||
AppSettings::AppSettings(QString fileName) :
|
||||
SettingsBase(fileName)
|
||||
{
|
||||
|
||||
}
|
27
data/appsettings.h
Normal file
27
data/appsettings.h
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef APPSETTINGS_H
|
||||
#define APPSETTINGS_H
|
||||
|
||||
#include "settingsbase.h"
|
||||
|
||||
class AppSettings : public SettingsBase
|
||||
{
|
||||
public:
|
||||
AppSettings(QString fileName);
|
||||
};
|
||||
|
||||
#endif // APPSETTINGS_H
|
75
data/inifile.cpp
Normal file
75
data/inifile.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "inifile.h"
|
||||
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QStringList>
|
||||
|
||||
INIFile::INIFile()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool INIFile::saveFile(QString fileName)
|
||||
{
|
||||
// TODO Handle errors.
|
||||
QFile file(fileName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QTextStream out(&file);
|
||||
|
||||
for (Iterator iter = begin(); iter != end(); iter++)
|
||||
{
|
||||
out << iter.key() << "=" << iter.value().toString() << "\n";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool INIFile::loadFile(QString fileName)
|
||||
{
|
||||
// TODO Handle errors.
|
||||
QFile file(fileName);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
QTextStream in(&file);
|
||||
|
||||
QStringList lines = in.readAll().split('\n');
|
||||
for (int i = 0; i < lines.count(); i++)
|
||||
{
|
||||
// Ignore comments.
|
||||
QString line = lines[i].left('#').trimmed();
|
||||
|
||||
QString key = line.section('=', 0).trimmed();
|
||||
QVariant value(line.section('=', 1).trimmed());
|
||||
|
||||
this->operator [](key) = value;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QVariant INIFile::get(QString key, QVariant def) const
|
||||
{
|
||||
if (!this->contains(key))
|
||||
return def;
|
||||
else
|
||||
return this->operator [](key);
|
||||
}
|
||||
|
||||
void INIFile::set(QString key, QVariant val)
|
||||
{
|
||||
this->operator [](key) = val;
|
||||
}
|
36
data/inifile.h
Normal file
36
data/inifile.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef INIFILE_H
|
||||
#define INIFILE_H
|
||||
|
||||
#include <QMap>
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
|
||||
// Sectionless INI parser (for instance config files)
|
||||
class INIFile : public QMap<QString, QVariant>
|
||||
{
|
||||
public:
|
||||
explicit INIFile();
|
||||
|
||||
bool loadFile(QString fileName);
|
||||
bool saveFile(QString fileName);
|
||||
|
||||
QVariant get(QString key, QVariant def) const;
|
||||
void set(QString key, QVariant val);
|
||||
};
|
||||
|
||||
#endif // INIFILE_H
|
@ -15,31 +15,35 @@
|
||||
|
||||
#include "instancebase.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
#include "../util/pathutils.h"
|
||||
|
||||
InstanceBase::InstanceBase(QString rootDir, QObject *parent) :
|
||||
InstanceBase::InstanceBase(QString dir, QObject *parent) :
|
||||
QObject(parent),
|
||||
m_rootDir(rootDir),
|
||||
m_config(PathCombine(rootDir, "instance.cfg"), QSettings::IniFormat)
|
||||
rootDir(dir)
|
||||
{
|
||||
QFileInfo cfgFile;
|
||||
|
||||
if (cfgFile.exists())
|
||||
config.loadFile(PathCombine(rootDir, "instance.cfg"));
|
||||
}
|
||||
|
||||
QString InstanceBase::GetRootDir() const
|
||||
QString InstanceBase::getRootDir() const
|
||||
{
|
||||
return m_rootDir;
|
||||
return rootDir;
|
||||
}
|
||||
|
||||
|
||||
///////////// Config Values /////////////
|
||||
|
||||
// Name
|
||||
QString InstanceBase::GetInstName() const
|
||||
QString InstanceBase::getInstName() const
|
||||
{
|
||||
return m_config.value("name", "Unnamed").toString();
|
||||
return config.get("name", "Unnamed").toString();
|
||||
}
|
||||
|
||||
void InstanceBase::SetInstName(QString name)
|
||||
void InstanceBase::setInstName(QString name)
|
||||
{
|
||||
m_config.setValue("name", name);
|
||||
config.set("name", name);
|
||||
}
|
||||
|
@ -18,7 +18,8 @@
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QSettings>
|
||||
|
||||
#include "../data/inifile.h"
|
||||
|
||||
class InstanceBase : public QObject
|
||||
{
|
||||
@ -26,18 +27,18 @@ class InstanceBase : public QObject
|
||||
public:
|
||||
explicit InstanceBase(QString rootDir, QObject *parent = 0);
|
||||
|
||||
QString GetRootDir() const;
|
||||
QString getRootDir() const;
|
||||
|
||||
QString GetInstName() const;
|
||||
void SetInstName(QString name);
|
||||
QString getInstName() const;
|
||||
void setInstName(QString name);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
private:
|
||||
QString m_rootDir;
|
||||
QString rootDir;
|
||||
|
||||
QSettings m_config;
|
||||
INIFile config;
|
||||
};
|
||||
|
||||
#endif // INSTANCEBASE_H
|
||||
|
52
data/instancelist.cpp
Normal file
52
data/instancelist.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "instancelist.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QDirIterator>
|
||||
|
||||
#include "stdinstance.h"
|
||||
|
||||
#include "../util/pathutils.h"
|
||||
|
||||
InstanceList::InstanceList() :
|
||||
QList()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void InstanceList::addInstance(InstanceBase *inst)
|
||||
{
|
||||
append(inst);
|
||||
}
|
||||
|
||||
void InstanceList::loadInstances(QString dir)
|
||||
{
|
||||
qDebug("Loading instances");
|
||||
QDir instDir(dir);
|
||||
QDirIterator iter(instDir);
|
||||
|
||||
while (iter.hasNext())
|
||||
{
|
||||
QString subDir = iter.next();
|
||||
if (QFileInfo(PathCombine(subDir, "instance.cfg")).exists())
|
||||
{
|
||||
// TODO Differentiate between different instance types.
|
||||
InstanceBase* inst = new StdInstance(subDir);
|
||||
addInstance(inst);
|
||||
}
|
||||
}
|
||||
}
|
38
data/instancelist.h
Normal file
38
data/instancelist.h
Normal file
@ -0,0 +1,38 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef INSTANCELIST_H
|
||||
#define INSTANCELIST_H
|
||||
|
||||
#include <QList>
|
||||
|
||||
#include "instancebase.h"
|
||||
|
||||
class InstanceList : public QList<InstanceBase*>
|
||||
{
|
||||
public:
|
||||
explicit InstanceList();
|
||||
|
||||
void addInstance(InstanceBase *inst);
|
||||
|
||||
void loadInstances(QString dir);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
};
|
||||
|
||||
#endif // INSTANCELIST_H
|
22
data/settingsbase.cpp
Normal file
22
data/settingsbase.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "settingsbase.h"
|
||||
|
||||
SettingsBase::SettingsBase(QString fileName) :
|
||||
QSettings(fileName, QSettings::IniFormat)
|
||||
{
|
||||
|
||||
}
|
33
data/settingsbase.h
Normal file
33
data/settingsbase.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSBASE_H
|
||||
#define SETTINGSBASE_H
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
#include "../util/settingsmacros.h"
|
||||
|
||||
class SettingsBase : public QSettings
|
||||
{
|
||||
public:
|
||||
SettingsBase(QString fileName);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#include "../util/settingsmacrosundef.h"
|
||||
|
||||
#endif // SETTINGSBASE_H
|
35
data/settingsmacros.h
Normal file
35
data/settingsmacros.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSMACROS_H
|
||||
#define SETTINGSMACROS_H
|
||||
|
||||
#define STR_VAL(val) # val
|
||||
|
||||
#define DEFINE_SETTING(funcName, name, defVal, typeName, toFunc) \
|
||||
virtual typeName Get ## funcName() const { return value(name). ## toFunc(); } \
|
||||
virtual void Set ## funcName(typeName value) { setValue(name, value); } \
|
||||
virtual void Reset ## funcName() {
|
||||
|
||||
#define DEFINE_SETTING_STR(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, QString, toString)
|
||||
|
||||
#define DEFINE_SETTING_BOOL(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, bool, toBool)
|
||||
|
||||
#define DEFINE_SETTING_INT(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, int, toInt)
|
||||
|
||||
#endif // SETTINGSMACROS_H
|
26
data/settingsmacrosundef.h
Normal file
26
data/settingsmacrosundef.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSMACROSUNDEF_H
|
||||
#define SETTINGSMACROSUNDEF_H
|
||||
|
||||
#undef DEFINE_SETTING
|
||||
#undef DEFINE_SETTING_STR
|
||||
#undef DEFINE_SETTING_BOOL
|
||||
#undef DEFINE_SETTING_INT
|
||||
|
||||
#undef STR_VAL
|
||||
|
||||
#endif // SETTINGSMACROSUNDEF_H
|
22
data/stdinstance.cpp
Normal file
22
data/stdinstance.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "stdinstance.h"
|
||||
|
||||
StdInstance::StdInstance(QString dir) :
|
||||
InstanceBase(dir)
|
||||
{
|
||||
|
||||
}
|
28
data/stdinstance.h
Normal file
28
data/stdinstance.h
Normal file
@ -0,0 +1,28 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef STDINSTANCE_H
|
||||
#define STDINSTANCE_H
|
||||
|
||||
#include "instancebase.h"
|
||||
|
||||
// Standard client instance.
|
||||
class StdInstance : public InstanceBase
|
||||
{
|
||||
public:
|
||||
StdInstance(QString dir);
|
||||
};
|
||||
|
||||
#endif // STDINSTANCE_H
|
@ -24,6 +24,10 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
instList.loadInstances("instances");
|
||||
|
||||
model.setInstanceList(&instList);
|
||||
ui->instListView->setModel(&model);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -43,7 +47,7 @@ void MainWindow::on_actionViewInstanceFolder_triggered()
|
||||
|
||||
void MainWindow::on_actionRefresh_triggered()
|
||||
{
|
||||
|
||||
instList.loadInstances("instances");
|
||||
}
|
||||
|
||||
void MainWindow::on_actionViewCentralModsFolder_triggered()
|
||||
|
@ -18,6 +18,9 @@
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
#include "../data/instancelist.h"
|
||||
#include "../data/instancelistmodel.h"
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
@ -51,6 +54,9 @@ private slots:
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
|
||||
InstanceList instList;
|
||||
InstanceListModel model;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
0
stdinstance.cpp
Normal file
0
stdinstance.cpp
Normal file
0
stdinstance.h
Normal file
0
stdinstance.h
Normal file
@ -26,6 +26,11 @@ QString PathCombine(QString path1, QString path2)
|
||||
return path1.append(path2);
|
||||
}
|
||||
|
||||
QString PathCombine(QString path1, QString path2, QString path3)
|
||||
{
|
||||
return PathCombine(PathCombine(path1, path2), path3);
|
||||
}
|
||||
|
||||
QString AbsolutePath(QString path)
|
||||
{
|
||||
return QFileInfo(path).absolutePath();
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <QString>
|
||||
|
||||
QString PathCombine(QString path1, QString path2);
|
||||
QString PathCombine(QString path1, QString path2, QString path3);
|
||||
|
||||
QString AbsolutePath(QString path);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user