Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-speech for openSUSE:Factory checked in at 2023-10-02 20:05:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-speech (Old) and /work/SRC/openSUSE:Factory/.qt6-speech.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-speech" Mon Oct 2 20:05:49 2023 rev:9 rq:1114514 version:6.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-speech/qt6-speech.changes 2023-07-26 13:23:31.403849673 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-speech.new.28202/qt6-speech.changes 2023-10-02 20:07:53.553881755 +0200 @@ -1,0 +2,6 @@ +Thu Sep 28 07:34:21 UTC 2023 - Christophe Marin <christo...@krop.fr> + +- Update to 6.5.3 + * https://www.qt.io/blog/qt-6.5.3-released + +------------------------------------------------------------------- Old: ---- qtspeech-everywhere-src-6.5.2.tar.xz New: ---- qtspeech-everywhere-src-6.5.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-speech.spec ++++++ --- /var/tmp/diff_new_pack.CTudho/_old 2023-10-02 20:07:54.665921746 +0200 +++ /var/tmp/diff_new_pack.CTudho/_new 2023-10-02 20:07:54.665921746 +0200 @@ -16,7 +16,7 @@ # -%define real_version 6.5.2 +%define real_version 6.5.3 %define short_version 6.5 %define tar_name qtspeech-everywhere-src %define tar_suffix %{nil} @@ -27,12 +27,12 @@ %endif # Name: qt6-speech%{?pkg_suffix} -Version: 6.5.2 +Version: 6.5.3 Release: 0 Summary: Qt 6 TextToSpeech Library and Plugin License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) URL: https://www.qt.io -Source: https://www.nic.funet.fi/pub/mirrors/download.qt-project.org/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz +Source: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz BuildRequires: pkgconfig BuildRequires: qt6-core-private-devel BuildRequires: cmake(Qt6Core) = %{real_version} ++++++ qtspeech-everywhere-src-6.5.2.tar.xz -> qtspeech-everywhere-src-6.5.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/.cmake.conf new/qtspeech-everywhere-src-6.5.3/.cmake.conf --- old/qtspeech-everywhere-src-6.5.2/.cmake.conf 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/.cmake.conf 2023-09-24 13:38:53.000000000 +0200 @@ -1,2 +1,2 @@ -set(QT_REPO_MODULE_VERSION "6.5.2") +set(QT_REPO_MODULE_VERSION "6.5.3") set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/.tag new/qtspeech-everywhere-src-6.5.3/.tag --- old/qtspeech-everywhere-src-6.5.2/.tag 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/.tag 2023-09-24 13:38:53.000000000 +0200 @@ -1 +1 @@ -9ae182fe7c03fc9550187b16fef7d2cbafb89ea6 +47d2905b512c975960c1b81e615e246a7e2ace2f diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/dependencies.yaml new/qtspeech-everywhere-src-6.5.3/dependencies.yaml --- old/qtspeech-everywhere-src-6.5.2/dependencies.yaml 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/dependencies.yaml 2023-09-24 13:38:53.000000000 +0200 @@ -1,10 +1,10 @@ dependencies: ../qtbase: - ref: af457a9f0f7eb1a2a7d11f495da508faab91a442 + ref: 372eaedc5b8c771c46acc4c96e91bbade4ca3624 required: true ../qtdeclarative: - ref: f289063ff19588a11dd79213632785cfda2909a0 + ref: e00c258fa5a4e122636d441967dea035865fac5d required: false ../qtmultimedia: - ref: ca330332aae05023983dcf445f0b388070289c51 + ref: 0762bb1e91495527f0978232212521c49291f7de required: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/CMakeLists.txt new/qtspeech-everywhere-src-6.5.3/examples/speech/CMakeLists.txt --- old/qtspeech-everywhere-src-6.5.2/examples/speech/CMakeLists.txt 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/CMakeLists.txt 2023-09-24 13:38:53.000000000 +0200 @@ -6,3 +6,6 @@ if(TARGET Qt::Widgets) qt_internal_add_example(hello_speak) endif() +if(TARGET Qt::Quick) + qt_internal_add_example(quickspeech) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/hello_speak/doc/src/hellospeakex.qdoc new/qtspeech-everywhere-src-6.5.3/examples/speech/hello_speak/doc/src/hellospeakex.qdoc --- old/qtspeech-everywhere-src-6.5.2/examples/speech/hello_speak/doc/src/hellospeakex.qdoc 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/hello_speak/doc/src/hellospeakex.qdoc 2023-09-24 13:38:53.000000000 +0200 @@ -4,6 +4,7 @@ /*! \example hello_speak \title Hello Speak Example + \examplecategory {Data Processing & I/O} \ingroup qttexttospeech_examples \meta tags {widgets} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/CMakeLists.txt new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/CMakeLists.txt --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/CMakeLists.txt 2023-09-24 13:38:53.000000000 +0200 @@ -0,0 +1,46 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.16) +project(quickspeech VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(NOT DEFINED INSTALL_EXAMPLESDIR) + set(INSTALL_EXAMPLESDIR "examples") +endif() + +set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/speech/quickspeech") + +find_package(Qt6 REQUIRED COMPONENTS Quick TextToSpeech) + +qt_standard_project_setup(REQUIRES 6.5) + +qt_add_executable(quickspeech + main.cpp +) + +qt_add_qml_module(quickspeech + URI main + VERSION 1.0 + QML_FILES "Main.qml" +) + +set_target_properties(quickspeech PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +target_link_libraries(quickspeech PRIVATE + Qt6::Quick + Qt6::TextToSpeech +) + +install(TARGETS quickspeech + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/Main.qml new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/Main.qml --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/Main.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/Main.qml 2023-09-24 13:38:53.000000000 +0200 @@ -0,0 +1,185 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtTextToSpeech + +ApplicationWindow { + id: root + visible: true + title: qsTr("Text to Speech") + minimumWidth: inputForm.implicitWidth + minimumHeight: inputForm.implicitHeight + footer.implicitHeight + +//! [initialize] + TextToSpeech { + id: tts + volume: volumeSlider.value + pitch: pitchSlider.value + rate: rateSlider.value +//! [initialize] + +//! [stateChanged] + onStateChanged: (state) => { + switch (state) { + case TextToSpeech.Ready: + statusLabel.text = qsTr("Ready") + break + case TextToSpeech.Speaking: + statusLabel.text = qsTr("Speaking") + break + case TextToSpeech.Paused: + statusLabel.text = qsTr("Paused...") + break + case TextToSpeech.Error: + statusLabel.text = qsTr("Error!") + break + } + } +//! [stateChanged] + } + + ColumnLayout { + anchors.fill: parent + anchors.margins: 8 + id: inputForm + + TextArea { + id: input + wrapMode: TextEdit.WordWrap + text: qsTr("Hello, world!") + Layout.fillWidth: true + Layout.minimumHeight: implicitHeight + } +//! [say0] + RowLayout { + Button { + text: qsTr("Speak") + enabled: [TextToSpeech.Paused, TextToSpeech.Ready].includes(tts.state) + onClicked: { +//! [say0] + let voices = tts.availableVoices() + tts.voice = voices[voicesComboBox.currentIndex] +//! [say1] + tts.say(input.text) + } + } +//! [say1] +//! [pause] + Button { + text: qsTr("Pause") + enabled: tts.state == TextToSpeech.Speaking + onClicked: tts.pause() + } +//! [pause] +//! [resume] + Button { + text: qsTr("Resume") + enabled: tts.state == TextToSpeech.Paused + onClicked: tts.resume() + } +//! [resume] + Button { + text: qsTr("Stop") + enabled: [TextToSpeech.Speaking, TextToSpeech.Paused].includes(tts.state) + onClicked: tts.stop() + } + } + + GridLayout { + columns: 2 + + Text { + text: qsTr("Engine:") + } + ComboBox { + id: enginesComboBox + Layout.fillWidth: true + model: tts.availableEngines() + onActivated: { + tts.engine = textAt(currentIndex) + updateLocales() + updateVoices() + } + } + Text { + text: qsTr("Locale:") + } + ComboBox { + id: localesComboBox + Layout.fillWidth: true + onActivated: { + let locales = tts.availableLocales() + tts.locale = locales[currentIndex] + updateVoices() + } + } + Text { + text: qsTr("Voice:") + } + ComboBox { + id: voicesComboBox + Layout.fillWidth: true + } + Text { + text: qsTr("Volume:") + } + Slider { + id: volumeSlider + from: 0 + to: 1.0 + stepSize: 0.2 + value: 0.8 + Layout.fillWidth: true + } + Text { + text: qsTr("Pitch:") + } + Slider { + id: pitchSlider + from: -1.0 + to: 1.0 + stepSize: 0.5 + value: 0 + Layout.fillWidth: true + } + Text { + text: qsTr("Rate:") + } + Slider { + id: rateSlider + from: -1.0 + to: 1.0 + stepSize: 0.5 + value: 0 + Layout.fillWidth: true + } + } + } + footer: Label { + id: statusLabel + } + + Component.onCompleted: { + enginesComboBox.currentIndex = tts.availableEngines().indexOf(tts.engine) + updateLocales() + updateVoices() + + tts.onStateChanged(tts.state) + } + + function updateLocales() { + let allLocales = tts.availableLocales().map((locale) => locale.nativeLanguageName) + let currentLocaleIndex = allLocales.indexOf(tts.locale.nativeLanguageName) + localesComboBox.model = allLocales + localesComboBox.currentIndex = currentLocaleIndex + } + + function updateVoices() { + voicesComboBox.model = tts.availableVoices().map((voice) => voice.name) + let indexOfVoice = tts.availableVoices().indexOf(tts.voice) + voicesComboBox.currentIndex = indexOfVoice + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/doc/src/quickspeech.qdoc new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/doc/src/quickspeech.qdoc --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/doc/src/quickspeech.qdoc 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/doc/src/quickspeech.qdoc 2023-09-24 13:38:53.000000000 +0200 @@ -4,6 +4,7 @@ /*! \example quickspeech \title Quick Speech Example + \examplecategory {Data Processing & I/O} \ingroup qttexttospeech_examples \brief The Quick Speech example reads out user-provided text. \meta tags {quick Android} @@ -20,7 +21,7 @@ \section1 Initializing a TextToSpeech First, we initialize the text to speech object \c{tts}: - \quotefromfile quickspeech/main.qml + \quotefromfile quickspeech/Main.qml \skipto TextToSpeech { \printuntil rate: rateSlider.value diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/main.cpp new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/main.cpp --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/main.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/main.cpp 2023-09-24 13:38:53.000000000 +0200 @@ -0,0 +1,18 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#include <QGuiApplication> +#include <QQmlApplicationEngine> + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed, + &app, []() { QCoreApplication::exit(-1); }, + Qt::QueuedConnection); + engine.loadFromModule("main", "Main"); + + return app.exec(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/main.qml new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/main.qml --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/main.qml 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/main.qml 1970-01-01 01:00:00.000000000 +0100 @@ -1,185 +0,0 @@ -// Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import QtTextToSpeech - -ApplicationWindow { - id: root - visible: true - title: qsTr("Text to Speech") - minimumWidth: inputForm.implicitWidth - minimumHeight: inputForm.implicitHeight + footer.implicitHeight - -//! [initialize] - TextToSpeech { - id: tts - volume: volumeSlider.value - pitch: pitchSlider.value - rate: rateSlider.value -//! [initialize] - -//! [stateChanged] - onStateChanged: (state) => { - switch (state) { - case TextToSpeech.Ready: - statusLabel.text = qsTr("Ready") - break - case TextToSpeech.Speaking: - statusLabel.text = qsTr("Speaking") - break - case TextToSpeech.Paused: - statusLabel.text = qsTr("Paused...") - break - case TextToSpeech.Error: - statusLabel.text = qsTr("Error!") - break - } - } -//! [stateChanged] - } - - ColumnLayout { - anchors.fill: parent - anchors.margins: 8 - id: inputForm - - TextArea { - id: input - wrapMode: TextEdit.WordWrap - text: qsTr("Hello, world!") - Layout.fillWidth: true - Layout.minimumHeight: implicitHeight - } -//! [say0] - RowLayout { - Button { - text: qsTr("Speak") - enabled: [TextToSpeech.Paused, TextToSpeech.Ready].includes(tts.state) - onClicked: { -//! [say0] - let voices = tts.availableVoices() - tts.voice = voices[voicesComboBox.currentIndex] -//! [say1] - tts.say(input.text) - } - } -//! [say1] -//! [pause] - Button { - text: qsTr("Pause") - enabled: tts.state == TextToSpeech.Speaking - onClicked: tts.pause() - } -//! [pause] -//! [resume] - Button { - text: qsTr("Resume") - enabled: tts.state == TextToSpeech.Paused - onClicked: tts.resume() - } -//! [resume] - Button { - text: qsTr("Stop") - enabled: [TextToSpeech.Speaking, TextToSpeech.Paused].includes(tts.state) - onClicked: tts.stop() - } - } - - GridLayout { - columns: 2 - - Text { - text: qsTr("Engine:") - } - ComboBox { - id: enginesComboBox - Layout.fillWidth: true - model: tts.availableEngines() - onActivated: { - tts.engine = textAt(currentIndex) - updateLocales() - updateVoices() - } - } - Text { - text: qsTr("Locale:") - } - ComboBox { - id: localesComboBox - Layout.fillWidth: true - onActivated: { - let locales = tts.availableLocales() - tts.locale = locales[currentIndex] - updateVoices() - } - } - Text { - text: qsTr("Voice:") - } - ComboBox { - id: voicesComboBox - Layout.fillWidth: true - } - Text { - text: qsTr("Volume:") - } - Slider { - id: volumeSlider - from: 0 - to: 1.0 - stepSize: 0.2 - value: 0.8 - Layout.fillWidth: true - } - Text { - text: qsTr("Pitch:") - } - Slider { - id: pitchSlider - from: -1.0 - to: 1.0 - stepSize: 0.5 - value: 0 - Layout.fillWidth: true - } - Text { - text: qsTr("Rate:") - } - Slider { - id: rateSlider - from: -1.0 - to: 1.0 - stepSize: 0.5 - value: 0 - Layout.fillWidth: true - } - } - } - footer: Label { - id: statusLabel - } - - Component.onCompleted: { - enginesComboBox.currentIndex = tts.availableEngines().indexOf(tts.engine) - updateLocales() - updateVoices() - - tts.onStateChanged(tts.state) - } - - function updateLocales() { - let allLocales = tts.availableLocales().map((locale) => locale.nativeLanguageName) - let currentLocaleIndex = allLocales.indexOf(tts.locale.nativeLanguageName) - localesComboBox.model = allLocales - localesComboBox.currentIndex = currentLocaleIndex - } - - function updateVoices() { - voicesComboBox.model = tts.availableVoices().map((voice) => voice.name) - let indexOfVoice = tts.availableVoices().indexOf(tts.voice) - voicesComboBox.currentIndex = indexOfVoice - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/qmldir new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/qmldir --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/qmldir 1970-01-01 01:00:00.000000000 +0100 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/qmldir 2023-09-24 13:38:53.000000000 +0200 @@ -0,0 +1,2 @@ +module main +Main 1.0 Main.qml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/quickspeech.pro new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/quickspeech.pro --- old/qtspeech-everywhere-src-6.5.2/examples/speech/quickspeech/quickspeech.pro 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/quickspeech/quickspeech.pro 2023-09-24 13:38:53.000000000 +0200 @@ -1 +1,20 @@ -error(This example can be run directly with the qml tool!) +TEMPLATE = app +TARGET = quickspeech + +QT += quick texttospeech + +SOURCES += main.cpp + +qml_resources.files = \ + qmldir \ + Main.qml + +qml_resources.prefix = /qt/qml/main + +RESOURCES += qml_resources + +target.path = $$[QT_INSTALL_EXAMPLES]/speech/quickspeech +INSTALLS += target + +DISTFILES += \ + qmldir diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/examples/speech/speech.pro new/qtspeech-everywhere-src-6.5.3/examples/speech/speech.pro --- old/qtspeech-everywhere-src-6.5.2/examples/speech/speech.pro 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/examples/speech/speech.pro 2023-09-24 13:38:53.000000000 +0200 @@ -1,2 +1,3 @@ TEMPLATE = subdirs qtHaveModule(widgets): SUBDIRS += hello_speak +qtHaveModule(quick): SUBDIRS += quickspeech diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/src/plugins/tts/winrt/qtexttospeech_winrt.cpp new/qtspeech-everywhere-src-6.5.3/src/plugins/tts/winrt/qtexttospeech_winrt.cpp --- old/qtspeech-everywhere-src-6.5.2/src/plugins/tts/winrt/qtexttospeech_winrt.cpp 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/src/plugins/tts/winrt/qtexttospeech_winrt.cpp 2023-09-24 13:38:53.000000000 +0200 @@ -117,6 +117,7 @@ if (!SUCCEEDED(hr)) { d->setError(QTextToSpeech::ErrorReason::Initialization, QCoreApplication::translate("QTextToSpeech", "Could not initialize text-to-speech engine.")); + return; } else if (voice() == QVoice()) { d->setError(QTextToSpeech::ErrorReason::Configuration, QCoreApplication::translate("QTextToSpeech", "Could not set default voice.")); @@ -221,6 +222,8 @@ QList<QLocale> QTextToSpeechEngineWinRT::availableLocales() const { Q_D(const QTextToSpeechEngineWinRT); + if (!d->synth) + return QList<QLocale>(); QSet<QLocale> uniqueLocales; d->forEachVoice([&uniqueLocales](const ComPtr<IVoiceInformation> &voiceInfo) { HString voiceLanguage; @@ -236,6 +239,8 @@ QList<QVoice> QTextToSpeechEngineWinRT::availableVoices() const { Q_D(const QTextToSpeechEngineWinRT); + if (!d->synth) + return QList<QVoice>(); QList<QVoice> voices; const QLocale currentLocale = locale(); d->forEachVoice([&](const ComPtr<IVoiceInformation> &voiceInfo) { @@ -250,6 +255,8 @@ QLocale QTextToSpeechEngineWinRT::locale() const { Q_D(const QTextToSpeechEngineWinRT); + if (!d->synth) + return QLocale(QLocale::C, QLocale::AnyTerritory); ComPtr<IVoiceInformation> voiceInfo; HRESULT hr = d->synth->get_Voice(&voiceInfo); @@ -263,6 +270,8 @@ bool QTextToSpeechEngineWinRT::setLocale(const QLocale &locale) { Q_D(QTextToSpeechEngineWinRT); + if (!d->synth) + return false; ComPtr<IVoiceInformation> foundVoice; d->forEachVoice([&locale, &foundVoice](const ComPtr<IVoiceInformation> &voiceInfo) { @@ -290,6 +299,8 @@ QVoice QTextToSpeechEngineWinRT::voice() const { Q_D(const QTextToSpeechEngineWinRT); + if (!d->synth) + return QVoice(); ComPtr<IVoiceInformation> voiceInfo; d->synth->get_Voice(&voiceInfo); @@ -300,6 +311,8 @@ bool QTextToSpeechEngineWinRT::setVoice(const QVoice &voice) { Q_D(QTextToSpeechEngineWinRT); + if (!d->synth) + return false; const QString data = QTextToSpeechEngine::voiceData(voice).toString(); if (data.isEmpty()) @@ -393,6 +406,8 @@ void QTextToSpeechEngineWinRT::say(const QString &text) { Q_D(QTextToSpeechEngineWinRT); + if (!d->synth) + return; // stop ongoing speech stop(QTextToSpeech::BoundaryHint::Default); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/src/tts/doc/src/qttexttospeech-examples.qdoc new/qtspeech-everywhere-src-6.5.3/src/tts/doc/src/qttexttospeech-examples.qdoc --- old/qtspeech-everywhere-src-6.5.2/src/tts/doc/src/qttexttospeech-examples.qdoc 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/src/tts/doc/src/qttexttospeech-examples.qdoc 2023-09-24 13:38:53.000000000 +0200 @@ -3,7 +3,6 @@ /*! \group qttexttospeech_examples - \ingroup all-examples \title Qt TextToSpeech Examples \brief Demonstrates the text-to-speech functionality provided by Qt. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/src/tts/qtexttospeech.cpp new/qtspeech-everywhere-src-6.5.3/src/tts/qtexttospeech.cpp --- old/qtspeech-everywhere-src-6.5.2/src/tts/qtexttospeech.cpp 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/src/tts/qtexttospeech.cpp 2023-09-24 13:38:53.000000000 +0200 @@ -174,14 +174,14 @@ Use \l say() to start reading text to the default audio device, and \l stop(), \l pause(), and \l resume() to control the reading of the text. - \snippet quickspeech/main.qml initialize + \snippet quickspeech/Main.qml initialize \codeline \dots \codeline - \snippet quickspeech/main.qml say0 - \snippet quickspeech/main.qml say1 - \snippet quickspeech/main.qml pause - \snippet quickspeech/main.qml resume + \snippet quickspeech/Main.qml say0 + \snippet quickspeech/Main.qml say1 + \snippet quickspeech/Main.qml pause + \snippet quickspeech/Main.qml resume \dots To synthesize text into PCM data for further processing, use synthesize(). @@ -389,7 +389,7 @@ \sa QTextToSpeech::State say() stop() pause() - \snippet quickspeech/main.qml stateChanged + \snippet quickspeech/Main.qml stateChanged */ /*! @@ -478,8 +478,8 @@ This function starts sythesizing the speech asynchronously, and reads the text to the default audio output device. - \snippet quickspeech/main.qml say0 - \snippet quickspeech/main.qml say1 + \snippet quickspeech/Main.qml say0 + \snippet quickspeech/Main.qml say1 \note All in-progress readings are stopped before beginning to read the recently synthesized text. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtspeech-everywhere-src-6.5.2/src/tts/qtexttospeech_qmltypes_p.h new/qtspeech-everywhere-src-6.5.3/src/tts/qtexttospeech_qmltypes_p.h --- old/qtspeech-everywhere-src-6.5.2/src/tts/qtexttospeech_qmltypes_p.h 2023-07-07 18:22:17.000000000 +0200 +++ new/qtspeech-everywhere-src-6.5.3/src/tts/qtexttospeech_qmltypes_p.h 2023-09-24 13:38:53.000000000 +0200 @@ -34,10 +34,17 @@ QML_NAMED_ELEMENT(voice) }; +// To prevent the same QVoice type from being exported twice into qmltypes +// (for value type and for the enums) +struct QVoiceDerived : public QVoice +{ + Q_GADGET +}; + namespace QVoiceForeignNamespace { Q_NAMESPACE - QML_FOREIGN_NAMESPACE(QVoice) + QML_FOREIGN_NAMESPACE(QVoiceDerived) QML_NAMED_ELEMENT(Voice) }