File indexing completed on 2024-04-28 17:07:11

0001 /*
0002     This file is part of the Okteta Gui library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2003, 2007, 2008, 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef OKTETA_COLUMNSVIEW_P_HPP
0010 #define OKTETA_COLUMNSVIEW_P_HPP
0011 
0012 // lib
0013 #include "columnsview.hpp"
0014 #include "abstractcolumnrenderer.hpp"
0015 // Qt
0016 #include <QVector>
0017 
0018 namespace Okteta {
0019 
0020 class ColumnsViewPrivate
0021 {
0022 public:
0023     explicit ColumnsViewPrivate(/*bool R,*/ ColumnsView* parent);
0024     ColumnsViewPrivate(const ColumnsViewPrivate&) = delete;
0025 
0026     virtual ~ColumnsViewPrivate();
0027 
0028     ColumnsViewPrivate& operator=(const ColumnsViewPrivate&) = delete;
0029 
0030 public:
0031     void init();
0032     void updateWidths();
0033 
0034 public: // calculated
0035     /** collection of all the columns. All columns will be autodeleted. */
0036     QVector<AbstractColumnRenderer*> columns;
0037     /** the number of lines which the column view has */
0038     LineSize NoOfLines = 0;
0039     /** the height of each line in pixels */
0040     PixelY LineHeight = 0;
0041     /** the width of all visible columns together */
0042     PixelX ColumnsWidth = 0;
0043 
0044 public:
0045 //    bool Reversed;
0046 
0047 protected:
0048     ColumnsView* const q_ptr;
0049 
0050 private:
0051     Q_DECLARE_PUBLIC(ColumnsView)
0052 };
0053 
0054 
0055 inline ColumnsViewPrivate::ColumnsViewPrivate(/*bool R,*/ ColumnsView* parent)
0056     : q_ptr(parent)
0057 //    Reversed( R )
0058 {
0059 }
0060 
0061 inline ColumnsViewPrivate::~ColumnsViewPrivate()
0062 {
0063     qDeleteAll(columns);
0064 }
0065 
0066 inline void ColumnsViewPrivate::updateWidths()
0067 {
0068     ColumnsWidth = 0;
0069     for (auto column : qAsConst(columns)) {
0070         column->setX(ColumnsWidth);
0071         ColumnsWidth += column->visibleWidth();
0072     }
0073 }
0074 
0075 }
0076 
0077 #endif