File indexing completed on 2024-05-12 03:48:26

0001 /*
0002     File                 : SpreadsheetHeaderView.h
0003     Project              : LabPlot
0004     Description          : Horizontal header for SpreadsheetView displaying comments in a second header
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2016 Alexander Semke <alexander.semke@web.de>
0007     SPDX-FileCopyrightText: 2007 Tilman Benkert <thzs@gmx.net>
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #ifndef SPREADSHEETHEADERVIEW_H
0012 #define SPREADSHEETHEADERVIEW_H
0013 
0014 #include <QHeaderView>
0015 
0016 class SpreadsheetCommentsHeaderView : public QHeaderView {
0017     Q_OBJECT
0018 
0019 public:
0020     explicit SpreadsheetCommentsHeaderView(QWidget* parent = nullptr);
0021     ~SpreadsheetCommentsHeaderView() override;
0022 
0023     void setModel(QAbstractItemModel*) override;
0024     friend class SpreadsheetHeaderView; // access to paintSection (protected)
0025 };
0026 
0027 class SpreadsheetHeaderView : public QHeaderView {
0028     Q_OBJECT
0029 
0030 public:
0031     explicit SpreadsheetHeaderView(QWidget* parent = nullptr);
0032     ~SpreadsheetHeaderView() override;
0033 
0034     void setModel(QAbstractItemModel*) override;
0035     QSize sizeHint() const override;
0036 
0037     void showComments(bool on = true);
0038     bool areCommentsShown() const;
0039 
0040 private:
0041     SpreadsheetCommentsHeaderView* m_slave;
0042     bool m_showComments;
0043 
0044 private Q_SLOTS:
0045     void refresh();
0046     void headerDataChanged(Qt::Orientation, int logicalFirst, int logicalLast);
0047 
0048 protected:
0049     void paintSection(QPainter*, const QRect&, int logicalIndex) const override;
0050 };
0051 
0052 #endif