fractal/session/view/content/room_details/
membership_subpage_item.rsuse gtk::{
gio, glib,
glib::{prelude::*, subclass::prelude::*},
};
use crate::session::model::Membership;
mod imp {
use std::cell::{Cell, OnceCell};
use super::*;
#[derive(Debug, Default, glib::Properties)]
#[properties(wrapper_type = super::MembershipSubpageItem)]
pub struct MembershipSubpageItem {
#[property(get, construct_only, builder(Membership::default()))]
membership: Cell<Membership>,
#[property(get, construct_only)]
model: OnceCell<gio::ListModel>,
}
#[glib::object_subclass]
impl ObjectSubclass for MembershipSubpageItem {
const NAME: &'static str = "MembersPageMembershipSubpageItem";
type Type = super::MembershipSubpageItem;
}
#[glib::derived_properties]
impl ObjectImpl for MembershipSubpageItem {}
}
glib::wrapper! {
pub struct MembershipSubpageItem(ObjectSubclass<imp::MembershipSubpageItem>);
}
impl MembershipSubpageItem {
pub fn new(membership: Membership, model: &impl IsA<gio::ListModel>) -> Self {
glib::Object::builder()
.property("membership", membership)
.property("model", model)
.build()
}
}