83 lines
2.5 KiB
C++
83 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();
|
|
}
|