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) 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) 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; int tvId = android.support.design.R.id.snackbar_text;
TextView tv = (TextView) snackbar.getView().findViewById(tvId); TextView tv = (TextView) snackbar.getView().findViewById(tvId);
tv.setTextColor(Color.WHITE); tv.setTextColor(Color.WHITE);
} }
else snackbar.setText(stringId); else snackbar.setText(message);
snackbar.show(); snackbar.show();
} }

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

@ -30,6 +30,10 @@
<string name="color_picker_default_title">Change color</string> <string name="color_picker_default_title">Change color</string>
<string name="toast_habit_created">Habit created</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_deleted">Habits deleted</string>
<string name="toast_habit_restored">Habits restored</string> <string name="toast_habit_restored">Habits restored</string>
<string name="toast_nothing_to_undo">Nothing to undo</string> <string name="toast_nothing_to_undo">Nothing to undo</string>

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

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

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

Loading…
Cancel
Save