ui flow for first startup with no existing account
This commit is contained in:
parent
efba73ffd0
commit
76cfab03ec
|
@ -280,7 +280,10 @@ public class ConversationActivity extends XmppActivity {
|
|||
swapConversationFragment();
|
||||
}
|
||||
} else {
|
||||
if (conversationList.size() <= 0) {
|
||||
if (xmppConnectionService.getAccounts().size() == 0) {
|
||||
startActivity(new Intent(this, ManageAccountActivity.class));
|
||||
finish();
|
||||
} else if (conversationList.size() <= 0) {
|
||||
//add no history
|
||||
startActivity(new Intent(this, NewConversationActivity.class));
|
||||
finish();
|
||||
|
|
|
@ -6,6 +6,8 @@ import java.util.List;
|
|||
import de.gultsch.chat.R;
|
||||
import de.gultsch.chat.entities.Account;
|
||||
import de.gultsch.chat.ui.EditAccount.EditAccountListener;
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
@ -87,11 +89,13 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
public void onStart() {
|
||||
super.onStart();
|
||||
if (xmppConnectionServiceBound) {
|
||||
Log.d("gultsch","already bound");
|
||||
this.accountList.clear();
|
||||
this.accountList.addAll(xmppConnectionService
|
||||
.getAccounts());
|
||||
accountListViewAdapter.notifyDataSetChanged();
|
||||
if (this.accountList.size() == 0) {
|
||||
getActionBar().setDisplayHomeAsUpEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,6 +105,10 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
this.accountList.clear();
|
||||
this.accountList.addAll(xmppConnectionService.getAccounts());
|
||||
accountListViewAdapter.notifyDataSetChanged();
|
||||
if (this.accountList.size() == 0) {
|
||||
getActionBar().setDisplayHomeAsUpEnabled(false);
|
||||
addAccount();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -117,26 +125,35 @@ public class ManageAccountActivity extends XmppActivity {
|
|||
startActivity(new Intent(this, SettingsActivity.class));
|
||||
break;
|
||||
case R.id.action_add_account:
|
||||
EditAccount dialog = new EditAccount();
|
||||
dialog.setEditAccountListener(new EditAccountListener() {
|
||||
|
||||
@Override
|
||||
public void onAccountEdited(Account account) {
|
||||
xmppConnectionService.createAccount(account);
|
||||
accountList.add(account);
|
||||
accountListViewAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccountDelete(Account account) {
|
||||
//this will never be called
|
||||
}
|
||||
});
|
||||
dialog.show(getFragmentManager(),"add_account");
|
||||
addAccount();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
protected void addAccount() {
|
||||
final Activity activity = this;
|
||||
EditAccount dialog = new EditAccount();
|
||||
dialog.setEditAccountListener(new EditAccountListener() {
|
||||
|
||||
@Override
|
||||
public void onAccountEdited(Account account) {
|
||||
xmppConnectionService.createAccount(account);
|
||||
accountList.add(account);
|
||||
accountListViewAdapter.notifyDataSetChanged();
|
||||
activity.getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
if (accountList.size() == 1) {
|
||||
activity.startActivity(new Intent(activity,NewConversationActivity.class));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccountDelete(Account account) {
|
||||
//this will never be called
|
||||
}
|
||||
});
|
||||
dialog.show(getFragmentManager(),"add_account");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,8 +27,12 @@ import android.widget.EditText;
|
|||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ImageView;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.CursorLoader;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.Intent;
|
||||
import android.content.Loader;
|
||||
import android.content.Loader.OnLoadCompleteListener;
|
||||
|
@ -152,35 +156,57 @@ public class NewConversationActivity extends XmppActivity {
|
|||
}
|
||||
};
|
||||
contactsView.setAdapter(contactsAdapter);
|
||||
final Activity activity = this;
|
||||
contactsView.setOnItemClickListener(new OnItemClickListener() {
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> arg0, View view, int pos,
|
||||
public void onItemClick(AdapterView<?> arg0, final View view, int pos,
|
||||
long arg3) {
|
||||
Contact clickedContact = aggregatedContacts.get(pos);
|
||||
final Contact clickedContact = aggregatedContacts.get(pos);
|
||||
Log.d("gultsch",
|
||||
"clicked on " + clickedContact.getDisplayName());
|
||||
|
||||
Account account = new Account();
|
||||
final List<Account> accounts = xmppConnectionService.getAccounts();
|
||||
if (accounts.size() == 1) {
|
||||
startConversation(clickedContact, accounts.get(0));
|
||||
} else {
|
||||
String[] accountList = new String[accounts.size()];
|
||||
for(int i = 0; i < accounts.size(); ++i) {
|
||||
accountList[i] = accounts.get(i).getJid();
|
||||
}
|
||||
|
||||
Conversation conversation = xmppConnectionService
|
||||
.findOrCreateConversation(account, clickedContact);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setTitle("Choose account");
|
||||
builder.setSingleChoiceItems(accountList,0,new OnClickListener() {
|
||||
|
||||
Intent viewConversationIntent = new Intent(view.getContext(),
|
||||
ConversationActivity.class);
|
||||
viewConversationIntent.setAction(Intent.ACTION_VIEW);
|
||||
viewConversationIntent.putExtra(
|
||||
ConversationActivity.CONVERSATION,
|
||||
conversation.getUuid());
|
||||
viewConversationIntent
|
||||
.setType(ConversationActivity.VIEW_CONVERSATION);
|
||||
viewConversationIntent.setFlags(viewConversationIntent
|
||||
.getFlags() | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(viewConversationIntent);
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Account account = accounts.get(which);
|
||||
startConversation(clickedContact, account);
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void startConversation(Contact contact, Account account) {
|
||||
Conversation conversation = xmppConnectionService
|
||||
.findOrCreateConversation(account, contact);
|
||||
|
||||
Intent viewConversationIntent = new Intent(this,ConversationActivity.class);
|
||||
viewConversationIntent.setAction(Intent.ACTION_VIEW);
|
||||
viewConversationIntent.putExtra(
|
||||
ConversationActivity.CONVERSATION,
|
||||
conversation.getUuid());
|
||||
viewConversationIntent
|
||||
.setType(ConversationActivity.VIEW_CONVERSATION);
|
||||
viewConversationIntent.setFlags(viewConversationIntent
|
||||
.getFlags() | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(viewConversationIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
|
Loading…
Reference in a new issue