diff options
author | Nedim Hadzic <nedim.hadzic@pelagicore.com> | 2016-01-21 14:24:11 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2016-02-18 15:56:45 +0000 |
commit | 92bb87e3dde3016bbc08e04757be3227753a6454 (patch) | |
tree | 02d9c5fb0c2749f2e1143435b2cb93f3895aa1b1 /apps | |
parent | b3f10d156349727310ec30b27d01e639cce4f570 (diff) |
Demo updates
Since the Neptune was used in recent demos for CES 2016, some offline changes
were made and now they are pushed upstream. Changes:
- new layout for Music application
- unit conversion, metric to imp US
- other UI improvements.
Change-Id: I202eb88c382e840990b988d03e22d3b9f0d67fc1
Reviewed-by: Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/NotAvailableYet.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.browser/Browser.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.movies/MovieCoverDelegate.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.movies/MoviePlayer.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.movies/MovieProvider.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.movies/MovieTracks.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.movies/Movies.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.music/AlbumScreen.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.music/ClusterWidget.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.music/CoverItem.qml | 2 | ||||
-rw-r--r-- | apps/com.pelagicore.music/CurrentTrackScreen.qml | 152 | ||||
-rw-r--r-- | apps/com.pelagicore.music/Library.qml | 100 | ||||
-rw-r--r-- | apps/com.pelagicore.music/LibraryList.qml | 149 | ||||
-rw-r--r-- | apps/com.pelagicore.music/Music.qml | 8 | ||||
-rw-r--r-- | apps/com.pelagicore.music/MusicProvider.qml | 67 | ||||
-rw-r--r-- | apps/com.pelagicore.music/PlaylistContainer.qml | 2 |
16 files changed, 450 insertions, 48 deletions
diff --git a/apps/NotAvailableYet.qml b/apps/NotAvailableYet.qml index eecf947..46ec985 100644 --- a/apps/NotAvailableYet.qml +++ b/apps/NotAvailableYet.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.browser/Browser.qml b/apps/com.pelagicore.browser/Browser.qml index 67378e1..26bcc99 100644 --- a/apps/com.pelagicore.browser/Browser.qml +++ b/apps/com.pelagicore.browser/Browser.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.movies/MovieCoverDelegate.qml b/apps/com.pelagicore.movies/MovieCoverDelegate.qml index 336427d..0f163d7 100644 --- a/apps/com.pelagicore.movies/MovieCoverDelegate.qml +++ b/apps/com.pelagicore.movies/MovieCoverDelegate.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.movies/MoviePlayer.qml b/apps/com.pelagicore.movies/MoviePlayer.qml index 20a4ade..e8f260c 100644 --- a/apps/com.pelagicore.movies/MoviePlayer.qml +++ b/apps/com.pelagicore.movies/MoviePlayer.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.movies/MovieProvider.qml b/apps/com.pelagicore.movies/MovieProvider.qml index faf5370..dee1f2e 100644 --- a/apps/com.pelagicore.movies/MovieProvider.qml +++ b/apps/com.pelagicore.movies/MovieProvider.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.movies/MovieTracks.qml b/apps/com.pelagicore.movies/MovieTracks.qml index 4e4a8d4..0a835d0 100644 --- a/apps/com.pelagicore.movies/MovieTracks.qml +++ b/apps/com.pelagicore.movies/MovieTracks.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.movies/Movies.qml b/apps/com.pelagicore.movies/Movies.qml index ac0ae47..b7b7245 100644 --- a/apps/com.pelagicore.movies/Movies.qml +++ b/apps/com.pelagicore.movies/Movies.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.music/AlbumScreen.qml b/apps/com.pelagicore.music/AlbumScreen.qml index 9e3ed5a..2d81071 100644 --- a/apps/com.pelagicore.music/AlbumScreen.qml +++ b/apps/com.pelagicore.music/AlbumScreen.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.music/ClusterWidget.qml b/apps/com.pelagicore.music/ClusterWidget.qml index 244edc4..9261b36 100644 --- a/apps/com.pelagicore.music/ClusterWidget.qml +++ b/apps/com.pelagicore.music/ClusterWidget.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.music/CoverItem.qml b/apps/com.pelagicore.music/CoverItem.qml index 33da279..525fb09 100644 --- a/apps/com.pelagicore.music/CoverItem.qml +++ b/apps/com.pelagicore.music/CoverItem.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. diff --git a/apps/com.pelagicore.music/CurrentTrackScreen.qml b/apps/com.pelagicore.music/CurrentTrackScreen.qml index 362ad2a..fef1c35 100644 --- a/apps/com.pelagicore.music/CurrentTrackScreen.qml +++ b/apps/com.pelagicore.music/CurrentTrackScreen.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. @@ -44,13 +44,16 @@ UIScreen { title: 'Music' property var track: MusicProvider.currentEntry + property bool libraryVisible: false signal showAlbums() ColumnLayout { - width: Style.hspan(14) + id: musicControl + width: Style.hspan(12) height: Style.vspan(20) - anchors.centerIn: parent + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter spacing: 0 Spacer {} RowLayout { @@ -76,7 +79,7 @@ UIScreen { width: Style.cellWidth * 6 height: Style.cellHeight * 12 - items: MusicProvider.model + items: MusicProvider.nowPlaying.model currentViewIndex: MusicProvider.currentIndex @@ -108,20 +111,40 @@ UIScreen { } } } - Slider { + + RowLayout { anchors.horizontalCenter: parent.horizontalCenter - hspan: 10 - value: MusicService.position - minimum: 0.00 - maximum: MusicService.duration - vspan: 1 - function valueToString() { - return Math.floor(value/60000) + ':' + Math.floor((value/1000)%60) + spacing: 10 + + Label { + hspan: 1 + text: MusicService.currentTime + font.pixelSize: Style.fontSizeS } - onActiveValueChanged: { - MusicService.seek(activeValue) + + Slider { + id: slider + //anchors.horizontalCenter: parent.horizontalCenter + hspan: 9 + value: MusicService.position + minimum: 0.00 + maximum: MusicService.duration + vspan: 1 + function valueToString() { + return Math.floor(value/60000) + ':' + Math.floor((value/1000)%60) + } + onActiveValueChanged: { + MusicService.seek(activeValue) + } + } + + Label { + hspan: 1 + text: MusicService.durationTime + font.pixelSize: Style.fontSizeS } } + RowLayout { anchors.horizontalCenter: parent.horizontalCenter spacing: 0 @@ -175,10 +198,107 @@ UIScreen { } } - PlaylistContainer { - onClicked: pathView.currentViewIndex = index + Library { + id: library + x: parent.width + opacity: 0 + visible: opacity > 0 + onClose: { + root.libraryVisible = false + } + } + + UIElement { + id: sourceOption + hspan: 4 + vspan: 12 + anchors.right: musicControl.left + anchors.rightMargin: 60 + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -60 + + Column { + spacing: 1 + Button { + hspan: 4 + vspan: 4 + text: "BLUETOOTH" + label.font.pixelSize: Style.fontSizeL + } + Button { + hspan: 4 + vspan: 4 + text: "USB" + enabled: false + label.font.pixelSize: Style.fontSizeL + } + Button { + hspan: 4 + vspan: 4 + text: "SPOTIFY" + enabled: false + label.font.pixelSize: Style.fontSizeL + } + } + } + + TextTool { + id: libraryButton + hspan: 3 + vspan: 5 + anchors.left: musicControl.right + anchors.leftMargin: 30 + anchors.verticalCenter: parent.verticalCenter + size: 72 + + name: "music" + text: "LIBRARY" + + onClicked: root.libraryVisible = true } Component.onCompleted: MusicProvider.selectRandomTracks() + states: State { + name: "libaryMode"; when: root.libraryVisible + + PropertyChanges { + target: library + opacity: 1 + x: root.width - library.width + } + + PropertyChanges { + target: libraryButton + opacity: 0 + } + + PropertyChanges { + target: sourceOption + opacity: 0 + } + + AnchorChanges { + target: musicControl + anchors.horizontalCenter: undefined + } + + PropertyChanges { + target: musicControl + x: 0 + } + } + + transitions: Transition { + from: ""; to: "libaryMode"; reversible: true + + ParallelAnimation { + NumberAnimation { target: library; properties: "opacity"; duration: 400 } + NumberAnimation { target: library; properties: "x"; duration: 300 } + NumberAnimation { target: libraryButton; properties: "opacity"; duration: 300 } + NumberAnimation { target: sourceOption; properties: "opacity"; duration: 300 } + NumberAnimation { target: musicControl; properties: "x"; duration: 300 } + } + } + } diff --git a/apps/com.pelagicore.music/Library.qml b/apps/com.pelagicore.music/Library.qml new file mode 100644 index 0000000..091e887 --- /dev/null +++ b/apps/com.pelagicore.music/Library.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Pelagicore AG +** Contact: http://www.qt.io/ or http://www.pelagicore.com/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL3-PELAGICORE$ +** Commercial License Usage +** Licensees holding valid commercial Pelagicore Neptune IVI UI +** licenses may use this file in accordance with the commercial license +** agreement provided with the Software or, alternatively, in accordance +** with the terms contained in a written agreement between you and +** Pelagicore. For licensing terms and conditions, contact us at: +** http://www.pelagicore.com. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3 requirements will be +** met: http://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: GPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Layouts 1.0 + +import controls 1.0 +import utils 1.0 +import "." + +UIElement { + id: root + hspan: 12 + vspan: 22 + + signal close() + + Rectangle { + anchors.fill: parent + color: "black" + } + + Tool { + id: closeButton + vspan: 2 + hspan: 2 + + anchors.right: parent.right + anchors.top: parent.top + anchors.topMargin: 35 + name: 'close' + onClicked: root.close() + } + + TabView { + id: tabView + vspan: root.vspan - 2 + hspan: root.hspan + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + horizontalAlignment: false + viewLeftMargin: letterPicker.width + tabWidth: 2 + tabs: [ + { title : "PLAYING", url : nowPlaying, properties : {} }, + { title : "ARTISTS", url : library, properties : { type: "artists" } }, + { title : "ALBUMS", url : library, properties : { type: "albums" } }, + { title : "SONGS", url : library, properties : { type: "songs" } }, + ] + + } + + LetterPicker { + id: letterPicker + vspan: root.vspan - 3 + anchors.left: parent.left + anchors.leftMargin: 5 + anchors.bottom: parent.bottom + numOfVisibleLetters: 17 + } + + LibraryList { + id: nowPlaying + visible: false + nowPlaying: true + } + + LibraryList { + id: library + visible: false + } +} + diff --git a/apps/com.pelagicore.music/LibraryList.qml b/apps/com.pelagicore.music/LibraryList.qml new file mode 100644 index 0000000..8365bd3 --- /dev/null +++ b/apps/com.pelagicore.music/LibraryList.qml @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Pelagicore AG +** Contact: http://www.qt.io/ or http://www.pelagicore.com/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL3-PELAGICORE$ +** Commercial License Usage +** Licensees holding valid commercial Pelagicore Neptune IVI UI +** licenses may use this file in accordance with the commercial license +** agreement provided with the Software or, alternatively, in accordance +** with the terms contained in a written agreement between you and +** Pelagicore. For licensing terms and conditions, contact us at: +** http://www.pelagicore.com. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3 requirements will be +** met: http://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: GPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Layouts 1.0 + +import controls 1.0 +import utils 1.0 +import service.music 1.0 +import "." + +UIElement { + id: root + hspan: 10 + vspan: 18 + + property string type: "" + property bool nowPlaying: false + + onTypeChanged: { + if (type === "songs") + MusicProvider.querySongs() + else if (type === "artists") + MusicProvider.queryArtists() + else if (type === "albums") + MusicProvider.queryAllAlbums() + } + + Rectangle { + anchors.fill: parent + color: "black" + } + + ListView { + id: listView + anchors.fill: parent + anchors.topMargin: 10 + model: root.nowPlaying ? MusicProvider.nowPlaying.model : MusicProvider.musicLibrary.model + clip: true + highlightMoveDuration: 300 + highlightFollowsCurrentItem: false + currentIndex: MusicProvider.currentIndex + + delegate: UIElement { + hspan: root.hspan + vspan: 3 + + Rectangle { + anchors.fill: parent + opacity: 0.2 + visible: listView.currentIndex === index + } + + Rectangle { + width: parent.width + height: 1 + opacity: 0.2 + color: "white" + } + + Row { + anchors.verticalCenter: parent.verticalCenter + Icon { + hspan: 2 + vspan: hspan + anchors.verticalCenter: parent.verticalCenter + fit: true + source: MusicProvider.coverPath(model.cover) + } + + Column { + Label { + hspan: 7 + vspan: 1 + text: root.type === "albums" ? model.album.toUpperCase() : model.title.toUpperCase() + font.pixelSize: Style.fontSizeM + } + Label { + hspan: 7 + vspan: 1 + text: model.artist.toUpperCase() + font.pixelSize: Style.fontSizeS + font.bold: true + } + } + } + + MouseArea { + anchors.fill: parent + onClicked: { + if (root.nowPlaying) { + MusicProvider.currentIndex = index + } + else { + listView.currentIndex = index + if (root.type === "songs") { + MusicProvider.selectSpecSong() + MusicProvider.currentIndex = index + } + else if (root.type === "artists") + MusicProvider.querySpecArtist(model.artist) + else if (root.type === "albums") + MusicProvider.querySpecAlbum(model.album) + } + MusicService.play() + } + } + } + + Rectangle { + width: parent.width + height: 300 + anchors.bottom: parent.bottom + gradient: Gradient { + GradientStop { position: 0.0; color: "transparent" } + GradientStop { position: 1.0; color: "black" } + } + } + } + +} + diff --git a/apps/com.pelagicore.music/Music.qml b/apps/com.pelagicore.music/Music.qml index 8511044..583814f 100644 --- a/apps/com.pelagicore.music/Music.qml +++ b/apps/com.pelagicore.music/Music.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. @@ -46,7 +46,11 @@ AppUIScreen { } } - cluster: ClusterWidget {} + onRaiseApp: { + MusicProvider.initialize() + } + + //cluster: ClusterWidget {} AppStackView { id: stack diff --git a/apps/com.pelagicore.music/MusicProvider.qml b/apps/com.pelagicore.music/MusicProvider.qml index 3d0e348..45527a1 100644 --- a/apps/com.pelagicore.music/MusicProvider.qml +++ b/apps/com.pelagicore.music/MusicProvider.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. @@ -33,37 +33,63 @@ import QtQuick 2.1 import com.pelagicore.datasource 1.0 import service.music 1.0 -SqlQueryDataSource { +QtObject { id: root - database: "media" - query: 'select * from music' + property SqlQueryDataSource musicLibrary: SqlQueryDataSource { + database: "media" + query: 'select * from music' + } + + property SqlQueryDataSource nowPlaying: SqlQueryDataSource { + database: "media" + query: 'select * from music' + } + property int currentIndex: 0 - property var currentEntry: get(currentIndex); - property url currentSource: storageLocation + '/media/music/' + currentEntry.source - property url currentCover: storageLocation + '/media/music/' + currentEntry.cover + property int count: nowPlaying.count + onCountChanged: { + currentIndex = -1 + currentIndex = 0 + } + property var currentEntry: nowPlaying.get(currentIndex); + property url currentSource: nowPlaying.storageLocation + '/media/music/' + currentEntry.source + property url currentCover: nowPlaying.storageLocation + '/media/music/' + currentEntry.cover function queryAllAlbums() { - return 'select distinct album, cover, artist from music' + musicLibrary.query = 'select * from music group by album' } - function queryAlbum(artist, album) { - return 'select * from music' + function querySongs() { + musicLibrary.query = 'select distinct * from music' } - function selectRandomTracks() { - currentIndex = -1 - root.query = 'select * from music order by random()' - currentIndex = 0 + function queryArtists() { + musicLibrary.query = 'select * from music group by artist' + } + + function querySpecArtist(artist) { + nowPlaying.query = "select distinct * from music where artist='" + artist + "'" + } + + function querySpecAlbum(album) { + nowPlaying.query = "select distinct * from music where album='" + album + "'" } + function selectSpecSong () { + nowPlaying.query = 'select distinct * from music' + } + + function selectRandomTracks() { + nowPlaying.query = 'select distinct * from music order by random()' + } function coverPath(cover) { - return Qt.resolvedUrl(storageLocation + '/media/music/' + cover) + return Qt.resolvedUrl(root.nowPlaying.storageLocation + '/media/music/' + cover) } function sourcePath(source) { - return Qt.resolvedUrl(storageLocation + '/media/music/' + source) + return Qt.resolvedUrl(root.nowPlaying.storageLocation + '/media/music/' + source) } function next() { @@ -78,14 +104,17 @@ SqlQueryDataSource { currentIndex-- } - Component.onCompleted: { + function initialize() { MusicService.musicProvider = root MusicService.currentIndex = Qt.binding(function() { return root.currentIndex}) MusicService.currentTrack = Qt.binding(function() { return root.currentEntry}) - MusicService.trackCount = Qt.binding(function() { return root.count}) + MusicService.trackCount = Qt.binding(function() { return root.nowPlaying.count}) MusicService.coverPath = Qt.binding(function() { return root.currentCover}) MusicService.url = Qt.binding(function() { return root.currentSource}) - print("MusicProvider completed") + } + + Component.onCompleted: { + print("MusicProvider completed", root.count) } } diff --git a/apps/com.pelagicore.music/PlaylistContainer.qml b/apps/com.pelagicore.music/PlaylistContainer.qml index 1be6620..06a5198 100644 --- a/apps/com.pelagicore.music/PlaylistContainer.qml +++ b/apps/com.pelagicore.music/PlaylistContainer.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 Pelagicore AG +** Copyright (C) 2016 Pelagicore AG ** Contact: http://www.qt.io/ or http://www.pelagicore.com/ ** ** This file is part of the Neptune IVI UI. |