1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.widgets.listview;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.abstractitemmodel;
17 import qt.core.coreevent;
18 import qt.core.itemselectionmodel;
19 import qt.core.list;
20 import qt.core.namespace;
21 import qt.core.point;
22 import qt.core.rect;
23 import qt.core.size;
24 import qt.gui.event;
25 import qt.gui.region;
26 import qt.helpers;
27 import qt.widgets.abstractitemview;
28 import qt.widgets.styleoption;
29 import qt.widgets.widget;
30 
31 /+ QT_REQUIRE_CONFIG(listview); +/
32 
33 
34 extern(C++, class) struct QListViewPrivate;
35 
36 /// Binding for C++ class [QListView](https://doc.qt.io/qt-6/qlistview.html).
37 class /+ Q_WIDGETS_EXPORT +/ QListView : QAbstractItemView
38 {
39     mixin(Q_OBJECT);
40     /+ Q_PROPERTY(Movement movement READ movement WRITE setMovement)
41     Q_PROPERTY(Flow flow READ flow WRITE setFlow)
42     Q_PROPERTY(bool isWrapping READ isWrapping WRITE setWrapping)
43     Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
44     Q_PROPERTY(LayoutMode layoutMode READ layoutMode WRITE setLayoutMode)
45     Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
46     Q_PROPERTY(QSize gridSize READ gridSize WRITE setGridSize)
47     Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode)
48     Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn)
49     Q_PROPERTY(bool uniformItemSizes READ uniformItemSizes WRITE setUniformItemSizes)
50     Q_PROPERTY(int batchSize READ batchSize WRITE setBatchSize)
51     Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap)
52     Q_PROPERTY(bool selectionRectVisible READ isSelectionRectVisible WRITE setSelectionRectVisible)
53     Q_PROPERTY(Qt::Alignment itemAlignment READ itemAlignment WRITE setItemAlignment) +/
54 
55 public:
56     enum Movement { Static, Free, Snap }
57     /+ Q_ENUM(Movement) +/
58     enum Flow { LeftToRight, TopToBottom }
59     /+ Q_ENUM(Flow) +/
60     enum ResizeMode { Fixed, Adjust }
61     /+ Q_ENUM(ResizeMode) +/
62     enum LayoutMode { SinglePass, Batched }
63     /+ Q_ENUM(LayoutMode) +/
64     enum ViewMode { ListMode, IconMode }
65     /+ Q_ENUM(ViewMode) +/
66 
67     /+ explicit +/this(QWidget parent = null);
68     ~this();
69 
70     final void setMovement(Movement movement);
71     final Movement movement() const;
72 
73     final void setFlow(Flow flow);
74     final Flow flow() const;
75 
76     final void setWrapping(bool enable);
77     final bool isWrapping() const;
78 
79     final void setResizeMode(ResizeMode mode);
80     final ResizeMode resizeMode() const;
81 
82     final void setLayoutMode(LayoutMode mode);
83     final LayoutMode layoutMode() const;
84 
85     final void setSpacing(int space);
86     final int spacing() const;
87 
88     final void setBatchSize(int batchSize);
89     final int batchSize() const;
90 
91     final void setGridSize(ref const(QSize) size);
92     final QSize gridSize() const;
93 
94     final void setViewMode(ViewMode mode);
95     final ViewMode viewMode() const;
96 
97     final void clearPropertyFlags();
98 
99     final bool isRowHidden(int row) const;
100     final void setRowHidden(int row, bool hide);
101 
102     final void setModelColumn(int column);
103     final int modelColumn() const;
104 
105     final void setUniformItemSizes(bool enable);
106     final bool uniformItemSizes() const;
107 
108     final void setWordWrap(bool on);
109     final bool wordWrap() const;
110 
111     final void setSelectionRectVisible(bool show);
112     final bool isSelectionRectVisible() const;
113 
114     final void setItemAlignment(/+ Qt:: +/qt.core.namespace.Alignment alignment);
115     final /+ Qt:: +/qt.core.namespace.Alignment itemAlignment() const;
116 
117     override QRect visualRect(ref const(QModelIndex) index) const;
118     override void scrollTo(ref const(QModelIndex) index, ScrollHint hint = ScrollHint.EnsureVisible);
119     override QModelIndex indexAt(ref const(QPoint) p) const;
120 
121     override void doItemsLayout();
122     override void reset();
123     override void setRootIndex(ref const(QModelIndex) index);
124 
125 /+ Q_SIGNALS +/public:
126     @QSignal final void indexesMoved(ref const(QModelIndexList) indexes);
127 
128 protected:
129     this(ref QListViewPrivate , QWidget parent = null);
130 
131     override bool event(QEvent e);
132 
133     override void scrollContentsBy(int dx, int dy);
134 
135     final void resizeContents(int width, int height);
136     final QSize contentsSize() const;
137 
138     override void dataChanged(ref const(QModelIndex) topLeft, ref const(QModelIndex) bottomRight,
139                          ref const(QList!(int)) roles = globalInitVar!(QList!(int)));
140     override void rowsInserted(ref const(QModelIndex) parent, int start, int end);
141     override void rowsAboutToBeRemoved(ref const(QModelIndex) parent, int start, int end);
142 
143     override void mouseMoveEvent(QMouseEvent e);
144     override void mouseReleaseEvent(QMouseEvent e);
145 /+ #if QT_CONFIG(wheelevent) +/
146     override void wheelEvent(QWheelEvent e);
147 /+ #endif +/
148 
149     override void timerEvent(QTimerEvent e);
150     override void resizeEvent(QResizeEvent e);
151 /+ #if QT_CONFIG(draganddrop) +/
152     override void dragMoveEvent(QDragMoveEvent e);
153     override void dragLeaveEvent(QDragLeaveEvent e);
154     override void dropEvent(QDropEvent e);
155     override void startDrag(/+ Qt:: +/qt.core.namespace.DropActions supportedActions);
156 /+ #endif +/ // QT_CONFIG(draganddrop)
157 
158     override void initViewItemOption(QStyleOptionViewItem* option) const;
159     override void paintEvent(QPaintEvent e);
160 
161     override int horizontalOffset() const;
162     override int verticalOffset() const;
163     override QModelIndex moveCursor(CursorAction cursorAction, /+ Qt:: +/qt.core.namespace.KeyboardModifiers modifiers);
164     final QRect rectForIndex(ref const(QModelIndex) index) const;
165     final void setPositionForIndex(ref const(QPoint) position, ref const(QModelIndex) index);
166 
167     override void setSelection(ref const(QRect) rect, QItemSelectionModel.SelectionFlags command);
168     override QRegion visualRegionForSelection(ref const(QItemSelection) selection) const;
169     override QModelIndexList selectedIndexes() const;
170 
171     override void updateGeometries();
172 
173     override bool isIndexHidden(ref const(QModelIndex) index) const;
174 
175     override void selectionChanged(ref const(QItemSelection) selected, ref const(QItemSelection) deselected);
176     override void currentChanged(ref const(QModelIndex) current, ref const(QModelIndex) previous);
177 
178     override QSize viewportSizeHint() const;
179 
180 private:
181     final int visualIndex(ref const(QModelIndex) index) const;
182     /+ friend class QCommonListViewBase; +/
183 
184     /+ Q_DECLARE_PRIVATE(QListView) +/
185     /+ Q_DISABLE_COPY(QListView) +/
186     mixin(CREATE_CONVENIENCE_WRAPPERS);
187 }
188