From 899657c3ae2f4d761358349cfe072096d78156be Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 27 Sep 2019 16:17:40 -0700 Subject: [PATCH] Implemented new about activity. --- app/build.gradle | 8 +- app/src/main/AndroidManifest.xml | 4 + .../tesremoteprogrammer/AboutActivity.kt | 75 ++++++++++++++++++ .../tesremoteprogrammer/MainActivity.kt | 41 +--------- .../ProgrammingActivity.kt | 11 +-- .../drawable-mdpi/icons8_policy_document.png | Bin 0 -> 300 bytes .../drawable-xhdpi/icons8_policy_document.png | Bin 0 -> 487 bytes .../icons8_policy_document.png | Bin 0 -> 814 bytes app/src/main/res/values/strings.xml | 10 ++- 9 files changed, 97 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/AboutActivity.kt create mode 100644 app/src/main/res/drawable-mdpi/icons8_policy_document.png create mode 100644 app/src/main/res/drawable-xhdpi/icons8_policy_document.png create mode 100644 app/src/main/res/drawable-xxxhdpi/icons8_policy_document.png diff --git a/app/build.gradle b/app/build.gradle index 94b8e96..1082f57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,12 +62,8 @@ dependencies { implementation "com.github.hotchemi:permissionsdispatcher:$perms_dispatch_version" kapt "com.github.hotchemi:permissionsdispatcher-processor:$perms_dispatch_version" - // https://github.com/eggheadgames/android-about-box - implementation 'com.github.eggheadgames:android-about-box:1.3.2' - //implementation(name: 'library-debug', ext: 'aar') - //implementation 'com.github.daniel-stoneuk:material-about-library:2.2.1' - implementation "com.android.support:animated-vector-drawable:$support_version" - implementation "com.android.support:cardview-v7:$support_version" + // https://github.com/medyo/android-about-page + implementation 'com.github.medyo:android-about-page:1.2.5' } repositories { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5858a6f..7ab59cf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,6 +34,10 @@ + diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/AboutActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/AboutActivity.kt new file mode 100644 index 0000000..36f6c79 --- /dev/null +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/AboutActivity.kt @@ -0,0 +1,75 @@ +/* + * AboutActivity.kt + * + * Copyright 2016-2019 Erik C. Thauvin (erik@thauvin.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.thauvin.erik.android.tesremoteprogrammer + +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.support.v7.app.AppCompatDelegate +import mehdi.sakout.aboutpage.AboutPage +import mehdi.sakout.aboutpage.Element +import java.util.Calendar + +/** + * The net.thauvin.erik.android.tesremoteprogrammer.AboutActivity class. + * + * @author Erik C. Thauvin + * @created 2019-09-27 + * @since 1.0 + */ +class AboutActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + AppCompatDelegate.setDefaultNightMode( + AppCompatDelegate.MODE_NIGHT_NO + ) + + val aboutPage = AboutPage(this).apply { + isRTL(false) + setImage(R.drawable.background_splash) + val version = String.format(getString(R.string.about_version), BuildConfig.VERSION_NAME) + setDescription( + "${version}\n© ${Calendar.getInstance().get(Calendar.YEAR)} Erik C. Thauvin️" + ) + addEmail("erik@thauvin.net") + addGitHub("ethauvin/TESRemoteProgrammer") + addWebsite("https://m.thauvin.net/android/TESRemoteProgrammer/licenses.shtml") + addItem(getPrivacyPolicy()) + addTwitter("ethauvin") + + }.create() + + setContentView(aboutPage) + } + + private fun getPrivacyPolicy(): Element { + return Element().apply { + title = getString(R.string.about_privacy) + iconDrawable = R.drawable.icons8_policy_document + iconTint = R.color.about_github_color + value = "privacy" + intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("https://m.thauvin.net/apps-privacy.shtml") + ) + } + } +} diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt index 0d9d7d0..66cf9c0 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt @@ -38,8 +38,6 @@ import android.view.inputmethod.InputMethodManager import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.EditText -import com.eggheadgames.aboutbox.AboutConfig -import com.eggheadgames.aboutbox.activity.AboutActivity import com.google.gson.Gson import com.google.gson.JsonSyntaxException import net.thauvin.erik.android.tesremoteprogrammer.models.Config @@ -69,15 +67,13 @@ import java.io.FileNotFoundException import java.io.InputStreamReader import java.io.ObjectInputStream import java.io.ObjectOutputStream -import java.text.DateFormat import java.util.ArrayList -import java.util.Date import java.util.Locale @RuntimePermissions class MainActivity : AppCompatActivity(), AnkoLogger { private lateinit var config: Config - private val aboutConfig: AboutConfig = AboutConfig.getInstance() + // private val aboutConfig: AboutConfig = AboutConfig.getInstance() private val configurationsData = "configurations.dat" private val currentConfigData = "config.dat" private val defaultConfigurations = listOf( @@ -127,39 +123,6 @@ class MainActivity : AppCompatActivity(), AnkoLogger { saveConfigurations(confs) saveConfig(false) } - - // About dialog configuration - with(aboutConfig) { - appName = getString(R.string.app_name) - appIcon = R.mipmap.ic_launcher - - version = BuildConfig.VERSION_NAME - - author = "Erik C. Thauvin" - - extraTitle = "Last Update" - extra = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()) - .format(Date(BuildConfig.TIMESTAMP)).toString() - - emailAddress = "erik@thauvin.net" - emailSubject = "${getString(R.string.app_name)} ${BuildConfig.VERSION_NAME} Support" - emailBody = "" - - packageName = applicationContext.packageName - buildType = AboutConfig.BuildType.GOOGLE - shareMessage = "https://play.google.com/store/apps/details?id=$packageName" - - appPublisher = "6626207141685878216" - aboutLabelTitle = "About Erik C. Thauvin" - companyHtmlPath = "https://m.thauvin.net/" - - twitterUserName = "ethauvin" - webHomePage = "https://thauv.in/TESRemote" - - privacyHtmlPath = "https://m.thauvin.net/apps-privacy.shtml" - acknowledgmentHtmlPath = - "https://m.thauvin.net/android/TESRemoteProgrammer/licenses.shtml" - } } @NeedsPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) @@ -343,7 +306,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger { override fun onOptionsItemSelected(item: MenuItem?): Boolean { when (item?.itemId) { R.id.action_about -> { - AboutActivity.launch(this) + startActivity(Intent(this, AboutActivity::class.java)) } R.id.action_confs -> { val confs = loadConfigurations().configs.toSortedMap() diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt index 8918b98..3ec40b4 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt @@ -396,9 +396,10 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { return isValid } - private fun validateSize(size: Int, min: Int, max: Int): Boolean = if (min > 0) { - size in IntRange(min, max) - } else { - size == max - } + private fun validateSize(size: Int, min: Int, max: Int): Boolean = + if (min > 0) { + size in IntRange(min, max) + } else { + size == max + } } diff --git a/app/src/main/res/drawable-mdpi/icons8_policy_document.png b/app/src/main/res/drawable-mdpi/icons8_policy_document.png new file mode 100644 index 0000000000000000000000000000000000000000..5304a04e29acf2a18874df9bd46c34b39dc6603d GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE)4%caKYZ?lYt@+JzX3_ zJUZ`Qb@XC36k&U?Ug=h^H@i&`YkuGgY1?LR{fCk*O^+-~F6L%VpXYF~kJ~sPbJ^J? zGhP2Gb~jG{t~!(RaQzw8X)DTmcE>0z{Tb(BTp4}uqv)%5zZqWDP6$zue#w-g7~9C! zdCuBTP+4-z0%^-rER%`@9P-_-?CF1Prm}6)5~rSzJ&6_jbUAxI%4Wr1o1k=nMZ5m} zp=8a3+NWoK90}!2Xi%SRUfH*bg+YBr+pPWzdyeslYdYNKPj8(aQ2grq8F!20+2ScJ vN5xdWX@*sBoAPV!KH(`kYyMYOm(R>f5tXIZ(iR;+&oX$r`njxgN@xNAHrjWw literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/icons8_policy_document.png b/app/src/main/res/drawable-xhdpi/icons8_policy_document.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd250151b37c93507874748e22dac6d952ebcbb GIT binary patch literal 487 zcmVQt3q+Uj5Qr+_B@j)*Qy_|jw}87u41vZH zOEm|Fo>Qlf#0Rh%GH=lYBxcTAY1p(0b;W~3mm36GD6&9mvOsFGfCFD4e_lj^E-0rx_Wzv{v!@-*5z zumL;@eWV&ve85bxSOXyvBj7|Ac^a#?kR&kx&iUE*xJbNG@5)sJbmvG+F4#j)iJJxj zvjS`acffY#xSPZ-@T8D94VYE#K&uP8qm@_#u4(=_h3qP;cj5)u*9yd@l=zq7OFF<_ d>JXWEd;>FK!~VL6!vg>S002ovPDHLkV1k_E&7J@N literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/icons8_policy_document.png b/app/src/main/res/drawable-xxxhdpi/icons8_policy_document.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c0bed3a2e03b7a5fa36e4c509e891b4a084d5d GIT binary patch literal 814 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlJ89(%et zhE&XXdv~MX)dZ0PANR9K@N_ow*)=g9e$W)S=*1Ie%ae~*aB8%;Us!&@Gv2X=?QufV z9*fMN_FFD_d71mSEq^}ez4iYk(L3kNlV8fY^NEv)Yake1{IRXk{D5QuU&yKB+!t4y zUSTWX`r}yt@~C1CgZzc~l8qe8U+C|MXvxj_cT1D)p~T;%%jEQ3%@$q}{~{jsW$p%t z`kAixIb+2$bLYJg*u%WT{RHCyQzt!!Ji#KSg3bxj4c09(j4_H&xE`=6rZb3h>|~zd zuEBV~#7UDOP0)+Upff-CYMJI5KQf@8y;KZZaB z%o)-D1X|Q5`jZ(1-S_eW- zoA)OOCcJvut@z}}^B2|!+#gIkkR2~xarR>5F6Je5pR^xj9DD6?ipyc*X?AIbqk8gR z7`x)^UNGHZ+4pru;)#!b72i%?+Q&Q(%wgVPe)!Mg%WMphEq7?m0m-D3QV zdBuu@--Vtp;L{lTndO1hI* z?fVx01IsS(c;*KFm;Gz}x$aoRt7glkdMw7L&+jyAiTKx}t9;~>XqG_I&#t!&*SEBH fEYj$z`7ZvW{OOuyX*;`t8Gyml)z4*}Q$iB}Meb(b literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b69f00d..9b0d54b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,11 +7,17 @@ property properties + Version %1$s + Contact me + Documentation on GitHub + Follow me on Twitter + Open Source Licenses + Privacy Policy About Configurations Configuration Errors TES Remote Programmer - + Import Invalid Invalid DTMF: %1$s @@ -23,7 +29,7 @@ Master Code Phone Number No configuration required. - + PROGRAMMING Step %1$d of %2$d Missing pause between steps