Cleaned up the Ringtone Fragment UI
closes #56 Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user