ADTF Qt5
Loading...
Searching...
No Matches
adaptive_horiz_header_view.h
Go to the documentation of this file.
1
7
8/*
9 * This file depends on Qt which is licens ed under LGPLv3.
10 * See ADTF_DIR/3rdparty/qt5 and doc/license for detailed information.
11 */
12
13#pragma once
14#include <QHeaderView>
15#include <QVariantMap>
16#include <QTreeView>
17
21class cAdaptiveHorizontalHeaderView final : public QHeaderView
22{
23 Q_OBJECT
24public:
29 {
30 Auto,
31 Manual
32 };
33
35 explicit cAdaptiveHorizontalHeaderView(QAbstractItemView* pParent = nullptr);
37 explicit cAdaptiveHorizontalHeaderView(const QList<QAction*>& oAdditionalActions,
38 QAbstractItemView* pParent = nullptr);
40 explicit cAdaptiveHorizontalHeaderView(const QList<QAction*>& oAdditionalActions,
41 const QMap<int, int>& oDefaultSectionSizes,
42 QAbstractItemView* pParent = nullptr);
44 ~cAdaptiveHorizontalHeaderView() override = default;
45
51
57
62 void InitHeader();
63
69 static void ApplyViewState(const QVariantMap& oSettings, QTreeView* pView);
70
76 static QVariantMap BuildViewState(QTreeView* pView);
77
78private:
79 void CreateAndAddManualResizeAction();
80 bool IsManualLayoutMode() const
81 {
82 return m_eLayoutMode == HeaderLayoutMode::Manual;
83 };
84
85 HeaderLayoutMode m_eLayoutMode{HeaderLayoutMode::Auto};
86 QAction* m_pManualCheckBox;
87 QMap<int, int> m_oDefaultSectionSizes;
88
89 class ViewStateContext
90 {
91 public:
92 ViewStateContext(QTreeView* pView);
93
94 void ApplySettings(const QVariantMap& oSettings);
95 QVariantMap BuildSettings() const;
96
97 private:
98 QTreeView* m_pView;
100
101 void InitializeAndValidate();
102 bool IsValid() const;
103 void ApplyLayoutMode(const QVariantMap& oSettings);
104 void ApplyColumnWidths(const QVariantMap& oSettings);
105 void SaveLayoutMode(QVariantMap& oSettings) const;
106 void SaveColumnWidths(QVariantMap& oSettings) const;
107 };
108};
cAdaptiveHorizontalHeaderView(const QList< QAction * > &oAdditionalActions, const QMap< int, int > &oDefaultSectionSizes, QAbstractItemView *pParent=nullptr)
~cAdaptiveHorizontalHeaderView() override=default
HeaderLayoutMode
Definition adaptive_horiz_header_view.h:29
static QVariantMap BuildViewState(QTreeView *pView)
HeaderLayoutMode GetLayoutMode() const
cAdaptiveHorizontalHeaderView(const QList< QAction * > &oAdditionalActions, QAbstractItemView *pParent=nullptr)
void SetLayoutMode(const HeaderLayoutMode eMode)
static void ApplyViewState(const QVariantMap &oSettings, QTreeView *pView)
cAdaptiveHorizontalHeaderView(QAbstractItemView *pParent=nullptr)