diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt new file mode 100644 index 00000000..b3b3bd7c --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt @@ -0,0 +1,145 @@ +package com.pitchedapps.frost.activities + +import android.content.Intent +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import ca.allanwang.kau.changelog.showChangelog +import ca.allanwang.kau.kpref.activity.CoreAttributeContract +import ca.allanwang.kau.kpref.activity.KPrefActivity +import ca.allanwang.kau.kpref.activity.KPrefAdapterBuilder +import ca.allanwang.kau.kpref.activity.items.KPrefItemBase +import ca.allanwang.kau.ui.views.RippleCanvas +import ca.allanwang.kau.utils.* +import com.mikepenz.community_material_typeface_library.CommunityMaterial +import com.mikepenz.google_material_typeface_library.GoogleMaterial +import com.pitchedapps.frost.BuildConfig +import com.pitchedapps.frost.R +import com.pitchedapps.frost.settings.* +import com.pitchedapps.frost.utils.* +import com.pitchedapps.frost.utils.iab.* + + +/** + * Created by Allan Wang on 2017-06-06. + */ +class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListener { + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (!IAB.handleActivityResult(requestCode, resultCode, data)) { + super.onActivityResult(requestCode, resultCode, data) + adapter.notifyDataSetChanged() + } + } + + + override fun receivedBroadcast() { + L.d("IAB broadcast") + adapter.notifyDataSetChanged() + } + + override fun kPrefCoreAttributes(): CoreAttributeContract.() -> Unit = { + textColor = { Prefs.textColor } + accentColor = { Prefs.accentColor } + } + + override fun onCreateKPrefs(savedInstanceState: android.os.Bundle?): KPrefAdapterBuilder.() -> Unit = { + subItems(R.string.appearance, getAppearancePrefs()) { + descRes = R.string.appearance_desc + iicon = GoogleMaterial.Icon.gmd_palette + } + + subItems(R.string.behaviour, getBehaviourPrefs()) { + descRes = R.string.behaviour_desc + iicon = GoogleMaterial.Icon.gmd_trending_up + } + + subItems(R.string.newsfeed, getFeedPrefs()) { + descRes = R.string.newsfeed_desc + iicon = CommunityMaterial.Icon.cmd_newspaper + } + + subItems(R.string.notifications, getNotificationPrefs()) { + descRes = R.string.notifications_desc + iicon = GoogleMaterial.Icon.gmd_notifications + } + + subItems(R.string.experimental, getExperimentalPrefs()) { + descRes = R.string.experimental_desc + iicon = CommunityMaterial.Icon.cmd_flask_outline + } + + plainText(R.string.restore_purchases) { + descRes = R.string.restore_purchases_desc + iicon = GoogleMaterial.Icon.gmd_refresh + onClick = { _, _, _ -> this@SettingsActivity.restorePurchases(); true } + } + + plainText(R.string.about_frost) { + iicon = GoogleMaterial.Icon.gmd_info + onClick = { _, _, _ -> startActivity(AboutActivity::class.java, transition = true); true } + } + + if (BuildConfig.DEBUG) { + checkbox(R.string.custom_pro, { Prefs.debugPro }, { Prefs.debugPro = it }) + } + } + + fun KPrefItemBase.BaseContract<*>.dependsOnPro() { + onDisabledClick = { _, _, _ -> openPlayProPurchase(0); true } + enabler = { IS_FROST_PRO } + } + + fun shouldRestartMain() { + setResult(MainActivity.REQUEST_RESTART) + } + + override fun onCreate(savedInstanceState: Bundle?) { + setFrostTheme(true) + super.onCreate(savedInstanceState) + animate = Prefs.animate + themeExterior(false) + } + + fun themeExterior(animate: Boolean = true) { + if (animate) bgCanvas.fade(Prefs.bgColor) + else bgCanvas.set(Prefs.bgColor) + if (animate) toolbarCanvas.ripple(Prefs.headerColor, RippleCanvas.MIDDLE, RippleCanvas.END) + else toolbarCanvas.set(Prefs.headerColor) + frostNavigationBar() + } + + override fun onBackPressed() { + if (!super.backPress()) + finishSlideOut() + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_settings, menu) + toolbar.tint(Prefs.iconColor) + toolbarTitle.textColor = Prefs.iconColor + toolbarTitle.invalidate() + setMenuIcons(menu, Prefs.iconColor, + R.id.action_email to GoogleMaterial.Icon.gmd_email, + R.id.action_changelog to GoogleMaterial.Icon.gmd_info) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.action_email -> materialDialogThemed { + title(R.string.subject) + items(Support.values().map { string(it.title) }) + itemsCallback { _, _, which, _ -> Support.values()[which].sendEmail(this@SettingsActivity) } + } + R.id.action_changelog -> showChangelog(R.xml.changelog, Prefs.textColor) { theme() } + else -> return super.onOptionsItemSelected(item) + } + return true + } + + override fun onDestroy() { + IAB.dispose() + super.onDestroy() + } +}
\ No newline at end of file |