]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistheader.cpp
GIT_SILENT Sync po/docbooks with svn
[dolphin.git] / src / kitemviews / kitemlistheader.cpp
1 /*
2 * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "kitemlistheader.h"
8 #include "kitemlistview.h"
9 #include "private/kitemlistheaderwidget.h"
10
11 KItemListHeader::~KItemListHeader()
12 {
13 }
14
15 void KItemListHeader::setAutomaticColumnResizing(bool automatic)
16 {
17 if (m_headerWidget->automaticColumnResizing() != automatic) {
18 m_headerWidget->setAutomaticColumnResizing(automatic);
19 if (automatic) {
20 m_view->applyAutomaticColumnWidths();
21 m_view->doLayout(KItemListView::NoAnimation);
22 }
23 }
24 }
25
26 bool KItemListHeader::automaticColumnResizing() const
27 {
28 return m_headerWidget->automaticColumnResizing();
29 }
30
31 void KItemListHeader::setColumnWidth(const QByteArray &role, qreal width)
32 {
33 if (!m_headerWidget->automaticColumnResizing()) {
34 m_headerWidget->setColumnWidth(role, width);
35 m_view->applyColumnWidthsFromHeader();
36 m_view->doLayout(KItemListView::NoAnimation);
37 }
38 }
39
40 qreal KItemListHeader::columnWidth(const QByteArray &role) const
41 {
42 return m_headerWidget->columnWidth(role);
43 }
44
45 void KItemListHeader::setColumnWidths(const QHash<QByteArray, qreal> &columnWidths)
46 {
47 if (!m_headerWidget->automaticColumnResizing()) {
48 const auto visibleRoles = m_view->visibleRoles();
49 for (const QByteArray &role : visibleRoles) {
50 const qreal width = columnWidths.value(role);
51 m_headerWidget->setColumnWidth(role, width);
52 }
53
54 m_view->applyColumnWidthsFromHeader();
55 m_view->doLayout(KItemListView::NoAnimation);
56 }
57 }
58
59 qreal KItemListHeader::preferredColumnWidth(const QByteArray &role) const
60 {
61 return m_headerWidget->preferredColumnWidth(role);
62 }
63
64 void KItemListHeader::setSidePadding(qreal leftPaddingWidth, qreal rightPaddingWidth)
65 {
66 if (m_headerWidget->leftPadding() != leftPaddingWidth || m_headerWidget->rightPadding() != rightPaddingWidth) {
67 m_headerWidget->setSidePadding(leftPaddingWidth, rightPaddingWidth);
68 if (m_headerWidget->automaticColumnResizing()) {
69 m_view->applyAutomaticColumnWidths();
70 }
71 m_view->doLayout(KItemListView::NoAnimation);
72 }
73 }
74
75 qreal KItemListHeader::leftPadding() const
76 {
77 return m_headerWidget->leftPadding();
78 }
79
80 qreal KItemListHeader::rightPadding() const
81 {
82 return m_headerWidget->rightPadding();
83 }
84
85 KItemListHeader::KItemListHeader(KItemListView *listView)
86 : QObject(listView)
87 , m_view(listView)
88 {
89 m_headerWidget = m_view->m_headerWidget;
90 Q_ASSERT(m_headerWidget);
91
92 connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, this, &KItemListHeader::columnWidthChanged);
93 connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChangeFinished, this, &KItemListHeader::columnWidthChangeFinished);
94 connect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged, this, &KItemListHeader::sidePaddingChanged);
95 }
96
97 #include "moc_kitemlistheader.cpp"