chore: 格式化ElaWidgetTools代码
This commit is contained in:
@@ -10,83 +10,64 @@
|
||||
#include "ElaIconButton.h"
|
||||
#include "ElaMessageBar.h"
|
||||
Q_SINGLETON_CREATE_CPP(ElaMessageBarManager)
|
||||
QMap<ElaMessageBarType::PositionPolicy, QList<ElaMessageBar*>*> _messageBarActiveMap;
|
||||
ElaMessageBarManager::ElaMessageBarManager(QObject* parent)
|
||||
{
|
||||
}
|
||||
QMap<ElaMessageBarType::PositionPolicy, QList<ElaMessageBar *> *> _messageBarActiveMap;
|
||||
ElaMessageBarManager::ElaMessageBarManager(QObject *parent) {}
|
||||
|
||||
ElaMessageBarManager::~ElaMessageBarManager()
|
||||
{
|
||||
}
|
||||
ElaMessageBarManager::~ElaMessageBarManager() {}
|
||||
|
||||
void ElaMessageBarManager::requestMessageBarEvent(ElaMessageBar* messageBar)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
void ElaMessageBarManager::requestMessageBarEvent(ElaMessageBar *messageBar) {
|
||||
if (!messageBar) {
|
||||
return;
|
||||
}
|
||||
if (_messageBarEventMap.contains(messageBar))
|
||||
{
|
||||
if (_messageBarEventMap.contains(messageBar)) {
|
||||
QList<QVariantMap> eventList = _messageBarEventMap.value(messageBar);
|
||||
QVariantMap eventData = eventList.last();
|
||||
QVariantMap eventData = eventList.last();
|
||||
eventList.removeLast();
|
||||
if (eventList.isEmpty())
|
||||
{
|
||||
if (eventList.isEmpty()) {
|
||||
_messageBarEventMap.remove(messageBar);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
_messageBarEventMap[messageBar] = eventList;
|
||||
}
|
||||
//触发事件
|
||||
QString functionName = eventData.value("EventFunctionName").toString();
|
||||
// 触发事件
|
||||
QString functionName = eventData.value("EventFunctionName").toString();
|
||||
QVariantMap functionData = eventData.value("EventFunctionData").toMap();
|
||||
QMetaObject::invokeMethod(messageBar->d_func(), functionName.toLocal8Bit().constData(), Qt::AutoConnection, Q_ARG(QVariantMap, functionData));
|
||||
}
|
||||
}
|
||||
|
||||
void ElaMessageBarManager::postMessageBarCreateEvent(ElaMessageBar* messageBar)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
void ElaMessageBarManager::postMessageBarCreateEvent(ElaMessageBar *messageBar) {
|
||||
if (!messageBar) {
|
||||
return;
|
||||
}
|
||||
updateActiveMap(messageBar, true); // 计算坐标前增加
|
||||
if (!_messageBarEventMap.contains(messageBar))
|
||||
{
|
||||
if (!_messageBarEventMap.contains(messageBar)) {
|
||||
QList<QVariantMap> eventList;
|
||||
QVariantMap eventData;
|
||||
QVariantMap eventData;
|
||||
eventData.insert("EventFunctionName", "messageBarEnd");
|
||||
eventList.append(eventData);
|
||||
_messageBarEventMap.insert(messageBar, eventList);
|
||||
}
|
||||
}
|
||||
|
||||
void ElaMessageBarManager::postMessageBarEndEvent(ElaMessageBar* messageBar)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
void ElaMessageBarManager::postMessageBarEndEvent(ElaMessageBar *messageBar) {
|
||||
if (!messageBar) {
|
||||
return;
|
||||
}
|
||||
updateActiveMap(messageBar, false);
|
||||
//Other MessageBar事件入栈 记录同一策略事件
|
||||
// Other MessageBar事件入栈 记录同一策略事件
|
||||
ElaMessageBarType::PositionPolicy policy = messageBar->d_ptr->_policy;
|
||||
foreach (auto otherMessageBar, *_messageBarActiveMap.value(policy))
|
||||
{
|
||||
if (otherMessageBar->d_ptr->_judgeCreateOrder(messageBar))
|
||||
{
|
||||
foreach (auto otherMessageBar, *_messageBarActiveMap.value(policy)) {
|
||||
if (otherMessageBar->d_ptr->_judgeCreateOrder(messageBar)) {
|
||||
QList<QVariantMap> eventList = _messageBarEventMap[otherMessageBar];
|
||||
//优先执行先触发的事件 End事件保持首位
|
||||
// 优先执行先触发的事件 End事件保持首位
|
||||
QVariantMap eventData;
|
||||
eventData.insert("EventFunctionName", "onOtherMessageBarEnd");
|
||||
QVariantMap functionData;
|
||||
functionData.insert("TargetPosY", otherMessageBar->d_ptr->_calculateTargetPosY());
|
||||
eventData.insert("EventFunctionData", functionData);
|
||||
//若处于创建动画阶段 则合并事件动画
|
||||
if (otherMessageBar->d_ptr->getWorkMode() == WorkStatus::CreateAnimation)
|
||||
{
|
||||
while (eventList.count() > 1)
|
||||
{
|
||||
// 若处于创建动画阶段 则合并事件动画
|
||||
if (otherMessageBar->d_ptr->getWorkMode() == WorkStatus::CreateAnimation) {
|
||||
while (eventList.count() > 1) {
|
||||
eventList.removeLast();
|
||||
}
|
||||
}
|
||||
@@ -97,116 +78,87 @@ void ElaMessageBarManager::postMessageBarEndEvent(ElaMessageBar* messageBar)
|
||||
}
|
||||
}
|
||||
|
||||
void ElaMessageBarManager::forcePostMessageBarEndEvent(ElaMessageBar* messageBar)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
void ElaMessageBarManager::forcePostMessageBarEndEvent(ElaMessageBar *messageBar) {
|
||||
if (!messageBar) {
|
||||
return;
|
||||
}
|
||||
//清除事件堆栈记录
|
||||
// 清除事件堆栈记录
|
||||
_messageBarEventMap.remove(messageBar);
|
||||
//发布终止事件
|
||||
// 发布终止事件
|
||||
postMessageBarEndEvent(messageBar);
|
||||
}
|
||||
|
||||
int ElaMessageBarManager::getMessageBarEventCount(ElaMessageBar* messageBar)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
int ElaMessageBarManager::getMessageBarEventCount(ElaMessageBar *messageBar) {
|
||||
if (!messageBar) {
|
||||
return -1;
|
||||
}
|
||||
if (!_messageBarEventMap.contains(messageBar))
|
||||
{
|
||||
if (!_messageBarEventMap.contains(messageBar)) {
|
||||
return -1;
|
||||
}
|
||||
QList<QVariantMap> eventList = _messageBarEventMap[messageBar];
|
||||
return eventList.count();
|
||||
}
|
||||
|
||||
void ElaMessageBarManager::updateActiveMap(ElaMessageBar* messageBar, bool isActive)
|
||||
{
|
||||
if (!messageBar)
|
||||
{
|
||||
void ElaMessageBarManager::updateActiveMap(ElaMessageBar *messageBar, bool isActive) {
|
||||
if (!messageBar) {
|
||||
return;
|
||||
}
|
||||
ElaMessageBarType::PositionPolicy policy = messageBar->d_ptr->_policy;
|
||||
if (isActive)
|
||||
{
|
||||
if (_messageBarActiveMap.contains(policy))
|
||||
{
|
||||
if (isActive) {
|
||||
if (_messageBarActiveMap.contains(policy)) {
|
||||
_messageBarActiveMap[policy]->append(messageBar);
|
||||
}
|
||||
else
|
||||
{
|
||||
QList<ElaMessageBar*>* messageBarList = new QList<ElaMessageBar*>();
|
||||
} else {
|
||||
QList<ElaMessageBar *> *messageBarList = new QList<ElaMessageBar *>();
|
||||
messageBarList->append(messageBar);
|
||||
_messageBarActiveMap.insert(policy, messageBarList);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_messageBarActiveMap.contains(policy))
|
||||
{
|
||||
if (_messageBarActiveMap[policy]->count() > 0)
|
||||
{
|
||||
} else {
|
||||
if (_messageBarActiveMap.contains(policy)) {
|
||||
if (_messageBarActiveMap[policy]->count() > 0) {
|
||||
_messageBarActiveMap[policy]->removeOne(messageBar);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ElaMessageBarPrivate::ElaMessageBarPrivate(QObject* parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
ElaMessageBarPrivate::ElaMessageBarPrivate(QObject *parent) : QObject{parent} {
|
||||
setProperty("MessageBarClosedY", 0);
|
||||
setProperty("MessageBarFinishY", 0);
|
||||
_createTime = QDateTime::currentMSecsSinceEpoch();
|
||||
}
|
||||
|
||||
ElaMessageBarPrivate::~ElaMessageBarPrivate()
|
||||
{
|
||||
}
|
||||
ElaMessageBarPrivate::~ElaMessageBarPrivate() {}
|
||||
|
||||
void ElaMessageBarPrivate::tryToRequestMessageBarEvent()
|
||||
{
|
||||
void ElaMessageBarPrivate::tryToRequestMessageBarEvent() {
|
||||
Q_Q(ElaMessageBar);
|
||||
if (!_isMessageBarCreateAnimationFinished || _isMessageBarEventAnimationStart)
|
||||
{
|
||||
if (!_isMessageBarCreateAnimationFinished || _isMessageBarEventAnimationStart) {
|
||||
return;
|
||||
}
|
||||
ElaMessageBarManager::getInstance()->requestMessageBarEvent(q);
|
||||
}
|
||||
|
||||
WorkStatus ElaMessageBarPrivate::getWorkMode() const
|
||||
{
|
||||
if (!_isMessageBarCreateAnimationFinished)
|
||||
{
|
||||
WorkStatus ElaMessageBarPrivate::getWorkMode() const {
|
||||
if (!_isMessageBarCreateAnimationFinished) {
|
||||
return WorkStatus::CreateAnimation;
|
||||
}
|
||||
if (_isMessageBarEventAnimationStart)
|
||||
{
|
||||
if (_isMessageBarEventAnimationStart) {
|
||||
return WorkStatus::OtherEventAnimation;
|
||||
}
|
||||
return WorkStatus::Idle;
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::onOtherMessageBarEnd(QVariantMap eventData)
|
||||
{
|
||||
void ElaMessageBarPrivate::onOtherMessageBarEnd(QVariantMap eventData) {
|
||||
Q_Q(ElaMessageBar);
|
||||
_isMessageBarEventAnimationStart = true;
|
||||
qreal targetPosY = eventData.value("TargetPosY").toReal();
|
||||
QPropertyAnimation* closePosAnimation = new QPropertyAnimation(this, "MessageBarClosedY");
|
||||
connect(closePosAnimation, &QPropertyAnimation::valueChanged, this, [=](const QVariant& value) {
|
||||
q->move(q->pos().x(), value.toUInt());
|
||||
});
|
||||
_isMessageBarEventAnimationStart = true;
|
||||
qreal targetPosY = eventData.value("TargetPosY").toReal();
|
||||
QPropertyAnimation *closePosAnimation = new QPropertyAnimation(this, "MessageBarClosedY");
|
||||
connect(closePosAnimation, &QPropertyAnimation::valueChanged, this, [=](const QVariant &value) { q->move(q->pos().x(), value.toUInt()); });
|
||||
connect(closePosAnimation, &QPropertyAnimation::finished, this, [=]() {
|
||||
_isMessageBarEventAnimationStart = false;
|
||||
if (ElaMessageBarManager::getInstance()->getMessageBarEventCount(q) > 1)
|
||||
{
|
||||
if (ElaMessageBarManager::getInstance()->getMessageBarEventCount(q) > 1) {
|
||||
ElaMessageBarManager::getInstance()->requestMessageBarEvent(q);
|
||||
}
|
||||
if (_isReadyToEnd)
|
||||
{
|
||||
if (_isReadyToEnd) {
|
||||
ElaMessageBarManager::getInstance()->requestMessageBarEvent(q);
|
||||
}
|
||||
});
|
||||
@@ -217,18 +169,15 @@ void ElaMessageBarPrivate::onOtherMessageBarEnd(QVariantMap eventData)
|
||||
closePosAnimation->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::messageBarEnd(QVariantMap eventData)
|
||||
{
|
||||
void ElaMessageBarPrivate::messageBarEnd(QVariantMap eventData) {
|
||||
Q_Q(ElaMessageBar);
|
||||
ElaMessageBarManager::getInstance()->postMessageBarEndEvent(q);
|
||||
QPropertyAnimation* barFinishedOpacityAnimation = new QPropertyAnimation(this, "pOpacity");
|
||||
QPropertyAnimation *barFinishedOpacityAnimation = new QPropertyAnimation(this, "pOpacity");
|
||||
connect(barFinishedOpacityAnimation, &QPropertyAnimation::valueChanged, this, [=]() {
|
||||
_closeButton->setOpacity(_pOpacity);
|
||||
q->update();
|
||||
});
|
||||
connect(barFinishedOpacityAnimation, &QPropertyAnimation::finished, this, [=]() {
|
||||
q->deleteLater();
|
||||
});
|
||||
connect(barFinishedOpacityAnimation, &QPropertyAnimation::finished, this, [=]() { q->deleteLater(); });
|
||||
barFinishedOpacityAnimation->setDuration(300);
|
||||
barFinishedOpacityAnimation->setEasingCurve(QEasingCurve::InOutSine);
|
||||
barFinishedOpacityAnimation->setStartValue(1);
|
||||
@@ -236,24 +185,20 @@ void ElaMessageBarPrivate::messageBarEnd(QVariantMap eventData)
|
||||
barFinishedOpacityAnimation->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::onCloseButtonClicked()
|
||||
{
|
||||
void ElaMessageBarPrivate::onCloseButtonClicked() {
|
||||
Q_Q(ElaMessageBar);
|
||||
if (_isReadyToEnd)
|
||||
{
|
||||
if (_isReadyToEnd) {
|
||||
return;
|
||||
}
|
||||
_isReadyToEnd = true;
|
||||
_isReadyToEnd = true;
|
||||
_isNormalDisplay = false;
|
||||
ElaMessageBarManager::getInstance()->forcePostMessageBarEndEvent(q);
|
||||
QPropertyAnimation* opacityAnimation = new QPropertyAnimation(this, "pOpacity");
|
||||
QPropertyAnimation *opacityAnimation = new QPropertyAnimation(this, "pOpacity");
|
||||
connect(opacityAnimation, &QPropertyAnimation::valueChanged, this, [=]() {
|
||||
_closeButton->setOpacity(_pOpacity);
|
||||
q->update();
|
||||
});
|
||||
connect(opacityAnimation, &QPropertyAnimation::finished, q, [=]() {
|
||||
q->deleteLater();
|
||||
});
|
||||
connect(opacityAnimation, &QPropertyAnimation::finished, q, [=]() { q->deleteLater(); });
|
||||
opacityAnimation->setStartValue(_pOpacity);
|
||||
opacityAnimation->setEndValue(0);
|
||||
opacityAnimation->setDuration(220);
|
||||
@@ -261,8 +206,7 @@ void ElaMessageBarPrivate::onCloseButtonClicked()
|
||||
opacityAnimation->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_messageBarCreate(int displayMsec)
|
||||
{
|
||||
void ElaMessageBarPrivate::_messageBarCreate(int displayMsec) {
|
||||
Q_Q(ElaMessageBar);
|
||||
q->show();
|
||||
QFont font = q->font();
|
||||
@@ -273,22 +217,22 @@ void ElaMessageBarPrivate::_messageBarCreate(int displayMsec)
|
||||
font.setPixelSize(14);
|
||||
font.setWeight(QFont::Medium);
|
||||
q->setFont(font);
|
||||
int textWidth = q->fontMetrics().horizontalAdvance(_text);
|
||||
int fixedWidth = _closeButtonLeftRightMargin + _leftPadding + _titleLeftSpacing + _textLeftSpacing + _closeButtonWidth + titleWidth + textWidth + 2 * _shadowBorderWidth;
|
||||
int textWidth = q->fontMetrics().horizontalAdvance(_text);
|
||||
int fixedWidth = _closeButtonLeftRightMargin + _leftPadding + _titleLeftSpacing + _textLeftSpacing + _closeButtonWidth + titleWidth + textWidth +
|
||||
2 * _shadowBorderWidth;
|
||||
q->setFixedWidth(fixedWidth > 500 ? 500 : fixedWidth);
|
||||
ElaMessageBarManager::getInstance()->postMessageBarCreateEvent(q);
|
||||
int startX = 0;
|
||||
int startY = 0;
|
||||
int endX = 0;
|
||||
int endY = 0;
|
||||
int endX = 0;
|
||||
int endY = 0;
|
||||
_calculateInitialPos(startX, startY, endX, endY);
|
||||
// 滑入动画
|
||||
QPropertyAnimation* barPosAnimation = new QPropertyAnimation(q, "pos");
|
||||
QPropertyAnimation *barPosAnimation = new QPropertyAnimation(q, "pos");
|
||||
connect(barPosAnimation, &QPropertyAnimation::finished, q, [=]() {
|
||||
_isNormalDisplay = true;
|
||||
_isNormalDisplay = true;
|
||||
_isMessageBarCreateAnimationFinished = true;
|
||||
if (ElaMessageBarManager::getInstance()->getMessageBarEventCount(q) > 1)
|
||||
{
|
||||
if (ElaMessageBarManager::getInstance()->getMessageBarEventCount(q) > 1) {
|
||||
ElaMessageBarManager::getInstance()->requestMessageBarEvent(q);
|
||||
}
|
||||
QTimer::singleShot(displayMsec, q, [=]() {
|
||||
@@ -296,16 +240,13 @@ void ElaMessageBarPrivate::_messageBarCreate(int displayMsec)
|
||||
ElaMessageBarManager::getInstance()->requestMessageBarEvent(q);
|
||||
});
|
||||
});
|
||||
switch (_policy)
|
||||
{
|
||||
switch (_policy) {
|
||||
case ElaMessageBarType::Top:
|
||||
case ElaMessageBarType::Bottom:
|
||||
{
|
||||
case ElaMessageBarType::Bottom: {
|
||||
barPosAnimation->setDuration(250);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
default: {
|
||||
barPosAnimation->setDuration(450);
|
||||
break;
|
||||
}
|
||||
@@ -316,102 +257,91 @@ void ElaMessageBarPrivate::_messageBarCreate(int displayMsec)
|
||||
barPosAnimation->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_calculateInitialPos(int& startX, int& startY, int& endX, int& endY)
|
||||
{
|
||||
void ElaMessageBarPrivate::_calculateInitialPos(int &startX, int &startY, int &endX, int &endY) {
|
||||
Q_Q(ElaMessageBar);
|
||||
QList<int> resultList = _getOtherMessageBarTotalData();
|
||||
int minimumHeightTotal = resultList[0];
|
||||
int indexLessCount = resultList[1];
|
||||
switch (_policy)
|
||||
{
|
||||
case ElaMessageBarType::Top:
|
||||
{
|
||||
QList<int> resultList = _getOtherMessageBarTotalData();
|
||||
int minimumHeightTotal = resultList[0];
|
||||
int indexLessCount = resultList[1];
|
||||
switch (_policy) {
|
||||
case ElaMessageBarType::Top: {
|
||||
// 25动画距离
|
||||
startX = q->parentWidget()->width() / 2 - q->minimumWidth() / 2;
|
||||
startY = minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin - 25;
|
||||
endX = startX;
|
||||
endY = minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin;
|
||||
endX = startX;
|
||||
endY = minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::Left:
|
||||
{
|
||||
case ElaMessageBarType::Left: {
|
||||
startX = -q->minimumWidth();
|
||||
startY = minimumHeightTotal + _messageBarSpacing * indexLessCount + q->parentWidget()->height() / 2;
|
||||
endX = _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
endX = _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::Bottom:
|
||||
{
|
||||
case ElaMessageBarType::Bottom: {
|
||||
startX = q->parentWidget()->width() / 2 - q->minimumWidth() / 2;
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount - _messageBarVerticalBottomMargin - 25;
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount -
|
||||
_messageBarVerticalBottomMargin - 25;
|
||||
endX = startX;
|
||||
endY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount - _messageBarVerticalBottomMargin;
|
||||
endY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount -
|
||||
_messageBarVerticalBottomMargin;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::Right:
|
||||
{
|
||||
case ElaMessageBarType::Right: {
|
||||
startX = q->parentWidget()->width();
|
||||
startY = minimumHeightTotal + _messageBarSpacing * indexLessCount + q->parentWidget()->height() / 2;
|
||||
endX = q->parentWidget()->width() - q->minimumWidth() - _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
endX = q->parentWidget()->width() - q->minimumWidth() - _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::TopRight:
|
||||
{
|
||||
case ElaMessageBarType::TopRight: {
|
||||
startX = q->parentWidget()->width();
|
||||
startY = minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin;
|
||||
endX = q->parentWidget()->width() - q->minimumWidth() - _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
endX = q->parentWidget()->width() - q->minimumWidth() - _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::TopLeft:
|
||||
{
|
||||
case ElaMessageBarType::TopLeft: {
|
||||
startX = -q->minimumWidth();
|
||||
startY = minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin;
|
||||
endX = _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
endX = _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::BottomRight:
|
||||
{
|
||||
case ElaMessageBarType::BottomRight: {
|
||||
startX = q->parentWidget()->width();
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount - _messageBarVerticalBottomMargin;
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount -
|
||||
_messageBarVerticalBottomMargin;
|
||||
endX = q->parentWidget()->width() - q->minimumWidth() - _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
case ElaMessageBarType::BottomLeft:
|
||||
{
|
||||
case ElaMessageBarType::BottomLeft: {
|
||||
startX = -q->minimumWidth();
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount - _messageBarVerticalBottomMargin;
|
||||
startY = q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount -
|
||||
_messageBarVerticalBottomMargin;
|
||||
endX = _messageBarHorizontalMargin;
|
||||
endY = startY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (endY < _messageBarVerticalTopMargin || endY > q->parentWidget()->height() - _messageBarVerticalBottomMargin - q->minimumHeight())
|
||||
{
|
||||
if (endY < _messageBarVerticalTopMargin || endY > q->parentWidget()->height() - _messageBarVerticalBottomMargin - q->minimumHeight()) {
|
||||
(*_messageBarActiveMap[_policy])[0]->d_ptr->onCloseButtonClicked();
|
||||
_calculateInitialPos(startX, startY, endX, endY);
|
||||
}
|
||||
}
|
||||
|
||||
QList<int> ElaMessageBarPrivate::_getOtherMessageBarTotalData(bool isJudgeCreateOrder)
|
||||
{
|
||||
QList<int> ElaMessageBarPrivate::_getOtherMessageBarTotalData(bool isJudgeCreateOrder) {
|
||||
Q_Q(ElaMessageBar);
|
||||
QList<int> resultList;
|
||||
int minimumHeightTotal = 0;
|
||||
int indexLessCount = 0;
|
||||
QList<ElaMessageBar*>* messageBarList = _messageBarActiveMap[_policy];
|
||||
for (auto messageBar: *messageBarList)
|
||||
{
|
||||
if (messageBar == q)
|
||||
{
|
||||
QList<int> resultList;
|
||||
int minimumHeightTotal = 0;
|
||||
int indexLessCount = 0;
|
||||
QList<ElaMessageBar *> *messageBarList = _messageBarActiveMap[_policy];
|
||||
for (auto messageBar : *messageBarList) {
|
||||
if (messageBar == q) {
|
||||
continue;
|
||||
}
|
||||
if (!isJudgeCreateOrder || (isJudgeCreateOrder && _judgeCreateOrder(messageBar)))
|
||||
{
|
||||
if (!isJudgeCreateOrder || (isJudgeCreateOrder && _judgeCreateOrder(messageBar))) {
|
||||
indexLessCount++;
|
||||
minimumHeightTotal += messageBar->minimumHeight();
|
||||
}
|
||||
@@ -421,50 +351,41 @@ QList<int> ElaMessageBarPrivate::_getOtherMessageBarTotalData(bool isJudgeCreate
|
||||
return resultList;
|
||||
}
|
||||
|
||||
qreal ElaMessageBarPrivate::_calculateTargetPosY()
|
||||
{
|
||||
qreal ElaMessageBarPrivate::_calculateTargetPosY() {
|
||||
Q_Q(ElaMessageBar);
|
||||
QList<int> resultList = _getOtherMessageBarTotalData(true);
|
||||
int minimumHeightTotal = resultList[0];
|
||||
int indexLessCount = resultList[1];
|
||||
switch (_policy)
|
||||
{
|
||||
QList<int> resultList = _getOtherMessageBarTotalData(true);
|
||||
int minimumHeightTotal = resultList[0];
|
||||
int indexLessCount = resultList[1];
|
||||
switch (_policy) {
|
||||
case ElaMessageBarType::Top:
|
||||
case ElaMessageBarType::TopRight:
|
||||
case ElaMessageBarType::TopLeft:
|
||||
{
|
||||
case ElaMessageBarType::TopLeft: {
|
||||
return minimumHeightTotal + _messageBarSpacing * indexLessCount + _messageBarVerticalTopMargin;
|
||||
}
|
||||
case ElaMessageBarType::Left:
|
||||
case ElaMessageBarType::Right:
|
||||
{
|
||||
case ElaMessageBarType::Right: {
|
||||
return minimumHeightTotal + _messageBarSpacing * indexLessCount + q->parentWidget()->height() / 2;
|
||||
}
|
||||
case ElaMessageBarType::Bottom:
|
||||
case ElaMessageBarType::BottomRight:
|
||||
case ElaMessageBarType::BottomLeft:
|
||||
{
|
||||
return q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount - _messageBarVerticalBottomMargin;
|
||||
case ElaMessageBarType::BottomLeft: {
|
||||
return q->parentWidget()->height() - q->minimumHeight() - minimumHeightTotal - _messageBarSpacing * indexLessCount -
|
||||
_messageBarVerticalBottomMargin;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool ElaMessageBarPrivate::_judgeCreateOrder(ElaMessageBar* otherMessageBar)
|
||||
{
|
||||
if (otherMessageBar->d_ptr->_createTime < _createTime)
|
||||
{
|
||||
//otherMessageBar先创建
|
||||
bool ElaMessageBarPrivate::_judgeCreateOrder(ElaMessageBar *otherMessageBar) {
|
||||
if (otherMessageBar->d_ptr->_createTime < _createTime) {
|
||||
// otherMessageBar先创建
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_drawSuccess(QPainter* painter)
|
||||
{
|
||||
void ElaMessageBarPrivate::_drawSuccess(QPainter *painter) {
|
||||
Q_Q(ElaMessageBar);
|
||||
painter->setBrush(QColor(0xE0, 0xF6, 0xDD));
|
||||
QRect foregroundRect(_shadowBorderWidth, _shadowBorderWidth, q->width() - 2 * _shadowBorderWidth, q->height() - 2 * _shadowBorderWidth);
|
||||
@@ -485,8 +406,7 @@ void ElaMessageBarPrivate::_drawSuccess(QPainter* painter)
|
||||
painter->setPen(QPen(Qt::black));
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_drawWarning(QPainter* painter)
|
||||
{
|
||||
void ElaMessageBarPrivate::_drawWarning(QPainter *painter) {
|
||||
Q_Q(ElaMessageBar);
|
||||
painter->setBrush(QColor(0x6B, 0x56, 0x27));
|
||||
QRect foregroundRect(_shadowBorderWidth, _shadowBorderWidth, q->width() - 2 * _shadowBorderWidth, q->height() - 2 * _shadowBorderWidth);
|
||||
@@ -505,8 +425,7 @@ void ElaMessageBarPrivate::_drawWarning(QPainter* painter)
|
||||
painter->setPen(QColor(0xFA, 0xFA, 0xFA));
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_drawInformation(QPainter* painter)
|
||||
{
|
||||
void ElaMessageBarPrivate::_drawInformation(QPainter *painter) {
|
||||
Q_Q(ElaMessageBar);
|
||||
painter->setBrush(QColor(0xF4, 0xF4, 0xF4));
|
||||
QRect foregroundRect(_shadowBorderWidth, _shadowBorderWidth, q->width() - 2 * _shadowBorderWidth, q->height() - 2 * _shadowBorderWidth);
|
||||
@@ -524,8 +443,7 @@ void ElaMessageBarPrivate::_drawInformation(QPainter* painter)
|
||||
painter->setPen(Qt::black);
|
||||
}
|
||||
|
||||
void ElaMessageBarPrivate::_drawError(QPainter* painter)
|
||||
{
|
||||
void ElaMessageBarPrivate::_drawError(QPainter *painter) {
|
||||
Q_Q(ElaMessageBar);
|
||||
painter->setBrush(QColor(0xFE, 0xE7, 0xEA));
|
||||
QRect foregroundRect(_shadowBorderWidth, _shadowBorderWidth, q->width() - 2 * _shadowBorderWidth, q->height() - 2 * _shadowBorderWidth);
|
||||
|
||||
Reference in New Issue
Block a user