conversations-classic/src/de/gultsch/chat/ui/ManageAccountActivity.java

160 lines
4.6 KiB
Java
Raw Normal View History

2014-01-24 01:04:05 +00:00
package de.gultsch.chat.ui;
2014-01-28 18:21:54 +00:00
import java.util.ArrayList;
import java.util.List;
2014-01-24 01:04:05 +00:00
2014-01-28 18:21:54 +00:00
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;
2014-01-28 18:21:54 +00:00
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
2014-01-24 01:04:05 +00:00
2014-01-28 18:21:54 +00:00
public class ManageAccountActivity extends XmppActivity {
protected List<Account> accountList = new ArrayList<Account>();
protected ListView accountListView;
protected ArrayAdapter<Account> accountListViewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.manage_accounts);
accountListView = (ListView) findViewById(R.id.account_list);
accountListViewAdapter = new ArrayAdapter<Account>(getApplicationContext(), R.layout.account_row, this.accountList) {
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = (View) inflater.inflate(R.layout.account_row, null);
}
((TextView) view.findViewById(R.id.account_jid)).setText(getItem(position).getJid());
return view;
}
};
accountListView.setAdapter(this.accountListViewAdapter);
accountListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
EditAccount dialog = new EditAccount();
dialog.setAccount(accountList.get(position));
dialog.setEditAccountListener(new EditAccountListener() {
@Override
public void onAccountEdited(Account account) {
xmppConnectionService.updateAccount(account);
}
@Override
public void onAccountDelete(Account account) {
Log.d("gultsch","deleting account:"+account.getJid());
xmppConnectionService.deleteAccount(account);
//dont bother finding the right account in the frontend list. just reload
accountList.clear();
accountList.addAll(xmppConnectionService.getAccounts());
accountListViewAdapter.notifyDataSetChanged();
}
});
dialog.show(getFragmentManager(),"edit_account");
}
});
}
@Override
public void onStart() {
super.onStart();
if (xmppConnectionServiceBound) {
this.accountList.clear();
this.accountList.addAll(xmppConnectionService
.getAccounts());
accountListViewAdapter.notifyDataSetChanged();
if (this.accountList.size() == 0) {
getActionBar().setDisplayHomeAsUpEnabled(false);
}
2014-01-28 18:21:54 +00:00
}
}
@Override
void onBackendConnected() {
Log.d("gultsch","called on backend connected");
this.accountList.clear();
this.accountList.addAll(xmppConnectionService.getAccounts());
accountListViewAdapter.notifyDataSetChanged();
if (this.accountList.size() == 0) {
getActionBar().setDisplayHomeAsUpEnabled(false);
addAccount();
}
2014-01-28 18:21:54 +00:00
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.manageaccounts, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(this, SettingsActivity.class));
break;
case R.id.action_add_account:
addAccount();
2014-01-28 18:21:54 +00:00
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");
}
2014-01-24 01:04:05 +00:00
}