#pragma once #include "FomodViewModel.h" #include #include #include #include class ScaleLabel; using LabelImagePair = std::pair; /* +----------------------------------------------------------+ |n/N X | +---+--------------------------------------------------+---+ | | | | | | | | | | | | | | | | | | | | | | | | | < | Image | > | | | | | | | | | | | | | | | | | | | label | | +------+------+------+---------------------------------+---+ | | | | ...previews | | | | | | +------+------+------+-------------------------------------+ */ class FomodImageViewer final : public QDialog { Q_OBJECT public: explicit FomodImageViewer(QWidget* parent, const QString& fomodPath, const std::shared_ptr& activeStep, const std::shared_ptr& activePlugin); private: void collectImages(); QWidget* createCenterRow(QWidget* parent); QWidget* createSinglePhotoPane(QWidget* parent); QScrollArea* createPreviewImages(QWidget* parent); QPushButton* createBackButton(QWidget* parent) const; QPushButton* createForwardButton(QWidget* parent) const; QWidget* createTopBar(QWidget* parent); QPushButton* createCloseButton(QWidget* parent); void updateCounterText() const; void goBack(); void goForward(); void select(int index); void keyPressEvent(QKeyEvent* event) override; void showEvent(QShowEvent* event) override; std::vector mLabelsAndImages; std::vector mImagePanes{}; int mCurrentIndex{ 0 }; QString mFomodPath; const std::shared_ptr& mActiveStep; const std::shared_ptr& mActivePlugin; QWidget* mCenterRow{ nullptr }; QWidget* mTopBar{ nullptr }; QWidget* mCloseButton{ nullptr }; QPushButton* mBackButton{ nullptr }; QPushButton* mForwardButton{ nullptr }; QLabel* mCounter{ nullptr }; QWidget* mMainImageWrapper{ nullptr }; ScaleLabel* mMainImage{ nullptr }; QLabel* mLabel{ nullptr }; QScrollArea* mPreviewImages{ nullptr }; };