mirror of
https://github.com/UltimMC/Launcher.git
synced 2025-12-23 04:00:06 +00:00
NOISSUE First step towards 10000 instances
This commit is contained in:
@@ -32,10 +32,17 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s
|
||||
m_settings = settings;
|
||||
m_rootDir = rootDir;
|
||||
|
||||
m_id = QFileInfo(instanceRoot()).fileName();
|
||||
|
||||
m_settings->registerSetting("name", "Unnamed Instance");
|
||||
m_name = m_settings->get("name").toString();
|
||||
|
||||
m_settings->registerSetting("iconKey", "default");
|
||||
m_settings->registerSetting("notes", "");
|
||||
|
||||
m_settings->registerSetting("lastLaunchTime", 0);
|
||||
m_lastlaunch = m_settings->get("lastLaunchTime").value<qint64>();
|
||||
|
||||
m_settings->registerSetting("totalTimePlayed", 0);
|
||||
|
||||
// Custom Commands
|
||||
@@ -117,9 +124,9 @@ BaseInstance::Status BaseInstance::currentStatus() const
|
||||
return m_status;
|
||||
}
|
||||
|
||||
QString BaseInstance::id() const
|
||||
const QString &BaseInstance::id() const
|
||||
{
|
||||
return QFileInfo(instanceRoot()).fileName();
|
||||
return m_id;
|
||||
}
|
||||
|
||||
bool BaseInstance::isRunning() const
|
||||
@@ -192,13 +199,19 @@ bool BaseInstance::reloadSettings()
|
||||
|
||||
qint64 BaseInstance::lastLaunch() const
|
||||
{
|
||||
return m_settings->get("lastLaunchTime").value<qint64>();
|
||||
return m_lastlaunch;
|
||||
}
|
||||
|
||||
void BaseInstance::setLastLaunch(qint64 val)
|
||||
{
|
||||
//FIXME: if no change, do not set. setting involves saving a file.
|
||||
if(m_lastlaunch == val) {
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: there is no single source of truth.
|
||||
m_lastlaunch = val;
|
||||
m_settings->set("lastLaunchTime", val);
|
||||
|
||||
emit propertiesChanged(this);
|
||||
}
|
||||
|
||||
@@ -227,14 +240,20 @@ QString BaseInstance::iconKey() const
|
||||
|
||||
void BaseInstance::setName(QString val)
|
||||
{
|
||||
//FIXME: if no change, do not set. setting involves saving a file.
|
||||
if(m_name == val) {
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: there is no single source of truth.
|
||||
m_name = val;
|
||||
m_settings->set("name", val);
|
||||
|
||||
emit propertiesChanged(this);
|
||||
}
|
||||
|
||||
QString BaseInstance::name() const
|
||||
{
|
||||
return m_settings->get("name").toString();
|
||||
return m_name;
|
||||
}
|
||||
|
||||
QString BaseInstance::windowTitle() const
|
||||
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
|
||||
/// The instance's ID. The ID SHALL be determined by MMC internally. The ID IS guaranteed to
|
||||
/// be unique.
|
||||
virtual QString id() const;
|
||||
const QString &id() const;
|
||||
|
||||
void setRunning(bool running);
|
||||
bool isRunning() const;
|
||||
@@ -250,6 +250,10 @@ protected slots:
|
||||
|
||||
protected: /* data */
|
||||
QString m_rootDir;
|
||||
QString m_id;
|
||||
QString m_name;
|
||||
qint64 m_lastlaunch = 0;
|
||||
|
||||
SettingsObjectPtr m_settings;
|
||||
// InstanceFlags m_flags;
|
||||
bool m_isRunning = false;
|
||||
|
||||
@@ -115,7 +115,7 @@ QVariant InstanceList::data(const QModelIndex &index, int role) const
|
||||
// HACK: see GroupView.h in gui!
|
||||
case GroupRole:
|
||||
{
|
||||
return getInstanceGroup(pdata->id());
|
||||
return getInstanceGroup(pdata);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
@@ -153,6 +153,16 @@ Qt::ItemFlags InstanceList::flags(const QModelIndex &index) const
|
||||
return f;
|
||||
}
|
||||
|
||||
GroupId InstanceList::getInstanceGroup(BaseInstance * inst) const
|
||||
{
|
||||
auto iter = m_instanceGroupIndex.find(inst->id());
|
||||
if(iter != m_instanceGroupIndex.end())
|
||||
{
|
||||
return *iter;
|
||||
}
|
||||
return GroupId();
|
||||
}
|
||||
|
||||
GroupId InstanceList::getInstanceGroup(const InstanceId& id) const
|
||||
{
|
||||
auto inst = getInstanceById(id);
|
||||
@@ -160,12 +170,7 @@ GroupId InstanceList::getInstanceGroup(const InstanceId& id) const
|
||||
{
|
||||
return GroupId();
|
||||
}
|
||||
auto iter = m_instanceGroupIndex.find(inst->id());
|
||||
if(iter != m_instanceGroupIndex.end())
|
||||
{
|
||||
return *iter;
|
||||
}
|
||||
return GroupId();
|
||||
return getInstanceGroup(inst.get());
|
||||
}
|
||||
|
||||
void InstanceList::setInstanceGroup(const InstanceId& id, const GroupId& name)
|
||||
|
||||
@@ -144,6 +144,7 @@ private slots:
|
||||
void instanceDirContentsChanged(const QString &path);
|
||||
|
||||
private:
|
||||
GroupId getInstanceGroup(BaseInstance * inst) const;
|
||||
int getInstIndex(BaseInstance *inst) const;
|
||||
void suspendWatch();
|
||||
void resumeWatch();
|
||||
|
||||
Reference in New Issue
Block a user