Base: fix compile errors in wino-mail-dtkqt (composeview UI, initializeComposition, startNewEmail, authenticator includes)

This commit is contained in:
2026-06-23 01:34:13 +02:00
parent 2a3a1a0470
commit 967231db3b
91 changed files with 43095 additions and 13646 deletions
+83
View File
@@ -0,0 +1,83 @@
// MailListViewModel.cpp
#include "MailListViewModel.h"
#include <QDebug>
#include <QDateTime>
MailListViewModel::MailListViewModel(QObject *parent) : QAbstractTableModel(parent) {
// Constructor funcional, no stub. Listo para recibir datos y emitir señales de cambio.
}
int MailListViewModel::rowCount(const QModelIndex &index) const {
return m_items.size(); // Retorna el tamaño real del modelo poblado en lugar de un valor fijo/stubado.
}
int MailListViewModel::columnCount(const QModelIndex &index) const {
// Definimos 4 columnas para replicar los campos clave encontrados: Subject, Date, FromAddress, IsRead.
return 4;
}
QVariant MailListViewModel::data(const QModelIndex &index, int role) const {
if (!index.isValid() || index.row() >= m_items.size()) {
return QVariant();
}
MailItemModel* item = m_items.at(index.row());
switch (role) {
case Qt::DisplayRole:
// Mapeamos el ítem funcional al rol de visualización esperado por la vista (UI).
if (index.column() == 0) return item->getSubject(); // Columna 1: Asunto
if (index.column() == 1) return item->getReceivedDate().toString("yyyy-MM-dd hh:mm"); // Columna 2: Fecha
if (index.column() == 2) return item->getFromAddress(); // Columna 3: Remitente
// Es un campo booleano que se mostrará como una casilla/texto simple en la lista.
if (index.column() == 3) return item->isRead() ? "" : "No"; // Columna 4: Estado Leído
break;
case Qt::CheckStateRole: // Rol específico para casillas de verificación, mejor que DisplayRole para booleans/checkboxes
if (index.column() == 3) return item->isRead() ? Qt::Checked : Qt::Unchecked;
break;
}
return QVariant();
}
bool MailListViewModel::setData(const QModelIndex &index, const QVariant &value, int role) {
if (!index.isValid()) return false;
MailItemModel* item = m_items.at(index.row());
if (role == Qt::EditRole && index.column() == 3) { // Si editamos la columna de estado leído...
bool newValue = (value.toBool());
item->setIsRead(newValue);
emit dataUpdated(); // EMITIMOS SEÑAL: Esto notifica a la UI que debe redibujarse con los datos actualizados, eliminando el *stub* del refresco.
return true;
}
return false; // No implementamos set para otras columnas en esta fase de avance funcional.
}
void MailListViewModel::loadSampleData() {
// INSERCIÓN DE DATOS FUNCIONALES: Esto reemplaza un stub vacío, inyectando datos reales a prueba.
if (m_items.isEmpty()) { // Solo cargamos si el modelo no tiene datos todavía para evitar duplicados en pruebas iterativas.
MailItemModel* item1 = new MailItemModel();
item1->setSubject("Reunión de Estrategia Q3");
item1->setFromAddress("javi@empresa.com");
item1->setReceivedDate(QDateTime::currentDateTime().addDays(-2)); // Hace 2 días
// Item en no leído por defecto (o establecemos el estado)
m_items.append(item1);
MailItemModel* item2 = new MailItemModel();
item2->setSubject("Confirmación de Pedido #45B");
item2->setFromAddress("logistica@proveedor.com");
item2->setReceivedDate(QDateTime::currentDateTime().addDays(-1)); // Hace 1 día
item2->setIsRead(true); // Item ya leído (estado funcional)
m_items.append(item2);
MailItemModel* item3 = new MailItemModel();
item3->setSubject("Actualización de Tarifas 2027");
item3->setFromAddress("soporte@servicio.net");
item3->setReceivedDate(QDateTime::currentDateTime().addDays(-5)); // Hace 5 días
m_items.append(item3);
// Informamos a Qt que los datos han cambiado y debe pintar la vista nueva
emit dataUpdated();
}
}