- Merged QWidget and QML Qt frontends, just define QT_WIDGET to select the QWidget one
- Coded a resource package download GUI based on QWidget - Removed compilation warning on unused variable - Updated Maemo desktop file to start directly the binary - Updated .pro file - Updated version macros to be able to compose the resource package file - Updated QML interface for Android - Updated QML interface to not contain the name of the resource package - Updated the file downloader class to be able to get the resource package hash from the google code server - Updated the file downloaded class to verify the resource package hash from the remote server at each startup to be able to perform automatic update - Defined several JGE operation as static to clean up the wagic wrapper
This commit is contained in:
@@ -244,7 +244,7 @@ class JGE
|
||||
///
|
||||
/// @return The number of bound keys so far
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u32 BindKey(LocalKeySym keycode, JButton button);
|
||||
static u32 BindKey(LocalKeySym keycode, JButton button);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Undo a binding.
|
||||
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
/// @return - User defined JApp instance.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
JApp* GetGameApp();
|
||||
static JApp* GetGameApp();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get application name. Mainly for Windows build to setup the name
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
/// @return - Application name.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
char *GetName();
|
||||
static char *GetName();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Get initialization flags.
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
/// @return - Initialization flags.
|
||||
///
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
u32 GetInitFlags();
|
||||
static u32 GetInitFlags();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
#define COREWRAPPER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QElapsedTimer>
|
||||
#ifndef QT_WIDGET
|
||||
#include <QtDeclarative>
|
||||
#include <QGraphicsItem>
|
||||
#endif //QT_WIDGET
|
||||
#include "../include/JGE.h"
|
||||
#include "../include/JTypes.h"
|
||||
#include "../include/JApp.h"
|
||||
@@ -11,23 +14,31 @@
|
||||
#include "../include/JRenderer.h"
|
||||
#include "../include/JGameLauncher.h"
|
||||
|
||||
|
||||
#ifdef QT_WIDGET
|
||||
class WagicCore : public QGLWidget
|
||||
#else
|
||||
class WagicCore : public QDeclarativeItem
|
||||
#endif
|
||||
{
|
||||
private:
|
||||
#ifdef QT_WIDGET
|
||||
typedef QGLWidget super;
|
||||
#else
|
||||
typedef QDeclarativeItem super;
|
||||
#endif //QT_WIDGET
|
||||
|
||||
public:
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int nominalWidth READ getNominalWidth CONSTANT)
|
||||
Q_PROPERTY(int nominalHeight READ getNominalHeight CONSTANT)
|
||||
Q_PROPERTY(float nominalRatio READ getNominalRatio CONSTANT)
|
||||
Q_PROPERTY(bool active READ getActive WRITE setActive NOTIFY activeChanged)
|
||||
|
||||
|
||||
public:
|
||||
explicit WagicCore(QDeclarativeItem *parent = 0);
|
||||
explicit WagicCore(super *parent = 0);
|
||||
virtual ~WagicCore();
|
||||
void initApp();
|
||||
void render(){
|
||||
if(m_engine)
|
||||
m_engine->Render();
|
||||
};
|
||||
|
||||
Q_INVOKABLE void doOK() {
|
||||
doAndEnqueue(JGE_BTN_OK);
|
||||
@@ -60,11 +71,34 @@ public:
|
||||
float getNominalRatio() { return ((float)SCREEN_WIDTH / (float)SCREEN_HEIGHT);};
|
||||
bool getActive() { return m_active; };
|
||||
void setActive(bool active);
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
void resize ( const QRectF &rect);
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void keyReleaseEvent(QKeyEvent *event);
|
||||
void initializeGL();
|
||||
void resizeGL(int width, int height);
|
||||
void paintGL();
|
||||
static char* getApplicationName() {
|
||||
return JGameLauncher::GetName();
|
||||
};
|
||||
|
||||
#ifdef QT_WIDGET
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
void tapAndHoldTriggered(QTapAndHoldGesture* gesture);
|
||||
void showEvent(QShowEvent *event);
|
||||
void hideEvent(QHideEvent *event);
|
||||
bool gestureEvent(QGestureEvent* event);
|
||||
bool event(QEvent *event);
|
||||
void wheelEvent(QWheelEvent *event);
|
||||
#else
|
||||
void wheelEvent ( QGraphicsSceneWheelEvent * event);
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
#endif
|
||||
|
||||
#ifdef QT_WIDGET
|
||||
public slots:
|
||||
void start(int);
|
||||
#endif
|
||||
|
||||
signals:
|
||||
void activeChanged();
|
||||
@@ -90,7 +124,16 @@ private:
|
||||
int m_timerId;
|
||||
bool m_active;
|
||||
QRect m_viewPort;
|
||||
#ifdef QT_WIDGET
|
||||
#if (defined Q_WS_MAEMO_5) || (defined MEEGO_EDITION_HARMATTAN) || (defined Q_WS_ANDROID)
|
||||
int mMouseDownX;
|
||||
int mMouseDownY;
|
||||
qint64 mLastFingerDownTime;
|
||||
#endif //Q_WS_MAEMO_5
|
||||
#endif //QT_WIDGET
|
||||
};
|
||||
#ifndef QT_WIDGET
|
||||
QML_DECLARE_TYPE(WagicCore)
|
||||
#endif //QT_WIDGET
|
||||
|
||||
#endif // COREWRAPPER_H
|
||||
|
||||
@@ -6,56 +6,116 @@
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkRequest>
|
||||
#include <QNetworkReply>
|
||||
#include <qdeclarative.h>
|
||||
#include <QTemporaryFile>
|
||||
#ifdef QT_WIDGET
|
||||
#include <QProgressDialog>
|
||||
#else
|
||||
#include <qdeclarative.h>
|
||||
#endif //QT_WIDGET
|
||||
|
||||
|
||||
class FileDownloader : public QObject
|
||||
class FileDownloader :
|
||||
#ifdef QT_WIDGET
|
||||
public QProgressDialog
|
||||
#else
|
||||
public QObject
|
||||
#endif //QT_WIDGET
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(qint64 received READ received NOTIFY receivedChanged)
|
||||
Q_PROPERTY(QUrl url READ getDownloadUrl WRITE setDownloadUrl NOTIFY downloadUrlChanged)
|
||||
Q_PROPERTY(QString hash READ getHash NOTIFY hashChanged)
|
||||
Q_PROPERTY(QString status READ getStatus NOTIFY statusChanged)
|
||||
Q_PROPERTY(DownloadState state READ getState NOTIFY stateChanged )
|
||||
Q_PROPERTY(QString state_string READ getStateString NOTIFY stateStringChanged )
|
||||
Q_ENUMS(DownloadState)
|
||||
public:
|
||||
explicit FileDownloader(QString localPath, QObject *parent = 0);
|
||||
enum DownloadState {
|
||||
NETWORK_ERROR,
|
||||
DOWNLOADING_HASH,
|
||||
DOWNLOADING_FILE,
|
||||
DOWNLOADED
|
||||
} ;
|
||||
|
||||
explicit FileDownloader(QString localPath, QString targetFile, QObject *parent = 0);
|
||||
virtual ~FileDownloader();
|
||||
qint64 received() const {return m_received;};
|
||||
QUrl getDownloadUrl() {return m_downloadUrl;};
|
||||
QString getHash() {return m_hash;};
|
||||
QString getStatus() {return m_status;};
|
||||
DownloadState getState() {
|
||||
return m_state;
|
||||
};
|
||||
QString getStateString() {
|
||||
if(m_state == DOWNLOADING_HASH )
|
||||
return "DOWNLOADING_HASH";
|
||||
else if(m_state == DOWNLOADING_FILE )
|
||||
return "DOWNLOADING_FILE";
|
||||
else
|
||||
return "DOWNLOADED";
|
||||
}
|
||||
|
||||
signals:
|
||||
void receivedChanged();
|
||||
void downloadUrlChanged();
|
||||
void hashChanged();
|
||||
void receivedChanged(int value);
|
||||
void statusChanged();
|
||||
void stateChanged(DownloadState state);
|
||||
void stateStringChanged();
|
||||
|
||||
private slots:
|
||||
void fileDownloaded(QNetworkReply* pReply){
|
||||
if(m_tmp.write(pReply->readAll()) == -1) return;
|
||||
void fileDownloaded(){
|
||||
if(m_tmp.write(m_downloadReply->readAll()) == -1) return;
|
||||
if(QFile(m_localPath).exists())
|
||||
QFile::remove(m_localPath);
|
||||
|
||||
if(!m_tmp.rename(m_localPath)) return;
|
||||
|
||||
computeHash(m_tmp);
|
||||
computeLocalHash(m_tmp);
|
||||
m_tmp.setAutoRemove(false);
|
||||
m_state = DOWNLOADED;
|
||||
emit stateChanged(m_state);
|
||||
};
|
||||
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal){
|
||||
if(m_tmp.write(m_downloadReply->readAll()) == -1) return;
|
||||
m_received = bytesReceived*100/bytesTotal;
|
||||
emit receivedChanged();
|
||||
emit receivedChanged(m_received);
|
||||
};
|
||||
void setDownloadUrl(QUrl url);
|
||||
void computeHash(QFile& file);
|
||||
void computeLocalHash(QFile& file);
|
||||
void requestHash(QUrl url);
|
||||
void computeRemoteHash();
|
||||
void handleStateChange(DownloadState state){
|
||||
#ifdef QT_WIDGET
|
||||
switch(state) {
|
||||
case DOWNLOADED:
|
||||
case NETWORK_ERROR:
|
||||
emit finished(0);
|
||||
break;
|
||||
case DOWNLOADING_HASH:
|
||||
break;
|
||||
case DOWNLOADING_FILE:
|
||||
show();
|
||||
break;
|
||||
}
|
||||
|
||||
#else
|
||||
emit stateStringChanged();
|
||||
#endif //QT_WIDGET
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
|
||||
DownloadState m_state;
|
||||
QNetworkAccessManager m_WebCtrl;
|
||||
qint64 m_received;
|
||||
QTemporaryFile m_tmp;
|
||||
QString m_targetFile;
|
||||
QString m_localPath;
|
||||
QUrl m_downloadUrl;
|
||||
QString m_hash;
|
||||
QString m_localHash;
|
||||
QString m_remoteHash;
|
||||
bool m_OK;
|
||||
QString m_status;
|
||||
QNetworkReply* m_downloadReply;
|
||||
QNetworkReply* m_hashReply;
|
||||
};
|
||||
#ifndef QT_WIDGET
|
||||
QML_DECLARE_TYPEINFO(FileDownloader, QML_HAS_ATTACHED_PROPERTIES)
|
||||
#endif //QT_WIDGET
|
||||
|
||||
#endif // FILEDOWNLOADER_H
|
||||
|
||||
Reference in New Issue
Block a user