text_document_formatting/
document_formatting_controller.rs1use crate::MergeTextFormatDto;
4use crate::SetBlockFormatDto;
5use crate::SetFrameFormatDto;
6use crate::SetTableCellFormatDto;
7use crate::SetTableFormatDto;
8use crate::SetTextFormatDto;
9use crate::units_of_work::merge_text_format_uow::MergeTextFormatUnitOfWorkFactory;
10use crate::units_of_work::set_block_format_uow::SetBlockFormatUnitOfWorkFactory;
11use crate::units_of_work::set_frame_format_uow::SetFrameFormatUnitOfWorkFactory;
12use crate::units_of_work::set_table_cell_format_uow::SetTableCellFormatUnitOfWorkFactory;
13use crate::units_of_work::set_table_format_uow::SetTableFormatUnitOfWorkFactory;
14use crate::units_of_work::set_text_format_uow::SetTextFormatUnitOfWorkFactory;
15use crate::use_cases::merge_text_format_uc::MergeTextFormatUseCase;
16use crate::use_cases::set_block_format_uc::SetBlockFormatUseCase;
17use crate::use_cases::set_frame_format_uc::SetFrameFormatUseCase;
18use crate::use_cases::set_table_cell_format_uc::SetTableCellFormatUseCase;
19use crate::use_cases::set_table_format_uc::SetTableFormatUseCase;
20use crate::use_cases::set_text_format_uc::SetTextFormatUseCase;
21use anyhow::Result;
22use common::event::{Event, Origin};
23
24use common::event::DocumentFormattingEvent::MergeTextFormat;
25use common::event::DocumentFormattingEvent::SetBlockFormat;
26use common::event::DocumentFormattingEvent::SetFrameFormat;
27use common::event::DocumentFormattingEvent::SetTableCellFormat;
28use common::event::DocumentFormattingEvent::SetTableFormat;
29use common::event::DocumentFormattingEvent::SetTextFormat;
30
31use common::undo_redo::UndoRedoManager;
32use common::{database::db_context::DbContext, event::EventHub};
33use std::sync::Arc;
34
35pub fn set_text_format(
36 db_context: &DbContext,
37 event_hub: &Arc<EventHub>,
38 undo_redo_manager: &mut UndoRedoManager,
39 stack_id: Option<u64>,
40 dto: &SetTextFormatDto,
41) -> Result<()> {
42 let uow_context = SetTextFormatUnitOfWorkFactory::new(db_context, event_hub);
43 let mut uc = SetTextFormatUseCase::new(Box::new(uow_context));
44 uc.execute(dto)?;
45 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
46 event_hub.send_event(Event {
48 origin: Origin::DocumentFormatting(SetTextFormat),
49 ids: vec![],
50 data: None,
51 });
52 Ok(())
53}
54
55pub fn merge_text_format(
56 db_context: &DbContext,
57 event_hub: &Arc<EventHub>,
58 undo_redo_manager: &mut UndoRedoManager,
59 stack_id: Option<u64>,
60 dto: &MergeTextFormatDto,
61) -> Result<()> {
62 let uow_context = MergeTextFormatUnitOfWorkFactory::new(db_context, event_hub);
63 let mut uc = MergeTextFormatUseCase::new(Box::new(uow_context));
64 uc.execute(dto)?;
65 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
66 event_hub.send_event(Event {
68 origin: Origin::DocumentFormatting(MergeTextFormat),
69 ids: vec![],
70 data: None,
71 });
72 Ok(())
73}
74
75pub fn set_block_format(
76 db_context: &DbContext,
77 event_hub: &Arc<EventHub>,
78 undo_redo_manager: &mut UndoRedoManager,
79 stack_id: Option<u64>,
80 dto: &SetBlockFormatDto,
81) -> Result<()> {
82 let uow_context = SetBlockFormatUnitOfWorkFactory::new(db_context, event_hub);
83 let mut uc = SetBlockFormatUseCase::new(Box::new(uow_context));
84 uc.execute(dto)?;
85 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
86 event_hub.send_event(Event {
88 origin: Origin::DocumentFormatting(SetBlockFormat),
89 ids: vec![],
90 data: None,
91 });
92 Ok(())
93}
94
95pub fn set_frame_format(
96 db_context: &DbContext,
97 event_hub: &Arc<EventHub>,
98 undo_redo_manager: &mut UndoRedoManager,
99 stack_id: Option<u64>,
100 dto: &SetFrameFormatDto,
101) -> Result<()> {
102 let uow_context = SetFrameFormatUnitOfWorkFactory::new(db_context, event_hub);
103 let mut uc = SetFrameFormatUseCase::new(Box::new(uow_context));
104 uc.execute(dto)?;
105 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
106 event_hub.send_event(Event {
108 origin: Origin::DocumentFormatting(SetFrameFormat),
109 ids: vec![],
110 data: None,
111 });
112 Ok(())
113}
114
115pub fn set_table_format(
116 db_context: &DbContext,
117 event_hub: &Arc<EventHub>,
118 undo_redo_manager: &mut UndoRedoManager,
119 stack_id: Option<u64>,
120 dto: &SetTableFormatDto,
121) -> Result<()> {
122 let uow_context = SetTableFormatUnitOfWorkFactory::new(db_context, event_hub);
123 let mut uc = SetTableFormatUseCase::new(Box::new(uow_context));
124 uc.execute(dto)?;
125 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
126 event_hub.send_event(Event {
128 origin: Origin::DocumentFormatting(SetTableFormat),
129 ids: vec![],
130 data: None,
131 });
132 Ok(())
133}
134
135pub fn set_table_cell_format(
136 db_context: &DbContext,
137 event_hub: &Arc<EventHub>,
138 undo_redo_manager: &mut UndoRedoManager,
139 stack_id: Option<u64>,
140 dto: &SetTableCellFormatDto,
141) -> Result<()> {
142 let uow_context = SetTableCellFormatUnitOfWorkFactory::new(db_context, event_hub);
143 let mut uc = SetTableCellFormatUseCase::new(Box::new(uow_context));
144 uc.execute(dto)?;
145 undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
146 event_hub.send_event(Event {
148 origin: Origin::DocumentFormatting(SetTableCellFormat),
149 ids: vec![],
150 data: None,
151 });
152 Ok(())
153}