Fixed plurals problem with habit(s) deletion

pull/405/head
Rechee 8 years ago
parent bf8c14fc03
commit f6ed52152a

@ -210,15 +210,23 @@ public class BaseScreen
*/
public void showMessage(@StringRes Integer stringId)
{
if (stringId == null || rootView == null) return;
showMessage(activity.getString(stringId));
}
public void showMessage(@PluralsRes Integer stringId, int quantity){
showMessage(activity.getResources().getQuantityString(stringId, quantity));
}
private void showMessage(String message) {
if (message == null || rootView == null) return;
if (snackbar == null)
{
snackbar = Snackbar.make(rootView, stringId, Snackbar.LENGTH_SHORT);
snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_SHORT);
int tvId = android.support.design.R.id.snackbar_text;
TextView tv = (TextView) snackbar.getView().findViewById(tvId);
tv.setTextColor(Color.WHITE);
}
else snackbar.setText(stringId);
else snackbar.setText(message);
snackbar.show();
}

@ -19,28 +19,39 @@
package org.isoron.uhabits.activities.habits.list
import android.app.*
import android.content.*
import android.support.annotation.*
import dagger.*
import org.isoron.androidbase.activities.*
import org.isoron.androidbase.utils.*
import org.isoron.uhabits.*
import org.isoron.uhabits.activities.common.dialogs.*
import org.isoron.uhabits.activities.habits.edit.*
import org.isoron.uhabits.activities.habits.list.views.*
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.support.annotation.StringRes
import dagger.Lazy
import org.isoron.androidbase.activities.ActivityScope
import org.isoron.androidbase.activities.BaseActivity
import org.isoron.androidbase.activities.BaseScreen
import org.isoron.androidbase.utils.FileUtils
import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory
import org.isoron.uhabits.activities.common.dialogs.ConfirmDeleteDialogFactory
import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory
import org.isoron.uhabits.activities.habits.edit.EditHabitDialogFactory
import org.isoron.uhabits.activities.habits.list.views.HabitCardListAdapter
import org.isoron.uhabits.core.commands.*
import org.isoron.uhabits.core.models.*
import org.isoron.uhabits.core.preferences.*
import org.isoron.uhabits.core.tasks.*
import org.isoron.uhabits.core.ui.*
import org.isoron.uhabits.core.ui.callbacks.*
import org.isoron.uhabits.core.ui.screens.habits.list.*
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.core.tasks.TaskRunner
import org.isoron.uhabits.core.ui.ThemeSwitcher
import org.isoron.uhabits.core.ui.callbacks.OnColorPickedCallback
import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior.Message.*
import org.isoron.uhabits.intents.*
import org.isoron.uhabits.tasks.*
import java.io.*
import javax.inject.*
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsMenuBehavior
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsSelectionMenuBehavior
import org.isoron.uhabits.intents.IntentFactory
import org.isoron.uhabits.tasks.ExportDBTaskFactory
import org.isoron.uhabits.tasks.ImportDataTask
import org.isoron.uhabits.tasks.ImportDataTaskFactory
import java.io.File
import java.io.IOException
import javax.inject.Inject
const val RESULT_IMPORT_DATA = 1
const val RESULT_EXPORT_CSV = 2
@ -92,7 +103,12 @@ class ListHabitsScreen
override fun onCommandExecuted(command: Command, refreshKey: Long?) {
if (command.isRemote) return
showMessage(getExecuteString(command))
if(command is DeleteHabitsCommand){
showMessage(R.plurals.toast_habits_deleted, command.quantityAffected)
}
else{
showMessage(getExecuteString(command))
}
}
override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -225,14 +241,13 @@ class ListHabitsScreen
@StringRes
private fun getExecuteString(command: Command): Int? {
when (command) {
is ArchiveHabitsCommand -> return R.string.toast_habit_archived
is ChangeHabitColorCommand -> return R.string.toast_habit_changed
is CreateHabitCommand -> return R.string.toast_habit_created
is DeleteHabitsCommand -> return R.string.toast_habit_deleted
is EditHabitCommand -> return R.string.toast_habit_changed
is UnarchiveHabitsCommand -> return R.string.toast_habit_unarchived
else -> return null
return when (command) {
is ArchiveHabitsCommand -> R.string.toast_habit_archived
is ChangeHabitColorCommand -> R.string.toast_habit_changed
is CreateHabitCommand -> R.string.toast_habit_created
is EditHabitCommand -> R.string.toast_habit_changed
is UnarchiveHabitsCommand -> R.string.toast_habit_unarchived
else -> null
}
}

@ -30,6 +30,10 @@
<string name="color_picker_default_title">Change color</string>
<string name="toast_habit_created">Habit created</string>
<plurals name="toast_habits_deleted">
<item quantity="one">Habit deleted</item>
<item quantity="other">Habits deleted</item>
</plurals>
<string name="toast_habit_deleted">Habits deleted</string>
<string name="toast_habit_restored">Habits restored</string>
<string name="toast_nothing_to_undo">Nothing to undo</string>

@ -109,7 +109,7 @@ class ListHabitsScreenTest : BaseAndroidJVMTest() {
fun testOnCommand() {
val c = mock(DeleteHabitsCommand::class.java)
screen.onCommandExecuted(c, null)
verify(screen).showMessage(R.string.toast_habit_deleted)
verify(screen).showMessage(R.plurals.toast_habits_deleted, c.quantityAffected)
}
@Test

@ -84,4 +84,8 @@ public abstract class Command
public abstract Object toRecord();
public abstract void undo();
public int getQuantityAffected() {
return 0;
}
}

@ -102,4 +102,9 @@ public class DeleteHabitsCommand extends Command
return command;
}
}
@Override
public int getQuantityAffected() {
return selected.size();
}
}

Loading…
Cancel
Save