File indexing completed on 2023-09-24 08:19:50
0001 /* ============================================================ 0002 * 0003 * This file is a part of KDE project 0004 * 0005 * 0006 * Date : 2009-07-05 0007 * Description : A combobox delegate to display in image lists. 0008 * 0009 * Copyright (C) 2009 by Pieter Edelman <pieter dot edelman at gmx dot net> 0010 * 0011 * This program is free software; you can redistribute it 0012 * and/or modify it under the terms of the GNU General 0013 * Public License as published by the Free Software Foundation; 0014 * either version 2, or (at your option) any later version. 0015 * 0016 * This program is distributed in the hope that it will be useful, 0017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0019 * GNU General Public License for more details. 0020 * 0021 * ============================================================ */ 0022 0023 #ifndef COMBOBOXDELEGATE_H 0024 #define COMBOBOXDELEGATE_H 0025 0026 // Qt includes 0027 0028 #include <QAbstractItemDelegate> 0029 #include <QAbstractItemModel> 0030 #include <QMap> 0031 #include <QModelIndex> 0032 #include <QPainter> 0033 #include <QSize> 0034 #include <QString> 0035 #include <QStyleOptionViewItem> 0036 #include <QWidget> 0037 0038 // Local includes 0039 0040 #include "kpimageslist.h" 0041 0042 using namespace KIPIPlugins; 0043 0044 namespace KIPIFlickrPlugin 0045 { 0046 0047 class ComboBoxDelegate : public QAbstractItemDelegate 0048 { 0049 Q_OBJECT 0050 0051 public: 0052 0053 ComboBoxDelegate(KPImagesList* const, const QMap<int, QString>&); 0054 0055 /* Whenever an element needs to be edited, this method should be called. 0056 * It's actually a hack to prevent the item text shining through whenever 0057 * editing occurs. 0058 */ 0059 void startEditing(QTreeWidgetItem*, int); 0060 0061 /* Overloaded functions to provide the delegate functionality. 0062 */ 0063 void paint(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const override; 0064 QSize sizeHint(const QStyleOptionViewItem&, const QModelIndex&) const override; 0065 QWidget* createEditor(QWidget*, const QStyleOptionViewItem&, const QModelIndex&) const override; 0066 void setEditorData(QWidget*, const QModelIndex&) const override; 0067 void setModelData(QWidget*, QAbstractItemModel*, const QModelIndex&) const override; 0068 0069 private Q_SLOTS: 0070 0071 void slotCommitAndCloseEditor(int); 0072 void slotResetEditedState(QObject*); 0073 0074 private: 0075 0076 KPImagesList* m_parent; 0077 QMap<int, QString> m_items; 0078 0079 /* The row in the view that is currently being edited. Should be -1 to 0080 * indicate that no row is edited. */ 0081 int m_rowEdited; 0082 0083 QSize m_size; 0084 }; 0085 0086 } // namespace KIPIFlickrPlugin 0087 0088 #endif /* COMBOBOXDELEGATE_H */