MonthView.java
3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Copyright 2012 Square, Inc.
package com.squareup.timessquare;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.List;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.ectrip.trips.check.R;
public class MonthView extends LinearLayout {
TextView title;
CalendarGridView grid;
private Listener listener;
public static MonthView create(ViewGroup parent, LayoutInflater inflater,
DateFormat weekdayNameFormat, Listener listener, Calendar today,
int dividerColor, int dayBackgroundResId, int dayTextColorResId,
int titleTextColor, int headerTextColor) {
final MonthView view = (MonthView) inflater.inflate(R.layout.mr_month,
parent, false);
view.setDividerColor(dividerColor);
view.setDayTextColor(dayTextColorResId);
view.setTitleTextColor(titleTextColor);
view.setHeaderTextColor(headerTextColor);
if (dayBackgroundResId != 0) {
view.setDayBackground(dayBackgroundResId);
}
final int originalDayOfWeek = today.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek = today.getFirstDayOfWeek();
final CalendarRowView headerRow = (CalendarRowView) view.grid
.getChildAt(0);
for (int offset = 0; offset < 7; offset++) {
today.set(Calendar.DAY_OF_WEEK, firstDayOfWeek + offset);
final TextView textView = (TextView) headerRow.getChildAt(offset);
textView.setText(weekdayNameFormat.format(today.getTime()));
}
today.set(Calendar.DAY_OF_WEEK, originalDayOfWeek);
view.listener = listener;
return view;
}
public MonthView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
title = (TextView) findViewById(R.id.title);
grid = (CalendarGridView) findViewById(R.id.calendar_grid);
}
public void init(MonthDescriptor month,
List<List<MonthCellDescriptor>> cells, boolean displayOnly) {
long start = System.currentTimeMillis();
title.setText(month.getLabel());
final int numRows = cells.size();
grid.setNumRows(numRows);
for (int i = 0; i < 6; i++) {
CalendarRowView weekRow = (CalendarRowView) grid.getChildAt(i + 1);
weekRow.setListener(listener);
if (i < numRows) {
weekRow.setVisibility(VISIBLE);
List<MonthCellDescriptor> week = cells.get(i);
for (int c = 0; c < week.size(); c++) {
MonthCellDescriptor cell = week.get(c);
CalendarCellView cellView = (CalendarCellView) weekRow
.getChildAt(c);
cellView.setText(Integer.toString(cell.getValue()));
cellView.setEnabled(cell.isCurrentMonth());
cellView.setClickable(!displayOnly);
cellView.setSelectable(cell.isSelectable());
cellView.setSelected(cell.isSelected());
cellView.setCurrentMonth(cell.isCurrentMonth());
cellView.setToday(cell.isToday());
cellView.setRangeState(cell.getRangeState());
cellView.setHighlighted(cell.isHighlighted());
cellView.setTag(cell);
}
} else {
weekRow.setVisibility(GONE);
}
}
}
public void setDividerColor(int color) {
grid.setDividerColor(color);
}
public void setDayBackground(int resId) {
grid.setDayBackground(resId);
}
public void setDayTextColor(int resId) {
grid.setDayTextColor(resId);
}
public void setTitleTextColor(int color) {
title.setTextColor(color);
}
public void setHeaderTextColor(int color) {
grid.setHeaderTextColor(color);
}
public interface Listener {
void handleClick(MonthCellDescriptor cell);
}
}