blob: 13cb87e56a6a3228f7a0cdde332ddad1d06de6e5 [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 -040017import com.savoirfairelinux.sflphone.service.ISipService;
18
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;
alisiona4325152013-04-19 11:10:03 -040025 ISipService service;
alisiondf1dac92013-06-27 17:35:53 -040026 int selectedAccount = -1;
alisiona4325152013-04-19 11:10:03 -040027
alision11e8e162013-05-28 10:33:14 -040028 public AccountSelectionAdapter(Context cont, ISipService s, ArrayList<Account> newList) {
alisiona4325152013-04-19 11:10:03 -040029 super();
alision11e8e162013-05-28 10:33:14 -040030 accounts = newList;
alisiona4325152013-04-19 11:10:03 -040031 mContext = cont;
32 service = s;
alisiona4325152013-04-19 11:10:03 -040033 }
34
35 @Override
36 public int getCount() {
alision11e8e162013-05-28 10:33:14 -040037 return accounts.size();
alisiona4325152013-04-19 11:10:03 -040038 }
39
40 @Override
alision11e8e162013-05-28 10:33:14 -040041 public Account getItem(int pos) {
42 return accounts.get(pos);
alisiona4325152013-04-19 11:10:03 -040043 }
44
45 @Override
46 public long getItemId(int pos) {
47 return 0;
48 }
49
50 @Override
51 public View getView(int pos, View convertView, ViewGroup parent) {
52 View rowView = convertView;
53 AccountView entryView = null;
54
55 if (rowView == null) {
56 LayoutInflater inflater = LayoutInflater.from(mContext);
57 rowView = inflater.inflate(R.layout.item_account, null);
58
59 entryView = new AccountView();
60 entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
61 entryView.host = (TextView) rowView.findViewById(R.id.account_host);
62 entryView.select = (RadioButton) rowView.findViewById(R.id.account_checked);
63 rowView.setTag(entryView);
64 } else {
65 entryView = (AccountView) rowView.getTag();
66 }
67
alision11e8e162013-05-28 10:33:14 -040068 entryView.alias.setText(accounts.get(pos).getAlias());
69 entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
70 // accManager.displayAccountDetails(accounts.get(pos), entryView);
71 if (pos == selectedAccount) {
alisiona4325152013-04-19 11:10:03 -040072 entryView.select.setChecked(true);
73 }
74
75 return rowView;
76 }
77
78 /*********************
79 * ViewHolder Pattern
80 *********************/
81 public class AccountView {
82 public TextView alias;
83 public TextView host;
84 public RadioButton select;
85 }
86
alisionfde875f2013-05-28 17:01:54 -040087
alisiona4325152013-04-19 11:10:03 -040088 public void setSelectedAccount(int pos) {
alision11e8e162013-05-28 10:33:14 -040089 selectedAccount = pos;
alisiona4325152013-04-19 11:10:03 -040090 }
91
alision11e8e162013-05-28 10:33:14 -040092 public Account getSelectedAccount() {
alisiondf1dac92013-06-27 17:35:53 -040093 if(selectedAccount == -1){
94 return null;
95 }
alision11e8e162013-05-28 10:33:14 -040096 return accounts.get(selectedAccount);
97 }
98
99 public void removeAll() {
100 accounts.clear();
101 notifyDataSetChanged();
102
103 }
104
105 public void addAll(ArrayList<Account> results) {
106 accounts.addAll(results);
107 notifyDataSetChanged();
alision371b77e2013-04-23 14:51:26 -0400108 }
109
alision58356b72013-06-03 17:13:36 -0400110 /**
111 * Modify state of specific account
112 * @param accountState
113 */
114 public void updateAccount(Intent accountState) {
115 Log.i(TAG,"updateAccount");
116 String id = accountState.getStringExtra("Account");
117 String newState = accountState.getStringExtra("state");
118 accountState.getStringExtra("Account");
119
120 for(Account a : accounts){
121 if(a.getAccountID().contentEquals(id)){
122 a.setRegistered_state(newState);
123 notifyDataSetChanged();
124 return;
125 }
126 }
127
128 }
129
alisiona4325152013-04-19 11:10:03 -0400130}