1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the Qt Solutions component.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40 
41 
42 #ifndef QTTREEPROPERTYBROWSER_H
43 #define QTTREEPROPERTYBROWSER_H
44 
45 #include "qtpropertybrowser.h"
46 
47 #if QT_VERSION >= 0x040400
48 QT_BEGIN_NAMESPACE
49 #endif
50 
51 class QTreeWidgetItem;
52 class QtTreePropertyBrowserPrivate;
53 
54 class QT_QTPROPERTYBROWSER_EXPORT QtTreePropertyBrowser : public QtAbstractPropertyBrowser
55 {
56     Q_OBJECT
57     Q_ENUMS(ResizeMode)
58     Q_PROPERTY(int indentation READ indentation WRITE setIndentation)
59     Q_PROPERTY(bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated)
60     Q_PROPERTY(bool alternatingRowColors READ alternatingRowColors WRITE setAlternatingRowColors)
61     Q_PROPERTY(bool headerVisible READ isHeaderVisible WRITE setHeaderVisible)
62     Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
63     Q_PROPERTY(int splitterPosition READ splitterPosition WRITE setSplitterPosition)
64     Q_PROPERTY(bool propertiesWithoutValueMarked READ propertiesWithoutValueMarked WRITE setPropertiesWithoutValueMarked)
65 public:
66 
67     enum ResizeMode
68     {
69         Interactive,
70         Stretch,
71         Fixed,
72         ResizeToContents
73     };
74 
75     QtTreePropertyBrowser(QWidget *parent = 0);
76     ~QtTreePropertyBrowser();
77 
78     int indentation() const;
79     void setIndentation(int i);
80 
81     bool rootIsDecorated() const;
82     void setRootIsDecorated(bool show);
83 
84     bool alternatingRowColors() const;
85     void setAlternatingRowColors(bool enable);
86 
87     bool isHeaderVisible() const;
88     void setHeaderVisible(bool visible);
89 
90     ResizeMode resizeMode() const;
91     void setResizeMode(ResizeMode mode);
92 
93     int splitterPosition() const;
94     void setSplitterPosition(int position);
95 
96     void setExpanded(QtBrowserItem *item, bool expanded);
97     bool isExpanded(QtBrowserItem *item) const;
98 
99     bool isItemVisible(QtBrowserItem *item) const;
100     void setItemVisible(QtBrowserItem *item, bool visible);
101 
102     void setBackgroundColor(QtBrowserItem *item, const QColor &color);
103     QColor backgroundColor(QtBrowserItem *item) const;
104     QColor calculatedBackgroundColor(QtBrowserItem *item) const;
105 
106     void setPropertiesWithoutValueMarked(bool mark);
107     bool propertiesWithoutValueMarked() const;
108 
109     void editItem(QtBrowserItem *item);
110 
111 Q_SIGNALS:
112 
113     void collapsed(QtBrowserItem *item);
114     void expanded(QtBrowserItem *item);
115 
116 protected:
117     virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
118     virtual void itemRemoved(QtBrowserItem *item);
119     virtual void itemChanged(QtBrowserItem *item);
120 
121 private:
122 
123     QtTreePropertyBrowserPrivate *d_ptr;
124     Q_DECLARE_PRIVATE(QtTreePropertyBrowser)
125     Q_DISABLE_COPY(QtTreePropertyBrowser)
126 
127     Q_PRIVATE_SLOT(d_func(), void slotCollapsed(const QModelIndex &))
128     Q_PRIVATE_SLOT(d_func(), void slotExpanded(const QModelIndex &))
129     Q_PRIVATE_SLOT(d_func(), void slotCurrentBrowserItemChanged(QtBrowserItem *))
130     Q_PRIVATE_SLOT(d_func(), void slotCurrentTreeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *))
131 
132 };
133 
134 #if QT_VERSION >= 0x040400
135 QT_END_NAMESPACE
136 #endif
137 
138 #endif
139