Improved format of timestamp in point details widget.

This commit is contained in:
23rd 2023-07-27 06:12:05 +03:00 committed by John Preston
parent 3e55380eed
commit b24be50afe
2 changed files with 27 additions and 3 deletions

View File

@ -14,6 +14,21 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "styles/style_statistics.h" #include "styles/style_statistics.h"
namespace Statistic { namespace Statistic {
namespace {
[[nodiscard]] QString FormatTimestamp(
float64 timestamp,
const QString &longFormat,
const QString &shortFormat) {
const auto dateTime = QDateTime::fromSecsSinceEpoch(timestamp / 1000);
if (dateTime.toUTC().time().hour() || dateTime.toUTC().time().minute()) {
return QLocale().toString(dateTime, longFormat);
} else {
return QLocale().toString(dateTime.date(), shortFormat);
}
}
} // namespace
PointDetailsWidget::PointDetailsWidget( PointDetailsWidget::PointDetailsWidget(
not_null<Ui::RpWidget*> parent, not_null<Ui::RpWidget*> parent,
@ -22,7 +37,9 @@ PointDetailsWidget::PointDetailsWidget(
: Ui::RpWidget(parent) : Ui::RpWidget(parent)
, _chartData(chartData) , _chartData(chartData)
, _textStyle(st::statisticsDetailsPopupStyle) , _textStyle(st::statisticsDetailsPopupStyle)
, _headerStyle(st::semiboldTextStyle) { , _headerStyle(st::semiboldTextStyle)
, _longFormat(u"ddd, MMM d hh:mm"_q)
, _shortFormat(u"ddd, MMM d"_q) {
const auto calculatedWidth = [&]{ const auto calculatedWidth = [&]{
const auto maxValueText = Ui::Text::String( const auto maxValueText = Ui::Text::String(
_textStyle, _textStyle,
@ -41,7 +58,10 @@ PointDetailsWidget::PointDetailsWidget(
{ {
const auto maxHeaderText = Ui::Text::String( const auto maxHeaderText = Ui::Text::String(
_headerStyle, _headerStyle,
_chartData.getDayString(0)); FormatTimestamp(
_chartData.x.front(),
_longFormat,
_shortFormat));
maxNameTextWidth = std::max( maxNameTextWidth = std::max(
maxHeaderText.maxWidth() maxHeaderText.maxWidth()
+ st::statisticsDetailsPopupPadding.left(), + st::statisticsDetailsPopupPadding.left(),
@ -92,7 +112,9 @@ void PointDetailsWidget::setXIndex(int xIndex) {
if (xIndex < 0) { if (xIndex < 0) {
return; return;
} }
_header.setText(_headerStyle, _chartData.getDayString(xIndex)); _header.setText(
_headerStyle,
FormatTimestamp(_chartData.x[xIndex], _longFormat, _shortFormat));
_lines.clear(); _lines.clear();
_lines.reserve(_chartData.lines.size()); _lines.reserve(_chartData.lines.size());

View File

@ -31,6 +31,8 @@ private:
const Data::StatisticalChart &_chartData; const Data::StatisticalChart &_chartData;
const style::TextStyle &_textStyle; const style::TextStyle &_textStyle;
const style::TextStyle &_headerStyle; const style::TextStyle &_headerStyle;
const QString _longFormat;
const QString _shortFormat;
Ui::Text::String _header; Ui::Text::String _header;
[[nodiscard]] int lineYAt(int index) const; [[nodiscard]] int lineYAt(int index) const;