Files
o3de/Code/Framework/AzQtComponents/AzQtComponents/Components/DockBarButton.h
T
Steve Pham 38261d0800 Shorten copyright headers by splitting into 2 lines (#2213)
* Updated all copyright headers to split the longer original copyright line into 2 shorter lines

Signed-off-by: Steve Pham <spham@amazon.com>
2021-07-16 15:25:48 -07:00

89 lines
2.3 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#if !defined(Q_MOC_RUN)
#include <AzQtComponents/AzQtComponentsAPI.h>
#include <QProxyStyle>
#include <QToolButton>
#endif
class QSettings;
class QEvent;
class QMouseEvent;
class QWidget;
namespace AzQtComponents
{
class Style;
class AZ_QT_COMPONENTS_API DockBarButton
: public QToolButton
{
Q_OBJECT
public:
struct Config
{
int buttonIconSize;
int defaultButtonMargin;
int menuIndicatorWidth;
QString menuIndicatorIcon;
QSize menuIndicatorIconSize;
QColor hoverBackgroundColor;
QColor closeHoverBackgroundColor;
QColor selectedBackgroundColor;
QColor closeSelectedBackgroundColor;
};
/*!
* Loads the button config data from a settings object.
*/
static Config loadConfig(QSettings& settings);
/*!
* Returns default button config data.
*/
static Config defaultConfig();
enum WindowDecorationButton
{
CloseButton,
MaximizeButton,
MinimizeButton,
DividerButton
};
Q_ENUM(WindowDecorationButton)
explicit DockBarButton(DockBarButton::WindowDecorationButton buttonType, QWidget* parent = nullptr, bool darkStyle = false);
DockBarButton::WindowDecorationButton buttonType() const { return m_buttonType; }
/*
* Expose the button type using a QT property so that test automation can read it
*/
Q_PROPERTY(WindowDecorationButton buttonType MEMBER m_buttonType CONSTANT)
Q_SIGNALS:
void buttonPressed(const DockBarButton::WindowDecorationButton type);
protected:
void paintEvent(QPaintEvent* event) override;
private:
friend class Style;
static bool drawDockBarButton(const Style* style, const QStyleOptionComplex* option, QPainter* painter, const QWidget* widget, const Config& config);
void handleButtonClick();
const DockBarButton::WindowDecorationButton m_buttonType;
bool m_isDarkStyle;
};
} // namespace AzQtComponents