Deprecate SettingsDrawerActivity.openTile.

Use DashboardFeatureProvider to open tile instead. This makes logic more
centralized in one place, and makes logging easier in the future.

Bug: 30137094
Test: RunSettingsRoboTests
Change-Id: I8a028bb7cac8f70f6c237f253be8668cc3ef257e
This commit is contained in:
Fan Zhang
2017-02-13 14:24:36 -08:00
parent 33b0a66aee
commit 628b3cb76e
4 changed files with 71 additions and 18 deletions

View File

@@ -21,6 +21,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
@@ -30,6 +31,7 @@ import com.android.settings.SettingsActivity;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProfileSelectDialog;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.drawer.Tile;
import java.util.ArrayList;
@@ -149,14 +151,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
intent.setAction(action);
}
pref.setOnPreferenceClickListener(preference -> {
ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
if (tile.userHandle == null) {
activity.startActivityForResult(intent, 0);
} else if (tile.userHandle.size() == 1) {
activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
} else {
ProfileSelectDialog.show(activity.getFragmentManager(), tile);
}
launchIntentOrSelectProfile(activity, tile, intent);
return true;
});
}
@@ -188,4 +183,33 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
public String getExtraIntentAction() {
return null;
}
@Override
public void openTileIntent(Activity activity, Tile tile) {
if (tile == null) {
Intent intent = new Intent(Settings.ACTION_SETTINGS).addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK);
mContext.startActivity(intent);
return;
}
if (tile.intent == null) {
return;
}
final Intent intent = new Intent(tile.intent)
.putExtra(SettingsDrawerActivity.EXTRA_SHOW_MENU, true)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
launchIntentOrSelectProfile(activity, tile, intent);
}
private void launchIntentOrSelectProfile(Activity activity, Tile tile, Intent intent) {
ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
if (tile.userHandle == null) {
activity.startActivityForResult(intent, 0);
} else if (tile.userHandle.size() == 1) {
activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
} else {
ProfileSelectDialog.show(activity.getFragmentManager(), tile);
}
}
}