2018-02-03 15:00:44 +02:00
/*
* Copyright 2018 Michail Vourlakos < mvourlakos @ gmail . com >
*
* This file is part of Latte - Dock
*
* Latte - Dock is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation ; either version 2 of
* the License , or ( at your option ) any later version .
*
* Latte - Dock is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
2018-12-02 00:53:40 +02:00
# ifndef CONTEXTMENU_H
# define CONTEXTMENU_H
2018-02-03 15:00:44 +02:00
2018-12-02 02:05:52 +02:00
// Qt
2018-02-03 15:00:44 +02:00
# include <QEvent>
# include <QMenu>
# include <QMetaMethod>
# include <QQuickItem>
# include <QMouseEvent>
# include <QObject>
namespace Plasma {
class Applet ;
class Containment ;
}
namespace Latte {
2018-12-06 12:15:58 +02:00
class View ;
2018-02-03 15:00:44 +02:00
}
namespace Latte {
2018-12-06 11:37:14 +02:00
namespace ViewPart {
2018-02-03 15:00:44 +02:00
2018-12-02 00:53:40 +02:00
class ContextMenu : public QObject
2018-07-03 22:15:45 +03:00
{
2018-02-03 15:00:44 +02:00
Q_OBJECT
public :
2018-12-06 12:15:58 +02:00
ContextMenu ( Latte : : View * view ) ;
2018-12-02 00:53:40 +02:00
~ ContextMenu ( ) override ;
2018-02-03 15:00:44 +02:00
2018-12-02 00:53:40 +02:00
QMenu * menu ( ) ;
2018-02-03 15:00:44 +02:00
bool mousePressEvent ( QMouseEvent * event ) ;
signals :
2018-12-02 00:53:40 +02:00
void menuChanged ( ) ;
2018-02-03 15:00:44 +02:00
private slots :
void menuAboutToHide ( ) ;
private :
void addAppletActions ( QMenu * desktopMenu , Plasma : : Applet * applet , QEvent * event ) ;
void addContainmentActions ( QMenu * desktopMenu , QEvent * event ) ;
void updateAppletContainsMethod ( ) ;
Plasma : : Containment * containmentById ( uint id ) ;
private :
QMenu * m_contextMenu { nullptr } ;
QMetaMethod m_appletContainsMethod ;
QQuickItem * m_appletContainsMethodItem { nullptr } ;
2018-12-06 12:51:15 +02:00
Latte : : View * m_latteView ;
2018-02-03 15:00:44 +02:00
2018-12-06 12:15:58 +02:00
friend class Latte : : View ;
2018-02-03 15:00:44 +02:00
} ;
2018-12-02 00:53:40 +02:00
}
2018-02-03 15:00:44 +02:00
}
# endif // DOCKMENUMANAGER_H