Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d0e5709
Move geopoly UI code to Fragment
seadowg Dec 2, 2025
9fa9189
Remove unused title from geotrace view
seadowg Dec 2, 2025
9a0f518
Extract super class for widget answer dialogs
seadowg Dec 3, 2025
ac334ab
Move WidgetAnswerDialogFragment to its own file
seadowg Dec 3, 2025
724ebcd
Fix references in tests
seadowg Dec 3, 2025
bac1082
Convert intent to constructor params
seadowg Dec 4, 2025
c0f12a1
Add GeoPolyDialogFragment that handles read only and output mode
seadowg Dec 4, 2025
fffe330
Generalize test helper
seadowg Dec 5, 2025
c2c1dfb
Add allow-mock-accuracy support to GeoPolyDialogFragment
seadowg Dec 8, 2025
969e160
Add existing answer support to GeoPolyDialogFragment
seadowg Dec 8, 2025
1af0f0a
Fix OutputMode matching
seadowg Dec 8, 2025
eb56037
Add result handling to GeoPolyDialogFragment
seadowg Dec 8, 2025
10b47a4
Spike out using Fragment instead of Activity for geotrace
seadowg Dec 8, 2025
f55d1d9
Fix tests
seadowg Dec 9, 2025
a9a183b
Remove external Activity integration points for geotrace
seadowg Dec 9, 2025
1f1e00b
Rework requestGeoTrace to work for both geopoly types
seadowg Dec 9, 2025
96a9bcc
Use dialog for geoshape as well
seadowg Dec 9, 2025
dddfb56
Remove external Activity integration points for geoshape
seadowg Dec 9, 2025
9314603
Remove GeoPolyActivity
seadowg Dec 9, 2025
f240b47
Fix Fragment recreation bug
seadowg Dec 9, 2025
2a59105
Pull out MockFragmentFactory
seadowg Dec 9, 2025
88c3947
Add assertDisabled
seadowg Dec 11, 2025
e2ad4de
Make language for constants consistent
seadowg Dec 11, 2025
37f8a7a
Correct typo
seadowg Dec 11, 2025
ecfbed3
Move helper to test helpers
seadowg Dec 11, 2025
98cc919
Simplify inputPolygon
seadowg Dec 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Spike out using Fragment instead of Activity for geotrace
  • Loading branch information
seadowg committed Dec 9, 2025
commit 10b47a496a69562e42cca221a5d7a6bd0c2a7636
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
import org.odk.collect.android.widgets.range.RangePickerIntegerWidget;
import org.odk.collect.android.widgets.utilities.ExternalAppRecordingRequester;
import org.odk.collect.android.widgets.utilities.FormControllerWaitingForDataRegistry;
import org.odk.collect.android.widgets.utilities.GeoPolyDialogFragment;
import org.odk.collect.android.widgets.utilities.InternalRecordingRequester;
import org.odk.collect.android.widgets.utilities.WaitingForDataRegistry;
import org.odk.collect.androidshared.system.IntentLauncher;
Expand Down Expand Up @@ -438,6 +439,7 @@ public void onCreate(Bundle savedInstanceState) {
.forClass(DeleteRepeatDialogFragment.class, () -> new DeleteRepeatDialogFragment(viewModelFactory))
.forClass(BackgroundAudioPermissionDialogFragment.class, () -> new BackgroundAudioPermissionDialogFragment(viewModelFactory))
.forClass(SelectOneFromMapDialogFragment.class, () -> new SelectOneFromMapDialogFragment(viewModelFactory))
.forClass(GeoPolyDialogFragment.class, () -> new GeoPolyDialogFragment(viewModelFactory))
.build());

getSupportFragmentManager().setFragmentResultListener(REQUEST_DELETE_REPEAT, this, (requestKey, result) -> deleteGroup());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.LifecycleOwner;

import org.javarosa.core.model.Constants;
Expand Down Expand Up @@ -145,7 +146,7 @@ public class ODKView extends SwipeHandler.View implements OnLongClickListener, W
* @param advancingPage whether this view is being created after a forward swipe through the
*/
public ODKView(
ComponentActivity context,
FragmentActivity context,
final FormEntryPrompt[] questionPrompts,
FormEntryCaption[] groups,
boolean advancingPage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
import static org.odk.collect.android.utilities.Appearances.PLACEMENT_MAP;
import static org.odk.collect.android.utilities.Appearances.hasAppearance;

import android.app.Activity;
import android.content.Context;
import android.hardware.SensorManager;

import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.LifecycleOwner;

import org.javarosa.core.model.Constants;
Expand Down Expand Up @@ -54,9 +54,6 @@
import org.odk.collect.android.widgets.range.RangePickerDecimalWidget;
import org.odk.collect.android.widgets.range.RangePickerIntegerWidget;
import org.odk.collect.android.widgets.utilities.ActivityGeoDataRequester;
import org.odk.collect.android.widgets.video.ExVideoWidget;
import org.odk.collect.android.widgets.video.VideoWidget;
import org.odk.collect.audioclips.AudioPlayer;
import org.odk.collect.android.widgets.utilities.AudioRecorderRecordingStatusHandler;
import org.odk.collect.android.widgets.utilities.DateTimeWidgetUtils;
import org.odk.collect.android.widgets.utilities.FileRequester;
Expand All @@ -66,8 +63,11 @@
import org.odk.collect.android.widgets.utilities.RecordingRequesterProvider;
import org.odk.collect.android.widgets.utilities.StringRequester;
import org.odk.collect.android.widgets.utilities.WaitingForDataRegistry;
import org.odk.collect.android.widgets.video.ExVideoWidget;
import org.odk.collect.android.widgets.video.VideoWidget;
import org.odk.collect.androidshared.system.CameraUtils;
import org.odk.collect.androidshared.system.IntentLauncherImpl;
import org.odk.collect.audioclips.AudioPlayer;
import org.odk.collect.audiorecorder.recording.AudioRecorder;
import org.odk.collect.permissions.PermissionsProvider;
import org.odk.collect.settings.SettingsProvider;
Expand All @@ -82,7 +82,7 @@ public class WidgetFactory {

private static final String PICKER_APPEARANCE = "picker";

private final Activity activity;
private final FragmentActivity activity;
private final boolean useExternalRecorder;
private final WaitingForDataRegistry waitingForDataRegistry;
private final QuestionMediaManager questionMediaManager;
Expand All @@ -97,7 +97,7 @@ public class WidgetFactory {
private final FormController formController;
private final SettingsProvider settingsProvider;

public WidgetFactory(Activity activity,
public WidgetFactory(FragmentActivity activity,
boolean useExternalRecorder,
WaitingForDataRegistry waitingForDataRegistry,
QuestionMediaManager questionMediaManager,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package org.odk.collect.android.widgets.utilities

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.core.os.bundleOf
import androidx.fragment.app.FragmentActivity
import org.javarosa.form.api.FormEntryPrompt
import org.odk.collect.android.utilities.Appearances
import org.odk.collect.android.utilities.ApplicationConstants
import org.odk.collect.android.utilities.FormEntryPromptUtils
import org.odk.collect.android.widgets.interfaces.GeoDataRequester
import org.odk.collect.androidshared.ui.DialogFragmentUtils
import org.odk.collect.geo.Constants.EXTRA_DRAGGABLE_ONLY
import org.odk.collect.geo.Constants.EXTRA_READ_ONLY
import org.odk.collect.geo.Constants.EXTRA_RETAIN_MOCK_ACCURACY
Expand All @@ -22,7 +24,7 @@ import java.lang.Boolean.parseBoolean

class ActivityGeoDataRequester(
private val permissionsProvider: PermissionsProvider,
private val activity: Activity
private val activity: FragmentActivity
) : GeoDataRequester {

override fun requestGeoPoint(
Expand Down Expand Up @@ -127,24 +129,10 @@ class ActivityGeoDataRequester(
activity,
object : PermissionListener {
override fun granted() {
waitingForDataRegistry.waitForData(prompt.index)

val intent = Intent(activity, GeoPolyActivity::class.java).also {
it.putExtra(
GeoPolyActivity.EXTRA_POLYGON,
ArrayList(parseGeometry(answerText))
)
it.putExtra(
GeoPolyActivity.OUTPUT_MODE_KEY,
GeoPolyFragment.OutputMode.GEOTRACE
)
it.putExtra(EXTRA_READ_ONLY, prompt.isReadOnly)
it.putExtra(EXTRA_RETAIN_MOCK_ACCURACY, getAllowMockAccuracy(prompt))
}

activity.startActivityForResult(
intent,
ApplicationConstants.RequestCodes.GEOTRACE_CAPTURE
DialogFragmentUtils.showIfNotShowing(
GeoPolyDialogFragment::class.java,
bundleOf(WidgetAnswerDialogFragment.ARG_FORM_INDEX to prompt.index),
activity.supportFragmentManager
)
}
}
Expand Down