File indexing completed on 2024-04-28 05:26:12

0001 /*
0002  *   SPDX-FileCopyrightText: 2010 Alejandro Fiestas Olivares <alex@eyeos.org>
0003  *   SPDX-FileCopyrightText: 2010 Eduardo Robles Elvira <edulix@gmail.com>
0004  *   SPDX-FileCopyrightText: 2010 UFO Coders <info@ufocoders.com>
0005  *   SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com>
0006  *
0007  *   SPDX-License-Identifier: GPL-2.0-or-later
0008  */
0009 
0010 #include "requestconfirmation.h"
0011 #include "bluedevil_kded.h"
0012 
0013 #include <KLocalizedString>
0014 #include <KNotification>
0015 
0016 RequestConfirmation::RequestConfirmation(BluezQt::DevicePtr device, const QString &pin, QObject *parent)
0017     : QObject(parent)
0018     , m_device(device)
0019     , m_pin(pin)
0020 {
0021     KNotification *notification = new KNotification(QStringLiteral("RequestConfirmation"), KNotification::Persistent, this);
0022 
0023     notification->setComponentName(QStringLiteral("bluedevil"));
0024     notification->setTitle(QStringLiteral("%1 (%2)").arg(m_device->name().toHtmlEscaped(), m_device->address()));
0025     notification->setText(
0026         i18nc("The text is shown in a notification to know if the PIN is correct,"
0027               "%1 is the remote bluetooth device and %2 is the pin",
0028               "%1 is asking if the PIN is correct: %2",
0029               m_device->name().toHtmlEscaped(),
0030               m_pin));
0031 
0032     auto correctAction = notification->addAction(i18nc("Notification button to know if the pin is correct or not", "PIN correct"));
0033     auto incorrectAction = notification->addAction(i18nc("Notification button to say that the PIN is wrong", "PIN incorrect"));
0034 
0035     connect(correctAction, &KNotificationAction::activated, this, &RequestConfirmation::pinCorrect);
0036     connect(incorrectAction, &KNotificationAction::activated, this, &RequestConfirmation::pinWrong);
0037     connect(notification, &KNotification::closed, this, &RequestConfirmation::pinWrong);
0038     connect(notification, &KNotification::ignored, this, &RequestConfirmation::pinWrong);
0039     connect(parent, SIGNAL(agentCanceled()), this, SLOT(pinWrong()));
0040 
0041     notification->sendEvent();
0042 }
0043 
0044 void RequestConfirmation::pinCorrect()
0045 {
0046     qCDebug(BLUEDEVIL_KDED_LOG) << "PIN correct:" << m_device->name() << m_device->address();
0047 
0048     deleteLater();
0049     Q_EMIT done(Accept);
0050 }
0051 
0052 void RequestConfirmation::pinWrong()
0053 {
0054     qCDebug(BLUEDEVIL_KDED_LOG) << "PIN wrong:" << m_device->name() << m_device->address();
0055 
0056     deleteLater();
0057     Q_EMIT done(Deny);
0058 }
0059 
0060 #include "moc_requestconfirmation.cpp"