diff --git a/app/src/main/java/com/denizk0461/studip/activity/MainActivity.kt b/app/src/main/java/com/denizk0461/studip/activity/MainActivity.kt
index d433e81..9aabf4d 100644
--- a/app/src/main/java/com/denizk0461/studip/activity/MainActivity.kt
+++ b/app/src/main/java/com/denizk0461/studip/activity/MainActivity.kt
@@ -1,6 +1,7 @@
package com.denizk0461.studip.activity
import android.os.Bundle
+import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.navigation.findNavController
@@ -8,15 +9,23 @@ import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import android.view.Menu
import android.view.MenuItem
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentTransaction
+import androidx.lifecycle.Lifecycle
import com.denizk0461.studip.R
import com.denizk0461.studip.data.Dependencies
import com.denizk0461.studip.databinding.ActivityMainBinding
import com.denizk0461.studip.db.EventRepository
+import com.denizk0461.studip.fragment.EventFragment
+import com.denizk0461.studip.fragment.FoodFragment
+import com.denizk0461.studip.fragment.SettingsFragment
class MainActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var binding: ActivityMainBinding
+ private var currentFragment = FragmentType.SCHEDULE
+ private val fragments = listOf(EventFragment(), FoodFragment(), SettingsFragment())
override fun onCreate(savedInstanceState: Bundle?) {
WindowCompat.setDecorFitsSystemWindows(window, false)
@@ -27,6 +36,12 @@ class MainActivity : AppCompatActivity() {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
+ binding.contentMain.navView.setOnItemSelectedListener { item ->
+ loadFragment(bottomIdToType(item.itemId))
+ }
+
+ loadFragment(currentFragment)
+
// setSupportActionBar(binding.toolbar)
// val navController = findNavController(R.id.nav_host_fragment_content_main)
@@ -41,6 +56,36 @@ class MainActivity : AppCompatActivity() {
// }
}
+ private fun loadFragment(type: FragmentType): Boolean {
+// val fragment = supportFragmentManager.findFragmentByTag(type.type) ?: getFragmentByType(type)
+ val fragment = getFragment(type)
+
+ if (fragment.lifecycle.currentState != Lifecycle.State.INITIALIZED) {
+ return false
+ }
+
+// if (supportFragmentManager.fragments.size > 1) {
+//
+// val currentFragment = supportFragmentManager.findFragmentByTag(currentFragment.type)
+// if (currentFragment != null) {
+// supportFragmentManager.beginTransaction().remove(currentFragment).commit()
+// supportFragmentManager.popBackStack()
+// }
+// }
+
+// supportFragmentManager.popBackStack()
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.nav_host_fragment_content_main, fragment, type.type)
+ .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+ .commit()
+
+ binding.contentMain.appTitleBar.text = getTitleString(type)
+
+ currentFragment = type
+
+ return true
+ }
+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
@@ -62,4 +107,37 @@ class MainActivity : AppCompatActivity() {
return navController.navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()
}
+
+ private fun getFragmentByType(type: FragmentType): Fragment {
+// Log.d("AAA!", "help")
+ return when (type) {
+ FragmentType.SCHEDULE -> EventFragment()
+ FragmentType.FOOD -> FoodFragment() // TODO once this fragment has been implemented
+ FragmentType.SETTINGS -> SettingsFragment()
+ }
+ }
+
+ private fun bottomIdToType(id: Int): FragmentType = when (id) {
+ R.id.food -> FragmentType.FOOD
+ R.id.settings -> FragmentType.SETTINGS
+ else -> FragmentType.SCHEDULE
+ }
+
+ private fun getFragment(type: FragmentType) = when (type) {
+ FragmentType.SCHEDULE -> fragments[0]
+ FragmentType.FOOD -> fragments[1]
+ FragmentType.SETTINGS -> fragments[2]
+ }
+
+ private fun getTitleString(type: FragmentType) = when (type) {
+ FragmentType.SCHEDULE -> getString(R.string.title_schedule)
+ FragmentType.FOOD -> getString(R.string.title_food)
+ FragmentType.SETTINGS -> getString(R.string.title_settings)
+ }
+
+ enum class FragmentType(val type: String) {
+ SCHEDULE("schedule"),
+ FOOD("food"),
+ SETTINGS("settings"),
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt
index 04bc924..c4499a1 100644
--- a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt
+++ b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt
@@ -85,10 +85,10 @@ class EventFragment : Fragment() {
// }
}
-// override fun onResume() {
-// super.onResume()
-// switchToCurrentDayView()
-// }
+ override fun onResume() {
+ super.onResume()
+ switchToCurrentDayView()
+ }
override fun onDestroyView() {
super.onDestroyView()
@@ -96,8 +96,8 @@ class EventFragment : Fragment() {
}
private fun switchToCurrentDayView() {
-// binding.viewpager.currentItem = dayOfWeek
- binding.dayTabLayout.getTabAt(dayOfWeek)?.select()
+ binding.viewPager.currentItem = dayOfWeek
+// binding.dayTabLayout.getTabAt(dayOfWeek)?.select()
}
private fun launchWebview() {
diff --git a/app/src/main/java/com/denizk0461/studip/fragment/FoodFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/FoodFragment.kt
new file mode 100644
index 0000000..af44559
--- /dev/null
+++ b/app/src/main/java/com/denizk0461/studip/fragment/FoodFragment.kt
@@ -0,0 +1,32 @@
+package com.denizk0461.studip.fragment
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.denizk0461.studip.databinding.FragmentFoodBinding
+
+class FoodFragment : Fragment() {
+
+ private var _binding: FragmentFoodBinding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ _binding = FragmentFoodBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizk0461/studip/fragment/SettingsFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/SettingsFragment.kt
new file mode 100644
index 0000000..b707c35
--- /dev/null
+++ b/app/src/main/java/com/denizk0461/studip/fragment/SettingsFragment.kt
@@ -0,0 +1,68 @@
+package com.denizk0461.studip.fragment
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.fragment.app.Fragment
+import com.denizk0461.studip.BuildConfig
+import com.denizk0461.studip.data.Misc
+import com.denizk0461.studip.databinding.FragmentSettingsBinding
+
+class SettingsFragment : Fragment() {
+
+ private var _binding: FragmentSettingsBinding? = null
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+ private var appVersionClick = 0
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ _binding = FragmentSettingsBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ val toast2 = Toast.makeText(context, "2", Toast.LENGTH_SHORT)
+ val toast22 = Toast.makeText(context, "22", Toast.LENGTH_SHORT)
+ val toast222 = Toast.makeText(context, "222", Toast.LENGTH_SHORT)
+
+ binding.buttonAppVersion.setOnClickListener {
+ when (appVersionClick) {
+ 19 -> {
+ toast2.show()
+ appVersionClick += 1
+ }
+ 20 -> {
+ toast2.cancel()
+ toast22.show()
+ appVersionClick += 1
+ }
+ 21 -> {
+ toast22.cancel()
+ toast222.show()
+ appVersionClick += 1
+ }
+ 22 -> {
+ toast222.cancel()
+ startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(Misc.mysteryLink)))
+ appVersionClick = 0
+ }
+ else -> appVersionClick += 1
+ }
+ }
+
+ binding.appVersionText.text = BuildConfig.VERSION_NAME
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/layout_ripple.xml b/app/src/main/res/drawable/layout_ripple.xml
new file mode 100644
index 0000000..d3ea692
--- /dev/null
+++ b/app/src/main/res/drawable/layout_ripple.xml
@@ -0,0 +1,12 @@
+
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index badae32..b6c6cf3 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -7,6 +7,7 @@
android:fitsSystemWindows="true"
tools:context=".activity.MainActivity">
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index 3386b54..005c23d 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -15,9 +15,10 @@
app:layout_constraintEnd_toEndOf="parent">
-
+ tools:context=".fragment.EventFragment"
+ android:background="?android:colorBackground">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
new file mode 100644
index 0000000..829cf9c
--- /dev/null
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 539cc5e..ab1187f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,7 +13,9 @@
THURSDAY
FRIDAY
- Your Schedule
+ Your Schedule
+ Canteen Plans
+ App Settings
Schedule
Food
@@ -21,6 +23,15 @@
Your schedule has been refreshed!
+ General
+ Miscellaneous
+
+ Show academic quarter
+ Where applicable
+ App Version
+
+ with ♡️ from Osterholz\nMade by Deniz \\__*
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris
volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index d9fe8dd..58a8b49 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -18,4 +18,9 @@
+
+
\ No newline at end of file