mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -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.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);
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user