Add rolling adv
This commit is contained in:
@@ -15,6 +15,7 @@ namespace {
|
|||||||
const int LABEL_MARGIN_LEFT = 5;
|
const int LABEL_MARGIN_LEFT = 5;
|
||||||
const int LABEL_FONT_WIDTH = 16;
|
const int LABEL_FONT_WIDTH = 16;
|
||||||
const int MOVING_STEP = 2;
|
const int MOVING_STEP = 2;
|
||||||
|
const char* HJ_TEXT="衡玖医疗科技——为女性提供更健康、更精准的乳腺诊断方案";
|
||||||
}
|
}
|
||||||
|
|
||||||
RollingMessageWidget::RollingMessageWidget(QWidget *parent)
|
RollingMessageWidget::RollingMessageWidget(QWidget *parent)
|
||||||
@@ -24,6 +25,9 @@ RollingMessageWidget::RollingMessageWidget(QWidget *parent)
|
|||||||
{
|
{
|
||||||
this->setFixedHeight(36);
|
this->setFixedHeight(36);
|
||||||
this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
|
this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
|
||||||
|
mCurrentLabel->setText(HJ_TEXT);
|
||||||
|
QPoint p3 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
||||||
|
mCurrentLabel->move(p3);
|
||||||
}
|
}
|
||||||
|
|
||||||
RollingMessageWidget::~RollingMessageWidget() {
|
RollingMessageWidget::~RollingMessageWidget() {
|
||||||
@@ -32,40 +36,48 @@ RollingMessageWidget::~RollingMessageWidget() {
|
|||||||
|
|
||||||
void RollingMessageWidget::timerEvent(QTimerEvent *e) {
|
void RollingMessageWidget::timerEvent(QTimerEvent *e) {
|
||||||
if (!this->isVisible()) return;
|
if (!this->isVisible()) return;
|
||||||
//滚动
|
if (mCurrentLabel->pos().x()> -450){
|
||||||
if (mRolling) {
|
QPoint p1 = {mCurrentLabel->pos().x()-2,mCurrentLabel->pos().y()};
|
||||||
//end rolling, reset next
|
mCurrentLabel->move(p1);
|
||||||
if (mRolledDistance == TOTAL_ROLL_DISTANCE){
|
|
||||||
mWaitStep = 0;
|
|
||||||
mRolling = false;
|
|
||||||
QPoint p3 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
|
||||||
mCurrentLabel->move(p3);
|
|
||||||
std::swap(mCurrentLabel, mNextLabel);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//rolling
|
|
||||||
mRolledDistance += 2;
|
|
||||||
QPoint p1 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT - mRolledDistance, LABEL_MARGIN_TOP};
|
|
||||||
mNextLabel->move(p1);
|
|
||||||
if (p1.x() - mCurrentLabel->geometry().x() <= mCurrentLabel->width() + 20)
|
|
||||||
{
|
|
||||||
QPoint p2 = {mCurrentLabel->geometry().x() - MOVING_STEP, LABEL_MARGIN_TOP};
|
|
||||||
mCurrentLabel->move(p2);
|
|
||||||
}
|
|
||||||
return ;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
QPoint p3 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
||||||
//有等待的高优先级消息时,不停顿
|
mCurrentLabel->move(p3);
|
||||||
if (mWaitStep == WAIT_TIMES || (mWaitPriorityCount > 0 && mWaitStep == WAIT_TIMES / 3)){
|
|
||||||
mLocker.lock();
|
|
||||||
mNextLabel->setText(getNextMessage());
|
|
||||||
mNextLabel->setFixedWidth(mNextLabel->text().length() * LABEL_FONT_WIDTH);
|
|
||||||
mLocker.unlock();
|
|
||||||
} else{
|
|
||||||
mWaitStep++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// //滚动
|
||||||
|
// if (mRolling) {
|
||||||
|
// //end rolling, reset next
|
||||||
|
// if (mRolledDistance == TOTAL_ROLL_DISTANCE){
|
||||||
|
// mWaitStep = 0;
|
||||||
|
// mRolling = false;
|
||||||
|
// QPoint p3 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
||||||
|
// mCurrentLabel->move(p3);
|
||||||
|
// std::swap(mCurrentLabel, mNextLabel);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// //rolling
|
||||||
|
// mRolledDistance += 2;
|
||||||
|
// QPoint p1 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT - mRolledDistance, LABEL_MARGIN_TOP};
|
||||||
|
// mNextLabel->move(p1);
|
||||||
|
// if (p1.x() - mCurrentLabel->geometry().x() <= mCurrentLabel->width() + 20)
|
||||||
|
// {
|
||||||
|
// QPoint p2 = {mCurrentLabel->geometry().x() - MOVING_STEP, LABEL_MARGIN_TOP};
|
||||||
|
// mCurrentLabel->move(p2);
|
||||||
|
// }
|
||||||
|
// return ;
|
||||||
|
// }
|
||||||
|
// else{
|
||||||
|
|
||||||
|
// //有等待的高优先级消息时,不停顿
|
||||||
|
// if (mWaitStep == WAIT_TIMES || (mWaitPriorityCount > 0 && mWaitStep == WAIT_TIMES / 3)){
|
||||||
|
// mLocker.lock();
|
||||||
|
// mNextLabel->setText(getNextMessage());
|
||||||
|
// mNextLabel->setFixedWidth(mNextLabel->text().length() * LABEL_FONT_WIDTH);
|
||||||
|
// mLocker.unlock();
|
||||||
|
// } else{
|
||||||
|
// mWaitStep++;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void RollingMessageWidget::setMessageList(const QStringList &message) {
|
void RollingMessageWidget::setMessageList(const QStringList &message) {
|
||||||
@@ -158,13 +170,13 @@ void RollingMessageWidget::initDelay()
|
|||||||
mCurrentLabel->setFixedHeight(30);
|
mCurrentLabel->setFixedHeight(30);
|
||||||
mCurrentLabel->show();
|
mCurrentLabel->show();
|
||||||
mCurrentLabel->move(p1);
|
mCurrentLabel->move(p1);
|
||||||
mCurrentLabel->setText(tr("Message of warn!"));
|
// mCurrentLabel->setText(tr("Message of warn!"));
|
||||||
mCurrentLabel->setFixedWidth(mCurrentLabel->text().length() * LABEL_FONT_WIDTH);
|
mCurrentLabel->setFixedWidth(mCurrentLabel->text().length() * LABEL_FONT_WIDTH);
|
||||||
QPoint p2 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
QPoint p2 = {TOTAL_ROLL_DISTANCE + LABEL_MARGIN_LEFT, LABEL_MARGIN_TOP};
|
||||||
mNextLabel->setFixedHeight(30);
|
mNextLabel->setFixedHeight(30);
|
||||||
mNextLabel->show();
|
mNextLabel->show();
|
||||||
mNextLabel->move(p2);
|
mNextLabel->move(p2);
|
||||||
mNextLabel->setText(tr("Message2 of warn!"));
|
// mNextLabel->setText(tr("Message2 of warn!"));
|
||||||
mNextLabel->setFixedWidth(mNextLabel->text().length() * LABEL_FONT_WIDTH);
|
mNextLabel->setFixedWidth(mNextLabel->text().length() * LABEL_FONT_WIDTH);
|
||||||
mTimerId = startTimer(40);
|
mTimerId = startTimer(40);
|
||||||
mInitFlag = true;
|
mInitFlag = true;
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
|
|||||||
l->setMargin(0);
|
l->setMargin(0);
|
||||||
auto w = new RollingMessageWidget(this);
|
auto w = new RollingMessageWidget(this);
|
||||||
|
|
||||||
w->setMessageList(GUIErrorLW::getWARNMessages());
|
// w->setMessageList(GUIErrorLW::getWARNMessages());
|
||||||
w->setObjectName("borderWidget");
|
w->setObjectName("borderWidget");
|
||||||
l->addWidget(w);
|
l->addWidget(w);
|
||||||
connect(EventCenter::Default(), &EventCenter::ResponseDeviceTemperature, [=](QObject*, QObject* msg) {
|
connect(EventCenter::Default(), &EventCenter::ResponseDeviceTemperature, [=](QObject*, QObject* msg) {
|
||||||
@@ -82,18 +82,18 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
|
|||||||
QString* s = (QString*)msg;
|
QString* s = (QString*)msg;
|
||||||
lockIcon->setText(QString("%1%2").arg(*s).arg(tr("°C")));
|
lockIcon->setText(QString("%1%2").arg(*s).arg(tr("°C")));
|
||||||
});
|
});
|
||||||
connect(EventCenter::Default(), &EventCenter::WarnStateFlagChange, [=](QObject*, QObject* msg) {
|
// connect(EventCenter::Default(), &EventCenter::WarnStateFlagChange, [=](QObject*, QObject* msg) {
|
||||||
QVariant* var = (QVariant*)msg;
|
// QVariant* var = (QVariant*)msg;
|
||||||
int v = var->toInt();
|
// int v = var->toInt();
|
||||||
int f = 0x00000001;
|
// int f = 0x00000001;
|
||||||
for (int i = 0; i < 32; ++i) {
|
// for (int i = 0; i < 32; ++i) {
|
||||||
int d = (f<<i);
|
// int d = (f<<i);
|
||||||
if (d & v){
|
// if (d & v){
|
||||||
printf("warn %d, val:%d\r\n", i, v);
|
// printf("warn %d, val:%d\r\n", i, v);
|
||||||
if (w)w->updateMessagePriority(i,1);
|
// if (w)w->updateMessagePriority(i,1);
|
||||||
} else{
|
// } else{
|
||||||
if (w)w->updateMessagePriority(i,-1);
|
// if (w)w->updateMessagePriority(i,-1);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user