diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
index f097f0e6..bc3b2b68 100644
--- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
@@ -834,7 +834,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
header.clear()
header.profiles = profiles
header.setActiveProfile(accountManager.activeAccount!!.id)
- binding.mainToolbar.subtitle = if (accountManager.accounts.size > 1) {
+ binding.mainToolbar.subtitle = if (accountManager.shouldDisplaySelfUsername(this)) {
accountManager.activeAccount!!.fullName
} else null
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
index cd4b57dd..46870895 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
@@ -244,7 +244,7 @@ class ComposeActivity :
viewModel.setup(composeOptions)
- if (accountManager.accounts.size > 1) {
+ if (accountManager.shouldDisplaySelfUsername(this)) {
binding.composeUsernameView.text = getString(
R.string.compose_active_account_description,
activeAccount.fullName
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
index a650f76b..8ae4e056 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
@@ -125,7 +125,7 @@ class PreferencesActivity :
this.restartCurrentActivity()
}
"statusTextSize", "absoluteTimeView", "showBotOverlay", "animateGifAvatars", "useBlurhash",
- "showCardsInTimelines", "confirmReblogs", "confirmFavourites",
+ "showSelfUsername", "showCardsInTimelines", "confirmReblogs", "confirmFavourites",
"enableSwipeForTabs", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR -> {
restartActivitiesOnExit = true
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
index 74d8c815..ce28a414 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
@@ -96,6 +96,16 @@ class PreferencesFragment : PreferenceFragmentCompat(), Injectable {
setTitle(R.string.pref_main_nav_position)
}
+ listPreference {
+ setDefaultValue("disambiguate")
+ setEntries(R.array.pref_show_self_username_names)
+ setEntryValues(R.array.pref_show_self_username_values)
+ key = PrefKeys.SHOW_SELF_USERNAME
+ setSummaryProvider { entry }
+ setTitle(R.string.pref_title_show_self_username)
+ isSingleLineTitle = false
+ }
+
switchPreference {
setDefaultValue(false)
key = PrefKeys.HIDE_TOP_TOOLBAR
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt b/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
index 9c5e118b..951cb977 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
@@ -15,9 +15,12 @@
package com.keylesspalace.tusky.db
+import android.content.Context
import android.util.Log
+import androidx.preference.PreferenceManager
import com.keylesspalace.tusky.entity.Account
import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.settings.PrefKeys
import java.util.Locale
import javax.inject.Inject
import javax.inject.Singleton
@@ -225,4 +228,18 @@ class AccountManager @Inject constructor(db: AppDatabase) {
identifier == it.identifier
}
}
+
+ /**
+ * @return true if the name of the currently-selected account should be displayed in UIs
+ */
+ fun shouldDisplaySelfUsername(context: Context): Boolean {
+ val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
+ val showUsernamePreference = sharedPreferences.getString(PrefKeys.SHOW_SELF_USERNAME, "disambiguate")
+ if (showUsernamePreference == "always")
+ return true
+ if (showUsernamePreference == "never")
+ return false
+
+ return accounts.size > 1 // "disambiguate"
+ }
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
index ee92fc2d..52c6f8a1 100644
--- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
@@ -27,6 +27,7 @@ object PrefKeys {
const val SHOW_BOT_OVERLAY = "showBotOverlay"
const val ANIMATE_GIF_AVATARS = "animateGifAvatars"
const val USE_BLURHASH = "useBlurhash"
+ const val SHOW_SELF_USERNAME = "showSelfUsername"
const val SHOW_NOTIFICATIONS_FILTER = "showNotificationsFilter"
const val SHOW_CARDS_IN_TIMELINES = "showCardsInTimelines"
const val CONFIRM_REBLOGS = "confirmReblogs"
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
index 3e1f033d..5562b20f 100644
--- a/app/src/main/res/values/donottranslate.xml
+++ b/app/src/main/res/values/donottranslate.xml
@@ -144,6 +144,12 @@
- bottom
+
+ - always
+ - disambiguate
+ - never
+
+
%1$s; %2$s; %3$s, %14$s %4$s, %5$s; %6$s, %7$s, %8$s, %9$s, %10$s; %11$s, %12$s, %13$s
diff --git a/app/src/main/res/values/string-arrays.xml b/app/src/main/res/values/string-arrays.xml
index c97fbb3d..2a2bd224 100644
--- a/app/src/main/res/values/string-arrays.xml
+++ b/app/src/main/res/values/string-arrays.xml
@@ -23,4 +23,10 @@
- @string/post_text_size_largest
+
+ - @string/pref_show_self_username_always
+ - @string/pref_show_self_username_disambiguate
+ - @string/pref_show_self_username_never
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 75824a9a..b999d5ae 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -293,6 +293,10 @@
Large
Largest
+ Always
+ When multiple accounts logged in
+ Never
+
New Mentions
Notifications about new mentions
New Followers
@@ -618,6 +622,7 @@
You don\'t have any scheduled posts.
There are no announcements.
Mastodon has a minimum scheduling interval of 5 minutes.
+ Show username in toolbars
Show link previews in timelines
Show confirmation dialog before boosting
Show confirmation dialog before favoriting