use crate::managers::selection::ClipboardContent;
#[derive(Debug, Clone, Default)]
pub struct ClipboardManager {
pending_paste_content: Option<ClipboardContent>,
pending_copy_content: Option<ClipboardContent>,
}
impl ClipboardManager {
pub fn new() -> Self {
Self {
pending_paste_content: None,
pending_copy_content: None,
}
}
pub fn set_paste_content(&mut self, content: ClipboardContent) {
self.pending_paste_content = Some(content);
}
pub fn get_paste_content(&self) -> Option<&ClipboardContent> {
self.pending_paste_content.as_ref()
}
pub fn set_copy_content(&mut self, content: ClipboardContent) {
self.pending_copy_content = Some(content);
}
pub fn get_copy_content(&self) -> Option<&ClipboardContent> {
self.pending_copy_content.as_ref()
}
pub fn take_copy_content(&mut self) -> Option<ClipboardContent> {
self.pending_copy_content.take()
}
pub fn clear(&mut self) {
self.pending_paste_content = None;
self.pending_copy_content = None;
}
pub fn clear_paste(&mut self) {
self.pending_paste_content = None;
}
pub fn clear_copy(&mut self) {
self.pending_copy_content = None;
}
pub fn has_paste_content(&self) -> bool {
self.pending_paste_content.is_some()
}
pub fn has_copy_content(&self) -> bool {
self.pending_copy_content.is_some()
}
}