Cleaned up the Ringtone Fragment UI

closes #56

Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
2012-05-18 11:47:47 -04:00
parent 834dff6f0b
commit a6b0928204
2 changed files with 43 additions and 100 deletions

View File

@@ -23,17 +23,13 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.TwentyCodes.android.LocationRinger.R;
import com.TwentyCodes.android.LocationRinger.OnContentChangedListener;
import com.TwentyCodes.android.LocationRinger.R;
import com.TwentyCodes.android.LocationRinger.db.RingerDatabase;
import com.TwentyCodes.android.LocationRinger.debug.Debug;
@@ -41,22 +37,21 @@ import com.TwentyCodes.android.LocationRinger.debug.Debug;
* This fragment will be for ringtone settings
* @author ricky
*/
public class RingtoneFragment extends Fragment implements OnClickListener, OnCheckedChangeListener, OnSeekBarChangeListener {
public class RingtoneFragment extends Fragment implements OnClickListener, OnSeekBarChangeListener {
private static final String TAG = "RingtoneFragment";
private ToggleButton mRingtoneToggle;
private String mRingtoneURI;
private final int mStream;
private final int mType;
private final OnContentChangedListener mListener;
private final String mKeyEnabled;
private final String mKeyUri;
private final String mKeyRingtone;
private final String mKeyVolume;
private final ContentValues mInfo;
private final int mLabel;
private EditText mRingtone;
private SeekBar mRingtonVolume;
private Button mRingtoneButton;
private int mStream;
private int mType;
private OnContentChangedListener mListener;
private String mKeyEnabled;
private String mKeyUri;
private String mKeyRingtone;
private String mKeyVolume;
private ContentValues mInfo;
private String mRingtoneURI;
private SeekBar mVolume;
public RingtoneFragment(ContentValues info, OnContentChangedListener listener, int stream){
super();
@@ -65,19 +60,26 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
this.mInfo = info;
switch(stream){
case AudioManager.STREAM_RING:
mKeyEnabled = RingerDatabase.KEY_RINGTONE_IS_SILENT;
mKeyUri = RingerDatabase.KEY_RINGTONE_URI;
mKeyRingtone = RingerDatabase.KEY_RINGTONE;
mKeyVolume = RingerDatabase.KEY_RINGTONE_VOLUME;
break;
case AudioManager.STREAM_NOTIFICATION:
mKeyEnabled = RingerDatabase.KEY_NOTIFICATION_IS_SILENT;
mKeyUri = RingerDatabase.KEY_NOTIFICATION_RINGTONE_URI;
mKeyRingtone = RingerDatabase.KEY_NOTIFICATION_RINGTONE;
mKeyVolume = RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME;
mLabel = R.string.notification_ringtone;
mType = RingtoneManager.TYPE_NOTIFICATION;
break;
case AudioManager.STREAM_RING:
default:
mKeyEnabled = RingerDatabase.KEY_RINGTONE_IS_SILENT;
mKeyUri = RingerDatabase.KEY_RINGTONE_URI;
mKeyRingtone = RingerDatabase.KEY_RINGTONE;
mKeyVolume = RingerDatabase.KEY_RINGTONE_VOLUME;
mLabel = R.string.ringtone;
mType = RingtoneManager.TYPE_RINGTONE;
break;
}
}
/**
@@ -88,9 +90,10 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
*/
private void getRingtoneURI(int ringtoneCode, String uri){
Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TYPE, ringtoneCode);
intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, ringtoneCode);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
if( uri == null)
try {
uri = RingtoneManager.getActualDefaultRingtoneUri(this.getActivity(), ringtoneCode).toString();
@@ -111,7 +114,9 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
Uri tone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if(tone == null){
this.mRingtone.setText(R.string.silent);
mVolume.setEnabled(false);
} else {
mVolume.setEnabled(true);
Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), Uri.parse(tone.toString()));
this.mRingtone.setText(ringtone.getTitle(this.getActivity()));
}
@@ -120,27 +125,12 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
ContentValues info = new ContentValues();
info.put(this.mKeyRingtone, this.mRingtone.getText().toString());
info.put(this.mKeyUri, tone != null ? tone.toString() : null);
info.put(mKeyEnabled, tone != null);
this.mListener.onInfoContentChanged(info);
}
}
}
/**
* Called when a toggle button's state is changed
* @author ricky barrette
*/
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
this.mRingtone.setEnabled(!isChecked);
this.mRingtoneButton.setEnabled(!isChecked);
this.mRingtonVolume.setEnabled(!isChecked);
if(this.mListener != null){
ContentValues info = new ContentValues();
info.put(this.mKeyEnabled, isChecked);
this.mListener.onInfoContentChanged(info);
}
}
/**
* Called when a view is clicked
* @author ricky barrette
@@ -163,24 +153,13 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
* initialize the views
*/
TextView label = (TextView) view.findViewById(R.id.label);
label.setText(mLabel);
this.mRingtone = (EditText) view.findViewById(R.id.ringtone);
this.mRingtoneToggle = (ToggleButton) view.findViewById(R.id.ringtone_silent_toggle);
this.mRingtonVolume = (SeekBar) view.findViewById(R.id.ringtone_volume);
this.mRingtoneButton = (Button) view.findViewById(R.id.ringtone_button);
mVolume = (SeekBar) view.findViewById(R.id.ringtone_volume);
this.mRingtoneButton.setOnClickListener(this);
this.mRingtonVolume.setMax(mAudioManager.getStreamMaxVolume(mStream));
switch(this.mStream){
case AudioManager.STREAM_RING:
label.setText(R.string.ringtone);
mType = RingtoneManager.TYPE_RINGTONE;
break;
case AudioManager.STREAM_NOTIFICATION:
label.setText(R.string.notification_ringtone);
mType = RingtoneManager.TYPE_NOTIFICATION;
break;
}
this.mRingtone.setOnClickListener(this);
mVolume.setMax(mAudioManager.getStreamMaxVolume(mStream));
/*
* ringtone & uri
@@ -188,38 +167,25 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
if(this.mInfo.containsKey(this.mKeyUri) && this.mInfo.containsKey(this.mKeyRingtone)){
this.mRingtone.setText(this.mInfo.getAsString(this.mKeyRingtone));
this.mRingtoneURI = this.mInfo.getAsString(this.mKeyUri);
this.mVolume.setEnabled(this.mInfo.getAsString(this.mKeyUri) != null);
} else
try {
this.mRingtoneURI = RingtoneManager.getActualDefaultRingtoneUri(this.getActivity(), mType).toString();
this.mRingtone.setText(RingtoneManager.getRingtone(this.getActivity(), Uri.parse(mRingtoneURI)).getTitle(this.getActivity()));
} catch (NullPointerException e) {
e.printStackTrace();
this.mRingtoneToggle.setChecked(true);
mVolume.setEnabled(false);
}
/*
* volume
*/
if(this.mInfo.containsKey(this.mKeyVolume))
this.mRingtonVolume.setProgress(Integer.parseInt(this.mInfo.getAsString(this.mKeyVolume)));
mVolume.setProgress(Integer.parseInt(this.mInfo.getAsString(this.mKeyVolume)));
else
this.mRingtonVolume.setProgress(mAudioManager.getStreamVolume(mStream));
mVolume.setProgress(mAudioManager.getStreamVolume(mStream));
/*
* silent toggle
*/
if(this.mInfo.containsKey(this.mKeyEnabled))
this.mRingtoneToggle.setChecked(!this.mInfo.getAsBoolean(this.mKeyEnabled));
else
this.mRingtoneToggle.setChecked(mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT ? true : false);
/*
* disable views if need be
*/
this.mRingtoneToggle.setOnCheckedChangeListener(this);
this.mRingtone.setEnabled(! mRingtoneToggle.isChecked());
this.mRingtonVolume.setEnabled(! mRingtoneToggle.isChecked());
this.mRingtonVolume.setOnSeekBarChangeListener(this);
mVolume.setOnSeekBarChangeListener(this);
return view;
}