##// END OF EJS Templates
Return empty brush/pen/font via API rather than the weird default one...
Return empty brush/pen/font via API rather than the weird default one Previously a non-initialized QPen()/QBrush()/QFont() was returned if axis/series hadn't been added to a chart yet and therefore had not been themed yet. To keep API somewhat consistent with old behavior, return non-initialized QPen()/QBrush()/QFont() instead of the weird default one in these cases. The new behavior is slightly different in that it is no longer possible to restore themed behavior by setting pen/brush/font to non-initialized one, but since there is no way to differentiate e.g. legitimate Qt::black pen from non-initialized pen, we can no longer support this behavior. Change-Id: I99f3d8853b329b5345e3073c040d8bfa8b9b75b4 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>

File last commit:

r2511:5947c46dff64
r2519:9ea7d7fe3500
Show More
qmlapplicationviewer.cpp
177 lines | 4.9 KiB | text/x-c | CppLexer
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 // checksum 0xbd34 version 0x80016
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 /*
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"
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 #include <QDir>
#include <QFileInfo>
Marek Rosa
Qt5: fixed QApplication and QWidget includes
r2049 #include <QApplication>
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 #include <QDeclarativeComponent>
#include <QDeclarativeEngine>
#include <QDeclarativeContext>
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027
#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;
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 static QString adjustPath(const QString &path);
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 };
QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
{
#ifdef Q_OS_MAC
if (!QDir::isAbsolutePath(path))
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 return QString::fromLatin1("%1/../Resources/%2")
.arg(QCoreApplication::applicationDirPath(), path);
#elif defined(Q_OS_QNX)
if (!QDir::isAbsolutePath(path))
return QString::fromLatin1("app/native/%1").arg(path);
#elif !defined(Q_OS_ANDROID)
QString pathInInstallDir =
QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
if (QFileInfo(pathInInstallDir).exists())
return pathInInstallDir;
pathInInstallDir =
QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 if (QFileInfo(pathInInstallDir).exists())
return pathInInstallDir;
#endif
return path;
}
QmlApplicationViewer::QmlApplicationViewer(QWidget *parent)
: QDeclarativeView(parent)
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 , d(new QmlApplicationViewerPrivate())
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 {
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)
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 new QmlJSDebugger::JSDebuggerAgent(engine());
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 #endif
#if !defined(NO_QMLOBSERVER)
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 new QmlJSDebugger::QDeclarativeViewObserver(this, this);
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 #endif
#endif
}
QmlApplicationViewer::~QmlApplicationViewer()
{
delete d;
}
QmlApplicationViewer *QmlApplicationViewer::create()
{
return new QmlApplicationViewer();
}
void QmlApplicationViewer::setMainQmlFile(const QString &file)
{
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
#ifdef Q_OS_ANDROID
setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
#else
setSource(QUrl::fromLocalFile(d->mainQmlFile));
#endif
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 }
void QmlApplicationViewer::addImportPath(const QString &path)
{
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path));
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 }
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 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
}
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027
void QmlApplicationViewer::showExpanded()
{
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 #if defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR)
showFullScreen();
#elif defined(Q_WS_MAEMO_5) || defined(Q_OS_QNX)
showMaximized();
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 #else
Tero Ahola
Forced update of qmlapplicationviewer templates
r2405 show();
Tero Ahola
Property for QDateTimeAxis::format and a QML demo for axes
r2027 #endif
}
QApplication *createApplication(int &argc, char **argv)
{
#ifdef HARMATTAN_BOOSTER
return MDeclarativeCache::qApplication(argc, argv);
#else
return new QApplication(argc, argv);
#endif
}