File indexing completed on 2024-04-28 05:45:07
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kitemlistheader.h" 0008 #include "kitemlistview.h" 0009 #include "private/kitemlistheaderwidget.h" 0010 0011 KItemListHeader::~KItemListHeader() 0012 { 0013 } 0014 0015 void KItemListHeader::setAutomaticColumnResizing(bool automatic) 0016 { 0017 if (m_headerWidget->automaticColumnResizing() != automatic) { 0018 m_headerWidget->setAutomaticColumnResizing(automatic); 0019 if (automatic) { 0020 m_view->applyAutomaticColumnWidths(); 0021 m_view->doLayout(KItemListView::NoAnimation); 0022 } 0023 } 0024 } 0025 0026 bool KItemListHeader::automaticColumnResizing() const 0027 { 0028 return m_headerWidget->automaticColumnResizing(); 0029 } 0030 0031 void KItemListHeader::setColumnWidth(const QByteArray &role, qreal width) 0032 { 0033 if (!m_headerWidget->automaticColumnResizing()) { 0034 m_headerWidget->setColumnWidth(role, width); 0035 m_view->applyColumnWidthsFromHeader(); 0036 m_view->doLayout(KItemListView::NoAnimation); 0037 } 0038 } 0039 0040 qreal KItemListHeader::columnWidth(const QByteArray &role) const 0041 { 0042 return m_headerWidget->columnWidth(role); 0043 } 0044 0045 void KItemListHeader::setColumnWidths(const QHash<QByteArray, qreal> &columnWidths) 0046 { 0047 if (!m_headerWidget->automaticColumnResizing()) { 0048 const auto visibleRoles = m_view->visibleRoles(); 0049 for (const QByteArray &role : visibleRoles) { 0050 const qreal width = columnWidths.value(role); 0051 m_headerWidget->setColumnWidth(role, width); 0052 } 0053 0054 m_view->applyColumnWidthsFromHeader(); 0055 m_view->doLayout(KItemListView::NoAnimation); 0056 } 0057 } 0058 0059 qreal KItemListHeader::preferredColumnWidth(const QByteArray &role) const 0060 { 0061 return m_headerWidget->preferredColumnWidth(role); 0062 } 0063 0064 void KItemListHeader::setSidePadding(qreal width) 0065 { 0066 if (m_headerWidget->sidePadding() != width) { 0067 m_headerWidget->setSidePadding(width); 0068 if (m_headerWidget->automaticColumnResizing()) { 0069 m_view->applyAutomaticColumnWidths(); 0070 } 0071 m_view->doLayout(KItemListView::NoAnimation); 0072 } 0073 } 0074 0075 qreal KItemListHeader::sidePadding() const 0076 { 0077 return m_headerWidget->sidePadding(); 0078 } 0079 0080 KItemListHeader::KItemListHeader(KItemListView *listView) 0081 : QObject(listView) 0082 , m_view(listView) 0083 { 0084 m_headerWidget = m_view->m_headerWidget; 0085 Q_ASSERT(m_headerWidget); 0086 0087 connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, this, &KItemListHeader::columnWidthChanged); 0088 connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChangeFinished, this, &KItemListHeader::columnWidthChangeFinished); 0089 connect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged, this, &KItemListHeader::sidePaddingChanged); 0090 } 0091 0092 #include "moc_kitemlistheader.cpp"