2
2
#include < karm-ui/layout.h>
3
3
#include < karm-ui/scroll.h>
4
4
5
+ #include " checkbox.h"
5
6
#include " dialog.h"
6
7
#include " print-dialog.h"
7
8
#include " row.h"
8
9
#include " select.h"
9
10
10
11
namespace Karm ::Kira {
11
12
12
- Ui::Child _printPaper () {
13
- return Ui::empty ({320 , 452 }) |
13
+ Ui::Child _printSelect (usize index) {
14
+ return Ui::hflow (
15
+ 8 ,
16
+ Math::Align::CENTER,
17
+ checkbox (true , NONE),
18
+ Ui::labelMedium (" Page {} of 3" , index + 1 )
19
+ ) |
14
20
Ui::box ({
15
- .borderRadii = 6 ,
16
- .backgroundFill = Ui::GRAY50,
21
+ .margin = 8 ,
22
+ .padding = Math::Insetsi{6 , 12 , 6 , 6 },
23
+ .borderRadii = 9 ,
24
+ .borderWidth = 1 ,
25
+ .borderFill = Ui::GRAY800,
26
+ .backgroundFill = Ui::GRAY900,
17
27
});
18
28
}
19
29
30
+ Ui::Child _printPaper (usize index) {
31
+ auto scale = 1 .;
32
+ auto isMobile = App::useFormFactor () == App::FormFactor::MOBILE;
33
+ if (isMobile) {
34
+ scale = 0.5 ;
35
+ }
36
+
37
+ return Ui::stack (
38
+ Ui::empty (Math::Vec2f{320 * scale, 452 * scale}.cast <isize>()) |
39
+ Ui::box ({
40
+ .borderRadii = 6 ,
41
+ .backgroundFill = Ui::GRAY50,
42
+ }),
43
+ _printSelect (index ) | Ui::align (Math::Align::BOTTOM_END)
44
+ );
45
+ }
46
+
47
+ Ui::Child _printPreviewMobile () {
48
+ return Ui::hflow (
49
+ 8 ,
50
+ Math::Align::CENTER,
51
+ _printPaper (0 ),
52
+ _printPaper (1 ),
53
+ _printPaper (2 )
54
+ ) |
55
+ Ui::insets (32 ) |
56
+ Ui::hscroll () |
57
+ Ui::box (
58
+ {
59
+ .borderRadii = {0 , 0 , 0 , 12 },
60
+ .backgroundFill = Ui::GRAY950,
61
+ }
62
+ );
63
+ }
64
+
20
65
Ui::Child _printPreview () {
21
66
return Ui::vflow (
22
67
8 ,
23
68
Math::Align::CENTER,
24
- _printPaper (),
25
- _printPaper (),
26
- _printPaper ()
69
+ _printPaper (0 ),
70
+ _printPaper (1 ),
71
+ _printPaper (2 )
27
72
) |
28
73
Ui::insets (32 ) |
29
74
Ui::vscroll () |
@@ -35,29 +80,50 @@ Ui::Child _printPreview() {
35
80
);
36
81
}
37
82
83
+ Ui::Child _destinationSelect () {
84
+ return select (
85
+ selectValue (" Save as PDF" s),
86
+ [] -> Ui::Children {
87
+ return {
88
+ selectGroup ({
89
+ selectLabel (" Save as" s),
90
+ selectItem (Ui::NOP, " Save as PDF" s),
91
+ selectItem (Ui::NOP, " Save as Image" s),
92
+ }),
93
+ Ui::separator (),
94
+ selectGroup ({
95
+ selectLabel (" Printers" s),
96
+ selectItem (Ui::NOP, " Epson ET-8550" s),
97
+ selectItem (Ui::NOP, " HP DeskJet 2700" s),
98
+ }),
99
+ Ui::separator (),
100
+ selectItem (Ui::NOP, " Add printer..." s)
101
+
102
+ };
103
+ }
104
+ );
105
+ }
106
+
38
107
Ui::Child _printSettings () {
39
108
return Ui::vflow (
109
+ rowContent (
110
+ NONE,
111
+ " Destination" s,
112
+ NONE,
113
+ _destinationSelect ()
114
+ ),
40
115
selectRow (
41
- selectValue (" Save as PDF " s),
116
+ selectValue (" 1 " s),
42
117
[] -> Ui::Children {
43
118
return {
44
- selectGroup ({
45
- selectLabel (" Save as" s),
46
- selectItem (Ui::NOP, " Save as PDF" s),
47
- selectItem (Ui::NOP, " Save as Image" s),
48
- }),
49
- Ui::separator (),
50
- selectGroup ({
51
- selectLabel (" Printers" s),
52
- selectItem (Ui::NOP, " Epson ET-8550" s),
53
- selectItem (Ui::NOP, " HP DeskJet 2700" s),
54
- }),
55
- Ui::separator (),
56
- selectItem (Ui::NOP, " Add printer..." s)
57
-
119
+ selectItem (Ui::NOP, " 1" s),
120
+ selectItem (Ui::NOP, " 2" s),
121
+ selectItem (Ui::NOP, " 3" s),
122
+ selectItem (Ui::NOP, " 4" s),
123
+ selectItem (Ui::NOP, " 5" s),
58
124
};
59
125
},
60
- " Destination " s
126
+ " Copies " s
61
127
),
62
128
selectRow (
63
129
selectValue (" All" s),
@@ -66,6 +132,7 @@ Ui::Child _printSettings() {
66
132
selectItem (Ui::NOP, " All" s),
67
133
selectItem (Ui::NOP, " Odd pages only" s),
68
134
selectItem (Ui::NOP, " Even pages only" s),
135
+ selectItem (Ui::NOP, " Custom" s),
69
136
70
137
};
71
138
},
@@ -144,14 +211,12 @@ Ui::Child _printControls() {
144
211
Ui::minSize ({320 , Ui::UNCONSTRAINED});
145
212
}
146
213
147
- Ui::Child printDialog () {
148
- auto isMobile = App::useFormFactor () == App::FormFactor::MOBILE;
149
-
214
+ Ui::Child _printDialog () {
150
215
return dialogContent ({
151
216
dialogTitleBar (" Print" s),
152
217
Ui::hflow (
153
- isMobile ? Ui::empty () : _printPreview (),
154
- _printControls ()
218
+ _printPreview (),
219
+ _printControls () | Ui::grow ()
155
220
) | Ui::maxSize ({Ui::UNCONSTRAINED, 500 }) |
156
221
Ui::grow (),
157
222
Ui::separator (),
@@ -162,4 +227,32 @@ Ui::Child printDialog() {
162
227
});
163
228
}
164
229
230
+ Ui::Child _printDialogMobile () {
231
+ return dialogContent ({
232
+ dialogTitleBar (" Print" s),
233
+ Ui::separator (),
234
+ Ui::vflow (
235
+ _printPreviewMobile (),
236
+ Ui::separator (),
237
+ titleRow (" Settings" s),
238
+ _printSettings ()
239
+ ) | Ui::vscroll () |
240
+ Ui::grow (),
241
+ Ui::separator (),
242
+ dialogFooter ({
243
+ dialogCancel (),
244
+ dialogAction (Ui::NOP, " Print" s),
245
+ }),
246
+ });
247
+ }
248
+
249
+ Ui::Child printDialog () {
250
+ auto isMobile = App::useFormFactor () == App::FormFactor::MOBILE;
251
+
252
+ if (isMobile) {
253
+ return _printDialogMobile ();
254
+ }
255
+ return _printDialog ();
256
+ }
257
+
165
258
} // namespace Karm::Kira
0 commit comments