diff options
Diffstat (limited to 'share/qbs/imports')
-rw-r--r-- | share/qbs/imports/qbs/base/Application.qbs | 3 | ||||
-rw-r--r-- | share/qbs/imports/qbs/base/DynamicLibrary.qbs | 3 | ||||
-rw-r--r-- | share/qbs/imports/qbs/base/QmlApp.qbs | 22 | ||||
-rw-r--r-- | share/qbs/imports/qbs/base/StaticLibrary.qbs | 3 | ||||
-rw-r--r-- | share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.cpp | 174 | ||||
-rw-r--r-- | share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.h | 46 | ||||
-rw-r--r-- | share/qbs/imports/qbs/fileinfo/fileinfo.js | 62 |
7 files changed, 313 insertions, 0 deletions
diff --git a/share/qbs/imports/qbs/base/Application.qbs b/share/qbs/imports/qbs/base/Application.qbs new file mode 100644 index 000000000..5865e6a99 --- /dev/null +++ b/share/qbs/imports/qbs/base/Application.qbs @@ -0,0 +1,3 @@ +Product { + type: qbs.targetOS == 'mac' ? "applicationbundle" : "application" +} diff --git a/share/qbs/imports/qbs/base/DynamicLibrary.qbs b/share/qbs/imports/qbs/base/DynamicLibrary.qbs new file mode 100644 index 000000000..bf71dc8d5 --- /dev/null +++ b/share/qbs/imports/qbs/base/DynamicLibrary.qbs @@ -0,0 +1,3 @@ +Product { + type: "dynamiclibrary" +} diff --git a/share/qbs/imports/qbs/base/QmlApp.qbs b/share/qbs/imports/qbs/base/QmlApp.qbs new file mode 100644 index 000000000..2d1ce228c --- /dev/null +++ b/share/qbs/imports/qbs/base/QmlApp.qbs @@ -0,0 +1,22 @@ +import qbs.base 1.0 + +Product { + type: ["application", "installed_content"] + Depends { name: "qt.declarative" } + Depends { name: "cpp" } + property string appViewerPath: localPath + "/qmlapplicationviewer" + cpp.includePaths: [appViewerPath] + + Group { + files: [ + appViewerPath + "/qmlapplicationviewer.h", + appViewerPath + "/qmlapplicationviewer.cpp" + ] + } + + FileTagger { + pattern: "*.qml" + fileTags: ["install"] + } +} + diff --git a/share/qbs/imports/qbs/base/StaticLibrary.qbs b/share/qbs/imports/qbs/base/StaticLibrary.qbs new file mode 100644 index 000000000..da0416bee --- /dev/null +++ b/share/qbs/imports/qbs/base/StaticLibrary.qbs @@ -0,0 +1,3 @@ +Product { + type: "staticlibrary" +} diff --git a/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.cpp b/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.cpp new file mode 100644 index 000000000..997bbfcc7 --- /dev/null +++ b/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.cpp @@ -0,0 +1,174 @@ +// checksum 0xee24 version 0x70013 +/* + This file was generated by the Qt Quick Application wizard of Qt Creator. + QmlApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#include "qmlapplicationviewer.h" + +#include <QtCore/QDir> +#include <QtCore/QFileInfo> +#include <QtGui/QApplication> +#include <QtDeclarative/QDeclarativeComponent> +#include <QtDeclarative/QDeclarativeEngine> +#include <QtDeclarative/QDeclarativeContext> + +#include <qplatformdefs.h> // MEEGO_EDITION_HARMATTAN + +#ifdef HARMATTAN_BOOSTER +#include <MDeclarativeCache> +#endif + +#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800 + +#include <qt_private/qdeclarativedebughelper_p.h> + +#if !defined(NO_JSDEBUGGER) +#include <jsdebuggeragent.h> +#endif +#if !defined(NO_QMLOBSERVER) +#include <qdeclarativeviewobserver.h> +#endif + +// Enable debugging before any QDeclarativeEngine is created +struct QmlJsDebuggingEnabler +{ + QmlJsDebuggingEnabler() + { + QDeclarativeDebugHelper::enableDebugging(); + } +}; + +// Execute code in constructor before first QDeclarativeEngine is instantiated +static QmlJsDebuggingEnabler enableDebuggingHelper; + +#endif // QMLJSDEBUGGER + +class QmlApplicationViewerPrivate +{ + QString mainQmlFile; + friend class QmlApplicationViewer; + static QString adjustPath(const QString &path); +}; + +QString QmlApplicationViewerPrivate::adjustPath(const QString &path) +{ +#ifdef Q_OS_UNIX +#ifdef Q_OS_MAC + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("%1/../Resources/%2") + .arg(QCoreApplication::applicationDirPath(), path); +#else + const QString pathInInstallDir = + QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path); + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; +#endif +#endif + return path; +} + +QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) + : QDeclarativeView(parent) + , d(new QmlApplicationViewerPrivate()) +{ + connect(engine(), SIGNAL(quit()), SLOT(close())); + setResizeMode(QDeclarativeView::SizeRootObjectToView); + // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in +#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800 +#if !defined(NO_JSDEBUGGER) + new QmlJSDebugger::JSDebuggerAgent(engine()); +#endif +#if !defined(NO_QMLOBSERVER) + new QmlJSDebugger::QDeclarativeViewObserver(this, this); +#endif +#endif +} + +QmlApplicationViewer::~QmlApplicationViewer() +{ + delete d; +} + +QmlApplicationViewer *QmlApplicationViewer::create() +{ + return new QmlApplicationViewer(); +} + +void QmlApplicationViewer::setMainQmlFile(const QString &file) +{ + d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); + setSource(QUrl::fromLocalFile(d->mainQmlFile)); +} + +void QmlApplicationViewer::addImportPath(const QString &path) +{ + engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); +} + +void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) +{ +#if defined(Q_OS_SYMBIAN) + // If the version of Qt on the device is < 4.7.2, that attribute won't work + if (orientation != ScreenOrientationAuto) { + const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.')); + if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) { + qWarning("Screen orientation locking only supported with Qt 4.7.2 and above"); + return; + } + } +#endif // Q_OS_SYMBIAN + + Qt::WidgetAttribute attribute; + switch (orientation) { +#if QT_VERSION < 0x040702 + // Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes + case ScreenOrientationLockPortrait: + attribute = static_cast<Qt::WidgetAttribute>(128); + break; + case ScreenOrientationLockLandscape: + attribute = static_cast<Qt::WidgetAttribute>(129); + break; + default: + case ScreenOrientationAuto: + attribute = static_cast<Qt::WidgetAttribute>(130); + break; +#else // QT_VERSION < 0x040702 + case ScreenOrientationLockPortrait: + attribute = Qt::WA_LockPortraitOrientation; + break; + case ScreenOrientationLockLandscape: + attribute = Qt::WA_LockLandscapeOrientation; + break; + default: + case ScreenOrientationAuto: + attribute = Qt::WA_AutoOrientation; + break; +#endif // QT_VERSION < 0x040702 + }; + setAttribute(attribute, true); +} + +void QmlApplicationViewer::showExpanded() +{ +#if defined(Q_OS_SYMBIAN) || defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR) + showFullScreen(); +#elif defined(Q_WS_MAEMO_5) + showMaximized(); +#else + show(); +#endif +} + +QApplication *createApplication(int &argc, char **argv) +{ +#ifdef HARMATTAN_BOOSTER + return MDeclarativeCache::qApplication(argc, argv); +#else + return new QApplication(argc, argv); +#endif +} diff --git a/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.h b/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.h new file mode 100644 index 000000000..b01cc886f --- /dev/null +++ b/share/qbs/imports/qbs/base/qmlapplicationviewer/qmlapplicationviewer.h @@ -0,0 +1,46 @@ +// checksum 0x898f version 0x70013 +/* + This file was generated by the Qt Quick Application wizard of Qt Creator. + QmlApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#ifndef QMLAPPLICATIONVIEWER_H +#define QMLAPPLICATIONVIEWER_H + +#include <QtDeclarative/QDeclarativeView> + +class QmlApplicationViewer : public QDeclarativeView +{ + Q_OBJECT + +public: + enum ScreenOrientation { + ScreenOrientationLockPortrait, + ScreenOrientationLockLandscape, + ScreenOrientationAuto + }; + + explicit QmlApplicationViewer(QWidget *parent = 0); + virtual ~QmlApplicationViewer(); + + static QmlApplicationViewer *create(); + + void setMainQmlFile(const QString &file); + void addImportPath(const QString &path); + + // Note that this will only have an effect on Symbian and Fremantle. + void setOrientation(ScreenOrientation orientation); + + void showExpanded(); + +private: + class QmlApplicationViewerPrivate *d; +}; + +QApplication *createApplication(int &argc, char **argv); + +#endif // QMLAPPLICATIONVIEWER_H diff --git a/share/qbs/imports/qbs/fileinfo/fileinfo.js b/share/qbs/imports/qbs/fileinfo/fileinfo.js new file mode 100644 index 000000000..b65e4073c --- /dev/null +++ b/share/qbs/imports/qbs/fileinfo/fileinfo.js @@ -0,0 +1,62 @@ +function path(fp) { + if (fp[fp.length -1] == '/') + return fp; + var last = fp.lastIndexOf('/'); + if (last < 0) + return '.'; + return fp.slice(0, last); +} + +function fileName(fph) { + var fp = fph.toString(); + if (fp[fp.length -1] == '/') + return fp; + var last = fp.lastIndexOf('/'); + if (last < 0) + return '.'; + return fp.slice(last + 1); +} + +function baseName(fph) { + var fn = fileName(fph); + return fn.split('.')[0]; +} + +function relativePath(base, rel) +{ + var basel = base.split('/'); + var rell = rel.split('/'); + var i = 0; + + while (i < basel.length && i < rell.length && basel[i] == rell[i]) + i++; + + var j = i; + var r = []; + + for (; i < basel.length; i++) + r.push('..'); + + for (; j < rell.length; j++) + r.push(rell[j]); + + return r.join('/'); +} + +function isAbsolutePath(path) +{ + if (!path) + return false; + return (path.charAt(0) == '/'); +} + +function toWindowsSeparators(str) +{ + return str.toString().replace(/\//g, '\\'); +} + +function fromWindowsSeparators(str) +{ + return str.toString().replace(/\\/g, '/'); +} + |