1 /* 2 * Copyright (C) 2020 Damir Porobic <damir.porobic@gmx.com> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef KIMAGEANNOTATOR_LISTMENUITEM_H 21 #define KIMAGEANNOTATOR_LISTMENUITEM_H 22 23 #include <QWidget> 24 #include <QStyleOptionMenuItem> 25 #include <QPaintEvent> 26 #include <QMouseEvent> 27 28 #include "src/common/provider/ScaledSizeProvider.h" 29 30 namespace kImageAnnotator { 31 32 class ListMenuItem : public QWidget 33 { 34 Q_OBJECT 35 public: 36 explicit ListMenuItem(const QIcon &icon, const QString &text, const QVariant &data, QWidget *parent); 37 ~ListMenuItem() override = default; 38 QVariant data() const; 39 QIcon icon() const; 40 QString text() const; 41 QSize minimumSizeHint() const override; 42 bool isChecked() const; 43 void setIsChecked(bool isChecked); 44 45 signals: 46 void toggled(bool isChecked); 47 48 protected: 49 void paintEvent(QPaintEvent* event) override; 50 void mouseMoveEvent(QMouseEvent *event) override; 51 void leaveEvent(QEvent *event) override; 52 void mouseReleaseEvent(QMouseEvent* event) override; 53 54 private: 55 QString mText; 56 QIcon mIcon; 57 bool mIsChecked; 58 QVariant mData; 59 QSize mIconSize; 60 QSize mTextSize; 61 QPoint mIconOffset; 62 QPoint mTextOffset; 63 int mMargin; 64 int mSpacer; 65 QSize mSize; 66 }; 67 68 } // namespace kImageAnnotator 69 70 #endif //KIMAGEANNOTATOR_LISTMENUITEM_H 71