diff --git a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventItemAdapter.kt b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventItemAdapter.kt index 692aabe..5a1256d 100644 --- a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventItemAdapter.kt +++ b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventItemAdapter.kt @@ -45,24 +45,23 @@ class StudIPEventItemAdapter( val colorTextHintLighter = TypedValue() val theme = holder.binding.root.context.theme - theme.resolveAttribute(R.attr.colorPrimaryTranslucent, colorPrimaryTranslucent, true) - theme.resolveAttribute(R.attr.colorCardBackground, colorCardBackground, true) - theme.resolveAttribute(R.attr.colorTextHintLighter, colorTextHintLighter, true) + theme.apply { + resolveAttribute(R.attr.colorPrimaryTranslucent, colorPrimaryTranslucent, true) + resolveAttribute(R.attr.colorCardBackground, colorCardBackground, true) + resolveAttribute(R.attr.colorTextHintLighter, colorTextHintLighter, true) + } if (!isAnyCourseHighlighted && currentItem.isCurrentCourse(currentCalendar)) { // highlight isAnyCourseHighlighted = true holder.binding.cardBackground.apply { - backgroundTintList = ColorStateList.valueOf(colorPrimaryTranslucent.data)//R.attr.colorPrimaryTranslucent) + backgroundTintList = ColorStateList.valueOf(colorPrimaryTranslucent.data) strokeColor = context.getColor(android.R.color.transparent) - }//colorPrimary.data -// holder.binding.cardBackground.strokeWidth = 6 // TODO replace this with proper float -> dp conversion -// R.color.list_card_selected) + } } else { // un-highlight holder.binding.cardBackground.apply { - backgroundTintList = ColorStateList.valueOf(colorCardBackground.data)//context.getColor(R.attr.colorCardBackground)) + backgroundTintList = ColorStateList.valueOf(colorCardBackground.data) strokeColor = colorTextHintLighter.data } -// holder.binding.cardBackground.strokeWidth = 3 // this should (?) be 1dp } holder.binding.cardBackground.setOnClickListener { diff --git a/app/src/main/java/com/denizk0461/studip/data/StwParser.kt b/app/src/main/java/com/denizk0461/studip/data/StwParser.kt index 3afaed5..75c29d8 100644 --- a/app/src/main/java/com/denizk0461/studip/data/StwParser.kt +++ b/app/src/main/java/com/denizk0461/studip/data/StwParser.kt @@ -1,6 +1,5 @@ package com.denizk0461.studip.data -import android.util.Log import com.denizk0461.studip.db.EventRepository import com.denizk0461.studip.model.* import org.jsoup.Jsoup @@ -89,8 +88,6 @@ class StwParser { isGame = prefs.isDietaryPreferenceMet(PREFERENCE_GAME), ).deconstruct() -// Log.d("eek!4", "prefString = $prefString") - repo.insert( OfferItem( itemId, @@ -101,25 +98,6 @@ class StwParser { ) ) itemId += 1 - -// val newItem = CanteenOffer( -// id = id, -// date = date, -// dateId = day, -// category = categoryTitle, -// title = tableRows[1].getFilteredText(), -//// price = tableRows.getTextOrEmpty(2), -// isFair = prefs.isDietaryPreferenceMet(PREFERENCE_FAIR), -// isFish = prefs.isDietaryPreferenceMet(PREFERENCE_FISH), -// isPoultry = prefs.isDietaryPreferenceMet(PREFERENCE_POULTRY), -// isLamb = prefs.isDietaryPreferenceMet(PREFERENCE_LAMB), -// isVital = prefs.isDietaryPreferenceMet(PREFERENCE_VITAL), -// isBeef = prefs.isDietaryPreferenceMet(PREFERENCE_BEEF), -// isPork = prefs.isDietaryPreferenceMet(PREFERENCE_PORK), -// isVegan = prefs.isDietaryPreferenceMet(PREFERENCE_VEGAN), -// isVegetarian = prefs.isDietaryPreferenceMet(PREFERENCE_VEGETARIAN), -// isGame = prefs.isDietaryPreferenceMet(PREFERENCE_GAME), -// ) } categoryId += 1 } diff --git a/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt b/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt index 177153f..91c16fd 100644 --- a/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt +++ b/app/src/main/java/com/denizk0461/studip/db/EventDAO.kt @@ -66,6 +66,9 @@ interface EventDAO { @get:Query("SELECT id FROM offer_date") val updateObserver: LiveData> + @Query("SELECT * FROM offer_date") + fun getDates(): List + @Query("DELETE FROM offer_date") fun nukeOfferDates() diff --git a/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt b/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt index 5f67f07..19d98bc 100644 --- a/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt +++ b/app/src/main/java/com/denizk0461/studip/db/EventRepository.kt @@ -21,6 +21,8 @@ class EventRepository(app: Application) { val allOffers: LiveData> = dao.allOffers + fun getDates(): List = dao.getDates() + fun getDietaryPrefs(): String { return prefs.getString(dietaryPrefString, "..........") ?: ".........." // return DietaryPrefObject( diff --git a/app/src/main/java/com/denizk0461/studip/fragment/CanteenFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/CanteenFragment.kt index a141d67..9e311b2 100644 --- a/app/src/main/java/com/denizk0461/studip/fragment/CanteenFragment.kt +++ b/app/src/main/java/com/denizk0461/studip/fragment/CanteenFragment.kt @@ -10,10 +10,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.LiveData import com.denizk0461.studip.adapter.CanteenOfferPageAdapter import com.denizk0461.studip.databinding.FragmentCanteenBinding -import com.denizk0461.studip.model.CanteenOffer -import com.denizk0461.studip.model.CanteenOfferGroup -import com.denizk0461.studip.model.CanteenOfferGroupElement -import com.denizk0461.studip.model.DietaryPreferences +import com.denizk0461.studip.model.* import com.denizk0461.studip.viewmodel.CanteenViewModel import com.google.android.material.tabs.TabLayoutMediator @@ -25,8 +22,6 @@ class CanteenFragment : Fragment() { // onDestroyView. private val binding get() = _binding!! - private var dates = listOf() - private lateinit var liveData: LiveData> private lateinit var viewPagerAdapter: CanteenOfferPageAdapter @@ -77,7 +72,7 @@ class CanteenFragment : Fragment() { viewPagerAdapter = CanteenOfferPageAdapter(listOf(), 0, getPrefRegex()) binding.viewPager.adapter = viewPagerAdapter - createTabLayoutMediator() + createTabLayoutMediator(listOf()) liveData = viewModel.allOffers liveData.observe(viewLifecycleOwner) { offers -> @@ -85,12 +80,13 @@ class CanteenFragment : Fragment() { val groupedElements = offers.groupElements().distinct() - dates = groupedElements.map { it.date }.distinct() - createTabLayoutMediator() +// dates = groupedElements.map { it.date }.distinct() + val newDates = viewModel.getDates() + createTabLayoutMediator(newDates) - this.dateSize = dates.size + dateSize = newDates.size - viewPagerAdapter.setNewItems(groupedElements, dates.size) + viewPagerAdapter.setNewItems(groupedElements, dateSize) // TODO this must be changed. if an exception is raised, then this will not fire binding.swipeRefreshLayout.isRefreshing = false @@ -105,10 +101,10 @@ class CanteenFragment : Fragment() { } } - private fun createTabLayoutMediator() { + private fun createTabLayoutMediator(dates: List) { if (dates.isNotEmpty()) { TabLayoutMediator(binding.dayTabLayout, binding.viewPager) { tab, position -> - tab.text = dates[position] + tab.text = dates[position].date }.attach() } } @@ -127,7 +123,7 @@ class CanteenFragment : Fragment() { viewModel.getPreference(pref) private fun getPrefRegex(): Regex { - val prefs = viewModel.getDietaryPrefs().deconstruct().replace('f', '.') + val prefs = viewModel.getDietaryPrefs().deconstruct()//.replace('f', '.') val template = ".........." diff --git a/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt b/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt index 528e00f..ad26d52 100644 --- a/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt +++ b/app/src/main/java/com/denizk0461/studip/viewmodel/CanteenViewModel.kt @@ -6,6 +6,7 @@ import com.denizk0461.studip.data.StwParser import com.denizk0461.studip.model.CanteenOffer import com.denizk0461.studip.model.DietaryPrefObject import com.denizk0461.studip.model.DietaryPreferences +import com.denizk0461.studip.model.OfferDate class CanteenViewModel(app: Application) : TemplateViewModel(app) { @@ -15,6 +16,8 @@ class CanteenViewModel(app: Application) : TemplateViewModel(app) { fun getDietaryPrefs(): DietaryPrefObject = repo.getDietaryPrefsAsObj() + fun getDates(): List = returnBlocking { repo.getDates() } + fun fetchOffers(onRefreshUpdate: (status: Int) -> Unit, onFinish: () -> Unit) { doAsync { parser.parse(onRefreshUpdate, onFinish) }} fun setPreference(pref: DietaryPreferences, newValue: Boolean) { repo.setPreference(pref, newValue) } diff --git a/app/src/main/res/layout/fragment_canteen.xml b/app/src/main/res/layout/fragment_canteen.xml index db0c503..375798c 100644 --- a/app/src/main/res/layout/fragment_canteen.xml +++ b/app/src/main/res/layout/fragment_canteen.xml @@ -1,5 +1,5 @@ - + android:background="@android:color/transparent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/day_tab_layout" + app:layout_constraintBottom_toTopOf="@+id/scroll_view_chip"> + android:layout_height="match_parent"/> + android:scrollbars="none" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - \ No newline at end of file + \ 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 index 057b739..5961cfa 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -78,12 +78,14 @@ android:paddingVertical="8dp"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/switch_quarter" + android:layout_marginEnd="8dp"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/switch_highlight" + android:layout_marginEnd="8dp"> + + + + + + + + + @@ -24,6 +25,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" + android:layout_marginEnd="4dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/image_view_container" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 82eeea3..5c62ef3 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -49,6 +49,8 @@ Wo es passt Markiere meinen nächsten Kurs Funktioniert nur wenn Kurse sich nicht überschneiden! + Was passiert mit meinen Daten? + Stiehlst du meinen Login? App-Verison mit ♡️ aus Bremen-Osterholz\von denizk0461 \\__* diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9f1af6..0558cb8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,7 +48,9 @@ Use academic quarter Where applicable Highlight next course - Only works if courses don\'t overlap! + Only works properly if courses don\'t overlap! + What happens with my data? + Will you steal my login? App Version with ♡️ from Bremen-Osterholz\nmade by denizk0461 \\__*