Edit closed group activity layout refactoring.

This commit is contained in:
Anton Chekulaev
2020-08-14 19:26:56 +10:00
parent f7923cd8a4
commit 3e05a616ce
8 changed files with 176 additions and 85 deletions

View File

@@ -9,13 +9,12 @@ import android.support.v7.widget.LinearLayoutManager
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_create_closed_group.emptyStateContainer
import kotlinx.android.synthetic.main.activity_create_closed_group.mainContentContainer
import kotlinx.android.synthetic.main.activity_edit_closed_group.*
import kotlinx.android.synthetic.main.activity_edit_closed_group.ctnGroupNameSection
import kotlinx.android.synthetic.main.activity_edit_closed_group.txvGroupNameDisplay
import kotlinx.android.synthetic.main.activity_linked_devices.recyclerView
import network.loki.messenger.R
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
@@ -45,7 +44,11 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
private var nameHasChanged = false
private var isEditingGroupName = false
set(value) { field = value; handleIsEditingDisplayNameChanged() }
set(value) {
if (field == value) return
field = value
handleIsEditingDisplayNameChanged()
}
// region Lifecycle
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
@@ -54,14 +57,10 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
this.groupID = intent.getStringExtra(EXTRA_GROUP_ID)
this.originalName = DatabaseFactory.getGroupDatabase(this).getGroup(groupID).get().title
this.newGroupDisplayName = this.originalName
supportActionBar!!.title = resources.getString(R.string.activity_edit_closed_group_title)
txvGroupNameDisplay.text = originalName
ctnGroupNameSection.setOnClickListener { showEditDisplayNameUI() }
btnCancelGroupNameEdit.setOnClickListener { cancelEditingDisplayName() }
btnSaveGroupName.setOnClickListener { saveDisplayName() }
addMembersClosedGroupButton.setOnClickListener { onAddMembersClick() }
this.memberListAdapter = EditClosedGroupMembersAdapter(
@@ -72,6 +71,21 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
recyclerView.adapter = this.memberListAdapter
recyclerView.layoutManager = LinearLayoutManager(this)
lblGroupNameDisplay.text = this.originalName
cntGroupNameDisplay.setOnClickListener { isEditingGroupName = true }
btnCancelGroupNameEdit.setOnClickListener { isEditingGroupName = false }
btnSaveGroupNameEdit.setOnClickListener { saveDisplayName() }
edtGroupName.setImeActionLabel(getString(R.string.save), EditorInfo.IME_ACTION_DONE)
edtGroupName.setOnEditorActionListener { _, actionId, _ ->
when (actionId) {
EditorInfo.IME_ACTION_DONE -> {
saveDisplayName()
return@setOnEditorActionListener true
}
else -> return@setOnEditorActionListener false
}
}
// Setup member list loader.
LoaderManager.getInstance(this).initLoader(LOADER_ID_MEMBERS, null, object : LoaderManager.LoaderCallbacks<List<String>> {
override fun onCreateLoader(id: Int, bundle: Bundle?): Loader<List<String>> {
@@ -101,8 +115,6 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
// endregion
// region Updating
private fun updateMembers(members: Set<String>) {
this.members.clear()
this.members.addAll(members)
@@ -121,13 +133,6 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
return super.onOptionsItemSelected(item)
}
private fun showEditDisplayNameUI() {
isEditingGroupName = true
}
private fun cancelEditingDisplayName() {
isEditingGroupName = false
}
private fun onMemberClick(member: String) {
val bottomSheet = GroupEditingOptionsBottomSheet()
bottomSheet.onRemoveTapped = {
@@ -161,12 +166,12 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
}
private fun handleIsEditingDisplayNameChanged() {
btnCancelGroupNameEdit.visibility = if (isEditingGroupName) View.VISIBLE else View.GONE
btnSaveGroupName.visibility = if (isEditingGroupName) View.VISIBLE else View.GONE
txvGroupNameDisplay.visibility = if (isEditingGroupName) View.INVISIBLE else View.VISIBLE
edtGroupName.visibility = if (isEditingGroupName) View.VISIBLE else View.INVISIBLE
cntGroupNameEdit.visibility = if (isEditingGroupName) View.VISIBLE else View.INVISIBLE
cntGroupNameDisplay.visibility = if (isEditingGroupName) View.INVISIBLE else View.VISIBLE
val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
if (isEditingGroupName) {
edtGroupName.setText(newGroupDisplayName)
edtGroupName.selectAll()
edtGroupName.requestFocus()
inputMethodManager.showSoftInput(edtGroupName, 0)
} else {
@@ -186,7 +191,7 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
return Toast.makeText(this, R.string.activity_settings_display_name_too_long_error, Toast.LENGTH_SHORT).show()
}
newGroupDisplayName = groupDisplayName
txvGroupNameDisplay.text = groupDisplayName
lblGroupNameDisplay.text = groupDisplayName
nameHasChanged = true
isEditingGroupName = false
}

View File

@@ -78,7 +78,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
profilePictureView.update()
profilePictureView.setOnClickListener { showEditProfilePictureUI() }
ctnGroupNameSection.setOnClickListener { showEditDisplayNameUI() }
txvGroupNameDisplay.text = DatabaseFactory.getLokiUserDatabase(this).getDisplayName(hexEncodedPublicKey)
btnGroupNameDisplay.text = DatabaseFactory.getLokiUserDatabase(this).getDisplayName(hexEncodedPublicKey)
publicKeyTextView.text = hexEncodedPublicKey
copyButton.setOnClickListener { copyPublicKey() }
shareButton.setOnClickListener { sharePublicKey() }
@@ -132,7 +132,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
cancelButton.visibility = if (isEditingDisplayName) View.VISIBLE else View.GONE
showQRCodeButton.visibility = if (isEditingDisplayName) View.GONE else View.VISIBLE
saveButton.visibility = if (isEditingDisplayName) View.VISIBLE else View.GONE
txvGroupNameDisplay.visibility = if (isEditingDisplayName) View.INVISIBLE else View.VISIBLE
btnGroupNameDisplay.visibility = if (isEditingDisplayName) View.INVISIBLE else View.VISIBLE
displayNameEditText.visibility = if (isEditingDisplayName) View.VISIBLE else View.INVISIBLE
val titleTextViewLayoutParams = titleTextView.layoutParams as LinearLayout.LayoutParams
titleTextViewLayoutParams.leftMargin = if (isEditingDisplayName) toPx(16, resources) else 0
@@ -176,7 +176,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
}
all(promises).alwaysUi {
if (displayName != null) {
txvGroupNameDisplay.text = displayName
btnGroupNameDisplay.text = displayName
}
displayNameToBeUploaded = null
if (isUpdatingProfilePicture && profilePicture != null) {

View File

@@ -80,7 +80,7 @@ class ConversationView : LinearLayout {
profilePictureView.glide = glide
profilePictureView.update()
val senderDisplayName = if (thread.recipient.isLocalNumber) context.getString(R.string.note_to_self) else if (!thread.recipient.name.isNullOrEmpty()) thread.recipient.name else thread.recipient.address.toString()
txvGroupNameDisplay.text = senderDisplayName
btnGroupNameDisplay.text = senderDisplayName
timestampTextView.text = DateUtils.getBriefRelativeTimeSpanString(context, Locale.getDefault(), thread.date)
muteIndicatorImageView.visibility = if (thread.recipient.isMuted) VISIBLE else GONE
val rawSnippet = thread.getDisplayBody(context)

View File

@@ -30,7 +30,7 @@ class MentionCandidateView(context: Context, attrs: AttributeSet?, defStyleAttr:
}
private fun update() {
txvGroupNameDisplay.text = mentionCandidate.displayName
btnGroupNameDisplay.text = mentionCandidate.displayName
profilePictureView.publicKey = mentionCandidate.publicKey
profilePictureView.additionalPublicKey = null
profilePictureView.isRSSFeed = false