File indexing completed on 2024-04-21 05:53:02

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 // Std
0018 #include <utility>
0019 
0020 namespace Okteta {
0021 
0022 class ColumnsViewPrivate
0023 {
0024 public:
0025     explicit ColumnsViewPrivate(/*bool R,*/ ColumnsView* parent);
0026     ColumnsViewPrivate(const ColumnsViewPrivate&) = delete;
0027 
0028     virtual ~ColumnsViewPrivate();
0029 
0030     ColumnsViewPrivate& operator=(const ColumnsViewPrivate&) = delete;
0031 
0032 public:
0033     void init();
0034     void updateWidths();
0035 
0036 public: // calculated
0037     /** collection of all the columns. All columns will be autodeleted. */
0038     QVector<AbstractColumnRenderer*> columns;
0039     /** the number of lines which the column view has */
0040     LineSize NoOfLines = 0;
0041     /** the height of each line in pixels */
0042     PixelY LineHeight = 0;
0043     /** the width of all visible columns together */
0044     PixelX ColumnsWidth = 0;
0045 
0046 public:
0047 //    bool Reversed;
0048 
0049 protected:
0050     ColumnsView* const q_ptr;
0051 
0052 private:
0053     Q_DECLARE_PUBLIC(ColumnsView)
0054 };
0055 
0056 
0057 inline ColumnsViewPrivate::ColumnsViewPrivate(/*bool R,*/ ColumnsView* parent)
0058     : q_ptr(parent)
0059 //    Reversed( R )
0060 {
0061 }
0062 
0063 inline ColumnsViewPrivate::~ColumnsViewPrivate()
0064 {
0065     qDeleteAll(columns);
0066 }
0067 
0068 inline void ColumnsViewPrivate::updateWidths()
0069 {
0070     ColumnsWidth = 0;
0071     for (auto* column : std::as_const(columns)) {
0072         column->setX(ColumnsWidth);
0073         ColumnsWidth += column->visibleWidth();
0074     }
0075 }
0076 
0077 }
0078 
0079 #endif