Skip to content

Commit b69336f

Browse files
committed
Upgrade OmegaLaunchers
Refactoring: IntentBuilder as Parcelable
1 parent 5d2bac4 commit b69336f

35 files changed

Lines changed: 946 additions & 72 deletions

core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ android {
3535
dependencies {
3636
implementation fileTree(dir: 'libs', include: ['*.jar'])
3737
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
38-
implementation 'com.github.Omega-R:OmegaLaunchers:1.0.3'
38+
implementation 'com.github.Omega-R.OmegaLaunchers:omegalauncherslib:1.0.4'
3939
api 'com.github.Omega-R.OmegaTypes:omegatypes:2.0.3'
4040

4141
compileOnly "androidx.appcompat:appcompat:$androidX"

core/src/main/java/com/omega_r/libs/omegaintentbuilder/IntentBuilderLauncher.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.omega_r.libs.omegaintentbuilder
22

33
import android.content.Context
4+
import android.os.Parcel
5+
import android.os.Parcelable.Creator
46
import com.omega_r.libs.omegaintentbuilder.interfaces.IntentBuilder
57
import com.omega_r.libs.omegaintentbuilder.interfaces.IntentHandlerBuilder
68
import com.omegar.libs.omegalaunchers.BaseIntentLauncher
@@ -10,6 +12,8 @@ import com.omegar.libs.omegalaunchers.BaseIntentLauncher
1012
*/
1113
class IntentBuilderLauncher(private val intentBuilder: IntentBuilder) : BaseIntentLauncher() {
1214

15+
constructor(parcel: Parcel) : this(parcel.readParcelable(IntentBuilder::class.java.classLoader)!!)
16+
1317
override fun getIntent(context: Context) = intentBuilder.createIntent(context)
1418

1519
override fun launch(context: Context) {
@@ -18,5 +22,22 @@ class IntentBuilderLauncher(private val intentBuilder: IntentBuilder) : BaseInte
1822
} else super.launch(context)
1923
}
2024

25+
override fun writeToParcel(parcel: Parcel, flags: Int) {
26+
parcel.writeParcelable(intentBuilder, flags)
27+
}
28+
29+
override fun describeContents(): Int {
30+
return 0
31+
}
2132

33+
companion object CREATOR : Creator<IntentBuilderLauncher> {
34+
35+
override fun createFromParcel(parcel: Parcel): IntentBuilderLauncher {
36+
return IntentBuilderLauncher(parcel)
37+
}
38+
39+
override fun newArray(size: Int): Array<IntentBuilderLauncher?> {
40+
return arrayOfNulls(size)
41+
}
42+
}
2243
}

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/ActivityIntentBuilder.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ package com.omega_r.libs.omegaintentbuilder.builders
1313
import android.app.Activity
1414
import android.app.Fragment
1515
import android.content.Context
16+
import android.os.Parcel
17+
import android.os.Parcelable.Creator
1618
import com.omega_r.libs.omegaintentbuilder.handlers.ActivityIntentHandler
1719
import com.omega_r.libs.omegaintentbuilder.handlers.ContextIntentHandler
1820
import com.omega_r.libs.omegaintentbuilder.handlers.FragmentIntentHandler
1921
import com.omega_r.libs.omegaintentbuilder.handlers.SupportFragmentIntentHandler
2022
import com.omega_r.libs.omegaintentbuilder.interfaces.IntentHandlerBuilder
2123

22-
class ActivityIntentBuilder<T : Activity>(
23-
activity: Class<T>
24-
) : BaseIntentBuilder<ActivityIntentBuilder<T>, T>(activity), IntentHandlerBuilder {
24+
class ActivityIntentBuilder<T : Activity> : BaseIntentBuilder<ActivityIntentBuilder<T>, T>, IntentHandlerBuilder {
25+
26+
constructor(activity: Class<T>) : super(activity)
27+
28+
constructor(parcel: Parcel) : super(parcel)
2529

2630
override fun createIntentHandler(context: Context): ContextIntentHandler {
2731
return ContextIntentHandler(context, createIntent(context))
@@ -39,4 +43,22 @@ class ActivityIntentBuilder<T : Activity>(
3943
return SupportFragmentIntentHandler(fragment, createIntent(fragment.activity!!))
4044
}
4145

46+
override fun writeToParcel(parcel: Parcel, flags: Int) {
47+
super.writeToParcel(parcel, flags)
48+
}
49+
50+
override fun describeContents(): Int {
51+
return 0
52+
}
53+
54+
companion object CREATOR : Creator<ActivityIntentBuilder<*>> {
55+
56+
override fun createFromParcel(parcel: Parcel): ActivityIntentBuilder<*> {
57+
return ActivityIntentBuilder<Activity>(parcel)
58+
}
59+
60+
override fun newArray(size: Int): Array<ActivityIntentBuilder<*>?> {
61+
return arrayOfNulls(size)
62+
}
63+
}
4264
}

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package com.omega_r.libs.omegaintentbuilder.builders
22

33
import android.content.Context
44
import android.content.Intent
5+
import android.os.Parcel
6+
import android.os.Parcelable.Creator
57
import android.provider.AlarmClock.*
68

7-
class AlarmIntentBuilder : BaseActivityBuilder() {
9+
class AlarmIntentBuilder() : BaseActivityBuilder() {
810
private var message: String? = null
911
private var hour: Int? = null
1012
private var minutes: Int? = null
@@ -13,6 +15,16 @@ class AlarmIntentBuilder : BaseActivityBuilder() {
1315
private var vibrate: Boolean? = null
1416
private var ringtoneSilent: Boolean = false
1517

18+
constructor(parcel: Parcel) : this() {
19+
message = parcel.readString()
20+
hour = parcel.readValue(Int::class.java.classLoader) as? Int
21+
minutes = parcel.readValue(Int::class.java.classLoader) as? Int
22+
ringtone = parcel.readString()
23+
skipUI = parcel.readByte() != 0.toByte()
24+
vibrate = parcel.readValue(Boolean::class.java.classLoader) as? Boolean
25+
ringtoneSilent = parcel.readByte() != 0.toByte()
26+
}
27+
1628
/**
1729
* Set custom message for the alarm.
1830
* <p>
@@ -134,4 +146,28 @@ class AlarmIntentBuilder : BaseActivityBuilder() {
134146
}
135147
}
136148

149+
override fun writeToParcel(parcel: Parcel, flags: Int) {
150+
parcel.writeString(message)
151+
parcel.writeValue(hour)
152+
parcel.writeValue(minutes)
153+
parcel.writeString(ringtone)
154+
parcel.writeByte(if (skipUI) 1 else 0)
155+
parcel.writeValue(vibrate)
156+
parcel.writeByte(if (ringtoneSilent) 1 else 0)
157+
}
158+
159+
override fun describeContents(): Int {
160+
return 0
161+
}
162+
163+
companion object CREATOR : Creator<AlarmIntentBuilder> {
164+
165+
override fun createFromParcel(parcel: Parcel): AlarmIntentBuilder {
166+
return AlarmIntentBuilder(parcel)
167+
}
168+
169+
override fun newArray(size: Int): Array<AlarmIntentBuilder?> {
170+
return arrayOfNulls(size)
171+
}
172+
}
137173
}

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/BaseIntentBuilder.kt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@ package com.omega_r.libs.omegaintentbuilder.builders
33
import android.content.Context
44
import android.content.Intent
55
import android.os.Bundle
6+
import android.os.Parcel
67
import android.os.Parcelable
8+
import android.os.Parcelable.Creator
79
import java.io.Serializable
810

911
@Suppress("UNCHECKED_CAST")
10-
open class BaseIntentBuilder<out S, T>(private val classT: Class<T>) {
12+
abstract class BaseIntentBuilder<out S, T>(
13+
private val classT: Class<T>,
14+
private val extras: Bundle = Bundle(),
15+
private var flags: Int = 0,
16+
) : Parcelable {
1117

12-
private val extras = Bundle()
13-
private var flags: Int = 0
18+
constructor(parcel: Parcel) : this(
19+
parcel.readSerializable() as Class<T>,
20+
parcel.readBundle(Bundle::class.java.classLoader) ?: Bundle(),
21+
parcel.readInt()
22+
)
1423

1524
/**
1625
* Add extended data to the createdIntent. The name must include a package
@@ -539,4 +548,10 @@ open class BaseIntentBuilder<out S, T>(private val classT: Class<T>) {
539548
flags = this@BaseIntentBuilder.flags
540549
}
541550

551+
override fun writeToParcel(parcel: Parcel, flags: Int) {
552+
parcel.writeSerializable(classT)
553+
parcel.writeBundle(extras)
554+
parcel.writeInt(flags)
555+
}
556+
542557
}

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/BaseServiceBuilder.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.omega_r.libs.omegaintentbuilder.builders
22

33
import android.content.Context
4+
import android.os.Parcelable
45
import com.omega_r.libs.omegaintentbuilder.interfaces.ServiceHandler
56

6-
abstract class BaseServiceBuilder : ServiceHandler {
7+
abstract class BaseServiceBuilder : ServiceHandler, Parcelable {
78

89
override fun startService(context: Context) {
910
context.startService(createIntent(context))

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/BaseUriBuilder.kt

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,37 @@ package com.omega_r.libs.omegaintentbuilder.builders
1313
import android.content.Context
1414
import android.graphics.Bitmap
1515
import android.net.Uri
16+
import android.os.Parcel
17+
import android.os.Parcelable.Creator
1618
import com.omega_r.libs.omegaintentbuilder.builders.share.DownloadBuilder
1719
import com.omega_r.libs.omegaintentbuilder.downloader.Download
1820
import com.omega_r.libs.omegaintentbuilder.providers.FileProvider
1921
import com.omega_r.libs.omegatypes.image.Image
2022
import java.io.File
2123
import java.io.FileOutputStream
2224

23-
abstract class BaseUriBuilder() : BaseActivityBuilder(), Download<BaseUriBuilder> {
24-
25-
private val uriSet: MutableSet<Uri> = mutableSetOf()
26-
private val fileSet: MutableSet<File> = mutableSetOf()
27-
private val bitmapSet: MutableSet<Bitmap> = mutableSetOf()
28-
29-
private val downloadBuilder by lazy { DownloadBuilder(this) }
30-
private var localFilesDir: File? = null
25+
abstract class BaseUriBuilder(
26+
private val uriSet: MutableSet<Uri> = mutableSetOf(),
27+
private val fileSet: MutableSet<File> = mutableSetOf(),
28+
private val bitmapSet: MutableSet<Bitmap> = mutableSetOf(),
29+
private var localFilesDir: File? = null,
30+
) : BaseActivityBuilder(), Download<BaseUriBuilder> {
3131

3232
companion object {
33+
3334
private const val FILE_DIR = "intent_files" // this value from xml/file_paths.xml
3435
private const val DEFAULT_IMAGE_FILE_NAME = "File"
3536
private const val DEFAULT_IMAGE_FILE_TYPE = ".jpg";
3637
}
3738

39+
private val downloadBuilder by lazy { DownloadBuilder(this) }
40+
41+
constructor(parcel: Parcel) : this(
42+
parcel.readParcelableArray(MutableSet::class.java.classLoader)?.toMutableSet() as? MutableSet<Uri> ?: mutableSetOf(),
43+
parcel.readSerializable() as MutableSet<File>,
44+
parcel.readParcelableArray(MutableSet::class.java.classLoader)?.toMutableSet() as? MutableSet<Bitmap> ?: mutableSetOf(),
45+
parcel.readSerializable() as File?
46+
)
3847

3948
internal fun getLocalFilesDir(context: Context): File {
4049
if (localFilesDir == null) {
@@ -195,4 +204,11 @@ abstract class BaseUriBuilder() : BaseActivityBuilder(), Download<BaseUriBuilder
195204
return uriSet
196205
}
197206

207+
override fun writeToParcel(parcel: Parcel, flags: Int) {
208+
parcel.writeParcelableArray(uriSet.toTypedArray(), flags)
209+
parcel.writeSerializable(HashSet(fileSet))
210+
parcel.writeParcelableArray(bitmapSet.toTypedArray(), flags)
211+
parcel.writeSerializable(localFilesDir)
212+
}
213+
198214
}

core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/BrowserBuilder.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,17 @@ package com.omega_r.libs.omegaintentbuilder.builders
1313
import android.content.Context
1414
import android.content.Intent
1515
import android.net.Uri
16+
import android.os.Parcel
17+
import android.os.Parcelable.Creator
1618
import com.omega_r.libs.omegatypes.Text
1719
import com.omega_r.libs.omegatypes.toText
1820

1921
/**
2022
* BrowserBuilder class for starting web browser
2123
*/
22-
class BrowserBuilder (private val uri: Text) : BaseActivityBuilder() {
24+
class BrowserBuilder(private val uri: Text) : BaseActivityBuilder() {
25+
26+
constructor(parcel: Parcel) : this(parcel.readSerializable() as Text)
2327

2428
constructor(urlAddress: String) : this(urlAddress.toText())
2529

@@ -29,4 +33,22 @@ class BrowserBuilder (private val uri: Text) : BaseActivityBuilder() {
2933
data = Uri.parse(uri.getString(context))
3034
}
3135

36+
override fun writeToParcel(parcel: Parcel, flags: Int) {
37+
parcel.writeSerializable(uri)
38+
}
39+
40+
override fun describeContents(): Int {
41+
return 0
42+
}
43+
44+
companion object CREATOR : Creator<BrowserBuilder> {
45+
46+
override fun createFromParcel(parcel: Parcel): BrowserBuilder {
47+
return BrowserBuilder(parcel)
48+
}
49+
50+
override fun newArray(size: Int): Array<BrowserBuilder?> {
51+
return arrayOfNulls(size)
52+
}
53+
}
3254
}

0 commit comments

Comments
 (0)