fix order of markers

pull/77/merge^2
Denis 10 years ago
parent 821a7db8f4
commit 0d5335693b

@ -206,6 +206,30 @@ public class DateHelper
return wdays;
}
/**
*
* @return array with week days numbers starting according to locale settings,
* e.g. [2,3,4,5,6,7,1] in Europe
*
* @see java.util.Calendar#SUNDAY
*
*/
public static Integer[] getLocaleWeekdayList()
{
Integer[] dayNumbers = new Integer[7];
// a dummy calendar
Calendar calendar = new GregorianCalendar();
// set staring day according to locale
calendar.set(GregorianCalendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
for (int i = 0; i < dayNumbers.length; i++) {
dayNumbers[i] = calendar.get(GregorianCalendar.DAY_OF_WEEK);
// advance in time by one day
calendar.add(GregorianCalendar.DAY_OF_MONTH, 1);
}
return dayNumbers;
}
public static String formatWeekdayList(Context context, boolean weekday[])
{
String shortDayNames[] = getShortDayNames();

@ -63,6 +63,8 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
private HashMap<Long, Integer[]> frequency;
private String wdays[];
private Integer[] localeWeekdayList;
private HashMap<Integer, Integer> number2wdays;
public HabitFrequencyView(Context context)
{
@ -91,6 +93,17 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
wdays = DateHelper.getShortDayNames();
/**
* here we create the mapping of week days numbers into the "wdays"-indices
* @see DateHelper#getDayNames(int)
*/
localeWeekdayList = DateHelper.getLocaleWeekdayList();
number2wdays = new HashMap<>();
for (Integer number : localeWeekdayList) {
int wdaysIndex = number % 7;
number2wdays.put(number, wdaysIndex);
}
dfMonth = DateHelper.getDateFormat("MMM");
dfYear = DateHelper.getDateFormat("yyyy");
@ -230,11 +243,12 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
float rowHeight = rect.height() / 8.0f;
prevRect.set(rect);
for (int i = 0; i < 7; i++)
for (int j = 0; j < localeWeekdayList.length; j++)
{
rect.set(0, 0, baseSize, baseSize);
rect.offset(prevRect.left, prevRect.top + columnWidth * i);
rect.offset(prevRect.left, prevRect.top + columnWidth * j);
int i = number2wdays.get(localeWeekdayList[j]);
if(values != null)
drawMarker(canvas, rect, values[i]);
@ -265,16 +279,15 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
private void drawGrid(Canvas canvas, RectF rGrid)
{
int nRows = 7;
int nRows = localeWeekdayList.length;
float rowHeight = rGrid.height() / (nRows + 1);
pText.setTextAlign(Paint.Align.LEFT);
pText.setColor(textColor);
pGrid.setColor(dimmedTextColor);
for (int i = 0; i < nRows; i++)
{
canvas.drawText(wdays[i], rGrid.right - columnWidth,
for (Integer dayNumber : localeWeekdayList) {
canvas.drawText(wdays[number2wdays.get(dayNumber)], rGrid.right - columnWidth,
rGrid.top + rowHeight / 2 + 0.25f * em, pText);
pGrid.setStrokeWidth(1f);

Loading…
Cancel
Save