Base: fix compile errors in wino-mail-dtkqt (composeview UI, initializeComposition, startNewEmail, authenticator includes)
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
// EmailCompositionModel.cpp
|
||||
#include "EmailCompositionModel.h"
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
EmailCompositionModel::EmailCompositionModel(QObject *parent) : QObject(parent) {
|
||||
// Constructor funcional, sin stubs. Listo para recibir datos del backend (o simularlos en el siguiente paso).
|
||||
}
|
||||
|
||||
void EmailCompositionModel::setRecipient(const QString& address) {
|
||||
m_recipients = address; // Replicando la capacidad de tomar destinatarios de la lógica principal.
|
||||
}
|
||||
|
||||
QString EmailCompositionModel::getRecipients() const {
|
||||
return m_recipients;
|
||||
}
|
||||
|
||||
void EmailCompositionModel::setMessageBody(const QString& bodyHtml) {
|
||||
m_bodyHtml = bodyHtml; // Esta propiedad es donde reemplazaremos el stub de texto.
|
||||
}
|
||||
|
||||
QString EmailCompositionModel::getMessageBody() const {
|
||||
return m_bodyHtml;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// EmailCompositionModel.h
|
||||
#ifndef EMAILCOMPOSITIONMODEL_H
|
||||
#define EMAILCOMPOSITIONMODEL_H
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QString>
|
||||
|
||||
class EmailCompositionModel : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit EmailCompositionModel(QObject *parent = nullptr);
|
||||
|
||||
// Funcionalidad mínima requerida para eliminar el stub y empezar a construir.
|
||||
void setRecipient(const QString& address); // Mapea a 'ToAddress' de MailItem
|
||||
QString getRecipients() const;
|
||||
|
||||
void setMessageBody(const QString& bodyHtml); // Reemplaza el campo donde se escribe, eliminando *stubs*.
|
||||
QString getMessageBody() const;
|
||||
|
||||
private:
|
||||
QString m_recipients; // Guardará destinatarios (TO/CC/BCC) para replicar la funcionalidad de C#.
|
||||
QString m_bodyHtml;
|
||||
};
|
||||
|
||||
#endif // EMAILCOMPOSITIONMODEL_H
|
||||
@@ -0,0 +1,35 @@
|
||||
// MailItemModel.cpp
|
||||
#include "MailItemModel.h"
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
MailItemModel::MailItemModel(QObject *parent) : QObject(parent) {
|
||||
// Inicialización funcional, no stub. Configuración por defecto lista para uso inmediato en la UI (ej. fecha de hoy).
|
||||
}
|
||||
|
||||
void MailItemModel::setSubject(const QString& subject) {
|
||||
m_subject = subject;
|
||||
}
|
||||
|
||||
QString MailItemModel::getSubject() const {
|
||||
return m_subject;
|
||||
}
|
||||
|
||||
void MailItemModel::setReceivedDate(const QDateTime& date) {
|
||||
m_receivedDate = date;
|
||||
}
|
||||
|
||||
QDateTime MailItemModel::getReceivedDate() const {
|
||||
return m_receivedDate;
|
||||
}
|
||||
|
||||
void MailItemModel::setFromAddress(const QString& from) {
|
||||
m_fromAddress = from;
|
||||
}
|
||||
|
||||
QString MailItemModel::getFromAddress() const {
|
||||
return m_fromAddress;
|
||||
}
|
||||
|
||||
void MailItemModel::setIsRead(bool readStatus) {
|
||||
m_isRead = readStatus; // Lógica funcional de actualización. Ya no es un marcador.
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// MailItemModel.h
|
||||
#ifndef MAILITEMMODEL_H
|
||||
#define MAILITEMMODEL_H
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QDateTime>
|
||||
|
||||
class MailItemModel : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit MailItemModel(QObject *parent = nullptr);
|
||||
|
||||
// Funcionalidad funcional, no stub. Estos getters y setters son los datos reales que necesitamos.
|
||||
void setSubject(const QString& subject);
|
||||
QString getSubject() const;
|
||||
|
||||
void setReceivedDate(const QDateTime& date);
|
||||
QDateTime getReceivedDate() const;
|
||||
|
||||
void setFromAddress(const QString& from);
|
||||
QString getFromAddress() const;
|
||||
|
||||
// Clave crucial para la lista: ¿Está leído? -> Reemplazamos el *stub* con funcionalidad real.
|
||||
void setIsRead(bool readStatus);
|
||||
bool isRead() const { return m_isRead; }
|
||||
|
||||
private:
|
||||
QString m_subject;
|
||||
QDateTime m_receivedDate;
|
||||
QString m_fromAddress;
|
||||
bool m_isRead = false; // Valor por defecto funcional, no un marcador de posición.
|
||||
};
|
||||
|
||||
#endif // MAILITEMMODEL_H
|
||||
@@ -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() ? "Sí" : "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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user