#pragma once #include #include class QDateEdit; class QLabel; class QLineEdit; class QPushButton; // One photo in the batch: thumbnail, caption, date, and its own upload status. // A single-photo post is just a batch of one, so the window runs one code path. class PhotoItemWidget : public QWidget { Q_OBJECT public: enum class Status { Pending, Preparing, Uploading, Success, Error }; explicit PhotoItemWidget(QString sourcePath, QWidget *parent = nullptr); QString sourcePath() const { return m_sourcePath; } QString caption() const; QString date() const; // yyyy-MM-dd Status status() const { return m_status; } void setStatus(Status status, const QString &message = {}, const QString &url = {}); signals: void removeRequested(PhotoItemWidget *self); private: QString m_sourcePath; Status m_status = Status::Pending; QLabel *m_thumb = nullptr; QLineEdit *m_caption = nullptr; QDateEdit *m_date = nullptr; QLabel *m_statusLabel = nullptr; QPushButton *m_remove = nullptr; };