mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-05 16:58:52 -06:00
Merge branch 'archiveFromStatisticsPage' into dev
This commit is contained in:
@@ -203,7 +203,8 @@ 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
|
||||
}
|
||||
|
||||
@@ -216,6 +217,25 @@ 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,6 +35,9 @@ 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
|
||||
}
|
||||
|
||||
@@ -44,6 +47,15 @@ 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
|
||||
|
||||
@@ -26,6 +26,16 @@
|
||||
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,8 +18,10 @@
|
||||
*/
|
||||
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
|
||||
@@ -40,10 +42,24 @@ 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(
|
||||
@@ -64,6 +80,11 @@ class ShowHabitMenuPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
fun onUnarchiveHabits() {
|
||||
commandRunner.run(UnarchiveHabitsCommand(habitList, listOf(habit)))
|
||||
screen.showMessage(Message.HABIT_UNARCHIVED)
|
||||
}
|
||||
|
||||
fun onRandomize() {
|
||||
val random = Random()
|
||||
habit.originalEntries.clear()
|
||||
@@ -72,7 +93,10 @@ 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()
|
||||
@@ -80,7 +104,9 @@ class ShowHabitMenuPresenter(
|
||||
}
|
||||
|
||||
enum class Message {
|
||||
COULD_NOT_EXPORT
|
||||
COULD_NOT_EXPORT,
|
||||
HABIT_ARCHIVED,
|
||||
HABIT_UNARCHIVED
|
||||
}
|
||||
|
||||
interface Screen {
|
||||
|
||||
Reference in New Issue
Block a user