Merge "Localization clarifications"
diff --git a/res/drawable/preference_highlight.xml b/res/drawable/preference_highlight.xml
index 20c1a0f..105ff18 100644
--- a/res/drawable/preference_highlight.xml
+++ b/res/drawable/preference_highlight.xml
@@ -19,4 +19,3 @@
<item android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
-
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index f98d2a6..94379b3 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -375,7 +375,7 @@
if (pref.getFragment().equals(WallpaperTypeSettings.class.getName())) {
title = getString(R.string.wallpaper_settings_fragment_title);
}
- startPreferencePanel(pref.getFragment(), pref.getExtras(), 0, title,
+ startPreferencePanel(pref.getFragment(), pref.getExtras(), -1, title,
null, 0);
return true;
}
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 34c773a..f79def9 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -27,8 +27,11 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceGroupAdapter;
import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
@@ -38,7 +41,6 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-
import com.android.settings.applications.LayoutPreference;
import com.android.settings.widget.FloatingActionButton;
@@ -50,7 +52,7 @@
public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceFragment
implements DialogCreatable {
- private static final String TAG = "SettingsPreferenceFragment";
+ private static final String TAG = "SettingsPreference";
private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 600;
@@ -65,7 +67,6 @@
private String mPreferenceKey;
private boolean mPreferenceHighlighted = false;
- private Drawable mHighlightDrawable;
private RecyclerView.Adapter mCurrentRootAdapter;
private boolean mIsDataSetObserverRegistered = false;
@@ -85,6 +86,8 @@
private LayoutPreference mFooter;
private View mEmptyView;
+ private LinearLayoutManager mLayoutManager;
+ private HighlightablePreferenceGroupAdapter mAdapter;
@Override
public void onCreate(Bundle icicle) {
@@ -216,13 +219,6 @@
updateEmptyView();
}
- private Drawable getHighlightDrawable() {
- if (mHighlightDrawable == null) {
- mHighlightDrawable = getActivity().getDrawable(R.drawable.preference_highlight);
- }
- return mHighlightDrawable;
- }
-
public LayoutPreference getHeaderView() {
return mHeader;
}
@@ -314,41 +310,30 @@
return -1;
}
- private void highlightPreference(String key) {
- final Drawable highlight = getHighlightDrawable();
+ @Override
+ public RecyclerView.LayoutManager onCreateLayoutManager() {
+ mLayoutManager = new LinearLayoutManager(getContext());
+ return mLayoutManager;
+ }
+ @Override
+ protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
+ mAdapter = new HighlightablePreferenceGroupAdapter(preferenceScreen);
+ return mAdapter;
+ }
+
+ private void highlightPreference(String key) {
final int position = canUseListViewForHighLighting(key);
if (position >= 0) {
mPreferenceHighlighted = true;
+ mLayoutManager.scrollToPosition(position);
- // TODO: Need to find a way to scroll to and highlight search items now
- // that we are using RecyclerView instead.
-// final RecyclerView listView = getListView();
-// final RecyclerView.Adapter adapter = listView.getAdapter();
-//
-//// ((PreferenceGroupAdapter) adapter).setHighlightedDrawable(highlight);
-//// ((PreferenceGroupAdapter) adapter).setHighlighted(position);
-//
-// listView.post(new Runnable() {
-// @Override
-// public void run() {
-// listView.setSelection(position);
-// listView.postDelayed(new Runnable() {
-// @Override
-// public void run() {
-// final int index = position - listView.getFirstVisiblePosition();
-// if (index >= 0 && index < listView.getChildCount()) {
-// final View v = listView.getChildAt(index);
-// final int centerX = v.getWidth() / 2;
-// final int centerY = v.getHeight() / 2;
-// highlight.setHotspot(centerX, centerY);
-// v.setPressed(true);
-// v.setPressed(false);
-// }
-// }
-// }, DELAY_HIGHLIGHT_DURATION_MILLIS);
-// }
-// });
+ getView().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ mAdapter.highlight(position);
+ }
+ }, DELAY_HIGHLIGHT_DURATION_MILLIS);
}
}
@@ -647,4 +632,34 @@
return false;
}
}
+
+ public static class HighlightablePreferenceGroupAdapter extends PreferenceGroupAdapter {
+
+ private int mHighlightPosition = -1;
+
+ public HighlightablePreferenceGroupAdapter(PreferenceGroup preferenceGroup) {
+ super(preferenceGroup);
+ }
+
+ public void highlight(int position) {
+ mHighlightPosition = position;
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder, int position) {
+ super.onBindViewHolder(holder, position);
+ if (position == mHighlightPosition) {
+ View v = holder.itemView;
+ if (v.getBackground() != null) {
+ final int centerX = v.getWidth() / 2;
+ final int centerY = v.getHeight() / 2;
+ v.getBackground().setHotspot(centerX, centerY);
+ }
+ v.setPressed(true);
+ v.setPressed(false);
+ mHighlightPosition = -1;
+ }
+ }
+ }
}
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 3e0b9dd..a53d8b6 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -91,12 +91,7 @@
}
public void notifyChanged(DashboardTile tile) {
- for (int i = 0; i < mItems.size(); i++) {
- if (mItems.get(i) == tile) {
- notifyItemChanged(i);
- return;
- }
- }
+ notifyDataSetChanged();
}
public void setShowingAll(boolean showingAll) {
diff --git a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
index 688e197..5b9bb40 100644
--- a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
+++ b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
@@ -63,7 +63,7 @@
@Override
public void onPrimaryClick() {
mManager.getContext().startActivity(new Intent(mManager.getContext(),
- Settings.WirelessSettings.class));
+ Settings.WirelessSettingsActivity.class));
}
@Override
diff --git a/src/com/android/settings/notification/ZenModeAutomationSettings.java b/src/com/android/settings/notification/ZenModeAutomationSettings.java
index dbbd9a9..c2473ad 100644
--- a/src/com/android/settings/notification/ZenModeAutomationSettings.java
+++ b/src/com/android/settings/notification/ZenModeAutomationSettings.java
@@ -156,7 +156,10 @@
root.removeAll();
final AutomaticZenRule[] sortedRules = sortedRules();
for (AutomaticZenRule sortedRule : sortedRules) {
- root.addPreference(new ZenRulePreference(getPrefContext(), sortedRule));
+ ZenRulePreference pref = new ZenRulePreference(getPrefContext(), sortedRule);
+ if (pref.appExists) {
+ root.addPreference(pref);
+ }
}
final Preference p = new Preference(getPrefContext());
p.setIcon(R.drawable.ic_add);
@@ -264,6 +267,7 @@
private class ZenRulePreference extends Preference {
final String mName;
final String mId;
+ final boolean appExists;
public ZenRulePreference(Context context, final AutomaticZenRule rule) {
super(context);
@@ -283,8 +287,11 @@
setSummary(computeRuleSummary(rule, isSystemRule, info.loadLabel(mPm)));
} catch (PackageManager.NameNotFoundException e) {
setIcon(R.drawable.ic_label);
+ appExists = false;
+ return;
}
+ appExists = true;
setTitle(rule.getName());
setPersistent(false);