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

0001 /*
0002     File                 : WorksheetElementContainer.h
0003     Project              : LabPlot
0004     Description          : Worksheet element container - parent of multiple elements.
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2009 Tilman Benkert <thzs@gmx.net>
0007     SPDX-FileCopyrightText: 2012-2021 Alexander Semke <alexander.semke@web.de>
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #ifndef WORKSHEETELEMENTCONTAINER_H
0012 #define WORKSHEETELEMENTCONTAINER_H
0013 
0014 #include "backend/worksheet/WorksheetElement.h"
0015 
0016 class WorksheetElementContainerPrivate;
0017 class ResizeItem;
0018 
0019 class WorksheetElementContainer : public WorksheetElement {
0020     Q_OBJECT
0021 
0022 public:
0023     WorksheetElementContainer(const QString&, AspectType);
0024     ~WorksheetElementContainer() override;
0025 
0026     void setVisible(bool) override;
0027     bool isFullyVisible() const override;
0028     void setPrinting(bool) override;
0029     void setResizeEnabled(bool);
0030 
0031     QRectF rect() const;
0032     virtual void setRect(const QRectF&) = 0;
0033     virtual void setPrevRect(const QRectF&) = 0;
0034     virtual void prepareGeometryChange();
0035     void handleResize(double horizontalRatio, double verticalRatio, bool pageResize = false) override;
0036 
0037     typedef WorksheetElementContainerPrivate Private;
0038 
0039 public Q_SLOTS:
0040     virtual void retransform() override;
0041     void childHovered();
0042     void childUnhovered();
0043 
0044 protected:
0045     WorksheetElementContainer(const QString&, WorksheetElementContainerPrivate*, AspectType);
0046     ResizeItem* m_resizeItem{nullptr};
0047 
0048 protected Q_SLOTS:
0049     virtual void handleAspectAdded(const AbstractAspect*);
0050 
0051 private:
0052     Q_DECLARE_PRIVATE(WorksheetElementContainer)
0053 
0054 Q_SIGNALS:
0055     friend class WorksheetElementContainerSetVisibleCmd;
0056 };
0057 
0058 #endif