File indexing completed on 2024-05-12 05:37:16
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 #include <QFont> 0014 0015 #include <Plasma/Containment> 0016 #include <Plasma/Corona> 0017 0018 SwitchActivity::SwitchActivity(QObject *parent, const QVariantList &args) 0019 : Plasma::ContainmentActions(parent, args) 0020 { 0021 } 0022 0023 SwitchActivity::~SwitchActivity() 0024 { 0025 } 0026 0027 void SwitchActivity::makeMenu() 0028 { 0029 qDeleteAll(m_actions); 0030 m_actions.clear(); 0031 foreach (const QString &id, m_consumer.activities(KActivities::Info::Running)) { 0032 KActivities::Info info(id); 0033 QAction *action = new QAction(QIcon::fromTheme(info.icon()), info.name(), this); 0034 action->setData(id); 0035 0036 if (id == m_consumer.currentActivity()) { 0037 QFont font = action->font(); 0038 font.setBold(true); 0039 action->setFont(font); 0040 } 0041 0042 connect(action, &QAction::triggered, [=, this]() { 0043 switchTo(action); 0044 }); 0045 0046 m_actions << action; 0047 } 0048 } 0049 0050 QList<QAction *> SwitchActivity::contextualActions() 0051 { 0052 makeMenu(); 0053 0054 return m_actions; 0055 } 0056 0057 void SwitchActivity::switchTo(QAction *action) 0058 { 0059 if (!action) { 0060 return; 0061 } 0062 0063 m_controller.setCurrentActivity(action->data().toString()); 0064 } 0065 0066 void SwitchActivity::performNextAction() 0067 { 0068 const QStringList activities = m_consumer.activities(KActivities::Info::Running); 0069 0070 int i = activities.indexOf(m_consumer.currentActivity()); 0071 0072 i = (i + 1) % activities.size(); 0073 m_controller.setCurrentActivity(activities[i]); 0074 } 0075 0076 void SwitchActivity::performPreviousAction() 0077 { 0078 const QStringList activities = m_consumer.activities(KActivities::Info::Running); 0079 0080 int i = activities.indexOf(m_consumer.currentActivity()); 0081 0082 i = (i + activities.size() - 1) % activities.size(); 0083 m_controller.setCurrentActivity(activities[i]); 0084 } 0085 0086 K_PLUGIN_CLASS_WITH_JSON(SwitchActivity, "plasma-containmentactions-switchactivity.json") 0087 0088 #include "switch.moc"