Files
cbh/ElaWidgetTools/ElaDrawerArea.cpp
2025-09-19 22:40:52 +08:00

99 lines
2.5 KiB
C++

#include "ElaDrawerArea.h"
#include "ElaDrawerAreaPrivate.h"
#include "ElaTheme.h"
ElaDrawerArea::ElaDrawerArea(QWidget* parent)
: QWidget(parent), d_ptr(new ElaDrawerAreaPrivate())
{
Q_D(ElaDrawerArea);
d->q_ptr = this;
setObjectName("ElaDrawerArea");
setStyleSheet("#ElaDrawerArea{background-color:transparent;}");
d->_drawerHeader = new ElaDrawerHeader(this);
d->_drawerContainer = new ElaDrawerContainer(this);
connect(d->_drawerHeader, &ElaDrawerHeader::drawerHeaderClicked, d, &ElaDrawerAreaPrivate::onDrawerHeaderClicked);
QVBoxLayout* mainLayout = new QVBoxLayout(this);
mainLayout->setContentsMargins(0, 0, 0, 0);
mainLayout->setSpacing(0);
mainLayout->addWidget(d->_drawerHeader);
mainLayout->addWidget(d->_drawerContainer);
d->_themeMode = eTheme->getThemeMode();
connect(eTheme, &ElaTheme::themeModeChanged, this, [=](ElaThemeType::ThemeMode themeMode) {
d->_themeMode = themeMode;
});
}
ElaDrawerArea::~ElaDrawerArea()
{
}
void ElaDrawerArea::setBorderRadius(int borderRadius)
{
Q_D(ElaDrawerArea);
d->_drawerHeader->setBorderRadius(borderRadius);
d->_drawerContainer->setBorderRadius(borderRadius);
Q_EMIT pBorderRadiusChanged();
}
int ElaDrawerArea::getBorderRadius() const
{
Q_D(const ElaDrawerArea);
return d->_drawerHeader->getBorderRadius();
}
void ElaDrawerArea::setHeaderHeight(int headerHeight)
{
Q_D(ElaDrawerArea);
d->_drawerHeader->setFixedHeight(headerHeight);
}
int ElaDrawerArea::getHeaderHeight() const
{
Q_D(const ElaDrawerArea);
return d->_drawerHeader->height();
}
void ElaDrawerArea::setDrawerHeader(QWidget* widget)
{
Q_D(ElaDrawerArea);
d->_drawerHeader->setHeaderWidget(widget);
}
void ElaDrawerArea::addDrawer(QWidget* widget)
{
Q_D(ElaDrawerArea);
d->_drawerContainer->addWidget(widget);
}
void ElaDrawerArea::removeDrawer(QWidget* widget)
{
Q_D(ElaDrawerArea);
d->_drawerContainer->removeWidget(widget);
}
void ElaDrawerArea::expand()
{
Q_D(ElaDrawerArea);
d->_drawerHeader->setIsExpand(true);
d->_drawerHeader->doExpandOrCollpaseAnimation();
d->_drawerContainer->doDrawerAnimation(true);
Q_EMIT expandStateChanged(true);
}
void ElaDrawerArea::collpase()
{
Q_D(ElaDrawerArea);
d->_drawerHeader->setIsExpand(false);
d->_drawerHeader->doExpandOrCollpaseAnimation();
d->_drawerContainer->doDrawerAnimation(false);
Q_EMIT expandStateChanged(false);
}
bool ElaDrawerArea::getIsExpand() const
{
Q_D(const ElaDrawerArea);
return d->_drawerHeader->getIsExpand();
}