Settings: Add effects suppression text to Ring volume.
If the effects are being muted by a notification listener, display a "Muted by <x>" msg instead of an active slider inside the Ring/Notification volume setting pref. Update volume pref design to optimize for this new custom appearance. Depends on frameworks/base: Icdb5f85eb4bcaa1ead7d77c1460e06ad3f0604d5 Bug: 17461563 Change-Id: I6da871e16009370402451a2ff507de4762644a80
This commit is contained in:
@@ -23,14 +23,18 @@ import android.net.Uri;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.preference.SeekBarPreference;
|
||||
import android.preference.SeekBarVolumizer;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/** A slider preference that directly controls an audio stream volume (no dialog) **/
|
||||
public class VolumeSeekBarPreference extends SeekBarPreference
|
||||
implements PreferenceManager.OnActivityStopListener {
|
||||
@@ -41,10 +45,13 @@ public class VolumeSeekBarPreference extends SeekBarPreference
|
||||
private SeekBarVolumizer mVolumizer;
|
||||
private Callback mCallback;
|
||||
private ImageView mIconView;
|
||||
private TextView mSuppressionTextView;
|
||||
private String mSuppressionText;
|
||||
|
||||
public VolumeSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
setLayoutResource(R.layout.preference_volume_slider);
|
||||
}
|
||||
|
||||
public VolumeSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
@@ -108,13 +115,14 @@ public class VolumeSeekBarPreference extends SeekBarPreference
|
||||
mVolumizer.start();
|
||||
mVolumizer.setSeekBar(mSeekBar);
|
||||
mIconView = (ImageView) view.findViewById(com.android.internal.R.id.icon);
|
||||
mSuppressionTextView = (TextView) view.findViewById(R.id.suppression_text);
|
||||
mCallback.onStreamValueChanged(mStream, mSeekBar.getProgress());
|
||||
updateSuppressionText();
|
||||
}
|
||||
|
||||
// during initialization, this preference is the SeekBar listener
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress,
|
||||
boolean fromTouch) {
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
|
||||
super.onProgressChanged(seekBar, progress, fromTouch);
|
||||
mCallback.onStreamValueChanged(mStream, progress);
|
||||
}
|
||||
@@ -133,6 +141,21 @@ public class VolumeSeekBarPreference extends SeekBarPreference
|
||||
+ "/" + R.raw.media_volume);
|
||||
}
|
||||
|
||||
public void setSuppressionText(String text) {
|
||||
if (Objects.equals(text, mSuppressionText)) return;
|
||||
mSuppressionText = text;
|
||||
updateSuppressionText();
|
||||
}
|
||||
|
||||
private void updateSuppressionText() {
|
||||
if (mSuppressionTextView != null && mSeekBar != null) {
|
||||
mSuppressionTextView.setText(mSuppressionText);
|
||||
final boolean showSuppression = !TextUtils.isEmpty(mSuppressionText);
|
||||
mSuppressionTextView.setVisibility(showSuppression ? View.VISIBLE : View.INVISIBLE);
|
||||
mSeekBar.setVisibility(showSuppression ? View.INVISIBLE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
void onSampleStarting(SeekBarVolumizer sbv);
|
||||
void onStreamValueChanged(int stream, int progress);
|
||||
|
Reference in New Issue
Block a user