PlasmaActivities

activityinfo.cpp
1/*
2 SPDX-FileCopyrightText: 2012, 2013, 2014, 2015 Ivan Cukic <ivan.cukic(at)kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7// Self
8#include "activityinfo.h"
9
10namespace KActivities
11{
12namespace Imports
13{
14ActivityInfo::ActivityInfo(QObject *parent)
15 : QObject(parent)
16 , m_showCurrentActivity(false)
17{
18 connect(&m_service, &KActivities::Controller::currentActivityChanged, this, &ActivityInfo::setCurrentActivity);
19}
20
21ActivityInfo::~ActivityInfo()
22{
23}
24
25void ActivityInfo::setCurrentActivity(const QString &id)
26{
27 if (!m_showCurrentActivity) {
28 return;
29 }
30
31 setIdInternal(id);
32
33 Q_EMIT nameChanged(m_info->name());
34 Q_EMIT descriptionChanged(m_info->description());
35 Q_EMIT iconChanged(m_info->icon());
36}
37
38void ActivityInfo::setActivityId(const QString &id)
39{
40 m_showCurrentActivity = (id == QLatin1String(":current"));
41
42 setIdInternal(m_showCurrentActivity ? m_service.currentActivity() : id);
43}
44
45void ActivityInfo::setIdInternal(const QString &id)
46{
47 using namespace KActivities;
48
49 // We are killing the old info object, if any
50 m_info.reset(new KActivities::Info(id));
51
52 auto ptr = m_info.get();
53
54 connect(ptr, &Info::nameChanged, this, &ActivityInfo::nameChanged);
55 connect(ptr, &Info::descriptionChanged, this, &ActivityInfo::descriptionChanged);
56 connect(ptr, &Info::iconChanged, this, &ActivityInfo::iconChanged);
57}
58// clang-format off
59#define CREATE_GETTER_AND_SETTER(WHAT, What) \
60 QString ActivityInfo::What() const \
61 { \
62 return m_info ? m_info->What() : QString(); \
63 } \
64 \
65 void ActivityInfo::set##WHAT(const QString &value) \
66 { \
67 if (!m_info) \
68 return; \
69 \
70 m_service.setActivity##WHAT(m_info->id(), value); \
71 }
72// clang-format on
73
74CREATE_GETTER_AND_SETTER(Name, name)
75CREATE_GETTER_AND_SETTER(Description, description)
76CREATE_GETTER_AND_SETTER(Icon, icon)
77
78#undef CREATE_GETTER_AND_SETTER
79
80QString ActivityInfo::activityId() const
81{
82 return m_info ? m_info->id() : QString();
83}
84
85bool ActivityInfo::valid() const
86{
87 return true;
88}
89
90} // namespace Imports
91} // namespace KActivities
92
93#include "moc_activityinfo.cpp"
void currentActivityChanged(const QString &id)
This signal is emitted when the current activity is changed.
Namespace for everything in libkactivities.
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Feb 28 2025 12:01:06 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.