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"