Component Hierarchy
WidgetUi::MainWindow
The main application window managing tabs, search, and navigation. Location:src/libs/ui/mainwindow.h
Interface
Member Components
Fromsrc/libs/ui/mainwindow.h:82-105:
Tab Management
Fromsrc/libs/ui/mainwindow.h:64-75:
- Multiple tabs: Each with independent browsing history
- Tab reordering: Drag and drop support
- Tab duplication: Copy current tab state
- Tab closing: With confirmation for multiple tabs
Layout Structure
- QMenuBar (
m_menuBar): Top menu bar (hidden on macOS by default) - QTabBar (
m_tabBar): Tab switcher - QSplitter (
m_splitter): Resizable split between sidebar and content- Left: SearchSidebar
- Right: QStackedWidget with BrowserTabs
Window State
Window geometry and splitter positions are persisted:Global Shortcuts
Fromsrc/libs/ui/mainwindow.h:87:
System Tray Integration
Fromsrc/libs/ui/mainwindow.h:77-78,105:
- Tray icon with menu
- Minimize to tray option
- Quick access to search
- Application state indicator
WidgetUi::SearchSidebar
Search interface with results display and table of contents. Location:src/libs/ui/searchsidebar.h
Interface
Components
Fromsrc/libs/ui/searchsidebar.h:61-75:
Layout
Search Edit
Custom search input widget with:- Auto-completion using docset keywords
- Query syntax hints
- Search history
- Clear button
Results Tree View
Displays search results in a tree structure:- Grouped by docset
- Expandable/collapsible groups
- Custom delegate for rich rendering
- Keyboard navigation support
Table of Contents
Shows current page TOC:- Extracted from page structure
- Click to jump to section
- Updates automatically on navigation
- Collapsible via splitter
Delayed Navigation
Fromsrc/libs/ui/searchsidebar.h:75:
- Arrow keys browse results without navigating
- Timer triggers navigation after brief pause
- Reduces unnecessary page loads
- Improves keyboard navigation experience
WidgetUi::SettingsDialog
Configuration interface for all application settings. Location:src/libs/ui/settingsdialog.h
Interface
Settings Categories
The dialog uses a tabbed interface with categories:-
General
- Startup behavior
- System tray options
- Global shortcuts
- Update checking
-
Search
- Fuzzy search toggle
- Docset path configuration
-
Content
- Font configuration
- Appearance (light/dark/auto)
- Custom CSS file
- External link policy
- Smooth scrolling
- Highlight on navigate
-
Network
- Proxy configuration
- SSL error handling
UI Definition
The dialog uses Qt Designer UI file:- settingsdialog.ui: Visual layout definition
- Ui::SettingsDialog: Generated UI class
WidgetUi::DocsetsDialog
Docset management and download interface. Location:src/libs/ui/docsetsdialog.h
Interface
Tabs
Installed Tab
- Lists installed docsets
- Shows version and size
- Update indicator
- Remove button
- Bulk update option
Available Tab
- Lists all available docsets
- Search/filter functionality
- Download button
- Version information
- Download progress
Data Management
Fromsrc/libs/ui/docsetsdialog.h:77-81:
- m_availableDocsets: Downloaded from zealdocs.org
- m_userFeeds: User-added Dash feeds
- m_tmpFiles: Temporary files during download
Download Management
Fromsrc/libs/ui/docsetsdialog.h:75,92-93:
- Multiple concurrent downloads
- Progress tracking per docset
- Cancellation support
- Automatic extraction after download
Custom Delegates
SearchItemDelegate
Location:src/libs/ui/searchitemdelegate.h
Custom item delegate for search results:
- Symbol type icon
- Symbol name with match highlighting
- Docset name badge
- Custom colors and fonts
DocsetListItemDelegate
Location:src/libs/ui/docsetlistitemdelegate.h
Custom item delegate for docset lists:
- Docset icon
- Name and description
- Version information
- Update indicator
- Download progress bar
BrowserTab
Location:src/libs/ui/browsertab.h
Container for a browser view with additional UI:
- WebView widget
- Search toolbar (find in page)
- Loading indicator
SidebarViewProvider
Location:src/libs/ui/sidebarviewprovider.h
Provides sidebar views for tab system:
Qt Widgets Usage
Zeal uses Qt Widgets extensively:- QMainWindow: Application window with dock, menu, status bar support
- QSplitter: Resizable panes
- QTabBar: Tab management
- QTreeView/QListView: Model-view architecture for data display
- QDialog: Modal dialogs
- QMenu/QMenuBar: Application menus
- QAction: User actions with shortcuts
- QSystemTrayIcon: System tray integration
Keyboard Navigation
Extensive keyboard support throughout:- Ctrl+K / Cmd+K: Focus search
- Ctrl+T / Cmd+T: New tab
- Ctrl+W / Cmd+W: Close tab
- Alt+Left/Right: Navigate history
- Ctrl+F / Cmd+F: Find in page
- Esc: Clear search, close dialogs
- Custom shortcuts configurable in settings
Accessibility
Qt Widgets provide built-in accessibility:- Screen reader support through Qt Accessibility API
- Keyboard navigation for all functions
- Focus indicators
- Tooltips and status messages
Platform Integration
macOS
- Native menu bar integration
- Dock icon with menu
- Native dialogs for file selection
Windows
- Taskbar integration
- Jump list support
- Native file dialogs
Linux
- Desktop environment integration
- System tray support
- Standard dialogs
See Also
- Browser Component - Web view integration
- Registry Component - Search models
- Core Component - Settings management