From 7f29eb621478e42999984935197e396d2b782359 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 15 Jul 2019 14:34:20 +0300 Subject: Make demo header as overlay on top of loader and add auto-hide timer * Revert Anchoring demo loader under demo header because it causes crash out-of-memory for qt5-cinematicdemo and lags for charts demo. * Add a timer to auto-hide the demo header while app is running Task-number: QTBUG-69818 Change-Id: I566e108b0275588ddff0b3f6e020e47bd3cc0e29 Reviewed-by: Jani Launonen --- qml/DemoHeader.qml | 29 ++++++++++++++++++++++++++--- qml/MainWindow.qml | 6 +----- qml/ViewSettings.qml | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/qml/DemoHeader.qml b/qml/DemoHeader.qml index 555fff2..0ee83bc 100644 --- a/qml/DemoHeader.qml +++ b/qml/DemoHeader.qml @@ -111,11 +111,13 @@ Rectangle { anchors.horizontalCenter: parent.horizontalCenter y: open ? parent.height - height/2 : parent.height rotation: open ? 180 : 0 + Drag.active: headerToggleMouseArea.drag.active Behavior on rotation { NumberAnimation { duration: 100 } } Behavior on y { NumberAnimation { duration: 100 } } MouseArea { + id: headerToggleMouseArea anchors.fill: parent anchors.margins: -parent.height * 0.5 drag.target: demoHeaderBar @@ -123,13 +125,34 @@ Rectangle { drag.minimumX: -demoHeaderBar.height drag.maximumY: 0 + DropArea { + anchors.fill: parent + onDropped: demoHeaderVisibilityDelay.restart() + } + onClicked: { - if (demoHeaderBar.y < -demoHeaderBar.height / 2) + if (demoHeaderBar.y < -demoHeaderBar.height / 2) { demoHeaderBar.y = 0 - else + demoHeaderVisibilityDelay.restart() + } else { demoHeaderBar.y = -demoHeaderBar.height + } + } + onReleased: { + demoHeaderBar.y = demoHeaderBar.y > -demoHeaderBar.height / 4 ? 0 : -demoHeaderBar.height + parent.Drag.drop() } - onReleased: demoHeaderBar.y = demoHeaderBar.y > -demoHeaderBar.height / 4 ? 0 : -demoHeaderBar.height + } + } + + Component.onCompleted: demoHeaderVisibilityDelay.start() + + Timer { + id: demoHeaderVisibilityDelay + interval: viewSettings.headerAutoHideDelay + onTriggered: { + if (!demoHeaderVisibilityDelay.running) + demoHeaderBar.y = -demoHeaderBar.height } } } diff --git a/qml/MainWindow.qml b/qml/MainWindow.qml index d957468..c1f4e54 100644 --- a/qml/MainWindow.qml +++ b/qml/MainWindow.qml @@ -180,11 +180,7 @@ Item { objectName: "applicationLoader" opacity: 0; visible: opacity > 0.1 - height: root.demoHeaderEnabled ? parent.height - (demoHeader.height + demoHeader.y) : parent.height - - anchors.top: root.demoHeaderEnabled ? demoHeader.bottom : root.top - anchors.left: parent.left - anchors.right: parent.right + anchors.fill: parent asynchronous: true; onStatusChanged: { diff --git a/qml/ViewSettings.qml b/qml/ViewSettings.qml index 3798e68..82f4241 100644 --- a/qml/ViewSettings.qml +++ b/qml/ViewSettings.qml @@ -37,6 +37,7 @@ Item { property real demoHeaderHeight: 2.5 * pageMargin property string appFont: "TitilliumWeb" property int stateDelay: 200; + property int headerAutoHideDelay: 3000 property string backgroundColor: "#09102b" property string borderColor: "#9d9faa" property string buttonGreenColor: "#41cd52" -- cgit v1.2.3 From 051174fb571e889bb70056e5cab25de1d4630d76 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 15 Jul 2019 14:29:49 +0300 Subject: Remove hard-coded values for default video and default location The hard-coded values are moved to the boot2qt-launcher yocto recipe boot2qt-launcher_git.bb, which installs a config file with the needed values. Task-number: QTBUG-70156 Change-Id: I3bfba1de3cb232a7e5120bfb2e90101dc30035e0 Reviewed-by: Samuli Piippo --- src/main.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 792351f..764a745 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -142,7 +142,7 @@ int main(int argc, char **argv) } QQuickStyle::setStyle(styleSettings.value("style").toString()); - QSettings launcherSettings("QtLauncher", "colorSettings"); + QSettings launcherSettings("Qt", "QtLauncher"); engine.rootContext()->setContextProperty("_backgroundColor", launcherSettings.value("backgroundColor", "#09102b")); engine.rootContext()->setContextProperty("_primaryGreen", launcherSettings.value("primaryGreen", "#41cd52")); @@ -151,8 +151,11 @@ int main(int argc, char **argv) engine.rootContext()->setContextProperty("_primaryGrey", launcherSettings.value("primaryGrey", "#9d9faa")); engine.rootContext()->setContextProperty("_secondaryGrey", launcherSettings.value("secondaryGrey", "#3a4055")); - engine.rootContext()->setContextProperty("VideosLocation", launcherSettings.value("videosLocation", "file:///data/videos")); - engine.rootContext()->setContextProperty("DefaultVideoUrl", launcherSettings.value("defaultVideoUrl", "file:///data/videos/Qt+for+Designers+and+Developers.mp4")); + engine.rootContext()->setContextProperty("VideosLocation", + launcherSettings.value("videosLocation")); + engine.rootContext()->setContextProperty("DefaultVideoUrl", + launcherSettings.value("defaultVideoUrl")); + engine.addImageProvider("QtImage", &imageProvider); engine.addImageProvider("QtSquareImage", &squareImageProvider); -- cgit v1.2.3 From f89cf3ae354de42df46588d50a3ad0816cc8fc28 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 30 Jul 2019 15:08:21 +0300 Subject: Use applicationsRoot path from settings file instead of hard-coding * The applications root path will be moved to the yocto repository instead. * Use the same settings file for style, the previous style settings was not assigned an organization also. Task-number: QTBUG-77161 Change-Id: I8c13898c8430eefa85586ec8928dfabccb10ef0b Reviewed-by: Kari Hormi --- src/applicationsettings.cpp | 4 ++-- src/applicationsettings.h | 2 +- src/main.cpp | 23 ++++++++++++----------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/applicationsettings.cpp b/src/applicationsettings.cpp index 14e286b..957fcc7 100644 --- a/src/applicationsettings.cpp +++ b/src/applicationsettings.cpp @@ -32,10 +32,10 @@ #include #include -ApplicationSettings::ApplicationSettings(QObject *parent) +ApplicationSettings::ApplicationSettings(QString appsRoot, QObject *parent) : QObject(parent) , m_mainFile(QUrl(QStringLiteral("qrc:///qml/Main.qml"))) - , m_appsRoot("/data/user/qt") + , m_appsRoot(appsRoot) , m_isShowFPSEnabled(false) { } diff --git a/src/applicationsettings.h b/src/applicationsettings.h index 70e22c3..ad50e57 100644 --- a/src/applicationsettings.h +++ b/src/applicationsettings.h @@ -40,7 +40,7 @@ class ApplicationSettings : public QObject Q_PROPERTY(QString appsRoot READ appsRoot NOTIFY appsRootChanged) Q_PROPERTY(bool isShowFPSEnabled READ isShowFPSEnabled NOTIFY isShowFPSEnabledChanged) public: - explicit ApplicationSettings(QObject *parent = 0); + explicit ApplicationSettings(QString appsRoot, QObject *parent = 0); QUrl mainFile() const; QString appsRoot() const; diff --git a/src/main.cpp b/src/main.cpp index 764a745..de98973 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -68,10 +68,13 @@ void displayHelp(const char *appName) int main(int argc, char **argv) { + QSettings launcherSettings("Qt", "QtLauncher"); + qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); - qputenv("QT_QUICK_CONTROLS_CONF", "/data/user/qt/qtquickcontrols2/qtquickcontrols2.conf"); - QIcon::setThemeSearchPaths(QStringList() << "/data/user/qt/qtquickcontrols2/icons"); + QByteArray applicationsRootStr = launcherSettings.value("defaultApplicationRoot").toByteArray(); + qputenv("QT_QUICK_CONTROLS_CONF", applicationsRootStr + "/qtquickcontrols2/qtquickcontrols2.conf"); + QIcon::setThemeSearchPaths(QStringList() << applicationsRootStr + "/qtquickcontrols2/icons"); QIcon::setThemeName("gallery"); @@ -107,7 +110,7 @@ int main(int argc, char **argv) QFontDatabase::addApplicationFont(":/qml/fonts/Teko-Regular.ttf"); QFontDatabase::addApplicationFont(":/qml/fonts/fontawesome-webfont.ttf"); - ApplicationSettings applicationSettings; + ApplicationSettings applicationSettings(applicationsRootStr); if (!applicationSettings.parseCommandLineArguments()) { displayHelp(argv[0]); @@ -132,17 +135,15 @@ int main(int argc, char **argv) QtImageMaskProvider imageMaskProvider; // Material style can be set only for devices supporting GL - QSettings styleSettings; - QString style = styleSettings.value("style").toString(); + QString style = launcherSettings.value("style").toString(); if (Engine::checkForGlAvailability()) { - if (style.isEmpty() || style == "Default") - styleSettings.setValue("style", "Material"); + if (style.isEmpty()) + launcherSettings.setValue("style", "Material"); } else { - qDebug()<<"No GL available, skipping Material style"; + qDebug() << "No GL available, skipping Material style"; + launcherSettings.setValue("style", "Default"); } - QQuickStyle::setStyle(styleSettings.value("style").toString()); - - QSettings launcherSettings("Qt", "QtLauncher"); + QQuickStyle::setStyle(launcherSettings.value("style").toString()); engine.rootContext()->setContextProperty("_backgroundColor", launcherSettings.value("backgroundColor", "#09102b")); engine.rootContext()->setContextProperty("_primaryGreen", launcherSettings.value("primaryGreen", "#41cd52")); -- cgit v1.2.3