// 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 #include #include #include #include #include #include // MEEGO_EDITION_HARMATTAN #ifdef HARMATTAN_BOOSTER #include #endif #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800 #include #if !defined(NO_JSDEBUGGER) #include #endif #if !defined(NO_QMLOBSERVER) #include #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(128); break; case ScreenOrientationLockLandscape: attribute = static_cast(129); break; default: case ScreenOrientationAuto: attribute = static_cast(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 }