Index: rbutil/rbutilqt/rbutilqt.cpp =================================================================== --- rbutil/rbutilqt/rbutilqt.cpp (revision 20895) +++ rbutil/rbutilqt/rbutilqt.cpp (working copy) @@ -123,9 +123,91 @@ connect(ui.actionInstall_Rockbox_Utility_on_player, SIGNAL(triggered()), this, SLOT(installPortable())); #endif + //fix acessibility + QTimer *timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(fixAcessibility())); + timer->start(200); } +// fix acessibility +void RbUtilQt::updateAcessibility(void) +{ + // check if sender is a Tabbar + QTabBar *tabBar = qobject_cast(QObject::sender()); + if(tabBar != NULL) + { + qDebug() << "update tabBar"; + // change accessible Name, and tell accessibility layer. + QString text =tabBar->tabText(tabBar->currentIndex()).startsWith("&") ? + tabBar->tabText(tabBar->currentIndex()).remove(0,1) : + tabBar->tabText(tabBar->currentIndex()); + tabBar->setAccessibleName(text); + QAccessible::updateAccessibility(QObject::sender(), 0, QAccessible::Focus); + } + else // every other widget to fix + { + // tell accessibility layer, value has changed + QAccessible::updateAccessibility(QObject::sender(), 0, QAccessible::ValueChanged); + } +} +void RbUtilQt::fixAcessibility(void) +{ + //search all QSpinBoxs + QList spinBoxes = findChildren(); + //check for new ones + for(int i=0; i < spinBoxes.size(); i++) + { + if(!m_fixedWidgets.contains(spinBoxes.at(i))) + { + qDebug() << "found a new QSpinBox"; + connect(spinBoxes.at(i),SIGNAL(valueChanged(int)),this,SLOT(updateAcessibility())); + m_fixedWidgets.append(spinBoxes.at(i)); + } + } + + //search all QDoubleSpinBoxs + QList doubleSpinBoxes = findChildren(); + //check for new ones + for(int i=0; i < doubleSpinBoxes.size(); i++) + { + if(!m_fixedWidgets.contains(doubleSpinBoxes.at(i))) + { + qDebug() << "found a new QDoubleSpinBox"; + connect(doubleSpinBoxes.at(i),SIGNAL(valueChanged(double)),this,SLOT(updateAcessibility())); + m_fixedWidgets.append(doubleSpinBoxes.at(i)); + } + } + + //search all QComboBoxs + QList comboBoxes = findChildren(); + for(int i=0; i < comboBoxes.size(); i++) + { + if(!m_fixedWidgets.contains(comboBoxes.at(i))) + { + qDebug() << "found a new QDoubleSpinBox"; + connect(comboBoxes.at(i),SIGNAL(currentIndexChanged(int)),this,SLOT(updateAcessibility())); + m_fixedWidgets.append(comboBoxes.at(i)); + } + } + + //search tabbars + QList tabBars = findChildren(); + for(int i=0; i < tabBars.size(); i++) + { + if(!m_fixedWidgets.contains(tabBars.at(i))) + { + qDebug() << "found a new QTabBar"; + QString text =tabBars.at(i)->tabText(tabBars.at(i)->currentIndex()).startsWith("&") ? + tabBars.at(i)->tabText(tabBars.at(i)->currentIndex()).remove(0,1) : + tabBars.at(i)->tabText(tabBars.at(i)->currentIndex()); + tabBars.at(i)->setAccessibleName(text); + connect(tabBars.at(i),SIGNAL(currentChanged(int)),this,SLOT(updateAcessibility())); + m_fixedWidgets.append(tabBars.at(i)); + } + } +} + void RbUtilQt::sysinfo(void) { Sysinfo *info = new Sysinfo(this); Index: rbutil/rbutilqt/rbutilqt.pro =================================================================== --- rbutil/rbutilqt/rbutilqt.pro (revision 20895) +++ rbutil/rbutilqt/rbutilqt.pro (working copy) @@ -151,7 +151,7 @@ } !dbg { CONFIG += release thread qt - DEFINES += QT_NO_DEBUG_OUTPUT + DEFINES -= QT_NO_DEBUG_OUTPUT message("release") } Index: rbutil/rbutilqt/rbutilqtfrm.ui =================================================================== --- rbutil/rbutilqt/rbutilqtfrm.ui (revision 20895) +++ rbutil/rbutilqt/rbutilqtfrm.ui (working copy) @@ -133,9 +133,6 @@ &Quick Start - - Welcome - @@ -227,9 +224,6 @@ &Installation - - Basic Rockbox installation - @@ -324,9 +318,6 @@ &Extras - - Install extras for Rockbox - @@ -438,9 +429,6 @@ &Accessibility - - Install accessibility add-ons - @@ -550,9 +538,6 @@ &Uninstallation - - Uninstall Rockbox - @@ -644,9 +629,6 @@ &Manual - - View and download the manual - Index: rbutil/rbutilqt/rbutilqt.h =================================================================== --- rbutil/rbutilqt/rbutilqt.h (revision 20895) +++ rbutil/rbutilqt/rbutilqt.h (working copy) @@ -62,7 +62,9 @@ QString m_networkerror; bool m_gotInfo; bool m_auto; - + + //acessibility fix + QList m_fixedWidgets; private slots: void about(void); void help(void); @@ -109,6 +111,10 @@ void installPortable(void); void updateInfo(void); void updateTabs(int); + + // fix acessibility + void updateAcessibility(void); + void fixAcessibility(void); }; #endif