Yureka LogoDocs

Mail

The Mail app is a full-featured email client with compose, reply, forward, folders, search, and per-user VFS JSON persistence.

Core Features

  • Folder System: Inbox, Sent, Drafts, Trash, and custom user-created folders.
  • Compose & Reply: Full compose flow with To, Cc, Subject, Body, and attachments.
  • Reply / Reply All / Forward: Standard email response workflows.
  • Search: Full-text search across messages.
  • Star & Read Tracking: Toggle star and mark read/unread.
  • Draft System: Save drafts, edit drafts, and send composed messages.
  • VFS Persistence: Messages stored as JSON files at /home/<user>/Mail/<Folder>.json.
  • Seed Messages: Configurable SeedMessages[] array and welcome mail on first run.
  • Attachment Previews: VFS-resolved attachment display.
  • Unread Badges: Folder sidebar shows unread message counts.

Technical Details

  • Controller Class: UMailApp (Inherits from UAppBase)
  • Widget Class: UMailWidget (Slate host, implements IAppContentWidget)
  • Window Specs:
    • Initial Size: 850x550
    • Resizable: true
    • Maximizable: true
  • Category: "Office"
  • Installed By Default: false (must be installed via Software Center)

Data Structures

  • FMailMessage: MessageId(FGuid), FromName, FromAddress, To[], Cc[], Subject, Body, Timestamp, Folder="Inbox", bIsRead, bIsStarred, bIsDraft, Attachments[].
  • FMailAttachment: DisplayName, VFSPath, MimeHint, SizeBytes.
  • FMailComposeState: To[], Cc[], Subject, Body, Attachments[], InReplyToId, EditingDraftId.

Key Controller APIs

Mailbox Operations:

  • AddMessage / DeleteMessage / MarkRead / ToggleStar / MoveMessage / CreateFolder

Compose Flow:

  • BeginCompose / Reply / ReplyAll / Forward / EditDraft / SaveDraft / SendComposed

Search & Persistence:

  • SearchMessages / SaveMailbox / LoadMailbox

Configuration:

  • SeedMessages[] — Ship a starter inbox with no C++.
  • bSeedWelcomeMessage — Auto-generate a welcome email on first run.
  • UserEmailAddress — The user's display email address.

Delegates

  • OnMailboxChanged / OnFolderChanged / OnMessageSelected / OnComposeStateChanged (dynamic/BP).

Architecture Notes

The UMailApp controller owns the full mail model — the widget is a thin delegate-bound view that re-renders on state changes. This follows OSSIM's controller-view separation where the controller owns data and the view subscribes to delegate notifications.