File indexing completed on 2024-05-12 05:37:13
0001 /* 0002 SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QQuickItem> 0010 #include <QTimer> 0011 0012 #include "itemcontainer.h" 0013 0014 class ConfigOverlay : public QQuickItem 0015 { 0016 Q_OBJECT 0017 Q_PROPERTY(bool open READ open WRITE setOpen NOTIFY openChanged) 0018 Q_PROPERTY(ItemContainer *itemContainer READ itemContainer NOTIFY itemContainerChanged) 0019 Q_PROPERTY(qreal leftAvailableSpace READ leftAvailableSpace NOTIFY leftAvailableSpaceChanged) 0020 Q_PROPERTY(qreal topAvailableSpace READ topAvailableSpace NOTIFY topAvailableSpaceChanged) 0021 Q_PROPERTY(qreal rightAvailableSpace READ rightAvailableSpace NOTIFY rightAvailableSpaceChanged) 0022 Q_PROPERTY(qreal bottomAvailableSpace READ bottomAvailableSpace NOTIFY bottomAvailableSpaceChanged) 0023 Q_PROPERTY(bool touchInteraction READ touchInteraction NOTIFY touchInteractionChanged) 0024 0025 public: 0026 ConfigOverlay(QQuickItem *parent = nullptr); 0027 ~ConfigOverlay(); 0028 0029 ItemContainer *itemContainer() const; 0030 // NOTE: setter not accessible from QML by purpose 0031 void setItemContainer(ItemContainer *container); 0032 0033 bool open() const; 0034 void setOpen(bool open); 0035 0036 qreal leftAvailableSpace() 0037 { 0038 return m_leftAvailableSpace; 0039 } 0040 qreal topAvailableSpace() 0041 { 0042 return m_topAvailableSpace; 0043 } 0044 qreal rightAvailableSpace() 0045 { 0046 return m_rightAvailableSpace; 0047 } 0048 qreal bottomAvailableSpace() 0049 { 0050 return m_bottomAvailableSpace; 0051 } 0052 0053 bool touchInteraction() const; 0054 // This only usable from C++ 0055 void setTouchInteraction(bool touch); 0056 0057 Q_SIGNALS: 0058 void openChanged(bool open); 0059 void itemContainerChanged(); 0060 void leftAvailableSpaceChanged(); 0061 void topAvailableSpaceChanged(); 0062 void rightAvailableSpaceChanged(); 0063 void bottomAvailableSpaceChanged(); 0064 void touchInteractionChanged(); 0065 0066 private: 0067 QPointer<ItemContainer> m_itemContainer; 0068 qreal m_leftAvailableSpace = 0; 0069 qreal m_topAvailableSpace = 0; 0070 qreal m_rightAvailableSpace = 0; 0071 qreal m_bottomAvailableSpace = 0; 0072 0073 QTimer *m_hideTimer = nullptr; 0074 0075 QList<QTouchEvent::TouchPoint> m_oldTouchPoints; 0076 0077 bool m_open = false; 0078 bool m_touchInteraction = false; 0079 };