Merge "Fix drag to add tiles showing too many times" into nyc-dev

This commit is contained in:
Jason Monk
2016-02-26 16:02:44 +00:00
committed by Android (Google) Code Review
4 changed files with 39 additions and 3 deletions

View File

@@ -48,6 +48,7 @@ public final class Prefs {
Key.QS_DATA_SAVER_ADDED,
Key.QS_INVERT_COLORS_ADDED,
Key.QS_WORK_ADDED,
Key.QS_NIGHT_ADDED,
})
public @interface Key {
String OVERVIEW_SEARCH_APP_WIDGET_ID = "searchAppWidgetId";
@@ -68,6 +69,7 @@ public final class Prefs {
String QS_DATA_SAVER_ADDED = "QsDataSaverAdded";
String QS_INVERT_COLORS_ADDED = "QsInvertColorsAdded";
String QS_WORK_ADDED = "QsWorkAdded";
String QS_NIGHT_ADDED = "QsNightAdded";
}
public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) {

View File

@@ -107,7 +107,10 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
mOtherTiles = new ArrayList<TileInfo>(mAllTiles);
mTiles.clear();
for (int i = 0; i < mCurrentSpecs.size(); i++) {
mTiles.add(getAndRemoveOther(mCurrentSpecs.get(i)));
final TileInfo tile = getAndRemoveOther(mCurrentSpecs.get(i));
if (tile != null) {
mTiles.add(tile);
}
}
mTiles.add(null);
mTiles.addAll(mOtherTiles);

View File

@@ -28,11 +28,14 @@ import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;
import android.service.quicksettings.TileService;
import com.android.systemui.Prefs;
import com.android.systemui.Prefs.Key;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.QSTile.DrawableIcon;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.statusbar.phone.QSTileHost;
import com.android.systemui.tuner.TunerService;
import java.util.ArrayList;
import java.util.Collection;
@@ -54,7 +57,8 @@ public class TileQueryHelper {
}
private void addSystemTiles(QSTileHost host) {
boolean hasColorMod = host.getNightModeController().isEnabled();
boolean hasColorMod = Prefs.getBoolean(host.getContext(), Key.QS_NIGHT_ADDED, false)
&& TunerService.isTunerEnabled(host.getContext());
String possible = mContext.getString(R.string.quick_settings_tiles_default)
+ ",hotspot,inversion,saver,work,cast" + (hasColorMod ? ",night" : "");
String[] possibleTiles = possible.split(",");
@@ -88,7 +92,12 @@ public class TileQueryHelper {
qsHandler.post(new Runnable() {
@Override
public void run() {
new QueryTilesTask().execute();
mainHandler.post(new Runnable() {
@Override
public void run() {
new QueryTilesTask().execute();
}
});
}
});
}

View File

@@ -24,6 +24,7 @@ import com.android.systemui.statusbar.policy.DataSaverController;
import com.android.systemui.statusbar.policy.DataSaverController.Listener;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.HotspotController.Callback;
import com.android.systemui.statusbar.policy.NightModeController;
/**
* Manages which tiles should be automatically added to QS.
@@ -66,12 +67,33 @@ public class AutoTileManager {
if (!Prefs.getBoolean(context, Key.QS_WORK_ADDED, false)) {
host.getManagedProfileController().addCallback(mProfileCallback);
}
if (!Prefs.getBoolean(context, Key.QS_NIGHT_ADDED, false)) {
host.getNightModeController().addListener(mNightModeListener);
}
}
public void destroy() {
// TODO: Remove any registered listeners.
}
private final NightModeController.Listener mNightModeListener =
new NightModeController.Listener() {
@Override
public void onNightModeChanged() {
mHost.addTile("night");
Prefs.putBoolean(mContext, Key.QS_NIGHT_ADDED, true);
mHandler.post(new Runnable() {
@Override
public void run() {
mHost.getNightModeController().removeListener(mNightModeListener);
}
});
}
@Override
public void onTwilightAutoChanged() { }
};
private final ManagedProfileController.Callback mProfileCallback =
new ManagedProfileController.Callback() {
@Override