From bff62daaecb15d7de896139e0092c952d23d926c Mon Sep 17 00:00:00 2001 From: biloute02 Date: Fri, 5 Jan 2024 13:50:20 +0100 Subject: [PATCH] Changement des listes menu et session --- app/build.gradle.kts | 16 +++-- .../java/com/example/palto/PaltoActivity.kt | 15 ++-- .../data/repository/AttendanceRepository.kt | 4 +- .../data/repository/SessionRepository.kt | 4 +- .../palto/{model => domain}/Attendance.kt | 2 +- .../example/palto/{model => domain}/Card.kt | 3 +- .../palto/{model => domain}/Session.kt | 4 +- .../java/com/example/palto/ui/NfcViewModel.kt | 14 ++++ .../attendanceList/AttendanceListFragment.kt | 69 ------------------- .../com/example/palto/ui/menu/MenuAdapter.kt | 69 +++++++++++++++++++ .../com/example/palto/ui/menu/MenuFragment.kt | 45 ++++++++++++ .../example/palto/ui/menu/MenuViewModel.kt | 21 ++++++ .../SessionAdapter.kt} | 22 +++--- .../palto/ui/session/SessionFragment.kt | 56 +++++++++++++++ .../SessionViewModel.kt} | 18 ++--- .../ui/sessionList/SessionListAdapter.kt | 44 ------------ .../ui/sessionList/SessionListFragment.kt | 31 --------- .../ui/sessionList/SessionListViewModel.kt | 14 ---- ...ndance_item.xml => fragment_menu_item.xml} | 9 ++- ...ndance_list.xml => fragment_menu_list.xml} | 8 +-- .../main/res/layout/fragment_session_item.xml | 9 +-- .../main/res/layout/fragment_session_list.xml | 6 +- app/src/main/res/navigation/nav_graph.xml | 22 ++++-- 23 files changed, 279 insertions(+), 226 deletions(-) rename app/src/main/java/com/example/palto/{model => domain}/Attendance.kt (86%) rename app/src/main/java/com/example/palto/{model => domain}/Card.kt (87%) rename app/src/main/java/com/example/palto/{model => domain}/Session.kt (77%) create mode 100644 app/src/main/java/com/example/palto/ui/NfcViewModel.kt delete mode 100644 app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListFragment.kt create mode 100644 app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt create mode 100644 app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt create mode 100644 app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt rename app/src/main/java/com/example/palto/ui/{attendanceList/AttendanceListAdapter.kt => session/SessionAdapter.kt} (72%) create mode 100644 app/src/main/java/com/example/palto/ui/session/SessionFragment.kt rename app/src/main/java/com/example/palto/ui/{attendanceList/AttendanceListViewModel.kt => session/SessionViewModel.kt} (67%) delete mode 100644 app/src/main/java/com/example/palto/ui/sessionList/SessionListAdapter.kt delete mode 100644 app/src/main/java/com/example/palto/ui/sessionList/SessionListFragment.kt delete mode 100644 app/src/main/java/com/example/palto/ui/sessionList/SessionListViewModel.kt rename app/src/main/res/layout/{fragment_attendance_item.xml => fragment_menu_item.xml} (61%) rename app/src/main/res/layout/{fragment_attendance_list.xml => fragment_menu_list.xml} (67%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 39d63cb..e50f1e9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,7 +29,6 @@ android { kotlinOptions { jvmTarget = "1.8" } - buildToolsVersion = "33.0.1" buildFeatures { viewBinding = true } @@ -38,16 +37,21 @@ android { dependencies { implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.appcompat:appcompat:1.6.1") - implementation("com.google.android.material:material:1.10.0") + implementation("com.google.android.material:material:1.11.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") - implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") - implementation("androidx.navigation:navigation-ui-ktx:2.7.5") - implementation("androidx.annotation:annotation:1.7.0") + implementation("androidx.navigation:navigation-fragment-ktx:2.7.6") + implementation("androidx.navigation:navigation-ui-ktx:2.7.6") + implementation("androidx.annotation:annotation:1.7.1") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") implementation("androidx.legacy:legacy-support-v4:1.0.0") - implementation("androidx.recyclerview:recyclerview:1.3.0") + implementation("androidx.recyclerview:recyclerview:1.3.2") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + + // Retrofit and Moshi for API requests. + implementation("com.squareup.retrofit2:retrofit:2.9.0") + implementation("com.squareup.retrofit2:converter-moshi:2.9.0") + implementation("com.squareup.moshi:moshi-kotlin:1.13.0") } \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/PaltoActivity.kt b/app/src/main/java/com/example/palto/PaltoActivity.kt index 8a70afa..f06d427 100644 --- a/app/src/main/java/com/example/palto/PaltoActivity.kt +++ b/app/src/main/java/com/example/palto/PaltoActivity.kt @@ -1,18 +1,20 @@ package com.example.palto import android.nfc.NfcAdapter -import android.nfc.Tag import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.activity.viewModels +import com.example.palto.ui.NfcViewModel +import com.example.palto.ui.UserViewModel class PaltoActivity : AppCompatActivity() { private var nfcAdapter: NfcAdapter? = null - private val paltoViewModel: PaltoViewModel by viewModels() + private val nfcViewModel: NfcViewModel by viewModels() + private val userViewModel: UserViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -32,11 +34,6 @@ class PaltoActivity : AppCompatActivity() { } setContentView(R.layout.activity_palto) - /* - val url = URL("https://www.faraphel.fr/palto/api/auth/token/") - val connection = url.openConnection() - val auth_data = Json.decodeFromString(connection.content) - */ } override fun onResume() { @@ -44,7 +41,7 @@ class PaltoActivity : AppCompatActivity() { nfcAdapter?.enableReaderMode( this, - paltoViewModel.tagLiveData::postValue, + nfcViewModel.tag::postValue, NfcAdapter.FLAG_READER_NFC_A or NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null ) @@ -57,8 +54,10 @@ class PaltoActivity : AppCompatActivity() { nfcAdapter?.disableReaderMode(this) } + /* @OptIn(ExperimentalStdlibApi::class) fun processTag(tag: Tag) { Log.d("NFC", "Tag ID : " + tag.id.toHexString()) } + */ } diff --git a/app/src/main/java/com/example/palto/data/repository/AttendanceRepository.kt b/app/src/main/java/com/example/palto/data/repository/AttendanceRepository.kt index 13a8631..a40f502 100644 --- a/app/src/main/java/com/example/palto/data/repository/AttendanceRepository.kt +++ b/app/src/main/java/com/example/palto/data/repository/AttendanceRepository.kt @@ -1,10 +1,10 @@ package com.example.palto.data.repository -import com.example.palto.data.network.ServerDataSource +import com.example.palto.data.network.PaltoApiService /** * */ -class AttendanceRepository(val dataSource: ServerDataSource) { +class AttendanceRepository() { // private val cards } \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/data/repository/SessionRepository.kt b/app/src/main/java/com/example/palto/data/repository/SessionRepository.kt index 3b4b4a7..177dc55 100644 --- a/app/src/main/java/com/example/palto/data/repository/SessionRepository.kt +++ b/app/src/main/java/com/example/palto/data/repository/SessionRepository.kt @@ -1,10 +1,10 @@ package com.example.palto.data.repository -import com.example.palto.data.network.ServerDataSource +import com.example.palto.data.network.PaltoApiService /** * */ -class SessionRepository(val dataSource: ServerDataSource) { +class SessionRepository(val dataSource: PaltoApiService) { // private val cards } \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/model/Attendance.kt b/app/src/main/java/com/example/palto/domain/Attendance.kt similarity index 86% rename from app/src/main/java/com/example/palto/model/Attendance.kt rename to app/src/main/java/com/example/palto/domain/Attendance.kt index 1288725..356ac19 100644 --- a/app/src/main/java/com/example/palto/model/Attendance.kt +++ b/app/src/main/java/com/example/palto/domain/Attendance.kt @@ -1,4 +1,4 @@ -package com.example.palto.model +package com.example.palto.domain import java.io.Serializable /** diff --git a/app/src/main/java/com/example/palto/model/Card.kt b/app/src/main/java/com/example/palto/domain/Card.kt similarity index 87% rename from app/src/main/java/com/example/palto/model/Card.kt rename to app/src/main/java/com/example/palto/domain/Card.kt index 8c55422..4683d05 100644 --- a/app/src/main/java/com/example/palto/model/Card.kt +++ b/app/src/main/java/com/example/palto/domain/Card.kt @@ -1,5 +1,4 @@ -package com.example.palto.model -import java.io.Serializable +package com.example.palto.domain data class Card( val id: String, diff --git a/app/src/main/java/com/example/palto/model/Session.kt b/app/src/main/java/com/example/palto/domain/Session.kt similarity index 77% rename from app/src/main/java/com/example/palto/model/Session.kt rename to app/src/main/java/com/example/palto/domain/Session.kt index 8a6827f..fef790f 100644 --- a/app/src/main/java/com/example/palto/model/Session.kt +++ b/app/src/main/java/com/example/palto/domain/Session.kt @@ -1,4 +1,4 @@ -package com.example.palto.model +package com.example.palto.domain import java.io.Serializable /** @@ -6,4 +6,4 @@ import java.io.Serializable */ data class Session( val id: String -) : Serializable \ No newline at end of file +) \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/NfcViewModel.kt b/app/src/main/java/com/example/palto/ui/NfcViewModel.kt new file mode 100644 index 0000000..058fc7b --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/NfcViewModel.kt @@ -0,0 +1,14 @@ +package com.example.palto.ui + +import android.nfc.Tag +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.example.palto.domain.User + +class NfcViewModel: ViewModel() { + val tag = MutableLiveData() + + private var _user : MutableLiveData = MutableLiveData() + val user : LiveData = _user +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListFragment.kt b/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListFragment.kt deleted file mode 100644 index 68773ab..0000000 --- a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListFragment.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.example.palto.ui.attendanceList - -import android.nfc.NfcAdapter -import android.nfc.Tag -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.lifecycle.Observer -import androidx.navigation.navGraphViewModels -import com.example.palto.PaltoViewModel -import com.example.palto.R -import com.example.palto.databinding.FragmentAttendanceListBinding - -/** - * A fragment representing a list of attendances. - */ -class AttendanceListFragment : Fragment() { - - private val attendanceListViewModel: AttendanceListViewModel by - navGraphViewModels(R.id.nav_graph) { AttendanceListViewModel.Factory } - - private val paltoViewModel: PaltoViewModel by - activityViewModels() - - private var _binding: FragmentAttendanceListBinding? = null - // This property is only valid between onCreateView and onDestroyView - private val binding get() = _binding!! - - /** - * Only inflate the view. - */ - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - _binding = FragmentAttendanceListBinding.inflate(inflater, container, false) - return binding.root - } - - /** - * Logic on the returned view of onCreateView. - */ - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated(view, savedInstanceState) - - // Set the adapter of the view for managing automatically the list of items on the screen. - val adapter = AttendanceListAdapter() - binding.list.adapter = adapter - attendanceListViewModel.cardsLiveData.observe(viewLifecycleOwner) { - Log.d("NFC", "A card has been had to the list") - adapter.submitList(it) - } - - // Set the listener for a new NFC tag. - paltoViewModel.tagLiveData.observe(viewLifecycleOwner) { - Log.d("NFC", "tag observer has been notified") - attendanceListViewModel.insertCard(it) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt b/app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt new file mode 100644 index 0000000..79db931 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt @@ -0,0 +1,69 @@ +package com.example.palto.ui.menu + +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.palto.databinding.FragmentMenuItemBinding +import com.example.palto.domain.Session + +/** + * A [ListAdapter] that can display [Session] items. + */ +class MenuAdapter : + ListAdapter(SessionDiffCallback) { + + /* + class ViewHolder(binding: FragmentSessionItemBinding) : + RecyclerView.ViewHolder(binding.root) { + + val idView: TextView = binding.itemNumber + val contentView: TextView = binding.content + + override fun toString(): String { + return super.toString() + " '" + contentView.text + "'" + } + } + */ + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + return ViewHolder( + FragmentMenuItemBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = getItem(position) + holder.idView.text = position.toString() + holder.contentView.text = item.id + } + + //override fun getItemCount(): Int = values.size + + inner class ViewHolder( + binding: FragmentMenuItemBinding + ) : RecyclerView.ViewHolder(binding.root) { + + val idView: TextView = binding.itemNumber + val contentView: TextView = binding.content + override fun toString(): String { + return super.toString() + " '" + idView.text + contentView.text + "'" + } + } +} + +object SessionDiffCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Session, newItem: Session): Boolean { + return oldItem == newItem + } + + override fun areContentsTheSame(oldItem: Session, newItem: Session): Boolean { + return oldItem.id == newItem.id + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt b/app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt new file mode 100644 index 0000000..4de1c00 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt @@ -0,0 +1,45 @@ +package com.example.palto.ui.menu + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.example.palto.databinding.FragmentMenuListBinding +import com.example.palto.databinding.FragmentSessionListBinding + +/** + * A fragment representing a list of Sessions. + */ +class MenuFragment : Fragment() { + + private val menuViewModel: MenuViewModel by viewModels() + + private var _binding: FragmentMenuListBinding? = 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 = FragmentMenuListBinding.inflate(inflater, container, false) + + val adapter = MenuAdapter() + binding.menuList.adapter = MenuAdapter() + menuViewModel.sessions.observe(viewLifecycleOwner) { + Log.d("PALTO", "A session has been created") + adapter.submitList(it) + } + + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + menuViewModel.createSession() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt b/app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt new file mode 100644 index 0000000..e953081 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt @@ -0,0 +1,21 @@ +package com.example.palto.ui.menu + +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.example.palto.data.repository.LoginRepository +import com.example.palto.domain.Session + +class MenuViewModel() : ViewModel() { + + private var _sessions = MutableLiveData>(emptyList()) + val sessions: LiveData> = _sessions + + fun createSession() { + val session = Session( + id = "aahh" + ) + _sessions.value = (_sessions.value ?: emptyList()) + session + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt b/app/src/main/java/com/example/palto/ui/session/SessionAdapter.kt similarity index 72% rename from app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt rename to app/src/main/java/com/example/palto/ui/session/SessionAdapter.kt index a7788b1..00a43ef 100644 --- a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt +++ b/app/src/main/java/com/example/palto/ui/session/SessionAdapter.kt @@ -1,4 +1,4 @@ -package com.example.palto.ui.attendanceList +package com.example.palto.ui.session import android.view.LayoutInflater import android.view.ViewGroup @@ -6,22 +6,18 @@ import android.widget.TextView import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.example.palto.databinding.FragmentAttendanceItemBinding -import com.example.palto.model.Card +import com.example.palto.databinding.FragmentSessionItemBinding +import com.example.palto.domain.Card /** - * + * A [ListAdapter] that can display [Card] items. */ -class AttendanceListAdapter : - ListAdapter(CardDiffCallback) { - - override fun onCreateViewHolder( - parent: ViewGroup, - viewType: Int - ): ViewHolder { +class SessionAdapter : + ListAdapter(CardDiffCallback) { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( - FragmentAttendanceItemBinding.inflate( + FragmentSessionItemBinding.inflate( LayoutInflater.from(parent.context), parent, false @@ -37,7 +33,7 @@ class AttendanceListAdapter : } inner class ViewHolder( - binding: FragmentAttendanceItemBinding + binding: FragmentSessionItemBinding ) : RecyclerView.ViewHolder(binding.root) { val cardId: TextView = binding.cardId diff --git a/app/src/main/java/com/example/palto/ui/session/SessionFragment.kt b/app/src/main/java/com/example/palto/ui/session/SessionFragment.kt new file mode 100644 index 0000000..d4fd9a1 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/session/SessionFragment.kt @@ -0,0 +1,56 @@ +package com.example.palto.ui.session + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.navGraphViewModels +import com.example.palto.ui.NfcViewModel +import com.example.palto.R +import com.example.palto.databinding.FragmentSessionListBinding + +/** + * A fragment representing a list of attendances. + */ +class SessionFragment : Fragment() { + + private val sessionViewModel: SessionViewModel by + navGraphViewModels(R.id.nav_graph) { SessionViewModel.Factory } + + private val nfcViewModel: NfcViewModel by + activityViewModels() + + private var _binding: FragmentSessionListBinding? = null + // This property is only valid between onCreateView and onDestroyView + private val binding get() = _binding!! + + /** + * Have the fragment instantiate the user interface. + */ + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = FragmentSessionListBinding.inflate(inflater, container, false) + + // Set the adapter of the view for managing automatically the list of items on the screen. + val adapter = SessionAdapter() + binding.sessionList.adapter = adapter + sessionViewModel.cards.observe(viewLifecycleOwner) { + Log.d("NFC", "A card has been had to the list") + adapter.submitList(it) + } + + // Set the listener for a new NFC tag. + nfcViewModel.tag.observe(viewLifecycleOwner) { + Log.d("NFC", "tag observer has been notified") + sessionViewModel.insertCard(it) + } + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListViewModel.kt b/app/src/main/java/com/example/palto/ui/session/SessionViewModel.kt similarity index 67% rename from app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListViewModel.kt rename to app/src/main/java/com/example/palto/ui/session/SessionViewModel.kt index a4efa38..a64dbc8 100644 --- a/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListViewModel.kt +++ b/app/src/main/java/com/example/palto/ui/session/SessionViewModel.kt @@ -1,4 +1,4 @@ -package com.example.palto.ui.attendanceList +package com.example.palto.ui.session import android.nfc.Tag import android.util.Log @@ -6,18 +6,18 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.example.palto.data.network.ServerDataSource import com.example.palto.data.repository.AttendanceRepository -import com.example.palto.model.Card +import com.example.palto.domain.Card /** * ViewModel of a session which has a list of attendances. */ -class AttendanceListViewModel( +class SessionViewModel( private val attendanceRepository: AttendanceRepository ) : ViewModel() { - val cardsLiveData: MutableLiveData> = MutableLiveData(emptyList()) + private val _cards: MutableLiveData> = MutableLiveData(emptyList()) + val cards = _cards as LiveData> fun insertCard(tag: Tag) { val card = Card( @@ -26,12 +26,12 @@ class AttendanceListViewModel( "tmp", "tmp" ) - cardsLiveData.value = (cardsLiveData.value ?: emptyList()) + card + _cards.value = (_cards.value ?: emptyList()) + card Log.d("NFC", "view model: A card has been had to the list") } /** - * ViewModel Factory. + * ViewModel Factory. */ companion object { @@ -40,8 +40,8 @@ class AttendanceListViewModel( override fun create( modelClass: Class ): T { - return AttendanceListViewModel( - AttendanceRepository(ServerDataSource()) + return SessionViewModel( + AttendanceRepository() ) as T } } diff --git a/app/src/main/java/com/example/palto/ui/sessionList/SessionListAdapter.kt b/app/src/main/java/com/example/palto/ui/sessionList/SessionListAdapter.kt deleted file mode 100644 index 24f492f..0000000 --- a/app/src/main/java/com/example/palto/ui/sessionList/SessionListAdapter.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.palto.ui.sessionList - -import androidx.recyclerview.widget.RecyclerView -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.TextView - -import com.example.palto.ui.sessionList.placeholder.PlaceholderContent.PlaceholderItem -import com.example.palto.databinding.FragmentSessionItemBinding - -/** - * [RecyclerView.Adapter] that can display a [PlaceholderItem]. - */ -class SessionListAdapter(private val values: List) : - RecyclerView.Adapter() { - - class ViewHolder(binding: FragmentSessionItemBinding) : - RecyclerView.ViewHolder(binding.root) { - - val idView: TextView = binding.itemNumber - val contentView: TextView = binding.content - - override fun toString(): String { - return super.toString() + " '" + contentView.text + "'" - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val view = FragmentSessionItemBinding.inflate( - LayoutInflater.from(parent.context), - parent, - false - ) - return ViewHolder(view) - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = values[position] - holder.idView.text = item.id - holder.contentView.text = item.content - } - - override fun getItemCount(): Int = values.size -} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/sessionList/SessionListFragment.kt b/app/src/main/java/com/example/palto/ui/sessionList/SessionListFragment.kt deleted file mode 100644 index 03424e1..0000000 --- a/app/src/main/java/com/example/palto/ui/sessionList/SessionListFragment.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.palto.ui.sessionList - -import android.os.Bundle -import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import com.example.palto.R -import com.example.palto.ui.sessionList.placeholder.PlaceholderContent - -/** - * A fragment representing a list of Sessions. - */ -class SessionListFragment : Fragment() { - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val view = inflater.inflate(R.layout.fragment_session_list, container, false) - - if (view is RecyclerView) { - view.layoutManager = LinearLayoutManager(context) - view.adapter = SessionListAdapter(PlaceholderContent.ITEMS) - } - return view - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/sessionList/SessionListViewModel.kt b/app/src/main/java/com/example/palto/ui/sessionList/SessionListViewModel.kt deleted file mode 100644 index d127a36..0000000 --- a/app/src/main/java/com/example/palto/ui/sessionList/SessionListViewModel.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.palto.ui.sessionList - -import androidx.lifecycle.ViewModel -import com.example.palto.data.repository.LoginRepository - -class SessionListViewModel(private val loginRepository: LoginRepository) : ViewModel() { - /* - private val _loginForm = MutableLiveData() - val loginFormState: LiveData = _loginForm - - private val _loginResult = MutableLiveData() - val loginResult: LiveData = _loginResult - */ -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_attendance_item.xml b/app/src/main/res/layout/fragment_menu_item.xml similarity index 61% rename from app/src/main/res/layout/fragment_attendance_item.xml rename to app/src/main/res/layout/fragment_menu_item.xml index b975c33..1877568 100644 --- a/app/src/main/res/layout/fragment_attendance_item.xml +++ b/app/src/main/res/layout/fragment_menu_item.xml @@ -5,7 +5,14 @@ android:orientation="horizontal"> + + \ No newline at end of file + tools:context=".ui.menu.MenuFragment" + tools:listitem="@layout/fragment_menu_item" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_session_item.xml b/app/src/main/res/layout/fragment_session_item.xml index 1877568..b975c33 100644 --- a/app/src/main/res/layout/fragment_session_item.xml +++ b/app/src/main/res/layout/fragment_session_item.xml @@ -5,14 +5,7 @@ android:orientation="horizontal"> - - \ 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 4b9c3fd..29dade6 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -3,20 +3,28 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph" - app:startDestination="@id/attendanceListFragment"> + app:startDestination="@id/menuFragment"> + android:id="@+id/menuFragment" + android:name="com.example.palto.ui.menu.MenuFragment" + android:label="fragment_menu_list" + tools:layout="@layout/fragment_menu_list" > + + + + \ No newline at end of file