blob: a927319bca532b7b8a3d37db62a4f0523bbfc289 [file] [log] [blame]
Alexandre Lision064e1e02013-10-01 16:18:42 -04001package org.sflphone.adapters;
alisiona4325152013-04-19 11:10:03 -04002
Alexandre Lision8a1bab82013-10-24 10:06:51 -04003import java.io.File;
alisiona4325152013-04-19 11:10:03 -04004import java.util.ArrayList;
alisiona4325152013-04-19 11:10:03 -04005
Alexandre Lision064e1e02013-10-01 16:18:42 -04006import org.sflphone.model.Account;
7
alisiona4325152013-04-19 11:10:03 -04008import android.content.Context;
alision58356b72013-06-03 17:13:36 -04009import android.content.Intent;
10import android.util.Log;
alisiona4325152013-04-19 11:10:03 -040011import android.view.LayoutInflater;
12import android.view.View;
13import android.view.ViewGroup;
14import android.widget.BaseAdapter;
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050015import android.widget.ImageView;
alisiona4325152013-04-19 11:10:03 -040016import android.widget.RadioButton;
17import android.widget.TextView;
18
Alexandre Lision064e1e02013-10-01 16:18:42 -040019import org.sflphone.R;
alisiona4325152013-04-19 11:10:03 -040020
21public class AccountSelectionAdapter extends BaseAdapter {
22
23 private static final String TAG = AccountSelectionAdapter.class.getSimpleName();
24
alision11e8e162013-05-28 10:33:14 -040025 ArrayList<Account> accounts;
alisiona4325152013-04-19 11:10:03 -040026 Context mContext;
alisiondf1dac92013-06-27 17:35:53 -040027 int selectedAccount = -1;
Alexandre Lision8a1bab82013-10-24 10:06:51 -040028 static final String DEFAULT_ACCOUNT_ID = "IP2IP";
alisiona4325152013-04-19 11:10:03 -040029
Alexandre Lisionc51ccb12013-09-11 16:00:30 -040030 public AccountSelectionAdapter(Context cont, ArrayList<Account> newList) {
alisiona4325152013-04-19 11:10:03 -040031 super();
alision11e8e162013-05-28 10:33:14 -040032 accounts = newList;
alisiona4325152013-04-19 11:10:03 -040033 mContext = cont;
alisiona4325152013-04-19 11:10:03 -040034 }
35
36 @Override
37 public int getCount() {
alision11e8e162013-05-28 10:33:14 -040038 return accounts.size();
alisiona4325152013-04-19 11:10:03 -040039 }
40
41 @Override
alision11e8e162013-05-28 10:33:14 -040042 public Account getItem(int pos) {
43 return accounts.get(pos);
alisiona4325152013-04-19 11:10:03 -040044 }
45
46 @Override
47 public long getItemId(int pos) {
48 return 0;
49 }
50
51 @Override
52 public View getView(int pos, View convertView, ViewGroup parent) {
53 View rowView = convertView;
54 AccountView entryView = null;
55
56 if (rowView == null) {
57 LayoutInflater inflater = LayoutInflater.from(mContext);
58 rowView = inflater.inflate(R.layout.item_account, null);
59
60 entryView = new AccountView();
61 entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
62 entryView.host = (TextView) rowView.findViewById(R.id.account_host);
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050063 entryView.select = (ImageView) rowView.findViewById(R.id.account_selected);
alisiona4325152013-04-19 11:10:03 -040064 rowView.setTag(entryView);
65 } else {
66 entryView = (AccountView) rowView.getTag();
67 }
68
alision11e8e162013-05-28 10:33:14 -040069 entryView.alias.setText(accounts.get(pos).getAlias());
70 entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050071// accManager.displayAccountDetails(accounts.get(pos), entryView);
alision11e8e162013-05-28 10:33:14 -040072 if (pos == selectedAccount) {
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050073 entryView.select.setVisibility(View.VISIBLE);
74 } else {
75 entryView.select.setVisibility(View.GONE);
alisiona4325152013-04-19 11:10:03 -040076 }
77
78 return rowView;
79 }
80
81 /*********************
82 * ViewHolder Pattern
83 *********************/
84 public class AccountView {
85 public TextView alias;
86 public TextView host;
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050087 public ImageView select;
alisiona4325152013-04-19 11:10:03 -040088 }
89
alisiona4325152013-04-19 11:10:03 -040090 public void setSelectedAccount(int pos) {
alision11e8e162013-05-28 10:33:14 -040091 selectedAccount = pos;
alisiona4325152013-04-19 11:10:03 -040092 }
93
alision11e8e162013-05-28 10:33:14 -040094 public Account getSelectedAccount() {
Alexandre Lision8a1bab82013-10-24 10:06:51 -040095 if (selectedAccount == -1) {
alisiondf1dac92013-06-27 17:35:53 -040096 return null;
97 }
alision11e8e162013-05-28 10:33:14 -040098 return accounts.get(selectedAccount);
99 }
100
101 public void removeAll() {
102 accounts.clear();
103 notifyDataSetChanged();
104
105 }
106
107 public void addAll(ArrayList<Account> results) {
108 accounts.addAll(results);
109 notifyDataSetChanged();
alision371b77e2013-04-23 14:51:26 -0400110 }
111
alision58356b72013-06-03 17:13:36 -0400112 /**
113 * Modify state of specific account
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400114 *
alision58356b72013-06-03 17:13:36 -0400115 * @param accountState
116 */
117 public void updateAccount(Intent accountState) {
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400118 Log.i(TAG, "updateAccount");
alision58356b72013-06-03 17:13:36 -0400119 String id = accountState.getStringExtra("Account");
120 String newState = accountState.getStringExtra("state");
121 accountState.getStringExtra("Account");
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400122
123 for (Account a : accounts) {
124 if (a.getAccountID().contentEquals(id)) {
alision58356b72013-06-03 17:13:36 -0400125 a.setRegistered_state(newState);
126 notifyDataSetChanged();
127 return;
128 }
129 }
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400130
131 }
132
133 public String getAccountOrder() {
134 String result = DEFAULT_ACCOUNT_ID + File.separator;
135 String selectedID = accounts.get(selectedAccount).getAccountID();
136 result += selectedID + File.separator;
alision58356b72013-06-03 17:13:36 -0400137
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400138 for (Account a : accounts) {
139 if (a.getAccountID().contentEquals(selectedID)) {
140 continue;
141 }
142 result += a.getAccountID() + File.separator;
143 }
144
145 return result;
alision58356b72013-06-03 17:13:36 -0400146 }
147
alisiona4325152013-04-19 11:10:03 -0400148}