aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/utils/ContextUtils.kt
blob: c2bcc2ab56213f1a03380f46936d1b6d9abcd0ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.pitchedapps.frost.utils

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.support.v4.app.ActivityOptionsCompat
import android.support.v4.content.ContextCompat
import ca.allanwang.kau.utils.adjustAlpha
import ca.allanwang.kau.utils.isColorDark
import ca.allanwang.kau.utils.lighten
import ca.allanwang.kau.utils.startActivity
import com.afollestad.materialdialogs.MaterialDialog
import com.pitchedapps.frost.LoginActivity
import com.pitchedapps.frost.R
import com.pitchedapps.frost.WebOverlayActivity
import com.pitchedapps.frost.dbflow.CookieModel
import com.pitchedapps.frost.facebook.FbTab

/**
 * Created by Allan Wang on 2017-06-03.
 */
internal const val EXTRA_COOKIES = "extra_cookies"
internal const val ARG_URL = "arg_url"

fun Context.launchNewTask(clazz: Class<out Activity>, cookieList: ArrayList<CookieModel> = arrayListOf(), clearStack: Boolean = clazz != LoginActivity::class.java) {
    startActivity(clazz, clearStack, {
        putParcelableArrayListExtra(EXTRA_COOKIES, cookieList)
    })
}

fun Activity.cookies(): ArrayList<CookieModel> {
    return intent?.extras?.getParcelableArrayList<CookieModel>(EXTRA_COOKIES) ?: arrayListOf()
}

fun Context.launchWebOverlay(url: String) {
    val intent = Intent(this, WebOverlayActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
    intent.putExtra(ARG_URL, url)
    val bundle = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_in_right, R.anim.slide_out_right).toBundle()
    ContextCompat.startActivity(this, intent, bundle)
}

fun WebOverlayActivity.url(): String {
    return intent.extras?.getString(ARG_URL) ?: FbTab.FEED.url
}


fun Activity.materialDialogThemed(action: MaterialDialog.Builder.() -> Unit): MaterialDialog {
    val builder = MaterialDialog.Builder(this)
    val dimmerTextColor = Prefs.textColor.adjustAlpha(0.8f)
    builder.titleColor(Prefs.textColor)
            .contentColor(dimmerTextColor)
            .widgetColor(dimmerTextColor)
            .backgroundColor(Prefs.bgColor.lighten(0.1f))
            .positiveColor(Prefs.textColor)
            .negativeColor(Prefs.textColor)
            .neutralColor(Prefs.textColor)
    builder.action()
    return builder.show()
}

fun Activity.setFrostTheme() {
    val isTransparent = Color.alpha(Prefs.bgColor) != 255
    if (Prefs.bgColor.isColorDark())
        setTheme(if (isTransparent) R.style.FrostTheme_Transparent else R.style.FrostTheme)
    else
        setTheme(if (isTransparent) R.style.FrostTheme_Light_Transparent else R.style.FrostTheme_Light)
}