mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Fix timezone issues; rename class to HabitFrequencyView
This commit is contained in:
@@ -42,7 +42,7 @@ import org.isoron.uhabits.helpers.ReminderHelper;
|
||||
import org.isoron.uhabits.models.Habit;
|
||||
import org.isoron.uhabits.models.Score;
|
||||
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.HabitStreakView;
|
||||
import org.isoron.uhabits.views.RingView;
|
||||
@@ -55,7 +55,7 @@ public class ShowHabitFragment extends Fragment
|
||||
private HabitStreakView streakView;
|
||||
private HabitScoreView scoreView;
|
||||
private HabitHistoryView historyView;
|
||||
private WeekdayFrequencyView punchcardView;
|
||||
private HabitFrequencyView punchcardView;
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
@@ -77,7 +77,7 @@ public class ShowHabitFragment extends Fragment
|
||||
streakView = (HabitStreakView) view.findViewById(R.id.streakView);
|
||||
scoreView = (HabitScoreView) view.findViewById(R.id.scoreView);
|
||||
historyView = (HabitHistoryView) view.findViewById(R.id.historyView);
|
||||
punchcardView = (WeekdayFrequencyView) view.findViewById(R.id.punchcardView);
|
||||
punchcardView = (HabitFrequencyView) view.findViewById(R.id.punchcardView);
|
||||
|
||||
updateHeaders(view);
|
||||
updateScoreRing(view);
|
||||
|
||||
@@ -21,7 +21,6 @@ package org.isoron.uhabits.models;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.util.Log;
|
||||
|
||||
import com.activeandroid.Cache;
|
||||
import com.activeandroid.query.Delete;
|
||||
@@ -129,6 +128,7 @@ public class RepetitionList
|
||||
if(!cursor.moveToFirst()) return new HashMap<>();
|
||||
|
||||
HashMap <Long, Integer[]> map = new HashMap<>();
|
||||
GregorianCalendar date = DateHelper.getStartOfTodayCalendar();
|
||||
|
||||
do
|
||||
{
|
||||
@@ -137,15 +137,9 @@ public class RepetitionList
|
||||
int weekday = (Integer.parseInt(cursor.getString(2)) + 1) % 7;
|
||||
int count = cursor.getInt(3);
|
||||
|
||||
Log.d("RepetitionList",
|
||||
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);
|
||||
|
||||
date.set(year, month - 1, 1);
|
||||
long timestamp = date.getTimeInMillis();
|
||||
|
||||
Integer[] list = map.get(timestamp);
|
||||
|
||||
if(list == null)
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
|
||||
import org.isoron.helpers.ColorHelper;
|
||||
import org.isoron.helpers.DateHelper;
|
||||
@@ -37,8 +38,9 @@ import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class WeekdayFrequencyView extends ScrollableDataView
|
||||
public class HabitFrequencyView extends ScrollableDataView
|
||||
{
|
||||
|
||||
private Paint pGrid;
|
||||
@@ -65,7 +67,7 @@ public class WeekdayFrequencyView extends ScrollableDataView
|
||||
private HashMap<Long, Integer[]> frequency;
|
||||
private String wdays[];
|
||||
|
||||
public WeekdayFrequencyView(Context context, AttributeSet attrs)
|
||||
public HabitFrequencyView(Context context, AttributeSet attrs)
|
||||
{
|
||||
super(context, attrs);
|
||||
this.primaryColor = ColorHelper.palette[7];
|
||||
@@ -91,6 +93,9 @@ public class WeekdayFrequencyView extends ScrollableDataView
|
||||
dfMonth = new SimpleDateFormat("MMM", Locale.getDefault());
|
||||
dfYear = new SimpleDateFormat("yyyy", Locale.getDefault());
|
||||
|
||||
dfMonth.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
dfYear.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
|
||||
rect = new RectF();
|
||||
prevRect = new RectF();
|
||||
}
|
||||
@@ -207,14 +212,22 @@ public class WeekdayFrequencyView extends ScrollableDataView
|
||||
prevRect.setEmpty();
|
||||
|
||||
GregorianCalendar currentDate = DateHelper.getStartOfTodayCalendar();
|
||||
|
||||
SimpleDateFormat df = new SimpleDateFormat();
|
||||
df.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
|
||||
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++)
|
||||
{
|
||||
rect.set(0, 0, columnWidth, columnHeight);
|
||||
rect.offset(i * columnWidth, 0);
|
||||
|
||||
Log.d("HabitFrequencyView", df.format(currentDate.getTime()));
|
||||
|
||||
drawColumn(canvas, rect, currentDate);
|
||||
currentDate.add(Calendar.MONTH, 1);
|
||||
}
|
||||
@@ -222,16 +235,22 @@ public class WeekdayFrequencyView extends ScrollableDataView
|
||||
|
||||
private void drawColumn(Canvas canvas, RectF rect, GregorianCalendar date)
|
||||
{
|
||||
Log.d("HabitFrequencyView", String.format("timestamp=%d", date.getTimeInMillis()));
|
||||
Integer values[] = frequency.get(date.getTimeInMillis());
|
||||
float rowHeight = rect.height() / 8.0f;
|
||||
prevRect.set(rect);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -243,6 +262,7 @@ public class WeekdayFrequencyView extends ScrollableDataView
|
||||
Date time = date.getTime();
|
||||
|
||||
canvas.drawText(dfMonth.format(time), rect.centerX(), rect.centerY() - 0.1f * em, pText);
|
||||
|
||||
if(date.get(Calendar.MONTH) == 1)
|
||||
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++)
|
||||
{
|
||||
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);
|
||||
canvas.drawLine(rGrid.left, rGrid.top, rGrid.right, rGrid.top, pGrid);
|
||||
|
||||
rGrid.offset(0, rowHeight);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user