libcosmic/examples/config/src/main.rs
2023-03-10 09:39:33 -07:00

85 lines
2.3 KiB
Rust

// Copyright 2022 System76 <info@system76.com>
// SPDX-License-Identifier: MPL-2.0
use cosmic_config::{Config, ConfigGet, ConfigSet};
pub fn main() {
let config = Config::new("com.system76.Example", 1).unwrap();
let watcher = config
.watch(|config, keys| {
println!("Changed: {:?}", keys);
for key in keys.iter() {
println!(" - {} = {:?}", key, config.get::<ron::Value>(key));
}
})
.unwrap();
println!("Setting example-bool to true");
println!(
"Set example-bool to true: {:?}",
config.set("example-bool", true)
);
println!(
"Get example-bool as bool: {:?}",
config.get::<bool>("example-bool")
);
println!(
"Get example-bool as u32: {:?}",
config.get::<u32>("example-bool")
);
println!(
"Get example-bool as String: {:?}",
config.get::<String>("example-bool")
);
println!();
println!("Setting example-int to 1");
println!("Set example-int to 1: {:?}", config.set("example-int", 1));
println!(
"Get example-int as u32: {:?}",
config.get::<u32>("example-int")
);
println!(
"Get example-int as bool: {:?}",
config.get::<bool>("example-int")
);
println!(
"Get example-int as String: {:?}",
config.get::<String>("example-int")
);
println!();
println!("Setting example-string to \"example\"");
println!(
"Set example-string to \"example\": {:?}",
config.set("example-string", "example")
);
println!(
"Get example-string as String: {:?}",
config.get::<String>("example-string")
);
println!(
"Get example-string as bool: {:?}",
config.get::<bool>("example-string")
);
println!(
"Get example-string as u32: {:?}",
config.get::<u32>("example-string")
);
println!();
println!("Create transaction");
let tx = config.transaction();
println!(
"Set example-bool to false: {:?}",
tx.set("example-bool", false)
);
println!("Set example-int to 0: {:?}", tx.set("example-int", 0));
println!(
"Set example-string to \"\": {:?}",
tx.set("example-string", "")
);
println!("Committing transaction");
println!("Commit transaction: {:?}", tx.commit());
}