7#include <QtDesigner/abstractformeditor.h>
9#include <QtWidgets/qabstractitemview.h>
10#include <QtWidgets/qheaderview.h>
11#include <QtCore/qdebug.h>
15using namespace Qt::StringLiterals;
21 Property(QDesignerPropertySheetExtension *sheet,
int id)
30 QHeaderView *horizontalHeader,
31 QHeaderView *verticalHeader);
61 QHeaderView *horizontalHeader,
62 QHeaderView *verticalHeader)
65 m_propertySheet.insert(horizontalHeader,
66 qt_extension<QDesignerPropertySheetExtension*>
67 (core->extensionManager(), horizontalHeader));
69 m_propertySheet.insert(verticalHeader,
70 qt_extension<QDesignerPropertySheetExtension*>
71 (core->extensionManager(), verticalHeader));
76 if (m_realPropertyNames.isEmpty())
77 m_realPropertyNames = {
78 visibleProperty, cascadingSectionResizesProperty,
79 defaultSectionSizeProperty, highlightSectionsProperty,
80 minimumSectionSizeProperty, showSortIndicatorProperty,
81 stretchLastSectionProperty
83 return m_realPropertyNames;
87 const QString &realName)
90 QString fakeName = prefix + realName.at(0).toUpper() + realName.mid(1);
91 m_propertyNameMap.insert(fakeName, realName);
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
118 initHeaderProperties(treeViewObject->header(), u"header"_s);
124 tableViewObject->horizontalHeader(),
125 tableViewObject->verticalHeader()))
127 initHeaderProperties(tableViewObject->horizontalHeader(), u"horizontalHeader"_s);
128 initHeaderProperties(tableViewObject->verticalHeader(), u"verticalHeader"_s);
138 QDesignerPropertySheetExtension *headerSheet = d->m_propertySheet.value(hv);
139 Q_ASSERT(headerSheet);
140 const QString headerGroupS = headerGroup;
141 const QStringList &realPropertyNames = d->realPropertyNames();
142 for (
const QString &realPropertyName : realPropertyNames) {
143 const int headerIndex = headerSheet->indexOf(realPropertyName);
144 Q_ASSERT(headerIndex != -1);
145 const QVariant defaultValue = realPropertyName == visibleProperty ?
146 QVariant(
true) : headerSheet->property(headerIndex);
147 const QString fakePropertyName = d->fakePropertyName(prefix, realPropertyName);
148 const int fakeIndex = createFakeProperty(fakePropertyName, defaultValue);
149 d->m_propertyIdMap.insert(fakeIndex, Property(headerSheet, headerIndex));
150 setAttribute(fakeIndex,
true);
151 setPropertyGroup(fakeIndex, headerGroupS);
156
157
160 return d->m_propertyNameMap;
165 const auto it = d->m_propertyIdMap.constFind(index);
166 if (it != d->m_propertyIdMap.constEnd())
167 return it.value().m_sheet->property(it.value().m_id);
168 return QDesignerPropertySheet::property(index);
173 const auto it = d->m_propertyIdMap.find(index);
174 if (it != d->m_propertyIdMap.end()) {
175 it.value().m_sheet->setProperty(it.value().m_id, value);
177 QDesignerPropertySheet::setProperty(index, value);
183 const auto it = d->m_propertyIdMap.find(index);
184 if (it != d->m_propertyIdMap.end()) {
185 it.value().m_sheet->setChanged(it.value().m_id, changed);
187 QDesignerPropertySheet::setChanged(index, changed);
193 const auto it = d->m_propertyIdMap.constFind(index);
194 if (it != d->m_propertyIdMap.constEnd())
195 return it.value().m_sheet->isChanged(it.value().m_id);
196 return QDesignerPropertySheet::isChanged(index);
201 const auto it = d->m_propertyIdMap.constFind(index);
202 if (it != d->m_propertyIdMap.constEnd())
203 return it.value().m_sheet->hasReset(it.value().m_id);
204 return QDesignerPropertySheet::hasReset(index);
209 const auto it = d->m_propertyIdMap.find(index);
210 if (it != d->m_propertyIdMap.end()) {
211 QDesignerPropertySheetExtension *headerSheet = it.value().m_sheet;
212 const int headerIndex = it.value().m_id;
213 const bool resetRC = headerSheet->reset(headerIndex);
217 if (!resetRC && headerSheet->propertyName(headerIndex) == visibleProperty) {
218 headerSheet->setProperty(headerIndex, QVariant(
true));
219 headerSheet->setChanged(headerIndex,
false);
224 return QDesignerPropertySheet::reset(index);
Adds header fake properties to QTreeView and QTableView objects.
ItemViewPropertySheet(QTableView *tableViewObject, QObject *parent=nullptr)
~ItemViewPropertySheet() override
bool reset(int index) override
void setProperty(int index, const QVariant &value) override
QVariant property(int index) const override
void setChanged(int index, bool changed) override
bool isChanged(int index) const override
QHash< QString, QString > propertyNameMap() const
Returns the mapping of fake property names to real property names.
bool hasReset(int index) const override
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
static constexpr auto highlightSectionsProperty
static constexpr auto cascadingSectionResizesProperty
static constexpr auto minimumSectionSizeProperty
static constexpr auto defaultSectionSizeProperty
static constexpr auto headerGroup
static constexpr auto stretchLastSectionProperty
static constexpr auto showSortIndicatorProperty
static constexpr auto visibleProperty
QHash< QHeaderView *, QDesignerPropertySheetExtension * > m_propertySheet
QMap< int, Property > m_propertyIdMap
QStringList realPropertyNames()
QHash< QString, QString > m_propertyNameMap
QStringList m_realPropertyNames
ItemViewPropertySheetPrivate(QDesignerFormEditorInterface *core, QHeaderView *horizontalHeader, QHeaderView *verticalHeader)
QString fakePropertyName(const QString &prefix, const QString &realName)
QDesignerPropertySheetExtension * m_sheet
Property(QDesignerPropertySheetExtension *sheet, int id)