File indexing completed on 2024-10-06 13:22:24

0001 /*
0002 *  Copyright 2017  Smith AR <audoban@openmailbox.org>
0003 *                  Michail Vourlakos <mvourlakos@gmail.com>
0004 *
0005 *  This file is part of Latte-Dock
0006 *
0007 *  Latte-Dock is free software; you can redistribute it and/or
0008 *  modify it under the terms of the GNU General Public License as
0009 *  published by the Free Software Foundation; either version 2 of
0010 *  the License, or (at your option) any later version.
0011 *
0012 *  Latte-Dock is distributed in the hope that it will be useful,
0013 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0014 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0015 *  GNU General Public License for more details.
0016 *
0017 *  You should have received a copy of the GNU General Public License
0018 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 
0021 #ifndef LAUNCHERSSIGNALS_H
0022 #define LAUNCHERSSIGNALS_H
0023 
0024 // local
0025 #include "../liblatte2/types.h"
0026 
0027 // Qt
0028 #include <QObject>
0029 
0030 namespace Plasma {
0031 class Applet;
0032 }
0033 
0034 namespace Latte {
0035 namespace Layouts {
0036 class Manager;
0037 }
0038 }
0039 
0040 namespace Latte {
0041 namespace Layouts {
0042 
0043 //! in order to support property the launcher groups Layout and Global
0044 //! the latte plasmoids must communicate between them with signals when
0045 //! there are changes in their models. This way we are trying to avoid
0046 //! crashes that occur by setting the launcherList of the tasksModel so
0047 //! often. The plasma devs of libtaskmanager have designed the launchers
0048 //! model to be initialized only once during startup
0049 class LaunchersSignals : public QObject
0050 {
0051     Q_OBJECT
0052 
0053 public:
0054     LaunchersSignals(QObject *parent);
0055     ~LaunchersSignals() override;
0056 
0057 public slots:
0058     Q_INVOKABLE void addLauncher(QString layoutName, int launcherGroup, QString launcher);
0059     Q_INVOKABLE void removeLauncher(QString layoutName, int launcherGroup, QString launcher);
0060     Q_INVOKABLE void addLauncherToActivity(QString layoutName, int launcherGroup, QString launcher, QString activity);
0061     Q_INVOKABLE void removeLauncherFromActivity(QString layoutName, int launcherGroup, QString launcher, QString activity);
0062     Q_INVOKABLE void urlsDropped(QString layoutName, int launcherGroup, QStringList urls);
0063     //!Deprecated because it could create crashes, validateLaunchersOrder provides a better approach
0064     Q_INVOKABLE void moveTask(QString layoutName, int senderId, int launcherGroup, int from, int to);
0065     Q_INVOKABLE void validateLaunchersOrder(QString layoutName, int senderId, int launcherGroup, QStringList launchers);
0066 
0067 private:
0068     QList<Plasma::Applet *> lattePlasmoids(QString layoutName);
0069 
0070 private:
0071     Layouts::Manager *m_manager{nullptr};
0072 };
0073 
0074 }
0075 }
0076 
0077 #endif