diff --git a/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostExtra.kt b/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostExtra.kt index 25ea1846..04071bc2 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostExtra.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostExtra.kt @@ -281,8 +281,8 @@ fun ActPost.performMore() { openDraftPicker() } - action(getString(R.string.recommended_plugin)) { - showRecommendedPlugin(null) + action(getString(R.string.plugin_app_intro)) { + openPluginList() } } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostMushroom.kt b/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostMushroom.kt index d55cb69f..83142baf 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostMushroom.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostMushroom.kt @@ -2,19 +2,21 @@ package jp.juggler.subwaytooter.actpost import android.annotation.SuppressLint import android.content.Intent +import android.net.Uri +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.TextPaint import android.text.method.LinkMovementMethod +import android.text.style.ClickableSpan import android.view.View import android.widget.EditText -import android.widget.TextView -import androidx.annotation.RawRes +import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import jp.juggler.subwaytooter.ActPost import jp.juggler.subwaytooter.R -import jp.juggler.subwaytooter.util.DecodeOptions -import jp.juggler.subwaytooter.util.LinkHelper -import jp.juggler.util.data.decodeUTF8 -import jp.juggler.util.data.loadRawResource +import jp.juggler.subwaytooter.databinding.DlgPluginMissingBinding import jp.juggler.util.log.LogCategory +import jp.juggler.util.ui.attrColor private val log = LogCategory("ActPostMushroom") @@ -24,42 +26,38 @@ fun ActPost.resetMushroom() { states.mushroomEnd = 0 } -@SuppressLint("InflateParams") -suspend fun ActPost.showRecommendedPlugin(title: String?) { - - @RawRes val resId = when (getString(R.string.language_code)) { - "ja" -> R.raw.recommended_plugin_ja - "fr" -> R.raw.recommended_plugin_fr - else -> R.raw.recommended_plugin_en - } - - this.loadRawResource(resId).let { data -> - val text = data.decodeUTF8() - val viewRoot = layoutInflater.inflate(R.layout.dlg_plugin_missing, null, false) - - val tvText = viewRoot.findViewById(R.id.tvText) - - val sv = DecodeOptions(this, linkHelper = LinkHelper.unknown).decodeHTML(text) - - tvText.text = sv - tvText.movementMethod = LinkMovementMethod.getInstance() - - val tvTitle = viewRoot.findViewById(R.id.tvTitle) - if (title?.isEmpty() != false) { - tvTitle.visibility = View.GONE - } else { - tvTitle.text = title - } - - AlertDialog.Builder(this) - .setView(viewRoot) - .setCancelable(true) - .setNeutralButton(R.string.close, null) - .show() - } +fun ActPost.openPluginList(){ + val url = "https://github.com/tateisu/SubwayTooter/wiki/Simeji-Mushroom-Plugins" + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) } -suspend fun ActPost.openMushroom() { +fun ActPost.showRecommendedPlugin(@StringRes titleId: Int) { + val linkCaption = getString(R.string.plugin_app_intro) + val linkSpan = object : ClickableSpan() { + override fun onClick(view: View) = openPluginList() + override fun updateDrawState(ds: TextPaint) { + super.updateDrawState(ds) + ds.color = attrColor(R.attr.colorLink) + } + } + + val views = DlgPluginMissingBinding.inflate(layoutInflater) + views.tvText.movementMethod = LinkMovementMethod.getInstance() + views.tvText.text = SpannableStringBuilder().apply { + val spanStart = length + append(linkCaption) + val spanEnd = length + setSpan(linkSpan, spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + AlertDialog.Builder(this).apply { + setTitle(titleId) + setView(views.root) + setCancelable(true) + setPositiveButton(R.string.ok, null) + }.show() +} + +fun ActPost.openMushroom() { try { var text: String? = null when { @@ -94,14 +92,14 @@ suspend fun ActPost.openMushroom() { // Verify the intent will resolve to at least one activity if (intent.resolveActivity(packageManager) == null) { - showRecommendedPlugin(getString(R.string.plugin_not_installed)) + showRecommendedPlugin(R.string.plugin_not_installed) return } arMushroom.launch(chooser) } catch (ex: Throwable) { log.e(ex, "openMushroom failed.") - showRecommendedPlugin(getString(R.string.plugin_not_installed)) + showRecommendedPlugin(R.string.plugin_not_installed) } } diff --git a/app/src/main/res/layout/dlg_plugin_missing.xml b/app/src/main/res/layout/dlg_plugin_missing.xml index b695398b..5dadc563 100644 --- a/app/src/main/res/layout/dlg_plugin_missing.xml +++ b/app/src/main/res/layout/dlg_plugin_missing.xml @@ -1,40 +1,17 @@ - - + + - - - - - + android:textSize="16sp" + tools:text="tvText" /> diff --git a/app/src/main/res/raw/recommended_plugin_en.txt b/app/src/main/res/raw/recommended_plugin_en.txt deleted file mode 100644 index 23cca527..00000000 --- a/app/src/main/res/raw/recommended_plugin_en.txt +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/app/src/main/res/raw/recommended_plugin_fr.txt b/app/src/main/res/raw/recommended_plugin_fr.txt deleted file mode 100644 index 5b91482a..00000000 --- a/app/src/main/res/raw/recommended_plugin_fr.txt +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/app/src/main/res/raw/recommended_plugin_ja.txt b/app/src/main/res/raw/recommended_plugin_ja.txt deleted file mode 100644 index 1c0bafb4..00000000 --- a/app/src/main/res/raw/recommended_plugin_ja.txt +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index d4eca968..be6f328d 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -473,7 +473,6 @@ انسح معرّف الحساب %1$s افتحه على واجهة الويب الإدارية تتبّع إعداد الحساب - الإضافات المستحسَنة غير محجوب. دليل الحسابات غير محدد diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index c6ff4234..4f2405d8 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -378,7 +378,6 @@ Selecciona el connector El connector no s\'ha instal·lat. ca - Connector recomanat Mode de tauleta Aspecte Rendiment diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b4dd3acc..af26ff93 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1009,7 +1009,6 @@ Leistung Aussehen Tabletmodus - Empfohlenes Plugin en Plugin ist nicht installiert. Plugin auswählen diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index b51a2b1a..7dc9b5e8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -352,7 +352,6 @@ Sélection du plugin Plugin non installé. fr - Plugins recommandés Apparence Comportement Il existe également un paramètre de compte pour activer ou désactiver les notifications. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index ec33fafb..48eba71a 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -412,7 +412,6 @@ תוסף בחר תוסף התוסף לא הותקן. - תוסף מומלץ מצב מחשב לוח מראה ביצועים diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 468b130f..fea14df0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -583,7 +583,6 @@ リアクションの削除 ギャップを読む 読込中: %1$s %2$s - おすすめプラグイン 削除して再編集 投稿後の更新 更新するがスクロールしない @@ -1271,4 +1270,5 @@ 無効 絵文字テクスチャの最大ピクセル数(単位:ピクセル、デフォルト: 128。 タスクキルが必要。端末のRAMが少ない場合は64程度まで下げることをお勧めします) 絵文字ピッカーのカテゴリを折りたたむ(サーバーに多くの絵文字がある場合はオフにすると非常に遅くなります) + プラグインアプリの紹介 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 59d6a223..ada86772 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -361,7 +361,6 @@ 플러그인 선택 플러그인 설치 안 됨. ko - 추천 플러그인 태블릿 모드 모양새 성능 diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 1b17bbb8..4f3c472b 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -287,7 +287,6 @@ Programtillegg Velg programtillegg Programtillegg ikke installert. - Anbefalt programtillegg Nettbrettsmodus Utseende Ytelse diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 613b3476..d786a0ca 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -368,7 +368,6 @@ Selecteer plugin Plugin is niet geïnstalleerd. nl - Aanbevolen plugin Tabletmodus Vormgeving Prestaties diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a777d0dd..42572005 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -109,7 +109,6 @@ 性能 外观 平板模式 - 推荐的插件 插件未安装。 选择插件 插件 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c768ae43..7775118d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -381,7 +381,6 @@ Select plugin Plugin not installed. en - Recommended plugin Tablet mode Appearance Performance @@ -1279,4 +1278,5 @@ Emoji texture max pixels(Unix:pixels, default: 128. task kill required. reduce to 64 if your device\'s RAM is not enough) Collapse emoji picker categories (turning off it will very slow if your servers has a lot of emojis) unfollow hashtag \"%1$s\"? + Introduction to plug-in apps diff --git a/gradle.properties b/gradle.properties index 2f16d274..7c47686c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,3 +30,5 @@ android.enableJetifier=true android.debug.obsoleteApi=true org.gradle.unsafe.configuration-cache=false +android.defaults.buildfeatures.buildconfig=true +android.enableBuildConfigAsBytecode=true