diff options
author | Ken Moore <moorekou@gmail.com> | 2015-09-10 12:38:20 -0400 |
---|---|---|
committer | Ken Moore <moorekou@gmail.com> | 2015-09-10 12:38:20 -0400 |
commit | 86543e806e27b8317eddce54fee9e0b04a031b51 (patch) | |
tree | 5f9046202839cbc6dc7b9b2aa9d6ad088ed811f9 /lumina-desktop/panel-plugins/systemstart/ItemWidget.h | |
parent | Merge pull request #154 from harcobbit/issue/11233 (diff) | |
download | lumina-86543e806e27b8317eddce54fee9e0b04a031b51.tar.gz lumina-86543e806e27b8317eddce54fee9e0b04a031b51.tar.bz2 lumina-86543e806e27b8317eddce54fee9e0b04a031b51.zip |
Add a new panel plugin: systemstart
This plugins is an overall "start" menu for the system, combining the functionality of the userbutton and the system dashboard into a single unified interface.
Diffstat (limited to 'lumina-desktop/panel-plugins/systemstart/ItemWidget.h')
-rw-r--r-- | lumina-desktop/panel-plugins/systemstart/ItemWidget.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/lumina-desktop/panel-plugins/systemstart/ItemWidget.h b/lumina-desktop/panel-plugins/systemstart/ItemWidget.h new file mode 100644 index 00000000..6aa8b037 --- /dev/null +++ b/lumina-desktop/panel-plugins/systemstart/ItemWidget.h @@ -0,0 +1,80 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2014-2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This item widget manages a single file/directory +//=========================================== +#ifndef _LUMINA_PANEL_SYSTEM_START_ITEM_WIDGET_H +#define _LUMINA_PANEL_SYSTEM_START_ITEM_WIDGET_H + +#include <QFrame> +#include <QLabel> +#include <QToolButton> +#include <QString> +#include <QHBoxLayout> +#include <QSize> +#include <QDir> +#include <QFile> +#include <QMouseEvent> +#include <QAction> +#include <QMenu> +#include <QTimer> + +#include <LuminaXDG.h> + +class ItemWidget : public QFrame{ + Q_OBJECT +public: + ItemWidget(QWidget *parent=0, QString itemPath="", QString type="unknown", bool goback=false); + ItemWidget(QWidget *parent=0, XDGDesktop item= XDGDesktop()); + ~ItemWidget(); + + bool gooditem; +private: + QToolButton *actButton; + QMenu *contextMenu; + QLabel *icon, *name; + bool isDirectory, isShortcut, menuopen; + QString linkPath; + QTimer *menureset; + + void createWidget(); + //void setupButton(bool disable = false); + void setupContextMenu(); + void setupActions(XDGDesktop); + +private slots: + void PinToDesktop(); + void RemoveFavorite(); + void AddFavorite(); + void ItemClicked(); + void actionClicked(QAction*); + //Functions to fix the submenu open/close issues + void actionMenuOpen(){ + if(menureset->isActive()){ menureset->stop(); } + menuopen = true; + } + void resetmenuflag(){ menuopen = false; } //tied to the "menureset" timer + void actionMenuClosed(){ menureset->start(); } + + +protected: + void mouseReleaseEvent(QMouseEvent *event){ + if(menuopen){ resetmenuflag(); } //skip this event if a submenu was open + else if(event->button() == Qt::RightButton){ + menuopen = true; + setupContextMenu(); + contextMenu->popup(event->globalPos()); + }else if(event->button() != Qt::NoButton){ ItemClicked(); } + } + +signals: + void NewShortcut(); + void RemovedShortcut(); + void RunItem(QString cmd); + +}; + +#endif |