1/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.gallery3d.ingest.ui;
18
19import com.android.gallery3d.R;
20import com.android.gallery3d.ingest.data.SimpleDate;
21
22import android.content.Context;
23import android.util.AttributeSet;
24import android.widget.FrameLayout;
25import android.widget.TextView;
26
27
28import java.text.DateFormatSymbols;
29import java.util.Locale;
30
31/**
32 * Displays a date in a square tile.
33 */
34public class DateTileView extends FrameLayout {
35  private static String[] sMonthNames = DateFormatSymbols.getInstance().getShortMonths();
36  private static Locale sLocale;
37
38  static {
39    refreshLocale();
40  }
41
42  public static boolean refreshLocale() {
43    Locale currentLocale = Locale.getDefault();
44    if (!currentLocale.equals(sLocale)) {
45      sLocale = currentLocale;
46      sMonthNames = DateFormatSymbols.getInstance(sLocale).getShortMonths();
47      return true;
48    } else {
49      return false;
50    }
51  }
52
53  private TextView mDateTextView;
54  private TextView mMonthTextView;
55  private TextView mYearTextView;
56  private int mMonth = -1;
57  private int mYear = -1;
58  private int mDate = -1;
59  private String[] mMonthNames = sMonthNames;
60
61  public DateTileView(Context context) {
62    super(context);
63  }
64
65  public DateTileView(Context context, AttributeSet attrs) {
66    super(context, attrs);
67  }
68
69  public DateTileView(Context context, AttributeSet attrs, int defStyle) {
70    super(context, attrs, defStyle);
71  }
72
73  @Override
74  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
75    // Force this to be square
76    super.onMeasure(widthMeasureSpec, widthMeasureSpec);
77  }
78
79  @Override
80  protected void onFinishInflate() {
81    super.onFinishInflate();
82    mDateTextView = (TextView) findViewById(R.id.date_tile_day);
83    mMonthTextView = (TextView) findViewById(R.id.date_tile_month);
84    mYearTextView = (TextView) findViewById(R.id.date_tile_year);
85  }
86
87  public void setDate(SimpleDate date) {
88    setDate(date.getDay(), date.getMonth(), date.getYear());
89  }
90
91  public void setDate(int date, int month, int year) {
92    if (date != mDate) {
93      mDate = date;
94      mDateTextView.setText(mDate > 9 ? Integer.toString(mDate) : "0" + mDate);
95    }
96    if (mMonthNames != sMonthNames) {
97      mMonthNames = sMonthNames;
98      if (month == mMonth) {
99        mMonthTextView.setText(mMonthNames[mMonth]);
100      }
101    }
102    if (month != mMonth) {
103      mMonth = month;
104      mMonthTextView.setText(mMonthNames[mMonth]);
105    }
106    if (year != mYear) {
107      mYear = year;
108      mYearTextView.setText(Integer.toString(mYear));
109    }
110  }
111}
112