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.abstractscrollarea;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.margins;
18 import qt.core.namespace;
19 import qt.core.object;
20 import qt.core.size;
21 import qt.gui.event;
22 import qt.helpers;
23 import qt.widgets.frame;
24 import qt.widgets.scrollbar;
25 import qt.widgets.widget;
26 
27 /+ #if QT_CONFIG(scrollarea) +/
28 
29 extern(C++, class) struct QAbstractScrollAreaPrivate;
30 
31 /// Binding for C++ class [QAbstractScrollArea](https://doc.qt.io/qt-6/qabstractscrollarea.html).
32 class /+ Q_WIDGETS_EXPORT +/ QAbstractScrollArea : QFrame
33 {
34     mixin(Q_OBJECT);
35 
36     /+ Q_PROPERTY(Qt::ScrollBarPolicy verticalScrollBarPolicy READ verticalScrollBarPolicy
37                WRITE setVerticalScrollBarPolicy)
38     Q_PROPERTY(Qt::ScrollBarPolicy horizontalScrollBarPolicy READ horizontalScrollBarPolicy
39                WRITE setHorizontalScrollBarPolicy)
40     Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy) +/
41 
42 public:
43     /+ explicit +/this(QWidget parent = null);
44     ~this();
45 
46     enum SizeAdjustPolicy {
47         AdjustIgnored,
48         AdjustToContentsOnFirstShow,
49         AdjustToContents
50     }
51     /+ Q_ENUM(SizeAdjustPolicy) +/
52 
53     final /+ Qt:: +/qt.core.namespace.ScrollBarPolicy verticalScrollBarPolicy() const;
54     final void setVerticalScrollBarPolicy(/+ Qt:: +/qt.core.namespace.ScrollBarPolicy);
55     final QScrollBar verticalScrollBar() const;
56     final void setVerticalScrollBar(QScrollBar scrollbar);
57 
58     final /+ Qt:: +/qt.core.namespace.ScrollBarPolicy horizontalScrollBarPolicy() const;
59     final void setHorizontalScrollBarPolicy(/+ Qt:: +/qt.core.namespace.ScrollBarPolicy);
60     final QScrollBar horizontalScrollBar() const;
61     final void setHorizontalScrollBar(QScrollBar scrollbar);
62 
63     final QWidget cornerWidget() const;
64     final void setCornerWidget(QWidget widget);
65 
66     final void addScrollBarWidget(QWidget widget, /+ Qt:: +/qt.core.namespace.Alignment alignment);
67     final QWidgetList scrollBarWidgets(/+ Qt:: +/qt.core.namespace.Alignment alignment);
68 
69     final QWidget viewport() const;
70     final void setViewport(QWidget widget);
71     final QSize maximumViewportSize() const;
72 
73     override QSize minimumSizeHint() const;
74 
75     override QSize sizeHint() const;
76 
77     /+ virtual +/ void setupViewport(QWidget viewport);
78 
79     final SizeAdjustPolicy sizeAdjustPolicy() const;
80     final void setSizeAdjustPolicy(SizeAdjustPolicy policy);
81 
82 protected:
83     this(ref QAbstractScrollAreaPrivate dd, QWidget parent = null);
84     final void setViewportMargins(int left, int top, int right, int bottom);
85     final void setViewportMargins(ref const(QMargins) margins);
86     final QMargins viewportMargins() const;
87 
88     override bool eventFilter(QObject , QEvent );
89     override bool event(QEvent );
90     /+ virtual +/ bool viewportEvent(QEvent );
91 
92     override void resizeEvent(QResizeEvent );
93     override void paintEvent(QPaintEvent );
94     override void mousePressEvent(QMouseEvent );
95     override void mouseReleaseEvent(QMouseEvent );
96     override void mouseDoubleClickEvent(QMouseEvent );
97     override void mouseMoveEvent(QMouseEvent );
98 /+ #if QT_CONFIG(wheelevent) +/
99     override void wheelEvent(QWheelEvent );
100 /+ #endif
101 #ifndef QT_NO_CONTEXTMENU +/
102     version(QT_NO_CONTEXTMENU){}else
103     {
104         override void contextMenuEvent(QContextMenuEvent );
105     }
106 /+ #endif
107 #if QT_CONFIG(draganddrop) +/
108     override void dragEnterEvent(QDragEnterEvent );
109     override void dragMoveEvent(QDragMoveEvent );
110     override void dragLeaveEvent(QDragLeaveEvent );
111     override void dropEvent(QDropEvent );
112 /+ #endif +/
113 
114     override void keyPressEvent(QKeyEvent );
115 
116     /+ virtual +/ void scrollContentsBy(int dx, int dy);
117 
118     /+ virtual +/ QSize viewportSizeHint() const;
119 
120 private:
121     /+ Q_DECLARE_PRIVATE(QAbstractScrollArea) +/
122     /+ Q_DISABLE_COPY(QAbstractScrollArea) +/
123     /+ Q_PRIVATE_SLOT(d_func(), void _q_hslide(int))
124     Q_PRIVATE_SLOT(d_func(), void _q_vslide(int))
125     Q_PRIVATE_SLOT(d_func(), void _q_showOrHideScrollBars()) +/
126 
127     /+ friend class QStyleSheetStyle; +/
128     /+ friend class QWidgetPrivate; +/
129     mixin(CREATE_CONVENIENCE_WRAPPERS);
130 }
131 
132 /+ #endif +/ // QT_CONFIG(scrollarea)
133