#ifndef PAGEBREAKCONFIRMATIONDIALOG_H
#define PAGEBREAKCONFIRMATIONDIALOG_H

#include <QDialog>
#include <QList>
#include <QString>

class QVBoxLayout;
class QHBoxLayout;
class QLabel;
class QPushButton;
class QCheckBox;
class QTextEdit;
class QScrollArea;

struct PageBreakInfo {
    int rowIndex;
    QString headerText;
    int currentPage;
    int nextPage;
    int emptyRowsToAdd;
};

class PageBreakConfirmationDialog : public QDialog
{
    Q_OBJECT

public:
    explicit PageBreakConfirmationDialog(const QList<PageBreakInfo> &pageBreakInfos, QWidget *parent = nullptr);
    
    // Возвращает список строк, для которых пользователь подтвердил перенос
    QList<int> getConfirmedRows() const;
    
    // Возвращает, нужно ли показывать этот диалог в будущем
    bool shouldShowDialogInFuture() const;

private slots:
    void onConfirmAllClicked();
    void onConfirmSelectedClicked();
    void onSkipAllClicked();
    void onDetailsToggled(bool checked);
    void onSelectAllToggled(bool checked);

private:
    void setupUI();
    void updateDetailsText();
    void updateSelectAllCheckBox();
    
    QList<PageBreakInfo> m_pageBreakInfos;
    QList<int> m_confirmedRows;
    QList<QCheckBox*> m_rowCheckBoxes;
    
    QVBoxLayout *m_mainLayout;
    QLabel *m_titleLabel;
    QLabel *m_descriptionLabel;
    QScrollArea *m_checkBoxesScrollArea;
    QCheckBox *m_selectAllCheckBox;
    QTextEdit *m_detailsTextEdit;
    QCheckBox *m_showDetailsCheckBox;
    QCheckBox *m_rememberChoiceCheckBox;
    QPushButton *m_confirmAllButton;
    QPushButton *m_confirmSelectedButton;
    QPushButton *m_skipAllButton;
    QPushButton *m_cancelButton;
    
    bool m_showDialogInFuture;
};

#endif // PAGEBREAKCONFIRMATIONDIALOG_H 