File indexing completed on 2024-04-21 16:17:15

0001 /*
0002 *  Copyright 2019  Michail Vourlakos <mvourlakos@gmail.com>
0003 *
0004 *  This file is part of Latte-Dock
0005 *
0006 *  Latte-Dock is free software; you can redistribute it and/or
0007 *  modify it under the terms of the GNU General Public License as
0008 *  published by the Free Software Foundation; either version 2 of
0009 *  the License, or (at your option) any later version.
0010 *
0011 *  Latte-Dock is distributed in the hope that it will be useful,
0012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 *  GNU General Public License for more details.
0015 *
0016 *  You should have received a copy of the GNU General Public License
0017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 #ifndef VIEWCONTAINMENTINTERFACE_H
0021 #define VIEWCONTAINMENTINTERFACE_H
0022 
0023 // Qt
0024 #include <QMetaMethod>
0025 #include <QObject>
0026 #include <QPointer>
0027 #include <QQuickItem>
0028 
0029 namespace Latte {
0030 class Corona;
0031 class View;
0032 }
0033 
0034 namespace Latte {
0035 namespace ViewPart {
0036 
0037 class ContainmentInterface: public QObject
0038 {
0039     Q_OBJECT
0040 
0041 public:
0042     ContainmentInterface(Latte::View *parent);
0043     virtual ~ContainmentInterface();
0044 
0045     bool applicationLauncherInPopup() const;
0046     bool applicationLauncherHasGlobalShortcut() const;
0047     bool containsApplicationLauncher() const;
0048     bool isCapableToShowShortcutBadges();
0049 
0050     bool activateEntry(const int index);
0051     bool newInstanceForEntry(const int index);
0052 
0053     bool activatePlasmaTask(const int index);
0054     bool newInstanceForPlasmaTask(const int index);
0055 
0056     bool hideShortcutBadges();
0057     bool showOnlyMeta();
0058     bool showShortcutBadges(const bool showLatteShortcuts, const bool showMeta);
0059 
0060     //! this is updated from external apps e.g. a thunderbird plugin
0061     bool updateBadgeForLatteTask(const QString identifier, const QString value);
0062 
0063     int applicationLauncherId() const;
0064     int appletIdForIndex(const int index);
0065 
0066 private slots:
0067     void identifyMainItem();
0068     void identifyMethods();
0069 
0070 private:
0071     QMetaMethod m_activateEntryMethod;
0072     QMetaMethod m_appletIdForIndexMethod;
0073     QMetaMethod m_newInstanceMethod;
0074     QMetaMethod m_showShortcutsMethod;
0075 
0076     QPointer<Latte::Corona> m_corona;
0077     QPointer<Latte::View> m_view;
0078     QPointer<QQuickItem> m_mainItem;
0079 };
0080 
0081 }
0082 }
0083 
0084 #endif