From b4715bf924ea295feaaf8fbdb4a9c3da75f57591 Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Fri, 8 Oct 2021 00:33:36 +0900 Subject: Fix execution file name Signed-off-by: Naoto Yamaguchi --- main.cpp | 2 +- mediaplay.pro | 36 --------- mediaplay.qml | 241 ---------------------------------------------------------- momiplay.pro | 36 +++++++++ momiplay.qml | 241 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ qml.qrc | 2 +- 6 files changed, 279 insertions(+), 279 deletions(-) delete mode 100644 mediaplay.pro delete mode 100644 mediaplay.qml create mode 100644 momiplay.pro create mode 100644 momiplay.qml diff --git a/main.cpp b/main.cpp index fc5ad85..afc4a46 100644 --- a/main.cpp +++ b/main.cpp @@ -59,7 +59,7 @@ int main(int argc, char *argv[]) QQmlApplicationEngine engine; QQmlContext *context = engine.rootContext(); context->setContextProperty("mediaFiles", mediaFiles); - const QUrl url(QStringLiteral("qrc:/mediaplay.qml")); + const QUrl url(QStringLiteral("qrc:/momiplay.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) diff --git a/mediaplay.pro b/mediaplay.pro deleted file mode 100644 index 0ac64ca..0000000 --- a/mediaplay.pro +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -QT += quick quickcontrols2 multimedia - -CONFIG += c++11 - -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Refer to the documentation for the -# deprecated API to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. -# In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -SOURCES += \ - main.cpp \ - playlistwithmetadata.cpp - -RESOURCES += qml.qrc - -# Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = - -# Additional import path used to resolve QML modules just for Qt Quick Designer -QML_DESIGNER_IMPORT_PATH = - -# Default rules for deployment. -qnx: target.path = /tmp/$${TARGET}/bin -else: unix:!android: target.path = /usr/bin -!isEmpty(target.path): INSTALLS += target - -HEADERS += \ - playlistwithmetadata.h diff --git a/mediaplay.qml b/mediaplay.qml deleted file mode 100644 index 8945b57..0000000 --- a/mediaplay.qml +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (C) 2016 The Qt Company Ltd. - * Copyright (C) 2019 Yoshito Momiyama - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import QtQuick 2.6 -import QtQuick.Window 2.12 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 -import QtMultimedia 5.6 -import MediaPlayer 1.0 - -ApplicationWindow { - id: root - visible: true - width: 1920 - height: 1080 - color: "#222222" - title: qsTr("momiplayer") - - MediaPlayer { - id: player - audioRole: MediaPlayer.MusicRole - autoLoad: true - playlist: playlist - function time2str(value) { - return Qt.formatTime(new Date(value), 'mm:ss') - } - onPositionChanged: slider.value = player.position - } - - Item { - x: 0 - y: 0 - width: 920 - height: 1080 - clip: true - Image { - x: 204 - y: 100 - width: 512 - height: 512 - fillMode: Image.PreserveAspectCrop - source: player.metaData.coverArtImage ? player.metaData.coverArtImage : '' - } - - Item { - x: 0 - y: 100+512 - height :300 - width : 920 - Rectangle { - anchors.fill: parent - color: '#444444' - //opacity: 0.75 - } - - ColumnLayout { - anchors.fill: parent - anchors.margins: root.width * 0.02 - Item { - Layout.fillWidth: true - Layout.fillHeight: true - Row { - spacing: 20 - ToggleButton { - id: random - offImage: './images/AGL_MediaPlayer_Shuffle_Inactive.svg' - onImage: './images/AGL_MediaPlayer_Shuffle_Active.svg' - } - ToggleButton { - id: loop - offImage: './images/AGL_MediaPlayer_Loop_Inactive.svg' - onImage: './images/AGL_MediaPlayer_Loop_Active.svg' - } - } - ColumnLayout { - anchors.fill: parent - Label { - id: title - Layout.alignment: Layout.Center - text: player.metaData.title ? player.metaData.title : '' - horizontalAlignment: Label.AlignHCenter - verticalAlignment: Label.AlignVCenter - } - Label { - id: artist - Layout.alignment: Layout.Center - text: player.metaData.author ? player.metaData.author : '' - horizontalAlignment: Label.AlignHCenter - verticalAlignment: Label.AlignVCenter - font.pixelSize: title.font.pixelSize * 0.6 - } - } - } - Slider { - id: slider - Layout.fillWidth: true - to: player.duration - Label { - id: position - anchors.left: parent.left - anchors.bottom: parent.top - font.pixelSize: 32 - text: player.time2str(player.position) - } - Label { - id: duration - anchors.right: parent.right - anchors.bottom: parent.top - font.pixelSize: 32 - text: player.time2str(player.duration) - } - onPressedChanged: player.seek(value) - } - RowLayout { - Layout.fillHeight: true - Item { Layout.fillWidth: true } - ImageButton { - offImage: './images/AGL_MediaPlayer_BackArrow.svg' - onClicked: playlist.previous() - } - ImageButton { - id: play - offImage: './images/AGL_MediaPlayer_Player_Play.svg' - onClicked: player.play() - states: [ - State { - when: player.playbackState === MediaPlayer.PlayingState - PropertyChanges { - target: play - offImage: './images/AGL_MediaPlayer_Player_Pause.svg' - onClicked: player.pause() - } - } - ] - } - ImageButton { - offImage: './images/AGL_MediaPlayer_ForwardArrow.svg' - onClicked: playlist.next() - } - - Item { Layout.fillWidth: true } - } - } - } - } - - Item { - x: 920 - y: 0 - width: 1000 - height: 1080 - ListView { - anchors.rightMargin: 0 - anchors.bottomMargin: 0 - anchors.leftMargin: 0 - anchors.topMargin: 0 - anchors.fill: parent - clip: true - header: Label { - x: 50 - text: 'PLAYLIST' - opacity: 0.5 - } - model: PlaylistWithMetadata { - source: playlist - } - currentIndex: playlist.currentIndex - - delegate: MouseArea { - id: delegate - width: ListView.view.width - height: ListView.view.height / 4 - RowLayout { - anchors.fill: parent - anchors.leftMargin: 10 - anchors.rightMargin: 50 - Image { - source: model.coverArt - fillMode: Image.PreserveAspectFit - Layout.preferredWidth: delegate.height - Layout.preferredHeight: delegate.height - } - ColumnLayout { - Layout.fillWidth: true - Label { - Layout.fillWidth: true - text: model.title - color: '#66FF99' - font.pixelSize: 48 - } - Label { - Layout.fillWidth: true - text: model.artist - color: '#66FF99' - font.pixelSize: 32 - } - } - Label { - text: player.time2str(model.duration) - color: '#66FF99' - font.pixelSize: 32 - } - } - onClicked: { - playlist.currentIndex = model.index - player.play() - } - } - - highlight: Rectangle { - color: 'white' - opacity: 0.25 - } - } - } - - Playlist { - id: playlist - playbackMode: random.checked ? Playlist.Random : loop.checked ? Playlist.Loop : Playlist.Sequential - - Component.onCompleted: { - playlist.addItems(mediaFiles) - } - } -} diff --git a/momiplay.pro b/momiplay.pro new file mode 100644 index 0000000..0ac64ca --- /dev/null +++ b/momiplay.pro @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: Apache-2.0 + +QT += quick quickcontrols2 multimedia + +CONFIG += c++11 + +# The following define makes your compiler emit warnings if you use +# any Qt feature that has been marked deprecated (the exact warnings +# depend on your compiler). Refer to the documentation for the +# deprecated API to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + playlistwithmetadata.cpp + +RESOURCES += qml.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = + +# Additional import path used to resolve QML modules just for Qt Quick Designer +QML_DESIGNER_IMPORT_PATH = + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /usr/bin +!isEmpty(target.path): INSTALLS += target + +HEADERS += \ + playlistwithmetadata.h diff --git a/momiplay.qml b/momiplay.qml new file mode 100644 index 0000000..8945b57 --- /dev/null +++ b/momiplay.qml @@ -0,0 +1,241 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * Copyright (C) 2019 Yoshito Momiyama + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Window 2.12 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import QtMultimedia 5.6 +import MediaPlayer 1.0 + +ApplicationWindow { + id: root + visible: true + width: 1920 + height: 1080 + color: "#222222" + title: qsTr("momiplayer") + + MediaPlayer { + id: player + audioRole: MediaPlayer.MusicRole + autoLoad: true + playlist: playlist + function time2str(value) { + return Qt.formatTime(new Date(value), 'mm:ss') + } + onPositionChanged: slider.value = player.position + } + + Item { + x: 0 + y: 0 + width: 920 + height: 1080 + clip: true + Image { + x: 204 + y: 100 + width: 512 + height: 512 + fillMode: Image.PreserveAspectCrop + source: player.metaData.coverArtImage ? player.metaData.coverArtImage : '' + } + + Item { + x: 0 + y: 100+512 + height :300 + width : 920 + Rectangle { + anchors.fill: parent + color: '#444444' + //opacity: 0.75 + } + + ColumnLayout { + anchors.fill: parent + anchors.margins: root.width * 0.02 + Item { + Layout.fillWidth: true + Layout.fillHeight: true + Row { + spacing: 20 + ToggleButton { + id: random + offImage: './images/AGL_MediaPlayer_Shuffle_Inactive.svg' + onImage: './images/AGL_MediaPlayer_Shuffle_Active.svg' + } + ToggleButton { + id: loop + offImage: './images/AGL_MediaPlayer_Loop_Inactive.svg' + onImage: './images/AGL_MediaPlayer_Loop_Active.svg' + } + } + ColumnLayout { + anchors.fill: parent + Label { + id: title + Layout.alignment: Layout.Center + text: player.metaData.title ? player.metaData.title : '' + horizontalAlignment: Label.AlignHCenter + verticalAlignment: Label.AlignVCenter + } + Label { + id: artist + Layout.alignment: Layout.Center + text: player.metaData.author ? player.metaData.author : '' + horizontalAlignment: Label.AlignHCenter + verticalAlignment: Label.AlignVCenter + font.pixelSize: title.font.pixelSize * 0.6 + } + } + } + Slider { + id: slider + Layout.fillWidth: true + to: player.duration + Label { + id: position + anchors.left: parent.left + anchors.bottom: parent.top + font.pixelSize: 32 + text: player.time2str(player.position) + } + Label { + id: duration + anchors.right: parent.right + anchors.bottom: parent.top + font.pixelSize: 32 + text: player.time2str(player.duration) + } + onPressedChanged: player.seek(value) + } + RowLayout { + Layout.fillHeight: true + Item { Layout.fillWidth: true } + ImageButton { + offImage: './images/AGL_MediaPlayer_BackArrow.svg' + onClicked: playlist.previous() + } + ImageButton { + id: play + offImage: './images/AGL_MediaPlayer_Player_Play.svg' + onClicked: player.play() + states: [ + State { + when: player.playbackState === MediaPlayer.PlayingState + PropertyChanges { + target: play + offImage: './images/AGL_MediaPlayer_Player_Pause.svg' + onClicked: player.pause() + } + } + ] + } + ImageButton { + offImage: './images/AGL_MediaPlayer_ForwardArrow.svg' + onClicked: playlist.next() + } + + Item { Layout.fillWidth: true } + } + } + } + } + + Item { + x: 920 + y: 0 + width: 1000 + height: 1080 + ListView { + anchors.rightMargin: 0 + anchors.bottomMargin: 0 + anchors.leftMargin: 0 + anchors.topMargin: 0 + anchors.fill: parent + clip: true + header: Label { + x: 50 + text: 'PLAYLIST' + opacity: 0.5 + } + model: PlaylistWithMetadata { + source: playlist + } + currentIndex: playlist.currentIndex + + delegate: MouseArea { + id: delegate + width: ListView.view.width + height: ListView.view.height / 4 + RowLayout { + anchors.fill: parent + anchors.leftMargin: 10 + anchors.rightMargin: 50 + Image { + source: model.coverArt + fillMode: Image.PreserveAspectFit + Layout.preferredWidth: delegate.height + Layout.preferredHeight: delegate.height + } + ColumnLayout { + Layout.fillWidth: true + Label { + Layout.fillWidth: true + text: model.title + color: '#66FF99' + font.pixelSize: 48 + } + Label { + Layout.fillWidth: true + text: model.artist + color: '#66FF99' + font.pixelSize: 32 + } + } + Label { + text: player.time2str(model.duration) + color: '#66FF99' + font.pixelSize: 32 + } + } + onClicked: { + playlist.currentIndex = model.index + player.play() + } + } + + highlight: Rectangle { + color: 'white' + opacity: 0.25 + } + } + } + + Playlist { + id: playlist + playbackMode: random.checked ? Playlist.Random : loop.checked ? Playlist.Loop : Playlist.Sequential + + Component.onCompleted: { + playlist.addItems(mediaFiles) + } + } +} diff --git a/qml.qrc b/qml.qrc index 2d87efb..adf833a 100644 --- a/qml.qrc +++ b/qml.qrc @@ -1,6 +1,6 @@ - mediaplay.qml + momiplay.qml images/Music_Active.svg images/Music_Inactive.svg images/Podcasts_Active.svg -- cgit 1.2.3-korg