Yureka LogoDocs

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 from UAppBase)
  • Widget Class: USoftwareCenterWidget (Slate host, implements IAppContentWidget)
  • Window Specs:
    • Initial Size: 1200x700
    • Resizable: true
    • Maximizable: true
  • Category: "System"

Install Flow

  1. User clicks "Install" on an uninstalled app.
  2. InstallationProgress[class] begins animating from 0.0 at 0.4/s in NativeTick (≈2.5s to complete).
  3. When progress reaches 1.0, UserSession::InstallApp(class) is called.
  4. FUserProfile.InstalledApps is updated and the profile is saved.
  5. AppLauncher::OnAppsChanged broadcast 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() and GetWindowChromeClass()

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)