summary refs log tree commit diff
path: root/src/dialogs/PreviewUploadOverlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dialogs/PreviewUploadOverlay.cpp')
-rw-r--r--src/dialogs/PreviewUploadOverlay.cpp283
1 files changed, 140 insertions, 143 deletions
diff --git a/src/dialogs/PreviewUploadOverlay.cpp b/src/dialogs/PreviewUploadOverlay.cpp

index 66fa1b37..e850c03b 100644 --- a/src/dialogs/PreviewUploadOverlay.cpp +++ b/src/dialogs/PreviewUploadOverlay.cpp
@@ -29,188 +29,185 @@ PreviewUploadOverlay::PreviewUploadOverlay(QWidget *parent) , upload_{tr("Upload"), this} , cancel_{tr("Cancel"), this} { - auto hlayout = new QHBoxLayout; - hlayout->addStretch(1); - hlayout->addWidget(&cancel_); - hlayout->addWidget(&upload_); - hlayout->setMargin(0); - - auto vlayout = new QVBoxLayout{this}; - vlayout->addWidget(&titleLabel_); - vlayout->addWidget(&infoLabel_); - vlayout->addWidget(&fileName_); - vlayout->addLayout(hlayout); - vlayout->setSpacing(conf::modals::WIDGET_SPACING); - vlayout->setMargin(conf::modals::WIDGET_MARGIN); - - upload_.setDefault(true); - connect(&upload_, &QPushButton::clicked, [this]() { - emit confirmUpload(data_, mediaType_, fileName_.text()); - close(); - }); - - connect(&fileName_, &QLineEdit::returnPressed, this, [this]() { - emit confirmUpload(data_, mediaType_, fileName_.text()); - close(); - }); - - connect(&cancel_, &QPushButton::clicked, this, [this]() { - emit aborted(); - close(); - }); + auto hlayout = new QHBoxLayout; + hlayout->addStretch(1); + hlayout->addWidget(&cancel_); + hlayout->addWidget(&upload_); + hlayout->setMargin(0); + + auto vlayout = new QVBoxLayout{this}; + vlayout->addWidget(&titleLabel_); + vlayout->addWidget(&infoLabel_); + vlayout->addWidget(&fileName_); + vlayout->addLayout(hlayout); + vlayout->setSpacing(conf::modals::WIDGET_SPACING); + vlayout->setMargin(conf::modals::WIDGET_MARGIN); + + upload_.setDefault(true); + connect(&upload_, &QPushButton::clicked, [this]() { + emit confirmUpload(data_, mediaType_, fileName_.text()); + close(); + }); + + connect(&fileName_, &QLineEdit::returnPressed, this, [this]() { + emit confirmUpload(data_, mediaType_, fileName_.text()); + close(); + }); + + connect(&cancel_, &QPushButton::clicked, this, [this]() { + emit aborted(); + close(); + }); } void PreviewUploadOverlay::init() { - QSize winsize; - QPoint center; - - auto window = MainWindow::instance(); - if (window) { - winsize = window->frameGeometry().size(); - center = window->frameGeometry().center(); - } else { - nhlog::ui()->warn("unable to retrieve MainWindow's size"); - } - - fileName_.setText(QFileInfo{filePath_}.fileName()); - - setAutoFillBackground(true); - setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); - setWindowModality(Qt::WindowModal); - - QFont font; - font.setPointSizeF(font.pointSizeF() * conf::modals::LABEL_MEDIUM_SIZE_RATIO); - - titleLabel_.setFont(font); - titleLabel_.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - titleLabel_.setAlignment(Qt::AlignCenter); - infoLabel_.setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); - fileName_.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - fileName_.setAlignment(Qt::AlignCenter); - upload_.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - cancel_.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - - if (isImage_) { - infoLabel_.setAlignment(Qt::AlignCenter); - - const auto maxWidth = winsize.width() * 0.8; - const auto maxHeight = winsize.height() * 0.8; - - // Scale image preview to fit into the application window. - infoLabel_.setPixmap(utils::scaleDown(maxWidth, maxHeight, image_)); - move(center.x() - (width() * 0.5), center.y() - (height() * 0.5)); - } else { - infoLabel_.setAlignment(Qt::AlignLeft); - } - infoLabel_.setScaledContents(false); - - show(); + QSize winsize; + QPoint center; + + auto window = MainWindow::instance(); + if (window) { + winsize = window->frameGeometry().size(); + center = window->frameGeometry().center(); + } else { + nhlog::ui()->warn("unable to retrieve MainWindow's size"); + } + + fileName_.setText(QFileInfo{filePath_}.fileName()); + + setAutoFillBackground(true); + setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); + setWindowModality(Qt::WindowModal); + + QFont font; + font.setPointSizeF(font.pointSizeF() * conf::modals::LABEL_MEDIUM_SIZE_RATIO); + + titleLabel_.setFont(font); + titleLabel_.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + titleLabel_.setAlignment(Qt::AlignCenter); + infoLabel_.setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); + fileName_.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + fileName_.setAlignment(Qt::AlignCenter); + upload_.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + cancel_.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + + if (isImage_) { + infoLabel_.setAlignment(Qt::AlignCenter); + + const auto maxWidth = winsize.width() * 0.8; + const auto maxHeight = winsize.height() * 0.8; + + // Scale image preview to fit into the application window. + infoLabel_.setPixmap(utils::scaleDown(maxWidth, maxHeight, image_)); + move(center.x() - (width() * 0.5), center.y() - (height() * 0.5)); + } else { + infoLabel_.setAlignment(Qt::AlignLeft); + } + infoLabel_.setScaledContents(false); + + show(); } void PreviewUploadOverlay::setLabels(const QString &type, const QString &mime, uint64_t upload_size) { - if (mediaType_.split('/')[0] == "image") { - if (!image_.loadFromData(data_)) { - titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type)); - } else { - titleLabel_.setText(QString{tr(DEFAULT)}.arg(mediaType_)); - } - isImage_ = true; + if (mediaType_.split('/')[0] == "image") { + if (!image_.loadFromData(data_)) { + titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type)); } else { - auto const info = QString{tr("Media type: %1\n" - "Media size: %2\n")} - .arg(mime) - .arg(utils::humanReadableFileSize(upload_size)); - - titleLabel_.setText(QString{tr(DEFAULT)}.arg("file")); - infoLabel_.setText(info); + titleLabel_.setText(QString{tr(DEFAULT)}.arg(mediaType_)); } + isImage_ = true; + } else { + auto const info = QString{tr("Media type: %1\n" + "Media size: %2\n")} + .arg(mime) + .arg(utils::humanReadableFileSize(upload_size)); + + titleLabel_.setText(QString{tr(DEFAULT)}.arg("file")); + infoLabel_.setText(info); + } } void PreviewUploadOverlay::setPreview(const QImage &src, const QString &mime) { - nhlog::ui()->info("Pasting image with size: {}x{}, format: {}", - src.height(), - src.width(), - mime.toStdString()); - - auto const &split = mime.split('/'); - auto const &type = split[1]; - - QBuffer buffer(&data_); - buffer.open(QIODevice::WriteOnly); - if (src.save(&buffer, type.toStdString().c_str())) - titleLabel_.setText(QString{tr(DEFAULT)}.arg("image")); - else - titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type)); - - mediaType_ = mime; - filePath_ = "clipboard." + type; - image_.convertFromImage(src); - isImage_ = true; + nhlog::ui()->info( + "Pasting image with size: {}x{}, format: {}", src.height(), src.width(), mime.toStdString()); + + auto const &split = mime.split('/'); + auto const &type = split[1]; + QBuffer buffer(&data_); + buffer.open(QIODevice::WriteOnly); + if (src.save(&buffer, type.toStdString().c_str())) titleLabel_.setText(QString{tr(DEFAULT)}.arg("image")); - init(); + else + titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type)); + + mediaType_ = mime; + filePath_ = "clipboard." + type; + image_.convertFromImage(src); + isImage_ = true; + + titleLabel_.setText(QString{tr(DEFAULT)}.arg("image")); + init(); } void PreviewUploadOverlay::setPreview(const QByteArray data, const QString &mime) { - auto const &split = mime.split('/'); - auto const &type = split[1]; + auto const &split = mime.split('/'); + auto const &type = split[1]; - data_ = data; - mediaType_ = mime; - filePath_ = "clipboard." + type; - isImage_ = false; + data_ = data; + mediaType_ = mime; + filePath_ = "clipboard." + type; + isImage_ = false; - setLabels(type, mime, data_.size()); - init(); + setLabels(type, mime, data_.size()); + init(); } void PreviewUploadOverlay::setPreview(const QString &path) { - QFile file{path}; - - if (!file.open(QIODevice::ReadOnly)) { - nhlog::ui()->warn("Failed to open file ({}): {}", - path.toStdString(), - file.errorString().toStdString()); - close(); - return; - } + QFile file{path}; - QMimeDatabase db; - auto mime = db.mimeTypeForFileNameAndData(path, &file); + if (!file.open(QIODevice::ReadOnly)) { + nhlog::ui()->warn( + "Failed to open file ({}): {}", path.toStdString(), file.errorString().toStdString()); + close(); + return; + } - if ((data_ = file.readAll()).isEmpty()) { - nhlog::ui()->warn("Failed to read media: {}", file.errorString().toStdString()); - close(); - return; - } + QMimeDatabase db; + auto mime = db.mimeTypeForFileNameAndData(path, &file); - auto const &split = mime.name().split('/'); + if ((data_ = file.readAll()).isEmpty()) { + nhlog::ui()->warn("Failed to read media: {}", file.errorString().toStdString()); + close(); + return; + } - mediaType_ = mime.name(); - filePath_ = file.fileName(); - isImage_ = false; + auto const &split = mime.name().split('/'); - setLabels(split[1], mime.name(), data_.size()); - init(); + mediaType_ = mime.name(); + filePath_ = file.fileName(); + isImage_ = false; + + setLabels(split[1], mime.name(), data_.size()); + init(); } void PreviewUploadOverlay::keyPressEvent(QKeyEvent *event) { - if (event->matches(QKeySequence::Cancel)) { - emit aborted(); - close(); - } else { - QWidget::keyPressEvent(event); - } + if (event->matches(QKeySequence::Cancel)) { + emit aborted(); + close(); + } else { + QWidget::keyPressEvent(event); + } } \ No newline at end of file