//=========================================== // 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 #include #include #include #include #include #include #include #include #include #include #include #include #include class ItemWidget : public QFrame{ Q_OBJECT public: //Overloaded Constructors for various uses // - Favorites (path/type) ItemWidget(QWidget *parent=0, QString itemPath="", QString type="unknown", bool goback=false); // - Generic Apps ItemWidget(QWidget *parent=0, XDGDesktop *item=0); ~ItemWidget(); bool gooditem; void triggerItem(); //trigger this item - just as if it was clicked on private: QToolButton *actButton; QMenu *contextMenu; QLabel *icon, *name; bool isDirectory, isShortcut, menuopen; QString linkPath, iconPath, text; QTimer *menureset; void createWidget(); void setupContextMenu(); void setupActions(XDGDesktop*); void updateItems(); //update the text/icon to match sizes private slots: void PinToDesktop(); void RemoveFavorite(); void AddFavorite(); void RemoveQL(); void AddQL(); 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 && !icon->whatsThis().startsWith("chcat::::") ){ menuopen = true; setupContextMenu(); contextMenu->popup(event->globalPos()); }else if(event->button() != Qt::NoButton){ ItemClicked(); } } void resizeEvent(QResizeEvent *ev){ updateItems(); //update the sizing of everything QFrame::resizeEvent(ev); // do the normal procedures } signals: void NewShortcut(); void RemovedShortcut(); void RunItem(QString cmd); void toggleQuickLaunch(QString path, bool ok); }; #endif