aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/activities
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt16
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt78
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt21
3 files changed, 64 insertions, 51 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
index 0b8c1a56..79d9f782 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
@@ -1,7 +1,5 @@
package com.pitchedapps.frost.activities
-import android.animation.ValueAnimator
-import android.annotation.SuppressLint
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Bitmap
@@ -21,6 +19,7 @@ import ca.allanwang.kau.permissions.PERMISSION_WRITE_EXTERNAL_STORAGE
import ca.allanwang.kau.permissions.kauOnRequestPermissionsResult
import ca.allanwang.kau.permissions.kauRequestPermissions
import ca.allanwang.kau.utils.*
+import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.BaseTarget
import com.bumptech.glide.request.target.SizeReadyCallback
import com.bumptech.glide.request.target.Target
@@ -31,7 +30,10 @@ import com.mikepenz.google_material_typeface_library.GoogleMaterial
import com.mikepenz.iconics.typeface.IIcon
import com.pitchedapps.frost.BuildConfig
import com.pitchedapps.frost.R
-import com.pitchedapps.frost.utils.*
+import com.pitchedapps.frost.utils.ARG_IMAGE_URL
+import com.pitchedapps.frost.utils.ARG_TEXT
+import com.pitchedapps.frost.utils.L
+import com.pitchedapps.frost.utils.Prefs
import com.sothree.slidinguppanel.SlidingUpPanelLayout
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
@@ -82,7 +84,8 @@ class ImageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(if (!text.isNullOrBlank()) R.layout.activity_image else R.layout.activity_image_textless)
+ val layout = if (!text.isNullOrBlank()) R.layout.activity_image else R.layout.activity_image_textless
+ setContentView(layout)
container.setBackgroundColor(Prefs.bgColor.withMinAlpha(222))
caption?.setTextColor(Prefs.textColor)
caption?.setBackgroundColor(Prefs.bgColor.colorToForeground(0.2f).withAlpha(255))
@@ -104,7 +107,7 @@ class ImageActivity : AppCompatActivity() {
imageCallback(null, false)
}
})
- GlideApp.with(this).asBitmap().load(imageUrl).into(PhotoTarget(this::imageCallback))
+ Glide.with(this).asBitmap().load(imageUrl).into(PhotoTarget(this::imageCallback))
}
/**
@@ -196,7 +199,8 @@ class ImageActivity : AppCompatActivity() {
} finally {
L.d("Download image async finished: $success")
uiThread {
- snackbar(if (success) R.string.image_download_success else R.string.image_download_fail)
+ val text = if (success) R.string.image_download_success else R.string.image_download_fail
+ snackbar(text)
if (success) {
deleteTempFile()
fabAction = FabStates.SHARE
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
index 8ca18385..a45bd033 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
@@ -9,7 +9,10 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.support.annotation.StringRes
-import android.support.design.widget.*
+import android.support.design.widget.AppBarLayout
+import android.support.design.widget.CoordinatorLayout
+import android.support.design.widget.FloatingActionButton
+import android.support.design.widget.TabLayout
import android.support.v4.app.ActivityOptionsCompat
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
@@ -52,7 +55,8 @@ import com.pitchedapps.frost.facebook.FbTab
import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL
import com.pitchedapps.frost.fragments.WebFragment
import com.pitchedapps.frost.utils.*
-import com.pitchedapps.frost.utils.iab.validatePro
+import com.pitchedapps.frost.utils.iab.FrostBilling
+import com.pitchedapps.frost.utils.iab.IABMain
import com.pitchedapps.frost.views.BadgedIcon
import com.pitchedapps.frost.views.FrostViewPager
import com.pitchedapps.frost.web.SearchWebView
@@ -64,7 +68,8 @@ import org.jsoup.Jsoup
import java.util.concurrent.TimeUnit
class MainActivity : BaseActivity(), SearchWebView.SearchContract,
- ActivityWebContract, FileChooserContract by FileChooserDelegate() {
+ ActivityWebContract, FileChooserContract by FileChooserDelegate(),
+ FrostBilling by IABMain() {
lateinit var adapter: SectionsPagerAdapter
val toolbar: Toolbar by bindView(R.id.toolbar)
@@ -97,12 +102,12 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract,
* Possible responses from the SettingsActivity
* after the configurations have changed
*/
- const val REQUEST_RESTART = 90909
- const val REQUEST_REFRESH = 80808
- const val REQUEST_WEB_ZOOM = 50505
- const val REQUEST_NAV = 10101
- const val REQUEST_SEARCH = 70707
- const val REQUEST_RESTART_APPLICATION = 60606
+ const val REQUEST_RESTART_APPLICATION = 1 shl 1
+ const val REQUEST_RESTART = 1 shl 2
+ const val REQUEST_REFRESH = 1 shl 3
+ const val REQUEST_WEB_ZOOM = 1 shl 4
+ const val REQUEST_NAV = 1 shl 5
+ const val REQUEST_SEARCH = 1 shl 6
}
override fun onCreate(savedInstanceState: Bundle?) {
@@ -149,12 +154,12 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract,
viewPager.post { webFragmentObservable.onNext(0); lastPosition = 0 } //trigger hook so title is set
setupDrawer(savedInstanceState)
setupTabs()
- fab.setOnClickListener { view ->
- Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
- .setAction("Action", null).show()
- }
+// fab.setOnClickListener { view ->
+// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+// .setAction("Action", null).show()
+// }
setFrostColors(toolbar, themeWindow = false, headers = arrayOf(tabs, appBar), backgrounds = arrayOf(viewPager))
- validatePro()
+ onCreateBilling()
}
fun tabsForEachView(action: (position: Int, view: BadgedIcon) -> Unit) {
@@ -394,26 +399,28 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract,
if (onActivityResultWeb(requestCode, resultCode, data)) return
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == ACTIVITY_SETTINGS) {
- when (resultCode) {
- REQUEST_RESTART -> restart()
- REQUEST_REFRESH -> webFragmentObservable.onNext(WebFragment.REQUEST_REFRESH)
- REQUEST_NAV -> frostNavigationBar()
- REQUEST_WEB_ZOOM -> webFragmentObservable.onNext(WebFragment.REQUEST_TEXT_ZOOM)
- REQUEST_SEARCH -> invalidateOptionsMenu()
- REQUEST_RESTART_APPLICATION -> { //completely restart application
- L.d("Restart Application Requested")
- val intent = packageManager.getLaunchIntentForPackage(packageName)
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
- val pending = PendingIntent.getActivity(this, 666, intent, PendingIntent.FLAG_CANCEL_CURRENT)
- val alarm = getSystemService(Context.ALARM_SERVICE) as AlarmManager
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
- alarm.setExactAndAllowWhileIdle(AlarmManager.RTC, System.currentTimeMillis() + 100, pending)
- else
- alarm.setExact(AlarmManager.RTC, System.currentTimeMillis() + 100, pending)
- finish()
- System.exit(0)
- }
+ if (resultCode and REQUEST_RESTART_APPLICATION > 0) { //completely restart application
+ L.d("Restart Application Requested")
+ val intent = packageManager.getLaunchIntentForPackage(packageName)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
+ val pending = PendingIntent.getActivity(this, 666, intent, PendingIntent.FLAG_CANCEL_CURRENT)
+ val alarm = getSystemService(Context.ALARM_SERVICE) as AlarmManager
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
+ alarm.setExactAndAllowWhileIdle(AlarmManager.RTC, System.currentTimeMillis() + 100, pending)
+ else
+ alarm.setExact(AlarmManager.RTC, System.currentTimeMillis() + 100, pending)
+ finish()
+ System.exit(0)
+ return
}
+ if (resultCode and REQUEST_RESTART > 0) return restart()
+ /*
+ * These results can be stacked
+ */
+ if (resultCode and REQUEST_REFRESH > 0) webFragmentObservable.onNext(WebFragment.REQUEST_REFRESH)
+ if (resultCode and REQUEST_NAV > 0) frostNavigationBar()
+ if (resultCode and REQUEST_WEB_ZOOM > 0) webFragmentObservable.onNext(WebFragment.REQUEST_TEXT_ZOOM)
+ if (resultCode and REQUEST_SEARCH > 0) invalidateOptionsMenu()
}
}
@@ -435,6 +442,11 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract,
super.onStart()
}
+ override fun onDestroy() {
+ onDestroyBilling()
+ super.onDestroy()
+ }
+
override fun onBackPressed() {
if (searchView?.onBackPressed() ?: false) return
if (currentFragment.onBackPressed()) return
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
index c40a705f..a7ca6ce5 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
@@ -17,27 +17,23 @@ 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.*
+import com.pitchedapps.frost.utils.iab.FrostBilling
+import com.pitchedapps.frost.utils.iab.IABSettings
+import com.pitchedapps.frost.utils.iab.IS_FROST_PRO
/**
* Created by Allan Wang on 2017-06-06.
*/
-class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListener {
+class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- if (!IAB.handleActivityResult(requestCode, resultCode, data)) {
+ if (!onActivityResultBilling(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 }
@@ -72,7 +68,7 @@ class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListe
plainText(R.string.restore_purchases) {
descRes = R.string.restore_purchases_desc
iicon = GoogleMaterial.Icon.gmd_refresh
- onClick = { _, _, _ -> this@SettingsActivity.restorePurchases(); true }
+ onClick = { _, _, _ -> restorePurchases(false); true }
}
plainText(R.string.about_frost) {
@@ -86,7 +82,7 @@ class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListe
}
fun KPrefItemBase.BaseContract<*>.dependsOnPro() {
- onDisabledClick = { _, _, _ -> openPlayProPurchase(0); true }
+ onDisabledClick = { _, _, _ -> purchasePro(); true }
enabler = { IS_FROST_PRO }
}
@@ -99,6 +95,7 @@ class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListe
super.onCreate(savedInstanceState)
animate = Prefs.animate
themeExterior(false)
+ onCreateBilling()
}
fun themeExterior(animate: Boolean = true) {
@@ -139,7 +136,7 @@ class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListe
}
override fun onDestroy() {
- IAB.dispose()
+ onDestroyBilling()
super.onDestroy()
}
} \ No newline at end of file