Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66c89c15 authored by Jason Monk's avatar Jason Monk
Browse files

Add API for System QS tiles to set status icons

Allow system apps that have a Quick Settings tile to show a
status bar icon.  If the quick settings tile is removed, the
status bar icon will no longer be shown.

Change-Id: I875b962bbdf4ff863012de688a3dd29a8d7e11ab
parent 07473cea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -35845,6 +35845,7 @@ package android.service.quicksettings {
    method public int onTileAdded();
    method public void onTileRemoved();
    method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
    method public final void setStatusIcon(android.graphics.drawable.Icon, java.lang.String);
    method public final void showDialog(android.app.Dialog);
    field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
    field public static final int TILE_MODE_ACTIVE = 2; // 0x2
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package android.service.quicksettings;

import android.content.ComponentName;
import android.graphics.drawable.Icon;
import android.service.quicksettings.Tile;

/**
@@ -23,6 +24,8 @@ import android.service.quicksettings.Tile;
 */
interface IQSService {
    void updateQsTile(in Tile tile);
    void updateStatusIcon(in Tile tile, in Icon icon,
            String contentDescription);
    void onShowDialog(in Tile tile);
    void setTileMode(in ComponentName component, int mode);
}
+22 −0
Original line number Diff line number Diff line
@@ -16,11 +16,13 @@
package android.service.quicksettings;

import android.Manifest;
import android.annotation.SystemApi;
import android.app.Dialog;
import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Icon;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
@@ -171,6 +173,26 @@ public class TileService extends Service {
    public void onClick() {
    }

    /**
     * Sets an icon to be shown in the status bar.
     * <p>
     * The icon will be displayed before all other icons.  Can only be called between
     * {@link #onStartListening} and {@link #onStopListening}.  Can only be called by system apps.
     *
     * @param icon The icon to be displayed, null to hide
     * @param contentDescription Content description of the icon to be displayed
     * @hide
     */
    @SystemApi
    public final void setStatusIcon(Icon icon, String contentDescription) {
        if (mService != null) {
            try {
                mService.updateStatusIcon(mTile, icon, contentDescription);
            } catch (RemoteException e) {
            }
        }
    }

    /**
     * Used to show a dialog.
     *
+3 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import com.android.systemui.qs.QSTile.State;
import com.android.systemui.qs.external.TileServices;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CastController;
@@ -349,8 +350,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        UserSwitcherController getUserSwitcherController();
        UserInfoController getUserInfoController();
        BatteryController getBatteryController();
        TileServices getTileServices();
        void removeTile(String tileSpec);


        public interface Callback {
            void onTilesChanged();
        }
+1 −0
Original line number Diff line number Diff line
@@ -132,6 +132,7 @@ public class CustomTile extends QSTile<QSTile.State> {
            } catch (RemoteException e) {
            }
        }
        mHost.getTileServices().freeService(this, mServiceManager);
    }

    @Override
Loading