diff --git a/kcms/access/CMakeLists.txt b/kcms/access/CMakeLists.txt --- a/kcms/access/CMakeLists.txt +++ b/kcms/access/CMakeLists.txt @@ -3,6 +3,8 @@ set(kcm_access_PART_SRCS kcmaccess.cpp ) +kconfig_add_kcfg_files(kcm_access_PART_SRCS kaccess_settings.kcfgc GENERATE_MOC) + ki18n_wrap_ui(kcm_access_PART_SRCS accessibility.ui ) @@ -25,3 +27,4 @@ ########### install files ############### install( FILES kcmaccess.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +install(FILES kaccess_settings.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) diff --git a/kcms/access/kaccess_settings.kcfg b/kcms/access/kaccess_settings.kcfg new file mode 100644 --- /dev/null +++ b/kcms/access/kaccess_settings.kcfg @@ -0,0 +1,166 @@ + + + + + + + + true + + + + false + + + + + + + + false + + + + true + + + + #ff0000 + + + + 500 + + + + + + + + false + + + + true + + + + false + + + + true + + + + false + + + + false + + + + + false + + + + 500 + + + + true + + + + true + + + + true + + + + + false + + + + 500 + + + + true + + + + + false + + + + false + + + + 30 + + + + + true + + + + false + + + + false + + + + + + + + false + + + + 160 + + + + 5 + + + 1000 + + + 5000 + + + 5 + + + 5 + + + + + 0 + + + + + + + false + + + diff --git a/kcms/access/kaccess_settings.kcfgc b/kcms/access/kaccess_settings.kcfgc new file mode 100644 --- /dev/null +++ b/kcms/access/kaccess_settings.kcfgc @@ -0,0 +1,5 @@ +File=kaccess_settings.kcfg +ClassName=KAccessSettings +Mutators=true +DefaultValueGetters=true +ParentInConstructor=true diff --git a/kcms/access/kcmaccess.cpp b/kcms/access/kcmaccess.cpp --- a/kcms/access/kcmaccess.cpp +++ b/kcms/access/kcmaccess.cpp @@ -20,6 +20,7 @@ */ #include "kcmaccess.h" +#include "kaccess_settings.h" #include #include @@ -303,73 +304,67 @@ void KAccessConfig::load() { - KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Bell"); + KAccessSettings settings; + ui.systemBell->setChecked(settings.systemBell()); + ui.customBell->setChecked(settings.artsBell()); + ui.soundEdit->setText(settings.artsBellFile()); - ui.systemBell->setChecked(cg.readEntry("SystemBell", true)); - ui.customBell->setChecked(cg.readEntry("ArtsBell", false)); - ui.soundEdit->setText(cg.readPathEntry("ArtsBellFile", QString())); - - ui.visibleBell->setChecked(cg.readEntry("VisibleBell", false)); - ui.invertScreen->setChecked(cg.readEntry("VisibleBellInvert", true)); + ui.visibleBell->setChecked(settings.visibleBell()); + ui.invertScreen->setChecked(settings.visibleBellInvert()); ui.flashScreen->setChecked(!ui.invertScreen->isChecked()); - ui.colorButton->setColor(cg.readEntry("VisibleBellColor", QColor(Qt::red))); - - ui.duration->setValue(cg.readEntry("VisibleBellPause", 500)); + ui.colorButton->setColor(settings.visibleBellColor()); - KConfigGroup keyboardGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Keyboard"); + ui.duration->setValue(settings.visibleBellPause()); - ui.stickyKeys->setChecked(keyboardGroup.readEntry("StickyKeys", false)); - ui.stickyKeysLock->setChecked(keyboardGroup.readEntry("StickyKeysLatch", true)); - ui.stickyKeysAutoOff->setChecked(keyboardGroup.readEntry("StickyKeysAutoOff", false)); - ui.stickyKeysBeep->setChecked(keyboardGroup.readEntry("StickyKeysBeep", true)); - ui.toggleKeysBeep->setChecked(keyboardGroup.readEntry("ToggleKeysBeep", false)); - ui.kNotifyModifiers->setChecked(keyboardGroup.readEntry("kNotifyModifiers", false)); + ui.stickyKeys->setChecked(settings.stickyKeys()); + ui.stickyKeysLock->setChecked(settings.stickyKeysLatch()); + ui.stickyKeysAutoOff->setChecked(settings.stickyKeysAutoOff()); + ui.stickyKeysBeep->setChecked(settings.stickyKeysBeep()); + ui.toggleKeysBeep->setChecked(settings.toggleKeysBeep()); + ui.kNotifyModifiers->setChecked(settings.kNotifyModifiers()); - ui.slowKeys->setChecked(keyboardGroup.readEntry("SlowKeys", false)); - ui.slowKeysDelay->setValue(keyboardGroup.readEntry("SlowKeysDelay", 500)); - ui.slowKeysPressBeep->setChecked(keyboardGroup.readEntry("SlowKeysPressBeep", true)); - ui.slowKeysAcceptBeep->setChecked(keyboardGroup.readEntry("SlowKeysAcceptBeep", true)); - ui.slowKeysRejectBeep->setChecked(keyboardGroup.readEntry("SlowKeysRejectBeep", true)); + ui.slowKeys->setChecked(settings.slowKeys()); + ui.slowKeysDelay->setValue(settings.slowKeysDelay()); + ui.slowKeysPressBeep->setChecked(settings.slowKeysPressBeep()); + ui.slowKeysAcceptBeep->setChecked(settings.slowKeysAcceptBeep()); + ui.slowKeysRejectBeep->setChecked(settings.slowKeysRejectBeep()); - ui.bounceKeys->setChecked(keyboardGroup.readEntry("BounceKeys", false)); - ui.bounceKeysDelay->setValue(keyboardGroup.readEntry("BounceKeysDelay", 500)); - ui.bounceKeysRejectBeep->setChecked(keyboardGroup.readEntry("BounceKeysRejectBeep", true)); + ui.bounceKeys->setChecked(settings.bounceKeys()); + ui.bounceKeysDelay->setValue(settings.bounceKeysDelay()); + ui.bounceKeysRejectBeep->setChecked(settings.bounceKeysRejectBeep()); - ui.gestures->setChecked(keyboardGroup.readEntry("Gestures", false)); - ui.timeout->setChecked(keyboardGroup.readEntry("AccessXTimeout", false)); - ui.timeoutDelay->setValue(keyboardGroup.readEntry("AccessXTimeoutDelay", 30)); + ui.gestures->setChecked(settings.gestures()); + ui.timeout->setChecked(settings.accessXTimeout()); + ui.timeoutDelay->setValue(settings.accessXTimeoutDelay()); - ui.accessxBeep->setChecked(keyboardGroup.readEntry("AccessXBeep", true)); - ui.gestureConfirmation->setChecked(keyboardGroup.readEntry("GestureConfirmation", false)); - ui.kNotifyAccess->setChecked(keyboardGroup.readEntry("kNotifyAccess", false)); + ui.accessxBeep->setChecked(settings.accessXBeep()); + ui.gestureConfirmation->setChecked(settings.gestureConfirmation()); + ui.kNotifyAccess->setChecked(settings.kNotifyAccess()); - KConfigGroup mouseGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Mouse"); - ui.mouseKeys->setChecked(mouseGroup.readEntry("MouseKeys", false)); - ui.mk_delay->setValue(mouseGroup.readEntry("MKDelay", 160)); + ui.mouseKeys->setChecked(settings.mouseKeys()); + ui.mk_delay->setValue(settings.mKDelay()); - const int interval = mouseGroup.readEntry("MKInterval", 5); + const int interval = settings.mKInterval(); ui.mk_interval->setValue(interval); // Default time to reach maximum speed: 5000 msec - int time_to_max = mouseGroup.readEntry("MKTimeToMax", (5000+interval/2)/interval); - time_to_max = mouseGroup.readEntry("MK-TimeToMax", time_to_max*interval); + int time_to_max = settings.mKDTimeToMax(); ui.mk_time_to_max->setValue(time_to_max); // Default maximum speed: 1000 pixels/sec // (The old default maximum speed from KDE <= 3.4 // (100000 pixels/sec) was way too fast) - long max_speed = mouseGroup.readEntry("MKMaxSpeed", interval); + long max_speed = settings.mKMaxSpeed(); max_speed = max_speed * 1000 / interval; if (max_speed > 2000) { max_speed = 2000; } - max_speed = mouseGroup.readEntry("MK-MaxSpeed", int(max_speed)); + max_speed = settings.mKDMaxSpeed(); ui.mk_max_speed->setValue(max_speed); - ui.mk_curve->setValue(mouseGroup.readEntry("MKCurve", 0)); + ui.mk_curve->setValue(settings.mKCurve()); - KConfigGroup screenReaderGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "ScreenReader"); - ui.screenReaderEnabled->setChecked(screenReaderGroup.readEntry("Enabled", false)); + ui.screenReaderEnabled->setChecked(settings.screenReaderEnabled()); checkAccess(); @@ -379,64 +374,53 @@ void KAccessConfig::save() { - KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Bell"); - - cg.writeEntry("SystemBell", ui.systemBell->isChecked()); - cg.writeEntry("ArtsBell", ui.customBell->isChecked()); - cg.writePathEntry("ArtsBellFile", ui.soundEdit->text()); - - cg.writeEntry("VisibleBell", ui.visibleBell->isChecked()); - cg.writeEntry("VisibleBellInvert", ui.invertScreen->isChecked()); - cg.writeEntry("VisibleBellColor", ui.colorButton->color()); - - cg.writeEntry("VisibleBellPause", ui.duration->value()); - cg.sync(); - - KConfigGroup keyboardGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Keyboard"); - - keyboardGroup.writeEntry("StickyKeys", ui.stickyKeys->isChecked()); - keyboardGroup.writeEntry("StickyKeysLatch", ui.stickyKeysLock->isChecked()); - keyboardGroup.writeEntry("StickyKeysAutoOff", ui.stickyKeysAutoOff->isChecked()); - keyboardGroup.writeEntry("StickyKeysBeep", ui.stickyKeysBeep->isChecked()); - keyboardGroup.writeEntry("ToggleKeysBeep", ui.toggleKeysBeep->isChecked()); - keyboardGroup.writeEntry("kNotifyModifiers", ui.kNotifyModifiers->isChecked()); - - keyboardGroup.writeEntry("SlowKeys", ui.slowKeys->isChecked()); - keyboardGroup.writeEntry("SlowKeysDelay", ui.slowKeysDelay->value()); - keyboardGroup.writeEntry("SlowKeysPressBeep", ui.slowKeysPressBeep->isChecked()); - keyboardGroup.writeEntry("SlowKeysAcceptBeep", ui.slowKeysAcceptBeep->isChecked()); - keyboardGroup.writeEntry("SlowKeysRejectBeep", ui.slowKeysRejectBeep->isChecked()); - + KAccessSettings settings; + settings.setSystemBell(ui.systemBell->isChecked()); + settings.setArtsBell(ui.customBell->isChecked()); + settings.setArtsBellFile(ui.soundEdit->text()); + + settings.setVisibleBell(ui.visibleBell->isChecked()); + settings.setVisibleBellInvert(ui.invertScreen->isChecked()); + settings.setVisibleBellColor(ui.colorButton->color()); + + settings.setVisibleBellPause(ui.duration->value()); + + settings.setStickyKeys(ui.stickyKeys->isChecked()); + settings.setStickyKeysLatch(ui.stickyKeysLock->isChecked()); + settings.setStickyKeysAutoOff(ui.stickyKeysAutoOff->isChecked()); + settings.setStickyKeysBeep(ui.stickyKeysBeep->isChecked()); + settings.setToggleKeysBeep(ui.toggleKeysBeep->isChecked()); + settings.setKNotifyModifiers(ui.kNotifyModifiers->isChecked()); + + settings.setSlowKeys(ui.slowKeys->isChecked()); + settings.setSlowKeysDelay(ui.slowKeysDelay->value()); + settings.setSlowKeysPressBeep(ui.slowKeysPressBeep->isChecked()); + settings.setSlowKeysAcceptBeep(ui.slowKeysAcceptBeep->isChecked()); + settings.setSlowKeysRejectBeep(ui.slowKeysRejectBeep->isChecked()); + + settings.setBounceKeys(ui.bounceKeys->isChecked()); + settings.setBounceKeysDelay(ui.bounceKeysDelay->value()); + settings.setBounceKeysRejectBeep(ui.bounceKeysRejectBeep->isChecked()); + + settings.setGestures(ui.gestures->isChecked()); + settings.setAccessXTimeout(ui.timeout->isChecked()); + settings.setAccessXTimeoutDelay(ui.timeoutDelay->value()); + + settings.setAccessXBeep(ui.accessxBeep->isChecked()); + settings.setGestureConfirmation(ui.gestureConfirmation->isChecked()); + settings.setKNotifyAccess(ui.kNotifyAccess->isChecked()); - keyboardGroup.writeEntry("BounceKeys", ui.bounceKeys->isChecked()); - keyboardGroup.writeEntry("BounceKeysDelay", ui.bounceKeysDelay->value()); - keyboardGroup.writeEntry("BounceKeysRejectBeep", ui.bounceKeysRejectBeep->isChecked()); - - keyboardGroup.writeEntry("Gestures", ui.gestures->isChecked()); - keyboardGroup.writeEntry("AccessXTimeout", ui.timeout->isChecked()); - keyboardGroup.writeEntry("AccessXTimeoutDelay", ui.timeoutDelay->value()); - - keyboardGroup.writeEntry("AccessXBeep", ui.accessxBeep->isChecked()); - keyboardGroup.writeEntry("GestureConfirmation", ui.gestureConfirmation->isChecked()); - keyboardGroup.writeEntry("kNotifyAccess", ui.kNotifyAccess->isChecked()); - - - keyboardGroup.sync(); - - KConfigGroup mouseGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "Mouse"); const int interval = ui.mk_interval->value(); - mouseGroup.writeEntry("MouseKeys", ui.mouseKeys->isChecked()); - mouseGroup.writeEntry("MKDelay", ui.mk_delay->value()); - mouseGroup.writeEntry("MKInterval", interval); - mouseGroup.writeEntry("MK-TimeToMax", ui.mk_time_to_max->value()); - mouseGroup.writeEntry("MKTimeToMax", (ui.mk_time_to_max->value() + interval/2)/interval); - mouseGroup.writeEntry("MK-MaxSpeed", ui.mk_max_speed->value()); - mouseGroup.writeEntry("MKMaxSpeed", (ui.mk_max_speed->value()*interval + 500)/1000); - mouseGroup.writeEntry("MKCurve", ui.mk_curve->value()); - mouseGroup.sync(); - - KConfigGroup screenReaderGroup(KSharedConfig::openConfig(QStringLiteral("kaccessrc")), "ScreenReader"); - screenReaderGroup.writeEntry("Enabled", ui.screenReaderEnabled->isChecked()); + settings.setMouseKeys(ui.mouseKeys->isChecked()); + settings.setMKDelay(ui.mk_delay->value()); + settings.setMKInterval(interval); + settings.setMKDTimeToMax(ui.mk_time_to_max->value()); + settings.setMKTimeToMax((ui.mk_time_to_max->value() + interval/2)/interval); + settings.setMKDMaxSpeed(ui.mk_max_speed->value()); + settings.setMKMaxSpeed((ui.mk_max_speed->value()*interval + 500)/1000); + settings.setMKCurve(ui.mk_curve->value()); + + settings.setScreenReaderEnabled(ui.screenReaderEnabled->isChecked()); if (ui.systemBell->isChecked() || ui.customBell->isChecked() || @@ -447,6 +431,8 @@ cfg.sync(); } + settings.save(); + // make kaccess reread the configuration // turning a11y features off needs to be done by kaccess // so run it to clear any enabled features and it will exit if it should @@ -458,50 +444,51 @@ void KAccessConfig::defaults() { - ui.systemBell->setChecked(true); - ui.customBell->setChecked(false); + KAccessSettings settings; + + ui.systemBell->setChecked(settings.defaultSystemBellValue()); + ui.customBell->setChecked(settings.defaultArtsBellValue()); ui.soundEdit->setText(QString()); - ui.visibleBell->setChecked(false); - ui.invertScreen->setChecked(true); - ui.flashScreen->setChecked(false); - ui.colorButton->setColor(QColor(Qt::red)); - - ui.duration->setValue(500); - - ui.slowKeys->setChecked(false); - ui.slowKeysDelay->setValue(500); - ui.slowKeysPressBeep->setChecked(true); - ui.slowKeysAcceptBeep->setChecked(true); - ui.slowKeysRejectBeep->setChecked(true); - - ui.bounceKeys->setChecked(false); - ui.bounceKeysDelay->setValue(500); - ui.bounceKeysRejectBeep->setChecked(true); - - ui.stickyKeys->setChecked(false); - ui.stickyKeysLock->setChecked(true); - ui.stickyKeysAutoOff->setChecked(false); - ui.stickyKeysBeep->setChecked(true); - ui.toggleKeysBeep->setChecked(false); - ui.kNotifyModifiers->setChecked(false); - - ui.gestures->setChecked(false); - ui.timeout->setChecked(false); - ui.timeoutDelay->setValue(30); - - ui.accessxBeep->setChecked(true); - ui.gestureConfirmation->setChecked(true); - ui.kNotifyAccess->setChecked(false); - - ui.mouseKeys->setChecked(false); - ui.mk_delay->setValue(160); - ui.mk_interval->setValue(5); - ui.mk_time_to_max->setValue(5000); - ui.mk_max_speed->setValue(1000); - ui.mk_curve->setValue(0); - - ui.screenReaderEnabled->setChecked(false); + ui.visibleBell->setChecked(settings.defaultVisibleBellValue()); + ui.invertScreen->setChecked(settings.defaultVisibleBellInvertValue()); + ui.flashScreen->setChecked(!settings.defaultVisibleBellInvertValue()); + ui.colorButton->setColor(settings.defaultVisibleBellColorValue()); + ui.duration->setValue(settings.defaultVisibleBellPauseValue()); + + ui.slowKeys->setChecked(settings.defaultSlowKeysValue()); + ui.slowKeysDelay->setValue(settings.defaultSlowKeysDelayValue()); + ui.slowKeysPressBeep->setChecked(settings.defaultSlowKeysPressBeepValue()); + ui.slowKeysAcceptBeep->setChecked(settings.defaultSlowKeysAcceptBeepValue()); + ui.slowKeysRejectBeep->setChecked(settings.defaultSlowKeysRejectBeepValue()); + + ui.bounceKeys->setChecked(settings.defaultBounceKeysValue()); + ui.bounceKeysDelay->setValue(settings.defaultBounceKeysDelayValue()); + ui.bounceKeysRejectBeep->setChecked(settings.defaultBounceKeysRejectBeepValue()); + + ui.stickyKeys->setChecked(settings.defaultStickyKeysValue()); + ui.stickyKeysLock->setChecked(settings.defaultStickyKeysLatchValue()); + ui.stickyKeysAutoOff->setChecked(settings.defaultStickyKeysAutoOffValue()); + ui.stickyKeysBeep->setChecked(settings.defaultStickyKeysBeepValue()); + ui.toggleKeysBeep->setChecked(settings.defaultToggleKeysBeepValue()); + ui.kNotifyModifiers->setChecked(settings.defaultKNotifyModifiersValue()); + + ui.gestures->setChecked(settings.defaultGesturesValue()); + ui.timeout->setChecked(settings.defaultAccessXTimeoutValue()); + ui.timeoutDelay->setValue(settings.defaultAccessXTimeoutDelayValue()); + + ui.accessxBeep->setChecked(settings.defaultAccessXBeepValue()); + ui.gestureConfirmation->setChecked(settings.defaultGestureConfirmationValue()); + ui.kNotifyAccess->setChecked(settings.defaultKNotifyAccessValue()); + + ui.mouseKeys->setChecked(settings.defaultMouseKeysValue()); + ui.mk_delay->setValue(settings.defaultMKDelayValue()); + ui.mk_interval->setValue(settings.defaultMKIntervalValue()); + ui.mk_time_to_max->setValue(settings.defaultMKTimeToMaxValue()); + ui.mk_max_speed->setValue(settings.defaultMKMaxSpeedValue()); + ui.mk_curve->setValue(settings.defaultMKCurveValue()); + + ui.screenReaderEnabled->setChecked(settings.defaultScreenReaderEnabledValue()); checkAccess(); diff --git a/kcms/nightcolor/package/contents/ui/LocationsFixedView.qml b/kcms/nightcolor/package/contents/ui/LocationsFixedView.qml --- a/kcms/nightcolor/package/contents/ui/LocationsFixedView.qml +++ b/kcms/nightcolor/package/contents/ui/LocationsFixedView.qml @@ -25,6 +25,10 @@ Connections { target: root onReset: reset() + onDefaults: { + latitudeFixedField.backend = cA.latitudeFixedDefault; + longitudeFixedField.backend = cA.longitudeFixedDefault; + } } function reset() { diff --git a/kcms/nightcolor/package/contents/ui/main.qml b/kcms/nightcolor/package/contents/ui/main.qml --- a/kcms/nightcolor/package/contents/ui/main.qml +++ b/kcms/nightcolor/package/contents/ui/main.qml @@ -48,12 +48,30 @@ // Default was triggered, only allow a normal // configuration change again: defaultRequested = false; + + calcRepresentsDefault(); + } + function calcRepresentsDefault() { + // kcm.representsDefaults = true; + if (cA.nightColorAvailable) { + kcm.representsDefaults = activator.checked === cA.activeDefault && + tempSlider.value === cA.nightTemperatureDefault && + modeSwitcher.currentIndex === cA.modeDefault && + cA.latitudeFixedStaged === cA.latitudeFixedDefault && + cA.longitudeFixedStaged === cA.longitudeFixedDefault && + cA.morningBeginFixedStaged.toString() === cA.morningBeginFixedDefault.toString() && + cA.eveningBeginFixedStaged.toString() === cA.eveningBeginFixedDefault.toString() && + cA.transitionTimeStaged === cA.transitionTimeDefault; + } } Connections { target: kcm onLoadRelay: cA.reloadData() - onSaveRelay: defaultRequested ? cA.sendConfigurationAll() : cA.sendConfiguration(); + onSaveRelay: { + defaultRequested ? cA.sendConfigurationAll() : cA.sendConfiguration(); + calcRepresentsDefault(); + } onDefaultsRelay: { if (!cA.nightColorAvailable) { return; @@ -63,17 +81,19 @@ modeSwitcher.currentIndex = cA.modeDefault; // set everything else to default as well - cA.latitudeFixedStaged = cA.latitudeFixedDefault; - cA.longitudeFixedStaged = cA.longitudeFixedDefault; + defaults() - cA.morningBeginFixedStaged = cA.morningBeginFixedDefault; - cA.eveningBeginFixedStaged = cA.eveningBeginFixedDefault; - cA.transitionTimeStaged = cA.transitionTimeDefault; + mornBeginManField.backend = cA.morningBeginFixedDefault; + evenBeginManField.backend = cA.eveningBeginFixedDefault; + transTimeField.value = cA.transitionTimeStaged = cA.transitionTimeDefault; kcm.needsSave = cA.checkStagedAll(); defaultRequested = true; + + calcRepresentsDefault(); } } + signal defaults() Connections { target: cA @@ -220,7 +240,8 @@ visible: modeSwitcher.currentIndex === CC.CompositorAdaptor.ModeTimings Kirigami.FormData.label: i18n("Turn on at:") backend: cA.eveningBeginFixedStaged - onBackendChanged: {cA.eveningBeginFixedStaged = backend; + onBackendChanged: { + cA.eveningBeginFixedStaged = backend; calcNeedsSave(); } @@ -236,7 +257,8 @@ visible: modeSwitcher.currentIndex === CC.CompositorAdaptor.ModeTimings Kirigami.FormData.label: i18n("Turn off at:") backend: cA.morningBeginFixedStaged - onBackendChanged: {cA.morningBeginFixedStaged = backend; + onBackendChanged: { + cA.morningBeginFixedStaged = backend; calcNeedsSave(); }