Skip to content

Commit

Permalink
fix: clock drawing error
Browse files Browse the repository at this point in the history
以本地时间为基准比较diff

Log: linuxdeepin/developer-center#5196
  • Loading branch information
FeiWang1119 authored and 18202781743 committed Aug 23, 2023
1 parent 29dd4e5 commit 62cdf20
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 4 deletions.
11 changes: 10 additions & 1 deletion worldclock/clock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ void Clock::paint(QPainter *painter, const QRect &rect)
m_clockPointSize = basePointSize * ratio;

QDateTime datetime(QDateTime::currentDateTime());
datetime = datetime.addSecs(datetime.offsetFromUtc() - m_utcOffset);
datetime = datetime.addSecs(timeDiff(m_utcOffset, datetime));
const QTime time(datetime.time());

const bool nightMode = !(time.hour() >= 6 && time.hour() < 18);
Expand Down Expand Up @@ -116,6 +116,15 @@ void Clock::paint(QPainter *painter, const QRect &rect)
}
}

int Clock::timeDiff(int utcOffset, const QDateTime &localTime)
{
if (!localTime.isValid()) {
QDateTime *currentTime = const_cast<QDateTime *>(&localTime);
*currentTime = QDateTime::currentDateTime();
}
return utcOffset - localTime.offsetFromUtc();
}

void Clock::setUTCOffset(const int utcOffset)
{
if (m_utcOffset == utcOffset)
Expand Down
3 changes: 3 additions & 0 deletions worldclock/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#pragma once

#include <QDateTime>
#include <QFont>
#include <QPixmap>

Expand All @@ -19,6 +20,8 @@ class Clock

void paint(QPainter *painter, const QRect &rect);

static int timeDiff(int utcOffset, const QDateTime &localTime = QDateTime());

private:
void updateClockPixmap(const bool isNightMode);
void updateLocationFont();
Expand Down
5 changes: 2 additions & 3 deletions worldclock/clockpanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,16 +137,15 @@ void ClockDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,

QString ClockDelegate::utcOffsetText(const int offset) const
{
const QDateTime localTime(QDateTime::currentDateTime());
const int time = (offset - localTime.offsetFromUtc()) / 3600;
const int time = (Clock::timeDiff(offset)) / 3600;
return QString("%1%2h").arg(time > 0 ? "+" : "").arg(time);
}

QString ClockDelegate::promptOfUtcOffsetText(const int offset) const
{
const QDateTime localTime(QDateTime::currentDateTime());

const double timeDelta = (offset - localTime.offsetFromUtc()) / 3600.0;
const double timeDelta = (Clock::timeDiff(offset, localTime)) / 3600.0;

QString dateLiteral;
if (localTime.time().hour() + timeDelta >= 24) {
Expand Down

0 comments on commit 62cdf20

Please sign in to comment.