Compare commits

..

No commits in common. '543be48cb18c63a2e60413983517c466bdb86a27' and '5aa8744ef4c8e391c875bbb482e3e79740b5fd81' have entirely different histories.

@ -0,0 +1,31 @@
name: Build & Test
on:
pull_request:
paths-ignore:
- '**.md'
push:
paths-ignore:
- '**.md'
jobs:
Test:
runs-on: self-hosted
timeout-minutes: 30
steps:
- name: Check out source code
uses: actions/checkout@v4
- name: Build project
run: ./build.sh build
- name: Run Android tests
run: ./build.sh android-tests-parallel 28 29 30 32 33 34
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: build
path: |
build/*log
uhabits-android/build/outputs

@ -1,5 +1,8 @@
<h1 align="center">Loop Habit Tracker</h1>
<p align="center">
<a href="https://github.com/iSoron/uhabits/actions?query=workflow%3A%22Build+%26+Test%22">
<img alt="Build & Test" src="https://github.com/iSoron/uhabits/workflows/Build%20&%20Test/badge.svg" />
</a>
<a href="https://github.com/iSoron/uhabits/releases/latest">
<img alt="release" src="https://img.shields.io/github/v/release/iSoron/uhabits" />
</a>

@ -203,8 +203,7 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener {
}
private fun getPopupAnchor(): View? {
val dialog =
supportFragmentManager.findFragmentByTag("historyEditor") as HistoryEditorDialog?
val dialog = supportFragmentManager.findFragmentByTag("historyEditor") as HistoryEditorDialog?
return dialog?.dataView
}
@ -217,25 +216,6 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener {
ShowHabitMenuPresenter.Message.COULD_NOT_EXPORT -> {
showMessage(resources.getString(R.string.could_not_export))
}
ShowHabitMenuPresenter.Message.HABIT_ARCHIVED -> {
showMessage(
resources.getQuantityString(
R.plurals.toast_habits_archived,
1
)
)
}
ShowHabitMenuPresenter.Message.HABIT_UNARCHIVED -> {
showMessage(
resources.getQuantityString(
R.plurals.toast_habits_unarchived,
1
)
)
}
else -> {}
}
}

@ -35,9 +35,6 @@ class ShowHabitMenu(
if (preferences.isDeveloper) {
menu.findItem(R.id.action_randomize).isVisible = true
}
menu.findItem(R.id.action_archive_habit).isVisible = presenter.canArchive()
menu.findItem(R.id.action_unarchive_habit).isVisible = presenter.canUnarchive()
return true
}
@ -47,15 +44,6 @@ class ShowHabitMenu(
presenter.onEditHabit()
return true
}
R.id.action_archive_habit -> {
presenter.onArchiveHabits()
return true
}
R.id.action_unarchive_habit -> {
presenter.onUnarchiveHabits()
return true
}
R.id.action_delete -> {
presenter.onDeleteHabit()
return true

@ -94,9 +94,8 @@
<EditText
android:id="@+id/nameInput"
style="@style/FormInput"
android:maxLines="2"
android:maxLength="50"
android:inputType="textCapSentences|textMultiLine"
android:maxLines="1"
android:inputType="textCapSentences"
android:hint="@string/yes_or_no_short_example"
/>
</LinearLayout>

@ -26,16 +26,6 @@
android:title="@string/export"
app:showAsAction="never"/>
<item
android:id="@+id/action_archive_habit"
android:title="@string/archive"
app:showAsAction="never" />
<item
android:id="@+id/action_unarchive_habit"
android:title="@string/unarchive"
app:showAsAction="never"/>
<item
android:id="@+id/action_delete"
android:title="@string/delete"

@ -18,10 +18,8 @@
*/
package org.isoron.uhabits.core.ui.screens.habits.show
import org.isoron.uhabits.core.commands.ArchiveHabitsCommand
import org.isoron.uhabits.core.commands.CommandRunner
import org.isoron.uhabits.core.commands.DeleteHabitsCommand
import org.isoron.uhabits.core.commands.UnarchiveHabitsCommand
import org.isoron.uhabits.core.models.Entry
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.HabitList
@ -42,24 +40,10 @@ class ShowHabitMenuPresenter(
private val system: System,
private val taskRunner: TaskRunner
) {
fun canArchive(): Boolean {
return !(habit.isArchived)
}
fun canUnarchive(): Boolean {
return habit.isArchived
}
fun onEditHabit() {
screen.showEditHabitScreen(habit)
}
fun onArchiveHabits() {
commandRunner.run(ArchiveHabitsCommand(habitList, listOf(habit)))
screen.showMessage(Message.HABIT_ARCHIVED)
}
fun onExportCSV() {
val outputDir = system.getCSVOutputDir()
taskRunner.execute(
@ -80,11 +64,6 @@ class ShowHabitMenuPresenter(
}
}
fun onUnarchiveHabits() {
commandRunner.run(UnarchiveHabitsCommand(habitList, listOf(habit)))
screen.showMessage(Message.HABIT_UNARCHIVED)
}
fun onRandomize() {
val random = Random()
habit.originalEntries.clear()
@ -93,10 +72,7 @@ class ShowHabitMenuPresenter(
if (i % 7 == 0) strength = max(0.0, min(100.0, strength + 10 * random.nextGaussian()))
if (random.nextInt(100) > strength) continue
var value = Entry.YES_MANUAL
if (habit.isNumerical) {
value =
(1000 + 250 * random.nextGaussian() * strength / 100).toInt() * 1000
}
if (habit.isNumerical) value = (1000 + 250 * random.nextGaussian() * strength / 100).toInt() * 1000
habit.originalEntries.add(Entry(DateUtils.getToday().minus(i), value))
}
habit.recompute()
@ -104,9 +80,7 @@ class ShowHabitMenuPresenter(
}
enum class Message {
COULD_NOT_EXPORT,
HABIT_ARCHIVED,
HABIT_UNARCHIVED
COULD_NOT_EXPORT
}
interface Screen {

Loading…
Cancel
Save