text_document_formatting/
document_formatting_controller.rs1use crate::MergeTextFormatDto;
4use crate::SetBlockFormatDto;
5use crate::SetFrameFormatDto;
6use crate::SetTextFormatDto;
7use crate::units_of_work::merge_text_format_uow::MergeTextFormatUnitOfWorkFactory;
8use crate::units_of_work::set_block_format_uow::SetBlockFormatUnitOfWorkFactory;
9use crate::units_of_work::set_frame_format_uow::SetFrameFormatUnitOfWorkFactory;
10use crate::units_of_work::set_text_format_uow::SetTextFormatUnitOfWorkFactory;
11use crate::use_cases::merge_text_format_uc::MergeTextFormatUseCase;
12use crate::use_cases::set_block_format_uc::SetBlockFormatUseCase;
13use crate::use_cases::set_frame_format_uc::SetFrameFormatUseCase;
14use crate::use_cases::set_text_format_uc::SetTextFormatUseCase;
15use anyhow::Result;
16use common::event::{Event, Origin};
17
18use common::event::DocumentFormattingEvent::MergeTextFormat;
19use common::event::DocumentFormattingEvent::SetBlockFormat;
20use common::event::DocumentFormattingEvent::SetFrameFormat;
21use common::event::DocumentFormattingEvent::SetTextFormat;
22
23use common::undo_redo::UndoRedoManager;
24use common::{database::db_context::DbContext, event::EventHub};
25use std::sync::Arc;
26
27pub fn set_text_format(
28 db_context: &DbContext,
29 event_hub: &Arc<EventHub>,
30 undo_redo_manager: &mut UndoRedoManager,
31 stack_id: Option<u64>,
32 dto: &SetTextFormatDto,
33) -> Result<()> {
34 let uow_context = SetTextFormatUnitOfWorkFactory::new(db_context, event_hub);
35 let mut uc = SetTextFormatUseCase::new(Box::new(uow_context));
36 uc.execute(dto)?;
37 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
38 event_hub.send_event(Event {
40 origin: Origin::DocumentFormatting(SetTextFormat),
41 ids: vec![],
42 data: None,
43 });
44 Ok(())
45}
46
47pub fn merge_text_format(
48 db_context: &DbContext,
49 event_hub: &Arc<EventHub>,
50 undo_redo_manager: &mut UndoRedoManager,
51 stack_id: Option<u64>,
52 dto: &MergeTextFormatDto,
53) -> Result<()> {
54 let uow_context = MergeTextFormatUnitOfWorkFactory::new(db_context, event_hub);
55 let mut uc = MergeTextFormatUseCase::new(Box::new(uow_context));
56 uc.execute(dto)?;
57 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
58 event_hub.send_event(Event {
60 origin: Origin::DocumentFormatting(MergeTextFormat),
61 ids: vec![],
62 data: None,
63 });
64 Ok(())
65}
66
67pub fn set_block_format(
68 db_context: &DbContext,
69 event_hub: &Arc<EventHub>,
70 undo_redo_manager: &mut UndoRedoManager,
71 stack_id: Option<u64>,
72 dto: &SetBlockFormatDto,
73) -> Result<()> {
74 let uow_context = SetBlockFormatUnitOfWorkFactory::new(db_context, event_hub);
75 let mut uc = SetBlockFormatUseCase::new(Box::new(uow_context));
76 uc.execute(dto)?;
77 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
78 event_hub.send_event(Event {
80 origin: Origin::DocumentFormatting(SetBlockFormat),
81 ids: vec![],
82 data: None,
83 });
84 Ok(())
85}
86
87pub fn set_frame_format(
88 db_context: &DbContext,
89 event_hub: &Arc<EventHub>,
90 undo_redo_manager: &mut UndoRedoManager,
91 stack_id: Option<u64>,
92 dto: &SetFrameFormatDto,
93) -> Result<()> {
94 let uow_context = SetFrameFormatUnitOfWorkFactory::new(db_context, event_hub);
95 let mut uc = SetFrameFormatUseCase::new(Box::new(uow_context));
96 uc.execute(dto)?;
97 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
98 event_hub.send_event(Event {
100 origin: Origin::DocumentFormatting(SetFrameFormat),
101 ids: vec![],
102 data: None,
103 });
104 Ok(())
105}