cxx_qt_lib/core/
qtimezone.rs1use std::fmt;
6
7#[cxx::bridge]
8mod ffi {
9 unsafe extern "C++" {
10 include!("cxx-qt-lib/qbytearray.h");
11 type QByteArray = crate::QByteArray;
12 include!("cxx-qt-lib/qdatetime.h");
13 type QDateTime = crate::QDateTime;
14 include!("cxx-qt-lib/qlist.h");
15 type QList_QByteArray = crate::QList<crate::QByteArray>;
16 include!("cxx-qt-lib/qstring.h");
17 type QString = crate::QString;
18
19 include!("cxx-qt-lib/qtimezone.h");
20 type QTimeZone;
28
29 fn abbreviation(self: &QTimeZone, atDateTime: &QDateTime) -> QString;
31
32 fn comment(self: &QTimeZone) -> QString;
34
35 #[rust_name = "daylight_time_offset"]
38 fn daylightTimeOffset(self: &QTimeZone, atDateTime: &QDateTime) -> i32;
39
40 #[rust_name = "has_daylight_time"]
42 fn hasDaylightTime(self: &QTimeZone) -> bool;
43
44 #[rust_name = "has_transitions"]
46 fn hasTransitions(self: &QTimeZone) -> bool;
47
48 fn id(self: &QTimeZone) -> QByteArray;
50
51 #[rust_name = "is_daylight_time"]
53 fn isDaylightTime(self: &QTimeZone, atDateTime: &QDateTime) -> bool;
54
55 #[rust_name = "is_valid"]
57 fn isValid(self: &QTimeZone) -> bool;
58
59 #[rust_name = "offset_from_utc"]
62 fn offsetFromUtc(self: &QTimeZone, atDateTime: &QDateTime) -> i32;
63
64 #[rust_name = "standard_time_offset"]
67 fn standardTimeOffset(self: &QTimeZone, atDateTime: &QDateTime) -> i32;
68 }
69
70 #[namespace = "rust::cxxqtlib1"]
71 unsafe extern "C++" {
72 #[doc(hidden)]
73 #[rust_name = "qtimezone_available_time_zone_ids"]
74 fn qtimezoneAvailableTimeZoneIds() -> QList_QByteArray;
75 #[doc(hidden)]
76 #[rust_name = "qtimezone_clone"]
77 fn qtimezoneClone(timezone: &QTimeZone) -> UniquePtr<QTimeZone>;
78 #[doc(hidden)]
79 #[rust_name = "qtimezone_default"]
80 fn qtimezoneDefault() -> UniquePtr<QTimeZone>;
81 #[doc(hidden)]
82 #[rust_name = "qtimezone_from_offset_seconds"]
83 fn qtimezoneFromOffsetSeconds(offset_seconds: i32) -> UniquePtr<QTimeZone>;
84 #[doc(hidden)]
85 #[rust_name = "qtimezone_from_iana"]
86 fn qtimezoneFromIana(iana_id: &QByteArray) -> UniquePtr<QTimeZone>;
87 #[doc(hidden)]
88 #[rust_name = "qtimezone_system_time_zone"]
89 fn qtimezoneSystemTimeZone() -> UniquePtr<QTimeZone>;
90 #[doc(hidden)]
91 #[rust_name = "qtimezone_system_time_zone_id"]
92 fn qtimezoneSystemTimeZoneId() -> QByteArray;
93 #[doc(hidden)]
94 #[rust_name = "qtimezone_utc"]
95 fn qtimezoneUtc() -> UniquePtr<QTimeZone>;
96 }
97
98 #[namespace = "rust::cxxqtlib1"]
99 unsafe extern "C++" {
100 include!("cxx-qt-lib/common.h");
101
102 #[doc(hidden)]
103 #[rust_name = "qtimezone_eq"]
104 fn operatorEq(a: &QTimeZone, b: &QTimeZone) -> bool;
105 #[doc(hidden)]
106 #[rust_name = "qtimezone_to_qstring"]
107 fn toQString(value: &QTimeZone) -> QString;
108 }
109
110 impl UniquePtr<QTimeZone> {}
116}
117
118pub use ffi::QTimeZone;
119
120impl QTimeZone {
121 pub fn available_time_zone_ids() -> ffi::QList_QByteArray {
123 ffi::qtimezone_available_time_zone_ids()
124 }
125
126 pub fn from_offset_seconds(offset_seconds: i32) -> cxx::UniquePtr<Self> {
128 ffi::qtimezone_from_offset_seconds(offset_seconds)
129 }
130
131 pub fn from_iana(iana_id: &ffi::QByteArray) -> cxx::UniquePtr<Self> {
133 ffi::qtimezone_from_iana(iana_id)
134 }
135
136 pub fn new() -> cxx::UniquePtr<Self> {
138 ffi::qtimezone_default()
139 }
140
141 pub fn system_time_zone() -> cxx::UniquePtr<Self> {
143 ffi::qtimezone_system_time_zone()
144 }
145
146 pub fn system_time_zone_id() -> ffi::QByteArray {
148 ffi::qtimezone_system_time_zone_id()
149 }
150
151 pub fn to_owned(&self) -> cxx::UniquePtr<Self> {
153 ffi::qtimezone_clone(self)
154 }
155
156 pub fn utc() -> cxx::UniquePtr<Self> {
158 ffi::qtimezone_utc()
159 }
160}
161
162impl std::cmp::PartialEq for QTimeZone {
163 fn eq(&self, other: &Self) -> bool {
164 ffi::qtimezone_eq(self, other)
165 }
166}
167
168impl std::cmp::Eq for QTimeZone {}
169
170impl fmt::Display for QTimeZone {
171 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
172 write!(f, "{}", ffi::qtimezone_to_qstring(self))
173 }
174}
175
176impl fmt::Debug for QTimeZone {
177 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
178 write!(f, "{self}")
179 }
180}