From f2b34459c3700ce8de8627b8a0cbc4a2d57a5890 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 8 Sep 2026 01:47:32 +0300 Subject: [PATCH] =?UTF-8?q?chatgui:=20=D0=B1=D0=B0=D0=B1=D0=B1=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B5=D0=BE=20=E2=80=94=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=20+=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20m:ss?= =?UTF-8?q?=20(=D0=BD=D0=B0=D0=BF=D1=80.=201.5MB=20=C2=B7=200:45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/chatgui/src/messagedelegate.cpp | 11 +++++++---- tools/chatgui/src/messagelist.cpp | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/chatgui/src/messagedelegate.cpp b/tools/chatgui/src/messagedelegate.cpp index 6e070d2b..116ac7b2 100644 --- a/tools/chatgui/src/messagedelegate.cpp +++ b/tools/chatgui/src/messagedelegate.cpp @@ -395,7 +395,7 @@ MessageDelegate::Layout MessageDelegate::calcLayout( if (dlState == 1) { L.progressBarRect = QRect(bx, thH - 3, thW, 3); } L.videoPlayBtnRect = QRect(bx + thW / 2 - 24, thH / 2 - 24, 48, 48); - L.videoDurBadgeRect = QRect(bx + thW - 56, thH - 26, 48, 18); + L.videoDurBadgeRect = QRect(bx + thW - 116, thH - 26, 108, 18); if (!L.narrow) { int avatarY = L.bubbleRect.bottom() - kAvatar; @@ -1010,9 +1010,12 @@ void MessageDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio painter->drawPath(tri); } - /* duration-бейдж */ + /* бейдж: размер · длительность (m:ss) */ + qint64 fsz = index.data(MsgFileSizeRole).toLongLong(); + QString sizeStr = formatFileSize(fsz); QString durStr = index.data(MsgVoiceDurationRole).toString(); - if (!durStr.isEmpty()) { + QString badge = durStr.isEmpty() ? sizeStr : sizeStr + " \xC2\xB7 " + durStr; + if (!badge.isEmpty()) { QFont durFont = option.font; durFont.setPointSize(durFont.pointSize() - 1); painter->setFont(durFont); @@ -1020,7 +1023,7 @@ void MessageDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio painter->setBrush(QColor(0, 0, 0, 160)); painter->drawRoundedRect(L.videoDurBadgeRect, 5, 5); painter->setPen(Qt::white); - painter->drawText(L.videoDurBadgeRect, Qt::AlignCenter, durStr); + painter->drawText(L.videoDurBadgeRect, Qt::AlignCenter, badge); } painter->restore(); diff --git a/tools/chatgui/src/messagelist.cpp b/tools/chatgui/src/messagelist.cpp index 46506a1a..a147acc4 100644 --- a/tools/chatgui/src/messagelist.cpp +++ b/tools/chatgui/src/messagelist.cpp @@ -216,7 +216,8 @@ static void setVoiceMessageRoles(QStandardItem* item, const QByteArray& data, if (p.startsWith("dur=")) { qint64 durMs = p.mid(4).toLongLong(); if (durMs > 0) { - QString d = QString::number(durMs / 1000.0, 'f', 0) + "s"; + qint64 s = durMs / 1000; + QString d = QString("%1:%2").arg(s / 60).arg(s % 60, 2, 10, QChar('0')); item->setData(d, MsgVoiceDurationRole); } }