fix: EmailListModel as QAbstractTableModel for proper MailListView display
- Changed EmailListModel from QAbstractListModel to QAbstractTableModel - Added columnCount() returning 3 columns (Subject, Sender, Date) - Added headerData() for column headers (Asunto, De, Fecha) - Modified data() to handle Qt::DisplayRole per column index - Updated MailListView::setModel() to use column indices instead of role-based column hiding - Added proper column resize modes (Stretch for Subject/Sender, ResizeToContents for Date) - Default sort by Date column descending
This commit is contained in:
+10
-26
@@ -72,33 +72,17 @@ void MailListView::setupUI() {
|
||||
void MailListView::setModel(EmailListModel *model) {
|
||||
m_proxyModel->setSourceModel(model);
|
||||
|
||||
m_tableView->setColumnHidden(EmailListModel::IdRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::RecipientRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::ReadRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::FlaggedRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::AttachmentsRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::FileIdRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::SizeRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::MessageIdRole - Qt::UserRole - 1, true);
|
||||
m_tableView->setColumnHidden(EmailListModel::SenderInitialRole - Qt::UserRole - 1, true);
|
||||
// Hide columns we don't want to show (by index now, not by role)
|
||||
// Columns: 0=Subject, 1=Sender, 2=Date
|
||||
// All visible for now - we can hide via header data
|
||||
|
||||
// Default sort by date descending (column 2)
|
||||
m_tableView->sortByColumn(EmailListModel::ColDate, Qt::DescendingOrder);
|
||||
|
||||
m_tableView->horizontalHeader()->setSectionResizeMode(EmailListModel::SenderRole - Qt::UserRole - 1, QHeaderView::Stretch);
|
||||
m_tableView->horizontalHeader()->setSectionResizeMode(EmailListModel::SubjectRole - Qt::UserRole - 1, QHeaderView::Stretch);
|
||||
|
||||
// Default sort by date descending
|
||||
m_tableView->sortByColumn(EmailListModel::DateRole - Qt::UserRole - 1, Qt::DescendingOrder);
|
||||
|
||||
// Set column titles manually
|
||||
QHeaderView *header = m_tableView->horizontalHeader();
|
||||
for (int i = 0; i < m_proxyModel->columnCount(); ++i) {
|
||||
int role = Qt::UserRole + 1 + i;
|
||||
switch (role) {
|
||||
case EmailListModel::SenderRole: header->setSectionHidden(i, false); break;
|
||||
case EmailListModel::SubjectRole: header->setSectionHidden(i, false); break;
|
||||
case EmailListModel::DateRole: header->setSectionHidden(i, false); break;
|
||||
default: header->setSectionHidden(i, true); break;
|
||||
}
|
||||
}
|
||||
// Set column resize modes
|
||||
m_tableView->horizontalHeader()->setSectionResizeMode(EmailListModel::ColSubject, QHeaderView::Stretch);
|
||||
m_tableView->horizontalHeader()->setSectionResizeMode(EmailListModel::ColSender, QHeaderView::Stretch);
|
||||
m_tableView->horizontalHeader()->setSectionResizeMode(EmailListModel::ColDate, QHeaderView::ResizeToContents);
|
||||
}
|
||||
|
||||
void MailListView::onRowSelected(const QModelIndex &index) {
|
||||
|
||||
Reference in New Issue
Block a user