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

@@ -13,29 +13,6 @@
android:text="@string/ringtone_options" android:text="@string/ringtone_options"
android:textColor="#FFFFFF" /> android:textColor="#FFFFFF" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ToggleButton
android:id="@+id/ringtone_silent_toggle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:textOff="@string/silent_disabled"
android:textOn="@string/silent_enabled" />
<Button
android:id="@+id/ringtone_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/select_tone" />
</LinearLayout>
<EditText <EditText
android:id="@+id/ringtone" android:id="@+id/ringtone"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -23,17 +23,13 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText; import android.widget.EditText;
import android.widget.SeekBar; import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView; 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.OnContentChangedListener;
import com.TwentyCodes.android.LocationRinger.R;
import com.TwentyCodes.android.LocationRinger.db.RingerDatabase; import com.TwentyCodes.android.LocationRinger.db.RingerDatabase;
import com.TwentyCodes.android.LocationRinger.debug.Debug; 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 * This fragment will be for ringtone settings
* @author ricky * @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 static final String TAG = "RingtoneFragment";
private ToggleButton mRingtoneToggle; private final int mStream;
private String mRingtoneURI; 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 EditText mRingtone;
private SeekBar mRingtonVolume; private String mRingtoneURI;
private Button mRingtoneButton; private SeekBar mVolume;
private int mStream;
private int mType;
private OnContentChangedListener mListener;
private String mKeyEnabled;
private String mKeyUri;
private String mKeyRingtone;
private String mKeyVolume;
private ContentValues mInfo;
public RingtoneFragment(ContentValues info, OnContentChangedListener listener, int stream){ public RingtoneFragment(ContentValues info, OnContentChangedListener listener, int stream){
super(); super();
@@ -65,19 +60,26 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
this.mInfo = info; this.mInfo = info;
switch(stream){ 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: case AudioManager.STREAM_NOTIFICATION:
mKeyEnabled = RingerDatabase.KEY_NOTIFICATION_IS_SILENT; mKeyEnabled = RingerDatabase.KEY_NOTIFICATION_IS_SILENT;
mKeyUri = RingerDatabase.KEY_NOTIFICATION_RINGTONE_URI; mKeyUri = RingerDatabase.KEY_NOTIFICATION_RINGTONE_URI;
mKeyRingtone = RingerDatabase.KEY_NOTIFICATION_RINGTONE; mKeyRingtone = RingerDatabase.KEY_NOTIFICATION_RINGTONE;
mKeyVolume = RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME; 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; break;
} }
} }
/** /**
@@ -90,7 +92,8 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER); Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, ringtoneCode); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, ringtoneCode);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
if( uri == null) if( uri == null)
try { try {
uri = RingtoneManager.getActualDefaultRingtoneUri(this.getActivity(), ringtoneCode).toString(); 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); Uri tone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if(tone == null){ if(tone == null){
this.mRingtone.setText(R.string.silent); this.mRingtone.setText(R.string.silent);
mVolume.setEnabled(false);
} else { } else {
mVolume.setEnabled(true);
Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), Uri.parse(tone.toString())); Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), Uri.parse(tone.toString()));
this.mRingtone.setText(ringtone.getTitle(this.getActivity())); this.mRingtone.setText(ringtone.getTitle(this.getActivity()));
} }
@@ -120,27 +125,12 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
ContentValues info = new ContentValues(); ContentValues info = new ContentValues();
info.put(this.mKeyRingtone, this.mRingtone.getText().toString()); info.put(this.mKeyRingtone, this.mRingtone.getText().toString());
info.put(this.mKeyUri, tone != null ? tone.toString() : null); info.put(this.mKeyUri, tone != null ? tone.toString() : null);
info.put(mKeyEnabled, tone != null);
this.mListener.onInfoContentChanged(info); 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 * Called when a view is clicked
* @author ricky barrette * @author ricky barrette
@@ -163,24 +153,13 @@ public class RingtoneFragment extends Fragment implements OnClickListener, OnChe
* initialize the views * initialize the views
*/ */
TextView label = (TextView) view.findViewById(R.id.label); TextView label = (TextView) view.findViewById(R.id.label);
label.setText(mLabel);
this.mRingtone = (EditText) view.findViewById(R.id.ringtone); this.mRingtone = (EditText) view.findViewById(R.id.ringtone);
this.mRingtoneToggle = (ToggleButton) view.findViewById(R.id.ringtone_silent_toggle); mVolume = (SeekBar) view.findViewById(R.id.ringtone_volume);
this.mRingtonVolume = (SeekBar) view.findViewById(R.id.ringtone_volume);
this.mRingtoneButton = (Button) view.findViewById(R.id.ringtone_button);
this.mRingtoneButton.setOnClickListener(this); this.mRingtone.setOnClickListener(this);
this.mRingtonVolume.setMax(mAudioManager.getStreamMaxVolume(mStream)); mVolume.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;
}
/* /*
* ringtone & uri * 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)){ if(this.mInfo.containsKey(this.mKeyUri) && this.mInfo.containsKey(this.mKeyRingtone)){
this.mRingtone.setText(this.mInfo.getAsString(this.mKeyRingtone)); this.mRingtone.setText(this.mInfo.getAsString(this.mKeyRingtone));
this.mRingtoneURI = this.mInfo.getAsString(this.mKeyUri); this.mRingtoneURI = this.mInfo.getAsString(this.mKeyUri);
this.mVolume.setEnabled(this.mInfo.getAsString(this.mKeyUri) != null);
} else } else
try { try {
this.mRingtoneURI = RingtoneManager.getActualDefaultRingtoneUri(this.getActivity(), mType).toString(); this.mRingtoneURI = RingtoneManager.getActualDefaultRingtoneUri(this.getActivity(), mType).toString();
this.mRingtone.setText(RingtoneManager.getRingtone(this.getActivity(), Uri.parse(mRingtoneURI)).getTitle(this.getActivity())); this.mRingtone.setText(RingtoneManager.getRingtone(this.getActivity(), Uri.parse(mRingtoneURI)).getTitle(this.getActivity()));
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
this.mRingtoneToggle.setChecked(true); mVolume.setEnabled(false);
} }
/* /*
* volume * volume
*/ */
if(this.mInfo.containsKey(this.mKeyVolume)) 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 else
this.mRingtonVolume.setProgress(mAudioManager.getStreamVolume(mStream)); mVolume.setProgress(mAudioManager.getStreamVolume(mStream));
/* mVolume.setOnSeekBarChangeListener(this);
* 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);
return view; return view;
} }