Skip to content

Commit

Permalink
Merge pull request #5614 from seadowg/quit-dialog
Browse files Browse the repository at this point in the history
Rework quit dialog
  • Loading branch information
grzesiek2010 committed Jun 22, 2023
2 parents 7374f21 + b4cd967 commit fd65e7a
Show file tree
Hide file tree
Showing 59 changed files with 512 additions and 260 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public void pressingBackWhileRecording_andClickingSave_exitsForm() {
.copyForm("one-question-background-audio.xml")
.startBlankForm("One Question")
.closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>("One Question", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickSaveChanges();
}

Expand All @@ -152,7 +152,7 @@ public void uncheckingRecordAudio_andConfirming_endsAndDeletesRecording() {
assertThat(stubAudioRecorderViewModel.getLastRecording(), is(nullValue()));

formEntryPage.closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>("One Question", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardForm()
.startBlankForm("One Question");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class FormFinalizingTest {
.assertNumberOfFinalizedForms(0)
.startBlankForm("One Question")
.closeSoftKeyboard()
.pressBack(SaveOrDiscardFormDialog("One Question", MainMenuPage()))
.pressBack(SaveOrDiscardFormDialog(MainMenuPage()))
.clickSaveChanges()
.assertNumberOfEditableForms(1)
.assertNumberOfFinalizedForms(0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void languageChoiceIsPersisted() {
.clickOptionsIcon()
.clickOnString(R.string.change_language)
.clickOnText("French (fr)")
.pressBack(new SaveOrDiscardFormDialog<>("One Question", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardForm()

.startBlankForm("One Question")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public void whenFillingForm_pressingBack_andClickingSaveChanges_savesCurrentAnsw
new QuestionAndAnswer("What is your name?", "Reuben"),
new QuestionAndAnswer("What is your age?", "10")
)
.pressBack(new SaveOrDiscardFormDialog<>("Two Question", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickSaveChanges()

.clickEditSavedForm(1)
Expand All @@ -46,7 +46,7 @@ public void whenFillingForm_pressingBack_andClickingIgnoreChanges_doesNotSaveFor
.copyForm("two-question.xml")
.startBlankForm("Two Question")
.answerQuestion("What is your name?", "Reuben")
.pressBack(new SaveOrDiscardFormDialog<>("Two Question", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardForm()

.assertNumberOfEditableForms(0);
Expand Down Expand Up @@ -77,7 +77,7 @@ public void whenFillingForm_withViolatedConstraintsOnCurrentScreen_pressingBack_
.answerQuestion("What is your name?", "Reuben")
.swipeToNextQuestion("What is your age?", true)
.closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>("Two Question Required", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickSaveChanges()

.clickEditSavedForm(1)
Expand All @@ -91,7 +91,7 @@ public void whenEditingANonFinalizedForm_withViolatedConstraintsOnCurrentScreen_
.copyForm("two-question-required.xml")
.startBlankForm("Two Question Required")
.answerQuestion("What is your name?", "Reuben")
.pressBack(new SaveOrDiscardFormDialog<>("Two Question Required", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickSaveChanges()

.clickEditSavedForm(1)
Expand All @@ -100,7 +100,7 @@ public void whenEditingANonFinalizedForm_withViolatedConstraintsOnCurrentScreen_
.answerQuestion("What is your name?", "Another Reuben")
.swipeToNextQuestion("What is your age?", true)
.closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>("Two Question Required", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickSaveChanges()

.clickEditSavedForm(1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class SavePointTest {
.assertTextDoesNotExist("46")
.pressBack(FormEntryPage("Two Question"))
.assertQuestion("What is your name?")
.pressBack(SaveOrDiscardFormDialog("Two Question", AppClosedPage()))
.pressBack(SaveOrDiscardFormDialog(AppClosedPage()))
.clickSaveChanges()

// Check audit log
Expand Down Expand Up @@ -84,7 +84,7 @@ class SavePointTest {
.assertTextDoesNotExist("46")
.pressBack(FormEntryPage("Two Question"))
.assertQuestion("What is your name?")
.pressBack(SaveOrDiscardFormDialog("Two Question", AppClosedPage()))
.pressBack(SaveOrDiscardFormDialog(AppClosedPage()))
.clickSaveChanges()

// Check audit log
Expand Down Expand Up @@ -116,7 +116,7 @@ class SavePointTest {
.assertText("Alexei")
.pressBack(FormEntryPage("Two Question"))
.assertQuestion("What is your name?")
.pressBack(SaveOrDiscardFormDialog("Two Question", AppClosedPage()))
.pressBack(SaveOrDiscardFormDialog(AppClosedPage()))
.clickSaveChanges()

// Check audit log
Expand Down Expand Up @@ -156,7 +156,7 @@ class SavePointTest {
.assertText("52")
.pressBack(FormEntryPage("Two Question"))
.assertQuestion("What is your name?")
.pressBack(SaveOrDiscardFormDialog("Two Question", AppClosedPage()))
.pressBack(SaveOrDiscardFormDialog(AppClosedPage()))
.clickSaveChanges()

// Check audit log
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ class TrackChangesReasonTest {
.closeSoftKeyboard()
.pressBack(
SaveOrDiscardFormDialog(
"Track Changes Reason",
ChangesReasonPromptPage("Track Changes Reason")
)
)
Expand All @@ -137,7 +136,7 @@ class TrackChangesReasonTest {
.clickOnForm("Track Changes Reason")
.clickGoToStart()
.closeSoftKeyboard()
.pressBack(SaveOrDiscardFormDialog("Track Changes Reason", MainMenuPage()))
.pressBack(SaveOrDiscardFormDialog(MainMenuPage()))
.clickDiscardChanges()
}

Expand Down Expand Up @@ -166,7 +165,7 @@ class TrackChangesReasonTest {
.startBlankForm("Track Changes Reason")
.clickSave()
.closeSoftKeyboard()
.pressBack(SaveOrDiscardFormDialog("Track Changes Reason", MainMenuPage()))
.pressBack(SaveOrDiscardFormDialog(MainMenuPage()))
.clickSaveChanges()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class FormMetadataSettingsTest {
.pressBack(MainMenuPage())
.startBlankForm("Metadata")
.assertText("Chino")
.pressBack(SaveOrDiscardFormDialog("Metadata", MainMenuPage()))
.pressBack(SaveOrDiscardFormDialog(MainMenuPage()))
.clickDiscardForm()
.openProjectSettingsDialog()
.clickSettings()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
import org.odk.collect.android.support.ActivityHelpers;
import org.odk.collect.android.support.pages.AddNewRepeatDialog;
import org.odk.collect.android.support.pages.BlankFormSearchPage;
import org.odk.collect.android.support.pages.ExitFormDialog;
import org.odk.collect.android.support.pages.FillBlankFormPage;
import org.odk.collect.android.support.pages.FormEndPage;
import org.odk.collect.android.support.pages.FormEntryPage;
import org.odk.collect.android.support.pages.FormHierarchyPage;
import org.odk.collect.android.support.pages.MainMenuPage;
import org.odk.collect.android.support.pages.ProjectSettingsPage;
import org.odk.collect.android.support.pages.SaveOrDiscardFormDialog;
import org.odk.collect.android.support.rules.CollectTestRule;
import org.odk.collect.android.support.rules.TestRuleChain;

Expand All @@ -55,7 +55,7 @@ public void exitDialog_ShouldDisplaySaveAndIgnoreOptions() {
rule.startAtMainMenu()
.copyForm("all-widgets.xml")
.startBlankForm("All widgets")
.pressBack(new ExitFormDialog("All widgets"))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.assertText(R.string.save_as_draft)
.assertText(R.string.do_not_save)
.clickOnString(R.string.do_not_save)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.odk.collect.android.R;
import org.odk.collect.android.support.rules.CollectTestRule;
import org.odk.collect.android.support.rules.TestRuleChain;
import org.odk.collect.android.support.pages.AccessControlPage;
import org.odk.collect.android.support.pages.ExitFormDialog;
import org.odk.collect.android.support.pages.ProjectSettingsPage;
import org.odk.collect.android.support.pages.MainMenuPage;
import org.odk.collect.android.support.pages.ProjectSettingsPage;
import org.odk.collect.android.support.pages.SaveOrDiscardFormDialog;
import org.odk.collect.android.support.rules.CollectTestRule;
import org.odk.collect.android.support.rules.TestRuleChain;

//Issue NODK-243
public class FormEntrySettingsTest {
Expand Down Expand Up @@ -59,7 +59,7 @@ public void movingBackwards_shouldBeTurnedOn() {
.swipeToNextQuestion("String widget")
.closeSoftKeyboard()
.swipeToPreviousQuestion("String widget")
.pressBack(new ExitFormDialog("All widgets"))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage(), false))
.assertText(R.string.do_not_save)
.assertTextDoesNotExist(R.string.keep_changes)
.clickOnString(R.string.do_not_save);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public void openHierarchyView_ShouldSeeShortForms() {
.assertText("YY")
.pressBack(new FormEntryPage("OnePageFormShort"))
.closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>("OnePageFormShort", new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardForm();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public FormEntryPage fillOut(QuestionAndAnswer... questionsAndAnswers) {

public <D extends Page<D>> D fillOutAndSave(D destination, QuestionAndAnswer... questionsAndAnswers) {
return fillOut(questionsAndAnswers)
.pressBack(new SaveOrDiscardFormDialog<>(formName, destination))
.pressBack(new SaveOrDiscardFormDialog<>(destination))
.clickSaveChanges();
}

Expand Down Expand Up @@ -383,25 +383,25 @@ public FormEntryPage assertConstraintDisplayed(String constraintText) {

public MainMenuPage pressBackAndDiscardChanges() {
return closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>(formName, new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardChanges();
}

public <D extends Page<D>> D pressBackAndDiscardChanges(D destination) {
return closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>(formName, destination))
.pressBack(new SaveOrDiscardFormDialog<>(destination))
.clickDiscardChanges();
}

public MainMenuPage pressBackAndDiscardForm() {
return closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<>(formName, new MainMenuPage()))
.pressBack(new SaveOrDiscardFormDialog<>(new MainMenuPage()))
.clickDiscardForm();
}

public <D extends Page<D>> D pressBackAndDiscardForm(D destination) {
return closeSoftKeyboard()
.pressBack(new SaveOrDiscardFormDialog<D>(formName, destination))
.pressBack(new SaveOrDiscardFormDialog<D>(destination))
.clickDiscardForm();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@ package org.odk.collect.android.support.pages
import android.os.Build
import org.odk.collect.android.R

class SaveOrDiscardFormDialog<D : Page<D>>(
private val formName: String,
private val destination: D
class SaveOrDiscardFormDialog<D : Page<D>> @JvmOverloads constructor(
private val destination: D,
private val saveAsDraftEnabled: Boolean = true
) : Page<SaveOrDiscardFormDialog<D>>() {

override fun assertOnPage(): SaveOrDiscardFormDialog<D> {
val title = getTranslatedString(R.string.exit) + " " + formName
assertText(title)
if (saveAsDraftEnabled) {
assertText(R.string.quit_form_title)
} else {
assertText(R.string.quit_form_continue_title)
}

return this
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import org.odk.collect.android.formentry.saving.DiskFormSaver
import org.odk.collect.android.formentry.saving.FormSaveViewModel
import org.odk.collect.android.instancemanagement.autosend.AutoSendSettingsProvider
import org.odk.collect.android.projects.CurrentProjectProvider
import org.odk.collect.android.utilities.InstancesRepositoryProvider
import org.odk.collect.android.utilities.MediaUtils
import org.odk.collect.async.Scheduler
import org.odk.collect.audiorecorder.recording.AudioRecorder
Expand All @@ -42,14 +43,17 @@ class FormEntryViewModelFactory(
private val permissionsChecker: PermissionsChecker,
private val fusedLocationClient: LocationClient,
private val permissionsProvider: PermissionsProvider,
private val autoSendSettingsProvider: AutoSendSettingsProvider
private val autoSendSettingsProvider: AutoSendSettingsProvider,
private val instancesRepositoryProvider: InstancesRepositoryProvider
) : AbstractSavedStateViewModelFactory(owner, null) {

override fun <T : ViewModel> create(
key: String,
modelClass: Class<T>,
handle: SavedStateHandle
): T {
val projectId = currentProjectProvider.getCurrentProject().uuid

return when (modelClass) {
FormEntryViewModel::class.java -> FormEntryViewModel(
System::currentTimeMillis,
Expand All @@ -58,17 +62,20 @@ class FormEntryViewModelFactory(
sessionId
)

FormSaveViewModel::class.java -> FormSaveViewModel(
handle,
System::currentTimeMillis,
DiskFormSaver(),
mediaUtils,
scheduler,
audioRecorder,
currentProjectProvider,
formSessionRepository.get(sessionId),
entitiesRepositoryProvider.get(currentProjectProvider.getCurrentProject().uuid)
)
FormSaveViewModel::class.java -> {
FormSaveViewModel(
handle,
System::currentTimeMillis,
DiskFormSaver(),
mediaUtils,
scheduler,
audioRecorder,
currentProjectProvider,
formSessionRepository.get(sessionId),
entitiesRepositoryProvider.get(projectId),
instancesRepositoryProvider.get(projectId)
)
}

BackgroundAudioViewModel::class.java -> {
val recordAudioActionRegistry = object : RecordAudioActionRegistry {
Expand Down Expand Up @@ -109,7 +116,12 @@ class FormEntryViewModelFactory(

IdentityPromptViewModel::class.java -> IdentityPromptViewModel()

FormEndViewModel::class.java -> FormEndViewModel(formSessionRepository, sessionId, settingsProvider, autoSendSettingsProvider)
FormEndViewModel::class.java -> FormEndViewModel(
formSessionRepository,
sessionId,
settingsProvider,
autoSendSettingsProvider
)

else -> throw IllegalArgumentException()
} as T
Expand Down
Loading

0 comments on commit fd65e7a

Please sign in to comment.