Fix timezone issues; rename class to HabitFrequencyView

pull/30/head
Alinson S. Xavier 10 years ago
parent cea5241135
commit 59a2f31a73

@ -42,7 +42,7 @@ import org.isoron.uhabits.helpers.ReminderHelper;
import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.models.Score; import org.isoron.uhabits.models.Score;
import org.isoron.uhabits.views.HabitHistoryView; import org.isoron.uhabits.views.HabitHistoryView;
import org.isoron.uhabits.views.WeekdayFrequencyView; import org.isoron.uhabits.views.HabitFrequencyView;
import org.isoron.uhabits.views.HabitScoreView; import org.isoron.uhabits.views.HabitScoreView;
import org.isoron.uhabits.views.HabitStreakView; import org.isoron.uhabits.views.HabitStreakView;
import org.isoron.uhabits.views.RingView; import org.isoron.uhabits.views.RingView;
@ -55,7 +55,7 @@ public class ShowHabitFragment extends Fragment
private HabitStreakView streakView; private HabitStreakView streakView;
private HabitScoreView scoreView; private HabitScoreView scoreView;
private HabitHistoryView historyView; private HabitHistoryView historyView;
private WeekdayFrequencyView punchcardView; private HabitFrequencyView punchcardView;
@Override @Override
public void onStart() public void onStart()
@ -77,7 +77,7 @@ public class ShowHabitFragment extends Fragment
streakView = (HabitStreakView) view.findViewById(R.id.streakView); streakView = (HabitStreakView) view.findViewById(R.id.streakView);
scoreView = (HabitScoreView) view.findViewById(R.id.scoreView); scoreView = (HabitScoreView) view.findViewById(R.id.scoreView);
historyView = (HabitHistoryView) view.findViewById(R.id.historyView); historyView = (HabitHistoryView) view.findViewById(R.id.historyView);
punchcardView = (WeekdayFrequencyView) view.findViewById(R.id.punchcardView); punchcardView = (HabitFrequencyView) view.findViewById(R.id.punchcardView);
updateHeaders(view); updateHeaders(view);
updateScoreRing(view); updateScoreRing(view);

@ -21,7 +21,6 @@ package org.isoron.uhabits.models;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.activeandroid.Cache; import com.activeandroid.Cache;
import com.activeandroid.query.Delete; import com.activeandroid.query.Delete;
@ -129,6 +128,7 @@ public class RepetitionList
if(!cursor.moveToFirst()) return new HashMap<>(); if(!cursor.moveToFirst()) return new HashMap<>();
HashMap <Long, Integer[]> map = new HashMap<>(); HashMap <Long, Integer[]> map = new HashMap<>();
GregorianCalendar date = DateHelper.getStartOfTodayCalendar();
do do
{ {
@ -137,15 +137,9 @@ public class RepetitionList
int weekday = (Integer.parseInt(cursor.getString(2)) + 1) % 7; int weekday = (Integer.parseInt(cursor.getString(2)) + 1) % 7;
int count = cursor.getInt(3); int count = cursor.getInt(3);
Log.d("RepetitionList", date.set(year, month - 1, 1);
String.format("year=%d month=%d weekday=%d", year, month, weekday));
GregorianCalendar date = DateHelper.getStartOfTodayCalendar();
date.set(Calendar.YEAR, year);
date.set(Calendar.MONTH, month);
date.set(Calendar.DAY_OF_MONTH, 1);
long timestamp = date.getTimeInMillis(); long timestamp = date.getTimeInMillis();
Integer[] list = map.get(timestamp); Integer[] list = map.get(timestamp);
if(list == null) if(list == null)

@ -25,6 +25,7 @@ import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.RectF; import android.graphics.RectF;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log;
import org.isoron.helpers.ColorHelper; import org.isoron.helpers.ColorHelper;
import org.isoron.helpers.DateHelper; import org.isoron.helpers.DateHelper;
@ -37,8 +38,9 @@ import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Random; import java.util.Random;
import java.util.TimeZone;
public class WeekdayFrequencyView extends ScrollableDataView public class HabitFrequencyView extends ScrollableDataView
{ {
private Paint pGrid; private Paint pGrid;
@ -65,7 +67,7 @@ public class WeekdayFrequencyView extends ScrollableDataView
private HashMap<Long, Integer[]> frequency; private HashMap<Long, Integer[]> frequency;
private String wdays[]; private String wdays[];
public WeekdayFrequencyView(Context context, AttributeSet attrs) public HabitFrequencyView(Context context, AttributeSet attrs)
{ {
super(context, attrs); super(context, attrs);
this.primaryColor = ColorHelper.palette[7]; this.primaryColor = ColorHelper.palette[7];
@ -91,6 +93,9 @@ public class WeekdayFrequencyView extends ScrollableDataView
dfMonth = new SimpleDateFormat("MMM", Locale.getDefault()); dfMonth = new SimpleDateFormat("MMM", Locale.getDefault());
dfYear = new SimpleDateFormat("yyyy", Locale.getDefault()); dfYear = new SimpleDateFormat("yyyy", Locale.getDefault());
dfMonth.setTimeZone(TimeZone.getTimeZone("GMT"));
dfYear.setTimeZone(TimeZone.getTimeZone("GMT"));
rect = new RectF(); rect = new RectF();
prevRect = new RectF(); prevRect = new RectF();
} }
@ -207,14 +212,22 @@ public class WeekdayFrequencyView extends ScrollableDataView
prevRect.setEmpty(); prevRect.setEmpty();
GregorianCalendar currentDate = DateHelper.getStartOfTodayCalendar(); GregorianCalendar currentDate = DateHelper.getStartOfTodayCalendar();
SimpleDateFormat df = new SimpleDateFormat();
df.setTimeZone(TimeZone.getTimeZone("GMT"));
currentDate.set(Calendar.DAY_OF_MONTH, 1); currentDate.set(Calendar.DAY_OF_MONTH, 1);
currentDate.add(Calendar.MONTH, -nColumns + 2 - getDataOffset()); currentDate.add(Calendar.MONTH, -nColumns + 2 - getDataOffset());
// - n + 3 - off + n - 2
for(int i = 0; i < nColumns - 1; i++) for(int i = 0; i < nColumns - 1; i++)
{ {
rect.set(0, 0, columnWidth, columnHeight); rect.set(0, 0, columnWidth, columnHeight);
rect.offset(i * columnWidth, 0); rect.offset(i * columnWidth, 0);
Log.d("HabitFrequencyView", df.format(currentDate.getTime()));
drawColumn(canvas, rect, currentDate); drawColumn(canvas, rect, currentDate);
currentDate.add(Calendar.MONTH, 1); currentDate.add(Calendar.MONTH, 1);
} }
@ -222,16 +235,22 @@ public class WeekdayFrequencyView extends ScrollableDataView
private void drawColumn(Canvas canvas, RectF rect, GregorianCalendar date) private void drawColumn(Canvas canvas, RectF rect, GregorianCalendar date)
{ {
Log.d("HabitFrequencyView", String.format("timestamp=%d", date.getTimeInMillis()));
Integer values[] = frequency.get(date.getTimeInMillis()); Integer values[] = frequency.get(date.getTimeInMillis());
float rowHeight = rect.height() / 8.0f; float rowHeight = rect.height() / 8.0f;
prevRect.set(rect); prevRect.set(rect);
for (int i = 0; i < 7; i++) for (int i = 0; i < 7; i++)
{ {
rect.set(0, 0, columnWidth, columnWidth); rect.set(0, 0, baseSize, baseSize);
rect.offset(prevRect.left, prevRect.top + columnWidth * i); rect.offset(prevRect.left, prevRect.top + columnWidth * i);
if(values != null) drawMarker(canvas, rect, values[i]); if(values != null)
{
drawMarker(canvas, rect, values[i]);
Log.d("HabitFrequencyView", String.format("value[%d]=%d", i, values[i]));
}
rect.offset(0, rowHeight); rect.offset(0, rowHeight);
} }
@ -243,6 +262,7 @@ public class WeekdayFrequencyView extends ScrollableDataView
Date time = date.getTime(); Date time = date.getTime();
canvas.drawText(dfMonth.format(time), rect.centerX(), rect.centerY() - 0.1f * em, pText); canvas.drawText(dfMonth.format(time), rect.centerX(), rect.centerY() - 0.1f * em, pText);
if(date.get(Calendar.MONTH) == 1) if(date.get(Calendar.MONTH) == 1)
canvas.drawText(dfYear.format(time), rect.centerX(), rect.centerY() + 0.9f * em, pText); canvas.drawText(dfYear.format(time), rect.centerX(), rect.centerY() + 0.9f * em, pText);
} }
@ -267,9 +287,12 @@ public class WeekdayFrequencyView extends ScrollableDataView
for (int i = 0; i < nRows; i++) for (int i = 0; i < nRows; i++)
{ {
canvas.drawText(wdays[i], rGrid.right - columnWidth, rGrid.top + rowHeight / 2 + 0.25f * em, pText); canvas.drawText(wdays[i], rGrid.right - columnWidth,
rGrid.top + rowHeight / 2 + 0.25f * em, pText);
pGrid.setStrokeWidth(1f); pGrid.setStrokeWidth(1f);
canvas.drawLine(rGrid.left, rGrid.top, rGrid.right, rGrid.top, pGrid); canvas.drawLine(rGrid.left, rGrid.top, rGrid.right, rGrid.top, pGrid);
rGrid.offset(0, rowHeight); rGrid.offset(0, rowHeight);
} }
Loading…
Cancel
Save