Re: [Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Volker Hilsheimer via Interest
Your MainWindow::slotOnAnnouncement(const QString )

does the right thing: create the event with the message string, and send it to 
the accessibility system via updateAccessibility().

You can call that function from any code where you have access to your 
MainWindow instance; and you can add a second (possibly defaulted) “QObject *” 
parameter if other code needs that announcement to be made on behalf of other 
objects. Or you can just as well use those exact two lines of code anywhere 
else you need to make an announcement.

I don’t think keeping making the QAccessibleAnnouncementEvent object accessible 
for other code to modify it before you send it with updateAccessibility() would 
be an improvement.

Volker


> On 13 Jun 2024, at 13:32, Corentin Bacqué-cazenave  
> wrote:
> 
> My idea is to instantiate QAccessibleAnnouncementEvent in the main window 
> class of the app, and then exteren this instance to use in other class. Then, 
> we can just call the instance with setMessage.
> For now I tried to extern a QObject of my main window and use this object in 
> my non object class, but it seams to be not working.
> So, yes, probably add a setMessage method can help.
> If it can helps to understand what I'm trying to do, you can check here:
> WIP: Support Qt Accessibility Announcement for TTS events by CoBC · Pull 
> Request #2366 · BearWare/TeamTalk5 (github.com)
> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
> Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
> Handinamique
> Le 13/06/2024 à 13:27, Volker Hilsheimer a écrit :
>> I don’t think I understand the problem.
>> 
>> Are you not able to instantiate QAccessibleAnnouncementEvent because you are 
>> not in C++? Or do you not have access to Qt APIs?
>> 
>> If adding QAccessibleAnnouncementEvent::setMessage would help, then how do 
>> you get hold of the QAccessibleAnnouncementEvent instance to call that 
>> method on?
>> 
>> 
>> FWIW, QAccessibleAnnouncementEvent, is a new type in Qt 6.8, and we are 
>> still in beta, so if there’s anything missing from that class to make it 
>> usable, then there’s still time to add it.
>> 
>> Volker
>> 
>> 
>> 
>>> On 13 Jun 2024, at 12:28, Corentin Bacqué-cazenave 
>>>  wrote:
>>> 
>>> Hi,
>>> yes, I understand, but in this case, how should we make to send a 
>>> notification from everywhere. In the project I'm contributing to, we have 
>>> to send notification for some events (E.G. by an user send a message, or 
>>> when we change the volume), so we have just a method to send a text to 
>>> speech message, but this method can be called from any object class.
>>> A solution could be to extern the QAccessibleAnnouncementEvent, but 
>>> unfortunately we don't have a setMessage method so we can't do this :(
>>> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité 
>>> & Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 
>>> 100% Handinamique
>>> Le 13/06/2024 à 12:14, Volker Hilsheimer a écrit :
>>> 
> On 13 Jun 2024, at 11:48, Corentin Bacqué-cazenave via Interest 
>  wrote:
> 
> Hi,
> I'm trying to implement the new QAccessibleAnnouncementEvent in my 
> project. However, I have a class to hander some TTS functions, and this 
> class is not derived from QObject.
> Is there a way to use QAccessibleAnnouncementEvent to send a notification 
> to screenreaders without a QObject class? I saw we can also use a 
> QAccessibleInterface but it seams we also need a QObject for this.
> Does anyone have a solution?
> Thanks.
> -- 
> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission 
> Cécité & Co et Mandataire CNCPH à la commission Accessibilité Universelle 
> - Fédé 100% Handinamique
> 
> 
 Hi Corentin,
 
 
 Qt's accessibility framework is based on a tree of QAcessibleInterfaces. 
 For most cases, that tree mirrors the corresponding QObject trees. Only 
 QObjects can respond to events (which is required to handle incoming 
 calls), so an introspection through accessibility technology has to start 
 with something that is a QObject (typically a widget).
 
 But e.g. an item view’s items are not QObjects, so the implementation of 
 QAccessibleInterface for an item view returns interfaces for items based 
 on their position in the view. To raise an event for such an item, you 
 have to get the interface for that item, and then you can construct a 
 QAccessibleAnnouncementEvent with that interface.
 
 Alternatively, if you have only one level of children and already have the 
 QObject that they belong to, then you can create the event with the 
 QObject, and the child index by calling QAccessibleEvent::setChild.
 
 
 Volker
 
 
 
 
>> 

___
Interest mailing list
Interest@qt-project.org

Re: [Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Volker Hilsheimer via Interest
> On 13 Jun 2024, at 11:48, Corentin Bacqué-cazenave via Interest 
>  wrote:
> 
> Hi,
> I'm trying to implement the new QAccessibleAnnouncementEvent in my project. 
> However, I have a class to hander some TTS functions, and this class is not 
> derived from QObject.
> Is there a way to use QAccessibleAnnouncementEvent to send a notification to 
> screenreaders without a QObject class? I saw we can also use a 
> QAccessibleInterface but it seams we also need a QObject for this.
> Does anyone have a solution?
> Thanks.
> -- 
> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
> Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
> Handinamique

Hi Corentin,


Qt's accessibility framework is based on a tree of QAcessibleInterfaces. For 
most cases, that tree mirrors the corresponding QObject trees. Only QObjects 
can respond to events (which is required to handle incoming calls), so an 
introspection through accessibility technology has to start with something that 
is a QObject (typically a widget).

But e.g. an item view’s items are not QObjects, so the implementation of 
QAccessibleInterface for an item view returns interfaces for items based on 
their position in the view. To raise an event for such an item, you have to get 
the interface for that item, and then you can construct a 
QAccessibleAnnouncementEvent with that interface.

Alternatively, if you have only one level of children and already have the 
QObject that they belong to, then you can create the event with the QObject, 
and the child index by calling QAccessibleEvent::setChild.


Volker


___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Corentin Bacqué-cazenave via Interest
My idea is to instantiate QAccessibleAnnouncementEvent in the main 
window class of the app, and then exteren this instance to use in other 
class. Then, we can just call the instance with setMessage.


For now I tried to extern a QObject of my main window and use this 
object in my non object class, but it seams to be not working.


So, yes, probably add a setMessage method can help.

If it can helps to understand what I'm trying to do, you can check here:

WIP: Support Qt Accessibility Announcement for TTS events by CoBC · Pull 
Request #2366 · BearWare/TeamTalk5 (github.com) 



Corentin : expert certifié 2022 et Sponsor 
 NVDA, Référent commission 
Cécité & Co et Mandataire CNCPH à la commission Accessibilité 
Universelle - Fédé 100% Handinamique 


Le 13/06/2024 à 13:27, Volker Hilsheimer a écrit :

I don’t think I understand the problem.

Are you not able to instantiate QAccessibleAnnouncementEvent because you are 
not in C++? Or do you not have access to Qt APIs?

If adding QAccessibleAnnouncementEvent::setMessage would help, then how do you 
get hold of the QAccessibleAnnouncementEvent instance to call that method on?


FWIW, QAccessibleAnnouncementEvent, is a new type in Qt 6.8, and we are still 
in beta, so if there’s anything missing from that class to make it usable, then 
there’s still time to add it.

Volker

  

On 13 Jun 2024, at 12:28, Corentin Bacqué-cazenave 
wrote:

Hi,
yes, I understand, but in this case, how should we make to send a notification 
from everywhere. In the project I'm contributing to, we have to send 
notification for some events (E.G. by an user send a message, or when we change 
the volume), so we have just a method to send a text to speech message, but 
this method can be called from any object class.
A solution could be to extern the QAccessibleAnnouncementEvent, but 
unfortunately we don't have a setMessage method so we can't do this :(
Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
Handinamique
Le 13/06/2024 à 12:14, Volker Hilsheimer a écrit :

On 13 Jun 2024, at 11:48, Corentin Bacqué-cazenave via 
Interest wrote:

Hi,
I'm trying to implement the new QAccessibleAnnouncementEvent in my project. 
However, I have a class to hander some TTS functions, and this class is not 
derived from QObject.
Is there a way to use QAccessibleAnnouncementEvent to send a notification to 
screenreaders without a QObject class? I saw we can also use a 
QAccessibleInterface but it seams we also need a QObject for this.
Does anyone have a solution?
Thanks.
--
Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
Handinamique


Hi Corentin,


Qt's accessibility framework is based on a tree of QAcessibleInterfaces. For 
most cases, that tree mirrors the corresponding QObject trees. Only QObjects 
can respond to events (which is required to handle incoming calls), so an 
introspection through accessibility technology has to start with something that 
is a QObject (typically a widget).

But e.g. an item view’s items are not QObjects, so the implementation of 
QAccessibleInterface for an item view returns interfaces for items based on 
their position in the view. To raise an event for such an item, you have to get 
the interface for that item, and then you can construct a 
QAccessibleAnnouncementEvent with that interface.

Alternatively, if you have only one level of children and already have the 
QObject that they belong to, then you can create the event with the QObject, 
and the child index by calling QAccessibleEvent::setChild.


Volker


___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Volker Hilsheimer via Interest
I don’t think I understand the problem.

Are you not able to instantiate QAccessibleAnnouncementEvent because you are 
not in C++? Or do you not have access to Qt APIs?

If adding QAccessibleAnnouncementEvent::setMessage would help, then how do you 
get hold of the QAccessibleAnnouncementEvent instance to call that method on?


FWIW, QAccessibleAnnouncementEvent, is a new type in Qt 6.8, and we are still 
in beta, so if there’s anything missing from that class to make it usable, then 
there’s still time to add it.

Volker

 
> On 13 Jun 2024, at 12:28, Corentin Bacqué-cazenave  
> wrote:
> 
> Hi,
> yes, I understand, but in this case, how should we make to send a 
> notification from everywhere. In the project I'm contributing to, we have to 
> send notification for some events (E.G. by an user send a message, or when we 
> change the volume), so we have just a method to send a text to speech 
> message, but this method can be called from any object class.
> A solution could be to extern the QAccessibleAnnouncementEvent, but 
> unfortunately we don't have a setMessage method so we can't do this :(
> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
> Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
> Handinamique
> Le 13/06/2024 à 12:14, Volker Hilsheimer a écrit :
>>> On 13 Jun 2024, at 11:48, Corentin Bacqué-cazenave via Interest 
>>>  wrote:
>>> 
>>> Hi,
>>> I'm trying to implement the new QAccessibleAnnouncementEvent in my project. 
>>> However, I have a class to hander some TTS functions, and this class is not 
>>> derived from QObject.
>>> Is there a way to use QAccessibleAnnouncementEvent to send a notification 
>>> to screenreaders without a QObject class? I saw we can also use a 
>>> QAccessibleInterface but it seams we also need a QObject for this.
>>> Does anyone have a solution?
>>> Thanks.
>>> -- 
>>> Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité 
>>> & Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 
>>> 100% Handinamique
>>> 
>> Hi Corentin,
>> 
>> 
>> Qt's accessibility framework is based on a tree of QAcessibleInterfaces. For 
>> most cases, that tree mirrors the corresponding QObject trees. Only QObjects 
>> can respond to events (which is required to handle incoming calls), so an 
>> introspection through accessibility technology has to start with something 
>> that is a QObject (typically a widget).
>> 
>> But e.g. an item view’s items are not QObjects, so the implementation of 
>> QAccessibleInterface for an item view returns interfaces for items based on 
>> their position in the view. To raise an event for such an item, you have to 
>> get the interface for that item, and then you can construct a 
>> QAccessibleAnnouncementEvent with that interface.
>> 
>> Alternatively, if you have only one level of children and already have the 
>> QObject that they belong to, then you can create the event with the QObject, 
>> and the child index by calling QAccessibleEvent::setChild.
>> 
>> 
>> Volker
>> 
>> 
>> 

___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Corentin Bacqué-cazenave via Interest

Hi,

yes, I understand, but in this case, how should we make to send a 
notification from everywhere. In the project I'm contributing to, we 
have to send notification for some events (E.G. by an user send a 
message, or when we change the volume), so we have just a method to send 
a text to speech message, but this method can be called from any object 
class.


A solution could be to extern the QAccessibleAnnouncementEvent, but 
unfortunately we don't have a setMessage method so we can't do this :(


Corentin : expert certifié 2022 et Sponsor 
 NVDA, Référent commission 
Cécité & Co et Mandataire CNCPH à la commission Accessibilité 
Universelle - Fédé 100% Handinamique 


Le 13/06/2024 à 12:14, Volker Hilsheimer a écrit :

On 13 Jun 2024, at 11:48, Corentin Bacqué-cazenave via 
Interest wrote:

Hi,
I'm trying to implement the new QAccessibleAnnouncementEvent in my project. 
However, I have a class to hander some TTS functions, and this class is not 
derived from QObject.
Is there a way to use QAccessibleAnnouncementEvent to send a notification to 
screenreaders without a QObject class? I saw we can also use a 
QAccessibleInterface but it seams we also need a QObject for this.
Does anyone have a solution?
Thanks.
--
Corentin : expert certifié 2022 et Sponsor NVDA, Référent commission Cécité & 
Co et Mandataire CNCPH à la commission Accessibilité Universelle - Fédé 100% 
Handinamique

Hi Corentin,


Qt's accessibility framework is based on a tree of QAcessibleInterfaces. For 
most cases, that tree mirrors the corresponding QObject trees. Only QObjects 
can respond to events (which is required to handle incoming calls), so an 
introspection through accessibility technology has to start with something that 
is a QObject (typically a widget).

But e.g. an item view’s items are not QObjects, so the implementation of 
QAccessibleInterface for an item view returns interfaces for items based on 
their position in the view. To raise an event for such an item, you have to get 
the interface for that item, and then you can construct a 
QAccessibleAnnouncementEvent with that interface.

Alternatively, if you have only one level of children and already have the 
QObject that they belong to, then you can create the event with the QObject, 
and the child index by calling QAccessibleEvent::setChild.


Volker

___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


[Interest] QAccessibleAnnouncementEvent on a non-object class

2024-06-13 Thread Corentin Bacqué-cazenave via Interest

Hi,

I'm trying to implement the new QAccessibleAnnouncementEvent in my 
project. However, I have a class to hander some TTS functions, and this 
class is not derived from QObject.


Is there a way to use QAccessibleAnnouncementEvent to send a 
notification to screenreaders without a QObject class? I saw we can also 
use a QAccessibleInterface but it seams we also need a QObject for this.


Does anyone have a solution?

Thanks.

--

Corentin : expert certifié 2022 et Sponsor 
 NVDA, Référent commission 
Cécité & Co et Mandataire CNCPH à la commission Accessibilité 
Universelle - Fédé 100% Handinamique 
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest