diff --git a/libkcups/KCupsConnection.cpp b/libkcups/KCupsConnection.cpp --- a/libkcups/KCupsConnection.cpp +++ b/libkcups/KCupsConnection.cpp @@ -858,7 +858,6 @@ const char * password_cb(const char *prompt, http_t *http, const char *method, const char *resource, void *user_data) { - Q_UNUSED(prompt) Q_UNUSED(http) Q_UNUSED(method) Q_UNUSED(resource) @@ -872,6 +871,9 @@ auto passwordDialog = static_cast(user_data); bool wrongPassword = password_retries > 1; + // use prompt text from CUPS callback for dialog + passwordDialog->setPromptText(i18n("A CUPS connection requires authentication: \"") + QString::fromUtf8(prompt) + QStringLiteral("\"")); + // This will block this thread until exec is not finished qCDebug(LIBKCUPS) << password_retries; QMetaObject::invokeMethod(passwordDialog, diff --git a/libkcups/KCupsPasswordDialog.h b/libkcups/KCupsPasswordDialog.h --- a/libkcups/KCupsPasswordDialog.h +++ b/libkcups/KCupsPasswordDialog.h @@ -30,6 +30,7 @@ public: explicit KCupsPasswordDialog(QObject *parent = nullptr); void setMainWindow(WId mainwindow); + void setPromptText(const QString &promptText); public slots: void exec(const QString &username, bool wrongPassword); @@ -43,6 +44,7 @@ WId m_mainwindow; QString m_username; QString m_password; + QString m_promptText; }; #endif // KCUPSPASSWORDDIALOG_H diff --git a/libkcups/KCupsPasswordDialog.cpp b/libkcups/KCupsPasswordDialog.cpp --- a/libkcups/KCupsPasswordDialog.cpp +++ b/libkcups/KCupsPasswordDialog.cpp @@ -31,19 +31,26 @@ KCupsPasswordDialog::KCupsPasswordDialog(QObject *parent) : QObject(parent), m_accepted(false), - m_mainwindow(0) + m_mainwindow(0), + // default text, can be overriden using setPromptText() + m_promptText(i18n("Enter an username and a password to complete the task")) { } void KCupsPasswordDialog::setMainWindow(WId mainwindow) { m_mainwindow = mainwindow; } +void KCupsPasswordDialog::setPromptText(const QString &text) +{ + m_promptText = text; +} + void KCupsPasswordDialog::exec(const QString &username, bool wrongPassword) { QPointer dialog = new KPasswordDialog(nullptr, KPasswordDialog::ShowUsernameLine); - dialog->setPrompt(i18n("Enter an username and a password to complete the task")); + dialog->setPrompt(m_promptText); dialog->setModal(false); dialog->setUsername(username); if (wrongPassword) {