diff --git a/app/src/main/java/com/example/palto/data/local/LocalDataSource.kt b/app/src/main/java/com/example/palto/data/local/LocalDataSource.kt index 11d6613..8d8c245 100644 --- a/app/src/main/java/com/example/palto/data/local/LocalDataSource.kt +++ b/app/src/main/java/com/example/palto/data/local/LocalDataSource.kt @@ -8,7 +8,7 @@ import java.io.IOException * Class that handles authentication w/ login credentials and retrieves user information. */ class LocalDataSource { - + /* fun login(username: String, password: String): Result { try { @@ -24,4 +24,5 @@ class LocalDataSource { fun logout() { // TODO: revoke authentication } + */ } \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/data/model/Attendance.kt b/app/src/main/java/com/example/palto/data/model/Attendance.kt new file mode 100644 index 0000000..a73a6f7 --- /dev/null +++ b/app/src/main/java/com/example/palto/data/model/Attendance.kt @@ -0,0 +1,10 @@ +package com.example.palto.data.model +import java.io.Serializable + +/** + * Data class that captures tokens for logged in users retrieved from LoginRepository + */ +data class Attendance( + val date: String, + val access: String +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/data/model/StudentCard.kt b/app/src/main/java/com/example/palto/data/model/StudentCard.kt new file mode 100644 index 0000000..3fd21dc --- /dev/null +++ b/app/src/main/java/com/example/palto/data/model/StudentCard.kt @@ -0,0 +1,9 @@ +package com.example.palto.data.model +import java.io.Serializable + +/** + * Data class that captures tokens for logged in users retrieved from LoginRepository + */ +data class StudentCard( + val id: String +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/data/network/ServerDataSource.kt b/app/src/main/java/com/example/palto/data/network/ServerDataSource.kt index 08c3e7a..ad7d664 100644 --- a/app/src/main/java/com/example/palto/data/network/ServerDataSource.kt +++ b/app/src/main/java/com/example/palto/data/network/ServerDataSource.kt @@ -12,36 +12,48 @@ class ServerDataSource { private var hostname: String? = null - fun requestToken(hostname: String, username: String, password: String): Result { + fun requestToken( + hostname: String, + username: String, + password: String + ): Result { try { - val tokens = Tokens() - return Result.Success() - } catch () { - return Result.Error() - } - } - - fun refreshToken(): Result { - - } - - fun verifyToken(): Boolean { - - } - - fun login(hostname: String, username: String, password: String): Result { - try { - /* - val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), "Jane Doe") - return Result.Success(fakeUser) - */ - return + val tokens = Tokens( + refresh = "aa", + access = "bb" + ) + return Result.Success(tokens) } catch (e: Throwable) { return Result.Error(IOException("Error logging in", e)) } } - fun logout() { - // TODO: revoke authentication + fun refreshToken(current_tokens: Tokens): Result { + return Result.Success(current_tokens) } + + fun verifyToken(): Boolean { + return true + } + + fun login( + hostname: String, + username: String, + password: String + ): Result { + try { + val fakeUser = LoggedInUser( + java.util.UUID.randomUUID().toString(), + "dede", + "Lucie", + "Doe", + "aa@free.fr", + ) + return Result.Success(fakeUser) + } catch (e: Throwable) { + return Result.Error(IOException("Error logging in", e)) + } + } + + fun logout() { } } \ No newline at end of file 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 new file mode 100644 index 0000000..e17bba6 --- /dev/null +++ b/app/src/main/java/com/example/palto/data/repository/AttendanceRepository.kt @@ -0,0 +1,13 @@ +package com.example.palto.data.repository + +import com.example.palto.data.Result +import com.example.palto.data.network.ServerDataSource +import com.example.palto.data.model.LoggedInUser +import com.example.palto.data.model.Tokens + +/** + * + */ +class AttendanceRepository(val dataSource: ServerDataSource) { + // private val cards +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/data/repository/LoginRepository.kt b/app/src/main/java/com/example/palto/data/repository/LoginRepository.kt index 73c1df2..ef52975 100644 --- a/app/src/main/java/com/example/palto/data/repository/LoginRepository.kt +++ b/app/src/main/java/com/example/palto/data/repository/LoginRepository.kt @@ -19,8 +19,6 @@ class LoginRepository(val dataSource: ServerDataSource) { get() = user != null init { - // If user credentials will be cached in local storage, it is recommended it be encrypted - // @see https://developer.android.com/training/articles/keystore user = null } @@ -38,7 +36,7 @@ class LoginRepository(val dataSource: ServerDataSource) { val result = dataSource.login(hostname, username, password) if (result is Result.Success) { - setTokens(result.data) + setLoggedInUser(result.data) } return result @@ -46,7 +44,5 @@ class LoginRepository(val dataSource: ServerDataSource) { private fun setLoggedInUser(loggedInUser: LoggedInUser) { this.user = loggedInUser - // If user credentials will be cached in local storage, it is recommended it be encrypted - // @see https://developer.android.com/training/articles/keystore } } \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/session/MyAttendanceRecyclerViewAdapter.kt b/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt similarity index 70% rename from app/src/main/java/com/example/palto/ui/session/MyAttendanceRecyclerViewAdapter.kt rename to app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt index 0c4a8ba..501ecaf 100644 --- a/app/src/main/java/com/example/palto/ui/session/MyAttendanceRecyclerViewAdapter.kt +++ b/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListAdapter.kt @@ -1,33 +1,30 @@ -package com.example.palto.ui.session +package com.example.palto.ui.attendanceList import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.widget.TextView -import com.example.palto.R -import com.example.palto.ui.session.placeholder.PlaceholderContent.PlaceholderItem -import com.example.palto.databinding.FragmentAttendanceBinding +import com.example.palto.ui.attendanceList.placeholder.PlaceholderContent.PlaceholderItem +import com.example.palto.databinding.FragmentAttendanceItemBinding /** * [RecyclerView.Adapter] that can display a [PlaceholderItem]. * TODO: Replace the implementation with code for your data type. */ -class MyAttendanceRecyclerViewAdapter( +class AttendanceListAdapter( private val values: List -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( - FragmentAttendanceBinding.inflate( + FragmentAttendanceItemBinding.inflate( LayoutInflater.from(parent.context), parent, false ) ) - } override fun onBindViewHolder(holder: ViewHolder, position: Int) { @@ -38,7 +35,7 @@ class MyAttendanceRecyclerViewAdapter( override fun getItemCount(): Int = values.size - inner class ViewHolder(binding: FragmentAttendanceBinding) : + inner class ViewHolder(binding: FragmentAttendanceItemBinding) : RecyclerView.ViewHolder(binding.root) { val idView: TextView = binding.itemNumber val contentView: TextView = binding.content @@ -47,5 +44,4 @@ class MyAttendanceRecyclerViewAdapter( return super.toString() + " '" + contentView.text + "'" } } - } \ 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 new file mode 100644 index 0000000..108aac1 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListFragment.kt @@ -0,0 +1,33 @@ +package com.example.palto.ui.attendanceList + +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 androidx.navigation.navGraphViewModels +import com.example.palto.R +import com.example.palto.ui.attendanceList.placeholder.PlaceholderContent + +/** + * A fragment representing a list of attendances. + */ +class AttendanceListFragment : Fragment() { + + private val attendanceListViewModel: AttendanceListViewModel by + navGraphViewModels(R.id.nav_graph) + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.fragment_attendance_list, container, false) + if (view is RecyclerView) { + view.layoutManager = LinearLayoutManager(context) + view.adapter = AttendanceListAdapter(PlaceholderContent.ITEMS) + } + return view + } +} \ 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/attendanceList/AttendanceListViewModel.kt new file mode 100644 index 0000000..fef9be7 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/attendanceList/AttendanceListViewModel.kt @@ -0,0 +1,34 @@ +package com.example.palto.ui.attendanceList + +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.data.repository.LoginRepository + +class AttendanceListViewModel( + private val attendanceRepository: AttendanceRepository +) : ViewModel() { + /* + private val _loginForm = MutableLiveData() + val loginFormState: LiveData = _loginForm + + private val _loginResult = MutableLiveData() + val loginResult: LiveData = _loginResult + */ + + class AttendanceListViewModelFactory : ViewModelProvider.Factory { + + //@Suppress("UNCHECKED_CAST") + override fun create(modelClass: Class): T { + if (modelClass.isAssignableFrom(AttendanceListViewModel::class.java)) { + return AttendanceListViewModel( + attendanceRepository = AttendanceRepository( + dataSource = ServerDataSource() + ) + ) as T + } + throw IllegalArgumentException("Unknown ViewModel class") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/attendanceList/placeholder/PlaceholderContent.kt b/app/src/main/java/com/example/palto/ui/attendanceList/placeholder/PlaceholderContent.kt new file mode 100644 index 0000000..50fc373 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/attendanceList/placeholder/PlaceholderContent.kt @@ -0,0 +1,57 @@ +package com.example.palto.ui.attendanceList.placeholder + +import java.util.ArrayList +import java.util.HashMap + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + * + * TODO: Replace all uses of this class before publishing your app. + */ +object PlaceholderContent { + + /** + * An array of sample (placeholder) items. + */ + val ITEMS: MutableList = ArrayList() + + /** + * A map of sample (placeholder) items, by ID. + */ + val ITEM_MAP: MutableMap = HashMap() + + private val COUNT = 25 + + init { + // Add some sample items. + for (i in 1..COUNT) { + addItem(createPlaceholderItem(i)) + } + } + + private fun addItem(item: PlaceholderItem) { + ITEMS.add(item) + ITEM_MAP.put(item.id, item) + } + + private fun createPlaceholderItem(position: Int): PlaceholderItem { + return PlaceholderItem(position.toString(), "Item " + position, makeDetails(position)) + } + + private fun makeDetails(position: Int): String { + val builder = StringBuilder() + builder.append("Details about Item: ").append(position) + for (i in 0..position - 1) { + builder.append("\nMore details information here.") + } + return builder.toString() + } + + /** + * A placeholder item representing a piece of content. + */ + data class PlaceholderItem(val id: String, val content: String, val details: String) { + override fun toString(): String = content + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/login/LoggedInUserView.kt b/app/src/main/java/com/example/palto/ui/login/LoggedInUserView.kt index e8a0b0c..8cddb61 100644 --- a/app/src/main/java/com/example/palto/ui/login/LoggedInUserView.kt +++ b/app/src/main/java/com/example/palto/ui/login/LoggedInUserView.kt @@ -1,9 +1,13 @@ package com.example.palto.ui.login +/* Est-ce que c’est util ? + * Updater la vue dans le fragment + */ + /** * User details post authentication that is exposed to the UI */ data class LoggedInUserView( val displayName: String //... other data fields that may be accessible to the UI -) \ No newline at end of file +) diff --git a/app/src/main/java/com/example/palto/ui/login/LoginFragment.kt b/app/src/main/java/com/example/palto/ui/login/LoginFragment.kt index 0a837b7..93b53e6 100644 --- a/app/src/main/java/com/example/palto/ui/login/LoginFragment.kt +++ b/app/src/main/java/com/example/palto/ui/login/LoginFragment.kt @@ -1,7 +1,6 @@ package com.example.palto.ui.login import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProvider import androidx.annotation.StringRes import androidx.fragment.app.Fragment import android.os.Bundle @@ -11,9 +10,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.inputmethod.EditorInfo -import android.widget.Button -import android.widget.EditText -import android.widget.ProgressBar import android.widget.Toast import androidx.navigation.fragment.findNavController import androidx.navigation.navGraphViewModels @@ -24,7 +20,7 @@ import com.example.palto.R class LoginFragment : Fragment() { private val loginViewModel: LoginViewModel by - navGraphViewModels (R.id.nav_graph) { LoginViewModelFactory() } + navGraphViewModels(R.id.nav_graph) { LoginViewModelFactory() } private var _binding: FragmentLoginBinding? = null diff --git a/app/src/main/java/com/example/palto/ui/login/LoginViewModel.kt b/app/src/main/java/com/example/palto/ui/login/LoginViewModel.kt index 0fa642e..4cb896d 100644 --- a/app/src/main/java/com/example/palto/ui/login/LoginViewModel.kt +++ b/app/src/main/java/com/example/palto/ui/login/LoginViewModel.kt @@ -4,10 +4,12 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import android.util.Patterns +import androidx.lifecycle.ViewModelProvider import com.example.palto.data.repository.LoginRepository import com.example.palto.data.Result import com.example.palto.R +import com.example.palto.data.network.ServerDataSource class LoginViewModel(private val loginRepository: LoginRepository) : ViewModel() { @@ -22,14 +24,17 @@ class LoginViewModel(private val loginRepository: LoginRepository) : ViewModel() username: String, password: String) { // can be launched in a separate asynchronous job - val result = loginRepository.login(username, password) + val result = loginRepository.login(hostname, username, password) + /* if (result is Result.Success) { _loginResult.value = - LoginResult(success = LoggedInUserView(displayName = result.data.displayName)) + LoginResult(success = LoggedInUserView( + displayName = result.data.displayName)) } else { _loginResult.value = LoginResult(error = R.string.login_failed) } + */ } fun loginDataChanged( @@ -64,4 +69,17 @@ class LoginViewModel(private val loginRepository: LoginRepository) : ViewModel() private fun isPasswordValid(password: String): Boolean { return password.length > 5 } -} \ No newline at end of file +} + +class LoginViewModelFactory : ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + if (modelClass.isAssignableFrom(LoginViewModel::class.java)) { + return LoginViewModel( + loginRepository = LoginRepository( + dataSource = ServerDataSource() + ) + ) as T + } + throw IllegalArgumentException("Unknown ViewModel class") + } +} diff --git a/app/src/main/java/com/example/palto/ui/login/LoginViewModelFactory.kt b/app/src/main/java/com/example/palto/ui/login/LoginViewModelFactory.kt deleted file mode 100644 index f418203..0000000 --- a/app/src/main/java/com/example/palto/ui/login/LoginViewModelFactory.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.example.palto.ui.login - -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import com.example.palto.data.network.ServerDataSource -import com.example.palto.data.repository.LoginRepository - -/** - * ViewModel provider factory to instantiate LoginViewModel. - * Required given LoginViewModel has a non-empty constructor - */ -class LoginViewModelFactory : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - if (modelClass.isAssignableFrom(LoginViewModel::class.java)) { - return LoginViewModel( - loginRepository = LoginRepository( - dataSource = ServerDataSource() - ) - ) as T - } - throw IllegalArgumentException("Unknown ViewModel class") - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/palto/ui/session/AttendanceListFragment.kt b/app/src/main/java/com/example/palto/ui/session/AttendanceListFragment.kt deleted file mode 100644 index f62d83c..0000000 --- a/app/src/main/java/com/example/palto/ui/session/AttendanceListFragment.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.example.palto.ui.session - -import android.os.Bundle -import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.GridLayoutManager -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.session.placeholder.PlaceholderContent - -/** - * A fragment representing a list of Items. - */ -class AttendanceListFragment : Fragment() { - - private var columnCount = 1 - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - arguments?.let { - columnCount = it.getInt(ARG_COLUMN_COUNT) - } - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val view = inflater.inflate(R.layout.fragment_attendance_list, container, false) - - // Set the adapter - if (view is RecyclerView) { - with(view) { - layoutManager = when { - columnCount <= 1 -> LinearLayoutManager(context) - else -> GridLayoutManager(context, columnCount) - } - adapter = MyAttendanceRecyclerViewAdapter(PlaceholderContent.ITEMS) - } - } - return view - } - - companion object { - - // TODO: Customize parameter argument names - const val ARG_COLUMN_COUNT = "column-count" - - // TODO: Customize parameter initialization - @JvmStatic - fun newInstance(columnCount: Int) = - AttendanceListFragment().apply { - arguments = Bundle().apply { - putInt(ARG_COLUMN_COUNT, columnCount) - } - } - } -} \ No newline at end of file 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 new file mode 100644 index 0000000..24f492f --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/sessionList/SessionListAdapter.kt @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000..03424e1 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/sessionList/SessionListFragment.kt @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..09235e6 --- /dev/null +++ b/app/src/main/java/com/example/palto/ui/sessionList/SessionListViewModel.kt @@ -0,0 +1,20 @@ +package com.example.palto.ui.sessionList + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import android.util.Patterns +import com.example.palto.data.repository.LoginRepository +import com.example.palto.data.Result + +import com.example.palto.R + +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/java/com/example/palto/ui/session/placeholder/PlaceholderContent.kt b/app/src/main/java/com/example/palto/ui/sessionList/placeholder/PlaceholderContent.kt similarity index 96% rename from app/src/main/java/com/example/palto/ui/session/placeholder/PlaceholderContent.kt rename to app/src/main/java/com/example/palto/ui/sessionList/placeholder/PlaceholderContent.kt index be71ed7..b085b2c 100644 --- a/app/src/main/java/com/example/palto/ui/session/placeholder/PlaceholderContent.kt +++ b/app/src/main/java/com/example/palto/ui/sessionList/placeholder/PlaceholderContent.kt @@ -1,4 +1,4 @@ -package com.example.palto.ui.session.placeholder +package com.example.palto.ui.sessionList.placeholder import java.util.ArrayList import java.util.HashMap diff --git a/app/src/main/res/layout/fragment_attendance.xml b/app/src/main/res/layout/fragment_attendance_item.xml similarity index 100% rename from app/src/main/res/layout/fragment_attendance.xml rename to app/src/main/res/layout/fragment_attendance_item.xml diff --git a/app/src/main/res/layout/fragment_attendance_list.xml b/app/src/main/res/layout/fragment_attendance_list.xml index 55cc8dd..318836a 100644 --- a/app/src/main/res/layout/fragment_attendance_list.xml +++ b/app/src/main/res/layout/fragment_attendance_list.xml @@ -3,11 +3,11 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/list" - android:name="com.example.palto.ui.session.AttendanceFragment" + android:name="com.example.palto.ui.attendanceList.AttendanceFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" app:layoutManager="LinearLayoutManager" - tools:context=".ui.session.AttendanceListFragment" - tools:listitem="@layout/fragment_attendance" /> \ No newline at end of file + tools:context=".ui.attendanceList.AttendanceListFragment" + tools:listitem="@layout/fragment_attendance_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 new file mode 100644 index 0000000..1877568 --- /dev/null +++ b/app/src/main/res/layout/fragment_session_item.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_session_list.xml b/app/src/main/res/layout/fragment_session_list.xml new file mode 100644 index 0000000..6e305ab --- /dev/null +++ b/app/src/main/res/layout/fragment_session_list.xml @@ -0,0 +1,13 @@ + + \ 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 e30f111..f87aa9a 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -13,9 +13,14 @@ android:id="@+id/action_loginFragment_to_attendanceFragment" app:destination="@id/attendanceFragment" /> + \ No newline at end of file