X-Git-Url: http://nitlanguage.org diff --git a/lib/app/app_base.nit b/lib/app/app_base.nit index e1f8d78..5c2a902 100644 --- a/lib/app/app_base.nit +++ b/lib/app/app_base.nit @@ -19,6 +19,7 @@ module app_base is new_annotation app_name new_annotation app_namespace new_annotation app_version + new_annotation app_files end # App subclasses are cross-platform applications @@ -50,26 +51,57 @@ abstract class AppComponent # The application is being created # # You should build the UI at this time. + # + # Triggers are platform specific: + # * Android: `Activity.onCreate` + # * iOS: `UIApplicationDelegate application:didFinishLaunchingWithOptions` fun on_create do end # The application enters the active state, it is in the foreground and interactive + # + # Triggers are platform specific: + # * Android: `Activity.onResume` + # * iOS: `UIApplicationDelegate applicationDidBecomeActive` fun on_resume do end # The application leaves the active state but is still partially visible # - # It may still be visible in the background. # It may then go back to `on_resume` or `on_stop`. + # + # Triggers are platform specific: + # * Android: `Activity.onPause` + # * iOS: `UIApplicationDelegate applicationWillResignActive` fun on_pause do end # The application is completely hidden from the user # - # It may then be destroyed (`on_destroy`) or go back to `on_start`. + # It may then be destroyed or go back to a paused state with `on_restart`. + # + # Triggers are platform specific: + # * Android: `Activity.onStop` + # * iOS: `UIApplicationDelegate applicationDidEnterBackground` fun on_stop do end + # The application returns to a visible state from a previous `on_stop` + # + # Triggers are platform specific: + # * Android: `Activity.onRestart` + # * iOS: `UIApplicationDelegate applicationWillEnterForeground` + fun on_restart do end + # The application may be destroyed soon, save its state for a future `on_restore_state` + # + # Triggers are platform specific: + # * Android: `Activity.onSaveInstanceState` + # * iOS: `UIApplicationDelegate applicationDidEnterBackground` fun on_save_state do end # The application is launching, restore its state from a previous `on_save_state` + # + # Triggers are platform specific: + # * Android: `Activity.onCreate`, _not_ `Activity.onRestoreInstanceState` + # as it is trigged only if there is a previous Android specific save state. + # * iOS: `UIApplicationDelegate applicationDidEnterBackground` fun on_restore_state do end end @@ -83,5 +115,23 @@ end # The running `App` fun app: App do return once new App +# Platform bound at compilation (by importation or -m) +# +# This value should not be used to decide the behavior of the software. +# Class refinement provide a safer and a static solution to apply variations. +# However, this value can be used in log files and communications with servers. +fun bound_platform: String do return "none" + +# Test if the application was bound to a platform, if not crash +private fun test_bound_platform +do + print_error "Apps must be bound to a platform at compilation using `-m linux` or `-m android`" + exit 1 +end + +if "NIT_TESTING".environ == "true" then exit 0 + +test_bound_platform + app.setup app.run