summaryrefslogtreecommitdiffstats
path: root/libmultimc
diff options
context:
space:
mode:
Diffstat (limited to 'libmultimc')
-rw-r--r--libmultimc/include/gameupdatetask.h14
-rw-r--r--libmultimc/include/lwjglversionlist.h22
-rw-r--r--libmultimc/src/gameupdatetask.cpp28
-rw-r--r--libmultimc/src/lwjglversionlist.cpp18
4 files changed, 46 insertions, 36 deletions
diff --git a/libmultimc/include/gameupdatetask.h b/libmultimc/include/gameupdatetask.h
index 47f6c007..63d11113 100644
--- a/libmultimc/include/gameupdatetask.h
+++ b/libmultimc/include/gameupdatetask.h
@@ -28,6 +28,8 @@
#include "instance.h"
#include "libmmc_config.h"
+class FileToDownload;
+typedef QSharedPointer<FileToDownload> PtrFileToDownload;
class FileToDownload : public QObject
{
@@ -43,9 +45,11 @@ class FileToDownload : public QObject
* This path is relative to the instance's root directory.
*/
Q_PROPERTY(QString path READ path WRITE setPath)
-public:
+
+private:
FileToDownload(const QUrl &url, const QString &path, QObject *parent = 0);
- FileToDownload(const FileToDownload &other);
+public:
+ static PtrFileToDownload Create(const QUrl &url, const QString &path, QObject *parent = 0);
virtual QUrl url() const { return m_dlURL; }
virtual void setURL(const QUrl &url) { m_dlURL = url; }
@@ -58,6 +62,8 @@ private:
QString m_dlPath;
};
+
+
/*!
* The game update task is the task that handles downloading instances' files.
*/
@@ -86,7 +92,7 @@ public:
virtual void executeTask();
- virtual bool downloadFile(const FileToDownload &file);
+ virtual bool downloadFile(const PtrFileToDownload file);
//////////////////////
@@ -149,7 +155,7 @@ private:
////////////////////////
// List of URLs that the game updater will need to download.
- QList<FileToDownload> m_downloadList;
+ QList<PtrFileToDownload> m_downloadList;
int m_currentDownload;
diff --git a/libmultimc/include/lwjglversionlist.h b/libmultimc/include/lwjglversionlist.h
index 700c93d4..25b5c4c3 100644
--- a/libmultimc/include/lwjglversionlist.h
+++ b/libmultimc/include/lwjglversionlist.h
@@ -18,7 +18,7 @@
#include <QObject>
#include <QAbstractListModel>
-
+#include <QSharedPointer>
#include <QUrl>
#include <QNetworkAccessManager>
@@ -26,6 +26,9 @@
#include "libmmc_config.h"
+class LWJGLVersion;
+typedef QSharedPointer<LWJGLVersion> PtrLWJGLVersion;
+
class LIBMULTIMC_EXPORT LWJGLVersion : public QObject
{
Q_OBJECT
@@ -39,12 +42,15 @@ class LIBMULTIMC_EXPORT LWJGLVersion : public QObject
* The URL for this version of LWJGL.
*/
Q_PROPERTY(QUrl url READ url)
-public:
+
LWJGLVersion(const QString &name, const QUrl &url, QObject *parent = 0) :
QObject(parent), m_name(name), m_url(url) { }
+public:
- LWJGLVersion(const LWJGLVersion &other) :
- QObject(other.parent()), m_name(other.name()), m_url(other.url()) { }
+ static PtrLWJGLVersion Create(const QString &name, const QUrl &url, QObject *parent = 0)
+ {
+ return PtrLWJGLVersion(new LWJGLVersion(name, url, parent));
+ };
QString name() const { return m_name; }
@@ -65,9 +71,9 @@ public:
bool isLoaded() { return m_vlist.length() > 0; }
- const LWJGLVersion *getVersion(const QString &versionName);
- LWJGLVersion &at(int index) { return m_vlist[index]; }
- const LWJGLVersion &at(int index) const { return m_vlist[index]; }
+ const PtrLWJGLVersion getVersion(const QString &versionName);
+ PtrLWJGLVersion at(int index) { return m_vlist[index]; }
+ const PtrLWJGLVersion at(int index) const { return m_vlist[index]; }
int count() const { return m_vlist.length(); }
@@ -104,7 +110,7 @@ signals:
void loadListFailed(QString msg);
private:
- QList<LWJGLVersion> m_vlist;
+ QList<PtrLWJGLVersion> m_vlist;
QNetworkReply *m_netReply;
diff --git a/libmultimc/src/gameupdatetask.cpp b/libmultimc/src/gameupdatetask.cpp
index 34c8f670..2b2d0ded 100644
--- a/libmultimc/src/gameupdatetask.cpp
+++ b/libmultimc/src/gameupdatetask.cpp
@@ -78,7 +78,7 @@ void GameUpdateTask::executeTask()
QUrl mcJarURL = targetVersion->downloadURL() + jarFilename + ".jar";
qDebug() << mcJarURL.toString();
- m_downloadList.append(FileToDownload(mcJarURL, PathCombine(m_inst->minecraftDir(), "bin/minecraft.jar")));
+ m_downloadList.append(FileToDownload::Create(mcJarURL, PathCombine(m_inst->minecraftDir(), "bin/minecraft.jar")));
@@ -111,10 +111,10 @@ void GameUpdateTask::executeTask()
emit gameUpdateComplete(m_response);
}
-bool GameUpdateTask::downloadFile(const FileToDownload &file)
+bool GameUpdateTask::downloadFile( const PtrFileToDownload file )
{
- setSubStatus("Downloading " + file.url().toString());
- QNetworkReply *reply = netMgr->get(QNetworkRequest(file.url()));
+ setSubStatus("Downloading " + file->url().toString());
+ QNetworkReply *reply = netMgr->get(QNetworkRequest(file->url()));
this->connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
SLOT(updateDownloadProgress(qint64,qint64)));
@@ -123,16 +123,17 @@ bool GameUpdateTask::downloadFile(const FileToDownload &file)
if (reply->error() == QNetworkReply::NoError)
{
- QFile outFile = file.path();
+ QString filePath = file->path();
+ QFile outFile(filePath);
if (outFile.exists() && !outFile.remove())
{
- error("Can't delete old file " + file.path() + ": " + outFile.errorString());
+ error("Can't delete old file " + file->path() + ": " + outFile.errorString());
return false;
}
if (!outFile.open(QIODevice::WriteOnly))
{
- error("Can't write to " + file.path() + ": " + outFile.errorString());
+ error("Can't write to " + file->path() + ": " + outFile.errorString());
return false;
}
@@ -141,7 +142,7 @@ bool GameUpdateTask::downloadFile(const FileToDownload &file)
}
else
{
- error("Can't download " + file.url().toString() + ": " + reply->errorString());
+ error("Can't download " + file->url().toString() + ": " + reply->errorString());
return false;
}
@@ -230,16 +231,13 @@ void GameUpdateTask::updateDownloadProgress(qint64 current, qint64 total)
setProgress((int)(overallDLProgress * 100));
}
-
-
-FileToDownload::FileToDownload(const QUrl &url, const QString &path, QObject *parent) :
- QObject(parent), m_dlURL(url), m_dlPath(path)
+PtrFileToDownload FileToDownload::Create(const QUrl &url, const QString &path, QObject *parent)
{
-
+ return PtrFileToDownload(new FileToDownload (url, path, parent));
}
-FileToDownload::FileToDownload(const FileToDownload &other) :
- QObject(other.parent()), m_dlURL(other.m_dlURL), m_dlPath(other.m_dlPath)
+FileToDownload::FileToDownload(const QUrl &url, const QString &path, QObject *parent) :
+ QObject(parent), m_dlURL(url), m_dlPath(path)
{
}
diff --git a/libmultimc/src/lwjglversionlist.cpp b/libmultimc/src/lwjglversionlist.cpp
index af5cf2f5..6069f65c 100644
--- a/libmultimc/src/lwjglversionlist.cpp
+++ b/libmultimc/src/lwjglversionlist.cpp
@@ -45,15 +45,15 @@ QVariant LWJGLVersionList::data(const QModelIndex &index, int role) const
if (index.row() > count())
return QVariant();
- const LWJGLVersion &version = at(index.row());
+ const PtrLWJGLVersion version = at(index.row());
switch (role)
{
case Qt::DisplayRole:
- return version.name();
+ return version->name();
case Qt::ToolTipRole:
- return version.url().toString();
+ return version->url().toString();
default:
return QVariant();
@@ -125,7 +125,7 @@ void LWJGLVersionList::netRequestComplete()
QDomNodeList items = doc.elementsByTagName("item");
- QList<LWJGLVersion> tempList;
+ QList<PtrLWJGLVersion> tempList;
for (int i = 0; i < items.length(); i++)
{
@@ -155,7 +155,7 @@ void LWJGLVersionList::netRequestComplete()
continue;
}
- tempList.append(LWJGLVersion(name, link));
+ tempList.append(LWJGLVersion::Create(name, link));
}
}
@@ -175,14 +175,14 @@ void LWJGLVersionList::netRequestComplete()
reply->deleteLater();
}
-const LWJGLVersion *LWJGLVersionList::getVersion(const QString &versionName)
+const PtrLWJGLVersion LWJGLVersionList::getVersion(const QString &versionName)
{
for (int i = 0; i < count(); i++)
{
- if (at(i).name() == versionName)
- return &at(i);
+ if (at(i)->name() == versionName)
+ return at(i);
}
- return NULL;
+ return PtrLWJGLVersion();
}