#pragma once #include #include #include "settings.h" class QDateEdit; class QLabel; class QLineEdit; class QPushButton; class QSpinBox; class QStackedWidget; class QVBoxLayout; class PhotoItemWidget; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); private: QWidget *buildSettingsPage(); QWidget *buildPostPage(); void showSettings(); void showPost(); void saveAndTest(); void chooseImages(); void addItem(const QString &path); void removeItem(PhotoItemWidget *item); void clearItems(); void submit(); void pumpQueue(); // starts queued items up to the concurrency cap void startItem(PhotoItemWidget *item); int inFlightCount() const; // items currently preparing or uploading void refreshPosting(); // updates the Post button + summary from item states Settings m_settings; QStackedWidget *m_stack = nullptr; // Settings page QLineEdit *m_baseUrl = nullptr; QLineEdit *m_username = nullptr; QLineEdit *m_password = nullptr; QSpinBox *m_concurrency = nullptr; QPushButton *m_saveButton = nullptr; QPushButton *m_settingsBack = nullptr; QLabel *m_settingsStatus = nullptr; // Post page QVBoxLayout *m_itemsLayout = nullptr; // holds the PhotoItemWidgets QList m_items; QLabel *m_emptyHint = nullptr; QPushButton *m_postButton = nullptr; QLabel *m_postSummary = nullptr; QLabel *m_lastPost = nullptr; // Bulk-post state: items waiting for a free upload slot, plus the batch's // credentials captured once at submit time. QList m_queue; QString m_batchBaseUrl; QString m_batchUsername; QString m_batchPassword; QString m_batchCacheDir; };