blob: 8f28058b70db129fcd7e77d6bcd0bff279afc9ab [file] [log] [blame]
Alexandre Lision933ef0a2013-10-15 17:28:40 -04001package org.sflphone.views;
2
3import java.util.ArrayList;
4
5import org.sflphone.R;
6import org.sflphone.model.Codec;
7
8import android.app.AlertDialog.Builder;
9import android.content.Context;
10import android.preference.DialogPreference;
11import android.util.AttributeSet;
12import android.view.LayoutInflater;
13import android.view.View;
14import android.view.ViewGroup;
15import android.widget.BaseAdapter;
16import android.widget.CheckBox;
17import android.widget.TextView;
18
19public class AudioCodecListPreference extends DialogPreference {
20
21 CodecAdapter listAdapter;
22
23 public AudioCodecListPreference(Context context, AttributeSet attrs) {
24 super(context, attrs);
25 listAdapter = new CodecAdapter(getContext());
26
27 }
28
29 @Override
30 protected void onPrepareDialogBuilder(Builder builder) {
31
32 builder.setAdapter(listAdapter, this);
33 super.onPrepareDialogBuilder(builder);
34 }
35
36 private static class CodecAdapter extends BaseAdapter {
37
38 ArrayList<Codec> items;
39 private Context mContext;
40
41 public CodecAdapter(Context context) {
42
43 mContext = context;
44 }
45
46 @Override
47 public int getCount() {
48 return items.size();
49 }
50
51 @Override
52 public Codec getItem(int position) {
53 return items.get(position);
54 }
55
56 @Override
57 public long getItemId(int position) {
58 return 0;
59 }
60
61 @Override
62 public int getItemViewType(int position) {
63 return 0;
64 }
65
66 @Override
67 public View getView(int pos, View convertView, ViewGroup parent) {
68 View rowView = convertView;
69 CodecView entryView = null;
70
71 if (rowView == null) {
72 LayoutInflater inflater = LayoutInflater.from(mContext);
73 rowView = inflater.inflate(R.layout.item_codec, null);
74
75 entryView = new CodecView();
76 entryView.name = (TextView) rowView.findViewById(R.id.codec_name);
77 entryView.bitrate = (TextView) rowView.findViewById(R.id.codec_bitrate);
78 entryView.samplerate = (TextView) rowView.findViewById(R.id.codec_samplerate);
79 entryView.channels = (TextView) rowView.findViewById(R.id.codec_channels);
80 entryView.enabled = (CheckBox) rowView.findViewById(R.id.codec_checked);
81 rowView.setTag(entryView);
82 } else {
83 entryView = (CodecView) rowView.getTag();
84 }
85
86 entryView.name.setText(items.get(pos).getName());
87 entryView.samplerate.setText(items.get(pos).getSampleRate());
88 entryView.bitrate.setText(items.get(pos).getBitRate());
89 entryView.channels.setText(items.get(pos).getChannels());
90
91// entryView.enabled.setChecked(items.get(pos).isEnabled());
92
93// entryView.enabled.setOnCheckedChangeListener(new OnCheckedChangeListener() {
94//
95// @Override
96// public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
97// items.get(pos).setEnabled(isChecked);
98//
99// try {
100// mCallbacks.getService().setAccountDetails(accounts.get(pos).getAccountID(), accounts.get(pos).getDetails());
101// } catch (RemoteException e) {
102// e.printStackTrace();
103// }
104// }
105// });
106
107 return rowView;
108
109 }
110
111 @Override
112 public int getViewTypeCount() {
113 return 1;
114 }
115
116 @Override
117 public boolean hasStableIds() {
118 return true;
119 }
120
121 @Override
122 public boolean isEmpty() {
123 return getCount() == 0;
124 }
125
126 @Override
127 public boolean areAllItemsEnabled() {
128 return true;
129 }
130
131 @Override
132 public boolean isEnabled(int position) {
133 return true;
134 }
135
136 public void setDataset(ArrayList<Codec> codecs) {
137 items = new ArrayList<Codec>(codecs);
138 }
139
140 /*********************
141 * ViewHolder Pattern
142 *********************/
143 public class CodecView {
144 public TextView name;
145 public TextView samplerate;
146 public TextView bitrate;
147 public TextView channels;
148 public CheckBox enabled;
149 }
150
151 }
152
153 public void setList(ArrayList<Codec> codecs) {
154 listAdapter.setDataset(codecs);
155 listAdapter.notifyDataSetChanged();
156 }
157
158}