- android bumblebee gradle migration

- lint driverDebug
 - view binding migration

Took 12 hours 10 minutes
This commit is contained in:
2023-03-24 19:15:48 +00:00
parent 7f4060f1c2
commit 1b00d7d40d
125 changed files with 1163 additions and 1013 deletions

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:icon="@mipmap/ic_launcher"
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round">
<activity
android:name="h_mal.appttude.com.ui.user.LoginActivity"
@@ -23,6 +24,7 @@
<activity
android:name="h_mal.appttude.com.ui.update.UpdateActivity"
android:theme="@style/AppTheme.NoActionBar.Update" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="h_mal.appttude.com.driver"

View File

@@ -1,25 +1,32 @@
package h_mal.appttude.com.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentDriverOverallBinding
import h_mal.appttude.com.utils.navigateTo
import kotlinx.android.synthetic.main.fragment_driver_overall.*
class DriverOverallFragment : Fragment(R.layout.fragment_driver_overall) {
class DriverOverallFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
driver_prof.setOnClickListener {
it.navigateTo(R.id.to_driverProfileFragment)
}
private_hire.setOnClickListener {
it.navigateTo(R.id.to_privateHireLicenseFragment2)
}
drivers_license.setOnClickListener {
it.navigateTo(R.id.to_driverLicenseFragment)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return FragmentDriverOverallBinding.inflate(inflater, container, false).apply {
driverProf.setOnClickListener {
it.navigateTo(R.id.to_driverProfileFragment)
}
privateHire.setOnClickListener {
it.navigateTo(R.id.to_privateHireLicenseFragment2)
}
driversLicense.setOnClickListener {
it.navigateTo(R.id.to_driverLicenseFragment)
}
}.root
}
}

View File

@@ -5,54 +5,56 @@ import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.data.DRIVER
import h_mal.appttude.com.databinding.FragmentHomeDriverBinding
import h_mal.appttude.com.utils.hide
import h_mal.appttude.com.utils.navigateTo
import h_mal.appttude.com.utils.show
import h_mal.appttude.com.viewmodels.RoleViewModel
import kotlinx.android.synthetic.main.driver_profile_request.*
import kotlinx.android.synthetic.main.fragment_home_driver.*
import kotlinx.android.synthetic.main.home_buttons_container.*
class HomeFragment : DataSubmissionBaseFragment<RoleViewModel, String>(R.layout.fragment_home_driver) {
class HomeFragment :
DataSubmissionBaseFragment<RoleViewModel, FragmentHomeDriverBinding, String>() {
private val viewmodel: RoleViewModel by getFragmentViewModel()
override fun getViewModel(): RoleViewModel = viewmodel
override var model = String()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewmodel.getDataFromDatabase()
viewModel.getDataFromDatabase()
}
override fun onSuccess(data: Any?) {
super.onSuccess(data)
if (data == DRIVER){
if (data == DRIVER) {
loadDriver()
return
}
loadNonDriver()
}
private fun loadNonDriver(){
home_buttons_container.hide()
profile_request_container.show()
private fun loadNonDriver() {
applyBinding {
homeButtonsContainer.root.hide()
profileRequestContainer.root.show()
request_driver_button.setOnClickListener {
viewmodel.setDataInDatabase(DRIVER)
profileRequestContainer.requestDriverButton.setOnClickListener {
viewModel.setDataInDatabase(DRIVER)
}
}
}
private fun loadDriver(){
home_buttons_container.show()
profile_request_container.hide()
driver.setOnClickListener {
view?.navigateTo(R.id.to_driverOverallFragment)
}
car.setOnClickListener {
view?.navigateTo(R.id.to_vehicleOverallFragment)
private fun loadDriver() {
applyBinding {
homeButtonsContainer.apply {
driver.setOnClickListener {
view?.navigateTo(R.id.to_driverOverallFragment)
}
car.setOnClickListener {
view?.navigateTo(R.id.to_vehicleOverallFragment)
}
root.show()
}
profileRequestContainer.root.hide()
}
}

View File

@@ -1,9 +1,7 @@
package h_mal.appttude.com.ui
import android.os.Bundle
import android.view.MenuItem
import android.view.View
import androidx.core.view.GravityCompat
import androidx.navigation.NavController
import androidx.navigation.findNavController
@@ -15,36 +13,30 @@ import com.google.android.material.navigation.NavigationView
import com.google.firebase.auth.FirebaseUser
import h_mal.appttude.com.R
import h_mal.appttude.com.base.BaseActivity
import h_mal.appttude.com.databinding.ActivityMainBinding
import h_mal.appttude.com.databinding.NavHeaderMainBinding
import h_mal.appttude.com.dialogs.ExitDialog.displayExitDialog
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.MainViewModel
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.nav_header_main.view.*
class MainActivity : BaseActivity<MainViewModel>(),
class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
NavigationView.OnNavigationItemSelectedListener {
private val vm by createLazyViewModel<MainViewModel>()
override fun getViewModel(): MainViewModel = vm
override val layoutId: Int = R.layout.activity_main
lateinit var navController: NavController
lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setSupportActionBar(toolbar)
override fun setupView(binding: ActivityMainBinding) = binding.run {
setSupportActionBar(appBarLayout.toolbar)
supportActionBar?.setDisplayShowTitleEnabled(false)
navController = findNavController(R.id.container)
appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
nav_view.setupWithNavController(navController)
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
navView.setupWithNavController(navController)
setupActionBarWithNavController(navController, appBarConfiguration)
getViewModel().getUserDetails()
viewModel.getUserDetails()
setupLogoutInDrawer()
}
@@ -53,24 +45,29 @@ class MainActivity : BaseActivity<MainViewModel>(),
}
override fun setTitle(title: CharSequence) {
toolbar.title = title
applyBinding {
appBarLayout.toolbar.title = title
}
}
override fun onBackPressed() {
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START)
} else {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
navHostFragment?.childFragmentManager?.backStackEntryCount?.takeIf { it >= 1 }?.let {
return super.onBackPressed()
applyBinding {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START)
} else {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
navHostFragment?.childFragmentManager?.backStackEntryCount?.let { it >= 1 }?.isTrue {
super.onBackPressed()
}
displayExitDialog()
}
displayExitDialog()
}
}
override fun onSuccess(data: Any?) {
super.onSuccess(data)
when(data){
when (data) {
is FirebaseUser -> {
setupDrawer(data)
}
@@ -78,24 +75,32 @@ class MainActivity : BaseActivity<MainViewModel>(),
}
private fun setupDrawer(user: FirebaseUser) {
val header: View = nav_view.getHeaderView(0)
header.driver_email.text = user.email
header.driver_name.text = user.displayName
header.profileImage.setGlideImage(user.photoUrl)
applyBinding {
NavHeaderMainBinding.inflate(layoutInflater).apply {
driverEmail.text = user.email
driverName.text = user.displayName
profileImage.setGlideImage(user.photoUrl)
}
}
}
private fun setupLogoutInDrawer(){
logout.setOnClickListener {
getViewModel().logOut()
private fun setupLogoutInDrawer() {
applyBinding {
logout.setOnClickListener {
viewModel.logOut()
}
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.
when (item.itemId) {
R.id.nav_user_settings -> { }
R.id.nav_user_settings -> {}
}
drawer_layout.closeDrawer(GravityCompat.START)
applyBinding {
drawerLayout.closeDrawer(GravityCompat.START)
}
return true
}
}

View File

@@ -1,23 +1,30 @@
package h_mal.appttude.com.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentVehicleOverallBinding
import h_mal.appttude.com.utils.navigateTo
import kotlinx.android.synthetic.main.fragment_vehicle_overall.*
class VehicleOverallFragment : Fragment(R.layout.fragment_vehicle_overall) {
class VehicleOverallFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
vehicle_prof.setOnClickListener { it.navigateTo(R.id.to_vehicleSetupFragment) }
insurance.setOnClickListener { it.navigateTo(R.id.to_insuranceFragment) }
mot.setOnClickListener { it.navigateTo(R.id.to_motFragment) }
logbook.setOnClickListener { it.navigateTo(R.id.to_logbookFragment) }
private_hire_vehicle_license.setOnClickListener { it.navigateTo(R.id.to_privateHireVehicleFragment) }
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return FragmentVehicleOverallBinding.inflate(inflater, container, false).apply {
vehicleProf.setOnClickListener {
it.navigateTo(R.id.to_vehicleSetupFragment)
}
insurance.setOnClickListener { it.navigateTo(R.id.to_insuranceFragment) }
mot.setOnClickListener { it.navigateTo(R.id.to_motFragment) }
logbook.setOnClickListener { it.navigateTo(R.id.to_logbookFragment) }
privateHireVehicleLicense.setOnClickListener { it.navigateTo(R.id.to_privateHireVehicleFragment) }
}.root
}
}

View File

@@ -1,20 +1,26 @@
package h_mal.appttude.com.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentWelcomeBinding
import h_mal.appttude.com.utils.navigateTo
import kotlinx.android.synthetic.driver.fragment_welcome.*
class WelcomeFragment : Fragment(R.layout.fragment_welcome) {
class WelcomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
email_sign_in_button.setOnClickListener {
view.navigateTo(R.id.to_driverOverallFragment)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return FragmentWelcomeBinding.inflate(inflater, container, false).apply {
emailSignInButton.setOnClickListener {
it.navigateTo(R.id.to_driverOverallFragment)
}
}.root
}
}

View File

@@ -1,59 +1,54 @@
package h_mal.appttude.com.ui.driverprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentDriverLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.DriversLicenseObject
import h_mal.appttude.com.model.DriversLicense
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.DriverLicenseViewModel
import kotlinx.android.synthetic.main.fragment_driver_license.*
class DriverLicenseFragment :
DataSubmissionBaseFragment<DriverLicenseViewModel, DriversLicenseObject>(R.layout.fragment_driver_license) {
DataSubmissionBaseFragment<DriverLicenseViewModel, FragmentDriverLicenseBinding, DriversLicense>() {
private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
override fun getViewModel(): DriverLicenseViewModel = viewmodel
override var model = DriversLicenseObject()
override var model = DriversLicense()
private var imageUri: Uri? = null
override fun setupView(binding: FragmentDriverLicenseBinding) {
binding.apply {
licExpiry.apply {
setTextOnChange { model.licenseExpiry = it }
setOnClickListener {
DateDialog(this) { date ->
model.licenseExpiry = date
}
}
}
licNo.setTextOnChange { model.licenseNumber = it }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
lic_expiry.apply {
setTextOnChange { model.licenseExpiry = it }
setOnClickListener {
DateDialog(this) { date ->
model.licenseExpiry = date
searchImage.setOnClickListener { openGalleryWithPermissionRequest() }
submit.setOnClickListener {
validateEditTexts(licExpiry, licNo).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
lic_no.setTextOnChange { model.licenseNumber = it }
search_image.setOnClickListener { openGalleryWithPermissionRequest() }
submit.setOnClickListener { submit() }
}
override fun submit() {
validateEditTexts(lic_expiry, lic_no).takeIf { !it }?.let { return }
viewmodel.setDataInDatabase(model, imageUri)
}
override fun setFields(data: DriversLicenseObject) {
override fun setFields(data: DriversLicense) {
super.setFields(data)
driversli_img.setGlideImage(data.licenseImageString)
lic_no.setText(data.licenseNumber)
lic_expiry.setText(data.licenseExpiry)
applyBinding {
driversliImg.setGlideImage(data.licenseImageString)
licNo.setText(data.licenseNumber)
licExpiry.setText(data.licenseExpiry)
}
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
this.imageUri = imageUri
driversli_img.setGlideImage(imageUri)
applyBinding {
driversliImg.setGlideImage(imageUri)
}
}
}

View File

@@ -1,77 +1,74 @@
package h_mal.appttude.com.ui.driverprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentDriverProfileBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.DriverProfileObject
import h_mal.appttude.com.model.DriverProfile
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.DriverProfileViewModel
import kotlinx.android.synthetic.main.fragment_driver_profile.*
class DriverProfileFragment: DataSubmissionBaseFragment
<DriverProfileViewModel, DriverProfileObject>(R.layout.fragment_driver_profile) {
class DriverProfileFragment :
DataSubmissionBaseFragment<DriverProfileViewModel, FragmentDriverProfileBinding, DriverProfile>() {
var localUri: Uri? = null
override var model = DriverProfile()
private val viewmodel by getFragmentViewModel<DriverProfileViewModel>()
override fun getViewModel(): DriverProfileViewModel = viewmodel
override var model = DriverProfileObject()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
names_input.setTextOnChange{ model.forenames = it }
address_input.setTextOnChange{ model.address = it }
postcode_input.setTextOnChange{ model.postcode = it }
dob_input.apply {
setTextOnChange{ model.dob = it }
setOnClickListener {
DateDialog(this){ date ->
model.dob = date
}
override fun setupView(binding: FragmentDriverProfileBinding) = binding.run {
namesInput.setTextOnChange { model.forenames = it }
addressInput.setTextOnChange { model.address = it }
postcodeInput.setTextOnChange { model.postcode = it }
dobInput.apply {
setTextOnChange { model.dob = it }
setOnClickListener {
DateDialog(this) { date ->
model.dob = date
}
}
ni_number.setTextOnChange{ model.ni = it }
date_first.apply {
setTextOnChange{ model.dateFirst = it }
}
niNumber.setTextOnChange { model.ni = it }
dateFirst.apply {
setTextOnChange { model.dateFirst = it }
setOnClickListener {
DateDialog(this){ date ->
DateDialog(this) { date ->
model.dateFirst = date
}
}
}
add_photo.setOnClickListener { openGalleryWithPermissionRequest() }
submit_driver.setOnClickListener{ submit() }
addPhoto.setOnClickListener { openGalleryWithPermissionRequest() }
submitDriver.setOnClickListener { submit() }
}
override fun submit(){
validateEditTexts(names_input, address_input, postcode_input,
dob_input, ni_number, date_first)
.takeIf { !it }
?.let { return }
viewmodel.setDataInDatabase(model, localUri)
override fun submit() {
applyBinding {
validateEditTexts(
namesInput, addressInput, postcodeInput,
dobInput, niNumber, dateFirst
).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
override fun setFields(data: DriverProfileObject) {
override fun setFields(data: DriverProfile) {
super.setFields(data)
driver_pic.setGlideImage(data.driverPic)
names_input.setText(data.forenames)
address_input.setText(data.address)
postcode_input.setText(data.postcode)
dob_input.setText(data.dob)
ni_number.setText(data.ni)
date_first.setText(data.dateFirst)
applyBinding {
driverPic.setGlideImage(data.driverPic)
namesInput.setText(data.forenames)
addressInput.setText(data.address)
postcodeInput.setText(data.postcode)
dobInput.setText(data.dob)
niNumber.setText(data.ni)
dateFirst.setText(data.dateFirst)
}
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
localUri = imageUri
driver_pic.setGlideImage(imageUri)
applyBinding {
driverPic.setGlideImage(imageUri)
}
}
}

View File

@@ -1,57 +1,57 @@
package h_mal.appttude.com.ui.driverprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.PrivateHireObject
import h_mal.appttude.com.model.PrivateHireLicense
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.PrivateHireLicenseViewModel
import kotlinx.android.synthetic.main.fragment_private_hire_license.*
class PrivateHireLicenseFragment : DataSubmissionBaseFragment
<PrivateHireLicenseViewModel, PrivateHireObject>(R.layout.fragment_private_hire_license) {
<PrivateHireLicenseViewModel, FragmentPrivateHireLicenseBinding, PrivateHireLicense>() {
val viewmodel by getFragmentViewModel<PrivateHireLicenseViewModel>()
override fun getViewModel(): PrivateHireLicenseViewModel = viewmodel
override var model = PrivateHireObject()
override var model = PrivateHireLicense()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
ph_no.setTextOnChange{ model.phNumber = it }
ph_expiry.apply {
setTextOnChange{ model.phExpiry = it }
override fun setupView(binding: FragmentPrivateHireLicenseBinding) = binding.run {
phNo.setTextOnChange { model.phNumber = it }
phExpiry.apply {
setTextOnChange { model.phExpiry = it }
setOnClickListener {
DateDialog(this){ date ->
DateDialog(this) { date ->
model.phExpiry = date
}
}
}
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
submit.setOnClickListener{ submit() }
submit.setOnClickListener { submit() }
}
override fun submit(){
validateEditTexts(ph_no,ph_expiry).takeIf { !it }?.let { return }
viewmodel.setDataInDatabase(model, picUri)
override fun submit() {
applyBinding {
validateEditTexts(phNo, phExpiry).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
override fun setFields(data: PrivateHireObject) {
override fun setFields(data: PrivateHireLicense) {
super.setFields(data)
imageView2.setGlideImage(data.phImageString)
ph_no.setText(data.phNumber)
ph_expiry.setText(data.phExpiry)
applyBinding {
imageView2.setGlideImage(data.phImageString)
phNo.setText(data.phNumber)
phExpiry.setText(data.phExpiry)
}
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
imageView2.setGlideImage(imageUri)
applyBinding {
imageView2.setGlideImage(imageUri)
}
}
}

View File

@@ -4,66 +4,71 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.ImageView
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentInsuranceBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.InsuranceObject
import h_mal.appttude.com.model.Insurance
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.InsuranceViewModel
import kotlinx.android.synthetic.main.fragment_insurance.*
class InsuranceFragment : DataSubmissionBaseFragment<InsuranceViewModel, InsuranceObject>(R.layout.fragment_insurance) {
class InsuranceFragment :
DataSubmissionBaseFragment<InsuranceViewModel, FragmentInsuranceBinding, Insurance>() {
private var selectedImages: List<Uri>? = listOf()
private val viewmodel: InsuranceViewModel by getFragmentViewModel()
override fun getViewModel(): InsuranceViewModel = viewmodel
override var model = InsuranceObject()
override var model = Insurance()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setImageSelectionAsMultiple()
insurer.setTextOnChange { model.insurerName = it }
insurance_exp.apply {
setOnClickListener {
DateDialog(this) { date ->
model.expiryDate = date
applyBinding {
insurer.setTextOnChange { model.insurerName = it }
insuranceExp.apply {
setOnClickListener {
DateDialog(this) { date ->
model.expiryDate = date
}
}
}
uploadInsurance.setOnClickListener { openGalleryWithPermissionRequest() }
submitIns.setOnClickListener { submit() }
}
uploadInsurance.setOnClickListener { openGalleryWithPermissionRequest() }
submit_ins.setOnClickListener { submit() }
}
private fun updateImageCarousal(list: List<Any?>) {
carouselView.setImageClickListener(null)
carouselView.setImageListener { i: Int, imageView: ImageView ->
when (list[i]) {
is Uri -> {
imageView.setGlideImage(list[i] as Uri)
applyBinding {
carouselView.setImageClickListener(null)
carouselView.setImageListener { i: Int, imageView: ImageView ->
when (list[i]) {
is Uri -> {
imageView.setGlideImage(list[i] as Uri)
}
is String -> imageView.setGlideImage(list[i] as String)
}
is String -> imageView.setGlideImage(list[i] as String)
}
carouselView.pageCount = list.size
}
carouselView.pageCount = list.size
}
override fun submit() {
super.submit()
validateEditTexts(insurer, insurance_exp).takeIf { !it }?.let { return }
viewmodel.setDataInDatabase(model, selectedImages)
applyBinding {
validateEditTexts(insurer, insuranceExp).isTrue {
viewModel.setDataInDatabase(model, selectedImages)
}
}
}
override fun setFields(data: InsuranceObject) {
override fun setFields(data: Insurance) {
super.setFields(data)
insurer.setText(model.insurerName)
insurance_exp.setText(model.expiryDate)
model.photoStrings?.let { updateImageCarousal(it) }
applyBinding {
insurer.setText(model.insurerName)
insuranceExp.setText(model.expiryDate)
model.photoStrings?.let { updateImageCarousal(it) }
}
}
override fun onImageGalleryResult(imageUris: List<Uri>?) {

View File

@@ -1,50 +1,47 @@
package h_mal.appttude.com.ui.vehicleprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.model.LogbookObject
import h_mal.appttude.com.databinding.FragmentLogbookBinding
import h_mal.appttude.com.model.Logbook
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.LogbookViewModel
import kotlinx.android.synthetic.main.fragment_logbook.*
class LogbookFragment : DataSubmissionBaseFragment<LogbookViewModel, LogbookObject>(R.layout.fragment_logbook) {
class LogbookFragment :
DataSubmissionBaseFragment<LogbookViewModel, FragmentLogbookBinding, Logbook>() {
private val viewmodel by getFragmentViewModel<LogbookViewModel>()
override fun getViewModel(): LogbookViewModel = viewmodel
override var model = LogbookObject()
override var model = Logbook()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
v5c_no.setTextOnChange{ model.v5cnumber = it }
upload_lb.setOnClickListener { openGalleryWithPermissionRequest() }
submit_lb.setOnClickListener { submit() }
override fun setupView(binding: FragmentLogbookBinding) = binding.run {
v5cNo.setTextOnChange { model.v5cnumber = it }
uploadLb.setOnClickListener { openGalleryWithPermissionRequest() }
submitLb.setOnClickListener { submit() }
}
override fun submit() {
super.submit()
validateEditTexts(v5c_no)
.takeIf { !it }
?.let { return }
viewmodel.setDataInDatabase(model, picUri)
applyBinding {
validateEditTexts(v5cNo).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
override fun setFields(data: LogbookObject) {
override fun setFields(data: Logbook) {
super.setFields(data)
applyBinding {
logBookImg.setGlideImage(data.photoString)
v5cNo.setText(data.v5cnumber)
}
log_book_img.setGlideImage(data.photoString)
v5c_no.setText(data.v5cnumber)
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
picUri = imageUri
log_book_img.setGlideImage(picUri)
applyBinding {
logBookImg.setGlideImage(picUri)
}
}
}

View File

@@ -1,52 +1,48 @@
package h_mal.appttude.com.ui.vehicleprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentMotBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.MotObject
import h_mal.appttude.com.model.Mot
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.MotViewModel
import kotlinx.android.synthetic.main.fragment_mot.*
class MotFragment: DataSubmissionBaseFragment<MotViewModel, MotObject>(R.layout.fragment_mot){
class MotFragment : DataSubmissionBaseFragment<MotViewModel, FragmentMotBinding, Mot>() {
private val viewmodel by getFragmentViewModel<MotViewModel>()
override fun getViewModel(): MotViewModel = viewmodel
override var model = MotObject()
override var model = Mot()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mot_expiry.apply {
override fun setupView(binding: FragmentMotBinding) = binding.run {
motExpiry.apply {
setOnClickListener {
DateDialog(this){ date ->
DateDialog(this) { date ->
model.motExpiry = date
}
}
}
uploadmot.setOnClickListener { openGalleryWithPermissionRequest() }
submit_mot.setOnClickListener { submit() }
submitMot.setOnClickListener {
validateEditTexts(motExpiry).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
override fun submit() {
super.submit()
validateEditTexts(mot_expiry).takeIf { !it }?.let { return }
viewmodel.setDataInDatabase(model, picUri)
}
override fun setFields(data: MotObject) {
override fun setFields(data: Mot) {
super.setFields(data)
mot_img.setGlideImage(data.motImageString)
mot_expiry.setText(data.motExpiry)
applyBinding {
motImg.setGlideImage(data.motImageString)
motExpiry.setText(data.motExpiry)
}
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
mot_img.setGlideImage(imageUri)
applyBinding {
motImg.setGlideImage(imageUri)
}
}
}

View File

@@ -1,55 +1,52 @@
package h_mal.appttude.com.ui.vehicleprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.PrivateHireVehicleObject
import h_mal.appttude.com.model.PrivateHireVehicle
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.PrivateHireVehicleViewModel
import kotlinx.android.synthetic.main.fragment_private_hire_vehicle.*
class PrivateHireVehicleFragment: DataSubmissionBaseFragment
<PrivateHireVehicleViewModel, PrivateHireVehicleObject>(R.layout.fragment_private_hire_vehicle){
class PrivateHireVehicleFragment :
DataSubmissionBaseFragment<PrivateHireVehicleViewModel, FragmentPrivateHireLicenseBinding, PrivateHireVehicle>() {
private val viewmodel by getFragmentViewModel<PrivateHireVehicleViewModel>()
override fun getViewModel(): PrivateHireVehicleViewModel = viewmodel
override var model = PrivateHireVehicleObject()
override var model = PrivateHireVehicle()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
ph_no.setTextOnChange{ model.phCarNumber = it }
ph_expiry.apply {
override fun setupView(binding: FragmentPrivateHireLicenseBinding) = binding.run {
phNo.setTextOnChange { model.phCarNumber = it }
phExpiry.apply {
setOnClickListener {
DateDialog(this){ date ->
DateDialog(this) { date ->
model.phCarExpiry = date
}
}
}
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
submit.setOnClickListener { submit() }
submit.setOnClickListener {
validateEditTexts(phNo, phExpiry).isTrue {
viewModel.setDataInDatabase(model, picUri)
}
}
}
override fun submit() {
super.submit()
validateEditTexts(ph_no, ph_expiry).takeIf { !it }?.let { return }
viewmodel.setDataInDatabase(model, picUri)
}
override fun setFields(data: PrivateHireVehicleObject) {
override fun setFields(data: PrivateHireVehicle) {
super.setFields(data)
imageView2.setGlideImage(data.phCarImageString)
ph_no.setText(data.phCarNumber)
ph_expiry.setText(data.phCarExpiry)
applyBinding {
imageView2.setGlideImage(data.phCarImageString)
phNo.setText(data.phCarNumber)
phExpiry.setText(data.phCarExpiry)
}
}
override fun onImageGalleryResult(imageUri: Uri?) {
super.onImageGalleryResult(imageUri)
imageView2.setGlideImage(imageUri)
applyBinding {
imageView2.setGlideImage(imageUri)
}
}
}

View File

@@ -1,62 +1,63 @@
package h_mal.appttude.com.ui.vehicleprofile
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentVehicleSetupBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.VehicleProfileObject
import h_mal.appttude.com.model.VehicleProfile
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.viewmodels.VehicleProfileViewModel
import kotlinx.android.synthetic.main.fragment_vehicle_setup.*
class VehicleProfileFragment: DataSubmissionBaseFragment
<VehicleProfileViewModel, VehicleProfileObject>(R.layout.fragment_vehicle_setup){
class VehicleProfileFragment : DataSubmissionBaseFragment
<VehicleProfileViewModel, FragmentVehicleSetupBinding, VehicleProfile>() {
private val viewmodel by getFragmentViewModel<VehicleProfileViewModel>()
override fun getViewModel(): VehicleProfileViewModel = viewmodel
override var model = VehicleProfileObject()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
override var model = VehicleProfile()
override fun setupView(binding: FragmentVehicleSetupBinding) = binding.run {
reg.setTextOnChange { model.reg = it }
make.setTextOnChange { model.make = it }
car_model.setTextOnChange { model.model = it }
carModel.setTextOnChange { model.model = it }
colour.setTextOnChange { model.colour = it }
keeper_name.setTextOnChange { model.keeperName = it }
keeperName.setTextOnChange { model.keeperName = it }
address.setTextOnChange { model.keeperAddress = it }
postcode.setTextOnChange { model.keeperPostCode = it }
start_date.apply {
startDate.apply {
setOnClickListener {
DateDialog(this){ date ->
DateDialog(this) { date ->
model.startDate = date
}
}
}
seized_checkbox.setOnCheckedChangeListener { _, res -> model.isSeized = res}
seizedCheckbox.setOnCheckedChangeListener { _, res -> model.isSeized = res }
submit_vehicle.setOnClickListener { submit() }
submitVehicle.setOnClickListener {
validateEditTexts(
reg,
make,
carModel,
colour,
keeperName,
address,
postcode,
startDate
).isTrue {
viewModel.setDataInDatabase(model)
}
}
}
override fun submit() {
validateEditTexts(reg, make, car_model, colour, keeper_name, address, postcode, start_date)
.takeIf { !it }
?.let { return }
viewmodel.setDataInDatabase(model)
}
override fun setFields(data: VehicleProfileObject) {
override fun setFields(data: VehicleProfile) {
super.setFields(data)
reg.setText(data.reg)
make.setText(data.make)
car_model.setText(data.model)
colour.setText(data.colour)
keeper_name.setText(data.keeperName)
address.setText(data.keeperAddress)
postcode.setText(data.keeperPostCode)
start_date.setText(data.startDate)
seized_checkbox.isChecked = data.isSeized
applyBinding {
reg.setText(data.reg)
make.setText(data.make)
carModel.setText(data.model)
colour.setText(data.colour)
keeperName.setText(data.keeperName)
address.setText(data.keeperAddress)
postcode.setText(data.keeperPostCode)
startDate.setText(data.startDate)
seizedCheckbox.isChecked = data.isSeized
}
}
}

View File

@@ -54,7 +54,7 @@
android:textColor="@android:color/white"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="32dp"/>
android:layout_marginTop="32dp" />
<TextView
android:id="@+id/textView4"
@@ -66,7 +66,7 @@
android:textSize="24sp"
app:layout_constraintLeft_toLeftOf="parent"
android:textColor="@android:color/white"
app:layout_constraintTop_toBottomOf="@id/textView3"/>
app:layout_constraintTop_toBottomOf="@id/textView3" />
</androidx.constraintlayout.widget.ConstraintLayout>