Software Center
The Software Center is OSSIM's built-in app store. It displays all discoverable applications, allows browsing by category, and provides install/uninstall functionality with progress simulation.
Core Features
- App Catalog: Displays all apps discovered via
AppLauncher::GetAllPossibleApps(). - Category Filtering: Filter apps by category (e.g., "Tools", "Media", "Games", "Office").
- Search Box: Filter apps by name.
- Installed-Only Toggle: Show only currently installed applications.
- Install/Uninstall: Per-user app management with simulated progress bars.
- Detail Pane: Shows selected app's name, description, icon, and install status.
Technical Details
- Controller Class:
USoftwareCenterApp(Inherits fromUAppBase) - Widget Class:
USoftwareCenterWidget(Slate host, implementsIAppContentWidget) - Window Specs:
- Initial Size:
1200x700 - Resizable:
true - Maximizable:
true
- Initial Size:
- Category:
"System"
Install Flow
- User clicks "Install" on an uninstalled app.
InstallationProgress[class]begins animating from 0.0 at 0.4/s inNativeTick(≈2.5s to complete).- When progress reaches 1.0,
UserSession::InstallApp(class)is called. FUserProfile.InstalledAppsis updated and the profile is saved.AppLauncher::OnAppsChangedbroadcast triggers:StartMenu::RefreshApps()— App appears in Start Menu.SoftwareCenter::RefreshAppList()— UI updates install status.
Uninstall Flow
Same pattern as install but calls UserSession::UninstallApp(class) and removes the app from InstalledApps.
App Discovery
Apps are discovered through AppLauncher::GetAllPossibleApps():
- Collects all
AvailableApps(installed apps) - Scans the Asset Registry for Blueprint subclasses of
UAppBase - Scans native C++ subclasses of
UAppBase - Deduplicates by
category|name, preferring Blueprint over native - Only lists classes where CDO returns non-null
GetContentWidgetClass()andGetWindowChromeClass()
Key State
SelectedAppClass— Currently selected app in the detail pane.ActiveCategoryFilter— Current category filter string.InstallationProgress: TMap<UClass*, float>— Per-app install progress.IsUninstalling: TMap<UClass*, bool>— Per-app uninstall tracking.
Subscribes to AppLauncher::OnAppsChanged for live updates.
Default Non-Installed Apps
These apps ship with bInstalledByDefault=false and must be installed via the Software Center:
- Mail (Category: Office)
- Minesweeper (Category: Games)
