#ifndef DETAILEDTOWN_H
#define DETAILEDTOWN_H

#include <QMap>

#include "PageBaseWidget.h"

#include "DetailedBaseWidget.h"
#include "SequenceFrame.h"

namespace Ui {
class DetailedTown;
}

class DetailedTown : public PageBaseWidget
{
    Q_OBJECT

public:
    explicit DetailedTown(MainWindow* parent = nullptr);
    ~DetailedTown();

    PageType GetPageType() const override { return PageBaseWidget::PageType::PT_DetailedTown; }
    void SetCurrent(DetailedType dt);

    void SetSequencePos(const QPoint& pos);
    void SetMediaInfo(MediaInfo* mediaInfo) {
        currentMediaInfo_ = mediaInfo;
    }

protected:
    void keyPressEvent(QKeyEvent* event) override;
    void keyReleaseEvent(QKeyEvent* event) override;
    void mouseReleaseEvent(QMouseEvent* event) override;

private:
    void OnShowLast();
    void OnShowNext();
    void OnEnterHome();
    

    void InitDetailedWidget();
    void InitLastNextButton();
    void InitSequenceFrame();
    bool ShowIndex(DetailedType dt);

    void AddDetailedWidget(DetailedBaseWidget* widget);

private:
    Ui::DetailedTown *ui;

    int m_current{ 0 };
    QMap<DetailedType, DetailedBaseWidget*> m_detailedBaseWidgets;

    SequenceFrame* sequenceFrame_{ nullptr };
    MediaInfo* currentMediaInfo_{ nullptr };
    bool keyYPressed{ false };
};

#endif // DETAILEDTOWN_H