diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities')
7 files changed, 66 insertions, 24 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt index b21cc3ab..80d2aa48 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt @@ -40,6 +40,7 @@ class AboutActivity : AboutActivityBase(null, { val include = arrayOf( "AboutLibraries", "AndroidIconics", + "androidin_appbillingv3", "androidslidinguppanel", "Crashlytics", "dbflow", 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 79d9f782..a7c59deb 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt @@ -15,6 +15,7 @@ import android.view.View import android.view.ViewGroup import android.widget.ProgressBar import android.widget.TextView +import ca.allanwang.kau.email.sendEmail import ca.allanwang.kau.permissions.PERMISSION_WRITE_EXTERNAL_STORAGE import ca.allanwang.kau.permissions.kauOnRequestPermissionsResult import ca.allanwang.kau.permissions.kauRequestPermissions @@ -30,10 +31,7 @@ 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.ARG_IMAGE_URL -import com.pitchedapps.frost.utils.ARG_TEXT -import com.pitchedapps.frost.utils.L -import com.pitchedapps.frost.utils.Prefs +import com.pitchedapps.frost.utils.* import com.sothree.slidinguppanel.SlidingUpPanelLayout import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread @@ -194,6 +192,7 @@ class ImageActivity : AppCompatActivity() { var success = true try { File(tempFilePath).copyTo(destination, true) + scanFile(destination) } catch (e: Exception) { success = false } finally { @@ -201,10 +200,7 @@ class ImageActivity : AppCompatActivity() { uiThread { val text = if (success) R.string.image_download_success else R.string.image_download_fail snackbar(text) - if (success) { - deleteTempFile() - fabAction = FabStates.SHARE - } + if (success) fabAction = FabStates.SHARE } } } @@ -212,6 +208,17 @@ class ImageActivity : AppCompatActivity() { } } + /** + * See <a href="https://developer.android.com/training/camera/photobasics.html#TaskGallery">Docs</a> + */ + internal fun scanFile(file: File) { + if (!file.exists()) return + val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) + val contentUri = Uri.fromFile(file) + mediaScanIntent.data = contentUri + this.sendBroadcast(mediaScanIntent) + } + internal fun deleteTempFile() { if (tempFilePath != null) { File(tempFilePath!!).delete() @@ -233,7 +240,17 @@ class ImageActivity : AppCompatActivity() { internal enum class FabStates(val iicon: IIcon, val iconColor: Int = Prefs.iconColor, val backgroundTint: Int = Prefs.iconBackgroundColor.withAlpha(255)) { ERROR(GoogleMaterial.Icon.gmd_error, Color.WHITE, Color.RED) { override fun onClick(activity: ImageActivity) { - //todo add something + activity.materialDialogThemed { + title(R.string.kau_error) + content(R.string.bad_image_overlay) + positiveText(R.string.kau_yes) + onPositive { _, _ -> + activity.sendEmail(R.string.dev_email, R.string.debug_image_link_subject) { + addItem("Url", activity.imageUrl) + } + } + negativeText(R.string.kau_no) + } } }, NOTHING(GoogleMaterial.Icon.gmd_adjust) { diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImagePickerActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImagePickerActivity.kt new file mode 100644 index 00000000..f18d358e --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImagePickerActivity.kt @@ -0,0 +1,12 @@ +package com.pitchedapps.frost.activities + +import android.content.res.ColorStateList +import android.os.Bundle +import ca.allanwang.kau.imagepicker.ImagePickerActivityBase +import ca.allanwang.kau.imagepicker.ImagePickerActivityOverlayBase +import com.pitchedapps.frost.utils.Prefs + +/** + * Created by Allan Wang on 2017-07-23. + */ +class ImagePickerActivity : ImagePickerActivityOverlayBase()
\ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt index e4897be5..2dccbeb5 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt @@ -106,7 +106,7 @@ class LoginActivity : BaseActivity() { fun loadProfile(id: Long) { - Glide.with(this@LoginActivity).load(PROFILE_PICTURE_URL(id)).withRoundIcon().listener(object : RequestListener<Drawable> { + Glide.with(profile).load(PROFILE_PICTURE_URL(id)).withRoundIcon().listener(object : RequestListener<Drawable> { override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { profileObservable.onSuccess(true) return false 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 a45bd033..978659db 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt @@ -1,12 +1,12 @@ package com.pitchedapps.frost.activities +import android.annotation.SuppressLint import android.app.AlarmManager import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.drawable.ColorDrawable import android.net.Uri -import android.os.Build import android.os.Bundle import android.support.annotation.StringRes import android.support.design.widget.AppBarLayout @@ -392,9 +392,10 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract, } override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams) { - openFileChooser(this, filePathCallback, fileChooserParams) + openImagePicker(filePathCallback, fileChooserParams) } + @SuppressLint("NewApi") override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (onActivityResultWeb(requestCode, resultCode, data)) return super.onActivityResult(requestCode, resultCode, data) @@ -405,7 +406,7 @@ class MainActivity : BaseActivity(), SearchWebView.SearchContract, 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) + if (buildIsMarshmallowAndUp) alarm.setExactAndAllowWhileIdle(AlarmManager.RTC, System.currentTimeMillis() + 100, pending) else alarm.setExact(AlarmManager.RTC, System.currentTimeMillis() + 100, pending) 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 a7ca6ce5..d073050b 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt @@ -1,9 +1,11 @@ package com.pitchedapps.frost.activities +import android.app.Activity import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem +import ca.allanwang.kau.about.kauLaunchAbout import ca.allanwang.kau.changelog.showChangelog import ca.allanwang.kau.kpref.activity.CoreAttributeContract import ca.allanwang.kau.kpref.activity.KPrefActivity @@ -27,11 +29,12 @@ import com.pitchedapps.frost.utils.iab.IS_FROST_PRO */ class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() { + var resultFlag = Activity.RESULT_CANCELED + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (!onActivityResultBilling(requestCode, resultCode, data)) { + if (!onActivityResultBilling(requestCode, resultCode, data)) super.onActivityResult(requestCode, resultCode, data) - adapter.notifyDataSetChanged() - } + adapter.notifyDataSetChanged() } override fun kPrefCoreAttributes(): CoreAttributeContract.() -> Unit = { @@ -65,15 +68,15 @@ class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() { iicon = CommunityMaterial.Icon.cmd_flask_outline } - plainText(R.string.restore_purchases) { - descRes = R.string.restore_purchases_desc - iicon = GoogleMaterial.Icon.gmd_refresh - onClick = { _, _, _ -> restorePurchases(false); true } + plainText(R.string.get_pro) { + descRes = R.string.get_pro_desc + iicon = GoogleMaterial.Icon.gmd_star + onClick = { _, _, _ -> restorePurchases(); true } } plainText(R.string.about_frost) { iicon = GoogleMaterial.Icon.gmd_info - onClick = { _, _, _ -> startActivity(AboutActivity::class.java, transition = true); true } + onClick = { _, _, _ -> kauLaunchAbout(AboutActivity::class.java); true } } if (BuildConfig.DEBUG) { @@ -87,7 +90,7 @@ class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() { } fun shouldRestartMain() { - setResult(MainActivity.REQUEST_RESTART) + setFrostResult(MainActivity.REQUEST_RESTART) } override fun onCreate(savedInstanceState: Bundle?) { @@ -107,10 +110,14 @@ class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() { } override fun onBackPressed() { - if (!super.backPress()) + if (!super.backPress()) { + setResult(resultFlag) finishSlideOut() + } } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_settings, menu) toolbar.tint(Prefs.iconColor) @@ -135,6 +142,10 @@ class SettingsActivity : KPrefActivity(), FrostBilling by IABSettings() { return true } + fun setFrostResult(flag: Int) { + resultFlag = resultFlag and flag + } + override fun onDestroy() { onDestroyBilling() super.onDestroy() diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt index f03c653c..13d72ffe 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt @@ -126,7 +126,7 @@ open class WebOverlayActivity : AppCompatActivity(), } override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams) { - openFileChooser(this, filePathCallback, fileChooserParams) + openImagePicker(filePathCallback, fileChooserParams) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { |