| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
According to QUIP-18 [1], all module and
plugin files should be
LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
or
LicenseRef-Qt-Commercial OR GPL-3.0-only
Also, LGPL and non LGPL should not be mixed in a given directory
[1]: https://contribute.qt-project.org/quips/18
Pick-to: 6.7
Task-number: QTBUG-121787
Change-Id: I07f52c613b50293d4d84c5cbd08e06643b1439e0
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Amends ea5c48e518789c3387ed9c9d21978eda122e9782, which implemented
progress reporting for most plugins, but the speechd engine doesn't
support it as the protocol doesn't provide the information.
Pick-to: 6.7
Fixes: QTBUG-124868
Change-Id: I1879cda88dda2107ea62a6639f4d828e3557cccb
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Use NO_GENERATE_CPP_EXPORTS explicitly for modules that don't need
the autogenerated exports header file.
Task-number: QTBUG-90492
Change-Id: Ic5fef6f6656c64e23fba0abf768ef7816aac09ed
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jeremy Whiting <jpwhiting@kde.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The QTextToSpeechEngineFlite c'tor Q_UNUSED the parameters argument,
despite of actually using it.
Remove Q_UNUSED(parameters)
Pick-to: 6.7
Change-Id: I24223a073aff071e70ed6543a1d7cb875d70b0c6
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make sure that Qt plugin ends with the 'Plugin' suffix. Without
the proper suffix the plugin will be skipped when loading the
QtTextToSpeech module. The target name doesn't affect the rest
naming.
Pick-to: 6.5 6.6 6.7
Fixes: QTBUG-122900
Change-Id: I9e66bd9e33c84d076f4c7eaf392e5ebd56539bfc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Calling enqueue() should be equivalent to say() when the engine
is Ready, otherwise it should enqueue the text. The old
implementation only enqueued the text when the engine was
in Speaking state, overriding the current utterance when the
engine was already synthesizing, or paused.
Adjust test to enqueue the next text chunk as soon as the
engine transitions away from the Ready state.
Pick-to: 6.7 6.6
Fixes: QTBUG-122884
Change-Id: I19518a92d1ae73b01dc3de1d9ae6178f5f55b3ad
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
| |
Change-Id: Icb4f791daf9a8a2df51dfcec054c95e28c134070
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
| |
In the QML documentation the signal errorOccurred has been written errorOccured
Pick-to: 6.7 6.6 6.5
Change-Id: Ibbca62d7d617aea482a20781afa4925bc79b52c3
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
| |
Amends 85a0060f4814bb419c
Pick-to: 6.5 6.6
Task-number: QTBUG-117220
Change-Id: I32d8b850d1761f3e889f1c44ffebc4f7b0f3c014
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Look for the next matching boundary, which stores its starting time.
Calculate the corresponding byte using QAudioFormat, then cut the
delivery of data off when we reach the matching byte.
In case of immediate pause, suspend the sink immediately.
The default is unchanged: we search for silence in the current chunk of
data.
Implementing boundary support for stop() might come later.
Pick-to: 6.6
Change-Id: I2b4cf06dbf8e2c55321a5364d2366c255d9e9afe
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we start a synthesis process then we start the audio sink immediately
when the stream is ready. However, there might not be any data yet, so
the sink might transition briefly to suspended state, which we regularly
interpret as the text-to-speech state being paused.
Ignore such transitions if no pause was requested from the source.
This stabilizes the sayMultiple test, which without this change emits
too many state change signals and fails.
Pick-to: 6.6
Change-Id: I5158d0a0ebde6be37394cf114e1242f29df00ef2
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The silence detection fails frequently, as the speech synthesizer seems
to produce low sample values rather than 0 between words. Not sure why.
Shorten the silence window and make the threshold larger to reliably
detect the silence in the test.
Pick-to: 6.6
Change-Id: Id5c26e043d24cb918c055e2809ac5f279fd2f021
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The event parameters take the leading XML into account, and the stored
currentText includes the XML as well, so we only have to skip the prefix
for the offset parameters of the signal.
The existing test covers this already and fails without this change,
just not CI as the Windows nodes don't have sound output devices.
Pick-to: 6.6
Change-Id: If10130131d39f65619730e13e7c8c0996e6cf0a9
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Amends 428cae98619584a51c01be135fecf6b347c117b3. If we drop the RIFF
header bytes, then we have fewer bytes available as well, so decrease
that value. Otherwise we never fetch more data.
Improve the test, which should have caught this regression, by testing
that synthesise cycles correctly through the states even if no default
audio output is present. The test was completely skipped because of
that, not detecting the regression.
Fixes: QTBUG-118668
Pick-to: 6.6
Change-Id: I3b4276c13ce2c77ec718d1b7bbca6f3421636890
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
|
|
|
|
|
|
|
|
|
|
| |
If we synthesize, then the audio sink never becomes active, and we never
start the elapsed timer. As asking for the elapsed times of an invalid
timer is undefined behavior, don't do it.
Pick-to: 6.6
Change-Id: Ida32957e37eccada38ae66298b93b334127b6124
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
|
|
|
|
|
|
|
| |
Pick-to: 6.5 6.6
Task-number: QTBUG-117220
Change-Id: I09343c975401f7fa700539fe0ffaf5dc3e049210
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Gracefully handle the case where Multimedia is not available.
Also, as we now centrally check for Multimedia availability,
remove the individual checks.
Pick-to: 6.6
Fixes: QTBUG-117824
Change-Id: If40c7f98f1dfa48c91f504dbdf657067044860c3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|
|
|
|
|
|
| |
The return type is an object type, so we get a QJniObject anyway.
Change-Id: I6d1e095142e3e4dbfabcab0fe7597af47513f6e9
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
| |
Follow up on JNI changes in qtbase.
Change-Id: Iaf3764a2658ce1ffba695c2ae90486ebc65f4154
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
That we have two macros to declare a C++ type to represent a Java class
is confusing. The TYPE macro as of now allows us to declare array types,
but with QJniArray we won't need that anymore, and can just use Class[]
as the type instead. Changing that will be a follow-up commit; for now,
get rid of TYPE-usages to declare regular classes.
Change-Id: I1272c572801fafd948d6977f02987c8a817f864c
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
|
|
|
|
|
|
|
|
|
| |
Add early returns, if no OneCore voices installed.
Pick-to: 6.6 6.5
Change-Id: I9e95b06b35a212e9471c192415e406d1e8c3e461
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Adds cmake and qmake project files to the quickspeech example which
allows the example to be built and deployd.
Fixes: QTBUG-113820
Pick-to: 6.5 6.6
Change-Id: Ie52f70ccfbd173c43621a20604fffd46182f9e20
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I don't see what the original code did wrong, but GCC13 doesn't
understand it, and spews out the following:
In copy constructor ‘Qt6::QtPrivate::QExplicitlySharedDataPointerV2<T>::QExplicitlySharedDataPointerV2(const Qt6::QtPrivate::QExplicitlySharedDataPointerV2<T>&) [with T = Qt6::QMapData<std::map<Qt6::QString, Qt6::QVariant, std::less<Qt6::QString>, std::allocator<std::pair<const Qt6::QString, Qt6::QVariant> > > >]’,
inlined from ‘Qt6::QMap<Qt6::QString, Qt6::QVariant>::QMap(const Qt6::QMap<Qt6::QString, Qt6::QVariant>&)’ at qmap.h:185:7,
inlined from ‘Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>::<lambda>(const Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>&)’ at qdeclarativetexttospeech.cpp:106:30,
inlined from ‘constexpr __gnu_cxx::__ops::_Iter_pred<Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)> >::_Iter_pred(const __gnu_cxx::__ops::_Iter_pred<Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)> >&)’ at /d/gcc/13/include/c++/13.0.1/bits/predefined_ops.h:304:12,
inlined from ‘constexpr _Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = Qt6::QList<Qt6::QVoice>::const_iterator; _Predicate = __gnu_cxx::__ops::_Iter_pred<Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)> >]’ at /d/gcc/13/include/c++/13.0.1/bits/stl_algobase.h:2115:23,
inlined from ‘constexpr _IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = Qt6::QList<Qt6::QVoice>::const_iterator; _Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>]’ at /d/gcc/13/include/c++/13.0.1/bits/stl_algo.h:3923:28,
inlined from ‘auto Qt6::QtPrivate::sequential_erase_if(Container&, Predicate&) [with Container = Qt6::QList<Qt6::QVoice>; Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>]’ at qcontainertools_impl.h:333:35,
inlined from ‘Qt6::qsizetype Qt6::QList<T>::removeIf(Predicate) [with Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>; T = Qt6::QVoice]’ at qlist.h:589:46,
inlined from ‘Qt6::QList<Qt6::QVoice> Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const’ at qdeclarativetexttospeech.cpp:106:20:
qshareddata_impl.h:40:11: error: pointer used after ‘void operator delete(void*, std::size_t)’ [-Werror=use-after-free]
40 | : d(other.d)
| ^~~~~~~~~~
In destructor ‘Qt6::QtPrivate::QExplicitlySharedDataPointerV2<T>::~QExplicitlySharedDataPointerV2() [with T = Qt6::QMapData<std::map<Qt6::QString, Qt6::QVariant, std::less<Qt6::QString>, std::allocator<std::pair<const Qt6::QString, Qt6::QVariant> > > >]’,
inlined from ‘Qt6::QtPrivate::QExplicitlySharedDataPointerV2<T>::~QExplicitlySharedDataPointerV2() [with T = Qt6::QMapData<std::map<Qt6::QString, Qt6::QVariant, std::less<Qt6::QString>, std::allocator<std::pair<const Qt6::QString, Qt6::QVariant> > > >]’ at qshareddata_impl.h:65:5,
inlined from ‘Qt6::QMap<Qt6::QString, Qt6::QVariant>::~QMap()’ at qmap.h:185:7,
inlined from ‘Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>::~<lambda>()’ at qdeclarativetexttospeech.cpp:106:30,
inlined from ‘constexpr __gnu_cxx::__ops::_Iter_pred<_Predicate> __gnu_cxx::__ops::__pred_iter(_Predicate) [with _Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>]’ at /d/gcc/13/include/c++/13.0.1/bits/predefined_ops.h:325:58,
inlined from ‘constexpr _IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = Qt6::QList<Qt6::QVoice>::const_iterator; _Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>]’ at /d/gcc/13/include/c++/13.0.1/bits/stl_algo.h:3923:28,
inlined from ‘auto Qt6::QtPrivate::sequential_erase_if(Container&, Predicate&) [with Container = Qt6::QList<Qt6::QVoice>; Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>]’ at qcontainertools_impl.h:333:35,
inlined from ‘Qt6::qsizetype Qt6::QList<T>::removeIf(Predicate) [with Predicate = Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const::<lambda(const Qt6::QVoice&)>; T = Qt6::QVoice]’ at qlist.h:589:46,
inlined from ‘Qt6::QList<Qt6::QVoice> Qt6::QDeclarativeTextToSpeech::findVoices(const Qt6::QVariantMap&) const’ at qdeclarativetexttospeech.cpp:106:20:
qshareddata_impl.h:68:13: note: call to ‘void operator delete(void*, std::size_t)’ here
68 | delete d;
| ^~~~~~~~
Fix by taking the QVariantMap by reference instead of by value. That
should be a bit more efficient, too, due to reduced atomic ref count
manipulations.
Amends 3543b7c3b69d69280122958f5949ac7827c543b0.
Pick-to: 6.6
Change-Id: I3070ba17544ca71c9ab835cd6f6fd2e2748ef74a
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
Reviewed-by: Jeremy Whiting <jpwhiting@kde.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
| |
The artifact was generated by the RIFF/WAV header that was passed into
the audio sink.
Pick-to: 6.6
Change-Id: I33133b069894fecf506eb67c4877306f9d4109b1
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
| |
Pick-to: 6.6
Change-Id: Ibdfead152d030f41c78e909452896abd0e3ce99e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to export the type as a value type, and also export its enums
in a namespace. This resulted in duplicated entries in the qmltypes
file, which confuses Qt Design Studio.
Fix it by introducing a derived class, and using it for exporting the
enums.
Fixes: QTBUG-115363
Pick-to: 6.6 6.5
Change-Id: Iaeb21a81ede657499a62fa5325122592ec0b203e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
| |
Change-Id: Ic49f0b9912e246727487c1457aeab05484485b5f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This disables the 3-arg QObject::connect() overload:
QObject::connect(sender, signal, functor)
For details see:
https://lists.qt-project.org/pipermail/development/2023-July/044141.html
No changes required.
Change-Id: I0bea228494774d4ad0279aaf25ef96a75e31e047
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
| |
Change-Id: I70fe1b26741376dbd112512b27a0d92e8d7d99f5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
| |
Task-number: QTBUG-115044
Pick-to: 6.5 6.6
Change-Id: I83314f3b7955e1ef9c857bcc96c07f6f90b2f875
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The most common limit for the maximum number of allowed documentation
warnings is zero. As all Qt module docs include() a common configuration
from qtbase, it's better to control the base warninglimit from a central
location in qtbase/doc/global.
This allows for a temporary increase of the limit across all modules as
needed - for example, when updating the QDoc binary that the CI
provisions to a version that introduces new types of documentation
warnings.
Task-number: QTBUG-113326
Change-Id: I82121df63a57575765df156e868c4db838bae79e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of calling QList::removeIf in the recursive template, call
it outside and use the recursive template to check each criteria for the
current voice.
Invert the logic for less brain-twisting: the helper returns true for
voices that match all criteria.
Pick-to: 6.6
Change-Id: I25364919ad0c2d71aefb8b9872752bf726e99334
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- add trailing comma for enums to minimize diff for future additions
- remove unnecessarily inline keyword
- use q20::remove_cvref_t instead of std::decay_t so that we don't decay
arrays
- remove unncessary parenths
- add semi-public API warning to plugin headers
Pick-to: 6.6
Change-Id: I2608bf2e3feff968d0404b20c1cb00a28da5c02c
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
| |
src/tts/qtexttospeech.cpp:620: (qdoc) warning: Undocumented parameter 'id'
Pick-to: 6.6
Change-Id: I5792b9b625d0c16f9afc8a4f8c2a6cfd65fc67ca
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add 6.6 revision tags to new properties and invokables, and make
all properties FINAL.
The `engine` property is only made FINAL in the QML wrapper class,
as it needs to override that property to replace getters and setters
to support lazy initialization.
Pick-to: 6.6
Change-Id: I266b5a3229978f4da9998366af83d77fa744d434
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The landing page for Qt Speech doesn't contain the customary section
"Licenses and Attributions", common for all Qt modules.
* Add "Licenses and attributions" section to the landing page.
Pick-to: 6.5
Fixes: QTBUG-114099
Change-Id: I975ce793b23e4d26ef76f06927804ccc7939ddba
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By convention, documentation in Qt is indented by 4 spaces. The landing
page for Qt Speech, however, indents by 3 spaces. This makes copying
landing page content from other modules more cumbersome, as it is
visually "noisy".
Increase the indentation by one space.
Pick-to: 6.5
Task-number: QTBUG-114099
Change-Id: I56223c1bebff226fa2e9de8115c15f961635d89e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
They were only need for QML clients, for C++ client the version taking
a callable is more convenient. But QML clients cannot really use
QAudioFormat (there is no QML version of the type), and operating
on QByteArrays is also not something we want QML (or JavaScript code)
to do.
The engines still emit a signal, as that makes it easier to implement
the engine.
Change-Id: Ie24a41195cd5b7e27ec2b1562fb3f8e515c5adc3
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Jeremy Whiting <jpwhiting@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Formally, QAudioBuffer is the right type for carrying audio data, but
it's hardly used in Qt Multimedia itself, and not very practical to use
for writing the received PCM data to a file or to stream it out to a
QAudioSink (which operators on a QIODevice, e.g. with a byte array).
Nevertheless, allow a callback to take a QAudioBuffer instead of
QAudioFormat and QByteArray, as the QAudioBuffer facilities might be
useful for some use cases.
Change-Id: I260a4cf6cf91f57356373f4ef9cf248927159b40
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
| |
There's no reason for maintaining this engine anymore.
Change-Id: I323d59b15951a74b264c708a639be8c293eba1e8
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android lacks this capability as the native TextToSpeech class has no
API for this. Since we now have the capabilities enum, add PauseResume
and don't list that for Android, so that applications can disable the
respective UI.
Do that for our examples - hide the pause & resume buttons if the
capability flag is not set.
Document the unsupported capabilities for all engines that lacks some
features
Fixes: QTBUG-113805
Change-Id: Ia8139e235f4cd968519423515e31c81285a2d349
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
For UIs that just want to display the currently spoken word, this is
easier to connect to existing APIs. Also add the ID of the utterance,
as returned by enqueue().
The index and length into the overall string stay as the final
parameters.
Change-Id: I70bf35eeadd24540670cad2edd42126331796f4b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This way applications can easier keep track of things later, using the
ID as a token to identify the text. Use that ID instead of the text
string as the parameter in the aboutToSynthesize signal.
Rename the "text" parameters and variables to "utterance" to make the
relation to the BoundaryHint::Utterance clearer, and document the
Utterance enum value better (and also add the missing [since] tag).
Use a QQueue for the pendingUtterances variable instead of a list.
Change-Id: Icc2054dca52cea450736d63ca0119989b762e39a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
| |
Evidently qdoc doesn't know about QML_ADDED_IN_VERSION.
Change-Id: I0aa1a0e4c830b78c0ff0e0a022aa56c5b6d6e7fd
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
| |
Change-Id: I52c59c1e9bdb4cc4c99f898352c52a19968527f4
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
|
|
|
|
|
|
|
| |
Adapt to makeSlotObject rename to makeCallableObject.
Change-Id: I5014b13d11747938e33c40cd88606dbce257fd8b
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
| |
Change-Id: I8bf9bffbe06719a2239529168e2c6d585937f68d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
| |
The text passed into the function is not said next, it's said at the end
of the currently pending texts.
Change-Id: Ic0ea885b65cdd8d7a055616fc9098d3c8cd3d397
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The slot object stored during synthesizing should be dereferenced and
destroyed when the engine transitions back to ready, but we should
nevertheless not overwrite the pointer without derefencing.
Change-Id: Id99653c555682f21b645c83db2ceb0ae143ab426
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a map-type property that QML code can initialize to engine-specific
key/value mappings. Changing the property at runtime re-initializes the
engine.
Implement asnychronous initialization option in the mock engine so that
we can test those code paths better.
Change-Id: I0f2667b9b8e2339fa2e6966a2669f6f54ff2572a
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
|