Implement stub singleton for UIScreen

This commit is contained in:
hikari_no_yume
2023-01-03 16:12:59 +01:00
parent 40bb5f61cd
commit 20a27cafeb
3 changed files with 41 additions and 0 deletions

View File

@@ -10,12 +10,14 @@ use crate::export_c_func;
pub mod ui_application;
pub mod ui_nib;
pub mod ui_responder;
pub mod ui_screen;
pub mod ui_view;
pub mod ui_window;
#[derive(Default)]
pub struct State {
ui_application: ui_application::State,
ui_screen: ui_screen::State,
}
pub const FUNCTIONS: FunctionExports = {

View File

@@ -0,0 +1,38 @@
//! `UIScreen`.
use crate::objc::{id, objc_classes, ClassExports, TrivialHostObject};
#[derive(Default)]
pub struct State {
main_screen: Option<id>,
}
pub const CLASSES: ClassExports = objc_classes! {
(env, this, _cmd);
@implementation UIScreen: NSObject
// For now this is a singleton (the only instance is returned by mainScreen)
+ (id)mainScreen {
if let Some(screen) = env.framework_state.uikit.ui_screen.main_screen {
screen
} else {
let new = env.objc.alloc_static_object(
this,
Box::new(TrivialHostObject),
&mut env.mem
);
env.framework_state.uikit.ui_screen.main_screen = Some(new);
new
}
}
- (id)retain { this }
- (())release {}
- (id)autorelease { this }
// TODO: accessors
@end
};

View File

@@ -19,6 +19,7 @@ pub const CLASS_LISTS: &[super::ClassExports] = &[
uikit::ui_application::CLASSES,
uikit::ui_nib::CLASSES,
uikit::ui_responder::CLASSES,
uikit::ui_screen::CLASSES,
uikit::ui_view::CLASSES,
uikit::ui_window::CLASSES,
];