// Copyright 2017 Alejandro Sirgo Rica // // This file is part of Flameshot. // // Flameshot is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Flameshot is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Flameshot. If not, see . #ifndef BUTTONHANDLER_H #define BUTTONHANDLER_H #include "capturebutton.h" #include #include class CaptureButton; class QRect; class QPoint; class ButtonHandler : public QObject { Q_OBJECT public: ButtonHandler(const QVector&, QObject *parent = nullptr); ButtonHandler(QObject *parent = nullptr); void hideSectionUnderMouse(const QPoint &p); bool isVisible() const; bool isPartiallyHidden() const; bool buttonsAreInside() const; size_t size() const; void updatePosition(const QRect &selection, const QRect &limits); void setButtons(const QVector); bool contains(const QPoint &p) const; public slots: void hide(); void show(); private: QVector horizontalPoints(const QPoint ¢er, const int elements, const bool leftToRight) const; QVector verticalPoints(const QPoint ¢er, const int elements, const bool upToDown) const; QVector m_vectorButtons; QVector m_topButtons; QVector m_bottonButtons; QVector m_leftButtons; QVector m_rightButtons; QVector m_insideButtons; QVector * m_hiddenButtonVector; QRegion m_topRegion; QRegion m_bottonRegion; QRegion m_leftRegion; QRegion m_rightRegion; QRegion m_insideRegion; bool m_isPartiallyHidden; enum side { TOP, LEFT, BOTTON, RIGHT, INSIDE, NONE }; int m_distance; int m_buttonBaseSize; bool m_buttonsAreInside; // aux methods void addToRegion(const QVector &points, const side s); void resetRegionTrack(); }; #endif // BUTTONHANDLER_H