/usr/include/kwidgetitemdelegate.h is in kdelibs5-dev 4:4.14.2-5+deb8u2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | /**
* This file is part of the KDE project
* Copyright (C) 2007-2008 Rafael Fernández López <ereslibre@kde.org>
* Copyright (C) 2008 Kevin Ottens <ervin@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KWIDGETITEMDELEGATE_H
#define KWIDGETITEMDELEGATE_H
#include <QtCore/QEvent>
#include <QtCore/QList>
#include <QtCore/QPersistentModelIndex>
#include <QtGui/QAbstractItemDelegate>
#include <kdeui_export.h>
class QObject;
class QPainter;
class QStyleOption;
class QStyleOptionViewItem;
class QAbstractItemView;
class QItemSelection;
class KWidgetItemDelegatePrivate;
class KWidgetItemDelegatePool;
/**
* This class allows to create item delegates embedding simple widgets to interact
* with items. For instance you can add push buttons, line edits, etc. to your delegate
* and use them to modify the state of your model.
*
* @since 4.1
*/
class KDEUI_EXPORT KWidgetItemDelegate : public QAbstractItemDelegate
{
Q_OBJECT
public:
/**
* Creates a new ItemDelegate to be used with a given itemview.
*
* @param itemView the item view the new delegate will monitor
* @param parent the parent of this delegate
*/
explicit KWidgetItemDelegate(QAbstractItemView *itemView, QObject *parent = 0);
/**
* Destroys an ItemDelegate.
*/
virtual ~KWidgetItemDelegate();
/**
* Retrieves the item view this delegate is monitoring.
*
* @return the item view this delegate is monitoring
*/
QAbstractItemView *itemView() const;
/**
* Retrieves the currently focused index. An invalid index if none is focused.
*
* @return the current focused index, or QPersistentModelIndex() if none is focused.
*/
QPersistentModelIndex focusedIndex() const;
protected:
/**
* Creates the list of widgets needed for an item.
*
* @note No initialization of the widgets is supposed to happen here.
* The widgets will be initialized based on needs for a given item.
*
* @note If you want to connect some widget signals to any slot, you should
* do it here.
*
* @note If you want to know the index for which you are creating widgets, it is
* available as a QModelIndex Q_PROPERTY called "goya:creatingWidgetsForIndex".
* Ensure to add Q_DECLARE_METATYPE(QModelIndex) before your method definition
* to tell QVariant about QModelIndex.
*
* @return the list of newly created widgets which will be used to interact with an item.
* @see updateItemWidgets()
*/
virtual QList<QWidget*> createItemWidgets() const = 0;
/**
* Updates a list of widgets for its use inside of the delegate (painting or
* event handling).
*
* @note All the positioning and sizing should be done in item coordinates.
*
* @warning Do not make widget connections in here, since this method will
* be called very regularly.
*
* @param widgets the widgets to update
* @param option the current set of style options for the view.
* @param index the model index of the item currently manipulated.
*/
virtual void updateItemWidgets(const QList<QWidget*> widgets,
const QStyleOptionViewItem &option,
const QPersistentModelIndex &index) const = 0;
/**
* Paint the widgets of the item. This method is meant to be used in the paint()
* method of your item delegate implementation.
*
* @param painter the painter the widgets will be painted on.
* @param option the current set of style options for the view.
* @param index the model index of the item currently painted.
*
* @warning since 4.2 this method is not longer needed to be called. All widgets will kept
* updated without the need of calling paintWidgets() in your paint() event. For the
* widgets of a certain index to be updated your model has to emit dataChanged() on the
* indexes that want to be updated.
*/
#ifndef KDE_NO_DEPRECATED
KDE_DEPRECATED void paintWidgets(QPainter *painter, const QStyleOptionViewItem &option,
const QPersistentModelIndex &index) const;
#endif
/**
* Sets the list of event @p types that a @p widget will block.
*
* Blocked events are not passed to the view. This way you can prevent an item
* from being selected when a button is clicked for instance.
*
* @param widget the widget which must block events
* @param types the list of event types the widget must block
*/
void setBlockedEventTypes(QWidget *widget, QList<QEvent::Type> types) const;
/**
* Retrieves the list of blocked event types for the given widget.
*
* @param widget the specified widget.
*
* @return the list of blocked event types, can be empty if no events are blocked.
*/
QList<QEvent::Type> blockedEventTypes(QWidget *widget) const;
private:
//@cond PRIVATE
friend class KWidgetItemDelegatePool;
friend class KWidgetItemDelegateEventListener;
KWidgetItemDelegatePrivate *const d;
Q_PRIVATE_SLOT(d, void _k_slotRowsInserted(const QModelIndex&,int,int))
Q_PRIVATE_SLOT(d, void _k_slotRowsAboutToBeRemoved(const QModelIndex&,int,int))
Q_PRIVATE_SLOT(d, void _k_slotRowsRemoved(const QModelIndex&,int,int))
Q_PRIVATE_SLOT(d, void _k_slotDataChanged(const QModelIndex&,const QModelIndex&))
Q_PRIVATE_SLOT(d, void _k_slotLayoutChanged())
Q_PRIVATE_SLOT(d, void _k_slotModelReset())
Q_PRIVATE_SLOT(d, void _k_slotSelectionChanged(const QItemSelection&,const QItemSelection&))
//@endcond
};
#endif
|