File indexing completed on 2024-05-12 17:08:58
0001 /* 0002 SPDX-FileCopyrightText: 2009 Chani Armitage <chani@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "switch.h" 0008 0009 #include <QApplication> 0010 0011 #include <QAction> 0012 #include <QDebug> 0013 0014 #include <Plasma/Containment> 0015 #include <Plasma/Corona> 0016 #include <Plasma/DataEngine> 0017 #include <Plasma/ServiceJob> 0018 0019 Q_DECLARE_METATYPE(QWeakPointer<Plasma::Containment>) 0020 0021 SwitchActivity::SwitchActivity(QObject *parent, const QVariantList &args) 0022 : Plasma::ContainmentActions(parent, args) 0023 { 0024 } 0025 0026 SwitchActivity::~SwitchActivity() 0027 { 0028 } 0029 0030 void SwitchActivity::makeMenu() 0031 { 0032 qDeleteAll(m_actions); 0033 m_actions.clear(); 0034 foreach (const QString &id, m_consumer.activities(KActivities::Info::Running)) { 0035 KActivities::Info info(id); 0036 QAction *action = new QAction(QIcon::fromTheme(info.icon()), info.name(), this); 0037 action->setData(id); 0038 0039 if (id == m_consumer.currentActivity()) { 0040 QFont font = action->font(); 0041 font.setBold(true); 0042 action->setFont(font); 0043 } 0044 0045 connect(action, &QAction::triggered, [=]() { 0046 switchTo(action); 0047 }); 0048 0049 m_actions << action; 0050 } 0051 } 0052 0053 QList<QAction *> SwitchActivity::contextualActions() 0054 { 0055 makeMenu(); 0056 0057 return m_actions; 0058 } 0059 0060 void SwitchActivity::switchTo(QAction *action) 0061 { 0062 if (!action) { 0063 return; 0064 } 0065 0066 m_controller.setCurrentActivity(action->data().toString()); 0067 } 0068 0069 void SwitchActivity::performNextAction() 0070 { 0071 const QStringList activities = m_consumer.activities(KActivities::Info::Running); 0072 0073 int i = activities.indexOf(m_consumer.currentActivity()); 0074 0075 i = (i + 1) % activities.size(); 0076 m_controller.setCurrentActivity(activities[i]); 0077 } 0078 0079 void SwitchActivity::performPreviousAction() 0080 { 0081 const QStringList activities = m_consumer.activities(KActivities::Info::Running); 0082 0083 int i = activities.indexOf(m_consumer.currentActivity()); 0084 0085 i = (i + activities.size() - 1) % activities.size(); 0086 m_controller.setCurrentActivity(activities[i]); 0087 } 0088 0089 K_PLUGIN_CLASS_WITH_JSON(SwitchActivity, "plasma-containmentactions-switchactivity.json") 0090 0091 #include "switch.moc"