mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Move remaining model classes
This commit is contained in:
@@ -25,7 +25,6 @@ import android.widget.*;
|
|||||||
|
|
||||||
import org.isoron.uhabits.*;
|
import org.isoron.uhabits.*;
|
||||||
import org.isoron.uhabits.models.*;
|
import org.isoron.uhabits.models.*;
|
||||||
import org.isoron.uhabits.widgets.*;
|
|
||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
import org.junit.runner.*;
|
import org.junit.runner.*;
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import android.widget.*;
|
|||||||
|
|
||||||
import org.isoron.uhabits.*;
|
import org.isoron.uhabits.*;
|
||||||
import org.isoron.uhabits.models.*;
|
import org.isoron.uhabits.models.*;
|
||||||
import org.isoron.uhabits.widgets.*;
|
|
||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
import org.junit.runner.*;
|
import org.junit.runner.*;
|
||||||
|
|
||||||
|
|||||||
@@ -445,9 +445,9 @@ public class BarChart extends ScrollableChart
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dfYear = DateFormats.fromSkeleton("yyyy");
|
dfYear = AndroidDateFormats.fromSkeleton("yyyy");
|
||||||
dfMonth = DateFormats.fromSkeleton("MMM");
|
dfMonth = AndroidDateFormats.fromSkeleton("MMM");
|
||||||
dfDay = DateFormats.fromSkeleton("d");
|
dfDay = AndroidDateFormats.fromSkeleton("d");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initPaints()
|
private void initPaints()
|
||||||
|
|||||||
@@ -299,8 +299,8 @@ public class FrequencyChart extends ScrollableChart
|
|||||||
|
|
||||||
private void initDateFormats()
|
private void initDateFormats()
|
||||||
{
|
{
|
||||||
dfMonth = DateFormats.fromSkeleton("MMM");
|
dfMonth = AndroidDateFormats.fromSkeleton("MMM");
|
||||||
dfYear = DateFormats.fromSkeleton("yyyy");
|
dfYear = AndroidDateFormats.fromSkeleton("yyyy");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRects()
|
private void initRects()
|
||||||
|
|||||||
@@ -413,8 +413,8 @@ public class HistoryChart extends ScrollableChart
|
|||||||
|
|
||||||
private void initDateFormats()
|
private void initDateFormats()
|
||||||
{
|
{
|
||||||
dfMonth = DateFormats.fromSkeleton("MMM");
|
dfMonth = AndroidDateFormats.fromSkeleton("MMM");
|
||||||
dfYear = DateFormats.fromSkeleton("yyyy");
|
dfYear = AndroidDateFormats.fromSkeleton("yyyy");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRects()
|
private void initRects()
|
||||||
|
|||||||
@@ -410,9 +410,9 @@ public class ScoreChart extends ScrollableChart
|
|||||||
|
|
||||||
private void initDateFormats()
|
private void initDateFormats()
|
||||||
{
|
{
|
||||||
dfYear = DateFormats.fromSkeleton("yyyy");
|
dfYear = AndroidDateFormats.fromSkeleton("yyyy");
|
||||||
dfMonth = DateFormats.fromSkeleton("MMM");
|
dfMonth = AndroidDateFormats.fromSkeleton("MMM");
|
||||||
dfDay = DateFormats.fromSkeleton("d");
|
dfDay = AndroidDateFormats.fromSkeleton("d");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initPaints()
|
private void initPaints()
|
||||||
|
|||||||
@@ -32,11 +32,10 @@ import org.isoron.uhabits.R;
|
|||||||
import org.isoron.uhabits.activities.common.dialogs.*;
|
import org.isoron.uhabits.activities.common.dialogs.*;
|
||||||
import org.isoron.uhabits.activities.common.views.*;
|
import org.isoron.uhabits.activities.common.views.*;
|
||||||
import org.isoron.uhabits.models.*;
|
import org.isoron.uhabits.models.*;
|
||||||
|
import org.isoron.uhabits.utils.*;
|
||||||
|
|
||||||
import butterknife.*;
|
import butterknife.*;
|
||||||
|
|
||||||
import static org.isoron.uhabits.utils.DateUtils.*;
|
|
||||||
|
|
||||||
public class ReminderPanel extends FrameLayout
|
public class ReminderPanel extends FrameLayout
|
||||||
implements TimePickerDialog.OnTimeSetListener,
|
implements TimePickerDialog.OnTimeSetListener,
|
||||||
WeekdayPickerDialog.OnWeekdaysPickedListener
|
WeekdayPickerDialog.OnWeekdaysPickedListener
|
||||||
@@ -86,12 +85,12 @@ public class ReminderPanel extends FrameLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
Context ctx = getContext();
|
Context ctx = getContext();
|
||||||
String time = formatTime(ctx, reminder.getHour(), reminder.getMinute());
|
String time = AndroidDateUtils.formatTime(ctx, reminder.getHour(), reminder.getMinute());
|
||||||
tvReminderTime.setText(time);
|
tvReminderTime.setText(time);
|
||||||
llReminderDays.setVisibility(View.VISIBLE);
|
llReminderDays.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
boolean weekdays[] = reminder.getDays().toArray();
|
boolean weekdays[] = reminder.getDays().toArray();
|
||||||
tvReminderDays.setText(formatWeekdayList(ctx, weekdays));
|
tvReminderDays.setText(AndroidDateUtils.formatWeekdayList(ctx, weekdays));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class SubtitleCard extends HabitCard
|
|||||||
private void updateReminderText(Reminder reminder)
|
private void updateReminderText(Reminder reminder)
|
||||||
{
|
{
|
||||||
reminderLabel.setText(
|
reminderLabel.setText(
|
||||||
DateUtils.formatTime(getContext(), reminder.getHour(),
|
AndroidDateUtils.formatTime(getContext(), reminder.getHour(),
|
||||||
reminder.getMinute()));
|
reminder.getMinute()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ public class IntentFactory
|
|||||||
public Intent startShowHabitActivity(Context context, Habit habit)
|
public Intent startShowHabitActivity(Context context, Habit habit)
|
||||||
{
|
{
|
||||||
Intent intent = new Intent(context, ShowHabitActivity.class);
|
Intent intent = new Intent(context, ShowHabitActivity.class);
|
||||||
intent.setData(habit.getUri());
|
intent.setData(Uri.parse(habit.getUriString()));
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class PendingIntentFactory
|
|||||||
@Nullable Long timestamp)
|
@Nullable Long timestamp)
|
||||||
{
|
{
|
||||||
Intent checkIntent = new Intent(context, WidgetReceiver.class);
|
Intent checkIntent = new Intent(context, WidgetReceiver.class);
|
||||||
checkIntent.setData(habit.getUri());
|
checkIntent.setData(Uri.parse(habit.getUriString()));
|
||||||
checkIntent.setAction(WidgetReceiver.ACTION_ADD_REPETITION);
|
checkIntent.setAction(WidgetReceiver.ACTION_ADD_REPETITION);
|
||||||
if (timestamp != null) checkIntent.putExtra("timestamp", timestamp);
|
if (timestamp != null) checkIntent.putExtra("timestamp", timestamp);
|
||||||
return PendingIntent.getBroadcast(context, 1, checkIntent,
|
return PendingIntent.getBroadcast(context, 1, checkIntent,
|
||||||
@@ -62,7 +62,7 @@ public class PendingIntentFactory
|
|||||||
{
|
{
|
||||||
Intent deleteIntent = new Intent(context, ReminderReceiver.class);
|
Intent deleteIntent = new Intent(context, ReminderReceiver.class);
|
||||||
deleteIntent.setAction(WidgetReceiver.ACTION_DISMISS_REMINDER);
|
deleteIntent.setAction(WidgetReceiver.ACTION_DISMISS_REMINDER);
|
||||||
deleteIntent.setData(habit.getUri());
|
deleteIntent.setData(Uri.parse(habit.getUriString()));
|
||||||
return PendingIntent.getBroadcast(context, 0, deleteIntent,
|
return PendingIntent.getBroadcast(context, 0, deleteIntent,
|
||||||
FLAG_UPDATE_CURRENT);
|
FLAG_UPDATE_CURRENT);
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ public class PendingIntentFactory
|
|||||||
@Nullable Long reminderTime,
|
@Nullable Long reminderTime,
|
||||||
long timestamp)
|
long timestamp)
|
||||||
{
|
{
|
||||||
Uri uri = habit.getUri();
|
Uri uri = Uri.parse(habit.getUriString());
|
||||||
|
|
||||||
Intent intent = new Intent(context, ReminderReceiver.class);
|
Intent intent = new Intent(context, ReminderReceiver.class);
|
||||||
intent.setAction(ReminderReceiver.ACTION_SHOW_REMINDER);
|
intent.setAction(ReminderReceiver.ACTION_SHOW_REMINDER);
|
||||||
@@ -95,7 +95,7 @@ public class PendingIntentFactory
|
|||||||
|
|
||||||
public PendingIntent snoozeNotification(@NonNull Habit habit)
|
public PendingIntent snoozeNotification(@NonNull Habit habit)
|
||||||
{
|
{
|
||||||
Uri data = habit.getUri();
|
Uri data = Uri.parse(habit.getUriString());
|
||||||
Intent snoozeIntent = new Intent(context, ReminderReceiver.class);
|
Intent snoozeIntent = new Intent(context, ReminderReceiver.class);
|
||||||
snoozeIntent.setData(data);
|
snoozeIntent.setData(data);
|
||||||
snoozeIntent.setAction(ReminderReceiver.ACTION_SNOOZE_REMINDER);
|
snoozeIntent.setAction(ReminderReceiver.ACTION_SNOOZE_REMINDER);
|
||||||
@@ -106,7 +106,7 @@ public class PendingIntentFactory
|
|||||||
public PendingIntent toggleCheckmark(@NonNull Habit habit,
|
public PendingIntent toggleCheckmark(@NonNull Habit habit,
|
||||||
@Nullable Long timestamp)
|
@Nullable Long timestamp)
|
||||||
{
|
{
|
||||||
Uri data = habit.getUri();
|
Uri data = Uri.parse(habit.getUriString());
|
||||||
Intent checkIntent = new Intent(context, WidgetReceiver.class);
|
Intent checkIntent = new Intent(context, WidgetReceiver.class);
|
||||||
checkIntent.setData(data);
|
checkIntent.setData(data);
|
||||||
checkIntent.setAction(WidgetReceiver.ACTION_TOGGLE_REPETITION);
|
checkIntent.setAction(WidgetReceiver.ACTION_TOGGLE_REPETITION);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import android.support.annotation.*;
|
|||||||
import com.google.auto.factory.*;
|
import com.google.auto.factory.*;
|
||||||
|
|
||||||
import org.isoron.uhabits.AppContext;
|
import org.isoron.uhabits.AppContext;
|
||||||
import org.isoron.uhabits.activities.ActivityContext;
|
|
||||||
import org.isoron.uhabits.io.*;
|
import org.isoron.uhabits.io.*;
|
||||||
import org.isoron.uhabits.models.*;
|
import org.isoron.uhabits.models.*;
|
||||||
import org.isoron.uhabits.utils.*;
|
import org.isoron.uhabits.utils.*;
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Álinson Santos Xavier <isoron@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Álinson Santos Xavier <isoron@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,21 +25,6 @@ import android.util.*;
|
|||||||
|
|
||||||
public abstract class ColorUtils
|
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)
|
public static int colorToPaletteIndex(Context context, int color)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ dependencies {
|
|||||||
implementation 'com.google.auto.factory:auto-factory:1.0-beta3'
|
implementation 'com.google.auto.factory:auto-factory:1.0-beta3'
|
||||||
implementation 'com.google.code.findbugs:jsr305:3.0.2'
|
implementation 'com.google.code.findbugs:jsr305:3.0.2'
|
||||||
implementation 'org.apache.commons:commons-lang3:3.5'
|
implementation 'org.apache.commons:commons-lang3:3.5'
|
||||||
|
|
||||||
|
implementation ('com.opencsv:opencsv:3.9') {
|
||||||
|
exclude group: 'commons-logging', module: 'commons-logging'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceCompatibility = "1.8"
|
sourceCompatibility = "1.8"
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import java.io.*;
|
|||||||
import java.text.*;
|
import java.text.*;
|
||||||
import java.util.*;
|
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 javax.annotation.concurrent.*;
|
||||||
|
|
||||||
|
import static org.isoron.uhabits.models.Checkmark.*;
|
||||||
/**
|
/**
|
||||||
* The collection of {@link Checkmark}s belonging to a habit.
|
* The collection of {@link Checkmark}s belonging to a habit.
|
||||||
*/
|
*/
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.models;
|
package org.isoron.uhabits.models;
|
||||||
|
|
||||||
import android.net.*;
|
|
||||||
import android.support.annotation.*;
|
import android.support.annotation.*;
|
||||||
|
|
||||||
import org.apache.commons.lang3.builder.*;
|
import org.apache.commons.lang3.builder.*;
|
||||||
@@ -281,12 +280,11 @@ public class Habit
|
|||||||
/**
|
/**
|
||||||
* Returns the public URI that identifies this 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 String.format(Locale.US, HABIT_URI_FORMAT, getId());
|
||||||
return Uri.parse(s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized boolean hasId()
|
public synchronized boolean hasId()
|
||||||
@@ -230,7 +230,7 @@ public abstract class HabitList implements Iterable<Habit>
|
|||||||
habit.getDescription(),
|
habit.getDescription(),
|
||||||
Integer.toString(freq.getNumerator()),
|
Integer.toString(freq.getNumerator()),
|
||||||
Integer.toString(freq.getDenominator()),
|
Integer.toString(freq.getDenominator()),
|
||||||
ColorUtils.CSV_PALETTE[habit.getColor()]
|
ColorConstants.CSV_PALETTE[habit.getColor()]
|
||||||
};
|
};
|
||||||
|
|
||||||
csv.writeNext(cols, false);
|
csv.writeNext(cols, false);
|
||||||
@@ -36,7 +36,7 @@ public class HabitMatcherBuilder
|
|||||||
private static List<Integer> allColors()
|
private static List<Integer> allColors()
|
||||||
{
|
{
|
||||||
List<Integer> colors = new ArrayList<>();
|
List<Integer> 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);
|
colors.add(i);
|
||||||
return colors;
|
return colors;
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -24,27 +24,17 @@ import android.support.annotation.*;
|
|||||||
import java.text.*;
|
import java.text.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static android.text.format.DateFormat.*;
|
|
||||||
|
|
||||||
public class DateFormats
|
public class DateFormats
|
||||||
{
|
{
|
||||||
@NonNull
|
@NonNull
|
||||||
private static SimpleDateFormat fromSkeleton(@NonNull String skeleton,
|
public static SimpleDateFormat fromSkeleton(@NonNull String skeleton,
|
||||||
@NonNull Locale locale)
|
@NonNull Locale locale)
|
||||||
{
|
{
|
||||||
SimpleDateFormat df = new SimpleDateFormat(skeleton, locale);
|
SimpleDateFormat df = new SimpleDateFormat(skeleton, locale);
|
||||||
df.setTimeZone(TimeZone.getTimeZone("UTC"));
|
df.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
return df;
|
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()
|
public static SimpleDateFormat getBackupDateFormat()
|
||||||
{
|
{
|
||||||
return fromSkeleton("yyyy-MM-dd HHmmss", Locale.US);
|
return fromSkeleton("yyyy-MM-dd HHmmss", Locale.US);
|
||||||
@@ -19,11 +19,6 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.utils;
|
package org.isoron.uhabits.utils;
|
||||||
|
|
||||||
import android.content.*;
|
|
||||||
import android.text.format.*;
|
|
||||||
|
|
||||||
import org.isoron.uhabits.*;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static java.util.Calendar.*;
|
import static java.util.Calendar.*;
|
||||||
@@ -54,48 +49,6 @@ public abstract class DateUtils
|
|||||||
return dayOfWeek + "\n" + dayOfMonth;
|
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)
|
public static GregorianCalendar getCalendar(long timestamp)
|
||||||
{
|
{
|
||||||
GregorianCalendar day =
|
GregorianCalendar day =
|
||||||
Reference in New Issue
Block a user