mirror of
https://github.com/pcvolkmer/checkbar.git
synced 2025-04-19 11:06:50 +00:00
Use enum with available values for mouse button
This commit is contained in:
parent
56d2961527
commit
a89709b39a
12
Cargo.lock
generated
12
Cargo.lock
generated
@ -86,6 +86,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"serde_repr",
|
||||||
"tokio",
|
"tokio",
|
||||||
"toml",
|
"toml",
|
||||||
]
|
]
|
||||||
@ -714,6 +715,17 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_repr"
|
||||||
|
version = "0.1.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -13,6 +13,7 @@ regex = "1.7"
|
|||||||
reqwest = { version = "*", features = ["json", "rustls-tls"], default-features = false }
|
reqwest = { version = "*", features = ["json", "rustls-tls"], default-features = false }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_json = "*"
|
serde_json = "*"
|
||||||
|
serde_repr = "*"
|
||||||
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
|
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
|
||||||
toml = "*"
|
toml = "*"
|
||||||
|
|
||||||
|
38
src/main.rs
38
src/main.rs
@ -6,15 +6,24 @@ use std::time::Duration;
|
|||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
use serde_repr::Deserialize_repr;
|
||||||
use tokio::task;
|
use tokio::task;
|
||||||
|
|
||||||
use crate::checker::check_host;
|
use crate::checker::check_host;
|
||||||
use crate::config::{CheckConfig, Config};
|
use crate::config::{CheckConfig, Config};
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Debug, Deserialize_repr, PartialEq)]
|
||||||
|
#[repr(u8)]
|
||||||
|
enum MouseButton {
|
||||||
|
Left = 1,
|
||||||
|
Middle = 2,
|
||||||
|
Right = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, PartialEq)]
|
||||||
struct ClickEvent {
|
struct ClickEvent {
|
||||||
name: String,
|
name: String,
|
||||||
button: u8,
|
button: MouseButton,
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn print_states(check_configs: &[CheckConfig]) {
|
async fn print_states(check_configs: &[CheckConfig]) {
|
||||||
@ -81,7 +90,7 @@ async fn main() {
|
|||||||
loop {
|
loop {
|
||||||
if let Ok(click_event) = read_click_event() {
|
if let Ok(click_event) = read_click_event() {
|
||||||
// Ignore click event if not left mouse button
|
// Ignore click event if not left mouse button
|
||||||
if click_event.button != 1 {
|
if click_event.button != MouseButton::Left {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
if let Some(click_cmd) = get_click_cmd(click_event.name).await {
|
if let Some(click_cmd) = get_click_cmd(click_event.name).await {
|
||||||
@ -105,3 +114,26 @@ async fn main() {
|
|||||||
|
|
||||||
let _r = tokio::join!(inputs, checks);
|
let _r = tokio::join!(inputs, checks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::{ClickEvent, MouseButton};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_should_deserialize_click_event() {
|
||||||
|
let actual = serde_json::from_str::<ClickEvent>(r#"{"name": "test", "button": 1}"#);
|
||||||
|
let expected = ClickEvent {
|
||||||
|
name: "test".to_string(),
|
||||||
|
button: MouseButton::Left,
|
||||||
|
};
|
||||||
|
|
||||||
|
if actual.is_err() {
|
||||||
|
println!("{:?}", actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
assert!(actual.is_ok());
|
||||||
|
|
||||||
|
let actual = actual.unwrap();
|
||||||
|
assert_eq!(actual, expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user