Skip to content

Commit 1fcf40a

Browse files
committed
Finished ViewGroup.MarginLayoutParams
1 parent b7d514a commit 1fcf40a

File tree

1 file changed

+92
-14
lines changed

1 file changed

+92
-14
lines changed

Sources/ViewGroupMarginLayoutParams.swift

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,67 @@ public extension AndroidViewGroup {
1717

1818
open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutParams {
1919

20+
// Copy constructor.
21+
public convenience init(source: Android.View.ViewGroup.MarginLayoutParams){
22+
23+
var __locals = [jobject]()
24+
25+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
26+
__args[0] = JNIType.toJava(value: source, locals: &__locals)
27+
28+
let __object = JNIMethod.NewObject(
29+
className: ViewGroupMarginLayoutParamsJNICache.className,
30+
classCache: &ViewGroupMarginLayoutParamsJNICache.jniClass,
31+
methodSig: "(Landroid/view/ViewGroup$MarginLayoutParams;)V",
32+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.newMethod,
33+
args: &__args,
34+
locals: &__locals )
35+
36+
self.init( javaObject: __object )
37+
38+
JNI.DeleteLocalRef( __object )
39+
}
40+
41+
public var bottomMargin: Int {
42+
get {
43+
let __value = JNIField.GetIntField(fieldName: "bottomMargin",
44+
fieldType: "I",
45+
fieldCache: &ViewGroupMarginLayoutParamsJNICache.FieldID.bottomMargin,
46+
object: javaObject)
47+
return Int(__value)
48+
}
49+
}
50+
51+
public var leftMargin: Int {
52+
get {
53+
let __value = JNIField.GetIntField(fieldName: "leftMargin",
54+
fieldType: "I",
55+
fieldCache: &ViewGroupMarginLayoutParamsJNICache.FieldID.leftMargin,
56+
object: javaObject)
57+
return Int(__value)
58+
}
59+
}
60+
61+
public var rightMargin: Int {
62+
get {
63+
let __value = JNIField.GetIntField(fieldName: "rightMargin",
64+
fieldType: "I",
65+
fieldCache: &ViewGroupMarginLayoutParamsJNICache.FieldID.rightMargin,
66+
object: javaObject)
67+
return Int(__value)
68+
}
69+
}
70+
71+
public var topMargin: Int {
72+
get {
73+
let __value = JNIField.GetIntField(fieldName: "topMargin",
74+
fieldType: "I",
75+
fieldCache: &ViewGroupMarginLayoutParamsJNICache.FieldID.topMargin,
76+
object: javaObject)
77+
return Int(__value)
78+
}
79+
}
80+
2081
public var marginStart: Int {
2182
get{ return getMarginStart() }
2283
set{
@@ -55,7 +116,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
55116
object: javaObject,
56117
methodName: "setMarginStart",
57118
methodSig: "(I)V",
58-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.setMarginStart,
119+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.setMarginStart,
59120
args: &__args,
60121
locals: &__locals )
61122
}
@@ -71,7 +132,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
71132
object: javaObject,
72133
methodName: "getMarginStart",
73134
methodSig: "()I",
74-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.getMarginStart,
135+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.getMarginStart,
75136
args: &__args,
76137
locals: &__locals )
77138

@@ -91,7 +152,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
91152
object: javaObject,
92153
methodName: "setMarginEnd",
93154
methodSig: "(I)V",
94-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.setMarginEnd,
155+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.setMarginEnd,
95156
args: &__args,
96157
locals: &__locals )
97158
}
@@ -107,7 +168,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
107168
object: javaObject,
108169
methodName: "getMarginEnd",
109170
methodSig: "()I",
110-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.getMarginEnd,
171+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.getMarginEnd,
111172
args: &__args,
112173
locals: &__locals )
113174

@@ -127,7 +188,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
127188
object: javaObject,
128189
methodName: "setLayoutDirection",
129190
methodSig: "(I)V",
130-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.setLayoutDirection,
191+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.setLayoutDirection,
131192
args: &__args,
132193
locals: &__locals )
133194
}
@@ -143,7 +204,7 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
143204
object: javaObject,
144205
methodName: "getLayoutDirection",
145206
methodSig: "()I",
146-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.getLayoutDirection,
207+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.getLayoutDirection,
147208
args: &__args,
148209
locals: &__locals )
149210

@@ -161,22 +222,40 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
161222
object: javaObject,
162223
methodName: "isMarginRelative",
163224
methodSig: "()Z",
164-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.isMarginRelative,
225+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.isMarginRelative,
165226
args: &__args,
166227
locals: &__locals )
167228

168229
return jboolean(__return) != jboolean(JNI_FALSE)
169230
}
170231

171-
232+
internal func setMargins(left: Int, top: Int, right: Int, bottom: Int) {
233+
234+
var __locals = [jobject]()
235+
236+
var __args = [jvalue]( repeating: jvalue(), count: 4 )
237+
238+
__args[0] = jvalue(i: jint(left))
239+
__args[0] = jvalue(i: jint(top))
240+
__args[0] = jvalue(i: jint(right))
241+
__args[0] = jvalue(i: jint(bottom))
242+
243+
JNIMethod.CallVoidMethod(
244+
object: javaObject,
245+
methodName: "setMarginEnd",
246+
methodSig: "(IIII)V",
247+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.setMargins,
248+
args: &__args,
249+
locals: &__locals )
250+
}
172251
}
173252

174253
// MARK: - Private
175254

176255
internal extension AndroidViewGroupMarginLayoutParams {
177256

178257
/// JNI Cache
179-
struct ViewGroupLayoutParamsJNICache {
258+
struct ViewGroupMarginLayoutParamsJNICache {
180259

181260
/// JNI Java class signature
182261
static let classSignature = Android.View.className(["ViewGroup$MarginLayoutParams"])
@@ -188,11 +267,10 @@ internal extension AndroidViewGroupMarginLayoutParams {
188267
static var jniClass: jclass?
189268

190269
struct FieldID {
191-
static var MATCH_PARENT: jfieldID?
192-
static var WRAP_CONTENT: jfieldID?
193-
static var height: jfieldID?
194-
static var width: jfieldID?
195-
270+
static var bottomMargin: jfieldID?
271+
static var leftMargin: jfieldID?
272+
static var rightMargin: jfieldID?
273+
static var topMargin: jfieldID?
196274
}
197275

198276
/// JNI Method ID cache

0 commit comments

Comments
 (0)