From: Tasuku Suzuki Date: Fri, 2 Dec 2016 02:19:51 +0000 (+0900) Subject: WIP: add Qt Quick HomeScreen UI X-Git-Tag: 3.0.0~45 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=staging%2FHomeScreen.git;a=commitdiff_plain;h=6bf5bbd0ab5abab05305667a516c069c7c5556f4 WIP: add Qt Quick HomeScreen UI Change-Id: I2be964f6d9e76df616169d7b2654d17ae9446687 Signed-off-by: Tasuku Suzuki --- diff --git a/HomeScreen.pro b/HomeScreen.pro index ec20600..c8e96b0 100644 --- a/HomeScreen.pro +++ b/HomeScreen.pro @@ -29,6 +29,7 @@ SUBDIRS = interfaces \ SampleNavigationApp \ SampleMediaApp \ sample-qml \ + HomeScreenNG HomeScreen.depends = interfaces HomeScreenSimulator.depends = interfaces diff --git a/HomeScreenNG/HomeScreenNG.pro b/HomeScreenNG/HomeScreenNG.pro new file mode 100644 index 0000000..450395c --- /dev/null +++ b/HomeScreenNG/HomeScreenNG.pro @@ -0,0 +1,33 @@ +TEMPLATE = app +QT = quick dbus + +include(../interfaces/interfaces.pri) + +HEADERS += \ + statusbarmodel.h \ + statusbarserver.h \ + applicationlauncher.h + +SOURCES += main.cpp \ + statusbarmodel.cpp \ + statusbarserver.cpp \ + applicationlauncher.cpp + +RESOURCES += \ + qml/images/MediaPlayer/mediaplayer.qrc \ + qml/images/MediaMusic/mediamusic.qrc \ + qml/images/Weather/weather.qrc \ + qml/images/Shortcut/shortcut.qrc \ + qml/images/Status/status.qrc \ + qml/images/images.qrc \ + qml/qml.qrc + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which as been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +target.path = /opt/$${TARGET}/bin +INSTALLS += target + diff --git a/HomeScreenNG/applicationlauncher.cpp b/HomeScreenNG/applicationlauncher.cpp new file mode 100644 index 0000000..c4254ce --- /dev/null +++ b/HomeScreenNG/applicationlauncher.cpp @@ -0,0 +1,13 @@ +#include "applicationlauncher.h" + +#include + +ApplicationLauncher::ApplicationLauncher(QObject *parent) + : QObject(parent) +{ +} + +void ApplicationLauncher::launch(const QString &application) +{ + qDebug() << "launch" << application; +} diff --git a/HomeScreenNG/applicationlauncher.h b/HomeScreenNG/applicationlauncher.h new file mode 100644 index 0000000..409de25 --- /dev/null +++ b/HomeScreenNG/applicationlauncher.h @@ -0,0 +1,16 @@ +#ifndef APPLICATIONLAUNCHER_H +#define APPLICATIONLAUNCHER_H + +#include + +class ApplicationLauncher : public QObject +{ + Q_OBJECT +public: + explicit ApplicationLauncher(QObject *parent = nullptr); + +public slots: + void launch(const QString &application); +}; + +#endif // APPLICATIONLAUNCHER_H diff --git a/HomeScreenNG/main.cpp b/HomeScreenNG/main.cpp new file mode 100644 index 0000000..dad4c7d --- /dev/null +++ b/HomeScreenNG/main.cpp @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include + +#include "applicationlauncher.h" +#include "statusbarmodel.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication::setOrganizationDomain(QStringLiteral("automotivelinux.org")); + QCoreApplication::setOrganizationName(QStringLiteral("AutomotiveGradeLinux")); + QCoreApplication::setApplicationName(QStringLiteral("HomeScreen")); + QCoreApplication::setApplicationVersion(QStringLiteral("0.0.1")); + + QGuiApplication app(argc, argv); + + qmlRegisterType("HomeScreen", 1, 0, "ApplicationLauncher"); + qmlRegisterType("HomeScreen", 1, 0, "StatusBarModel"); + + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + + return app.exec(); +} diff --git a/HomeScreenNG/qml/MediaArea.qml b/HomeScreenNG/qml/MediaArea.qml new file mode 100644 index 0000000..16ceb27 --- /dev/null +++ b/HomeScreenNG/qml/MediaArea.qml @@ -0,0 +1,40 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 + +StackView { + id: root + width: 1080 + height: 215 + + initialItem: blank + + Component { + id: blank + MediaAreaBlank { + MouseArea { + anchors.fill: parent + onClicked: root.push(mouse.x < 540 ? music : radio) + } + } + } + + Component { + id: music + MediaAreaMusic { + MouseArea { + anchors.fill: parent + onClicked: root.pop() + } + } + } + + Component { + id: radio + MediaAreaRadio { + MouseArea { + anchors.fill: parent + onClicked: root.pop() + } + } + } +} diff --git a/HomeScreenNG/qml/MediaAreaBlank.qml b/HomeScreenNG/qml/MediaAreaBlank.qml new file mode 100644 index 0000000..7698e18 --- /dev/null +++ b/HomeScreenNG/qml/MediaAreaBlank.qml @@ -0,0 +1,12 @@ +import QtQuick 2.7 + +Image { + width: 1080 + height: 215 + source: './images/Utility_Logo_Background-01.png' + + Image { + anchors.centerIn: parent + source: './images/Utility_Logo_Colour-01.png' + } +} diff --git a/HomeScreenNG/qml/MediaAreaMusic.qml b/HomeScreenNG/qml/MediaAreaMusic.qml new file mode 100644 index 0000000..3bd0077 --- /dev/null +++ b/HomeScreenNG/qml/MediaAreaMusic.qml @@ -0,0 +1,68 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 + +Image { + width: 1080 + height: 215 + source: './images/Utility_Music_Background-01.png' + + ColumnLayout { + anchors.fill: parent + spacing: 1 + RowLayout { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 107 + spacing: 10 + Image { + source: './images/MediaMusic/AlbumArtwork.png' + width: 105.298 + height: 110.179 + fillMode: Image.PreserveAspectFit + } + Label { + text: 'Come Together - The Beatles' + font.family: 'Roboto' + font.pixelSize: 32 + color: 'white' + } + } + + RowLayout { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 107 + Image { + source: './images/MediaPlayer/AGL_MediaPlayer_BackArrow.png' + } + Image { + source: './images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png' + } + Image { + source: './images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png' + } + + ProgressBar { + Layout.fillWidth: true + Layout.preferredWidth: 2 + } + + Label { + text: '2:12/4:19' + font.family: 'Roboto' + font.pixelSize: 20 + } + Image { + source: './images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png' + } + Image { + source: './images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png' + } + ProgressBar { + Layout.fillWidth: true + Layout.preferredWidth: 1 + } + } + } +} diff --git a/HomeScreenNG/qml/MediaAreaRadio.qml b/HomeScreenNG/qml/MediaAreaRadio.qml new file mode 100644 index 0000000..b2a9a33 --- /dev/null +++ b/HomeScreenNG/qml/MediaAreaRadio.qml @@ -0,0 +1,7 @@ +import QtQuick 2.6 + +Image { + width: 1080 + height: 215 + source: './images/Utility_Radio_Background-01.png' +} diff --git a/HomeScreenNG/qml/ShortcutArea.qml b/HomeScreenNG/qml/ShortcutArea.qml new file mode 100644 index 0000000..a98bec2 --- /dev/null +++ b/HomeScreenNG/qml/ShortcutArea.qml @@ -0,0 +1,53 @@ +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import HomeScreen 1.0 + +Item { + id: root + width: 785 + height: 218 + + ApplicationLauncher { + id: launcher + } + + ListModel { + id: applicationModel + ListElement { + name: 'Home' + application: 'launcher' + } + ListElement { + name: 'Multimedia' + application: 'musicplayer' + } + ListElement { + name: 'HVAC' + application: 'hvac' + } + ListElement { + name: 'Navigation' + application: 'navigation' + } + } + + property int currentIndex: -1 // TODO: to be moved to whereever right + + RowLayout { + anchors.fill: parent + spacing: 2 + Repeater { + model: applicationModel + delegate: ShortcutIcon { + Layout.fillWidth: true + Layout.fillHeight: true + name: model.name + active: model.index === root.currentIndex + onClicked: { + root.currentIndex = active ? -1 : model.index + launcher.launch(model.application) + } + } + } + } +} diff --git a/HomeScreenNG/qml/ShortcutIcon.qml b/HomeScreenNG/qml/ShortcutIcon.qml new file mode 100644 index 0000000..84550d9 --- /dev/null +++ b/HomeScreenNG/qml/ShortcutIcon.qml @@ -0,0 +1,37 @@ +import QtQuick 2.6 + +MouseArea { + id: root + width: 195 + height: 216.8 + property string name: 'Home' + property bool active: false + Image { + id: icon + anchors.fill: parent + source: './images/Shortcut/HMI_Shortcut_%1-01.png'.arg(root.name) + } + Image { + anchors.fill: parent + source: './images/Shortcut/HMI_Shortcut_%1_Active-01.png'.arg(root.name) + opacity: 1.0 - icon.opacity + } + states: [ + State { + when: root.active + PropertyChanges { + target: icon + opacity: 0.0 + } + } + ] + + transitions: [ + Transition { + NumberAnimation { + properties: 'opacity' + easing.type: Easing.OutExpo + } + } + ] +} diff --git a/HomeScreenNG/qml/StatusArea.qml b/HomeScreenNG/qml/StatusArea.qml new file mode 100644 index 0000000..6dda3ba --- /dev/null +++ b/HomeScreenNG/qml/StatusArea.qml @@ -0,0 +1,86 @@ +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import HomeScreen 1.0 + +Item { + id: root + width: 295 + height: 218 + + property date now: new Date + Timer { + interval: 100; running: true; repeat: true; + onTriggered: root.now = new Date + } + + RowLayout { + anchors.fill: parent + spacing: 0 + Item { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredWidth: 295 - 76 + ColumnLayout { + anchors.fill: parent + anchors.margins: 40 + spacing: 0 + Label { + Layout.fillWidth: true + Layout.fillHeight: true + text: Qt.formatDate(now, 'dddd').toUpperCase() + font.family: 'Roboto' + font.pixelSize: 13 + color: 'white' + verticalAlignment: Text.AlignVCenter +// Rectangle { +// anchors.fill: parent +// anchors.margins: 5 +// color: 'red' +// border.color: 'blue' +// border.width: 1 +// z: -1 +// } + } + Label { + Layout.fillWidth: true + Layout.fillHeight: true + text: Qt.formatTime(now, 'h:mm ap').toUpperCase() + font.family: 'Roboto' + font.pixelSize: 40 + color: 'white' + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + RowLayout { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 20 + Image { + source: './images/Weather/WeatherIcons_Rain-01.png' + } + Label { + text: '64°F' + color: 'white' + font.family: 'Helvetica' + font.pixelSize: 32 + } + } + } + } + ColumnLayout { + id: icons + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredWidth: 76 + spacing: -10 + Repeater { + model: StatusBarModel {} + delegate: Image { + source: model.modelData + fillMode: Image.PreserveAspectFit + } + } + } + } +} diff --git a/HomeScreenNG/qml/TopArea.qml b/HomeScreenNG/qml/TopArea.qml new file mode 100644 index 0000000..8de8a8d --- /dev/null +++ b/HomeScreenNG/qml/TopArea.qml @@ -0,0 +1,26 @@ +import QtQuick 2.7 +import QtQuick.Layouts 1.1 + +Image { + width: 1920 + height: 218 + source: './images/TopSection_NoText_NoIcons-01.png' + fillMode: Image.PreserveAspectCrop + + RowLayout { + anchors.fill: parent + spacing: 0 + ShortcutArea { + id: shortcutArea + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredWidth: 785 + } + StatusArea { + id: statusArea + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredWidth: 295 + } + } +} diff --git a/HomeScreenNG/qml/images/AGL_HMI_Background_NoCar-01.png b/HomeScreenNG/qml/images/AGL_HMI_Background_NoCar-01.png new file mode 100644 index 0000000..595f742 Binary files /dev/null and b/HomeScreenNG/qml/images/AGL_HMI_Background_NoCar-01.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/AlbumArtwork.png b/HomeScreenNG/qml/images/MediaMusic/AlbumArtwork.png new file mode 100644 index 0000000..3716ab3 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/AlbumArtwork.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/BackArrow.png b/HomeScreenNG/qml/images/MediaMusic/BackArrow.png new file mode 100644 index 0000000..63e38d9 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/BackArrow.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/ForwardArrow.png b/HomeScreenNG/qml/images/MediaMusic/ForwardArrow.png new file mode 100644 index 0000000..a513705 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/ForwardArrow.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/ShuffleIcon.png b/HomeScreenNG/qml/images/MediaMusic/ShuffleIcon.png new file mode 100644 index 0000000..30f75c5 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/ShuffleIcon.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/Volume_Loud.png b/HomeScreenNG/qml/images/MediaMusic/Volume_Loud.png new file mode 100644 index 0000000..8ea4402 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/Volume_Loud.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/Volume_Medium.png b/HomeScreenNG/qml/images/MediaMusic/Volume_Medium.png new file mode 100644 index 0000000..ae5c82e Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/Volume_Medium.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/Volume_Off.png b/HomeScreenNG/qml/images/MediaMusic/Volume_Off.png new file mode 100644 index 0000000..07e3353 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaMusic/Volume_Off.png differ diff --git a/HomeScreenNG/qml/images/MediaMusic/mediamusic.qrc b/HomeScreenNG/qml/images/MediaMusic/mediamusic.qrc new file mode 100644 index 0000000..b1138c0 --- /dev/null +++ b/HomeScreenNG/qml/images/MediaMusic/mediamusic.qrc @@ -0,0 +1,11 @@ + + + AlbumArtwork.png + BackArrow.png + ForwardArrow.png + ShuffleIcon.png + Volume_Loud.png + Volume_Medium.png + Volume_Off.png + + diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_AlbumArtwork.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_AlbumArtwork.png new file mode 100644 index 0000000..14a52b2 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_AlbumArtwork.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_BackArrow.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_BackArrow.png new file mode 100644 index 0000000..0ec1f67 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_BackArrow.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Active.png new file mode 100644 index 0000000..bc2df1d Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Inactive.png new file mode 100644 index 0000000..8d8fc02 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Bluetooth_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Active.png new file mode 100644 index 0000000..94fe38f Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Inactive.png new file mode 100644 index 0000000..12609e1 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_CD_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_DividingLine.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_DividingLine.png new file mode 100644 index 0000000..299903e Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_DividingLine.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png new file mode 100644 index 0000000..33cc700 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Active.png new file mode 100644 index 0000000..9bdb14d Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Inactive.png new file mode 100644 index 0000000..76b0fc9 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Loop_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png new file mode 100644 index 0000000..c423005 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Play.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Play.png new file mode 100644 index 0000000..beece66 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Player_Play.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Active.png new file mode 100644 index 0000000..eec608f Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Inactive.png new file mode 100644 index 0000000..d392a90 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_PlaylistToggle_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Active.png new file mode 100644 index 0000000..22319c9 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Inactive.png new file mode 100644 index 0000000..9fd42e2 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Playlist_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Active.png new file mode 100644 index 0000000..eb61b39 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Inactive.png new file mode 100644 index 0000000..de305f0 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Radio_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png new file mode 100644 index 0000000..d97feec Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Inactive.png new file mode 100644 index 0000000..7f6445d Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Albums_Active.png b/HomeScreenNG/qml/images/MediaPlayer/Albums_Active.png new file mode 100644 index 0000000..1f66e23 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Albums_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Albums_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/Albums_Inactive.png new file mode 100644 index 0000000..e0e7f00 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Albums_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/DividingLine.png b/HomeScreenNG/qml/images/MediaPlayer/DividingLine.png new file mode 100644 index 0000000..87f2122 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/DividingLine.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/GreenLine.png b/HomeScreenNG/qml/images/MediaPlayer/GreenLine.png new file mode 100644 index 0000000..0210b83 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/GreenLine.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Music_Active.png b/HomeScreenNG/qml/images/MediaPlayer/Music_Active.png new file mode 100644 index 0000000..36afac7 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Music_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Music_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/Music_Inactive.png new file mode 100644 index 0000000..9dae353 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Music_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Active.png b/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Active.png new file mode 100644 index 0000000..fd2d2c0 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Active.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Inactive.png b/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Inactive.png new file mode 100644 index 0000000..b76b04c Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Podcasts_Inactive.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Popup_Highlight.png b/HomeScreenNG/qml/images/MediaPlayer/Popup_Highlight.png new file mode 100644 index 0000000..ac63673 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Popup_Highlight.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Popup_PauseIcon.png b/HomeScreenNG/qml/images/MediaPlayer/Popup_PauseIcon.png new file mode 100644 index 0000000..2627add Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Popup_PauseIcon.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Popup_PlayIcon.png b/HomeScreenNG/qml/images/MediaPlayer/Popup_PlayIcon.png new file mode 100644 index 0000000..0483e07 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Popup_PlayIcon.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/Popup_VerticalLine.png b/HomeScreenNG/qml/images/MediaPlayer/Popup_VerticalLine.png new file mode 100644 index 0000000..6a9db00 Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/Popup_VerticalLine.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/X.png b/HomeScreenNG/qml/images/MediaPlayer/X.png new file mode 100644 index 0000000..ab392cb Binary files /dev/null and b/HomeScreenNG/qml/images/MediaPlayer/X.png differ diff --git a/HomeScreenNG/qml/images/MediaPlayer/mediaplayer.qrc b/HomeScreenNG/qml/images/MediaPlayer/mediaplayer.qrc new file mode 100644 index 0000000..1cb17ab --- /dev/null +++ b/HomeScreenNG/qml/images/MediaPlayer/mediaplayer.qrc @@ -0,0 +1,37 @@ + + + AGL_MediaPlayer_AlbumArtwork.png + AGL_MediaPlayer_BackArrow.png + AGL_MediaPlayer_Bluetooth_Active.png + AGL_MediaPlayer_Bluetooth_Inactive.png + AGL_MediaPlayer_CD_Active.png + AGL_MediaPlayer_CD_Inactive.png + AGL_MediaPlayer_DividingLine.png + AGL_MediaPlayer_ForwardArrow.png + AGL_MediaPlayer_Loop_Active.png + AGL_MediaPlayer_Loop_Inactive.png + AGL_MediaPlayer_Player_Pause.png + AGL_MediaPlayer_Player_Play.png + AGL_MediaPlayer_Playlist_Active.png + AGL_MediaPlayer_Playlist_Inactive.png + AGL_MediaPlayer_PlaylistToggle_Active.png + AGL_MediaPlayer_PlaylistToggle_Inactive.png + AGL_MediaPlayer_Radio_Active.png + AGL_MediaPlayer_Radio_Inactive.png + AGL_MediaPlayer_Shuffle_Active.png + AGL_MediaPlayer_Shuffle_Inactive.png + Albums_Active.png + Albums_Inactive.png + DividingLine.png + GreenLine.png + Music_Active.png + Music_Inactive.png + Podcasts_Active.png + Podcasts_Inactive.png + Popup_Highlight.png + Popup_PauseIcon.png + Popup_PlayIcon.png + Popup_VerticalLine.png + X.png + + diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC-01.png new file mode 100644 index 0000000..f5188f5 Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC_Active-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC_Active-01.png new file mode 100644 index 0000000..abe92d2 Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_HVAC_Active-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home-01.png new file mode 100644 index 0000000..9aca151 Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home_Active-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home_Active-01.png new file mode 100644 index 0000000..696168f Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Home_Active-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia-01.png new file mode 100644 index 0000000..229860c Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia_Active-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia_Active-01.png new file mode 100644 index 0000000..b0a023c Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Multimedia_Active-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation-01.png new file mode 100644 index 0000000..34b0671 Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation_Active-01.png b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation_Active-01.png new file mode 100644 index 0000000..98e6146 Binary files /dev/null and b/HomeScreenNG/qml/images/Shortcut/HMI_Shortcut_Navigation_Active-01.png differ diff --git a/HomeScreenNG/qml/images/Shortcut/shortcut.qrc b/HomeScreenNG/qml/images/Shortcut/shortcut.qrc new file mode 100644 index 0000000..fe31006 --- /dev/null +++ b/HomeScreenNG/qml/images/Shortcut/shortcut.qrc @@ -0,0 +1,12 @@ + + + HMI_Shortcut_Home_Active-01.png + HMI_Shortcut_Home-01.png + HMI_Shortcut_HVAC_Active-01.png + HMI_Shortcut_HVAC-01.png + HMI_Shortcut_Multimedia_Active-01.png + HMI_Shortcut_Multimedia-01.png + HMI_Shortcut_Navigation_Active-01.png + HMI_Shortcut_Navigation-01.png + + diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_Inactive-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_Inactive-01.png new file mode 100644 index 0000000..10bd5a5 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_Inactive-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_On-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_On-01.png new file mode 100644 index 0000000..1ff96e1 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Bluetooth_On-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_1Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_1Bars-01.png new file mode 100644 index 0000000..44ef700 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_1Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_2Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_2Bars-01.png new file mode 100644 index 0000000..fe4e776 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_2Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_3Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_3Bars-01.png new file mode 100644 index 0000000..892c6ec Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_3Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_4Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_4Bars-01.png new file mode 100644 index 0000000..f4f033b Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_4Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_Full-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_Full-01.png new file mode 100644 index 0000000..18070b9 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_Full-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Signal_NoBars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_NoBars-01.png new file mode 100644 index 0000000..1b77207 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Signal_NoBars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_1Bar-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_1Bar-01.png new file mode 100644 index 0000000..c72461f Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_1Bar-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_2Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_2Bars-01.png new file mode 100644 index 0000000..448dd36 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_2Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_3Bars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_3Bars-01.png new file mode 100644 index 0000000..3e407ad Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_3Bars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_Full-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_Full-01.png new file mode 100644 index 0000000..6f95e97 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_Full-01.png differ diff --git a/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_NoBars-01.png b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_NoBars-01.png new file mode 100644 index 0000000..07f4f09 Binary files /dev/null and b/HomeScreenNG/qml/images/Status/HMI_Status_Wifi_NoBars-01.png differ diff --git a/HomeScreenNG/qml/images/Status/status.qrc b/HomeScreenNG/qml/images/Status/status.qrc new file mode 100644 index 0000000..d29c91a --- /dev/null +++ b/HomeScreenNG/qml/images/Status/status.qrc @@ -0,0 +1,17 @@ + + + HMI_Status_Wifi_NoBars-01.png + HMI_Status_Bluetooth_Inactive-01.png + HMI_Status_Bluetooth_On-01.png + HMI_Status_Signal_1Bars-01.png + HMI_Status_Signal_2Bars-01.png + HMI_Status_Signal_3Bars-01.png + HMI_Status_Signal_4Bars-01.png + HMI_Status_Signal_Full-01.png + HMI_Status_Signal_NoBars-01.png + HMI_Status_Wifi_1Bar-01.png + HMI_Status_Wifi_2Bars-01.png + HMI_Status_Wifi_3Bars-01.png + HMI_Status_Wifi_Full-01.png + + diff --git a/HomeScreenNG/qml/images/TopSection_NoText_NoIcons-01.png b/HomeScreenNG/qml/images/TopSection_NoText_NoIcons-01.png new file mode 100644 index 0000000..cf9ec4e Binary files /dev/null and b/HomeScreenNG/qml/images/TopSection_NoText_NoIcons-01.png differ diff --git a/HomeScreenNG/qml/images/Utility_Logo_Background-01.png b/HomeScreenNG/qml/images/Utility_Logo_Background-01.png new file mode 100644 index 0000000..21a602d Binary files /dev/null and b/HomeScreenNG/qml/images/Utility_Logo_Background-01.png differ diff --git a/HomeScreenNG/qml/images/Utility_Logo_Colour-01.png b/HomeScreenNG/qml/images/Utility_Logo_Colour-01.png new file mode 100644 index 0000000..6519a2d Binary files /dev/null and b/HomeScreenNG/qml/images/Utility_Logo_Colour-01.png differ diff --git a/HomeScreenNG/qml/images/Utility_Music_Background-01.png b/HomeScreenNG/qml/images/Utility_Music_Background-01.png new file mode 100644 index 0000000..c3e9f91 Binary files /dev/null and b/HomeScreenNG/qml/images/Utility_Music_Background-01.png differ diff --git a/HomeScreenNG/qml/images/Utility_Radio_Background-01.png b/HomeScreenNG/qml/images/Utility_Radio_Background-01.png new file mode 100644 index 0000000..b755843 Binary files /dev/null and b/HomeScreenNG/qml/images/Utility_Radio_Background-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_ALL-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_ALL-01.png new file mode 100644 index 0000000..f5f8b19 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_ALL-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Cloudy-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Cloudy-01.png new file mode 100644 index 0000000..3603a55 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Cloudy-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Moon-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Moon-01.png new file mode 100644 index 0000000..8fe1e18 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Moon-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_PartiallyCloudy-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_PartiallyCloudy-01.png new file mode 100644 index 0000000..09cd84f Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_PartiallyCloudy-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Rain-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Rain-01.png new file mode 100644 index 0000000..125b413 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Rain-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Snow-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Snow-01.png new file mode 100644 index 0000000..d0a9520 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Snow-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Sun-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Sun-01.png new file mode 100644 index 0000000..ee3a744 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Sun-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/WeatherIcons_Thunderstorm-01.png b/HomeScreenNG/qml/images/Weather/WeatherIcons_Thunderstorm-01.png new file mode 100644 index 0000000..f6959f4 Binary files /dev/null and b/HomeScreenNG/qml/images/Weather/WeatherIcons_Thunderstorm-01.png differ diff --git a/HomeScreenNG/qml/images/Weather/weather.qrc b/HomeScreenNG/qml/images/Weather/weather.qrc new file mode 100644 index 0000000..2668fec --- /dev/null +++ b/HomeScreenNG/qml/images/Weather/weather.qrc @@ -0,0 +1,12 @@ + + + WeatherIcons_ALL-01.png + WeatherIcons_Cloudy-01.png + WeatherIcons_Moon-01.png + WeatherIcons_PartiallyCloudy-01.png + WeatherIcons_Rain-01.png + WeatherIcons_Snow-01.png + WeatherIcons_Sun-01.png + WeatherIcons_Thunderstorm-01.png + + diff --git a/HomeScreenNG/qml/images/images.qrc b/HomeScreenNG/qml/images/images.qrc new file mode 100644 index 0000000..2d8e902 --- /dev/null +++ b/HomeScreenNG/qml/images/images.qrc @@ -0,0 +1,10 @@ + + + TopSection_NoText_NoIcons-01.png + Utility_Logo_Background-01.png + Utility_Logo_Colour-01.png + Utility_Music_Background-01.png + Utility_Radio_Background-01.png + AGL_HMI_Background_NoCar-01.png + + diff --git a/HomeScreenNG/qml/main.qml b/HomeScreenNG/qml/main.qml new file mode 100644 index 0000000..e9774ae --- /dev/null +++ b/HomeScreenNG/qml/main.qml @@ -0,0 +1,44 @@ +import QtQuick 2.7 +import QtQuick.Window 2.2 +import QtQuick.Layouts 1.1 + +Window { + visible: true + flags: Qt.FramelessWindowHint + width: container.width * container.scale + height: container.height * container.scale + title: 'HomeScreen' + + Image { + id: container + anchors.centerIn: parent + width: 1080 + height: 1920 + scale: 0.7 + source: './images/AGL_HMI_Background_NoCar-01.png' + + ColumnLayout { + anchors.fill: parent + spacing: 0 + TopArea { + id: topArea + Layout.fillWidth: true + Layout.preferredHeight: 218 + } + + Item { + id: applicationArea + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 1920 - 218 - 215 + } + + MediaArea { + id: mediaArea + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 215 + } + } + } +} diff --git a/HomeScreenNG/qml/qml.qrc b/HomeScreenNG/qml/qml.qrc new file mode 100644 index 0000000..a916b03 --- /dev/null +++ b/HomeScreenNG/qml/qml.qrc @@ -0,0 +1,13 @@ + + + main.qml + MediaArea.qml + MediaAreaBlank.qml + MediaAreaMusic.qml + MediaAreaRadio.qml + ShortcutArea.qml + ShortcutIcon.qml + StatusArea.qml + TopArea.qml + + diff --git a/HomeScreenNG/statusbarmodel.cpp b/HomeScreenNG/statusbarmodel.cpp new file mode 100644 index 0000000..b844525 --- /dev/null +++ b/HomeScreenNG/statusbarmodel.cpp @@ -0,0 +1,76 @@ +#include "statusbarmodel.h" +#include "statusbarserver.h" + +#include + +class StatusBarModel::Private +{ +public: + Private(StatusBarModel *parent); + +private: + StatusBarModel *q; +public: + StatusBarServer server; + QString iconList[StatusBarServer::SupportedCount]; +}; + +StatusBarModel::Private::Private(StatusBarModel *parent) + : q(parent) +{ + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/StatusBar", &server); + dbus.registerService("org.agl.homescreen"); + connect(&server, &StatusBarServer::statusIconChanged, [&](int placeholderIndex, const QString &icon) { + if (placeholderIndex < 0 || StatusBarServer::SupportedCount <= placeholderIndex) return; + if (iconList[placeholderIndex] == icon) return; + iconList[placeholderIndex] = icon; + emit q->dataChanged(q->index(placeholderIndex), q->index(placeholderIndex)); + }); + for (int i = 0; i < StatusBarServer::SupportedCount; i++) { + iconList[i] = server.getStatusIcon(i); + } +} + +StatusBarModel::StatusBarModel(QObject *parent) + : QAbstractListModel(parent) + , d(new Private(this)) +{ +} + +StatusBarModel::~StatusBarModel() +{ + delete d; +} + +int StatusBarModel::rowCount(const QModelIndex &parent) const +{ + if (parent.isValid()) + return 0; + + return StatusBarServer::SupportedCount; +} + +QVariant StatusBarModel::data(const QModelIndex &index, int role) const +{ + QVariant ret; + if (!index.isValid()) + return ret; + + switch (role) { + case Qt::DisplayRole: + ret = d->iconList[index.row()]; + break; + default: + break; + } + + return ret; +} + +QHash StatusBarModel::roleNames() const +{ + QHash roles; + roles[Qt::DisplayRole] = "icon"; + return roles; +} diff --git a/HomeScreenNG/statusbarmodel.h b/HomeScreenNG/statusbarmodel.h new file mode 100644 index 0000000..743e816 --- /dev/null +++ b/HomeScreenNG/statusbarmodel.h @@ -0,0 +1,23 @@ +#ifndef STATUSBARMODEL_H +#define STATUSBARMODEL_H + +#include + +class StatusBarModel : public QAbstractListModel +{ + Q_OBJECT +public: + explicit StatusBarModel(QObject *parent = nullptr); + ~StatusBarModel(); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + QHash roleNames() const override; + +private: + class Private; + Private *d; +}; + +#endif // STATUSBARMODEL_H diff --git a/HomeScreenNG/statusbarserver.cpp b/HomeScreenNG/statusbarserver.cpp new file mode 100644 index 0000000..1b1123c --- /dev/null +++ b/HomeScreenNG/statusbarserver.cpp @@ -0,0 +1,71 @@ +#include "statusbarserver.h" +#include "statusbar_adaptor.h" + +class StatusBarServer::Private +{ +public: + Private(StatusBarServer *parent); + QString texts[SupportedCount]; + QString icons[SupportedCount]; + StatusbarAdaptor adaptor; +}; + +StatusBarServer::Private::Private(StatusBarServer *parent) + : adaptor(parent) +{ + icons[0] = QStringLiteral("./images/Status/HMI_Status_Wifi_Full-01.png"); + icons[1] = QStringLiteral("./images/Status/HMI_Status_Bluetooth_Inactive-01.png"); + icons[2] = QStringLiteral("./images/Status/HMI_Status_Signal_Full-01.png"); +} + +StatusBarServer::StatusBarServer(QObject *parent) + : QObject(parent) + , d(new Private(this)) +{ +} + +StatusBarServer::~StatusBarServer() +{ + delete d; +} + +QList StatusBarServer::getAvailablePlaceholders() const +{ + QList ret; + return ret; +} + +QString StatusBarServer::getStatusIcon(int placeholderIndex) const +{ + QString ret; + if (-1 < placeholderIndex && placeholderIndex < SupportedCount) + ret = d->icons[placeholderIndex]; + return ret; +} + +void StatusBarServer::setStatusIcon(int placeholderIndex, const QString &icon) +{ + if (-1 < placeholderIndex && placeholderIndex < SupportedCount) { + if (d->icons[placeholderIndex] == icon) return; + d->icons[placeholderIndex] = icon; + emit statusIconChanged(placeholderIndex, icon); + } +} + +QString StatusBarServer::getStatusText(int placeholderIndex) const +{ + QString ret; + if (-1 < placeholderIndex && placeholderIndex < SupportedCount) { + ret = d->texts[placeholderIndex]; + } + return ret; +} + +void StatusBarServer::setStatusText(int placeholderIndex, const QString &text) +{ + if (-1 < placeholderIndex && placeholderIndex < SupportedCount) { + if (d->texts[placeholderIndex] == text) return; + d->texts[placeholderIndex] = text; + emit statusTextChanged(placeholderIndex, text); + } +} diff --git a/HomeScreenNG/statusbarserver.h b/HomeScreenNG/statusbarserver.h new file mode 100644 index 0000000..b9c8716 --- /dev/null +++ b/HomeScreenNG/statusbarserver.h @@ -0,0 +1,33 @@ +#ifndef STATUSBARSERVER_H +#define STATUSBARSERVER_H + +#include + +class StatusBarServer : public QObject +{ + Q_OBJECT +public: + enum { + SupportedCount = 3, + }; + explicit StatusBarServer(QObject *parent = nullptr); + ~StatusBarServer(); + + Q_INVOKABLE QList getAvailablePlaceholders() const; + Q_INVOKABLE QString getStatusIcon(int placeholderIndex) const; + Q_INVOKABLE QString getStatusText(int placeholderIndex) const; + +public slots: + void setStatusIcon(int placeholderIndex, const QString &icon); + void setStatusText(int placeholderIndex, const QString &text); + +signals: + void statusIconChanged(int placeholderIndex, const QString &icon); + void statusTextChanged(int placeholderIndex, const QString &text); + +private: + class Private; + Private *d; +}; + +#endif // STATUSBARSERVER_H