#pragma once #include #include #include #include #include #include #include #include #include #include "ui/readerview.h" #include "ui/maillistview.h" #include "ui/composeview.h" #include "ui/settingsview.h" #include "ui/contactsview.h" #include "ui/calendarview.h" #include "ui/models/FolderListModel.h" #include "ui/models/EmailListModel.h" #include "services/accountservice.h" #include "services/mailservice.h" class MainMainWindow : public QMainWindow { Q_OBJECT public: explicit MainMainWindow(QWidget *parent = nullptr); ~MainMainWindow() override = default; private slots: void onNavChanged(int index); void onFolderSelected(const QModelIndex &index); void onEmailSelected(int mailId); void onComposeRequested(); void onReaderReplyRequested(const MailItem *item); void onNewMessage(); void openMailInIndependentWindow(int mailId); void onAddAccountRequested(); void onAccountEditRequested(int accountId); void onAccountDeleteRequested(int accountId); void onProgressChanged(int percent); void onStatusMessage(const QString &msg); // Slots for embedded compose view void onEmbeddedSendRequested(const QString &to, const QString &cc, const QString &bcc, const QString &subject, const QString &body, const QDateTime &scheduleTime, const QString &fromAddress, const QStringList &attachmentPaths); void onEmbeddedDiscardRequested(); void onEmbeddedDetachRequested(QWidget *widget); private: void setupUI(); void setupSidebar(); void setupMailPage(); void connectModels(); void createToolBar(); void switchToPage(int pageIndex); // Navigation QListWidget *m_sidebar; QStackedWidget *m_stack; enum Page { PageMail = 0, PageCompose, PageSettings, PageContacts, PageCalendar }; // Mail page widgets QWidget *m_mailPage; QSplitter *m_folderSplitter; QTreeView *m_folderTree; MailListView *m_mailListView; ReaderView *m_emailViewer; QStackedWidget *m_viewerStack; QWidget *m_placeholderWidget; ComposeView *m_embeddedComposeView; // Other pages ComposeView *m_composeView; SettingsView *m_settingsView; ContactsView *m_contactsView; CalendarView *m_calendarView; // Services & Models FolderListModel *m_folderModel; EmailListModel *m_emailModel; AccountService *m_accountService = nullptr; MailService *m_mailService = nullptr; QToolBar *m_toolBar; int m_currentFolderId; int m_currentMailId; QProgressBar *m_progressBar; };