From dfece2bfdf98a95b375a9d77e3f33628d7286357 Mon Sep 17 00:00:00 2001 From: shaulascr Date: Tue, 22 Apr 2025 04:10:08 +0700 Subject: [PATCH] fix regist and ui home --- .../data/api/dto/RegisterRequest.kt | 2 +- .../alya/ecommerce_serang/ui/MainActivity.kt | 22 ++++++++- .../ui/auth/RegisterActivity.kt | 45 ++++++++++++++++++- .../ecommerce_serang/ui/home/HomeFragment.kt | 2 + .../ui/product/DetailProductActivity.kt | 20 +++++++++ .../ui/profile/ProfileFragment.kt | 1 - .../main/res/color/bottom_nav_icon_color.xml | 5 +++ .../main/res/color/bottom_nav_text_color.xml | 5 +++ .../res/drawable/bottom_nav_background.xml | 10 +++++ .../drawable/outline_calendar_today_24.xml | 5 +++ .../res/layout/activity_detail_product.xml | 7 +-- app/src/main/res/layout/activity_main.xml | 32 ++++++------- app/src/main/res/layout/activity_register.xml | 16 ++++--- app/src/main/res/layout/fragment_home.xml | 22 ++++----- app/src/main/res/layout/fragment_profile.xml | 8 +--- app/src/main/res/layout/view_search.xml | 1 + app/src/main/res/values/colors.xml | 5 +++ app/src/main/res/values/styles.xml | 35 +++++++++++++++ app/src/main/res/values/themes.xml | 39 +++++++++++++--- 19 files changed, 231 insertions(+), 51 deletions(-) create mode 100644 app/src/main/res/color/bottom_nav_icon_color.xml create mode 100644 app/src/main/res/color/bottom_nav_text_color.xml create mode 100644 app/src/main/res/drawable/bottom_nav_background.xml create mode 100644 app/src/main/res/drawable/outline_calendar_today_24.xml diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/RegisterRequest.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/RegisterRequest.kt index 19581dc..d1a4482 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/RegisterRequest.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/RegisterRequest.kt @@ -12,7 +12,7 @@ data class RegisterRequest ( val birthDate: String?, @SerializedName("userimg") - val image: String?, + val image: String? = null, val otp: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/MainActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/MainActivity.kt index 3877327..0500df0 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/MainActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/MainActivity.kt @@ -1,7 +1,11 @@ package com.alya.ecommerce_serang.ui import android.os.Bundle +import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.setupWithNavController @@ -25,7 +29,23 @@ class MainActivity : AppCompatActivity() { setContentView(binding.root) sessionManager = SessionManager(this) - apiService = ApiConfig.getApiService(sessionManager) // Inject SessionManager + apiService = ApiConfig.getApiService(sessionManager) + + WindowCompat.setDecorFitsSystemWindows(window, false) + + enableEdgeToEdge() + + // Apply insets to your root layout + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets -> + val systemBars = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.setPadding( + systemBars.left, + systemBars.top, + systemBars.right, + 0 + ) + windowInsets + } setupBottomNavigation() observeDestinationChanges() diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterActivity.kt index ec126d1..dbe2793 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterActivity.kt @@ -1,5 +1,6 @@ package com.alya.ecommerce_serang.ui.auth +import android.app.DatePickerDialog import android.content.Intent import android.os.Bundle import android.util.Log @@ -7,6 +8,9 @@ import android.widget.Toast import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import com.alya.ecommerce_serang.data.api.dto.RegisterRequest import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig import com.alya.ecommerce_serang.data.repository.Result @@ -16,6 +20,9 @@ import com.alya.ecommerce_serang.ui.MainActivity import com.alya.ecommerce_serang.utils.BaseViewModelFactory import com.alya.ecommerce_serang.utils.SessionManager import com.alya.ecommerce_serang.utils.viewmodel.RegisterViewModel +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Locale class RegisterActivity : AppCompatActivity() { private lateinit var binding: ActivityRegisterBinding @@ -38,10 +45,24 @@ class RegisterActivity : AppCompatActivity() { finish() } + WindowCompat.setDecorFitsSystemWindows(window, false) + enableEdgeToEdge() + + // Apply insets to your root layout + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets -> + val systemBars = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.setPadding( + systemBars.left, + systemBars.top, + systemBars.right, + systemBars.bottom + ) + windowInsets + } + binding = ActivityRegisterBinding.inflate(layoutInflater) setContentView(binding.root) - // Observe OTP state observeOtpState() @@ -53,7 +74,7 @@ class RegisterActivity : AppCompatActivity() { val phone = binding.etNumberPhone.text.toString() val username = binding.etUsername.text.toString() val name = binding.etFullname.text.toString() - val image = "not yet" + val image = null val userData = RegisterRequest(name, email, password, username, phone, birthDate, image) @@ -94,6 +115,9 @@ class RegisterActivity : AppCompatActivity() { startActivity(intent) } + binding.etBirthDate.setOnClickListener{ + showDatePicker() + } } private fun observeOtpState() { @@ -140,4 +164,21 @@ class RegisterActivity : AppCompatActivity() { } } } + + private fun showDatePicker() { + val calendar = Calendar.getInstance() + val year = calendar.get(Calendar.YEAR) + val month = calendar.get(Calendar.MONTH) + val day = calendar.get(Calendar.DAY_OF_MONTH) + + DatePickerDialog( + this, + { _, selectedYear, selectedMonth, selectedDay -> + calendar.set(selectedYear, selectedMonth, selectedDay) + val sdf = SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()) + binding.etBirthDate.setText(sdf.format(calendar.time)) + }, + year, month, day + ).show() + } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/home/HomeFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/home/HomeFragment.kt index b9b6fc4..381ad69 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/home/HomeFragment.kt @@ -49,6 +49,7 @@ class HomeFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sessionManager = SessionManager(requireContext()) + } override fun onCreateView( @@ -62,6 +63,7 @@ class HomeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + initUi() setupRecyclerView() observeData() diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/product/DetailProductActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/product/DetailProductActivity.kt index bb10bdb..4be3e57 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/product/DetailProductActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/product/DetailProductActivity.kt @@ -9,8 +9,12 @@ import android.widget.Button import android.widget.ImageButton import android.widget.TextView import android.widget.Toast +import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.BuildConfig.BASE_URL import com.alya.ecommerce_serang.R @@ -57,6 +61,22 @@ class DetailProductActivity : AppCompatActivity() { sessionManager = SessionManager(this) apiService = ApiConfig.getApiService(sessionManager) + WindowCompat.setDecorFitsSystemWindows(window, false) + + enableEdgeToEdge() + + // Apply insets to your root layout + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets -> + val systemBars = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.setPadding( + systemBars.left, + systemBars.top, + systemBars.right, + systemBars.bottom + ) + windowInsets + } + setupUI() setupObservers() loadData() diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt index b527fd9..d1921f9 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt @@ -39,7 +39,6 @@ class ProfileFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sessionManager = SessionManager(requireContext()) - } override fun onCreateView( diff --git a/app/src/main/res/color/bottom_nav_icon_color.xml b/app/src/main/res/color/bottom_nav_icon_color.xml new file mode 100644 index 0000000..1da8b16 --- /dev/null +++ b/app/src/main/res/color/bottom_nav_icon_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/bottom_nav_text_color.xml b/app/src/main/res/color/bottom_nav_text_color.xml new file mode 100644 index 0000000..481be1a --- /dev/null +++ b/app/src/main/res/color/bottom_nav_text_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_nav_background.xml b/app/src/main/res/drawable/bottom_nav_background.xml new file mode 100644 index 0000000..68362a6 --- /dev/null +++ b/app/src/main/res/drawable/bottom_nav_background.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/outline_calendar_today_24.xml b/app/src/main/res/drawable/outline_calendar_today_24.xml new file mode 100644 index 0000000..5ca556c --- /dev/null +++ b/app/src/main/res/drawable/outline_calendar_today_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_detail_product.xml b/app/src/main/res/layout/activity_detail_product.xml index f9182d4..65458ad 100644 --- a/app/src/main/res/layout/activity_detail_product.xml +++ b/app/src/main/res/layout/activity_detail_product.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/white" + android:theme="@style/Theme.Ecommerce_serang" tools:context=".ui.product.DetailProductActivity"> @@ -147,7 +147,8 @@ android:id="@+id/recyclerViewReviews" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="4dp" + android:layout_marginBottom="8dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:itemCount="1" tools:listitem="@layout/item_review" /> @@ -392,6 +393,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:layout_marginBottom="8dp" android:orientation="horizontal" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:itemCount="3" @@ -419,7 +421,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:backgroundTint="@color/white" app:contentInsetStart="0dp"> - + app:itemIconSize="32dp" + app:itemPaddingBottom="4dp" + app:itemTextAppearanceActive="@style/BottomNavigationTextStyle" + app:itemTextAppearanceInactive="@style/BottomNavigationTextStyle" + android:elevation="8dp" + app:itemIconTint="@color/bottom_nav_icon_color" + app:itemTextColor="@color/bottom_nav_text_color" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml index a23ce3e..6485770 100644 --- a/app/src/main/res/layout/activity_register.xml +++ b/app/src/main/res/layout/activity_register.xml @@ -5,7 +5,7 @@ android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/white" + android:theme="@style/Theme.Ecommerce_serang" tools:context=".ui.auth.RegisterActivity"> + + style="@style/SharpedBorderStyleOutline" + app:endIconMode="custom" + app:endIconDrawable="@drawable/outline_calendar_today_24"> - + android:hint="Pilih tanggal" + android:focusable="false" + android:clickable="true" + android:minHeight="50dp"/> @@ -58,8 +61,8 @@ android:layout_marginEnd="32dp" android:text="@string/show_all" android:textAllCaps="false" - android:textColor="@color/blue1" - android:textSize="16sp" + android:textColor="@color/blue_600" + android:textSize="14sp" app:layout_constraintBaseline_toBaselineOf="@id/categoriesText" app:layout_constraintEnd_toEndOf="parent" /> @@ -67,7 +70,7 @@ android:id="@+id/categories" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="19dp" + android:layout_marginTop="8dp" android:clipChildren="false" android:clipToPadding="false" android:orientation="horizontal" @@ -77,16 +80,15 @@ tools:layout_editor_absoluteX="0dp" tools:listitem="@layout/item_category_home" /> - - @@ -98,7 +100,7 @@ android:layout_marginEnd="32dp" android:text="@string/show_all" android:textAllCaps="false" - android:textColor="@color/blue1" + android:textColor="@color/blue_600" android:textSize="16sp" app:layout_constraintBaseline_toBaselineOf="@id/new_products_text" app:layout_constraintEnd_toEndOf="parent" /> diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index afbd7ec..22363c9 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -5,6 +5,7 @@ android:layout_height="match_parent" android:background="@color/white" xmlns:app="http://schemas.android.com/apk/res-auto" + android:theme="@style/Theme.Ecommerce_serang" tools:context=".ui.profile.ProfileFragment"> @@ -320,12 +321,5 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/tvLogout" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/view_search.xml b/app/src/main/res/layout/view_search.xml index 2a2a3c9..3f7d5b6 100644 --- a/app/src/main/res/layout/view_search.xml +++ b/app/src/main/res/layout/view_search.xml @@ -12,6 +12,7 @@ android:hint="@string/fragment_home_search" android:textColor="@color/soft_gray" android:textSize="16sp" + android:fontFamily="@font/dmsans_regular" android:layout_marginStart="8dp" android:drawablePadding="8dp" android:paddingHorizontal="25dp" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8aa4f32..25b40eb 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -41,4 +41,9 @@ #E8ECF2 #7D8FAB #489EC6 + + #489EC6 + #8E8E8E + #489EC6 + #8E8E8E \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 06b23b1..dcf0226 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -25,4 +25,39 @@ 8dp @color/blue_500 + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0da93ba..24782af 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,16 +1,45 @@