1 /*
2     SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "serviceoperationstatus.h"
8 
ServiceOperationStatus(QObject * parent)9 ServiceOperationStatus::ServiceOperationStatus(QObject *parent)
10     : QObject(parent)
11     , m_enabled(false)
12 {
13 }
14 
~ServiceOperationStatus()15 ServiceOperationStatus::~ServiceOperationStatus()
16 {
17 }
18 
setService(Plasma::Service * service)19 void ServiceOperationStatus::setService(Plasma::Service *service)
20 {
21     if (m_service.data() == service) {
22         return;
23     }
24 
25     if (m_service) {
26         disconnect(m_service.data(), nullptr, this, nullptr);
27     }
28     if (service) {
29         connect(service, &Plasma::Service::operationEnabledChanged, this, &ServiceOperationStatus::updateStatus);
30     }
31 
32     m_service = service;
33     updateStatus();
34     Q_EMIT serviceChanged();
35 }
36 
service() const37 Plasma::Service *ServiceOperationStatus::service() const
38 {
39     return m_service.data();
40 }
41 
setOperation(const QString & operation)42 void ServiceOperationStatus::setOperation(const QString &operation)
43 {
44     if (m_operation == operation) {
45         return;
46     }
47 
48     m_operation = operation;
49     updateStatus();
50     Q_EMIT operationChanged();
51 }
52 
operation() const53 QString ServiceOperationStatus::operation() const
54 {
55     return m_operation;
56 }
57 
setEnabled(bool enabled)58 void ServiceOperationStatus::setEnabled(bool enabled)
59 {
60     if (m_enabled == enabled) {
61         return;
62     }
63 
64     m_enabled = enabled;
65     updateStatus();
66     Q_EMIT enabledChanged();
67 }
68 
isEnabled() const69 bool ServiceOperationStatus::isEnabled() const
70 {
71     return m_enabled;
72 }
73 
updateStatus()74 void ServiceOperationStatus::updateStatus()
75 {
76     if (!m_service) {
77         return;
78     }
79 
80     bool enabled = m_service.data()->isOperationEnabled(m_operation);
81     if (enabled != m_enabled) {
82         m_enabled = enabled;
83         Q_EMIT enabledChanged();
84     }
85 }
86