diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/FrequencyWidgetTest.java b/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/FrequencyWidgetTest.java index ac361fd96..8f8d9c507 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/FrequencyWidgetTest.java +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/FrequencyWidgetTest.java @@ -25,7 +25,6 @@ import android.widget.*; import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; -import org.isoron.uhabits.widgets.*; import org.junit.*; import org.junit.runner.*; diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/HistoryWidgetTest.java b/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/HistoryWidgetTest.java index c1adc6882..16c45c408 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/HistoryWidgetTest.java +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/widgets/HistoryWidgetTest.java @@ -25,7 +25,6 @@ import android.widget.*; import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; -import org.isoron.uhabits.widgets.*; import org.junit.*; import org.junit.runner.*; diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/BarChart.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/BarChart.java index 42271a838..6dab1f948 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/BarChart.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/BarChart.java @@ -445,9 +445,9 @@ public class BarChart extends ScrollableChart return; } - dfYear = DateFormats.fromSkeleton("yyyy"); - dfMonth = DateFormats.fromSkeleton("MMM"); - dfDay = DateFormats.fromSkeleton("d"); + dfYear = AndroidDateFormats.fromSkeleton("yyyy"); + dfMonth = AndroidDateFormats.fromSkeleton("MMM"); + dfDay = AndroidDateFormats.fromSkeleton("d"); } private void initPaints() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java index fa1d38214..444d359d3 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java @@ -299,8 +299,8 @@ public class FrequencyChart extends ScrollableChart private void initDateFormats() { - dfMonth = DateFormats.fromSkeleton("MMM"); - dfYear = DateFormats.fromSkeleton("yyyy"); + dfMonth = AndroidDateFormats.fromSkeleton("MMM"); + dfYear = AndroidDateFormats.fromSkeleton("yyyy"); } private void initRects() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java index 1f6135876..6abf7cfb9 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java @@ -413,8 +413,8 @@ public class HistoryChart extends ScrollableChart private void initDateFormats() { - dfMonth = DateFormats.fromSkeleton("MMM"); - dfYear = DateFormats.fromSkeleton("yyyy"); + dfMonth = AndroidDateFormats.fromSkeleton("MMM"); + dfYear = AndroidDateFormats.fromSkeleton("yyyy"); } private void initRects() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/ScoreChart.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/ScoreChart.java index 14b77ee77..f6ee889f7 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/ScoreChart.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/ScoreChart.java @@ -410,9 +410,9 @@ public class ScoreChart extends ScrollableChart private void initDateFormats() { - dfYear = DateFormats.fromSkeleton("yyyy"); - dfMonth = DateFormats.fromSkeleton("MMM"); - dfDay = DateFormats.fromSkeleton("d"); + dfYear = AndroidDateFormats.fromSkeleton("yyyy"); + dfMonth = AndroidDateFormats.fromSkeleton("MMM"); + dfDay = AndroidDateFormats.fromSkeleton("d"); } private void initPaints() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ReminderPanel.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ReminderPanel.java index 7f1fc7499..4c7287e5a 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ReminderPanel.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ReminderPanel.java @@ -32,11 +32,10 @@ import org.isoron.uhabits.R; import org.isoron.uhabits.activities.common.dialogs.*; import org.isoron.uhabits.activities.common.views.*; import org.isoron.uhabits.models.*; +import org.isoron.uhabits.utils.*; import butterknife.*; -import static org.isoron.uhabits.utils.DateUtils.*; - public class ReminderPanel extends FrameLayout implements TimePickerDialog.OnTimeSetListener, WeekdayPickerDialog.OnWeekdaysPickedListener @@ -86,12 +85,12 @@ public class ReminderPanel extends FrameLayout } Context ctx = getContext(); - String time = formatTime(ctx, reminder.getHour(), reminder.getMinute()); + String time = AndroidDateUtils.formatTime(ctx, reminder.getHour(), reminder.getMinute()); tvReminderTime.setText(time); llReminderDays.setVisibility(View.VISIBLE); boolean weekdays[] = reminder.getDays().toArray(); - tvReminderDays.setText(formatWeekdayList(ctx, weekdays)); + tvReminderDays.setText(AndroidDateUtils.formatWeekdayList(ctx, weekdays)); } @Override diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java index 52a1fe9ad..6a6bbd22e 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java @@ -108,7 +108,7 @@ public class SubtitleCard extends HabitCard private void updateReminderText(Reminder reminder) { reminderLabel.setText( - DateUtils.formatTime(getContext(), reminder.getHour(), + AndroidDateUtils.formatTime(getContext(), reminder.getHour(), reminder.getMinute())); } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.java b/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.java index 76b56243a..0e6e41b9b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.java @@ -83,7 +83,7 @@ public class IntentFactory public Intent startShowHabitActivity(Context context, Habit habit) { Intent intent = new Intent(context, ShowHabitActivity.class); - intent.setData(habit.getUri()); + intent.setData(Uri.parse(habit.getUriString())); return intent; } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java b/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java index 415f9237a..12ef4c65b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java @@ -51,7 +51,7 @@ public class PendingIntentFactory @Nullable Long timestamp) { Intent checkIntent = new Intent(context, WidgetReceiver.class); - checkIntent.setData(habit.getUri()); + checkIntent.setData(Uri.parse(habit.getUriString())); checkIntent.setAction(WidgetReceiver.ACTION_ADD_REPETITION); if (timestamp != null) checkIntent.putExtra("timestamp", timestamp); return PendingIntent.getBroadcast(context, 1, checkIntent, @@ -62,7 +62,7 @@ public class PendingIntentFactory { Intent deleteIntent = new Intent(context, ReminderReceiver.class); deleteIntent.setAction(WidgetReceiver.ACTION_DISMISS_REMINDER); - deleteIntent.setData(habit.getUri()); + deleteIntent.setData(Uri.parse(habit.getUriString())); return PendingIntent.getBroadcast(context, 0, deleteIntent, FLAG_UPDATE_CURRENT); } @@ -81,7 +81,7 @@ public class PendingIntentFactory @Nullable Long reminderTime, long timestamp) { - Uri uri = habit.getUri(); + Uri uri = Uri.parse(habit.getUriString()); Intent intent = new Intent(context, ReminderReceiver.class); intent.setAction(ReminderReceiver.ACTION_SHOW_REMINDER); @@ -95,7 +95,7 @@ public class PendingIntentFactory public PendingIntent snoozeNotification(@NonNull Habit habit) { - Uri data = habit.getUri(); + Uri data = Uri.parse(habit.getUriString()); Intent snoozeIntent = new Intent(context, ReminderReceiver.class); snoozeIntent.setData(data); snoozeIntent.setAction(ReminderReceiver.ACTION_SNOOZE_REMINDER); @@ -106,7 +106,7 @@ public class PendingIntentFactory public PendingIntent toggleCheckmark(@NonNull Habit habit, @Nullable Long timestamp) { - Uri data = habit.getUri(); + Uri data = Uri.parse(habit.getUriString()); Intent checkIntent = new Intent(context, WidgetReceiver.class); checkIntent.setData(data); checkIntent.setAction(WidgetReceiver.ACTION_TOGGLE_REPETITION); diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/tasks/ExportCSVTask.java b/uhabits-android/src/main/java/org/isoron/uhabits/tasks/ExportCSVTask.java index 1f41f1994..1b0abf3a3 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/tasks/ExportCSVTask.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/tasks/ExportCSVTask.java @@ -25,7 +25,6 @@ import android.support.annotation.*; import com.google.auto.factory.*; import org.isoron.uhabits.AppContext; -import org.isoron.uhabits.activities.ActivityContext; import org.isoron.uhabits.io.*; import org.isoron.uhabits.models.*; import org.isoron.uhabits.utils.*; diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateFormats.java b/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateFormats.java new file mode 100644 index 000000000..66a965217 --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateFormats.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.uhabits.utils; + +import android.support.annotation.*; + +import java.text.*; +import java.util.*; + +import static android.text.format.DateFormat.getBestDateTimePattern; + +public class AndroidDateFormats +{ + @NonNull + public static SimpleDateFormat fromSkeleton(@NonNull String skeleton) + { + Locale locale = Locale.getDefault(); + skeleton = getBestDateTimePattern(locale, skeleton); + return DateFormats.fromSkeleton(skeleton, locale); + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateUtils.java b/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateUtils.java new file mode 100644 index 000000000..ba10e8733 --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/AndroidDateUtils.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.utils; + +import android.content.*; +import android.text.format.*; + +import org.isoron.uhabits.*; + +import java.util.*; + +public class AndroidDateUtils +{ + public static String formatTime(Context context, int hours, int minutes) + { + int reminderMilliseconds = (hours * 60 + minutes) * 60 * 1000; + + Date date = new Date(reminderMilliseconds); + java.text.DateFormat df = DateFormat.getTimeFormat(context); + df.setTimeZone(TimeZone.getTimeZone("UTC")); + + return df.format(date); + } + + public static String formatWeekdayList(Context context, boolean weekday[]) + { + String shortDayNames[] = DateUtils.getShortDayNames(); + String longDayNames[] = DateUtils.getLongDayNames(); + StringBuilder buffer = new StringBuilder(); + + int count = 0; + int first = 0; + boolean isFirst = true; + for (int i = 0; i < 7; i++) + { + if (weekday[i]) + { + if (isFirst) first = i; + else buffer.append(", "); + + buffer.append(shortDayNames[i]); + isFirst = false; + count++; + } + } + + if (count == 1) return longDayNames[first]; + if (count == 2 && weekday[0] && weekday[1]) + return context.getString(R.string.weekends); + if (count == 5 && !weekday[0] && !weekday[1]) + return context.getString(R.string.any_weekday); + if (count == 7) return context.getString(R.string.any_day); + return buffer.toString(); + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ColorUtils.java b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ColorUtils.java index 25434bacc..ac5afdf89 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ColorUtils.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ColorUtils.java @@ -25,21 +25,6 @@ import android.util.*; public abstract class ColorUtils { - public static String CSV_PALETTE[] = { - "#D32F2F", // 0 red - "#E64A19", // 1 orange - "#F9A825", // 2 yellow - "#AFB42B", // 3 light green - "#388E3C", // 4 dark green - "#00897B", // 5 teal - "#00ACC1", // 6 cyan - "#039BE5", // 7 blue - "#5E35B1", // 8 deep purple - "#8E24AA", // 9 purple - "#D81B60", // 10 pink - "#303030", // 11 dark grey - "#aaaaaa" // 12 light grey - }; public static int colorToPaletteIndex(Context context, int color) { diff --git a/uhabits-core/build.gradle b/uhabits-core/build.gradle index 4dc458a31..914660c4c 100644 --- a/uhabits-core/build.gradle +++ b/uhabits-core/build.gradle @@ -26,6 +26,10 @@ dependencies { implementation 'com.google.auto.factory:auto-factory:1.0-beta3' implementation 'com.google.code.findbugs:jsr305:3.0.2' implementation 'org.apache.commons:commons-lang3:3.5' + + implementation ('com.opencsv:opencsv:3.9') { + exclude group: 'commons-logging', module: 'commons-logging' + } } sourceCompatibility = "1.8" diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/CheckmarkList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/CheckmarkList.java similarity index 98% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/CheckmarkList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/CheckmarkList.java index da9725b92..31a09b921 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/models/CheckmarkList.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/models/CheckmarkList.java @@ -27,9 +27,9 @@ import java.io.*; import java.text.*; import java.util.*; -import static org.isoron.uhabits.models.Checkmark.CHECKED_EXPLICITLY; -import static org.isoron.uhabits.models.Checkmark.CHECKED_IMPLICITLY; import javax.annotation.concurrent.*; + +import static org.isoron.uhabits.models.Checkmark.*; /** * The collection of {@link Checkmark}s belonging to a habit. */ diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/Habit.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/Habit.java similarity index 98% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/Habit.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/Habit.java index 90b760609..e7b4d412e 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/models/Habit.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/models/Habit.java @@ -19,7 +19,6 @@ package org.isoron.uhabits.models; -import android.net.*; import android.support.annotation.*; import org.apache.commons.lang3.builder.*; @@ -281,12 +280,11 @@ public class Habit /** * Returns the public URI that identifies this habit * - * @return the uri + * @return the URI */ - public Uri getUri() + public String getUriString() { - String s = String.format(Locale.US, HABIT_URI_FORMAT, getId()); - return Uri.parse(s); + return String.format(Locale.US, HABIT_URI_FORMAT, getId()); } public synchronized boolean hasId() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitList.java similarity index 99% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/HabitList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/HabitList.java index 2892a2c30..52c00a893 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitList.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitList.java @@ -230,7 +230,7 @@ public abstract class HabitList implements Iterable habit.getDescription(), Integer.toString(freq.getNumerator()), Integer.toString(freq.getDenominator()), - ColorUtils.CSV_PALETTE[habit.getColor()] + ColorConstants.CSV_PALETTE[habit.getColor()] }; csv.writeNext(cols, false); diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitMatcher.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitMatcher.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/HabitMatcher.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/HabitMatcher.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java similarity index 96% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java index facc8cc4b..c6cbd0dc4 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java @@ -36,7 +36,7 @@ public class HabitMatcherBuilder private static List allColors() { List colors = new ArrayList<>(); - for(int i = 0; i < ColorUtils.CSV_PALETTE.length; i++) + for(int i = 0; i < ColorConstants.CSV_PALETTE.length; i++) colors.add(i); return colors; } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/HabitNotFoundException.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/HabitNotFoundException.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/HabitNotFoundException.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/HabitNotFoundException.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/ModelFactory.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/ModelFactory.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/ModelFactory.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/ModelFactory.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/RepetitionList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/RepetitionList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/RepetitionList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/RepetitionList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/ScoreList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/ScoreList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/ScoreList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/ScoreList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/Streak.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/Streak.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/Streak.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/Streak.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/StreakList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/StreakList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/StreakList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/StreakList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryCheckmarkList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryCheckmarkList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryCheckmarkList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryCheckmarkList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryRepetitionList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryRepetitionList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryRepetitionList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryRepetitionList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryStreakList.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryStreakList.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/MemoryStreakList.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/MemoryStreakList.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/memory/package-info.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/memory/package-info.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/memory/package-info.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/memory/package-info.java diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/models/package-info.java b/uhabits-core/src/main/java/org/isoron/uhabits/models/package-info.java similarity index 100% rename from uhabits-android/src/main/java/org/isoron/uhabits/models/package-info.java rename to uhabits-core/src/main/java/org/isoron/uhabits/models/package-info.java diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/utils/ColorConstants.java b/uhabits-core/src/main/java/org/isoron/uhabits/utils/ColorConstants.java new file mode 100644 index 000000000..294f3e6cd --- /dev/null +++ b/uhabits-core/src/main/java/org/isoron/uhabits/utils/ColorConstants.java @@ -0,0 +1,20 @@ +package org.isoron.uhabits.utils; + +public class ColorConstants +{ + public static String[] CSV_PALETTE = { + "#D32F2F", // 0 red + "#E64A19", // 1 orange + "#F9A825", // 2 yellow + "#AFB42B", // 3 light green + "#388E3C", // 4 dark green + "#00897B", // 5 teal + "#00ACC1", // 6 cyan + "#039BE5", // 7 blue + "#5E35B1", // 8 deep purple + "#8E24AA", // 9 purple + "#D81B60", // 10 pink + "#303030", // 11 dark grey + "#aaaaaa" // 12 light grey + }; +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DateFormats.java b/uhabits-core/src/main/java/org/isoron/uhabits/utils/DateFormats.java similarity index 78% rename from uhabits-android/src/main/java/org/isoron/uhabits/utils/DateFormats.java rename to uhabits-core/src/main/java/org/isoron/uhabits/utils/DateFormats.java index 779170efe..dc1df5231 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DateFormats.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/utils/DateFormats.java @@ -24,27 +24,17 @@ import android.support.annotation.*; import java.text.*; import java.util.*; -import static android.text.format.DateFormat.*; - public class DateFormats { @NonNull - private static SimpleDateFormat fromSkeleton(@NonNull String skeleton, - @NonNull Locale locale) + public static SimpleDateFormat fromSkeleton(@NonNull String skeleton, + @NonNull Locale locale) { SimpleDateFormat df = new SimpleDateFormat(skeleton, locale); df.setTimeZone(TimeZone.getTimeZone("UTC")); return df; } - @NonNull - public static SimpleDateFormat fromSkeleton(@NonNull String skeleton) - { - Locale locale = Locale.getDefault(); - skeleton = getBestDateTimePattern(locale, skeleton); - return fromSkeleton(skeleton, locale); - } - public static SimpleDateFormat getBackupDateFormat() { return fromSkeleton("yyyy-MM-dd HHmmss", Locale.US); diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DateUtils.java b/uhabits-core/src/main/java/org/isoron/uhabits/utils/DateUtils.java similarity index 83% rename from uhabits-android/src/main/java/org/isoron/uhabits/utils/DateUtils.java rename to uhabits-core/src/main/java/org/isoron/uhabits/utils/DateUtils.java index cce452145..cb0f20fbe 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DateUtils.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/utils/DateUtils.java @@ -19,11 +19,6 @@ package org.isoron.uhabits.utils; -import android.content.*; -import android.text.format.*; - -import org.isoron.uhabits.*; - import java.util.*; import static java.util.Calendar.*; @@ -54,48 +49,6 @@ public abstract class DateUtils return dayOfWeek + "\n" + dayOfMonth; } - public static String formatTime(Context context, int hours, int minutes) - { - int reminderMilliseconds = (hours * 60 + minutes) * 60 * 1000; - - Date date = new Date(reminderMilliseconds); - java.text.DateFormat df = DateFormat.getTimeFormat(context); - df.setTimeZone(TimeZone.getTimeZone("UTC")); - - return df.format(date); - } - - public static String formatWeekdayList(Context context, boolean weekday[]) - { - String shortDayNames[] = getShortDayNames(); - String longDayNames[] = getLongDayNames(); - StringBuilder buffer = new StringBuilder(); - - int count = 0; - int first = 0; - boolean isFirst = true; - for (int i = 0; i < 7; i++) - { - if (weekday[i]) - { - if (isFirst) first = i; - else buffer.append(", "); - - buffer.append(shortDayNames[i]); - isFirst = false; - count++; - } - } - - if (count == 1) return longDayNames[first]; - if (count == 2 && weekday[0] && weekday[1]) - return context.getString(R.string.weekends); - if (count == 5 && !weekday[0] && !weekday[1]) - return context.getString(R.string.any_weekday); - if (count == 7) return context.getString(R.string.any_day); - return buffer.toString(); - } - public static GregorianCalendar getCalendar(long timestamp) { GregorianCalendar day =