Baseline for wino-mail-dtkqt UI migration

This commit is contained in:
2026-06-18 18:58:27 +02:00
parent 0e9f620fe0
commit 2a3a1a0470
10 changed files with 80 additions and 77 deletions
+27
View File
@@ -164,12 +164,21 @@ void MainMainWindow::setupMailPage() {
m_mailListView = new MailListView();
connect(m_mailListView, &MailListView::emailSelected, this, &MainMainWindow::onEmailSelected);
connect(m_mailListView, &MailListView::composeRequested, this, &MainMainWindow::onComposeRequested);
connect(m_mailListView, &MailListView::emailOpenRequested, this, [this](int mailId) {
openMailInIndependentWindow(mailId);
});
m_folderSplitter->addWidget(m_mailListView);
// Reader
m_emailViewer = new ReaderView();
m_emailViewer->setMinimumWidth(350);
connect(m_emailViewer, &ReaderView::replyRequested, this, &MainMainWindow::onReaderReplyRequested);
connect(m_emailViewer, &ReaderView::detachRequested, this, [this]() {
std::optional<MailItem> currentItem = MailItemDao::findById(m_emailModel->getCurrentMailId());
if (currentItem) {
openMailInIndependentWindow(currentItem->id());
}
});
m_folderSplitter->addWidget(m_emailViewer);
// Default sizes: folder 240, list 380, reader flex
@@ -248,6 +257,24 @@ void MainMainWindow::onNewMessage() {
switchToPage(PageCompose);
}
void MainMainWindow::openMailInIndependentWindow(int mailId) {
std::optional<MailItem> item = MailItemDao::findById(mailId);
if (!item.has_value()) return;
QMainWindow *detachedWin = new QMainWindow();
detachedWin->setWindowTitle(QString("Mail - %1").arg(item->subject()));
ReaderView *detachedReader = new ReaderView();
detachedReader->setMailItem(&item.value());
detachedWin->setCentralWidget(detachedReader);
detachedWin->resize(800, 600);
detachedWin->setAttribute(Qt::WA_DeleteOnClose);
detachedWin->show();
statusBar()->showMessage("Opened mail in independent window", 3000);
}
void MainMainWindow::createToolBar() {
m_toolBar = addToolBar("Main Toolbar");
m_toolBar->setMovable(false);