Loading packages/SystemUI/res/drawable/ic_circle_check_box.xml 0 → 100644 +26 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/checked" android:state_checked="true" android:drawable="@drawable/media_output_status_check" /> <item android:id="@+id/unchecked" android:state_checked="false" android:drawable="@drawable/ic_circular_unchecked" /> </selector> packages/SystemUI/res/drawable/ic_circular_unchecked.xml 0 → 100644 +9 −0 Original line number Diff line number Diff line <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="@color/media_dialog_inactive_item_main_content" android:pathData="M12,22q-2.075,0 -3.9,-0.788 -1.825,-0.787 -3.175,-2.137 -1.35,-1.35 -2.137,-3.175Q2,14.075 2,12t0.788,-3.9q0.787,-1.825 2.137,-3.175 1.35,-1.35 3.175,-2.137Q9.925,2 12,2t3.9,0.788q1.825,0.787 3.175,2.137 1.35,1.35 2.137,3.175Q22,9.925 22,12t-0.788,3.9q-0.787,1.825 -2.137,3.175 -1.35,1.35 -3.175,2.137Q14.075,22 12,22zM12,12zM12,20q3.325,0 5.663,-2.337Q20,15.325 20,12t-2.337,-5.662Q15.325,4 12,4T6.338,6.338Q4,8.675 4,12q0,3.325 2.338,5.663Q8.675,20 12,20z"/> </vector> packages/SystemUI/res/layout/media_output_list_item.xml +10 −20 Original line number Diff line number Diff line Loading @@ -96,26 +96,6 @@ android:textSize="14sp" android:fontFamily="@*android:string/config_bodyFontFamily" android:visibility="gone"/> <ImageView android:id="@+id/add_icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right" android:layout_marginEnd="16dp" android:layout_alignParentRight="true" android:src="@drawable/ic_add" android:tint="?android:attr/colorAccent" /> <CheckBox android:id="@+id/check_box" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right" android:layout_marginEnd="16dp" android:layout_alignParentRight="true" android:button="@drawable/ic_check_box" android:visibility="gone" /> </RelativeLayout> <ProgressBar Loading @@ -139,5 +119,15 @@ android:indeterminateOnly="true" android:importantForAccessibility="no" android:visibility="gone"/> <CheckBox android:id="@+id/check_box" android:layout_width="24dp" android:layout_height="24dp" android:layout_marginEnd="16dp" android:layout_gravity="right|center" android:button="@drawable/ic_circle_check_box" android:visibility="gone" /> </FrameLayout> </LinearLayout> No newline at end of file packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +40 −50 Original line number Diff line number Diff line Loading @@ -66,18 +66,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { if (position == size && mController.isZeroMode()) { viewHolder.onBind(CUSTOMIZED_ITEM_PAIR_NEW, false /* topMargin */, true /* bottomMargin */); } else if (mIncludeDynamicGroup) { if (position == 0) { viewHolder.onBind(CUSTOMIZED_ITEM_DYNAMIC_GROUP, true /* topMargin */, false /* bottomMargin */); } else { // When group item is added at the first(position == 0), devices will be added from // the second item(position == 1). It means that the index of device list starts // from "position - 1". viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())) .get(position - 1), false /* topMargin */, position == size /* bottomMargin */, position); } } else if (position < size) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position), position == 0 /* topMargin */, position == (size - 1) /* bottomMargin */, Loading @@ -89,11 +77,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public int getItemCount() { mIncludeDynamicGroup = mController.getSelectedMediaDevice().size() > 1; if (mController.isZeroMode() || mIncludeDynamicGroup) { // Add extra one for "pair new" or dynamic group return mController.getMediaDevices().size() + 1; } return mController.getMediaDevices().size(); } Loading @@ -115,16 +98,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mStatusIcon.setVisibility(View.GONE); mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_inactive_item_main_content)); if (currentlyConnected && mController.isActiveRemoteDevice(device) && mController.getSelectableMediaDevice().size() > 0) { // Init active device layout mAddIcon.setVisibility(View.VISIBLE); mAddIcon.setTransitionAlpha(1); mAddIcon.setOnClickListener(this::onEndItemClick); } else { // Init non-active device layout mAddIcon.setVisibility(View.GONE); } if (mCurrentActivePosition == position) { mCurrentActivePosition = -1; } Loading Loading @@ -158,6 +131,19 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { true /* showSubtitle */, true /* showStatus */); mSubTitleText.setText(R.string.media_output_dialog_connect_failed); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } else if (mController.getSelectedMediaDevice().size() > 1 && isDeviceIncluded(mController.getSelectedMediaDevice(), device)) { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content)); setSingleLineLayout(getItemTitle(device), true /* bFocused */, true /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(true); mCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { onCheckBoxClicked(false, device); }); initSessionSeekbar(); } else if (!mController.hasAdjustVolumeUserRestriction() && currentlyConnected) { mStatusIcon.setImageDrawable( mContext.getDrawable(R.drawable.media_output_status_check)); Loading @@ -168,6 +154,16 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { false /* showProgressBar */, true /* showStatus */); initSeekbar(device); mCurrentActivePosition = position; } else if (isDeviceIncluded(mController.getSelectableMediaDevice(), device)) { mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(false); mCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { onCheckBoxClicked(true, device); }); setSingleLineLayout(getItemTitle(device), false /* bFocused */, false /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } else { setSingleLineLayout(getItemTitle(device), false /* bFocused */); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); Loading @@ -181,7 +177,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_inactive_item_main_content)); mCheckBox.setVisibility(View.GONE); mAddIcon.setVisibility(View.GONE); setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new), false /* bFocused */); final Drawable d = mContext.getDrawable(R.drawable.ic_add); Loading @@ -189,28 +184,27 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { Utils.getColorAccentDefaultColor(mContext), PorterDuff.Mode.SRC_IN)); mTitleIcon.setImageDrawable(d); mContainerLayout.setOnClickListener(v -> onItemClick(CUSTOMIZED_ITEM_PAIR_NEW)); } else if (customizedItem == CUSTOMIZED_ITEM_DYNAMIC_GROUP) { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content)); mConnectedItem = mContainerLayout; mCheckBox.setVisibility(View.GONE); if (mController.getSelectableMediaDevice().size() > 0) { mAddIcon.setVisibility(View.VISIBLE); mAddIcon.setTransitionAlpha(1); mAddIcon.setOnClickListener(this::onEndItemClick); } else { mAddIcon.setVisibility(View.GONE); } mTitleIcon.setImageDrawable(getSpeakerDrawable()); final CharSequence sessionName = mController.getSessionName(); final CharSequence title = TextUtils.isEmpty(sessionName) ? mContext.getString(R.string.media_output_dialog_group) : sessionName; setTwoLineLayout(title, true /* bFocused */, true /* showSeekBar */, false /* showProgressBar */, false /* showSubtitle */); initSessionSeekbar(); } } private void onCheckBoxClicked(boolean isChecked, MediaDevice device) { if (isChecked && isDeviceIncluded(mController.getSelectableMediaDevice(), device)) { mController.addDeviceToPlayMedia(device); } else if (!isChecked && isDeviceIncluded(mController.getDeselectableMediaDevice(), device)) { mController.removeDeviceFromPlayMedia(device); } } private boolean isDeviceIncluded(List<MediaDevice> deviceList, MediaDevice targetDevice) { for (MediaDevice device : deviceList) { if (TextUtils.equals(device.getId(), targetDevice.getId())) { return true; } } return false; } private void onItemClick(View view, MediaDevice device) { if (mController.isTransferring()) { return; Loading @@ -229,9 +223,5 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mController.launchBluetoothPairing(); } } private void onEndItemClick(View view) { mController.launchMediaOutputGroupDialog(mMediaOutputDialog.getDialogView()); } } } packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +0 −2 Original line number Diff line number Diff line Loading @@ -118,7 +118,6 @@ public abstract class MediaOutputBaseAdapter extends final TextView mTwoLineTitleText; final TextView mSubTitleText; final ImageView mTitleIcon; final ImageView mAddIcon; final ProgressBar mProgressBar; final SeekBar mSeekBar; final RelativeLayout mTwoLineLayout; Loading @@ -137,7 +136,6 @@ public abstract class MediaOutputBaseAdapter extends mTitleIcon = view.requireViewById(R.id.title_icon); mProgressBar = view.requireViewById(R.id.volume_indeterminate_progress); mSeekBar = view.requireViewById(R.id.volume_seekbar); mAddIcon = view.requireViewById(R.id.add_icon); mStatusIcon = view.requireViewById(R.id.media_output_item_status); mCheckBox = view.requireViewById(R.id.check_box); } Loading Loading
packages/SystemUI/res/drawable/ic_circle_check_box.xml 0 → 100644 +26 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/checked" android:state_checked="true" android:drawable="@drawable/media_output_status_check" /> <item android:id="@+id/unchecked" android:state_checked="false" android:drawable="@drawable/ic_circular_unchecked" /> </selector>
packages/SystemUI/res/drawable/ic_circular_unchecked.xml 0 → 100644 +9 −0 Original line number Diff line number Diff line <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="@color/media_dialog_inactive_item_main_content" android:pathData="M12,22q-2.075,0 -3.9,-0.788 -1.825,-0.787 -3.175,-2.137 -1.35,-1.35 -2.137,-3.175Q2,14.075 2,12t0.788,-3.9q0.787,-1.825 2.137,-3.175 1.35,-1.35 3.175,-2.137Q9.925,2 12,2t3.9,0.788q1.825,0.787 3.175,2.137 1.35,1.35 2.137,3.175Q22,9.925 22,12t-0.788,3.9q-0.787,1.825 -2.137,3.175 -1.35,1.35 -3.175,2.137Q14.075,22 12,22zM12,12zM12,20q3.325,0 5.663,-2.337Q20,15.325 20,12t-2.337,-5.662Q15.325,4 12,4T6.338,6.338Q4,8.675 4,12q0,3.325 2.338,5.663Q8.675,20 12,20z"/> </vector>
packages/SystemUI/res/layout/media_output_list_item.xml +10 −20 Original line number Diff line number Diff line Loading @@ -96,26 +96,6 @@ android:textSize="14sp" android:fontFamily="@*android:string/config_bodyFontFamily" android:visibility="gone"/> <ImageView android:id="@+id/add_icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right" android:layout_marginEnd="16dp" android:layout_alignParentRight="true" android:src="@drawable/ic_add" android:tint="?android:attr/colorAccent" /> <CheckBox android:id="@+id/check_box" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right" android:layout_marginEnd="16dp" android:layout_alignParentRight="true" android:button="@drawable/ic_check_box" android:visibility="gone" /> </RelativeLayout> <ProgressBar Loading @@ -139,5 +119,15 @@ android:indeterminateOnly="true" android:importantForAccessibility="no" android:visibility="gone"/> <CheckBox android:id="@+id/check_box" android:layout_width="24dp" android:layout_height="24dp" android:layout_marginEnd="16dp" android:layout_gravity="right|center" android:button="@drawable/ic_circle_check_box" android:visibility="gone" /> </FrameLayout> </LinearLayout> No newline at end of file
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +40 −50 Original line number Diff line number Diff line Loading @@ -66,18 +66,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { if (position == size && mController.isZeroMode()) { viewHolder.onBind(CUSTOMIZED_ITEM_PAIR_NEW, false /* topMargin */, true /* bottomMargin */); } else if (mIncludeDynamicGroup) { if (position == 0) { viewHolder.onBind(CUSTOMIZED_ITEM_DYNAMIC_GROUP, true /* topMargin */, false /* bottomMargin */); } else { // When group item is added at the first(position == 0), devices will be added from // the second item(position == 1). It means that the index of device list starts // from "position - 1". viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())) .get(position - 1), false /* topMargin */, position == size /* bottomMargin */, position); } } else if (position < size) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position), position == 0 /* topMargin */, position == (size - 1) /* bottomMargin */, Loading @@ -89,11 +77,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public int getItemCount() { mIncludeDynamicGroup = mController.getSelectedMediaDevice().size() > 1; if (mController.isZeroMode() || mIncludeDynamicGroup) { // Add extra one for "pair new" or dynamic group return mController.getMediaDevices().size() + 1; } return mController.getMediaDevices().size(); } Loading @@ -115,16 +98,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mStatusIcon.setVisibility(View.GONE); mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_inactive_item_main_content)); if (currentlyConnected && mController.isActiveRemoteDevice(device) && mController.getSelectableMediaDevice().size() > 0) { // Init active device layout mAddIcon.setVisibility(View.VISIBLE); mAddIcon.setTransitionAlpha(1); mAddIcon.setOnClickListener(this::onEndItemClick); } else { // Init non-active device layout mAddIcon.setVisibility(View.GONE); } if (mCurrentActivePosition == position) { mCurrentActivePosition = -1; } Loading Loading @@ -158,6 +131,19 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { true /* showSubtitle */, true /* showStatus */); mSubTitleText.setText(R.string.media_output_dialog_connect_failed); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } else if (mController.getSelectedMediaDevice().size() > 1 && isDeviceIncluded(mController.getSelectedMediaDevice(), device)) { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content)); setSingleLineLayout(getItemTitle(device), true /* bFocused */, true /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(true); mCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { onCheckBoxClicked(false, device); }); initSessionSeekbar(); } else if (!mController.hasAdjustVolumeUserRestriction() && currentlyConnected) { mStatusIcon.setImageDrawable( mContext.getDrawable(R.drawable.media_output_status_check)); Loading @@ -168,6 +154,16 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { false /* showProgressBar */, true /* showStatus */); initSeekbar(device); mCurrentActivePosition = position; } else if (isDeviceIncluded(mController.getSelectableMediaDevice(), device)) { mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(false); mCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { onCheckBoxClicked(true, device); }); setSingleLineLayout(getItemTitle(device), false /* bFocused */, false /* showSeekBar */, false /* showProgressBar */, false /* showStatus */); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); } else { setSingleLineLayout(getItemTitle(device), false /* bFocused */); mContainerLayout.setOnClickListener(v -> onItemClick(v, device)); Loading @@ -181,7 +177,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_inactive_item_main_content)); mCheckBox.setVisibility(View.GONE); mAddIcon.setVisibility(View.GONE); setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new), false /* bFocused */); final Drawable d = mContext.getDrawable(R.drawable.ic_add); Loading @@ -189,28 +184,27 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { Utils.getColorAccentDefaultColor(mContext), PorterDuff.Mode.SRC_IN)); mTitleIcon.setImageDrawable(d); mContainerLayout.setOnClickListener(v -> onItemClick(CUSTOMIZED_ITEM_PAIR_NEW)); } else if (customizedItem == CUSTOMIZED_ITEM_DYNAMIC_GROUP) { mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content)); mConnectedItem = mContainerLayout; mCheckBox.setVisibility(View.GONE); if (mController.getSelectableMediaDevice().size() > 0) { mAddIcon.setVisibility(View.VISIBLE); mAddIcon.setTransitionAlpha(1); mAddIcon.setOnClickListener(this::onEndItemClick); } else { mAddIcon.setVisibility(View.GONE); } mTitleIcon.setImageDrawable(getSpeakerDrawable()); final CharSequence sessionName = mController.getSessionName(); final CharSequence title = TextUtils.isEmpty(sessionName) ? mContext.getString(R.string.media_output_dialog_group) : sessionName; setTwoLineLayout(title, true /* bFocused */, true /* showSeekBar */, false /* showProgressBar */, false /* showSubtitle */); initSessionSeekbar(); } } private void onCheckBoxClicked(boolean isChecked, MediaDevice device) { if (isChecked && isDeviceIncluded(mController.getSelectableMediaDevice(), device)) { mController.addDeviceToPlayMedia(device); } else if (!isChecked && isDeviceIncluded(mController.getDeselectableMediaDevice(), device)) { mController.removeDeviceFromPlayMedia(device); } } private boolean isDeviceIncluded(List<MediaDevice> deviceList, MediaDevice targetDevice) { for (MediaDevice device : deviceList) { if (TextUtils.equals(device.getId(), targetDevice.getId())) { return true; } } return false; } private void onItemClick(View view, MediaDevice device) { if (mController.isTransferring()) { return; Loading @@ -229,9 +223,5 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mController.launchBluetoothPairing(); } } private void onEndItemClick(View view) { mController.launchMediaOutputGroupDialog(mMediaOutputDialog.getDialogView()); } } }
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +0 −2 Original line number Diff line number Diff line Loading @@ -118,7 +118,6 @@ public abstract class MediaOutputBaseAdapter extends final TextView mTwoLineTitleText; final TextView mSubTitleText; final ImageView mTitleIcon; final ImageView mAddIcon; final ProgressBar mProgressBar; final SeekBar mSeekBar; final RelativeLayout mTwoLineLayout; Loading @@ -137,7 +136,6 @@ public abstract class MediaOutputBaseAdapter extends mTitleIcon = view.requireViewById(R.id.title_icon); mProgressBar = view.requireViewById(R.id.volume_indeterminate_progress); mSeekBar = view.requireViewById(R.id.volume_seekbar); mAddIcon = view.requireViewById(R.id.add_icon); mStatusIcon = view.requireViewById(R.id.media_output_item_status); mCheckBox = view.requireViewById(R.id.check_box); } Loading