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.treewidgetitemiterator;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.flags;
17 import qt.core.scopedpointer;
18 import qt.helpers;
19 import qt.widgets.treewidget;
20 
21 /+ QT_REQUIRE_CONFIG(treewidget); +/
22 
23 
24 extern(C++, class) struct QTreeModel;
25 
26 extern(C++, class) struct QTreeWidgetItemIteratorPrivate;
27 /// Binding for C++ class [QTreeWidgetItemIterator](https://doc.qt.io/qt-6/qtreewidgetitemiterator.html).
28 extern(C++, class) struct /+ Q_WIDGETS_EXPORT +/ QTreeWidgetItemIterator
29 {
30 private:
31     /+ friend class QTreeModel; +/
32 
33 public:
34     enum IteratorFlag {
35         All           = 0x00000000,
36         Hidden        = 0x00000001,
37         NotHidden     = 0x00000002,
38         Selected      = 0x00000004,
39         Unselected    = 0x00000008,
40         Selectable    = 0x00000010,
41         NotSelectable = 0x00000020,
42         DragEnabled   = 0x00000040,
43         DragDisabled  = 0x00000080,
44         DropEnabled   = 0x00000100,
45         DropDisabled  = 0x00000200,
46         HasChildren   = 0x00000400,
47         NoChildren    = 0x00000800,
48         Checked       = 0x00001000,
49         NotChecked    = 0x00002000,
50         Enabled       = 0x00004000,
51         Disabled      = 0x00008000,
52         Editable      = 0x00010000,
53         NotEditable   = 0x00020000,
54         UserFlag      = 0x01000000 // The first flag that can be used by the user.
55     }
56     /+ Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) +/
57 alias IteratorFlags = QFlags!(IteratorFlag);
58     @disable this(this);
59     this(ref const(QTreeWidgetItemIterator) it);
60     /+ explicit +/this(QTreeWidget widget, IteratorFlags flags = IteratorFlag.All);
61     /+ explicit +/this(QTreeWidgetItem item, IteratorFlags flags = IteratorFlag.All);
62     ~this();
63 
64     /+ref QTreeWidgetItemIterator operator =(ref const(QTreeWidgetItemIterator) it);+/
65 
66     ref QTreeWidgetItemIterator opUnary(string op)() if(op == "++");
67     /+pragma(inline, true) const(QTreeWidgetItemIterator) operator ++(int)
68     {
69         QTreeWidgetItemIterator it = this;
70         ++(this);
71         return it;
72     }+/
73     pragma(inline, true) ref QTreeWidgetItemIterator opOpAssign(string op)(int n) if(op == "+")
74     {
75         if (n < 0)
76             return (this) -= (-n);
77         while (current && n--)
78             ++(this);
79         return this;
80     }
81 
82     ref QTreeWidgetItemIterator opUnary(string op)() if(op == "--");
83     /+pragma(inline, true) const(QTreeWidgetItemIterator) operator --(int)
84     {
85         QTreeWidgetItemIterator it = this;
86         --(this);
87         return it;
88     }+/
89     pragma(inline, true) ref QTreeWidgetItemIterator opOpAssign(string op)(int n) if(op == "-")
90     {
91         if (n < 0)
92             return (this) += (-n);
93         while (current && n--)
94             --(this);
95         return this;
96     }
97 
98     pragma(inline, true) QTreeWidgetItem opUnary(string op)() const if(op == "*")
99     {
100         return current;
101     }
102 
103 private:
104     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
105     bool matchesFlags(const(QTreeWidgetItem) item) const;
106     }));
107     QScopedPointer!(QTreeWidgetItemIteratorPrivate) d_ptr;
108     QTreeWidgetItem current;
109     IteratorFlags flags;
110     /+ Q_DECLARE_PRIVATE(QTreeWidgetItemIterator) +/
111     mixin(CREATE_CONVENIENCE_WRAPPERS);
112 }
113 /+pragma(inline, true) QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) operator |(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/{return QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type)(f1)|f2;}+/
114 /+pragma(inline, true) QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) operator |(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/
115 /+pragma(inline, true) QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) operator &(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/{return QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type)(f1)&f2;}+/
116 /+pragma(inline, true) QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) operator &(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/
117 /+pragma(inline, true) void operator +(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
118 /+pragma(inline, true) void operator +(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
119 /+pragma(inline, true) void operator +(int f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
120 /+pragma(inline, true) void operator -(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
121 /+pragma(inline, true) void operator -(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
122 /+pragma(inline, true) void operator -(int f1, QFlags!(QTreeWidgetItemIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
123 /+pragma(inline, true) QIncompatibleFlag operator |(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
124 /+pragma(inline, true) void operator +(int f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
125 /+pragma(inline, true) void operator +(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/;+/
126 /+pragma(inline, true) void operator -(int f1, QTreeWidgetItemIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
127 /+pragma(inline, true) void operator -(QTreeWidgetItemIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/;+/
128 
129 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QTreeWidgetItemIterator::IteratorFlags) +/