^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2) * Copyright (C) 2009 University of Washington ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 3) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 4) * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 5) * in compliance with the License. You may obtain a copy of the License at ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 6) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 7) * http://www.apache.org/licenses/LICENSE-2.0 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 8) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 9) * Unless required by applicable law or agreed to in writing, software distributed under the License ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 10) * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 11) * or implied. See the License for the specific language governing permissions and limitations under ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 12) * the License. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 13) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 14) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 15) package org.odk.collect.android.activities; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 16) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 17) import java.io.File; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 18) import java.io.FileFilter; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 19) import java.text.SimpleDateFormat; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 20) import java.util.Calendar; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 21) import java.util.LinkedHashMap; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 22) import java.util.List; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 23) import java.util.Locale; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 24) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 25) import org.javarosa.core.model.FormIndex; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 26) import org.javarosa.core.model.data.IAnswerData; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 27) import org.javarosa.core.model.instance.TreeElement; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 28) import org.javarosa.form.api.FormEntryCaption; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 29) import org.javarosa.form.api.FormEntryController; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 30) import org.javarosa.form.api.FormEntryPrompt; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 31) import org.odk.collect.android.R; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 32) import org.odk.collect.android.application.Collect; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 33) import org.odk.collect.android.exception.JavaRosaException; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 34) import org.odk.collect.android.listeners.AdvanceToNextListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 35) import org.odk.collect.android.listeners.FormLoaderListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 36) import org.odk.collect.android.listeners.FormSavedListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 37) import org.odk.collect.android.listeners.SavePointListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 38) import org.odk.collect.android.logic.FormController; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 39) import org.odk.collect.android.logic.FormController.FailedConstraint; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 40) import org.odk.collect.android.preferences.AdminPreferencesActivity; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 41) import org.odk.collect.android.preferences.PreferencesActivity; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 42) import org.odk.collect.android.provider.FormsProviderAPI.FormsColumns; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 43) import org.odk.collect.android.provider.InstanceProviderAPI; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 44) import org.odk.collect.android.provider.InstanceProviderAPI.InstanceColumns; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 45) import org.odk.collect.android.tasks.FormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 46) import org.odk.collect.android.tasks.SavePointTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 47) import org.odk.collect.android.tasks.SaveResult; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 48) import org.odk.collect.android.tasks.SaveToDiskTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 49) import org.odk.collect.android.utilities.CompatibilityUtils; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 50) import org.odk.collect.android.utilities.FileUtils; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 51) import org.odk.collect.android.utilities.MediaUtils; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 52) import org.odk.collect.android.views.ODKView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 53) import org.odk.collect.android.widgets.QuestionWidget; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 54) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 55) import android.app.Activity; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 56) import android.app.AlertDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 57) import android.app.Dialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 58) import android.app.ProgressDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 59) import android.content.ContentValues; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 60) import android.content.Context; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 61) import android.content.DialogInterface; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 62) import android.content.Intent; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 63) import android.content.SharedPreferences; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 64) import android.database.Cursor; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 65) import android.graphics.Color; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 66) import android.graphics.drawable.BitmapDrawable; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 67) import android.graphics.drawable.Drawable; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 68) import android.net.Uri; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 69) import android.os.AsyncTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 70) import android.os.Bundle; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 71) import android.preference.PreferenceManager; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 72) import android.provider.MediaStore.Images; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 73) import android.text.InputFilter; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 74) import android.text.Spanned; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 75) import android.util.DisplayMetrics; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 76) import android.util.Log; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 77) import android.view.ContextMenu; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 78) import android.view.ContextMenu.ContextMenuInfo; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 79) import android.view.GestureDetector; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 80) import android.view.GestureDetector.OnGestureListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 81) import android.view.Gravity; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 82) import android.view.KeyEvent; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 83) import android.view.LayoutInflater; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 84) import android.view.Menu; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 85) import android.view.MenuItem; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 86) import android.view.MotionEvent; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 87) import android.view.View; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 88) import android.view.View.OnClickListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 89) import android.view.ViewGroup.LayoutParams; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 90) import android.view.animation.Animation; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 91) import android.view.animation.Animation.AnimationListener; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 92) import android.view.animation.AnimationUtils; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 93) import android.view.inputmethod.InputMethodManager; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 94) import android.widget.Button; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 95) import android.widget.CheckBox; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 96) import android.widget.EditText; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 97) import android.widget.ImageButton; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 98) import android.widget.ImageView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 99) import android.widget.LinearLayout; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 100) import android.widget.RelativeLayout; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 101) import android.widget.TextView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 102) import android.widget.Toast; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 103) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 104) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 105) * FormEntryActivity is responsible for displaying questions, animating ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 106) * transitions between questions, and allowing the user to enter data. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 107) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 108) * @author Carl Hartung (carlhartung@gmail.com) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 109) * @author Thomas Smyth, Sassafras Tech Collective (tom@sassafrastech.com; constraint behavior option) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 110) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 111) public class FormEntryActivity extends Activity implements AnimationListener, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 112) FormLoaderListener, FormSavedListener, AdvanceToNextListener, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 113) OnGestureListener, SavePointListener { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 114) private static final String t = "FormEntryActivity"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 115) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 116) // save with every swipe forward or back. Timings indicate this takes .25 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 117) // seconds. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 118) // if it ever becomes an issue, this value can be changed to save every n'th ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 119) // screen. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 120) private static final int SAVEPOINT_INTERVAL = 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 121) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 122) // Defines for FormEntryActivity ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 123) private static final boolean EXIT = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 124) private static final boolean DO_NOT_EXIT = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 125) private static final boolean EVALUATE_CONSTRAINTS = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 126) private static final boolean DO_NOT_EVALUATE_CONSTRAINTS = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 127) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 128) // Request codes for returning data from specified intent. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 129) public static final int IMAGE_CAPTURE = 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 130) public static final int BARCODE_CAPTURE = 2; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 131) public static final int AUDIO_CAPTURE = 3; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 132) public static final int VIDEO_CAPTURE = 4; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 133) public static final int LOCATION_CAPTURE = 5; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 134) public static final int HIERARCHY_ACTIVITY = 6; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 135) public static final int IMAGE_CHOOSER = 7; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 136) public static final int AUDIO_CHOOSER = 8; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 137) public static final int VIDEO_CHOOSER = 9; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 138) public static final int EX_STRING_CAPTURE = 10; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 139) public static final int EX_INT_CAPTURE = 11; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 140) public static final int EX_DECIMAL_CAPTURE = 12; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 141) public static final int DRAW_IMAGE = 13; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 142) public static final int SIGNATURE_CAPTURE = 14; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 143) public static final int ANNOTATE_IMAGE = 15; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 144) public static final int ALIGNED_IMAGE = 16; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 145) public static final int BEARING_CAPTURE = 17; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 146) public static final int EX_GROUP_CAPTURE = 18; 2bc9eea8 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-05 17:03:23 -0800 147) public static final int OSM_CAPTURE = 19; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 148) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 149) // Extra returned from gp activity ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 150) public static final String LOCATION_RESULT = "LOCATION_RESULT"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 151) public static final String BEARING_RESULT = "BEARING_RESULT"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 152) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 153) public static final String KEY_INSTANCES = "instances"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 154) public static final String KEY_SUCCESS = "success"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 155) public static final String KEY_ERROR = "error"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 156) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 157) // Identifies the gp of the form used to launch form entry ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 158) public static final String KEY_FORMPATH = "formpath"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 159) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 160) // Identifies whether this is a new form, or reloading a form after a screen ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 161) // rotation (or similar) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 162) private static final String NEWFORM = "newform"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 163) // these are only processed if we shut down and are restoring after an ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 164) // external intent fires ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 165) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 166) public static final String KEY_INSTANCEPATH = "instancepath"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 167) public static final String KEY_XPATH = "xpath"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 168) public static final String KEY_XPATH_WAITING_FOR_DATA = "xpathwaiting"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 169) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 170) // Tracks whether we are autosaving ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 171) public static final String KEY_AUTO_SAVED = "autosaved"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 172) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 173) private static final int MENU_LANGUAGES = Menu.FIRST; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 174) private static final int MENU_HIERARCHY_VIEW = Menu.FIRST + 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 175) private static final int MENU_SAVE = Menu.FIRST + 2; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 176) private static final int MENU_PREFERENCES = Menu.FIRST + 3; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 177) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 178) private static final int PROGRESS_DIALOG = 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 179) private static final int SAVING_DIALOG = 2; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 180) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 181) private boolean mAutoSaved; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 182) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 183) // Random ID ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 184) private static final int DELETE_REPEAT = 654321; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 185) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 186) private String mFormPath; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 187) private GestureDetector mGestureDetector; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 188) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 189) private Animation mInAnimation; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 190) private Animation mOutAnimation; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 191) private View mStaleView = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 192) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 193) private LinearLayout mQuestionHolder; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 194) private View mCurrentView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 195) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 196) private AlertDialog mAlertDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 197) private ProgressDialog mProgressDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 198) private String mErrorMessage; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 199) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 200) // used to limit forward/backward swipes to one per question ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 201) private boolean mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 202) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 203) private final Object saveDialogLock = new Object(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 204) private int viewCount = 0; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 205) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 206) private FormLoaderTask mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 207) private SaveToDiskTask mSaveToDiskTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 208) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 209) private ImageButton mNextButton; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 210) private ImageButton mBackButton; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 211) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 212) private String stepMessage = ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 213) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 214) enum AnimationType { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 215) LEFT, RIGHT, FADE ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 216) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 217) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 218) private SharedPreferences mAdminPreferences; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 219) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 220) /** Called when the activity is first created. */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 221) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 222) public void onCreate(Bundle savedInstanceState) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 223) super.onCreate(savedInstanceState); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 224) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 225) // must be at the beginning of any activity that can be called from an ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 226) // external intent ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 227) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 228) Collect.createODKDirs(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 229) } catch (RuntimeException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 230) createErrorDialog(e.getMessage(), EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 231) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 232) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 233) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 234) setContentView(R.layout.form_entry); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 235) setTitle(getString(R.string.app_name) + " > " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 236) + getString(R.string.loading_form)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 237) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 238) mErrorMessage = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 239) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 240) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 241) mAlertDialog = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 242) mCurrentView = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 243) mInAnimation = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 244) mOutAnimation = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 245) mGestureDetector = new GestureDetector(this, this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 246) mQuestionHolder = (LinearLayout) findViewById(R.id.questionholder); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 247) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 248) // get admin preference settings ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 249) mAdminPreferences = getSharedPreferences( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 250) AdminPreferencesActivity.ADMIN_PREFERENCES, 0); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 251) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 252) mNextButton = (ImageButton) findViewById(R.id.form_forward_button); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 253) mNextButton.setOnClickListener(new OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 254) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 255) public void onClick(View v) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 256) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 257) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 258) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 259) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 260) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 261) mBackButton = (ImageButton) findViewById(R.id.form_back_button); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 262) mBackButton.setOnClickListener(new OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 263) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 264) public void onClick(View v) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 265) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 266) showPreviousView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 267) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 268) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 269) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 270) String startingXPath = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 271) String waitingXPath = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 272) String instancePath = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 273) Boolean newForm = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 274) mAutoSaved = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 275) if (savedInstanceState != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 276) if (savedInstanceState.containsKey(KEY_FORMPATH)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 277) mFormPath = savedInstanceState.getString(KEY_FORMPATH); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 278) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 279) if (savedInstanceState.containsKey(KEY_INSTANCEPATH)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 280) instancePath = savedInstanceState.getString(KEY_INSTANCEPATH); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 281) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 282) if (savedInstanceState.containsKey(KEY_XPATH)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 283) startingXPath = savedInstanceState.getString(KEY_XPATH); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 284) Log.i(t, "startingXPath is: " + startingXPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 285) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 286) if (savedInstanceState.containsKey(KEY_XPATH_WAITING_FOR_DATA)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 287) waitingXPath = savedInstanceState ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 288) .getString(KEY_XPATH_WAITING_FOR_DATA); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 289) Log.i(t, "waitingXPath is: " + waitingXPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 290) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 291) if (savedInstanceState.containsKey(NEWFORM)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 292) newForm = savedInstanceState.getBoolean(NEWFORM, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 293) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 294) if (savedInstanceState.containsKey(KEY_ERROR)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 295) mErrorMessage = savedInstanceState.getString(KEY_ERROR); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 296) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 297) if (savedInstanceState.containsKey(KEY_AUTO_SAVED)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 298) mAutoSaved = savedInstanceState.getBoolean(KEY_AUTO_SAVED); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 299) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 300) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 301) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 302) // If a parse error message is showing then nothing else is loaded ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 303) // Dialogs mid form just disappear on rotation. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 304) if (mErrorMessage != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 305) createErrorDialog(mErrorMessage, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 306) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 307) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 308) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 309) // Check to see if this is a screen flip or a new form load. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 310) Object data = getLastNonConfigurationInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 311) if (data instanceof FormLoaderTask) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 312) mFormLoaderTask = (FormLoaderTask) data; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 313) } else if (data instanceof SaveToDiskTask) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 314) mSaveToDiskTask = (SaveToDiskTask) data; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 315) } else if (data == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 316) if (!newForm) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 317) if (Collect.getInstance().getFormController() != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 318) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 319) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 320) Log.w(t, "Reloading form and restoring state."); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 321) // we need to launch the form loader to load the form ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 322) // controller... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 323) mFormLoaderTask = new FormLoaderTask(instancePath, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 324) startingXPath, waitingXPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 325) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 326) .logAction(this, "formReloaded", mFormPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 327) // TODO: this doesn' work (dialog does not get removed): ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 328) // showDialog(PROGRESS_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 329) // show dialog before we execute... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 330) mFormLoaderTask.execute(mFormPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 331) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 332) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 333) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 334) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 335) // Not a restart from a screen orientation change (or other). ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 336) Collect.getInstance().setFormController(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 337) CompatibilityUtils.invalidateOptionsMenu(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 338) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 339) Intent intent = getIntent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 340) if (intent != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 341) Uri uri = intent.getData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 342) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 343) if (getContentResolver().getType(uri).equals(InstanceColumns.CONTENT_ITEM_TYPE)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 344) // get the formId and version for this instance... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 345) String jrFormId = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 346) String jrVersion = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 347) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 348) Cursor instanceCursor = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 349) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 350) instanceCursor = getContentResolver().query(uri, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 351) null, null, null, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 352) if (instanceCursor.getCount() != 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 353) this.createErrorDialog("Bad URI: " + uri, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 354) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 355) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 356) instanceCursor.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 357) instancePath = instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 358) .getString(instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 359) .getColumnIndex(InstanceColumns.INSTANCE_FILE_PATH)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 360) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 361) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 362) .logAction(this, "instanceLoaded", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 363) instancePath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 364) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 365) jrFormId = instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 366) .getString(instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 367) .getColumnIndex(InstanceColumns.JR_FORM_ID)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 368) int idxJrVersion = instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 369) .getColumnIndex(InstanceColumns.JR_VERSION); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 370) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 371) jrVersion = instanceCursor.isNull(idxJrVersion) ? null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 372) : instanceCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 373) .getString(idxJrVersion); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 374) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 375) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 376) if (instanceCursor != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 377) instanceCursor.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 378) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 379) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 380) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 381) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 382) String[] selectionArgs; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 383) String selection; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 384) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 385) if (jrVersion == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 386) selectionArgs = new String[] { jrFormId }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 387) selection = FormsColumns.JR_FORM_ID + "=? AND " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 388) + FormsColumns.JR_VERSION + " IS NULL"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 389) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 390) selectionArgs = new String[] { jrFormId, jrVersion }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 391) selection = FormsColumns.JR_FORM_ID + "=? AND " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 392) + FormsColumns.JR_VERSION + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 393) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 394) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 395) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 396) Cursor formCursor = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 397) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 398) formCursor = getContentResolver().query( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 399) FormsColumns.CONTENT_URI, null, selection, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 400) selectionArgs, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 401) if (formCursor.getCount() == 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 402) formCursor.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 403) mFormPath = formCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 404) .getString(formCursor ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 405) .getColumnIndex(FormsColumns.FORM_FILE_PATH)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 406) } else if (formCursor.getCount() < 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 407) this.createErrorDialog( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 408) getString( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 409) R.string.parent_form_not_present, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 410) jrFormId) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 411) + ((jrVersion == null) ? "" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 412) : "\n" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 413) + getString(R.string.version) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 414) + " " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 415) + jrVersion), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 416) EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 417) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 418) } else if (formCursor.getCount() > 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 419) // still take the first entry, but warn that ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 420) // there are multiple rows. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 421) // user will need to hand-edit the SQLite ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 422) // database to fix it. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 423) formCursor.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 424) mFormPath = formCursor.getString(formCursor.getColumnIndex(FormsColumns.FORM_FILE_PATH)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 425) this.createErrorDialog(getString(R.string.survey_multiple_forms_error), EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 426) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 427) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 428) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 429) if (formCursor != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 430) formCursor.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 431) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 432) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 433) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 434) } else if (getContentResolver().getType(uri).equals(FormsColumns.CONTENT_ITEM_TYPE)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 435) Cursor c = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 436) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 437) c = getContentResolver().query(uri, null, null, null, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 438) null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 439) if (c.getCount() != 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 440) this.createErrorDialog("Bad URI: " + uri, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 441) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 442) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 443) c.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 444) mFormPath = c.getString(c.getColumnIndex(FormsColumns.FORM_FILE_PATH)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 445) // This is the fill-blank-form code path. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 446) // See if there is a savepoint for this form that ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 447) // has never been ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 448) // explicitly saved ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 449) // by the user. If there is, open this savepoint ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 450) // (resume this filled-in ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 451) // form). ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 452) // Savepoints for forms that were explicitly saved ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 453) // will be recovered ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 454) // when that ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 455) // explicitly saved instance is edited via ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 456) // edit-saved-form. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 457) final String filePrefix = mFormPath.substring( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 458) mFormPath.lastIndexOf('/') + 1, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 459) mFormPath.lastIndexOf('.')) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 460) + "_"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 461) final String fileSuffix = ".xml.save"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 462) File cacheDir = new File(Collect.CACHE_PATH); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 463) File[] files = cacheDir.listFiles(new FileFilter() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 464) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 465) public boolean accept(File pathname) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 466) String name = pathname.getName(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 467) return name.startsWith(filePrefix) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 468) && name.endsWith(fileSuffix); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 469) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 470) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 471) // see if any of these savepoints are for a ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 472) // filled-in form that has never been ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 473) // explicitly saved by the user... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 474) for (int i = 0; i < files.length; ++i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 475) File candidate = files[i]; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 476) String instanceDirName = candidate.getName() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 477) .substring( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 478) 0, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 479) candidate.getName().length() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 480) - fileSuffix.length()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 481) File instanceDir = new File( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 482) Collect.INSTANCES_PATH + File.separator ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 483) + instanceDirName); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 484) File instanceFile = new File(instanceDir, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 485) instanceDirName + ".xml"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 486) if (instanceDir.exists() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 487) && instanceDir.isDirectory() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 488) && !instanceFile.exists()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 489) // yes! -- use this savepoint file ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 490) instancePath = instanceFile ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 491) .getAbsolutePath(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 492) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 493) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 494) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 495) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 496) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 497) if (c != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 498) c.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 499) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 500) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 501) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 502) Log.e(t, "unrecognized URI"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 503) this.createErrorDialog("Unrecognized URI: " + uri, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 504) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 505) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 506) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 507) mFormLoaderTask = new FormLoaderTask(instancePath, null, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 508) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 509) .logAction(this, "formLoaded", mFormPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 510) showDialog(PROGRESS_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 511) // show dialog before we execute... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 512) mFormLoaderTask.execute(mFormPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 513) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 514) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 515) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 516) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 517) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 518) * Create save-points asynchronously in order to not affect swiping performance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 519) * on larger forms. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 520) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 521) private void nonblockingCreateSavePointData() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 522) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 523) SavePointTask savePointTask = new SavePointTask(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 524) savePointTask.execute(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 525) } catch (Exception e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 526) Log.e(t, "Could not schedule SavePointTask. Perhaps a lot of swiping is taking place?"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 527) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 528) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 529) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 530) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 531) protected void onSaveInstanceState(Bundle outState) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 532) super.onSaveInstanceState(outState); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 533) outState.putString(KEY_FORMPATH, mFormPath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 534) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 535) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 536) if (formController != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 537) outState.putString(KEY_INSTANCEPATH, formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 538) .getInstancePath().getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 539) outState.putString(KEY_XPATH, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 540) formController.getXPath(formController.getFormIndex())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 541) FormIndex waiting = formController.getIndexWaitingForData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 542) if (waiting != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 543) outState.putString(KEY_XPATH_WAITING_FOR_DATA, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 544) formController.getXPath(waiting)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 545) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 546) // save the instance to a temp path... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 547) nonblockingCreateSavePointData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 548) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 549) outState.putBoolean(NEWFORM, false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 550) outState.putString(KEY_ERROR, mErrorMessage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 551) outState.putBoolean(KEY_AUTO_SAVED, mAutoSaved); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 552) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 553) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 554) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 555) protected void onActivityResult(int requestCode, int resultCode, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 556) Intent intent) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 557) super.onActivityResult(requestCode, resultCode, intent); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 558) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 559) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 560) if (formController == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 561) // we must be in the midst of a reload of the FormController. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 562) // try to save this callback data to the FormLoaderTask ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 563) if (mFormLoaderTask != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 564) && mFormLoaderTask.getStatus() != AsyncTask.Status.FINISHED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 565) mFormLoaderTask.setActivityResult(requestCode, resultCode, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 566) intent); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 567) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 568) Log.e(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 569) "Got an activityResult without any pending form loader"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 570) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 571) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 572) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 573) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 574) if (resultCode == RESULT_CANCELED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 575) // request was canceled... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 576) if (requestCode != HIERARCHY_ACTIVITY) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 577) ((ODKView) mCurrentView).cancelWaitingForBinaryData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 578) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 579) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 580) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 581) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 582) switch (requestCode) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 583) case BARCODE_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 584) String sb = intent.getStringExtra("SCAN_RESULT"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 585) ((ODKView) mCurrentView).setBinaryData(sb); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 586) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 587) break; 9c663a24 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-17 00:57:56 +0300 588) case OSM_CAPTURE: 9c663a24 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-17 00:57:56 +0300 589) String osmFileName = intent.getStringExtra("OSM_FILE_NAME"); 9c663a24 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-17 00:57:56 +0300 590) ((ODKView) mCurrentView).setBinaryData(osmFileName); 9c663a24 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-17 00:57:56 +0300 591) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); 9c663a24 src/org/odk/collect/android/activities/FormEntryActivity.java (Nicholas Hallahan 2015-02-17 00:57:56 +0300 592) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 593) case EX_STRING_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 594) case EX_INT_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 595) case EX_DECIMAL_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 596) String key = "value"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 597) boolean exists = intent.getExtras().containsKey(key); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 598) if (exists) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 599) Object externalValue = intent.getExtras().get(key); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 600) ((ODKView) mCurrentView).setBinaryData(externalValue); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 601) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 602) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 603) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 604) case EX_GROUP_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 605) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 606) Bundle extras = intent.getExtras(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 607) ((ODKView) mCurrentView).setDataForFields(extras); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 608) } catch (JavaRosaException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 609) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 610) createErrorDialog(e.getCause().getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 611) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 612) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 613) case DRAW_IMAGE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 614) case ANNOTATE_IMAGE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 615) case SIGNATURE_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 616) case IMAGE_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 617) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 618) * We saved the image to the tempfile_path, but we really want it to ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 619) * be in: /sdcard/odk/instances/[current instnace]/something.jpg so ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 620) * we move it there before inserting it into the content provider. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 621) * Once the android image capture bug gets fixed, (read, we move on ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 622) * from Android 1.6) we want to handle images the audio and video ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 623) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 624) // The intent is empty, but we know we saved the image to the temp ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 625) // file ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 626) File fi = new File(Collect.TMPFILE_PATH); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 627) String mInstanceFolder = formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 628) .getParent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 629) String s = mInstanceFolder + File.separator ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 630) + System.currentTimeMillis() + ".jpg"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 631) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 632) File nf = new File(s); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 633) if (!fi.renameTo(nf)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 634) Log.e(t, "Failed to rename " + fi.getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 635) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 636) Log.i(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 637) "renamed " + fi.getAbsolutePath() + " to " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 638) + nf.getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 639) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 640) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 641) ((ODKView) mCurrentView).setBinaryData(nf); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 642) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 643) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 644) case ALIGNED_IMAGE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 645) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 646) * We saved the image to the tempfile_path; the app returns the full ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 647) * path to the saved file in the EXTRA_OUTPUT extra. Take that file ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 648) * and move it into the instance folder. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 649) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 650) String path = intent ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 651) .getStringExtra(android.provider.MediaStore.EXTRA_OUTPUT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 652) fi = new File(path); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 653) mInstanceFolder = formController.getInstancePath().getParent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 654) s = mInstanceFolder + File.separator + System.currentTimeMillis() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 655) + ".jpg"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 656) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 657) nf = new File(s); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 658) if (!fi.renameTo(nf)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 659) Log.e(t, "Failed to rename " + fi.getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 660) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 661) Log.i(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 662) "renamed " + fi.getAbsolutePath() + " to " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 663) + nf.getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 664) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 665) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 666) ((ODKView) mCurrentView).setBinaryData(nf); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 667) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 668) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 669) case IMAGE_CHOOSER: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 670) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 671) * We have a saved image somewhere, but we really want it to be in: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 672) * /sdcard/odk/instances/[current instnace]/something.jpg so we move ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 673) * it there before inserting it into the content provider. Once the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 674) * android image capture bug gets fixed, (read, we move on from ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 675) * Android 1.6) we want to handle images the audio and video ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 676) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 677) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 678) // get gp of chosen file ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 679) Uri selectedImage = intent.getData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 680) String sourceImagePath = MediaUtils.getPathFromUri(this, selectedImage, Images.Media.DATA); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 681) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 682) // Copy file to sdcard ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 683) String mInstanceFolder1 = formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 684) .getParent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 685) String destImagePath = mInstanceFolder1 + File.separator ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 686) + System.currentTimeMillis() + ".jpg"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 687) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 688) File source = new File(sourceImagePath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 689) File newImage = new File(destImagePath); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 690) FileUtils.copyFile(source, newImage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 691) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 692) ((ODKView) mCurrentView).setBinaryData(newImage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 693) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 694) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 695) case AUDIO_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 696) case VIDEO_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 697) case AUDIO_CHOOSER: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 698) case VIDEO_CHOOSER: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 699) // For audio/video capture/chooser, we get the URI from the content ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 700) // provider ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 701) // then the widget copies the file and makes a new entry in the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 702) // content provider. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 703) Uri media = intent.getData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 704) ((ODKView) mCurrentView).setBinaryData(media); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 705) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 706) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 707) case LOCATION_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 708) String sl = intent.getStringExtra(LOCATION_RESULT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 709) ((ODKView) mCurrentView).setBinaryData(sl); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 710) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 711) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 712) case BEARING_CAPTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 713) String bearing = intent.getStringExtra(BEARING_RESULT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 714) ((ODKView) mCurrentView).setBinaryData(bearing); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 715) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 716) case HIERARCHY_ACTIVITY: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 717) // We may have jumped to a new index in hierarchy activity, so ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 718) // refresh ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 719) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 720) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 721) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 722) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 723) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 724) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 725) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 726) * Refreshes the current view. the controller and the displayed view can get ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 727) * out of sync due to dialogs and restarts caused by screen orientation ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 728) * changes, so they're resynchronized here. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 729) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 730) public void refreshCurrentView() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 731) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 732) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 733) int event = formController.getEvent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 734) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 735) // When we refresh, repeat dialog state isn't maintained, so step back ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 736) // to the previous ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 737) // question. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 738) // Also, if we're within a group labeled 'field list', step back to the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 739) // beginning of that ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 740) // group. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 741) // That is, skip backwards over repeat prompts, groups that are not ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 742) // field-lists, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 743) // repeat events, and indexes in field-lists that is not the containing ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 744) // group. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 745) if (event == FormEntryController.EVENT_PROMPT_NEW_REPEAT) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 746) createRepeatDialog(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 747) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 748) View current = createView(event, false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 749) showView(current, AnimationType.FADE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 750) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 751) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 752) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 753) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 754) public boolean onCreateOptionsMenu(Menu menu) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 755) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 756) .logInstanceAction(this, "onCreateOptionsMenu", "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 757) super.onCreateOptionsMenu(menu); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 758) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 759) CompatibilityUtils.setShowAsAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 760) menu.add(0, MENU_SAVE, 0, R.string.save_all_answers).setIcon( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 761) android.R.drawable.ic_menu_save), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 762) MenuItem.SHOW_AS_ACTION_IF_ROOM); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 763) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 764) CompatibilityUtils.setShowAsAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 765) menu.add(0, MENU_HIERARCHY_VIEW, 0, R.string.view_hierarchy) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 766) .setIcon(R.drawable.ic_menu_goto), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 767) MenuItem.SHOW_AS_ACTION_IF_ROOM); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 768) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 769) CompatibilityUtils.setShowAsAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 770) menu.add(0, MENU_LANGUAGES, 0, R.string.change_language) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 771) .setIcon(R.drawable.ic_menu_start_conversation), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 772) MenuItem.SHOW_AS_ACTION_NEVER); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 773) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 774) CompatibilityUtils.setShowAsAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 775) menu.add(0, MENU_PREFERENCES, 0, R.string.general_preferences) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 776) .setIcon(R.drawable.ic_menu_preferences), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 777) MenuItem.SHOW_AS_ACTION_NEVER); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 778) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 779) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 780) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 781) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 782) public boolean onPrepareOptionsMenu(Menu menu) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 783) super.onPrepareOptionsMenu(menu); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 784) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 785) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 786) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 787) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 788) boolean useability; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 789) useability = mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 790) AdminPreferencesActivity.KEY_SAVE_MID, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 791) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 792) menu.findItem(MENU_SAVE).setVisible(useability).setEnabled(useability); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 793) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 794) useability = mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 795) AdminPreferencesActivity.KEY_JUMP_TO, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 796) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 797) menu.findItem(MENU_HIERARCHY_VIEW).setVisible(useability) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 798) .setEnabled(useability); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 799) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 800) useability = mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 801) AdminPreferencesActivity.KEY_CHANGE_LANGUAGE, true) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 802) && (formController != null) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 803) && formController.getLanguages() != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 804) && formController.getLanguages().length > 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 805) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 806) menu.findItem(MENU_LANGUAGES).setVisible(useability) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 807) .setEnabled(useability); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 808) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 809) useability = mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 810) AdminPreferencesActivity.KEY_ACCESS_SETTINGS, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 811) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 812) menu.findItem(MENU_PREFERENCES).setVisible(useability) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 813) .setEnabled(useability); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 814) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 815) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 816) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 817) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 818) public boolean onOptionsItemSelected(MenuItem item) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 819) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 820) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 821) switch (item.getItemId()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 822) case MENU_LANGUAGES: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 823) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 824) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 825) .logInstanceAction(this, "onOptionsItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 826) "MENU_LANGUAGES"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 827) createLanguageDialog(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 828) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 829) case MENU_SAVE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 830) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 831) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 832) .logInstanceAction(this, "onOptionsItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 833) "MENU_SAVE"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 834) // don't exit ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 835) saveDataToDisk(DO_NOT_EXIT, isInstanceComplete(false), null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 836) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 837) case MENU_HIERARCHY_VIEW: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 838) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 839) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 840) .logInstanceAction(this, "onOptionsItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 841) "MENU_HIERARCHY_VIEW"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 842) if (formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 843) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 844) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 845) Intent i = new Intent(this, FormHierarchyActivity.class); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 846) startActivityForResult(i, HIERARCHY_ACTIVITY); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 847) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 848) case MENU_PREFERENCES: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 849) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 850) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 851) .logInstanceAction(this, "onOptionsItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 852) "MENU_PREFERENCES"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 853) Intent pref = new Intent(this, PreferencesActivity.class); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 854) startActivity(pref); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 855) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 856) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 857) return super.onOptionsItemSelected(item); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 858) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 859) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 860) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 861) * Attempt to save the answer(s) in the current screen to into the data ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 862) * model. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 863) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 864) * @param evaluateConstraints ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 865) * @return false if any error occurs while saving (constraint violated, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 866) * etc...), true otherwise. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 867) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 868) private boolean saveAnswersForCurrentScreen(boolean evaluateConstraints) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 869) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 870) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 871) // only try to save if the current event is a question or a field-list ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 872) // group ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 873) if (formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 874) LinkedHashMap answers = ((ODKView) mCurrentView) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 875) .getAnswers(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 876) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 877) FailedConstraint constraint = formController.saveAllScreenAnswers(answers, evaluateConstraints); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 878) if (constraint != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 879) createConstraintToast(constraint.index, constraint.status); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 880) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 881) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 882) } catch (JavaRosaException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 883) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 884) createErrorDialog(e.getCause().getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 885) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 886) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 887) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 888) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 889) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 890) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 891) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 892) * Clears the answer on the screen. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 893) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 894) private void clearAnswer(QuestionWidget qw) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 895) if (qw.getAnswer() != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 896) qw.clearAnswer(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 897) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 898) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 899) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 900) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 901) public void onCreateContextMenu(ContextMenu menu, View v, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 902) ContextMenuInfo menuInfo) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 903) super.onCreateContextMenu(menu, v, menuInfo); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 904) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 905) .logInstanceAction(this, "onCreateContextMenu", "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 906) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 907) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 908) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 909) menu.add(0, v.getId(), 0, getString(R.string.clear_answer)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 910) if (formController.indexContainsRepeatableGroup()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 911) menu.add(0, DELETE_REPEAT, 0, getString(R.string.delete_repeat)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 912) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 913) menu.setHeaderTitle(getString(R.string.edit_prompt)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 914) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 915) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 916) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 917) public boolean onContextItemSelected(MenuItem item) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 918) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 919) * We don't have the right view here, so we store the View's ID as the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 920) * item ID and loop through the possible views to find the one the user ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 921) * clicked on. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 922) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 923) for (QuestionWidget qw : ((ODKView) mCurrentView).getWidgets()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 924) if (item.getItemId() == qw.getId()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 925) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 926) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 927) .logInstanceAction(this, "onContextItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 928) "createClearDialog", qw.getPrompt().getIndex()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 929) createClearDialog(qw); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 930) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 931) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 932) if (item.getItemId() == DELETE_REPEAT) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 933) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 934) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 935) .logInstanceAction(this, "onContextItemSelected", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 936) "createDeleteRepeatConfirmDialog"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 937) createDeleteRepeatConfirmDialog(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 938) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 939) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 940) return super.onContextItemSelected(item); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 941) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 942) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 943) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 944) * If we're loading, then we pass the loading thread to our next instance. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 945) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 946) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 947) public Object onRetainNonConfigurationInstance() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 948) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 949) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 950) // if a form is loading, pass the loader task ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 951) if (mFormLoaderTask != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 952) && mFormLoaderTask.getStatus() != AsyncTask.Status.FINISHED) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 953) return mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 954) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 955) // if a form is writing to disk, pass the save to disk task ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 956) if (mSaveToDiskTask != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 957) && mSaveToDiskTask.getStatus() != AsyncTask.Status.FINISHED) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 958) return mSaveToDiskTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 959) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 960) // mFormEntryController is static so we don't need to pass it. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 961) if (formController != null && formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 962) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 963) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 964) return null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 965) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 966) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 967) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 968) * Creates a view given the View type and an event ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 969) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 970) * @param event ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 971) * @param advancingPage ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 972) * -- true if this results from advancing through the form ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 973) * @return newly created View ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 974) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 975) private View createView(int event, boolean advancingPage) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 976) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 977) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 978) setTitle(getString(R.string.app_name) + " > " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 979) + formController.getFormTitle()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 980) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 981) switch (event) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 982) case FormEntryController.EVENT_BEGINNING_OF_FORM: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 983) View startView = View ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 984) .inflate(this, R.layout.form_entry_start, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 985) setTitle(getString(R.string.app_name) + " > " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 986) + formController.getFormTitle()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 987) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 988) Drawable image = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 989) File mediaFolder = formController.getMediaFolder(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 990) String mediaDir = mediaFolder.getAbsolutePath(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 991) BitmapDrawable bitImage = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 992) // attempt to load the form-specific logo... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 993) // this is arbitrarily silly ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 994) bitImage = new BitmapDrawable(getResources(), mediaDir + File.separator ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 995) + "form_logo.png"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 996) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 997) if (bitImage != null && bitImage.getBitmap() != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 998) && bitImage.getIntrinsicHeight() > 0 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 999) && bitImage.getIntrinsicWidth() > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1000) image = bitImage; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1001) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1002) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1003) if (image == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1004) // show the opendatakit zig... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1005) // image = ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1006) // getResources().getDrawable(R.drawable.opendatakit_zig); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1007) ((ImageView) startView.findViewById(R.id.form_start_bling)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1008) .setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1009) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1010) ImageView v = ((ImageView) startView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1011) .findViewById(R.id.form_start_bling)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1012) v.setImageDrawable(image); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1013) v.setContentDescription(formController.getFormTitle()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1014) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1015) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1016) // change start screen based on navigation prefs ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1017) String navigationChoice = PreferenceManager ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1018) .getDefaultSharedPreferences(this).getString( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1019) PreferencesActivity.KEY_NAVIGATION, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1020) PreferencesActivity.KEY_NAVIGATION); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1021) Boolean useSwipe = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1022) Boolean useButtons = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1023) ImageView ia = ((ImageView) startView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1024) .findViewById(R.id.image_advance)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1025) ImageView ib = ((ImageView) startView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1026) .findViewById(R.id.image_backup)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1027) TextView ta = ((TextView) startView.findViewById(R.id.text_advance)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1028) TextView tb = ((TextView) startView.findViewById(R.id.text_backup)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1029) TextView d = ((TextView) startView.findViewById(R.id.description)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1030) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1031) if (navigationChoice != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1032) if (navigationChoice ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1033) .contains(PreferencesActivity.NAVIGATION_SWIPE)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1034) useSwipe = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1035) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1036) if (navigationChoice ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1037) .contains(PreferencesActivity.NAVIGATION_BUTTONS)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1038) useButtons = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1039) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1040) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1041) if (useSwipe && !useButtons) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1042) d.setText(getString(R.string.swipe_instructions, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1043) formController.getFormTitle())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1044) } else if (useButtons && !useSwipe) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1045) ia.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1046) ib.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1047) ta.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1048) tb.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1049) d.setText(getString(R.string.buttons_instructions, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1050) formController.getFormTitle())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1051) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1052) d.setText(getString(R.string.swipe_buttons_instructions, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1053) formController.getFormTitle())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1054) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1055) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1056) if (mBackButton.isShown()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1057) mBackButton.setEnabled(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1058) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1059) if (mNextButton.isShown()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1060) mNextButton.setEnabled(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1061) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1062) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1063) return startView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1064) case FormEntryController.EVENT_END_OF_FORM: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1065) View endView = View.inflate(this, R.layout.form_entry_end, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1066) ((TextView) endView.findViewById(R.id.description)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1067) .setText(getString(R.string.save_enter_data_description, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1068) formController.getFormTitle())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1069) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1070) // checkbox for if finished or ready to send ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1071) final CheckBox instanceComplete = ((CheckBox) endView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1072) .findViewById(R.id.mark_finished)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1073) instanceComplete.setChecked(isInstanceComplete(true)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1074) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1075) if (!mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1076) AdminPreferencesActivity.KEY_MARK_AS_FINALIZED, true)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1077) instanceComplete.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1078) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1079) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1080) // edittext to change the displayed name of the instance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1081) final EditText saveAs = (EditText) endView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1082) .findViewById(R.id.save_name); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1083) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1084) // disallow carriage returns in the name ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1085) InputFilter returnFilter = new InputFilter() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1086) public CharSequence filter(CharSequence source, int start, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1087) int end, Spanned dest, int dstart, int dend) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1088) for (int i = start; i < end; i++) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1089) if (Character.getType((source.charAt(i))) == Character.CONTROL) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1090) return ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1091) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1092) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1093) return null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1094) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1095) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1096) saveAs.setFilters(new InputFilter[] { returnFilter }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1097) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1098) String saveName = formController.getSubmissionMetadata().instanceName; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1099) if (saveName == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1100) // no meta/instanceName field in the form -- see if we have a ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1101) // name for this instance from a previous save attempt... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1102) if (getContentResolver().getType(getIntent().getData()) == InstanceColumns.CONTENT_ITEM_TYPE) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1103) Uri instanceUri = getIntent().getData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1104) Cursor instance = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1105) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1106) instance = getContentResolver().query(instanceUri, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1107) null, null, null, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1108) if (instance.getCount() == 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1109) instance.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1110) saveName = instance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1111) .getString(instance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1112) .getColumnIndex(InstanceColumns.DISPLAY_NAME)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1113) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1114) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1115) if (instance != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1116) instance.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1117) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1118) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1119) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1120) if (saveName == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1121) // last resort, default to the form title ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1122) saveName = formController.getFormTitle(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1123) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1124) // present the prompt to allow user to name the form ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1125) TextView sa = (TextView) endView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1126) .findViewById(R.id.save_form_as); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1127) sa.setVisibility(View.VISIBLE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1128) saveAs.setText(saveName); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1129) saveAs.setEnabled(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1130) saveAs.setVisibility(View.VISIBLE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1131) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1132) // if instanceName is defined in form, this is the name -- no ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1133) // revisions ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1134) // display only the name, not the prompt, and disable edits ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1135) TextView sa = (TextView) endView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1136) .findViewById(R.id.save_form_as); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1137) sa.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1138) saveAs.setText(saveName); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1139) saveAs.setEnabled(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1140) saveAs.setBackgroundColor(Color.WHITE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1141) saveAs.setVisibility(View.VISIBLE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1142) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1143) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1144) // override the visibility settings based upon admin preferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1145) if (!mAdminPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1146) AdminPreferencesActivity.KEY_SAVE_AS, true)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1147) saveAs.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1148) TextView sa = (TextView) endView ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1149) .findViewById(R.id.save_form_as); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1150) sa.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1151) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1152) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1153) // Create 'save' button ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1154) ((Button) endView.findViewById(R.id.save_exit_button)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1155) .setOnClickListener(new OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1156) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1157) public void onClick(View v) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1158) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1159) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1160) .logInstanceAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1161) this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1162) "createView.saveAndExit", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1163) instanceComplete.isChecked() ? "saveAsComplete" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1164) : "saveIncomplete"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1165) // Form is marked as 'saved' here. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1166) if (saveAs.getText().length() < 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1167) Toast.makeText(FormEntryActivity.this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1168) R.string.save_as_error, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1169) Toast.LENGTH_SHORT).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1170) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1171) saveDataToDisk(EXIT, instanceComplete ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1172) .isChecked(), saveAs.getText() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1173) .toString()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1174) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1175) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1176) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1177) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1178) if (mBackButton.isShown()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1179) mBackButton.setEnabled(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1180) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1181) if (mNextButton.isShown()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1182) mNextButton.setEnabled(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1183) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1184) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1185) return endView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1186) case FormEntryController.EVENT_QUESTION: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1187) case FormEntryController.EVENT_GROUP: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1188) case FormEntryController.EVENT_REPEAT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1189) ODKView odkv = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1190) // should only be a group here if the event_group is a field-list ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1191) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1192) FormEntryPrompt[] prompts = formController.getQuestionPrompts(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1193) FormEntryCaption[] groups = formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1194) .getGroupsForCurrentIndex(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1195) odkv = new ODKView(this, formController.getQuestionPrompts(), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1196) groups, advancingPage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1197) Log.i(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1198) "created view for group " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1199) + (groups.length > 0 ? groups[groups.length - 1] ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1200) .getLongText() : "[top]") ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1201) + " " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1202) + (prompts.length > 0 ? prompts[0] ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1203) .getQuestionText() : "[no question]")); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1204) } catch (RuntimeException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1205) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1206) // this is badness to avoid a crash. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1207) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1208) event = formController.stepToNextScreenEvent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1209) createErrorDialog(e.getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1210) } catch (JavaRosaException e1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1211) Log.e(t, e1.getMessage(), e1); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1212) createErrorDialog(e.getMessage() + "\n\n" + e1.getCause().getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1213) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1214) return createView(event, advancingPage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1215) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1216) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1217) // Makes a "clear answer" menu pop up on long-click ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1218) for (QuestionWidget qw : odkv.getWidgets()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1219) if (!qw.getPrompt().isReadOnly()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1220) registerForContextMenu(qw); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1221) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1222) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1223) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1224) if (mBackButton.isShown() && mNextButton.isShown()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1225) mBackButton.setEnabled(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1226) mNextButton.setEnabled(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1227) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1228) return odkv; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1229) default: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1230) Log.e(t, "Attempted to create a view that does not exist."); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1231) // this is badness to avoid a crash. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1232) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1233) event = formController.stepToNextScreenEvent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1234) createErrorDialog(getString(R.string.survey_internal_error), EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1235) } catch (JavaRosaException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1236) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1237) createErrorDialog(e.getCause().getMessage(), EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1238) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1239) return createView(event, advancingPage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1240) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1241) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1242) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1243) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1244) public boolean dispatchTouchEvent(MotionEvent mv) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1245) boolean handled = mGestureDetector.onTouchEvent(mv); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1246) if (!handled) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1247) return super.dispatchTouchEvent(mv); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1248) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1249) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1250) return handled; // this is always true ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1251) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1252) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1253) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1254) * Determines what should be displayed on the screen. Possible options are: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1255) * a question, an ask repeat dialog, or the submit screen. Also saves ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1256) * answers to the data model after checking constraints. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1257) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1258) private void showNextView() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1259) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1260) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1261) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1262) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1263) // get constraint behavior preference value with appropriate default ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1264) String constraint_behavior = PreferenceManager.getDefaultSharedPreferences(this) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1265) .getString(PreferencesActivity.KEY_CONSTRAINT_BEHAVIOR, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1266) PreferencesActivity.CONSTRAINT_BEHAVIOR_DEFAULT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1267) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1268) if (formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1269) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1270) // if constraint behavior says we should validate on swipe, do so ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1271) if (constraint_behavior.equals(PreferencesActivity.CONSTRAINT_BEHAVIOR_ON_SWIPE)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1272) if (!saveAnswersForCurrentScreen(EVALUATE_CONSTRAINTS)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1273) // A constraint was violated so a dialog should be showing. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1274) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1275) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1276) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1277) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1278) // otherwise, just save without validating (constraints will be validated on finalize) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1279) } else ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1280) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1281) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1282) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1283) View next; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1284) int event = formController.stepToNextScreenEvent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1285) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1286) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1287) switch (event) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1288) case FormEntryController.EVENT_QUESTION: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1289) case FormEntryController.EVENT_GROUP: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1290) // create a savepoint ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1291) if ((++viewCount) % SAVEPOINT_INTERVAL == 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1292) nonblockingCreateSavePointData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1293) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1294) next = createView(event, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1295) showView(next, AnimationType.RIGHT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1296) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1297) case FormEntryController.EVENT_END_OF_FORM: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1298) case FormEntryController.EVENT_REPEAT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1299) next = createView(event, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1300) showView(next, AnimationType.RIGHT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1301) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1302) case FormEntryController.EVENT_PROMPT_NEW_REPEAT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1303) createRepeatDialog(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1304) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1305) case FormEntryController.EVENT_REPEAT_JUNCTURE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1306) Log.i(t, "repeat juncture: " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1307) + formController.getFormIndex().getReference()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1308) // skip repeat junctures until we implement them ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1309) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1310) default: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1311) Log.w(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1312) "JavaRosa added a new EVENT type and didn't tell us... shame on them."); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1313) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1314) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1315) } catch (JavaRosaException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1316) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1317) createErrorDialog(e.getCause().getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1318) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1319) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1320) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1321) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1322) * Determines what should be displayed between a question, or the start ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1323) * screen and displays the appropriate view. Also saves answers to the data ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1324) * model without checking constraints. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1325) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1326) private void showPreviousView() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1327) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1328) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1329) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1330) // The answer is saved on a back swipe, but question constraints are ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1331) // ignored. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1332) if (formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1333) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1334) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1335) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1336) if (formController.getEvent() != FormEntryController.EVENT_BEGINNING_OF_FORM) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1337) int event = formController.stepToPreviousScreenEvent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1338) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1339) if (event == FormEntryController.EVENT_BEGINNING_OF_FORM ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1340) || event == FormEntryController.EVENT_GROUP ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1341) || event == FormEntryController.EVENT_QUESTION) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1342) // create savepoint ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1343) if ((++viewCount) % SAVEPOINT_INTERVAL == 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1344) nonblockingCreateSavePointData(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1345) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1346) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1347) View next = createView(event, false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1348) showView(next, AnimationType.LEFT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1349) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1350) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1351) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1352) } catch (JavaRosaException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1353) Log.e(t, e.getMessage(), e); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1354) createErrorDialog(e.getCause().getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1355) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1356) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1357) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1358) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1359) * Displays the View specified by the parameter 'next', animating both the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1360) * current view and next appropriately given the AnimationType. Also updates ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1361) * the progress bar. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1362) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1363) public void showView(View next, AnimationType from) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1364) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1365) // disable notifications... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1366) if (mInAnimation != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1367) mInAnimation.setAnimationListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1368) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1369) if (mOutAnimation != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1370) mOutAnimation.setAnimationListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1371) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1372) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1373) // logging of the view being shown is already done, as this was handled ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1374) // by createView() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1375) switch (from) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1376) case RIGHT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1377) mInAnimation = AnimationUtils.loadAnimation(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1378) R.anim.push_left_in); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1379) mOutAnimation = AnimationUtils.loadAnimation(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1380) R.anim.push_left_out); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1381) // if animation is left or right then it was a swipe, and we want to re-save on entry ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1382) mAutoSaved = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1383) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1384) case LEFT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1385) mInAnimation = AnimationUtils.loadAnimation(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1386) R.anim.push_right_in); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1387) mOutAnimation = AnimationUtils.loadAnimation(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1388) R.anim.push_right_out); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1389) mAutoSaved = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1390) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1391) case FADE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1392) mInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1393) mOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1394) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1395) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1396) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1397) // complete setup for animations... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1398) mInAnimation.setAnimationListener(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1399) mOutAnimation.setAnimationListener(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1400) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1401) // drop keyboard before transition... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1402) if (mCurrentView != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1403) InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1404) inputManager.hideSoftInputFromWindow(mCurrentView.getWindowToken(), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1405) 0); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1406) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1407) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1408) RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1409) LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1410) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1411) // adjust which view is in the layout container... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1412) mStaleView = mCurrentView; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1413) mCurrentView = next; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1414) mQuestionHolder.addView(mCurrentView, lp); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1415) mAnimationCompletionSet = 0; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1416) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1417) if (mStaleView != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1418) // start OutAnimation for transition... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1419) mStaleView.startAnimation(mOutAnimation); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1420) // and remove the old view (MUST occur after start of animation!!!) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1421) mQuestionHolder.removeView(mStaleView); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1422) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1423) mAnimationCompletionSet = 2; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1424) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1425) // start InAnimation for transition... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1426) mCurrentView.startAnimation(mInAnimation); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1427) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1428) String logString = ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1429) switch (from) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1430) case RIGHT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1431) logString = "next"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1432) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1433) case LEFT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1434) logString = "previous"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1435) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1436) case FADE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1437) logString = "refresh"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1438) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1439) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1440) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1441) Collect.getInstance().getActivityLogger().logInstanceAction(this, "showView", logString); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1442) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1443) FormController formController = Collect.getInstance().getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1444) if (formController.getEvent() == FormEntryController.EVENT_QUESTION ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1445) || formController.getEvent() == FormEntryController.EVENT_GROUP ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1446) || formController.getEvent() == FormEntryController.EVENT_REPEAT) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1447) FormEntryPrompt[] prompts = Collect.getInstance().getFormController() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1448) .getQuestionPrompts(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1449) for (FormEntryPrompt p : prompts) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1450) List attrs = p.getBindAttributes(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1451) for (int i = 0; i < attrs.size(); i++) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1452) if (!mAutoSaved && "saveIncomplete".equals(attrs.get(i).getName())) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1453) saveDataToDisk(false, false, null, false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1454) mAutoSaved = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1455) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1456) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1457) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1458) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1459) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1460) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1461) // Hopefully someday we can use managed dialogs when the bugs are fixed ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1462) /* ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1463) * Ideally, we'd like to use Android to manage dialogs with onCreateDialog() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1464) * and onPrepareDialog(), but dialogs with dynamic content are broken in 1.5 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1465) * (cupcake). We do use managed dialogs for our static loading ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1466) * ProgressDialog. The main issue we noticed and are waiting to see fixed ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1467) * is: onPrepareDialog() is not called after a screen orientation change. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1468) * http://code.google.com/p/android/issues/detail?id=1639 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1469) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1470) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1471) // ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1472) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1473) * Creates and displays a dialog displaying the violated constraint. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1474) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1475) private void createConstraintToast(FormIndex index, int saveStatus) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1476) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1477) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1478) String constraintText; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1479) switch (saveStatus) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1480) case FormEntryController.ANSWER_CONSTRAINT_VIOLATED: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1481) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1482) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1483) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1484) "createConstraintToast.ANSWER_CONSTRAINT_VIOLATED", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1485) "show", index); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1486) constraintText = formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1487) .getQuestionPromptConstraintText(index); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1488) if (constraintText == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1489) constraintText = formController.getQuestionPrompt(index) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1490) .getSpecialFormQuestionText("constraintMsg"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1491) if (constraintText == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1492) constraintText = getString(R.string.invalid_answer_error); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1493) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1494) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1495) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1496) case FormEntryController.ANSWER_REQUIRED_BUT_EMPTY: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1497) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1498) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1499) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1500) "createConstraintToast.ANSWER_REQUIRED_BUT_EMPTY", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1501) "show", index); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1502) constraintText = formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1503) .getQuestionPromptRequiredText(index); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1504) if (constraintText == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1505) constraintText = formController.getQuestionPrompt(index) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1506) .getSpecialFormQuestionText("requiredMsg"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1507) if (constraintText == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1508) constraintText = getString(R.string.required_answer_error); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1509) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1510) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1511) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1512) default: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1513) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1514) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1515) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1516) showCustomToast(constraintText, Toast.LENGTH_SHORT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1517) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1518) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1519) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1520) * Creates a toast with the specified message. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1521) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1522) * @param message ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1523) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1524) private void showCustomToast(String message, int duration) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1525) LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1526) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1527) View view = inflater.inflate(R.layout.toast_view, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1528) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1529) // set the text in the view ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1530) TextView tv = (TextView) view.findViewById(R.id.message); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1531) tv.setText(message); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1532) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1533) Toast t = new Toast(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1534) t.setView(view); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1535) t.setDuration(duration); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1536) t.setGravity(Gravity.CENTER, 0, 0); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1537) t.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1538) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1539) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1540) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1541) * Creates and displays a dialog asking the user if they'd like to create a ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1542) * repeat of the current group. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1543) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1544) private void createRepeatDialog() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1545) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1546) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1547) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1548) .logInstanceAction(this, "createRepeatDialog", "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1549) mAlertDialog = new AlertDialog.Builder(this).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1550) mAlertDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1551) DialogInterface.OnClickListener repeatListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1552) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1553) public void onClick(DialogInterface dialog, int i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1554) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1555) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1556) switch (i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1557) case DialogInterface.BUTTON_POSITIVE: // yes, repeat ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1558) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1559) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1560) .logInstanceAction(this, "createRepeatDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1561) "addRepeat"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1562) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1563) formController.newRepeat(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1564) } catch (Exception e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1565) FormEntryActivity.this.createErrorDialog( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1566) e.getMessage(), DO_NOT_EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1567) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1568) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1569) if (!formController.indexIsInFieldList()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1570) // we are at a REPEAT event that does not have a ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1571) // field-list appearance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1572) // step to the next visible field... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1573) // which could be the start of a new repeat group... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1574) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1575) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1576) // we are at a REPEAT event that has a field-list ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1577) // appearance ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1578) // just display this REPEAT event's group. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1579) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1580) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1581) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1582) case DialogInterface. BUTTON_NEGATIVE: // no, no repeat ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1583) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1584) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1585) .logInstanceAction(this, "createRepeatDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1586) "showNext"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1587) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1588) // ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1589) // Make sure the error dialog will not disappear. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1590) // ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1591) // When showNextView() popups an error dialog (because of a JavaRosaException) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1592) // the issue is that the "add new repeat dialog" is referenced by mAlertDialog ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1593) // like the error dialog. When the "no repeat" is clicked, the error dialog ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1594) // is shown. Android by default dismisses the dialogs when a button is clicked, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1595) // so instead of closing the first dialog, it closes the second. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1596) new Thread() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1597) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1598) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1599) public void run() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1600) FormEntryActivity.this.runOnUiThread(new Runnable() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1601) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1602) public void run() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1603) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1604) Thread.sleep(500); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1605) } catch (InterruptedException e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1606) e.printStackTrace(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1607) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1608) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1609) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1610) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1611) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1612) }.start(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1613) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1614) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1615) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1616) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1617) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1618) if (formController.getLastRepeatCount() > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1619) mAlertDialog.setTitle(getString(R.string.leaving_repeat_ask)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1620) mAlertDialog.setMessage(getString(R.string.add_another_repeat, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1621) formController.getLastGroupText())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1622) mAlertDialog.setButton(getString(R.string.add_another), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1623) repeatListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1624) mAlertDialog.setButton2(getString(R.string.leave_repeat_yes), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1625) repeatListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1626) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1627) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1628) mAlertDialog.setTitle(getString(R.string.entering_repeat_ask)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1629) mAlertDialog.setMessage(getString(R.string.add_repeat, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1630) formController.getLastGroupText())); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1631) mAlertDialog.setButton(getString(R.string.entering_repeat), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1632) repeatListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1633) mAlertDialog.setButton2(getString(R.string.add_repeat_no), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1634) repeatListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1635) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1636) mAlertDialog.setCancelable(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1637) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1638) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1639) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1640) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1641) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1642) * Creates and displays dialog with the given errorMsg. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1643) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1644) private void createErrorDialog(String errorMsg, final boolean shouldExit) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1645) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1646) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1647) .logInstanceAction(this, "createErrorDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1648) "show." + Boolean.toString(shouldExit)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1649) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1650) if (mAlertDialog != null && mAlertDialog.isShowing()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1651) errorMsg = mErrorMessage + "\n\n" + errorMsg; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1652) mErrorMessage = errorMsg; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1653) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1654) mAlertDialog = new AlertDialog.Builder(this).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1655) mErrorMessage = errorMsg; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1656) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1657) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1658) mAlertDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1659) mAlertDialog.setTitle(getString(R.string.error_occured)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1660) mAlertDialog.setMessage(errorMsg); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1661) DialogInterface.OnClickListener errorListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1662) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1663) public void onClick(DialogInterface dialog, int i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1664) switch (i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1665) case DialogInterface.BUTTON_POSITIVE: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1666) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1667) .logInstanceAction(this, "createErrorDialog", "OK"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1668) if (shouldExit) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1669) mErrorMessage = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1670) finish(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1671) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1672) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1673) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1674) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1675) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1676) mAlertDialog.setCancelable(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1677) mAlertDialog.setButton(getString(R.string.ok), errorListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1678) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1679) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1680) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1681) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1682) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1683) * Creates a confirm/cancel dialog for deleting repeats. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1684) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1685) private void createDeleteRepeatConfirmDialog() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1686) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1687) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1688) .logInstanceAction(this, "createDeleteRepeatConfirmDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1689) "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1690) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1691) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1692) mAlertDialog = new AlertDialog.Builder(this).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1693) mAlertDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1694) String name = formController.getLastRepeatedGroupName(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1695) int repeatcount = formController.getLastRepeatedGroupRepeatCount(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1696) if (repeatcount != -1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1697) name += " (" + (repeatcount + 1) + ")"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1698) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1699) mAlertDialog.setTitle(getString(R.string.delete_repeat_ask)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1700) mAlertDialog ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1701) .setMessage(getString(R.string.delete_repeat_confirm, name)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1702) DialogInterface.OnClickListener quitListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1703) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1704) public void onClick(DialogInterface dialog, int i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1705) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1706) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1707) switch (i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1708) case DialogInterface.BUTTON_POSITIVE: // yes ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1709) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1710) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1711) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1712) "createDeleteRepeatConfirmDialog", "OK"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1713) formController.deleteRepeat(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1714) showPreviousView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1715) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1716) case DialogInterface. BUTTON_NEGATIVE: // no ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1717) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1718) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1719) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1720) "createDeleteRepeatConfirmDialog", "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1721) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1722) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1723) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1724) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1725) mAlertDialog.setCancelable(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1726) mAlertDialog.setButton(getString(R.string.discard_group), quitListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1727) mAlertDialog.setButton2(getString(R.string.delete_repeat_no), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1728) quitListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1729) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1730) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1731) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1732) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1733) * Saves data and writes it to disk. If exit is set, program will exit after ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1734) * save completes. Complete indicates whether the user has marked the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1735) * isntancs as complete. If updatedSaveName is non-null, the instances ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1736) * content provider is updated with the new name ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1737) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1738) // by default, save the current screen ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1739) private boolean saveDataToDisk(boolean exit, boolean complete, String updatedSaveName) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1740) return saveDataToDisk(exit, complete, updatedSaveName, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1741) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1742) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1743) // but if you want save in the background, can't be current screen ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1744) private boolean saveDataToDisk(boolean exit, boolean complete, String updatedSaveName, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1745) boolean current) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1746) // save current answer ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1747) if (current) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1748) if (!saveAnswersForCurrentScreen(complete)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1749) Toast.makeText(this, getString(R.string.data_saved_error), Toast.LENGTH_SHORT) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1750) .show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1751) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1752) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1753) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1754) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1755) synchronized (saveDialogLock) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1756) mSaveToDiskTask = new SaveToDiskTask(getIntent().getData(), exit, complete, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1757) updatedSaveName); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1758) mSaveToDiskTask.setFormSavedListener(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1759) mAutoSaved = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1760) showDialog(SAVING_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1761) // show dialog before we execute... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1762) mSaveToDiskTask.execute(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1763) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1764) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1765) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1766) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1767) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1768) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1769) * Create a dialog with options to save and exit, save, or quit without ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1770) * saving ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1771) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1772) private void createQuitDialog() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1773) String title; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1774) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1775) FormController formController = Collect.getInstance().getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1776) title = (formController == null) ? null : formController.getFormTitle(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1777) if ( title == null ) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1778) title = ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1779) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1780) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1781) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1782) String[] items; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1783) if (mAdminPreferences.getBoolean(AdminPreferencesActivity.KEY_SAVE_MID, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1784) true)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1785) String[] two = { getString(R.string.keep_changes), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1786) getString(R.string.do_not_save) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1787) items = two; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1788) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1789) String[] one = { getString(R.string.do_not_save) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1790) items = one; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1791) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1792) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1793) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1794) .logInstanceAction(this, "createQuitDialog", "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1795) mAlertDialog = new AlertDialog.Builder(this) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1796) .setIcon(android.R.drawable.ic_dialog_info) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1797) .setTitle( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1798) getString(R.string.quit_application, title)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1799) .setNeutralButton(getString(R.string.do_not_exit), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1800) new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1801) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1802) public void onClick(DialogInterface dialog, int id) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1803) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1804) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1805) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1806) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1807) "createQuitDialog", "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1808) dialog.cancel(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1809) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1810) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1811) }) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1812) .setItems(items, new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1813) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1814) public void onClick(DialogInterface dialog, int which) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1815) switch (which) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1816) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1817) case 0: // save and exit ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1818) // this is slightly complicated because if the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1819) // option is disabled in ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1820) // the admin menu, then case 0 actually becomes ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1821) // 'discard and exit' ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1822) // whereas if it's enabled it's 'save and exit' ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1823) if (mAdminPreferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1824) .getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1825) AdminPreferencesActivity.KEY_SAVE_MID, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1826) true)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1827) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1828) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1829) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1830) "createQuitDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1831) "saveAndExit"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1832) saveDataToDisk(EXIT, isInstanceComplete(false), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1833) null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1834) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1835) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1836) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1837) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1838) "createQuitDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1839) "discardAndExit"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1840) removeTempInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1841) finishReturnInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1842) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1843) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1844) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1845) case 1: // discard changes and exit ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1846) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1847) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1848) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1849) "createQuitDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1850) "discardAndExit"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1851) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1852) // close all open databases of external data. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1853) Collect.getInstance().getExternalDataManager().close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1854) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1855) removeTempInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1856) finishReturnInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1857) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1858) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1859) case 2:// do nothing ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1860) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1861) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1862) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1863) "createQuitDialog", "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1864) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1865) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1866) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1867) }).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1868) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1869) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1870) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1871) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1872) * this method cleans up unneeded files when the user selects 'discard and ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1873) * exit' ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1874) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1875) private void removeTempInstance() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1876) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1877) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1878) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1879) // attempt to remove any scratch file ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1880) File temp = SaveToDiskTask.savepointFile(formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1881) .getInstancePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1882) if (temp.exists()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1883) temp.delete(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1884) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1885) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1886) String selection = InstanceColumns.INSTANCE_FILE_PATH + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1887) String[] selectionArgs = { formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1888) .getAbsolutePath() }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1889) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1890) boolean erase = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1891) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1892) Cursor c = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1893) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1894) c = getContentResolver().query(InstanceColumns.CONTENT_URI, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1895) null, selection, selectionArgs, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1896) erase = (c.getCount() < 1); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1897) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1898) if (c != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1899) c.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1900) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1901) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1902) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1903) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1904) // if it's not already saved, erase everything ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1905) if (erase) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1906) // delete media first ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1907) String instanceFolder = formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1908) .getParent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1909) Log.i(t, "attempting to delete: " + instanceFolder); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1910) int images = MediaUtils ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1911) .deleteImagesInFolderFromMediaProvider(formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1912) .getInstancePath().getParentFile()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1913) int audio = MediaUtils ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1914) .deleteAudioInFolderFromMediaProvider(formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1915) .getInstancePath().getParentFile()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1916) int video = MediaUtils ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1917) .deleteVideoInFolderFromMediaProvider(formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1918) .getInstancePath().getParentFile()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1919) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1920) Log.i(t, "removed from content providers: " + images ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1921) + " image files, " + audio + " audio files," + " and " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1922) + video + " video files."); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1923) File f = new File(instanceFolder); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1924) if (f.exists() && f.isDirectory()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1925) for (File del : f.listFiles()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1926) Log.i(t, "deleting file: " + del.getAbsolutePath()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1927) del.delete(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1928) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1929) f.delete(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1930) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1931) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1932) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1933) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1934) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1935) * Confirm clear answer dialog ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1936) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1937) private void createClearDialog(final QuestionWidget qw) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1938) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1939) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1940) .logInstanceAction(this, "createClearDialog", "show", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1941) qw.getPrompt().getIndex()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1942) mAlertDialog = new AlertDialog.Builder(this).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1943) mAlertDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1944) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1945) mAlertDialog.setTitle(getString(R.string.clear_answer_ask)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1946) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1947) String question = qw.getPrompt().getLongText(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1948) if (question == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1949) question = ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1950) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1951) if (question.length() > 50) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1952) question = question.substring(0, 50) + "..."; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1953) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1954) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1955) mAlertDialog.setMessage(getString(R.string.clearanswer_confirm, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1956) question)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1957) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1958) DialogInterface.OnClickListener quitListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1959) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1960) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1961) public void onClick(DialogInterface dialog, int i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1962) switch (i) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1963) case DialogInterface.BUTTON_POSITIVE: // yes ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1964) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1965) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1966) .logInstanceAction(this, "createClearDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1967) "clearAnswer", qw.getPrompt().getIndex()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1968) clearAnswer(qw); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1969) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1970) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1971) case DialogInterface. BUTTON_NEGATIVE: // no ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1972) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1973) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1974) .logInstanceAction(this, "createClearDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1975) "cancel", qw.getPrompt().getIndex()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1976) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1977) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1978) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1979) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1980) mAlertDialog.setCancelable(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1981) mAlertDialog ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1982) .setButton(getString(R.string.discard_answer), quitListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1983) mAlertDialog.setButton2(getString(R.string.clear_answer_no), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1984) quitListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1985) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1986) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1987) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1988) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1989) * Creates and displays a dialog allowing the user to set the language for ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1990) * the form. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1991) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1992) private void createLanguageDialog() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1993) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1994) .logInstanceAction(this, "createLanguageDialog", "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1995) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1996) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1997) final String[] languages = formController.getLanguages(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1998) int selected = -1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 1999) if (languages != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2000) String language = formController.getLanguage(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2001) for (int i = 0; i < languages.length; i++) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2002) if (language.equals(languages[i])) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2003) selected = i; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2004) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2005) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2006) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2007) mAlertDialog = new AlertDialog.Builder(this) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2008) .setSingleChoiceItems(languages, selected, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2009) new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2010) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2011) public void onClick(DialogInterface dialog, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2012) int whichButton) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2013) FormController formController = Collect ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2014) .getInstance().getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2015) // Update the language in the content provider ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2016) // when selecting a new ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2017) // language ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2018) ContentValues values = new ContentValues(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2019) values.put(FormsColumns.LANGUAGE, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2020) languages[whichButton]); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2021) String selection = FormsColumns.FORM_FILE_PATH ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2022) + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2023) String selectArgs[] = { mFormPath }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2024) int updated = getContentResolver().update( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2025) FormsColumns.CONTENT_URI, values, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2026) selection, selectArgs); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2027) Log.i(t, "Updated language to: " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2028) + languages[whichButton] + " in " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2029) + updated + " rows"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2030) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2031) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2032) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2033) .logInstanceAction( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2034) this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2035) "createLanguageDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2036) "changeLanguage." ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2037) + languages[whichButton]); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2038) formController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2039) .setLanguage(languages[whichButton]); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2040) dialog.dismiss(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2041) if (formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2042) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2043) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2044) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2045) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2046) }) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2047) .setTitle(getString(R.string.change_language)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2048) .setNegativeButton(getString(R.string.do_not_change), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2049) new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2050) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2051) public void onClick(DialogInterface dialog, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2052) int whichButton) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2053) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2054) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2055) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2056) "createLanguageDialog", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2057) "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2058) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2059) }).create(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2060) mAlertDialog.show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2061) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2062) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2063) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2064) * We use Android's dialog management for loading/saving progress dialogs ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2065) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2066) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2067) protected Dialog onCreateDialog(int id) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2068) switch (id) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2069) case PROGRESS_DIALOG: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2070) Log.e(t, "Creating PROGRESS_DIALOG"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2071) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2072) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2073) .logInstanceAction(this, "onCreateDialog.PROGRESS_DIALOG", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2074) "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2075) mProgressDialog = new ProgressDialog(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2076) DialogInterface.OnClickListener loadingButtonListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2077) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2078) public void onClick(DialogInterface dialog, int which) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2079) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2080) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2081) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2082) "onCreateDialog.PROGRESS_DIALOG", "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2083) dialog.dismiss(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2084) mFormLoaderTask.setFormLoaderListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2085) FormLoaderTask t = mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2086) mFormLoaderTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2087) t.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2088) t.destroy(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2089) finish(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2090) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2091) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2092) mProgressDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2093) mProgressDialog.setTitle(getString(R.string.loading_form)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2094) mProgressDialog.setMessage(getString(R.string.please_wait)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2095) mProgressDialog.setIndeterminate(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2096) mProgressDialog.setCancelable(false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2097) mProgressDialog.setButton(getString(R.string.cancel_loading_form), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2098) loadingButtonListener); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2099) return mProgressDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2100) case SAVING_DIALOG: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2101) Log.e(t, "Creating SAVING_DIALOG"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2102) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2103) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2104) .logInstanceAction(this, "onCreateDialog.SAVING_DIALOG", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2105) "show"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2106) mProgressDialog = new ProgressDialog(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2107) DialogInterface.OnClickListener cancelSavingButtonListener = new DialogInterface.OnClickListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2108) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2109) public void onClick(DialogInterface dialog, int which) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2110) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2111) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2112) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2113) "onCreateDialog.SAVING_DIALOG", "cancel"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2114) dialog.dismiss(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2115) cancelSaveToDiskTask(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2116) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2117) }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2118) mProgressDialog.setIcon(android.R.drawable.ic_dialog_info); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2119) mProgressDialog.setTitle(getString(R.string.saving_form)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2120) mProgressDialog.setMessage(getString(R.string.please_wait)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2121) mProgressDialog.setIndeterminate(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2122) mProgressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2123) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2124) public void onDismiss(DialogInterface dialog) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2125) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2126) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2127) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2128) "onCreateDialog.SAVING_DIALOG", "OnDismissListener"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2129) cancelSaveToDiskTask(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2130) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2131) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2132) return mProgressDialog; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2133) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2134) return null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2135) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2136) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2137) private void cancelSaveToDiskTask() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2138) synchronized (saveDialogLock) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2139) mSaveToDiskTask.setFormSavedListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2140) boolean cancelled = mSaveToDiskTask.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2141) Log.w(t, "Cancelled SaveToDiskTask! (" + cancelled + ")"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2142) mSaveToDiskTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2143) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2144) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2145) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2146) * Dismiss any showing dialogs that we manually manage. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2147) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2148) private void dismissDialogs() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2149) Log.e(t, "Dismiss dialogs"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2150) if (mAlertDialog != null && mAlertDialog.isShowing()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2151) mAlertDialog.dismiss(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2152) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2153) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2154) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2155) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2156) protected void onPause() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2157) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2158) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2159) dismissDialogs(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2160) // make sure we're not already saving to disk. if we are, currentPrompt ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2161) // is getting constantly updated ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2162) if (mSaveToDiskTask == null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2163) || mSaveToDiskTask.getStatus() == AsyncTask.Status.FINISHED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2164) if (mCurrentView != null && formController != null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2165) && formController.currentPromptIsQuestion()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2166) saveAnswersForCurrentScreen(DO_NOT_EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2167) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2168) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2169) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2170) super.onPause(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2171) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2172) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2173) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2174) protected void onResume() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2175) super.onResume(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2176) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2177) if (mErrorMessage != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2178) if (mAlertDialog != null && !mAlertDialog.isShowing()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2179) createErrorDialog(mErrorMessage, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2180) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2181) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2182) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2183) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2184) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2185) FormController formController = Collect.getInstance().getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2186) Collect.getInstance().getActivityLogger().open(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2187) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2188) if (mFormLoaderTask != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2189) mFormLoaderTask.setFormLoaderListener(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2190) if (formController == null ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2191) && mFormLoaderTask.getStatus() == AsyncTask.Status.FINISHED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2192) FormController fec = mFormLoaderTask.getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2193) if (fec != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2194) loadingComplete(mFormLoaderTask); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2195) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2196) dismissDialog(PROGRESS_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2197) FormLoaderTask t = mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2198) mFormLoaderTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2199) t.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2200) t.destroy(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2201) // there is no formController -- fire MainMenu activity? ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2202) startActivity(new Intent(this, MainMenuActivity.class)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2203) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2204) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2205) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2206) if (formController == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2207) // there is no formController -- fire MainMenu activity? ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2208) startActivity(new Intent(this, MainMenuActivity.class)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2209) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2210) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2211) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2212) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2213) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2214) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2215) if (mSaveToDiskTask != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2216) mSaveToDiskTask.setFormSavedListener(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2217) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2218) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2219) // only check the buttons if it's enabled in preferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2220) SharedPreferences sharedPreferences = PreferenceManager ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2221) .getDefaultSharedPreferences(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2222) String navigation = sharedPreferences.getString( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2223) PreferencesActivity.KEY_NAVIGATION, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2224) PreferencesActivity.KEY_NAVIGATION); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2225) Boolean showButtons = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2226) if (navigation.contains(PreferencesActivity.NAVIGATION_BUTTONS)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2227) showButtons = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2228) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2229) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2230) if (showButtons) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2231) mBackButton.setVisibility(View.VISIBLE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2232) mNextButton.setVisibility(View.VISIBLE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2233) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2234) mBackButton.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2235) mNextButton.setVisibility(View.GONE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2236) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2237) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2238) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2239) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2240) public boolean onKeyDown(int keyCode, KeyEvent event) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2241) switch (keyCode) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2242) case KeyEvent.KEYCODE_BACK: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2243) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2244) .logInstanceAction(this, "onKeyDown.KEYCODE_BACK", "quit"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2245) createQuitDialog(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2246) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2247) case KeyEvent.KEYCODE_DPAD_RIGHT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2248) if (event.isAltPressed() && !mBeenSwiped) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2249) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2250) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2251) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2252) .logInstanceAction(this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2253) "onKeyDown.KEYCODE_DPAD_RIGHT", "showNext"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2254) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2255) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2256) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2257) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2258) case KeyEvent.KEYCODE_DPAD_LEFT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2259) if (event.isAltPressed() && !mBeenSwiped) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2260) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2261) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2262) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2263) .logInstanceAction(this, "onKeyDown.KEYCODE_DPAD_LEFT", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2264) "showPrevious"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2265) showPreviousView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2266) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2267) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2268) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2269) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2270) return super.onKeyDown(keyCode, event); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2271) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2272) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2273) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2274) protected void onDestroy() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2275) if (mFormLoaderTask != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2276) mFormLoaderTask.setFormLoaderListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2277) // We have to call cancel to terminate the thread, otherwise it ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2278) // lives on and retains the FEC in memory. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2279) // but only if it's done, otherwise the thread never returns ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2280) if (mFormLoaderTask.getStatus() == AsyncTask.Status.FINISHED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2281) FormLoaderTask t = mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2282) mFormLoaderTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2283) t.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2284) t.destroy(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2285) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2286) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2287) if (mSaveToDiskTask != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2288) mSaveToDiskTask.setFormSavedListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2289) // We have to call cancel to terminate the thread, otherwise it ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2290) // lives on and retains the FEC in memory. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2291) if (mSaveToDiskTask.getStatus() == AsyncTask.Status.FINISHED) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2292) mSaveToDiskTask.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2293) mSaveToDiskTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2294) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2295) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2296) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2297) super.onDestroy(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2298) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2299) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2300) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2301) private int mAnimationCompletionSet = 0; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2302) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2303) private void afterAllAnimations() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2304) Log.i(t, "afterAllAnimations"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2305) if (mStaleView != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2306) if (mStaleView instanceof ODKView) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2307) // http://code.google.com/p/android/issues/detail?id=8488 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2308) ((ODKView) mStaleView).recycleDrawables(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2309) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2310) mStaleView = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2311) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2312) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2313) if (mCurrentView instanceof ODKView) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2314) ((ODKView) mCurrentView).setFocus(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2315) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2316) mBeenSwiped = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2317) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2318) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2319) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2320) public void onAnimationEnd(Animation animation) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2321) Log.i(t, "onAnimationEnd " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2322) + ((animation == mInAnimation) ? "in" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2323) : ((animation == mOutAnimation) ? "out" : "other"))); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2324) if (mInAnimation == animation) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2325) mAnimationCompletionSet |= 1; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2326) } else if (mOutAnimation == animation) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2327) mAnimationCompletionSet |= 2; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2328) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2329) Log.e(t, "Unexpected animation"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2330) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2331) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2332) if (mAnimationCompletionSet == 3) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2333) this.afterAllAnimations(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2334) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2335) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2336) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2337) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2338) public void onAnimationRepeat(Animation animation) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2339) // Added by AnimationListener interface. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2340) Log.i(t, "onAnimationRepeat " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2341) + ((animation == mInAnimation) ? "in" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2342) : ((animation == mOutAnimation) ? "out" : "other"))); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2343) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2344) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2345) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2346) public void onAnimationStart(Animation animation) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2347) // Added by AnimationListener interface. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2348) Log.i(t, "onAnimationStart " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2349) + ((animation == mInAnimation) ? "in" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2350) : ((animation == mOutAnimation) ? "out" : "other"))); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2351) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2352) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2353) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2354) * loadingComplete() is called by FormLoaderTask once it has finished ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2355) * loading a form. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2356) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2357) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2358) public void loadingComplete(FormLoaderTask task) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2359) dismissDialog(PROGRESS_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2360) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2361) FormController formController = task.getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2362) boolean pendingActivityResult = task.hasPendingActivityResult(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2363) boolean hasUsedSavepoint = task.hasUsedSavepoint(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2364) int requestCode = task.getRequestCode(); // these are bogus if ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2365) // pendingActivityResult is ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2366) // false ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2367) int resultCode = task.getResultCode(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2368) Intent intent = task.getIntent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2369) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2370) mFormLoaderTask.setFormLoaderListener(null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2371) FormLoaderTask t = mFormLoaderTask; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2372) mFormLoaderTask = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2373) t.cancel(true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2374) t.destroy(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2375) Collect.getInstance().setFormController(formController); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2376) CompatibilityUtils.invalidateOptionsMenu(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2377) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2378) Collect.getInstance().setExternalDataManager(task.getExternalDataManager()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2379) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2380) // Set the language if one has already been set in the past ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2381) String[] languageTest = formController.getLanguages(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2382) if (languageTest != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2383) String defaultLanguage = formController.getLanguage(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2384) String newLanguage = ""; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2385) String selection = FormsColumns.FORM_FILE_PATH + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2386) String selectArgs[] = { mFormPath }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2387) Cursor c = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2388) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2389) c = getContentResolver().query(FormsColumns.CONTENT_URI, null, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2390) selection, selectArgs, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2391) if (c.getCount() == 1) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2392) c.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2393) newLanguage = c.getString(c ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2394) .getColumnIndex(FormsColumns.LANGUAGE)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2395) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2396) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2397) if (c != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2398) c.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2399) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2400) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2401) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2402) // if somehow we end up with a bad language, set it to the default ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2403) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2404) formController.setLanguage(newLanguage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2405) } catch (Exception e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2406) formController.setLanguage(defaultLanguage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2407) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2408) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2409) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2410) if (pendingActivityResult) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2411) // set the current view to whatever group we were at... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2412) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2413) // process the pending activity request... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2414) onActivityResult(requestCode, resultCode, intent); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2415) return; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2416) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2417) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2418) // it can be a normal flow for a pending activity result to restore from ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2419) // a savepoint ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2420) // (the call flow handled by the above if statement). For all other use ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2421) // cases, the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2422) // user should be notified, as it means they wandered off doing other ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2423) // things then ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2424) // returned to ODK Collect and chose Edit Saved Form, but that the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2425) // savepoint for that ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2426) // form is newer than the last saved version of their form data. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2427) if (hasUsedSavepoint) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2428) runOnUiThread(new Runnable() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2429) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2430) public void run() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2431) Toast.makeText(FormEntryActivity.this, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2432) getString(R.string.savepoint_used), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2433) Toast.LENGTH_LONG).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2434) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2435) }); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2436) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2437) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2438) // Set saved answer path ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2439) if (formController.getInstancePath() == null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2440) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2441) // Create new answer folder. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2442) String time = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2443) Locale.ENGLISH).format(Calendar.getInstance().getTime()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2444) String file = mFormPath.substring(mFormPath.lastIndexOf('/') + 1, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2445) mFormPath.lastIndexOf('.')); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2446) String path = Collect.INSTANCES_PATH + File.separator + file + "_" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2447) + time; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2448) if (FileUtils.createFolder(path)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2449) formController.setInstancePath(new File(path + File.separator ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2450) + file + "_" + time + ".xml")); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2451) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2452) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2453) Intent reqIntent = getIntent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2454) boolean showFirst = reqIntent.getBooleanExtra("start", false); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2455) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2456) if (!showFirst) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2457) // we've just loaded a saved form, so start in the hierarchy ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2458) // view ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2459) Intent i = new Intent(this, FormHierarchyActivity.class); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2460) startActivity(i); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2461) return; // so we don't show the intro screen before jumping to ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2462) // the hierarchy ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2463) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2464) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2465) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2466) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2467) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2468) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2469) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2470) * called by the FormLoaderTask if something goes wrong. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2471) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2472) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2473) public void loadingError(String errorMsg) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2474) dismissDialog(PROGRESS_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2475) if (errorMsg != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2476) createErrorDialog(errorMsg, EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2477) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2478) createErrorDialog(getString(R.string.parse_error), EXIT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2479) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2480) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2481) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2482) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2483) * Called by SavetoDiskTask if everything saves correctly. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2484) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2485) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2486) public void savingComplete(SaveResult saveResult) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2487) dismissDialog(SAVING_DIALOG); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2488) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2489) int saveStatus = saveResult.getSaveResult(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2490) switch (saveStatus) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2491) case SaveToDiskTask.SAVED: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2492) Toast.makeText(this, getString(R.string.data_saved_ok), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2493) Toast.LENGTH_SHORT).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2494) sendSavedBroadcast(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2495) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2496) case SaveToDiskTask.SAVED_AND_EXIT: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2497) Toast.makeText(this, getString(R.string.data_saved_ok), ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2498) Toast.LENGTH_SHORT).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2499) sendSavedBroadcast(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2500) finishReturnInstance(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2501) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2502) case SaveToDiskTask.SAVE_ERROR: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2503) String message; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2504) if (saveResult.getSaveErrorMessage() != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2505) message = getString(R.string.data_saved_error) + ": " + saveResult.getSaveErrorMessage(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2506) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2507) message = getString(R.string.data_saved_error); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2508) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2509) Toast.makeText(this, message, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2510) Toast.LENGTH_LONG).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2511) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2512) case FormEntryController.ANSWER_CONSTRAINT_VIOLATED: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2513) case FormEntryController.ANSWER_REQUIRED_BUT_EMPTY: ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2514) refreshCurrentView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2515) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2516) // get constraint behavior preference value with appropriate default ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2517) String constraint_behavior = PreferenceManager.getDefaultSharedPreferences(this) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2518) .getString(PreferencesActivity.KEY_CONSTRAINT_BEHAVIOR, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2519) PreferencesActivity.CONSTRAINT_BEHAVIOR_DEFAULT); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2520) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2521) // an answer constraint was violated, so we need to display the proper toast(s) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2522) // if constraint behavior is on_swipe, this will happen if we do a 'swipe' to the next question ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2523) if (constraint_behavior.equals(PreferencesActivity.CONSTRAINT_BEHAVIOR_ON_SWIPE)) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2524) next(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2525) // otherwise, we can get the proper toast(s) by saving with constraint check ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2526) else ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2527) saveAnswersForCurrentScreen(EVALUATE_CONSTRAINTS); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2528) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2529) break; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2530) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2531) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2532) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2533) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2534) public void onProgressStep(String stepMessage) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2535) this.stepMessage = stepMessage; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2536) if (mProgressDialog != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2537) mProgressDialog.setMessage(getString(R.string.please_wait) + "\n\n" + stepMessage); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2538) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2539) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2540) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2541) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2542) * Attempts to save an answer to the specified index. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2543) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2544) * @param answer ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2545) * @param index ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2546) * @param evaluateConstraints ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2547) * @return status as determined in FormEntryController ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2548) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2549) public int saveAnswer(IAnswerData answer, FormIndex index, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2550) boolean evaluateConstraints) throws JavaRosaException { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2551) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2552) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2553) if (evaluateConstraints) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2554) return formController.answerQuestion(index, answer); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2555) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2556) formController.saveAnswer(index, answer); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2557) return FormEntryController.ANSWER_OK; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2558) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2559) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2560) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2561) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2562) * Checks the database to determine if the current instance being edited has ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2563) * already been 'marked completed'. A form can be 'unmarked' complete and ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2564) * then resaved. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2565) * ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2566) * @return true if form has been marked completed, false otherwise. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2567) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2568) private boolean isInstanceComplete(boolean end) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2569) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2570) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2571) // default to false if we're mid form ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2572) boolean complete = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2573) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2574) // if we're at the end of the form, then check the preferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2575) if (end) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2576) // First get the value from the preferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2577) SharedPreferences sharedPreferences = PreferenceManager ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2578) .getDefaultSharedPreferences(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2579) complete = sharedPreferences.getBoolean( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2580) PreferencesActivity.KEY_COMPLETED_DEFAULT, true); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2581) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2582) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2583) // Then see if we've already marked this form as complete before ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2584) String selection = InstanceColumns.INSTANCE_FILE_PATH + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2585) String[] selectionArgs = { formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2586) .getAbsolutePath() }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2587) Cursor c = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2588) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2589) c = getContentResolver().query(InstanceColumns.CONTENT_URI, null, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2590) selection, selectionArgs, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2591) if (c != null && c.getCount() > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2592) c.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2593) String status = c.getString(c ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2594) .getColumnIndex(InstanceColumns.STATUS)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2595) if (InstanceProviderAPI.STATUS_COMPLETE.compareTo(status) == 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2596) complete = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2597) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2598) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2599) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2600) if (c != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2601) c.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2602) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2603) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2604) return complete; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2605) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2606) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2607) public void next() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2608) if (!mBeenSwiped) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2609) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2610) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2611) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2612) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2613) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2614) /** ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2615) * Returns the instance that was just filled out to the calling activity, if ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2616) * requested. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2617) */ ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2618) private void finishReturnInstance() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2619) FormController formController = Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2620) .getFormController(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2621) String action = getIntent().getAction(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2622) if (Intent.ACTION_PICK.equals(action) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2623) || Intent.ACTION_EDIT.equals(action)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2624) // caller is waiting on a picked form ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2625) String selection = InstanceColumns.INSTANCE_FILE_PATH + "=?"; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2626) String[] selectionArgs = { formController.getInstancePath() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2627) .getAbsolutePath() }; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2628) Cursor c = null; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2629) try { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2630) c = getContentResolver().query(InstanceColumns.CONTENT_URI, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2631) null, selection, selectionArgs, null); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2632) if (c.getCount() > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2633) // should only be one... ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2634) c.moveToFirst(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2635) String id = c.getString(c ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2636) .getColumnIndex(InstanceColumns._ID)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2637) Uri instance = Uri.withAppendedPath( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2638) InstanceColumns.CONTENT_URI, id); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2639) setResult(RESULT_OK, new Intent().setData(instance)); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2640) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2641) } finally { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2642) if (c != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2643) c.close(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2644) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2645) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2646) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2647) finish(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2648) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2649) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2650) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2651) public boolean onDown(MotionEvent e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2652) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2653) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2654) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2655) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2656) public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2657) float velocityY) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2658) // only check the swipe if it's enabled in preferences ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2659) SharedPreferences sharedPreferences = PreferenceManager ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2660) .getDefaultSharedPreferences(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2661) String navigation = sharedPreferences.getString( ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2662) PreferencesActivity.KEY_NAVIGATION, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2663) PreferencesActivity.NAVIGATION_SWIPE); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2664) Boolean doSwipe = false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2665) if (navigation.contains(PreferencesActivity.NAVIGATION_SWIPE)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2666) doSwipe = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2667) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2668) if (doSwipe) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2669) // Looks for user swipes. If the user has swiped, move to the ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2670) // appropriate screen. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2671) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2672) // for all screens a swipe is left/right of at least ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2673) // .25" and up/down of less than .25" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2674) // OR left/right of > .5" ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2675) DisplayMetrics dm = new DisplayMetrics(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2676) getWindowManager().getDefaultDisplay().getMetrics(dm); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2677) int xPixelLimit = (int) (dm.xdpi * .25); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2678) int yPixelLimit = (int) (dm.ydpi * .25); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2679) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2680) if (mCurrentView instanceof ODKView) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2681) if (((ODKView) mCurrentView).suppressFlingGesture(e1, e2, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2682) velocityX, velocityY)) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2683) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2684) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2685) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2686) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2687) if (mBeenSwiped) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2688) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2689) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2690) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2691) if ((Math.abs(e1.getX() - e2.getX()) > xPixelLimit && Math.abs(e1 ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2692) .getY() - e2.getY()) < yPixelLimit) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2693) || Math.abs(e1.getX() - e2.getX()) > xPixelLimit * 2) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2694) mBeenSwiped = true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2695) if (velocityX > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2696) if (e1.getX() > e2.getX()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2697) Log.e(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2698) "showNextView VelocityX is bogus! " + e1.getX() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2699) + " > " + e2.getX()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2700) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2701) .logInstanceAction(this, "onFling", "showNext"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2702) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2703) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2704) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2705) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2706) .logInstanceAction(this, "onFling", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2707) "showPrevious"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2708) showPreviousView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2709) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2710) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2711) if (e1.getX() < e2.getX()) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2712) Log.e(t, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2713) "showPreviousView VelocityX is bogus! " ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2714) + e1.getX() + " < " + e2.getX()); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2715) Collect.getInstance() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2716) .getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2717) .logInstanceAction(this, "onFling", ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2718) "showPrevious"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2719) showPreviousView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2720) } else { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2721) Collect.getInstance().getActivityLogger() ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2722) .logInstanceAction(this, "onFling", "showNext"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2723) showNextView(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2724) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2725) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2726) return true; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2727) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2728) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2729) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2730) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2731) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2732) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2733) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2734) public void onLongPress(MotionEvent e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2735) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2736) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2737) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2738) public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2739) float distanceY) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2740) // The onFling() captures the 'up' event so our view thinks it gets long ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2741) // pressed. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2742) // We don't wnat that, so cancel it. ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2743) if (mCurrentView != null) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2744) mCurrentView.cancelLongPress(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2745) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2746) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2747) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2748) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2749) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2750) public void onShowPress(MotionEvent e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2751) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2752) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2753) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2754) public boolean onSingleTapUp(MotionEvent e) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2755) return false; ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2756) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2757) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2758) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2759) public void advance() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2760) next(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2761) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2762) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2763) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2764) protected void onStart() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2765) super.onStart(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2766) Collect.getInstance().getActivityLogger().logOnStart(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2767) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2768) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2769) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2770) protected void onStop() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2771) Collect.getInstance().getActivityLogger().logOnStop(this); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2772) super.onStop(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2773) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2774) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2775) private void sendSavedBroadcast() { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2776) Intent i = new Intent(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2777) i.setAction("org.odk.collect.android.FormSaved"); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2778) this.sendBroadcast(i); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2779) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2780) ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2781) @Override ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2782) public void onSavePointError(String errorMessage) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2783) if (errorMessage != null && errorMessage.trim().length() > 0) { ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2784) Toast.makeText(this, getString(R.string.save_point_error, errorMessage), Toast.LENGTH_LONG).show(); ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2785) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2786) } ^db28500 src/org/odk/collect/android/activities/FormEntryActivity.java (Meletis Margaritis 2015-01-07 13:55:25 +0200 2787) }