Wednesday, May 13, 2009

KNewStuff bug fixed (finally), and accessibility

Talked to aseigo on irc this morning and was asked to fix a bug with kns. Previously there were two methods in the KNS::Engine class, downloadDialogModal() and downloadDialog(), the latter's documentation saying it's asynchronous and uses signals to tell the app of activity in the non-modal dialog. Since plasma's dialogs are all non-modal so it can update, etc. it needs kns to show a non-modal dialog for it's purposes. Easy fix, right? just send a signal saying what entries were changed when the dialog closes. Problem is KNS::Engine isn't a QObject (I can't remember why, but will remedy that with the next BIC fix), so a bit of tom-foolery was needed. I added a new downloadDialog(QObject * reciever, const char * slot); method that will connect the private object's signal to your slot for you. It's ugly, but it works for now. So now apps can actually use the non-modal version of the method to get new stuff, yay!

On another note I've been investigating the state of kde-accessibility lately, and have learned a lot with the help of some folks from gnome-accessibility, and other places. It seems we are a bit behind the curve, but can probably catch up easily. A couple things are on our list:
1. kttsd has a redesign that phantomsdad designed before he left that should simplify things a great deal by using speech-dispatcher rather than plugins for each synthesizer. This also has the effect that speech-dispatcher will be doing all the synthesizing, and all the output to the speakers as well, and may make kttsmgr a gui component to control parts of speechd (or at least speechd as kttsd interacts with it).
2. some gnome? devs are working on a bridge between AT-SPI and dbus, once this is done, existing Qt accessibility functionality should be usable right after Qt's x11 implementation is using the dbus from that bridge (I'm a bit unclear on this, but it sounds like it will work).
3. At this point I believe the only step to make Qt/KDE apps usable with the orca screen reader will be to turn on accessibility in qt QT-ACCESSIBILITY=1, and add accessible names and descriptions to widgets in our apps (and maybe in our kde libraries also? i.e. default name/description for kpushbutton)

I believe these steps will go a great deal towards making kde a more accessible desktop solution. (which incidentally makes us an option for government workers, etc. who are required to have accessible software from what I gather).