diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 741e417c6331097475581578e91bbda38cfd59c6..38454a5253b469f4580a66342a601d4216dd798e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.androidx.navigation.fragment.ktx) implementation(libs.androidx.navigation.ui.ktx) + implementation(libs.androidx.lifecycle.viewmodel.compose) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..7f8e861bbcd897e96fa857e18fa6ffdee14eb234 --- /dev/null +++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt @@ -0,0 +1,55 @@ +package com.onionsquad.bondoman + +import android.content.Intent +import android.os.Bundle +import android.widget.Button +import android.widget.EditText +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.ViewModelProvider +import com.onionsquad.bondoman.room.TransactionEntity +import com.onionsquad.bondoman.ui.transaction.TransactionViewModel +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +class AddTransactionActivity : AppCompatActivity() { + private lateinit var viewModel: TransactionViewModel + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_add_transaction) + + val titleEditText: EditText = findViewById(R.id.titleEditText) + val amountEditText: EditText = findViewById(R.id.amountEditText) + val categoryEditText: EditText = findViewById(R.id.categoryEditText) + val locationEditText: EditText = findViewById(R.id.locationEditText) + + viewModel = ViewModelProvider(this).get(TransactionViewModel::class.java) + + val saveButton: Button = findViewById(R.id.saveButton) + saveButton.setOnClickListener { + val title = titleEditText.text.toString() + val amount = amountEditText.text.toString().toDoubleOrNull() ?: 0.0 + val category = categoryEditText.text.toString() + val location = locationEditText.text.toString() + + // Dapatkan tanggal saat ini + val currentDate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date()) + + val transaction = TransactionEntity( + title = title, + amount = amount, + category = category, + date = currentDate, + location = location + ) + + viewModel.insertTransaction(transaction) + + + // Navigasi kembali ke halaman daftar transaksi + Intent(this@AddTransactionActivity, MainActivity::class.java).also { + startActivity(it) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt index d43791d0f9b611492d3e60d466a0a93a6fe3c877..915ec662c638d026f1c3fc530550b248df2de390 100644 --- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt +++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionFragment.kt @@ -1,11 +1,15 @@ package com.onionsquad.bondoman.ui.transaction +import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import com.onionsquad.bondoman.AddTransactionActivity +import com.onionsquad.bondoman.R import com.onionsquad.bondoman.databinding.FragmentTransactionBinding class TransactionFragment : Fragment() { @@ -26,6 +30,11 @@ class TransactionFragment : Fragment() { _binding = FragmentTransactionBinding.inflate(inflater, container, false) + binding.button.setOnClickListener { + val intent = Intent(activity, AddTransactionActivity::class.java) + startActivity(intent) + } + return binding.root } diff --git a/app/src/main/res/layout/activity_add_transaction.xml b/app/src/main/res/layout/activity_add_transaction.xml new file mode 100644 index 0000000000000000000000000000000000000000..1858a85b38c01dfd8eda38a6101a69ec026fd3a5 --- /dev/null +++ b/app/src/main/res/layout/activity_add_transaction.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Transaksi" + android:textSize="24sp" + android:textStyle="bold" /> + + <EditText + android:id="@+id/titleEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:hint="Judul" + android:inputType="text" /> + + <EditText + android:id="@+id/amountEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:hint="Nominal" + android:inputType="numberDecimal" /> + + <EditText + android:id="@+id/categoryEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:hint="Kategori" + android:inputType="text" /> + + <EditText + android:id="@+id/locationEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:hint="Lokasi" + android:inputType="text" /> + + <Button + android:id="@+id/saveButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="Simpan" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml index 57a856060acfaabd0a791420812b73e086ff07f7..26af3dd3316b3d39d8d4a93547724bcb95a87311 100644 --- a/app/src/main/res/layout/fragment_transaction.xml +++ b/app/src/main/res/layout/fragment_transaction.xml @@ -4,4 +4,17 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.transaction.TransactionFragment"/> \ No newline at end of file + tools:context=".ui.transaction.TransactionFragment"> + + <Button + android:id="@+id/button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Button" + android:visibility="visible" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7a4150f5990e4ff059bbeecc36965eb4d87cdadf..8031a6ace0040befe3adec2b86274f0cd7293bed 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,6 +14,7 @@ navigationFragmentKtx = "2.6.0" navigationUiKtx = "2.6.0" room = "2.6.1" kapt = "1.9.23" +lifecycleViewmodelCompose = "2.7.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -31,6 +32,7 @@ room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = " room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } room-common = { group = "androidx.room", name = "room-common", version.ref = "room" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleViewmodelCompose" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" }