| 242 | } |
| 243 | |
| 244 | WindowBase* OpenIntent(Intent* intent) override |
| 245 | { |
| 246 | switch (intent->GetWindowClass()) |
| 247 | { |
| 248 | case WindowClass::peep: |
| 249 | return GuestOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP))); |
| 250 | case WindowClass::firePrompt: |
| 251 | return StaffFirePromptOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP))); |
| 252 | case WindowClass::installTrack: |
| 253 | return InstallTrackOpen(intent->GetStringExtra(INTENT_EXTRA_PATH).c_str()); |
| 254 | case WindowClass::guestList: |
| 255 | return GuestListOpenWithFilter( |
| 256 | static_cast<GuestListFilterType>(intent->GetSIntExtra(INTENT_EXTRA_GUEST_LIST_FILTER)), |
| 257 | intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID)); |
| 258 | case WindowClass::loadsave: |
| 259 | { |
| 260 | auto action = intent->GetEnumExtra<LoadSaveAction>(INTENT_EXTRA_LOADSAVE_ACTION); |
| 261 | auto type = intent->GetEnumExtra<LoadSaveType>(INTENT_EXTRA_LOADSAVE_TYPE); |
| 262 | std::string defaultPath = intent->GetStringExtra(INTENT_EXTRA_PATH); |
| 263 | LoadSaveCallback callback = reinterpret_cast<LoadSaveCallback>( |
| 264 | intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK)); |
| 265 | TrackDesign* trackDesign = static_cast<TrackDesign*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)); |
| 266 | auto* w = FileBrowser::OpenPreferred( |
| 267 | action, type, defaultPath, |
| 268 | [callback](ModalResult result, std::string_view path) { |
| 269 | if (callback != nullptr) |
| 270 | { |
| 271 | callback(result, std::string(path).c_str()); |
| 272 | } |
| 273 | }, |
| 274 | false, trackDesign); |
| 275 | return w; |
| 276 | } |
| 277 | case WindowClass::manageTrackDesign: |
| 278 | return TrackManageOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN))); |
| 279 | case WindowClass::networkStatus: |
| 280 | { |
| 281 | std::string message = intent->GetStringExtra(INTENT_EXTRA_MESSAGE); |
| 282 | CloseCallback callback = intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK); |
| 283 | return NetworkStatusOpen(message, callback); |
| 284 | } |
| 285 | case WindowClass::objectLoadError: |
| 286 | { |
| 287 | std::string path = intent->GetStringExtra(INTENT_EXTRA_PATH); |
| 288 | auto objects = static_cast<const ObjectEntryDescriptor*>(intent->GetPointerExtra(INTENT_EXTRA_LIST)); |
| 289 | size_t count = intent->GetUIntExtra(INTENT_EXTRA_LIST_COUNT); |
| 290 | ObjectLoadErrorOpen(const_cast<utf8*>(path.c_str()), count, objects); |
| 291 | |
| 292 | return nullptr; |
| 293 | } |
| 294 | case WindowClass::ride: |
| 295 | { |
| 296 | const auto rideId = RideId::FromUnderlying(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID)); |
| 297 | auto ride = GetRide(rideId); |
| 298 | return ride == nullptr ? nullptr : RideMainOpen(*ride); |
| 299 | } |
| 300 | case WindowClass::trackDesignPlace: |
| 301 | return TrackPlaceOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN))); |
no test coverage detected