Files
photog/desktop/managepostwidget.cpp
T

92 lines
2.7 KiB
C++
Raw Normal View History

#include "managepostwidget.h"
#include <QHBoxLayout>
#include <QImage>
#include <QLabel>
#include <QPixmap>
#include <QPushButton>
#include <QVBoxLayout>
namespace {
constexpr int kThumbSize = 72;
}
ManagePostWidget::ManagePostWidget(const QString &slug, const QString &caption,
const QString &date, const QStringList &tags,
const QString &url, QWidget *parent)
: QWidget(parent)
, m_slug(slug)
, m_caption(caption)
, m_date(date)
, m_tags(tags)
, m_url(url)
{
auto *row = new QHBoxLayout(this);
row->setContentsMargins(0, 4, 0, 4);
m_thumb = new QLabel;
m_thumb->setFixedSize(kThumbSize, kThumbSize);
m_thumb->setAlignment(Qt::AlignCenter);
m_thumb->setFrameShape(QFrame::Box);
row->addWidget(m_thumb, 0, Qt::AlignTop);
auto *fields = new QVBoxLayout;
m_captionLabel = new QLabel;
m_captionLabel->setTextFormat(Qt::RichText);
m_captionLabel->setOpenExternalLinks(true);
m_captionLabel->setWordWrap(true);
fields->addWidget(m_captionLabel);
m_metaLabel = new QLabel;
m_metaLabel->setWordWrap(true);
m_metaLabel->setStyleSheet(QStringLiteral("color:#a89984;"));
fields->addWidget(m_metaLabel);
row->addLayout(fields, 1);
m_edit = new QPushButton(QStringLiteral("Edit"));
connect(m_edit, &QPushButton::clicked, this, [this]() { emit editRequested(this); });
row->addWidget(m_edit, 0, Qt::AlignTop);
m_delete = new QPushButton(QStringLiteral("Delete"));
connect(m_delete, &QPushButton::clicked, this, [this]() { emit deleteRequested(this); });
row->addWidget(m_delete, 0, Qt::AlignTop);
refreshSummary();
}
void ManagePostWidget::setThumbnail(const QImage &image)
{
if (image.isNull()) {
m_thumb->setText(QStringLiteral("?"));
return;
}
m_thumb->setPixmap(QPixmap::fromImage(image).scaled(
kThumbSize, kThumbSize, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
}
void ManagePostWidget::applyEdit(const QString &caption, const QString &date,
const QStringList &tags)
{
m_caption = caption;
m_date = date;
m_tags = tags;
refreshSummary();
}
void ManagePostWidget::setBusy(bool busy)
{
m_edit->setEnabled(!busy);
m_delete->setEnabled(!busy);
}
void ManagePostWidget::refreshSummary()
{
const QString shown = m_caption.isEmpty() ? m_slug : m_caption;
m_captionLabel->setText(
QStringLiteral("<a href=\"%1\">%2</a>").arg(m_url, shown.toHtmlEscaped()));
QString meta = m_date;
if (!m_tags.isEmpty())
meta += QStringLiteral(" · ") + m_tags.join(QStringLiteral(", "));
m_metaLabel->setText(meta);
}