@@ -86,7 +86,7 @@ Ui::Child taskbar(State const &) {
86
86
87
87
Ui::Child tabletPanels (State const &state) {
88
88
return Ui::stack (
89
- state.activePanel == Panel::APPS ? appsFlyout () : Ui::empty (),
89
+ state.activePanel == Panel::APPS ? appsFlyout (state ) : Ui::empty (),
90
90
state.activePanel == Panel::SYS ? sysFlyout (state) : Ui::empty ());
91
91
}
92
92
@@ -102,7 +102,7 @@ Ui::Child tablet(State const &state) {
102
102
103
103
Ui::Child desktopPanels (State const &state) {
104
104
return Ui::stack (
105
- state.activePanel == Panel::APPS ? appsPanel () | Ui::align (Layout::Align::START | Layout::Align::TOP) | Ui::slideIn (Ui::SlideFrom::TOP) : Ui::empty (),
105
+ state.activePanel == Panel::APPS ? appsPanel (state ) | Ui::align (Layout::Align::START | Layout::Align::TOP) | Ui::slideIn (Ui::SlideFrom::TOP) : Ui::empty (),
106
106
state.activePanel == Panel::NOTIS ? notiPanel (state) | Ui::align (Layout::Align::HCENTER | Layout::Align::TOP) | Ui::slideIn (Ui::SlideFrom::TOP) : Ui::empty (),
107
107
state.activePanel == Panel::SYS ? sysPanel (state) | Ui::align (Layout::Align::END | Layout::Align::TOP) | Ui::slideIn (Ui::SlideFrom::TOP) : Ui::empty ()) |
108
108
Ui::spacing ({8 , 38 });
@@ -118,22 +118,110 @@ Ui::Child desktop(State const &state) {
118
118
}
119
119
120
120
Ui::Child app (bool isMobile) {
121
- return Ui::reducer<Model>({.isMobile = isMobile}, [](auto state) {
122
- auto wallpapers = Media::loadImageOrFallback (" bundle://skift-wallpapers/images/abstract.qoi" _url).unwrap ();
123
- auto background = Ui::align (Layout::Align::COVER, Ui::image (wallpapers));
124
-
125
- return Ui::stack (
126
- background,
127
- state.locked ? lock (state)
128
- : (state.isMobile ? tablet (state)
129
- : desktop (state)),
130
- state.isMobile ? tabletPanels (state)
131
- : desktopPanels (state)) |
132
- Ui::dialogLayer () |
133
- Ui::pinSize (
134
- state.isMobile ? Math::Vec2i{411 , 731 }
135
- : Math::Vec2i{1280 , 720 });
136
- });
121
+ return Ui::reducer<Model>(
122
+ {
123
+ .isMobile = isMobile,
124
+ .noti = {
125
+ {
126
+ 1 ,
127
+ {{Mdi::INFORMATION_OUTLINE, Gfx::BLUE_RAMP}, " About" },
128
+ " Hello" ,
129
+ " Hello, world!" ,
130
+ },
131
+ {
132
+ 2 ,
133
+ {{Mdi::INFORMATION_OUTLINE, Gfx::BLUE_RAMP}, " About" },
134
+ " Hello" ,
135
+ " Hello, world!" ,
136
+ },
137
+ {
138
+ 3 ,
139
+ {{Mdi::INFORMATION_OUTLINE, Gfx::BLUE_RAMP}, " About" },
140
+ " Hello" ,
141
+ " Hello, world!" ,
142
+ },
143
+ {
144
+ 4 ,
145
+ {{Mdi::INFORMATION_OUTLINE, Gfx::BLUE_RAMP}, " About" },
146
+ " Hello" ,
147
+ " Hello, world!" ,
148
+ },
149
+ },
150
+ .entries = {
151
+ {
152
+ {Mdi::INFORMATION_OUTLINE, Gfx::BLUE_RAMP},
153
+ " About" ,
154
+ },
155
+ {
156
+ {Mdi::CALCULATOR, Gfx::ORANGE_RAMP},
157
+ " Calculator" ,
158
+ },
159
+ {
160
+ {Mdi::PALETTE_SWATCH, Gfx::RED_RAMP},
161
+ " Color Picker" ,
162
+ },
163
+ {
164
+ {Mdi::COUNTER, Gfx::GREEN_RAMP},
165
+ " Counter" ,
166
+ },
167
+ {
168
+ {Mdi::DUCK, Gfx::YELLOW_RAMP},
169
+ " Demos" ,
170
+ },
171
+ {
172
+ {Mdi::FILE, Gfx::ORANGE_RAMP},
173
+ " Files" ,
174
+ },
175
+ {
176
+ {Mdi::FORMAT_FONT, Gfx::BLUE_RAMP},
177
+ " Fonts" ,
178
+ },
179
+ {
180
+ {Mdi::EMOTICON, Gfx::RED_RAMP},
181
+ " Hello World" ,
182
+ },
183
+ {
184
+ {Mdi::IMAGE, Gfx::GREEN_RAMP},
185
+ " Icons" ,
186
+ },
187
+ {
188
+ {Mdi::IMAGE, Gfx::YELLOW_RAMP},
189
+ " Image Viewer" ,
190
+ },
191
+ {
192
+ {Mdi::CUBE, Gfx::BLUE_RAMP},
193
+ " Ray Tracer" ,
194
+ },
195
+ {
196
+ {Mdi::COG, Gfx::ZINC_RAMP},
197
+ " Settings" ,
198
+ },
199
+ {
200
+ {Mdi::TABLE, Gfx::GREEN_RAMP},
201
+ " Spreadsheet" ,
202
+ },
203
+ {
204
+ {Mdi::WIDGETS, Gfx::BLUE_RAMP},
205
+ " Widget Gallery" ,
206
+ },
207
+ },
208
+ },
209
+ [](auto state) {
210
+ auto wallpapers = Media::loadImageOrFallback (" bundle://skift-wallpapers/images/abstract.qoi" _url).unwrap ();
211
+ auto background = Ui::align (Layout::Align::COVER, Ui::image (wallpapers));
212
+
213
+ return Ui::stack (
214
+ background,
215
+ state.locked ? lock (state)
216
+ : (state.isMobile ? tablet (state)
217
+ : desktop (state)),
218
+ state.isMobile ? tabletPanels (state)
219
+ : desktopPanels (state)) |
220
+ Ui::dialogLayer () |
221
+ Ui::pinSize (
222
+ state.isMobile ? Math::Vec2i{411 , 731 }
223
+ : Math::Vec2i{1280 , 720 });
224
+ });
137
225
}
138
226
139
227
} // namespace Shell
0 commit comments