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