File indexing completed on 2024-04-14 15:37:16

0001 /*
0002 *  Copyright 2017-2018 Michail Vourlakos <mvourlakos@gmail.com>
0003 *
0004 *  This file is part of Latte-Dock
0005 *
0006 *  Latte-Dock is free software; you can redistribute it and/or
0007 *  modify it under the terms of the GNU General Public License as
0008 *  published by the Free Software Foundation; either version 2 of
0009 *  the License, or (at your option) any later version.
0010 *
0011 *  Latte-Dock is distributed in the hope that it will be useful,
0012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 *  GNU General Public License for more details.
0015 *
0016 *  You should have received a copy of the GNU General Public License
0017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 #ifndef ACTIVITIESDELEGATE_H
0021 #define ACTIVITIESDELEGATE_H
0022 
0023 // Qt
0024 #include <QItemDelegate>
0025 
0026 class QModelIndex;
0027 class QWidget;
0028 class QVariant;
0029 
0030 namespace Latte {
0031 class SettingsDialog;
0032 }
0033 
0034 class ActivitiesDelegate : public QItemDelegate
0035 {
0036     Q_OBJECT
0037 public:
0038     ActivitiesDelegate(QObject *parent);
0039 
0040     QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
0041     void setEditorData(QWidget *editor, const QModelIndex &index) const;
0042     void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
0043     void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
0044     void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
0045 
0046 private:
0047     void updateButton(QWidget *editor) const;
0048 
0049     QString joinedActivities(const QStringList &activities, bool boldForActive = true) const;
0050 
0051 private:
0052     Latte::SettingsDialog *m_settingsDialog{nullptr};
0053 
0054 };
0055 
0056 #endif