diff options
author | Jamie Murphy <hello@itsjamie.dev> | 2023-02-11 19:12:59 -0800 |
---|---|---|
committer | Jamie Murphy <hello@itsjamie.dev> | 2023-02-12 07:14:41 +0000 |
commit | 13b998766edbfce94fe6166e07294ac56d91127e (patch) | |
tree | f5db033af6f39ad315b99116092f63067d9629dd | |
parent | a6219af540f65602783a2b80407991b4cfbf3de5 (diff) | |
download | gnome-todo-13b998766edbfce94fe6166e07294ac56d91127e.tar.gz |
providers: Create LocalProvider scaffold
While this provider does nothing, it provides a Scaffold for what a
provider should do to create itself
-rw-r--r-- | src/engine/lib.rs | 1 | ||||
-rw-r--r-- | src/engine/providers/local.rs | 46 | ||||
-rw-r--r-- | src/engine/providers/mod.rs | 8 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/engine/lib.rs b/src/engine/lib.rs index ab9c9f88..55023333 100644 --- a/src/engine/lib.rs +++ b/src/engine/lib.rs @@ -1,4 +1,5 @@ pub mod engine; pub mod provider; +pub mod providers; pub mod task; pub mod utils; diff --git a/src/engine/providers/local.rs b/src/engine/providers/local.rs new file mode 100644 index 00000000..6ffc5677 --- /dev/null +++ b/src/engine/providers/local.rs @@ -0,0 +1,46 @@ +use gtk::{ + glib::{self, Object}, + prelude::*, + subclass::prelude::*, +}; + +use crate::provider::prelude::*; + +mod imp { + use gtk::gio::ThemedIcon; + + use super::*; + + #[derive(Default)] + pub struct LocalProvider {} + + #[glib::object_subclass] + impl ObjectSubclass for LocalProvider { + const NAME: &'static str = "GtdLocalProvider"; + type Type = super::LocalProvider; + type ParentType = Provider; + } + + impl ObjectImpl for LocalProvider { + fn constructed(&self) { + let _self: Provider = self.obj().clone().upcast(); + + _self.set_id("local"); + _self.set_name("On This Computer"); + _self.set_description("Local"); + _self.set_icon(ThemedIcon::new("computer-symbolic")); + } + } + impl ProviderImpl for LocalProvider {} +} + +glib::wrapper! { + pub struct LocalProvider(ObjectSubclass<imp::LocalProvider>) + @extends Provider; +} + +impl Default for LocalProvider { + fn default() -> Self { + Object::new::<Self>() + } +} diff --git a/src/engine/providers/mod.rs b/src/engine/providers/mod.rs new file mode 100644 index 00000000..41867751 --- /dev/null +++ b/src/engine/providers/mod.rs @@ -0,0 +1,8 @@ +pub mod local; + +use self::local::LocalProvider; +use crate::provider::prelude::*; + +pub fn providers() -> Vec<Provider> { + vec![LocalProvider::default().into()] +} |