Warning, /libraries/kirigami-addons/src/sounds/SoundsPicker.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2021 Han Young <hanyoung@protonmail.com>
0003 * SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
0004 *
0005 * SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007
0008 import QtQuick
0009 import QtQuick.Controls as Controls2
0010 import org.kde.kirigami as Kirigami
0011 import QtQuick.Layouts
0012 import QtMultimedia
0013 import org.kde.kirigamiaddons.sounds
0014 import org.kde.kirigamiaddons.delegates as Delegates
0015
0016 /**
0017 * A sound picker component for picking ringtones and notifications.
0018 * \inherits QtQuick.ListView
0019 */
0020 ListView {
0021 id: listView
0022
0023 /**
0024 * This property holds the selected audio url.
0025 */
0026 property string selectedUrl: soundsModel.initialSourceUrl(listView.currentIndex)
0027
0028 /**
0029 * This property controls the sound type (ringtone or notification).
0030 * \property bool notification
0031 */
0032 property bool notification: true
0033
0034 /**
0035 * This property lets you choose sound theme, default to "plasma-mobile"
0036 * \property string theme
0037 */
0038 property alias theme: soundsModel.theme
0039
0040 /**
0041 * This property is the internal Audio qml type used for play sound
0042 * \property QtMultimedia.Audio playMusic
0043 */
0044 property alias audioPlayer: playMusic
0045
0046 model: SoundsModel {
0047 id: soundsModel
0048 notification: listView.notification
0049 theme: 'freedesktop'
0050 }
0051
0052 delegate: Delegates.RoundedItemDelegate {
0053 required property string ringtoneName
0054 required property url sourceUrl
0055 required property int index
0056
0057 text: ringtoneName
0058
0059 icon.name: ListView.isCurrentItem ? "object-select-symbolic" : ""
0060 onClicked: {
0061 selectedUrl = sourceUrl;
0062 if (playMusic.playbackState === MediaPlayer.PlayingState) {
0063 playMusic.pause();
0064 } else {
0065 playMusic.play();
0066 }
0067 }
0068 }
0069
0070 MediaPlayer {
0071 id: playMusic
0072 source: selectedUrl
0073 audioOutput: AudioOutput {}
0074 }
0075 }