diff --git a/.gradle/8.2/checksums/checksums.lock b/.gradle/8.2/checksums/checksums.lock index 284d256..4a246f4 100644 Binary files a/.gradle/8.2/checksums/checksums.lock and b/.gradle/8.2/checksums/checksums.lock differ diff --git a/.gradle/8.2/checksums/md5-checksums.bin b/.gradle/8.2/checksums/md5-checksums.bin index 5ca34ee..4c5c8cb 100644 Binary files a/.gradle/8.2/checksums/md5-checksums.bin and b/.gradle/8.2/checksums/md5-checksums.bin differ diff --git a/.gradle/8.2/checksums/sha1-checksums.bin b/.gradle/8.2/checksums/sha1-checksums.bin index 2c02e3f..e1f4a78 100644 Binary files a/.gradle/8.2/checksums/sha1-checksums.bin and b/.gradle/8.2/checksums/sha1-checksums.bin differ diff --git a/.gradle/8.2/executionHistory/executionHistory.bin b/.gradle/8.2/executionHistory/executionHistory.bin index 19b4cdb..7af2412 100644 Binary files a/.gradle/8.2/executionHistory/executionHistory.bin and b/.gradle/8.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.2/executionHistory/executionHistory.lock b/.gradle/8.2/executionHistory/executionHistory.lock index 456d0ce..bd9fed9 100644 Binary files a/.gradle/8.2/executionHistory/executionHistory.lock and b/.gradle/8.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.2/fileHashes/fileHashes.bin b/.gradle/8.2/fileHashes/fileHashes.bin index 19c7f91..e843cdf 100644 Binary files a/.gradle/8.2/fileHashes/fileHashes.bin and b/.gradle/8.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.2/fileHashes/fileHashes.lock b/.gradle/8.2/fileHashes/fileHashes.lock index da056ff..10336c1 100644 Binary files a/.gradle/8.2/fileHashes/fileHashes.lock and b/.gradle/8.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.2/fileHashes/resourceHashesCache.bin b/.gradle/8.2/fileHashes/resourceHashesCache.bin index fd086b2..ad3c434 100644 Binary files a/.gradle/8.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index fa1403c..df039ce 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties index f80f085..931196a 100644 --- a/.gradle/buildOutputCleanup/cache.properties +++ b/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Jan 30 17:45:40 CET 2024 +#Tue Jul 16 14:29:56 CEST 2024 gradle.version=8.2 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index b7e8fde..8bf9b1e 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/config.properties b/.gradle/config.properties index 107e404..8bdd50e 100644 --- a/.gradle/config.properties +++ b/.gradle/config.properties @@ -1,2 +1,2 @@ -#Tue Jan 30 17:44:56 CET 2024 +#Thu Aug 29 09:52:32 CEST 2024 java.home=C\:\\Users\\benek\\Desktop\\Android\\Android Studio\\jbr diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index b716029..9f7fae1 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/app/build.gradle b/app/build.gradle index 59265a4..85b7588 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ dependencies { implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7' implementation 'androidx.navigation:navigation-ui-ktx:2.7.7' implementation 'androidx.lifecycle:lifecycle-process:2.7.0' + implementation 'androidx.recyclerview:recyclerview:1.3.2' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' @@ -93,7 +94,7 @@ dependencies { //it.jsoup implementation "org.jsoup:jsoup:1.14.3" - //GPT - implementation "com.aallam.openai:openai-client:3.7.2" - implementation "io.ktor:ktor-client-android:2.2.4" + //viewpager + implementation 'androidx.viewpager2:viewpager2:1.1.0' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7c0efa5..e269454 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,16 +1,20 @@ + - - - + + + + + + - - - - - + + + + + + + + - + \ No newline at end of file diff --git a/app/src/main/java/com/nlinterface/activities/BarcodeSettingsActivity.kt b/app/src/main/java/com/nlinterface/activities/BarcodeSettingsActivity.kt index 5e97352..1575e5c 100644 --- a/app/src/main/java/com/nlinterface/activities/BarcodeSettingsActivity.kt +++ b/app/src/main/java/com/nlinterface/activities/BarcodeSettingsActivity.kt @@ -3,38 +3,41 @@ package com.nlinterface.activities import android.content.Context import android.content.Intent import android.os.Bundle -import android.view.View import android.widget.Button -import android.widget.ImageButton import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 import com.nlinterface.R +import com.nlinterface.adapters.BarcodeSettingsFragmentAdapter import com.nlinterface.databinding.ActivityBarcodeSettingsBinding +import com.nlinterface.fragments.BarcodeScannerScreen +import com.nlinterface.fragments.BarcodeSettingsScreen1 +import com.nlinterface.fragments.BarcodeSettingsScreen2 +import com.nlinterface.fragments.BarcodeSettingsScreen3 import com.nlinterface.utility.ActivityType import com.nlinterface.utility.GlobalParameters -import com.nlinterface.utility.STTInputType +import com.nlinterface.utility.OnSwipeTouchInterceptor +import com.nlinterface.utility.SwipeAction import com.nlinterface.utility.navToActivity -import com.nlinterface.utility.setViewRelativeSize import com.nlinterface.viewmodels.BarcodeSettingsViewModel /** - * The SettingsActivity handles user interaction in Settings Menu. + * The BarcodeSettingsActivity handles user interaction in Barcode Settings Menu. * - * The Settings Menu comprises the Voice Activation Buttons and a button for each settings - * functionality. Each click on a settings button will cycle through the available settings, - * narrating each action. The settings are applied once the MainActivity is selected. Current - * setting options are: + * The Barcode Settings Menu comprises of several screens of which each displays two + * possible settings. Those settings set what information about the scanned product are retrieved + * and given to the user. + * Scrolling left an right navigates trough the different screens. A swipe up and down + * activates/deactivates the specific information retrieval. * - * 1- Screen Always On/Dim Screen after some time - * 2- Device Theme/Dark Theme/Light Theme - * - * Possible Voice Commands: - * - 'Read Screen Settings' - * - 'Read Theme Settings' - * - 'Set Screen Settings' --> Always On or Dim? --> X - * - 'Set Theme Settings' --> Default, Light or Dark? --> X + * 1- Name and Volume on/off + * 2- Labels on/off + * 3- Country of Origin on/off + * 4- Ingredients and Allergies on/off + * 5- Compromised nutritional values on/off * * TODO: Add TTS Speed Settings */ @@ -59,16 +62,17 @@ class BarcodeSettingsActivity : AppCompatActivity() { private lateinit var shortNutritionalValuesOptions: MutableList private lateinit var shortNutritionalValuesButton: Button - private lateinit var voiceActivationButton: ImageButton - private lateinit var lastCommand: String private val globalParameters = GlobalParameters.instance!! + private lateinit var viewPager: ViewPager2 + lateinit var fragmentAdapter: BarcodeSettingsFragmentAdapter + /** * The onCreate Function initializes the view by binding the Activity and the Layout, - * retrieving the ViewModel, loading the options for each preference type, configuring the UI - * and configuring the TTS/STT systems. + * retrieving the ViewModel, loading the options for each preference type, configuring the + * viewpager and configuring the TTS/STT systems. */ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -103,134 +107,16 @@ class BarcodeSettingsActivity : AppCompatActivity() { shortNutritionalValuesOptions.add(option) } - - configureUI() + viewPagerSetUp() configureTTS() configureSTT() } /** - * Sets up all UI elements, i.e. the voiceActivation/theme/keepScreenOn buttons and their - * respective onClickListeners - */ - private fun configureUI() { - - voiceActivationButton = findViewById(R.id.voice_activation_bt) as ImageButton - voiceActivationButton.setOnClickListener { onVoiceActivationButtonClick() } - - setViewRelativeSize(voiceActivationButton, 1.0, 0.33) - - nameAndVolumeButton = findViewById