forked from qt-creator/qt-creator
Qt Creator's support for Symbian was at its peak in version 2.4.x. Nobody really verified it in Qt Creator 2.5 or 2.6. It is most likely rotten. Let's remove it! Also, the Symbian support code was spread throughout the whole Qt Creator code base. The plugin interfaces evolved in the meantime and target platforms like Android or QNX have 99% of their code in separate plugins. In case anyone wants to revive Symbian support in Qt Creator, please create a plugin for it. Change-Id: I56a758a3e2fd5b8c64d9aeb8f63d8e916c4883be Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
172 lines
4.5 KiB
C++
172 lines
4.5 KiB
C++
/*
|
|
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 <QDir>
|
|
#include <QFileInfo>
|
|
#include <QApplication>
|
|
#include <QDeclarativeComponent>
|
|
#include <QDeclarativeEngine>
|
|
#include <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);
|
|
#elif !defined(Q_OS_ANDROID)
|
|
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);
|
|
#ifdef Q_OS_ANDROID
|
|
setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
|
|
#else
|
|
setSource(QUrl::fromLocalFile(d->mainQmlFile));
|
|
#endif
|
|
}
|
|
|
|
void QmlApplicationViewer::addImportPath(const QString &path)
|
|
{
|
|
engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path));
|
|
}
|
|
|
|
void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
|
|
{
|
|
#if QT_VERSION < 0x050000
|
|
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);
|
|
#else // QT_VERSION < 0x050000
|
|
Q_UNUSED(orientation)
|
|
#endif // QT_VERSION < 0x050000
|
|
}
|
|
|
|
void QmlApplicationViewer::showExpanded()
|
|
{
|
|
#if 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
|
|
}
|