aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel.gultsch@rwth-aachen.de>2014-01-28 23:15:30 +0100
committerDaniel Gultsch <daniel.gultsch@rwth-aachen.de>2014-01-28 23:15:30 +0100
commit76cfab03ec712173ba37a98306c448f5930f0474 (patch)
treea098c1a1e7b70bac1cb6d209b3c7d4eb73faec60 /src
parentefba73ffd012cede18b6d50fe32b3077bb866741 (diff)
ui flow for first startup with no existing account
Diffstat (limited to 'src')
-rw-r--r--src/de/gultsch/chat/ui/ConversationActivity.java5
-rw-r--r--src/de/gultsch/chat/ui/ManageAccountActivity.java51
-rw-r--r--src/de/gultsch/chat/ui/NewConversationActivity.java64
3 files changed, 83 insertions, 37 deletions
diff --git a/src/de/gultsch/chat/ui/ConversationActivity.java b/src/de/gultsch/chat/ui/ConversationActivity.java
index 90fc1d40c..d831f9b8b 100644
--- a/src/de/gultsch/chat/ui/ConversationActivity.java
+++ b/src/de/gultsch/chat/ui/ConversationActivity.java
@@ -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();
diff --git a/src/de/gultsch/chat/ui/ManageAccountActivity.java b/src/de/gultsch/chat/ui/ManageAccountActivity.java
index 8ba092dbc..c7d6ce58d 100644
--- a/src/de/gultsch/chat/ui/ManageAccountActivity.java
+++ b/src/de/gultsch/chat/ui/ManageAccountActivity.java
@@ -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");
+ }
}
diff --git a/src/de/gultsch/chat/ui/NewConversationActivity.java b/src/de/gultsch/chat/ui/NewConversationActivity.java
index 2725178de..9df5d5eb8 100644
--- a/src/de/gultsch/chat/ui/NewConversationActivity.java
+++ b/src/de/gultsch/chat/ui/NewConversationActivity.java
@@ -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,34 +156,56 @@ 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();
-
- Conversation conversation = xmppConnectionService
- .findOrCreateConversation(account, clickedContact);
-
- 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);
+
+ 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();
+ }
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle("Choose account");
+ builder.setSingleChoiceItems(accountList,0,new OnClickListener() {
+
+ @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() {