From 8302884fdc16f766d9cd51b82dce59feb49e3caf Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Sun, 14 Nov 2021 22:58:36 +0100 Subject: [PATCH] Cleanup --- .../sebse/fuplanner2/database/Announcement.kt | 3 +- .../de/sebse/fuplanner2/database/Course.kt | 3 +- .../de/sebse/fuplanner2/database/CourseDao.kt | 3 +- .../de/sebse/fuplanner2/database/Event.kt | 3 +- .../fuplanner2/mainActivityComponents.kt | 2 +- .../{components.kt => CoursesScreen.kt} | 1 + .../ui/details/CourseDetailsScreen.kt | 57 +++++++++++ .../fuplanner2/ui/details/DetailsAdapter.kt | 84 ---------------- .../fuplanner2/ui/details/DetailsFragment.kt | 98 ------------------- .../{lecturer.kt => LecturerItem.kt} | 0 .../{courseDetails.kt => QuickLinks.kt} | 48 --------- .../DescriptionFragment.kt | 4 +- .../ui/schedule/ScheduleFragment.kt | 2 +- .../CoursesViewModel.kt | 2 +- .../DetailsViewModel.kt | 4 +- app/src/main/res/navigation/nav_graph.xml | 48 +-------- 16 files changed, 72 insertions(+), 290 deletions(-) rename app/src/main/java/de/sebse/fuplanner2/ui/courses/{components.kt => CoursesScreen.kt} (99%) create mode 100644 app/src/main/java/de/sebse/fuplanner2/ui/details/CourseDetailsScreen.kt delete mode 100644 app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsAdapter.kt delete mode 100644 app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsFragment.kt rename app/src/main/java/de/sebse/fuplanner2/ui/details/components/{lecturer.kt => LecturerItem.kt} (100%) rename app/src/main/java/de/sebse/fuplanner2/ui/details/components/{courseDetails.kt => QuickLinks.kt} (60%) rename app/src/main/java/de/sebse/fuplanner2/{ui/courses => viewmodels}/CoursesViewModel.kt (88%) rename app/src/main/java/de/sebse/fuplanner2/{ui/details => viewmodels}/DetailsViewModel.kt (93%) diff --git a/app/src/main/java/de/sebse/fuplanner2/database/Announcement.kt b/app/src/main/java/de/sebse/fuplanner2/database/Announcement.kt index d018d9c..8898c6e 100644 --- a/app/src/main/java/de/sebse/fuplanner2/database/Announcement.kt +++ b/app/src/main/java/de/sebse/fuplanner2/database/Announcement.kt @@ -9,7 +9,6 @@ import androidx.room.Index import androidx.room.PrimaryKey import com.beust.klaxon.JsonObject import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.ui.notification.NotificationFragmentDirections import de.sebse.fuplanner2.utils.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -82,7 +81,7 @@ data class Announcement ( ?.let { AppDatabase.getInstance().courseDao().getCourseById2(it.courseId) } ?.let { withContext(Dispatchers.Main) { - navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) + //navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) } } } diff --git a/app/src/main/java/de/sebse/fuplanner2/database/Course.kt b/app/src/main/java/de/sebse/fuplanner2/database/Course.kt index 1859224..045d8b4 100644 --- a/app/src/main/java/de/sebse/fuplanner2/database/Course.kt +++ b/app/src/main/java/de/sebse/fuplanner2/database/Course.kt @@ -9,7 +9,6 @@ import androidx.room.Index import androidx.room.PrimaryKey import com.beust.klaxon.JsonObject import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.ui.notification.NotificationFragmentDirections import de.sebse.fuplanner2.utils.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -91,7 +90,7 @@ data class Course ( ?.let { AppDatabase.getInstance().courseDao().getCourseById2(it) } ?.let { withContext(Dispatchers.Main) { - navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) + //navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) } } } diff --git a/app/src/main/java/de/sebse/fuplanner2/database/CourseDao.kt b/app/src/main/java/de/sebse/fuplanner2/database/CourseDao.kt index a8dc86e..3d15908 100644 --- a/app/src/main/java/de/sebse/fuplanner2/database/CourseDao.kt +++ b/app/src/main/java/de/sebse/fuplanner2/database/CourseDao.kt @@ -9,6 +9,7 @@ interface CourseDao { fun getAll(): LiveData> @Query("SELECT * FROM course INNER JOIN (SELECT year, CASE WHEN isSummerSemester THEN 1 ELSE 0 END AS semester FROM course GROUP BY year, isSummerSemester ORDER BY year DESC, semester ASC LIMIT 1) current WHERE current.year = course.year AND current.semester = CASE WHEN course.isSummerSemester THEN 1 ELSE 0 END ORDER BY title ASC") + @RewriteQueriesToDropUnusedColumns fun getLatestSemester(): LiveData> @Query("SELECT year, CASE WHEN isSummerSemester THEN 1 ELSE 0 END AS semester FROM course GROUP BY year, isSummerSemester ORDER BY year DESC, semester ASC LIMIT 1") @@ -53,4 +54,4 @@ interface CourseDao { fun delete(courses: List) } -data class Semester(val year: Int, val semester: Boolean) \ No newline at end of file +data class Semester(val year: Int, val semester: Boolean) diff --git a/app/src/main/java/de/sebse/fuplanner2/database/Event.kt b/app/src/main/java/de/sebse/fuplanner2/database/Event.kt index cb8b80b..57c3f4c 100644 --- a/app/src/main/java/de/sebse/fuplanner2/database/Event.kt +++ b/app/src/main/java/de/sebse/fuplanner2/database/Event.kt @@ -9,7 +9,6 @@ import androidx.room.Index import androidx.room.PrimaryKey import com.beust.klaxon.JsonObject import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.ui.notification.NotificationFragmentDirections import de.sebse.fuplanner2.utils.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -81,7 +80,7 @@ data class Event ( ?.let { AppDatabase.getInstance().courseDao().getCourseById2(it.courseId) } ?.let { withContext(Dispatchers.Main) { - navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) + //navController.navigate(NotificationFragmentDirections.actionNavNotificationsToCourseDetails(it.uid!!, it.title)) } } } diff --git a/app/src/main/java/de/sebse/fuplanner2/mainActivityComponents.kt b/app/src/main/java/de/sebse/fuplanner2/mainActivityComponents.kt index ce1b656..48a63e4 100644 --- a/app/src/main/java/de/sebse/fuplanner2/mainActivityComponents.kt +++ b/app/src/main/java/de/sebse/fuplanner2/mainActivityComponents.kt @@ -6,7 +6,7 @@ import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import de.sebse.fuplanner2.ui.courses.CoursesScreen -import de.sebse.fuplanner2.ui.details.components.CourseDetailsScreen +import de.sebse.fuplanner2.ui.details.CourseDetailsScreen sealed class MenuItem { object Courses : NavLinks(R.string.menu_courses, R.drawable.ic_menu_courses, "courses") diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/courses/components.kt b/app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesScreen.kt similarity index 99% rename from app/src/main/java/de/sebse/fuplanner2/ui/courses/components.kt rename to app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesScreen.kt index 188a8f0..80c5f27 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/courses/components.kt +++ b/app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesScreen.kt @@ -38,6 +38,7 @@ import de.sebse.fuplanner2.Tools import de.sebse.fuplanner2.database.Course import de.sebse.fuplanner2.ui.details.CoursePreviewProvider import de.sebse.fuplanner2.utils.color.getColor +import de.sebse.fuplanner2.viewmodels.CoursesViewModel @Composable fun CoursesScreen(tools: Tools) { diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/CourseDetailsScreen.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details/CourseDetailsScreen.kt new file mode 100644 index 0000000..a0d97bc --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner2/ui/details/CourseDetailsScreen.kt @@ -0,0 +1,57 @@ +package de.sebse.fuplanner2.ui.details + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.lifecycle.viewmodel.compose.viewModel +import com.google.android.material.composethemeadapter.MdcTheme +import de.sebse.fuplanner2.R +import de.sebse.fuplanner2.Tools +import de.sebse.fuplanner2.database.Course +import de.sebse.fuplanner2.ui.details.components.QuickLinks +import de.sebse.fuplanner2.viewmodels.DetailsViewModel +import de.sebse.fuplanner2.viewmodels.DetailsViewModelFactory + +@Composable +fun CourseDetailsScreen(tools: Tools, id: Long) { + val coursesViewModel: DetailsViewModel = viewModel(factory = DetailsViewModelFactory(id)) + val state = coursesViewModel.course.observeAsState() + val title = state.value?.title + LaunchedEffect(title) { + title?.let { tools.setTitle(it) } + } + CourseDetailsScreen(state.value, id) +} + +@Composable +fun CourseDetailsScreen(course: Course?, id: Long) { + Column { + QuickLinks(courseId = id) + Text( + text = stringResource(R.string.lecturers), + style = MaterialTheme.typography.h5 + ) + LazyColumn { + items(course?.lecturers ?: listOf()) { + LecturerItem(lecturer = it, courseTitle = course?.title ?: "") + } + } + // TODO: Add latest announcements, current assignments, upcoming events + } +} + +@Preview +@Composable +fun CourseDetailsScreenPreview(@PreviewParameter(CoursePreviewProvider::class, 1) course: Course) { + MdcTheme { + CourseDetailsScreen(course, course.uid!!) + } +} diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsAdapter.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsAdapter.kt deleted file mode 100644 index f2026b9..0000000 --- a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package de.sebse.fuplanner2.ui.details - -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.database.Lecturer -import de.sebse.fuplanner2.ui.* -import de.sebse.fuplanner2.utils.cast -import java.util.* - -class DetailsAdapter(private val onQuickLink: (ButtonTypes) -> Unit, private val onMailTo: (Lecturer) -> Unit) : RecyclerView.Adapter() { - - enum class HeaderTypes { - BUTTONS, LECTURER, ANNOUNCEMENTS, ASSIGNMENTS, EVENTS; - } - - enum class ButtonTypes { - DESCRIPTION, RESOURCES, GRADEBOOK, ANNOUNCEMENTS, ASSIGNMENTS, EVENTS; - } - - private val positionalData: ArrayList = arrayListOf() - - var lecturers: List = listOf() - set(value) { - field = value - updatePositionalData() - } - - private fun updatePositionalData() { - positionalData.clear() - positionalData.add(HeaderTypes.BUTTONS) - positionalData.add(ViewHolderGenerator.HolderType.BUTTONS) - positionalData.add(HeaderTypes.LECTURER) - positionalData.addAll(lecturers.sortedBy { it.lastName }.sortedBy { !it.isResponsible }) - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomHolder { - return ViewHolderGenerator.getHolderByType(parent, viewType) - } - - override fun onBindViewHolder(holder: CustomHolder, position: Int) { - // val viewType = getItemViewType(position) - val res = holder.itemView.resources - when (holder) { - is CaptionHolder -> cast(positionalData[position])?.let { type -> - holder.string.text = when (type) { - HeaderTypes.BUTTONS -> res.getString(R.string.quick_links) - HeaderTypes.LECTURER -> res.getString(R.string.lecturers) - HeaderTypes.ANNOUNCEMENTS -> res.getString(R.string.announcements) - HeaderTypes.ASSIGNMENTS -> res.getString(R.string.assignments) - HeaderTypes.EVENTS -> res.getString(R.string.events) - } - } - is QuickLinksHolder -> { - holder.btnAnnouncements.setOnClickListener { this.onQuickLink(ButtonTypes.ANNOUNCEMENTS) } - holder.btnAssignments.setOnClickListener { this.onQuickLink(ButtonTypes.ASSIGNMENTS) } - holder.btnDescription.setOnClickListener { this.onQuickLink(ButtonTypes.DESCRIPTION) } - holder.btnEvents.setOnClickListener { this.onQuickLink(ButtonTypes.EVENTS) } - holder.btnGradebook.setOnClickListener { this.onQuickLink(ButtonTypes.GRADEBOOK) } - holder.btnResources.setOnClickListener { this.onQuickLink(ButtonTypes.RESOURCES) } - } - is MailHolder -> cast(positionalData[position])?.let { type -> - holder.title.text = res.getString(R.string.full_name, type.firstName, type.lastName) - holder.subLeft.text = type.email - holder.itemView.setOnClickListener { this.onMailTo(type) } - } - is ListItemHolder -> when (positionalData[position]) { - } - } - } - - override fun getItemViewType(position: Int): Int { - return when (positionalData[position]) { - is HeaderTypes -> ViewHolderGenerator.HolderType.HEADER.ordinal - ViewHolderGenerator.HolderType.BUTTONS -> ViewHolderGenerator.HolderType.BUTTONS.ordinal - is Lecturer -> ViewHolderGenerator.HolderType.MAIL.ordinal - else -> ViewHolderGenerator.HolderType.ITEM.ordinal - } - } - - // Return the size of your dataset (invoked by the layout manager) - override fun getItemCount() = positionalData.size -} diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsFragment.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsFragment.kt deleted file mode 100644 index 5f699ba..0000000 --- a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsFragment.kt +++ /dev/null @@ -1,98 +0,0 @@ -package de.sebse.fuplanner2.ui.details - -import android.content.Intent -import android.net.Uri -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.foundation.layout.Column -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.ui.platform.ComposeView -import androidx.compose.ui.res.stringResource -import androidx.fragment.app.Fragment -import androidx.fragment.app.viewModels -import androidx.navigation.NavController -import androidx.navigation.fragment.findNavController -import androidx.navigation.fragment.navArgs -import com.google.android.material.composethemeadapter.MdcTheme -import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.database.Lecturer - - -class DetailsFragment : Fragment() { - - private val args: DetailsFragmentArgs by navArgs() - private val detailsViewModel: DetailsViewModel by viewModels { DetailsViewModelFactory(args.courseId) } - private lateinit var navController: NavController - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - navController = findNavController() - return ComposeView(requireContext()).apply { - setContent { - val course = detailsViewModel.course.observeAsState(null).value - (activity as? AppCompatActivity)?.supportActionBar?.title = args.title - MdcTheme { - Column { - Text( - text = stringResource(R.string.description), - style = MaterialTheme.typography.h5 - ) - } - } - } - } - } - - private fun sendMail(lecturer: Lecturer) { - val intent = Intent(Intent.ACTION_SENDTO) - intent.type = "text/html" - intent.data = Uri.fromParts("mailto", lecturer.email, null) - intent.putExtra(Intent.EXTRA_SUBJECT, args.title) - intent.putExtra( - Intent.EXTRA_TEXT, - getString(R.string.email_preview, lecturer.firstName, lecturer.lastName) - ) - startActivity( - Intent.createChooser( - intent, - getString(R.string.send_email, lecturer.firstName, lecturer.lastName) - ) - ) - } - - private fun launchFragment(btnType: DetailsAdapter.ButtonTypes) { - when (btnType) { - DetailsAdapter.ButtonTypes.DESCRIPTION -> - this.navController.navigate( - DetailsFragmentDirections.actionCourseDetailsToDescriptionFragment( - args.courseId, - args.title - ) - ) - DetailsAdapter.ButtonTypes.RESOURCES -> TODO() - DetailsAdapter.ButtonTypes.GRADEBOOK -> TODO() - DetailsAdapter.ButtonTypes.ANNOUNCEMENTS -> - this.navController.navigate( - DetailsFragmentDirections.actionCourseDetailsToCourseAnnouncements( - args.courseId, - args.title - ) - ) - DetailsAdapter.ButtonTypes.ASSIGNMENTS -> TODO() - DetailsAdapter.ButtonTypes.EVENTS -> - this.navController.navigate( - DetailsFragmentDirections.actionCourseDetailsToCourseEvents( - args.courseId, - args.title - ) - ) - } - } -} diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/components/lecturer.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details/components/LecturerItem.kt similarity index 100% rename from app/src/main/java/de/sebse/fuplanner2/ui/details/components/lecturer.kt rename to app/src/main/java/de/sebse/fuplanner2/ui/details/components/LecturerItem.kt diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/components/courseDetails.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details/components/QuickLinks.kt similarity index 60% rename from app/src/main/java/de/sebse/fuplanner2/ui/details/components/courseDetails.kt rename to app/src/main/java/de/sebse/fuplanner2/ui/details/components/QuickLinks.kt index 5de6a58..f182693 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/details/components/courseDetails.kt +++ b/app/src/main/java/de/sebse/fuplanner2/ui/details/components/QuickLinks.kt @@ -2,65 +2,25 @@ package de.sebse.fuplanner2.ui.details.components import androidx.annotation.StringRes import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.GridCells -import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyVerticalGrid -import androidx.compose.foundation.lazy.items import androidx.compose.material.Card import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel import com.google.android.material.composethemeadapter.MdcTheme import de.sebse.fuplanner2.R -import de.sebse.fuplanner2.Tools -import de.sebse.fuplanner2.database.Course -import de.sebse.fuplanner2.ui.details.CoursePreviewProvider -import de.sebse.fuplanner2.ui.details.DetailsViewModel -import de.sebse.fuplanner2.ui.details.DetailsViewModelFactory -import de.sebse.fuplanner2.ui.details.LecturerItem -@Composable -fun CourseDetailsScreen(tools: Tools, id: Long) { - val coursesViewModel: DetailsViewModel = viewModel(factory = DetailsViewModelFactory(id)) - val state = coursesViewModel.course.observeAsState() - val title = state.value?.title - LaunchedEffect(title) { - title?.let { tools.setTitle(it) } - } - CourseDetailsScreen(state.value, id) -} - -@Composable -fun CourseDetailsScreen(course: Course?, id: Long) { - Column { - QuickLinks(courseId = id) - Text( - text = stringResource(R.string.lecturers), - style = MaterialTheme.typography.h5 - ) - LazyColumn { - items(course?.lecturers ?: listOf()) { - LecturerItem(lecturer = it, courseTitle = course?.title ?: "") - } - } - } -} - data class QuickLinkProps(@StringRes val name: Int, val route: String) @OptIn(ExperimentalFoundationApi::class) @@ -101,14 +61,6 @@ fun QuickLinks(courseId: Long) { } } -@Preview -@Composable -fun CourseDetailsScreenPreview(@PreviewParameter(CoursePreviewProvider::class, 1) course: Course) { - MdcTheme { - CourseDetailsScreen(course, course.uid!!) - } -} - @Preview @Composable fun QuickLinksPreview() { diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details_description/DescriptionFragment.kt b/app/src/main/java/de/sebse/fuplanner2/ui/details_description/DescriptionFragment.kt index 92c427b..2213ab7 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/details_description/DescriptionFragment.kt +++ b/app/src/main/java/de/sebse/fuplanner2/ui/details_description/DescriptionFragment.kt @@ -15,8 +15,8 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import de.sebse.fuplanner2.R import de.sebse.fuplanner2.databinding.FragmentDescriptionBinding -import de.sebse.fuplanner2.ui.details.DetailsViewModel -import de.sebse.fuplanner2.ui.details.DetailsViewModelFactory +import de.sebse.fuplanner2.viewmodels.DetailsViewModel +import de.sebse.fuplanner2.viewmodels.DetailsViewModelFactory class DescriptionFragment : Fragment() { diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/schedule/ScheduleFragment.kt b/app/src/main/java/de/sebse/fuplanner2/ui/schedule/ScheduleFragment.kt index 68b3a16..b37560b 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/schedule/ScheduleFragment.kt +++ b/app/src/main/java/de/sebse/fuplanner2/ui/schedule/ScheduleFragment.kt @@ -53,7 +53,7 @@ class ScheduleFragment : Fragment() { } .setPositiveButton(R.string.view_course) { _, _ -> alertCourse?.let { course -> - navController.navigate(ScheduleFragmentDirections.actionNavScheduleToCourseDetails(course.uid!!, course.title)) + //navController.navigate(ScheduleFragmentDirections.actionNavScheduleToCourseDetails(course.uid!!, course.title)) } } .create() diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesViewModel.kt b/app/src/main/java/de/sebse/fuplanner2/viewmodels/CoursesViewModel.kt similarity index 88% rename from app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesViewModel.kt rename to app/src/main/java/de/sebse/fuplanner2/viewmodels/CoursesViewModel.kt index 89b9d50..6be3638 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/courses/CoursesViewModel.kt +++ b/app/src/main/java/de/sebse/fuplanner2/viewmodels/CoursesViewModel.kt @@ -1,4 +1,4 @@ -package de.sebse.fuplanner2.ui.courses +package de.sebse.fuplanner2.viewmodels import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel diff --git a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsViewModel.kt b/app/src/main/java/de/sebse/fuplanner2/viewmodels/DetailsViewModel.kt similarity index 93% rename from app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsViewModel.kt rename to app/src/main/java/de/sebse/fuplanner2/viewmodels/DetailsViewModel.kt index 59e4a8c..ac43155 100644 --- a/app/src/main/java/de/sebse/fuplanner2/ui/details/DetailsViewModel.kt +++ b/app/src/main/java/de/sebse/fuplanner2/viewmodels/DetailsViewModel.kt @@ -1,4 +1,4 @@ -package de.sebse.fuplanner2.ui.details +package de.sebse.fuplanner2.viewmodels import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel @@ -13,4 +13,4 @@ class DetailsViewModelFactory(private val courseId: Long): ViewModelProvider.New class DetailsViewModel(courseId: Long) : ViewModel() { val course: LiveData = AppDatabase.getInstance().courseDao().getCourseById(courseId) -} \ No newline at end of file +} diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 21a803a..b5ac607 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -14,46 +14,7 @@ android:id="@+id/nav_schedule" android:name="de.sebse.fuplanner2.ui.schedule.ScheduleFragment" android:label="@string/menu_schedule" - tools:layout="@layout/fragment_schedule"> - - - - - - - - - + tools:layout="@layout/fragment_schedule"/> - - + tools:layout="@layout/notification_fragment"/>