File indexing completed on 2024-06-02 06:03:24

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2009 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 KASTEN_STATUSBARLAYOUT_HPP
0010 #define KASTEN_STATUSBARLAYOUT_HPP
0011 
0012 // Qt
0013 #include <QLayout>
0014 #include <QVector>
0015 
0016 class QWidgetItem;
0017 
0018 namespace Kasten {
0019 
0020 class StatusBarLayout : public QLayout
0021 {
0022     Q_OBJECT
0023 
0024 public:
0025     explicit StatusBarLayout(QWidget* parent = nullptr);
0026     ~StatusBarLayout() override;
0027 
0028 public:
0029     void addWidget(QWidget* widget);
0030 
0031 public: // QLayout API
0032     int count() const override;
0033     QLayoutItem* itemAt(int index) const override;
0034     int indexOf(QWidget* widget) const override;
0035 
0036     void addItem(QLayoutItem* item) override;
0037     QLayoutItem* takeAt(int index) override;
0038 
0039 public: // QLayoutItem API
0040     Qt::Orientations expandingDirections() const override;
0041     bool isEmpty() const override;
0042     QSize sizeHint() const override;
0043     QSize minimumSize () const override;
0044 
0045     void invalidate() override;
0046     void setGeometry(const QRect& rect) override;
0047 
0048 private:
0049 //     void updateMarginAndSpacing();
0050     void updateLayoutStructs() const;
0051 
0052 private:
0053     QVector<QWidgetItem*> mWidgetList;
0054 
0055     bool mIsDirty : 1;
0056     bool mIsEmpty : 1;
0057     QSize mSizeHint;
0058 };
0059 
0060 }
0061 
0062 #endif