1#![allow(deprecated)]
5
6use crate::{ffi, FileAttributeMatcher, FileAttributeStatus, FileAttributeType, FileType, Icon};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10 #[doc(alias = "GFileInfo")]
11 pub struct FileInfo(Object<ffi::GFileInfo, ffi::GFileInfoClass>);
12
13 match fn {
14 type_ => || ffi::g_file_info_get_type(),
15 }
16}
17
18impl FileInfo {
19 #[doc(alias = "g_file_info_new")]
20 pub fn new() -> FileInfo {
21 unsafe { from_glib_full(ffi::g_file_info_new()) }
22 }
23
24 #[doc(alias = "g_file_info_clear_status")]
25 pub fn clear_status(&self) {
26 unsafe {
27 ffi::g_file_info_clear_status(self.to_glib_none().0);
28 }
29 }
30
31 #[doc(alias = "g_file_info_copy_into")]
32 pub fn copy_into(&self, dest_info: &FileInfo) {
33 unsafe {
34 ffi::g_file_info_copy_into(self.to_glib_none().0, dest_info.to_glib_none().0);
35 }
36 }
37
38 #[doc(alias = "g_file_info_dup")]
39 #[must_use]
40 pub fn dup(&self) -> FileInfo {
41 unsafe { from_glib_full(ffi::g_file_info_dup(self.to_glib_none().0)) }
42 }
43
44 #[cfg(feature = "v2_70")]
45 #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
46 #[doc(alias = "g_file_info_get_access_date_time")]
47 #[doc(alias = "get_access_date_time")]
48 pub fn access_date_time(&self) -> Option<glib::DateTime> {
49 unsafe { from_glib_full(ffi::g_file_info_get_access_date_time(self.to_glib_none().0)) }
50 }
51
52 #[doc(alias = "g_file_info_get_attribute_as_string")]
53 #[doc(alias = "get_attribute_as_string")]
54 pub fn attribute_as_string(&self, attribute: &str) -> Option<glib::GString> {
55 unsafe {
56 from_glib_full(ffi::g_file_info_get_attribute_as_string(
57 self.to_glib_none().0,
58 attribute.to_glib_none().0,
59 ))
60 }
61 }
62
63 #[doc(alias = "g_file_info_get_attribute_boolean")]
64 #[doc(alias = "get_attribute_boolean")]
65 pub fn boolean(&self, attribute: &str) -> bool {
66 unsafe {
67 from_glib(ffi::g_file_info_get_attribute_boolean(
68 self.to_glib_none().0,
69 attribute.to_glib_none().0,
70 ))
71 }
72 }
73
74 #[doc(alias = "g_file_info_get_attribute_byte_string")]
75 #[doc(alias = "get_attribute_byte_string")]
76 pub fn attribute_byte_string(&self, attribute: &str) -> Option<glib::GString> {
77 unsafe {
78 from_glib_none(ffi::g_file_info_get_attribute_byte_string(
79 self.to_glib_none().0,
80 attribute.to_glib_none().0,
81 ))
82 }
83 }
84
85 #[cfg(feature = "v2_78")]
92 #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
93 #[doc(alias = "g_file_info_get_attribute_file_path")]
94 #[doc(alias = "get_attribute_file_path")]
95 pub fn attribute_file_path(&self, attribute: &str) -> Option<std::path::PathBuf> {
96 unsafe {
97 from_glib_none(ffi::g_file_info_get_attribute_file_path(
98 self.to_glib_none().0,
99 attribute.to_glib_none().0,
100 ))
101 }
102 }
103
104 #[doc(alias = "g_file_info_get_attribute_int32")]
105 #[doc(alias = "get_attribute_int32")]
106 pub fn attribute_int32(&self, attribute: &str) -> i32 {
107 unsafe {
108 ffi::g_file_info_get_attribute_int32(self.to_glib_none().0, attribute.to_glib_none().0)
109 }
110 }
111
112 #[doc(alias = "g_file_info_get_attribute_int64")]
113 #[doc(alias = "get_attribute_int64")]
114 pub fn attribute_int64(&self, attribute: &str) -> i64 {
115 unsafe {
116 ffi::g_file_info_get_attribute_int64(self.to_glib_none().0, attribute.to_glib_none().0)
117 }
118 }
119
120 #[doc(alias = "g_file_info_get_attribute_object")]
121 #[doc(alias = "get_attribute_object")]
122 pub fn attribute_object(&self, attribute: &str) -> Option<glib::Object> {
123 unsafe {
124 from_glib_none(ffi::g_file_info_get_attribute_object(
125 self.to_glib_none().0,
126 attribute.to_glib_none().0,
127 ))
128 }
129 }
130
131 #[doc(alias = "g_file_info_get_attribute_status")]
132 #[doc(alias = "get_attribute_status")]
133 pub fn attribute_status(&self, attribute: &str) -> FileAttributeStatus {
134 unsafe {
135 from_glib(ffi::g_file_info_get_attribute_status(
136 self.to_glib_none().0,
137 attribute.to_glib_none().0,
138 ))
139 }
140 }
141
142 #[doc(alias = "g_file_info_get_attribute_string")]
143 #[doc(alias = "get_attribute_string")]
144 pub fn attribute_string(&self, attribute: &str) -> Option<glib::GString> {
145 unsafe {
146 from_glib_none(ffi::g_file_info_get_attribute_string(
147 self.to_glib_none().0,
148 attribute.to_glib_none().0,
149 ))
150 }
151 }
152
153 #[doc(alias = "g_file_info_get_attribute_type")]
154 #[doc(alias = "get_attribute_type")]
155 pub fn attribute_type(&self, attribute: &str) -> FileAttributeType {
156 unsafe {
157 from_glib(ffi::g_file_info_get_attribute_type(
158 self.to_glib_none().0,
159 attribute.to_glib_none().0,
160 ))
161 }
162 }
163
164 #[doc(alias = "g_file_info_get_attribute_uint32")]
165 #[doc(alias = "get_attribute_uint32")]
166 pub fn attribute_uint32(&self, attribute: &str) -> u32 {
167 unsafe {
168 ffi::g_file_info_get_attribute_uint32(self.to_glib_none().0, attribute.to_glib_none().0)
169 }
170 }
171
172 #[doc(alias = "g_file_info_get_attribute_uint64")]
173 #[doc(alias = "get_attribute_uint64")]
174 pub fn attribute_uint64(&self, attribute: &str) -> u64 {
175 unsafe {
176 ffi::g_file_info_get_attribute_uint64(self.to_glib_none().0, attribute.to_glib_none().0)
177 }
178 }
179
180 #[doc(alias = "g_file_info_get_content_type")]
181 #[doc(alias = "get_content_type")]
182 pub fn content_type(&self) -> Option<glib::GString> {
183 unsafe { from_glib_none(ffi::g_file_info_get_content_type(self.to_glib_none().0)) }
184 }
185
186 #[cfg(feature = "v2_70")]
187 #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
188 #[doc(alias = "g_file_info_get_creation_date_time")]
189 #[doc(alias = "get_creation_date_time")]
190 pub fn creation_date_time(&self) -> Option<glib::DateTime> {
191 unsafe {
192 from_glib_full(ffi::g_file_info_get_creation_date_time(
193 self.to_glib_none().0,
194 ))
195 }
196 }
197
198 #[doc(alias = "g_file_info_get_deletion_date")]
199 #[doc(alias = "get_deletion_date")]
200 pub fn deletion_date(&self) -> Option<glib::DateTime> {
201 unsafe { from_glib_full(ffi::g_file_info_get_deletion_date(self.to_glib_none().0)) }
202 }
203
204 #[doc(alias = "g_file_info_get_display_name")]
205 #[doc(alias = "get_display_name")]
206 pub fn display_name(&self) -> glib::GString {
207 unsafe { from_glib_none(ffi::g_file_info_get_display_name(self.to_glib_none().0)) }
208 }
209
210 #[doc(alias = "g_file_info_get_edit_name")]
211 #[doc(alias = "get_edit_name")]
212 pub fn edit_name(&self) -> glib::GString {
213 unsafe { from_glib_none(ffi::g_file_info_get_edit_name(self.to_glib_none().0)) }
214 }
215
216 #[doc(alias = "g_file_info_get_etag")]
217 #[doc(alias = "get_etag")]
218 pub fn etag(&self) -> Option<glib::GString> {
219 unsafe { from_glib_none(ffi::g_file_info_get_etag(self.to_glib_none().0)) }
220 }
221
222 #[doc(alias = "g_file_info_get_file_type")]
223 #[doc(alias = "get_file_type")]
224 pub fn file_type(&self) -> FileType {
225 unsafe { from_glib(ffi::g_file_info_get_file_type(self.to_glib_none().0)) }
226 }
227
228 #[doc(alias = "g_file_info_get_icon")]
229 #[doc(alias = "get_icon")]
230 pub fn icon(&self) -> Option<Icon> {
231 unsafe { from_glib_none(ffi::g_file_info_get_icon(self.to_glib_none().0)) }
232 }
233
234 #[doc(alias = "g_file_info_get_is_backup")]
235 #[doc(alias = "get_is_backup")]
236 pub fn is_backup(&self) -> bool {
237 unsafe { from_glib(ffi::g_file_info_get_is_backup(self.to_glib_none().0)) }
238 }
239
240 #[doc(alias = "g_file_info_get_is_hidden")]
241 #[doc(alias = "get_is_hidden")]
242 pub fn is_hidden(&self) -> bool {
243 unsafe { from_glib(ffi::g_file_info_get_is_hidden(self.to_glib_none().0)) }
244 }
245
246 #[doc(alias = "g_file_info_get_is_symlink")]
247 #[doc(alias = "get_is_symlink")]
248 pub fn is_symlink(&self) -> bool {
249 unsafe { from_glib(ffi::g_file_info_get_is_symlink(self.to_glib_none().0)) }
250 }
251
252 #[cfg(feature = "v2_62")]
253 #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
254 #[doc(alias = "g_file_info_get_modification_date_time")]
255 #[doc(alias = "get_modification_date_time")]
256 pub fn modification_date_time(&self) -> Option<glib::DateTime> {
257 unsafe {
258 from_glib_full(ffi::g_file_info_get_modification_date_time(
259 self.to_glib_none().0,
260 ))
261 }
262 }
263
264 #[doc(alias = "g_file_info_get_name")]
265 #[doc(alias = "get_name")]
266 pub fn name(&self) -> std::path::PathBuf {
267 unsafe { from_glib_none(ffi::g_file_info_get_name(self.to_glib_none().0)) }
268 }
269
270 #[doc(alias = "g_file_info_get_size")]
271 #[doc(alias = "get_size")]
272 pub fn size(&self) -> i64 {
273 unsafe { ffi::g_file_info_get_size(self.to_glib_none().0) }
274 }
275
276 #[doc(alias = "g_file_info_get_sort_order")]
277 #[doc(alias = "get_sort_order")]
278 pub fn sort_order(&self) -> i32 {
279 unsafe { ffi::g_file_info_get_sort_order(self.to_glib_none().0) }
280 }
281
282 #[doc(alias = "g_file_info_get_symbolic_icon")]
283 #[doc(alias = "get_symbolic_icon")]
284 pub fn symbolic_icon(&self) -> Option<Icon> {
285 unsafe { from_glib_none(ffi::g_file_info_get_symbolic_icon(self.to_glib_none().0)) }
286 }
287
288 #[doc(alias = "g_file_info_get_symlink_target")]
289 #[doc(alias = "get_symlink_target")]
290 pub fn symlink_target(&self) -> Option<std::path::PathBuf> {
291 unsafe { from_glib_none(ffi::g_file_info_get_symlink_target(self.to_glib_none().0)) }
292 }
293
294 #[doc(alias = "g_file_info_has_attribute")]
295 pub fn has_attribute(&self, attribute: &str) -> bool {
296 unsafe {
297 from_glib(ffi::g_file_info_has_attribute(
298 self.to_glib_none().0,
299 attribute.to_glib_none().0,
300 ))
301 }
302 }
303
304 #[doc(alias = "g_file_info_has_namespace")]
305 pub fn has_namespace(&self, name_space: &str) -> bool {
306 unsafe {
307 from_glib(ffi::g_file_info_has_namespace(
308 self.to_glib_none().0,
309 name_space.to_glib_none().0,
310 ))
311 }
312 }
313
314 #[doc(alias = "g_file_info_list_attributes")]
315 pub fn list_attributes(&self, name_space: Option<&str>) -> Vec<glib::GString> {
316 unsafe {
317 FromGlibPtrContainer::from_glib_full(ffi::g_file_info_list_attributes(
318 self.to_glib_none().0,
319 name_space.to_glib_none().0,
320 ))
321 }
322 }
323
324 #[doc(alias = "g_file_info_remove_attribute")]
325 pub fn remove_attribute(&self, attribute: &str) {
326 unsafe {
327 ffi::g_file_info_remove_attribute(self.to_glib_none().0, attribute.to_glib_none().0);
328 }
329 }
330
331 #[cfg(feature = "v2_70")]
332 #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
333 #[doc(alias = "g_file_info_set_access_date_time")]
334 pub fn set_access_date_time(&self, atime: &glib::DateTime) {
335 unsafe {
336 ffi::g_file_info_set_access_date_time(self.to_glib_none().0, atime.to_glib_none().0);
337 }
338 }
339
340 #[doc(alias = "g_file_info_set_attribute_boolean")]
346 pub fn set_attribute_boolean(&self, attribute: &str, attr_value: bool) {
347 unsafe {
348 ffi::g_file_info_set_attribute_boolean(
349 self.to_glib_none().0,
350 attribute.to_glib_none().0,
351 attr_value.into_glib(),
352 );
353 }
354 }
355
356 #[doc(alias = "g_file_info_set_attribute_byte_string")]
357 pub fn set_attribute_byte_string(&self, attribute: &str, attr_value: &str) {
358 unsafe {
359 ffi::g_file_info_set_attribute_byte_string(
360 self.to_glib_none().0,
361 attribute.to_glib_none().0,
362 attr_value.to_glib_none().0,
363 );
364 }
365 }
366
367 #[cfg(feature = "v2_78")]
368 #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
369 #[doc(alias = "g_file_info_set_attribute_file_path")]
370 pub fn set_attribute_file_path(
371 &self,
372 attribute: &str,
373 attr_value: impl AsRef<std::path::Path>,
374 ) {
375 unsafe {
376 ffi::g_file_info_set_attribute_file_path(
377 self.to_glib_none().0,
378 attribute.to_glib_none().0,
379 attr_value.as_ref().to_glib_none().0,
380 );
381 }
382 }
383
384 #[doc(alias = "g_file_info_set_attribute_int32")]
385 pub fn set_attribute_int32(&self, attribute: &str, attr_value: i32) {
386 unsafe {
387 ffi::g_file_info_set_attribute_int32(
388 self.to_glib_none().0,
389 attribute.to_glib_none().0,
390 attr_value,
391 );
392 }
393 }
394
395 #[doc(alias = "g_file_info_set_attribute_int64")]
396 pub fn set_attribute_int64(&self, attribute: &str, attr_value: i64) {
397 unsafe {
398 ffi::g_file_info_set_attribute_int64(
399 self.to_glib_none().0,
400 attribute.to_glib_none().0,
401 attr_value,
402 );
403 }
404 }
405
406 #[doc(alias = "g_file_info_set_attribute_mask")]
407 pub fn set_attribute_mask(&self, mask: &FileAttributeMatcher) {
408 unsafe {
409 ffi::g_file_info_set_attribute_mask(self.to_glib_none().0, mask.to_glib_none().0);
410 }
411 }
412
413 #[doc(alias = "g_file_info_set_attribute_object")]
414 pub fn set_attribute_object(&self, attribute: &str, attr_value: &impl IsA<glib::Object>) {
415 unsafe {
416 ffi::g_file_info_set_attribute_object(
417 self.to_glib_none().0,
418 attribute.to_glib_none().0,
419 attr_value.as_ref().to_glib_none().0,
420 );
421 }
422 }
423
424 #[doc(alias = "g_file_info_set_attribute_status")]
425 pub fn set_attribute_status(&self, attribute: &str, status: FileAttributeStatus) -> bool {
426 unsafe {
427 from_glib(ffi::g_file_info_set_attribute_status(
428 self.to_glib_none().0,
429 attribute.to_glib_none().0,
430 status.into_glib(),
431 ))
432 }
433 }
434
435 #[doc(alias = "g_file_info_set_attribute_string")]
436 pub fn set_attribute_string(&self, attribute: &str, attr_value: &str) {
437 unsafe {
438 ffi::g_file_info_set_attribute_string(
439 self.to_glib_none().0,
440 attribute.to_glib_none().0,
441 attr_value.to_glib_none().0,
442 );
443 }
444 }
445
446 #[doc(alias = "g_file_info_set_attribute_uint32")]
447 pub fn set_attribute_uint32(&self, attribute: &str, attr_value: u32) {
448 unsafe {
449 ffi::g_file_info_set_attribute_uint32(
450 self.to_glib_none().0,
451 attribute.to_glib_none().0,
452 attr_value,
453 );
454 }
455 }
456
457 #[doc(alias = "g_file_info_set_attribute_uint64")]
458 pub fn set_attribute_uint64(&self, attribute: &str, attr_value: u64) {
459 unsafe {
460 ffi::g_file_info_set_attribute_uint64(
461 self.to_glib_none().0,
462 attribute.to_glib_none().0,
463 attr_value,
464 );
465 }
466 }
467
468 #[doc(alias = "g_file_info_set_content_type")]
469 pub fn set_content_type(&self, content_type: &str) {
470 unsafe {
471 ffi::g_file_info_set_content_type(self.to_glib_none().0, content_type.to_glib_none().0);
472 }
473 }
474
475 #[cfg(feature = "v2_70")]
476 #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
477 #[doc(alias = "g_file_info_set_creation_date_time")]
478 pub fn set_creation_date_time(&self, creation_time: &glib::DateTime) {
479 unsafe {
480 ffi::g_file_info_set_creation_date_time(
481 self.to_glib_none().0,
482 creation_time.to_glib_none().0,
483 );
484 }
485 }
486
487 #[doc(alias = "g_file_info_set_display_name")]
488 pub fn set_display_name(&self, display_name: &str) {
489 unsafe {
490 ffi::g_file_info_set_display_name(self.to_glib_none().0, display_name.to_glib_none().0);
491 }
492 }
493
494 #[doc(alias = "g_file_info_set_edit_name")]
495 pub fn set_edit_name(&self, edit_name: &str) {
496 unsafe {
497 ffi::g_file_info_set_edit_name(self.to_glib_none().0, edit_name.to_glib_none().0);
498 }
499 }
500
501 #[doc(alias = "g_file_info_set_file_type")]
502 pub fn set_file_type(&self, type_: FileType) {
503 unsafe {
504 ffi::g_file_info_set_file_type(self.to_glib_none().0, type_.into_glib());
505 }
506 }
507
508 #[doc(alias = "g_file_info_set_icon")]
509 pub fn set_icon(&self, icon: &impl IsA<Icon>) {
510 unsafe {
511 ffi::g_file_info_set_icon(self.to_glib_none().0, icon.as_ref().to_glib_none().0);
512 }
513 }
514
515 #[doc(alias = "g_file_info_set_is_hidden")]
516 pub fn set_is_hidden(&self, is_hidden: bool) {
517 unsafe {
518 ffi::g_file_info_set_is_hidden(self.to_glib_none().0, is_hidden.into_glib());
519 }
520 }
521
522 #[doc(alias = "g_file_info_set_is_symlink")]
523 pub fn set_is_symlink(&self, is_symlink: bool) {
524 unsafe {
525 ffi::g_file_info_set_is_symlink(self.to_glib_none().0, is_symlink.into_glib());
526 }
527 }
528
529 #[cfg(feature = "v2_62")]
530 #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
531 #[doc(alias = "g_file_info_set_modification_date_time")]
532 pub fn set_modification_date_time(&self, mtime: &glib::DateTime) {
533 unsafe {
534 ffi::g_file_info_set_modification_date_time(
535 self.to_glib_none().0,
536 mtime.to_glib_none().0,
537 );
538 }
539 }
540
541 #[doc(alias = "g_file_info_set_name")]
542 pub fn set_name(&self, name: impl AsRef<std::path::Path>) {
543 unsafe {
544 ffi::g_file_info_set_name(self.to_glib_none().0, name.as_ref().to_glib_none().0);
545 }
546 }
547
548 #[doc(alias = "g_file_info_set_size")]
549 pub fn set_size(&self, size: i64) {
550 unsafe {
551 ffi::g_file_info_set_size(self.to_glib_none().0, size);
552 }
553 }
554
555 #[doc(alias = "g_file_info_set_sort_order")]
556 pub fn set_sort_order(&self, sort_order: i32) {
557 unsafe {
558 ffi::g_file_info_set_sort_order(self.to_glib_none().0, sort_order);
559 }
560 }
561
562 #[doc(alias = "g_file_info_set_symbolic_icon")]
563 pub fn set_symbolic_icon(&self, icon: &impl IsA<Icon>) {
564 unsafe {
565 ffi::g_file_info_set_symbolic_icon(
566 self.to_glib_none().0,
567 icon.as_ref().to_glib_none().0,
568 );
569 }
570 }
571
572 #[doc(alias = "g_file_info_set_symlink_target")]
573 pub fn set_symlink_target(&self, symlink_target: impl AsRef<std::path::Path>) {
574 unsafe {
575 ffi::g_file_info_set_symlink_target(
576 self.to_glib_none().0,
577 symlink_target.as_ref().to_glib_none().0,
578 );
579 }
580 }
581
582 #[doc(alias = "g_file_info_unset_attribute_mask")]
583 pub fn unset_attribute_mask(&self) {
584 unsafe {
585 ffi::g_file_info_unset_attribute_mask(self.to_glib_none().0);
586 }
587 }
588}
589
590impl Default for FileInfo {
591 fn default() -> Self {
592 Self::new()
593 }
594}