winprint_ext/ticket/
copies.rs1use super::{
2 document::{ParameterInit, PrintTicketDocument, PropertyValue, NS_PSK},
3 PrintTicket,
4};
5use xml::name::OwnedName;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8#[repr(transparent)]
9pub struct Copies(pub u16);
19
20impl From<Copies> for PrintTicket {
21 fn from(copies: Copies) -> Self {
22 PrintTicketDocument {
23 properties: vec![],
24 parameter_inits: vec![ParameterInit {
25 name: OwnedName::qualified("JobCopiesAllDocuments", NS_PSK, Some("psk")),
26 value: PropertyValue::Integer(copies.0 as i32),
27 }],
28 features: vec![],
29 }
30 .into()
31 }
32}
33
34#[cfg(test)]
35mod tests {
36 use crate::{
37 test_utils::null_device,
38 ticket::{PrintCapabilities, PrintTicketBuilder},
39 };
40
41 #[test]
42 fn use_max_copies() {
43 let device = null_device::thread_local();
44 let capabilities = PrintCapabilities::fetch(&device).unwrap();
45 let copies = capabilities.max_copies().unwrap();
46 println!("Max copies: {:?}", copies);
47 let mut builder = PrintTicketBuilder::new(&device).unwrap();
48 builder.merge(copies).unwrap();
49 }
50}
51