summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Burke <patrick.burke@nokia.com>2011-11-25 15:10:59 +1000
committerDanny Pope <daniel.pope@nokia.com>2012-02-01 02:46:23 +0100
commit164a5af14a267de2d2c9fd52ab4e149cc53b80da (patch)
tree131ded9c234956e92f11a3bb20665545fb1abe4d
parent8e42a138b77f8404c5ca619bf2a1c731683a043c (diff)
ModelTweak: Unified file loading/saving classes
Again, there should be no user-visible functionality changes. Change-Id: I100735a4c03c006e3c8986dd18359ca5d52d3405 Reviewed-by: Danny Pope <daniel.pope@nokia.com>
-rw-r--r--util/qt3d/modeltweak/QuickLoad.h38
-rw-r--r--util/qt3d/modeltweak/QuickSave.h63
-rw-r--r--util/qt3d/modeltweak/main.cpp6
-rw-r--r--util/qt3d/modeltweak/modeltweak.pro6
-rw-r--r--util/qt3d/modeltweak/qml/ButtonBarPane.qml2
-rw-r--r--util/qt3d/modeltweak/qml/ModelTweak.qml20
-rw-r--r--util/qt3d/modeltweak/qml/SaveButton.qml6
-rw-r--r--util/qt3d/modeltweak/quickfile.cpp92
-rw-r--r--util/qt3d/modeltweak/quickfile.h34
9 files changed, 143 insertions, 124 deletions
diff --git a/util/qt3d/modeltweak/QuickLoad.h b/util/qt3d/modeltweak/QuickLoad.h
deleted file mode 100644
index 3ad0ee707..000000000
--- a/util/qt3d/modeltweak/QuickLoad.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef QUICKLOAD_H
-#define QUICKLOAD_H
-
-#include <QObject>
-#include <QFile>
-#include <QUrl>
-#include <QFileDialog>
-#include <QDebug>
-
-class QuickLoad : public QObject
-{
- Q_OBJECT
-
- QString _filename;
-
- Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
-
-public:
- QuickLoad(QObject *parent=0) : QObject(parent) {}
-
- Q_INVOKABLE QString openModelFile()
- {
- QString qmlFilename = QFileDialog::getOpenFileName(0, tr("Open Model File"), "",tr("Model Files (*.*)"));
-
- setFilename(qmlFilename);
-
- return qmlFilename;
- }
-
- QString filename() const { return _filename; }
- void setFilename(const QString filename) { if (_filename != filename) _filename = filename; emit filenameChanged(filename); }
-
-signals:
- void filenameChanged(const QString newFilename);
-
-};
-
-#endif // QUICKLOAD_H
diff --git a/util/qt3d/modeltweak/QuickSave.h b/util/qt3d/modeltweak/QuickSave.h
deleted file mode 100644
index 8e854b20f..000000000
--- a/util/qt3d/modeltweak/QuickSave.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef QUICKSAVE_H
-#define QUICKSAVE_H
-
-#include <QObject>
-#include <QFile>
-#include <QUrl>
-#include <QFileDialog>
-#include <QDebug>
-
-class QuickSave : public QObject
-{
- Q_OBJECT
-
- QString _filename;
- QString _data;
-
- Q_PROPERTY(QString filename READ filename WRITE setFilename)
- Q_PROPERTY(QString data READ data WRITE setData)
-
-public:
- QuickSave(QObject *parent=0) : QObject(parent) {}
-
- Q_INVOKABLE QString save() const
- {
- QString filename = QFileDialog::getSaveFileName(0, tr("Save File"), "",tr("Files (*.qml)"));
-
- // FIXME: ensure fileName is appropriate as a qml Component
- if (!filename.endsWith(".qml"))
- filename.append(".qml");
-
- QString modelFilename = QUrl(_filename).toLocalFile();
-
- QDir outputDir = QFileInfo(filename).absoluteDir();
- QString relativeFilename = outputDir.relativeFilePath(modelFilename);
-
- QFile file(filename);
-
- qDebug("Attempting to write: %s", file.fileName().toAscii().constData());
-
- if (!file.open(QFile::WriteOnly))
- return file.errorString();
-
- QString dataToWrite = _data.arg(relativeFilename);
-
- file.write(dataToWrite.toUtf8());
-
- file.close();
-
- return QString();
- }
-
- QString filename() const { return _filename; }
- void setFilename(const QString filename) { if (_filename != filename) _filename = filename; emit filenameChanged(filename); }
-
- QString data() const { return _data; }
- void setData(const QString data) { if (_data != data) _data = data; emit dataChanged(data); }
-
-signals:
- void filenameChanged(const QString newFilename);
- void dataChanged(const QString newData);
-};
-
-#endif // QUICKSAVE_H
diff --git a/util/qt3d/modeltweak/main.cpp b/util/qt3d/modeltweak/main.cpp
index 300062b39..78e9c410c 100644
--- a/util/qt3d/modeltweak/main.cpp
+++ b/util/qt3d/modeltweak/main.cpp
@@ -46,15 +46,13 @@
#include <QtDeclarative>
#include "../../../demos/quick3d/qmlres.h"
-#include "QuickSave.h"
-#include "QuickLoad.h"
+#include "quickfile.h"
QString filename;
int main(int argc, char *argv[])
{
- qmlRegisterType<QuickSave>("ModelTweak", 1, 0, "QuickSave");
- qmlRegisterType<QuickLoad>("ModelTweak", 1, 0, "QuickLoad");
+ qmlRegisterType<QuickFile>("ModelTweak", 1, 0, "QuickFile");
QApplication app(argc, argv);
QDeclarativeView3D view;
diff --git a/util/qt3d/modeltweak/modeltweak.pro b/util/qt3d/modeltweak/modeltweak.pro
index 0f628ee5f..1356a1c9f 100644
--- a/util/qt3d/modeltweak/modeltweak.pro
+++ b/util/qt3d/modeltweak/modeltweak.pro
@@ -7,7 +7,8 @@ CONFIG += qt3d_deploy_qml qt3dquick_deploy_pkg
include(../../../pkg.pri)
qtcAddDeployment()
-SOURCES += main.cpp
+SOURCES += main.cpp \
+ quickfile.cpp
symbian {
qmlDeployment2.sources = qml\meshes\*
@@ -21,7 +22,6 @@ OTHER_FILES += \
RC_FILE = modeltweak.rc
HEADERS += \
- QuickSave.h \
- QuickLoad.h
+ quickfile.h
diff --git a/util/qt3d/modeltweak/qml/ButtonBarPane.qml b/util/qt3d/modeltweak/qml/ButtonBarPane.qml
index 9be2df30e..ece16573f 100644
--- a/util/qt3d/modeltweak/qml/ButtonBarPane.qml
+++ b/util/qt3d/modeltweak/qml/ButtonBarPane.qml
@@ -17,7 +17,7 @@ Flow {
BlenderToggle {
width: buttonWidth
buttonText: "Load!"
- onClicked: quickLoad.openModelFile()
+ onClicked: quickFile.load()
}
BlenderToggle {
diff --git a/util/qt3d/modeltweak/qml/ModelTweak.qml b/util/qt3d/modeltweak/qml/ModelTweak.qml
index 3175164f4..86ec6458f 100644
--- a/util/qt3d/modeltweak/qml/ModelTweak.qml
+++ b/util/qt3d/modeltweak/qml/ModelTweak.qml
@@ -48,20 +48,16 @@ Rectangle {
height: 768
color: "#444444"
border.color: "black"
- property alias targetMesh: quickLoad.filename
+ property alias targetMesh: quickFile.filename
- QuickSave {
- id: quickSave;
- }
-
- QuickLoad {
- id: quickLoad
- filename: "meshes/monkey.3ds"
+ QuickFile {
+ id: quickFile
+ filename: "meshes/penguin.3ds"
}
Mesh {
id: source_mesh
- source: quickLoad.filename
+ source: quickFile.filename
}
Translation3D { id: transformTranslate; translate: Qt.vector3d(0, 0, 0); }
@@ -74,7 +70,7 @@ Rectangle {
id: mvpZY
x: 0;
y: 0;
- camera.eye: Qt.vector3d(10, 0, 0);
+ camera.eye: Qt.vector3d(20, 0, 0);
stateName: "ZYMaximised"
property alias position: transformTranslate.translate;
@@ -97,7 +93,7 @@ Rectangle {
id: mvpXY
x: parent.width/2
y: 0;
- camera.eye: Qt.vector3d(0, 0, 10);
+ camera.eye: Qt.vector3d(0, 0, 20);
stateName: "XYMaximised"
property alias position: transformTranslate.translate;
@@ -120,7 +116,7 @@ Rectangle {
id: mvpXZ
x: parent.width/2;
y: parent.height/2;
- camera.eye: Qt.vector3d(0, 10, 0);
+ camera.eye: Qt.vector3d(0, 20, 0);
camera.upVector: Qt.vector3d(0, 0, -1);
stateName: "XZMaximised"
diff --git a/util/qt3d/modeltweak/qml/SaveButton.qml b/util/qt3d/modeltweak/qml/SaveButton.qml
index 1cecdd173..9056c293d 100644
--- a/util/qt3d/modeltweak/qml/SaveButton.qml
+++ b/util/qt3d/modeltweak/qml/SaveButton.qml
@@ -59,9 +59,9 @@ BlenderToggle {
" ]\n" +
"}\n";
- quickSave.filename = source_mesh.source
- quickSave.data = saveData
- var result = quickSave.save()
+ quickFile.filename = source_mesh.source
+ quickFile.data = saveData
+ var result = quickFile.save()
if (result !== "")
console.log("If there was an error it will be after here:" + result)
}
diff --git a/util/qt3d/modeltweak/quickfile.cpp b/util/qt3d/modeltweak/quickfile.cpp
new file mode 100644
index 000000000..8c8ad6b1b
--- /dev/null
+++ b/util/qt3d/modeltweak/quickfile.cpp
@@ -0,0 +1,92 @@
+#include "quickfile.h"
+#include <QFileDialog>
+#include <QUrl>
+
+/*!
+ \qmlclass QuickFile QuickFile
+ \brief QuickFile is a quick-and-dirty file handling object that supports file-io that QML/Javascript doesn't.
+ \inherits QObject
+
+ The QuickFile element is part of the \c{ModelTweak} namespace,
+ so the following must appear at the top of any QML file that
+ references it:
+
+ \code
+ import ModelTweak 1.0
+ \endcode
+
+ \sa QObject
+*/
+
+/*!
+ \internal
+*/
+QuickFile::QuickFile(QObject *parent) :
+ QObject(parent)
+{
+}
+
+/*!
+ Prompts for a location and filename to save the qml \c{QuickFile::data} generated by ModelTweaker.
+ Returns an error message if the file was unsuccessfully saved,
+ or an empty string if the save was successful.
+*/
+QString QuickFile::save() const
+{
+ QString filename = QFileDialog::getSaveFileName(0, tr("Save QML File"), "",tr("Files (*.qml)"));
+
+ // FIXME: ensure fileName is appropriate as a qml Component
+ if (!filename.endsWith(".qml"))
+ filename.append(".qml");
+
+ QString modelFilename = QUrl(_filename).toLocalFile();
+
+ QDir outputDir = QFileInfo(filename).absoluteDir();
+ QString relativeFilename = outputDir.relativeFilePath(modelFilename);
+
+ QFile file(filename);
+
+ qDebug("Attempting to write: %s", file.fileName().toAscii().constData());
+
+ if (!file.open(QFile::WriteOnly))
+ return file.errorString();
+
+ QString dataToWrite = _data.arg(relativeFilename);
+
+ file.write(dataToWrite.toUtf8());
+
+ file.close();
+
+ return QString();
+}
+
+/*!
+ Prompts for a location to load a model file from and stores it into the the \c{QuickFile::filename}
+ variable.
+*/
+void QuickFile::load()
+{
+ QString qmlFilename = QFileDialog::getOpenFileName(0, tr("Load File"), "",tr("Model Files (*.*)"));
+
+ setFilename(qmlFilename);
+}
+
+QString QuickFile::filename() const {
+ return _filename;
+}
+
+void QuickFile::setFilename(const QString filename) {
+ if (_filename != filename)
+ _filename = filename;
+ emit filenameChanged(filename);
+}
+
+QString QuickFile::data() const {
+ return _data;
+}
+
+void QuickFile::setData(const QString data) {
+ if (_data != data)
+ _data = data;
+ emit dataChanged(data);
+}
diff --git a/util/qt3d/modeltweak/quickfile.h b/util/qt3d/modeltweak/quickfile.h
new file mode 100644
index 000000000..ba4e423e6
--- /dev/null
+++ b/util/qt3d/modeltweak/quickfile.h
@@ -0,0 +1,34 @@
+#ifndef QUICKFILE_H
+#define QUICKFILE_H
+
+#include <QObject>
+
+class QuickFile : public QObject
+{
+ Q_OBJECT
+
+ QString _filename;
+ QString _data;
+
+ Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
+ Q_PROPERTY(QString data READ data WRITE setData NOTIFY dataChanged)
+
+public:
+ explicit QuickFile(QObject *parent = 0);
+
+ QString filename() const;
+ void setFilename(const QString filename);
+
+ QString data() const;
+ void setData(const QString data);
+
+ Q_INVOKABLE QString save() const;
+ Q_INVOKABLE void load();
+
+signals:
+ void filenameChanged(const QString newFilename);
+ void dataChanged(const QString newData);
+
+};
+
+#endif // QUICKFILE_H