feat: Wino-style compact mail view with display modes + hover actions
- CompactMailDelegate: 3 display modes (Compact/Medium/Spacious) like WinUI original * Compact: 64px, minimal, no preview * Medium: 96px, with preview, detailed categories * Spacious: 120px, full padding, preview visible - Hover actions: Reply (↩), Forward (↪), Mark unread (✎) on right side - Unread dot indicator (top-right, blue) like WinUI - User-configurable display mode via combo box in filter bar - MainMainWindow handlers for reply/forward/mark-unread from compact view - Signals: replyRequested, forwardRequested, markUnreadRequested
This commit is contained in:
@@ -70,6 +70,22 @@ void MailListView::setupUI()
|
||||
|
||||
filterLayout->addStretch();
|
||||
|
||||
// Display mode combo (Compact/Medium/Spacious)
|
||||
m_displayModeCombo = new QComboBox();
|
||||
m_displayModeCombo->addItem("Compacto");
|
||||
m_displayModeCombo->addItem("Medio");
|
||||
m_displayModeCombo->addItem("Espacioso");
|
||||
m_displayModeCombo->setFixedWidth(120);
|
||||
m_displayModeCombo->setStyleSheet(
|
||||
"QComboBox { border: 1px solid #d1d1d6; border-radius: 4px; padding: 4px 8px; "
|
||||
"background: white; min-height: 20px; }"
|
||||
"QComboBox:hover { border-color: #bdbdbd; }"
|
||||
"QComboBox:focus { border-color: #1976D2; }"
|
||||
);
|
||||
connect(m_displayModeCombo, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||
this, &MailListView::onDisplayModeChanged);
|
||||
filterLayout->addWidget(m_displayModeCombo);
|
||||
|
||||
// Group by combo
|
||||
m_groupByCombo = new QComboBox();
|
||||
m_groupByCombo->addItem("Sin agrupación");
|
||||
@@ -282,4 +298,26 @@ void MailListView::onCompactMoreRequested(int mailId, const QPoint &globalPos)
|
||||
void MailListView::onCompactMailClicked(int mailId)
|
||||
{
|
||||
emit emailSelected(mailId);
|
||||
}
|
||||
|
||||
void MailListView::onCompactReplyRequested(int mailId)
|
||||
{
|
||||
emit replyRequested(mailId);
|
||||
}
|
||||
|
||||
void MailListView::onCompactForwardRequested(int mailId)
|
||||
{
|
||||
emit forwardRequested(mailId);
|
||||
}
|
||||
|
||||
void MailListView::onCompactMarkUnreadRequested(int mailId)
|
||||
{
|
||||
emit markUnreadRequested(mailId);
|
||||
}
|
||||
|
||||
void MailListView::onDisplayModeChanged(int index)
|
||||
{
|
||||
CompactMailDelegate::DisplayMode mode = static_cast<CompactMailDelegate::DisplayMode>(index);
|
||||
m_compactDelegate->setDisplayMode(mode);
|
||||
m_listView->update();
|
||||
}
|
||||
Reference in New Issue
Block a user