File indexing completed on 2024-04-14 15:49:49

0001 // SPDX-License-Identifier: GPL-3.0-or-later
0002 /*
0003   Copyright 2017 Martin Koller, kollix@aon.at
0004 
0005   This file is part of liquidshell.
0006 
0007   liquidshell is free software: you can redistribute it and/or modify
0008   it under the terms of the GNU General Public License as published by
0009   the Free Software Foundation, either version 3 of the License, or
0010   (at your option) any later version.
0011 
0012   liquidshell 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 liquidshell.  If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 
0021 #ifndef _StartMenu_H_
0022 #define _StartMenu_H_
0023 
0024 #include <QToolButton>
0025 #include <QMenu>
0026 
0027 #include <KServiceGroup>
0028 
0029 #include <DesktopPanel.hxx>
0030 
0031 class StartMenu : public QToolButton
0032 {
0033   Q_OBJECT
0034 
0035   Q_PROPERTY(QString themeIcon READ getThemeIcon WRITE setThemeIcon)
0036 
0037   public:
0038     StartMenu(DesktopPanel *parent);
0039 
0040     QString getThemeIcon() const { return themeIcon; }
0041     void setThemeIcon(const QString &icon);
0042 
0043   protected:
0044     void contextMenuEvent(QContextMenuEvent *event) override;
0045 
0046   private Q_SLOTS:
0047     void adjustIconSize();
0048     void fill();
0049     void showMenu();
0050 
0051   private:
0052     void fillFromGroup(QMenu *menu, KServiceGroup::Ptr group);
0053 
0054   private:
0055     QString themeIcon;
0056     QMenu *popup;
0057 };
0058 
0059 #endif