diff --git a/app/build.gradle b/app/build.gradle
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,6 +55,13 @@
dependencies {
//new libraries
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
+ }
+ kotlin {
+ jvmToolchain 17
+ }
}
dependencies {
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt b/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
--- a/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
@@ -1,13 +1,11 @@
package it.reyboz.bustorino
import android.content.Intent
+import android.os.Build
import android.os.Bundle
import android.util.Log
-import android.util.TypedValue
import android.view.View
import android.widget.ImageButton
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
@@ -17,8 +15,9 @@
import com.google.android.material.tabs.TabLayoutMediator
import it.reyboz.bustorino.data.PreferencesHolder
import it.reyboz.bustorino.fragments.IntroFragment
+import it.reyboz.bustorino.middleware.GeneralActivity
-class ActivityIntro : AppCompatActivity(), IntroFragment.IntroListener {
+class ActivityIntro : GeneralActivity(), IntroFragment.IntroListener {
private lateinit var viewPager : ViewPager2
private lateinit var btnForward: ImageButton
@@ -28,7 +27,6 @@
private var restartMain = true
-
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_intro)
@@ -119,7 +117,7 @@
const private val DEBUG_TAG = "BusTO-IntroActivity"
const val RESTART_MAIN = "restartMainActivity"
- const val NUM_ITEMS = 7
+ val NUM_ITEMS = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) 8 else 7
}
override fun closeIntroduction() {
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
@@ -351,6 +351,7 @@
return super.onCreateOptionsMenu(menu);
}
+ //requesting permissions
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt b/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt
@@ -1,7 +1,7 @@
package it.reyboz.bustorino.fragments
import android.content.Context
-import android.graphics.BitmapFactory
+import android.graphics.*
import android.graphics.text.LineBreaker
import android.os.Build
import android.os.Bundle
@@ -9,33 +9,38 @@
import android.view.View
import android.view.ViewGroup
import android.widget.Button
-import android.widget.ImageButton
import android.widget.ImageView
import android.widget.TextView
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.content.ContextCompat
+import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment
import it.reyboz.bustorino.R
import it.reyboz.bustorino.backend.utils
+import it.reyboz.bustorino.util.Permissions
+import it.reyboz.bustorino.util.ViewUtils
import java.lang.IllegalStateException
-// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private const val SCREEN_INDEX = "screenindex"
-/**
- * A simple [Fragment] subclass.
- * Use the [IntroFragment.newInstance] factory method to
- * create an instance of this fragment.
- */
class IntroFragment : Fragment() {
- // TODO: Rename and change types of parameters
private var screenIndex = 1
private lateinit var imageHolder: ImageView
private lateinit var textView: TextView
-
-
private lateinit var listener: IntroListener
+ private lateinit var interactButton: Button
+
+ private val locationRequestResLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()){ res ->
+ //onActivityResult(res: map)
+ if(res.get(Permissions.LOCATION_PERMISSIONS[0])==true || res.get(Permissions.LOCATION_PERMISSIONS[1])==true)
+ setInteractButtonState(ButtonState.LOCATION,false)
+ }
+ private val notificationsReqLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) {
+ if (it) setInteractButtonState(ButtonState.NOTIFICATIONS, false)
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
@@ -57,9 +62,10 @@
): View? {
// Inflate the layout for this fragment
val root= inflater.inflate(R.layout.fragment_intro, container, false)
+
imageHolder = root.findViewById(R.id.image_tutorial)
textView = root.findViewById(R.id.tutorialTextView)
-
+ interactButton = root.findViewById(R.id.permissionButton)
when(screenIndex){
0 -> {
@@ -81,7 +87,15 @@
}
4 ->{
setImageBitmap(imageHolder, R.drawable.tuto_map)
+ val permGranted = (Permissions.anyLocationPermissionsGranted(requireContext()))
+ setInteractButtonState(ButtonState.LOCATION, !permGranted)
textView.text = utils.convertHtml(getString(R.string.tutorial_map))
+ interactButton.setOnClickListener {
+ //ask location permission
+ locationRequestResLauncher.launch(Permissions.LOCATION_PERMISSIONS)
+ }
+ interactButton.visibility = View.VISIBLE
+
}
5 ->{
setImageBitmap(imageHolder, R.drawable.tuto_line_det)
@@ -91,9 +105,37 @@
setImageBitmap(imageHolder,R.drawable.tuto_menu)
setTextHtmlDescription(R.string.tutorial_menu)
//this is the cheapest trick ever lol
- val closeButton = root.findViewById
+
+ Notifications permission to show the information about background processing.
+ Press the button below to grant it]]>
+
+ Grant location permission
+ Location permission granted
+
OK, close the tutorial
+ Close the tutorial
+ Enable notifications
+ Notifications enabled
+