@@ -11,7 +11,6 @@ cpp_class!(
11
11
/// Wrapper around [`QSettings`][class] class.
12
12
///
13
13
/// [class]: https://doc.qt.io/qt-5/qsettings.html
14
- #[ derive( Default ) ]
15
14
pub unsafe struct QSettings as "std::unique_ptr<QSettings>"
16
15
) ;
17
16
@@ -22,34 +21,32 @@ impl QSettings {
22
21
/// with setting `format` set to `IniFormat` and `scope` to (default) `UserScope`
23
22
///
24
23
/// [ctor]: https://doc.qt.io/qt-5/qsettings.html#QSettings-3
25
- pub fn new ( organization : & str , application : & str ) -> * mut Self {
24
+ pub fn new ( organization : & str , application : & str ) -> Self {
26
25
let organization = QString :: from ( organization) ;
27
26
let application = QString :: from ( application) ;
28
27
cpp ! (
29
- unsafe [ organization as "QString" , application as "QString" ] -> * mut QSettings as "QSettings*" {
30
- QSettings * settings = new QSettings ( QSettings :: IniFormat , QSettings :: UserScope , organization, application) ;
31
- return settings;
28
+ unsafe [ organization as "QString" , application as "QString" ] -> QSettings as "std::unique_ptr<QSettings>" {
29
+ return std:: unique_ptr<QSettings >( new QSettings ( QSettings :: IniFormat , QSettings :: UserScope , organization, application) ) ;
32
30
}
33
31
)
34
32
}
35
33
36
34
/// Wrapper around [`QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)`][ctor] constructor.
37
35
///
38
36
/// [ctor]: https://doc.qt.io/qt-5/qsettings.html#QSettings
39
- pub fn from_path ( file_name : & str ) -> * mut Self {
37
+ pub fn from_path ( file_name : & str ) -> Self {
40
38
let file_name = QString :: from ( file_name) ;
41
39
cpp ! (
42
- unsafe [ file_name as "QString" ] -> * mut QSettings as "QSettings*" {
43
- QSettings * settings = new QSettings ( file_name, QSettings :: IniFormat ) ;
44
- return settings;
40
+ unsafe [ file_name as "QString" ] -> QSettings as "std::unique_ptr<QSettings>" {
41
+ return std:: unique_ptr<QSettings >( new QSettings ( file_name, QSettings :: IniFormat ) ) ;
45
42
}
46
43
)
47
44
}
48
45
49
46
pub fn filename ( & self ) -> String {
50
47
let filename: QString = cpp ! (
51
- unsafe [ self as "QSettings *" ] -> QString as "QString" {
52
- return self ->fileName( ) ;
48
+ unsafe [ self as "QSettings ** " ] -> QString as "QString" {
49
+ return ( * self ) ->fileName( ) ;
53
50
}
54
51
) ;
55
52
filename. to_string ( )
@@ -58,35 +55,35 @@ impl QSettings {
58
55
pub fn contains ( & self , key : & str ) -> bool {
59
56
let key = QString :: from ( key) ;
60
57
unsafe {
61
- cpp ! ( [ self as "QSettings *" , key as "QString" ] -> bool as "bool" {
62
- return self ->contains( key) ;
58
+ cpp ! ( [ self as "QSettings ** " , key as "QString" ] -> bool as "bool" {
59
+ return ( * self ) ->contains( key) ;
63
60
} )
64
61
}
65
62
}
66
63
67
64
pub fn value_bool ( & self , key : & str ) -> bool {
68
65
let key = QString :: from ( key) ;
69
66
unsafe {
70
- cpp ! ( [ self as "QSettings *" , key as "QString" ] -> bool as "bool" {
71
- return self ->value( key) . toBool( ) ;
67
+ cpp ! ( [ self as "QSettings ** " , key as "QString" ] -> bool as "bool" {
68
+ return ( * self ) ->value( key) . toBool( ) ;
72
69
} )
73
70
}
74
71
}
75
72
76
73
pub fn set_bool ( & mut self , key : & str , value : bool ) {
77
74
let key = QString :: from ( key) ;
78
75
unsafe {
79
- cpp ! ( [ self as "QSettings *" , key as "QString" , value as "bool" ] {
80
- self ->setValue( key, value) ;
76
+ cpp ! ( [ self as "QSettings ** " , key as "QString" , value as "bool" ] {
77
+ ( * self ) ->setValue( key, value) ;
81
78
} )
82
79
} ;
83
80
}
84
81
85
82
pub fn value_string ( & self , key : & str ) -> String {
86
83
let key = QString :: from ( key) ;
87
84
let val = unsafe {
88
- cpp ! ( [ self as "QSettings *" , key as "QString" ] -> QString as "QString" {
89
- return self ->value( key) . toString( ) ;
85
+ cpp ! ( [ self as "QSettings ** " , key as "QString" ] -> QString as "QString" {
86
+ return ( * self ) ->value( key) . toString( ) ;
90
87
} )
91
88
} ;
92
89
val. into ( )
@@ -96,49 +93,41 @@ impl QSettings {
96
93
let key = QString :: from ( key) ;
97
94
let value = QString :: from ( value) ;
98
95
unsafe {
99
- cpp ! ( [ self as "QSettings *" , key as "QString" , value as "QString" ] {
100
- self ->setValue( key, value) ;
96
+ cpp ! ( [ self as "QSettings ** " , key as "QString" , value as "QString" ] {
97
+ ( * self ) ->setValue( key, value) ;
101
98
} )
102
99
} ;
103
100
}
104
101
105
102
pub fn sync ( & self ) {
106
103
unsafe {
107
- cpp ! ( [ self as "QSettings *" ] {
108
- self ->sync( ) ;
104
+ cpp ! ( [ self as "QSettings ** " ] {
105
+ ( * self ) ->sync( ) ;
109
106
} )
110
107
} ;
111
108
}
112
109
}
113
110
114
111
#[ test]
115
112
fn test_qsettings_filename ( ) {
116
- let inner = QSettings :: new ( "qmetaobject" , "qsettings" ) ;
117
- let qsettings = unsafe { inner. as_ref ( ) . unwrap ( ) } ;
113
+ let qsettings = QSettings :: new ( "qmetaobject" , "qsettings" ) ;
118
114
119
115
assert ! (
120
116
qsettings. filename( ) . ends_with( "/qmetaobject/qsettings.ini" ) ,
121
117
"'{}' does not end with '/qmetaobject/qsettings.ini'" ,
122
118
qsettings. filename( )
123
119
) ;
124
-
125
- drop ( qsettings) ;
126
- drop ( inner) ;
127
120
}
128
121
129
122
#[ test]
130
123
fn test_qsettings_new_from_path ( ) {
131
- let inner = QSettings :: from_path ( "/tmp/my_settings.conf" ) ;
132
- let qsettings = unsafe { inner. as_ref ( ) . unwrap ( ) } ;
124
+ let qsettings = QSettings :: from_path ( "/tmp/my_settings.conf" ) ;
133
125
134
126
assert ! (
135
127
qsettings. filename( ) . ends_with( "/tmp/my_settings.conf" ) ,
136
128
"'{}' does not end with '/tmp/my_settings.conf'" ,
137
129
qsettings. filename( )
138
130
) ;
139
-
140
- drop ( qsettings) ;
141
- drop ( inner) ;
142
131
}
143
132
144
133
#[ test]
@@ -147,8 +136,7 @@ fn test_qsettings_values() {
147
136
let config_pathbuf = temp_dir. path ( ) . join ( "qsettings.conf" ) ;
148
137
let config_file = config_pathbuf. to_str ( ) . unwrap ( ) ;
149
138
150
- let inner = QSettings :: from_path ( config_file) ;
151
- let qsettings = unsafe { inner. as_mut ( ) . unwrap ( ) } ;
139
+ let mut qsettings = QSettings :: from_path ( config_file) ;
152
140
153
141
qsettings. set_bool ( "test_true" , false ) ;
154
142
qsettings. set_bool ( "test_false" , true ) ;
@@ -165,10 +153,8 @@ fn test_qsettings_values() {
165
153
assert_eq ! ( qsettings. value_string( "test_emoji" ) , "🦀" ) ;
166
154
167
155
drop ( qsettings) ;
168
- drop ( inner) ;
169
156
170
- let inner = QSettings :: from_path ( config_file) ;
171
- let qsettings = unsafe { inner. as_mut ( ) . unwrap ( ) } ;
157
+ let qsettings = QSettings :: from_path ( config_file) ;
172
158
173
159
assert_eq ! ( qsettings. value_bool( "test_true" ) , false ) ;
174
160
assert_eq ! ( qsettings. value_bool( "test_false" ) , true ) ;
@@ -177,7 +163,6 @@ fn test_qsettings_values() {
177
163
assert_eq ! ( qsettings. value_string( "test_emoji" ) , "🦀" ) ;
178
164
179
165
drop ( qsettings) ;
180
- drop ( inner) ;
181
166
182
167
drop ( temp_dir) ;
183
168
assert ! ( !config_pathbuf. as_path( ) . exists( ) ) ;
0 commit comments