blob: a15517d05be2d221bc475c71a7fbb80b80723a51 [file] [log] [blame]
Alexandre Lision064e1e02013-10-01 16:18:42 -04001package org.sflphone.adapters;
alisiona4325152013-04-19 11:10:03 -04002
3import java.util.ArrayList;
alisiona4325152013-04-19 11:10:03 -04004
Alexandre Lision064e1e02013-10-01 16:18:42 -04005import org.sflphone.model.Account;
6
alisiona4325152013-04-19 11:10:03 -04007import android.content.Context;
alision58356b72013-06-03 17:13:36 -04008import android.content.Intent;
9import android.util.Log;
alisiona4325152013-04-19 11:10:03 -040010import android.view.LayoutInflater;
11import android.view.View;
12import android.view.ViewGroup;
13import android.widget.BaseAdapter;
14import android.widget.RadioButton;
15import android.widget.TextView;
16
Alexandre Lision064e1e02013-10-01 16:18:42 -040017import org.sflphone.R;
alisiona4325152013-04-19 11:10:03 -040018
19public class AccountSelectionAdapter extends BaseAdapter {
20
21 private static final String TAG = AccountSelectionAdapter.class.getSimpleName();
22
alision11e8e162013-05-28 10:33:14 -040023 ArrayList<Account> accounts;
alisiona4325152013-04-19 11:10:03 -040024 Context mContext;
alisiondf1dac92013-06-27 17:35:53 -040025 int selectedAccount = -1;
alisiona4325152013-04-19 11:10:03 -040026
Alexandre Lisionc51ccb12013-09-11 16:00:30 -040027 public AccountSelectionAdapter(Context cont, ArrayList<Account> newList) {
alisiona4325152013-04-19 11:10:03 -040028 super();
alision11e8e162013-05-28 10:33:14 -040029 accounts = newList;
alisiona4325152013-04-19 11:10:03 -040030 mContext = cont;
alisiona4325152013-04-19 11:10:03 -040031 }
32
33 @Override
34 public int getCount() {
alision11e8e162013-05-28 10:33:14 -040035 return accounts.size();
alisiona4325152013-04-19 11:10:03 -040036 }
37
38 @Override
alision11e8e162013-05-28 10:33:14 -040039 public Account getItem(int pos) {
40 return accounts.get(pos);
alisiona4325152013-04-19 11:10:03 -040041 }
42
43 @Override
44 public long getItemId(int pos) {
45 return 0;
46 }
47
48 @Override
49 public View getView(int pos, View convertView, ViewGroup parent) {
50 View rowView = convertView;
51 AccountView entryView = null;
52
53 if (rowView == null) {
54 LayoutInflater inflater = LayoutInflater.from(mContext);
55 rowView = inflater.inflate(R.layout.item_account, null);
56
57 entryView = new AccountView();
58 entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
59 entryView.host = (TextView) rowView.findViewById(R.id.account_host);
60 entryView.select = (RadioButton) rowView.findViewById(R.id.account_checked);
61 rowView.setTag(entryView);
62 } else {
63 entryView = (AccountView) rowView.getTag();
64 }
65
alision11e8e162013-05-28 10:33:14 -040066 entryView.alias.setText(accounts.get(pos).getAlias());
67 entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
68 // accManager.displayAccountDetails(accounts.get(pos), entryView);
69 if (pos == selectedAccount) {
alisiona4325152013-04-19 11:10:03 -040070 entryView.select.setChecked(true);
71 }
72
73 return rowView;
74 }
75
76 /*********************
77 * ViewHolder Pattern
78 *********************/
79 public class AccountView {
80 public TextView alias;
81 public TextView host;
82 public RadioButton select;
83 }
84
alisionfde875f2013-05-28 17:01:54 -040085
alisiona4325152013-04-19 11:10:03 -040086 public void setSelectedAccount(int pos) {
alision11e8e162013-05-28 10:33:14 -040087 selectedAccount = pos;
alisiona4325152013-04-19 11:10:03 -040088 }
89
alision11e8e162013-05-28 10:33:14 -040090 public Account getSelectedAccount() {
alisiondf1dac92013-06-27 17:35:53 -040091 if(selectedAccount == -1){
92 return null;
93 }
alision11e8e162013-05-28 10:33:14 -040094 return accounts.get(selectedAccount);
95 }
96
97 public void removeAll() {
98 accounts.clear();
99 notifyDataSetChanged();
100
101 }
102
103 public void addAll(ArrayList<Account> results) {
104 accounts.addAll(results);
105 notifyDataSetChanged();
alision371b77e2013-04-23 14:51:26 -0400106 }
107
alision58356b72013-06-03 17:13:36 -0400108 /**
109 * Modify state of specific account
110 * @param accountState
111 */
112 public void updateAccount(Intent accountState) {
113 Log.i(TAG,"updateAccount");
114 String id = accountState.getStringExtra("Account");
115 String newState = accountState.getStringExtra("state");
116 accountState.getStringExtra("Account");
117
118 for(Account a : accounts){
119 if(a.getAccountID().contentEquals(id)){
120 a.setRegistered_state(newState);
121 notifyDataSetChanged();
122 return;
123 }
124 }
125
126 }
127
alisiona4325152013-04-19 11:10:03 -0400128}