package me.barrasso.android.volume.popup;
import android.content.ContentResolver;
import android.content.Context;
import android.media.AudioManager;
import android.provider.Settings;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.SeekBar;
import me.barrasso.android.volume.LogUtils;
import me.barrasso.android.volume.R;
import me.barrasso.android.volume.media.StreamResources;
import me.barrasso.android.volume.media.VolumePanelInfo;
import me.barrasso.android.volume.utils.AudioHelper;
import me.barrasso.android.volume.utils.Constants;
import me.barrasso.android.volume.utils.Utils;
public class OppoVolumePanel extends ParanoidVolumePanel {
public static final String TAG = OppoVolumePanel.class.getSimpleName();
public static final VolumePanelInfo<OppoVolumePanel> VOLUME_PANEL_INFO =
new VolumePanelInfo<OppoVolumePanel>(OppoVolumePanel.class);
public OppoVolumePanel(PopupWindowManager pWindowManager) {
super(pWindowManager);
}
/** Dummy divider icon that needs to vanish with the more button */
protected View mDivider;
@SuppressWarnings("deprecation")
@Override public void onCreate() {
parentOnCreate();
oneVolume = false;
Context context = getContext();
LayoutInflater inflater = LayoutInflater.from(context);
// Load default PA color if the user doesn't have a preference.
root = (ViewGroup) inflater.inflate(R.layout.oppo_volume_adjust, null);
mPanel = (ViewGroup) root.findViewById(R.id.visible_panel);
mSliderGroup = (ViewGroup) root.findViewById(R.id.slider_group);
loadSystemSettings();
if (null == mStreamControls)
mStreamControls = new SparseArray<StreamControl>(StreamResources.STREAMS.length);
// Change the icon to use for Bluetooth Music.
MusicMode.BLUETOOTH.iconResId = R.drawable.oppo_ic_audio_bt;
MusicMode.BLUETOOTH.iconMuteResId = R.drawable.oppo_ic_audio_bt_mute;
mLayout = root;
}
// Special Oppo feature: ringer icon toggles the ringer mode.
protected void ringImageClick() {
LogUtils.LOGI(TAG, "ringImageClick()");
int newMode = Utils.nextRingerMode(AudioManager.ADJUST_RAISE, mRingerMode, mAudioHelper.hasVibrator());
if (newMode != mRingerMode) {
mAudioManager.setRingerMode(newMode);
}
}
@Override
protected View.OnClickListener getStreamClickListener() {
return new View.OnClickListener() {
@Override
public void onClick(View view) {
Object tag = view.getTag();
if (tag instanceof StreamControl) {
StreamControl sc = (StreamControl) tag;
if (sc.streamType == AudioManager.STREAM_NOTIFICATION ||
sc.streamType == AudioManager.STREAM_RING) {
ringImageClick();
return;
}
}
if (view instanceof ImageView) {
launchSoundSettings();
}
}
};
}
@Override
protected void reorderSliders(final int activeStreamType) {
LogUtils.LOGI(TAG, "reorderSliders(" + activeStreamType + ')');
super.reorderSliders(activeStreamType);
StreamControl active = mStreamControls.get(activeStreamType);
if (null != active && null != active.group) {
mMoreButton = (ImageView) active.group.findViewById(R.id.expand_button);
mDivider = active.group.findViewById(R.id.divider);
}
}
@Override
protected void onUpdateSlider(ViewGroup group) {
// If we're expanded, always hide the settings & divider.
LogUtils.LOGI(TAG, "onUpdateSlider()");
if (isExpanded()) {
View more = group.findViewById(R.id.expand_button);
View divider = group.findViewById(R.id.divider);
more.setVisibility(View.GONE);
divider.setVisibility(View.GONE);
}
}
@Override public boolean isExpanded() {
return (super.isExpanded() || null != mMoreButton && mMoreButton.getVisibility() != View.VISIBLE);
}
@Override public void expand() {
LogUtils.LOGI(TAG, "expand()");
super.expand();
if (null != mMoreButton) mMoreButton.setVisibility(View.GONE);
if (null != mDivider) mDivider.setVisibility(View.GONE);
}
@Override public void collapse() {
LogUtils.LOGI(TAG, "collapse()");
super.collapse();
if (null != mMoreButton) mMoreButton.setVisibility(View.VISIBLE);
if (null != mDivider) mDivider.setVisibility(View.VISIBLE);
}
@Override public void setBackgroundColor(int bcolor) { /* No-op */ }
@Override public void setColor(int fcolor) { /* No-op */ }
@Override protected void setProgressColor(SeekBar seekbar, final int tcolor) { /* No-op */ }
@Override protected int[] getStreamIcons(StreamControl sc) {
if (sc.streamType == STREAM_BLUETOOTH_SCO)
return new int[] { R.drawable.oppo_ic_audio_bt, R.drawable.oppo_ic_audio_bt_mute };
switch (sc.streamType) {
case AudioManager.STREAM_ALARM:
return new int[] { R.drawable.oppo_ic_audio_alarm, R.drawable.oppo_ic_audio_alarm_mute };
case AudioManager.STREAM_RING:
return new int[] { R.drawable.oppo_ic_audio_ring_notif, R.drawable.oppo_ic_audio_ring_notif_mute };
case AudioManager.STREAM_NOTIFICATION:
return new int[] { R.drawable.oppo_ic_audio_notification, R.drawable.oppo_ic_audio_notification_mute };
case AudioManager.STREAM_MUSIC:
return new int[] { R.drawable.oppo_ic_audio_media, R.drawable.oppo_ic_audio_media_mute };
case AudioManager.STREAM_VOICE_CALL:
return new int[] { R.drawable.oppo_ic_audio_phone, R.drawable.oppo_ic_audio_phone };
default:
return new int[] { R.drawable.oppo_ic_audio_vol, R.drawable.oppo_ic_audio_vol_mute };
}
}
@Override protected int getItemLayout() { return R.layout.oppo_volume_adjust_item; }
@Override protected int getVibrateIcon() { return R.drawable.oppo_ic_audio_ring_notif_vibrate; }
@Override protected int getSilentIcon() { return R.drawable.oppo_ic_audio_ring_notif_mute; }
@Override protected int getExpandedIcon() { return R.drawable.oppo_volume_panel_expand_settings; }
@Override protected int getCollapsedIcon() { return getExpandedIcon(); }
@Override public WindowManager.LayoutParams getWindowLayoutParams() {
WindowManager.LayoutParams WPARAMS = super.getWindowLayoutParams();
WPARAMS.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
WPARAMS.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
WPARAMS.y = getResources().getDimensionPixelSize(R.dimen.volume_panel_top);
return WPARAMS;
}
}