diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardViewTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardViewTest.kt index 6b0f1cd18..63c700404 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardViewTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardViewTest.kt @@ -26,7 +26,7 @@ import org.isoron.uhabits.R import org.isoron.uhabits.core.models.Frequency import org.isoron.uhabits.core.models.PaletteColor import org.isoron.uhabits.core.models.Reminder -import org.isoron.uhabits.core.models.WeekdayList.EVERY_DAY +import org.isoron.uhabits.core.models.WeekdayList.Companion.EVERY_DAY import org.isoron.uhabits.core.ui.screens.habits.show.views.SubtitleCardState import org.junit.Before import org.junit.Test diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.java b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.java deleted file mode 100644 index a8fbf2aed..000000000 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2016-2021 Á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.core.models; - -import org.apache.commons.lang3.builder.*; - -import java.util.*; - -import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle; - -public final class WeekdayList -{ - public static final WeekdayList EVERY_DAY = new WeekdayList(127); - - private final boolean[] weekdays; - - public WeekdayList(int packedList) - { - weekdays = new boolean[7]; - - int current = 1; - for (int i = 0; i < 7; i++) - { - if ((packedList & current) != 0) weekdays[i] = true; - current = current << 1; - } - } - - public WeekdayList(boolean weekdays[]) - { - this.weekdays = Arrays.copyOf(weekdays, 7); - } - - public boolean isEmpty() - { - for (boolean d : weekdays) if (d) return false; - return true; - } - - public boolean[] toArray() - { - return Arrays.copyOf(weekdays, 7); - } - - public int toInteger() - { - int packedList = 0; - int current = 1; - - for (int i = 0; i < 7; i++) - { - if (weekdays[i]) packedList |= current; - current = current << 1; - } - - return packedList; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - - if (o == null || getClass() != o.getClass()) return false; - - WeekdayList that = (WeekdayList) o; - - return new EqualsBuilder().append(weekdays, that.weekdays).isEquals(); - } - - @Override - public int hashCode() - { - return new HashCodeBuilder(17, 37).append(weekdays).toHashCode(); - } - - @Override - public String toString() - { - return new ToStringBuilder(this, defaultToStringStyle()) - .append("weekdays", weekdays) - .toString(); - } -} diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.kt new file mode 100644 index 000000000..d598d5d78 --- /dev/null +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/WeekdayList.kt @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2016-2021 Á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.core.models + +import org.apache.commons.lang3.builder.EqualsBuilder +import org.apache.commons.lang3.builder.HashCodeBuilder +import org.apache.commons.lang3.builder.ToStringBuilder +import org.isoron.uhabits.core.utils.StringUtils.Companion.defaultToStringStyle +import java.util.Arrays + +class WeekdayList { + private val weekdays: BooleanArray + + constructor(packedList: Int) { + weekdays = BooleanArray(7) + var current = 1 + for (i in 0..6) { + if (packedList and current != 0) weekdays[i] = true + current = current shl 1 + } + } + + constructor(weekdays: BooleanArray?) { + this.weekdays = Arrays.copyOf(weekdays, 7) + } + + val isEmpty: Boolean + get() { + for (d in weekdays) if (d) return false + return true + } + + fun toArray(): BooleanArray { + return Arrays.copyOf(weekdays, 7) + } + + fun toInteger(): Int { + var packedList = 0 + var current = 1 + for (i in 0..6) { + if (weekdays[i]) packedList = packedList or current + current = current shl 1 + } + return packedList + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || javaClass != other.javaClass) return false + val that = other as WeekdayList + return EqualsBuilder().append(weekdays, that.weekdays).isEquals + } + + override fun hashCode(): Int { + return HashCodeBuilder(17, 37).append(weekdays).toHashCode() + } + + override fun toString(): String { + return ToStringBuilder(this, defaultToStringStyle()) + .append("weekdays", weekdays) + .toString() + } + + companion object { + val EVERY_DAY = WeekdayList(127) + } +}