14bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson/*
24bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * Copyright (C) 2012 The Android Open Source Project
34bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson *
44bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * Licensed under the Apache License, Version 2.0 (the "License");
54bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * you may not use this file except in compliance with the License.
64bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * You may obtain a copy of the License at
74bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson *
84bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson *      http://www.apache.org/licenses/LICENSE-2.0
94bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson *
104bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * Unless required by applicable law or agreed to in writing, software
114bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * distributed under the License is distributed on an "AS IS" BASIS,
124bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * See the License for the specific language governing permissions and
144bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * limitations under the License.
154bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson */
164bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
174bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonpackage com.android.calendar;
184bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
197be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelsonimport android.content.Context;
204bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.Canvas;
214bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.ColorFilter;
224bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.Paint;
234bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.PixelFormat;
244bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.Rect;
257be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelsonimport android.graphics.Typeface;
264bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonimport android.graphics.drawable.Drawable;
274bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
284bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson/**
294bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson * A custom view to draw the day of the month in the today button in the options menu
304bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson */
314bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
324bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelsonpublic class DayOfMonthDrawable extends Drawable {
334bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
347be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson    private String mDayOfMonth = "1";
357be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson    private final Paint mPaint;
367be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson    private final Rect mTextBounds = new Rect();
377be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson    private static float mTextSize = 14;
384bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
397be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson    public DayOfMonthDrawable(Context c) {
407be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson        mTextSize = c.getResources().getDimension(R.dimen.today_icon_text_size);
414bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mPaint = new Paint();
424bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mPaint.setAlpha(255);
434bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mPaint.setColor(0xFF777777);
447be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson        mPaint.setTypeface(Typeface.DEFAULT_BOLD);
457be65caf4efa310c1b28cc74278eb0f8327039c8Isaac Katzenelson        mPaint.setTextSize(mTextSize);
46407b2b401e398381fc2e524d0957163a930c94c2Isaac Katzenelson        mPaint.setTextAlign(Paint.Align.CENTER);
474bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
484bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
494bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    @Override
504bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    public void draw(Canvas canvas) {
514bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mPaint.getTextBounds(mDayOfMonth, 0, mDayOfMonth.length(), mTextBounds);
524bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        int textHeight = mTextBounds.bottom - mTextBounds.top;
534bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        Rect bounds = getBounds();
54407b2b401e398381fc2e524d0957163a930c94c2Isaac Katzenelson        canvas.drawText(mDayOfMonth, bounds.right / 2, ((float) bounds.bottom + textHeight + 1) / 2,
55407b2b401e398381fc2e524d0957163a930c94c2Isaac Katzenelson                mPaint);
564bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
574bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
584bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    @Override
594bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    public void setAlpha(int alpha) {
604bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mPaint.setAlpha(alpha);
614bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
624bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
634bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    @Override
644bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    public void setColorFilter(ColorFilter cf) {
654bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        // Ignore
664bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
674bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
684bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    @Override
694bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    public int getOpacity() {
704bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        return PixelFormat.UNKNOWN;
714bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
724bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson
734bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    public void setDayOfMonth(int day) {
744bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        mDayOfMonth = Integer.toString(day);
754bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson        invalidateSelf();
764bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson    }
774bd4a5ccc3efcc282964e789e1e81577c64561c9Isaac Katzenelson}
78