UBFloatingPalette.h 2.25 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19


#ifndef UBFLOATINGPALLETTE_H_
#define UBFLOATINGPALLETTE_H_

#include <QWidget>
#include <QPoint>

typedef enum
{
    eMinimizedLocation_None,
    eMinimizedLocation_Left,
    eMinimizedLocation_Top,
    eMinimizedLocation_Right,
    eMinimizedLocation_Bottom
}eMinimizedLocation;

class UBFloatingPalette : public QWidget
{
shibakaneki's avatar
shibakaneki committed
20
    Q_OBJECT
Claudio Valerio's avatar
Claudio Valerio committed
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

    public:

        UBFloatingPalette(Qt::Corner = Qt::TopLeftCorner, QWidget *parent = 0);

        virtual void mouseMoveEvent(QMouseEvent *event);
        virtual void mousePressEvent(QMouseEvent *event);
        virtual void mouseReleaseEvent(QMouseEvent *event);

        /**
         * Add another floating palette to the associated palette. All associated palettes will have the same width
         * that is calculated as the minimum width of all associated palettes.
         */
        void addAssociatedPalette(UBFloatingPalette* pOtherPalette);
        void removeAssociatedPalette(UBFloatingPalette* pOtherPalette);

        virtual void adjustSizeAndPosition(bool pUp = true);

        void setCustomPosition(bool pFlag);

        QSize preferredSize();

        void setBackgroundBrush(const QBrush& brush);
44 45
        void setGrip(bool newGrip);

Claudio Valerio's avatar
Claudio Valerio committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
        void setMinimizePermission(bool permission);

    protected:

        virtual void enterEvent(QEvent *event);
        virtual void showEvent(QShowEvent *event);
        virtual void paintEvent(QPaintEvent *event);

        virtual int radius();
        virtual int border();
        virtual int gripSize();

        QBrush mBackgroundBrush;
        bool mbGrip;
        static const int sLayoutContentMargin = 12;
        static const int sLayoutSpacing = 15;
62 63
        void moveInsideParent(const QPoint &position);
        bool mCustomPosition;
64
        bool mIsMoving;
Claudio Valerio's avatar
Claudio Valerio committed
65 66 67 68 69 70 71 72

    private:
        void removeAllAssociatedPalette();
        void minimizePalette(const QPoint& pos);

        QList<UBFloatingPalette*> mAssociatedPalette;
        QPoint mDragPosition;
        bool mCanBeMinimized;
73
        eMinimizedLocation mMinimizedLocation;
Claudio Valerio's avatar
Claudio Valerio committed
74 75 76 77
        Qt::Corner mDefaultPosition;

    signals:
        void mouseEntered();
78 79
        void minimizeStart(eMinimizedLocation location);
        void maximizeStart();
Claudio Valerio's avatar
Claudio Valerio committed
80
        void maximized();
81
        void moving();
Claudio Valerio's avatar
Claudio Valerio committed
82 83 84 85
};


#endif /* UBFLOATINGPALLETTE_H_ */