Warning, /education/gcompris/src/activities/piano_composition/MelodyList.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - MelodyList.qml 0002 * 0003 * SPDX-FileCopyrightText: 2017 Divyam Madaan <divyam3897@gmail.com> 0004 * SPDX-FileCopyrightText: 2018 Aman Kumar Gupta <gupta2140@gmail.com> 0005 * 0006 * Authors: 0007 * Beth Hadley <bethmhadley@gmail.com> (GTK+ version) 0008 * Divyam Madaan <divyam3897@gmail.com> (Qt Quick port) 0009 * Aman Kumar Gupta <gupta2140@gmail.com> (Qt Quick port) 0010 * 0011 * SPDX-License-Identifier: GPL-3.0-or-later 0012 */ 0013 0014 import QtQuick 2.12 0015 import GCompris 1.0 0016 0017 import "../../core" 0018 import "piano_composition.js" as Activity 0019 0020 Rectangle { 0021 id: dialogBackground 0022 color: "#696da3" 0023 z: 10000 0024 anchors.fill: parent 0025 visible: false 0026 focus: visible 0027 0028 Keys.onPressed: { 0029 if(event.key === Qt.Key_Down) { 0030 scrollItem.down(); 0031 } else if(event.key === Qt.Key_Up) { 0032 scrollItem.up(); 0033 } 0034 } 0035 0036 Keys.onEscapePressed: closeButton.close() 0037 0038 Keys.onReleased: { 0039 if(event.key === Qt.Key_Back) { 0040 event.accepted = true; 0041 closeButton.close(); 0042 } 0043 } 0044 0045 signal close 0046 0047 property alias melodiesModel: melodiesModel 0048 property bool horizontalLayout: dialogBackground.width >= dialogBackground.height 0049 property int selectedMelodyIndex: -1 0050 0051 ListModel { 0052 id: melodiesModel 0053 } 0054 0055 Column { 0056 spacing: 10 0057 anchors.top: parent.top 0058 anchors.topMargin: 15 0059 anchors.horizontalCenter: parent.horizontalCenter 0060 width: dialogBackground.width - 30 0061 Rectangle { 0062 id: titleRectangle 0063 color: "#e6e6e6" 0064 radius: 10 * ApplicationInfo.ratio 0065 width: parent.width 0066 height: title.height + 10 * 2 0067 0068 GCText { 0069 id: title 0070 text: qsTr("Melodies") 0071 width: titleRectangle.width - 120 * ApplicationInfo.ratio //minus twice the cancel button size 0072 anchors.horizontalCenter: titleRectangle.horizontalCenter 0073 anchors.verticalCenter: titleRectangle.verticalCenter 0074 horizontalAlignment: Text.AlignHCenter 0075 verticalAlignment: Text.AlignVCenter 0076 fontSize: 20 0077 font.weight: Font.DemiBold 0078 wrapMode: Text.WordWrap 0079 } 0080 // The close button 0081 GCButtonCancel { 0082 id: closeButton 0083 apply: true 0084 anchors.verticalCenter: titleRectangle.verticalCenter 0085 anchors.margins: 2 * ApplicationInfo.ratio 0086 onClose: { 0087 dialogBackground.selectedMelodyIndex = -1 0088 dialogBackground.close() 0089 } 0090 } 0091 } 0092 0093 Rectangle { 0094 color: "#bdbed0" 0095 radius: 10 * ApplicationInfo.ratio 0096 width: dialogBackground.width - 30 0097 height: dialogBackground.height - (2 * parent.anchors.topMargin) - titleRectangle.height - parent.spacing 0098 border.color: "white" 0099 border.width: 3 * ApplicationInfo.ratio 0100 0101 Flickable { 0102 id: flickableList 0103 flickDeceleration: 1500 0104 anchors.fill: parent 0105 anchors.margins: 10 * ApplicationInfo.ratio 0106 contentWidth: width 0107 contentHeight: melodiesGrid.height 0108 flickableDirection: Flickable.VerticalFlick 0109 clip: true 0110 0111 Flow { 0112 id: melodiesGrid 0113 width: parent.width 0114 spacing: 40 0115 anchors.horizontalCenter: parent.horizontalCenter 0116 0117 Repeater { 0118 id: melodiesRepeater 0119 model: melodiesModel 0120 0121 Item { 0122 id: melodiesItem 0123 width: dialogBackground.horizontalLayout ? dialogBackground.width / 5 : dialogBackground.width / 4 0124 height: dialogBackground.height / 5 0125 0126 GCButton { 0127 text: title 0128 onClicked: { 0129 dialogBackground.selectedMelodyIndex = index 0130 items.multipleStaff.stopAudios() 0131 items.multipleStaff.nbStaves = 2 0132 items.multipleStaff.bpmValue = defaultBPM ? defaultBPM : 60 0133 items.multipleStaff.loadFromData(melody) 0134 lyricsArea.setLyrics(title, _origin, lyrics) 0135 } 0136 width: parent.width 0137 height: parent.height * 0.8 0138 theme: "dark" 0139 0140 Image { 0141 source: "qrc:/gcompris/src/core/resource/apply.svg" 0142 sourceSize.width: height 0143 sourceSize.height: height 0144 width: height 0145 height: parent.height / 4 0146 anchors.bottom: parent.bottom 0147 anchors.right: parent.right 0148 anchors.margins: 2 0149 visible: dialogBackground.selectedMelodyIndex === index 0150 } 0151 } 0152 } 0153 } 0154 } 0155 } 0156 // The scroll buttons 0157 GCButtonScroll { 0158 id: scrollItem 0159 anchors.right: parent.right 0160 anchors.rightMargin: 5 * ApplicationInfo.ratio 0161 anchors.bottom: flickableList.bottom 0162 anchors.bottomMargin: 5 * ApplicationInfo.ratio 0163 onUp: flickableList.flick(0, 1400) 0164 onDown: flickableList.flick(0, -1400) 0165 upVisible: flickableList.atYBeginning ? false : true 0166 downVisible: flickableList.atYEnd ? false : true 0167 } 0168 } 0169 } 0170 }