diff --git a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt index f333682..bfe131b 100644 --- a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt +++ b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventPageAdapter.kt @@ -7,7 +7,7 @@ import androidx.recyclerview.widget.RecyclerView import com.denizk0461.studip.model.StudIPEvent import com.denizk0461.studip.databinding.ItemEventPageBinding -class StudIPEventPageAdapter(private val events: List) : RecyclerView.Adapter() { +class StudIPEventPageAdapter(private var events: List) : RecyclerView.Adapter() { class EventPageViewHolder(val binding: ItemEventPageBinding) : RecyclerView.ViewHolder(binding.root) @@ -29,4 +29,9 @@ class StudIPEventPageAdapter(private val events: List) : RecyclerVi scheduleLayoutAnimation() } } + + fun setNewItems(items: List) { + events = items + notifyDataSetChanged() + } } \ No newline at end of file diff --git a/app/src/main/java/com/denizk0461/studip/data/DummyData.kt b/app/src/main/java/com/denizk0461/studip/data/Misc.kt similarity index 95% rename from app/src/main/java/com/denizk0461/studip/data/DummyData.kt rename to app/src/main/java/com/denizk0461/studip/data/Misc.kt index e043ee9..8749843 100644 --- a/app/src/main/java/com/denizk0461/studip/data/DummyData.kt +++ b/app/src/main/java/com/denizk0461/studip/data/Misc.kt @@ -2,7 +2,7 @@ package com.denizk0461.studip.data import com.denizk0461.studip.model.StudIPEvent -object DummyData { +object Misc { val events: Array = arrayOf( StudIPEvent(1, "Literatures", "Nittel", "MZH 1380/1400", 0, 3, 1), @@ -58,4 +58,6 @@ object DummyData { val length = (timeslotEndMap[splitTime[1]] ?: 0) return Pair(start, length) } + + val mysteryLink = "https://www.youtube.com/watch?v=nhIQMCXJzLI" } \ No newline at end of file diff --git a/app/src/main/java/com/denizk0461/studip/data/StudIPParser.kt b/app/src/main/java/com/denizk0461/studip/data/StudIPParser.kt index 0ef6322..4357f6b 100644 --- a/app/src/main/java/com/denizk0461/studip/data/StudIPParser.kt +++ b/app/src/main/java/com/denizk0461/studip/data/StudIPParser.kt @@ -24,7 +24,7 @@ class StudIPParser { val parsedLecturers = entryHeader.substring(delimiter + 1 until entryHeader.length - 1) val entryInfos = entry.getElementsByTag("dd")[0].text().split(", ", limit = 2) - val timeSlot = DummyData.parseTimeslot(entryInfos[0]) + val timeSlot = Misc.parseTimeslot(entryInfos[0]) val event = StudIPEvent( id = id, 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 7123c8c..cc39019 100644 --- a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt +++ b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt @@ -1,23 +1,17 @@ package com.denizk0461.studip.fragment import android.os.Bundle -import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.viewModels import androidx.navigation.fragment.NavHostFragment.Companion.findNavController -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.PagerSnapHelper -import androidx.recyclerview.widget.RecyclerView -import androidx.recyclerview.widget.RecyclerView.OnScrollListener import com.denizk0461.studip.R import com.denizk0461.studip.adapter.StudIPEventPageAdapter import com.denizk0461.studip.databinding.FragmentEventBinding import com.denizk0461.studip.viewmodel.EventViewModel -import com.google.android.material.tabs.TabLayout -import com.google.android.material.tabs.TabLayout.OnTabSelectedListener +import com.google.android.material.tabs.TabLayoutMediator import java.util.* /** @@ -30,11 +24,16 @@ class EventFragment : Fragment() { // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! - private lateinit var recyclerViewAdapter: StudIPEventPageAdapter - private lateinit var layoutManager: LinearLayoutManager + + private lateinit var viewPagerAdapter: StudIPEventPageAdapter private var dayOfWeek: Int = 0 - private val pagerSnapHelper = PagerSnapHelper() - private var isUserScrolling = false + private val dayStrings = listOf( + R.string.monday, + R.string.tuesday, + R.string.wednesday, + R.string.thursday, + R.string.friday, + ) private val viewModel: EventViewModel by viewModels() @@ -54,15 +53,15 @@ class EventFragment : Fragment() { else -> 0 } - viewModel.allEvents.observe(viewLifecycleOwner) { events -> - recyclerViewAdapter = StudIPEventPageAdapter(events)//DummyData.events.toList()) - binding.recyclerView.adapter = recyclerViewAdapter - layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) - binding.recyclerView.layoutManager = layoutManager - binding.recyclerView.onFlingListener = null - pagerSnapHelper.attachToRecyclerView(binding.recyclerView) -// binding.recyclerView.scheduleLayoutAnimation() + viewPagerAdapter = StudIPEventPageAdapter(listOf())//DummyData.events.toList()) + binding.viewPager.adapter = viewPagerAdapter + TabLayoutMediator(binding.dayTabLayout, binding.viewPager) { tab, position -> + tab.text = getString(dayStrings[position]) + }.attach() + + viewModel.allEvents.observe(viewLifecycleOwner) { events -> + viewPagerAdapter.setNewItems(events) switchToCurrentDayView() } @@ -70,42 +69,15 @@ class EventFragment : Fragment() { launchWebview() } - binding.recyclerView.addOnScrollListener(object : OnScrollListener() { - - override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { - super.onScrollStateChanged(recyclerView, newState) - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - binding.dayTabs.getTabAt(layoutManager.findFirstVisibleItemPosition())?.select() - } - } - }) - - binding.dayTabs.addOnTabSelectedListener(object : OnTabSelectedListener { - override fun onTabSelected(tab: TabLayout.Tab) { - isUserScrolling = false - binding.recyclerView.smoothScrollToPosition(tab.position) - Log.d("HELLO4", binding.recyclerView.scrollY.toString()) - // TODO where to set isUserScrolling back to true? - } - override fun onTabUnselected(tab: TabLayout.Tab?) {} - override fun onTabReselected(tab: TabLayout.Tab?) {} - }) - -// binding.daytabmonday.setOnClickListener { binding.recyclerView.scrollToPosition(0) } -// binding.daytabtuesday.setOnClickListener { binding.recyclerView.scrollToPosition(1) } -// binding.daytabwednesday.setOnClickListener { binding.recyclerView.scrollToPosition(2) } -// binding.daytabthursday.setOnClickListener { binding.recyclerView.scrollToPosition(3) } -// binding.daytabfriday.setOnClickListener { binding.recyclerView.scrollToPosition(4) } - // binding.buttonFirst.setOnClickListener { // findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment) // } } - override fun onResume() { - super.onResume() - switchToCurrentDayView() - } +// override fun onResume() { +// super.onResume() +// switchToCurrentDayView() +// } override fun onDestroyView() { super.onDestroyView() @@ -113,8 +85,8 @@ class EventFragment : Fragment() { } private fun switchToCurrentDayView() { - binding.recyclerView.scrollToPosition(dayOfWeek) - binding.dayTabs.getTabAt(dayOfWeek)?.select() +// binding.viewpager.currentItem = dayOfWeek + binding.dayTabLayout.getTabAt(dayOfWeek)?.select() } private fun launchWebview() { diff --git a/app/src/main/res/layout/fragment_event.xml b/app/src/main/res/layout/fragment_event.xml index a8e0306..bd5e149 100644 --- a/app/src/main/res/layout/fragment_event.xml +++ b/app/src/main/res/layout/fragment_event.xml @@ -7,52 +7,24 @@ tools:context=".fragment.EventFragment"> + app:layout_constraintEnd_toEndOf="parent"/> - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@+id/day_tab_layout" + app:layout_constraintBottom_toBottomOf="parent"/> +