blob: 961f39e8b343ffc4b64593e901bb995422bd0c61 [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 Lisionf30ff852013-12-09 17:08:40 -05006import org.sflphone.R;
Alexandre Lision064e1e02013-10-01 16:18:42 -04007import org.sflphone.model.Account;
8
alisiona4325152013-04-19 11:10:03 -04009import android.content.Context;
alision58356b72013-06-03 17:13:36 -040010import android.content.Intent;
11import android.util.Log;
alisiona4325152013-04-19 11:10:03 -040012import android.view.LayoutInflater;
13import android.view.View;
14import android.view.ViewGroup;
15import android.widget.BaseAdapter;
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050016import android.widget.ImageView;
alisiona4325152013-04-19 11:10:03 -040017import android.widget.TextView;
18
alisiona4325152013-04-19 11:10:03 -040019public 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;
Alexandre Lision8a1bab82013-10-24 10:06:51 -040026 static final String DEFAULT_ACCOUNT_ID = "IP2IP";
alisiona4325152013-04-19 11:10:03 -040027
Alexandre Lisionc51ccb12013-09-11 16:00:30 -040028 public AccountSelectionAdapter(Context cont, 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;
alisiona4325152013-04-19 11:10:03 -040032 }
33
34 @Override
35 public int getCount() {
alision11e8e162013-05-28 10:33:14 -040036 return accounts.size();
alisiona4325152013-04-19 11:10:03 -040037 }
38
39 @Override
alision11e8e162013-05-28 10:33:14 -040040 public Account getItem(int pos) {
41 return accounts.get(pos);
alisiona4325152013-04-19 11:10:03 -040042 }
43
44 @Override
45 public long getItemId(int pos) {
46 return 0;
47 }
48
49 @Override
50 public View getView(int pos, View convertView, ViewGroup parent) {
51 View rowView = convertView;
52 AccountView entryView = null;
53
54 if (rowView == null) {
55 LayoutInflater inflater = LayoutInflater.from(mContext);
56 rowView = inflater.inflate(R.layout.item_account, null);
57
58 entryView = new AccountView();
59 entryView.alias = (TextView) rowView.findViewById(R.id.account_alias);
60 entryView.host = (TextView) rowView.findViewById(R.id.account_host);
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050061 entryView.select = (ImageView) rowView.findViewById(R.id.account_selected);
alisiona4325152013-04-19 11:10:03 -040062 rowView.setTag(entryView);
63 } else {
64 entryView = (AccountView) rowView.getTag();
65 }
66
alision11e8e162013-05-28 10:33:14 -040067 entryView.alias.setText(accounts.get(pos).getAlias());
68 entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state());
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050069// accManager.displayAccountDetails(accounts.get(pos), entryView);
alision11e8e162013-05-28 10:33:14 -040070 if (pos == selectedAccount) {
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050071 entryView.select.setVisibility(View.VISIBLE);
72 } else {
73 entryView.select.setVisibility(View.GONE);
alisiona4325152013-04-19 11:10:03 -040074 }
75
76 return rowView;
77 }
78
79 /*********************
80 * ViewHolder Pattern
81 *********************/
82 public class AccountView {
83 public TextView alias;
84 public TextView host;
Alexandre Lisiondd6623b2013-12-02 16:23:40 -050085 public ImageView select;
alisiona4325152013-04-19 11:10:03 -040086 }
87
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() {
Alexandre Lision8a1bab82013-10-24 10:06:51 -040093 if (selectedAccount == -1) {
alisiondf1dac92013-06-27 17:35:53 -040094 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
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400112 *
alision58356b72013-06-03 17:13:36 -0400113 * @param accountState
114 */
115 public void updateAccount(Intent accountState) {
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400116 Log.i(TAG, "updateAccount");
alision58356b72013-06-03 17:13:36 -0400117 String id = accountState.getStringExtra("Account");
118 String newState = accountState.getStringExtra("state");
119 accountState.getStringExtra("Account");
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400120
121 for (Account a : accounts) {
122 if (a.getAccountID().contentEquals(id)) {
alision58356b72013-06-03 17:13:36 -0400123 a.setRegistered_state(newState);
124 notifyDataSetChanged();
125 return;
126 }
127 }
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400128
129 }
130
131 public String getAccountOrder() {
132 String result = DEFAULT_ACCOUNT_ID + File.separator;
133 String selectedID = accounts.get(selectedAccount).getAccountID();
134 result += selectedID + File.separator;
alision58356b72013-06-03 17:13:36 -0400135
Alexandre Lision8a1bab82013-10-24 10:06:51 -0400136 for (Account a : accounts) {
137 if (a.getAccountID().contentEquals(selectedID)) {
138 continue;
139 }
140 result += a.getAccountID() + File.separator;
141 }
142
143 return result;
alision58356b72013-06-03 17:13:36 -0400144 }
145
alisiona4325152013-04-19 11:10:03 -0400146}