- refactor application setting to use paged list view
- refactor sound setting to use paged list view
- removed unused UI classes
- ui changes according to spec
Test: manually verified
Change-Id: Iace0f88ed627621682d0e6c0cb0c07badc466076
diff --git a/src/com/android/car/settings/applications/ApplicationDetailActivity.java b/src/com/android/car/settings/applications/ApplicationDetailActivity.java
index ac071f0..a5bc882 100644
--- a/src/com/android/car/settings/applications/ApplicationDetailActivity.java
+++ b/src/com/android/car/settings/applications/ApplicationDetailActivity.java
@@ -38,6 +38,7 @@
import android.widget.ImageView;
import android.widget.TextView;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.CarSettingActivity;
import com.android.car.settings.R;
@@ -55,6 +56,9 @@
*/
public class ApplicationDetailActivity extends CarSettingActivity {
private static final String TAG = "AppDetailActivity";
+ /**
+ * Key for ResolvedInfo in bundle passed in.
+ */
public static final String APPLICATION_INFO_KEY = "APPLICATION_INFO_KEY";
private ResolveInfo mResolveInfo;
@@ -246,17 +250,15 @@
}
};
- private OnClickListener mPermissionClickedListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // start new activity to manage app permissions
- Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
- intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mResolveInfo.activityInfo.packageName);
- try {
- startActivity(intent);
- } catch (ActivityNotFoundException e) {
- Log.w(TAG, "No app can handle android.intent.action.MANAGE_APP_PERMISSIONS");
- }
+ private OnClickListener mPermissionClickedListener = (v) -> {
+ // start new activity to manage app permissions
+ Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mResolveInfo.activityInfo.packageName);
+ try {
+ startActivity(intent, AnimationUtil.slideInFromRightOption(
+ ApplicationDetailActivity.this).toBundle());
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, "No app can handle android.intent.action.MANAGE_APP_PERMISSIONS");
}
};
}
diff --git a/src/com/android/car/settings/applications/ApplicationLineItem.java b/src/com/android/car/settings/applications/ApplicationLineItem.java
new file mode 100644
index 0000000..48625c6
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationLineItem.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 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
+ */
+
+package com.android.car.settings.applications;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.widget.ImageView;
+
+import com.android.car.settings.common.AnimationUtil;
+import com.android.car.settings.common.IconTextLineItem;
+
+/**
+ * Represents an application in application settings page.
+ */
+public class ApplicationLineItem extends IconTextLineItem {
+ private final ResolveInfo mResolveInfo;
+ private final Context mContext;
+ private final PackageManager mPm;
+
+ public ApplicationLineItem(
+ @NonNull Context context, PackageManager pm, ResolveInfo resolveInfo) {
+ super(resolveInfo.loadLabel(pm));
+ mContext = context;
+ mPm = pm;
+ mResolveInfo = resolveInfo;
+ }
+
+
+ @Override
+ public void onClick() {
+ Intent intent = new Intent(mContext, ApplicationDetailActivity.class);
+ intent.putExtra(
+ ApplicationDetailActivity.APPLICATION_INFO_KEY, mResolveInfo);
+ mContext.startActivity(
+ intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
+ @Override
+ public CharSequence getDesc() {
+ return null;
+ }
+
+ @Override
+ public void setIcon(ImageView iconView) {
+ iconView.setImageDrawable(mResolveInfo.loadIcon(mPm));
+ }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationListAdapter.java b/src/com/android/car/settings/applications/ApplicationListAdapter.java
index 0076d4c..625cf73 100644
--- a/src/com/android/car/settings/applications/ApplicationListAdapter.java
+++ b/src/com/android/car/settings/applications/ApplicationListAdapter.java
@@ -27,8 +27,11 @@
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+
import com.android.car.settings.R;
import com.android.car.view.PagedListView;
+import com.android.car.settings.common.AnimationUtil;
+
import java.util.Collections;
import java.util.List;
@@ -85,7 +88,8 @@
Intent intent = new Intent(mContext, ApplicationDetailActivity.class);
intent.putExtra(
ApplicationDetailActivity.APPLICATION_INFO_KEY, resolveInfo);
- mContext.startActivity(intent);
+ mContext.startActivity(
+ intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
};
@@ -93,7 +97,7 @@
public ApplicationListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.list_item, parent, false);
+ .inflate(R.layout.icon_widget_line_item, parent, false);
return new ViewHolder(v);
}
diff --git a/src/com/android/car/settings/applications/ApplicationSettingsActivity.java b/src/com/android/car/settings/applications/ApplicationSettingsActivity.java
index bd6ca2a..ed0b19a 100644
--- a/src/com/android/car/settings/applications/ApplicationSettingsActivity.java
+++ b/src/com/android/car/settings/applications/ApplicationSettingsActivity.java
@@ -15,32 +15,39 @@
*/
package com.android.car.settings.applications;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
-import com.android.car.settings.common.CarSettingActivity;
-import com.android.car.settings.R;
-import com.android.car.settings.common.NoDividerItemDecoration;
-import com.android.car.view.PagedListView;
+
+import com.android.car.settings.common.ListSettingsActivity;
+import com.android.car.settings.common.TypedPagedListAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Lists all installed applications and their summary.
*/
-public class ApplicationSettingsActivity extends CarSettingActivity {
- private static final String TAG = "ApplicationSettingsActivity";
-
- private PagedListView mListView;
- private ApplicationListAdapter mAdapter;
+public class ApplicationSettingsActivity extends ListSettingsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.paged_list);
-
- mListView = (PagedListView) findViewById(R.id.list);
- mListView.setDefaultItemDecoration(new NoDividerItemDecoration(this));
- mListView.setDarkMode();
- mAdapter = new ApplicationListAdapter(this /* context */, getPackageManager());
- mListView.setAdapter(mAdapter);
}
+ @Override
+ public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
+ PackageManager pm = getPackageManager();
+ Intent intent= new Intent(Intent.ACTION_MAIN);
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
+ List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent,
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_DISABLED_COMPONENTS);
+ ArrayList<TypedPagedListAdapter.LineItem> items = new ArrayList<>();
+ for (ResolveInfo resolveInfo : resolveInfos) {
+ items.add(new ApplicationLineItem(this, pm, resolveInfo));
+ }
+ return items;
+ }
}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java
index 2449746..c472c85 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java
@@ -39,6 +39,7 @@
import com.android.car.settings.R;
import com.android.car.view.PagedListView;
+import com.android.car.settings.common.AnimationUtil;
import com.android.settingslib.bluetooth.BluetoothCallback;
import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -160,7 +161,7 @@
((TextView) v).setText(R.string.bluetooth_preference_found_devices);
break;
default:
- v = layoutInflater.inflate(R.layout.list_item, parent, false);
+ v = layoutInflater.inflate(R.layout.icon_widget_line_item, parent, false);
}
return new ViewHolder(v);
}
@@ -202,7 +203,8 @@
Intent intent = new Intent(mContext, BluetoothDetailActivity.class);
intent.putExtra(
BluetoothDetailActivity.BT_DEVICE_KEY, bluetoothDevice.getDevice());
- mContext.startActivity(intent);
+ mContext.startActivity(
+ intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
});
} else {
holder.mActionButton.setVisibility(View.GONE);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothSettingsActivity.java b/src/com/android/car/settings/bluetooth/BluetoothSettingsActivity.java
index ed09b4d..15ca09e 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothSettingsActivity.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothSettingsActivity.java
@@ -16,8 +16,6 @@
package com.android.car.settings.bluetooth;
import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.graphics.Canvas;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@@ -81,7 +79,7 @@
}
mLocalAdapter = mLocalManager.getBluetoothAdapter();
- mDeviceListView.setDefaultItemDecoration(new ItemDecoration(this));
+ mDeviceListView.setDefaultItemDecoration(new PagedListView.Decoration(this));
// Set this to light mode, since the scroll bar buttons always appear
// on top of a dark scrim.
mDeviceListView.setDarkMode();
@@ -188,17 +186,4 @@
mProgressBar.setVisibility(visible ? View.VISIBLE : View.GONE);
}
}
-
- /**
- * Default {@link com.android.car.view.PagedListView.Decoration} for the {@link PagedListView}
- * that removes the dividing lines between items.
- */
- private static class ItemDecoration extends PagedListView.Decoration {
- public ItemDecoration(Context context) {
- super(context);
- }
-
- @Override
- public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {}
- }
}
diff --git a/src/com/android/car/settings/common/AnimationUtil.java b/src/com/android/car/settings/common/AnimationUtil.java
new file mode 100644
index 0000000..4966c67
--- /dev/null
+++ b/src/com/android/car/settings/common/AnimationUtil.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 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
+ */
+
+package com.android.car.settings.common;
+
+import android.app.ActivityOptions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+
+/**
+ * Contains util function for animations.
+ */
+public class AnimationUtil {
+ private AnimationUtil() {
+ }
+
+ /**
+ * Animation that slide the new activity in from right.
+ */
+ public static ActivityOptions slideInFromRightOption(Context context) {
+ return ActivityOptions.makeCustomAnimation(
+ context, R.anim.trans_right_in , R.anim.trans_fade_out);
+ }
+}
diff --git a/src/com/android/car/settings/common/CarSettingActivity.java b/src/com/android/car/settings/common/CarSettingActivity.java
index b680e43..642ea30 100644
--- a/src/com/android/car/settings/common/CarSettingActivity.java
+++ b/src/com/android/car/settings/common/CarSettingActivity.java
@@ -17,9 +17,9 @@
import android.app.Activity;
import android.os.Bundle;
-import android.support.v4.app.NavUtils;
import android.view.MenuItem;
+import com.android.car.settings.R;
/**
* Base activity class for car settings, provides a action bar with a back button that goes to
@@ -47,6 +47,7 @@
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
+ overridePendingTransition(R.anim.trans_fade_in, R.anim.trans_right_out);
return true;
}
return super.onOptionsItemSelected(item);
diff --git a/src/com/android/car/settings/common/IconTextLineItem.java b/src/com/android/car/settings/common/IconTextLineItem.java
index 62e8650..2c0f7c3 100644
--- a/src/com/android/car/settings/common/IconTextLineItem.java
+++ b/src/com/android/car/settings/common/IconTextLineItem.java
@@ -16,7 +16,6 @@
package com.android.car.settings.common;
-import android.annotation.DrawableRes;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -33,14 +32,11 @@
public abstract class IconTextLineItem
extends TypedPagedListAdapter.LineItem<IconTextLineItem.ViewHolder> {
private final CharSequence mTitle;
- @DrawableRes
- private final int mIconRes;
private View.OnClickListener mOnClickListener = (v) -> onClick();
- public IconTextLineItem(CharSequence title, @DrawableRes int iconRes) {
+ public IconTextLineItem(CharSequence title) {
mTitle = title;
- mIconRes = iconRes;
}
@Override
@@ -51,7 +47,7 @@
@Override
public void bindViewHolder(ViewHolder viewHolder) {
viewHolder.titleView.setText(mTitle);
- viewHolder.iconView.setImageResource(mIconRes);
+ setIcon(viewHolder.iconView);
CharSequence desc = getDesc();
if (TextUtils.isEmpty(desc)) {
viewHolder.descView.setVisibility(View.GONE);
@@ -60,19 +56,27 @@
viewHolder.descView.setText(desc);
}
viewHolder.itemView.setOnClickListener(mOnClickListener);
- viewHolder.itemView.setEnabled(isEnabled());
+ if (isEnabled()) {
+ viewHolder.itemView.setEnabled(true);
+ viewHolder.rightArrow.setVisibility(View.VISIBLE);
+ } else {
+ viewHolder.itemView.setEnabled(false);
+ viewHolder.rightArrow.setVisibility(View.GONE);
+ }
}
static class ViewHolder extends RecyclerView.ViewHolder {
final TextView titleView;
final TextView descView;
final ImageView iconView;
+ final ImageView rightArrow;
public ViewHolder(View view) {
super(view);
iconView = (ImageView) view.findViewById(R.id.icon);
titleView = (TextView) view.findViewById(R.id.title);
descView = (TextView) view.findViewById(R.id.desc);
+ rightArrow = (ImageView) view.findViewById(R.id.right_chevron);
}
}
@@ -82,6 +86,8 @@
return new ViewHolder(v);
}
+ public abstract void setIcon(ImageView iconView);
+
public abstract void onClick();
public abstract boolean isEnabled();
diff --git a/src/com/android/car/settings/common/IconToggleLineItem.java b/src/com/android/car/settings/common/IconToggleLineItem.java
index ba56ab9..83b82cd 100644
--- a/src/com/android/car/settings/common/IconToggleLineItem.java
+++ b/src/com/android/car/settings/common/IconToggleLineItem.java
@@ -33,7 +33,7 @@
*/
public abstract class IconToggleLineItem
extends TypedPagedListAdapter.LineItem<IconToggleLineItem.ViewHolder> {
- private final Context mContext;
+ protected final Context mContext;
private final CharSequence mTitle;
protected IconUpdateListener mIconUpdateListener;
@@ -88,7 +88,7 @@
public static RecyclerView.ViewHolder createViewHolder(ViewGroup parent) {
View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.tile_item, parent, false);
+ .inflate(R.layout.icon_toggle_line_item, parent, false);
return new ViewHolder(v);
}
diff --git a/src/com/android/car/settings/common/ListSettingsActivity.java b/src/com/android/car/settings/common/ListSettingsActivity.java
index f9c5745..9088c3a 100644
--- a/src/com/android/car/settings/common/ListSettingsActivity.java
+++ b/src/com/android/car/settings/common/ListSettingsActivity.java
@@ -34,10 +34,10 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.paged_list);
+ setContentView(R.layout.list);
mListView = (PagedListView) findViewById(R.id.list);
- mListView.setDefaultItemDecoration(new NoDividerItemDecoration(this));
+ mListView.setDefaultItemDecoration(getDecoration());
mListView.setDarkMode();
mPagedListAdapter = new TypedPagedListAdapter(this /* context */, getLineItems());
mListView.setAdapter(mPagedListAdapter);
@@ -47,4 +47,11 @@
* Gets a List of LineItems to show up in this activity.
*/
public abstract ArrayList<TypedPagedListAdapter.LineItem> getLineItems();
+
+ /**
+ * Gets decoration for the list view.
+ */
+ protected PagedListView.Decoration getDecoration() {
+ return new PagedListView.Decoration(this);
+ }
}
diff --git a/src/com/android/car/settings/common/SeekbarLineItem.java b/src/com/android/car/settings/common/SeekbarLineItem.java
index 294a248..1140f02 100644
--- a/src/com/android/car/settings/common/SeekbarLineItem.java
+++ b/src/com/android/car/settings/common/SeekbarLineItem.java
@@ -64,7 +64,7 @@
public void bindViewHolder(ViewHolder viewHolder) {
viewHolder.titleView.setText(mTitle);
viewHolder.seekBar.setMax(getMaxSeekbarValue());
- viewHolder.seekBar.setProgress(getInitialSeekbarValue());
+ viewHolder.seekBar.setProgress(getSeekbarValue());
viewHolder.seekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
}
@@ -91,7 +91,7 @@
return null;
}
- public abstract int getInitialSeekbarValue();
+ public abstract int getSeekbarValue();
public abstract int getMaxSeekbarValue();
diff --git a/src/com/android/car/settings/common/SimpleIconLineItem.java b/src/com/android/car/settings/common/SimpleIconLineItem.java
index 9830f2e..967464e 100644
--- a/src/com/android/car/settings/common/SimpleIconLineItem.java
+++ b/src/com/android/car/settings/common/SimpleIconLineItem.java
@@ -16,6 +16,7 @@
package com.android.car.settings.common;
+import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
@@ -25,6 +26,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
import com.android.car.settings.R;
@@ -35,6 +37,7 @@
private final CharSequence mDesc;
private final Context mContext;
private final Class mActivityClass;
+ private final @DrawableRes int mIconRes;
public SimpleIconLineItem(
@StringRes int title,
@@ -42,21 +45,22 @@
Context context,
CharSequence desc,
Class activityClass) {
- super(context.getText(title), iconRes);
+ super(context.getText(title));
mDesc = desc;
mContext = context;
mActivityClass = activityClass;
+ mIconRes = iconRes;
}
@Override
- public int getType() {
- return SIMPLE_ICON_TEXT_TYPE;
+ public void setIcon(ImageView iconView) {
+ iconView.setImageResource(mIconRes);
}
@Override
public void onClick() {
Intent intent = new Intent(mContext, mActivityClass);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
@Override
@@ -68,10 +72,4 @@
public CharSequence getDesc() {
return mDesc;
}
-
- public static RecyclerView.ViewHolder createViewHolder(ViewGroup parent) {
- View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.tile_item, parent, false);
- return new ViewHolder(v);
- }
}
diff --git a/src/com/android/car/settings/common/TypedPagedListAdapter.java b/src/com/android/car/settings/common/TypedPagedListAdapter.java
index a12afc4..69188aa 100644
--- a/src/com/android/car/settings/common/TypedPagedListAdapter.java
+++ b/src/com/android/car/settings/common/TypedPagedListAdapter.java
@@ -40,9 +40,9 @@
private static final String TAG = "TypedPagedListAdapter";
private final Context mContext;
- private final ArrayList<LineItem> mContentList;
+ private final ArrayList<? extends LineItem> mContentList;
- public TypedPagedListAdapter(@NonNull Context context, ArrayList<LineItem> contentList) {
+ public TypedPagedListAdapter(@NonNull Context context, ArrayList<? extends LineItem> contentList) {
mContext = context;
mContentList = contentList;
}
@@ -57,8 +57,7 @@
TOGGLE_TYPE,
ICON_TEXT_TYPE,
SEEKBAR_TYPE,
- ICON_TOGGLE_TYPE,
- SIMPLE_ICON_TEXT_TYPE})
+ ICON_TOGGLE_TYPE})
public @interface LineItemType {}
// with one title and one description
@@ -76,9 +75,6 @@
// with one icon, title, description and a toggle.
static final int ICON_TOGGLE_TYPE = 5;
- // similar to ICON_TEXT_TYPE, but with a different layout.
- static final int SIMPLE_ICON_TEXT_TYPE = 6;
-
@LineItemType
abstract int getType();
@@ -100,8 +96,6 @@
return SeekbarLineItem.createViewHolder(parent);
case LineItem.ICON_TOGGLE_TYPE:
return IconToggleLineItem.createViewHolder(parent);
- case LineItem.SIMPLE_ICON_TEXT_TYPE:
- return SimpleIconLineItem.createViewHolder(parent);
default:
throw new IllegalStateException("ViewType not supported: " + viewType);
}
diff --git a/src/com/android/car/settings/datetime/SetDateLineItem.java b/src/com/android/car/settings/datetime/SetDateLineItem.java
index fe86955..2f77044 100644
--- a/src/com/android/car/settings/datetime/SetDateLineItem.java
+++ b/src/com/android/car/settings/datetime/SetDateLineItem.java
@@ -22,6 +22,7 @@
import android.text.format.DateFormat;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.TextLineItem;
import com.android.settingslib.datetime.ZoneGetter;
@@ -53,6 +54,6 @@
@Override
public void onClick() {
Intent intent = new Intent(mContext /* context */, DatePickerActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
}
diff --git a/src/com/android/car/settings/datetime/SetTimeLineItem.java b/src/com/android/car/settings/datetime/SetTimeLineItem.java
index 958f526..25b3944 100644
--- a/src/com/android/car/settings/datetime/SetTimeLineItem.java
+++ b/src/com/android/car/settings/datetime/SetTimeLineItem.java
@@ -22,6 +22,7 @@
import android.text.format.DateFormat;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.TextLineItem;
import com.android.settingslib.datetime.ZoneGetter;
@@ -53,6 +54,6 @@
@Override
public void onClick() {
Intent intent = new Intent(mContext, TimePickerActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
}
diff --git a/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java b/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java
index 789f5d9..c67b2a6 100644
--- a/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java
+++ b/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java
@@ -21,6 +21,7 @@
import android.provider.Settings;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.TextLineItem;
import com.android.settingslib.datetime.ZoneGetter;
@@ -53,6 +54,6 @@
@Override
public void onClick() {
Intent intent = new Intent(mContext, TimeZonePickerActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
}
diff --git a/src/com/android/car/settings/datetime/TimeZoneListAdapter.java b/src/com/android/car/settings/datetime/TimeZoneListAdapter.java
index 80eb3f3..db3b009 100644
--- a/src/com/android/car/settings/datetime/TimeZoneListAdapter.java
+++ b/src/com/android/car/settings/datetime/TimeZoneListAdapter.java
@@ -91,7 +91,7 @@
public TimeZoneListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.time_zone_list_item, parent, false);
+ .inflate(R.layout.text_line_item, parent, false);
return new ViewHolder(v);
}
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerActivity.java b/src/com/android/car/settings/datetime/TimeZonePickerActivity.java
index b97bca2..e94b200 100644
--- a/src/com/android/car/settings/datetime/TimeZonePickerActivity.java
+++ b/src/com/android/car/settings/datetime/TimeZonePickerActivity.java
@@ -22,7 +22,6 @@
import com.android.car.settings.common.CarSettingActivity;
import com.android.car.settings.R;
import com.android.car.view.PagedListView;
-import com.android.car.settings.common.NoDividerItemDecoration;
/**
* Lists all time zone and its offset from GMT.
@@ -37,7 +36,7 @@
setContentView(R.layout.list);
PagedListView listView = (PagedListView) findViewById(android.R.id.list);
- listView.setDefaultItemDecoration(new NoDividerItemDecoration(this /* context */));
+ listView.setDefaultItemDecoration(new PagedListView.Decoration(this /* context */));
listView.setDarkMode();
TimeZoneListAdapter adapter = new TimeZoneListAdapter(
this /* context */, this /* TimeZoneChangeListener */);
diff --git a/src/com/android/car/settings/display/BrightnessLineItem.java b/src/com/android/car/settings/display/BrightnessLineItem.java
index c6ee785..27cf350 100644
--- a/src/com/android/car/settings/display/BrightnessLineItem.java
+++ b/src/com/android/car/settings/display/BrightnessLineItem.java
@@ -40,7 +40,7 @@
}
@Override
- public int getInitialSeekbarValue() {
+ public int getSeekbarValue() {
int currentBrightness = 0;
try {
currentBrightness = Settings.System.getInt(mContext.getContentResolver(),
diff --git a/src/com/android/car/settings/home/BluetoothLineItem.java b/src/com/android/car/settings/home/BluetoothLineItem.java
index 9de21b9..d5026f4 100644
--- a/src/com/android/car/settings/home/BluetoothLineItem.java
+++ b/src/com/android/car/settings/home/BluetoothLineItem.java
@@ -24,6 +24,7 @@
import com.android.car.settings.R;
import com.android.car.settings.bluetooth.BluetoothSettingsActivity;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.IconToggleLineItem;
@@ -31,14 +32,13 @@
* Represents the Bluetooth line item on settings home page.
*/
public class BluetoothLineItem extends IconToggleLineItem {
- private final Context mContext;
private BluetoothAdapter mBluetoothAdapter;
public BluetoothLineItem(Context context) {
super(context.getText(R.string.bluetooth_settings), context);
- mContext = context;
- mBluetoothAdapter = ((BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE))
- .getAdapter();
+ mBluetoothAdapter =
+ ((BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE))
+ .getAdapter();
}
@Override
@@ -53,7 +53,7 @@
@Override
public void onClicked() {
Intent intent = new Intent(mContext, BluetoothSettingsActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
@Override
diff --git a/src/com/android/car/settings/home/HomepageActivity.java b/src/com/android/car/settings/home/HomepageActivity.java
index ce59b73..7891c9a 100644
--- a/src/com/android/car/settings/home/HomepageActivity.java
+++ b/src/com/android/car/settings/home/HomepageActivity.java
@@ -110,7 +110,7 @@
R.drawable.ic_settings_display,
this,
null,
- DatetimeSettingsActivity.class));
+ DisplaySettingsActivity.class));
lineItems.add(new SimpleIconLineItem(
R.string.sound_settings,
R.drawable.ic_settings_sound,
@@ -126,11 +126,11 @@
null,
ApplicationSettingsActivity.class));
lineItems.add(new SimpleIconLineItem(
- R.string.display_settings,
- R.drawable.ic_settings_display,
+ R.string.date_and_time_settings_title,
+ R.drawable.ic_settings_date_time,
this,
null,
- DisplaySettingsActivity.class));
+ DatetimeSettingsActivity.class));
lineItems.add(new SimpleIconLineItem(
R.string.system_setting_title,
R.drawable.ic_settings_about,
diff --git a/src/com/android/car/settings/home/WifiLineItem.java b/src/com/android/car/settings/home/WifiLineItem.java
index 39c2616..b6a1c82 100644
--- a/src/com/android/car/settings/home/WifiLineItem.java
+++ b/src/com/android/car/settings/home/WifiLineItem.java
@@ -23,6 +23,7 @@
import android.net.wifi.WifiManager;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.IconToggleLineItem;
import com.android.car.settings.wifi.CarWifiManager;
import com.android.car.settings.wifi.WifiSettingsActivity;
@@ -49,7 +50,7 @@
@Override
public void onClicked() {
Intent intent = new Intent(mContext, WifiSettingsActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
@Override
diff --git a/src/com/android/car/settings/sound/SoundSettingsActivity.java b/src/com/android/car/settings/sound/SoundSettingsActivity.java
index 07c9d97..37551bd 100644
--- a/src/com/android/car/settings/sound/SoundSettingsActivity.java
+++ b/src/com/android/car/settings/sound/SoundSettingsActivity.java
@@ -16,15 +16,23 @@
package com.android.car.settings.sound;
import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.media.CarAudioManager;
import android.content.ComponentName;
import android.content.ServiceConnection;
import android.media.AudioManager;
+import android.media.IVolumeController;
import android.os.Bundle;
import android.os.IBinder;
-import android.view.View;
+import android.os.RemoteException;
+import android.util.Log;
import com.android.car.settings.common.CarSettingActivity;
+import com.android.car.settings.common.TypedPagedListAdapter;
import com.android.car.settings.R;
+import com.android.car.view.PagedListView;
+
+import java.util.ArrayList;
/**
* Activity hosts sound related settings.
@@ -32,51 +40,59 @@
public class SoundSettingsActivity extends CarSettingActivity {
private static final String TAG = "SoundSettingsActivity";
private Car mCar;
+ private CarAudioManager mCarAudioManager;
+ private PagedListView mListView;
+ private TypedPagedListAdapter mPagedListAdapter;
- private VolumeControllerPresenter mMediaVolumeControllerPresenter;
- private VolumeControllerPresenter mRingVolumeControllerPresenter;
+ private final ArrayList<VolumeLineItem> mVolumeLineItems = new ArrayList<>();
+ private final SoundSettingsActivity.VolumnCallback
+ mVolumeCallback = new SoundSettingsActivity.VolumnCallback();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.volume_list);
-
- View mediaVolumeControllerView = findViewById(
- R.id.media_volume);
- View ringVolumeControllerView = findViewById(
- R.id.ring_volume);
- mMediaVolumeControllerPresenter = new VolumeControllerPresenter(
- this /* context*/,
- mediaVolumeControllerView,
- AudioManager.STREAM_MUSIC,
- null /* Uri sampleUri */,
- R.string.media_volume_title,
- com.android.internal.R.drawable.ic_audio_media);
- mRingVolumeControllerPresenter = new VolumeControllerPresenter(
- this /* context*/,
- ringVolumeControllerView,
- AudioManager.STREAM_RING,
- null /* Uri sampleUri */,
- R.string.ring_volume_title,
- com.android.internal.R.drawable.ic_audio_ring_notif);
- mCar = Car.createCar(this /* context */, mServiceConnection);
- }
-
- ServiceConnection mServiceConnection = new ServiceConnection() {
+ private final ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- mMediaVolumeControllerPresenter.onServiceConnected(mCar);
- mRingVolumeControllerPresenter.onServiceConnected(mCar);
+ try {
+ mCarAudioManager = (CarAudioManager) mCar.getCarManager(Car.AUDIO_SERVICE);
+ mCarAudioManager.setVolumeController(mVolumeCallback);
+ } catch (CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ }
+ for (VolumeLineItem item : mVolumeLineItems) {
+ item.setCarAudioManager(mCarAudioManager);
+ }
+ mListView = (PagedListView) findViewById(R.id.list);
+ mListView.setDefaultItemDecoration(
+ new PagedListView.Decoration(SoundSettingsActivity.this));
+ mListView.setDarkMode();
+ mPagedListAdapter = new TypedPagedListAdapter(
+ SoundSettingsActivity.this /* context */, mVolumeLineItems);
+ mListView.setAdapter(mPagedListAdapter);
}
@Override
public void onServiceDisconnected(ComponentName name) {
- mMediaVolumeControllerPresenter.onServiceDisconnected();
- mRingVolumeControllerPresenter.onServiceDisconnected();
+ mCarAudioManager = null;
}
};
@Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.list);
+ mVolumeLineItems.add(new VolumeLineItem(
+ SoundSettingsActivity.this,
+ AudioManager.STREAM_MUSIC,
+ R.string.media_volume_title,
+ com.android.internal.R.drawable.ic_audio_media));
+ mVolumeLineItems.add(new VolumeLineItem(
+ SoundSettingsActivity.this,
+ AudioManager.STREAM_RING,
+ R.string.ring_volume_title,
+ com.android.internal.R.drawable.ic_audio_ring_notif));
+ mCar = Car.createCar(this /* context */, mServiceConnection);
+ }
+
+ @Override
public void onStart() {
super.onStart();
mCar.connect();
@@ -85,8 +101,46 @@
@Override
public void onStop() {
super.onStop();
- mMediaVolumeControllerPresenter.stop();
- mRingVolumeControllerPresenter.stop();
+ for (VolumeLineItem item : mVolumeLineItems) {
+ item.stop();
+ }
mCar.disconnect();
}
+
+ /**
+ * The interface has a terrible name, it is actually a callback, so here name it accordingly.
+ */
+ private final class VolumnCallback extends IVolumeController.Stub {
+ @Override
+ public void displaySafeVolumeWarning(int flags) throws RemoteException {
+ }
+
+ @Override
+ public void volumeChanged(int streamType, int flags) throws RemoteException {
+ for (VolumeLineItem item : mVolumeLineItems) {
+ if (streamType == item.getStreamType()) {
+ break;
+ }
+ return;
+ }
+ mPagedListAdapter.notifyDataSetChanged();
+ }
+
+ // this is not mute of this stream
+ @Override
+ public void masterMuteChanged(int flags) throws RemoteException {
+ }
+
+ @Override
+ public void setLayoutDirection(int layoutDirection) throws RemoteException {
+ }
+
+ @Override
+ public void dismiss() throws RemoteException {
+ }
+
+ @Override
+ public void setA11yMode(int mode) {
+ }
+ }
}
diff --git a/src/com/android/car/settings/sound/VolumeControllerPresenter.java b/src/com/android/car/settings/sound/VolumeControllerPresenter.java
deleted file mode 100644
index cd7a2a5..0000000
--- a/src/com/android/car/settings/sound/VolumeControllerPresenter.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.car.settings.sound;
-
-import android.car.Car;
-import android.car.CarNotConnectedException;
-import android.car.media.CarAudioManager;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.ServiceConnection;
-import android.media.AudioManager;
-import android.media.IVolumeController;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-import android.widget.TextView;
-
-import com.android.car.settings.R;
-
-/**
- * Contains logic about volume controller UI.
- */
-public class VolumeControllerPresenter implements OnSeekBarChangeListener {
-
- private static final String TAG = "SeekBarVolumizer";
- private static final int AUDIO_FEEDBACK_DELAY_MS = 1500;
-
- private final Handler mHandler = new Handler(Looper.getMainLooper());
- private final SeekBar mSeekBar;
- private final int mStreamType;
- private final Ringtone mRingtone;
- private final VolumnCallback mVolumeCallback = new VolumnCallback();
-
- private CarAudioManager mCarAudioManager;
-
- public void onServiceConnected(Car car) {
- try {
- mCarAudioManager = (CarAudioManager) car.getCarManager(Car.AUDIO_SERVICE);
- mCarAudioManager.setVolumeController(mVolumeCallback);
- mSeekBar.setMax(mCarAudioManager.getStreamMaxVolume(mStreamType));
- mSeekBar.setProgress(mCarAudioManager.getStreamVolume(mStreamType));
- mSeekBar.setOnSeekBarChangeListener(VolumeControllerPresenter.this);
- } catch (CarNotConnectedException e) {
- Log.e(TAG, "Car is not connected!", e);
- }
- }
-
- public void onServiceDisconnected() {
- mSeekBar.setOnSeekBarChangeListener(null);
- mCarAudioManager = null;
- }
-
- public VolumeControllerPresenter(Context context, View volumeControllerView,
- int streamType, Uri sampleUri, int titleStringResId, int iconResId) {
- mSeekBar = (SeekBar) volumeControllerView.findViewById(R.id.seekbar);
- mStreamType = streamType;
- Uri ringtoneUri;
-
- if (sampleUri == null) {
- switch (mStreamType) {
- case AudioManager.STREAM_RING:
- ringtoneUri = Settings.System.DEFAULT_RINGTONE_URI;
- break;
- case AudioManager.STREAM_NOTIFICATION:
- ringtoneUri = Settings.System.DEFAULT_NOTIFICATION_URI;
- break;
- default:
- ringtoneUri = Settings.System.DEFAULT_ALARM_ALERT_URI;
- }
- } else {
- ringtoneUri = sampleUri;
- }
- mRingtone = RingtoneManager.getRingtone(context, ringtoneUri);
- if (mRingtone != null) {
- mRingtone.setStreamType(mStreamType);
- }
- ((ImageView) volumeControllerView.findViewById(R.id.icon)).setImageResource(iconResId);
- ((TextView) volumeControllerView.findViewById(R.id.stream_name)).setText(titleStringResId);
- }
-
- public void stop() {
- mHandler.removeCallbacksAndMessages(null);
- mRingtone.stop();
- }
-
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- try {
- if (mCarAudioManager == null) {
- Log.w(TAG, "CarAudiomanager not available, Car is not connected!");
- return;
- }
- mCarAudioManager.setStreamVolume(mStreamType, progress, AudioManager.FLAG_PLAY_SOUND);
- playAudioFeedback();
- } catch (CarNotConnectedException e) {
- Log.e(TAG, "Car is not connected!", e);
- }
- }
-
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
-
- }
-
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- playAudioFeedback();
- }
-
- private void playAudioFeedback() {
- mHandler.removeCallbacksAndMessages(null);
- mRingtone.play();
- mHandler.postDelayed(() -> {
- if (mRingtone.isPlaying()) {
- mRingtone.stop();
- }
- }, AUDIO_FEEDBACK_DELAY_MS);
- }
-
- /**
- * The interface has a terrible name, it is actually a callback, so here name it accordingly.
- */
- private final class VolumnCallback extends IVolumeController.Stub {
-
- private final String TAG = VolumeControllerPresenter.TAG + ".cb";
-
- @Override
- public void displaySafeVolumeWarning(int flags) throws RemoteException {
- }
-
- @Override
- public void volumeChanged(int streamType, int flags) throws RemoteException {
- if (streamType != mStreamType) {
- return;
- }
- try {
- if (mCarAudioManager == null) {
- Log.w(TAG, "CarAudiomanager not available, Car is not connected!");
- return;
- }
- int volume = mCarAudioManager.getStreamVolume(mStreamType);
- if (mSeekBar.getProgress() == volume) {
- return;
- }
- mSeekBar.setProgress(volume);
- } catch (CarNotConnectedException e) {
- Log.e(TAG, "Car is not connected!", e);
- }
- }
-
- // this is not mute of this stream
- @Override
- public void masterMuteChanged(int flags) throws RemoteException {
- }
-
- @Override
- public void setLayoutDirection(int layoutDirection) throws RemoteException {
- }
-
- @Override
- public void dismiss() throws RemoteException {
- }
-
- @Override
- public void setA11yMode(int mode) {
- }
- }
-}
diff --git a/src/com/android/car/settings/sound/VolumeLineItem.java b/src/com/android/car/settings/sound/VolumeLineItem.java
new file mode 100644
index 0000000..66e5c92
--- /dev/null
+++ b/src/com/android/car/settings/sound/VolumeLineItem.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2017 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
+ */
+
+package com.android.car.settings.sound;
+
+import android.car.CarNotConnectedException;
+import android.car.media.CarAudioManager;
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+import android.util.Log;
+
+import com.android.car.settings.common.SeekbarLineItem;
+
+/**
+ * Contains logic about volume controller UI.
+ */
+public class VolumeLineItem extends SeekbarLineItem {
+ private static final String TAG = "VolumeLineItem";
+ private static final int AUDIO_FEEDBACK_DELAY_MS = 1500;
+
+ private final Handler mHandler = new Handler(Looper.getMainLooper());
+ private final int streamType;
+ private final Ringtone mRingtone;
+
+ private CarAudioManager mCarAudioManager;
+
+ public VolumeLineItem(
+ Context context, int streamType, int titleStringResId, int iconResId) {
+ super(context.getText(titleStringResId));
+ this.streamType = streamType;
+ Uri ringtoneUri;
+
+ switch (this.streamType) {
+ case AudioManager.STREAM_RING:
+ ringtoneUri = Settings.System.DEFAULT_RINGTONE_URI;
+ break;
+ case AudioManager.STREAM_NOTIFICATION:
+ ringtoneUri = Settings.System.DEFAULT_NOTIFICATION_URI;
+ break;
+ default:
+ ringtoneUri = Settings.System.DEFAULT_ALARM_ALERT_URI;
+ }
+ mRingtone = RingtoneManager.getRingtone(context, ringtoneUri);
+ if (mRingtone != null) {
+ mRingtone.setStreamType(this.streamType);
+ }
+ }
+
+ public int getStreamType() {
+ return streamType;
+ }
+
+ public void setCarAudioManager(CarAudioManager carAudioManager) {
+ mCarAudioManager = carAudioManager;
+ }
+
+ public void stop() {
+ mHandler.removeCallbacksAndMessages(null);
+ if (mRingtone != null) {
+ mRingtone.stop();
+ }
+ }
+
+ @Override
+ public int getSeekbarValue() {
+ try {
+ return mCarAudioManager.getStreamVolume(streamType);
+ } catch (CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ }
+ return 0;
+ }
+
+ @Override
+ public int getMaxSeekbarValue() {
+ try {
+ return mCarAudioManager.getStreamMaxVolume(streamType);
+ } catch (CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ }
+ return 0;
+ }
+
+ @Override
+ public void onSeekbarChanged(int progress) {
+ try {
+ if (mCarAudioManager == null) {
+ Log.w(TAG, "CarAudiomanager not available, Car is not connected!");
+ return;
+ }
+ mCarAudioManager.setStreamVolume(streamType, progress, AudioManager.FLAG_PLAY_SOUND);
+ playAudioFeedback();
+ } catch (CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ }
+ }
+
+ private void playAudioFeedback() {
+ mHandler.removeCallbacksAndMessages(null);
+ if (mRingtone != null) {
+ mRingtone.play();
+ mHandler.postDelayed(() -> {
+ if (mRingtone.isPlaying()) {
+ mRingtone.stop();
+ }
+ }, AUDIO_FEEDBACK_DELAY_MS);
+ }
+ }
+}
diff --git a/src/com/android/car/settings/system/AboutSettingsActivity.java b/src/com/android/car/settings/system/AboutSettingsActivity.java
index a2ea9ba..8f630f7 100644
--- a/src/com/android/car/settings/system/AboutSettingsActivity.java
+++ b/src/com/android/car/settings/system/AboutSettingsActivity.java
@@ -19,9 +19,11 @@
import android.os.Build;
import com.android.car.settings.common.ListSettingsActivity;
+import com.android.car.settings.common.NoDividerItemDecoration;
import com.android.car.settings.common.SimpleTextLineItem;
import com.android.car.settings.common.TypedPagedListAdapter;
import com.android.car.settings.R;
+import com.android.car.view.PagedListView;
import com.android.settingslib.DeviceInfoUtils;
import java.util.ArrayList;
@@ -47,4 +49,9 @@
getText(R.string.build_number), Build.DISPLAY));
return lineItems;
}
+
+ @Override
+ public PagedListView.Decoration getDecoration() {
+ return new NoDividerItemDecoration(this);
+ }
}
diff --git a/src/com/android/car/settings/system/AboutSystemLineItem.java b/src/com/android/car/settings/system/AboutSystemLineItem.java
index 0334540..2d240de 100644
--- a/src/com/android/car/settings/system/AboutSystemLineItem.java
+++ b/src/com/android/car/settings/system/AboutSystemLineItem.java
@@ -19,8 +19,10 @@
import android.content.Context;
import android.content.Intent;
import android.os.Build;
+import android.widget.ImageView;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.IconTextLineItem;
@@ -32,7 +34,7 @@
private final Context mContext;
public AboutSystemLineItem(Context context) {
- super(context.getString(R.string.about_settings), R.drawable.ic_settings_about);
+ super(context.getString(R.string.about_settings));
mContext = context;
}
@@ -49,6 +51,11 @@
@Override
public void onClick() {
Intent intent = new Intent(mContext, AboutSettingsActivity.class);
- mContext.startActivity(intent);
+ mContext.startActivity(intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
+ }
+
+ @Override
+ public void setIcon(ImageView iconView) {
+ iconView.setImageResource(R.drawable.ic_settings_about);
}
}
diff --git a/src/com/android/car/settings/system/LegalInfoLineItem.java b/src/com/android/car/settings/system/LegalInfoLineItem.java
index 663d16b..d5cb484 100644
--- a/src/com/android/car/settings/system/LegalInfoLineItem.java
+++ b/src/com/android/car/settings/system/LegalInfoLineItem.java
@@ -17,6 +17,7 @@
package com.android.car.settings.system;
import android.content.Context;
+import android.widget.ImageView;
import com.android.car.settings.R;
import com.android.car.settings.common.IconTextLineItem;
@@ -30,7 +31,7 @@
private final Context mContext;
public LegalInfoLineItem(Context context) {
- super(context.getString(R.string.legal_information), R.drawable.ic_settings_about);
+ super(context.getString(R.string.legal_information));
mContext = context;
}
@@ -48,4 +49,9 @@
public void onClick() {
// TODO: link to a legal info page.
}
+
+ @Override
+ public void setIcon(ImageView iconView) {
+ iconView.setImageResource(R.drawable.ic_settings_about);
+ }
}
diff --git a/src/com/android/car/settings/system/SystemUpdatesLineItem.java b/src/com/android/car/settings/system/SystemUpdatesLineItem.java
index 034b9df..f97dc24 100644
--- a/src/com/android/car/settings/system/SystemUpdatesLineItem.java
+++ b/src/com/android/car/settings/system/SystemUpdatesLineItem.java
@@ -17,6 +17,7 @@
package com.android.car.settings.system;
import android.content.Context;
+import android.widget.ImageView;
import com.android.car.settings.R;
import com.android.car.settings.common.IconTextLineItem;
@@ -31,8 +32,7 @@
private final Context mContext;
public SystemUpdatesLineItem(Context context) {
- super(context.getString(
- R.string.system_update_settings_list_item_title), R.drawable.ic_system_update);
+ super(context.getString(R.string.system_update_settings_list_item_title));
mContext = context;
}
@@ -50,4 +50,9 @@
public void onClick() {
// TODO: trigger system OTA flow
}
+
+ @Override
+ public void setIcon(ImageView iconView) {
+ iconView.setImageResource(R.drawable.ic_system_update);
+ }
}
diff --git a/src/com/android/car/settings/wifi/AccessPointListAdapter.java b/src/com/android/car/settings/wifi/AccessPointListAdapter.java
index 8a72b73..c4f7ec5 100644
--- a/src/com/android/car/settings/wifi/AccessPointListAdapter.java
+++ b/src/com/android/car/settings/wifi/AccessPointListAdapter.java
@@ -34,6 +34,7 @@
import android.widget.Toast;
import com.android.car.settings.R;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.wifi.AccessPointListAdapter.ViewHolder;
import com.android.car.view.PagedListView;
import com.android.settingslib.wifi.AccessPoint;
@@ -123,7 +124,8 @@
Bundle accessPointState = new Bundle();
mAccessPoint.saveWifiState(accessPointState);
intent.putExtras(accessPointState);
- mContext.startActivity(intent);
+ mContext.startActivity(
+ intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
}
}
};
@@ -132,7 +134,7 @@
public AccessPointListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.list_item, parent, false);
+ .inflate(R.layout.icon_widget_line_item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
diff --git a/src/com/android/car/settings/wifi/WifiSettingsActivity.java b/src/com/android/car/settings/wifi/WifiSettingsActivity.java
index 5f87784..9e80e3d 100644
--- a/src/com/android/car/settings/wifi/WifiSettingsActivity.java
+++ b/src/com/android/car/settings/wifi/WifiSettingsActivity.java
@@ -30,6 +30,7 @@
import android.annotation.StringRes;
+import com.android.car.settings.common.AnimationUtil;
import com.android.car.settings.common.CarSettingActivity;
import com.android.car.settings.R;
import com.android.car.view.PagedListView;
@@ -59,7 +60,7 @@
mCarWifiManager = new CarWifiManager(this /* context */ , this /* listener */);
setContentView(R.layout.wifi_list);
- ((TextView) findViewById(R.id.action_bar_title)).setText(R.string.wifi_settings);
+ ((TextView) findViewById(R.id.title)).setText(R.string.wifi_settings);
mProgressBar = (ProgressBar) findViewById(R.id.wifi_search_progress);
mListView = (PagedListView) findViewById(R.id.list);
mMessageView = (TextView) findViewById(R.id.message);
@@ -69,7 +70,8 @@
mAddWifiTextView.setOnClickListener(v -> {
Intent intent = new Intent(this /* context */, AddWifiActivity.class);
intent.putExtra(AddWifiActivity.ADD_NETWORK_MODE, true);
- startActivity(intent);
+ startActivity(intent, AnimationUtil.slideInFromRightOption(
+ WifiSettingsActivity.this).toBundle());
});
setupWifiSwitch();
if (mCarWifiManager.isWifiEnabled()) {
@@ -77,7 +79,7 @@
} else {
showMessage(R.string.wifi_disabled);
}
- mListView.setDefaultItemDecoration(new ItemDecoration(this));
+ mListView.setDefaultItemDecoration(new PagedListView.Decoration(this));
// Set this to light mode, since the scroll bar buttons always appear
// on top of a dark scrim.
mListView.setDarkMode();
@@ -146,19 +148,6 @@
mWifiSwitch.setChecked(mCarWifiManager.isWifiEnabled());
}
- /**
- * Default {@link com.android.car.view.PagedListView.Decoration} for the {@link PagedListView}
- * that removes the dividing lines between items.
- */
- private static class ItemDecoration extends PagedListView.Decoration {
- public ItemDecoration(Context context) {
- super(context);
- }
-
- @Override
- public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {}
- }
-
private void showMessage(@StringRes int resId) {
if (mViewSwitcher.getCurrentView() != mMessageView) {
mViewSwitcher.showNext();