Simplify platform-specific keyboard layouts with Accel key and global platform variable (#748)

* Simplify platform-specific keyboard layouts with Accel key and global platform variable


Co-authored-by: Dennis <dennis@kobert.dev>
This commit is contained in:
Keavon Chambers
2022-08-13 13:28:02 +02:00
committed by GitHub
co-authored by Dennis
parent d8ae727ea9
commit 776992a297
24 changed files with 240 additions and 315 deletions
@@ -0,0 +1,5 @@
use crate::messages::portfolio::document::utility_types::misc::Platform;
use once_cell::sync::OnceCell;
pub static GLOBAL_PLATFORM: OnceCell<Platform> = OnceCell::new();
@@ -0,0 +1,10 @@
use crate::messages::portfolio::document::utility_types::misc::Platform;
use crate::messages::prelude::*;
use serde::{Deserialize, Serialize};
#[impl_message(Message, Globals)]
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
pub enum GlobalsMessage {
SetPlatform { platform: Platform },
}
@@ -0,0 +1,18 @@
use crate::messages::prelude::*;
#[derive(Debug, Default)]
pub struct GlobalsMessageHandler {}
impl MessageHandler<GlobalsMessage, ()> for GlobalsMessageHandler {
#[remain::check]
fn process_message(&mut self, message: GlobalsMessage, _data: (), _responses: &mut VecDeque<Message>) {
match message {
GlobalsMessage::SetPlatform { platform } => {
GLOBAL_PLATFORM.set(platform).expect("Failed to set GLOBAL_PLATFORM");
}
}
}
advertise_actions!(GlobalsMessageDiscriminant;
);
}
+9
View File
@@ -0,0 +1,9 @@
mod globals_message;
mod globals_message_handler;
pub mod global_variables;
#[doc(inline)]
pub use globals_message::{GlobalsMessage, GlobalsMessageDiscriminant};
#[doc(inline)]
pub use globals_message_handler::GlobalsMessageHandler;