package com.xabber.android.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.xabber.android.R;
import com.xabber.android.data.Application;
import com.xabber.android.data.account.AccountItem;
import com.xabber.android.data.account.AccountManager;
import com.xabber.android.data.account.listeners.OnAccountChangedListener;
import com.xabber.android.data.entity.AccountJid;
import com.xabber.android.data.intent.AccountIntentBuilder;
import com.xabber.android.data.log.LogManager;
import com.xabber.android.ui.color.BarPainter;
import com.xabber.android.ui.dialog.AccountDeleteDialog;
import com.xabber.android.ui.dialog.OrbotInstallerDialog;
import com.xabber.android.ui.preferences.AccountEditorFragment;
import java.util.Collection;
public class AccountSettingsActivity extends ManagedActivity
implements AccountEditorFragment.AccountEditorFragmentInteractionListener, Toolbar.OnMenuItemClickListener,
OnAccountChangedListener {
private static final String LOG_TAG = AccountSettingsActivity.class.getSimpleName();
private AccountJid account;
private AccountItem accountItem;
private Toolbar toolbar;
private BarPainter barPainter;
private static AccountJid getAccount(Intent intent) {
return AccountIntentBuilder.getAccount(intent);
}
@NonNull
public static Intent createIntent(Context context, AccountJid account) {
return new AccountIntentBuilder(context, AccountSettingsActivity.class).setAccount(account).build();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account_settings);
account = getAccount(getIntent());
accountItem = AccountManager.getInstance().getAccount(this.account);
if (accountItem == null) {
LogManager.e(LOG_TAG, "Account item is null " + account);
finish();
return;
}
toolbar = (Toolbar) findViewById(R.id.toolbar_default);
toolbar.setNavigationIcon(R.drawable.ic_arrow_left_white_24dp);
toolbar.setTitle(R.string.account_connection_settings);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
toolbar.inflateMenu(R.menu.toolbar_account_connection_settings);
toolbar.setOnMenuItemClickListener(this);
barPainter = new BarPainter(this, toolbar);
barPainter.updateWithAccountName(account);
if (savedInstanceState == null) {
getFragmentManager()
.beginTransaction()
.add(R.id.account_settings_fragment, new AccountEditorFragment())
.commit();
}
}
@Override
protected void onResume() {
super.onResume();
Application.getInstance().addUIListener(OnAccountChangedListener.class, this);
}
@Override
protected void onPause() {
Application.getInstance().removeUIListener(OnAccountChangedListener.class, this);
super.onPause();
}
@Override
public AccountJid getAccount() {
return account;
}
@Override
public AccountItem getAccountItem() {
return accountItem;
}
@Override
public void showOrbotDialog() {
OrbotInstallerDialog.newInstance().show(getFragmentManager(), OrbotInstallerDialog.newInstance().getTag());
}
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.action_remove_account) {
AccountDeleteDialog.newInstance(account).show(getFragmentManager(), AccountDeleteDialog.class.getSimpleName());
return true;
}
return false;
}
@Override
public void onAccountsChanged(Collection<AccountJid> accounts) {
if (accounts.contains(account)) {
AccountItem accountItem = AccountManager.getInstance().getAccount(this.account);
if (accountItem == null) {
// in case if account was removed
finish();
}
}
}
}