Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Rename module
  • Loading branch information
grzesiek2010 committed Feb 26, 2026
commit 3d5626cfd9f70506aef6ca6efe4fbe9c217f8c62
2 changes: 1 addition & 1 deletion collect_app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ dependencies {
implementation project(':db')
implementation project(':open-rosa')
implementation project(':mobile-device-management')
implementation project(':experimental')
implementation project(':timedgrid')

if (getSecrets().getProperty('MAPBOX_DOWNLOADS_TOKEN', '') != '') {
implementation project(':mapbox')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package org.odk.collect.android.feature.experimental.timedgrid

import android.os.Handler
import android.os.Looper
import org.odk.collect.experimental.timedgrid.Timer
import org.odk.collect.timedgrid.Timer

class FakeTimer : Timer {
private val handler = Handler(Looper.getMainLooper())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ import java.util.function.Consumer

object TimedGridHelpers {
fun FormEntryPage.clickStartTestButton(): FormEntryPage {
onView(withId(org.odk.collect.experimental.R.id.button_start)).perform(scrollTo(), click())
onView(withId(org.odk.collect.timedgrid.R.id.button_start)).perform(scrollTo(), click())
return this
}

fun FormEntryPage.clickPauseTestButton(): FormEntryPage {
onView(withId(org.odk.collect.experimental.R.id.button_timer)).perform(scrollTo(), click())
onView(withId(org.odk.collect.timedgrid.R.id.button_timer)).perform(scrollTo(), click())
return this
}

Expand All @@ -43,11 +43,11 @@ object TimedGridHelpers {
while (!found) {
try {
// Try to click Early Finish directly by ID
onView(withId(org.odk.collect.experimental.R.id.button_complete)).perform(scrollTo(), click())
onView(withId(org.odk.collect.timedgrid.R.id.button_complete)).perform(scrollTo(), click())
found = true
} catch (e: Exception) {
// If not clickable yet, go to next page
onView(withId(org.odk.collect.experimental.R.id.button_next)).perform(scrollTo(), click())
onView(withId(org.odk.collect.timedgrid.R.id.button_next)).perform(scrollTo(), click())
}
}
return this
Expand Down Expand Up @@ -106,7 +106,7 @@ object TimedGridHelpers {
}

fun FormEntryPage.clickFinishTestButton(): FormEntryPage {
onView(withId(org.odk.collect.experimental.R.id.button_finish)).perform(scrollTo(), click())
onView(withId(org.odk.collect.timedgrid.R.id.button_finish)).perform(scrollTo(), click())
return this
}

Expand Down Expand Up @@ -179,7 +179,7 @@ object TimedGridHelpers {
}

fun assertVisibleRows(count: Int) {
onView(withId(org.odk.collect.experimental.R.id.container_rows))
onView(withId(org.odk.collect.timedgrid.R.id.container_rows))
.check(assertVisibleChildCount(count))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import org.odk.collect.android.feature.experimental.timedgrid.TimedGridHelpers.c
import org.odk.collect.android.feature.experimental.timedgrid.TimedGridHelpers.selectTestAnswers
import org.odk.collect.android.support.rules.CollectTestRule
import org.odk.collect.android.support.rules.TestRuleChain
import org.odk.collect.experimental.timedgrid.TimerProvider
import org.odk.collect.timedgrid.TimerProvider
import kotlin.math.roundToInt

@RunWith(AndroidJUnit4::class)
Expand Down Expand Up @@ -271,14 +271,14 @@ class TimedGridTest {
.selectTestAnswers(tapped)
.also {
// Capture time before
val timeBeforeText = TimedGridHelpers.getTextFromView(org.odk.collect.experimental.R.id.button_timer)
val timeBeforeText = TimedGridHelpers.getTextFromView(org.odk.collect.timedgrid.R.id.button_timer)
val timeBefore = TimedGridHelpers.extractTimeLeft(timeBeforeText)

it.clickOnId(org.odk.collect.experimental.R.id.button_timer)
it.clickOnId(org.odk.collect.timedgrid.R.id.button_timer)
timer.wait(2)

// Capture time after
val timeAfterText = TimedGridHelpers.getTextFromView(org.odk.collect.experimental.R.id.button_timer)
val timeAfterText = TimedGridHelpers.getTextFromView(org.odk.collect.timedgrid.R.id.button_timer)
val timeAfter = TimedGridHelpers.extractTimeLeft(timeAfterText)

// Assert that the time has decreased
Expand Down Expand Up @@ -545,15 +545,15 @@ class TimedGridTest {
.selectTestAnswers(tapped)
.also {
// Capture timer before rotation
val timeBeforeText = TimedGridHelpers.getTextFromView(org.odk.collect.experimental.R.id.button_timer)
val timeBeforeText = TimedGridHelpers.getTextFromView(org.odk.collect.timedgrid.R.id.button_timer)
val timeBefore = TimedGridHelpers.extractTimeLeft(timeBeforeText)

// Rotate device
it.rotateToLandscape(it)
timer.wait(5)

// Capture timer after rotation
val timeAfterText = TimedGridHelpers.getTextFromView(org.odk.collect.experimental.R.id.button_timer)
val timeAfterText = TimedGridHelpers.getTextFromView(org.odk.collect.timedgrid.R.id.button_timer)
val timeAfter = TimedGridHelpers.extractTimeLeft(timeAfterText)

// Assert timer is still running
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@
import org.odk.collect.androidshared.ui.multiclicksafe.MultiClickSafeMaterialButton;
import org.odk.collect.audioclips.PlaybackFailedException;
import org.odk.collect.audiorecorder.recording.AudioRecorder;
import org.odk.collect.experimental.timedgrid.NavigationAwareWidget;
import org.odk.collect.permissions.PermissionListener;
import org.odk.collect.permissions.PermissionsProvider;
import org.odk.collect.settings.SettingsProvider;
import org.odk.collect.timedgrid.NavigationAwareWidget;

import java.io.File;
import java.io.Serializable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,6 @@ object Appearances {
const val MASKED = "masked"
const val COUNTER = "counter"
const val MULTILINE = "multiline"

// Experimental
const val TIMED_GRID = "timed-grid"

// Get appearance hint and clean it up so it is lower case, without the search function and never null.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ import org.odk.collect.android.activities.FormFillingActivity
import org.odk.collect.android.formentry.FormEntryViewModel
import org.odk.collect.android.formentry.questions.QuestionDetails
import org.odk.collect.android.widgets.items.ItemsWidgetUtils
import org.odk.collect.experimental.timedgrid.FormAnswerRefresher
import org.odk.collect.experimental.timedgrid.FormControllerFacade
import org.odk.collect.experimental.timedgrid.NavigationAwareWidget
import org.odk.collect.experimental.timedgrid.OngoingAssessmentWarningDialogFragment
import org.odk.collect.experimental.timedgrid.TimedGridWidgetDelegate
import org.odk.collect.timedgrid.FormAnswerRefresher
import org.odk.collect.timedgrid.FormControllerFacade
import org.odk.collect.timedgrid.NavigationAwareWidget
import org.odk.collect.timedgrid.OngoingAssessmentWarningDialogFragment
import org.odk.collect.timedgrid.TimedGridWidgetDelegate

@SuppressLint("ViewConstructor")
class TimedGridWidget(
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ include ':web-page'
include ':db'
include ':open-rosa'
include ':mobile-device-management'
include ':experimental'
include ':timedgrid'

apply from: 'secrets.gradle'
if (getSecrets().getProperty('MAPBOX_DOWNLOADS_TOKEN', '') != '') {
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
apply(from = "../config/quality.gradle")

android {
namespace = "org.odk.collect.experimental"
namespace = "org.odk.collect.timedgrid"

compileSdk = libs.versions.compileSdk.get().toInt()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

enum class AssessmentType(
private val rendererFactory: () -> TimedGridRenderer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.odk.collect.experimental.databinding.TimedGridBinding
import org.odk.collect.timedgrid.databinding.TimedGridBinding

/**
* Common renderer for timed grid modes that share the same UI and interaction pattern:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

enum class FinishType(val code: Int) {
/** User confirms and picks last attempted item manually */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import androidx.fragment.app.DialogFragment

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.app.Dialog
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.odk.collect.experimental.R

class OngoingAssessmentWarningDialogFragment : DialogFragment() {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.os.CountDownTimer

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.view.LayoutInflater
import android.view.View
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

// Lifecycle states for the timed grid widget.
enum class TimedGridState {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

data class TimedGridSummary(
val secondsRemaining: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import org.javarosa.core.model.FormIndex
import org.javarosa.core.model.GroupDef
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import androidx.lifecycle.ViewModel
import org.javarosa.core.model.FormIndex
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import androidx.core.text.isDigitsOnly
import org.javarosa.form.api.FormEntryPrompt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.content.Context
import android.view.LayoutInflater
Expand Down Expand Up @@ -79,7 +79,7 @@ class TimedGridWidgetDelegate(
} else if (state == TimedGridState.PAUSED) {
val secondsRemaining = saved.millisRemaining.milliseconds.inWholeSeconds
val timeLeftText = context.getString(
org.odk.collect.experimental.R.string.timed_grid_time_left,
R.string.timed_grid_time_left,
secondsRemaining
)
renderer.updateTimer(timeLeftText)
Expand Down Expand Up @@ -122,7 +122,7 @@ class TimedGridWidgetDelegate(
private fun onTimerTick(millisUntilFinished: Long) {
val secondsRemaining = millisUntilFinished.milliseconds.inWholeSeconds
val timeLeftText = context.getString(
org.odk.collect.experimental.R.string.timed_grid_time_left,
R.string.timed_grid_time_left,
secondsRemaining
)
renderer.updateTimer(timeLeftText)
Expand All @@ -131,7 +131,7 @@ class TimedGridWidgetDelegate(

private fun onTimerFinish() {
val timeLeftText = context.getString(
org.odk.collect.experimental.R.string.timed_grid_time_left,
R.string.timed_grid_time_left,
0
)
renderer.updateTimer(timeLeftText)
Expand Down Expand Up @@ -186,12 +186,12 @@ class TimedGridWidgetDelegate(

private fun showConfirmFinishDialog(onConfirm: () -> Unit) {
MaterialAlertDialogBuilder(context)
.setTitle(org.odk.collect.experimental.R.string.early_finish_title)
.setMessage(org.odk.collect.experimental.R.string.early_finish_message)
.setPositiveButton(org.odk.collect.experimental.R.string.end_test) { _, _ ->
.setTitle(R.string.early_finish_title)
.setMessage(R.string.early_finish_message)
.setPositiveButton(R.string.end_test) { _, _ ->
onConfirm()
}
.setNegativeButton(org.odk.collect.experimental.R.string.continue_test, null)
.setNegativeButton(R.string.continue_test, null)
.show()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

import android.content.res.ColorStateList
import android.graphics.Paint
Expand All @@ -9,9 +9,8 @@ import androidx.core.content.ContextCompat
import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.odk.collect.androidshared.system.ContextUtils.getThemeAttributeValue
import org.odk.collect.experimental.R
import org.odk.collect.experimental.databinding.TimedGridItemButtonBinding
import org.odk.collect.experimental.databinding.TimedGridItemRowBinding
import org.odk.collect.timedgrid.databinding.TimedGridItemButtonBinding
import org.odk.collect.timedgrid.databinding.TimedGridItemRowBinding

data class GridItem(val value: String, val text: String)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.odk.collect.experimental.timedgrid
package org.odk.collect.timedgrid

interface Timer {
fun setUpListeners(
Expand Down