SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/ActAbout.kt

160 lines
6.2 KiB
Kotlin

package jp.juggler.subwaytooter
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.view.Gravity
import android.widget.Button
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatButton
import jp.juggler.subwaytooter.databinding.ActAboutBinding
import jp.juggler.subwaytooter.util.openBrowser
import jp.juggler.util.getPackageInfoCompat
import jp.juggler.util.log.LogCategory
import jp.juggler.util.ui.setNavigationBack
class ActAbout : AppCompatActivity() {
class Translators(
val name: String,
val acct: String?,
val lang: String,
)
companion object {
val log = LogCategory("ActAbout")
const val EXTRA_SEARCH = "search"
const val developer_acct = "tateisu@mastodon.juggler.jp"
const val official_acct = "SubwayTooter@mastodon.juggler.jp"
const val url_release = "https://github.com/tateisu/SubwayTooter/releases"
const val url_weblate = "https://hosted.weblate.org/projects/subway-tooter/"
// git log --pretty=format:"%an %s" |grep "Translated using Weblate"|sort|uniq
val translators = arrayOf(
Translators("Allan Nordhøy", null, "English, Norwegian Bokmål"),
Translators("ayiniho", null, "French"),
Translators("ButterflyOfFire", "@ButterflyOfFire@mstdn.fr", "Arabic, French, Kabyle"),
Translators("Ch", null, "Korean"),
Translators("chinnux", "@chinnux@neko.ci", "Chinese (Simplified)"),
Translators("Dyxang", null, "Chinese (Simplified)"),
Translators("Elizabeth Sherrock", null, "Chinese (Simplified)"),
Translators("Gennady Archangorodsky", null, "Hebrew"),
Translators("inqbs Siina", null, "Korean"),
Translators("J. Lavoie", null, "French, German"),
Translators("Jeong Arm", "@jarm@qdon.space", "Korean"),
Translators("Joan Pujolar", "@jpujolar@mastodont.cat", "Catalan"),
Translators("Kai Zhang", "@bearzk@mastodon.social", "Chinese (Simplified)"),
Translators("koyu", null, "German"),
Translators("Liaizon Wakest", null, "English"),
Translators("lingcas", null, "Chinese (Traditional)"),
Translators("Love Xu", null, "Chinese (Simplified)"),
Translators("lptprjh", null, "Korean"),
Translators("mv87", null, "German"),
Translators("mynameismonkey", null, "Welsh"),
Translators("Nathan", null, "French"),
Translators("Niek Visser", null, "Dutch"),
Translators("Owain Rhys Lewis", null, "Welsh"),
Translators("Remi Rampin", null, "French"),
Translators("Sachin", null, "Kannada"),
Translators("Swann Martinet", null, "French"),
Translators("takubunn", null, "Chinese (Simplified)"),
Translators("Whod", null, "Bulgarian"),
Translators("yucj", null, "Chinese (Traditional)"),
Translators("邓志诚", null, "Chinese (Simplified)"),
Translators("배태길", null, "Korea"),
)
}
private val views by lazy {
ActAboutBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
App1.setActivityTheme(this)
setContentView(views.root)
setSupportActionBar(views.toolbar)
setNavigationBack(views.toolbar)
fixHorizontalMargin(views.svContent)
try {
packageManager.getPackageInfoCompat(packageName)?.let { pInfo ->
views.tvVersion.text = getString(R.string.version_is, pInfo.versionName)
}
} catch (ex: Throwable) {
log.e(ex, "can't get app version.")
}
fun setButton(b: Button, caption: String, onClick: () -> Unit) {
b.text = caption
b.setOnClickListener { onClick() }
}
fun searchAcct(acct: String) {
setResult(Activity.RESULT_OK, Intent().apply { putExtra(EXTRA_SEARCH, acct) })
finish()
}
setButton(
views.btnDeveloper,
getString(R.string.search_for, developer_acct)
) { searchAcct(developer_acct) }
setButton(
views.btnOfficialAccount,
getString(R.string.search_for, official_acct)
) { searchAcct(official_acct) }
setButton(
views.btnReleaseNote,
url_release
) { openBrowser(url_release) }
// setButton(R.id.btnIconDesign, url_futaba)
// { openUrl(url_futaba) }
setButton(views.btnWeblate, getString(R.string.please_help_translation)) {
openBrowser(url_weblate)
}
val ll = views.llContributors
val density = resources.displayMetrics.density
val marginTop = (0.5f + density * 8).toInt()
val padding = (0.5f + density * 8).toInt()
for (who in translators) {
AppCompatButton(this).apply {
//
layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).apply {
if (ll.childCount != 0) topMargin = marginTop
}
//
setBackgroundResource(R.drawable.btn_bg_transparent_round6dp)
setPadding(padding, padding, padding, padding)
isAllCaps = false
//
val acct = who.acct ?: "@?@?"
text = "${who.name}\n$acct\n${getString(R.string.thanks_for, who.lang)}"
gravity = Gravity.START or Gravity.CENTER_VERTICAL
setOnClickListener {
val data = Intent()
data.putExtra(EXTRA_SEARCH, who.acct ?: who.name)
setResult(Activity.RESULT_OK, data)
finish()
}
}.let { ll.addView(it) }
}
}
}