From 929698ff15bdd44a5bd8d8b5c1e13be9c55a1cac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 22 Jun 2013 23:34:33 +0200 Subject: [PATCH] Use shared pointers to fix incompatibility with new Qt --- libmultimc/include/gameupdatetask.h | 14 ++++++++++---- libmultimc/include/lwjglversionlist.h | 22 +++++++++++++-------- libmultimc/src/gameupdatetask.cpp | 28 +++++++++++++-------------- libmultimc/src/lwjglversionlist.cpp | 18 ++++++++--------- 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 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 m_downloadList; + QList 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 #include - +#include #include #include @@ -26,6 +26,9 @@ #include "libmmc_config.h" +class LWJGLVersion; +typedef QSharedPointer 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 m_vlist; + QList 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)); } - +PtrFileToDownload FileToDownload::Create(const QUrl &url, const QString &path, QObject *parent) +{ + return PtrFileToDownload(new FileToDownload (url, path, parent)); +} FileToDownload::FileToDownload(const QUrl &url, const QString &path, QObject *parent) : QObject(parent), m_dlURL(url), m_dlPath(path) { } - -FileToDownload::FileToDownload(const FileToDownload &other) : - QObject(other.parent()), m_dlURL(other.m_dlURL), m_dlPath(other.m_dlPath) -{ - -} 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 tempList; + QList 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(); }