diff --git a/kded/passworddialog.cpp b/kded/passworddialog.cpp --- a/kded/passworddialog.cpp +++ b/kded/passworddialog.cpp @@ -69,6 +69,19 @@ connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &PasswordDialog::accept); connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &PasswordDialog::reject); + connect(m_ui->password, &PasswordField::textChanged, [this](const QString &text){ + NetworkManager::WirelessSecuritySetting::Ptr wirelessSecuritySetting = + m_connectionSettings->setting(NetworkManager::Setting::WirelessSecurity).staticCast(); + if (m_connectionSettings->connectionType() == NetworkManager::ConnectionSettings::Wireless + && wirelessSecuritySetting + && wirelessSecuritySetting->keyMgmt() == NetworkManager::WirelessSecuritySetting::WpaPsk) { + if (text.length() < 8) { + m_ui->buttonBox->setStandardButtons(QDialogButtonBox::Cancel); + } else { + m_ui->buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + } + } + }); if (m_connectionSettings->connectionType() != NetworkManager::ConnectionSettings::Vpn) { NetworkManager::Setting::Ptr setting = m_connectionSettings->setting(m_settingName);