diff --git a/app/src/main/java/com/example/bondoman/LogoutListener.kt b/app/src/main/java/com/example/bondoman/LogoutListener.kt new file mode 100644 index 0000000000000000000000000000000000000000..879ff6149ce67e1be76130ddce3f25f200e0ec65 --- /dev/null +++ b/app/src/main/java/com/example/bondoman/LogoutListener.kt @@ -0,0 +1,5 @@ +package com.example.bondoman + +interface LogoutListener { + fun handleLogout() +} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt index c07d3a05d5744c2ca3bc6feafd8a4027e267f7d8..757ba1af2877d4bf4cd11839b4f09fa98ce722cc 100644 --- a/app/src/main/java/com/example/bondoman/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/MainActivity.kt @@ -23,7 +23,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import java.util.concurrent.TimeUnit -class MainActivity : AppCompatActivity() { +class MainActivity : AppCompatActivity(), LogoutListener { lateinit var bottomNav: BottomNavigationView private lateinit var navHostFragment: NavHostFragment @@ -67,11 +67,11 @@ class MainActivity : AppCompatActivity() { true } R.id.graph -> { - loadFragment(SettingFragment()) + loadFragment(SettingFragment(),) true } R.id.settings -> { - loadFragment(SettingFragment()) + loadFragment(SettingFragment(),this@MainActivity) true } @@ -84,10 +84,14 @@ class MainActivity : AppCompatActivity() { } } - private fun loadFragment(fragment: Fragment) { + private fun loadFragment(fragment: Fragment, logoutListener: LogoutListener? = null) { val transaction = supportFragmentManager.beginTransaction() transaction.replace(R.id.frame_layout, fragment) transaction.commit() + + if (fragment is SettingFragment) { + fragment.setLogoutListener(logoutListener) + } } private suspend fun isLoggedIn(): Boolean { @@ -146,7 +150,7 @@ class MainActivity : AppCompatActivity() { finish() } - private fun handleLogout() { + override fun handleLogout() { val sharedPreferences = getSharedPreferences("app_prefs", Context.MODE_PRIVATE) sharedPreferences.edit().remove("token").apply() navigateToLogin() diff --git a/app/src/main/java/com/example/bondoman/SettingFragment.kt b/app/src/main/java/com/example/bondoman/SettingFragment.kt index 1566ed3778dc62649b10c8a79b0d43540293dd91..dc01d19814f1fe7bbbc678b57b1eef85a69f2c58 100644 --- a/app/src/main/java/com/example/bondoman/SettingFragment.kt +++ b/app/src/main/java/com/example/bondoman/SettingFragment.kt @@ -3,14 +3,13 @@ package com.example.bondoman import android.content.Intent import android.os.Bundle import android.os.Environment -import android.os.Message import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText -import android.widget.Toast import android.widget.Button +import android.widget.EditText import android.widget.RadioButton +import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.core.content.FileProvider import androidx.fragment.app.Fragment @@ -22,7 +21,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook import java.io.File import java.io.FileOutputStream import java.text.SimpleDateFormat -import java.util.* +import java.util.Locale class SettingFragment : Fragment() { @@ -30,6 +29,7 @@ class SettingFragment : Fragment() { private var selectedFormat: String = "XLSX" private val emailAddress = "husniazaya78@gmail.com" private val subject = "Daftar Transaksi Bondoman" + private var logoutListener: LogoutListener? = null companion object { private const val REQUEST_CODE_WRITE_EXTERNAL_STORAGE = 101 @@ -52,6 +52,10 @@ class SettingFragment : Fragment() { saveTransactionsToSpreadsheet(subject, selectedFormat, 2) } + view.findViewById<Button>(R.id.logout)?.setOnClickListener { + logoutListener?.handleLogout() + } + return view } @@ -202,4 +206,8 @@ class SettingFragment : Fragment() { return emailMessage } + + fun setLogoutListener(logoutListener: LogoutListener?) { + this.logoutListener = logoutListener + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/login_icon.xml b/app/src/main/res/drawable/login_icon.xml new file mode 100644 index 0000000000000000000000000000000000000000..61c0b74db403a09c881393727c77b8ca5e5635d6 --- /dev/null +++ b/app/src/main/res/drawable/login_icon.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="30dp" + android:height="31dp" + android:viewportWidth="30" + android:viewportHeight="31"> + <path + android:pathData="M15,26.75V24.25H23.75V6.75H15V4.25H23.75C24.438,4.25 25.026,4.495 25.516,4.985C26.006,5.475 26.251,6.063 26.25,6.75V24.25C26.25,24.938 26.005,25.526 25.516,26.016C25.027,26.506 24.438,26.751 23.75,26.75H15ZM12.5,21.75L10.781,19.938L13.969,16.75H3.75V14.25H13.969L10.781,11.063L12.5,9.25L18.75,15.5L12.5,21.75Z" + android:fillColor="#4f4f4f"/> +</vector> diff --git a/app/src/main/res/drawable/logout_icon.xml b/app/src/main/res/drawable/logout_icon.xml new file mode 100644 index 0000000000000000000000000000000000000000..cff018bc79faa9de9609b23c28cfa7a2bc80cf66 --- /dev/null +++ b/app/src/main/res/drawable/logout_icon.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="25dp" + android:height="24dp" + android:viewportWidth="25" + android:viewportHeight="24"> + <path + android:pathData="M3.75,21C3.2,21 2.729,20.804 2.338,20.413C1.947,20.022 1.751,19.551 1.75,19V5C1.75,4.45 1.946,3.979 2.338,3.588C2.73,3.197 3.201,3.001 3.75,3H10.75V5H3.75V19H10.75V21H3.75ZM14.75,17L13.375,15.55L15.925,13H7.75V11H15.925L13.375,8.45L14.75,7L19.75,12L14.75,17Z" + android:fillColor="#000000"/> +</vector> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 1a7735ce7bcfec0ed18d69cf43bcc6ed57cd7b54..c0e58302abd3b95d4349527ee732ca83f42b9a27 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -53,6 +53,8 @@ android:layout_gravity="start" android:layout_marginTop="16dp" android:layout_marginBottom="64dp" + android:drawableStart="@drawable/login_icon" + android:drawablePadding="10dp" android:text="@string/action_sign_in" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml index b658a37b830fd50930b42468b36ba9137c6ce9dd..ec96ce24947b1c795eaf382295c32ddb93d9434e 100644 --- a/app/src/main/res/layout/fragment_setting.xml +++ b/app/src/main/res/layout/fragment_setting.xml @@ -43,4 +43,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/download_button" /> + <Button + android:id="@+id/logout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawableStart="@drawable/logout_icon" + android:text="logout" + android:layout_marginTop="20dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/email_button"/> + </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file