diff options
Diffstat (limited to 'demos/mobile/guitartuner/src/application.qml')
-rw-r--r-- | demos/mobile/guitartuner/src/application.qml | 328 |
1 files changed, 0 insertions, 328 deletions
diff --git a/demos/mobile/guitartuner/src/application.qml b/demos/mobile/guitartuner/src/application.qml deleted file mode 100644 index 7da138d..0000000 --- a/demos/mobile/guitartuner/src/application.qml +++ /dev/null @@ -1,328 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "mycomponents" - -/* The base canvas for all QML drawing. */ -Rectangle { - id: application - - property int targetNoteIndex: 0 - property alias frequency: noteChooser.currentFrequency - //Data provided to C++. - property bool isInput: true - property bool isMuted: false - property bool isAuto: true - property alias maxVoiceDifference: voiceDifferenceMeter.maxValue - property real volume: 0.5 - property real sensitivity: 0.5 - - //Signals to C++. - signal volumeChanged(real volume) - signal microphoneSensitivityChanged(real sensitivity) - signal targetFrequencyChanged(real frequency) - signal modeChanged(bool isInput) - signal muteStateChanged(bool isMuted) - - //Slots for signals coming from C++. - function voiceDifferenceChanged(difference) { - if (isAuto) timer.running = true; - voiceDifferenceMeter.valueChanged(difference); - noteImage.glowing = false - } - function correctFrequencyObtained() { - noteImage.glowing = true - } - function lowVoice() { - noteImage.glowing = false - } - - //Private function for changing the target frequency automatically. - function calculateTargetFrequency(difference) { - var tempDifference = Math.abs(difference); - var tempIndex = targetNoteIndex - while (!(difference < 0 && tempIndex == 0) && - tempDifference >= notes.get(tempIndex-(difference<0)).interval/2) { - tempDifference -= notes.get(tempIndex-(difference<0)).interval; - tempIndex += difference/Math.abs(difference); - } - if (tempIndex != targetNoteIndex) { - targetNoteIndex = tempIndex - noteChooser.currentFrequency = notes.get(targetNoteIndex).frequency; - targetFrequencyChanged(frequency); - } - } - - width: 360; height: 640 - color: "black" - - //Provides data for functions. - NotesModel {id: notes} - - /* A timer for changing the target frequency automatically. - * This is needed for avoiding recursion. */ - Timer { - id: timer - - interval: 1 - onTriggered: calculateTargetFrequency(voiceDifferenceMeter.value) - } - - //A meter for showing the difference between current and target frequency. - Meter { - id: voiceDifferenceMeter - - maxValue: 12 - minValue: -maxValue - height: imageSize.height/background.sourceSize.height*parent.height - width: imageSize.width/background.sourceSize.width*parent.width - anchors { - topMargin: 100/background.sourceSize.height*parent.height - horizontalCenter: parent.horizontalCenter - top: parent.top - } - } - - Image { - id: background - - anchors.fill: parent - smooth: true - source: "./mycomponents/images/guitartuner_skin.png" - } - - //A button for quitting the application. - Image { - id: quitButton - - width: sourceSize.width/background.sourceSize.width*parent.width - height: sourceSize.height/background.sourceSize.height*parent.height - source: "./mycomponents/images/power.png" - smooth: true - KeyNavigation.up: volumeAdjuster - KeyNavigation.down: modeButton - Keys.onEnterPressed: Qt.quit() - anchors{ - leftMargin: 297/background.sourceSize.width*parent.width - left: parent.left; - topMargin: 17/background.sourceSize.height*parent.height - top: parent.top - } - - MouseArea { - anchors.fill: parent - onClicked: Qt.quit() - } - } - - //An image for showing the target note. - Image { - id: noteImage - - property bool glowing: false - - width: sourceSize.width/background.sourceSize.width*parent.width - height: sourceSize.height/background.sourceSize.height*parent.height - source: glowing ? notes.get(targetNoteIndex).glowSource : notes.get(targetNoteIndex).bigSource - - anchors { - topMargin: 273/background.sourceSize.height*parent.height - top: parent.top - horizontalCenter: parent.horizontalCenter - } - } - - //A button for choosing the input/output mode. - Image { - id: modeButton - - function buttonPressed() { - isInput = !isInput - modeChanged(isInput) - if (isInput) { - soundIcons.source = "./mycomponents/images/sensitivity.png" - source = "./mycomponents/images/voicemode_off.png" - volumeAdjuster.setValue(sensitivity) - } - else { - //Change off from "auto" mode - if (isAuto) { - noteChooser.pushButton(targetNoteIndex) - } - if (isMuted) { - soundIcons.source = "./mycomponents/images/volume_off.png"; - } - else - soundIcons.source = "./mycomponents/images/volume.png" - source = "./mycomponents/images/voicemode_on.png" - volumeAdjuster.setValue(volume) - } - } - - width: sourceSize.width/background.sourceSize.width*parent.width - height: sourceSize.height/background.sourceSize.height*parent.height - smooth: true - source: "./mycomponents/images/voicemode_off.png" - KeyNavigation.up: quitButton - KeyNavigation.down: noteChooser - Keys.onEnterPressed: buttonPressed() - anchors { - leftMargin: 16/background.sourceSize.width*parent.width - left: parent.left - topMargin: 353/background.sourceSize.height*parent.height - top: parent.top - } - - MouseArea { - anchors.fill: parent - onPressed: { - parent.focus = true - parent.scale = 0.95 - } - onReleased: { - parent.scale = 1/0.95 - } - onClicked: parent.buttonPressed() - } - } - - //Buttons for choosing the target note. - NoteButtonView { - id: noteChooser - - width: parent.width*0.95; height: width/model.count - onNoteSelected: { - if (note == "Auto") { - if (!isAuto) { - isAuto = true - } - if (!isInput) { - modeButton.buttonPressed() - } - } - else { - timer.running = false; - isAuto = false - targetNoteIndex = index - targetFrequencyChanged(frequency) - } - focus = true - } - KeyNavigation.up: modeButton - KeyNavigation.down: soundIcons - anchors { - horizontalCenter: parent.horizontalCenter - topMargin: 454/background.sourceSize.height*parent.height - top: parent.top - } - } - - //An element for showing the mode and changing the mute state. - Image { - id: soundIcons - - function stateChanged() { - isMuted = !isMuted - muteStateChanged(isMuted) - if (isMuted) { - source = "qrc:/src/mycomponents/images/volume_off.png" - } - else { - source = "qrc:/src/mycomponents/images/volume.png" - } - } - - width: sourceSize.width/background.sourceSize.width*parent.width - height: sourceSize.height/background.sourceSize.height*parent.height - smooth: true - source: "./mycomponents/images/sensitivity.png" - Keys.onEnterPressed: stateChanged() - KeyNavigation.up: noteChooser - KeyNavigation.down: quitButton - KeyNavigation.left: volumeAdjuster - KeyNavigation.right: volumeAdjuster - anchors { - leftMargin: 42/background.sourceSize.width*parent.width - left: parent.left - topMargin: 565/background.sourceSize.height*parent.height - top: parent.top - } - - MouseArea { - anchors.fill: parent - onClicked: { - if (!isInput) { - parent.stateChanged() - } - parent.focus = true - } - } - } - - //An element for adjusting volume. - Adjuster { - id: volumeAdjuster - - max: 1 - value: 0.5 - width: 222/background.sourceSize.width*parent.width - height: parent.height*0.1 - onFocusChangedByClick: focus = true - onArrowPressedWhenValueOverLimits: soundIcons.focus = true - KeyNavigation.up: modeButton - KeyNavigation.down: quitButton - anchors { - leftMargin: 98/background.sourceSize.width*parent.width - left: parent.left - verticalCenter: soundIcons.verticalCenter - } - onValueChanged: { - if (isInput) { - sensitivity = value; - microphoneSensitivityChanged(1-sensitivity) - } - else { - volume = value - volumeChanged(volume) - } - } - } -} |