collapse/expand context menu buttons.
This commit is contained in:
parent
3ef4e1adce
commit
0dd796f724
|
@ -46,6 +46,38 @@ internal class DlgContextMenu(
|
||||||
|
|
||||||
private val dialog : Dialog
|
private val dialog : Dialog
|
||||||
|
|
||||||
|
private val viewRoot = activity.layoutInflater.inflate(R.layout.dlg_context_menu, null, false)
|
||||||
|
|
||||||
|
private val btnCrossAccountActionsForStatus : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnCrossAccountActionsForStatus)
|
||||||
|
private val llCrossAccountActionsForStatus : View =
|
||||||
|
viewRoot.findViewById(R.id.llCrossAccountActionsForStatus)
|
||||||
|
|
||||||
|
private val btnCrossAccountActionsForAccount : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnCrossAccountActionsForAccount)
|
||||||
|
private val llCrossAccountActionsForAccount : View =
|
||||||
|
viewRoot.findViewById(R.id.llCrossAccountActionsForAccount)
|
||||||
|
|
||||||
|
private val btnAroundThisToot : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnAroundThisToot)
|
||||||
|
private val llAroundThisToot : View =
|
||||||
|
viewRoot.findViewById(R.id.llAroundThisToot)
|
||||||
|
|
||||||
|
private val btnYourToot : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnYourToot)
|
||||||
|
private val llYourToot : View =
|
||||||
|
viewRoot.findViewById(R.id.llYourToot)
|
||||||
|
|
||||||
|
private val btnStatusExtraAction : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnStatusExtraAction)
|
||||||
|
private val llStatusExtraAction : View =
|
||||||
|
viewRoot.findViewById(R.id.llStatusExtraAction)
|
||||||
|
|
||||||
|
private val btnAccountExtraAction : Button =
|
||||||
|
viewRoot.findViewById(R.id.btnAccountExtraAction)
|
||||||
|
private val llAccountExtraAction : View =
|
||||||
|
viewRoot.findViewById(R.id.llAccountExtraAction)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
this.access_info = column.access_info
|
this.access_info = column.access_info
|
||||||
|
|
||||||
|
@ -60,7 +92,6 @@ internal class DlgContextMenu(
|
||||||
else -> UserRelation.load(access_info.db_id, who.id)
|
else -> UserRelation.load(access_info.db_id, who.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
val viewRoot = activity.layoutInflater.inflate(R.layout.dlg_context_menu, null, false)
|
|
||||||
this.dialog = Dialog(activity)
|
this.dialog = Dialog(activity)
|
||||||
dialog.setContentView(viewRoot)
|
dialog.setContentView(viewRoot)
|
||||||
dialog.setCancelable(true)
|
dialog.setCancelable(true)
|
||||||
|
@ -131,64 +162,89 @@ internal class DlgContextMenu(
|
||||||
val llLinks : LinearLayout = viewRoot.findViewById(R.id.llLinks)
|
val llLinks : LinearLayout = viewRoot.findViewById(R.id.llLinks)
|
||||||
|
|
||||||
val btnNotificationFrom : Button = viewRoot.findViewById(R.id.btnNotificationFrom)
|
val btnNotificationFrom : Button = viewRoot.findViewById(R.id.btnNotificationFrom)
|
||||||
|
val btnProfilePin = viewRoot.findViewById<View>(R.id.btnProfilePin)
|
||||||
|
val btnProfileUnpin = viewRoot.findViewById<View>(R.id.btnProfileUnpin)
|
||||||
|
val btnBoostedBy = viewRoot.findViewById<View>(R.id.btnBoostedBy)
|
||||||
|
val btnFavouritedBy = viewRoot.findViewById<View>(R.id.btnFavouritedBy)
|
||||||
|
|
||||||
btnNotificationFrom.setOnClickListener(this)
|
|
||||||
|
|
||||||
btnAroundAccountTL.setOnClickListener(this)
|
arrayOf(
|
||||||
btnAroundLTL.setOnClickListener(this)
|
btnNotificationFrom,
|
||||||
btnAroundFTL.setOnClickListener(this)
|
btnAroundAccountTL,
|
||||||
|
btnAroundLTL,
|
||||||
|
btnAroundFTL,
|
||||||
|
btnStatusWebPage,
|
||||||
|
btnText,
|
||||||
|
btnFavouriteAnotherAccount,
|
||||||
|
btnBoostAnotherAccount,
|
||||||
|
btnReactionAnotherAccount,
|
||||||
|
btnReplyAnotherAccount,
|
||||||
|
btnQuotedRenote,
|
||||||
|
btnReportStatus,
|
||||||
|
btnReportUser,
|
||||||
|
btnMuteApp,
|
||||||
|
btnDelete,
|
||||||
|
btnRedraft,
|
||||||
|
btnFollow,
|
||||||
|
btnMute,
|
||||||
|
btnBlock,
|
||||||
|
btnProfile,
|
||||||
|
btnSendMessage,
|
||||||
|
btnAccountWebPage,
|
||||||
|
btnFollowRequestOK,
|
||||||
|
btnFollowRequestNG,
|
||||||
|
btnDeleteSuggestion,
|
||||||
|
btnFollowFromAnotherAccount,
|
||||||
|
btnSendMessageFromAnotherAccount,
|
||||||
|
btnOpenProfileFromAnotherAccount,
|
||||||
|
btnOpenTimeline,
|
||||||
|
btnConversationAnotherAccount,
|
||||||
|
btnAvatarImage,
|
||||||
|
btnNotificationDelete,
|
||||||
|
btnConversationMute,
|
||||||
|
btnHideBoost,
|
||||||
|
btnShowBoost,
|
||||||
|
btnHideFavourite,
|
||||||
|
btnShowFavourite,
|
||||||
|
btnListMemberAddRemove,
|
||||||
|
btnInstanceInformation,
|
||||||
|
btnProfileDirectory,
|
||||||
|
btnDomainBlock,
|
||||||
|
btnEndorse,
|
||||||
|
btnCopyAccountId,
|
||||||
|
btnOpenAccountInAdminWebUi,
|
||||||
|
btnOpenInstanceInAdminWebUi,
|
||||||
|
btnBoostWithVisibility,
|
||||||
|
btnProfilePin,
|
||||||
|
btnProfileUnpin,
|
||||||
|
btnBoostedBy,
|
||||||
|
btnFavouritedBy,
|
||||||
|
|
||||||
|
btnCrossAccountActionsForStatus,
|
||||||
|
btnCrossAccountActionsForAccount,
|
||||||
|
btnAroundThisToot,
|
||||||
|
btnYourToot,
|
||||||
|
btnStatusExtraAction,
|
||||||
|
btnAccountExtraAction,
|
||||||
|
|
||||||
|
viewRoot.findViewById<View>(R.id.btnQuoteUrlStatus),
|
||||||
|
viewRoot.findViewById<View>(R.id.btnTranslate),
|
||||||
|
viewRoot.findViewById<View>(R.id.btnQuoteUrlAccount),
|
||||||
|
viewRoot.findViewById<View>(R.id.btnShareUrlStatus),
|
||||||
|
viewRoot.findViewById<View>(R.id.btnShareUrlAccount),
|
||||||
|
viewRoot.findViewById<View>(R.id.btnQuoteName)
|
||||||
|
|
||||||
btnStatusWebPage.setOnClickListener(this)
|
).forEach {
|
||||||
btnText.setOnClickListener(this)
|
it.setOnClickListener(this@DlgContextMenu)
|
||||||
btnFavouriteAnotherAccount.setOnClickListener(this)
|
}
|
||||||
btnBoostAnotherAccount.setOnClickListener(this)
|
|
||||||
btnReactionAnotherAccount.setOnClickListener(this)
|
|
||||||
btnReplyAnotherAccount.setOnClickListener(this)
|
|
||||||
btnQuotedRenote.setOnClickListener(this)
|
|
||||||
btnReportStatus.setOnClickListener(this)
|
|
||||||
btnReportUser.setOnClickListener(this)
|
|
||||||
btnMuteApp.setOnClickListener(this)
|
|
||||||
btnDelete.setOnClickListener(this)
|
|
||||||
btnRedraft.setOnClickListener(this)
|
|
||||||
btnFollow.setOnClickListener(this)
|
|
||||||
btnMute.setOnClickListener(this)
|
|
||||||
btnBlock.setOnClickListener(this)
|
|
||||||
btnFollow.setOnLongClickListener(this)
|
|
||||||
btnProfile.setOnClickListener(this)
|
|
||||||
btnSendMessage.setOnClickListener(this)
|
|
||||||
btnAccountWebPage.setOnClickListener(this)
|
|
||||||
btnFollowRequestOK.setOnClickListener(this)
|
|
||||||
btnFollowRequestNG.setOnClickListener(this)
|
|
||||||
btnDeleteSuggestion.setOnClickListener(this)
|
|
||||||
btnFollowFromAnotherAccount.setOnClickListener(this)
|
|
||||||
btnSendMessageFromAnotherAccount.setOnClickListener(this)
|
|
||||||
btnOpenProfileFromAnotherAccount.setOnClickListener(this)
|
|
||||||
btnOpenTimeline.setOnClickListener(this)
|
|
||||||
btnConversationAnotherAccount.setOnClickListener(this)
|
|
||||||
btnAvatarImage.setOnClickListener(this)
|
|
||||||
btnNotificationDelete.setOnClickListener(this)
|
|
||||||
btnConversationMute.setOnClickListener(this)
|
|
||||||
btnHideBoost.setOnClickListener(this)
|
|
||||||
btnShowBoost.setOnClickListener(this)
|
|
||||||
btnHideFavourite.setOnClickListener(this)
|
|
||||||
btnShowFavourite.setOnClickListener(this)
|
|
||||||
btnListMemberAddRemove.setOnClickListener(this)
|
|
||||||
btnInstanceInformation.setOnClickListener(this)
|
|
||||||
btnProfileDirectory.setOnClickListener(this)
|
|
||||||
btnDomainBlock.setOnClickListener(this)
|
|
||||||
btnEndorse.setOnClickListener(this)
|
|
||||||
btnCopyAccountId.setOnClickListener(this)
|
|
||||||
btnOpenAccountInAdminWebUi.setOnClickListener(this)
|
|
||||||
btnOpenInstanceInAdminWebUi.setOnClickListener(this)
|
|
||||||
btnBoostWithVisibility.setOnClickListener(this)
|
|
||||||
|
|
||||||
viewRoot.findViewById<View>(R.id.btnQuoteUrlStatus).setOnClickListener(this)
|
arrayOf(
|
||||||
viewRoot.findViewById<View>(R.id.btnTranslate).setOnClickListener(this)
|
btnFollow,
|
||||||
|
btnProfile,
|
||||||
viewRoot.findViewById<View>(R.id.btnQuoteUrlAccount).setOnClickListener(this)
|
btnSendMessage
|
||||||
viewRoot.findViewById<View>(R.id.btnShareUrlStatus).setOnClickListener(this)
|
).forEach {
|
||||||
viewRoot.findViewById<View>(R.id.btnShareUrlAccount).setOnClickListener(this)
|
it.setOnLongClickListener(this)
|
||||||
viewRoot.findViewById<View>(R.id.btnQuoteName).setOnClickListener(this)
|
}
|
||||||
|
|
||||||
val account_list = SavedAccount.loadAccountList(activity)
|
val account_list = SavedAccount.loadAccountList(activity)
|
||||||
// final ArrayList< SavedAccount > account_list_non_pseudo_same_instance = new ArrayList<>();
|
// final ArrayList< SavedAccount > account_list_non_pseudo_same_instance = new ArrayList<>();
|
||||||
|
@ -252,8 +308,9 @@ internal class DlgContextMenu(
|
||||||
}
|
}
|
||||||
vg(llLinks, llLinks.childCount > 1)
|
vg(llLinks, llLinks.childCount > 1)
|
||||||
|
|
||||||
btnDelete.visibility = if(status_by_me) View.VISIBLE else View.GONE
|
vg(btnYourToot, status_by_me)
|
||||||
btnRedraft.visibility = if(status_by_me) View.VISIBLE else View.GONE
|
|
||||||
|
|
||||||
|
|
||||||
vg(btnBoostWithVisibility, ! access_info.isPseudo && ! access_info.isMisskey)
|
vg(btnBoostWithVisibility, ! access_info.isPseudo && ! access_info.isMisskey)
|
||||||
|
|
||||||
|
@ -267,41 +324,24 @@ internal class DlgContextMenu(
|
||||||
btnMuteApp.text = activity.getString(R.string.mute_app_of, application_name)
|
btnMuteApp.text = activity.getString(R.string.mute_app_of, application_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
val btnBoostedBy = viewRoot.findViewById<View>(R.id.btnBoostedBy)
|
|
||||||
val btnFavouritedBy = viewRoot.findViewById<View>(R.id.btnFavouritedBy)
|
|
||||||
btnBoostedBy.setOnClickListener(this)
|
|
||||||
btnFavouritedBy.setOnClickListener(this)
|
|
||||||
val isNA = access_info.isNA
|
|
||||||
btnBoostedBy.visibility = if(isNA) View.GONE else View.VISIBLE
|
|
||||||
btnFavouritedBy.visibility = if(isNA) View.GONE else View.VISIBLE
|
|
||||||
|
|
||||||
val btnProfilePin = viewRoot.findViewById<View>(R.id.btnProfilePin)
|
|
||||||
val btnProfileUnpin = viewRoot.findViewById<View>(R.id.btnProfileUnpin)
|
|
||||||
btnProfilePin.setOnClickListener(this)
|
|
||||||
btnProfileUnpin.setOnClickListener(this)
|
|
||||||
val canPin = status.canPin(access_info)
|
val canPin = status.canPin(access_info)
|
||||||
btnProfileUnpin.visibility = if(canPin && status.pinned) View.VISIBLE else View.GONE
|
vg(btnProfileUnpin, canPin && status.pinned)
|
||||||
btnProfilePin.visibility = if(canPin && ! status.pinned) View.VISIBLE else View.GONE
|
vg(btnProfilePin, canPin && ! status.pinned)
|
||||||
}
|
}
|
||||||
|
|
||||||
var bShowConversationMute = false
|
val bShowConversationMute = when {
|
||||||
if(status != null) {
|
status == null -> false
|
||||||
if(access_info.isMe(status.account)) {
|
access_info.isMe(status.account) -> true
|
||||||
bShowConversationMute = true
|
notification != null && TootNotification.TYPE_MENTION == notification.type -> true
|
||||||
} else if(notification != null && TootNotification.TYPE_MENTION == notification.type) {
|
else -> false
|
||||||
bShowConversationMute = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(! bShowConversationMute) {
|
if(vg(btnConversationMute, bShowConversationMute)) {
|
||||||
btnConversationMute.visibility = View.GONE
|
|
||||||
} else {
|
|
||||||
val muted = status?.muted ?: false
|
val muted = status?.muted ?: false
|
||||||
btnConversationMute.setText(if(muted) R.string.unmute_this_conversation else R.string.mute_this_conversation)
|
btnConversationMute.setText(if(muted) R.string.unmute_this_conversation else R.string.mute_this_conversation)
|
||||||
}
|
}
|
||||||
|
|
||||||
llNotification.visibility = if(notification == null) View.GONE else View.VISIBLE
|
vg(llNotification, notification != null)
|
||||||
|
|
||||||
|
|
||||||
fun showRelation(relation : UserRelation) {
|
fun showRelation(relation : UserRelation) {
|
||||||
// 被フォロー状態
|
// 被フォロー状態
|
||||||
|
@ -352,7 +392,7 @@ internal class DlgContextMenu(
|
||||||
}
|
}
|
||||||
|
|
||||||
if(access_info.isPseudo) {
|
if(access_info.isPseudo) {
|
||||||
// 議事アカミュートができたのでアカウントアクションを表示する
|
// 疑似アカミュートができたのでアカウントアクションを表示する
|
||||||
showRelation(UserRelation())
|
showRelation(UserRelation())
|
||||||
llAccountActionBar.visibility = View.VISIBLE
|
llAccountActionBar.visibility = View.VISIBLE
|
||||||
vg(ivFollowedBy, false)
|
vg(ivFollowedBy, false)
|
||||||
|
@ -360,17 +400,26 @@ internal class DlgContextMenu(
|
||||||
btnFollow.imageTintList =
|
btnFollow.imageTintList =
|
||||||
ColorStateList.valueOf(getAttributeColor(activity, R.attr.colorImageButton))
|
ColorStateList.valueOf(getAttributeColor(activity, R.attr.colorImageButton))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
btnNotificationFrom.visibility = View.GONE
|
btnNotificationFrom.visibility = View.GONE
|
||||||
} else {
|
} else {
|
||||||
showRelation(relation)
|
showRelation(relation)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val who_host = getUserHost()
|
||||||
|
val llInstance : View = viewRoot.findViewById(R.id.llInstance)
|
||||||
|
if(vg(llInstance, ! (who_host.isEmpty() || who_host == "?"))) {
|
||||||
|
val tvInstanceActions : TextView = viewRoot.findViewById(R.id.tvInstanceActions)
|
||||||
|
tvInstanceActions.text = activity.getString(R.string.instance_actions_for, who_host)
|
||||||
|
|
||||||
|
// 疑似アカウントではドメインブロックできない
|
||||||
|
// 自ドメインはブロックできない
|
||||||
|
vg(
|
||||||
|
btnDomainBlock,
|
||||||
|
! (access_info.isPseudo || access_info.host.equals(who_host, ignoreCase = true))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if(who == null) {
|
if(who == null) {
|
||||||
btnInstanceInformation.visibility = View.GONE
|
|
||||||
btnProfileDirectory.visibility = View.GONE
|
|
||||||
btnDomainBlock.visibility = View.GONE
|
|
||||||
btnCopyAccountId.visibility = View.GONE
|
btnCopyAccountId.visibility = View.GONE
|
||||||
btnOpenAccountInAdminWebUi.visibility = View.GONE
|
btnOpenAccountInAdminWebUi.visibility = View.GONE
|
||||||
btnOpenInstanceInAdminWebUi.visibility = View.GONE
|
btnOpenInstanceInAdminWebUi.visibility = View.GONE
|
||||||
|
@ -378,23 +427,6 @@ internal class DlgContextMenu(
|
||||||
btnReportUser.visibility = View.GONE
|
btnReportUser.visibility = View.GONE
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
val who_host = getUserHost()
|
|
||||||
btnInstanceInformation.visibility = View.VISIBLE
|
|
||||||
btnInstanceInformation.text =
|
|
||||||
activity.getString(R.string.instance_information_of, who_host)
|
|
||||||
|
|
||||||
btnProfileDirectory.visibility = View.VISIBLE
|
|
||||||
btnProfileDirectory.text =
|
|
||||||
activity.getString(R.string.profile_directory_of, who_host)
|
|
||||||
|
|
||||||
if(access_info.isPseudo || access_info.host.equals(who_host, ignoreCase = true)) {
|
|
||||||
// 疑似アカウントではドメインブロックできない
|
|
||||||
// 自ドメインはブロックできない
|
|
||||||
btnDomainBlock.visibility = View.GONE
|
|
||||||
} else {
|
|
||||||
btnDomainBlock.visibility = View.VISIBLE
|
|
||||||
btnDomainBlock.text = activity.getString(R.string.block_domain_that, who_host)
|
|
||||||
}
|
|
||||||
|
|
||||||
btnCopyAccountId.visibility = View.VISIBLE
|
btnCopyAccountId.visibility = View.VISIBLE
|
||||||
btnCopyAccountId.text = activity.getString(R.string.copy_account_id, who.id.toString())
|
btnCopyAccountId.text = activity.getString(R.string.copy_account_id, who.id.toString())
|
||||||
|
@ -469,14 +501,16 @@ internal class DlgContextMenu(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val who_host = who?.host
|
|
||||||
if(who_host == null || who_host.isEmpty() || who_host == "?") {
|
|
||||||
btnOpenTimeline.visibility = View.GONE
|
|
||||||
} else {
|
|
||||||
btnOpenTimeline.text = activity.getString(R.string.open_local_timeline_for, who_host)
|
|
||||||
}
|
|
||||||
|
|
||||||
btnListMemberAddRemove.visibility = View.VISIBLE
|
btnListMemberAddRemove.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
updateGroup(btnCrossAccountActionsForStatus, llCrossAccountActionsForStatus)
|
||||||
|
updateGroup(btnCrossAccountActionsForAccount, llCrossAccountActionsForAccount)
|
||||||
|
updateGroup(btnAroundThisToot, llAroundThisToot)
|
||||||
|
updateGroup(btnYourToot, llYourToot)
|
||||||
|
updateGroup(btnStatusExtraAction, llStatusExtraAction)
|
||||||
|
updateGroup(btnAccountExtraAction, llAccountExtraAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun show() {
|
fun show() {
|
||||||
|
@ -498,7 +532,69 @@ internal class DlgContextMenu(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun updateGroup(btn : Button, group : View, toggle : Boolean = false) {
|
||||||
|
if(btn.visibility != View.VISIBLE) {
|
||||||
|
vg(group, false)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(toggle) vg(group, group.visibility != View.VISIBLE)
|
||||||
|
|
||||||
|
val iconId = if(group.visibility == View.VISIBLE) {
|
||||||
|
R.drawable.ic_arrow_drop_up
|
||||||
|
} else {
|
||||||
|
R.drawable.ic_arrow_drop_down
|
||||||
|
}
|
||||||
|
|
||||||
|
val iconColor = getAttributeColor(activity, R.attr.colorTimeSmall)
|
||||||
|
val drawable = createColoredDrawable(activity, iconId, iconColor, 1f)
|
||||||
|
btn.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onClick(v : View) {
|
override fun onClick(v : View) {
|
||||||
|
|
||||||
|
// ダイアログを閉じない操作
|
||||||
|
when(v.id) {
|
||||||
|
R.id.btnCrossAccountActionsForStatus ->
|
||||||
|
return updateGroup(
|
||||||
|
btnCrossAccountActionsForStatus,
|
||||||
|
llCrossAccountActionsForStatus,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.btnCrossAccountActionsForAccount ->
|
||||||
|
return updateGroup(
|
||||||
|
btnCrossAccountActionsForAccount,
|
||||||
|
llCrossAccountActionsForAccount,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
R.id.btnAroundThisToot ->
|
||||||
|
return updateGroup(
|
||||||
|
btnAroundThisToot,
|
||||||
|
llAroundThisToot,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
R.id.btnYourToot ->
|
||||||
|
return updateGroup(
|
||||||
|
btnYourToot,
|
||||||
|
llYourToot,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
R.id.btnStatusExtraAction ->
|
||||||
|
return updateGroup(
|
||||||
|
btnStatusExtraAction,
|
||||||
|
llStatusExtraAction,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
R.id.btnAccountExtraAction ->
|
||||||
|
return updateGroup(
|
||||||
|
btnAccountExtraAction,
|
||||||
|
llAccountExtraAction,
|
||||||
|
toggle = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
dialog.dismissSafe()
|
dialog.dismissSafe()
|
||||||
|
|
||||||
val pos = activity.nextPosition(column)
|
val pos = activity.nextPosition(column)
|
||||||
|
@ -508,13 +604,13 @@ internal class DlgContextMenu(
|
||||||
|
|
||||||
if(whoRef != null && who != null) {
|
if(whoRef != null && who != null) {
|
||||||
when(v.id) {
|
when(v.id) {
|
||||||
|
|
||||||
R.id.btnReportStatus -> if(status is TootStatus) {
|
R.id.btnReportStatus -> if(status is TootStatus) {
|
||||||
Action_User.reportForm(activity, access_info, who, status)
|
Action_User.reportForm(activity, access_info, who, status)
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.btnReportUser ->
|
R.id.btnReportUser ->
|
||||||
Action_User.reportForm(activity, access_info, who )
|
Action_User.reportForm(activity, access_info, who)
|
||||||
|
|
||||||
R.id.btnFollow ->
|
R.id.btnFollow ->
|
||||||
when {
|
when {
|
||||||
|
@ -696,6 +792,7 @@ internal class DlgContextMenu(
|
||||||
|
|
||||||
R.id.btnOpenTimeline -> {
|
R.id.btnOpenTimeline -> {
|
||||||
val who_host = who.host
|
val who_host = who.host
|
||||||
|
@Suppress("ControlFlowWithEmptyBody")
|
||||||
if(who_host.isEmpty() || who_host == "?") {
|
if(who_host.isEmpty() || who_host == "?") {
|
||||||
// 何もしない
|
// 何もしない
|
||||||
} else {
|
} else {
|
||||||
|
@ -834,7 +931,7 @@ internal class DlgContextMenu(
|
||||||
AlertDialog.Builder(activity)
|
AlertDialog.Builder(activity)
|
||||||
.setTitle(R.string.choose_visibility)
|
.setTitle(R.string.choose_visibility)
|
||||||
.setItems(caption_list) { _, which ->
|
.setItems(caption_list) { _, which ->
|
||||||
if(which in 0 until list.size) {
|
if(which in list.indices) {
|
||||||
Action_Toot.boost(
|
Action_Toot.boost(
|
||||||
activity,
|
activity,
|
||||||
access_info,
|
access_info,
|
||||||
|
@ -1002,6 +1099,23 @@ internal class DlgContextMenu(
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.btnProfile -> {
|
||||||
|
dialog.dismissSafe()
|
||||||
|
Action_User.profileFromAnotherAccount(
|
||||||
|
activity,
|
||||||
|
activity.nextPosition(column),
|
||||||
|
access_info,
|
||||||
|
who
|
||||||
|
)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btnSendMessage -> {
|
||||||
|
dialog.dismissSafe()
|
||||||
|
Action_User.mentionFromAnotherAccount(activity, access_info, who)
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -1082,10 +1082,10 @@ class PollingWorker private constructor(contextArg : Context) {
|
||||||
// 未確認アカウントはチェック対象外
|
// 未確認アカウントはチェック対象外
|
||||||
if(! account.isConfirmed) return
|
if(! account.isConfirmed) return
|
||||||
|
|
||||||
|
client.account = account
|
||||||
val (_, instance) = TootInstance.get(client)
|
val (_, instance) = TootInstance.get(client)
|
||||||
if(instance == null) return
|
if(instance == null) return
|
||||||
|
|
||||||
client.account = account
|
|
||||||
|
|
||||||
val wps = PushSubscriptionHelper(context, account)
|
val wps = PushSubscriptionHelper(context, account)
|
||||||
if(wps.flags != 0) {
|
if(wps.flags != 0) {
|
||||||
|
|
|
@ -277,7 +277,7 @@ class TootInstance(parser : TootParser, src : JSONObject) {
|
||||||
try {
|
try {
|
||||||
client.account = account
|
client.account = account
|
||||||
if(host != null) client.instance = host
|
if(host != null) client.instance = host
|
||||||
val instanceName = client.instance !!.toLowerCase(Locale.JAPAN)
|
val instanceName = client.instance !! .toLowerCase(Locale.JAPAN)
|
||||||
|
|
||||||
// ホスト名ごとに用意したオブジェクトで同期する
|
// ホスト名ごとに用意したオブジェクトで同期する
|
||||||
val cacheEntry = getCacheEntry(instanceName)
|
val cacheEntry = getCacheEntry(instanceName)
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M7,10l5,5 5,-5z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M7,14l5,-5 5,5z"/>
|
||||||
|
</vector>
|
File diff suppressed because it is too large
Load Diff
|
@ -946,5 +946,12 @@
|
||||||
<string name="warn_hashtag_ascii_and_non_ascii">ハッシュタグがASCIIと非ASCIIの文字の両方を含む時に警告する</string>
|
<string name="warn_hashtag_ascii_and_non_ascii">ハッシュタグがASCIIと非ASCIIの文字の両方を含む時に警告する</string>
|
||||||
<string name="enable_connect_to_pixelfed_server">Pixelfedサーバへの接続を有効にする(試験的実装。問題が多い)</string>
|
<string name="enable_connect_to_pixelfed_server">Pixelfedサーバへの接続を有効にする(試験的実装。問題が多い)</string>
|
||||||
<string name="reason_create_account">サーバーにアカウントを作成したい理由 (optional)</string>
|
<string name="reason_create_account">サーバーにアカウントを作成したい理由 (optional)</string>
|
||||||
|
<string name="cross_account_actions">別アカ操作</string>
|
||||||
|
<string name="account_timeline">アカウントタイムライン</string>
|
||||||
|
<string name="around_this_toot">このトゥート付近の</string>
|
||||||
|
<string name="your_toot">あなたの投稿</string>
|
||||||
|
<string name="extra_actions">追加のアクション</string>
|
||||||
|
<string name="block_domain">ドメイン全体をブロック</string>
|
||||||
|
<string name="instance_actions_for">\"%1$s\" サーバへのアクション</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -674,7 +674,7 @@
|
||||||
<string name="none_or_hidden_following">Not following anyone, or hidden by setting.</string>
|
<string name="none_or_hidden_following">Not following anyone, or hidden by setting.</string>
|
||||||
<string name="none_or_hidden_followers">No followers, or hidden by setting.</string>
|
<string name="none_or_hidden_followers">No followers, or hidden by setting.</string>
|
||||||
<string name="yourself_can_see_your_network">Even if you choose to hide social graphs, yourself can see it.</string>
|
<string name="yourself_can_see_your_network">Even if you choose to hide social graphs, yourself can see it.</string>
|
||||||
<string name="follow_follower_list_may_restrict">If the remote user chooses to hide the social graph, only the followings/followers on this server will be displayed.</string>
|
<string name="follow_follower_list_may_restrict">If the remote user choose to hide the social graph, only the followings/followers on this server will be displayed.</string>
|
||||||
<string name="trend_tag">Trending tags</string>
|
<string name="trend_tag">Trending tags</string>
|
||||||
<string name="people_talking">%1$d(%2$d) people talking</string>
|
<string name="people_talking">%1$d(%2$d) people talking</string>
|
||||||
<string name="trend_tag_desc">The numbers indicate \'daily(weekly)\'. Daily numbers are reset at %1$s.</string>
|
<string name="trend_tag_desc">The numbers indicate \'daily(weekly)\'. Daily numbers are reset at %1$s.</string>
|
||||||
|
@ -941,4 +941,11 @@
|
||||||
<string name="warn_hashtag_ascii_and_non_ascii">Warn if hashtag contains both of ASCII and non-ASCII characters</string>
|
<string name="warn_hashtag_ascii_and_non_ascii">Warn if hashtag contains both of ASCII and non-ASCII characters</string>
|
||||||
<string name="enable_connect_to_pixelfed_server">Enable connect to Pixelfed server (experimental. many problems)</string>
|
<string name="enable_connect_to_pixelfed_server">Enable connect to Pixelfed server (experimental. many problems)</string>
|
||||||
<string name="reason_create_account">Reason why you want to create an account on this server (optional)</string>
|
<string name="reason_create_account">Reason why you want to create an account on this server (optional)</string>
|
||||||
|
<string name="cross_account_actions">Cross-account actions</string>
|
||||||
|
<string name="account_timeline">Account timeline</string>
|
||||||
|
<string name="around_this_toot">Around this toot</string>
|
||||||
|
<string name="your_toot">Your toot</string>
|
||||||
|
<string name="extra_actions">Extra actions</string>
|
||||||
|
<string name="block_domain">Block whole domain</string>
|
||||||
|
<string name="instance_actions_for">Actions for the server \"%1$s\"</string>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue