void LocalStorageBox::paintEvent(QPaintEvent *e) { BoxContent::paintEvent(e); Painter p(this); p.setFont(st::boxTextFont); p.setPen(st::windowFg); checkLocalStoredCounts(); auto top = st::localStorageBoxSkip; if (_imagesCount > 0) { auto text = lng_settings_images_cached(lt_count, _imagesCount, lt_size, formatSizeText(Local::storageImagesSize() + Local::storageStickersSize() + Local::storageWebFilesSize())); p.drawTextLeft(st::boxPadding.left(), top, width(), text); top += st::boxTextFont->height + st::localStorageBoxSkip; } if (_audiosCount > 0) { auto text = lng_settings_audios_cached(lt_count, _audiosCount, lt_size, formatSizeText(Local::storageAudiosSize())); p.drawTextLeft(st::boxPadding.left(), top, width(), text); top += st::boxTextFont->height + st::localStorageBoxSkip; } else if (_imagesCount <= 0) { p.drawTextLeft(st::boxPadding.left(), top, width(), lang(lng_settings_no_data_cached)); top += st::boxTextFont->height + st::localStorageBoxSkip; } auto text = ([this]() -> QString { switch (_state) { case State::Clearing: return lang(lng_local_storage_clearing); case State::Cleared: return lang(lng_local_storage_cleared); case State::ClearFailed: return Lang::Hard::ClearPathFailed(); } return QString(); })(); if (!text.isEmpty()) { p.drawTextLeft(st::boxPadding.left(), top, width(), text); top += st::boxTextFont->height + st::localStorageBoxSkip; } }
int documentMaxStatusWidth(DocumentData *document) { auto result = st::normalFont->width(formatDownloadText(document->size, document->size)); const auto duration = document->getDuration(); if (const auto song = document->song()) { accumulate_max(result, st::normalFont->width(formatPlayedText(duration, duration))); accumulate_max(result, st::normalFont->width(formatDurationAndSizeText(duration, document->size))); } else if (const auto voice = document->voice()) { accumulate_max(result, st::normalFont->width(formatPlayedText(duration, duration))); accumulate_max(result, st::normalFont->width(formatDurationAndSizeText(duration, document->size))); } else if (document->isVideoFile()) { accumulate_max(result, st::normalFont->width(formatDurationAndSizeText(duration, document->size))); } else { accumulate_max(result, st::normalFont->width(formatSizeText(document->size))); } return result; }
QString formatGifAndSizeText(qint64 size) { return lng_duration_and_size(lt_duration, qsl("GIF"), lt_size, formatSizeText(size)); }
QString formatDurationAndSizeText(qint64 duration, qint64 size) { return lng_duration_and_size(lt_duration, formatDurationText(duration), lt_size, formatSizeText(size)); }
PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(new ReadyLocalMedia(img)), _thumbx(0), _thumby(0), _thumbw(0), _thumbh(0), _namew(0), _textw(0), _compressed(this, lang(lng_send_image_compressed), cCompressPastedImage()), _sendButton(this, lang(lng_send_button), st::btnSelectDone), _cancelButton(this, lang(lng_cancel), st::btnSelectCancel), _replyTo(img.replyTo) { connect(&_sendButton, SIGNAL(clicked()), this, SLOT(onSend())); connect(&_cancelButton, SIGNAL(clicked()), this, SLOT(onClose())); if (_img->type == ToPreparePhoto) { int32 maxW = 0, maxH = 0; for (PreparedPhotoThumbs::const_iterator i = _img->photoThumbs.cbegin(), e = _img->photoThumbs.cend(); i != e; ++i) { if (i->width() >= maxW && i->height() >= maxH) { _thumb = *i; maxW = _thumb.width(); maxH = _thumb.height(); } } int32 tw = _thumb.width(), th = _thumb.height(); if (!tw || !th) { tw = th = 1; } _thumbw = width() - st::boxPadding.left() - st::boxPadding.right(); if (_thumb.width() < _thumbw) { _thumbw = (_thumb.width() > 20) ? _thumb.width() : 20; } int32 maxthumbh = qMin(qRound(1.5 * _thumbw), int(st::confirmMaxHeight)); _thumbh = qRound(th * float64(_thumbw) / tw); if (_thumbh > maxthumbh) { _thumbw = qRound(_thumbw * float64(maxthumbh) / _thumbh); _thumbh = maxthumbh; if (_thumbw < 10) { _thumbw = 10; } } resizeMaxHeight(st::boxWideWidth, _thumbh + st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::boxPadding.bottom() + _compressed.height() + _sendButton.height()); _thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw * cIntRetinaFactor(), _thumbh * cIntRetinaFactor(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); _thumb.setDevicePixelRatio(cRetinaFactor()); } else { _compressed.hide(); if (!_img->photoThumbs.isEmpty()) { _thumb = _img->photoThumbs.cbegin().value(); int32 tw = _thumb.width(), th = _thumb.height(); if (_thumb.isNull() || !tw || !th) { _thumbw = _thumbx = _thumby = 0; } else if (tw > th) { _thumbw = (tw * st::mediaThumbSize) / th; _thumbx = (_thumbw - st::mediaThumbSize) / 2; _thumby = 0; } else { _thumbw = st::mediaThumbSize; _thumbx = 0; _thumby = ((th * _thumbw) / tw - st::mediaThumbSize) / 2; } } if (_thumbw) { _thumb = QPixmap::fromImage(_thumb.toImage().scaledToWidth(_thumbw * cIntRetinaFactor(), Qt::SmoothTransformation), Qt::ColorOnly); _thumb.setDevicePixelRatio(cRetinaFactor()); } resizeMaxHeight(st::boxWideWidth, st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::mediaPadding.top() + st::mediaThumbSize + st::mediaPadding.bottom() + st::boxPadding.bottom() + _sendButton.height()); _name = _img->filename; _namew = st::mediaFont->width(_name); _size = formatSizeText(_img->filesize); _textw = qMax(_namew, st::mediaFont->width(_size)); } prepare(); }