aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/utils
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/utils')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/EnumUtils.kt57
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt14
3 files changed, 62 insertions, 11 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/EnumUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/EnumUtils.kt
new file mode 100644
index 00000000..d20d1573
--- /dev/null
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/EnumUtils.kt
@@ -0,0 +1,57 @@
+package com.pitchedapps.frost.utils
+
+import android.content.Intent
+import android.os.BaseBundle
+
+/**
+ * Created by Allan Wang on 29/12/17.
+ *
+ * Helper to set enum using its name rather than the serialized version
+ * Name is used in case the enum is involved in persistent data, where updates may shift indices
+ */
+interface EnumBundle<E : Enum<E>> {
+
+ val bundleContract: EnumBundleCompanion<E>
+
+ val name: String
+
+ val ordinal: Int
+
+ fun put(intent: Intent) {
+ intent.putExtra(bundleContract.argTag, name)
+ }
+
+ fun put(bundle: BaseBundle?) {
+ bundle?.putString(bundleContract.argTag, name)
+ }
+}
+
+interface EnumBundleCompanion<E : Enum<E>> {
+
+ val argTag: String
+
+ val values: Array<E>
+
+ val valueMap: Map<String, E>
+
+ operator fun get(name: String?) = if (name == null) null else valueMap[name]
+
+ operator fun get(bundle: BaseBundle?) = get(bundle?.getString(argTag))
+
+ operator fun get(intent: Intent?) = get(intent?.getStringExtra(argTag))
+
+}
+
+open class EnumCompanion<E : Enum<E>>(
+ override final val argTag: String,
+ override final val values: Array<E>) : EnumBundleCompanion<E> {
+
+ override final val valueMap: Map<String, E> = values.map { it.name to it }.toMap()
+
+ override final fun get(name: String?) = super.get(name)
+
+ override final fun get(bundle: BaseBundle?) = super.get(bundle)
+
+ override final fun get(intent: Intent?) = super.get(intent)
+
+} \ No newline at end of file
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt
index cc5ee733..f14039b7 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt
@@ -102,7 +102,7 @@ object Prefs : KPref() {
var animate: Boolean by kpref("fancy_animations", true)
- var notificationKeywords: StringSet by kpref("notification_keywords", mutableSetOf<String>())
+ var notificationKeywords: StringSet by kpref("notification_keywords", mutableSetOf())
var notificationAllAccounts: Boolean by kpref("notification_all_accounts", true)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
index 0ca068b5..592dd4fc 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
@@ -2,6 +2,7 @@ package com.pitchedapps.frost.utils
import android.annotation.SuppressLint
import android.app.Activity
+import android.app.ActivityOptions
import android.content.Context
import android.content.Intent
import android.graphics.Color
@@ -10,7 +11,6 @@ import android.net.Uri
import android.support.annotation.StringRes
import android.support.design.internal.SnackbarContentLayout
import android.support.design.widget.Snackbar
-import android.support.v4.app.ActivityOptionsCompat
import android.support.v7.widget.Toolbar
import android.view.View
import android.widget.FrameLayout
@@ -22,9 +22,6 @@ import ca.allanwang.kau.mediapicker.createPrivateMediaFile
import ca.allanwang.kau.utils.*
import ca.allanwang.kau.xml.showChangelog
import com.afollestad.materialdialogs.MaterialDialog
-import com.bumptech.glide.RequestBuilder
-import com.bumptech.glide.load.resource.bitmap.CircleCrop
-import com.bumptech.glide.request.RequestOptions
import com.crashlytics.android.answers.Answers
import com.crashlytics.android.answers.CustomEvent
import com.pitchedapps.frost.BuildConfig
@@ -47,7 +44,6 @@ const val ARG_URL = "arg_url"
const val ARG_USER_ID = "arg_user_id"
const val ARG_IMAGE_URL = "arg_image_url"
const val ARG_TEXT = "arg_text"
-const val ARG_OVERLAY_CONTEXT = "arg_overlay_context"
fun Context.launchNewTask(clazz: Class<out Activity>, cookieList: ArrayList<CookieModel> = arrayListOf(), clearStack: Boolean = false) {
startActivity(clazz, clearStack, intentBuilder = {
@@ -61,7 +57,7 @@ fun Context.launchLogin(cookieList: ArrayList<CookieModel>, clearStack: Boolean
}
fun Activity.cookies(): ArrayList<CookieModel> {
- return intent?.extras?.getParcelableArrayList<CookieModel>(EXTRA_COOKIES) ?: arrayListOf()
+ return intent?.getParcelableArrayListExtra<CookieModel>(EXTRA_COOKIES) ?: arrayListOf()
}
/**
@@ -81,7 +77,7 @@ fun Context.launchWebOverlay(url: String, clazz: Class<out WebOverlayActivityBas
})
}
-private fun Context.fadeBundle() = ActivityOptionsCompat.makeCustomAnimation(this,
+private fun Context.fadeBundle() = ActivityOptions.makeCustomAnimation(this,
android.R.anim.fade_in, android.R.anim.fade_out).toBundle()
fun Context.launchImageActivity(imageUrl: String, text: String?) {
@@ -103,7 +99,7 @@ fun Activity.launchIntroActivity(cookieList: ArrayList<CookieModel>)
= launchNewTask(IntroActivity::class.java, cookieList, true)
fun WebOverlayActivity.url(): String {
- return intent.extras?.getString(ARG_URL) ?: FbItem.FEED.url
+ return intent.getStringExtra(ARG_URL) ?: FbItem.FEED.url
}
fun Context.materialDialogThemed(action: MaterialDialog.Builder.() -> Unit): MaterialDialog {
@@ -192,8 +188,6 @@ fun Activity.frostNavigationBar() {
navigationBarColor = if (Prefs.tintNavBar) Prefs.headerColor else Color.BLACK
}
-fun <T> RequestBuilder<T>.withRoundIcon() = apply(RequestOptions().transform(CircleCrop()))!!
-
@Throws(IOException::class)
fun createMediaFile(extension: String) = createMediaFile("Frost", extension)