package com.boardgamegeek.ui;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import com.boardgamegeek.R;
import com.boardgamegeek.events.BuddySelectedEvent;
import com.boardgamegeek.tasks.AddUsernameToPlayerTask;
import com.boardgamegeek.tasks.BuddyNicknameUpdateTask;
import com.boardgamegeek.tasks.RenamePlayerTask;
import com.boardgamegeek.ui.dialog.EditTextDialogFragment;
import com.boardgamegeek.ui.dialog.EditTextDialogFragment.EditTextDialogListener;
import com.boardgamegeek.util.ActivityUtils;
import com.boardgamegeek.util.DialogUtils;
import com.boardgamegeek.util.TaskUtils;
import com.boardgamegeek.util.UIUtils;
import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.ContentViewEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import hugo.weaving.DebugLog;
public class BuddyActivity extends SimpleSinglePaneActivity {
private String name;
private String username;
@Override
@DebugLog
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
name = getIntent().getStringExtra(ActivityUtils.KEY_PLAYER_NAME);
username = getIntent().getStringExtra(ActivityUtils.KEY_BUDDY_NAME);
setSubtitle();
EventBus.getDefault().removeStickyEvent(BuddySelectedEvent.class);
if (savedInstanceState == null) {
Answers.getInstance().logContentView(new ContentViewEvent()
.putContentType("Buddy")
.putContentId(username)
.putContentName(name));
}
}
@Override
@DebugLog
protected Fragment onCreatePane(Intent intent) {
return new BuddyFragment();
}
@Override
protected int getOptionsMenuId() {
return R.menu.buddy;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
UIUtils.showMenuItem(menu, R.id.add_username, TextUtils.isEmpty(username));
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.add_username) {
EditTextDialogFragment editTextDialogFragment = EditTextDialogFragment.newUsernameInstance(R.string.title_add_username, null, new EditTextDialogListener() {
@Override
public void onFinishEditDialog(String inputText) {
if (!TextUtils.isEmpty(inputText)) {
AddUsernameToPlayerTask task = new AddUsernameToPlayerTask(BuddyActivity.this, name, inputText);
TaskUtils.executeAsyncTask(task);
}
}
});
DialogUtils.showFragment(this, editTextDialogFragment, "add_username");
return true;
}
return false;
}
@SuppressWarnings("unused")
@DebugLog
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(BuddyNicknameUpdateTask.Event event) {
showSnackbar(event.getMessage());
}
@SuppressWarnings("unused")
@DebugLog
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(AddUsernameToPlayerTask.Event event) {
if (event.isSuccessful()) {
username = event.getUsername();
getIntent().putExtra(ActivityUtils.KEY_BUDDY_NAME, username);
setSubtitle();
recreateFragment();
}
showSnackbar(event.getMessage());
}
@SuppressWarnings("unused")
@DebugLog
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(@NonNull RenamePlayerTask.Event event) {
name = event.getPlayerName();
getIntent().putExtra(ActivityUtils.KEY_PLAYER_NAME, name);
setSubtitle();
recreateFragment();
showSnackbar(event.getMessage());
}
@DebugLog
private void setSubtitle() {
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
String subtitle;
if (TextUtils.isEmpty(username)) {
subtitle = name;
} else {
subtitle = username;
}
actionBar.setSubtitle(subtitle);
}
}
private void showSnackbar(String message) {
if (!TextUtils.isEmpty(message) && rootContainer != null) {
Snackbar.make(rootContainer, message, Snackbar.LENGTH_LONG).show();
}
}
}