QString _getCrashReportFile(const QMimeData *m) { if (!m || m->urls().size() != 1 || !m->urls().at(0).isLocalFile()) return QString(); auto file = psConvertFileUrl(m->urls().at(0)); return file.endsWith(qstr(".telegramcrash"), Qt::CaseInsensitive) ? file : QString(); }
bool CoverWidget::mimeDataHasImage(const QMimeData *mimeData) const { if (!mimeData) return false; if (mimeData->hasImage()) return true; auto uriListFormat = qsl("text/uri-list"); if (!mimeData->hasFormat(uriListFormat)) return false; const auto &urls = mimeData->urls(); if (urls.size() != 1) return false; auto &url = urls.at(0); if (!url.isLocalFile()) return false; auto file = psConvertFileUrl(url); QFileInfo info(file); if (info.isDir()) return false; quint64 s = info.size(); if (s >= MaxUploadDocumentSize) return false; for (auto &ext : cImgExtensions()) { if (file.endsWith(ext, Qt::CaseInsensitive)) { return true; } } return false; }
void CoverWidget::dropEvent(QDropEvent *e) { auto mimeData = e->mimeData(); QImage img; if (mimeData->hasImage()) { img = qvariant_cast<QImage>(mimeData->imageData()); } else { const auto &urls = mimeData->urls(); if (urls.size() == 1) { auto &url = urls.at(0); if (url.isLocalFile()) { img = App::readImage(psConvertFileUrl(url)); } } } if (!_dropArea->hiding()) { _dropArea->hideAnimated(func(this, &CoverWidget::dropAreaHidden)); } e->acceptProposedAction(); showSetPhotoBox(img); }