diff --git a/mobile/.idea/.name b/mobile/.idea/.name index 8f0d358..99e1610 100644 --- a/mobile/.idea/.name +++ b/mobile/.idea/.name @@ -1 +1 @@ -Solen \ No newline at end of file +Solon \ No newline at end of file diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index 3e4e713..0af183c 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -43,8 +43,8 @@ dependencies { implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0") - implementation("androidx.navigation:navigation-fragment-ktx:2.7.6") - implementation("androidx.navigation:navigation-ui-ktx:2.7.6") + implementation("androidx.navigation:navigation-fragment-ktx:2.7.7") + implementation("androidx.navigation:navigation-ui-ktx:2.7.7") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0") implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("androidx.viewpager2:viewpager2:1.0.0") diff --git a/mobile/app/src/main/AndroidManifest.xml b/mobile/app/src/main/AndroidManifest.xml index 1881874..d66fbed 100644 --- a/mobile/app/src/main/AndroidManifest.xml +++ b/mobile/app/src/main/AndroidManifest.xml @@ -21,7 +21,8 @@ + android:theme="@style/Theme.Solen" + android:windowSoftInputMode="adjustResize"> diff --git a/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt b/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt index 4d538c3..1e4b3ed 100644 --- a/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt @@ -24,8 +24,8 @@ import kotlin.math.abs class AboutFragment : DialogFragment() { private lateinit var gestureDetector: GestureDetector private var initialTouchY: Float = 0f - private val SWIPETHRESHOLD = 100 - private val SWIPEVELOCITYTHRESHOLD = 100 + private val swipeThreshold = 100 + private val swipeVelocityThreshold = 100 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -43,6 +43,7 @@ class AboutFragment : DialogFragment() { // Attach the gesture detector to the root layout view.setOnTouchListener { _, event -> + view.performClick() handleTouchEvent(event) } @@ -59,7 +60,7 @@ class AboutFragment : DialogFragment() { underlinedText2.setSpan(UnderlineSpan(), 1, srcLink.text.length, 0) srcLink.text = underlinedText2 - makeTextViewClickable(srcLink, "https://gitlab.com/Odweta/solen") + makeTextViewClickable(srcLink, "https://gitlab.com/Odweta/solon") return view } @@ -108,7 +109,7 @@ class AboutFragment : DialogFragment() { velocityY: Float ): Boolean { val diffY = e1?.let { e2.y.minus(it.y) } ?: 0f - if (diffY > SWIPETHRESHOLD && abs(velocityY) > SWIPEVELOCITYTHRESHOLD) { + if (diffY > swipeThreshold && abs(velocityY) > swipeVelocityThreshold) { // Swiped down dismiss() return true @@ -117,6 +118,7 @@ class AboutFragment : DialogFragment() { } } + @Suppress("SameReturnValue", "SameReturnValue", "SameReturnValue") private fun handleTouchEvent(event: MotionEvent): Boolean { when (event.action) { MotionEvent.ACTION_DOWN -> { diff --git a/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt index 55a322c..28d0e3e 100644 --- a/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt @@ -7,6 +7,7 @@ import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.os.Handler import android.os.Looper +import android.util.Log import android.view.Gravity import android.view.LayoutInflater import android.view.View @@ -41,7 +42,7 @@ class CalWeekFragment : Fragment() { val adapter = DayPagerAdapter(childFragmentManager, viewLifecycleOwner.lifecycle) for (i in 0 until Vars.days.size) { - adapter.addFragment(DayFragment(i, view)) + adapter.addFragment(DayFragment(i)) } viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { @@ -55,8 +56,6 @@ class CalWeekFragment : Fragment() { viewPager.offscreenPageLimit = adapter.itemCount viewPager.currentItem = Vars.selectedDay - view.tag = "timetable_root" - return view } } @@ -79,7 +78,7 @@ class DayPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) : } } -class DayFragment(private val position: Int, private val rootView: View) : Fragment(R.layout.fragment_day) { +class DayFragment(private val i: Int) : Fragment() { private val handler = Handler(Looper.getMainLooper()) @SuppressLint("ClickableViewAccessibility") @@ -89,11 +88,9 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_day, container, false) - view.tag = "day_${position}_root" val dayLayout: LinearLayout = view.findViewById(R.id.layoutDayMain) - dayLayout.tag = "day_${position}_layout" - Vars.dayMap[position]?.let { createDayView(it, dayLayout, resources) } + Vars.dayMap[i]?.let { createDayView(it, dayLayout, resources) } return view } @@ -109,11 +106,11 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm override fun run() { subjectDrawable.setStroke(0, 0) - var now = LocalTime.now() - var nowD = LocalDate.now().dayOfMonth - var nowH = now.hour - var nowM = now.minute - var nowT = LocalTime.of(nowH, nowM) + val now = LocalTime.now() + val nowD = LocalDate.now().dayOfMonth + val nowH = now.hour + val nowM = now.minute + val nowT = LocalTime.of(nowH, nowM) lateinit var subjST: LocalTime lateinit var subjET: LocalTime @@ -223,7 +220,8 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm } } - rootView.postInvalidate() + requireView().postInvalidate() + // repeat every 40 seconds handler.postDelayed(this, 40000L) } }, 0L) @@ -245,7 +243,7 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm dayLayout.orientation = LinearLayout.VERTICAL val nameDateTextView = TextView(requireContext()) - nameDateTextView.text = "${day.name} ${day.date}" + nameDateTextView.text = String.format("%s %s", day.name, day.date) nameDateTextView.setTypeface(customFont, Typeface.BOLD_ITALIC) nameDateTextView.textSize = 27f nameDateTextView.setTextColor( @@ -254,7 +252,7 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm R.color.white ) ) - nameDateTextView.setPadding(10, 40, 10, 40) + nameDateTextView.setPadding(10, 0, 10, 40) nameDateTextView.gravity = Gravity.CENTER_HORIZONTAL rootLayout.addView(nameDateTextView) @@ -269,8 +267,6 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm prevSubj.end = "" prevSubj.free = false - var firstDone = false - for ((i, subj) in day.subjects.withIndex()) { val subjectBackground = when (subj.substitute) { "0" -> if (subj.place != "Volno") { @@ -329,8 +325,6 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm subjectLayout.orientation = LinearLayout.HORIZONTAL subjectLayout.gravity = Gravity.CENTER_VERTICAL subjectLayout.background = subjectDrawable - // set the tag for later use (used as an id) - subjectLayout.tag = subj.number val subjectNumberDrawable = GradientDrawable() subjectNumberDrawable.shape = GradientDrawable.RECTANGLE @@ -341,13 +335,6 @@ class DayFragment(private val position: Int, private val rootView: View) : Fragm subjectBackground ) ) - /*subjectNumberDrawable.setStroke( - 10, - ContextCompat.getColor( - requireContext(), - subjectStroke - ) - )*/ val subjectNumberTextView = TextView(requireContext()) subjectNumberTextView.typeface = customFont diff --git a/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt b/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt index 4018c35..4c2d365 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt @@ -1,10 +1,16 @@ package com.odweta.solon +import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Context +import android.content.res.Resources +import android.util.Log import android.view.LayoutInflater +import androidx.core.content.ContextCompat +import androidx.core.content.res.ResourcesCompat class Dialogs { + @SuppressLint("InflateParams") class LanguageChange(context: Context) : AlertDialog(context) { init { // Initialize your dialog properties @@ -12,6 +18,7 @@ class Dialogs { setCancelable(true) // Inflate the layout for the dialog val view = LayoutInflater.from(context).inflate(R.layout.radio_group_language, null) + window?.setBackgroundDrawableResource(R.drawable.alert_dialog_background) setView(view) // Set positive button (e.g., "OK" button) @@ -20,7 +27,6 @@ class Dialogs { "OK" ) { _, _ -> // functionality here - dismiss() } @@ -32,5 +38,15 @@ class Dialogs { dismiss() } } + + override fun onStart() { + super.onStart() + + val okButton = getButton(BUTTON_POSITIVE) + okButton?.setTextColor(ContextCompat.getColor(context, R.color.white)) + val cancelButton = getButton(BUTTON_NEGATIVE) + Log.d("debug", "$okButton $cancelButton") + cancelButton?.setTextColor(ContextCompat.getColor(context, R.color.white)) + } } } \ No newline at end of file diff --git a/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt index 6560d37..4a8f143 100644 --- a/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt +++ b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt @@ -2,7 +2,6 @@ package com.odweta.solon import android.app.Dialog import android.content.Context -import android.content.Intent import android.os.Bundle import android.view.View import android.widget.Button @@ -43,21 +42,6 @@ class MainActivity : AppCompatActivity(), MainActivityListener { fun callLaunchPhase1() { intfc?.launchPhase1() } - - fun quit(context: Context) { - // Create an Intent to launch the home screen - val homeIntent = Intent(Intent.ACTION_MAIN) - homeIntent.addCategory(Intent.CATEGORY_HOME) - homeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - - // Start the home screen activity - context.startActivity(homeIntent) - - // If the context is an Activity, finish it to close the current activity - if (context is AppCompatActivity) { - context.finish() - } - } } @@ -92,36 +76,35 @@ class MainActivity : AppCompatActivity(), MainActivityListener { val btn = view.findViewById