Warning, /libraries/libqmycroft/lib/qml/TranscribeButton.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.12 0002 import QtQuick.Controls 2.12 as Controls 0003 import Libqmycroft 1.0 0004 0005 Controls.Button { 0006 id: rootControl 0007 property bool transcribeActive: false 0008 property var target: parent 0009 anchors.right: parent.right 0010 icon.name: "audio-input-microphone" 0011 icon.width: parent.width / 2 0012 icon.height: parent.height / 2 0013 icon.color: activePalette.mid 0014 property var requestID 0015 0016 function generateUniqueID(){ 0017 audTranscriber.generateRequestIdentifier() 0018 requestID = audTranscriber.getRequestIdentifier() 0019 } 0020 0021 Component.onCompleted: { 0022 generateUniqueID() 0023 } 0024 0025 onTranscribeActiveChanged: { 0026 if(!transcribeActive){ 0027 audTranscriber.stop() 0028 } 0029 } 0030 0031 background: Rectangle { 0032 color: "transparent" 0033 } 0034 0035 SystemPalette { 0036 id: activePalette 0037 colorGroup: SystemPalette.Active 0038 } 0039 0040 AudioTranscribe { 0041 id: audTranscriber 0042 0043 onResponseReceived: { 0044 try { 0045 rootControl.target.text = response 0046 } 0047 catch(error) { 0048 console.log(error) 0049 } 0050 } 0051 } 0052 0053 Timer { 0054 id: timer 0055 } 0056 0057 function delay(delayTime, cb) { 0058 timer.interval = delayTime; 0059 timer.repeat = false; 0060 timer.triggered.connect(cb); 0061 timer.start(); 0062 } 0063 0064 Keys.onReturnPressed: { 0065 clicked() 0066 } 0067 0068 onClicked: { 0069 if(audTranscriber.status == AudioTranscribe.Inactive){ 0070 if(!rootControl.transcribeActive) { 0071 audTranscriber.start() 0072 rootControl.transcribeActive = true 0073 icon.color = activePalette.highlight 0074 delay(8000, function() { 0075 rootControl.transcribeActive = false 0076 icon.color = activePalette.mid 0077 }) 0078 } 0079 } 0080 } 0081 }