17ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka/*
27ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * Copyright (C) 2016 The Android Open Source Project
37ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka *
47ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * Licensed under the Apache License, Version 2.0 (the "License");
57ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * you may not use this file except in compliance with the License.
67ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * You may obtain a copy of the License at
77ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka *
87ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka *      http://www.apache.org/licenses/LICENSE-2.0
97ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka *
107ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * Unless required by applicable law or agreed to in writing, software
117ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * distributed under the License is distributed on an "AS IS" BASIS,
127ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * See the License for the specific language governing permissions and
147ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * limitations under the License.
157ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka */
167ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
177ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankapackage com.android.settingslib;
187ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
197ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankaimport android.content.Context;
207ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankaimport android.graphics.Canvas;
217ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankaimport android.graphics.Paint;
227ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankaimport android.graphics.drawable.Drawable;
237ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankaimport android.text.style.ImageSpan;
247ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
257ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka/**
267ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka * An extension of ImageSpan which adds a padding before the image.
277ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka */
287ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shankapublic class RestrictedLockImageSpan extends ImageSpan {
297ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    private Context mContext;
307ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    private final float mExtraPadding;
317ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    private final Drawable mRestrictedPadlock;
327ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
337ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    public RestrictedLockImageSpan(Context context) {
347ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        // we are overriding getDrawable, so passing null to super class here.
357ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        super((Drawable) null);
367ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
377ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        mContext = context;
387ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        mExtraPadding = mContext.getResources().getDimensionPixelSize(
3940400a648fdf53b0cbfd7f01dd189ea0138b88ebSudheer Shanka                R.dimen.restricted_icon_padding);
407ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        mRestrictedPadlock = RestrictedLockUtils.getRestrictedPadlock(mContext);
417ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    }
427ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
437ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    @Override
447ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    public Drawable getDrawable() {
457ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        return mRestrictedPadlock;
467ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    }
477ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
487ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    @Override
497ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y,
507ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka            int bottom, Paint paint) {
517ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        Drawable drawable = getDrawable();
527ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        canvas.save();
537ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
547ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        // Add extra padding before the padlock.
557ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        float transX = x + mExtraPadding;
5640400a648fdf53b0cbfd7f01dd189ea0138b88ebSudheer Shanka        float transY = (bottom - drawable.getBounds().bottom) / 2.0f;
577ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
587ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        canvas.translate(transX, transY);
597ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        drawable.draw(canvas);
607ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        canvas.restore();
617ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    }
627ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka
637ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    @Override
647ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    public int getSize(Paint paint, CharSequence text, int start, int end,
657ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka            Paint.FontMetricsInt fontMetrics) {
667ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        int size = super.getSize(paint, text, start, end, fontMetrics);
677ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        size += 2 * mExtraPadding;
687ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka        return size;
697ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka    }
707ff866d286cf4df0948feeffa6e67848740e64ebSudheer Shanka}