設定キーの一覧を複数ファイルに分割。「カラム設定/添付メディアの説明文を表示する」を追加。
This commit is contained in:
parent
4108c82e75
commit
243dfc0bc5
|
@ -3,11 +3,11 @@
|
||||||
<component name="CompilerConfiguration">
|
<component name="CompilerConfiguration">
|
||||||
<bytecodeTargetLevel target="1.8">
|
<bytecodeTargetLevel target="1.8">
|
||||||
<module name="apng" target="1.7" />
|
<module name="apng" target="1.7" />
|
||||||
<module name="SubwayTooter.apng_android" target="14" />
|
<module name="SubwayTooter.apng_android" target="11" />
|
||||||
<module name="SubwayTooter.app" target="14" />
|
<module name="SubwayTooter.app" target="11" />
|
||||||
<module name="SubwayTooter.colorpicker" target="14" />
|
<module name="SubwayTooter.colorpicker" target="11" />
|
||||||
<module name="SubwayTooter.emoji" target="14" />
|
<module name="SubwayTooter.emoji" target="11" />
|
||||||
<module name="SubwayTooter.sample_apng" target="14" />
|
<module name="SubwayTooter.sample_apng" target="11" />
|
||||||
</bytecodeTargetLevel>
|
</bytecodeTargetLevel>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -7,7 +7,7 @@
|
||||||
<option name="testRunner" value="GRADLE" />
|
<option name="testRunner" value="GRADLE" />
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
<option name="gradleJvm" value="azul-14" />
|
<option name="gradleJvm" value="Embedded JDK" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|
|
@ -11,3 +11,22 @@ dependencies {
|
||||||
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = jvm_target
|
||||||
|
useIR = true
|
||||||
|
freeCompilerArgs += [
|
||||||
|
"-Xopt-in=kotlin.ExperimentalStdlibApi",
|
||||||
|
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||||
|
"-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi",
|
||||||
|
"-Xopt-in=androidx.compose.foundation.ExperimentalFoundationApi",
|
||||||
|
"-Xopt-in=androidx.compose.animation.ExperimentalAnimationApi",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ android {
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|
|
@ -27,6 +27,7 @@ android {
|
||||||
versionName "4.6.6"
|
versionName "4.6.6"
|
||||||
applicationId "jp.juggler.subwaytooter"
|
applicationId "jp.juggler.subwaytooter"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
|
|
|
@ -31,6 +31,8 @@ import jp.juggler.subwaytooter.dialog.ActionsDialog
|
||||||
import jp.juggler.subwaytooter.notification.NotificationHelper
|
import jp.juggler.subwaytooter.notification.NotificationHelper
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
import jp.juggler.subwaytooter.notification.PushSubscriptionHelper
|
import jp.juggler.subwaytooter.notification.PushSubscriptionHelper
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.table.AcctColor
|
import jp.juggler.subwaytooter.table.AcctColor
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
|
|
|
@ -29,6 +29,11 @@ import jp.juggler.subwaytooter.appsetting.SettingType
|
||||||
import jp.juggler.subwaytooter.appsetting.appSettingRoot
|
import jp.juggler.subwaytooter.appsetting.appSettingRoot
|
||||||
import jp.juggler.subwaytooter.dialog.DlgAppPicker
|
import jp.juggler.subwaytooter.dialog.DlgAppPicker
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
|
import jp.juggler.subwaytooter.pref.*
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.BooleanPref
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.FloatPref
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.IntPref
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.StringPref
|
||||||
import jp.juggler.subwaytooter.table.AcctColor
|
import jp.juggler.subwaytooter.table.AcctColor
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.CustomShare
|
import jp.juggler.subwaytooter.util.CustomShare
|
||||||
|
|
|
@ -30,6 +30,10 @@ import jp.juggler.subwaytooter.column.*
|
||||||
import jp.juggler.subwaytooter.dialog.DlgQuickTootMenu
|
import jp.juggler.subwaytooter.dialog.DlgQuickTootMenu
|
||||||
import jp.juggler.subwaytooter.itemviewholder.StatusButtonsPopup
|
import jp.juggler.subwaytooter.itemviewholder.StatusButtonsPopup
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.put
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpanHandler
|
import jp.juggler.subwaytooter.span.MyClickableSpanHandler
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
|
|
|
@ -56,6 +56,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
internal const val EXTRA_IDX = "idx"
|
internal const val EXTRA_IDX = "idx"
|
||||||
internal const val EXTRA_DATA = "data"
|
internal const val EXTRA_DATA = "data"
|
||||||
internal const val EXTRA_SERVICE_TYPE = "serviceType"
|
internal const val EXTRA_SERVICE_TYPE = "serviceType"
|
||||||
|
internal const val EXTRA_SHOW_DESCRIPTION = "showDescription"
|
||||||
|
|
||||||
internal const val STATE_PLAYER_POS = "playerPos"
|
internal const val STATE_PLAYER_POS = "playerPos"
|
||||||
internal const val STATE_PLAYER_PLAY_WHEN_READY = "playerPlayWhenReady"
|
internal const val STATE_PLAYER_PLAY_WHEN_READY = "playerPlayWhenReady"
|
||||||
|
@ -74,6 +75,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
|
|
||||||
fun open(
|
fun open(
|
||||||
activity: ActMain,
|
activity: ActMain,
|
||||||
|
showDescription: Boolean,
|
||||||
serviceType: ServiceType,
|
serviceType: ServiceType,
|
||||||
list: ArrayList<TootAttachmentLike>,
|
list: ArrayList<TootAttachmentLike>,
|
||||||
idx: Int,
|
idx: Int,
|
||||||
|
@ -82,6 +84,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
intent.putExtra(EXTRA_IDX, idx)
|
intent.putExtra(EXTRA_IDX, idx)
|
||||||
intent.putExtra(EXTRA_SERVICE_TYPE, serviceType.ordinal)
|
intent.putExtra(EXTRA_SERVICE_TYPE, serviceType.ordinal)
|
||||||
intent.putExtra(EXTRA_DATA, encodeMediaList(list))
|
intent.putExtra(EXTRA_DATA, encodeMediaList(list))
|
||||||
|
intent.putExtra(EXTRA_SHOW_DESCRIPTION, showDescription)
|
||||||
activity.startActivity(intent)
|
activity.startActivity(intent)
|
||||||
activity.overridePendingTransition(R.anim.slide_from_bottom, android.R.anim.fade_out)
|
activity.overridePendingTransition(R.anim.slide_from_bottom, android.R.anim.fade_out)
|
||||||
}
|
}
|
||||||
|
@ -90,6 +93,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
internal var idx: Int = 0
|
internal var idx: Int = 0
|
||||||
private lateinit var mediaList: ArrayList<TootAttachment>
|
private lateinit var mediaList: ArrayList<TootAttachment>
|
||||||
private lateinit var serviceType: ServiceType
|
private lateinit var serviceType: ServiceType
|
||||||
|
private var showDescription = true
|
||||||
|
|
||||||
private lateinit var pbvImage: PinchBitmapView
|
private lateinit var pbvImage: PinchBitmapView
|
||||||
private lateinit var btnPrevious: View
|
private lateinit var btnPrevious: View
|
||||||
|
@ -175,6 +179,8 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
|
|
||||||
val intent = intent
|
val intent = intent
|
||||||
|
|
||||||
|
this.showDescription = intent.getBooleanExtra(EXTRA_SHOW_DESCRIPTION, showDescription)
|
||||||
|
|
||||||
this.idx = savedInstanceState?.getInt(EXTRA_IDX) ?: intent.getIntExtra(EXTRA_IDX, idx)
|
this.idx = savedInstanceState?.getInt(EXTRA_IDX) ?: intent.getIntExtra(EXTRA_IDX, idx)
|
||||||
|
|
||||||
this.serviceType = ServiceType.values()[
|
this.serviceType = ServiceType.values()[
|
||||||
|
@ -303,7 +309,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
|
||||||
}
|
}
|
||||||
val ta = mediaList[idx]
|
val ta = mediaList[idx]
|
||||||
val description = ta.description
|
val description = ta.description
|
||||||
if (description?.isNotEmpty() == true) {
|
if (showDescription && description?.isNotEmpty() == true) {
|
||||||
svDescription.visibility = View.VISIBLE
|
svDescription.visibility = View.VISIBLE
|
||||||
tvDescription.text = description
|
tvDescription.text = description
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import jp.juggler.subwaytooter.actpost.*
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.dialog.*
|
import jp.juggler.subwaytooter.dialog.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpanHandler
|
import jp.juggler.subwaytooter.span.MyClickableSpanHandler
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
|
|
|
@ -21,6 +21,9 @@ import com.bumptech.glide.load.model.GlideUrl
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
import jp.juggler.subwaytooter.emoji.EmojiMap
|
import jp.juggler.subwaytooter.emoji.EmojiMap
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.table.*
|
import jp.juggler.subwaytooter.table.*
|
||||||
import jp.juggler.subwaytooter.util.CustomEmojiCache
|
import jp.juggler.subwaytooter.util.CustomEmojiCache
|
||||||
import jp.juggler.subwaytooter.util.CustomEmojiLister
|
import jp.juggler.subwaytooter.util.CustomEmojiLister
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.google.firebase.messaging.FirebaseMessagingService
|
||||||
import com.google.firebase.messaging.RemoteMessage
|
import com.google.firebase.messaging.RemoteMessage
|
||||||
import jp.juggler.subwaytooter.notification.PollingForegrounder
|
import jp.juggler.subwaytooter.notification.PollingForegrounder
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefDevice
|
||||||
|
|
||||||
import jp.juggler.util.LogCategory
|
import jp.juggler.util.LogCategory
|
||||||
|
|
||||||
|
|
|
@ -1,654 +0,0 @@
|
||||||
package jp.juggler.subwaytooter
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.SharedPreferences
|
|
||||||
import android.graphics.Color
|
|
||||||
import jp.juggler.subwaytooter.itemviewholder.AdditionalButtonsPosition
|
|
||||||
import jp.juggler.util.optInt
|
|
||||||
|
|
||||||
fun Context.pref(): SharedPreferences =
|
|
||||||
this.getSharedPreferences(this.packageName + "_preferences", Context.MODE_PRIVATE)
|
|
||||||
|
|
||||||
@Suppress("EqualsOrHashCode")
|
|
||||||
abstract class BasePref<T>(val key: String, val defVal: T) {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
// キー名と設定項目のマップ。インポートやアプリ設定で使う
|
|
||||||
val allPref = HashMap<String, BasePref<*>>()
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
when {
|
|
||||||
allPref[key] != null -> error("Preference key duplicate: $key")
|
|
||||||
else -> {
|
|
||||||
@Suppress("LeakingThis")
|
|
||||||
allPref[key] = this
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract fun put(editor: SharedPreferences.Editor, v: T)
|
|
||||||
abstract operator fun invoke(pref: SharedPreferences): T
|
|
||||||
|
|
||||||
override fun equals(other: Any?) =
|
|
||||||
this === other
|
|
||||||
|
|
||||||
override fun hashCode(): Int = key.hashCode()
|
|
||||||
|
|
||||||
operator fun invoke(context: Context): T =
|
|
||||||
invoke(context.pref())
|
|
||||||
|
|
||||||
fun remove(e: SharedPreferences.Editor): SharedPreferences.Editor =
|
|
||||||
e.remove(key)
|
|
||||||
|
|
||||||
fun removeDefault(pref: SharedPreferences, e: SharedPreferences.Editor) =
|
|
||||||
if (pref.contains(key) && this.invoke(pref) == defVal) {
|
|
||||||
e.remove(key)
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.remove(item: BasePref<*>): SharedPreferences.Editor {
|
|
||||||
item.remove(this)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
class BooleanPref(key: String, defVal: Boolean) : BasePref<Boolean>(key, defVal) {
|
|
||||||
|
|
||||||
override operator fun invoke(pref: SharedPreferences): Boolean =
|
|
||||||
pref.getBoolean(key, defVal)
|
|
||||||
|
|
||||||
// put if value is not default, remove if value is same to default
|
|
||||||
override fun put(editor: SharedPreferences.Editor, v: Boolean) {
|
|
||||||
if (v == defVal) editor.remove(key) else editor.putBoolean(key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class IntPref(key: String, defVal: Int) : BasePref<Int>(key, defVal) {
|
|
||||||
|
|
||||||
override operator fun invoke(pref: SharedPreferences): Int =
|
|
||||||
pref.getInt(key, defVal)
|
|
||||||
|
|
||||||
override fun put(editor: SharedPreferences.Editor, v: Int) {
|
|
||||||
if (v == defVal) editor.remove(key) else editor.putInt(key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class LongPref(key: String, defVal: Long) : BasePref<Long>(key, defVal) {
|
|
||||||
|
|
||||||
override operator fun invoke(pref: SharedPreferences): Long =
|
|
||||||
pref.getLong(key, defVal)
|
|
||||||
|
|
||||||
override fun put(editor: SharedPreferences.Editor, v: Long) {
|
|
||||||
if (v == defVal) editor.remove(key) else editor.putLong(key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class FloatPref(key: String, defVal: Float) : BasePref<Float>(key, defVal) {
|
|
||||||
|
|
||||||
override operator fun invoke(pref: SharedPreferences): Float =
|
|
||||||
pref.getFloat(key, defVal)
|
|
||||||
|
|
||||||
override fun put(editor: SharedPreferences.Editor, v: Float) {
|
|
||||||
if (v == defVal) editor.remove(key) else editor.putFloat(key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class StringPref(
|
|
||||||
key: String,
|
|
||||||
defVal: String,
|
|
||||||
val skipImport: Boolean = false,
|
|
||||||
) : BasePref<String>(key, defVal) {
|
|
||||||
|
|
||||||
override operator fun invoke(pref: SharedPreferences): String =
|
|
||||||
pref.getString(key, defVal) ?: defVal
|
|
||||||
|
|
||||||
override fun put(editor: SharedPreferences.Editor, v: String) {
|
|
||||||
if (v == defVal) editor.remove(key) else editor.putString(key, v)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun toInt(pref: SharedPreferences) = invoke(pref).optInt() ?: defVal.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.put(item: BooleanPref, v: Boolean) =
|
|
||||||
this.apply { item.put(this, v) }
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.put(item: StringPref, v: String) =
|
|
||||||
this.apply { item.put(this, v) }
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.put(item: IntPref, v: Int) =
|
|
||||||
this.apply { item.put(this, v) }
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.put(item: LongPref, v: Long) =
|
|
||||||
this.apply { item.put(this, v) }
|
|
||||||
|
|
||||||
fun SharedPreferences.Editor.put(item: FloatPref, v: Float) =
|
|
||||||
this.apply { item.put(this, v) }
|
|
||||||
|
|
||||||
object PrefB {
|
|
||||||
// boolean
|
|
||||||
|
|
||||||
val bpDisableEmojiAnimation = BooleanPref(
|
|
||||||
"disable_emoji_animation",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
// val bpDisableFastScroller = BooleanPref("disable_fast_scroller", true, 0) // R.id.swDisableFastScroller)
|
|
||||||
|
|
||||||
val bpDisableTabletMode = BooleanPref(
|
|
||||||
"disable_tablet_mode",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontConfirmBeforeCloseColumn = BooleanPref(
|
|
||||||
"DontConfirmBeforeCloseColumn",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontCropMediaThumb = BooleanPref(
|
|
||||||
"DontCropMediaThumb",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontDuplicationCheck = BooleanPref(
|
|
||||||
"dont_duplication_check",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontRefreshOnResume = BooleanPref(
|
|
||||||
"dont_refresh_on_resume",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontRound = BooleanPref(
|
|
||||||
"dont_round",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontScreenOff = BooleanPref(
|
|
||||||
"dont_screen_off",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontUseActionButtonWithQuickPostBar = BooleanPref(
|
|
||||||
"dont_use_action_button",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontUseStreaming = BooleanPref(
|
|
||||||
"dont_use_streaming",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEnableGifAnimation = BooleanPref(
|
|
||||||
"enable_gif_animation",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpExitAppWhenCloseProtectedColumn = BooleanPref(
|
|
||||||
"ExitAppWhenCloseProtectedColumn",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpMentionFullAcct = BooleanPref(
|
|
||||||
"mention_full_acct",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpNotificationLED = BooleanPref(
|
|
||||||
"notification_led",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpNotificationSound = BooleanPref(
|
|
||||||
"notification_sound",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpNotificationVibration = BooleanPref(
|
|
||||||
"notification_vibration",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpPostButtonBarTop = BooleanPref(
|
|
||||||
"post_button_bar_at_top",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpPriorChrome = BooleanPref(
|
|
||||||
"prior_chrome",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
val bpDontUseCustomTabs = BooleanPref(
|
|
||||||
"DontUseCustomTabs",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpPriorLocalURL = BooleanPref(
|
|
||||||
"prior_local_url",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpQuickPostBar = BooleanPref(
|
|
||||||
"quick_toot_bar",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpRelativeTimestamp = BooleanPref(
|
|
||||||
"relative_timestamp",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShortAcctLocalUser = BooleanPref(
|
|
||||||
"short_acct_local_user",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowFollowButtonInButtonBar = BooleanPref(
|
|
||||||
"ShowFollowButtonInButtonBar",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpSimpleList = BooleanPref(
|
|
||||||
"simple_list",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpUseInternalMediaViewer = BooleanPref(
|
|
||||||
"use_internal_media_viewer",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowAppName = BooleanPref(
|
|
||||||
"show_app_name",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpShowLanguage = BooleanPref(
|
|
||||||
"ShowLanguage",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpForceGap = BooleanPref(
|
|
||||||
"force_gap",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShareViewPool = BooleanPref(
|
|
||||||
"ShareViewPool",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpAllowColumnDuplication = BooleanPref(
|
|
||||||
"AllowColumnDuplication",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpAppendAttachmentUrlToContent = BooleanPref(
|
|
||||||
"AppendAttachmentUrlToContent",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpVerticalArrangeThumbnails = BooleanPref(
|
|
||||||
"VerticalArrangeThumbnails",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontShowPreviewCard = BooleanPref(
|
|
||||||
"DontShowPreviewCard",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpScrollTopFromColumnStrip = BooleanPref(
|
|
||||||
"ScrollTopFromColumnStrip",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpOpenSticker = BooleanPref(
|
|
||||||
"InstanceTicker", // 歴史的な理由でキー名が異なる
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpLinksInContextMenu = BooleanPref(
|
|
||||||
"LinksInContextMenu",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpMoveNotificationsQuickFilter = BooleanPref(
|
|
||||||
"MoveNotificationsQuickFilter",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpShowAcctInSystemNotification = BooleanPref(
|
|
||||||
"ShowAcctInSystemNotification",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
val bpShowLinkUnderline = BooleanPref(
|
|
||||||
"ShowLinkUnderline",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowSearchClear = BooleanPref(
|
|
||||||
"ShowSearchClear",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontRemoveDeletedToot = BooleanPref(
|
|
||||||
"DontRemoveDeletedToot",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDontShowColumnBackgroundImage = BooleanPref(
|
|
||||||
"DontShowColumnBackgroundImage",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpCustomEmojiSeparatorZwsp = BooleanPref(
|
|
||||||
"CustomEmojiSeparatorZwsp",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowTranslateButton = BooleanPref(
|
|
||||||
"ShowTranslateButton",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDirectoryLastActive = BooleanPref(
|
|
||||||
"DirectoryLastActive",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDirectoryFollowers = BooleanPref(
|
|
||||||
"DirectoryFollowers",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDirectoryTootCount = BooleanPref(
|
|
||||||
"DirectoryTootCount",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
val bpDirectoryNote = BooleanPref(
|
|
||||||
"DirectoryNote",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpWarnHashtagAsciiAndNonAscii = BooleanPref(
|
|
||||||
"WarnHashtagAsciiAndNonAscii",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEnablePixelfed = BooleanPref(
|
|
||||||
"EnablePixelfed",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpQuickTootOmitAccountSelection = BooleanPref(
|
|
||||||
"QuickTootOmitAccountSelection",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpSeparateReplyNotificationGroup = BooleanPref(
|
|
||||||
"SeparateReplyNotificationGroup",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpAlwaysExpandContextMenuItems = BooleanPref(
|
|
||||||
"AlwaysExpandContextMenuItems",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowBookmarkButton = BooleanPref(
|
|
||||||
"ShowBookmarkButton2",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpShowFilteredWord = BooleanPref(
|
|
||||||
"ShowFilteredWord",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEnableDomainTimeline = BooleanPref(
|
|
||||||
"EnableDomainTimeline",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpDivideNotification = BooleanPref(
|
|
||||||
"DivideNotification",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpHideFollowCount = BooleanPref(
|
|
||||||
"HideFollowCount",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEmojioneShortcode = BooleanPref(
|
|
||||||
"EmojioneShortcode",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEmojiPickerCloseOnSelected = BooleanPref(
|
|
||||||
"EmojiPickerCloseOnSelected",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpCheckBetaVersion = BooleanPref(
|
|
||||||
"CheckBetaVersion",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpIgnoreTextInSharedMedia = BooleanPref(
|
|
||||||
"IgnoreTextInSharedMedia",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpEmojiPickerCategoryOther = BooleanPref(
|
|
||||||
"EmojiPickerCategoryOther",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpInAppUnicodeEmoji = BooleanPref(
|
|
||||||
"InAppUnicodeEmoji",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpKeepReactionSpace = BooleanPref(
|
|
||||||
"KeepReactionSpace",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpMultiWindowPost = BooleanPref(
|
|
||||||
"MultiWindowPost",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpManyWindowPost = BooleanPref(
|
|
||||||
"ManyWindowPost",
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
val bpMfmDecorationEnabled = BooleanPref(
|
|
||||||
"MfmDecorationEnabled",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
val bpMfmDecorationShowUnsupportedMarkup = BooleanPref(
|
|
||||||
"MfmDecorationShowUnsupportedMarkup",
|
|
||||||
true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
object PrefI {
|
|
||||||
// int
|
|
||||||
|
|
||||||
val ipBackButtonAction = IntPref("back_button_action", 0)
|
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
const val BACK_ASK_ALWAYS = 0
|
|
||||||
const val BACK_CLOSE_COLUMN = 1
|
|
||||||
const val BACK_OPEN_COLUMN_LIST = 2
|
|
||||||
const val BACK_EXIT_APP = 3
|
|
||||||
|
|
||||||
val ipUiTheme = IntPref("ui_theme", 0)
|
|
||||||
|
|
||||||
// val ipResizeImage = IntPref("resize_image", 4)
|
|
||||||
|
|
||||||
const val RC_SIMPLE = 0
|
|
||||||
const val RC_ACTUAL = 1
|
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
const val RC_NONE = 2
|
|
||||||
|
|
||||||
val ipRepliesCount = IntPref("RepliesCount", RC_SIMPLE)
|
|
||||||
val ipBoostsCount = IntPref("BoostsCount", RC_ACTUAL)
|
|
||||||
val ipFavouritesCount = IntPref("FavouritesCount", RC_ACTUAL)
|
|
||||||
|
|
||||||
val ipRefreshAfterToot = IntPref("refresh_after_toot", 0)
|
|
||||||
const val RAT_REFRESH_SCROLL = 0
|
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
const val RAT_REFRESH_DONT_SCROLL = 1
|
|
||||||
const val RAT_DONT_REFRESH = 2
|
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
const val VS_BY_ACCOUNT = 0
|
|
||||||
const val VS_MASTODON = 1
|
|
||||||
const val VS_MISSKEY = 2
|
|
||||||
val ipVisibilityStyle = IntPref("ipVisibilityStyle", VS_BY_ACCOUNT)
|
|
||||||
|
|
||||||
val ipAdditionalButtonsPosition =
|
|
||||||
IntPref("AdditionalButtonsPosition", AdditionalButtonsPosition.End.idx)
|
|
||||||
|
|
||||||
val ipFooterButtonBgColor = IntPref("footer_button_bg_color", 0)
|
|
||||||
val ipFooterButtonFgColor = IntPref("footer_button_fg_color", 0)
|
|
||||||
val ipFooterTabBgColor = IntPref("footer_tab_bg_color", 0)
|
|
||||||
val ipFooterTabDividerColor = IntPref("footer_tab_divider_color", 0)
|
|
||||||
val ipFooterTabIndicatorColor = IntPref("footer_tab_indicator_color", 0)
|
|
||||||
val ipListDividerColor = IntPref("listDividerColor", 0)
|
|
||||||
val ipLastColumnPos = IntPref("last_column_pos", -1)
|
|
||||||
val ipBoostButtonJustify = IntPref("ipBoostButtonJustify", 0) // 0=左,1=中央,2=右
|
|
||||||
|
|
||||||
private const val JWCP_DEFAULT = 0
|
|
||||||
const val JWCP_START = 1
|
|
||||||
const val JWCP_END = 2
|
|
||||||
val ipJustifyWindowContentPortrait =
|
|
||||||
IntPref("JustifyWindowContentPortrait", JWCP_DEFAULT) // 0=default,1=start,2=end
|
|
||||||
|
|
||||||
const val GSP_HEAD = 0
|
|
||||||
private const val GSP_TAIL = 1
|
|
||||||
val ipGapHeadScrollPosition = IntPref("GapHeadScrollPosition", GSP_TAIL)
|
|
||||||
val ipGapTailScrollPosition = IntPref("GapTailScrollPosition", GSP_TAIL)
|
|
||||||
|
|
||||||
val ipLinkColor = IntPref("LinkColor", 0)
|
|
||||||
|
|
||||||
val ipSwitchOnColor = IntPref("SwitchOnColor", Color.BLACK or 0x0080ff)
|
|
||||||
|
|
||||||
val ipButtonBoostedColor = IntPref("ButtonBoostedColor", 0)
|
|
||||||
val ipButtonFavoritedColor = IntPref("ButtonFavoritedColor", 0)
|
|
||||||
val ipButtonBookmarkedColor = IntPref("ButtonBookmarkedColor", 0)
|
|
||||||
val ipButtonFollowingColor = IntPref("ButtonFollowingColor", 0)
|
|
||||||
val ipButtonFollowRequestColor = IntPref("ButtonFollowRequestColor", 0)
|
|
||||||
val ipButtonReactionedColor = IntPref("ButtonReactionedColor", 0)
|
|
||||||
|
|
||||||
val ipStatusBarColor = IntPref("StatusBarColor", 0)
|
|
||||||
val ipNavigationBarColor = IntPref("NavigationBarColor", 0)
|
|
||||||
|
|
||||||
val ipTootColorUnlisted = IntPref("ipTootColorUnlisted", 0)
|
|
||||||
val ipTootColorFollower = IntPref("ipTootColorFollower", 0)
|
|
||||||
val ipTootColorDirectUser = IntPref("ipTootColorDirectUser", 0)
|
|
||||||
val ipTootColorDirectMe = IntPref("ipTootColorDirectMe", 0)
|
|
||||||
|
|
||||||
val ipEventBgColorBoost = IntPref("EventBgColorBoost", 0)
|
|
||||||
val ipEventBgColorFavourite = IntPref("EventBgColorFavourite", 0)
|
|
||||||
val ipEventBgColorBookmark = IntPref("EventBgColorBookmark", 0)
|
|
||||||
val ipEventBgColorFollow = IntPref("EventBgColorFollow", 0)
|
|
||||||
val ipEventBgColorMention = IntPref("EventBgColorMention", 0)
|
|
||||||
val ipEventBgColorUnfollow = IntPref("EventBgColorUnfollow", 0)
|
|
||||||
val ipEventBgColorReaction = IntPref("EventBgColorReaction", 0)
|
|
||||||
val ipEventBgColorQuote = IntPref("EventBgColorQuote", 0)
|
|
||||||
val ipEventBgColorVote = IntPref("EventBgColorVote", 0)
|
|
||||||
val ipEventBgColorFollowRequest = IntPref("EventBgColorFollowRequest", 0)
|
|
||||||
val ipEventBgColorStatus = IntPref("EventBgColorStatus", 0)
|
|
||||||
|
|
||||||
val ipEventBgColorGap = IntPref("EventBgColorGap", 0)
|
|
||||||
|
|
||||||
val ipCcdHeaderBg = IntPref("ipCcdHeaderBg", 0)
|
|
||||||
val ipCcdHeaderFg = IntPref("ipCcdHeaderFg", 0)
|
|
||||||
val ipCcdContentBg = IntPref("ipCcdContentBg", 0)
|
|
||||||
val ipCcdContentAcct = IntPref("ipCcdContentAcct", 0)
|
|
||||||
val ipCcdContentText = IntPref("ipCcdContentText", 0)
|
|
||||||
|
|
||||||
val ipSearchBgColor = IntPref("SearchBgColor", 0)
|
|
||||||
val ipAnnouncementsBgColor = IntPref("AnnouncementsBgColor", 0)
|
|
||||||
val ipConversationMainTootBgColor = IntPref("ConversationMainTootBgColor", 0)
|
|
||||||
val ipVerifiedLinkBgColor = IntPref("VerifiedLinkBgColor", 0)
|
|
||||||
val ipVerifiedLinkFgColor = IntPref("VerifiedLinkFgColor", 0)
|
|
||||||
|
|
||||||
// val ipTrendTagCountShowing = IntPref("TrendTagCountShowing", 0)
|
|
||||||
// const val TTCS_WEEKLY = 0
|
|
||||||
// const val TTCS_DAILY = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
object PrefS {
|
|
||||||
|
|
||||||
// string
|
|
||||||
val spColumnWidth = StringPref("ColumnWidth", "")
|
|
||||||
val spMediaThumbHeight = StringPref("MediaThumbHeight", "")
|
|
||||||
val spClientName = StringPref("client_name", "")
|
|
||||||
val spQuoteNameFormat = StringPref("quote_name_format", "")
|
|
||||||
val spAutoCWLines = StringPref("auto_cw_lines", "0")
|
|
||||||
val spCardDescriptionLength = StringPref("CardDescriptionLength", "64")
|
|
||||||
val spAvatarIconSize = StringPref("avatar_icon_size", "48")
|
|
||||||
val spNotificationTlIconSize = StringPref("notification_tl_icon_size", "24")
|
|
||||||
val spBoostButtonSize = StringPref("BoostButtonSize", "35")
|
|
||||||
val spReplyIconSize = StringPref("ReplyIconSize", "24")
|
|
||||||
val spHeaderIconSize = StringPref("HeaderIconSize", "24")
|
|
||||||
val spStripIconSize = StringPref("StripIconSize", "30")
|
|
||||||
|
|
||||||
// val spMediaSizeMax = StringPref("max_media_size", "8")
|
|
||||||
// val spMovieSizeMax = StringPref("max_movie_size", "40")
|
|
||||||
// val spMediaSizeMaxPixelfed = StringPref("MediaSizeMaxPixelfed", "15")
|
|
||||||
|
|
||||||
val spTimelineFont = StringPref("timeline_font", "", skipImport = true)
|
|
||||||
val spTimelineFontBold = StringPref("timeline_font_bold", "", skipImport = true)
|
|
||||||
val spMspUserToken = StringPref("mastodon_search_portal_user_token", "")
|
|
||||||
val spEmojiPickerRecent = StringPref("emoji_picker_recent", "")
|
|
||||||
val spRoundRatio = StringPref("round_ratio", "33")
|
|
||||||
val spBoostAlpha = StringPref("BoostAlpha", "60")
|
|
||||||
|
|
||||||
val spScreenBottomPadding = StringPref("ScreenBottomPadding", "8")
|
|
||||||
|
|
||||||
val spPullNotificationCheckInterval = StringPref("PullNotificationCheckInterval", "15")
|
|
||||||
val spUserAgent = StringPref("UserAgent", "")
|
|
||||||
|
|
||||||
val spMediaReadTimeout = StringPref("spMediaReadTimeout", "60")
|
|
||||||
val spAgreedPrivacyPolicyDigest = StringPref("spAgreedPrivacyPolicyDigest", "")
|
|
||||||
|
|
||||||
val spTimeZone = StringPref("TimeZone", "")
|
|
||||||
|
|
||||||
val spQuickTootMacro = StringPref("QuickTootMacro", "")
|
|
||||||
val spQuickTootVisibility = StringPref("QuickTootVisibility", "")
|
|
||||||
|
|
||||||
val spTranslateAppComponent = StringPref("TranslateAppComponent", "")
|
|
||||||
val spCustomShare1 = StringPref("CustomShare1", "")
|
|
||||||
val spCustomShare2 = StringPref("CustomShare2", "")
|
|
||||||
val spCustomShare3 = StringPref("CustomShare3", "")
|
|
||||||
// val spWebBrowser = StringPref("WebBrowser", "")
|
|
||||||
|
|
||||||
val spTimelineSpacing = StringPref("TimelineSpacing", "")
|
|
||||||
}
|
|
||||||
|
|
||||||
object PrefL {
|
|
||||||
|
|
||||||
// long
|
|
||||||
val lpTabletTootDefaultAccount = LongPref("tablet_toot_default_account", -1L)
|
|
||||||
}
|
|
||||||
|
|
||||||
object PrefF {
|
|
||||||
// float
|
|
||||||
|
|
||||||
val fpTimelineFontSize = FloatPref("timeline_font_size", Float.NaN)
|
|
||||||
val fpAcctFontSize = FloatPref("acct_font_size", Float.NaN)
|
|
||||||
val fpNotificationTlFontSize = FloatPref("notification_tl_font_size", Float.NaN)
|
|
||||||
val fpHeaderTextSize = FloatPref("HeaderTextSize", Float.NaN)
|
|
||||||
internal const val default_timeline_font_size = 14f
|
|
||||||
internal const val default_acct_font_size = 12f
|
|
||||||
internal const val default_notification_tl_font_size = 14f
|
|
||||||
internal const val default_header_font_size = 14f
|
|
||||||
}
|
|
|
@ -15,6 +15,8 @@ import androidx.core.content.ContextCompat
|
||||||
import jp.juggler.subwaytooter.emoji.EmojiMap
|
import jp.juggler.subwaytooter.emoji.EmojiMap
|
||||||
import jp.juggler.subwaytooter.api.entity.TootAccount
|
import jp.juggler.subwaytooter.api.entity.TootAccount
|
||||||
import jp.juggler.subwaytooter.api.entity.TootVisibility
|
import jp.juggler.subwaytooter.api.entity.TootVisibility
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
||||||
import jp.juggler.subwaytooter.span.createSpan
|
import jp.juggler.subwaytooter.span.createSpan
|
||||||
import jp.juggler.subwaytooter.table.UserRelation
|
import jp.juggler.subwaytooter.table.UserRelation
|
||||||
|
|
|
@ -13,6 +13,7 @@ import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
import jp.juggler.subwaytooter.dialog.*
|
import jp.juggler.subwaytooter.dialog.*
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
|
import jp.juggler.subwaytooter.pref.*
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.LinkHelper
|
import jp.juggler.subwaytooter.util.LinkHelper
|
||||||
import jp.juggler.subwaytooter.util.openBrowser
|
import jp.juggler.subwaytooter.util.openBrowser
|
||||||
|
|
|
@ -16,6 +16,9 @@ import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.api.runApiTask
|
import jp.juggler.subwaytooter.api.runApiTask
|
||||||
import jp.juggler.subwaytooter.api.syncStatus
|
import jp.juggler.subwaytooter.api.syncStatus
|
||||||
import jp.juggler.subwaytooter.dialog.pickAccount
|
import jp.juggler.subwaytooter.dialog.pickAccount
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefDevice
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.matchHost
|
import jp.juggler.subwaytooter.util.matchHost
|
||||||
import jp.juggler.util.LogCategory
|
import jp.juggler.util.LogCategory
|
||||||
|
|
|
@ -2,7 +2,7 @@ package jp.juggler.subwaytooter.actmain
|
||||||
|
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefL
|
import jp.juggler.subwaytooter.pref.PrefL
|
||||||
import jp.juggler.subwaytooter.column.fireShowColumnHeader
|
import jp.juggler.subwaytooter.column.fireShowColumnHeader
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
|
@ -5,8 +5,8 @@ import android.view.View
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.core.view.GravityCompat
|
import androidx.core.view.GravityCompat
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.action.openColumnList
|
import jp.juggler.subwaytooter.action.openColumnList
|
||||||
import jp.juggler.subwaytooter.action.openPost
|
import jp.juggler.subwaytooter.action.openPost
|
||||||
|
|
|
@ -3,7 +3,7 @@ package jp.juggler.subwaytooter.actmain
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.ActPost
|
import jp.juggler.subwaytooter.ActPost
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.api.entity.Acct
|
import jp.juggler.subwaytooter.api.entity.Acct
|
||||||
import jp.juggler.subwaytooter.api.entity.EntityId
|
import jp.juggler.subwaytooter.api.entity.EntityId
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.view.View
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefS
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.util.optInt
|
import jp.juggler.util.optInt
|
||||||
|
|
|
@ -12,6 +12,9 @@ import jp.juggler.subwaytooter.column.*
|
||||||
import jp.juggler.subwaytooter.columnviewholder.TabletColumnViewHolder
|
import jp.juggler.subwaytooter.columnviewholder.TabletColumnViewHolder
|
||||||
import jp.juggler.subwaytooter.columnviewholder.scrollToTop2
|
import jp.juggler.subwaytooter.columnviewholder.scrollToTop2
|
||||||
import jp.juggler.subwaytooter.columnviewholder.showColumnSetting
|
import jp.juggler.subwaytooter.columnviewholder.showColumnSetting
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.table.AcctColor
|
import jp.juggler.subwaytooter.table.AcctColor
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
|
@ -6,8 +6,8 @@ import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefDevice
|
import jp.juggler.subwaytooter.pref.PrefDevice
|
||||||
import jp.juggler.subwaytooter.PrefS
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.action.conversationOtherInstance
|
import jp.juggler.subwaytooter.action.conversationOtherInstance
|
||||||
import jp.juggler.subwaytooter.action.openActPostImpl
|
import jp.juggler.subwaytooter.action.openActPostImpl
|
||||||
|
|
|
@ -11,6 +11,7 @@ import jp.juggler.subwaytooter.api.entity.TootVisibility
|
||||||
import jp.juggler.subwaytooter.dialog.pickAccount
|
import jp.juggler.subwaytooter.dialog.pickAccount
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.actpost.CompletionHelper
|
import jp.juggler.subwaytooter.actpost.CompletionHelper
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.util.PostCompleteCallback
|
import jp.juggler.subwaytooter.util.PostCompleteCallback
|
||||||
import jp.juggler.subwaytooter.util.PostImpl
|
import jp.juggler.subwaytooter.util.PostImpl
|
||||||
import jp.juggler.util.hideKeyboard
|
import jp.juggler.util.hideKeyboard
|
||||||
|
|
|
@ -8,6 +8,8 @@ import android.widget.LinearLayout
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.itemviewholder.ItemViewHolder
|
import jp.juggler.subwaytooter.itemviewholder.ItemViewHolder
|
||||||
|
import jp.juggler.subwaytooter.pref.*
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.StringPref
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
import jp.juggler.subwaytooter.util.CustomShare
|
import jp.juggler.subwaytooter.util.CustomShare
|
||||||
import jp.juggler.subwaytooter.view.ListDivider
|
import jp.juggler.subwaytooter.view.ListDivider
|
||||||
|
|
|
@ -3,7 +3,7 @@ package jp.juggler.subwaytooter.actmain
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.view.MyViewPager
|
import jp.juggler.subwaytooter.view.MyViewPager
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import jp.juggler.subwaytooter.action.*
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
import jp.juggler.subwaytooter.dialog.pickAccount
|
import jp.juggler.subwaytooter.dialog.pickAccount
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.VersionString
|
import jp.juggler.subwaytooter.util.VersionString
|
||||||
import jp.juggler.subwaytooter.util.openBrowser
|
import jp.juggler.subwaytooter.util.openBrowser
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.net.Uri
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import jp.juggler.subwaytooter.ActPost
|
import jp.juggler.subwaytooter.ActPost
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.Styler
|
import jp.juggler.subwaytooter.Styler
|
||||||
import jp.juggler.subwaytooter.api.ApiTask
|
import jp.juggler.subwaytooter.api.ApiTask
|
||||||
|
|
|
@ -9,6 +9,7 @@ import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.actmain.onCompleteActPost
|
import jp.juggler.subwaytooter.actmain.onCompleteActPost
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.dialog.ActionsDialog
|
import jp.juggler.subwaytooter.dialog.ActionsDialog
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.table.PostDraft
|
import jp.juggler.subwaytooter.table.PostDraft
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
|
|
|
@ -7,7 +7,7 @@ import android.text.style.ForegroundColorSpan
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
|
|
|
@ -3,6 +3,8 @@ package jp.juggler.subwaytooter.api
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefDevice
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.table.ClientInfo
|
import jp.juggler.subwaytooter.table.ClientInfo
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.text.Spannable
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.MisskeyAccountDetailMap
|
import jp.juggler.subwaytooter.api.MisskeyAccountDetailMap
|
||||||
import jp.juggler.subwaytooter.api.TootParser
|
import jp.juggler.subwaytooter.api.TootParser
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package jp.juggler.subwaytooter.api.entity
|
package jp.juggler.subwaytooter.api.entity
|
||||||
|
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.TootParser
|
import jp.juggler.subwaytooter.api.TootParser
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package jp.juggler.subwaytooter.api.entity
|
package jp.juggler.subwaytooter.api.entity
|
||||||
|
|
||||||
import jp.juggler.subwaytooter.api.TootParser
|
import jp.juggler.subwaytooter.api.TootParser
|
||||||
import jp.juggler.subwaytooter.pref
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.util.DecodeOptions
|
import jp.juggler.subwaytooter.util.DecodeOptions
|
||||||
import jp.juggler.util.JsonObject
|
import jp.juggler.util.JsonObject
|
||||||
import jp.juggler.util.filterNotEmpty
|
import jp.juggler.util.filterNotEmpty
|
||||||
|
|
|
@ -2,7 +2,7 @@ package jp.juggler.subwaytooter.api.entity
|
||||||
|
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
import jp.juggler.subwaytooter.api.TootApiResult
|
import jp.juggler.subwaytooter.api.TootApiResult
|
||||||
import jp.juggler.subwaytooter.api.TootParser
|
import jp.juggler.subwaytooter.api.TootParser
|
||||||
|
|
|
@ -4,7 +4,7 @@ import android.text.Spannable
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.span.NetworkEmojiSpan
|
import jp.juggler.subwaytooter.span.NetworkEmojiSpan
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.DecodeOptions
|
import jp.juggler.subwaytooter.util.DecodeOptions
|
||||||
|
|
|
@ -6,7 +6,7 @@ import androidx.annotation.StringRes
|
||||||
import android.text.Spannable
|
import android.text.Spannable
|
||||||
import android.text.SpannableString
|
import android.text.SpannableString
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.emoji.CustomEmoji
|
import jp.juggler.subwaytooter.emoji.CustomEmoji
|
||||||
|
|
|
@ -16,6 +16,8 @@ import jp.juggler.subwaytooter.api.entity.EntityId
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.column.ColumnEncoder
|
import jp.juggler.subwaytooter.column.ColumnEncoder
|
||||||
import jp.juggler.subwaytooter.column.getBackgroundImageDir
|
import jp.juggler.subwaytooter.column.getBackgroundImageDir
|
||||||
|
import jp.juggler.subwaytooter.pref.*
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.*
|
||||||
import jp.juggler.subwaytooter.table.*
|
import jp.juggler.subwaytooter.table.*
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
import org.apache.commons.io.IOUtils
|
import org.apache.commons.io.IOUtils
|
||||||
|
|
|
@ -11,6 +11,8 @@ import androidx.annotation.StringRes
|
||||||
import androidx.appcompat.widget.AppCompatImageView
|
import androidx.appcompat.widget.AppCompatImageView
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.itemviewholder.AdditionalButtonsPosition
|
import jp.juggler.subwaytooter.itemviewholder.AdditionalButtonsPosition
|
||||||
|
import jp.juggler.subwaytooter.pref.*
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.*
|
||||||
import jp.juggler.subwaytooter.util.CustomShareTarget
|
import jp.juggler.subwaytooter.util.CustomShareTarget
|
||||||
import jp.juggler.subwaytooter.util.openBrowser
|
import jp.juggler.subwaytooter.util.openBrowser
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
|
@ -8,6 +8,7 @@ import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.streaming.*
|
import jp.juggler.subwaytooter.streaming.*
|
||||||
import jp.juggler.subwaytooter.table.*
|
import jp.juggler.subwaytooter.table.*
|
||||||
import jp.juggler.subwaytooter.util.BucketList
|
import jp.juggler.subwaytooter.util.BucketList
|
||||||
|
@ -133,6 +134,8 @@ class Column(
|
||||||
|
|
||||||
internal var quickFilter = QUICK_FILTER_ALL
|
internal var quickFilter = QUICK_FILTER_ALL
|
||||||
|
|
||||||
|
internal var showMediaDescription = true
|
||||||
|
|
||||||
@Volatile
|
@Volatile
|
||||||
internal var dontStreaming = false
|
internal var dontStreaming = false
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ object ColumnEncoder {
|
||||||
const val KEY_ACCOUNT_ROW_ID = "account_id"
|
const val KEY_ACCOUNT_ROW_ID = "account_id"
|
||||||
const val KEY_TYPE = "type"
|
const val KEY_TYPE = "type"
|
||||||
const val KEY_DONT_CLOSE = "dont_close"
|
const val KEY_DONT_CLOSE = "dont_close"
|
||||||
|
const val KEY_SHOW_MEDIA_DESCRIPTION = "showMediaDescription"
|
||||||
|
|
||||||
private const val KEY_COLUMN_ID = "column_id"
|
private const val KEY_COLUMN_ID = "column_id"
|
||||||
private const val KEY_WITH_ATTACHMENT = "with_attachment"
|
private const val KEY_WITH_ATTACHMENT = "with_attachment"
|
||||||
|
@ -120,6 +121,7 @@ object ColumnEncoder {
|
||||||
dst[KEY_ANNOUNCEMENT_HIDE_TIME] = announcementHideTime
|
dst[KEY_ANNOUNCEMENT_HIDE_TIME] = announcementHideTime
|
||||||
|
|
||||||
dst.putIfTrue(KEY_DONT_CLOSE, dontClose)
|
dst.putIfTrue(KEY_DONT_CLOSE, dontClose)
|
||||||
|
dst.putIfTrue(KEY_SHOW_MEDIA_DESCRIPTION, showMediaDescription)
|
||||||
dst.putIfTrue(KEY_WITH_ATTACHMENT, withAttachment)
|
dst.putIfTrue(KEY_WITH_ATTACHMENT, withAttachment)
|
||||||
dst.putIfTrue(KEY_WITH_HIGHLIGHT, withHighlight)
|
dst.putIfTrue(KEY_WITH_HIGHLIGHT, withHighlight)
|
||||||
dst.putIfTrue(KEY_DONT_SHOW_BOOST, dontShowBoost)
|
dst.putIfTrue(KEY_DONT_SHOW_BOOST, dontShowBoost)
|
||||||
|
@ -249,6 +251,7 @@ object ColumnEncoder {
|
||||||
fun decode(column: Column, src: JsonObject) {
|
fun decode(column: Column, src: JsonObject) {
|
||||||
column.run {
|
column.run {
|
||||||
dontClose = src.optBoolean(KEY_DONT_CLOSE)
|
dontClose = src.optBoolean(KEY_DONT_CLOSE)
|
||||||
|
showMediaDescription = src.optBoolean(KEY_SHOW_MEDIA_DESCRIPTION,true)
|
||||||
withAttachment = src.optBoolean(KEY_WITH_ATTACHMENT)
|
withAttachment = src.optBoolean(KEY_WITH_ATTACHMENT)
|
||||||
withHighlight = src.optBoolean(KEY_WITH_HIGHLIGHT)
|
withHighlight = src.optBoolean(KEY_WITH_HIGHLIGHT)
|
||||||
dontShowBoost = src.optBoolean(KEY_DONT_SHOW_BOOST)
|
dontShowBoost = src.optBoolean(KEY_DONT_SHOW_BOOST)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import jp.juggler.subwaytooter.api.entity.EntityId
|
||||||
import jp.juggler.subwaytooter.api.entity.TimelineItem
|
import jp.juggler.subwaytooter.api.entity.TimelineItem
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
import jp.juggler.subwaytooter.columnviewholder.ColumnViewHolder
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.util.LogCategory
|
import jp.juggler.util.LogCategory
|
||||||
import jp.juggler.util.getAdaptiveRippleDrawable
|
import jp.juggler.util.getAdaptiveRippleDrawable
|
||||||
import jp.juggler.util.notZero
|
import jp.juggler.util.notZero
|
||||||
|
|
|
@ -8,6 +8,7 @@ import jp.juggler.subwaytooter.api.finder.*
|
||||||
import jp.juggler.subwaytooter.columnviewholder.getListItemOffset
|
import jp.juggler.subwaytooter.columnviewholder.getListItemOffset
|
||||||
import jp.juggler.subwaytooter.columnviewholder.setListItemTop
|
import jp.juggler.subwaytooter.columnviewholder.setListItemTop
|
||||||
import jp.juggler.subwaytooter.notification.PollingWorker
|
import jp.juggler.subwaytooter.notification.PollingWorker
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
import java.lang.StringBuilder
|
import java.lang.StringBuilder
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package jp.juggler.subwaytooter.column
|
package jp.juggler.subwaytooter.column
|
||||||
|
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
|
|
|
@ -6,6 +6,8 @@ import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.api.finder.*
|
import jp.juggler.subwaytooter.api.finder.*
|
||||||
import jp.juggler.subwaytooter.columnviewholder.setScrollPosition
|
import jp.juggler.subwaytooter.columnviewholder.setScrollPosition
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.util.ScrollPosition
|
import jp.juggler.subwaytooter.util.ScrollPosition
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
|
||||||
import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection
|
import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.column.*
|
import jp.juggler.subwaytooter.column.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.streaming.*
|
import jp.juggler.subwaytooter.streaming.*
|
||||||
import jp.juggler.subwaytooter.table.AcctColor
|
import jp.juggler.subwaytooter.table.AcctColor
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
|
@ -108,6 +109,7 @@ class ColumnViewHolder(
|
||||||
lateinit var ivColumnBackgroundImage: ImageView
|
lateinit var ivColumnBackgroundImage: ImageView
|
||||||
lateinit var llSearch: View
|
lateinit var llSearch: View
|
||||||
lateinit var cbDontCloseColumn: CheckBox
|
lateinit var cbDontCloseColumn: CheckBox
|
||||||
|
lateinit var cbShowMediaDescription: CheckBox
|
||||||
lateinit var cbRemoteOnly: CheckBox
|
lateinit var cbRemoteOnly: CheckBox
|
||||||
lateinit var cbWithAttachment: CheckBox
|
lateinit var cbWithAttachment: CheckBox
|
||||||
lateinit var cbWithHighlight: CheckBox
|
lateinit var cbWithHighlight: CheckBox
|
||||||
|
@ -403,6 +405,7 @@ class ColumnViewHolder(
|
||||||
arrayOf(
|
arrayOf(
|
||||||
cbDontAutoRefresh,
|
cbDontAutoRefresh,
|
||||||
cbDontCloseColumn,
|
cbDontCloseColumn,
|
||||||
|
cbShowMediaDescription,
|
||||||
cbDontShowBoost,
|
cbDontShowBoost,
|
||||||
cbDontShowFavourite,
|
cbDontShowFavourite,
|
||||||
cbDontShowFollow,
|
cbDontShowFollow,
|
||||||
|
@ -810,8 +813,8 @@ class ColumnViewHolder(
|
||||||
text = context.getString(R.string.remote_only)
|
text = context.getString(R.string.remote_only)
|
||||||
}.lparams(matchParent, wrapContent)
|
}.lparams(matchParent, wrapContent)
|
||||||
|
|
||||||
cbWithAttachment = checkBox {
|
cbShowMediaDescription = checkBox {
|
||||||
text = context.getString(R.string.with_attachment)
|
text = context.getString(R.string.show_media_description)
|
||||||
}.lparams(matchParent, wrapContent)
|
}.lparams(matchParent, wrapContent)
|
||||||
|
|
||||||
cbWithHighlight = checkBox {
|
cbWithHighlight = checkBox {
|
||||||
|
@ -866,6 +869,10 @@ class ColumnViewHolder(
|
||||||
text = context.getString(R.string.hide_media_default)
|
text = context.getString(R.string.hide_media_default)
|
||||||
}.lparams(matchParent, wrapContent)
|
}.lparams(matchParent, wrapContent)
|
||||||
|
|
||||||
|
cbWithAttachment = checkBox {
|
||||||
|
text = context.getString(R.string.with_attachment)
|
||||||
|
}.lparams(matchParent, wrapContent)
|
||||||
|
|
||||||
cbSystemNotificationNotRelated = checkBox {
|
cbSystemNotificationNotRelated = checkBox {
|
||||||
text = context.getString(R.string.system_notification_not_related)
|
text = context.getString(R.string.system_notification_not_related)
|
||||||
}.lparams(matchParent, wrapContent)
|
}.lparams(matchParent, wrapContent)
|
||||||
|
|
|
@ -71,6 +71,12 @@ fun ColumnViewHolder.onCheckedChangedImpl(view: CompoundButton?, isChecked: Bool
|
||||||
activity.appState.saveColumnList()
|
activity.appState.saveColumnList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cbShowMediaDescription->{
|
||||||
|
column.showMediaDescription = isChecked
|
||||||
|
activity.appState.saveColumnList()
|
||||||
|
column.startLoading()
|
||||||
|
}
|
||||||
|
|
||||||
cbWithAttachment -> {
|
cbWithAttachment -> {
|
||||||
column.withAttachment = isChecked
|
column.withAttachment = isChecked
|
||||||
activity.appState.saveColumnList()
|
activity.appState.saveColumnList()
|
||||||
|
|
|
@ -14,7 +14,7 @@ import com.google.android.flexbox.FlexWrap
|
||||||
import com.google.android.flexbox.FlexboxLayout
|
import com.google.android.flexbox.FlexboxLayout
|
||||||
import com.google.android.flexbox.JustifyContent
|
import com.google.android.flexbox.JustifyContent
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
import jp.juggler.subwaytooter.emoji.UnicodeEmoji
|
import jp.juggler.subwaytooter.emoji.UnicodeEmoji
|
||||||
|
|
|
@ -4,8 +4,8 @@ import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection
|
import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.actmain.closePopup
|
import jp.juggler.subwaytooter.actmain.closePopup
|
||||||
import jp.juggler.subwaytooter.column.*
|
import jp.juggler.subwaytooter.column.*
|
||||||
|
@ -151,6 +151,7 @@ fun ColumnViewHolder.onPageCreate(column: Column, pageIdx: Int, pageCount: Int)
|
||||||
extraInvalidatorList.clear()
|
extraInvalidatorList.clear()
|
||||||
|
|
||||||
cbDontCloseColumn.isCheckedNoAnime = column.dontClose
|
cbDontCloseColumn.isCheckedNoAnime = column.dontClose
|
||||||
|
cbShowMediaDescription.isCheckedNoAnime = column.showMediaDescription
|
||||||
cbRemoteOnly.isCheckedNoAnime = column.remoteOnly
|
cbRemoteOnly.isCheckedNoAnime = column.remoteOnly
|
||||||
cbWithAttachment.isCheckedNoAnime = column.withAttachment
|
cbWithAttachment.isCheckedNoAnime = column.withAttachment
|
||||||
cbWithHighlight.isCheckedNoAnime = column.withHighlight
|
cbWithHighlight.isCheckedNoAnime = column.withHighlight
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.graphics.Color
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.column.*
|
import jp.juggler.subwaytooter.column.*
|
||||||
import jp.juggler.util.applyAlphaMultiplier
|
import jp.juggler.util.applyAlphaMultiplier
|
||||||
|
|
|
@ -17,6 +17,8 @@ import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.column.*
|
import jp.juggler.subwaytooter.column.*
|
||||||
import jp.juggler.subwaytooter.dialog.DlgTextInput
|
import jp.juggler.subwaytooter.dialog.DlgTextInput
|
||||||
import jp.juggler.subwaytooter.itemviewholder.DlgContextMenu
|
import jp.juggler.subwaytooter.itemviewholder.DlgContextMenu
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
||||||
import jp.juggler.subwaytooter.span.LinkInfo
|
import jp.juggler.subwaytooter.span.LinkInfo
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
|
|
|
@ -12,6 +12,8 @@ import java.lang.ref.WeakReference
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.api.entity.TootVisibility
|
import jp.juggler.subwaytooter.api.entity.TootVisibility
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.put
|
||||||
|
|
||||||
class DlgQuickTootMenu(
|
class DlgQuickTootMenu(
|
||||||
internal val activity: ActMain,
|
internal val activity: ActMain,
|
||||||
|
|
|
@ -14,6 +14,9 @@ import com.astuetz.PagerSlidingTabStrip
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.emoji.*
|
import jp.juggler.subwaytooter.emoji.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.put
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.view.HeaderGridView
|
import jp.juggler.subwaytooter.view.HeaderGridView
|
||||||
import jp.juggler.subwaytooter.view.MyViewPager
|
import jp.juggler.subwaytooter.view.MyViewPager
|
||||||
|
|
|
@ -2,7 +2,7 @@ package jp.juggler.subwaytooter.emoji
|
||||||
|
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.entity.Host
|
import jp.juggler.subwaytooter.api.entity.Host
|
||||||
import jp.juggler.subwaytooter.api.entity.Mappable
|
import jp.juggler.subwaytooter.api.entity.Mappable
|
||||||
import jp.juggler.util.JsonArray
|
import jp.juggler.util.JsonArray
|
||||||
|
|
|
@ -18,6 +18,8 @@ import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
import jp.juggler.subwaytooter.dialog.DlgListMember
|
import jp.juggler.subwaytooter.dialog.DlgListMember
|
||||||
import jp.juggler.subwaytooter.dialog.DlgQRCode
|
import jp.juggler.subwaytooter.dialog.DlgQRCode
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
import jp.juggler.subwaytooter.table.FavMute
|
import jp.juggler.subwaytooter.table.FavMute
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
|
|
|
@ -20,6 +20,8 @@ import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.columnviewholder.ItemListAdapter
|
import jp.juggler.subwaytooter.columnviewholder.ItemListAdapter
|
||||||
import jp.juggler.subwaytooter.drawable.PreviewCardBorder
|
import jp.juggler.subwaytooter.drawable.PreviewCardBorder
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
import jp.juggler.subwaytooter.view.*
|
import jp.juggler.subwaytooter.view.*
|
||||||
|
|
|
@ -4,12 +4,12 @@ import android.view.View
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.ActMediaViewer
|
import jp.juggler.subwaytooter.ActMediaViewer
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
|
||||||
import jp.juggler.subwaytooter.action.*
|
import jp.juggler.subwaytooter.action.*
|
||||||
import jp.juggler.subwaytooter.actmain.nextPosition
|
import jp.juggler.subwaytooter.actmain.nextPosition
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.column.startGap
|
import jp.juggler.subwaytooter.column.startGap
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.table.ContentWarning
|
import jp.juggler.subwaytooter.table.ContentWarning
|
||||||
import jp.juggler.subwaytooter.table.MediaShown
|
import jp.juggler.subwaytooter.table.MediaShown
|
||||||
import jp.juggler.subwaytooter.util.openCustomTab
|
import jp.juggler.subwaytooter.util.openCustomTab
|
||||||
|
@ -48,10 +48,29 @@ fun ItemViewHolder.onClickImpl(v: View?) {
|
||||||
llReply -> clickReplyInfo(pos, accessInfo, column.type, statusReply, statusShowing)
|
llReply -> clickReplyInfo(pos, accessInfo, column.type, statusReply, statusShowing)
|
||||||
|
|
||||||
llFollow -> clickFollowInfo(pos, accessInfo, followAccount) { whoRef ->
|
llFollow -> clickFollowInfo(pos, accessInfo, followAccount) { whoRef ->
|
||||||
DlgContextMenu(this, column, whoRef, null, (item as? TootNotification), tvContent).show()
|
DlgContextMenu(
|
||||||
|
this,
|
||||||
|
column,
|
||||||
|
whoRef,
|
||||||
|
null,
|
||||||
|
(item as? TootNotification),
|
||||||
|
tvContent
|
||||||
|
).show()
|
||||||
}
|
}
|
||||||
btnFollow -> clickFollowInfo(pos, accessInfo, followAccount, forceMenu = true) { whoRef ->
|
btnFollow -> clickFollowInfo(
|
||||||
DlgContextMenu(this, column, whoRef, null, (item as? TootNotification), tvContent).show()
|
pos,
|
||||||
|
accessInfo,
|
||||||
|
followAccount,
|
||||||
|
forceMenu = true
|
||||||
|
) { whoRef ->
|
||||||
|
DlgContextMenu(
|
||||||
|
this,
|
||||||
|
column,
|
||||||
|
whoRef,
|
||||||
|
null,
|
||||||
|
(item as? TootNotification),
|
||||||
|
tvContent
|
||||||
|
).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
btnGapHead -> column.startGap(item.cast(), isHead = true)
|
btnGapHead -> column.startGap(item.cast(), isHead = true)
|
||||||
|
@ -59,11 +78,24 @@ fun ItemViewHolder.onClickImpl(v: View?) {
|
||||||
btnSearchTag, llTrendTag -> clickTag(pos, item)
|
btnSearchTag, llTrendTag -> clickTag(pos, item)
|
||||||
btnListTL -> clickListTl(pos, accessInfo, item)
|
btnListTL -> clickListTl(pos, accessInfo, item)
|
||||||
btnListMore -> clickListMoreButton(pos, accessInfo, item)
|
btnListMore -> clickListMoreButton(pos, accessInfo, item)
|
||||||
btnFollowRequestAccept -> clickFollowRequestAccept(accessInfo, followAccount, accept = true)
|
btnFollowRequestAccept -> clickFollowRequestAccept(
|
||||||
btnFollowRequestDeny -> clickFollowRequestAccept(accessInfo, followAccount, accept = false)
|
accessInfo,
|
||||||
|
followAccount,
|
||||||
|
accept = true
|
||||||
|
)
|
||||||
|
btnFollowRequestDeny -> clickFollowRequestAccept(
|
||||||
|
accessInfo,
|
||||||
|
followAccount,
|
||||||
|
accept = false
|
||||||
|
)
|
||||||
llFilter -> openFilterMenu(accessInfo, item.cast())
|
llFilter -> openFilterMenu(accessInfo, item.cast())
|
||||||
ivCardImage -> clickCardImage(pos, accessInfo, statusShowing?.card)
|
ivCardImage -> clickCardImage(pos, accessInfo, statusShowing?.card)
|
||||||
llConversationIcons -> clickConversation(pos, accessInfo, listAdapter, summary = item.cast())
|
llConversationIcons -> clickConversation(
|
||||||
|
pos,
|
||||||
|
accessInfo,
|
||||||
|
listAdapter,
|
||||||
|
summary = item.cast()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,8 +114,22 @@ fun ItemViewHolder.onLongClickImpl(v: View?): Boolean {
|
||||||
longClickBoostedInfo(boostAccount)
|
longClickBoostedInfo(boostAccount)
|
||||||
|
|
||||||
llReply ->
|
llReply ->
|
||||||
clickReplyInfo(pos, accessInfo, column.type, statusReply, statusShowing, longClick = true) { status ->
|
clickReplyInfo(
|
||||||
DlgContextMenu(this, column, status.accountRef, status, item.cast(), tvContent).show()
|
pos,
|
||||||
|
accessInfo,
|
||||||
|
column.type,
|
||||||
|
statusReply,
|
||||||
|
statusShowing,
|
||||||
|
longClick = true
|
||||||
|
) { status ->
|
||||||
|
DlgContextMenu(
|
||||||
|
this,
|
||||||
|
column,
|
||||||
|
status.accountRef,
|
||||||
|
status,
|
||||||
|
item.cast(),
|
||||||
|
tvContent
|
||||||
|
).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
llFollow ->
|
llFollow ->
|
||||||
|
@ -164,6 +210,7 @@ private fun ItemViewHolder.clickMedia(i: Int) {
|
||||||
PrefB.bpUseInternalMediaViewer(App1.pref) ->
|
PrefB.bpUseInternalMediaViewer(App1.pref) ->
|
||||||
ActMediaViewer.open(
|
ActMediaViewer.open(
|
||||||
activity,
|
activity,
|
||||||
|
column.showMediaDescription,
|
||||||
when (accessInfo.isMisskey) {
|
when (accessInfo.isMisskey) {
|
||||||
true -> ServiceType.MISSKEY
|
true -> ServiceType.MISSKEY
|
||||||
else -> ServiceType.MASTODON
|
else -> ServiceType.MASTODON
|
||||||
|
@ -219,7 +266,12 @@ private fun ItemViewHolder.clickTag(pos: Int, item: TimelineItem?) {
|
||||||
when (item) {
|
when (item) {
|
||||||
is TootTag -> tagTimeline(pos, accessInfo, item.name)
|
is TootTag -> tagTimeline(pos, accessInfo, item.name)
|
||||||
is TootSearchGap -> column.startGap(item, isHead = true)
|
is TootSearchGap -> column.startGap(item, isHead = true)
|
||||||
is TootConversationSummary -> clickConversation(pos, accessInfo, listAdapter, summary = item)
|
is TootConversationSummary -> clickConversation(
|
||||||
|
pos,
|
||||||
|
accessInfo,
|
||||||
|
listAdapter,
|
||||||
|
summary = item
|
||||||
|
)
|
||||||
is TootGap -> clickTootGap(column, item)
|
is TootGap -> clickTootGap(column, item)
|
||||||
is TootDomainBlock -> clickDomainBlock(accessInfo, item)
|
is TootDomainBlock -> clickDomainBlock(accessInfo, item)
|
||||||
is TootScheduled -> clickScheduledToot(accessInfo, item, column)
|
is TootScheduled -> clickScheduledToot(accessInfo, item, column)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package jp.juggler.subwaytooter.itemviewholder
|
package jp.juggler.subwaytooter.itemviewholder
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.PrefS
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
|
|
|
@ -10,8 +10,8 @@ import com.google.android.flexbox.FlexWrap
|
||||||
import com.google.android.flexbox.FlexboxLayout
|
import com.google.android.flexbox.FlexboxLayout
|
||||||
import com.google.android.flexbox.JustifyContent
|
import com.google.android.flexbox.JustifyContent
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.action.reactionAdd
|
import jp.juggler.subwaytooter.action.reactionAdd
|
||||||
import jp.juggler.subwaytooter.action.reactionFromAnotherAccount
|
import jp.juggler.subwaytooter.action.reactionFromAnotherAccount
|
||||||
|
|
|
@ -20,6 +20,8 @@ import jp.juggler.subwaytooter.column.getAcctColor
|
||||||
import jp.juggler.subwaytooter.column.getContentColor
|
import jp.juggler.subwaytooter.column.getContentColor
|
||||||
import jp.juggler.subwaytooter.columnviewholder.ItemListAdapter
|
import jp.juggler.subwaytooter.columnviewholder.ItemListAdapter
|
||||||
import jp.juggler.subwaytooter.drawable.PreviewCardBorder
|
import jp.juggler.subwaytooter.drawable.PreviewCardBorder
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.span.MyClickableSpan
|
import jp.juggler.subwaytooter.span.MyClickableSpan
|
||||||
import jp.juggler.subwaytooter.table.*
|
import jp.juggler.subwaytooter.table.*
|
||||||
import jp.juggler.subwaytooter.util.Benchmark
|
import jp.juggler.subwaytooter.util.Benchmark
|
||||||
|
|
|
@ -2,7 +2,7 @@ package jp.juggler.subwaytooter.itemviewholder
|
||||||
|
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.Styler
|
import jp.juggler.subwaytooter.Styler
|
||||||
import jp.juggler.subwaytooter.actmain.addColumn
|
import jp.juggler.subwaytooter.actmain.addColumn
|
||||||
|
|
|
@ -9,6 +9,8 @@ import jp.juggler.subwaytooter.actmain.checkAutoCW
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.column.ColumnType
|
import jp.juggler.subwaytooter.column.ColumnType
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.table.ContentWarning
|
import jp.juggler.subwaytooter.table.ContentWarning
|
||||||
import jp.juggler.subwaytooter.table.MediaShown
|
import jp.juggler.subwaytooter.table.MediaShown
|
||||||
import jp.juggler.subwaytooter.util.OpenSticker
|
import jp.juggler.subwaytooter.util.OpenSticker
|
||||||
|
@ -297,7 +299,7 @@ private fun ItemViewHolder.showAttachments(status: TootStatus) {
|
||||||
if (mediaAttachments.isEmpty()) null else mediaAttachments[0] as? TootAttachment
|
if (mediaAttachments.isEmpty()) null else mediaAttachments[0] as? TootAttachment
|
||||||
btnShowMedia.blurhash = m0?.blurhash
|
btnShowMedia.blurhash = m0?.blurhash
|
||||||
|
|
||||||
if (sb.isNotEmpty()) {
|
if (sb.isNotEmpty() && column.showMediaDescription) {
|
||||||
tvMediaDescription.visibility = View.VISIBLE
|
tvMediaDescription.visibility = View.VISIBLE
|
||||||
tvMediaDescription.text = sb
|
tvMediaDescription.text = sb
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@ import jp.juggler.subwaytooter.actmain.nextPosition
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.column.getContentColor
|
import jp.juggler.subwaytooter.column.getContentColor
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.subwaytooter.table.UserRelation
|
import jp.juggler.subwaytooter.table.UserRelation
|
||||||
import jp.juggler.subwaytooter.util.CustomShare
|
import jp.juggler.subwaytooter.util.CustomShare
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.text.Spanned
|
||||||
import android.text.style.RelativeSizeSpan
|
import android.text.style.RelativeSizeSpan
|
||||||
import jp.juggler.subwaytooter.ActMain
|
import jp.juggler.subwaytooter.ActMain
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.entity.Acct
|
import jp.juggler.subwaytooter.api.entity.Acct
|
||||||
import jp.juggler.subwaytooter.api.entity.EntityId
|
import jp.juggler.subwaytooter.api.entity.EntityId
|
||||||
import jp.juggler.subwaytooter.api.entity.TootMention
|
import jp.juggler.subwaytooter.api.entity.TootMention
|
||||||
|
|
|
@ -19,6 +19,9 @@ import com.google.firebase.messaging.FirebaseMessaging
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefDevice
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.table.*
|
import jp.juggler.subwaytooter.table.*
|
||||||
import jp.juggler.subwaytooter.util.*
|
import jp.juggler.subwaytooter.util.*
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
|
@ -9,7 +9,7 @@ import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import jp.juggler.subwaytooter.ActCallback
|
import jp.juggler.subwaytooter.ActCallback
|
||||||
import jp.juggler.subwaytooter.EventReceiver
|
import jp.juggler.subwaytooter.EventReceiver
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.TootApiCallback
|
import jp.juggler.subwaytooter.api.TootApiCallback
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
|
|
|
@ -0,0 +1,350 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.BooleanPref
|
||||||
|
|
||||||
|
object PrefB {
|
||||||
|
// boolean
|
||||||
|
|
||||||
|
val bpDisableEmojiAnimation = BooleanPref(
|
||||||
|
"disable_emoji_animation",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
// val bpDisableFastScroller = BooleanPref("disable_fast_scroller", true, 0) // R.id.swDisableFastScroller)
|
||||||
|
|
||||||
|
val bpDisableTabletMode = BooleanPref(
|
||||||
|
"disable_tablet_mode",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontConfirmBeforeCloseColumn = BooleanPref(
|
||||||
|
"DontConfirmBeforeCloseColumn",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontCropMediaThumb = BooleanPref(
|
||||||
|
"DontCropMediaThumb",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontDuplicationCheck = BooleanPref(
|
||||||
|
"dont_duplication_check",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontRefreshOnResume = BooleanPref(
|
||||||
|
"dont_refresh_on_resume",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontRound = BooleanPref(
|
||||||
|
"dont_round",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontScreenOff = BooleanPref(
|
||||||
|
"dont_screen_off",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontUseActionButtonWithQuickPostBar = BooleanPref(
|
||||||
|
"dont_use_action_button",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontUseStreaming = BooleanPref(
|
||||||
|
"dont_use_streaming",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEnableGifAnimation = BooleanPref(
|
||||||
|
"enable_gif_animation",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpExitAppWhenCloseProtectedColumn = BooleanPref(
|
||||||
|
"ExitAppWhenCloseProtectedColumn",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpMentionFullAcct = BooleanPref(
|
||||||
|
"mention_full_acct",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpNotificationLED = BooleanPref(
|
||||||
|
"notification_led",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpNotificationSound = BooleanPref(
|
||||||
|
"notification_sound",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpNotificationVibration = BooleanPref(
|
||||||
|
"notification_vibration",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpPostButtonBarTop = BooleanPref(
|
||||||
|
"post_button_bar_at_top",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpPriorChrome = BooleanPref(
|
||||||
|
"prior_chrome",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
val bpDontUseCustomTabs = BooleanPref(
|
||||||
|
"DontUseCustomTabs",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpPriorLocalURL = BooleanPref(
|
||||||
|
"prior_local_url",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpQuickPostBar = BooleanPref(
|
||||||
|
"quick_toot_bar",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpRelativeTimestamp = BooleanPref(
|
||||||
|
"relative_timestamp",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShortAcctLocalUser = BooleanPref(
|
||||||
|
"short_acct_local_user",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowFollowButtonInButtonBar = BooleanPref(
|
||||||
|
"ShowFollowButtonInButtonBar",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpSimpleList = BooleanPref(
|
||||||
|
"simple_list",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpUseInternalMediaViewer = BooleanPref(
|
||||||
|
"use_internal_media_viewer",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowAppName = BooleanPref(
|
||||||
|
"show_app_name",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpShowLanguage = BooleanPref(
|
||||||
|
"ShowLanguage",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpForceGap = BooleanPref(
|
||||||
|
"force_gap",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShareViewPool = BooleanPref(
|
||||||
|
"ShareViewPool",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpAllowColumnDuplication = BooleanPref(
|
||||||
|
"AllowColumnDuplication",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpAppendAttachmentUrlToContent = BooleanPref(
|
||||||
|
"AppendAttachmentUrlToContent",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpVerticalArrangeThumbnails = BooleanPref(
|
||||||
|
"VerticalArrangeThumbnails",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontShowPreviewCard = BooleanPref(
|
||||||
|
"DontShowPreviewCard",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpScrollTopFromColumnStrip = BooleanPref(
|
||||||
|
"ScrollTopFromColumnStrip",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpOpenSticker = BooleanPref(
|
||||||
|
"InstanceTicker", // 歴史的な理由でキー名が異なる
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpLinksInContextMenu = BooleanPref(
|
||||||
|
"LinksInContextMenu",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpMoveNotificationsQuickFilter = BooleanPref(
|
||||||
|
"MoveNotificationsQuickFilter",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpShowAcctInSystemNotification = BooleanPref(
|
||||||
|
"ShowAcctInSystemNotification",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
val bpShowLinkUnderline = BooleanPref(
|
||||||
|
"ShowLinkUnderline",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowSearchClear = BooleanPref(
|
||||||
|
"ShowSearchClear",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontRemoveDeletedToot = BooleanPref(
|
||||||
|
"DontRemoveDeletedToot",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDontShowColumnBackgroundImage = BooleanPref(
|
||||||
|
"DontShowColumnBackgroundImage",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpCustomEmojiSeparatorZwsp = BooleanPref(
|
||||||
|
"CustomEmojiSeparatorZwsp",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowTranslateButton = BooleanPref(
|
||||||
|
"ShowTranslateButton",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDirectoryLastActive = BooleanPref(
|
||||||
|
"DirectoryLastActive",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDirectoryFollowers = BooleanPref(
|
||||||
|
"DirectoryFollowers",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDirectoryTootCount = BooleanPref(
|
||||||
|
"DirectoryTootCount",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
val bpDirectoryNote = BooleanPref(
|
||||||
|
"DirectoryNote",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpWarnHashtagAsciiAndNonAscii = BooleanPref(
|
||||||
|
"WarnHashtagAsciiAndNonAscii",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEnablePixelfed = BooleanPref(
|
||||||
|
"EnablePixelfed",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpQuickTootOmitAccountSelection = BooleanPref(
|
||||||
|
"QuickTootOmitAccountSelection",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpSeparateReplyNotificationGroup = BooleanPref(
|
||||||
|
"SeparateReplyNotificationGroup",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpAlwaysExpandContextMenuItems = BooleanPref(
|
||||||
|
"AlwaysExpandContextMenuItems",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowBookmarkButton = BooleanPref(
|
||||||
|
"ShowBookmarkButton2",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpShowFilteredWord = BooleanPref(
|
||||||
|
"ShowFilteredWord",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEnableDomainTimeline = BooleanPref(
|
||||||
|
"EnableDomainTimeline",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpDivideNotification = BooleanPref(
|
||||||
|
"DivideNotification",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpHideFollowCount = BooleanPref(
|
||||||
|
"HideFollowCount",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEmojioneShortcode = BooleanPref(
|
||||||
|
"EmojioneShortcode",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEmojiPickerCloseOnSelected = BooleanPref(
|
||||||
|
"EmojiPickerCloseOnSelected",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpCheckBetaVersion = BooleanPref(
|
||||||
|
"CheckBetaVersion",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpIgnoreTextInSharedMedia = BooleanPref(
|
||||||
|
"IgnoreTextInSharedMedia",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpEmojiPickerCategoryOther = BooleanPref(
|
||||||
|
"EmojiPickerCategoryOther",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpInAppUnicodeEmoji = BooleanPref(
|
||||||
|
"InAppUnicodeEmoji",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpKeepReactionSpace = BooleanPref(
|
||||||
|
"KeepReactionSpace",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpMultiWindowPost = BooleanPref(
|
||||||
|
"MultiWindowPost",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpManyWindowPost = BooleanPref(
|
||||||
|
"ManyWindowPost",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val bpMfmDecorationEnabled = BooleanPref(
|
||||||
|
"MfmDecorationEnabled",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
val bpMfmDecorationShowUnsupportedMarkup = BooleanPref(
|
||||||
|
"MfmDecorationShowUnsupportedMarkup",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package jp.juggler.subwaytooter
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
|
@ -0,0 +1,29 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.*
|
||||||
|
|
||||||
|
fun Context.pref(): SharedPreferences =
|
||||||
|
this.getSharedPreferences(this.packageName + "_preferences", Context.MODE_PRIVATE)
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.remove(item: BasePref<*>): SharedPreferences.Editor {
|
||||||
|
item.remove(this)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.put(item: BooleanPref, v: Boolean) =
|
||||||
|
this.apply { item.put(this, v) }
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.put(item: StringPref, v: String) =
|
||||||
|
this.apply { item.put(this, v) }
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.put(item: IntPref, v: Int) =
|
||||||
|
this.apply { item.put(this, v) }
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.put(item: LongPref, v: Long) =
|
||||||
|
this.apply { item.put(this, v) }
|
||||||
|
|
||||||
|
fun SharedPreferences.Editor.put(item: FloatPref, v: Float) =
|
||||||
|
this.apply { item.put(this, v) }
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.FloatPref
|
||||||
|
|
||||||
|
object PrefF {
|
||||||
|
// float
|
||||||
|
|
||||||
|
val fpTimelineFontSize = FloatPref("timeline_font_size", Float.NaN)
|
||||||
|
val fpAcctFontSize = FloatPref("acct_font_size", Float.NaN)
|
||||||
|
val fpNotificationTlFontSize = FloatPref("notification_tl_font_size", Float.NaN)
|
||||||
|
val fpHeaderTextSize = FloatPref("HeaderTextSize", Float.NaN)
|
||||||
|
internal const val default_timeline_font_size = 14f
|
||||||
|
internal const val default_acct_font_size = 12f
|
||||||
|
internal const val default_notification_tl_font_size = 14f
|
||||||
|
internal const val default_header_font_size = 14f
|
||||||
|
}
|
|
@ -0,0 +1,116 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import jp.juggler.subwaytooter.itemviewholder.AdditionalButtonsPosition
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.IntPref
|
||||||
|
|
||||||
|
object PrefI {
|
||||||
|
// int
|
||||||
|
|
||||||
|
val ipBackButtonAction = IntPref("back_button_action", 0)
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
const val BACK_ASK_ALWAYS = 0
|
||||||
|
const val BACK_CLOSE_COLUMN = 1
|
||||||
|
const val BACK_OPEN_COLUMN_LIST = 2
|
||||||
|
const val BACK_EXIT_APP = 3
|
||||||
|
|
||||||
|
val ipUiTheme = IntPref("ui_theme", 0)
|
||||||
|
|
||||||
|
// val ipResizeImage = IntPref("resize_image", 4)
|
||||||
|
|
||||||
|
const val RC_SIMPLE = 0
|
||||||
|
const val RC_ACTUAL = 1
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
const val RC_NONE = 2
|
||||||
|
|
||||||
|
val ipRepliesCount = IntPref("RepliesCount", RC_SIMPLE)
|
||||||
|
val ipBoostsCount = IntPref("BoostsCount", RC_ACTUAL)
|
||||||
|
val ipFavouritesCount = IntPref("FavouritesCount", RC_ACTUAL)
|
||||||
|
|
||||||
|
val ipRefreshAfterToot = IntPref("refresh_after_toot", 0)
|
||||||
|
const val RAT_REFRESH_SCROLL = 0
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
const val RAT_REFRESH_DONT_SCROLL = 1
|
||||||
|
const val RAT_DONT_REFRESH = 2
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
const val VS_BY_ACCOUNT = 0
|
||||||
|
const val VS_MASTODON = 1
|
||||||
|
const val VS_MISSKEY = 2
|
||||||
|
val ipVisibilityStyle = IntPref("ipVisibilityStyle", VS_BY_ACCOUNT)
|
||||||
|
|
||||||
|
val ipAdditionalButtonsPosition =
|
||||||
|
IntPref("AdditionalButtonsPosition", AdditionalButtonsPosition.End.idx)
|
||||||
|
|
||||||
|
val ipFooterButtonBgColor = IntPref("footer_button_bg_color", 0)
|
||||||
|
val ipFooterButtonFgColor = IntPref("footer_button_fg_color", 0)
|
||||||
|
val ipFooterTabBgColor = IntPref("footer_tab_bg_color", 0)
|
||||||
|
val ipFooterTabDividerColor = IntPref("footer_tab_divider_color", 0)
|
||||||
|
val ipFooterTabIndicatorColor = IntPref("footer_tab_indicator_color", 0)
|
||||||
|
val ipListDividerColor = IntPref("listDividerColor", 0)
|
||||||
|
val ipLastColumnPos = IntPref("last_column_pos", -1)
|
||||||
|
val ipBoostButtonJustify = IntPref("ipBoostButtonJustify", 0) // 0=左,1=中央,2=右
|
||||||
|
|
||||||
|
private const val JWCP_DEFAULT = 0
|
||||||
|
const val JWCP_START = 1
|
||||||
|
const val JWCP_END = 2
|
||||||
|
val ipJustifyWindowContentPortrait =
|
||||||
|
IntPref("JustifyWindowContentPortrait", JWCP_DEFAULT) // 0=default,1=start,2=end
|
||||||
|
|
||||||
|
const val GSP_HEAD = 0
|
||||||
|
private const val GSP_TAIL = 1
|
||||||
|
val ipGapHeadScrollPosition = IntPref("GapHeadScrollPosition", GSP_TAIL)
|
||||||
|
val ipGapTailScrollPosition = IntPref("GapTailScrollPosition", GSP_TAIL)
|
||||||
|
|
||||||
|
val ipLinkColor = IntPref("LinkColor", 0)
|
||||||
|
|
||||||
|
val ipSwitchOnColor = IntPref("SwitchOnColor", Color.BLACK or 0x0080ff)
|
||||||
|
|
||||||
|
val ipButtonBoostedColor = IntPref("ButtonBoostedColor", 0)
|
||||||
|
val ipButtonFavoritedColor = IntPref("ButtonFavoritedColor", 0)
|
||||||
|
val ipButtonBookmarkedColor = IntPref("ButtonBookmarkedColor", 0)
|
||||||
|
val ipButtonFollowingColor = IntPref("ButtonFollowingColor", 0)
|
||||||
|
val ipButtonFollowRequestColor = IntPref("ButtonFollowRequestColor", 0)
|
||||||
|
val ipButtonReactionedColor = IntPref("ButtonReactionedColor", 0)
|
||||||
|
|
||||||
|
val ipStatusBarColor = IntPref("StatusBarColor", 0)
|
||||||
|
val ipNavigationBarColor = IntPref("NavigationBarColor", 0)
|
||||||
|
|
||||||
|
val ipTootColorUnlisted = IntPref("ipTootColorUnlisted", 0)
|
||||||
|
val ipTootColorFollower = IntPref("ipTootColorFollower", 0)
|
||||||
|
val ipTootColorDirectUser = IntPref("ipTootColorDirectUser", 0)
|
||||||
|
val ipTootColorDirectMe = IntPref("ipTootColorDirectMe", 0)
|
||||||
|
|
||||||
|
val ipEventBgColorBoost = IntPref("EventBgColorBoost", 0)
|
||||||
|
val ipEventBgColorFavourite = IntPref("EventBgColorFavourite", 0)
|
||||||
|
val ipEventBgColorBookmark = IntPref("EventBgColorBookmark", 0)
|
||||||
|
val ipEventBgColorFollow = IntPref("EventBgColorFollow", 0)
|
||||||
|
val ipEventBgColorMention = IntPref("EventBgColorMention", 0)
|
||||||
|
val ipEventBgColorUnfollow = IntPref("EventBgColorUnfollow", 0)
|
||||||
|
val ipEventBgColorReaction = IntPref("EventBgColorReaction", 0)
|
||||||
|
val ipEventBgColorQuote = IntPref("EventBgColorQuote", 0)
|
||||||
|
val ipEventBgColorVote = IntPref("EventBgColorVote", 0)
|
||||||
|
val ipEventBgColorFollowRequest = IntPref("EventBgColorFollowRequest", 0)
|
||||||
|
val ipEventBgColorStatus = IntPref("EventBgColorStatus", 0)
|
||||||
|
|
||||||
|
val ipEventBgColorGap = IntPref("EventBgColorGap", 0)
|
||||||
|
|
||||||
|
val ipCcdHeaderBg = IntPref("ipCcdHeaderBg", 0)
|
||||||
|
val ipCcdHeaderFg = IntPref("ipCcdHeaderFg", 0)
|
||||||
|
val ipCcdContentBg = IntPref("ipCcdContentBg", 0)
|
||||||
|
val ipCcdContentAcct = IntPref("ipCcdContentAcct", 0)
|
||||||
|
val ipCcdContentText = IntPref("ipCcdContentText", 0)
|
||||||
|
|
||||||
|
val ipSearchBgColor = IntPref("SearchBgColor", 0)
|
||||||
|
val ipAnnouncementsBgColor = IntPref("AnnouncementsBgColor", 0)
|
||||||
|
val ipConversationMainTootBgColor = IntPref("ConversationMainTootBgColor", 0)
|
||||||
|
val ipVerifiedLinkBgColor = IntPref("VerifiedLinkBgColor", 0)
|
||||||
|
val ipVerifiedLinkFgColor = IntPref("VerifiedLinkFgColor", 0)
|
||||||
|
|
||||||
|
// val ipTrendTagCountShowing = IntPref("TrendTagCountShowing", 0)
|
||||||
|
// const val TTCS_WEEKLY = 0
|
||||||
|
// const val TTCS_DAILY = 1
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.LongPref
|
||||||
|
|
||||||
|
object PrefL {
|
||||||
|
|
||||||
|
// long
|
||||||
|
val lpTabletTootDefaultAccount = LongPref("tablet_toot_default_account", -1L)
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package jp.juggler.subwaytooter.pref
|
||||||
|
|
||||||
|
import jp.juggler.subwaytooter.pref.impl.StringPref
|
||||||
|
|
||||||
|
object PrefS {
|
||||||
|
|
||||||
|
// string
|
||||||
|
val spColumnWidth = StringPref("ColumnWidth", "")
|
||||||
|
val spMediaThumbHeight = StringPref("MediaThumbHeight", "")
|
||||||
|
val spClientName = StringPref("client_name", "")
|
||||||
|
val spQuoteNameFormat = StringPref("quote_name_format", "")
|
||||||
|
val spAutoCWLines = StringPref("auto_cw_lines", "0")
|
||||||
|
val spCardDescriptionLength = StringPref("CardDescriptionLength", "64")
|
||||||
|
val spAvatarIconSize = StringPref("avatar_icon_size", "48")
|
||||||
|
val spNotificationTlIconSize = StringPref("notification_tl_icon_size", "24")
|
||||||
|
val spBoostButtonSize = StringPref("BoostButtonSize", "35")
|
||||||
|
val spReplyIconSize = StringPref("ReplyIconSize", "24")
|
||||||
|
val spHeaderIconSize = StringPref("HeaderIconSize", "24")
|
||||||
|
val spStripIconSize = StringPref("StripIconSize", "30")
|
||||||
|
|
||||||
|
// val spMediaSizeMax = StringPref("max_media_size", "8")
|
||||||
|
// val spMovieSizeMax = StringPref("max_movie_size", "40")
|
||||||
|
// val spMediaSizeMaxPixelfed = StringPref("MediaSizeMaxPixelfed", "15")
|
||||||
|
|
||||||
|
val spTimelineFont = StringPref("timeline_font", "", skipImport = true)
|
||||||
|
val spTimelineFontBold = StringPref("timeline_font_bold", "", skipImport = true)
|
||||||
|
val spMspUserToken = StringPref("mastodon_search_portal_user_token", "")
|
||||||
|
val spEmojiPickerRecent = StringPref("emoji_picker_recent", "")
|
||||||
|
val spRoundRatio = StringPref("round_ratio", "33")
|
||||||
|
val spBoostAlpha = StringPref("BoostAlpha", "60")
|
||||||
|
|
||||||
|
val spScreenBottomPadding = StringPref("ScreenBottomPadding", "8")
|
||||||
|
|
||||||
|
val spPullNotificationCheckInterval = StringPref("PullNotificationCheckInterval", "15")
|
||||||
|
val spUserAgent = StringPref("UserAgent", "")
|
||||||
|
|
||||||
|
val spMediaReadTimeout = StringPref("spMediaReadTimeout", "60")
|
||||||
|
val spAgreedPrivacyPolicyDigest = StringPref("spAgreedPrivacyPolicyDigest", "")
|
||||||
|
|
||||||
|
val spTimeZone = StringPref("TimeZone", "")
|
||||||
|
|
||||||
|
val spQuickTootMacro = StringPref("QuickTootMacro", "")
|
||||||
|
val spQuickTootVisibility = StringPref("QuickTootVisibility", "")
|
||||||
|
|
||||||
|
val spTranslateAppComponent = StringPref("TranslateAppComponent", "")
|
||||||
|
val spCustomShare1 = StringPref("CustomShare1", "")
|
||||||
|
val spCustomShare2 = StringPref("CustomShare2", "")
|
||||||
|
val spCustomShare3 = StringPref("CustomShare3", "")
|
||||||
|
// val spWebBrowser = StringPref("WebBrowser", "")
|
||||||
|
|
||||||
|
val spTimelineSpacing = StringPref("TimelineSpacing", "")
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
|
|
||||||
|
@Suppress("EqualsOrHashCode")
|
||||||
|
abstract class BasePref<T>(val key: String, val defVal: T) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
// キー名と設定項目のマップ。インポートやアプリ設定で使う
|
||||||
|
val allPref = HashMap<String, BasePref<*>>()
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
when {
|
||||||
|
allPref[key] != null -> error("Preference key duplicate: $key")
|
||||||
|
else -> {
|
||||||
|
@Suppress("LeakingThis")
|
||||||
|
allPref[key] = this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun put(editor: SharedPreferences.Editor, v: T)
|
||||||
|
abstract operator fun invoke(pref: SharedPreferences): T
|
||||||
|
|
||||||
|
override fun equals(other: Any?) =
|
||||||
|
this === other
|
||||||
|
|
||||||
|
override fun hashCode(): Int = key.hashCode()
|
||||||
|
|
||||||
|
operator fun invoke(context: Context): T =
|
||||||
|
invoke(context.pref())
|
||||||
|
|
||||||
|
fun remove(e: SharedPreferences.Editor): SharedPreferences.Editor =
|
||||||
|
e.remove(key)
|
||||||
|
|
||||||
|
fun removeDefault(pref: SharedPreferences, e: SharedPreferences.Editor) =
|
||||||
|
if (pref.contains(key) && this.invoke(pref) == defVal) {
|
||||||
|
e.remove(key)
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
|
||||||
|
class BooleanPref(key: String, defVal: Boolean) : BasePref<Boolean>(key, defVal) {
|
||||||
|
|
||||||
|
override operator fun invoke(pref: SharedPreferences): Boolean =
|
||||||
|
pref.getBoolean(key, defVal)
|
||||||
|
|
||||||
|
// put if value is not default, remove if value is same to default
|
||||||
|
override fun put(editor: SharedPreferences.Editor, v: Boolean) {
|
||||||
|
if (v == defVal) editor.remove(key) else editor.putBoolean(key, v)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
|
||||||
|
class FloatPref(key: String, defVal: Float) : BasePref<Float>(key, defVal) {
|
||||||
|
|
||||||
|
override operator fun invoke(pref: SharedPreferences): Float =
|
||||||
|
pref.getFloat(key, defVal)
|
||||||
|
|
||||||
|
override fun put(editor: SharedPreferences.Editor, v: Float) {
|
||||||
|
if (v == defVal) editor.remove(key) else editor.putFloat(key, v)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
|
||||||
|
class IntPref(key: String, defVal: Int) : BasePref<Int>(key, defVal) {
|
||||||
|
|
||||||
|
override operator fun invoke(pref: SharedPreferences): Int =
|
||||||
|
pref.getInt(key, defVal)
|
||||||
|
|
||||||
|
override fun put(editor: SharedPreferences.Editor, v: Int) {
|
||||||
|
if (v == defVal) editor.remove(key) else editor.putInt(key, v)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
|
||||||
|
class LongPref(key: String, defVal: Long) : BasePref<Long>(key, defVal) {
|
||||||
|
|
||||||
|
override operator fun invoke(pref: SharedPreferences): Long =
|
||||||
|
pref.getLong(key, defVal)
|
||||||
|
|
||||||
|
override fun put(editor: SharedPreferences.Editor, v: Long) {
|
||||||
|
if (v == defVal) editor.remove(key) else editor.putLong(key, v)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package jp.juggler.subwaytooter.pref.impl
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import jp.juggler.util.optInt
|
||||||
|
|
||||||
|
class StringPref(
|
||||||
|
key: String,
|
||||||
|
defVal: String,
|
||||||
|
val skipImport: Boolean = false,
|
||||||
|
) : BasePref<String>(key, defVal) {
|
||||||
|
|
||||||
|
override operator fun invoke(pref: SharedPreferences): String =
|
||||||
|
pref.getString(key, defVal) ?: defVal
|
||||||
|
|
||||||
|
override fun put(editor: SharedPreferences.Editor, v: String) {
|
||||||
|
if (v == defVal) editor.remove(key) else editor.putString(key, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun toInt(pref: SharedPreferences) = invoke(pref).optInt() ?: defVal.toInt()
|
||||||
|
}
|
|
@ -9,6 +9,8 @@ import jp.juggler.subwaytooter.api.entity.EntityId
|
||||||
import jp.juggler.subwaytooter.api.entity.ServiceType
|
import jp.juggler.subwaytooter.api.entity.ServiceType
|
||||||
import jp.juggler.subwaytooter.column.ColumnTask_Loading
|
import jp.juggler.subwaytooter.column.ColumnTask_Loading
|
||||||
import jp.juggler.subwaytooter.column.ColumnTask_Refresh
|
import jp.juggler.subwaytooter.column.ColumnTask_Refresh
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.put
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import android.text.style.ReplacementSpan
|
||||||
import androidx.annotation.IntRange
|
import androidx.annotation.IntRange
|
||||||
import jp.juggler.apng.ApngFrames
|
import jp.juggler.apng.ApngFrames
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.util.LogCategory
|
import jp.juggler.util.LogCategory
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package jp.juggler.subwaytooter.streaming
|
package jp.juggler.subwaytooter.streaming
|
||||||
|
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.TootApiCallback
|
import jp.juggler.subwaytooter.api.TootApiCallback
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
import jp.juggler.subwaytooter.api.TootApiResult
|
import jp.juggler.subwaytooter.api.TootApiResult
|
||||||
|
|
|
@ -2,7 +2,7 @@ package jp.juggler.subwaytooter.streaming
|
||||||
|
|
||||||
import jp.juggler.subwaytooter.AppState
|
import jp.juggler.subwaytooter.AppState
|
||||||
import jp.juggler.subwaytooter.column.Column
|
import jp.juggler.subwaytooter.column.Column
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.api.TootApiCallback
|
import jp.juggler.subwaytooter.api.TootApiCallback
|
||||||
import jp.juggler.subwaytooter.api.TootApiClient
|
import jp.juggler.subwaytooter.api.TootApiClient
|
||||||
import jp.juggler.subwaytooter.api.entity.Acct
|
import jp.juggler.subwaytooter.api.entity.Acct
|
||||||
|
|
|
@ -15,6 +15,8 @@ import jp.juggler.subwaytooter.action.userProfile
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus.Companion.findStatusIdFromUrl
|
import jp.juggler.subwaytooter.api.entity.TootStatus.Companion.findStatusIdFromUrl
|
||||||
import jp.juggler.subwaytooter.api.entity.TootTag.Companion.findHashtagFromUrl
|
import jp.juggler.subwaytooter.api.entity.TootTag.Companion.findHashtagFromUrl
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.span.LinkInfo
|
import jp.juggler.subwaytooter.span.LinkInfo
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
import jp.juggler.util.*
|
import jp.juggler.util.*
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.graphics.PorterDuff
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefS
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.entity.TootStatus
|
import jp.juggler.subwaytooter.api.entity.TootStatus
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
|
|
|
@ -7,12 +7,12 @@ import android.text.Spanned
|
||||||
import android.util.SparseBooleanArray
|
import android.util.SparseBooleanArray
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.emoji.CustomEmoji
|
import jp.juggler.subwaytooter.emoji.CustomEmoji
|
||||||
import jp.juggler.subwaytooter.emoji.EmojiMap
|
import jp.juggler.subwaytooter.emoji.EmojiMap
|
||||||
import jp.juggler.subwaytooter.emoji.UnicodeEmoji
|
import jp.juggler.subwaytooter.emoji.UnicodeEmoji
|
||||||
import jp.juggler.subwaytooter.pref
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
import jp.juggler.subwaytooter.span.EmojiImageSpan
|
||||||
import jp.juggler.subwaytooter.span.HighlightSpan
|
import jp.juggler.subwaytooter.span.HighlightSpan
|
||||||
import jp.juggler.subwaytooter.span.NetworkEmojiSpan
|
import jp.juggler.subwaytooter.span.NetworkEmojiSpan
|
||||||
|
|
|
@ -7,7 +7,7 @@ import android.text.SpannableStringBuilder
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
import android.text.style.*
|
import android.text.style.*
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.mfm.MisskeyMarkdownDecoder
|
import jp.juggler.subwaytooter.mfm.MisskeyMarkdownDecoder
|
||||||
|
|
|
@ -4,7 +4,7 @@ import android.os.SystemClock
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.Styler
|
import jp.juggler.subwaytooter.Styler
|
||||||
import jp.juggler.subwaytooter.api.*
|
import jp.juggler.subwaytooter.api.*
|
||||||
|
|
|
@ -5,6 +5,9 @@ import android.content.SharedPreferences
|
||||||
import androidx.annotation.RawRes
|
import androidx.annotation.RawRes
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import jp.juggler.subwaytooter.*
|
import jp.juggler.subwaytooter.*
|
||||||
|
import jp.juggler.subwaytooter.pref.PrefS
|
||||||
|
import jp.juggler.subwaytooter.pref.pref
|
||||||
|
import jp.juggler.subwaytooter.pref.put
|
||||||
import jp.juggler.util.decodeUTF8
|
import jp.juggler.util.decodeUTF8
|
||||||
import jp.juggler.util.digestSHA256
|
import jp.juggler.util.digestSHA256
|
||||||
import jp.juggler.util.encodeBase64Url
|
import jp.juggler.util.encodeBase64Url
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.content.Intent
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import jp.juggler.subwaytooter.ActText
|
import jp.juggler.subwaytooter.ActText
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import jp.juggler.subwaytooter.api.entity.*
|
import jp.juggler.subwaytooter.api.entity.*
|
||||||
import jp.juggler.subwaytooter.table.SavedAccount
|
import jp.juggler.subwaytooter.table.SavedAccount
|
||||||
|
|
|
@ -23,7 +23,7 @@ import com.bumptech.glide.load.resource.gif.MyGifDrawable
|
||||||
import com.bumptech.glide.request.target.ImageViewTarget
|
import com.bumptech.glide.request.target.ImageViewTarget
|
||||||
import com.bumptech.glide.request.target.Target
|
import com.bumptech.glide.request.target.Target
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
||||||
import jp.juggler.subwaytooter.PrefB
|
import jp.juggler.subwaytooter.pref.PrefB
|
||||||
import jp.juggler.util.LogCategory
|
import jp.juggler.util.LogCategory
|
||||||
import jp.juggler.util.clipRange
|
import jp.juggler.util.clipRange
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import androidx.annotation.ColorInt
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.widget.SwitchCompat
|
import androidx.appcompat.widget.SwitchCompat
|
||||||
import jp.juggler.subwaytooter.App1
|
import jp.juggler.subwaytooter.App1
|
||||||
import jp.juggler.subwaytooter.PrefI
|
import jp.juggler.subwaytooter.pref.PrefI
|
||||||
import jp.juggler.subwaytooter.R
|
import jp.juggler.subwaytooter.R
|
||||||
import org.xmlpull.v1.XmlPullParser
|
import org.xmlpull.v1.XmlPullParser
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
|
|
@ -1099,4 +1099,5 @@
|
||||||
<string name="account_picker_mute">どのアカウントで %1$s をミュートしますか\?</string>
|
<string name="account_picker_mute">どのアカウントで %1$s をミュートしますか\?</string>
|
||||||
<string name="mfm_decoration_enabled">(Misskey)テキスト装飾を表示する</string>
|
<string name="mfm_decoration_enabled">(Misskey)テキスト装飾を表示する</string>
|
||||||
<string name="mfm_show_unsupported_markup">(Misskey)未対応のマークアップを表示する</string>
|
<string name="mfm_show_unsupported_markup">(Misskey)未対応のマークアップを表示する</string>
|
||||||
|
<string name="show_media_description">添付メディアの説明文を表示する</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1110,4 +1110,5 @@
|
||||||
<string name="many_window_post">Many window for post activity (experimental)</string>
|
<string name="many_window_post">Many window for post activity (experimental)</string>
|
||||||
<string name="mfm_decoration_enabled">(Misskey)Show text decorations</string>
|
<string name="mfm_decoration_enabled">(Misskey)Show text decorations</string>
|
||||||
<string name="mfm_show_unsupported_markup">(Misskey)Show unsupported markups</string>
|
<string name="mfm_show_unsupported_markup">(Misskey)Show unsupported markups</string>
|
||||||
|
<string name="show_media_description">Show media description</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
buildscript {
|
buildscript {
|
||||||
|
|
||||||
ext.jvm_target = "14"
|
ext.jvm_target = "11"
|
||||||
|
|
||||||
ext.min_sdk_version = 21
|
ext.min_sdk_version = 21
|
||||||
ext.target_sdk_version = 31
|
ext.target_sdk_version = 31
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion compile_sdk_version
|
compileSdkVersion compile_sdk_version
|
||||||
|
@ -11,6 +12,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
targetSdkVersion target_sdk_version
|
targetSdkVersion target_sdk_version
|
||||||
minSdkVersion min_sdk_version
|
minSdkVersion min_sdk_version
|
||||||
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +21,18 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
resourcePrefix "cpv_"
|
resourcePrefix "cpv_"
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = jvm_target
|
||||||
|
useIR = true
|
||||||
|
freeCompilerArgs += [
|
||||||
|
"-Xopt-in=kotlin.ExperimentalStdlibApi",
|
||||||
|
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||||
|
"-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi",
|
||||||
|
"-Xopt-in=androidx.compose.foundation.ExperimentalFoundationApi",
|
||||||
|
"-Xopt-in=androidx.compose.animation.ExperimentalAnimationApi",
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -16,6 +16,7 @@ android {
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
@ -25,6 +26,17 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = jvm_target
|
||||||
|
useIR = true
|
||||||
|
freeCompilerArgs += [
|
||||||
|
"-Xopt-in=kotlin.ExperimentalStdlibApi",
|
||||||
|
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||||
|
"-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi",
|
||||||
|
"-Xopt-in=androidx.compose.foundation.ExperimentalFoundationApi",
|
||||||
|
"-Xopt-in=androidx.compose.animation.ExperimentalAnimationApi",
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -18,7 +18,7 @@ android {
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|
Loading…
Reference in New Issue