1#![allow(deprecated)]
6
7#[cfg(feature = "v3_4")]
8#[cfg_attr(docsrs, doc(cfg(feature = "v3_4")))]
9use crate::RdfFormat;
10use crate::{ffi, NamespaceManager};
11use glib::{
12 prelude::*,
13 signal::{connect_raw, SignalHandlerId},
14 translate::*,
15};
16use std::boxed::Box as Box_;
17
18glib::wrapper! {
19 #[doc(alias = "TrackerResource")]
20 pub struct Resource(Object<ffi::TrackerResource, ffi::TrackerResourceClass>);
21
22 match fn {
23 type_ => || ffi::tracker_resource_get_type(),
24 }
25}
26
27impl Resource {
28 #[doc(alias = "tracker_resource_new")]
29 pub fn new(identifier: Option<&str>) -> Resource {
30 assert_initialized_main_thread!();
31 unsafe { from_glib_full(ffi::tracker_resource_new(identifier.to_glib_none().0)) }
32 }
33
34 pub fn builder() -> ResourceBuilder {
39 ResourceBuilder::new()
40 }
41
42 #[doc(alias = "tracker_resource_add_boolean")]
43 pub fn add_boolean(&self, property_uri: &str, value: bool) {
44 unsafe {
45 ffi::tracker_resource_add_boolean(
46 self.to_glib_none().0,
47 property_uri.to_glib_none().0,
48 value.into_glib(),
49 );
50 }
51 }
52
53 #[cfg(feature = "v3_2")]
54 #[cfg_attr(docsrs, doc(cfg(feature = "v3_2")))]
55 #[doc(alias = "tracker_resource_add_datetime")]
56 pub fn add_datetime(&self, property_uri: &str, value: &glib::DateTime) {
57 unsafe {
58 ffi::tracker_resource_add_datetime(
59 self.to_glib_none().0,
60 property_uri.to_glib_none().0,
61 value.to_glib_none().0,
62 );
63 }
64 }
65
66 #[doc(alias = "tracker_resource_add_double")]
67 pub fn add_double(&self, property_uri: &str, value: f64) {
68 unsafe {
69 ffi::tracker_resource_add_double(
70 self.to_glib_none().0,
71 property_uri.to_glib_none().0,
72 value,
73 );
74 }
75 }
76
77 #[doc(alias = "tracker_resource_add_gvalue")]
78 pub fn add_gvalue(&self, property_uri: &str, value: &glib::Value) {
79 unsafe {
80 ffi::tracker_resource_add_gvalue(
81 self.to_glib_none().0,
82 property_uri.to_glib_none().0,
83 value.to_glib_none().0,
84 );
85 }
86 }
87
88 #[doc(alias = "tracker_resource_add_int")]
89 pub fn add_int(&self, property_uri: &str, value: i32) {
90 unsafe {
91 ffi::tracker_resource_add_int(
92 self.to_glib_none().0,
93 property_uri.to_glib_none().0,
94 value,
95 );
96 }
97 }
98
99 #[doc(alias = "tracker_resource_add_int64")]
100 pub fn add_int64(&self, property_uri: &str, value: i64) {
101 unsafe {
102 ffi::tracker_resource_add_int64(
103 self.to_glib_none().0,
104 property_uri.to_glib_none().0,
105 value,
106 );
107 }
108 }
109
110 #[doc(alias = "tracker_resource_add_relation")]
111 pub fn add_relation(&self, property_uri: &str, resource: &Resource) {
112 unsafe {
113 ffi::tracker_resource_add_relation(
114 self.to_glib_none().0,
115 property_uri.to_glib_none().0,
116 resource.to_glib_none().0,
117 );
118 }
119 }
120
121 #[doc(alias = "tracker_resource_add_string")]
122 pub fn add_string(&self, property_uri: &str, value: &str) {
123 unsafe {
124 ffi::tracker_resource_add_string(
125 self.to_glib_none().0,
126 property_uri.to_glib_none().0,
127 value.to_glib_none().0,
128 );
129 }
130 }
131
132 #[doc(alias = "tracker_resource_add_take_relation")]
133 pub fn add_take_relation(&self, property_uri: &str, resource: Resource) {
134 unsafe {
135 ffi::tracker_resource_add_take_relation(
136 self.to_glib_none().0,
137 property_uri.to_glib_none().0,
138 resource.into_glib_ptr(),
139 );
140 }
141 }
142
143 #[doc(alias = "tracker_resource_add_uri")]
144 pub fn add_uri(&self, property_uri: &str, value: &str) {
145 unsafe {
146 ffi::tracker_resource_add_uri(
147 self.to_glib_none().0,
148 property_uri.to_glib_none().0,
149 value.to_glib_none().0,
150 );
151 }
152 }
153
154 #[doc(alias = "tracker_resource_get_first_boolean")]
155 #[doc(alias = "get_first_boolean")]
156 pub fn is_first_boolean(&self, property_uri: &str) -> bool {
157 unsafe {
158 from_glib(ffi::tracker_resource_get_first_boolean(
159 self.to_glib_none().0,
160 property_uri.to_glib_none().0,
161 ))
162 }
163 }
164
165 #[cfg(feature = "v3_2")]
166 #[cfg_attr(docsrs, doc(cfg(feature = "v3_2")))]
167 #[doc(alias = "tracker_resource_get_first_datetime")]
168 #[doc(alias = "get_first_datetime")]
169 pub fn first_datetime(&self, property_uri: &str) -> Option<glib::DateTime> {
170 unsafe {
171 from_glib_none(ffi::tracker_resource_get_first_datetime(
172 self.to_glib_none().0,
173 property_uri.to_glib_none().0,
174 ))
175 }
176 }
177
178 #[doc(alias = "tracker_resource_get_first_double")]
179 #[doc(alias = "get_first_double")]
180 pub fn first_double(&self, property_uri: &str) -> f64 {
181 unsafe {
182 ffi::tracker_resource_get_first_double(
183 self.to_glib_none().0,
184 property_uri.to_glib_none().0,
185 )
186 }
187 }
188
189 #[doc(alias = "tracker_resource_get_first_int")]
190 #[doc(alias = "get_first_int")]
191 pub fn first_int(&self, property_uri: &str) -> i32 {
192 unsafe {
193 ffi::tracker_resource_get_first_int(
194 self.to_glib_none().0,
195 property_uri.to_glib_none().0,
196 )
197 }
198 }
199
200 #[doc(alias = "tracker_resource_get_first_int64")]
201 #[doc(alias = "get_first_int64")]
202 pub fn first_int64(&self, property_uri: &str) -> i64 {
203 unsafe {
204 ffi::tracker_resource_get_first_int64(
205 self.to_glib_none().0,
206 property_uri.to_glib_none().0,
207 )
208 }
209 }
210
211 #[doc(alias = "tracker_resource_get_first_relation")]
212 #[doc(alias = "get_first_relation")]
213 #[must_use]
214 pub fn first_relation(&self, property_uri: &str) -> Option<Resource> {
215 unsafe {
216 from_glib_none(ffi::tracker_resource_get_first_relation(
217 self.to_glib_none().0,
218 property_uri.to_glib_none().0,
219 ))
220 }
221 }
222
223 #[doc(alias = "tracker_resource_get_first_string")]
224 #[doc(alias = "get_first_string")]
225 pub fn first_string(&self, property_uri: &str) -> Option<glib::GString> {
226 unsafe {
227 from_glib_none(ffi::tracker_resource_get_first_string(
228 self.to_glib_none().0,
229 property_uri.to_glib_none().0,
230 ))
231 }
232 }
233
234 #[doc(alias = "tracker_resource_get_first_uri")]
235 #[doc(alias = "get_first_uri")]
236 pub fn first_uri(&self, property_uri: &str) -> Option<glib::GString> {
237 unsafe {
238 from_glib_none(ffi::tracker_resource_get_first_uri(
239 self.to_glib_none().0,
240 property_uri.to_glib_none().0,
241 ))
242 }
243 }
244
245 #[doc(alias = "tracker_resource_get_identifier")]
246 #[doc(alias = "get_identifier")]
247 pub fn identifier(&self) -> Option<glib::GString> {
248 unsafe { from_glib_none(ffi::tracker_resource_get_identifier(self.to_glib_none().0)) }
249 }
250
251 #[doc(alias = "tracker_resource_get_properties")]
252 #[doc(alias = "get_properties")]
253 pub fn properties(&self) -> Vec<glib::GString> {
254 unsafe {
255 FromGlibPtrContainer::from_glib_container(ffi::tracker_resource_get_properties(
256 self.to_glib_none().0,
257 ))
258 }
259 }
260
261 #[cfg(feature = "v3_1")]
262 #[cfg_attr(docsrs, doc(cfg(feature = "v3_1")))]
263 #[doc(alias = "tracker_resource_get_property_overwrite")]
264 #[doc(alias = "get_property_overwrite")]
265 pub fn is_property_overwrite(&self, property_uri: &str) -> bool {
266 unsafe {
267 from_glib(ffi::tracker_resource_get_property_overwrite(
268 self.to_glib_none().0,
269 property_uri.to_glib_none().0,
270 ))
271 }
272 }
273
274 #[doc(alias = "tracker_resource_identifier_compare_func")]
275 pub fn identifier_compare_func(&self, identifier: &str) -> i32 {
276 unsafe {
277 ffi::tracker_resource_identifier_compare_func(
278 self.to_glib_none().0,
279 identifier.to_glib_none().0,
280 )
281 }
282 }
283
284 #[cfg_attr(feature = "v3_5", deprecated = "Since 3.5")]
285 #[allow(deprecated)]
286 #[doc(alias = "tracker_resource_print_jsonld")]
287 pub fn print_jsonld(&self, namespaces: Option<&NamespaceManager>) -> Option<glib::GString> {
288 unsafe {
289 from_glib_full(ffi::tracker_resource_print_jsonld(
290 self.to_glib_none().0,
291 namespaces.to_glib_none().0,
292 ))
293 }
294 }
295
296 #[cfg(feature = "v3_4")]
297 #[cfg_attr(docsrs, doc(cfg(feature = "v3_4")))]
298 #[doc(alias = "tracker_resource_print_rdf")]
299 pub fn print_rdf(
300 &self,
301 namespaces: &NamespaceManager,
302 format: RdfFormat,
303 graph: Option<&str>,
304 ) -> Option<glib::GString> {
305 unsafe {
306 from_glib_full(ffi::tracker_resource_print_rdf(
307 self.to_glib_none().0,
308 namespaces.to_glib_none().0,
309 format.into_glib(),
310 graph.to_glib_none().0,
311 ))
312 }
313 }
314
315 #[doc(alias = "tracker_resource_print_sparql_update")]
316 pub fn print_sparql_update(
317 &self,
318 namespaces: Option<&NamespaceManager>,
319 graph_id: Option<&str>,
320 ) -> Option<glib::GString> {
321 unsafe {
322 from_glib_full(ffi::tracker_resource_print_sparql_update(
323 self.to_glib_none().0,
324 namespaces.to_glib_none().0,
325 graph_id.to_glib_none().0,
326 ))
327 }
328 }
329
330 #[cfg_attr(feature = "v3_4", deprecated = "Since 3.4")]
331 #[allow(deprecated)]
332 #[doc(alias = "tracker_resource_print_turtle")]
333 pub fn print_turtle(&self, namespaces: Option<&NamespaceManager>) -> Option<glib::GString> {
334 unsafe {
335 from_glib_full(ffi::tracker_resource_print_turtle(
336 self.to_glib_none().0,
337 namespaces.to_glib_none().0,
338 ))
339 }
340 }
341
342 #[doc(alias = "tracker_resource_serialize")]
343 pub fn serialize(&self) -> Option<glib::Variant> {
344 unsafe { from_glib_none(ffi::tracker_resource_serialize(self.to_glib_none().0)) }
345 }
346
347 #[doc(alias = "tracker_resource_set_boolean")]
348 pub fn set_boolean(&self, property_uri: &str, value: bool) {
349 unsafe {
350 ffi::tracker_resource_set_boolean(
351 self.to_glib_none().0,
352 property_uri.to_glib_none().0,
353 value.into_glib(),
354 );
355 }
356 }
357
358 #[cfg(feature = "v3_2")]
359 #[cfg_attr(docsrs, doc(cfg(feature = "v3_2")))]
360 #[doc(alias = "tracker_resource_set_datetime")]
361 pub fn set_datetime(&self, property_uri: &str, value: &glib::DateTime) {
362 unsafe {
363 ffi::tracker_resource_set_datetime(
364 self.to_glib_none().0,
365 property_uri.to_glib_none().0,
366 value.to_glib_none().0,
367 );
368 }
369 }
370
371 #[doc(alias = "tracker_resource_set_double")]
372 pub fn set_double(&self, property_uri: &str, value: f64) {
373 unsafe {
374 ffi::tracker_resource_set_double(
375 self.to_glib_none().0,
376 property_uri.to_glib_none().0,
377 value,
378 );
379 }
380 }
381
382 #[doc(alias = "tracker_resource_set_gvalue")]
383 pub fn set_gvalue(&self, property_uri: &str, value: &glib::Value) {
384 unsafe {
385 ffi::tracker_resource_set_gvalue(
386 self.to_glib_none().0,
387 property_uri.to_glib_none().0,
388 value.to_glib_none().0,
389 );
390 }
391 }
392
393 #[doc(alias = "tracker_resource_set_identifier")]
394 #[doc(alias = "identifier")]
395 pub fn set_identifier(&self, identifier: Option<&str>) {
396 unsafe {
397 ffi::tracker_resource_set_identifier(
398 self.to_glib_none().0,
399 identifier.to_glib_none().0,
400 );
401 }
402 }
403
404 #[doc(alias = "tracker_resource_set_int")]
405 pub fn set_int(&self, property_uri: &str, value: i32) {
406 unsafe {
407 ffi::tracker_resource_set_int(
408 self.to_glib_none().0,
409 property_uri.to_glib_none().0,
410 value,
411 );
412 }
413 }
414
415 #[doc(alias = "tracker_resource_set_int64")]
416 pub fn set_int64(&self, property_uri: &str, value: i64) {
417 unsafe {
418 ffi::tracker_resource_set_int64(
419 self.to_glib_none().0,
420 property_uri.to_glib_none().0,
421 value,
422 );
423 }
424 }
425
426 #[doc(alias = "tracker_resource_set_relation")]
427 pub fn set_relation(&self, property_uri: &str, resource: &Resource) {
428 unsafe {
429 ffi::tracker_resource_set_relation(
430 self.to_glib_none().0,
431 property_uri.to_glib_none().0,
432 resource.to_glib_none().0,
433 );
434 }
435 }
436
437 #[doc(alias = "tracker_resource_set_string")]
438 pub fn set_string(&self, property_uri: &str, value: &str) {
439 unsafe {
440 ffi::tracker_resource_set_string(
441 self.to_glib_none().0,
442 property_uri.to_glib_none().0,
443 value.to_glib_none().0,
444 );
445 }
446 }
447
448 #[doc(alias = "tracker_resource_set_take_relation")]
449 pub fn set_take_relation(&self, property_uri: &str, resource: Resource) {
450 unsafe {
451 ffi::tracker_resource_set_take_relation(
452 self.to_glib_none().0,
453 property_uri.to_glib_none().0,
454 resource.into_glib_ptr(),
455 );
456 }
457 }
458
459 #[doc(alias = "tracker_resource_set_uri")]
460 pub fn set_uri(&self, property_uri: &str, value: &str) {
461 unsafe {
462 ffi::tracker_resource_set_uri(
463 self.to_glib_none().0,
464 property_uri.to_glib_none().0,
465 value.to_glib_none().0,
466 );
467 }
468 }
469
470 #[doc(alias = "tracker_resource_deserialize")]
471 pub fn deserialize(variant: &glib::Variant) -> Option<Resource> {
472 assert_initialized_main_thread!();
473 unsafe { from_glib_full(ffi::tracker_resource_deserialize(variant.to_glib_none().0)) }
474 }
475
476 #[doc(alias = "identifier")]
477 pub fn connect_identifier_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
478 unsafe extern "C" fn notify_identifier_trampoline<F: Fn(&Resource) + 'static>(
479 this: *mut ffi::TrackerResource,
480 _param_spec: glib::ffi::gpointer,
481 f: glib::ffi::gpointer,
482 ) {
483 unsafe {
484 let f: &F = &*(f as *const F);
485 f(&from_glib_borrow(this))
486 }
487 }
488 unsafe {
489 let f: Box_<F> = Box_::new(f);
490 connect_raw(
491 self.as_ptr() as *mut _,
492 c"notify::identifier".as_ptr(),
493 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
494 notify_identifier_trampoline::<F> as *const (),
495 )),
496 Box_::into_raw(f),
497 )
498 }
499 }
500}
501
502impl Default for Resource {
503 fn default() -> Self {
504 glib::object::Object::new::<Self>()
505 }
506}
507
508#[must_use = "The builder must be built to be used"]
513pub struct ResourceBuilder {
514 builder: glib::object::ObjectBuilder<'static, Resource>,
515}
516
517impl ResourceBuilder {
518 fn new() -> Self {
519 Self {
520 builder: glib::object::Object::builder(),
521 }
522 }
523
524 pub fn identifier(self, identifier: impl Into<glib::GString>) -> Self {
525 Self {
526 builder: self.builder.property("identifier", identifier.into()),
527 }
528 }
529
530 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
533 pub fn build(self) -> Resource {
534 assert_initialized_main_thread!();
535 self.builder.build()
536 }
537}