private View buildQSTile(String tileType) { QSTileHolder item = QSTileHolder.from(getActivity(), tileType); if (item == null) { return null; } ColoringCardView qsTile = (ColoringCardView) getLayoutInflater(null).inflate(R.layout.qs_item, null); int defaultColor = getResources().getColor(R.color.qs_tile_default_background_color); qsTile.setColor(defaultColor); if (item.name != null) { ImageView icon = (ImageView) qsTile.findViewById(android.R.id.icon); Drawable d = Utils.getNamedDrawable(getSystemUIContext(getActivity()), item.resourceName); d.setColorFilter( getResources().getColor(R.color.qs_tile_tint_color), PorterDuff.Mode.SRC_ATOP); icon.setImageDrawable(d); TextView title = (TextView) qsTile.findViewById(android.R.id.title); title.setText(item.name); ImageView type = (ImageView) qsTile.findViewById(R.id.type); d = getActivity() .getDrawable( QSUtils.isDynamicQsTile(tileType) ? R.drawable.ic_qs_tile_dynamic_type : R.drawable.ic_qs_tile_static_type); type.setImageDrawable(d); } qsTile.setTag(tileType); return qsTile; }
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { ContentResolver resolver = getActivity().getContentResolver(); // We load the added tiles and compare it to the list of available tiles. // We only show the tiles that aren't already on the grid. String order = Settings.Secure.getString(resolver, Settings.Secure.QS_TILES); List<String> savedTiles = Arrays.asList(order.split(",")); final List<QSTileHolder> tilesList = new ArrayList<QSTileHolder>(); for (String tile : QSUtils.getAvailableTiles(getActivity())) { // Don't count the already added tiles if (!savedTiles.contains(tile)) { QSTileHolder holder = QSTileHolder.from(getActivity(), tile); if (holder != null) { tilesList.add(holder); } } } final DialogInterface.OnClickListener selectionListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); final QSTiles tiles = (QSTiles) getTargetFragment(); if (tiles != null) { tiles.addTile(tilesList.get(which).value); } } }; Collections.sort( tilesList, new Comparator<QSTileHolder>() { @Override public int compare(QSTileHolder lhs, QSTileHolder rhs) { return lhs.name.compareTo(rhs.name); } }); final QSListAdapter adapter = new QSListAdapter(getActivity(), getSystemUIContext(getActivity()), tilesList); return new AlertDialog.Builder(getActivity()) .setTitle(R.string.add_qs) .setSingleChoiceItems(adapter, -1, selectionListener) .setNegativeButton(R.string.cancel, null) .create(); }