* #31728: display loaded codecs in preferences
diff --git a/src/org/sflphone/fragments/AudioManagementFragment.java b/src/org/sflphone/fragments/AudioManagementFragment.java
index 396c4e9..b58ec29 100644
--- a/src/org/sflphone/fragments/AudioManagementFragment.java
+++ b/src/org/sflphone/fragments/AudioManagementFragment.java
@@ -32,223 +32,269 @@
package org.sflphone.fragments;
+import java.util.ArrayList;
+
import org.sflphone.R;
+import org.sflphone.model.Codec;
+import org.sflphone.service.ISipService;
+import org.sflphone.views.AudioCodecListPreference;
import android.app.Activity;
+import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.res.TypedArray;
+import android.database.DataSetObserver;
import android.os.Bundle;
-import android.preference.EditTextPreference;
+import android.os.RemoteException;
import android.preference.ListPreference;
import android.preference.Preference;
-import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import android.widget.ListAdapter;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
-public class AudioManagementFragment extends PreferenceFragment
-{
- static final String TAG = "PrefManagementFragment";
+public class AudioManagementFragment extends PreferenceFragment {
+ static final String TAG = "AudioManagementFragment";
- public AudioManagementFragment()
- {
+ protected Callbacks mCallbacks = sDummyCallbacks;
+ ArrayList<Codec> codecs;
+ private static Callbacks sDummyCallbacks = new Callbacks() {
+
+ @Override
+ public ISipService getService() {
+ return null;
+ }
+
+ @Override
+ public String getAccountID() {
+ return null;
+ }
+
+ };
+
+ public interface Callbacks {
+
+ public ISipService getService();
+
+ public String getAccountID();
+
}
@Override
- public void onCreate(Bundle savedInstanceState)
- {
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ if (!(activity instanceof Callbacks)) {
+ throw new IllegalStateException("Activity must implement fragment's callbacks.");
+ }
+
+ mCallbacks = (Callbacks) activity;
+ try {
+ codecs = (ArrayList<Codec>) mCallbacks.getService().getAudioCodecList(mCallbacks.getAccountID());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mCallbacks = sDummyCallbacks;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.audio_prefs);
+
+ ((AudioCodecListPreference)getPreferenceManager().findPreference("Audio.codec")).setList(codecs);
+
+
}
Preference.OnPreferenceChangeListener changePreferenceListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
- preference.setSummary((CharSequence)newValue);
+ preference.setSummary((CharSequence) newValue);
return true;
}
};
-// public PreferenceScreen getAudioPreferenceScreen()
-// {
-// Activity currentContext = getActivity();
-//
-// PreferenceScreen root = getPreferenceManager().createPreferenceScreen(currentContext);
-//
-// PreferenceCategory audioPrefCat = new PreferenceCategory(currentContext);
-// audioPrefCat.setTitle(R.string.audio_preferences);
-// root.addPreference(audioPrefCat);
-//
-// // Codec List
-// ListPreference codecListPref = new ListPreference(currentContext);
-// codecListPref.setEntries(R.array.audio_codec_list);
-// codecListPref.setEntryValues(R.array.audio_codec_list_value);
-// codecListPref.setDialogTitle(R.string.dialogtitle_audio_codec_list);
-// codecListPref.setPersistent(false);
-// codecListPref.setTitle(R.string.title_audio_codec_list);
-// codecListPref.setSummary("PCMU");
-// codecListPref.setOnPreferenceChangeListener(changePreferenceListener);
-// audioPrefCat.addPreference(codecListPref);
-//
-// // Ringtone
-// EditTextPreference audioRingtonePref = new EditTextPreference(currentContext);
-// audioRingtonePref.setDialogTitle(R.string.dialogtitle_audio_ringtone_field);
-// audioRingtonePref.setPersistent(false);
-// audioRingtonePref.setTitle(R.string.title_audio_ringtone_field);
-// audioRingtonePref.setSummary("path/to/ringtone");
-// audioRingtonePref.setOnPreferenceChangeListener(changePreferenceListener);
-// audioPrefCat.addPreference(audioRingtonePref);
-//
-// // Speaker volume seekbar
-// SeekBarPreference speakerSeekBarPref = new SeekBarPreference(currentContext);
-// speakerSeekBarPref.setPersistent(false);
-// speakerSeekBarPref.setTitle("Speaker Volume");
-// speakerSeekBarPref.setProgress(50);
-// speakerSeekBarPref.setSummary(speakerSeekBarPref.getProgress());
-// audioPrefCat.addPreference(speakerSeekBarPref);
-//
-// // Capture volume seekbar
-// SeekBarPreference captureSeekBarPref = new SeekBarPreference(currentContext);
-// captureSeekBarPref.setPersistent(false);
-// captureSeekBarPref.setTitle("Capture Volume");
-// captureSeekBarPref.setProgress(50);
-// captureSeekBarPref.setSummary(captureSeekBarPref.getProgress());
-// audioPrefCat.addPreference(captureSeekBarPref);
-//
-// // Ringtone volume seekbar
-// SeekBarPreference ringtoneSeekBarPref = new SeekBarPreference(currentContext);
-// ringtoneSeekBarPref.setPersistent(false);
-// ringtoneSeekBarPref.setTitle("Ringtone Volume");
-// ringtoneSeekBarPref.setProgress(50);
-// ringtoneSeekBarPref.setSummary(ringtoneSeekBarPref.getProgress());
-// audioPrefCat.addPreference(ringtoneSeekBarPref);
-//
-// return root;
-// }
+ // public PreferenceScreen getAudioPreferenceScreen()
+ // {
+ // Activity currentContext = getActivity();
+ //
+ // PreferenceScreen root = getPreferenceManager().createPreferenceScreen(currentContext);
+ //
+ // PreferenceCategory audioPrefCat = new PreferenceCategory(currentContext);
+ // audioPrefCat.setTitle(R.string.audio_preferences);
+ // root.addPreference(audioPrefCat);
+ //
+ // // Codec List
+ // ListPreference codecListPref = new ListPreference(currentContext);
+ // codecListPref.setEntries(R.array.audio_codec_list);
+ // codecListPref.setEntryValues(R.array.audio_codec_list_value);
+ // codecListPref.setDialogTitle(R.string.dialogtitle_audio_codec_list);
+ // codecListPref.setPersistent(false);
+ // codecListPref.setTitle(R.string.title_audio_codec_list);
+ // codecListPref.setSummary("PCMU");
+ // codecListPref.setOnPreferenceChangeListener(changePreferenceListener);
+ // audioPrefCat.addPreference(codecListPref);
+ //
+ // // Ringtone
+ // EditTextPreference audioRingtonePref = new EditTextPreference(currentContext);
+ // audioRingtonePref.setDialogTitle(R.string.dialogtitle_audio_ringtone_field);
+ // audioRingtonePref.setPersistent(false);
+ // audioRingtonePref.setTitle(R.string.title_audio_ringtone_field);
+ // audioRingtonePref.setSummary("path/to/ringtone");
+ // audioRingtonePref.setOnPreferenceChangeListener(changePreferenceListener);
+ // audioPrefCat.addPreference(audioRingtonePref);
+ //
+ // // Speaker volume seekbar
+ // SeekBarPreference speakerSeekBarPref = new SeekBarPreference(currentContext);
+ // speakerSeekBarPref.setPersistent(false);
+ // speakerSeekBarPref.setTitle("Speaker Volume");
+ // speakerSeekBarPref.setProgress(50);
+ // speakerSeekBarPref.setSummary(speakerSeekBarPref.getProgress());
+ // audioPrefCat.addPreference(speakerSeekBarPref);
+ //
+ // // Capture volume seekbar
+ // SeekBarPreference captureSeekBarPref = new SeekBarPreference(currentContext);
+ // captureSeekBarPref.setPersistent(false);
+ // captureSeekBarPref.setTitle("Capture Volume");
+ // captureSeekBarPref.setProgress(50);
+ // captureSeekBarPref.setSummary(captureSeekBarPref.getProgress());
+ // audioPrefCat.addPreference(captureSeekBarPref);
+ //
+ // // Ringtone volume seekbar
+ // SeekBarPreference ringtoneSeekBarPref = new SeekBarPreference(currentContext);
+ // ringtoneSeekBarPref.setPersistent(false);
+ // ringtoneSeekBarPref.setTitle("Ringtone Volume");
+ // ringtoneSeekBarPref.setProgress(50);
+ // ringtoneSeekBarPref.setSummary(ringtoneSeekBarPref.getProgress());
+ // audioPrefCat.addPreference(ringtoneSeekBarPref);
+ //
+ // return root;
+ // }
- public class SeekBarPreference extends Preference implements OnSeekBarChangeListener
- {
+
+
+ public class SeekBarPreference extends Preference implements OnSeekBarChangeListener {
private SeekBar seekbar;
private int progress;
private int max = 100;
private TextView summary;
private boolean discard;
- public SeekBarPreference (Context context)
- {
- super( context );
+ public SeekBarPreference(Context context) {
+ super(context);
}
- public SeekBarPreference (Context context, AttributeSet attrs)
- {
- super( context, attrs );
+ public SeekBarPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
}
- public SeekBarPreference (Context context, AttributeSet attrs, int defStyle)
- {
- super( context, attrs, defStyle );
+ public SeekBarPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
}
- protected View onCreateView (ViewGroup p)
- {
+ protected View onCreateView(ViewGroup p) {
final Context ctx = getContext();
- LinearLayout layout = new LinearLayout( ctx );
- layout.setId( android.R.id.widget_frame );
- layout.setOrientation( LinearLayout.VERTICAL );
+ LinearLayout layout = new LinearLayout(ctx);
+ layout.setId(android.R.id.widget_frame);
+ layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(65, 10, 15, 10);
- TextView title = new TextView( ctx );
+ TextView title = new TextView(ctx);
int textColor = title.getCurrentTextColor();
- title.setId( android.R.id.title );
+ title.setId(android.R.id.title);
title.setSingleLine();
- title.setTextAppearance( ctx, android.R.style.TextAppearance_Medium );
- title.setTextColor( textColor );
- layout.addView( title );
+ title.setTextAppearance(ctx, android.R.style.TextAppearance_Medium);
+ title.setTextColor(textColor);
+ layout.addView(title);
- summary = new TextView( ctx );
- summary.setId( android.R.id.summary );
+ summary = new TextView(ctx);
+ summary.setId(android.R.id.summary);
summary.setSingleLine();
- summary.setTextAppearance( ctx, android.R.style.TextAppearance_Small );
- summary.setTextColor( textColor );
- layout.addView( summary );
+ summary.setTextAppearance(ctx, android.R.style.TextAppearance_Small);
+ summary.setTextColor(textColor);
+ layout.addView(summary);
- seekbar = new SeekBar( ctx );
- seekbar.setId( android.R.id.progress );
- seekbar.setMax( max );
- seekbar.setOnSeekBarChangeListener( this );
- layout.addView( seekbar );
+ seekbar = new SeekBar(ctx);
+ seekbar.setId(android.R.id.progress);
+ seekbar.setMax(max);
+ seekbar.setOnSeekBarChangeListener(this);
+ layout.addView(seekbar);
return layout;
}
@Override
- protected void onBindView (View view)
- {
- super.onBindView( view );
+ protected void onBindView(View view) {
+ super.onBindView(view);
if (seekbar != null)
- seekbar.setProgress( progress );
+ seekbar.setProgress(progress);
}
- public void setProgress (int pcnt) {
+ public void setProgress(int pcnt) {
if (progress != pcnt) {
- persistInt( progress = pcnt );
+ persistInt(progress = pcnt);
- notifyDependencyChange( shouldDisableDependents() );
+ notifyDependencyChange(shouldDisableDependents());
notifyChanged();
}
}
- public int getProgress () {
+ public int getProgress() {
return progress;
}
- public void setMax (int max) {
+ public void setMax(int max) {
this.max = max;
if (seekbar != null)
- seekbar.setMax( max );
+ seekbar.setMax(max);
}
@Override
- protected Object onGetDefaultValue (TypedArray a, int index) {
- return a.getInt( index, progress );
+ protected Object onGetDefaultValue(TypedArray a, int index) {
+ return a.getInt(index, progress);
}
@Override
- protected void onSetInitialValue (boolean restoreValue, Object defaultValue) {
- setProgress( restoreValue ? getPersistedInt( progress ) : (Integer)defaultValue );
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setProgress(restoreValue ? getPersistedInt(progress) : (Integer) defaultValue);
}
@Override
- public boolean shouldDisableDependents () {
+ public boolean shouldDisableDependents() {
return progress == 0 || super.shouldDisableDependents();
}
- public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) {
- discard = !callChangeListener( progress );
- summary.setText(progress);
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ discard = !callChangeListener(progress);
+ summary.setText(progress);
}
- public void onStartTrackingTouch (SeekBar seekBar) {
+ public void onStartTrackingTouch(SeekBar seekBar) {
discard = false;
}
- public void onStopTrackingTouch (SeekBar seekBar) {
+ public void onStopTrackingTouch(SeekBar seekBar) {
if (discard)
- seekBar.setProgress( progress );
+ seekBar.setProgress(progress);
else {
- setProgress( seekBar.getProgress() );
+ setProgress(seekBar.getProgress());
-// OnPreferenceChangeListener listener = getOnPreferenceChangeListener();
- //if (listener instanceof AbstractSeekBarListener)
- //// setSummary( ((AbstractSeekBarListener)listener).toSummary( seekBar.getProgress() ) );
+ // OnPreferenceChangeListener listener = getOnPreferenceChangeListener();
+ // if (listener instanceof AbstractSeekBarListener)
+ // // setSummary( ((AbstractSeekBarListener)listener).toSummary( seekBar.getProgress() ) );
}
}
}