// MailListViewModel.h
#ifndef MAILLISTVIEWMODEL_H
#define MAILLISTVIEWMODEL_H

#include <QtCore/QAbstractTableModel>
#include "models/MailItemModel.h" // Asegura que el modelo de ítem exista

class MailListViewModel : public QAbstractTableModel {
    Q_OBJECT
public:
    explicit MailListViewModel(QObject *parent = nullptr);

    // Funcionalidad funcional para la UI. Implementa las interfaces necesarias para mostrar datos reales.
    int rowCount(const QModelIndex &index) const override;
    int columnCount(const QModelIndex &index) const override;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;

public slots:
    // Método que simularía la recepción de datos del backend. Usamos esto para poblar el modelo funcionalmente.
    void loadSampleData(); 

signals:
    void dataUpdated(); // Señal funcional para notificar a la UI cuando los datos cambien (sin usar *stubs*).

private:
    QList<MailItemModel*> m_items; // Almacena las instancias funcionales de MailItemModel.
};

#endif // MAILLISTVIEWMODEL_H