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