From 2325237d1447565ad27126d34d8ef33b3e7d751e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8D=E8=A3=85=E5=B0=8F=E6=9D=B0?= <73771431+beiklive@users.noreply.github.com> Date: Wed, 1 Mar 2023 11:50:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=A9=E5=9B=9E=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/traymenu.cpp | 153 ++++++++++++++++------------------------------- 1 file changed, 51 insertions(+), 102 deletions(-) diff --git a/src/traymenu.cpp b/src/traymenu.cpp index e3a23f5..c837077 100644 --- a/src/traymenu.cpp +++ b/src/traymenu.cpp @@ -182,7 +182,7 @@ void TrayMenu::animationShowToHide(const StateConditionGuard &GUARD) opacityAnimation->start(); connect(opacityAnimation, &QPropertyAnimation::finished, [=]() { - delete opacityAnimation; + delete opacityAnimation; opacityAnimation = nullptr; }); } } @@ -217,7 +217,7 @@ void TrayMenu::animationHideToShow(const StateConditionGuard &GUARD) opacityAnimation->start(); connect(opacityAnimation, &QPropertyAnimation::finished, [=]() { - delete opacityAnimation; + delete opacityAnimation; opacityAnimation = nullptr; }); } } @@ -408,104 +408,60 @@ void TrayMenu::initTime() HourCloseList->clear(); WeekCloseList->clear(); - for (auto i = WeekList->begin(); i != WeekList->end(); i++) + for (auto dayit = WeekList->begin(); dayit != WeekList->end(); dayit++) { - for (auto j = HourList->begin(); j != HourList->end(); j++) + for (auto hourit = HourList->begin(); hourit != HourList->end(); hourit++) { - for (auto k = MinuteList->begin(); k != MinuteList->end(); k++) + for (auto minuteit = MinuteList->begin(); minuteit != MinuteList->end(); minuteit++) { - for (auto l = SecondList->begin(); l != SecondList->end(); l++) + for (auto secondit = SecondList->begin(); secondit != SecondList->end(); secondit++) { - QString time = *i + " " + *j + ":" + *k + ":" + *l; - logger->info("[initTime] time: " + time.toStdString()); + int advanceFlag = 0; int finalSecond = -1; int finalMinute = -1; int finalHour = -1; int finalDay = -1; - if ("xx" == *l) - { - logger->error("[initTime] second is none "); + + auto advanceCharge = [](int num, int advance) -> int { + return num >= advance? 1 : 0; + }; + + auto advanceRemove = [](int num, int advance) -> int { + return num % advance; + }; + auto numberTrans = [](int num) -> QString { + return num == -1 ? "xx" : (num > 9 ? QString::number(num) : ("0" + QString::number(num))); + }; + + if( *secondit != "xx" ){ + finalSecond = (*secondit).toInt() + configInfo.clockMoveInterval; + advanceFlag = advanceCharge(finalSecond, 60); + finalSecond = advanceRemove(finalSecond, 60); } - else - { - int second = (*l).toInt(); - finalSecond = second + configInfo.clockMoveInterval; - if (finalSecond >= 60) - { - finalSecond = finalSecond % 60; - if ("xx" == *k) - { - logger->debug("[initTime] minute is none, do nothing"); - } - else - { - int minute = (*k).toInt(); - finalMinute = minute + 1; - if (finalMinute >= 60) - { - finalMinute = 0; - if ("xx" == *j) - { - logger->debug("[initTime] hour is none, do nothing"); - } - else - { - int hour = (*j).toInt(); - finalHour = hour + 1; - if (finalHour >= 24) - { - finalHour = 0; - if ("xx" == *i) - { - logger->debug("[initTime] day is none, do nothing"); - } - else - { - int day = (*i).toInt(); - finalDay = day + 1; - if (finalDay >= 7) - { - finalDay = finalDay - 7; - } - QString finalTime = findWeekDayName(finalDay) + " " + (finalHour < 10 ? ("0" + QString::number(finalHour)) : QString::number(finalHour)) + ":" + (finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute)) + ":" + (finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond)); - logger->info("[initTime] finalTime: " + finalTime.toStdString()); - SecondCloseList->append((finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond))); - MinuteCloseList->append((finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute))); - HourCloseList->append((finalHour < 10 ? ("0" + QString::number(finalHour)) : QString::number(finalHour))); - WeekCloseList->append(findWeekDayName(finalDay)); - } - } - else - { - QString finalTime = *i + " " + (finalHour < 10 ? ("0" + QString::number(finalHour)) : QString::number(finalHour)) + ":" + (finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute)) + ":" + (finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond)); - logger->info("[initTime] finalTime: " + finalTime.toStdString()); - SecondCloseList->append((finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond))); - MinuteCloseList->append((finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute))); - HourCloseList->append((finalHour < 10 ? ("0" + QString::number(finalHour)) : QString::number(finalHour))); - WeekCloseList->append(*i); - } - } - } - else - { - QString finalTime = *i + " " + *j + ":" + (finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute)) + ":" + (finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond)); - logger->info("[initTime] finalTime: " + finalTime.toStdString()); - SecondCloseList->append((finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond))); - MinuteCloseList->append((finalMinute < 10 ? ("0" + QString::number(finalMinute)) : QString::number(finalMinute))); - HourCloseList->append(*j); - } - } - } - else - { - QString finalTime = *i + " " + *j + ":" + *k + ":" + (finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond)); - logger->info("[initTime] finalTime: " + finalTime.toStdString()); - SecondCloseList->append((finalSecond < 10 ? ("0" + QString::number(finalSecond)) : QString::number(finalSecond))); - MinuteCloseList->append(*k); - HourCloseList->append(*j); - WeekCloseList->append(*i); - } + if( *minuteit != "xx" ){ + finalMinute = (*minuteit).toInt() + advanceFlag; + advanceFlag = advanceCharge(finalMinute, 60); + finalMinute = advanceRemove(finalMinute, 60); + } + if( *hourit != "xx" ){ + finalHour = (*hourit).toInt() + advanceFlag; + advanceFlag = advanceCharge(finalHour, 24); + finalHour = advanceRemove(finalHour, 24); + } + + if( *dayit != "xx" ){ + finalDay = (*dayit).toInt() + advanceFlag; + advanceFlag = advanceCharge(finalDay, 7); + finalDay = advanceRemove(finalDay, 7); } + + logger->info("[initTime] startTime: {} {}:{}:{}", findWeekDayName(finalDay).toStdString(), (*hourit).toStdString(), (*minuteit).toStdString(), (*secondit).toStdString()); + QString finalTime = findWeekDayName(finalDay) + " " + numberTrans(finalHour) + ":" + numberTrans(finalMinute) + ":" + numberTrans(finalSecond); + logger->info("[initTime] finalTime: " + finalTime.toStdString()); + SecondCloseList->append(numberTrans(finalSecond)); + MinuteCloseList->append(numberTrans(finalMinute)); + HourCloseList->append(numberTrans(finalHour)); + WeekCloseList->append(numberTrans(finalDay)); } } } @@ -526,7 +482,7 @@ void TrayMenu::timeStringToTimeList(QString timeString, QList *timeList { if (7 == maxNum) // 如果是星期列表,则将数字转换为星期名称 { - timeList->append(findWeekDayName(i)); + timeList->append(QString::number(i)); } else { @@ -540,14 +496,7 @@ void TrayMenu::timeStringToTimeList(QString timeString, QList *timeList QStringList timeListString = timeString.split(" "); for (auto i = timeListString.begin(); i != timeListString.end(); i++) { - if (7 == maxNum) - { - timeList->append(findWeekDayName((*i).toInt())); - } - else - { - timeList->push_back(*i); - } + timeList->append(*i); } } } @@ -572,7 +521,7 @@ void TrayMenu::CheckTimeToCtrlClock() for (auto k = WeekList->begin(); k != WeekList->end(); k++) { logger->debug("current_week = {}, find = {}", current_week.toStdString(), findWeekDayName((*k).toInt()).toStdString()); - if (current_week == *k) + if (current_week == findWeekDayName((*k).toInt())) { for (auto j = HourList->begin(); j != HourList->end(); j++) { @@ -603,7 +552,7 @@ void TrayMenu::CheckTimeToCtrlClock() { for (auto k = WeekCloseList->begin(); k != WeekCloseList->end(); k++) { - if (current_week == *k) + if (current_week == findWeekDayName((*k).toInt())) { for (auto j = HourCloseList->begin(); j != HourCloseList->end(); j++) { @@ -648,4 +597,4 @@ const ClockBodyState TrayMenu::GetClockBodyCurState() const ClockBodyState TrayMenu::GetClockBodyTargetState() { return m_clockBodyStateMachine.targetState; -} \ No newline at end of file +}