diff -Nur kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp kcm-touchpad-0.3.1/kcmtouchpad.cpp --- kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp 2010-04-24 00:21:40.000000000 +0200 +++ kcm-touchpad-0.3.1/kcmtouchpad.cpp 2010-04-24 00:49:46.345242942 +0200 @@ -176,6 +176,17 @@ } } +const void* TouchpadConfig::get_parameter(const char* name) +{ + const void* result = Touchpad::get_parameter(name); + if (!result) { + setup_failed = true; + setEnabled(false); + } + + return result; +} + /* * This function is called when loading module. * It loads configuration from file "kcmtouchpadrc". @@ -190,64 +201,134 @@ // loads every entry of configuration and sets corresponding widget // when configuration doesn't exist collect actual value from driver + const void* value; + if (this->propertiesList.contains(SYNAPTICS_PROP_OFF)) { - ui->TouchpadOnRB->setChecked(!config.readEntry("TouchpadOff", !(int)*(char*)Touchpad::get_parameter("TouchpadOff"))); - ui->TouchpadOffWOMoveCB->setCheckState(config.readEntry("TouchpadOff", (int)*(char*)Touchpad::get_parameter("TouchpadOff")) == 2 ? Qt::Checked : Qt::Unchecked); + value = get_parameter("TouchpadOff"); + if (!value) return; + ui->TouchpadOnRB->setChecked(!config.readEntry("TouchpadOff", !(int)*(char*)value)); + + value = get_parameter("TouchpadOff"); + if (!value) return; + ui->TouchpadOffWOMoveCB->setCheckState(config.readEntry("TouchpadOff", (int)*(char*)value) == 2 ? Qt::Checked : Qt::Unchecked); } //ui->SmartModeEnableCB->setCheckState(config.readEntry("SmartModeEnabled", false) ? Qt::Checked : Qt::Unchecked); //ui->SmartModeDelayS->setValue(config.readEntry("SmartModeDelay", 1000)); if (this->propertiesList.contains(SYNAPTICS_PROP_FINGER)) { - ui->SensitivityValueS->setValue(config.readEntry("FingerLow", *(int*)Touchpad::get_parameter("FingerLow") / 10)); + value = get_parameter("FingerLow"); + if (!value) return; + ui->SensitivityValueS->setValue(config.readEntry("FingerLow", *(int*)value / 10)); } if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_EDGE)) { - ui->ScrollVertEnableCB->setCheckState(config.readEntry("VertEdgeScroll", (int)*(char*)Touchpad::get_parameter("VertEdgeScroll")) ? Qt::Checked : Qt::Unchecked); - ui->ScrollHorizEnableCB->setCheckState(config.readEntry("HorizEdgeScroll", (int)*(char*)Touchpad::get_parameter("HorizEdgeScroll")) ? Qt::Checked : Qt::Unchecked); + value = get_parameter("VertEdgeScroll"); + if (!value) return; + ui->ScrollVertEnableCB->setCheckState(config.readEntry("VertEdgeScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); + + value = get_parameter("HorizEdgeScroll"); + if (!value) return; + ui->ScrollHorizEnableCB->setCheckState(config.readEntry("HorizEdgeScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); + if (this->propertiesList.contains(SYNAPTICS_PROP_COASTING_SPEED)) { - ui->ScrollCoastingCornerEnableCB->setCheckState(config.readEntry("CornerCoasting", (int)*(char*)Touchpad::get_parameter("CornerCoasting")) ? Qt::Checked : Qt::Unchecked); + value = get_parameter("CornerCoasting"); + if (!value) return; + ui->ScrollCoastingCornerEnableCB->setCheckState(config.readEntry("CornerCoasting", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); } } if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_DISTANCE)) { - ui->ScrollVertSpeedS->setValue(config.readEntry("VertScrollDelta", *(int*)Touchpad::get_parameter("VertScrollDelta"))); - ui->ScrollHorizSpeedS->setValue(config.readEntry("HorizScrollDelta", *(int*)Touchpad::get_parameter("HorizScrollDelta"))); + value = get_parameter("VertScrollDelta"); + if (!value) return; + ui->ScrollVertSpeedS->setValue(config.readEntry("VertScrollDelta", *(int*)value)); + + value = get_parameter("HorizScrollDelta"); + if (!value) return; + ui->ScrollHorizSpeedS->setValue(config.readEntry("HorizScrollDelta", *(int*)value)); } if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_TWOFINGER)) { - ui->ScrollVertTFEnableCB->setCheckState(config.readEntry("VertTwoFingerScroll", (int)*(char*)Touchpad::get_parameter("VertTwoFingerScroll")) ? Qt::Checked : Qt::Unchecked); - ui->ScrollHorizTFEnableCB->setCheckState(config.readEntry("HorizTwoFingerScroll", (int)*(char*)Touchpad::get_parameter("HorizTwoFingerScroll")) ? Qt::Checked : Qt::Unchecked); + value = get_parameter("VertTwoFingerScroll"); + if (!value) return; + ui->ScrollVertTFEnableCB->setCheckState(config.readEntry("VertTwoFingerScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); + + value = get_parameter("HorizTwoFingerScroll"); + if (!value) return; + ui->ScrollHorizTFEnableCB->setCheckState(config.readEntry("HorizTwoFingerScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); } if (this->propertiesList.contains(SYNAPTICS_PROP_COASTING_SPEED)) { - ui->ScrollCoastingEnableCB->setCheckState(config.readEntry("CoastingSpeed", *(double*)Touchpad::get_parameter("CoastingSpeed")) ? Qt::Checked : Qt::Unchecked); - ui->ScrollCoastingSpeedS->setValue(config.readEntry("CoastingSpeed", *(double*)Touchpad::get_parameter("CoastingSpeed")) * 100.0f); + value = get_parameter("CoastingSpeed"); + if (!value) return; + ui->ScrollCoastingEnableCB->setCheckState(config.readEntry("CoastingSpeed", *(double*)value) ? Qt::Checked : Qt::Unchecked); + + value = get_parameter("CoastingSpeed"); + if (!value) return; + ui->ScrollCoastingSpeedS->setValue(config.readEntry("CoastingSpeed", *(double*)value) * 100.0f); } if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING)) { - ui->ScrollCircularEnableCB->setCheckState(config.readEntry("CircularScrolling", (int)*(char*)Touchpad::get_parameter("CircularScrolling")) ? Qt::Checked : Qt::Unchecked); + value = get_parameter("CircularScrolling"); + if (!value) return; + ui->ScrollCircularEnableCB->setCheckState(config.readEntry("CircularScrolling", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked); } if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST)) { - ui->ScrollCircularSpeedS->setValue(config.readEntry("CircScrollDelta", *(double*)Touchpad::get_parameter("CircScrollDelta"))); + value = get_parameter("CircScrollDelta"); + if (!value) return; + ui->ScrollCircularSpeedS->setValue(config.readEntry("CircScrollDelta", *(double*)value)); } if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER)) { - ui->ScrollCircularCornersCBB->setCurrentIndex(config.readEntry("CircScrollTrigger", (int)*(char*)Touchpad::get_parameter("CircScrollTrigger"))); + value = get_parameter("CircScrollTrigger"); + if (!value) return; + ui->ScrollCircularCornersCBB->setCurrentIndex(config.readEntry("CircScrollTrigger", (int)*(char*)value)); } if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_TIME)) { - ui->TappingEnableCB->setCheckState(config.readEntry("MaxTapTime", *(int*)Touchpad::get_parameter("MaxTapTime")) ? Qt::Checked : Qt::Unchecked); + value = get_parameter("MaxTapTime"); + if (!value) return; + ui->TappingEnableCB->setCheckState(config.readEntry("MaxTapTime", *(int*)value) ? Qt::Checked : Qt::Unchecked); } if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_MOVE)) { - ui->TappingMaxMoveValueS->setValue(config.readEntry("MaxTapMove", *(int*)Touchpad::get_parameter("MaxTapMove"))); + value = get_parameter("MaxTapMove"); + if (!value) return; + ui->TappingMaxMoveValueS->setValue(config.readEntry("MaxTapMove", *(int*)value)); } if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_DURATIONS)) { - ui->TappingTimeoutValueS->setValue(config.readEntry("SingleTapTimeout", *(int*)Touchpad::get_parameter("SingleTapTimeout"))); - ui->TappingDoubleTimeValueS->setValue(config.readEntry("MaxDoubleTapTime", *(int*)Touchpad::get_parameter("MaxDoubleTapTime"))); - ui->TappingClickTimeValueS->setValue(config.readEntry("ClickTime", *(int*)Touchpad::get_parameter("ClickTime"))); + value = get_parameter("SingleTapTimeout"); + if (!value) return; + ui->TappingTimeoutValueS->setValue(config.readEntry("SingleTapTimeout", *(int*)value)); + + value = get_parameter("MaxDoubleTapTime"); + if (!value) return; + ui->TappingDoubleTimeValueS->setValue(config.readEntry("MaxDoubleTapTime", *(int*)value)); + + value = get_parameter("ClickTime"); + if (!value) return; + ui->TappingClickTimeValueS->setValue(config.readEntry("ClickTime", *(int*)value)); } if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_ACTION)) { - tappingButtonsMap[Synaptics::OneFinger] = config.readEntry("TapButton1", (int)*(char*)Touchpad::get_parameter("TapButton1")); - tappingButtonsMap[Synaptics::TwoFingers] = config.readEntry("TapButton2", (int)*(char*)Touchpad::get_parameter("TapButton2")); - tappingButtonsMap[Synaptics::ThreeFingers] = config.readEntry("TapButton3", (int)*(char*)Touchpad::get_parameter("TapButton3")); - tappingButtonsMap[Synaptics::RightTop] = config.readEntry("RTCornerButton", (int)*(char*)Touchpad::get_parameter("RTCornerButton")); - tappingButtonsMap[Synaptics::RightBottom] = config.readEntry("RBCornerButton", (int)*(char*)Touchpad::get_parameter("RBCornerButton")); - tappingButtonsMap[Synaptics::LeftTop] = config.readEntry("LTCornerButton", (int)*(char*)Touchpad::get_parameter("LTCornerButton")); - tappingButtonsMap[Synaptics::LeftBottom] = config.readEntry("LBCornerButton", (int)*(char*)Touchpad::get_parameter("LBCornerButton")); + value = get_parameter("TapButton1"); + if (!value) return; + tappingButtonsMap[Synaptics::OneFinger] = config.readEntry("TapButton1", (int)*(char*)value); + + value = get_parameter("TapButton2"); + if (!value) return; + tappingButtonsMap[Synaptics::TwoFingers] = config.readEntry("TapButton2", (int)*(char*)value); + + value = get_parameter("TapButton3"); + if (!value) return; + tappingButtonsMap[Synaptics::ThreeFingers] = config.readEntry("TapButton3", (int)*(char*)value); + + value = get_parameter("RTCornerButton"); + if (!value) return; + tappingButtonsMap[Synaptics::RightTop] = config.readEntry("RTCornerButton", (int)*(char*)value); + + value = get_parameter("RBCornerButton"); + if (!value) return; + tappingButtonsMap[Synaptics::RightBottom] = config.readEntry("RBCornerButton", (int)*(char*)value); + + value = get_parameter("LTCornerButton"); + if (!value) return; + tappingButtonsMap[Synaptics::LeftTop] = config.readEntry("LTCornerButton", (int)*(char*)value); + + value = get_parameter("LBCornerButton"); + if (!value) return; + tappingButtonsMap[Synaptics::LeftBottom] = config.readEntry("LBCornerButton", (int)*(char*)value); } } diff -Nur kcm-touchpad-0.3.1.orig/kcmtouchpad.h kcm-touchpad-0.3.1/kcmtouchpad.h --- kcm-touchpad-0.3.1.orig/kcmtouchpad.h 2010-01-12 14:02:07.000000000 +0100 +++ kcm-touchpad-0.3.1/kcmtouchpad.h 2010-04-24 00:57:57.305243725 +0200 @@ -56,6 +56,7 @@ bool apply(); static void applySensitivity(int val); void enableProperties(); + const void* get_parameter(const char* name); Ui_TouchpadConfigWidget* ui;