Skip to content

Commit 97b22ec

Browse files
committed
Fixing Views and ViewGroups inheritance
1 parent bfb1c62 commit 97b22ec

File tree

6 files changed

+286
-76
lines changed

6 files changed

+286
-76
lines changed

Sources/View.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,6 @@ open class AndroidView: JavaObject {
3535
super.init(javaObject: javaObject)
3636
}
3737

38-
public var layoutParams: Android.View.ViewGroup.LayoutParams? {
39-
40-
get { return getLayoutParams() }
41-
42-
set { setLayoutParams(newValue) }
43-
}
44-
45-
public var context: Android.Content.Context {
46-
47-
get {
48-
return getContext()
49-
}
50-
}
51-
5238
public convenience init(context: Android.Content.Context) {
5339

5440
var __locals = [jobject]()
@@ -69,6 +55,20 @@ open class AndroidView: JavaObject {
6955
JNI.DeleteLocalRef( __object )
7056
}
7157

58+
public var layoutParams: Android.View.ViewGroup.LayoutParams? {
59+
60+
get { return getLayoutParams() }
61+
62+
set { setLayoutParams(newValue) }
63+
}
64+
65+
public var context: Android.Content.Context {
66+
67+
get {
68+
return getContext()
69+
}
70+
}
71+
7272
public var background: Android.Graphics.Drawable.Drawable? {
7373
get {
7474
return getBackground()

Sources/ViewGroup.swift

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@ public extension Android.View {
1616
/// `Android.View.View`
1717
open class AndroidViewGroup: AndroidView {
1818

19+
public convenience init(context: Android.Content.Context) {
20+
21+
var __locals = [jobject]()
22+
23+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
24+
__args[0] = JNIType.toJava(value: context, locals: &__locals)
25+
26+
let __object = JNIMethod.NewObject(
27+
className: ViewGroupJNICache.className,
28+
classCache: &ViewGroupJNICache.jniClass,
29+
methodSig: "(Landroid/content/Context;)V",
30+
methodCache: &ViewGroupJNICache.MethodID.init_method_1,
31+
args: &__args,
32+
locals: &__locals )
33+
34+
self.init( javaObject: __object )
35+
36+
JNI.DeleteLocalRef( __object )
37+
}
38+
1939
open override func clearFocus() {
2040

2141
var __locals = [jobject]()
@@ -441,8 +461,6 @@ open class AndroidViewGroup: AndroidView {
441461

442462
public extension Android.View.ViewGroup {
443463

444-
445-
446464
public func addStatesFromChildren() -> Bool {
447465

448466
var __locals = [jobject]()
@@ -476,7 +494,7 @@ public extension Android.View.ViewGroup {
476494
object: javaObject,
477495
methodName: "addView",
478496
methodSig: "(Landroid/view/View;I)V",
479-
methodCache: &ViewGroupJNICache.MethodID.addView2,
497+
methodCache: &ViewGroupJNICache.MethodID.addView,
480498
args: &__args,
481499
locals: &__locals )
482500

@@ -497,7 +515,7 @@ public extension Android.View.ViewGroup {
497515
object: javaObject,
498516
methodName: "addView",
499517
methodSig: "(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V",
500-
methodCache: &ViewGroupJNICache.MethodID.addView7,
518+
methodCache: &ViewGroupJNICache.MethodID.addView2,
501519
args: &__args,
502520
locals: &__locals )
503521
}
@@ -515,11 +533,9 @@ public extension Android.View.ViewGroup {
515533
object: javaObject,
516534
methodName: "addView",
517535
methodSig: "(Landroid/view/View;)V",
518-
methodCache: &ViewGroupJNICache.MethodID.addView4,
536+
methodCache: &ViewGroupJNICache.MethodID.addView3,
519537
args: &__args,
520538
locals: &__locals )
521-
522-
523539
}
524540

525541
public func addView(_ child: Android.View.View, params: Android.View.ViewGroup.LayoutParams) {
@@ -535,7 +551,7 @@ public extension Android.View.ViewGroup {
535551
object: javaObject,
536552
methodName: "addView",
537553
methodSig: "(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V",
538-
methodCache: &ViewGroupJNICache.MethodID.addView6,
554+
methodCache: &ViewGroupJNICache.MethodID.addView4,
539555
args: &__args,
540556
locals: &__locals )
541557

@@ -2119,11 +2135,13 @@ internal extension Android.View.ViewGroup {
21192135
/// JNI Method ID cache
21202136
struct MethodID {
21212137

2138+
static var init_method_1: jmethodID?
2139+
2140+
static var addView: jmethodID?
21222141
static var addView2: jmethodID?
2142+
static var addView3: jmethodID?
21232143
static var addView4: jmethodID?
21242144
static var addView5: jmethodID?
2125-
static var addView6: jmethodID?
2126-
static var addView7: jmethodID?
21272145

21282146
static var addStatesFromChildren: jmethodID?
21292147
static var bringChildToFront: jmethodID?

Sources/ViewGroupLayoutParams.swift

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,52 @@ open class AndroidViewGroupLayoutParams: JavaObject {
9999
JNI.DeleteLocalRef( __object )
100100
}
101101

102+
103+
}
104+
105+
extension AndroidViewGroupLayoutParams {
106+
107+
public func resolveLayoutDirection(_ layoutDirection: Int) {
108+
109+
var __locals = [jobject]()
110+
111+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
112+
113+
__args[0] = jvalue(i: jint(layoutDirection))
114+
115+
JNIMethod.CallVoidMethod(
116+
object: javaObject,
117+
methodName: "resolveLayoutDirection",
118+
methodSig: "(I)V",
119+
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.resolveLayoutDirection,
120+
args: &__args,
121+
locals: &__locals )
122+
}
123+
124+
public func setBaseAttributes(a: JavaObject, widthAttr: Int, heightAttr: Int) {
125+
126+
var __locals = [jobject]()
127+
128+
var __args = [jvalue]( repeating: jvalue(), count: 3 )
129+
130+
__args[0] = JNIType.toJava(value: a, locals: &__locals)
131+
__args[1] = jvalue(i: jint(widthAttr))
132+
__args[2] = jvalue(i: jint(heightAttr))
133+
134+
JNIMethod.CallVoidMethod(
135+
object: javaObject,
136+
methodName: "setBaseAttributes",
137+
methodSig: "(Landroid/content/res/TypedArray;II)V",
138+
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.setBaseAttributes,
139+
args: &__args,
140+
locals: &__locals )
141+
}
142+
}
143+
144+
// MARK: - Fields
145+
146+
public extension AndroidViewGroupLayoutParams {
147+
102148
public static var MATCH_PARENT: Int {
103149

104150
get {
@@ -150,45 +196,6 @@ open class AndroidViewGroupLayoutParams: JavaObject {
150196
}
151197
}
152198

153-
extension AndroidViewGroupLayoutParams {
154-
155-
public func resolveLayoutDirection(_ layoutDirection: Int) {
156-
157-
var __locals = [jobject]()
158-
159-
var __args = [jvalue]( repeating: jvalue(), count: 1 )
160-
161-
__args[0] = jvalue(i: jint(layoutDirection))
162-
163-
JNIMethod.CallVoidMethod(
164-
object: javaObject,
165-
methodName: "resolveLayoutDirection",
166-
methodSig: "(I)V",
167-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.resolveLayoutDirection,
168-
args: &__args,
169-
locals: &__locals )
170-
}
171-
172-
public func setBaseAttributes(a: JavaObject, widthAttr: Int, heightAttr: Int) {
173-
174-
var __locals = [jobject]()
175-
176-
var __args = [jvalue]( repeating: jvalue(), count: 3 )
177-
178-
__args[0] = JNIType.toJava(value: a, locals: &__locals)
179-
__args[1] = jvalue(i: jint(widthAttr))
180-
__args[2] = jvalue(i: jint(heightAttr))
181-
182-
JNIMethod.CallVoidMethod(
183-
object: javaObject,
184-
methodName: "setBaseAttributes",
185-
methodSig: "(Landroid/content/res/TypedArray;II)V",
186-
methodCache: &ViewGroupLayoutParamsJNICache.MethodID.setBaseAttributes,
187-
args: &__args,
188-
locals: &__locals )
189-
}
190-
}
191-
192199
// MARK: - Private
193200

194201
internal extension AndroidViewGroupLayoutParams {

Sources/ViewGroupMarginLayoutParams.swift

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,74 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
3838
JNI.DeleteLocalRef( __object )
3939
}
4040

41+
//Creates a new set of layout parameters with the specified width and height.
42+
public convenience init(width: Int, height: Int){
43+
44+
var __locals = [jobject]()
45+
46+
var __args = [jvalue]( repeating: jvalue(), count: 2 )
47+
__args[0] = jvalue(i: jint(width))
48+
__args[1] = jvalue(i: jint(height))
49+
50+
let __object = JNIMethod.NewObject(
51+
className: ViewGroupMarginLayoutParamsJNICache.className,
52+
classCache: &ViewGroupMarginLayoutParamsJNICache.jniClass,
53+
methodSig: "(II)V",
54+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.newMethod1,
55+
args: &__args,
56+
locals: &__locals )
57+
58+
self.init( javaObject: __object )
59+
60+
JNI.DeleteLocalRef( __object )
61+
}
62+
63+
// Copy constructor.
64+
public convenience init(source: Android.View.ViewGroup.LayoutParams){
65+
66+
var __locals = [jobject]()
67+
68+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
69+
__args[0] = JNIType.toJava(value: source, locals: &__locals)
70+
71+
let __object = JNIMethod.NewObject(
72+
className: ViewGroupMarginLayoutParamsJNICache.className,
73+
classCache: &ViewGroupMarginLayoutParamsJNICache.jniClass,
74+
methodSig: "(Landroid/view/ViewGroup$LayoutParams;)V",
75+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.newMethod2,
76+
args: &__args,
77+
locals: &__locals )
78+
79+
self.init( javaObject: __object )
80+
81+
JNI.DeleteLocalRef( __object )
82+
}
83+
84+
// Creates a new set of layout parameters.
85+
public convenience init(context: Android.Content.Context, attrs: JavaObject){
86+
87+
var __locals = [jobject]()
88+
89+
var __args = [jvalue]( repeating: jvalue(), count: 2 )
90+
__args[0] = JNIType.toJava(value: context, locals: &__locals)
91+
__args[1] = JNIType.toJava(value: attrs, locals: &__locals)
92+
93+
let __object = JNIMethod.NewObject(
94+
className: ViewGroupMarginLayoutParamsJNICache.className,
95+
classCache: &ViewGroupMarginLayoutParamsJNICache.jniClass,
96+
methodSig: "(Landroid/content/Context;Landroid/util/AttributeSet;)V",
97+
methodCache: &ViewGroupMarginLayoutParamsJNICache.MethodID.newMethod3,
98+
args: &__args,
99+
locals: &__locals )
100+
101+
self.init( javaObject: __object )
102+
103+
JNI.DeleteLocalRef( __object )
104+
}
105+
}
106+
107+
public extension AndroidViewGroupMarginLayoutParams {
108+
41109
public var bottomMargin: Int {
42110
get {
43111
let __value = JNIField.GetIntField(fieldName: "bottomMargin",
@@ -102,6 +170,9 @@ open class AndroidViewGroupMarginLayoutParams: Android.View.ViewGroup.LayoutPara
102170
public var isMarginRelative: Bool {
103171
get{ return getIsMarginRelative() }
104172
}
173+
}
174+
175+
internal extension AndroidViewGroupMarginLayoutParams {
105176

106177
@_versioned
107178
internal func setMarginStart(_ start: Int) {
@@ -276,6 +347,9 @@ internal extension AndroidViewGroupMarginLayoutParams {
276347
/// JNI Method ID cache
277348
struct MethodID {
278349
static var newMethod: jmethodID?
350+
static var newMethod1: jmethodID?
351+
static var newMethod2: jmethodID?
352+
static var newMethod3: jmethodID?
279353
static var setMargins: jmethodID?
280354
static var setMarginStart: jmethodID?
281355
static var setMarginEnd: jmethodID?

Sources/WidgetFragmentLayout.swift

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,25 @@ public extension Android.Widget {
1717

1818
open class AndroidWidgetFragmentLayout: Android.View.ViewGroup {
1919

20-
20+
public convenience init(context: Android.Content.Context) {
21+
22+
var __locals = [jobject]()
23+
24+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
25+
__args[0] = JNIType.toJava(value: context, locals: &__locals)
26+
27+
let __object = JNIMethod.NewObject(
28+
className: FragmentLayoutJNICache.className,
29+
classCache: &FragmentLayoutJNICache.jniClass,
30+
methodSig: "(Landroid/content/Context;)V",
31+
methodCache: &FragmentLayoutJNICache.MethodID.init_method_1,
32+
args: &__args,
33+
locals: &__locals )
34+
35+
self.init( javaObject: __object )
36+
37+
JNI.DeleteLocalRef( __object )
38+
}
2139
}
2240

2341
// MARK: - Methods
@@ -45,7 +63,7 @@ internal extension AndroidWidgetFragmentLayout {
4563

4664
/// JNI Method ID cache
4765
struct MethodID {
48-
66+
static var init_method_1: jmethodID?
4967
static var generateLayoutParams: jmethodID?
5068
static var getAccessibilityClassName: jmethodID?
5169
static var getConsiderGoneChildrenWhenMeasuring: jmethodID?

0 commit comments

Comments
 (0)