From 4e78a72af907ac32eccd87ebdbf6ec44a4336d36 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 30 Dec 2018 21:19:49 +0100 Subject: add ability to set nickname in profile --- .../de/pixart/messenger/ui/EnterNameActivity.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/java/de/pixart/messenger/ui/EnterNameActivity.java (limited to 'src/main/java/de/pixart/messenger/ui/EnterNameActivity.java') diff --git a/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java b/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java new file mode 100644 index 000000000..ac400b9f3 --- /dev/null +++ b/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java @@ -0,0 +1,80 @@ +package de.pixart.messenger.ui; + +import android.content.Intent; +import android.databinding.DataBindingUtil; +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import java.util.concurrent.atomic.AtomicBoolean; +import de.pixart.messenger.R; +import de.pixart.messenger.databinding.ActivityEnterNameBinding; +import de.pixart.messenger.entities.Account; +import de.pixart.messenger.services.XmppConnectionService; +import de.pixart.messenger.utils.AccountUtils; + +public class EnterNameActivity extends XmppActivity implements XmppConnectionService.OnAccountUpdate { + + private ActivityEnterNameBinding binding; + + private Account account; + + private AtomicBoolean setNick = new AtomicBoolean(false); + + @Override + protected void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.binding = DataBindingUtil.setContentView(this, R.layout.activity_enter_name); + setSupportActionBar((Toolbar) this.binding.toolbar); + this.binding.next.setOnClickListener(this::next); + this.setNick.set(savedInstanceState != null && savedInstanceState.getBoolean("set_nick",false)); + } + + private void next(View view) { + if (account != null) { + + String name = this.binding.name.getText().toString().trim(); + + account.setDisplayName(name); + + xmppConnectionService.publishDisplayName(account); + + Intent intent = new Intent(this, PublishProfilePictureActivity.class); + intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); + intent.putExtra("setup", true); + startActivity(intent); + } + finish(); + } + + @Override + public void onSaveInstanceState(Bundle savedInstanceState) { + savedInstanceState.putBoolean("set_nick", this.setNick.get()); + super.onSaveInstanceState(savedInstanceState); + } + + @Override + protected void refreshUiReal() { + checkSuggestPreviousNick(); + } + + @Override + void onBackendConnected() { + this.account = AccountUtils.getFirst(xmppConnectionService); + checkSuggestPreviousNick(); + } + + private void checkSuggestPreviousNick() { + String displayName = this.account == null ? null : this.account.getDisplayName(); + if (displayName != null) { + if (setNick.compareAndSet(false, true) && this.binding.name.getText().length() == 0) { + this.binding.name.getText().append(displayName); + } + } + } + + @Override + public void onAccountUpdate() { + refreshUi(); + } +} \ No newline at end of file -- cgit v1.2.3